ICertRequest2
COMIDispatch (デュアル)comobj 経由でメソッド名による遅延バインド呼び出しができます(vtableインデックス不要)。公式ドキュメント
クライアントまたは仲介アプリケーションと証明書サービス(Certificate Services)との間の通信を提供します。(ICertRequest2)
メソッド 6
vtbl = vtable インデックス(0始まり)。IDispatch 実装のため HSP ではメソッド名でも呼べます(上記)。低レベルの index 呼び出し用に vtbl も掲載。0〜2 は IUnknown。
要求ID または証明書のシリアル番号のいずれかを指定して、証明書の処理状況(disposition)を取得します。
| strConfig | LPWSTR | in | 証明書サービス サーバーの有効な構成文字列を表します。この文字列は、登録(エンロール)サーバーの HTTPS URL か、または ComputerName\CAName の形式のいずれかです。ComputerName はサーバーのネットワーク名、CAName は証明書サービスのセットアップ時に入力した証明機関(CA)の共通名です。構成文字列名については、 ICertConfig を参照してください。 Windows Server 2008、Windows Vista、Windows Server 2003 および Windows XP: 入力として HTTPS URL はサポートされていません。 | ||||||||||||||
| RequestId | INT | in | 証明書サービスのデータベース内の証明書要求ID を表す LONG 値です。要求IDの代わりにシリアル番号(strSerialNumber として渡す)を使用する場合は、この値に –1 を指定します。 | ||||||||||||||
| strSerialNumber | LPWSTR | in | CA によって発行された証明書のシリアル番号を表す BSTR 値です。strSerialNumber を使用するには、RequestId に –1 を指定する必要があります。 | ||||||||||||||
| pDisposition | CR_DISP* | out | 証明書の処理状況(disposition)を表す LONG 値へのポインターです。処理状況は次の値のいずれかです。
|
戻り値
C++
メソッドが成功した場合、S_OK を返します。メソッドが失敗した場合、エラーを示す HRESULT 値を返します。一般的なエラーコードの一覧については、Common HRESULT Values を参照してください。
VB
戻り値は、証明書の処理状況(disposition)を表す Long です。HRESULT エラーコードに対応するエラーメッセージのテキストを取得します。
| hrMessage | INT | in | HRESULT エラーを表す値です。 | ||||||
| Flags | INT | in | 次の表の値のいずれかに対応する LONG 値です。
| ||||||
| pstrErrorMessageText | LPWSTR* | out | hrMessage のエラーメッセージのテキストを表す BSTR へのポインターです。BSTR の使用を終えたら、SysFreeString 関数を呼び出して解放してください。 |
戻り値
C++
メソッドが成功した場合、S_OK を返します。メソッドが失敗した場合、エラーを示す HRESULT 値を返します。一般的なエラーコードの一覧については、Common HRESULT Values を参照してください。
VB
戻り値は、hrMessage のエラーメッセージのテキストを含む String です。証明機関(CA)のプロパティ値を取得します。(ICertRequest2.GetCAProperty)
| strConfig | LPWSTR | in | COMPUTERNAME\CANAME の形式で、CA の有効な構成文字列を表します。COMPUTERNAME は証明書サービス サーバーのネットワーク名、CANAME は証明書サービスのセットアップ時に入力した CA の共通名です。構成文字列名については、 ICertConfig を参照してください。 | ||||||||||
| PropId | INT | in | プロパティ識別子を指定します。このパラメーターについては、 ICertAdmin2::GetCAProperty の表を参照してください。 | ||||||||||
| PropIndex | INT | in | PropId がインデックス付きの場合、プロパティ値を取得する際に使用する0から始まるインデックスです。PropId がインデックス付きでない場合、この値は無視されます。 | ||||||||||
| PropType | INT | in | プロパティの型を指定します。これは PropId の表の Type 列に対応します。型は次のいずれかです。
| ||||||||||
| Flags | INT | in | 次のフラグを使用して、返されるプロパティ値の形式を指定できます。これらのフラグはバイナリデータ(証明書、証明書チェーン、証明書失効リストなど)に対してのみ意味を持ち、それ以外の場合は無視されます。 | ||||||||||
| pvarPropertyValue | VARIANT* | out | 要求したプロパティ値を受け取る VARIANT へのポインターです。 VARIANT の使用を終えたら、VariantClear 関数を呼び出して解放してください。 |
戻り値
C++
メソッドが成功した場合、S_OK を返します。メソッドが失敗した場合、エラーを示す HRESULT 値を返します。一般的なエラーコードの一覧については、Common HRESULT Values を参照してください。
VB
戻り値は、要求したプロパティ値を受け取る Variant です。証明機関(CA)のプロパティのプロパティフラグを取得します。
| strConfig | LPWSTR | in | ComputerName\CAName の形式で、CA の有効な構成文字列を表します。ComputerName は証明書サービス サーバーのネットワーク名、CAName は証明書サービスのセットアップ時に入力した CA の共通名です。構成文字列名については、 ICertConfig を参照してください。 |
| PropId | INT | in | プロパティ識別子を指定します。このパラメーターについては、 ICertAdmin2::GetCAProperty の表を参照してください。 |
| pPropFlags | INT* | out | プロパティフラグを表す LONG 値へのポインターです。 |
戻り値
C++
メソッドが成功した場合、S_OK を返します。メソッドが失敗した場合、エラーを示す HRESULT 値を返します。一般的なエラーコードの一覧については、Common HRESULT Values を参照してください。
VB
戻り値は、プロパティフラグを表す Long です。解説(Remarks)
GetCAPropertyFlags メソッドの機能は、ICertAdmin2::GetCAPropertyFlags メソッドと同様です。
ICertAdmin2 のメソッドでは、CA は呼び出し元が CA 読み取りアクセス権を持つことを要求します。この権限は通常、CA 担当者(CA officer)および CA 管理者にのみ付与されます。
これに対し、このメソッドの ICertRequest2 および ICertRequest3 の実装では、CA は既定でアクセス権を一切要求しません。適用されるのは、分散コンポーネント オブジェクト モデル(DCOM)のアクセス制御リスト(ACL)のみです。ドメインに参加している CA の場合、DCOM ACL は Everyone に CA へのアクセスを許可します。Everyone に Anonymous は含まれません。 CA の要求インターフェイスは、レジストリ構成を使用して、呼び出し元が登録(エンロール)アクセス権を持つことを要求するようにロックダウンできます。
証明機関(CA)のプロパティの表示名を取得します。
| strConfig | LPWSTR | in | ComputerName\CAName の形式で、CA の有効な構成文字列を表します。ComputerName は証明書サービス サーバーのネットワーク名、CAName は証明書サービスのセットアップ時に入力した CA の共通名です。構成文字列名については、 ICertConfig を参照してください。 |
| PropId | INT | in | プロパティ識別子を指定します。このパラメーターについては、 ICertAdmin2::GetCAProperty の表を参照してください。 |
| pstrDisplayName | LPWSTR* | out | プロパティの表示名を表す BSTR へのポインターです。BSTR の使用を終えたら、SysFreeString 関数を呼び出して解放してください。 |
戻り値
C++
メソッドが成功した場合、S_OK を返します。メソッドが失敗した場合、エラーを示す HRESULT 値を返します。一般的なエラーコードの一覧については、Common HRESULT Values を参照してください。
VB
戻り値は、プロパティの表示名を含む String です。解説(Remarks)
GetCAPropertyDisplayName メソッドの機能は、ICertAdmin2::GetCAPropertyDisplayName メソッドと同様です。
ICertAdmin2 のメソッドでは、CA は呼び出し元が CA 読み取りアクセス権を持つことを要求します。この権限は通常、CA 担当者(CA officer)および CA 管理者にのみ付与されます。
これに対し、このメソッドの ICertRequest2 および ICertRequest3 の実装では、CA は既定でアクセス権を一切要求しません。適用されるのは、分散コンポーネント オブジェクト モデル(DCOM)のアクセス制御リスト(ACL)のみです。ドメインに参加している CA の場合、DCOM ACL は Everyone に CA へのアクセスを許可します。Everyone に Anonymous は含まれません。 CA の要求インターフェイスは、レジストリ構成を使用して、呼び出し元が登録(エンロール)アクセス権を持つことを要求するようにロックダウンできます。
サーバーから返され、キャッシュされた応答データを取得します。
| PropId | FULL_RESPONSE_PROPERTY_ID | in | 取得するデータです。プロパティがインデックス付きの場合は、PropIndex を使用してインデックスを指定します。 このパラメーターには次の値のいずれかを指定できます。 | ||||||||||
| PropIndex | INT | in | PropId がインデックス付きプロパティの場合の0から始まるインデックスです。PropId がインデックス付きプロパティでない場合、PropIndex は0でなければなりません。 | ||||||||||
| PropType | CERT_PROPERTY_TYPE | in | pvarPropertyValue で返されるデータの型です。ここで指定するプロパティの型は、PropId パラメーターで指定したデータの型と一致していなければなりません。 このパラメーターには次の値のいずれかを指定できます。
| ||||||||||
| Flags | CERT_REQUEST_OUT_TYPE | in | pvarPropertyValue で返されるデータの形式です。ここで設定するフラグは、PropId パラメーターで指定したデータの型と一致していなければなりません。 詳細については、「解説」を参照してください。 このパラメーターには次の値のいずれかを指定できます。
| ||||||||||
| pvarPropertyValue | VARIANT* | out | 返されるデータです。 |
戻り値
C++
メソッドが成功した場合、S_OK を返し、pvarPropertyValue に返されたデータが格納されます。メソッドが失敗した場合、エラーを示す HRESULT 値を返します。一般的なエラーコードの一覧については、Common HRESULT Values を参照してください。
VB
戻り値は、返されたデータを含む Variant です。解説(Remarks)
次の PropId 値はバイナリデータを返します。つまり、Flags パラメーターを CR_OUT_BINARY に設定する必要があります。
- FR_PROP_FULLRESPONSE
- FR_PROP_ISSUEDCERTIFICATEHASH
- FR_PROP_ISSUEDCERTIFICATE
- FR_PROP_ISSUEDCERTIFICATECHAIN
- FR_PROP_ISSUEDCERTIFICATECRLCHAIN
- FR_PROP_ENCRYPTEDKYEHASH
- FR_PROP_FULLRESPONSENOPKCS7
ICertRequest3::GetFullResponseProperty メソッドがデータを返した後、次のメソッドを呼び出すことができます。
- ICEnroll4::AcceptResponse を呼び出して、返された証明書をインストールできます。
- ICEnroll4::GetCertFromResponse を呼び出して、応答から証明書を解析できます。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_ICertRequest2 "{A4772988-4A85-4FA9-824E-B5CF5C16405A}" #usecom global ICertRequest2 IID_ICertRequest2 "{}" #comfunc global ICertRequest2_GetIssuedCertificate 14 wstr,int,wstr,var #comfunc global ICertRequest2_GetErrorMessageText 15 int,int,var #comfunc global ICertRequest2_GetCAProperty 16 wstr,int,int,int,int,var #comfunc global ICertRequest2_GetCAPropertyFlags 17 wstr,int,var #comfunc global ICertRequest2_GetCAPropertyDisplayName 18 wstr,int,var #comfunc global ICertRequest2_GetFullResponseProperty 19 int,int,int,int,var ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。 ; ※IDispatch 実装。HSP では comobj 経由でメソッド名による呼び出しも可能(vtbl 不要)。#define global IID_ICertRequest2 "{A4772988-4A85-4FA9-824E-B5CF5C16405A}" #usecom global ICertRequest2 IID_ICertRequest2 "{}" #comfunc global ICertRequest2_GetIssuedCertificate 14 wstr,int,wstr,sptr #comfunc global ICertRequest2_GetErrorMessageText 15 int,int,sptr #comfunc global ICertRequest2_GetCAProperty 16 wstr,int,int,int,int,sptr #comfunc global ICertRequest2_GetCAPropertyFlags 17 wstr,int,sptr #comfunc global ICertRequest2_GetCAPropertyDisplayName 18 wstr,int,sptr #comfunc global ICertRequest2_GetFullResponseProperty 19 int,int,int,int,sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※IDispatch 実装。HSP では comobj 経由でメソッド名による呼び出しも可能(vtbl 不要)。