Fonction CryptDecryptAndVerifyMessageSignature (wincrypt.h)
La fonction CryptDecryptAndVerifyMessageSignature déchiffre un message et vérifie sa signature.
Syntaxe
BOOL CryptDecryptAndVerifyMessageSignature(
[in] PCRYPT_DECRYPT_MESSAGE_PARA pDecryptPara,
[in] PCRYPT_VERIFY_MESSAGE_PARA pVerifyPara,
[in] DWORD dwSignerIndex,
[in] const BYTE *pbEncryptedBlob,
[in] DWORD cbEncryptedBlob,
[out, optional] BYTE *pbDecrypted,
[in, out, optional] DWORD *pcbDecrypted,
[out, optional] PCCERT_CONTEXT *ppXchgCert,
[out, optional] PCCERT_CONTEXT *ppSignerCert
);
Paramètres
[in] pDecryptPara
Pointeur vers une structure CRYPT_DECRYPT_MESSAGE_PARA qui contient des paramètres de déchiffrement.
[in] pVerifyPara
Pointeur vers une structure de CRYPT_VERIFY_MESSAGE_PARA qui contient des paramètres de vérification.
[in] dwSignerIndex
Identifie un signataire particulier du message. Un message peut être signé par plusieurs signataires et cette fonction peut être appelée plusieurs fois en modifiant ce paramètre en case activée pour plusieurs signataires. Il est défini sur zéro pour le premier signataire. Si la fonction retourne FALSE et que GetLastError retourne CRYPT_E_NO_SIGNER, l’appel précédent a reçu le dernier signataire du message.
[in] pbEncryptedBlob
Pointeur vers le message signé, encodé et chiffré à déchiffrer et à vérifier.
[in] cbEncryptedBlob
Taille, en octets, du message chiffré.
[out, optional] pbDecrypted
Pointeur vers une mémoire tampon pour recevoir le message déchiffré.
Ce paramètre peut avoir la valeur NULL si le message déchiffré n’est pas requis ou pour définir la taille du message déchiffré à des fins d’allocation de mémoire. 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, elle contient la taille du message déchiffré copié dans pbDecrypted.
[out, optional] ppXchgCert
Pointeur vers une structure de CERT_CONTEXT du certificat qui correspond à la clé d’échange privée nécessaire pour déchiffrer le message.
[out, optional] ppSignerCert
Pointeur vers une structure CERT_CONTEXT du certificat du signataire.
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. |
Remarques
Pour un message correctement déchiffré et vérifié, les pointeurs de contexte de certificat pointés par ppXchgCert et ppSignerCert sont mis à jour. Ils doivent être libérés en appelant CertFreeCertificateContext. Si la fonction échoue, ils sont définis sur NULL.
Pour indiquer que l’appelant n’est pas intéressé par le certificat exchange ou le contexte de certificat du signataire, définissez les paramètres ppXchgCert et ppSignerCert sur NULL.
Exemples
Pour obtenir un exemple qui utilise cette fonction, consultez Exemple de programme C : envoi et réception d’un message signé et chiffré.
Configuration requise
Condition requise | Valeur |
---|---|
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 |