Fonction CryptMsgVerifyCountersignatureEncodedEx (wincrypt.h)

La fonction CryptMsgVerifyCountersignatureEncodedEx vérifie que le paramètre pbSignerInfoCounterSignature contient le hachage chiffré du champ encryptedDigest de la structure de paramètre pbSignerInfo . Le signataire peut être une structure CERT_PUBLIC_KEY_INFO , un contexte de certificat ou un contexte de chaîne.

Syntaxe

BOOL CryptMsgVerifyCountersignatureEncodedEx(
  [in, optional] HCRYPTPROV_LEGACY hCryptProv,
  [in]           DWORD             dwEncodingType,
  [in]           PBYTE             pbSignerInfo,
  [in]           DWORD             cbSignerInfo,
  [in]           PBYTE             pbSignerInfoCountersignature,
  [in]           DWORD             cbSignerInfoCountersignature,
  [in]           DWORD             dwSignerType,
  [in]           void              *pvSigner,
                 DWORD             dwFlags,
                 void              *pvExtra
);

Paramètres

[in, optional] hCryptProv

Ce paramètre n’est pas utilisé et doit être défini sur NULL.

Windows Server 2003 et Windows XP : NULL ou le handle du fournisseur de chiffrement à utiliser pour hacher le champ encryptedDigest de pbSignerInfo. Le type de données de ce paramètre est HCRYPTPROV.

Sauf s’il existe une raison forte de passer un fournisseur de chiffrement spécifique dans hCryptProv, transmettez NULL pour entraîner l’utilisation du fournisseur RSA ou DSS par défaut.

[in] dwEncodingType

Type d’encodage utilisé. Actuellement, seuls les X509_ASN_ENCODING et les PKCS_7_ASN_ENCODING sont utilisés ; toutefois, des types d’encodage supplémentaires peuvent être ajoutés à l’avenir. Pour l’un ou l’autre type d’encodage actuel, utilisez :

X509_ASN_ENCODING | PKCS_7_ASN_ENCODING.

[in] pbSignerInfo

Pointeur vers l’objet BLOB encodé qui contient le signataire du contenu d’un message à contresigner.

[in] cbSignerInfo

Nombre, en octets, de l’objet BLOB encodé pour le signataire du contenu.

[in] pbSignerInfoCountersignature

Pointeur vers l’objet BLOB encodé contenant les informations de contre-signature.

[in] cbSignerInfoCountersignature

Nombre, en octets, de l’objet BLOB encodé pour le contre-expéditeur du message.

[in] dwSignerType

Structure qui contient les informations du signataire. Le tableau suivant présente les valeurs prédéfinies et les structures indiquées.

Valeur Signification
CMSG_VERIFY_SIGNER_PUBKEY
pvSigner est un pointeur vers une structure CERT_PUBLIC_KEY_INFO .
CMSG_VERIFY_SIGNER_CERT
pvSigner est un pointeur vers une structure CERT_CONTEXT .
CMSG_VERIFY_SIGNER_CHAIN
pvSigner est un pointeur vers une structure CERT_CHAIN_CONTEXT .

[in] pvSigner

Pointeur vers une structure CERT_PUBLIC_KEY_INFO , un contexte de certificat ou un contexte de chaîne en fonction de la valeur de dwSignerType.

dwFlags

Indicateurs qui modifient le comportement de la fonction. Il peut s’agir de zéro ou de la valeur suivante.

Valeur Signification
CMSG_VERIFY_COUNTER_SIGN_ENABLE_STRONG_FLAG
0x00000001
Effectue une signature forte case activée après une vérification de signature réussie. Définissez le paramètre pvExtra pour qu’il pointe vers une structure de CERT_STRONG_SIGN_PARA qui contient les paramètres nécessaires pour case activée la force de signature..

Windows 8 et Windows Server 2012 : la prise en charge de cet indicateur commence.

pvExtra

Si vous définissez le paramètre dwFlags sur CMSG_VERIFY_COUNTER_SIGN_ENABLE_STRONG_FLAG, définissez ce paramètre (pvExtra) pour qu’il pointe vers une structure CERT_STRONG_SIGN_PARA qui contient les paramètres utilisés pour case activée la force de signature.

Valeur retournée

Si la fonction réussit, la valeur de retour est différente de zéro (TRUE).

Si la fonction échoue, la valeur de retour est zéro (FALSE). Pour obtenir des informations d’erreur étendues, appelez GetLastError.

Les codes d’erreur suivants sont le plus souvent retournés par la fonction GetLastError .

Code de retour Description
CRYPT_E_AUTH_ATTR_MISSING
Le message ne contient pas d’attribut authentifié attendu.
CRYPT_E_HASH_VALUE
La valeur de hachage n’est pas correcte.
CRYPT_E_UNEXPECTED_ENCODING
Le message n’est pas encodé comme prévu.
CRYPT_E_UNKNOWN_ALGO
L’algorithme de chiffrement est inconnu.
E_INVALIDARG
Un ou plusieurs arguments ne sont pas valides.
E_OUTOFMEMORY
Mémoire insuffisante.
 

Les erreurs propagées à partir des fonctions suivantes peuvent être retournées.

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

La vérification du contre-signature est effectuée à l’aide de la structure SIGNERINFO PKCS #7. La signature doit contenir le hachage chiffré du champ encryptedDigest de pbSignerInfo.

L’émetteur et le numéro de série du contre-signature doivent correspondre aux informations de contre-signature de pbSignerInfoCountersignature. Les seuls champs référencés à partir de pciCountersigner sont SerialNumber, Issuer et SubjectPublicKeyInfo. SubjectPublicKeyInfo est utilisé pour accéder à la clé publique qui est ensuite utilisée pour chiffrer le hachage à partir de pciCountersigner . Comparez-le donc au hachage de pbSignerInfo.

Exemples

Pour obtenir un exemple qui utilise cette fonction, consultez Exemple de programme C : Encodage et décodage d’un message contre-signé.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows XP [applications de bureau | applications UWP]
Serveur minimal pris en charge Windows Server 2003 [applications de bureau | applications UWP]
Plateforme cible Windows
En-tête wincrypt.h
Bibliothèque Crypt32.lib
DLL Crypt32.dll

Voir aussi

CryptMsgCountersign

CryptMsgCountersignEncoded

Fonctions de message de bas niveau

Fonctions de message simplifiées