Fonction CryptDecryptMessage (wincrypt.h)
La fonction CryptDecryptMessagedécode et déchiffre un message.
Syntaxe
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
);
Paramètres
[in] pDecryptPara
Pointeur vers une structure CRYPT_DECRYPT_MESSAGE_PARA qui contient des paramètres de déchiffrement.
[in] pbEncryptedBlob
Pointeur vers une mémoire tampon qui contient le message encodé et chiffré à déchiffrer.
[in] cbEncryptedBlob
Taille, en octets, du message encodé et chiffré.
[out, optional] pbDecrypted
Pointeur vers une mémoire tampon qui reçoit le message déchiffré.
Pour définir la taille de ces informations à des fins d’allocation de mémoire, ce paramètre peut avoir la valeur NULL. Un message déchiffré n’est pas retourné si ce paramètre a la valeur NULL. Pour plus d’informations, consultez Récupération de données de longueur inconnue.
[in, out, optional] pcbDecrypted
Pointeur vers un DWORD qui spécifie la taille, en octets, de la mémoire tampon pointée vers le paramètre pbDecrypted . Lorsque la fonction retourne, cette variable contient la taille, en octets, du message déchiffré copié dans pbDecrypted.
[out, optional] ppXchgCert
Un pointeur vers une structure de CERT_CONTEXT d’un certificat qui correspond à la clé d’échange privée nécessaire pour déchiffrer le message. Pour indiquer que la fonction ne doit pas retourner le contexte de certificat utilisé pour le déchiffrement, définissez ce paramètre sur NULL.
Valeur retournée
Si la fonction réussit, la fonction retourne une valeur différente de zéro (TRUE).
Si la fonction échoue, elle retourne zéro (FALSE). Pour obtenir des informations d’erreur étendues, appelez GetLastError.
Code de retour | Description |
---|---|
|
Si la mémoire tampon spécifiée par le paramètre pbDecrypted n’est pas assez grande pour contenir les données retournées, la fonction définit le code ERROR_MORE_DATA et stocke la taille de mémoire tampon requise, en octets, dans la variable pointée par pcbDecrypted. |
|
Types d’encodage de message et de certificat non valides. Actuellement, seuls les PKCS_7_ASN_ENCODING et les X509_ASN_ENCODING_TYPE sont pris en charge. CbSize non valide dans *pDecryptPara. |
|
Pas un message de chiffrement enveloppe. |
|
Le message a été chiffré à l’aide d’un algorithme inconnu ou non pris en charge. |
|
Aucun certificat n’a été trouvé disposant d’une propriété de clé privée à utiliser pour le déchiffrement. |
Si la fonction échoue, GetLastError peut renvoyer une erreur d’encodage/décodage asN.1 ( Abstract Syntax Notation One ). Pour plus d’informations sur ces erreurs, consultez Valeurs de retour d’encodage/décodage ASN.1.
Remarques
Lorsque null est passé pour pbDecrypted et que pcbDecrypted n’est pas NULL, NULL est retourné pour l’adresse passée dans ppXchgCert ; sinon, un pointeur vers un CERT_CONTEXT est retourné. Pour un message correctement déchiffré, ce pointeur vers un CERT_CONTEXT pointe vers le contexte de certificat utilisé pour déchiffrer le message. Il doit être libéré en appelant CertFreeCertificateContext. Si la fonction échoue, la valeur à ppXchgCert est définie sur NULL.
Exemples
Pour obtenir un exemple qui utilise cette fonction, consultez Exemple de programme C : utilisation de CryptEncryptMessage et CryptDecryptMessage.
Configuration requise
Client minimal pris en charge | Windows XP [applications de bureau uniquement] |
Serveur minimal pris en charge | Windows Server 2003 [applications de bureau uniquement] |
Plateforme cible | Windows |
En-tête | wincrypt.h |
Bibliothèque | Crypt32.lib |
DLL | Crypt32.dll |