Win32 API 日本語リファレンス
ホームSecurity.Cryptography.Certificates › IX509CertificateRequest

IX509CertificateRequest

COMIDispatch (デュアル)
IDispatch を実装(デュアルインターフェース)。HSP では comobj 経由でメソッド名による遅延バインド呼び出しができます(vtableインデックス不要)。
IID728ab341-217d-11da-b2a4-000e7bbb2b09継承元IDispatch呼び出し名前(IDispatch) または vtbl自前メソッド開始 vtbl7

公式ドキュメント

IX509CertificateRequest インターフェイスは、証明書登録 (Certificate Enrollment) API によって実装される各要求オブジェクトに共通し、それらに継承されるメソッドとプロパティを識別する、抽象基底の証明書要求を表します。

メソッド 25

vtbl = vtable インデックス(0始まり)。IDispatch 実装のため HSP ではメソッド名でも呼べます(上記)。低レベルの index 呼び出し用に vtbl も掲載。0〜2 は IUnknown。

vtbl 7 HRESULT Initialize(X509CertificateEnrollmentContext Context)

ユーザーまたはコンピューターに対して要求オブジェクトを初期化します。

ContextX509CertificateEnrollmentContextin

証明書がエンドユーザー、コンピューター、またはコンピューターの代理として動作する管理者のいずれを対象とするかを指定する X509CertificateEnrollmentContext 列挙値です。次のいずれかの値を指定できます。

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

戻り値

関数が成功すると、S_OK を返します。

関数が失敗すると、エラーを示す HRESULT 値を返します。指定できる値には次の表のものが含まれますが、これらに限定されません。一般的なエラーコードの一覧については、Common HRESULT Values を参照してください。

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

解説(Remarks)

Initialize メソッドは、作成される証明書要求の種類に応じてさまざまなオブジェクトを初期化します。このメソッドを IX509CertificateRequestPkcs10 オブジェクトから呼び出すと、秘密キーオブジェクトが作成され、次のオブジェクトが初期化されます:

このメソッドを IX509CertificateRequestCmc オブジェクトから呼び出すと、上記と同様に内部 PKCS #10 要求が作成され、次のオブジェクトが初期化されます:

このメソッドを IX509CertificateRequestPkcs7 オブジェクトから呼び出すと、上記と同様に内部 PKCS #10 要求が作成されます。

このメソッドを呼び出す前に、次のプロパティを呼び出すことができます。

ICspInformations コレクションを指定する場合は、このメソッドを呼び出す前に CSPInformations プロパティを呼び出す必要があります。

vtbl 8 HRESULT Encode()

証明書要求に署名してエンコードし、キーペアが存在しない場合は作成します。

戻り値

関数が成功すると、S_OK を返します。

関数が失敗すると、エラーを示す HRESULT 値を返します。指定できる値には次の表のものが含まれますが、これらに限定されません。一般的なエラーコードの一覧については、Common HRESULT Values を参照してください。

リターンコード/値 説明
CERTSRV_E_ARCHIVED_KEY_REQUIRED
CMC 要求に対して ArchivePrivateKey プロパティが設定されていますが、キー交換証明書が見つかりませんでした。
OLE_E_BLANK
オブジェクトが初期化されていません。

解説(Remarks)

PKCS #10 要求の場合、このメソッドは次を行います:

CMC 要求の場合、このメソッドは次を行います:

vtbl 9 HRESULT ResetForEncode()

要求オブジェクトの状態を、Encode メソッドが呼び出される前の状態に復元します。

戻り値

関数が成功すると、S_OK を返します。

関数が失敗すると、エラーを示す HRESULT 値を返します。指定できる値には次の表のものが含まれますが、これらに限定されません。一般的なエラーコードの一覧については、Common HRESULT Values を参照してください。

リターンコード/値 説明
CERTSRV_E_PROPERTY_EMPTY
証明書の拡張と属性が定義されていません。
HRESULT_FROM_WIN32(ERROR_INVALID_STATE)
要求オブジェクトがエンコードされていません。
OLE_E_BLANK
オブジェクトが初期化されていません。

解説(Remarks)

