Partager via


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
AT_KEYEXCHANGE
Clés utilisées pour chiffrer/déchiffrer les clés de session.
AT_SIGNATURE
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

Voir aussi

CERT_INFO

CRYPT_ALGORITHM_IDENTIFIER

CRYPT_ATTRIBUTE

CryptMsgControl

CryptMsgCountersign