structure CRYPT_SIGN_MESSAGE_PARA (wincrypt.h)

La structure CRYPT_SIGN_MESSAGE_PARA contient des informations pour la signature de messages à l’aide d’un contexte de certificat de signature spécifié.

Syntaxe

typedef struct _CRYPT_SIGN_MESSAGE_PARA {
  DWORD                      cbSize;
  DWORD                      dwMsgEncodingType;
  PCCERT_CONTEXT             pSigningCert;
  CRYPT_ALGORITHM_IDENTIFIER HashAlgorithm;
  void                       *pvHashAuxInfo;
  DWORD                      cMsgCert;
  PCCERT_CONTEXT             *rgpMsgCert;
  DWORD                      cMsgCrl;
  PCCRL_CONTEXT              *rgpMsgCrl;
  DWORD                      cAuthAttr;
  PCRYPT_ATTRIBUTE           rgAuthAttr;
  DWORD                      cUnauthAttr;
  PCRYPT_ATTRIBUTE           rgUnauthAttr;
  DWORD                      dwFlags;
  DWORD                      dwInnerContentType;
  CRYPT_ALGORITHM_IDENTIFIER HashEncryptionAlgorithm;
  void                       *pvHashEncryptionAuxInfo;
} CRYPT_SIGN_MESSAGE_PARA, *PCRYPT_SIGN_MESSAGE_PARA;

Membres

cbSize

Taille de cette structure en octets.

dwMsgEncodingType

Type d’encodage utilisé. Il est toujours acceptable de spécifier les types d’encodage de certificat et de message en les combinant avec une opération OR au niveau du bit, comme illustré dans l’exemple suivant :

X509_ASN_ENCODING | PKCS_7_ASN_ENCODING

Les types d’encodage actuellement définis sont les suivants :

  • X509_ASN_ENCODING
  • PKCS_7_ASN_ENCODING

pSigningCert

Pointeur vers le CERT_CONTEXT à utiliser dans la signature.

La propriété CERT_KEY_PROV_INFO_PROP_ID ou CERT_KEY_CONTEXT_PROP_ID doit être définie pour le contexte afin de fournir l’accès à la clé de signature privée.

HashAlgorithm

CRYPT_ALGORITHM_IDENTIFIER contenant l’algorithme de hachage utilisé pour hacher les données à signer.

pvHashAuxInfo

Non utilisé actuellement, et doit être défini sur NULL.

cMsgCert

Nombre d’éléments dans le tableau rgpMsgCert de structures CERT_CONTEXT . Si la valeur est zéro, aucun certificat n’est inclus dans le message signé.

rgpMsgCert

Tableau de pointeurs vers CERT_CONTEXT structures à inclure dans le message signé. Si le pSigningCert doit être inclus, un pointeur vers celui-ci doit se trouver dans le tableau rgpMsgCert .

cMsgCrl

Nombre d’éléments dans le tableau rgpMsgCrl de pointeurs vers CRL_CONTEXT structures. Si la valeur est égale à zéro, aucune structure CRL_CONTEXT n’est incluse dans le message signé.

rgpMsgCrl

Tableau de pointeurs vers CRL_CONTEXT structures à inclure dans le message signé.

cAuthAttr

Nombre d’éléments dans le tableau rgAuthAttr . Si aucun attribut authentifié n’est présent dans rgAuthAttr, ce membre est défini sur zéro.

rgAuthAttr

Tableau de pointeurs vers CRYPT_ATTRIBUTE structures, chacun contenant des informations d’attribut authentifiées. Si des attributs authentifiés sont présents, la norme PKCS #9 indique qu’au moins deux attributs doivent être présents, l’identificateur d’objet de type de contenu (OID) et le hachage du message lui-même. Ces attributs sont automatiquement ajoutés par le système.

cUnauthAttr

Nombre d’éléments dans le tableau rgUnauthAttr . Si aucun attribut non authentifié n’est présent dans rgUnauthAttr, ce membre est égal à zéro.

rgUnauthAttr

Tableau de pointeurs vers CRYPT_ATTRIBUTE structures contenant chacune des informations d’attribut non authentifiées. Les attributs non authentifiés peuvent être utilisés pour contenir des contre-signatures, entre autres utilisations.

dwFlags

Normalement zéro. Si la sortie encodée doit être un CMSG_SIGNED contenu interne d’un message de chiffrement externe tel qu’un message CMSG_ENVELOPED, le CRYPT_MESSAGE_BARE_CONTENT_OUT_FLAG doit être défini. S’il n’est pas défini, le message est encodé en tant que type de contenu interne de CMSG_DATA.

CRYPT_MESSAGE_ENCAPSULATED_CONTENT_OUT_FLAG peut être défini pour encapsuler du contenu interne non-data dans une chaîne OCTET. CRYPT_MESSAGE_KEYID_SIGNER_FLAG peut être défini pour identifier les signataires par leur identificateur de clé et non par leur émetteur et leur numéro de série.

CRYPT_MESSAGE_SILENT_KEYSET_FLAG peut être défini pour supprimer n’importe quelle interface utilisateur par le fournisseur de solutions cloud. Pour plus d’informations sur l’indicateur CRYPT_SILENT, consultez CryptAcquireContext.

dwInnerContentType

Normalement zéro. Définissez le type d’encodage du message d’entrée si cette entrée à signer est la sortie encodée d’un autre message de chiffrement.

HashEncryptionAlgorithm

Une CRYPT_ALGORITHM_IDENTIFIER. S’il est présent et non NULL, il est utilisé à la place du membre PublicKeyInfo.Algorithm du certificat du signataire. Notez que 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 ne peut être utilisé que si CRYPT_SIGN_MESSAGE_PARA_HAS_CMS_FIELDS est défini.

pvHashEncryptionAuxInfo

Actuellement non utilisé et doit être défini sur NULL. Ce membre ne peut être utilisé que si CRYPT_SIGN_MESSAGE_PARA_HAS_CMS_FIELDS est défini.

Remarques

Les membres HashEncryptionAlgorithm et pvHashEncryptionAuxInfo ne peuvent être utilisés que si CRYPT_SIGN_MESSAGE_PARA_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_CONTEXT

CRL_CONTEXT

CRYPT_ALGORITHM_IDENTIFIER

CRYPT_ATTRIBUTE

CryptSignAndEncryptMessage

CryptSignMessage