structure CMSG_CONTENT_ENCRYPT_INFO (wincrypt.h)

La structure de CMSG_CONTENT_ENCRYPT_INFO contient des informations partagées entre les fonctions PFN_CMSG_GEN_CONTENT_ENCRYPT_KEY, PFN_CMSG_EXPORT_KEY_TRANS, PFN_CMSG_EXPORT_KEY_AGREE et PFN_CMSG_EXPORT_MAIL_LIST utilisées pour le chiffrement et l’exportation d’une clé de chiffrement de contenu, qui peut être installée à l’aide d’une API de chiffrement : identificateur d’objet (OID) de génération suivante (CNG).

Syntaxe

typedef struct _CMSG_CONTENT_ENCRYPT_INFO {
  DWORD                       cbSize;
  HCRYPTPROV_LEGACY           hCryptProv;
  CRYPT_ALGORITHM_IDENTIFIER  ContentEncryptionAlgorithm;
  void                        *pvEncryptionAuxInfo;
  DWORD                       cRecipients;
  PCMSG_RECIPIENT_ENCODE_INFO rgCmsRecipients;
  PFN_CMSG_ALLOC              pfnAlloc;
  PFN_CMSG_FREE               pfnFree;
  DWORD                       dwEncryptFlags;
  union {
    HCRYPTKEY         hContentEncryptKey;
    BCRYPT_KEY_HANDLE hCNGContentEncryptKey;
  } DUMMYUNIONNAME;
  DWORD                       dwFlags;
  BOOL                        fCNG;
  BYTE                        *pbCNGContentEncryptKeyObject;
  BYTE                        *pbContentEncryptKey;
  DWORD                       cbContentEncryptKey;
} CMSG_CONTENT_ENCRYPT_INFO, *PCMSG_CONTENT_ENCRYPT_INFO;

Membres

cbSize

Taille, en octets, de cette structure.

hCryptProv

Handle à un fournisseur de services de chiffrement (CSP). Si le membre fCNG a la valeur FALSE et que le membre hCryptProv a la valeur NULL lors de l’entrée, hCryptProv doit être mis à jour par la fonction de rappel. Si un fournisseur acquis doit être libéré, le CMSG_CONTENT_ENCRYPT_RELEASE_CONTEXT_FLAG doit être défini dans le membre dwFlags .

ContentEncryptionAlgorithm

Une structure CRYPT_ALGORITHM_IDENTIFIER qui spécifie l’algorithme utilisé pour chiffrer la clé. Si la fonction de rappel met à jour le membre pszObjId ou le membre Parameters de la structure CRYPT_ALGORITHM_IDENTIFIER , définissez la valeur appropriée dans le membre dwFlags . Vous devez allouer et libérer de la mémoire pour ces valeurs à l’aide des membres pfnAlloc et pfnFree .

pvEncryptionAuxInfo

Pointeur vers une structure qui dépend de l’algorithme de chiffrement. Le tableau suivant répertorie les ID d’algorithme possibles et le contenu du membre correspondant.

Valeur Signification
RC2

CMSG_RC2_AUX_INFO

RC4

CMSG_RC4_AUX_INFO

 

Pour tous les autres algorithmes de chiffrement, cette valeur est NULL.

cRecipients

Valeur qui spécifie le nombre de destinataires d’un message.

rgCmsRecipients

Pointeur vers un tableau de structures CMSG_RECIPIENT_ENCODE_INFO qui contiennent les informations du destinataire du message.

pfnAlloc

Pointeur vers une fonction installable utilisée pour allouer de la mémoire à un membre mis à jour.

pfnFree

Pointeur vers une fonction installable utilisée pour libérer la mémoire allouée par pfnAlloc.

dwEncryptFlags

Valeur qui indique si la sortie encodée doit être complétée avec des zéros pour obtenir une longueur maximale cohérente requise pour la diffusion en continu de longueur définie dans les fonctions CryptMsgCalculateEncodedLength ou CryptMsgOpenToEncode .

CMSG_CONTENT_ENCRYPT_PAD_ENCODED_LEN_FLAG (0x00000001)

DUMMYUNIONNAME

DUMMYUNIONNAME.hContentEncryptKey

Handle de la clé de chiffrement de contenu lorsque le membre fCNG est FALSE.

DUMMYUNIONNAME.hCNGContentEncryptKey

Handle de la clé de chiffrement de contenu lorsque le membre fCNG a la valeur TRUE.

dwFlags

