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

IX509AttributeCspProvider

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

公式ドキュメント

証明書を要求するエンティティが使用する暗号化プロバイダーを識別する属性を表します。

メソッド 5

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

vtbl 10 HRESULT InitializeEncode(X509KeySpec KeySpec, LPWSTR strProviderName, EncodingType Encoding, LPWSTR strSignature)

プロバイダーに関する情報から属性を初期化します。

KeySpecX509KeySpecinキーペアが暗号化に使用されるか署名に使用されるかを識別する X509KeySpec 列挙値です。
strProviderNameLPWSTRinプロバイダー名を格納する BSTR 変数です。
EncodingEncodingTypeinstrSignature パラメーターに含まれる署名に適用される Unicode エンコードの種類を指定する EncodingType 列挙値です。
strSignatureLPWSTRinプロバイダーの署名を格納する BSTR 変数です。

戻り値

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

関数が失敗した場合、エラーを示す HRESULT 値を返します。一般的なエラーコードの一覧については、Common HRESULT Values を参照してください。

解説(Remarks)

この属性のオブジェクト識別子 (OID) は XCN_OID_ENROLLMENT_CSP_PROVIDER (1.3.6.1.4.1.311.13.2.2) です。詳細については、CERTENROLL_OBJECTID を参照してください。

IX509AttributeCspProvider オブジェクトを使用する前に、InitializeEncode または InitializeDecode のいずれかを呼び出す必要があります。これら 2 つのメソッドは互いに補完し合います。InitializeEncode メソッドを使用すると、生データからエンコードされた Abstract Syntax Notation One (ASN.1) 構造を構築でき、InitializeDecode メソッドを使用すると、エンコードされた ASN.1 構造から生データを初期化できます。生データを取得するには、次のプロパティを呼び出すことができます。

vtbl 11 HRESULT InitializeDecode(EncodingType Encoding, LPWSTR strEncodedData)

プロバイダーに関する情報を含む Distinguished Encoding Rules (DER) エンコードされたバイト配列からオブジェクトを初期化します。

EncodingEncodingTypein入力文字列に適用される Unicode エンコードの種類を指定する EncodingType 列挙値です。
strEncodedDataLPWSTRinDER エンコードされた属性を格納する BSTR 変数です。

戻り値

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

関数が失敗した場合、エラーを示す HRESULT 値を返します。一般的なエラーコードの一覧については、Common HRESULT Values を参照してください。

解説(Remarks)

この属性のオブジェクト識別子 (OID) は XCN_OID_ENROLLMENT_CSP_PROVIDER (1.3.6.1.4.1.311.13.2.2) です。詳細については、CERTENROLL_OBJECTID を参照してください。

属性値を含む DER エンコードされた Abstract Syntax Notation One (ASN.1) オブジェクトがある場合は、このメソッドを使用できます。DER エンコードされたオブジェクトは Unicode エンコードされた文字列で指定する必要があります。詳細については、IBinaryConverter インターフェイスを参照してください。

IX509AttributeCspProvider オブジェクトを使用する前に、InitializeEncode または InitializeDecode のいずれかを呼び出す必要があります。これら 2 つのメソッドは互いに補完し合います。InitializeEncode メソッドを使用すると、生データからエンコードされた ASN.1 構造を構築でき、InitializeDecode メソッドを使用すると、エンコードされた ASN.1 構造から生データを初期化できます。生データを取得するには、次のプロパティを呼び出すことができます。

vtbl 12 HRESULT get_KeySpec(X509KeySpec* pValue)

プロバイダーまたはキーコンテナーによって格納されているキーペアが、コンテンツの暗号化に使用されるか署名に使用されるかを識別する値を取得します。

pValueX509KeySpec*outキーの用途を示す X509KeySpec 値を受け取る出力先である。

解説(Remarks)

KeySpec プロパティを初期化するには、InitializeEncode メソッドまたは InitializeDecode メソッドを呼び出します。生データを取得するために、次のプロパティを呼び出すこともできます。

vtbl 13 HRESULT get_ProviderName(LPWSTR* pValue)

プロバイダー名を取得します。

pValueLPWSTR*out暗号化サービス プロバイダ (CSP) の名前を受け取る出力先である。

解説(Remarks)

ProviderName プロパティを初期化するには、InitializeEncode メソッドまたは InitializeDecode メソッドを呼び出します。生データを取得するために、次のプロパティを呼び出すこともできます。

vtbl 14 HRESULT get_Signature(EncodingType Encoding, LPWSTR* pValue)

プロバイダーのデジタル署名を取得します。

EncodingEncodingTypein出力する pValue の希望するエンコード形式を指定する EncodingType 値である。
pValueLPWSTR*outプロバイダ情報の署名を指定エンコード形式で受け取る出力先である。

解説(Remarks)

Signature プロパティを初期化するには、InitializeEncode メソッドまたは InitializeDecode メソッドを呼び出します。生データを取得するために、次のプロパティを呼び出すことができます。

出典・ライセンス: 上記「公式ドキュメント」の内容は 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_IX509AttributeCspProvider "{728AB32B-217D-11DA-B2A4-000E7BBB2B09}"
#usecom global IX509AttributeCspProvider IID_IX509AttributeCspProvider "{}"
#comfunc global IX509AttributeCspProvider_InitializeEncode  10 int,wstr,int,wstr
#comfunc global IX509AttributeCspProvider_InitializeDecode  11 int,wstr
#comfunc global IX509AttributeCspProvider_get_KeySpec       12 var
#comfunc global IX509AttributeCspProvider_get_ProviderName  13 var
#comfunc global IX509AttributeCspProvider_get_Signature     14 int,var
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。
; ※IDispatch 実装。HSP では comobj 経由でメソッド名による呼び出しも可能(vtbl 不要)。