CMSG_SIGNER_ENCODE_INFO 構造体 (wincrypt.h)

CMSG_SIGNER_ENCODE_INFO構造体には署名者情報が含まれています。 dwMsgType パラメーターがCMSG_SIGNEDの場合は、CryptMsgCountersignCryptMsgCountersignEncoded、および必要に応じて、CMSG_SIGNED_ENCODE_INFO構造体のメンバーとして CryptMsgOpenToEncode に渡されます。

構文

typedef struct _CMSG_SIGNER_ENCODE_INFO {
  DWORD                      cbSize;
  PCERT_INFO                 pCertInfo;
  union {
    HCRYPTPROV        hCryptProv;
    NCRYPT_KEY_HANDLE hNCryptKey;
    BCRYPT_KEY_HANDLE hBCryptKey;
  } DUMMYUNIONNAME;
  DWORD                      dwKeySpec;
  CRYPT_ALGORITHM_IDENTIFIER HashAlgorithm;
  void                       *pvHashAuxInfo;
  DWORD                      cAuthAttr;
  PCRYPT_ATTRIBUTE           rgAuthAttr;
  DWORD                      cUnauthAttr;
  PCRYPT_ATTRIBUTE           rgUnauthAttr;
  CERT_ID                    SignerId;
  CRYPT_ALGORITHM_IDENTIFIER HashEncryptionAlgorithm;
  void                       *pvHashEncryptionAuxInfo;
} CMSG_SIGNER_ENCODE_INFO, *PCMSG_SIGNER_ENCODE_INFO;

メンバー

cbSize

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

pCertInfo

を含む CERT_INFO 構造体へのポインター。

IssuerSerialNumberおよび SubjectPublicKeyInfo メンバー。

Issuer 構造体と SerialNumber 構造体の pbData メンバーは、証明書を一意に識別します。 SubjectPublicKeyInfo 構造体の Algorithm メンバーは、使用するハッシュ暗号化アルゴリズムを指定します。

DUMMYUNIONNAME

DUMMYUNIONNAME.hCryptProv

暗号化サービス プロバイダー (CSP) へのハンドル。 HashEncryptionAlgorithm が szOID_PKIX_NO_SIGNATURE に設定されている場合、このハンドルは、CRYPT_VERIFYCONTEXTに設定された dwFlags パラメーターを使用して取得された CSP のハンドルになります。 CNG 関数 NCryptIsKeyHandle が呼び出され、共用体の選択が決定されます。

DUMMYUNIONNAME.hNCryptKey

CNG CSP へのハンドル。 CNG 関数 NCryptIsKeyHandle が呼び出され、共用体の選択が決定されます。 新しい暗号化アルゴリズムは、CNG 関数でのみサポートされます。 CNG 関数 NCryptTranslateHandle が呼び出され、必要に応じて CryptoAPI hCryptProv の選択が変換されます。 アプリケーションは、NCryptOpenKey 関数から返される CNG CSP ハンドルを hNCryptKey メンバーに渡すことをお勧めします。

DUMMYUNIONNAME.hBCryptKey

dwKeySpec

使用する秘密キーを指定します。 hNCryptKey メンバーを使用する場合、このメンバーは使用されません。

dwKeySpec が 0 の場合、既定のAT_KEYEXCHANGE値が使用されます。

既定のプロバイダーには、次の dwKeySpec 値が定義されています。

意味
AT_KEYEXCHANGE
セッション キーの暗号化と暗号化解除に使用されるキー。
AT_SIGNATURE
デジタル署名の作成と検証に使用されるキー。

HashAlgorithm

ハッシュ アルゴリズムを指定する CRYPT_ALGORITHM_IDENTIFIER 構造体。

pvHashAuxInfo

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

cAuthAttr

rgAuthAttr 配列内の要素の数。 rgAuthAttr に認証済み属性が存在しない場合、cAuthAttr は 0 になります。

rgAuthAttr

CRYPT_ATTRIBUTE構造体へのポインターの配列。それぞれに認証済み属性情報が含まれています。

PKCS #9 標準では、属性がある場合は、コンテンツ タイプ オブジェクト識別子 (OID) とメッセージのハッシュの 2 つ以上が必要であると規定されています。 これらの属性は、システムによって自動的に追加されます。

cUnauthAttr

rgUnauthAttr 配列内の要素の数。 認証されていない属性がない場合、 cUnauthAttr は 0 です。

rgUnauthAttr

CRYPT_ATTRIBUTE構造体へのポインターの配列。各構造体には認証されていない属性情報が含まれます。 認証されていない属性には、他の用途の中でも 、反署名を含めることができます。

SignerId

署名 者の証明書 の一意識別子を含むCERT_ID構造体。 このメンバーは、必要に応じて PKCS #7 と共に暗号化メッセージ構文 (CMS) で使用できます。 このメンバーが NULL ではなく、dwIdChoice メンバーが 0 でない場合は、pCertInfo が指すCERT_INFO構造体の Issuer メンバーと SerialNumber メンバーの代わりに証明書を識別するために使用されます。 CMS では、KEY_IDENTIFIERおよびISSUER_SERIAL_NUMBER CERT_ID構造体がサポートされています。 PKCS バージョン 1.5 では、ISSUER_SERIAL_NUMBER CERT_IDの選択のみがサポートされています。 このメンバーは、PKCS #7 処理のために CMS と共に使用され、CMSG_SIGNER_ENCODE_INFO_HAS_CMS_FIELDSが定義されている場合にのみ使用できます。

HashEncryptionAlgorithm

必要に応じて、CMS で PKCS #7 で使用される CRYPT_ALGORITHM_IDENTIFIER 構造体。 このメンバーが NULL でない場合は、SubjectPublicKeyInfo.Algorithm アルゴリズムの代わりに、識別されたアルゴリズムが使用されます。 このメンバーが szOID_PKIX_NO_SIGNATURE に設定されている場合、シグネチャ値にはハッシュ オクテットのみが含まれます。

RSA の場合、 ハッシュ 暗号化アルゴリズムは通常、公開キー アルゴリズムと同じです。 DSA の場合、ハッシュ暗号化アルゴリズムは通常、DSS 署名アルゴリズムです。

このメンバーは、PKCS #7 処理のために CMS と共に使用され、CMSG_SIGNER_ENCODE_INFO_HAS_CMS_FIELDSが定義されている場合にのみ使用できます。

pvHashEncryptionAuxInfo

このメンバーは使用されません。 このメンバーは、データ構造に存在する場合は NULL に設定する必要があります。 このメンバーは、CMSG_SIGNER_ENCODE_INFO_HAS_CMS_FIELDSが定義されている場合にのみ存在します。

要件

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

こちらもご覧ください

CERT_INFO

CRYPT_ALGORITHM_IDENTIFIER

CRYPT_ATTRIBUTE

CryptMsgControl

CryptMsgCountersign