CMSG_ENVELOPED_ENCODE_INFO Struktur (wincrypt.h)

Die CMSG_ENVELOPED_ENCODE_INFO Struktur enthält Informationen, die zum Codieren einer umschlagierten Nachricht erforderlich sind. Er wird an CryptMsgOpenToEncode übergeben, wenn der dwMsgType-Parameter CMSG_ENVELOPED ist.

Syntax

typedef struct _CMSG_ENVELOPED_ENCODE_INFO {
  DWORD                       cbSize;
  HCRYPTPROV_LEGACY           hCryptProv;
  CRYPT_ALGORITHM_IDENTIFIER  ContentEncryptionAlgorithm;
  void                        *pvEncryptionAuxInfo;
  DWORD                       cRecipients;
  PCERT_INFO                  *rgpRecipients;
  PCMSG_RECIPIENT_ENCODE_INFO rgCmsRecipients;
  DWORD                       cCertEncoded;
  PCERT_BLOB                  rgCertEncoded;
  DWORD                       cCrlEncoded;
  PCRL_BLOB                   rgCrlEncoded;
  DWORD                       cAttrCertEncoded;
  PCERT_BLOB                  rgAttrCertEncoded;
  DWORD                       cUnprotectedAttr;
  PCRYPT_ATTRIBUTE            rgUnprotectedAttr;
} CMSG_ENVELOPED_ENCODE_INFO, *PCMSG_ENVELOPED_ENCODE_INFO;

Member

cbSize

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

hCryptProv

Dieses Element wird nicht verwendet und sollte auf NULL festgelegt werden.

Windows Server 2003 und Windows XP: Gibt einen Handle für den kryptografischen Dienstanbieter (CSP ) an, der für die Inhaltsverschlüsselung, die Empfängerschlüsselverschlüsselung und den Export verwendet wird. Die privaten Schlüssel des hCryptProv werden nicht verwendet.

Der Datentyp dieses Elements ist HCRYPTPROV.

Es sei denn, es gibt einen starken Grund für die Übergabe eines bestimmten kryptografischen Anbieters in hCryptProv, übergeben Sie null, um den standardmäßigen RSA- oder DSS-Anbieter zu verwenden.

ContentEncryptionAlgorithm

Eine CRYPT_ALGORITHM_IDENTIFIER Struktur, die den Signaturalgorithmustyp und alle zugeordneten zusätzlichen Parameter in codierter Form enthält.

Das pszObjId-Element der Struktur gibt den Algorithmus an, der zum Verschlüsseln des Nachrichteninhalts verwendet wird.

Die folgenden Verschlüsselungsalgorithmen erfordern einen codierten acht Byte-Initialisierungsvektor (IV) im Parameter-Element der Struktur. Ausführliche Informationen finden Sie unter CryptSetKeyParam.

Wert Bedeutung
CALG_DES
szOID_OIWSEC_desCBC
CALG_3DES
szOID_RSA_DES_EDE3_CBC
 

Wenn das cbData-Element des Parameters-Members null ist, wird eine abstrakte Syntax Notation One (ASN.1) codierte OCTET STRING mit dem IV mithilfe von CryptGenRandom generiert.

Der szOID_RSA_RC2CBC -Algorithmus (CALG_RC2) erfordert, dass das PbData-Element von Parameters eine codierte CRYPT_RC2_CBC_PARAMETERS Struktur sein soll. Wenn das cbData-Element des Parameters-Members null ist, wird ein ASN.1-codiertes CRYPT_RC2_CBC_PARAMETERS mit einem Standardwert von 40 für das dwVersion-Element generiert. Dadurch wird die Standardschlüssellänge auf 40 Bit festgelegt. Diese Standardschlüssellänge kann mit pvEncryptionAuxInfo überschrieben werden, die auf eine CMSG_RC2_AUX_INFO Struktur verweist, die die gewünschte Schlüssellänge enthält.

Hinweis Wenn ein IV vorhanden ist, wird CryptSetKeyParam mit dem IV aufgerufen, bevor die Entschlüsselung beginnt.
 