Valeur qui indique si la mémoire doit être libérée pour les membres hCryptProv ou ContentEncryptionAlgorithm .

Valeur Signification
CMSG_CONTENT_ENCRYPT_FREE_PARA_FLAG
0x00000001
Définissez si la fonction de rappel met à jour le membre Parameters de la structure CRYPT_ALGORITHM_IDENTIFIER référencée par le membre ContentEncryptionAlgorithm .
CMSG_CONTENT_ENCRYPT_FREE_OBJID_FLAG
0x00000002
Définissez si la fonction de rappel met à jour le membre pszObjId de la structure CRYPT_ALGORITHM_IDENTIFIER référencée par le membre ContentEncryptionAlgorithm .
CMSG_CONTENT_ENCRYPT_RELEASE_CONTEXT_FLAG
0x00008000
Définissez si la fonction de rappel acquiert un membre hCryptProv qui doit être libéré.

fCNG

Valeur qui indique s’il faut utiliser un fournisseur d’API de chiffrement : nouvelle génération (CNG) pour générer la clé de chiffrement de contenu.

Si le membre fCNG a la valeur FALSE, la fonction CMSG_OID_GEN_CONTENT_ENCRYPT_KEY_FUNC est appelée pour mettre à jour le membre hContentEncryptKey .

Si le membre fCNG a la valeur TRUE, la fonction CMSG_OID_CNG_GEN_CONTENT_ENCRYPT_KEY_FUNC est appelée pour mettre à jour les membres hCNGContentEncryptKey et cbContentEncryptKey , et les membres pbCNGContentEncryptKeyObject et pbContentEncryptKey doivent être alloués par le membre pfnAlloc . Libérez et libérez la clé de chiffrement de contenu en appelant la fonction CryptMsgClose .

pbCNGContentEncryptKeyObject

Pointeur vers la mémoire tampon qui contient la clé de chiffrement de contenu CNG.

pbContentEncryptKey

Pointeur vers la mémoire tampon qui contient une clé de chiffrement de contenu CAPI1.

cbContentEncryptKey

Taille, en octets, du membre pbCNGContentEncryptKeyObject ou pbContentEncryptKey en fonction de la valeur du membre fCNG .

Remarques

Lorsqu’elle est appelée avec le paramètre dwMsgType défini sur CMSG_ENVELOPED, la fonction CryptMsgOpenToEncode initialise la structure CMSG_CONTENT_ENCRYPT_INFO à partir de la structure CMSG_ENVELOPED_ENCODE_INFO .

Si la structure CMSG_ENVELOPED_ENCODE_INFO utilise le membre rgpRecipients au lieu du membre rgCmsRecipients , la fonction CryptMsgOpenToEncode convertit les structures membres rgpRecipients en structures CMSG_RECIPIENT_ENCODE_INFO pour le membre rgCmsRecipients de la structure CMSG_CONTENT_ENCRYPT_INFO .

Lorsque le membre fCNG a la valeur FALSE, les membres suivants peuvent être modifiés dans la structure CMSG_CONTENT_ENCRYPT_INFO :

hContentEncryptKey
hCryptProv
Membre pszObjId de la structure CRYPT_ALGORITHM_IDENTIFIER référencée par le membre ContentEncryptionAlgorithm
Membre Parameters de la structure CRYPT_ALGORITHM_IDENTIFIER référencée par le membre ContentEncryptionAlgorithm
dwFlags

Lorsque le membre fCNG a la valeur TRUE, les membres suivants peuvent être modifiés dans la structure CMSG_CONTENT_ENCRYPT_INFO :

hCNGContentEncryptKey
pbCNGContentEncryptKeyObject
pbContentEncryptKey
cbContentEncryptKey
Membre pszObjId de la structure CRYPT_ALGORITHM_IDENTIFIER référencée par le membre ContentEncryptionAlgorithm
Membre Parameters de la structure CRYPT_ALGORITHM_IDENTIFIER référencée par le membre ContentEncryptionAlgorithm
dwFlags

Les membres suivants sont en lecture seule :

cbSize
pvEncryptionAuxInfo
cRecipients
rgCmsRecipients
pfnAlloc
pfnFree
dwEncryptFlags

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

PFN_CMSG_EXPORT_KEY_AGREE

PFN_CMSG_EXPORT_KEY_TRANS

PFN_CMSG_EXPORT_MAIL_LIST

PFN_CMSG_GEN_CONTENT_ENCRYPT_KEY