このメソッドを使用すると、証明機関 (CA) による要求の拒否に応じて、証明書要求を再構成 (再エンコードおよび再署名) できます。署名と生データはクリアされます。拡張と属性は Encode メソッドが呼び出される前の値にリセットされますが、クリティカル拡張フラグはリセットされません。CMC 要求オブジェクトの場合、入れ子になった各要求もリセットされます。

このメソッドは通常、秘密キーが暗号化されて要求に含まれる CMC キーアーカイブ要求で使用されます。

vtbl 10 HRESULT GetInnerRequest(InnerRequestLevel Level, IX509CertificateRequest** ppValue)

入れ子になった要求オブジェクトを取得します。

LevelInnerRequestLevelin取得するデータのエンベロープレベルを指定する InnerRequestLevel 列挙の値です。LevelNext 値を使用して入れ子のレベルを反復処理するか、LevelInnermost 値を使用して最も深く入れ子になった要求オブジェクトを取得できます。PKCS #10 要求に対して LevelNext を指定することはできません。
ppValueIX509CertificateRequest**out入れ子になった要求を含む IX509CertificateRequest インターフェイスへのポインターを受け取る変数のアドレスです。Type プロパティを呼び出して、内部要求オブジェクトが PKCS #10 要求か CMC 要求かを判別します。次に QueryInterface を呼び出して適切なポインターを取得します。

戻り値

関数が成功すると、S_OK を返します。

関数が失敗すると、エラーを示す HRESULT 値を返します。指定できる値には次の表のものが含まれますが、これらに限定されません。一般的なエラーコードの一覧については、Common HRESULT Values を参照してください。

リターンコード/値 説明
CERTSRV_E_PROPERTY_EMPTY
PKCS #10 要求に対して LevelNext の値を指定しました。

解説(Remarks)

最上位の要求オブジェクトは、PKCS #10、PKCS #7、または CMC 要求のいずれかです。内部要求オブジェクトには次の規則が適用されます:

vtbl 11 HRESULT get_Type(X509RequestType* pValue)

要求オブジェクトの種類を指定する値を取得します。

pValueX509RequestType*out証明書要求の種類を表す X509RequestType 値を受け取るポインタである。

解説(Remarks)

このプロパティを GetInnerRequest メソッドと組み合わせて使用し、内部要求オブジェクトの種類を判別できます。

vtbl 12 HRESULT get_EnrollmentContext(X509CertificateEnrollmentContext* pValue)

証明書がコンピューター向けかユーザー向けかを指定する値を取得します。

pValueX509CertificateEnrollmentContext*outこの要求の登録コンテキストを表す X509CertificateEnrollmentContext 値を受け取るポインタである。

解説(Remarks)

PKCS #7 または CMC 要求の場合、プロパティ値は内部要求オブジェクトから取得されます。

vtbl 13 HRESULT get_Silent(VARIANT_BOOL* pValue)

証明書登録 (エンロール) の処理中に、キー関連のモーダルダイアログのいずれかを表示するかどうかを示すブール値を指定または取得します。(Get)

pValueVARIANT_BOOL*outサイレント(UI を抑制する)モードが有効かどうかを表す VARIANT_BOOL を受け取るポインタである。

解説(Remarks)

このプロパティ値は、次の処理を行うキー関連の証明書登録コントロール (Certificate Enrollment Control) のモーダルダイアログで使用されます:

このプロパティは、初期化メソッドや Encode メソッドを呼び出す前に設定できます。PKCS #10 要求の場合、キーが存在すれば、プロパティ値は関連付けられた IX509PrivateKey オブジェクトから取得され、そこに設定されます。PKCS #7 または CMC 要求の場合、プロパティ値は内部要求とすべての署名証明書で更新されます。

証明書要求が入れ子の要求を含んでいて、最上位の要求に Silent プロパティを設定すると、その値はすべての内部要求に自動的に伝播されます。ただし、各内部オブジェクトに対して手動でプロパティを設定することもできます。

vtbl 14 HRESULT put_Silent(VARIANT_BOOL Value)

証明書登録 (エンロール) の処理中に、キー関連のモーダルダイアログのいずれかを表示するかどうかを示すブール値を指定または取得します。(Put)

ValueVARIANT_BOOLinUI を表示しないサイレントモードの有効・無効を VARIANT_BOOL で指定する。

解説(Remarks)

