IEnroll2
COM公式ドキュメント
Certificate Enrollment Control を表し、主に証明書要求の生成に使用されます。(IEnroll2)
メソッド 18
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
証明書または証明書チェーンを処理し、適切な証明書ストアに格納します。このメソッドは、InstallPKCS7Blob が要求証明書を受け取らない点で acceptPKCS7Blob メソッドと異なります。
| pBlobPKCS7 | CRYPT_INTEGER_BLOB* | inout | 証明書または証明書チェーンを含む CRYPT_DATA_BLOB 構造体へのポインター。 |
戻り値
戻り値は HRESULT です。S_OK は成功を示します。
証明書登録(エンロール)コントロールオブジェクトを初期状態に戻し、コントロールを再利用できるようにします。
戻り値
戻り値は HRESULT です。S_OK は成功を示します。
現在の暗号化サービスプロバイダー(CSP)による署名操作および/または交換操作のサポートに関する情報を取得します。
| pdwKeySpec | INT* | inout | 現在の CSP が 交換キーおよび/または署名キーをサポートしているかどうかを示すビットフラグを受け取る LONG へのポインター。 |
戻り値
戻り値は HRESULT です。S_OK は成功を示します。CSP がこのメソッドをサポートしていない場合はエラーが返されます。
解説(Remarks)
現在の CSP が交換キー、署名キー、またはその両方をサポートしているかどうかを判定するには、このメソッドを呼び出します。pdwKeySpec パラメーターには、次の定数(Wincrypt.h で定義)のうち 1 つ以上が格納されます。
IEnroll4::GetKeyLen メソッドは、署名キーおよび交換キーの最小および最大のキー長を取得します。
| fMin | BOOL | in | 取得するキー長(最小または最大)を示すブール値。fMin が TRUE の場合は最小キー長が、FALSE の場合は最大キー長が取得されます。 |
| fExchange | BOOL | in | キーの種類を示すブール値。fExchange が TRUE の場合は交換キーのキー長が、FALSE の場合は署名キーのキー長が取得されます。 |
| pdwKeySize | INT* | inout | キーの最小または最大のキー長(ビット単位)を受け取るポインター。 |
戻り値
戻り値は HRESULT です。S_OK は成功を示し、*pdwKeySize はキーの最小または最大のキー長(ビット単位)を表す値になります。
解説(Remarks)
最小および最大のキー長を判定するには、このメソッドを呼び出します。CSP がこのメソッドをサポートしていない場合はエラーが返されます。
指定したアルゴリズムクラスに属し、現在の暗号化サービスプロバイダー(CSP)がサポートする暗号化アルゴリズムの ID を取得します。
| dwIndex | INT | in | ID を取得するアルゴリズムの序数位置を指定します。最初のアルゴリズムには 0 を指定します。 |
| algClass | INT | in | 暗号化アルゴリズムのクラス。このメソッドが返す ID は、指定したクラスに属するものになります。次のいずれかを指定します。 |
| pdwAlgID | INT* | inout | 現在の CSP がサポートする暗号化アルゴリズム ID を受け取る LONG へのポインター。 |
戻り値
戻り値は HRESULT です。S_OK は成功を示します。列挙するアルゴリズムがそれ以上ない場合は、値 ERROR_NO_MORE_ITEMS が返されます。
解説(Remarks)
このメソッドで使用するアルゴリズム ID とクラスの定数については、Wincrypt.h を参照してください。
暗号化アルゴリズムの ID からその名前を取得します。このメソッドが取得する値は、現在の暗号化サービスプロバイダー(CSP)によって異なります。
| algID | INT | in | Wincrypt.h で定義されている、暗号化アルゴリズムを表す値。たとえば CALG_MD2 は定義済みのアルゴリズム識別子です。このメソッドが成功するには、現在の CSP が algID アルゴリズムをサポートしている必要があります。 |
| ppwsz | LPWSTR* | inout | 成功した場合、algID で指定されたアルゴリズムの名前を表す LPWSTR へのポインター。 |
戻り値
戻り値は HRESULT です。S_OK は成功を示します。CSP がこのメソッドをサポートしていない場合、または algID の暗号化アルゴリズムをサポートしていない場合は、エラーが返されます。
解説(Remarks)
このメソッドは、 EnumAlgs を呼び出して取得した ID を持つアルゴリズムの名前を表示するために使用できます。
暗号化アルゴリズムの定数は Wincrypt.h で定義されています。
IEnroll4 の ReuseHardwareKeyIfUnableToGenNew プロパティは、新しいキーの生成時にエラーが発生した場合に証明書登録(エンロール)コントロールオブジェクトが行う動作を決定するブール値を設定または取得します。(Put)
| fReuseHardwareKeyIfUnableToGenNew | BOOL | in | 新規キーを生成できない場合に既存のハードウェアキーを再利用するかどうかを指定する BOOL 値を渡す。 |
解説(Remarks)
このプロパティはブール値です。このプロパティは、NTE_TOKEN_KEYSET_STORAGE_FULL を返す暗号化サービスプロバイダー(CSP)にのみ影響します。これらの CSP は通常ハードウェアベースであり、スマートカードがその一例です。このプロパティが TRUE で、新しいキーの生成中にエラーが発生した場合、証明書登録(エンロール)コントロールオブジェクトは既存のハードウェアキーを再利用します。このプロパティが FALSE で、新しいキーの生成中にエラーが発生した場合、証明書登録(エンロール)コントロールオブジェクトは既存のハードウェアキーを再利用せず、代わりに呼び出し元にエラーを渡します。
IEnroll4 の ReuseHardwareKeyIfUnableToGenNew プロパティは、新しいキーの生成時にエラーが発生した場合に証明書登録(エンロール)コントロールオブジェクトが行う動作を決定するブール値を設定または取得します。(Get)
| fReuseHardwareKeyIfUnableToGenNew | BOOL* | inout | 新規キーを生成できない場合に既存のハードウェアキーを再利用するかどうかを受け取る BOOL へのポインタである。 |
解説(Remarks)
このプロパティはブール値です。このプロパティは、NTE_TOKEN_KEYSET_STORAGE_FULL を返す暗号化サービスプロバイダー(CSP)にのみ影響します。これらの CSP は通常ハードウェアベースであり、スマートカードがその一例です。このプロパティが TRUE で、新しいキーの生成中にエラーが発生した場合、証明書登録(エンロール)コントロールオブジェクトは既存のハードウェアキーを再利用します。このプロパティが FALSE で、新しいキーの生成中にエラーが発生した場合、証明書登録(エンロール)コントロールオブジェクトは既存のハードウェアキーを再利用せず、代わりに呼び出し元にエラーを渡します。
IEnroll4 の HashAlgID プロパティは、PKCS の署名時に使用するハッシュアルゴリズムを設定または取得します。(Put)
| hashAlgID | INT | in | 使用するハッシュアルゴリズムの ID を渡す。 |
解説(Remarks)
このプロパティの値は、 EnumAlgs メソッドが返すようなハッシュアルゴリズムの ID です。HashAlgID プロパティと HashAlgorithmWStr プロパティの両方が設定されている場合は、より新しく更新された方が、PKCS #10 要求の署名に使用されるハッシュアルゴリズムを決定します。
IEnroll4 の HashAlgID プロパティは、PKCS の署名時に使用するハッシュアルゴリズムを設定または取得します。(Get)
| hashAlgID | INT* | inout | 現在のハッシュアルゴリズム ID を受け取る INT へのポインタである。 |
解説(Remarks)
このプロパティの値は、 EnumAlgs メソッドが返すようなハッシュアルゴリズムの ID です。HashAlgID プロパティと HashAlgorithmWStr プロパティの両方が設定されている場合は、より新しく更新された方が、PKCS #10 要求の署名に使用されるハッシュアルゴリズムを決定します。
SetHStoreMy メソッドは、MY ストアに使用するハンドルを指定します。このメソッドは IEnroll2 インターフェイスで初めて定義されました。
| hStore | HCERTSTORE | in | MY ストアに使用する証明書ストアのハンドル。 |
戻り値
戻り値は HRESULT です。S_OK は成功を示します。
SetHStoreCA メソッドは、CA ストアに使用するハンドルを指定します。このメソッドは IEnroll2 インターフェイスで初めて定義されました。
| hStore | HCERTSTORE | in | CA ストアに使用する証明書ストアのハンドル。 |
戻り値
戻り値は HRESULT です。S_OK は成功を示します。
SetHStoreROOT メソッドは、Root ストアに使用するハンドルを指定します。このメソッドは IEnroll2 インターフェイスで初めて定義されました。
| hStore | HCERTSTORE | in | Root ストアに使用する証明書ストアのハンドル。 |
戻り値
戻り値は HRESULT です。S_OK は成功を示します。
SetHStoreRequest メソッドは、要求ストアに使用するハンドルを指定します。このメソッドは IEnroll2 インターフェイスで初めて定義されました。
| hStore | HCERTSTORE | in | 要求ストアに使用する証明書ストアのハンドル。 |
戻り値
戻り値は HRESULT です。S_OK は成功を示します。
IEnroll4 の LimitExchangeKeyToEncipherment プロパティは、AT_KEYEXCHANGE 要求にデジタル署名および否認防止のキー用途が含まれるかどうかを決定するブール値を設定または取得します。(Put)
| fLimitExchangeKeyToEncipherment | BOOL | in | 鍵交換キーの用途を暗号化のみに制限するかどうかを指定する BOOL 値を渡す。 |
解説(Remarks)
このプロパティはブール値であり、AT_KEYEXCHANGE 要求にのみ影響します。AT_SIGNATURE 要求には影響しません。
このプロパティの値が FALSE の場合、AT_KEYEXCHANGE 要求には次のキー用途が含まれます。
- CERT_DATA_ENCIPHERMENT_KEY_USAGE
- CERT_KEY_ENCIPHERMENT_KEY_USAGE
- CERT_DIGITAL_SIGNATURE_KEY_USAGE
- CERT_NON_REPUDIATION_KEY_USAGE
このプロパティの値が TRUE の場合、AT_KEYEXCHANGE 要求には次のキー用途が含まれます。
IEnroll4 の LimitExchangeKeyToEncipherment プロパティは、AT_KEYEXCHANGE 要求にデジタル署名および否認防止のキー用途が含まれるかどうかを決定するブール値を設定または取得します。(Get)
| fLimitExchangeKeyToEncipherment | BOOL* | inout | 鍵交換キーの用途を暗号化のみに制限するかどうかを受け取る BOOL へのポインタである。 |
解説(Remarks)
このプロパティはブール値であり、AT_KEYEXCHANGE 要求にのみ影響します。AT_SIGNATURE 要求には影響しません。
このプロパティの値が FALSE の場合、AT_KEYEXCHANGE 要求には次のキー用途が含まれます。
- CERT_DATA_ENCIPHERMENT_KEY_USAGE
- CERT_KEY_ENCIPHERMENT_KEY_USAGE
- CERT_DIGITAL_SIGNATURE_KEY_USAGE
- CERT_NON_REPUDIATION_KEY_USAGE
このプロパティの値が TRUE の場合、AT_KEYEXCHANGE 要求には次のキー用途が含まれます。
PKCS を有効にするかどうかを制御します。(Put)
| fEnableSMIMECapabilities | BOOL | in | S/MIME 機能属性を要求に含めるかどうかを指定する BOOL 値を渡す。 |
PKCS を有効にするかどうかを制御します。(Get)
| fEnableSMIMECapabilities | BOOL* | inout | S/MIME 機能属性を要求に含めるかどうかを受け取る BOOL へのポインタである。 |
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_IEnroll2 "{C080E199-B7DF-11D2-A421-00C04F79FE8E}" #usecom global IEnroll2 IID_IEnroll2 "{}" #comfunc global IEnroll2_InstallPKCS7Blob 73 var #comfunc global IEnroll2_Reset 74 #comfunc global IEnroll2_GetSupportedKeySpec 75 var #comfunc global IEnroll2_GetKeyLen 76 int,int,var #comfunc global IEnroll2_EnumAlgs 77 int,int,var #comfunc global IEnroll2_GetAlgNameWStr 78 int,var #comfunc global IEnroll2_put_ReuseHardwareKeyIfUnableToGenNew 79 int #comfunc global IEnroll2_get_ReuseHardwareKeyIfUnableToGenNew 80 var #comfunc global IEnroll2_put_HashAlgID 81 int #comfunc global IEnroll2_get_HashAlgID 82 var #comfunc global IEnroll2_SetHStoreMy 83 sptr #comfunc global IEnroll2_SetHStoreCA 84 sptr #comfunc global IEnroll2_SetHStoreROOT 85 sptr #comfunc global IEnroll2_SetHStoreRequest 86 sptr #comfunc global IEnroll2_put_LimitExchangeKeyToEncipherment 87 int #comfunc global IEnroll2_get_LimitExchangeKeyToEncipherment 88 var #comfunc global IEnroll2_put_EnableSMIMECapabilities 89 int #comfunc global IEnroll2_get_EnableSMIMECapabilities 90 var ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。#define global IID_IEnroll2 "{C080E199-B7DF-11D2-A421-00C04F79FE8E}" #usecom global IEnroll2 IID_IEnroll2 "{}" #comfunc global IEnroll2_InstallPKCS7Blob 73 sptr #comfunc global IEnroll2_Reset 74 #comfunc global IEnroll2_GetSupportedKeySpec 75 sptr #comfunc global IEnroll2_GetKeyLen 76 int,int,sptr #comfunc global IEnroll2_EnumAlgs 77 int,int,sptr #comfunc global IEnroll2_GetAlgNameWStr 78 int,sptr #comfunc global IEnroll2_put_ReuseHardwareKeyIfUnableToGenNew 79 int #comfunc global IEnroll2_get_ReuseHardwareKeyIfUnableToGenNew 80 sptr #comfunc global IEnroll2_put_HashAlgID 81 int #comfunc global IEnroll2_get_HashAlgID 82 sptr #comfunc global IEnroll2_SetHStoreMy 83 sptr #comfunc global IEnroll2_SetHStoreCA 84 sptr #comfunc global IEnroll2_SetHStoreROOT 85 sptr #comfunc global IEnroll2_SetHStoreRequest 86 sptr #comfunc global IEnroll2_put_LimitExchangeKeyToEncipherment 87 int #comfunc global IEnroll2_get_LimitExchangeKeyToEncipherment 88 sptr #comfunc global IEnroll2_put_EnableSMIMECapabilities 89 int #comfunc global IEnroll2_get_EnableSMIMECapabilities 90 sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。