次の方法で共有


IX509CertificateRequestPkcs7::InitializeDecode メソッド (certenroll.h)

InitializeDecode メソッドは、既存の署名済みまたは署名されていない PKCS #7 要求オブジェクトをデコードし、それを使用して新しい PKCS #7 オブジェクトを初期化します。 既存の要求は、抽象構文表記法 1 (ASN.1) 標準で定義されているDistinguished Encoding Rules (DER) を使用してエンコードされたバイト配列に含まれています。 バイト配列は、純粋なバイナリ シーケンスまたは Unicode でエンコードされた文字列で表されます。

構文

HRESULT InitializeDecode(
  [in] BSTR         strEncodedData,
  [in] EncodingType Encoding
);

パラメーター

[in] strEncodedData

DER でエンコードされた要求を含む BSTR 変数。

[in] Encoding

DER でエンコードされた要求を含む入力文字列に適用される Unicode エンコードの種類を指定する EncodingType 列挙値。 既定値は XCN_CRYPT_STRING_BASE64 です。

戻り値

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

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

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

注釈

InitializeDecode メソッド:

  • 入力時に指定された PKCS #7 要求をデコードします。
  • デコードされた オブジェクトを使用して、次のコレクションを含む内部 PKCS #10 要求を作成します。
  • デコードされた拡張機能を IX509Extensions コレクションに 追加します。
  • デコードされた属性を ICryptAttributes コレクションに追加します
  • ClientId プロパティを設定します。
  • TemplateObjectId プロパティを設定します。
  • 元の PKCS #7 要求の署名を使用して、新しい ISignerCertificate オブジェクトを 作成します。
  • ISignerCertificate オブジェクトから IX509SignatureInformation オブジェクトを取得します。
  • 元の署名アルゴリズムとハッシュ アルゴリズムを使用して、新しい IX509SignatureInformation オブジェクトを初期化します。
  • PKCS #10 要求を内部要求オブジェクトとして設定します。

既定では、 InitializeDecode メソッドは、デコードする証明書要求がエンド ユーザー向けであることを前提としています。 Windows 8とWindows Server 2012以降では、この既定の動作を変更できます。 IX509CertificateRequestPkcs7 インターフェイスのインスタンスを作成した後、Encoding パラメーターを XCN_CRYPT_STRING_BINARY に設定し、strEncodedData パラメーターを次のいずれかの値に設定して InitializeDecode を呼び出します。

説明
L"ContextMachine" エンコードされた証明書要求は、コンピューター用です。
L"ContextUser" エンコードされた証明書要求は、エンド ユーザー向けです。
L"ContextAdministratorForceMachine" エンコードされた証明書は、コンピューターの代わりに動作する管理者によって要求されています。
 

次に、strEncodedData 引数にエンコードされた証明書を設定して InitializeDecode メソッドをもう一度呼び出します。

要件

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

こちらもご覧ください

IX509CertificateRequestPkcs7