CMSG_ENVELOPED_ENCODE_INFO構造体 (wincrypt.h)

CMSG_ENVELOPED_ENCODE_INFO構造体には、エンベロープ メッセージをエンコードするために必要な情報が含まれています。 dwMsgType パラメーターがCMSG_ENVELOPED場合は、CryptMsgOpenToEncode に渡されます。

構文

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;

メンバー

cbSize

この構造体のサイズ (バイト単位)。

hCryptProv

このメンバーは使用されず、 NULL に設定する必要があります。

Windows Server 2003 および Windows XP: コンテンツの暗号化、受信者キーの暗号化、エクスポートを行うために使用される 暗号化サービス プロバイダー (CSP) へのハンドルを指定します。 hCryptProv の秘密キーは使用されません。

このメンバーのデータ型は HCRYPTPROV です

hCryptProv で特定の暗号化プロバイダーを渡す強い理由がない限り、既定の RSA または DSS プロバイダーを使用するには 0 を渡します。

ContentEncryptionAlgorithm

署名アルゴリズムの種類と、エンコードされた形式で関連付けられている追加パラメーターを含む CRYPT_ALGORITHM_IDENTIFIER 構造体。

構造体の pszObjId メンバーは、メッセージの内容を暗号化するために使用されるアルゴリズムを指定します。

次の暗号化アルゴリズムでは、構造体の Parameters メンバーにエンコードされた 8 バイト 初期化ベクトル (IV) 必要です。 詳細については、「 CryptSetKeyParam」を参照してください。

説明
CALG_DES
szOID_OIWSEC_desCBC
CALG_3DES
szOID_RSA_DES_EDE3_CBC
 

Parameters メンバーの cbData メンバーが 0 の場合、IV を含む抽象構文表記 1 (ASN.1) でエンコードされた OCTET STRING が CryptGenRandom を使用して生成されます。

szOID_RSA_RC2CBC (CALG_RC2) アルゴリズムでは、ParameterspbData メンバーがエンコードされたCRYPT_RC2_CBC_PARAMETERS構造である必要があります。 Parameters メンバーの cbData メンバーが 0 の場合、dwVersion メンバーの既定値は 40 で ASN.1 でエンコードされたCRYPT_RC2_CBC_PARAMETERSが生成されます。 これにより、既定のキー長が 40 ビットに設定されます。 この既定のキー長は、目的のキー長を含むCMSG_RC2_AUX_INFO構造体を指す pvEncryptionAuxInfo でオーバーライドできます。

メモ 復号化時に IV が存在する場合、復号化が開始される前に、 IV で CryptSetKeyParam が呼び出されます。
 

pvEncryptionAuxInfo

暗号化アルゴリズムに応じた構造体へのポインター。

説明
RC2

CMSG_RC2_AUX_INFO

RC4

CMSG_RC4_AUX_INFO

SP3 または互換性

CMSG_SP3_COMPATIBLE_AUX_INFO

その他のすべての暗号化アルゴリズム
NULL

cRecipients

rgpRecipients または rgCmsRecipients 配列内の要素の数。

rgpRecipients

受信者の証明書 Issuer、SerialNumber、SubjectPublicKeyInfo を含む、 CERT_INFO 構造体へのポインターの配列。 この配列は、発行者とシリアル番号によって識別される受信者にのみ使用できます。 rgpRecipientsNULL でない場合、rgCmsRecipientsNULL である必要があります。

rgCmsRecipients

省略可能。 受信者情報を含む CMSG_RECIPIENT_ENCODE_INFO 構造体へのポインターの配列。 rgCmsRecipientsNULL でない場合、rgpRecipientsNULL である必要があります。 このフィールドを参照するには、CMSG_ENVELOPED_ENCODE_INFO_HAS_CMS_FIELDSを定義する必要があります。

cCertEncoded

省略可能。 rgCertEncoded 配列内のエンコードされた証明書の数を示す DWORD 値。 このフィールドを参照するには、CMSG_ENVELOPED_ENCODE_INFO_HAS_CMS_FIELDSを定義する必要があります。

rgCertEncoded

省略可能。 CERT_BLOB構造体の配列。 このフィールドを参照するには、CMSG_ENVELOPED_ENCODE_INFO_HAS_CMS_FIELDSを定義する必要があります。

cCrlEncoded

省略可能。 rgCRLEncoded 配列内のエンコードされた証明書失効リスト (CRL) の数を示す DWORD 値。 このフィールドを参照するには、CMSG_ENVELOPED_ENCODE_INFO_HAS_CMS_FIELDSを定義する必要があります。

rgCrlEncoded

省略可能。 CRL_BLOB構造体の配列。 このフィールドを参照するには、CMSG_ENVELOPED_ENCODE_INFO_HAS_CMS_FIELDSを定義する必要があります。

cAttrCertEncoded

省略可能。 rgAttrCertEncoded 配列内のエンコードされた証明書属性の数を示す DWORD 値。 このフィールドを参照するには、CMSG_ENVELOPED_ENCODE_INFO_HAS_CMS_FIELDSを定義する必要があります。

rgAttrCertEncoded

省略可能。 CRYPT_ATTRIBUTE構造体の配列。 このメンバーを参照するには、CMSG_ENVELOPED_ENCODE_INFO_HAS_CMS_FIELDSを定義する必要があります。

cUnprotectedAttr

省略可能。 rgUnprotectedAttr 配列内の保護されていない属性の数を示す DWORD 値。 このフィールドを参照するには、CMSG_ENVELOPED_ENCODE_INFO_HAS_CMS_FIELDSを定義する必要があります。

rgUnprotectedAttr

省略可能。 CRYPT_ATTRIBUTE構造体の配列。 このフィールドを参照するには、CMSG_ENVELOPED_ENCODE_INFO_HAS_CMS_FIELDSを定義する必要があります。

要件

   
サポートされている最小のクライアント Windows XP (デスクトップ アプリのみ)
サポートされている最小のサーバー Windows Server 2003 (デスクトップ アプリのみ)
Header wincrypt.h

関連項目

CERT_INFO

CRYPT_ALGORITHM_IDENTIFIER