CRYPT_SIGN_MESSAGE_PARA構造体 (wincrypt.h)
CRYPT_SIGN_MESSAGE_PARA構造体には、指定した署名証明書コンテキストを使用してメッセージに署名するための情報が含まれています。
構文
typedef struct _CRYPT_SIGN_MESSAGE_PARA {
DWORD cbSize;
DWORD dwMsgEncodingType;
PCCERT_CONTEXT pSigningCert;
CRYPT_ALGORITHM_IDENTIFIER HashAlgorithm;
void *pvHashAuxInfo;
DWORD cMsgCert;
PCCERT_CONTEXT *rgpMsgCert;
DWORD cMsgCrl;
PCCRL_CONTEXT *rgpMsgCrl;
DWORD cAuthAttr;
PCRYPT_ATTRIBUTE rgAuthAttr;
DWORD cUnauthAttr;
PCRYPT_ATTRIBUTE rgUnauthAttr;
DWORD dwFlags;
DWORD dwInnerContentType;
CRYPT_ALGORITHM_IDENTIFIER HashEncryptionAlgorithm;
void *pvHashEncryptionAuxInfo;
} CRYPT_SIGN_MESSAGE_PARA, *PCRYPT_SIGN_MESSAGE_PARA;
メンバー
cbSize
この構造体のサイズ (バイト単位)。
dwMsgEncodingType
使用されるエンコードの種類。 次の例に示すように、証明書と メッセージエンコードの両方の種類 をビットごとの OR 操作と組み合わせて指定することは、常に許容されます。
X509_ASN_ENCODING |PKCS_7_ASN_ENCODING
現在定義されているエンコードの種類は次のとおりです。
- X509_ASN_ENCODING
- PKCS_7_ASN_ENCODING
pSigningCert
署名で使用する CERT_CONTEXT へのポインター。
秘密署名キーへのアクセスを提供するには、コンテキストに対して CERT_KEY_PROV_INFO_PROP_ID または CERT_KEY_CONTEXT_PROP_ID プロパティを設定する必要があります。
HashAlgorithm
CRYPT_ALGORITHM_IDENTIFIER署名するデータをハッシュするために使用されるハッシュ アルゴリズムが含まれています。
pvHashAuxInfo
現在は使用されていません。 NULL に設定する必要があります。
cMsgCert
CERT_CONTEXT構造体の rgpMsgCert 配列内の要素の数。 ゼロに設定した場合、署名付きメッセージに証明書は含まれません。
rgpMsgCert
署名付きメッセージに含める 構造体CERT_CONTEXT へのポインターの配列。 pSigningCert を含める場合は、その pSigningCert へのポインターが rgpMsgCert 配列内にある必要があります。
cMsgCrl
構造体へのポインターの rgpMsgCrl 配列内の要素の数 CRL_CONTEXT 。 0 に設定すると、署名付きメッセージ にCRL_CONTEXT 構造体は含まれません。
rgpMsgCrl
署名付きメッセージに含める CRL_CONTEXT 構造体へのポインターの配列。
cAuthAttr
rgAuthAttr 配列内の要素の数。 rgAuthAttr に認証済み属性が存在しない場合、このメンバーは 0 に設定されます。
rgAuthAttr
CRYPT_ATTRIBUTE 構造体への ポインターの配列。それぞれが認証済みの属性情報を保持しています。 認証された属性が存在する場合、PKCS #9 標準では、少なくとも 2 つの属性、コンテンツ タイプ オブジェクト識別子 (OID)、およびメッセージ自体のハッシュが存在する必要があります。 これらの属性は、システムによって自動的に追加されます。
cUnauthAttr
rgUnauthAttr 配列内の要素の数。 rgUnauthAttr に認証されていない属性が存在しない場合、このメンバーは 0 になります。
rgUnauthAttr
認証されていない属性情報を保持 CRYPT_ATTRIBUTE 構造体へのポインターの配列。 認証されていない属性を使用して 、逆署名を含めることができます。
dwFlags
通常は 0 です。 エンコードされた出力が、CMSG_ENVELOPED メッセージなどの外部暗号化メッセージのCMSG_SIGNED 内部コンテンツ である場合は、CRYPT_MESSAGE_BARE_CONTENT_OUT_FLAGを設定する必要があります。 設定されていない場合、メッセージは CMSG_DATAの内部コンテンツ タイプとしてエンコードされます。
CRYPT_MESSAGE_ENCAPSULATED_CONTENT_OUT_FLAGを設定して、データ以外の 内部コンテンツ を OCTET STRING にカプセル化できます。 CRYPT_MESSAGE_KEYID_SIGNER_FLAGは、発行者とシリアル番号ではなく、キー識別子によって署名者を識別するように設定できます。
CRYPT_MESSAGE_SILENT_KEYSET_FLAGは、CSP によって UI を抑制するように設定できます。 CRYPT_SILENT フラグの詳細については、「 CryptAcquireContext」を参照してください。
dwInnerContentType
通常は 0 です。 署名する入力が別の暗号化メッセージのエンコードされた出力である場合は、入力メッセージのエンコードの種類に設定します。
HashEncryptionAlgorithm
CRYPT_ALGORITHM_IDENTIFIER。 NULL でない場合は、署名者の証明書 PublicKeyInfo.Algorithm メンバーの代わりに使用されます。 RSA の場合、ハッシュ暗号化アルゴリズムは通常、公開キー アルゴリズムと同じであることに注意してください。 DSA の場合、ハッシュ暗号化アルゴリズムは通常、DSS 署名アルゴリズムです。 このメンバーは、CRYPT_SIGN_MESSAGE_PARA_HAS_CMS_FIELDSが定義されている場合にのみ使用できます。
pvHashEncryptionAuxInfo
現在は使用されていません。 NULL に設定する必要があります。 このメンバーは、CRYPT_SIGN_MESSAGE_PARA_HAS_CMS_FIELDSが定義されている場合にのみ使用できます。
注釈
HashEncryptionAlgorithm メンバーと pvHashEncryptionAuxInfo メンバーは、CRYPT_SIGN_MESSAGE_PARA_HAS_CMS_FIELDSが定義されている場合にのみ使用できます。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows XP (デスクトップ アプリのみ) |
サポートされている最小のサーバー | Windows Server 2003 (デスクトップ アプリのみ) |
Header | wincrypt.h |