Win32 API 日本語リファレンス
ホームSecurity.Cryptography.Certificates › ISignerCertificate

ISignerCertificate

COMIDispatch (デュアル)
IDispatch を実装(デュアルインターフェース)。HSP では comobj 経由でメソッド名による遅延バインド呼び出しができます(vtableインデックス不要)。
IID728ab33d-217d-11da-b2a4-000e7bbb2b09継承元IDispatch呼び出し名前(IDispatch) または vtbl自前メソッド開始 vtbl7

公式ドキュメント

証明書要求に署名できるようにする署名証明書を表します。

メソッド 11

vtbl = vtable インデックス(0始まり)。IDispatch 実装のため HSP ではメソッド名でも呼べます(上記)。低レベルの index 呼び出し用に vtbl も掲載。0〜2 は IUnknown。

vtbl 7 HRESULT Initialize(VARIANT_BOOL MachineContext, X509PrivateKeyVerify VerifyType, EncodingType Encoding, LPWSTR strCertificate)

署名証明書からオブジェクトを初期化します。

MachineContextVARIANT_BOOLinstrCertificate パラメーターで指定される証明書を検索する際に、ローカルコンピューターの証明書ストアコンテキストを検索するか、ユーザーコンテキストを検索するかを示す VARIANT_BOOL 変数です。コンピューターの場合は VARIANT_TRUE を、ユーザーの場合は VARIANT_FALSE を指定します。
VerifyTypeX509PrivateKeyVerifyin証明書への署名に使用する秘密キーを検証する必要があるかどうか、また検証する場合はサイレントで行うかユーザー入力を許可するかを指定する X509PrivateKeyVerify 列挙値です。
EncodingEncodingTypeinDistinguished Encoding Rules (DER) でエンコードされた証明書文字列に適用される Unicode エンコードの種類を指定する EncodingType 列挙値です。
strCertificateLPWSTRin

DER でエンコードされた証明書を格納する BSTR 変数です。

Windows 7 および Windows Server 2008 R2 以降では、エンコードされた証明書の代わりに証明書のサムプリントまたはシリアル番号を指定できます。これを指定すると、関数は一致する証明書を適切なローカルストアから検索します。次の点に注意してください。

  • BSTR は偶数個の16進数字でなければなりません。
  • 16進数のペア間の空白は無視されます。
  • Encoding パラメーターは XCN_CRYPT_STRING_HEXRAW に設定する必要があります。
  • MachineContext パラメーターは、ユーザーストアとコンピューターストアのいずれか、またはその両方のどれを検索するかを決定します。
  • 秘密キーが必要な場合は、個人ストアと要求ストアのみが検索されます。
  • 秘密キーが不要な場合は、ルートストアと中間 CA ストアも検索されます。

戻り値

関数が成功した場合は S_OK を返します。

関数が失敗した場合は、エラーを示す HRESULT 値を返します。使用される可能性がある値には、次の表に示すものが含まれますが、これらに限定されません。一般的なエラーコードの一覧については、Common HRESULT Values を参照してください。

戻り値/値 説明
HRESULT_FROM_WIN32(ERROR_ALREADY_INITIALIZED)
ISignerCertificate オブジェクトはすでに初期化されています。

解説(Remarks)

Initialize メソッドは次の処理を行います。

Initialize を呼び出す前に、次のプロパティを設定してください。

vtbl 8 HRESULT get_Certificate(EncodingType Encoding, LPWSTR* pValue)

証明書を格納する、Distinguished Encoding Rules (DER) でエンコードされたバイト配列を取得します。

EncodingEncodingTypein取得する証明書文字列のエンコーディング種別を指定する EncodingType 列挙値である。
pValueLPWSTR*out署名証明書を指定エンコーディングの文字列として受け取るポインタである。

解説(Remarks)

証明書を指定するには Initialize メソッドを呼び出します。また、次のプロパティを呼び出して、署名証明書オブジェクトに関する情報を取得することもできます。

vtbl 9 HRESULT get_PrivateKey(IX509PrivateKey** ppValue)

ISignerCertificate オブジェクトに関連付けられた秘密キーを取得します。

ppValueIX509PrivateKey**out署名証明書に対応する秘密鍵を表す IX509PrivateKey オブジェクトを受け取るポインタである。

解説(Remarks)

Initialize メソッドを呼び出すと、Certificate Enrollment Control は個人ストアから署名証明書を取得し、それを使用して関連付けられた秘密キーを検索します。また、次のプロパティを呼び出して、署名証明書オブジェクトに関する情報を取得することもできます。

vtbl 10 HRESULT get_Silent(VARIANT_BOOL* pValue)

秘密キーを使用して証明書要求に署名する際にユーザーへ通知するかどうかを示すブール値を設定または取得します。(Get)

pValueVARIANT_BOOL*outサイレント(UI を抑制する)モードが有効かどうかを表す VARIANT_BOOL を受け取るポインタである。

解説(Remarks)

Initialize メソッドを呼び出す前に、このプロパティを呼び出して値を設定します。このプロパティを設定すると、IX509PrivateKey オブジェクトの Silent プロパティも設定されます。秘密キーオブジェクトは PrivateKey を呼び出すことで取得できます。次のプロパティを呼び出して、署名証明書オブジェクトに関する追加情報を取得できます。

vtbl 11 HRESULT put_Silent(VARIANT_BOOL Value)

