Función CryptDecryptMessage (wincrypt.h)
La función CryptDecryptMessagedescodifica y descifra un mensaje.
Sintaxis
BOOL CryptDecryptMessage(
[in] PCRYPT_DECRYPT_MESSAGE_PARA pDecryptPara,
[in] const BYTE *pbEncryptedBlob,
[in] DWORD cbEncryptedBlob,
[out, optional] BYTE *pbDecrypted,
[in, out, optional] DWORD *pcbDecrypted,
[out, optional] PCCERT_CONTEXT *ppXchgCert
);
Parámetros
[in] pDecryptPara
Puntero a una estructura de CRYPT_DECRYPT_MESSAGE_PARA que contiene parámetros de descifrado.
[in] pbEncryptedBlob
Puntero a un búfer que contiene el mensaje codificado y cifrado que se va a descifrar.
[in] cbEncryptedBlob
Tamaño, en bytes, del mensaje codificado y cifrado.
[out, optional] pbDecrypted
Puntero a un búfer que recibe el mensaje descifrado.
Para establecer el tamaño de esta información con fines de asignación de memoria, este parámetro puede ser NULL. No se devolverá un mensaje descifrado si este parámetro es NULL. Para obtener más información, vea Recuperar datos de longitud desconocida.
[in, out, optional] pcbDecrypted
Puntero a un DWORD que especifica el tamaño, en bytes, del búfer al que apunta el parámetro pbDecrypted . Cuando la función devuelve, esta variable contiene el tamaño, en bytes, del mensaje descifrado copiado en pbDecrypted.
[out, optional] ppXchgCert
Puntero a una estructura CERT_CONTEXT de un certificado que corresponde a la clave de intercambio privada necesaria para descifrar el mensaje. Para indicar que la función no debe devolver el contexto de certificado usado para descifrar, establezca este parámetro en NULL.
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.
Código devuelto | Descripción |
---|---|
|
Si el búfer especificado por el parámetro pbDecrypted 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 pcbDecrypted. |
|
Tipos de codificación de certificados y mensajes no válidos. Actualmente solo se admiten PKCS_7_ASN_ENCODING y X509_ASN_ENCODING_TYPE. CbSize no válido en *pDecryptPara. |
|
No es un mensaje criptográfico sobre . |
|
El mensaje se cifró mediante un algoritmo desconocido o no admitido. |
|
No se encontró ningún certificado con una propiedad de clave privada que se va a usar para descifrar. |
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/descodificación de ASN.1.
Comentarios
Cuando se pasa NULL para pbDecrypted y pcbDecrypted no es NULL, se devuelve NULL para la dirección pasada en ppXchgCert; de lo contrario, se devuelve un puntero a un CERT_CONTEXT . Para un mensaje descifrado correctamente, este puntero a un CERT_CONTEXT apunta al contexto de certificado usado para descifrar el mensaje. Debe liberarse llamando a CertFreeCertificateContext. Si se produce un error en la función, el valor de ppXchgCert se establece en NULL.
Ejemplos
Para ver un ejemplo que usa esta función, vea Ejemplo de programa C: Uso de CryptEncryptMessage y CryptDecryptMessage.
Requisitos
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 |