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

ICertGetConfig

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

公式ドキュメント

Certificate Services サーバーのパブリック構成データ(クライアントのセットアップ時に指定される)を取得する機能を提供します。

メソッド 1

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

vtbl 7 HRESULT GetConfig(CERT_GET_CONFIG_FLAGS Flags, LPWSTR* pstrOut)

ICertGetConfig::GetConfig メソッドは、Certificate Services サーバーの構成文字列を取得します。

FlagsCERT_GET_CONFIG_FLAGSin

使用する CA を指定する値です。このパラメーターには、次のいずれかの値を指定できます。

意味
CC_DEFAULTCONFIG
0x00000000
既定の CA を取得します。
CC_FIRSTCONFIG
0x00000002
最初の CA を返します。
CC_LOCALACTIVECONFIG
0x00000004
ローカル CA が実行中の場合、そのローカル CA を取得します。
CC_LOCALCONFIG
0x00000003
ローカル CA を取得します。
CC_UIPICKCONFIG
0x00000001
ユーザーが CA を選択できるユーザーインターフェイス (UI) を表示します。
CC_UIPICKCONFIGSKIPLOCALCA
0x00000005
ユーザーが CA を選択できる UI を表示します。この UI はローカル CA を除外します。この除外は、下位 CA の証明書要求が現在の CA 以外の CA に送信される、下位 CA 証明書の更新時に役立ちます。
pstrOutLPWSTR*out構成を格納する BSTR へのポインターです。構成の使用が終わったら、SysFreeString 関数を呼び出して pbstrOut を解放してください。

戻り値

関数が成功した場合、戻り値は S_OK です。

メソッドが失敗した場合、戻り値はエラーを示す HRESULT です。一般的なエラーコードの一覧については、Common HRESULT Values を参照してください。

解説(Remarks)

この関数が返す構成文字列の 証明機関 (CA) 名の部分は、Certificate Services のセットアップ処理中に入力された正確なテキストです。このテキストは、ファイル名(証明書失効リスト用など)やレジストリキーに含まれる CA 名の形式とは異なる場合があることに注意してください。これは、ファイル名やレジストリキーでは CA 名のサニタイズされたバージョンが使用されるためです。

CA 名をサニタイズする処理は、ファイル名、レジストリキー名、識別名の値として使用できない文字、または Certificate Services 固有の理由で使用できない文字を削除するために必要です。サニタイズ処理では、コモンネーム内の使用できない文字はすべて !xxxx という形式の 5 文字表現に変換されます。ここで、感嘆符 (!) はエスケープ文字として使用され、xxxx は変換対象の文字を一意に識別する 4 桁の 16 進数を表します。

たとえば、番号記号 (#) は Active Directory ディレクトリサービスの識別名では許可されていません。セットアップ時に入力された CA 名が #YourName の場合、サニタイズされた CA 名は !0023YourName になります。

次の文字は、セットアップ時に CA のコモンネームとして入力された場合、サニタイズ処理中に !xxxx 形式に変換されます。この一覧は変更される可能性があります。

文字 !xxxx 形式での値
< !003c
> !003e
" !0022
/ !002f
\ !005c
: !003a
| !007c
? !003f
* !002a
# !0023
, !002c
+ !002b
; !003b
! !0021

印刷不可能な文字、および 7 ビットに収まらないすべての Unicode 文字も !xxxx 形式に変換されます。

サニタイズされた名前が 64 文字のディレクトリサービスの相対識別名 (RDN) には長すぎる場合、サニタイズされた短い名前が生成されます。サニタイズされた短い名前は、サニタイズされた名前を切り詰め、完全なサニタイズされた名前のハッシュを付加したもので構成されます。サニタイズされた短い名前は、(123) のような証明書失効リスト (CRL) のサフィックスを格納するために、64 文字の一部を予約します。

このメソッドが返す構成文字列の CA 名の部分は、セットアップ時に入力された元のテキストです。CA 名をパラメーターとして必要とする Certificate Services のメソッドは、最初に入力された CA 名を受け付けることに注意してください。たとえば、CA 名 #YourName の場合、 ICertView2::OpenConnection メソッドはパラメーターの CA 部分として #YourName を受け付けます。

出典・ライセンス: 上記「公式ドキュメント」の内容は 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_ICertGetConfig "{C7EA09C0-CE17-11D0-8833-00A0C903B83C}"
#usecom global ICertGetConfig IID_ICertGetConfig "{}"
#comfunc global ICertGetConfig_GetConfig  7 int,var
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。
; ※IDispatch 実装。HSP では comobj 経由でメソッド名による呼び出しも可能(vtbl 不要)。