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

InitializeFromCertificate メソッドは、既存の証明書を使用して証明書要求を初期化します。 証明書は、抽象構文表記法 1 (ASN.1) 標準で定義されているDistinguished Encoding Rules (DER) を使用してエンコードされたバイト配列に含まれています。 DER でエンコードされたバイト配列は、純粋なバイナリ シーケンスまたは Unicode でエンコードされた文字列で表されます。

構文

HRESULT InitializeFromCertificate(
  [in] X509CertificateEnrollmentContext Context,
  [in] BSTR                             strCertificate,
  [in] EncodingType                     Encoding,
  [in] X509RequestInheritOptions        InheritOptions
);

パラメーター

[in] Context

要求された証明書が、エンド ユーザー、コンピューター、またはコンピューターの代わりに動作する管理者を対象としているかどうかを指定する X509CertificateEnrollmentContext 列挙値。

[in] strCertificate

DER でエンコードされた証明書を含む BSTR 変数。

Windows 7 および Windows Server 2008 R2 以降では、エンコードされた証明書ではなく、証明書のサムプリントまたはシリアル番号を指定できます。 これにより、関数は適切なローカル ストアで一致する証明書を検索します。 以下の点に注意してください。

  • BSTR は偶数の 16 進数である必要があります。
  • 16 進数のペア間の空白は無視されます。
  • Encoding パラメーターは、XCN_CRYPT_STRING_HEXRAWに設定する必要があります。
  • Context パラメーターは、ユーザーまたはコンピューターのストア、またはその両方を検索するかどうかを決定します。
  • 秘密キーが必要な場合は、個人用ストアと要求ストアのみが検索されます。
  • 秘密キーが必要ない場合は、ルートおよび中間 CA ストアも検索されます。

[in] Encoding

DER でエンコードされた証明書に適用される Unicode エンコードの種類を指定する EncodingType 列挙値。 既定値は XCN_CRYPT_STRING_BASE64 です。

[in] InheritOptions

既存の証明書から証明書要求オブジェクトを作成する方法を指定する X509RequestInheritOptions 列挙値。 キーを継承する方法を指定するには、次のいずれかの値を選択します。 既定値は InheritDefault です

意味
InheritDefault
プロバイダーとキーの継承が指定されていません。
InheritNewDefaultKey
新しいキーを作成しますが、既定の暗号化プロバイダーを継承します。
InheritNewSimilarKey
新しいキーを作成しますが、既存の証明書の作成に使用される暗号化プロバイダーを継承します。
InheritPrivateKey
秘密キーと公開キーを継承します。
InheritPublicKey
公開キーのみを継承します。
 

ビットごとの OR 演算を使用して、キーの継承値を次の値の任意の組み合わせと組み合わせることもできます。

意味
InheritRenewalCertificateFlag
更新証明書を継承します。 このフラグを指定すると、 RenewalCertificate プロパティが 設定されます。
InheritTemplateFlag
証明書テンプレートを継承します。
InheritSubjectFlag
サブジェクト識別名を継承します。
InheritExtensionsFlag
証明書から関連する拡張機能を継承します。
InheritSubjectAltNameFlag
SubjectAlternativeName 拡張機能を継承します。
InheritValidityPeriodFlag
有効期間を継承します。
 

また、InheritNone を指定して、前の表のフラグ (キーの継承に関連しないフラグ) が既定で実装されないようにすることもできます。 InheritNone を指定したが、キーの継承に関連しないフラグも指定した場合、メソッドは E_INVALIDARGを返します。

InheritOptions パラメーターを 0 (0) に設定するか、InheritDefault を指定し、キーの継承値を指定しない場合、既定では InheritNewSimilarKey が使用されます。

InheritOptions パラメーターを 0 (0) に設定するか、InheritDefault を指定し、キーの継承に関連しない値を指定しない場合、既定では次のフラグが設定されます。

  • InheritSubjectFlag
  • InheritExtensionsFlag
  • InheritValidityPeriodFlag
  • InheritTemplateFlag (証明書にテンプレート拡張機能が含まれている場合)

戻り値

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

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

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

注釈

InitializeFromCertificate メソッドは、InheritOptions パラメーターで指定されたオプションを検証し、次のアクションを実行して新しい PKCS #10 要求オブジェクトを初期化します。

  • 更新証明書が存在し、 InheritRenewalCertificateFlag を指定した場合は、更新証明書を入力証明書から新しい要求にコピーします。
  • 既存の証明書でテンプレートが指定されていて、 InheritTemplateFlag 値を設定した場合は、テンプレートをコピーします。
  • InheritSubjectFlag を指定した場合は、サブジェクト識別名を新しい要求にコピーします。
  • InheritSubjectAltNameFlag を指定した場合は、サブジェクトの別名を新しい要求にコピーします。
  • InheritExtensionsFlag を指定した場合は、拡張機能を新しい要求にコピーします。

要件

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

こちらもご覧ください

IX509CertificateRequestPkcs10