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 |
---|---|
|
|
|
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 |
---|---|
|
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 . |
|
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 . |
|
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 |