ICertSrvSetupKeyInformation
COMIDispatch (デュアル)comobj 経由でメソッド名による遅延バインド呼び出しができます(vtableインデックス不要)。公式ドキュメント
証明機関 (CA) または Microsoft Simple Certificate Enrollment Protocol (SCEP) のロールをセットアップする際に使用される秘密キーのプロパティ一式を定義します。
メソッド 12
vtbl = vtable インデックス(0始まり)。IDispatch 実装のため HSP ではメソッド名でも呼べます(上記)。低レベルの index 呼び出し用に vtbl も掲載。0〜2 は IUnknown。
秘密キーの生成または格納に使用される暗号化サービス プロバイダー (CSP) またはキー ストレージ プロバイダー (KSP) の名前を取得または設定します。(Get)
| pVal | LPWSTR* | out | キーに使用する暗号化サービスプロバイダー(CSP)名を受け取る LPWSTR へのポインタである。 |
解説(Remarks)
KSP の場合、ProviderName プロパティの値は PublicKeyAlgorithmName、シャープ記号 (#)、KeyStorageProviderName の形式で指定する必要があります。たとえば "RSA#Microsoft Software Key Storage Provider" や "ECDSA_P256#Microsoft Software Key Storage Provider" のようになります。公開キー アルゴリズムは、そのプロバイダーがサポートしている必要があります。サポートされるアルゴリズムを取得するには、dwAlgOperations パラメーターに NCRYPT_SIGNATURE_OPERATION を指定して NCryptEnumAlgorithms 関数を呼び出します。アルゴリズム識別子については、CNG Algorithm Identifiers を参照してください。
秘密キーの生成または格納に使用される暗号化サービス プロバイダー (CSP) またはキー ストレージ プロバイダー (KSP) の名前を取得または設定します。(Put)
| bstrVal | LPWSTR | in | キーに使用する暗号化サービスプロバイダー(CSP)名を渡す。 |
解説(Remarks)
KSP の場合、ProviderName プロパティの値は PublicKeyAlgorithmName、シャープ記号 (#)、KeyStorageProviderName の形式で指定する必要があります。たとえば "RSA#Microsoft Software Key Storage Provider" や "ECDSA_P256#Microsoft Software Key Storage Provider" のようになります。公開キー アルゴリズムは、そのプロバイダーがサポートしている必要があります。サポートされるアルゴリズムを取得するには、dwAlgOperations パラメーターに NCRYPT_SIGNATURE_OPERATION を指定して NCryptEnumAlgorithms 関数を呼び出します。アルゴリズム識別子については、CNG Algorithm Identifiers を参照してください。
キーの強度を、暗号化サービス プロバイダー (CSP) がサポートする値のいずれかに取得または設定します。(Get)
| pVal | INT* | out | キーの長さ(ビット数)を受け取る INT へのポインタである。 |
キーの強度を、暗号化サービス プロバイダー (CSP) がサポートする値のいずれかに取得または設定します。(Put)
| lVal | INT | in | キーの長さ(ビット数)を渡す。 |
秘密キーが既に存在するかどうかを示す値を取得または設定します。(Get)
| pVal | VARIANT_BOOL* | out | 既存のキーを使用するかどうかを受け取る VARIANT_BOOL へのポインタである。 |
秘密キーが既に存在するかどうかを示す値を取得または設定します。(Put)
| bVal | VARIANT_BOOL | in | 既存のキーを使用するかどうかを指定する VARIANT_BOOL 値を渡す。 |
暗号化サービス プロバイダー (CSP) がキーの生成、格納、またはアクセスに使用する名前を取得または設定します。(Get)
| pVal | LPWSTR* | out | キーコンテナ名を受け取る LPWSTR へのポインタである。 |
解説(Remarks)
秘密キーが既に存在する場合、この名前は CSP がそのキーにアクセスするために使用する名前と一致している必要があります。
暗号化サービス プロバイダー (CSP) がキーの生成、格納、またはアクセスに使用する名前を取得または設定します。(Put)
| bstrVal | LPWSTR | in | 使用するキーコンテナ名を渡す。 |
解説(Remarks)
秘密キーが既に存在する場合、この名前は CSP がそのキーにアクセスするために使用する名前と一致している必要があります。
キーに対応する証明機関 (CA) 証明書の署名または検証に使用されるハッシュ アルゴリズムの名前を取得または設定します。(Get)
| pVal | LPWSTR* | out | 使用するハッシュアルゴリズム名を受け取る LPWSTR へのポインタである。 |
解説(Remarks)
ハッシュ アルゴリズムは、ProviderName のプロバイダーがサポートしている必要があります。暗号化サービス プロバイダー (CSP) の場合は、対象のプロバイダーに対して CryptGetProvParam 関数を呼び出して、サポートされるアルゴリズムを取得します。キー ストレージ プロバイダー (KSP) の場合は、dwAlgOperations パラメーターに BCRYPT_HASH_OPERATION を指定して BCryptEnumAlgorithms 関数を呼び出して取得します。アルゴリズム識別子については、CNG Algorithm Identifiers を参照してください。
Examples
CryptGetProvParam を使用してサポートされるアルゴリズムを列挙する例については、Example C Program: Enumerating CSP Providers and Provider Types を参照してください。
キーに対応する証明機関 (CA) 証明書の署名または検証に使用されるハッシュ アルゴリズムの名前を取得または設定します。(Put)
| bstrVal | LPWSTR | in | 使用するハッシュアルゴリズム名を渡す。 |
解説(Remarks)
ハッシュ アルゴリズムは、ProviderName のプロバイダーがサポートしている必要があります。暗号化サービス プロバイダー (CSP) の場合は、対象のプロバイダーに対して CryptGetProvParam 関数を呼び出して、サポートされるアルゴリズムを取得します。キー ストレージ プロバイダー (KSP) の場合は、dwAlgOperations パラメーターに BCRYPT_HASH_OPERATION を指定して BCryptEnumAlgorithms 関数を呼び出して取得します。アルゴリズム識別子については、CNG Algorithm Identifiers を参照してください。
Examples
CryptGetProvParam を使用してサポートされるアルゴリズムを列挙する例については、Example C Program: Enumerating CSP Providers and Provider Types を参照してください。
既存のキーに対応する証明機関 (CA) 証明書のバイナリ値であり、Distinguished Encoding Rules (DER) を使用してエンコードされたバイナリ値を取得または設定します。(Get)
| pVal | VARIANT* | out | 既存の CA 証明書を表す値を受け取る VARIANT へのポインタである。 |
既存のキーに対応する証明機関 (CA) 証明書のバイナリ値であり、Distinguished Encoding Rules (DER) を使用してエンコードされたバイナリ値を取得または設定します。(Put)
| varVal | VARIANT | in | 既存の CA 証明書を表す値を VARIANT で渡す。 |
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_ICertSrvSetupKeyInformation "{6BA73778-36DA-4C39-8A85-BCFA7D000793}" #usecom global ICertSrvSetupKeyInformation IID_ICertSrvSetupKeyInformation "{}" #comfunc global ICertSrvSetupKeyInformation_get_ProviderName 7 var #comfunc global ICertSrvSetupKeyInformation_put_ProviderName 8 wstr #comfunc global ICertSrvSetupKeyInformation_get_Length 9 var #comfunc global ICertSrvSetupKeyInformation_put_Length 10 int #comfunc global ICertSrvSetupKeyInformation_get_Existing 11 var #comfunc global ICertSrvSetupKeyInformation_put_Existing 12 int #comfunc global ICertSrvSetupKeyInformation_get_ContainerName 13 var #comfunc global ICertSrvSetupKeyInformation_put_ContainerName 14 wstr #comfunc global ICertSrvSetupKeyInformation_get_HashAlgorithm 15 var #comfunc global ICertSrvSetupKeyInformation_put_HashAlgorithm 16 wstr #comfunc global ICertSrvSetupKeyInformation_get_ExistingCACertificate 17 var #comfunc global ICertSrvSetupKeyInformation_put_ExistingCACertificate 18 int ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。 ; ※IDispatch 実装。HSP では comobj 経由でメソッド名による呼び出しも可能(vtbl 不要)。#define global IID_ICertSrvSetupKeyInformation "{6BA73778-36DA-4C39-8A85-BCFA7D000793}" #usecom global ICertSrvSetupKeyInformation IID_ICertSrvSetupKeyInformation "{}" #comfunc global ICertSrvSetupKeyInformation_get_ProviderName 7 sptr #comfunc global ICertSrvSetupKeyInformation_put_ProviderName 8 wstr #comfunc global ICertSrvSetupKeyInformation_get_Length 9 sptr #comfunc global ICertSrvSetupKeyInformation_put_Length 10 int #comfunc global ICertSrvSetupKeyInformation_get_Existing 11 sptr #comfunc global ICertSrvSetupKeyInformation_put_Existing 12 int #comfunc global ICertSrvSetupKeyInformation_get_ContainerName 13 sptr #comfunc global ICertSrvSetupKeyInformation_put_ContainerName 14 wstr #comfunc global ICertSrvSetupKeyInformation_get_HashAlgorithm 15 sptr #comfunc global ICertSrvSetupKeyInformation_put_HashAlgorithm 16 wstr #comfunc global ICertSrvSetupKeyInformation_get_ExistingCACertificate 17 sptr #comfunc global ICertSrvSetupKeyInformation_put_ExistingCACertificate 18 int ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※IDispatch 実装。HSP では comobj 経由でメソッド名による呼び出しも可能(vtbl 不要)。