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