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 構造体を指すよう設定できます。
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 |