Función CryptSignAndEncryptMessage (wincrypt.h)
La función CryptSignAndEncryptMessage crea un hash del contenido especificado, firma el hash, cifra el contenido, aplica un algoritmo hash al contenido cifrado y el hash firmado y, a continuación, codifica tanto el contenido cifrado como el hash firmado. El resultado es el mismo que si el hash se firmó por primera vez y, a continuación, se cifró.
Sintaxis
BOOL CryptSignAndEncryptMessage(
[in] PCRYPT_SIGN_MESSAGE_PARA pSignPara,
[in] PCRYPT_ENCRYPT_MESSAGE_PARA pEncryptPara,
[in] DWORD cRecipientCert,
[in] PCCERT_CONTEXT [] rgpRecipientCert,
[in] const BYTE *pbToBeSignedAndEncrypted,
[in] DWORD cbToBeSignedAndEncrypted,
[out] BYTE *pbSignedAndEncryptedBlob,
[in, out] DWORD *pcbSignedAndEncryptedBlob
);
Parámetros
[in] pSignPara
Puntero a una estructura CRYPT_SIGN_MESSAGE_PARA que contiene los parámetros de firma.
[in] pEncryptPara
Puntero a una estructura de CRYPT_ENCRYPT_MESSAGE_PARA que contiene parámetros de cifrado.
[in] cRecipientCert
Número de elementos de matriz en rgpRecipientCert.
[in] rgpRecipientCert
Matriz de punteros a CERT_CONTEXT estructuras. Cada estructura es el certificado de los destinatarios previstos del mensaje.
[in] pbToBeSignedAndEncrypted
Puntero a un búfer que contiene el contenido que se va a firmar y cifrar.
[in] cbToBeSignedAndEncrypted
Tamaño, en bytes, del búfer pbToBeSignedAndEncrypted .
[out] pbSignedAndEncryptedBlob
Puntero a un búfer para recibir el mensaje cifrado y codificado.
Este parámetro puede ser NULL para establecer el tamaño de esta información con fines de asignación de memoria. Para obtener más información, vea Recuperación de datos de longitud desconocida.
[in, out] pcbSignedAndEncryptedBlob
Puntero a DWORD que especifica el tamaño, en bytes, del búfer al que apunta pbSignedAndEncryptedBlob. Cuando se devuelve la función, esta variable contiene el tamaño, en bytes, del mensaje firmado y cifrado copiado en *pbSignedAndEncryptedBlob.
Valor devuelto
Si la función se ejecuta correctamente, el valor devuelto es distinto de cero (TRUE).
Si se produce un error en la función, el valor devuelto es cero (FALSE).
Para obtener información de error extendida, llame a GetLastError.
A continuación se muestra el código de error devuelto normalmente por la función GetLastError .
Código devuelto | Descripción |
---|---|
|
Si el búfer especificado por el parámetro pbSignedAndEncryptedBlob no es lo suficientemente grande como para contener los datos devueltos, la función establece el código de ERROR_MORE_DATA y almacena el tamaño de búfer necesario, en bytes, en la variable a la que apunta pcbSignedAndEncryptedBlob. |
Requisitos
Requisito | Value |
---|---|
Cliente mínimo compatible | Windows XP [solo aplicaciones de escritorio] |
Servidor mínimo compatible | Windows Server 2003 [solo aplicaciones de escritorio] |
Plataforma de destino | Windows |
Encabezado | wincrypt.h |
Library | Crypt32.lib |
Archivo DLL | Crypt32.dll |