Partager via


Fonction CryptVerifyMessageSignatureWithKey (wincrypt.h)

La fonction CryptVerifyMessageSignatureWithKey vérifie la signature d’un message signé à l’aide des informations de clé publique spécifiées.

Syntaxe

BOOL CryptVerifyMessageSignatureWithKey(
  [in]      PCRYPT_KEY_VERIFY_MESSAGE_PARA pVerifyPara,
  [in]      PCERT_PUBLIC_KEY_INFO          pPublicKeyInfo,
  [in]      const BYTE                     *pbSignedBlob,
  [in]      DWORD                          cbSignedBlob,
  [out]     BYTE                           *pbDecoded,
  [in, out] DWORD                          *pcbDecoded
);

Paramètres

[in] pVerifyPara

Pointeur vers une structure de CRYPT_KEY_VERIFY_MESSAGE_PARA qui contient des paramètres de vérification.

[in] pPublicKeyInfo

Pointeur vers une structure CERT_PUBLIC_KEY_INFO qui contient la clé publique utilisée pour vérifier le message signé. Si la valeur est NULL, la signature n’est pas vérifiée.

[in] pbSignedBlob

Pointeur vers une mémoire tampon qui contient le message signé.

[in] cbSignedBlob

Taille, en octets, de la mémoire tampon de messages signés.

[out] pbDecoded

Pointeur vers une mémoire tampon pour recevoir le message décodé.

Ce paramètre peut être NULL si le message décodé n’est pas nécessaire pour un traitement supplémentaire ou pour définir la taille du message à des fins d’allocation de mémoire. Pour plus d’informations, consultez Récupération de données de longueur inconnue.

[in, out] pcbDecoded

Pointeur vers une valeur DWORD qui spécifie la taille, en octets, de la mémoire tampon pbDecoded . Lorsque la fonction retourne, ce DWORD contient la taille, en octets, du message décodé. Le message décodé ne sera pas retourné si ce paramètre a la valeur NULL.

Note Lors du traitement des données retournées, les applications doivent utiliser la taille réelle des données retournées. La taille réelle peut être légèrement inférieure à la taille de la mémoire tampon spécifiée lors de l’entrée. (Lors de l’entrée, les tailles de mémoire tampon sont généralement spécifiées suffisamment grandes pour garantir que les données de sortie les plus volumineuses possibles tiennent dans la mémoire tampon.) En sortie, la variable pointée par ce paramètre est mise à jour pour refléter la taille réelle des données copiées dans la mémoire tampon.
 

Valeur retournée

Si la fonction réussit, la fonction retourne une valeur différente de zéro.

Si la fonction échoue, elle retourne zéro. Pour obtenir des informations d’erreur étendues, appelez GetLastError.

Le tableau suivant présente les codes d’erreur les plus couramment retournés par la fonction GetLastError .

Code de retour Description
ERROR_MORE_DATA
Si la mémoire tampon spécifiée par le paramètre pbDecoded n’est pas suffisamment 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 pcbDecoded.
E_INVALIDARG
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 *pVerifyPara.
CRYPT_E_UNEXPECTED_MSG_TYPE
Pas un message de chiffrement signé.
CRYPT_E_NO_SIGNER
Le message n’a pas de signataires ni de signataire pour le dwSignerIndex spécifié.
NTE_BAD_ALGID
Le message a été haché et signé à l’aide d’un algorithme inconnu ou non pris en charge.
NTE_BAD_SIGNATURE
La signature du message n’a pas été vérifiée.

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