IX509CertificateRequest
COMIDispatch (デュアル)comobj 経由でメソッド名による遅延バインド呼び出しができます(vtableインデックス不要)。公式ドキュメント
IX509CertificateRequest インターフェイスは、証明書登録 (Certificate Enrollment) API によって実装される各要求オブジェクトに共通し、それらに継承されるメソッドとプロパティを識別する、抽象基底の証明書要求を表します。
メソッド 25
vtbl = vtable インデックス(0始まり)。IDispatch 実装のため HSP ではメソッド名でも呼べます(上記)。低レベルの index 呼び出し用に vtbl も掲載。0〜2 は IUnknown。
ユーザーまたはコンピューターに対して要求オブジェクトを初期化します。
| Context | X509CertificateEnrollmentContext | in | 証明書がエンドユーザー、コンピューター、またはコンピューターの代理として動作する管理者のいずれを対象とするかを指定する X509CertificateEnrollmentContext 列挙値です。次のいずれかの値を指定できます。
|
戻り値
関数が成功すると、S_OK を返します。
関数が失敗すると、エラーを示す HRESULT 値を返します。指定できる値には次の表のものが含まれますが、これらに限定されません。一般的なエラーコードの一覧については、Common HRESULT Values を参照してください。
| リターンコード | 説明 |
|---|---|
|
オブジェクトは既に初期化されています。 |
解説(Remarks)
Initialize メソッドは、作成される証明書要求の種類に応じてさまざまなオブジェクトを初期化します。このメソッドを IX509CertificateRequestPkcs10 オブジェクトから呼び出すと、秘密キーオブジェクトが作成され、次のオブジェクトが初期化されます:
- 空の ICryptAttributes コレクション。
- 空の IX509Extensions コレクション。
- 既定のクリティカル拡張オブジェクト識別子である XCN_OID_KEY_USAGE と XCN_OID_BASIC_CONSTRAINTS2 を含む IObjectIds コレクション。このコレクションは CriticalExtensions プロパティを呼び出して取得できます。
- SuppressOids プロパティ用の、空の IObjectIds コレクション。
- CSPInformations プロパティで指定した値、またはコンピューターにインストールされているすべてのプロバイダーのコレクションを含む ICspInformations オブジェクト。このコレクションは秘密キーの作成に使用されます。
このメソッドを IX509CertificateRequestCmc オブジェクトから呼び出すと、上記と同様に内部 PKCS #10 要求が作成され、次のオブジェクトが初期化されます:
- 空の ICryptAttributes コレクション。
- 空の IX509NameValuePairs コレクション。
- 空の IX509Extensions コレクション。
- 既定のクリティカル拡張オブジェクト識別子である XCN_OID_KEY_USAGE と XCN_OID_BASIC_CONSTRAINTS2 を含む IObjectIds コレクション。このコレクションは CriticalExtensions プロパティを呼び出して取得できます。
- SuppressOids プロパティ用の、空の IObjectIds コレクション。
- 空の ISignerCertificates コレクション。
このメソッドを IX509CertificateRequestPkcs7 オブジェクトから呼び出すと、上記と同様に内部 PKCS #10 要求が作成されます。
このメソッドを呼び出す前に、次のプロパティを呼び出すことができます。
ICspInformations コレクションを指定する場合は、このメソッドを呼び出す前に CSPInformations プロパティを呼び出す必要があります。
証明書要求に署名してエンコードし、キーペアが存在しない場合は作成します。
戻り値
関数が成功すると、S_OK を返します。
関数が失敗すると、エラーを示す HRESULT 値を返します。指定できる値には次の表のものが含まれますが、これらに限定されません。一般的なエラーコードの一覧については、Common HRESULT Values を参照してください。
| リターンコード/値 | 説明 |
|---|---|
| CMC 要求に対して ArchivePrivateKey プロパティが設定されていますが、キー交換証明書が見つかりませんでした。 | |
| オブジェクトが初期化されていません。 |
解説(Remarks)
PKCS #10 要求の場合、このメソッドは次を行います:
- 秘密キーを更新するか、必要に応じてキーを作成します。
- 秘密キーから公開キーを生成します。
- 拡張を更新し、既定の拡張を追加するとともに、抑制対象 OID コレクションおよびクリティカル拡張 OID コレクションを考慮します。
- 属性を更新し、既定の属性を追加するとともに、抑制対象 OID コレクションを考慮します。
- 更新された未署名の要求を組み立ててエンコードします。
- 署名を作成してエンコードします。
- 署名と未署名の要求をエンコードします。
CMC 要求の場合、このメソッドは次を行います:
- すべての内部要求オブジェクトをエンコードします。
- 外部要求オブジェクトの拡張を更新し、既定の拡張を追加するとともに、抑制対象 OID コレクションおよびクリティカル拡張 OID コレクションを考慮します。
- 外部要求オブジェクトの属性を更新し、既定の属性を追加するとともに、抑制対象 OID コレクションを考慮します。
- 名前と値のペアのコレクションを更新します。
- エンコードされた内部要求と更新された外部要求から成る CMC コンテンツをエンコードします。
- 各署名証明書に対して署名を作成してエンコードします。
- プライマリ署名を作成してエンコードします。
- エンコードされた CMC コンテンツ (内部要求と更新された外部要求を含む) と、エンコードされた署名を組み立てます。
- 組み立てたコンテンツを PKCS #7 メッセージにエンコードします。
要求オブジェクトの状態を、Encode メソッドが呼び出される前の状態に復元します。
戻り値
関数が成功すると、S_OK を返します。
関数が失敗すると、エラーを示す HRESULT 値を返します。指定できる値には次の表のものが含まれますが、これらに限定されません。一般的なエラーコードの一覧については、Common HRESULT Values を参照してください。
| リターンコード/値 | 説明 |
|---|---|
| 証明書の拡張と属性が定義されていません。 | |
|
要求オブジェクトがエンコードされていません。 |
| オブジェクトが初期化されていません。 |
解説(Remarks)
このメソッドを使用すると、証明機関 (CA) による要求の拒否に応じて、証明書要求を再構成 (再エンコードおよび再署名) できます。署名と生データはクリアされます。拡張と属性は Encode メソッドが呼び出される前の値にリセットされますが、クリティカル拡張フラグはリセットされません。CMC 要求オブジェクトの場合、入れ子になった各要求もリセットされます。
このメソッドは通常、秘密キーが暗号化されて要求に含まれる CMC キーアーカイブ要求で使用されます。
入れ子になった要求オブジェクトを取得します。
| Level | InnerRequestLevel | in | 取得するデータのエンベロープレベルを指定する InnerRequestLevel 列挙の値です。LevelNext 値を使用して入れ子のレベルを反復処理するか、LevelInnermost 値を使用して最も深く入れ子になった要求オブジェクトを取得できます。PKCS #10 要求に対して LevelNext を指定することはできません。 |
| ppValue | IX509CertificateRequest** | out | 入れ子になった要求を含む IX509CertificateRequest インターフェイスへのポインターを受け取る変数のアドレスです。Type プロパティを呼び出して、内部要求オブジェクトが PKCS #10 要求か CMC 要求かを判別します。次に QueryInterface を呼び出して適切なポインターを取得します。 |
戻り値
関数が成功すると、S_OK を返します。
関数が失敗すると、エラーを示す HRESULT 値を返します。指定できる値には次の表のものが含まれますが、これらに限定されません。一般的なエラーコードの一覧については、Common HRESULT Values を参照してください。
| リターンコード/値 | 説明 |
|---|---|
| PKCS #10 要求に対して LevelNext の値を指定しました。 |
解説(Remarks)
最上位の要求オブジェクトは、PKCS #10、PKCS #7、または CMC 要求のいずれかです。内部要求オブジェクトには次の規則が適用されます:
- PKCS #10 要求は、内部要求オブジェクトを含むことができません。
- PKCS #7 要求は、PKCS #10 の内部要求オブジェクトのみを含むことができます。
- CMC 要求は、CMC または PKCS #10 の内部要求オブジェクトを含むことができます。内部 CMC 要求を含む CMC 要求では、最終的な内部 PKCS #10 要求に到達するまでに存在できる入れ子レベルの数に理論上の制限はありません。つまり、最上位の CMC 要求は内部 CMC 要求を含むことができ、その内部 CMC 要求もさらに内部 CMC 要求を含む、というように続きます。
要求オブジェクトの種類を指定する値を取得します。
| pValue | X509RequestType* | out | 証明書要求の種類を表す X509RequestType 値を受け取るポインタである。 |
解説(Remarks)
このプロパティを GetInnerRequest メソッドと組み合わせて使用し、内部要求オブジェクトの種類を判別できます。
証明書がコンピューター向けかユーザー向けかを指定する値を取得します。
| pValue | X509CertificateEnrollmentContext* | out | この要求の登録コンテキストを表す X509CertificateEnrollmentContext 値を受け取るポインタである。 |
解説(Remarks)
PKCS #7 または CMC 要求の場合、プロパティ値は内部要求オブジェクトから取得されます。
証明書登録 (エンロール) の処理中に、キー関連のモーダルダイアログのいずれかを表示するかどうかを示すブール値を指定または取得します。(Get)
| pValue | VARIANT_BOOL* | out | サイレント(UI を抑制する)モードが有効かどうかを表す VARIANT_BOOL を受け取るポインタである。 |
解説(Remarks)
このプロパティ値は、次の処理を行うキー関連の証明書登録コントロール (Certificate Enrollment Control) のモーダルダイアログで使用されます:
- スマートカードの挿入をユーザーに指示する
- スマートカードの PIN 番号を要求する
- 新しいキーの保護レベルを要求する
- キーにアクセスする前にユーザーのパスワードを要求する
このプロパティは、初期化メソッドや Encode メソッドを呼び出す前に設定できます。PKCS #10 要求の場合、キーが存在すれば、プロパティ値は関連付けられた IX509PrivateKey オブジェクトから取得され、そこに設定されます。PKCS #7 または CMC 要求の場合、プロパティ値は内部要求とすべての署名証明書で更新されます。
証明書要求が入れ子の要求を含んでいて、最上位の要求に Silent プロパティを設定すると、その値はすべての内部要求に自動的に伝播されます。ただし、各内部オブジェクトに対して手動でプロパティを設定することもできます。
証明書登録 (エンロール) の処理中に、キー関連のモーダルダイアログのいずれかを表示するかどうかを示すブール値を指定または取得します。(Put)
| Value | VARIANT_BOOL | in | UI を表示しないサイレントモードの有効・無効を VARIANT_BOOL で指定する。 |
解説(Remarks)
このプロパティ値は、次の処理を行うキー関連の証明書登録コントロール (Certificate Enrollment Control) のモーダルダイアログで使用されます:
- スマートカードの挿入をユーザーに指示する
- スマートカードの PIN 番号を要求する
- 新しいキーの保護レベルを要求する
- キーにアクセスする前にユーザーのパスワードを要求する
このプロパティは、初期化メソッドや Encode メソッドを呼び出す前に設定できます。PKCS #10 要求の場合、キーが存在すれば、プロパティ値は関連付けられた IX509PrivateKey オブジェクトから取得され、そこに設定されます。PKCS #7 または CMC 要求の場合、プロパティ値は内部要求とすべての署名証明書で更新されます。
証明書要求が入れ子の要求を含んでいて、最上位の要求に Silent プロパティを設定すると、その値はすべての内部要求に自動的に伝播されます。ただし、各内部オブジェクトに対して手動でプロパティを設定することもできます。
キー関連のユーザーインターフェイスダイアログで使用されるウィンドウの ID を指定および取得します。(Get)
| pValue | INT* | out | UI 表示時の親ウィンドウハンドル(INT として扱う)を受け取るポインタである。 |
解説(Remarks)
このプロパティ値は、次の処理を行うキー関連の証明書登録コントロール (Certificate Enrollment Control) のモーダルダイアログで使用されます:
- スマートカードの挿入をユーザーに指示する
- スマートカードの PIN 番号を要求する
- 新しいキーの保護レベルを要求する
- キーにアクセスする前にユーザーのパスワードを要求する
アプリケーションがキー関連のモーダルダイアログを使用する場合は、このプロパティを使用して、ウィンドウが他のウィンドウの前面に表示され、スレッドのブロックが解除される前に要求されたアクションが実行されるようにすることをお勧めします。
このプロパティは、初期化メソッドや Encode メソッドを呼び出す前に設定できます。証明書要求が入れ子の要求を含んでいて、最上位の要求に ParentWindow プロパティを設定すると、その値はすべての内部要求に自動的に伝播されます。ただし、各内部オブジェクトに対して手動でプロパティを設定することもできます。
PKCS #10 要求の場合、キーが存在すれば、プロパティ値は関連付けられた IX509PrivateKey オブジェクトから取得され、そこに設定されます。PKCS #7 または CMC 要求の場合、ウィンドウ ID は内部要求とすべての署名証明書で更新されます。
キー関連のユーザーインターフェイスダイアログで使用されるウィンドウの ID を指定および取得します。(Put)
| Value | INT | in | UI 表示時の親ウィンドウハンドルを INT として指定する。 |
解説(Remarks)
このプロパティ値は、次の処理を行うキー関連の証明書登録コントロール (Certificate Enrollment Control) のモーダルダイアログで使用されます:
- スマートカードの挿入をユーザーに指示する
- スマートカードの PIN 番号を要求する
- 新しいキーの保護レベルを要求する
- キーにアクセスする前にユーザーのパスワードを要求する
アプリケーションがキー関連のモーダルダイアログを使用する場合は、このプロパティを使用して、ウィンドウが他のウィンドウの前面に表示され、スレッドのブロックが解除される前に要求されたアクションが実行されるようにすることをお勧めします。
このプロパティは、初期化メソッドや Encode メソッドを呼び出す前に設定できます。証明書要求が入れ子の要求を含んでいて、最上位の要求に ParentWindow プロパティを設定すると、その値はすべての内部要求に自動的に伝播されます。ただし、各内部オブジェクトに対して手動でプロパティを設定することもできます。
PKCS #10 要求の場合、キーが存在すれば、プロパティ値は関連付けられた IX509PrivateKey オブジェクトから取得され、そこに設定されます。PKCS #7 または CMC 要求の場合、ウィンドウ ID は内部要求とすべての署名証明書で更新されます。
ユーザーインターフェイスに表示するコンテキスト文字列を指定または取得します。(Get)
| pValue | LPWSTR* | out | UI に表示するコンテキストメッセージ文字列を受け取るポインタである。 |
解説(Remarks)
このプロパティは、初期化メソッドや Encode メソッドを呼び出す前に設定できます。PKCS #10 要求の場合、キーが存在すれば、プロパティ値は関連付けられた IX509PrivateKey オブジェクトから取得され、そこに設定されます。PKCS #7 または CMC 要求の場合、プロパティ値は内部要求とすべての署名証明書で更新されます。
コンテキスト文字列には、アクションに関する追加情報を含める必要があります。たとえば、ユーザーインターフェイスがスマートカードの PIN の入力をユーザーに指示する場合、コンテキスト文字列は、要求に署名できるようにユーザーの本人確認のために PIN が使用されることを示すことができます。
ユーザーインターフェイスに表示するコンテキスト文字列を指定または取得します。(Put)
| Value | LPWSTR | in | UI に表示するコンテキストメッセージ文字列を指定する。 |
解説(Remarks)
このプロパティは、初期化メソッドや Encode メソッドを呼び出す前に設定できます。PKCS #10 要求の場合、キーが存在すれば、プロパティ値は関連付けられた IX509PrivateKey オブジェクトから取得され、そこに設定されます。PKCS #7 または CMC 要求の場合、プロパティ値は内部要求とすべての署名証明書で更新されます。
コンテキスト文字列には、アクションに関する追加情報を含める必要があります。たとえば、ユーザーインターフェイスがスマートカードの PIN の入力をユーザーに指示する場合、コンテキスト文字列は、要求に署名できるようにユーザーの本人確認のために PIN が使用されることを示すことができます。
既定の拡張と属性を要求に含めるかどうかを示すブール値を指定または取得します。(Get)
| pValue | VARIANT_BOOL* | out | 既定の拡張やオブジェクトの自動追加を抑制するかどうかを表す VARIANT_BOOL を受け取るポインタである。 |
解説(Remarks)
このプロパティを呼び出す前に、要求オブジェクトを初期化する必要があります。証明書要求に既定の拡張と属性を含めてエンコードすることを抑制するには、Encode メソッドを呼び出す前にこのプロパティを設定します。
既定の拡張と属性を要求に含めるかどうかを示すブール値を指定または取得します。(Put)
| Value | VARIANT_BOOL | in | 既定の拡張やオブジェクトの自動追加を抑制するかどうかを VARIANT_BOOL で指定する。 |
解説(Remarks)
このプロパティを呼び出す前に、要求オブジェクトを初期化する必要があります。証明書要求に既定の拡張と属性を含めてエンコードすることを抑制するには、Encode メソッドを呼び出す前にこのプロパティを設定します。
更新対象の、Distinguished Encoding Rules (DER) でエンコードされた証明書を格納するバイト配列を指定または取得します。(Get)
| Encoding | EncodingType | in | 取得する更新元証明書文字列のエンコーディング種別を指定する EncodingType 列挙値である。 |
| pValue | LPWSTR* | out | 更新(リニューアル)対象の証明書を指定エンコーディングの文字列として受け取るポインタである。 |
解説(Remarks)
証明書は、Abstract Syntax Notation One (ASN.1) 標準で定義されている DER を使用してエンコードされます。エンコード処理によってバイト配列が作成されます。このバイト配列は、純粋なバイナリシーケンスか、テキストとして表示できるように Unicode でエンコードされた文字列として返されます。
このプロパティを呼び出す前に、要求オブジェクトを初期化する必要があります。このプロパティは Encode メソッドを呼び出す前に呼び出すことができます。
更新対象の、Distinguished Encoding Rules (DER) でエンコードされた証明書を格納するバイト配列を指定または取得します。(Put)
| Encoding | EncodingType | in | 渡す更新元証明書文字列のエンコーディング種別を指定する EncodingType 列挙値である。 |
| Value | LPWSTR | in | 更新(リニューアル)対象の証明書を指定エンコーディングの文字列として渡す。 |
解説(Remarks)
証明書は、Abstract Syntax Notation One (ASN.1) 標準で定義されている DER を使用してエンコードされます。エンコード処理によってバイト配列が作成されます。このバイト配列は、純粋なバイナリシーケンスか、テキストとして表示できるように Unicode でエンコードされた文字列として返されます。
このプロパティを呼び出す前に、要求オブジェクトを初期化する必要があります。このプロパティは Encode メソッドを呼び出す前に呼び出すことができます。
要求を作成した実行可能ファイルを識別する値を指定および取得します。(Get)
| pValue | RequestClientInfoClientId* | out | 要求元クライアントの種別を表す RequestClientInfoClientId 値を受け取るポインタである。 |
解説(Remarks)
このプロパティを呼び出す前に、要求オブジェクトを初期化する必要があります。このプロパティは Encode メソッドを呼び出す前に呼び出すことができます。
要求を作成した実行可能ファイルを識別する値を指定および取得します。(Put)
| Value | RequestClientInfoClientId | in | 要求元クライアントの種別を指定する RequestClientInfoClientId 列挙値である。 |
解説(Remarks)
このプロパティを呼び出す前に、要求オブジェクトを初期化する必要があります。このプロパティは Encode メソッドを呼び出す前に呼び出すことができます。
要求オブジェクトが使用できる暗号化プロバイダーのコレクションを指定および取得します。(Get)
| ppValue | ICspInformations** | out | 利用可能な暗号化サービスプロバイダー(CSP)の情報コレクション ICspInformations を受け取るポインタである。 |
解説(Remarks)
プロバイダーのコレクションを指定する場合は、Initialize メソッドを呼び出す前にこのプロパティを設定する必要があります。指定するコレクションには、コンピューターに現在インストールされているすべてのプロバイダーを含める必要があります。サブセットまたはスーパーセットを指定した場合、このプロパティの動作は未定義です。
コレクションを指定しない場合、Initialize メソッドは、コンピューターにインストールされているすべてのプロバイダーのコレクションをプロパティ値として設定します。
CspInformations プロパティは、要求オブジェクトにコレクションを埋めさせる処理を呼び出し側が回避できるようにするために存在します。これは、呼び出し側が 1 つのセッションで複数の要求を作成する場合に役立ちます。
要求オブジェクトが使用できる暗号化プロバイダーのコレクションを指定および取得します。(Put)
| pValue | ICspInformations* | inoptional | 使用する暗号化サービスプロバイダー(CSP)の情報コレクション ICspInformations を渡す。 |
解説(Remarks)
プロバイダーのコレクションを指定する場合は、Initialize メソッドを呼び出す前にこのプロパティを設定する必要があります。指定するコレクションには、コンピューターに現在インストールされているすべてのプロバイダーを含める必要があります。サブセットまたはスーパーセットを指定した場合、このプロパティの動作は未定義です。
コレクションを指定しない場合、Initialize メソッドは、コンピューターにインストールされているすべてのプロバイダーのコレクションをプロパティ値として設定します。
CspInformations プロパティは、要求オブジェクトにコレクションを埋めさせる処理を呼び出し側が回避できるようにするために存在します。これは、呼び出し側が 1 つのセッションで複数の要求を作成する場合に役立ちます。
証明書要求の署名に使用するハッシュアルゴリズムのオブジェクト識別子 (OID) を指定および取得します。(Get)
| ppValue | IObjectId** | out | 要求の署名に使用するハッシュアルゴリズムを表す IObjectId オブジェクトを受け取るポインタである。 |
解説(Remarks)
証明書要求が入れ子の要求を含んでいて、最上位の要求に HashAlgorithm プロパティを設定すると、その値はすべての内部要求に自動的に伝播され、以前に設定されていた可能性のある値が上書きされます。ただし、各内部オブジェクトに対して手動でプロパティを設定することもできます。
このプロパティを呼び出す前に、要求オブジェクトを初期化する必要があります。このプロパティは Encode メソッドを呼び出す前に呼び出すことができます。
証明書要求の署名に使用するハッシュアルゴリズムのオブジェクト識別子 (OID) を指定および取得します。(Put)
| pValue | IObjectId* | inoptional | 要求の署名に使用するハッシュアルゴリズムを表す IObjectId オブジェクトを渡す。 |
解説(Remarks)
証明書要求が入れ子の要求を含んでいて、最上位の要求に HashAlgorithm プロパティを設定すると、その値はすべての内部要求に自動的に伝播され、以前に設定されていた可能性のある値が上書きされます。ただし、各内部オブジェクトに対して手動でプロパティを設定することもできます。
このプロパティを呼び出す前に、要求オブジェクトを初期化する必要があります。このプロパティは Encode メソッドを呼び出す前に呼び出すことができます。
PKCS の署名アルゴリズムのオブジェクト識別子 (OID) を対象とするかどうかを示すブール値を指定および取得します。(Get)
| pValue | VARIANT_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 メソッドを呼び出す前に呼び出すことができます。
PKCS の署名アルゴリズムのオブジェクト識別子 (OID) を対象とするかどうかを示すブール値を指定および取得します。(Put)
| Value | VARIANT_BOOL | in | 代替署名アルゴリズム(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 メソッドを呼び出す前に呼び出すことができます。
署名済みで、Distinguished Encoding Rules (DER) でエンコードされた証明書要求を格納するバイト配列を取得します。
| Encoding | EncodingType | in | 取得する要求の生データのエンコーディング種別を指定する EncodingType 列挙値である。 |
| pValue | LPWSTR* | out | 証明書要求の生(エンコード済み)データを指定エンコーディングの文字列として受け取るポインタである。 |
解説(Remarks)
Encode メソッドを呼び出して、Abstract Syntax Notation One (ASN.1) 標準で定義されている DER を使用して証明書要求をエンコードします。エンコード処理によってバイト配列が作成され、RawData プロパティはそれを文字列として返します。この文字列は、純粋なバイナリシーケンスか、テキストとして表示できるように Unicode でエンコードされたものです。
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 不要)。#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 sptr #comfunc global IX509CertificateRequest_get_EnrollmentContext 12 sptr #comfunc global IX509CertificateRequest_get_Silent 13 sptr #comfunc global IX509CertificateRequest_put_Silent 14 int #comfunc global IX509CertificateRequest_get_ParentWindow 15 sptr #comfunc global IX509CertificateRequest_put_ParentWindow 16 int #comfunc global IX509CertificateRequest_get_UIContextMessage 17 sptr #comfunc global IX509CertificateRequest_put_UIContextMessage 18 wstr #comfunc global IX509CertificateRequest_get_SuppressDefaults 19 sptr #comfunc global IX509CertificateRequest_put_SuppressDefaults 20 int #comfunc global IX509CertificateRequest_get_RenewalCertificate 21 int,sptr #comfunc global IX509CertificateRequest_put_RenewalCertificate 22 int,wstr #comfunc global IX509CertificateRequest_get_ClientId 23 sptr #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 sptr #comfunc global IX509CertificateRequest_put_AlternateSignatureAlgorithm 30 int #comfunc global IX509CertificateRequest_get_RawData 31 int,sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。 ; ※IDispatch 実装。HSP では comobj 経由でメソッド名による呼び出しも可能(vtbl 不要)。