Función CryptEncryptMessage (wincrypt.h)

La función CryptEncryptMessagecifra y codifica un mensaje.

Sintaxis

BOOL CryptEncryptMessage(
  [in]      PCRYPT_ENCRYPT_MESSAGE_PARA pEncryptPara,
  [in]      DWORD                       cRecipientCert,
  [in]      PCCERT_CONTEXT []           rgpRecipientCert,
  [in]      const BYTE                  *pbToBeEncrypted,
  [in]      DWORD                       cbToBeEncrypted,
  [out]     BYTE                        *pbEncryptedBlob,
  [in, out] DWORD                       *pcbEncryptedBlob
);

Parámetros

[in] pEncryptPara

Puntero a una estructura CRYPT_ENCRYPT_MESSAGE_PARA que contiene los parámetros de cifrado.

La función CryptEncryptMessage no admite los identificadores de identificadores sha2, szOID_DH_SINGLE_PASS_STDDH_SHA256_KDF y szOID_DH_SINGLE_PASS_STDDH_SHA384_KDF.

[in] cRecipientCert

Número de elementos de la matriz rgpRecipientCert .

[in] rgpRecipientCert

Matriz de punteros a CERT_CONTEXT estructuras que contienen los certificados de los destinatarios previstos del mensaje.

[in] pbToBeEncrypted

Puntero a un búfer que contiene el mensaje que se va a cifrar.

[in] cbToBeEncrypted

Tamaño, en bytes, del mensaje que se va a cifrar.

[out] pbEncryptedBlob

Puntero a BLOB que contiene un búfer que recibe el mensaje cifrado y codificado.

Para establecer el tamaño de esta información con fines de asignación de memoria, este parámetro puede ser NULL. Para obtener más información, vea Recuperación de datos de longitud desconocida.

[in, out] pcbEncryptedBlob

Puntero a un DWORD que especifica el tamaño, en bytes, del búfer al que apunta el parámetro pbEncryptedBlob . Cuando se devuelve la función, esta variable contiene el tamaño, en bytes, del mensaje cifrado y codificado copiado en pbEncryptedBlob.

Nota Al procesar los datos devueltos en el búfer de pbEncryptedBlob, 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, la función devuelve un valor distinto de cero (TRUE).

Si se produce un error en la función, devuelve cero (FALSE). Para obtener información de error extendida, llame a GetLastError.

Nota Los errores de las llamadas a CryptGenKey, CryptEncrypt, CryptImportKey y CryptExportKey se pueden propagar a esta función.
 
La función GetLastError devuelve los siguientes códigos de error con más frecuencia.
Código devuelto Descripción
ERROR_MORE_DATA
Si el búfer especificado por el parámetro pbEncryptedBlob no es lo suficientemente grande como para contener los datos devueltos, la función establece el código ERROR_MORE_DATA y almacena el tamaño de búfer necesario, en bytes, en la variable a la que apunta pcbEncryptedBlob.
E_INVALIDARG
El tipo de codificación de mensajes no es válido. Actualmente solo se admiten PKCS_7_ASN_ENCODING. CbSize en *pEncryptPara no es válido.
 

Si se produce un error en la función, GetLastError puede devolver un error de codificación y descodificación de sintaxis abstracta uno (ASN.1). Para obtener información sobre estos errores, vea Valores devueltos de codificación y descodificación de ASN.1.

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

Funciones de mensaje simplificadas