structure CMSG_ENVELOPED_ENCODE_INFO (wincrypt.h)

La structure CMSG_ENVELOPED_ENCODE_INFO contient les informations nécessaires à l’encodage d’un message enveloppe. Il est passé à CryptMsgOpenToEncode si le paramètre dwMsgType est CMSG_ENVELOPED.

Syntaxe

typedef struct _CMSG_ENVELOPED_ENCODE_INFO {
  DWORD                       cbSize;
  HCRYPTPROV_LEGACY           hCryptProv;
  CRYPT_ALGORITHM_IDENTIFIER  ContentEncryptionAlgorithm;
  void                        *pvEncryptionAuxInfo;
  DWORD                       cRecipients;
  PCERT_INFO                  *rgpRecipients;
  PCMSG_RECIPIENT_ENCODE_INFO rgCmsRecipients;
  DWORD                       cCertEncoded;
  PCERT_BLOB                  rgCertEncoded;
  DWORD                       cCrlEncoded;
  PCRL_BLOB                   rgCrlEncoded;
  DWORD                       cAttrCertEncoded;
  PCERT_BLOB                  rgAttrCertEncoded;
  DWORD                       cUnprotectedAttr;
  PCRYPT_ATTRIBUTE            rgUnprotectedAttr;
} CMSG_ENVELOPED_ENCODE_INFO, *PCMSG_ENVELOPED_ENCODE_INFO;

Membres

cbSize

Taille, en octets, de cette structure.

hCryptProv

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

Windows Server 2003 et Windows XP : Spécifie un handle pour le fournisseur de services de chiffrement (CSP) utilisé pour effectuer le chiffrement du contenu, le chiffrement de la clé de destinataire et l’exportation. Les clés privées du hCryptProv ne sont pas utilisées.

Le type de données de ce membre est HCRYPTPROV.

Sauf s’il existe une raison forte de transmettre un fournisseur de chiffrement spécifique dans hCryptProv, passez zéro pour utiliser le fournisseur RSA ou DSS par défaut.

ContentEncryptionAlgorithm

Une structure CRYPT_ALGORITHM_IDENTIFIER qui contient le type d’algorithme de signature et tous les paramètres supplémentaires associés sous forme encodée.

Le membre pszObjId de la structure spécifie l’algorithme utilisé pour chiffrer le contenu du message.

Les algorithmes de chiffrement suivants nécessitent un vecteur d’initialisation de huit octets encodé dans le membre Parameters de la structure. Pour plus d’informations, consultez CryptSetKeyParam.

Valeur Signification
CALG_DES
szOID_OIWSEC_desCBC
CALG_3DES
szOID_RSA_DES_EDE3_CBC
 

Si le membre cbData du membre Parameters est égal à zéro , une chaîne OCTET codée ASN.1 contenant l’IV est générée à l’aide de CryptGenRandom.

L’algorithme de szOID_RSA_RC2CBC (CALG_RC2) nécessite que le membre pbData de Parameters soit une structure de CRYPT_RC2_CBC_PARAMETERS encodée. Si le membre cbData du membre Parameters est égal à zéro, une CRYPT_RC2_CBC_PARAMETERS encodée ASN.1 est générée avec une valeur par défaut de 40 pour le membre dwVersion . Cela définit la longueur de la clé par défaut sur 40 bits. Cette longueur de clé par défaut peut être remplacée par pvEncryptionAuxInfo pointant vers une structure CMSG_RC2_AUX_INFO contenant la longueur de clé souhaitée.

Note Sur le déchiffrement, s’il existe un iv, CryptSetKeyParam est appelé avec l’iv avant le début du déchiffrement.
 

pvEncryptionAuxInfo

Pointeur vers une structure en fonction de l’algorithme de chiffrement.

Valeur Signification
RC2

CMSG_RC2_AUX_INFO

RC4

CMSG_RC4_AUX_INFO

SP3 ou compatible

CMSG_SP3_COMPATIBLE_AUX_INFO

Tous les autres algorithmes de chiffrement
NULL

cRecipients

Nombre d’éléments dans le tableau rgpRecipients ou rgCmsRecipients .

rgpRecipients

Tableau de pointeurs vers CERT_INFO structures, chacun contenant l’émetteur du certificat d’un destinataire, SerialNumber et SubjectPublicKeyInfo. Ce tableau ne peut être utilisé que pour les destinataires identifiés par leur émetteur et leur numéro de série. Si rgpRecipients n’a pas la valeur NULL, rgCmsRecipients doit avoir la valeur NULL.

rgCmsRecipients

facultatif. Tableau de pointeurs vers CMSG_RECIPIENT_ENCODE_INFO structures contenant des informations de destinataire. Si rgCmsRecipients n’a pas la valeur NULL, rgpRecipients doit avoir la valeur NULL. CMSG_ENVELOPED_ENCODE_INFO_HAS_CMS_FIELDS doit être défini pour référencer ce champ.

cCertEncoded

facultatif. Valeur DWORD qui indique le nombre de certificats encodés dans le tableau rgCertEncoded . CMSG_ENVELOPED_ENCODE_INFO_HAS_CMS_FIELDS doit être défini pour référencer ce champ.

rgCertEncoded

facultatif. Tableau de structures CERT_BLOB . CMSG_ENVELOPED_ENCODE_INFO_HAS_CMS_FIELDS doit être défini pour référencer ce champ.

cCrlEncoded

facultatif. Valeur DWORD qui indique le nombre de listes de révocation de certificats encodées (CRL) dans le tableau rgCRLEncoded . CMSG_ENVELOPED_ENCODE_INFO_HAS_CMS_FIELDS doit être défini pour référencer ce champ.

rgCrlEncoded

facultatif. Tableau de structures CRL_BLOB . CMSG_ENVELOPED_ENCODE_INFO_HAS_CMS_FIELDS doit être défini pour référencer ce champ.

cAttrCertEncoded

facultatif. Valeur DWORD qui indique le nombre d’attributs de certificat encodés dans le tableau rgAttrCertEncoded . CMSG_ENVELOPED_ENCODE_INFO_HAS_CMS_FIELDS doit être défini pour référencer ce champ.

rgAttrCertEncoded

facultatif. Tableau de structures CRYPT_ATTRIBUTE . CMSG_ENVELOPED_ENCODE_INFO_HAS_CMS_FIELDS doit être défini pour référencer ce membre.

cUnprotectedAttr

facultatif. Valeur DWORD qui indique le nombre d’attributs non protégés dans le tableau rgUnprotectedAttr . CMSG_ENVELOPED_ENCODE_INFO_HAS_CMS_FIELDS doit être défini pour référencer ce champ.

rgUnprotectedAttr

facultatif. Tableau de structures CRYPT_ATTRIBUTE . CMSG_ENVELOPED_ENCODE_INFO_HAS_CMS_FIELDS doit être défini pour référencer ce champ.

Configuration requise

   
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