CMSG_CONTENT_ENCRYPT_INFO Struktur (wincrypt.h)
Die CMSG_CONTENT_ENCRYPT_INFO-Struktur enthält Informationen, die zwischen den funktionen PFN_CMSG_GEN_CONTENT_ENCRYPT_KEY, PFN_CMSG_EXPORT_KEY_TRANS, PFN_CMSG_EXPORT_KEY_AGREE und PFN_CMSG_EXPORT_MAIL_LIST für die Verschlüsselung und den Export eines Inhaltsverschlüsselungsschlüssels verwendet werden, der mithilfe einer Kryptografie-API installiert werden kann: CNG-Objektbezeichner der nächsten Generation (OID).
Syntax
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;
Member
cbSize
Die Größe (in Bytes) dieser Struktur.
hCryptProv
Ein Handle für einen Kryptografiedienstanbieter (CSP). Wenn der fCNG-MemberFALSE ist und das hCryptProv-Element bei der Eingabe NULL ist, muss hCryptProv von der Rückruffunktion aktualisiert werden. Wenn ein Anbieter erworben wird, der freigegeben werden muss, muss die CMSG_CONTENT_ENCRYPT_RELEASE_CONTEXT_FLAG im dwFlags-Element festgelegt werden.
ContentEncryptionAlgorithm
Eine CRYPT_ALGORITHM_IDENTIFIER-Struktur , die den Algorithmus angibt, der zum Verschlüsseln des Schlüssels verwendet wird. Wenn die Rückruffunktion entweder den pszObjId-Member oder das Parameters-Element der CRYPT_ALGORITHM_IDENTIFIER-Struktur aktualisiert, legen Sie den entsprechenden Wert im dwFlags-Element fest. Sie müssen Arbeitsspeicher für diese Werte mithilfe der Elemente pfnAlloc und pfnFree zuweisen und freigeben.
pvEncryptionAuxInfo
Ein Zeiger auf eine Struktur, die vom Verschlüsselungsalgorithmus abhängig ist. In der folgenden Tabelle sind mögliche Algorithmus-IDs und der entsprechende Memberinhalt aufgeführt.
Wert | Bedeutung |
---|---|
|
|
|
Für alle anderen Verschlüsselungsalgorithmen ist dieser Wert NULL.
cRecipients
Ein Wert, der die Anzahl der Empfänger einer Nachricht angibt.
rgCmsRecipients
Ein Zeiger auf ein Array von CMSG_RECIPIENT_ENCODE_INFO Strukturen, die die Nachrichtenempfängerinformationen enthalten.
pfnAlloc
Ein Zeiger auf eine installierbare Funktion, die zum Zuweisen von Arbeitsspeicher für einen aktualisierten Member verwendet wird.
pfnFree
Ein Zeiger auf eine installierbare Funktion, die verwendet wird, um von pfnAlloc zugewiesenen Arbeitsspeicher freizugeben.
dwEncryptFlags
Ein Wert, der angibt, ob die codierte Ausgabe mit Nullen aufgefüllt werden soll, um eine konsistente maximale Länge zu erhalten, die für das Streaming mit bestimmter Länge in den Funktionen CryptMsgCalculateEncodedLength oder CryptMsgOpenToEncode erforderlich ist.
CMSG_CONTENT_ENCRYPT_PAD_ENCODED_LEN_FLAG (0x00000001)
DUMMYUNIONNAME
DUMMYUNIONNAME.hContentEncryptKey
Ein Handle für den Inhaltsverschlüsselungsschlüssel, wenn der fCNG-MemberFALSE ist.
DUMMYUNIONNAME.hCNGContentEncryptKey
Ein Handle für den Inhaltsverschlüsselungsschlüssel, wenn das fCNG-ElementTRUE ist.
dwFlags
Ein Wert, der angibt, ob Arbeitsspeicher für die Mitglieder hCryptProv oder ContentEncryptionAlgorithm freigegeben werden muss.
Wert | Bedeutung |
---|---|
|
Legen Sie fest, wenn die Rückruffunktion das Parameters-Element der CRYPT_ALGORITHM_IDENTIFIER Struktur aktualisiert, auf die vom ContentEncryptionAlgorithm-Element verwiesen wird. |
|
Legen Sie fest, wenn die Rückruffunktion das pszObjId-Element der CRYPT_ALGORITHM_IDENTIFIER Struktur aktualisiert, auf die vom ContentEncryptionAlgorithm-Element verwiesen wird. |
|
Legen Sie fest, wenn die Rückruffunktion ein hCryptProv-Element abruft, das freigegeben werden muss. |
fCNG
Ein Wert, der angibt, ob ein CNG-Anbieter ( Cryptography API: Next Generation ) zum Generieren des Inhaltsverschlüsselungsschlüssels verwendet werden soll.
Wenn der fCNG-MemberFALSE ist, wird die CMSG_OID_GEN_CONTENT_ENCRYPT_KEY_FUNC-Funktion aufgerufen, um das hContentEncryptKey-Element zu aktualisieren.
Wenn das fCNG-ElementTRUE ist, wird die CMSG_OID_CNG_GEN_CONTENT_ENCRYPT_KEY_FUNC-Funktion aufgerufen, um die Elemente hCNGContentEncryptKey und cbContentEncryptKey zu aktualisieren, und die Mitglieder pbCNGContentEncryptKeyObject und pbContentEncryptKey müssen vom pfnAlloc-Member zugeordnet werden. Geben Sie den Inhaltsverschlüsselungsschlüssel frei, und geben Sie sie frei, indem Sie die Funktion CryptMsgClose aufrufen.
pbCNGContentEncryptKeyObject
Ein Zeiger auf den Puffer, der den CNG-Inhaltsverschlüsselungsschlüssel enthält.
pbContentEncryptKey
Ein Zeiger auf den Puffer, der einen CAPI1-Inhaltsverschlüsselungsschlüssel enthält.
cbContentEncryptKey
Die Größe des pbCNGContentEncryptKeyObject - oder pbContentEncryptKey-Elements in Bytes, abhängig vom Wert des fCNG-Members .
Hinweise
Wenn der dwMsgType-Parameter auf CMSG_ENVELOPED festgelegt ist, initialisiert die CryptMsgOpenToEncode-Funktion die CMSG_CONTENT_ENCRYPT_INFO-Struktur aus der CMSG_ENVELOPED_ENCODE_INFO-Struktur .
Wenn die CMSG_ENVELOPED_ENCODE_INFO-Struktur den rgpRecipients-Member anstelle des rgCmsRecipients-Members verwendet, konvertiert die CryptMsgOpenToEncode-Funktion die rgpRecipients-Memberstrukturen in CMSG_RECIPIENT_ENCODE_INFO Strukturen für das rgCmsRecipients-Element der CMSG_CONTENT_ENCRYPT_INFO-Struktur .
Wenn der fCNG-MemberFALSE ist, können die folgenden Elemente in der CMSG_CONTENT_ENCRYPT_INFO-Struktur geändert werden:
- hContentEncryptKey
- hCryptProv
- Das pszObjId-Element der CRYPT_ALGORITHM_IDENTIFIER-Struktur , auf die vom ContentEncryptionAlgorithm-Element verwiesen wird
- Das Parameters-Element der CRYPT_ALGORITHM_IDENTIFIER-Struktur , auf die vom ContentEncryptionAlgorithm-Element verwiesen wird
- dwFlags
Wenn das fCNG-ElementTRUE ist, können die folgenden Member in der CMSG_CONTENT_ENCRYPT_INFO-Struktur geändert werden:
- hCNGContentEncryptKey
- pbCNGContentEncryptKeyObject
- pbContentEncryptKey
- cbContentEncryptKey
- Das pszObjId-Element der CRYPT_ALGORITHM_IDENTIFIER-Struktur , auf die vom ContentEncryptionAlgorithm-Element verwiesen wird
- Das Parameters-Element der CRYPT_ALGORITHM_IDENTIFIER-Struktur , auf die vom ContentEncryptionAlgorithm-Element verwiesen wird
- dwFlags
Die folgenden Member sind schreibgeschützt:
- cbSize
- pvEncryptionAuxInfo
- cRecipients
- rgCmsRecipients
- pfnAlloc
- pfnFree
- dwEncryptFlags
Anforderungen
Unterstützte Mindestversion (Client) | Windows XP [nur Desktop-Apps] |
Unterstützte Mindestversion (Server) | Windows Server 2003 [nur Desktop-Apps] |
Kopfzeile | wincrypt.h |