CRYPT_ENCRYPT_MESSAGE_PARA-Struktur (wincrypt.h)

Die CRYPT_ENCRYPT_MESSAGE_PARA-Struktur enthält Informationen, die zum Verschlüsseln von Nachrichten verwendet werden.

Syntax

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;

Member

cbSize

Die Größe (in Bytes) dieser Struktur.

dwMsgEncodingType

Der verwendete Codierungstyp. Es ist immer akzeptabel, sowohl den Zertifikat- als auch den Nachrichtencodierungstyp anzugeben, indem sie mit einem bitweisen OR-Vorgang kombiniert werden, wie im folgenden Beispiel gezeigt:

X509_ASN_ENCODING | PKCS_7_ASN_ENCODING

Derzeit definierte Codierungstypen sind:

  • X509_ASN_ENCODING
  • PKCS_7_ASN_ENCODING

hCryptProv

Dieser Member wird nicht verwendet und sollte auf NULL festgelegt werden.

Windows Server 2003 und Windows XP: Das Handle für den Kryptografiedienstanbieter (Cryptographic Service Provider , CSP), der für die Verschlüsselung verwendet werden soll. Der von hCryptProv identifizierte CSP wird für die Inhaltsverschlüsselung, die Empfängerschlüsselverschlüsselung und den Empfängerschlüsselexport verwendet. Der private Schlüssel wird nicht verwendet.

Sofern kein starker Grund für die Übergabe eines bestimmten Kryptografieanbieters in hCryptProv vorliegt, übergeben Sie null, um den Standard-RSA- oder DSS-Anbieter zu verwenden.

Der Datentyp dieses Members ist HCRYPTPROV.

ContentEncryptionAlgorithm

Eine CRYPT_ALGORITHM_IDENTIFIER Struktur, die den Objektbezeichner (Object Identifier, OID) des zu verwendenden Verschlüsselungsalgorithmus enthält. Der von hCryptProv angegebene CSP muss diesen Verschlüsselungsalgorithmus unterstützen.

Die Verschlüsselungsalgorithmen szOID_OIWSEC_desCBC (CALG_DES) und szOID_RSA_DES_EDE3_CBC (CALG_3DES) erfordern, dass der Parameter-Member dieser Struktur einen codierten Acht-Byte-Initialisierungsvektor (IV) enthält. Wenn das cbData-Element des Parameters-Elements null ist, wird mit CryptGenRandom ein ASN.1-codiertes OCTET STRING-Objekt generiert, das den IV enthält. Weitere Informationen zum parameter KP_IV finden Sie unter CryptSetKeyParam.

Die Verschlüsselungsalgorithmen szOID_NIST_AES128_CBC (BCRYPT_AES_ALGORITHM, 128 Bit), szOID_NIST_AES192_CBC (BCRYPT_AES_ALGORITHM, 192 Bit) und szOID_NIST_AES256_CBC (BCRYPT_AES_ALGORITHM, 256 Bit) erfordern, dass der Parameter-Member dieser Struktur einen codierten Sechzehn-Byte-Initialisierungsvektor (IV) enthält. Wenn das cbData-Element des Parameters-Elements null ist, wird ein ASN.1-codiertes OCTET STRING generiert, das den IV enthält.

Der szOID_RSA_RC2CBC-Algorithmus (CALG_RC2) erfordert, dass der pbData-Member des Parameters-Elements dieser Struktur eine CRYPT_RC2_CBC_PARAMETERS-Struktur ist. Wenn das cbData-Element des Parameters-Elements null ist, wird eine ASN.1-codierte CRYPT_RC2_CBC_PARAMETERS-Struktur , die den IV enthält, als pbData-Element generiert. Diese generierte pbData verwendet die standard dwVersion , die der 40-Bit-Schlüssellänge entspricht. Um die Standardschlüssellänge von 40 Bit zu überschreiben, kann pvEncryptionAuxInfo so festgelegt werden, dass er auf eine CMSG_RC2_AUX_INFO Struktur verweist, die eine Schlüsselbitlänge enthält.

Hinweis Wenn eine Nachricht entschlüsselt wird und über einen Initialisierungsvektorparameter verfügt, rufen die kryptografischen Nachrichtenfunktionen vor der Entschlüsselung CryptSetKeyParam mit dem Initialisierungsvektor auf.
 

pvEncryptionAuxInfo

Ein Zeiger auf eine CMSG_RC2_AUX_INFO-Struktur für die RC2-Verschlüsselung oder eine CMSG_SP3_COMPATIBLE_AUX_INFO-Struktur für SP3-kompatible Verschlüsselung. Bei einer anderen als RC2- oder SP3-kompatiblen Verschlüsselung muss dieser Member auf NULL festgelegt werden.

Wenn das ContentEncryptionAlgorithm-ElementszOID_RSA_RC4 enthält, verweist dieser Member auf eine CMSG_RC4_AUX_INFO-Struktur , die die Anzahl der einzuschliessenden Salzbytes angibt.

dwFlags

Normalerweise auf 0 festgelegt. Wenn die codierte Ausgabe jedoch ein CMSG_ENVELOPED innerer Inhalt einer äußeren kryptografischen Nachricht sein soll, z. B. eine CMSG_SIGNED Nachricht, muss die CRYPT_MESSAGE_BARE_CONTENT_OUT_FLAG festgelegt werden. Wenn er nicht festgelegt ist, wird der Inhalt als innerer Inhaltstyp CMSG_DATA codiert.

CRYPT_MESSAGE_ENCAPSULATED_CONTENT_OUT_FLAG kann so festgelegt werden, dass nicht-dateninterne Inhalte vor der Verschlüsselung innerhalb einer OKTETTZEICHENFOLGE gekapselt werden.

CRYPT_MESSAGE_KEYID_RECIPIENT_FLAG kann so festgelegt werden, dass Empfänger anhand ihres Schlüsselbezeichners und nicht anhand des Ausstellers und der Seriennummer identifiziert werden.

dwInnerContentType

Normalerweise auf 0 festgelegt. Das dwInnerContentType-Element muss so festgelegt werden, dass die kryptografischen Nachrichtentypen festgelegt werden, wenn die zu verschlüsselnde Eingabe die codierte Ausgabe einer anderen kryptografischen Nachricht wie CMSG_SIGNED ist.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows XP [nur Desktop-Apps]
Unterstützte Mindestversion (Server) Windows Server 2003 [nur Desktop-Apps]
Kopfzeile wincrypt.h

Weitere Informationen

CRYPT_ALGORITHM_IDENTIFIER

CryptEncryptMessage

CryptSignAndEncryptMessage