IX509CertificateRequestPkcs10::GetCspStatuses メソッド (certenroll.h)
GetCspStatuses メソッドは、呼び出し元によって指定された秘密キーの使用目的と一致するすべてのプロバイダーとアルゴリズムのペアを含む ICspStatuses コレクションを取得します。
構文
HRESULT GetCspStatuses(
[in] X509KeySpec KeySpec,
[out] ICspStatuses **ppCspStatuses
);
パラメーター
[in] KeySpec
キーの使用目的を指定する X509KeySpec 列挙値。 次のいずれかの値を指定できます。
値 | 意味 |
---|---|
|
Cryptography API のみ: 次世代 (CNG) プロバイダーが選択されています。 |
|
暗号化アルゴリズム (キー交換を含む) を使用する CryptoAPI 暗号化サービス プロバイダー (CSP) のみが選択されます。 |
|
署名アルゴリズムを持つ CryptoAPI CSP のみが選択されます。 |
[out] ppCspStatuses
コレクションを表す ICspStatuses インターフェイスへのポインターを受け取る変数のアドレス。
戻り値
関数が成功した場合、関数は S_OKを返します。
関数が失敗した場合は、エラーを示す HRESULT 値を返します。 有効な値を次の表に示しますが、これ以外にもあります。 一般的なエラー コードの一覧については、「 共通 HRESULT 値」を参照してください。
リターン コード | 説明 |
---|---|
|
秘密キーが見つかりません。 |
|
オブジェクトが初期化されていません。 |
注釈
このメソッドは、 ICspStatus オブジェクトのコレクションを取得します。 各オブジェクトは、1 つのプロバイダーとアルゴリズムのペアを表します。 IX509CertificateRequestPkcs10 要求オブジェクトを初期化するときにテンプレートを指定した場合、pKIDefaultCSPs や pKIDefaultKeySpec などのテンプレート属性は、最初に有効になっているペアに影響します。 各 ICspStatus オブジェクトで次のプロパティを呼び出して、ペアに関する情報を取得できます。
- CspInformation プロパティは、プロバイダー情報を取得します。
- CspAlgorithm プロパティは、アルゴリズム情報を取得します。
- EnrollmentStatus プロパティは、IX509EnrollmentStatus オブジェクトを取得します。 状態オブジェクトの Selected プロパティを呼び出して、この要求に対してプロバイダーとアルゴリズムのペアが有効になっているかどうかを判断します。
- Ordinal プロパティは、プロバイダーとアルゴリズムのペア コレクション内の位置を取得します。
このメソッドによって取得されたコレクションは、要求オブジェクトに内部的に保存されます。 KeySpec 値ごとに 1 つずつ、最大 3 つのコレクションを作成して保存できます。 これは、プロバイダーとアルゴリズムのペアの選択状態を保持して、関連するプロパティ ページを正確かつ迅速に複数回表示できるようにし、秘密キーを作成する必要がある場合に Encode メソッドで選択されるプロバイダーとアルゴリズムを識別できるようにするために行われます。 プロバイダーとアルゴリズムのペアの選択状態が変更された場合、変更は適切なコレクションに保存されます。 1 つのコレクションのメンバーに加えられた変更は、他のコレクションのメンバーには影響しません。 PKCS #10 オブジェクトが引き続き存在する限り、コレクションは存在します。
たとえば、 KeySpec パラメーターを XCN_AT_SIGNATURE に設定してこのメソッドを呼び出し、テンプレートを使用して要求を初期化するとします。 次のステートメントは true になります。
- ICspStatus オブジェクトのコレクションが作成され、IX509CertificateRequestPkcs10 オブジェクトに保存されます。 コレクションには、コンピューターにインストールされているすべての有効なプロバイダーとアルゴリズムのペアが含まれています。
- KeySpec パラメーターはXCN_AT_NONEに設定されていないため、コレクション内の各 Cryptography API: Next Generation (CNG) プロバイダー/アルゴリズム ペアに対して Selected プロパティが SelectedNo に設定されます。
- KeySpec パラメーターはXCN_AT_KEYEXCHANGEに設定されていないため、コレクション内の各 CryptoAPI CSP/アルゴリズム ペアに対して SelectedNo プロパティが SelectedNo に設定されます。このペアでは、アルゴリズムを使用してデータの暗号化やキーのアーカイブを行うことができます。
- テンプレートまたは秘密キーによって参照されるが、コンピューターではサポートされていないプロバイダーごとに、プレースホルダー ICspStatus オブジェクトが作成され、コレクションに追加され、 Selected プロパティが SelectedNo に設定されます。
- Selected プロパティは、各 CryptoAPI CSP/アルゴリズム ペアに対して SelectedYes に設定され、アルゴリズムはデータの署名にのみ使用できます。
- Ordinal プロパティは、pKIDefaultCSPs テンプレート属性によって識別される CSP の順序 (存在する場合) を反映するように設定されます。 属性によって最初に一覧表示される CSP は、コレクション内で最初に並べ替えられます。 このプロパティは、秘密キーを作成する必要がある場合に登録中に使用されます。 最初に選択した CSP/アルゴリズム ペアを使用してキーを作成しますが、操作が失敗した場合は、次に選択したペアが試行されます。
- 同じ KeySpec パラメーターを使用してこのメソッドを再度呼び出すと、そのパラメーター値に対して以前に作成された既存のコレクションへのポインターが取得されます。
- 別の KeySpec パラメーターを指定してこのメソッドを再度呼び出すと、XCN_AT_SIGNATURE KeySpec 値に対して作成されたコレクションには影響しません。 さらに、新しいコレクションのメンバーの Selected プロパティを変更しても、前のコレクションのメンバーには影響しません。
GetCspStatuses メソッドは、KeySpec パラメーターを使用して CspStatuses プロパティと異なります。 メソッドを使用すると、ユーザーはこの値を指定できますが、 プロパティは要求オブジェクトに関連付けられている秘密キーに設定された値を使用します。
このメソッドを呼び出す前に 、IX509CertificateRequestPkcs10 オブジェクトを 初期化する必要があります。 詳細については、次のいずれかの方法を参照してください。
- InitializeDecode
- InitializeFromCertificate
- InitializeFromPrivateKey
- InitializeFromPublicKey
- InitializeFromTemplateName
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows Vista [デスクトップ アプリのみ] |
サポートされている最小のサーバー | Windows Server 2008 [デスクトップ アプリのみ] |
対象プラットフォーム | Windows |
ヘッダー | certenroll.h |
[DLL] | CertEnroll.dll |