IX509CertificateRequestPkcs10::GetCspStatuses メソッド (certenroll.h)

GetCspStatuses メソッドは、呼び出し元によって指定された秘密キーの使用目的と一致するすべてのプロバイダーとアルゴリズムのペアを含む ICspStatuses コレクションを取得します。

構文

HRESULT GetCspStatuses(
  [in]  X509KeySpec  KeySpec,
  [out] ICspStatuses **ppCspStatuses
);

パラメーター

[in] KeySpec

キーの使用目的を指定する X509KeySpec 列挙値。 次のいずれかの値を指定できます。

意味
XCN_AT_NONE
Cryptography API のみ: 次世代 (CNG) プロバイダーが選択されています。
XCN_AT_KEYEXCHANGE
暗号化アルゴリズム (キー交換を含む) を使用する CryptoAPI 暗号化サービス プロバイダー (CSP) のみが選択されます。
XCN_AT_SIGNATURE
署名アルゴリズムを持つ CryptoAPI CSP のみが選択されます。

[out] ppCspStatuses

コレクションを表す ICspStatuses インターフェイスへのポインターを受け取る変数のアドレス。

戻り値

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

関数が失敗した場合は、エラーを示す HRESULT 値を返します。 有効な値を次の表に示しますが、これ以外にもあります。 一般的なエラー コードの一覧については、「 共通 HRESULT 値」を参照してください。

リターン コード 説明
CERTSRV_E_PROPERTY_EMPTY
秘密キーが見つかりません。
OLE_E_BLANK
オブジェクトが初期化されていません。

注釈

このメソッドは、 ICspStatus オブジェクトのコレクションを取得します。 各オブジェクトは、1 つのプロバイダーとアルゴリズムのペアを表します。 IX509CertificateRequestPkcs10 要求オブジェクトを初期化するときにテンプレートを指定した場合、pKIDefaultCSPspKIDefaultKeySpec などのテンプレート属性は、最初に有効になっているペアに影響します。 各 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 オブジェクトを 初期化する必要があります。 詳細については、次のいずれかの方法を参照してください。

要件

要件
サポートされている最小のクライアント Windows Vista [デスクトップ アプリのみ]
サポートされている最小のサーバー Windows Server 2008 [デスクトップ アプリのみ]
対象プラットフォーム Windows
ヘッダー certenroll.h
[DLL] CertEnroll.dll

こちらもご覧ください

IX509CertificateRequestPkcs10