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

InitializeFromPrivateKey メソッドは、IX509PrivateKey オブジェクトと、必要に応じてテンプレートを使用して証明書要求を初期化します。 このメソッドは Web 対応です。

構文

HRESULT InitializeFromPrivateKey(
  [in]           X509CertificateEnrollmentContext Context,
  [in]           IX509PrivateKey                  *pPrivateKey,
  [in, optional] BSTR                             strTemplateName
);

パラメーター

[in] Context

要求された証明書がエンド ユーザー、コンピューター、またはコンピューターの代わりに動作する管理者を対象としているかどうかを示す X509CertificateEnrollmentContext 列挙値。 これには、次のいずれかの値を指定できます。 ただし、秘密キーMachineContext プロパティが設定されている場合は、ContextMachine 列挙値を指定する必要があります。

意味
ContextUser
エンド ユーザーに対して証明書が要求されています。
ContextMachine
コンピューターに対して証明書が要求されています。
ContextAdministratorForceMachine
証明書は、コンピューターの代わりに動作する管理者によって要求されています。

[in] pPrivateKey

秘密キーを表す IX509PrivateKey インターフェイスへのポインター。

[in, optional] strTemplateName

Active Directory またはドット 10 進オブジェクト識別子に表示されるテンプレートの共通名 (CN) を含む BSTR 変数。 これは省略可能なパラメーターです。

戻り値

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

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

リターン コード 説明
HRESULT_FROM_WIN32(ERROR_ALREADY_INITIALIZED)
証明書要求オブジェクトは既に初期化されています。

注釈

テンプレートを指定すると、 InitializeFromPrivateKey メソッドは次のアクションを実行します。

  • テンプレートで指定された拡張機能を IX509Extensions コレクションに追加します
  • IObjectIds コレクションを作成し、既定のXCN_OID_KEY_USAGEとXCN_OID_BASIC_CONSTRAINTS2オブジェクト識別子を設定します。 テンプレートが、これらの OID が重要ではないことを示している場合は、コレクションから削除されます。 テンプレートによってクリティカルとマークされた OID が追加されます。
  • テンプレートが対称アルゴリズムをサポートしている場合 は、SmimeCapabilities プロパティを設定します。
  • テンプレートに個別署名アルゴリズム OID が必要な場合 は、AlternateSignatureAlgorithm プロパティを設定します。
  • IX509SignatureInformation オブジェクトを作成します。
  • テンプレートでアルゴリズムが指定され、 IX509SignatureInformation オブジェクトに設定されている場合は、ハッシュ アルゴリズム OID を作成します。
  • 非対称暗号化アルゴリズム OID が存在する場合は、テンプレートから取得し、 IX509SignatureInformation オブジェクトに設定します。
  • テンプレート設定から IX509PrivateKey プロパティの多くを設定します。

テンプレートを指定するかどうかにかかわらず、 CSPInformations プロパティが指定されていない場合、このメソッドはコンピューターにインストールされているプロバイダーから ICspInformations コレクションを作成します。

この時点では秘密キーは作成されません。 メソッドに渡された IX509PrivateKey オブジェクトが既存のキーを表していない場合は、 Encode メソッドが呼び出されたときにキーが作成されます。 テンプレートが指定されておらず、IX509PrivateKeyProviderName プロパティが設定されていない場合、既定のプロバイダーを使用してキーが作成されます。 秘密キーが存在する場合は、 PrivateKey プロパティに設定されます。

要件

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

こちらもご覧ください

IX509CertificateRequestPkcs10