秘密キーを使用して証明書要求に署名する際にユーザーへ通知するかどうかを示すブール値を設定または取得します。(Put)

ValueVARIANT_BOOLinUI を表示しないサイレントモードの有効・無効を VARIANT_BOOL で指定する。

解説(Remarks)

Initialize メソッドを呼び出す前に、このプロパティを呼び出して値を設定します。このプロパティを設定すると、IX509PrivateKey オブジェクトの Silent プロパティも設定されます。秘密キーオブジェクトは PrivateKey を呼び出すことで取得できます。次のプロパティを呼び出して、署名証明書オブジェクトに関する追加情報を取得できます。

vtbl 12 HRESULT get_ParentWindow(INT* pValue)

署名証明書情報の表示に使用するウィンドウの ID を設定または取得します。(Get)

pValueINT*outUI 表示時の親ウィンドウハンドル(INT として扱う)を受け取るポインタである。

解説(Remarks)

Initialize メソッドを呼び出す前に、このプロパティを呼び出してウィンドウ ID を設定します。ParentWindow プロパティは、内部的に IX509PrivateKey オブジェクトにウィンドウ ID を設定します。秘密キーオブジェクトは PrivateKey プロパティを呼び出すことで取得できます。次のプロパティを呼び出して、署名証明書オブジェクトに関する追加情報を取得できます。

vtbl 13 HRESULT put_ParentWindow(INT Value)

署名証明書情報の表示に使用するウィンドウの ID を設定または取得します。(Put)

ValueINTinUI 表示時の親ウィンドウハンドルを INT として指定する。

解説(Remarks)

Initialize メソッドを呼び出す前に、このプロパティを呼び出してウィンドウ ID を設定します。ParentWindow プロパティは、内部的に IX509PrivateKey オブジェクトにウィンドウ ID を設定します。秘密キーオブジェクトは PrivateKey プロパティを呼び出すことで取得できます。次のプロパティを呼び出して、署名証明書オブジェクトに関する追加情報を取得できます。

vtbl 14 HRESULT get_UIContextMessage(LPWSTR* pValue)

署名証明書に関連付けられたユーザーインターフェイステキストを含む文字列を設定または取得します。(Get)

pValueLPWSTR*outUI に表示するコンテキストメッセージ文字列を受け取るポインタである。

解説(Remarks)

Initialize メソッドを呼び出す前に、このプロパティを呼び出して値を設定します。また、次のプロパティを呼び出して、署名証明書オブジェクトに関する追加情報を取得することもできます。

vtbl 15 HRESULT put_UIContextMessage(LPWSTR Value)

署名証明書に関連付けられたユーザーインターフェイステキストを含む文字列を設定または取得します。(Put)

ValueLPWSTRinUI に表示するコンテキストメッセージ文字列を指定する。

解説(Remarks)

Initialize メソッドを呼び出す前に、このプロパティを呼び出して値を設定します。また、次のプロパティを呼び出して、署名証明書オブジェクトに関する追加情報を取得することもできます。

vtbl 16 HRESULT put_Pin(LPWSTR Value)

スマートカードのユーザーを認証するために使用する個人識別番号 (PIN) を指定します。

ValueLPWSTRin秘密鍵へアクセスするための PIN(暗証番号)を文字列で指定する。

解説(Remarks)

Initialize メソッドを呼び出す前に、このプロパティを呼び出して値を設定します。Pin プロパティは、内部的に IX509PrivateKey オブジェクトに PIN 番号を設定します。秘密キーオブジェクトは PrivateKey を呼び出すことで取得できます。次のプロパティを呼び出して、署名証明書オブジェクトに関する追加情報を取得できます。

vtbl 17 HRESULT get_SignatureInformation(IX509SignatureInformation** ppValue)

証明書の署名に関する情報を含む IX509SignatureInformation オブジェクトを取得します。

ppValueIX509SignatureInformation**out署名アルゴリズム等の署名情報を表す IX509SignatureInformation オブジェクトを受け取るポインタである。

解説(Remarks)

Initialize メソッドを呼び出すと、Certificate Enrollment Control は IX509SignatureInformation オブジェクトを作成します。また、次のプロパティを呼び出して、署名証明書オブジェクトに関する情報を取得することもできます。

出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)

HSP用 COM定義

#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"

出力引数:
#define global IID_ISignerCertificate "{728AB33D-217D-11DA-B2A4-000E7BBB2B09}"
#usecom global ISignerCertificate IID_ISignerCertificate "{}"
#comfunc global ISignerCertificate_Initialize                7 int,int,int,wstr
#comfunc global ISignerCertificate_get_Certificate           8 int,var
#comfunc global ISignerCertificate_get_PrivateKey            9 sptr
#comfunc global ISignerCertificate_get_Silent                10 var
#comfunc global ISignerCertificate_put_Silent                11 int
#comfunc global ISignerCertificate_get_ParentWindow          12 var
#comfunc global ISignerCertificate_put_ParentWindow          13 int
#comfunc global ISignerCertificate_get_UIContextMessage      14 var
#comfunc global ISignerCertificate_put_UIContextMessage      15 wstr
#comfunc global ISignerCertificate_put_Pin                   16 wstr
#comfunc global ISignerCertificate_get_SignatureInformation  17 sptr
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。
; ※IDispatch 実装。HSP では comobj 経由でメソッド名による呼び出しも可能(vtbl 不要)。