CMSG_SIGNER_ENCODE_INFO structure (wincrypt.h)
La structure CMSG_SIGNER_ENCODE_INFO contient des informations de signataire. Il est transmis à CryptMsgCountersign, CryptMsgCountersignEncoded et éventuellement à CryptMsgOpenToEncode en tant que membre de la structure CMSG_SIGNED_ENCODE_INFO , si le paramètre dwMsgType est CMSG_SIGNED.
Syntaxe
typedef struct _CMSG_SIGNER_ENCODE_INFO {
DWORD cbSize;
PCERT_INFO pCertInfo;
union {
HCRYPTPROV hCryptProv;
NCRYPT_KEY_HANDLE hNCryptKey;
BCRYPT_KEY_HANDLE hBCryptKey;
} DUMMYUNIONNAME;
DWORD dwKeySpec;
CRYPT_ALGORITHM_IDENTIFIER HashAlgorithm;
void *pvHashAuxInfo;
DWORD cAuthAttr;
PCRYPT_ATTRIBUTE rgAuthAttr;
DWORD cUnauthAttr;
PCRYPT_ATTRIBUTE rgUnauthAttr;
CERT_ID SignerId;
CRYPT_ALGORITHM_IDENTIFIER HashEncryptionAlgorithm;
void *pvHashEncryptionAuxInfo;
} CMSG_SIGNER_ENCODE_INFO, *PCMSG_SIGNER_ENCODE_INFO;
Membres
cbSize
Taille, en octets, de cette structure.
pCertInfo
Pointeur vers une structure CERT_INFO qui contient le
Membres Issuer, SerialNumber et SubjectPublicKeyInfo .
Les membres pbData des structures Issuer et SerialNumber combinées identifient un certificat de manière unique. Le membre Algorithm de la structure SubjectPublicKeyInfo spécifie l’algorithme de chiffrement de hachage utilisé.
DUMMYUNIONNAME
DUMMYUNIONNAME.hCryptProv
Handle pour le fournisseur de services de chiffrement (CSP). Si HashEncryptionAlgorithm est défini sur szOID_PKIX_NO_SIGNATURE, ce handle peut être le handle d’un fournisseur de solutions Cloud acquis à l’aide du paramètre dwFlags défini sur CRYPT_VERIFYCONTEXT. La fonction CNG NCryptIsKeyHandle est appelée pour déterminer le choix d’union.
DUMMYUNIONNAME.hNCryptKey
Handle pour le fournisseur de services de configuration CNG. La fonction CNG NCryptIsKeyHandle est appelée pour déterminer le choix d’union. Les nouveaux algorithmes de chiffrement sont uniquement pris en charge dans les fonctions CNG. La fonction CNG NCryptTranslateHandle sera appelée pour convertir le choix CryptoAPI hCryptProv si nécessaire. Nous recommandons aux applications de transmettre au membre hNCryptKey le handle CSP CNG retourné par la fonction NCryptOpenKey .
DUMMYUNIONNAME.hBCryptKey
dwKeySpec
Spécifie la clé privée à utiliser. Ce membre n’est pas utilisé lorsque le membre hNCryptKey est utilisé.
Si dwKeySpec est égal à zéro, la valeur de AT_KEYEXCHANGE par défaut est utilisée.
Les valeurs dwKeySpec suivantes sont définies pour le fournisseur par défaut.
Valeur | Signification |
---|---|
|
Clés utilisées pour chiffrer/déchiffrer les clés de session. |
|
Clés utilisées pour créer et vérifier les signatures numériques. |
HashAlgorithm
Structure CRYPT_ALGORITHM_IDENTIFIER qui spécifie l’algorithme de hachage.
pvHashAuxInfo
Non utilisé. Ce membre doit être défini sur NULL.
cAuthAttr
Nombre d’éléments dans le tableau rgAuthAttr . Si aucun attribut authentifié n’est présent dans rgAuthAttr, cAuthAttr est égal à zéro.
rgAuthAttr
Tableau de pointeurs vers CRYPT_ATTRIBUTE structures, chacune contenant des informations d’attribut authentifiées.
La norme PKCS #9 stipule que s’il existe des attributs, il doit y en avoir au moins deux : l’identificateur d’objet de type de contenu (OID) et le hachage du message. Ces attributs sont automatiquement ajoutés par le système.
cUnauthAttr
Nombre d’éléments dans le tableau rgUnauthAttr . S’il n’existe aucun attribut non authentifié, cUnauthAttr est égal à zéro.
rgUnauthAttr
Tableau de pointeurs vers CRYPT_ATTRIBUTE structures, chacune contenant des informations d’attribut non authentifiées. Les attributs non authentifiés peuvent contenir des contre-signatures, entre autres utilisations.
SignerId
Structure CERT_ID qui contient un identificateur unique du certificat du signataire. Ce membre peut éventuellement être utilisé avec PKCS #7 avec la syntaxe de message de chiffrement (CMS). Si ce membre n’est pas NULL et que son membre dwIdChoice n’est pas égal à zéro, il est utilisé pour identifier le certificat à la place des membres Issuer et SerialNumber de la structure CERT_INFO pointées par pCertInfo. CMS prend en charge les structures KEY_IDENTIFIER et ISSUER_SERIAL_NUMBER CERT_ID. PKCS version 1.5 prend uniquement en charge le choix ISSUER_SERIAL_NUMBER CERT_ID. Ce membre est utilisé avec CMS pour le traitement PKCS #7 et ne peut être utilisé que si CMSG_SIGNER_ENCODE_INFO_HAS_CMS_FIELDS est défini.
HashEncryptionAlgorithm
Une structure CRYPT_ALGORITHM_IDENTIFIER éventuellement utilisée avec PKCS #7 avec CMS. Si ce membre n’est pas NULL, l’algorithme identifié est utilisé à la place de l’algorithme SubjectPublicKeyInfo.Algorithm. Si ce membre est défini sur szOID_PKIX_NO_SIGNATURE, la valeur de signature contient uniquement les octets de hachage.
Pour RSA, l’algorithme de chiffrement de hachage est normalement le même que l’algorithme de clé publique. Pour DSA, l’algorithme de chiffrement de hachage est normalement un algorithme de signature DSS.
Ce membre est utilisé avec CMS pour le traitement PKCS #7 et ne peut être utilisé que si CMSG_SIGNER_ENCODE_INFO_HAS_CMS_FIELDS est défini.
pvHashEncryptionAuxInfo
Ce membre n’est pas utilisé. Ce membre doit avoir la valeur NULL s’il est présent dans la structure de données. Ce membre est présent uniquement si CMSG_SIGNER_ENCODE_INFO_HAS_CMS_FIELDS est défini.
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] |
En-tête | wincrypt.h |