pvEncryptionAuxInfo

Ein Zeiger auf eine Struktur abhängig vom Verschlüsselungsalgorithmus.

Wert Bedeutung
RC2

CMSG_RC2_AUX_INFO

RC4

CMSG_RC4_AUX_INFO

SP3 oder kompatibel

CMSG_SP3_COMPATIBLE_AUX_INFO

Alle anderen Verschlüsselungsalgorithmen
NULL

cRecipients

Anzahl der Elemente im rgpRecipients - oder rgCmsRecipients-Array .

rgpRecipients

Ein Array von Zeigern auf CERT_INFO Strukturen, die jeweils den Zertifikatausgeber eines Empfängers, SerialNumber und SubjectPublicKeyInfo enthalten. Dieses Array kann nur für Empfänger verwendet werden, die von ihrem Aussteller und ihrer Seriennummer identifiziert werden. Wenn rgpRecipients nicht NULL ist, muss rgCmsRecipientsNULL sein.

rgCmsRecipients

Optional. Ein Array von Zeigern auf CMSG_RECIPIENT_ENCODE_INFO Strukturen, die Empfängerinformationen enthalten. Wenn rgCmsRecipients nicht NULL ist, muss rgpRecipientsNULL sein. CMSG_ENVELOPED_ENCODE_INFO_HAS_CMS_FIELDS muss definiert werden, um auf dieses Feld zu verweisen.

cCertEncoded

Optional. Ein DWORD-Wert , der die Anzahl codierter Zertifikate im rgCertEncoded-Array angibt. CMSG_ENVELOPED_ENCODE_INFO_HAS_CMS_FIELDS muss definiert werden, um auf dieses Feld zu verweisen.

rgCertEncoded

Optional. Array von CERT_BLOB Strukturen. CMSG_ENVELOPED_ENCODE_INFO_HAS_CMS_FIELDS muss definiert werden, um auf dieses Feld zu verweisen.

cCrlEncoded

Optional. Ein DWORD-Wert , der die Anzahl der codierten Zertifikatsperrlisten (CRLs) im rgCRLEncoded-Array angibt. CMSG_ENVELOPED_ENCODE_INFO_HAS_CMS_FIELDS muss definiert werden, um auf dieses Feld zu verweisen.

rgCrlEncoded

Optional. Ein Array von CRL_BLOB Strukturen. CMSG_ENVELOPED_ENCODE_INFO_HAS_CMS_FIELDS muss definiert werden, um auf dieses Feld zu verweisen.

cAttrCertEncoded

Optional. Ein DWORD-Wert , der die Anzahl der codierten Zertifikatattribute im rgAttrCertEncoded-Array angibt. CMSG_ENVELOPED_ENCODE_INFO_HAS_CMS_FIELDS muss definiert werden, um auf dieses Feld zu verweisen.

rgAttrCertEncoded

Optional. Ein Array von CRYPT_ATTRIBUTE Strukturen. CMSG_ENVELOPED_ENCODE_INFO_HAS_CMS_FIELDS müssen definiert werden, um auf dieses Element zu verweisen.

cUnprotectedAttr

Optional. Ein DWORD-Wert , der die Anzahl der nicht geschützten Attribute im rgUnprotectedAttr-Array angibt. CMSG_ENVELOPED_ENCODE_INFO_HAS_CMS_FIELDS muss definiert werden, um auf dieses Feld zu verweisen.

rgUnprotectedAttr

Optional. Ein Array von CRYPT_ATTRIBUTE Strukturen. CMSG_ENVELOPED_ENCODE_INFO_HAS_CMS_FIELDS muss definiert werden, um auf dieses Feld zu verweisen.

Anforderungen

   
Unterstützte Mindestversion (Client) Windows XP [Nur Desktop-Apps]
Unterstützte Mindestversion (Server) Windows Server 2003 [Nur Desktop-Apps]
Header wincrypt.h

Weitere Informationen

CERT_INFO

CRYPT_ALGORITHM_IDENTIFIER