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.

Nota Al procesar los datos devueltos, las aplicaciones deben usar el tamaño real de los datos devueltos. El tamaño real puede ser ligeramente menor que el tamaño del búfer especificado en la entrada. (En la entrada, los tamaños del búfer suelen especificarse lo suficientemente grandes como para asegurarse de que los datos de salida más grandes posibles caben en el búfer). En la salida, la variable a la que apunta este parámetro se actualiza para reflejar el tamaño real de los datos copiados en el búfer.
 

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
ERROR_MORE_DATA
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.
 
Nota Los errores de las funciones llamadas CryptSignMessage y CryptEncryptMessage pueden propagarse a esta función.
 

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

Consulte también

CryptDecryptAndVerifyMessageSignature

CryptSignMessage

Funciones de mensaje simplificadas