IX509EndorsementKey
COMIDispatch (デュアル)comobj 経由でメソッド名による遅延バインド呼び出しができます(vtableインデックス不要)。公式ドキュメント
X.509 エンドースメントキーインターフェイス
メソッド 11
vtbl = vtable インデックス(0始まり)。IDispatch 実装のため HSP ではメソッド名でも呼べます(上記)。低レベルの index 呼び出し用に vtbl も掲載。0〜2 は IUnknown。
暗号化プロバイダーの名前。既定は Microsoft Platform Crypto Provider です。ProviderName プロパティは Open メソッドを呼び出す前に設定する必要があります。Open メソッドを呼び出した後は ProviderName プロパティを変更できません。(Get)
| pValue | LPWSTR* | out | 使用するプロバイダー名を受け取る文字列ポインタである。 |
暗号化プロバイダーの名前。既定は Microsoft Platform Crypto Provider です。ProviderName プロパティは Open メソッドを呼び出す前に設定する必要があります。Open メソッドを呼び出した後は ProviderName プロパティを変更できません。(Put)
| Value | LPWSTR | in | 設定するプロバイダー名を指定する。 |
エンドースメントキーのビット長。このプロパティには Open メソッドを呼び出した後にのみアクセスできます。
| pValue | INT* | out | 保証鍵 (EK) の鍵長 (ビット数) を受け取る INT へのポインタである。 |
Open メソッドが正常に呼び出されたかどうかを示します。
| pValue | VARIANT_BOOL* | out | 鍵が開かれているかどうかを受け取る VARIANT_BOOL へのポインタである。 |
エンドースメントキーをサポートするキーストレージプロバイダー (KSP) に、エンドースメントキー証明書を追加します。
| Encoding | EncodingType | in | 証明書に適用される Unicode エンコードの種類を指定する EncodingType 列挙値。既定値は XCN_CRYPT_STRING_BASE64 です。 |
| strCertificate | LPWSTR | in | ストアに追加する証明書。この証明書の公開キーは、エンドースメントキーの公開キーと一致している必要があります。 |
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
解説(Remarks)
キーストレージプロバイダーに追加できるのは、製造元以外の証明書のみです。
エンドースメントキーに関連するエンドースメント証明書を、キーストレージプロバイダーから削除します。RemoveCertificate メソッドは、Open メソッドが正常に呼び出された後にのみ呼び出すことができます。
| Encoding | EncodingType | in | エンドースメント証明書に適用される Unicode エンコードの種類を指定する EncodingType 列挙値。既定値は XCN_CRYPT_STRING_BASE64 です。 |
| strCertificate | LPWSTR | in | ストアから削除する証明書。 |
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
解説(Remarks)
キーストレージプロバイダーから削除できるのは、製造元以外の証明書のみです。
指定したインデックスについて、エンドースメントキーに関連付けられたエンドースメント証明書をキーストレージプロバイダーから取得します。
| ManufacturerOnly | VARIANT_BOOL | in | 製造元のエンドースメントキーのみを取得する場合は True、それ以外は false。既定は false です。 |
| dwIndex | INT | in | 要求するエンドースメント証明書のインデックス。 |
| Encoding | EncodingType | in | エンドースメント証明書に適用される Unicode エンコードの種類を指定する EncodingType 列挙値。既定値は XCN_CRYPT_STRING_BASE64 です。 |
| pValue | LPWSTR* | out | 要求されたエンドースメント証明書。 |
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
キーストレージプロバイダー内のエンドースメント証明書の数を取得します。
| ManufacturerOnly | VARIANT_BOOL | in | 製造元の証明書のみの数を返す場合は True。製造元以外の証明書のみの数を返す場合は False。 |
| pCount | INT* | out | キーストレージプロバイダーから取得したエンドースメント証明書の数。 |
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
エンドースメント公開キーをエクスポートします。
| ppPublicKey | IX509PublicKey** | out | エクスポートされたエンドースメント公開キー。 |
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
エンドースメントキーを開きます。エンドースメントキーから情報を取得する、証明書を追加または削除する、あるいはエンドースメントキーをエクスポートするには、事前にエンドースメントキーを開いておく必要があります。
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
エンドースメントキーを閉じます。Close メソッドは、Open メソッドが正常に呼び出された後にのみ呼び出すことができます。
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
解説(Remarks)
Close メソッドは、ProviderName を除き、オブジェクトが保持しているすべてのリソースを解放します。 ProviderName は、再割り当てされたとき、またはこのオブジェクトが破棄されたときに解放されます。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_IX509EndorsementKey "{B11CD855-F4C4-4FC6-B710-4422237F09E9}" #usecom global IX509EndorsementKey IID_IX509EndorsementKey "{}" #comfunc global IX509EndorsementKey_get_ProviderName 7 var #comfunc global IX509EndorsementKey_put_ProviderName 8 wstr #comfunc global IX509EndorsementKey_get_Length 9 var #comfunc global IX509EndorsementKey_get_Opened 10 var #comfunc global IX509EndorsementKey_AddCertificate 11 int,wstr #comfunc global IX509EndorsementKey_RemoveCertificate 12 int,wstr #comfunc global IX509EndorsementKey_GetCertificateByIndex 13 int,int,int,var #comfunc global IX509EndorsementKey_GetCertificateCount 14 int,var #comfunc global IX509EndorsementKey_ExportPublicKey 15 sptr #comfunc global IX509EndorsementKey_Open 16 #comfunc global IX509EndorsementKey_Close 17 ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。 ; ※IDispatch 実装。HSP では comobj 経由でメソッド名による呼び出しも可能(vtbl 不要)。#define global IID_IX509EndorsementKey "{B11CD855-F4C4-4FC6-B710-4422237F09E9}" #usecom global IX509EndorsementKey IID_IX509EndorsementKey "{}" #comfunc global IX509EndorsementKey_get_ProviderName 7 sptr #comfunc global IX509EndorsementKey_put_ProviderName 8 wstr #comfunc global IX509EndorsementKey_get_Length 9 sptr #comfunc global IX509EndorsementKey_get_Opened 10 sptr #comfunc global IX509EndorsementKey_AddCertificate 11 int,wstr #comfunc global IX509EndorsementKey_RemoveCertificate 12 int,wstr #comfunc global IX509EndorsementKey_GetCertificateByIndex 13 int,int,int,sptr #comfunc global IX509EndorsementKey_GetCertificateCount 14 int,sptr #comfunc global IX509EndorsementKey_ExportPublicKey 15 sptr #comfunc global IX509EndorsementKey_Open 16 #comfunc global IX509EndorsementKey_Close 17 ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。 ; ※IDispatch 実装。HSP では comobj 経由でメソッド名による呼び出しも可能(vtbl 不要)。