CRYPT_ENCRYPT_MESSAGE_PARA structure (wincrypt.h)

La structure CRYPT_ENCRYPT_MESSAGE_PARA contient des informations utilisées pour chiffrer les messages.

Syntaxe

typedef struct _CRYPT_ENCRYPT_MESSAGE_PARA {
  DWORD                      cbSize;
  DWORD                      dwMsgEncodingType;
  HCRYPTPROV_LEGACY          hCryptProv;
  CRYPT_ALGORITHM_IDENTIFIER ContentEncryptionAlgorithm;
  void                       *pvEncryptionAuxInfo;
  DWORD                      dwFlags;
  DWORD                      dwInnerContentType;
} CRYPT_ENCRYPT_MESSAGE_PARA, *PCRYPT_ENCRYPT_MESSAGE_PARA;

Membres

cbSize

Taille, en octets, de cette structure.

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

hCryptProv

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

Windows Server 2003 et Windows XP : Handle du fournisseur de services de chiffrement (CSP) à utiliser pour le chiffrement. Le fournisseur de solutions Cloud identifié par hCryptProv est utilisé pour effectuer le chiffrement du contenu, le chiffrement de clé de destinataire et l’exportation de clé de destinataire. Sa clé privée n’est pas utilisée.

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

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

ContentEncryptionAlgorithm

Structure CRYPT_ALGORITHM_IDENTIFIER qui contient l’identificateur d’objet (OID) de l’algorithme de chiffrement à utiliser. Le fournisseur de solutions Cloud spécifié par hCryptProv doit prendre en charge cet algorithme de chiffrement.

Les algorithmes de chiffrement szOID_OIWSEC_desCBC (CALG_DES) et szOID_RSA_DES_EDE3_CBC (CALG_3DES) nécessitent que le membre Parameters de cette structure contienne un vecteur d’initialisation (IV) codé de huit octets. Si le membre cbData du membre Parameters est égal à zéro , une chaîne octet codée ASN.1 (ASN.1) qui contient l’objet IV est générée à l’aide de CryptGenRandom. Pour plus d’informations sur le paramètre KP_IV, consultez CryptSetKeyParam.

Les algorithmes de chiffrement szOID_NIST_AES128_CBC (BCRYPT_AES_ALGORITHM, 128 bits), szOID_NIST_AES192_CBC (BCRYPT_AES_ALGORITHM, 192 bits) et szOID_NIST_AES256_CBC (BCRYPT_AES_ALGORITHM, 256 bits) nécessitent que le membre Parameters de cette structure contienne un vecteur d’initialisation (IV) codé de seize octets. Si le membre cbData du membre Parameters est égal à zéro , une chaîne octet encodée ASN.1 (ASN.1) qui contient l’iv est générée.

L’algorithme szOID_RSA_RC2CBC (CALG_RC2) nécessite que le membre pbData du membre Parameters de cette structure soit une structure CRYPT_RC2_CBC_PARAMETERS. Si le membre cbData du membre Parameters est égal à zéro, une structure CRYPT_RC2_CBC_PARAMETERS encodée asN.1 qui contient l’iv est générée en tant que membre pbData . Cette pbData générée utilise la dwVersion par défaut qui correspond à la longueur de clé de 40 bits. Pour remplacer la longueur de clé de 40 bits par défaut, pvEncryptionAuxInfo peut être défini pour pointer vers une structure CMSG_RC2_AUX_INFO qui contient une longueur de bits clé.

Note Lorsqu’un message est déchiffré, s’il a un paramètre de vecteur d’initialisation , les fonctions de message de chiffrement appellent CryptSetKeyParam avec le vecteur d’initialisation avant de le déchiffrer.
 

pvEncryptionAuxInfo

Pointeur vers une structure CMSG_RC2_AUX_INFO pour le chiffrement RC2 ou une structure CMSG_SP3_COMPATIBLE_AUX_INFO pour le chiffrement compatible SP3. Pour un chiffrement autre que le chiffrement compatible RC2 ou SP3, ce membre doit être défini sur NULL.

Si le membre ContentEncryptionAlgorithm contient szOID_RSA_RC4, ce membre pointe vers une structure CMSG_RC4_AUX_INFO qui spécifie le nombre d’octets salés à inclure.

dwFlags

Normalement défini sur zéro. Toutefois, si la sortie encodée doit être un CMSG_ENVELOPED contenu interne d’un message de chiffrement externe, tel qu’un message CMSG_SIGNED, le CRYPT_MESSAGE_BARE_CONTENT_OUT_FLAG doit être défini. S’il n’est pas défini, le contenu 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 d’octets avant le chiffrement.

CRYPT_MESSAGE_KEYID_RECIPIENT_FLAG peut être défini pour identifier les destinataires par leur identificateur de clé et non par leur émetteur et leur numéro de série.

dwInnerContentType

Normalement défini sur zéro. Le membre dwInnerContentType doit être défini pour définir les types de messages de chiffrement si l’entrée à chiffrer est la sortie codée d’un autre message de chiffrement tel que CMSG_SIGNED.

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

CRYPT_ALGORITHM_IDENTIFIER

CryptEncryptMessage

CryptSignAndEncryptMessage