次の方法で共有


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_IDENTIFIERNULL でない場合は、署名者の証明書 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

こちらもご覧ください

CERT_CONTEXT

CRL_CONTEXT

CRYPT_ALGORITHM_IDENTIFIER

CRYPT_ATTRIBUTE

CryptSignAndEncryptMessage

CryptSignMessage