CRYPT_ENCRYPT_MESSAGE_PARA構造体 (wincrypt.h)

CRYPT_ENCRYPT_MESSAGE_PARA構造体には、メッセージの暗号化に使用される情報が含まれています。

構文

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;

メンバー

cbSize

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

dwMsgEncodingType

使用されるエンコードの種類。 次の例に示すように、証明書と メッセージエンコードの両方の種類 をビットごとの OR 操作と組み合わせて指定することは、常に許容されます。

X509_ASN_ENCODING |PKCS_7_ASN_ENCODING

現在定義されているエンコードの種類は次のとおりです。

  • X509_ASN_ENCODING
  • PKCS_7_ASN_ENCODING

hCryptProv

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

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

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

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

ContentEncryptionAlgorithm

使用する暗号化アルゴリズムのオブジェクト識別子 (OID) を含むCRYPT_ALGORITHM_IDENTIFIER構造体。 hCryptProv で指定された CSP は、この暗号化アルゴリズムをサポートする必要があります。

szOID_OIWSEC_desCBC (CALG_DES) およびszOID_RSA_DES_EDE3_CBC (CALG_3DES) 暗号化アルゴリズムでは、この構造体の Parameters メンバーにエンコードされた 8 バイト初期化ベクトル (IV) が含まれている必要があります。 Parameters メンバーの cbData メンバーが 0 の場合、IV を含む抽象構文表記 1 (ASN.1) エンコードされた OCTET STRING が CryptGenRandom を使用して生成されます。 KP_IV パラメーターの詳細については、「 CryptSetKeyParam」を参照してください。

szOID_NIST_AES128_CBC (BCRYPT_AES_ALGORITHM、128 ビット)、szOID_NIST_AES192_CBC (BCRYPT_AES_ALGORITHM、192 ビット)、szOID_NIST_AES256_CBC (BCRYPT_AES_ALGORITHM、256 ビット) の暗号化アルゴリズムでは、この構造体の Parameters メンバーにエンコードされた 16 バイト初期化ベクトル (IV) が含まれている必要があります。 Parameters メンバーの cbData メンバーが 0 の場合、IV を含む 抽象構文表記 1 (ASN.1) エンコードされた OCTET STRING が生成されます。

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

メモメッセージが暗号化解除されると、初期化ベクトル パラメーターがある場合、暗号化メッセージ関数は暗号化を解除する前に初期化ベクトルを使用して CryptSetKeyParam を呼び出します。
 

pvEncryptionAuxInfo

RC2 暗号化用 のCMSG_RC2_AUX_INFO 構造体へのポインター、または SP3 互換暗号化用 のCMSG_SP3_COMPATIBLE_AUX_INFO 構造体。 RC2 または SP3 互換の暗号化以外の場合は、このメンバーを NULL に設定する必要があります。

ContentEncryptionAlgorithm メンバーにszOID_RSA_RC4が含まれている場合、このメンバーは、含める salt バイト数を指定するCMSG_RC4_AUX_INFO構造体を指します。

dwFlags

通常は 0 に設定します。 ただし、エンコードされた出力が、CMSG_SIGNED メッセージなどの外部暗号化メッセージのCMSG_ENVELOPED 内部コンテンツ である場合は、CRYPT_MESSAGE_BARE_CONTENT_OUT_FLAGを設定する必要があります。 設定されていない場合、コンテンツはCMSG_DATAの 内部コンテンツ タイプとしてエンコードされます。

CRYPT_MESSAGE_ENCAPSULATED_CONTENT_OUT_FLAGを設定して、暗号化する前に、OCTET STRING 内にデータ以外の 内部コンテンツ をカプセル化できます。

CRYPT_MESSAGE_KEYID_RECIPIENT_FLAGは、発行者とシリアル番号ではなく、キー識別子によって受信者を識別するように設定できます。

dwInnerContentType

通常は 0 に設定します。 暗号化する入力が、CMSG_SIGNEDなどの別の暗号化メッセージのエンコードされた出力である場合は、 dwInnerContentType メンバーを設定して暗号化メッセージの種類を設定する必要があります。

要件

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

こちらもご覧ください

CRYPT_ALGORITHM_IDENTIFIER

CryptEncryptMessage

CryptSignAndEncryptMessage