このプロパティ値は、次の処理を行うキー関連の証明書登録コントロール (Certificate Enrollment Control) のモーダルダイアログで使用されます:

このプロパティは、初期化メソッドや Encode メソッドを呼び出す前に設定できます。PKCS #10 要求の場合、キーが存在すれば、プロパティ値は関連付けられた IX509PrivateKey オブジェクトから取得され、そこに設定されます。PKCS #7 または CMC 要求の場合、プロパティ値は内部要求とすべての署名証明書で更新されます。

証明書要求が入れ子の要求を含んでいて、最上位の要求に Silent プロパティを設定すると、その値はすべての内部要求に自動的に伝播されます。ただし、各内部オブジェクトに対して手動でプロパティを設定することもできます。

vtbl 15 HRESULT get_ParentWindow(INT* pValue)

キー関連のユーザーインターフェイスダイアログで使用されるウィンドウの ID を指定および取得します。(Get)

pValueINT*outUI 表示時の親ウィンドウハンドル(INT として扱う)を受け取るポインタである。

解説(Remarks)

このプロパティ値は、次の処理を行うキー関連の証明書登録コントロール (Certificate Enrollment Control) のモーダルダイアログで使用されます:

アプリケーションがキー関連のモーダルダイアログを使用する場合は、このプロパティを使用して、ウィンドウが他のウィンドウの前面に表示され、スレッドのブロックが解除される前に要求されたアクションが実行されるようにすることをお勧めします。

このプロパティは、初期化メソッドや Encode メソッドを呼び出す前に設定できます。証明書要求が入れ子の要求を含んでいて、最上位の要求に ParentWindow プロパティを設定すると、その値はすべての内部要求に自動的に伝播されます。ただし、各内部オブジェクトに対して手動でプロパティを設定することもできます。

PKCS #10 要求の場合、キーが存在すれば、プロパティ値は関連付けられた IX509PrivateKey オブジェクトから取得され、そこに設定されます。PKCS #7 または CMC 要求の場合、ウィンドウ ID は内部要求とすべての署名証明書で更新されます。

vtbl 16 HRESULT put_ParentWindow(INT Value)

キー関連のユーザーインターフェイスダイアログで使用されるウィンドウの ID を指定および取得します。(Put)

ValueINTinUI 表示時の親ウィンドウハンドルを INT として指定する。

解説(Remarks)

このプロパティ値は、次の処理を行うキー関連の証明書登録コントロール (Certificate Enrollment Control) のモーダルダイアログで使用されます:

アプリケーションがキー関連のモーダルダイアログを使用する場合は、このプロパティを使用して、ウィンドウが他のウィンドウの前面に表示され、スレッドのブロックが解除される前に要求されたアクションが実行されるようにすることをお勧めします。

このプロパティは、初期化メソッドや Encode メソッドを呼び出す前に設定できます。証明書要求が入れ子の要求を含んでいて、最上位の要求に ParentWindow プロパティを設定すると、その値はすべての内部要求に自動的に伝播されます。ただし、各内部オブジェクトに対して手動でプロパティを設定することもできます。

PKCS #10 要求の場合、キーが存在すれば、プロパティ値は関連付けられた IX509PrivateKey オブジェクトから取得され、そこに設定されます。PKCS #7 または CMC 要求の場合、ウィンドウ ID は内部要求とすべての署名証明書で更新されます。

vtbl 17 HRESULT get_UIContextMessage(LPWSTR* pValue)

ユーザーインターフェイスに表示するコンテキスト文字列を指定または取得します。(Get)

pValueLPWSTR*outUI に表示するコンテキストメッセージ文字列を受け取るポインタである。

解説(Remarks)

このプロパティは、初期化メソッドや Encode メソッドを呼び出す前に設定できます。PKCS #10 要求の場合、キーが存在すれば、プロパティ値は関連付けられた IX509PrivateKey オブジェクトから取得され、そこに設定されます。PKCS #7 または CMC 要求の場合、プロパティ値は内部要求とすべての署名証明書で更新されます。

コンテキスト文字列には、アクションに関する追加情報を含める必要があります。たとえば、ユーザーインターフェイスがスマートカードの PIN の入力をユーザーに指示する場合、コンテキスト文字列は、要求に署名できるようにユーザーの本人確認のために PIN が使用されることを示すことができます。

