ICertPropertyEnrollment
COMIDispatch (デュアル)comobj 経由でメソッド名による遅延バインド呼び出しができます(vtableインデックス不要)。公式ドキュメント
クライアントが IX509Enrollment インターフェイスの Enroll メソッドを呼び出したときに作成される、証明書および証明機関 (CA) の情報を格納する証明書プロパティを表します。
メソッド 5
vtbl = vtable インデックス(0始まり)。IDispatch 実装のため HSP ではメソッド名でも呼べます(上記)。低レベルの index 呼び出し用に vtbl も掲載。0〜2 は IUnknown。
証明書要求 ID、証明機関 (CA) の構成文字列、および省略可能な証明書の表示名からプロパティを初期化します。
| RequestId | INT | in | 証明書要求 ID を格納する LONG 変数です。要求 ID は登録 (エンロール) プロセスによって作成されます。この値は、IX509Enrollment インターフェイスの RequestId プロパティを呼び出すことで取得できます。 |
| strCADnsName | LPWSTR | in | CA のドメイン ネーム システム (DNS) 名を格納する BSTR 変数です。これは CADnsName\CAName という CA 構成文字列の最初の名前です。構成文字列は通常、登録 (エンロール) プロセス中に設定されます。DNS 名は、CAConfigString プロパティを呼び出し、文字列を構成要素に分割することで取得できます。 |
| strCAName | LPWSTR | in | CA のサブジェクト共通名 (CN) を格納する BSTR 変数です。これは CADnsName\CAName という CA 構成文字列の 2 番目の名前です。構成文字列は通常、登録 (エンロール) プロセス中に設定されます。CN 名は、CAConfigString プロパティを呼び出し、文字列を構成要素に分割することで取得できます。 |
| strFriendlyName | LPWSTR | in | 証明書の省略可能な表示名を格納する BSTR 変数です。既定値は NULL です。この値は通常、登録 (エンロール) プロセス中に設定されます。CertificateFriendlyName プロパティを呼び出すことで取得できます。 |
戻り値
関数が成功した場合、関数は S_OK を返します。
関数が失敗した場合は、エラーを示す HRESULT 値を返します。取り得る値には次の表に示すものが含まれますが、これらに限定されません。一般的なエラー コードの一覧については、「Common HRESULT Values」を参照してください。
| 戻り値 | 説明 |
|---|---|
|
オブジェクトは既に初期化されています。 |
解説(Remarks)
ICertPropertyEnrollment オブジェクトの初期化に使用できる値は、クライアントが IX509Enrollment オブジェクトの Enroll メソッドを呼び出す証明書の登録 (エンロール) プロセス中に設定されます。すなわち、要求 ID を取得するには、IX509Enrollment オブジェクトの RequestId プロパティを呼び出します。証明書の表示名を取得するには、CertificateFriendlyName プロパティを呼び出します。識別名と共通名を取得するには、CAConfigString プロパティを呼び出し、構成文字列を構成要素に分割します。
プロパティを証明書に関連付けるには、SetValueOnCertificate メソッドを呼び出します。また、初期化時に指定された値を取得するために、次のプロパティを呼び出すこともできます。
一意の証明書要求識別子を取得します。
| pValue | INT* | out | 証明書要求の要求 ID を受け取る出力先である。 |
解説(Remarks)
RequestId プロパティは、Initialize メソッドを呼び出すことで設定します。要求 ID は登録 (エンロール) プロセス中に作成されます。詳細については、IX509Enrollment インターフェイスの RequestId プロパティを参照してください。
この ID は、その後のクライアントと CA の間の通信で使用できます。たとえば、CA が最初の送信時に要求を保留中としてマークした場合、クライアントは再び CA に接続して証明書応答の取得を試みる際に、要求 ID と構成文字列を使用できます。
また、初期化時に指定されたその他の値を取得するために、次のプロパティを呼び出すこともできます。
証明機関 (CA) のドメイン ネーム システム (DNS) 名を取得します。
| pValue | LPWSTR* | out | 発行 CA の DNS 名を受け取る出力先である。 |
解説(Remarks)
CADnsName プロパティは、Initialize メソッドを呼び出すことで設定します。DNS 名は登録 (エンロール) プロセス中にクライアントへ返され、CA 構成文字列の一部です。詳細については、IX509Enrollment インターフェイスの CAConfigString プロパティを参照してください。
また、初期化時に指定されたその他の値を取得するために、次のプロパティを呼び出すこともできます。
証明機関 (CA) の共通名 (CN) を取得します。
| pValue | LPWSTR* | out | 発行 CA の名前を受け取る出力先である。 |
解説(Remarks)
CAName プロパティは、Initialize メソッドを呼び出すことで設定します。共通名は登録 (エンロール) プロセス中にクライアントへ返され、証明機関の構成文字列の一部です。詳細については、IX509Enrollment インターフェイスの CAConfigString プロパティを参照してください。
また、初期化時に指定されたその他の値を取得するために、次のプロパティを呼び出すこともできます。
証明書の表示名を取得します。(ICertPropertyEnrollment.get_FriendlyName)
| pValue | LPWSTR* | out | 証明書のフレンドリ名を受け取る出力先である。 |
解説(Remarks)
FriendlyName プロパティは、Initialize メソッドを呼び出すことで設定します。表示名は登録 (エンロール) プロセス中に指定されます。詳細については、IX509Enrollment インターフェイスの CertificateFriendlyName プロパティを参照してください。
また、初期化時に指定されたその他の値を取得するために、次のプロパティを呼び出すこともできます。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_ICertPropertyEnrollment "{728AB339-217D-11DA-B2A4-000E7BBB2B09}" #usecom global ICertPropertyEnrollment IID_ICertPropertyEnrollment "{}" #comfunc global ICertPropertyEnrollment_Initialize 14 int,wstr,wstr,wstr #comfunc global ICertPropertyEnrollment_get_RequestId 15 var #comfunc global ICertPropertyEnrollment_get_CADnsName 16 var #comfunc global ICertPropertyEnrollment_get_CAName 17 var #comfunc global ICertPropertyEnrollment_get_FriendlyName 18 var ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。 ; ※IDispatch 実装。HSP では comobj 経由でメソッド名による呼び出しも可能(vtbl 不要)。#define global IID_ICertPropertyEnrollment "{728AB339-217D-11DA-B2A4-000E7BBB2B09}" #usecom global ICertPropertyEnrollment IID_ICertPropertyEnrollment "{}" #comfunc global ICertPropertyEnrollment_Initialize 14 int,wstr,wstr,wstr #comfunc global ICertPropertyEnrollment_get_RequestId 15 sptr #comfunc global ICertPropertyEnrollment_get_CADnsName 16 sptr #comfunc global ICertPropertyEnrollment_get_CAName 17 sptr #comfunc global ICertPropertyEnrollment_get_FriendlyName 18 sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※IDispatch 実装。HSP では comobj 経由でメソッド名による呼び出しも可能(vtbl 不要)。