Share via


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
RC2

CMSG_RC2_AUX_INFO

RC4

CMSG_RC4_AUX_INFO

 

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
CMSG_CONTENT_ENCRYPT_FREE_PARA_FLAG
0x00000001
Legen Sie fest, wenn die Rückruffunktion das Parameters-Element der CRYPT_ALGORITHM_IDENTIFIER Struktur aktualisiert, auf die vom ContentEncryptionAlgorithm-Element verwiesen wird.
CMSG_CONTENT_ENCRYPT_FREE_OBJID_FLAG
0x00000002
Legen Sie fest, wenn die Rückruffunktion das pszObjId-Element der CRYPT_ALGORITHM_IDENTIFIER Struktur aktualisiert, auf die vom ContentEncryptionAlgorithm-Element verwiesen wird.
CMSG_CONTENT_ENCRYPT_RELEASE_CONTEXT_FLAG
0x00008000
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

Weitere Informationen

PFN_CMSG_EXPORT_KEY_AGREE

PFN_CMSG_EXPORT_KEY_TRANS

PFN_CMSG_EXPORT_MAIL_LIST

PFN_CMSG_GEN_CONTENT_ENCRYPT_KEY