vtbl 18 HRESULT put_UIContextMessage(LPWSTR Value)

ユーザーインターフェイスに表示するコンテキスト文字列を指定または取得します。(Put)

ValueLPWSTRinUI に表示するコンテキストメッセージ文字列を指定する。

解説(Remarks)

このプロパティは、初期化メソッドや Encode メソッドを呼び出す前に設定できます。PKCS #10 要求の場合、キーが存在すれば、プロパティ値は関連付けられた IX509PrivateKey オブジェクトから取得され、そこに設定されます。PKCS #7 または CMC 要求の場合、プロパティ値は内部要求とすべての署名証明書で更新されます。

コンテキスト文字列には、アクションに関する追加情報を含める必要があります。たとえば、ユーザーインターフェイスがスマートカードの PIN の入力をユーザーに指示する場合、コンテキスト文字列は、要求に署名できるようにユーザーの本人確認のために PIN が使用されることを示すことができます。

vtbl 19 HRESULT get_SuppressDefaults(VARIANT_BOOL* pValue)

既定の拡張と属性を要求に含めるかどうかを示すブール値を指定または取得します。(Get)

pValueVARIANT_BOOL*out既定の拡張やオブジェクトの自動追加を抑制するかどうかを表す VARIANT_BOOL を受け取るポインタである。

解説(Remarks)

このプロパティを呼び出す前に、要求オブジェクトを初期化する必要があります。証明書要求に既定の拡張と属性を含めてエンコードすることを抑制するには、Encode メソッドを呼び出す前にこのプロパティを設定します。

vtbl 20 HRESULT put_SuppressDefaults(VARIANT_BOOL Value)

既定の拡張と属性を要求に含めるかどうかを示すブール値を指定または取得します。(Put)

ValueVARIANT_BOOLin既定の拡張やオブジェクトの自動追加を抑制するかどうかを VARIANT_BOOL で指定する。

解説(Remarks)

このプロパティを呼び出す前に、要求オブジェクトを初期化する必要があります。証明書要求に既定の拡張と属性を含めてエンコードすることを抑制するには、Encode メソッドを呼び出す前にこのプロパティを設定します。

vtbl 21 HRESULT get_RenewalCertificate(EncodingType Encoding, LPWSTR* pValue)

更新対象の、Distinguished Encoding Rules (DER) でエンコードされた証明書を格納するバイト配列を指定または取得します。(Get)

EncodingEncodingTypein取得する更新元証明書文字列のエンコーディング種別を指定する EncodingType 列挙値である。
pValueLPWSTR*out更新(リニューアル)対象の証明書を指定エンコーディングの文字列として受け取るポインタである。

解説(Remarks)

証明書は、Abstract Syntax Notation One (ASN.1) 標準で定義されている DER を使用してエンコードされます。エンコード処理によってバイト配列が作成されます。このバイト配列は、純粋なバイナリシーケンスか、テキストとして表示できるように Unicode でエンコードされた文字列として返されます。

このプロパティを呼び出す前に、要求オブジェクトを初期化する必要があります。このプロパティは Encode メソッドを呼び出す前に呼び出すことができます。

vtbl 22 HRESULT put_RenewalCertificate(EncodingType Encoding, LPWSTR Value)

更新対象の、Distinguished Encoding Rules (DER) でエンコードされた証明書を格納するバイト配列を指定または取得します。(Put)

EncodingEncodingTypein渡す更新元証明書文字列のエンコーディング種別を指定する EncodingType 列挙値である。
ValueLPWSTRin更新(リニューアル)対象の証明書を指定エンコーディングの文字列として渡す。

解説(Remarks)

証明書は、Abstract Syntax Notation One (ASN.1) 標準で定義されている DER を使用してエンコードされます。エンコード処理によってバイト配列が作成されます。このバイト配列は、純粋なバイナリシーケンスか、テキストとして表示できるように Unicode でエンコードされた文字列として返されます。

このプロパティを呼び出す前に、要求オブジェクトを初期化する必要があります。このプロパティは Encode メソッドを呼び出す前に呼び出すことができます。

vtbl 23 HRESULT get_ClientId(RequestClientInfoClientId* pValue)

要求を作成した実行可能ファイルを識別する値を指定および取得します。(Get)

