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

ICEnroll2

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

公式ドキュメント

ICEnroll2 インターフェイスは、Certificate Enrollment Control を表す複数のインターフェイスの 1 つです。

メソッド 6

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

vtbl 63 HRESULT addCertTypeToRequest(LPWSTR CertType)

証明書テンプレートを要求に追加します(エンタープライズ証明機関(CA)をサポートするために使用します)。このメソッドは ICEnroll2 インターフェイスで最初に定義されました。

CertTypeLPWSTRin証明書要求に追加される証明書テンプレートの完全修飾名。この値は証明機関によって解釈されます。

戻り値

VB

戻り値は HRESULT で、呼び出しが成功すると S_OK が返されます。

解説(Remarks)

要求に対して複数の証明書テンプレートが必要な場合は、このメソッドを複数回呼び出すことができます。

vtbl 64 HRESULT addNameValuePairToSignature(LPWSTR Name, LPWSTR Value)

属性の認証された名前と値のペアを要求に追加します。名前と値のペアの意味をどう解釈するかは証明機関(CA)に委ねられます。

NameLPWSTRin属性の名前。たとえば国/地域名を表す "2.5.4.6" など。
ValueLPWSTRin属性の値。たとえば "US" など。

戻り値

VB

戻り値は HRESULT で、呼び出しが成功すると S_OK が返されます。

解説(Remarks)

addNameValuePairToSignature メソッドは、要求に属性を追加するために使用します。

BSTR bstrName = NULL;
BSTR bstrValue = NULL;
HRESULT hr;

// Allocate the name. Alternatively, (L"2.5.4.6").
bstrName = SysAllocString(TEXT(szOID_COUNTRY_NAME));
// Allocate the value.
bstrValue = SysAllocString(L"US");

if (NULL == bstrName || NULL == bstrValue)
{
    // handle error
}

// add the name-value pair to the signature
// pEnroll is previously instantiated ICEnroll4 interface pointer
hr = pEnroll->addNameValuePairToSignature( bstrName, bstrValue );
if ( FAILED( hr ) )
    printf("Failed addNameValuePairToSignature - %x\n", hr );
else
    printf("addNameValuePairToSignature(%ws, %ws) succeeded\n",
            bstrName, 
            bstrValue );

// free BSTRs
if (bstrName )
    SysFreeString( bstrName );
if (bstrValue )
    SysFreeString( bstrValue );
vtbl 65 HRESULT get_WriteCertToUserDS(BOOL* fBool)

証明書をユーザーの Active Directory ストアに書き込むかどうかを決定するブール値を設定または取得します。(Get)

fBoolBOOL*out証明書をユーザーのディレクトリサービス(DS)エントリに書き込むかどうかを受け取る BOOL へのポインタである。

解説(Remarks)

WriteCertToUserDS は、次のメソッドの動作に影響します。

Certificate Enrollment Control がスクリプト化されたコントロールとして実行される場合、このプロパティを設定する機能は無効になります。

BOOL     bWriteUserDS;
HRESULT  hr;

// pEnroll is previously instantiated ICEnroll2 interface pointer

// get the WriteCertToUserDS value
hr = pEnroll->get_WriteCertToUserDS( &bWriteUserDS );
if (FAILED( hr ))
    printf("Failed get_WriteCertToUserDS - %x\n", hr );
else
    printf( "WriteCertToUserDS: %d\n", bWriteUserDS );

// set the WriteCertToUserDS value
hr = pEnroll->put_WriteCertToUserDS( TRUE );
if (FAILED( hr ))
    printf("Failed put_WriteCertToUserDS - %x\n", hr );
else
    printf( "WriteCertToUserDS set to TRUE\n" );
vtbl 66 HRESULT put_WriteCertToUserDS(BOOL fBool)

証明書をユーザーの Active Directory ストアに書き込むかどうかを決定するブール値を設定または取得します。(Put)

fBoolBOOLin証明書をユーザーのディレクトリサービス(DS)エントリに書き込むかどうかを指定する BOOL 値を渡す。

解説(Remarks)

WriteCertToUserDS は、次のメソッドの動作に影響します。

Certificate Enrollment Control がスクリプト化されたコントロールとして実行される場合、このプロパティを設定する機能は無効になります。

BOOL     bWriteUserDS;
HRESULT  hr;

