CMSG_ENVELOPED_ENCODE_INFO-Struktur (wincrypt.h)

Die CMSG_ENVELOPED_ENCODE_INFO-Struktur enthält Informationen, die zum Codieren einer umhüllten 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

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

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

Der Datentyp dieses Members ist HCRYPTPROV.

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.

ContentEncryptionAlgorithm

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

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

Die folgenden Verschlüsselungsalgorithmen erfordern einen codierten Initialisierungsvektor für acht Byte (IV) im Parameterelement der Struktur. Weitere 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-Elements null ist, wird mit CryptGenRandom ein ASN.1-codiertes OCTET STRING (Abstract Syntax Notation One) mit dem IV generiert.

Der szOID_RSA_RC2CBC -Algorithmus (CALG_RC2) erfordert, dass das pbData-Element von Parameters eine codierte CRYPT_RC2_CBC_PARAMETERS-Struktur ist. Wenn das cbData-Element des Parameters-Elements null ist, wird eine ASN.1-codierte CRYPT_RC2_CBC_PARAMETERS mit dem Standardwert 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, der auf eine CMSG_RC2_AUX_INFO-Struktur verweist, die die gewünschte Schlüssellänge enthält.

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

pvEncryptionAuxInfo

Ein Zeiger auf eine Struktur, die vom Verschlüsselungsalgorithmus abhängt.

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 das Zertifikat Issuer, SerialNumber und SubjectPublicKeyInfo eines Empfängers enthalten. Dieses Array kann nur für Empfänger verwendet werden, die durch den Aussteller und die 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 der codierten 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 (Certificate Revocation Lists , 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 muss definiert werden, um auf diesen Member 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]
Kopfzeile wincrypt.h

Weitere Informationen

CERT_INFO

CRYPT_ALGORITHM_IDENTIFIER