pValueRequestClientInfoClientId*out要求元クライアントの種別を表す RequestClientInfoClientId 値を受け取るポインタである。

解説(Remarks)

このプロパティを呼び出す前に、要求オブジェクトを初期化する必要があります。このプロパティは Encode メソッドを呼び出す前に呼び出すことができます。

vtbl 24 HRESULT put_ClientId(RequestClientInfoClientId Value)

要求を作成した実行可能ファイルを識別する値を指定および取得します。(Put)

ValueRequestClientInfoClientIdin要求元クライアントの種別を指定する RequestClientInfoClientId 列挙値である。

解説(Remarks)

このプロパティを呼び出す前に、要求オブジェクトを初期化する必要があります。このプロパティは Encode メソッドを呼び出す前に呼び出すことができます。

vtbl 25 HRESULT get_CspInformations(ICspInformations** ppValue)

要求オブジェクトが使用できる暗号化プロバイダーのコレクションを指定および取得します。(Get)

ppValueICspInformations**out利用可能な暗号化サービスプロバイダー(CSP)の情報コレクション ICspInformations を受け取るポインタである。

解説(Remarks)

プロバイダーのコレクションを指定する場合は、Initialize メソッドを呼び出す前にこのプロパティを設定する必要があります。指定するコレクションには、コンピューターに現在インストールされているすべてのプロバイダーを含める必要があります。サブセットまたはスーパーセットを指定した場合、このプロパティの動作は未定義です。

コレクションを指定しない場合、Initialize メソッドは、コンピューターにインストールされているすべてのプロバイダーのコレクションをプロパティ値として設定します。

CspInformations プロパティは、要求オブジェクトにコレクションを埋めさせる処理を呼び出し側が回避できるようにするために存在します。これは、呼び出し側が 1 つのセッションで複数の要求を作成する場合に役立ちます。

vtbl 26 HRESULT put_CspInformations(ICspInformations* pValue)

要求オブジェクトが使用できる暗号化プロバイダーのコレクションを指定および取得します。(Put)

pValueICspInformations*inoptional使用する暗号化サービスプロバイダー(CSP)の情報コレクション ICspInformations を渡す。

解説(Remarks)

プロバイダーのコレクションを指定する場合は、Initialize メソッドを呼び出す前にこのプロパティを設定する必要があります。指定するコレクションには、コンピューターに現在インストールされているすべてのプロバイダーを含める必要があります。サブセットまたはスーパーセットを指定した場合、このプロパティの動作は未定義です。

コレクションを指定しない場合、Initialize メソッドは、コンピューターにインストールされているすべてのプロバイダーのコレクションをプロパティ値として設定します。

CspInformations プロパティは、要求オブジェクトにコレクションを埋めさせる処理を呼び出し側が回避できるようにするために存在します。これは、呼び出し側が 1 つのセッションで複数の要求を作成する場合に役立ちます。

vtbl 27 HRESULT get_HashAlgorithm(IObjectId** ppValue)

証明書要求の署名に使用するハッシュアルゴリズムのオブジェクト識別子 (OID) を指定および取得します。(Get)

ppValueIObjectId**out要求の署名に使用するハッシュアルゴリズムを表す IObjectId オブジェクトを受け取るポインタである。

解説(Remarks)

証明書要求が入れ子の要求を含んでいて、最上位の要求に HashAlgorithm プロパティを設定すると、その値はすべての内部要求に自動的に伝播され、以前に設定されていた可能性のある値が上書きされます。ただし、各内部オブジェクトに対して手動でプロパティを設定することもできます。

このプロパティを呼び出す前に、要求オブジェクトを初期化する必要があります。このプロパティは Encode メソッドを呼び出す前に呼び出すことができます。

vtbl 28 HRESULT put_HashAlgorithm(IObjectId* pValue)

証明書要求の署名に使用するハッシュアルゴリズムのオブジェクト識別子 (OID) を指定および取得します。(Put)

pValueIObjectId*inoptional要求の署名に使用するハッシュアルゴリズムを表す IObjectId オブジェクトを渡す。

解説(Remarks)

証明書要求が入れ子の要求を含んでいて、最上位の要求に HashAlgorithm プロパティを設定すると、その値はすべての内部要求に自動的に伝播され、以前に設定されていた可能性のある値が上書きされます。ただし、各内部オブジェクトに対して手動でプロパティを設定することもできます。