// pEnroll is previously instantiated ICEnroll2 interface pointer

// get the WriteCertToUserDS value
hr = pEnroll->get_WriteCertToUserDS( &bWriteUserDS );
if (FAILED( hr ))
    printf("Failed get_WriteCertToUserDS - %x\n", hr );
else
    printf( "WriteCertToUserDS: %d\n", bWriteUserDS );

// set the WriteCertToUserDS value
hr = pEnroll->put_WriteCertToUserDS( TRUE );
if (FAILED( hr ))
    printf("Failed put_WriteCertToUserDS - %x\n", hr );
else
    printf( "WriteCertToUserDS set to TRUE\n" );
vtbl 67 HRESULT get_EnableT61DNEncoding(BOOL* fBool)

ICEnroll4 の EnableT61DNEncoding プロパティは、要求内の識別名を Unicode 文字列ではなく T61 文字列としてエンコードするかどうかを決定するブール値を設定または取得します。(Get)

fBoolBOOL*out識別名に T61 エンコードを使用するかどうかを受け取る BOOL へのポインタである。

解説(Remarks)

EnableT61DNEncoding プロパティは、次のメソッドの動作に影響します。

BOOL     bT61DN;
HRESULT  hr;


// pEnroll is a previously instantiated ICEnroll2 interface pointer.
// Get the EnableT61DNEncoding Boolean value.

hr = pEnroll->get_EnableT61DNEncoding( &bT61DN );
if ( FAILED ( hr ) )
    printf("Failed get_EnableT61DNEncoding - %x\n", hr );
else
    printf( "T61DNEncoding: %s\n", 
             ( bT61DN ? "Enabled" : "Disabled" ) );


// Set the EnableT61DNEncoding value.

hr = pEnroll->put_EnableT61DNEncoding( TRUE );
if ( FAILED ( hr ) )
    printf("Failed Setting EnableT61DNEncoding - %x\n", hr );
else
    printf( "EnableT61DNEncoding was set to TRUE\n" );
vtbl 68 HRESULT put_EnableT61DNEncoding(BOOL fBool)

ICEnroll4 の EnableT61DNEncoding プロパティは、要求内の識別名を Unicode 文字列ではなく T61 文字列としてエンコードするかどうかを決定するブール値を設定または取得します。(Put)

fBoolBOOLin識別名に T61 エンコードを使用するかどうかを指定する BOOL 値を渡す。

解説(Remarks)

EnableT61DNEncoding プロパティは、次のメソッドの動作に影響します。

BOOL     bT61DN;
HRESULT  hr;


// pEnroll is a previously instantiated ICEnroll2 interface pointer.
// Get the EnableT61DNEncoding Boolean value.

hr = pEnroll->get_EnableT61DNEncoding( &bT61DN );
if ( FAILED ( hr ) )
    printf("Failed get_EnableT61DNEncoding - %x\n", hr );
else
    printf( "T61DNEncoding: %s\n", 
             ( bT61DN ? "Enabled" : "Disabled" ) );


// Set the EnableT61DNEncoding value.

hr = pEnroll->put_EnableT61DNEncoding( TRUE );
if ( FAILED ( hr ) )
    printf("Failed Setting EnableT61DNEncoding - %x\n", hr );
else
    printf( "EnableT61DNEncoding was set to TRUE\n" );
出典・ライセンス: 上記「公式ドキュメント」の内容は 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_ICEnroll2 "{704CA730-C90B-11D1-9BEC-00C04FC295E1}"
#usecom global ICEnroll2 IID_ICEnroll2 "{127698E4-E730-4E5C-A2B1-21490A70C8A1}"
#comfunc global ICEnroll2_addCertTypeToRequest         63 wstr
#comfunc global ICEnroll2_addNameValuePairToSignature  64 wstr,wstr
#comfunc global ICEnroll2_get_WriteCertToUserDS        65 var
#comfunc global ICEnroll2_put_WriteCertToUserDS        66 int
#comfunc global ICEnroll2_get_EnableT61DNEncoding      67 var
#comfunc global ICEnroll2_put_EnableT61DNEncoding      68 int
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※#usecom 末尾は CoCreateInstance 用のクラスID(コクラスCLSID, SDKから自動取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。
; ※IDispatch 実装。HSP では comobj 経由でメソッド名による呼び出しも可能(vtbl 不要)。