このプロパティを呼び出す前に、要求オブジェクトを初期化する必要があります。このプロパティは Encode メソッドを呼び出す前に呼び出すことができます。

vtbl 29 HRESULT get_AlternateSignatureAlgorithm(VARIANT_BOOL* pValue)

PKCS の署名アルゴリズムのオブジェクト識別子 (OID) を対象とするかどうかを示すブール値を指定および取得します。(Get)

pValueVARIANT_BOOL*out代替署名アルゴリズム(PKCS#1 v2.1 等)を使用するかどうかを表す VARIANT_BOOL を受け取るポインタである。

解説(Remarks)

独立したアルゴリズムは、ハッシュアルゴリズムと署名アルゴリズムそれぞれに対する個別の オブジェクト識別子 (OID) で表されます。例として次の値があります。

独立アルゴリズムの OID 説明
XCN_OID_NIST_sha256

(2.16.840.1.101.3.4.2.1)

National Institute of Standards and Technologies (NIST) の 256 ビット SHA ハッシュアルゴリズム。
XCN_OID_OIWSEC_rsaSign

(1.3.14.3.2.11)

NIST OSE Implementer Workshop Security (OIWSEC) の RSA 署名アルゴリズム。

結合アルゴリズムは、ハッシュアルゴリズムと署名アルゴリズムの両方を識別する単一の OID で表されます。例として次の値があります。

結合アルゴリズムの OID 説明
XCN_OID_RSA_MD2RSA

(1.2.840.113549.1.1.2)

RSA Laboratories の RSA 暗号化アルゴリズムと結合された MD2 ハッシュアルゴリズム。
XCN_OID_OIWSEC_md5RSA

(1.3.14.3.2.3)

RSA 暗号化アルゴリズムと結合された OIWSEC MD5 ハッシュアルゴリズム。

証明書要求が入れ子の要求を含んでいて、最上位の要求に AlternateSignatureAlgorithm プロパティを設定すると、その値はすべての内部要求に自動的に伝播されます。ただし、各内部オブジェクトに対して手動でプロパティを設定することもできます。

PKCS #7 または CMC 要求の場合、このプロパティは内部 PKCS #10 要求のプライマリ署名に対するブール値を取得します。入力時には、すべての署名者証明書が指定されたプロパティ値で更新されます。

RSA 公開キーアルゴリズムを使用する PKCS #10 要求または証明書署名の場合、プロパティ値が False (結合 OID を示す) はバージョン 1.5 署名を意味し、True (独立 OID) はバージョン 2.1 署名を意味します。

このプロパティを呼び出す前に、要求オブジェクトを初期化する必要があります。このプロパティは Encode メソッドを呼び出す前に呼び出すことができます。

vtbl 30 HRESULT put_AlternateSignatureAlgorithm(VARIANT_BOOL Value)

PKCS の署名アルゴリズムのオブジェクト識別子 (OID) を対象とするかどうかを示すブール値を指定および取得します。(Put)

ValueVARIANT_BOOLin代替署名アルゴリズム(PKCS#1 v2.1 等)を使用するかどうかを VARIANT_BOOL で指定する。

解説(Remarks)

独立したアルゴリズムは、ハッシュアルゴリズムと署名アルゴリズムそれぞれに対する個別の オブジェクト識別子 (OID) で表されます。例として次の値があります。

独立アルゴリズムの OID 説明
XCN_OID_NIST_sha256

(2.16.840.1.101.3.4.2.1)

National Institute of Standards and Technologies (NIST) の 256 ビット SHA ハッシュアルゴリズム。
XCN_OID_OIWSEC_rsaSign

(1.3.14.3.2.11)

NIST OSE Implementer Workshop Security (OIWSEC) の RSA 署名アルゴリズム。

結合アルゴリズムは、ハッシュアルゴリズムと署名アルゴリズムの両方を識別する単一の OID で表されます。例として次の値があります。

結合アルゴリズムの OID 説明
XCN_OID_RSA_MD2RSA

(1.2.840.113549.1.1.2)

RSA Laboratories の RSA 暗号化アルゴリズムと結合された MD2 ハッシュアルゴリズム。
XCN_OID_OIWSEC_md5RSA

(1.3.14.3.2.3)

RSA 暗号化アルゴリズムと結合された OIWSEC MD5 ハッシュアルゴリズム。

証明書要求が入れ子の要求を含んでいて、最上位の要求に AlternateSignatureAlgorithm プロパティを設定すると、その値はすべての内部要求に自動的に伝播されます。ただし、各内部オブジェクトに対して手動でプロパティを設定することもできます。

PKCS #7 または CMC 要求の場合、このプロパティは内部 PKCS #10 要求のプライマリ署名に対するブール値を取得します。入力時には、すべての署名者証明書が指定されたプロパティ値で更新されます。

RSA 公開キーアルゴリズムを使用する PKCS #10 要求または証明書署名の場合、プロパティ値が False (結合 OID を示す) はバージョン 1.5 署名を意味し、True (独立 OID) はバージョン 2.1 署名を意味します。

このプロパティを呼び出す前に、要求オブジェクトを初期化する必要があります。このプロパティは Encode メソッドを呼び出す前に呼び出すことができます。

vtbl 31 HRESULT get_RawData(EncodingType Encoding, LPWSTR* pValue)

署名済みで、Distinguished Encoding Rules (DER) でエンコードされた証明書要求を格納するバイト配列を取得します。

EncodingEncodingTypein取得する要求の生データのエンコーディング種別を指定する EncodingType 列挙値である。
pValueLPWSTR*out証明書要求の生(エンコード済み)データを指定エンコーディングの文字列として受け取るポインタである。

解説(Remarks)

Encode メソッドを呼び出して、Abstract Syntax Notation One (ASN.1) 標準で定義されている DER を使用して証明書要求をエンコードします。エンコード処理によってバイト配列が作成され、RawData プロパティはそれを文字列として返します。この文字列は、純粋なバイナリシーケンスか、テキストとして表示できるように Unicode でエンコードされたものです。

出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)

HSP用 COM定義

#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"

出力引数:
#define global IID_IX509CertificateRequest "{728AB341-217D-11DA-B2A4-000E7BBB2B09}"
#usecom global IX509CertificateRequest IID_IX509CertificateRequest "{}"
#comfunc global IX509CertificateRequest_Initialize                       7 int
#comfunc global IX509CertificateRequest_Encode                           8
#comfunc global IX509CertificateRequest_ResetForEncode                   9
#comfunc global IX509CertificateRequest_GetInnerRequest                  10 int,sptr
#comfunc global IX509CertificateRequest_get_Type                         11 var
#comfunc global IX509CertificateRequest_get_EnrollmentContext            12 var
#comfunc global IX509CertificateRequest_get_Silent                       13 var
#comfunc global IX509CertificateRequest_put_Silent                       14 int
#comfunc global IX509CertificateRequest_get_ParentWindow                 15 var
#comfunc global IX509CertificateRequest_put_ParentWindow                 16 int
#comfunc global IX509CertificateRequest_get_UIContextMessage             17 var
#comfunc global IX509CertificateRequest_put_UIContextMessage             18 wstr
#comfunc global IX509CertificateRequest_get_SuppressDefaults             19 var
#comfunc global IX509CertificateRequest_put_SuppressDefaults             20 int
#comfunc global IX509CertificateRequest_get_RenewalCertificate           21 int,var
#comfunc global IX509CertificateRequest_put_RenewalCertificate           22 int,wstr
#comfunc global IX509CertificateRequest_get_ClientId                     23 var
#comfunc global IX509CertificateRequest_put_ClientId                     24 int
#comfunc global IX509CertificateRequest_get_CspInformations              25 sptr
#comfunc global IX509CertificateRequest_put_CspInformations              26 sptr
#comfunc global IX509CertificateRequest_get_HashAlgorithm                27 sptr
#comfunc global IX509CertificateRequest_put_HashAlgorithm                28 sptr
#comfunc global IX509CertificateRequest_get_AlternateSignatureAlgorithm  29 var
#comfunc global IX509CertificateRequest_put_AlternateSignatureAlgorithm  30 int
#comfunc global IX509CertificateRequest_get_RawData                      31 int,var
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。
; ※IDispatch 実装。HSP では comobj 経由でメソッド名による呼び出しも可能(vtbl 不要)。