IX509CertificateRequestCertificate
COMIDispatch (デュアル)comobj 経由でメソッド名による遅延バインド呼び出しができます(vtableインデックス不要)。公式ドキュメント
IX509CertificateRequestCertificate インターフェイスは、自己生成された証明書の要求オブジェクトを表し、登録機関(RA)や証明機関(CA)を経由せずに証明書を直接作成できるようにします。
メソッド 11
vtbl = vtable インデックス(0始まり)。IDispatch 実装のため HSP ではメソッド名でも呼べます(上記)。低レベルの index 呼び出し用に vtbl も掲載。0〜2 は IUnknown。
署名側の証明書の公開キーを使用して、証明書の署名を検証します。
| pPublicKey | IX509PublicKey* | inoptional | 公開キーを表す IX509PublicKey インターフェイスへのポインター。 |
戻り値
関数が成功した場合は S_OK を返します。
関数が失敗した場合は、エラーを示す HRESULT 値を返します。取り得る値には次の表の値が含まれますが、これらに限定されません。一般的なエラーコードの一覧については、Common HRESULT Values を参照してください。
| リターンコード/値 | 説明 |
|---|---|
| 署名が見つかりません。 | |
|
IX509PublicKey オブジェクトが初期化されていません。 |
| 要求オブジェクトが初期化されていません。 |
解説(Remarks)
このメソッドは署名を復号し、署名で指定されたハッシュアルゴリズムを使用して、証明書のハッシュと比較します。このプロパティを呼び出す前に、要求オブジェクトを初期化する必要があります。詳細については、次のいずれかのメソッドを参照してください。
証明書の発行者の名前を指定または取得します。 (Get)
| ppValue | IX500DistinguishedName** | out | 証明書の発行者識別名を表す IX500DistinguishedName オブジェクトを受け取るポインタである。 |
解説(Remarks)
Encode を呼び出す前にこのプロパティを指定しなかった場合、プロパティ値は署名側の証明書のサブジェクトを使用して設定されます。署名側の証明書が指定されていない場合、プロパティ値は要求オブジェクトのサブジェクトを使用して設定されます。
このプロパティを呼び出す前に、要求オブジェクトを初期化する必要があります。詳細については、次のいずれかのメソッドを参照してください。
証明書の発行者の名前を指定または取得します。 (Put)
| pValue | IX500DistinguishedName* | inoptional | 証明書の発行者識別名を表す IX500DistinguishedName オブジェクトを渡す。 |
解説(Remarks)
Encode を呼び出す前にこのプロパティを指定しなかった場合、プロパティ値は署名側の証明書のサブジェクトを使用して設定されます。署名側の証明書が指定されていない場合、プロパティ値は要求オブジェクトのサブジェクトを使用して設定されます。
このプロパティを呼び出す前に、要求オブジェクトを初期化する必要があります。詳細については、次のいずれかのメソッドを参照してください。
証明書がそれより前では有効とならない日時を指定または取得します。 (Get)
| pValue | DOUBLE* | out | 証明書の有効期間開始日時を OLE オートメーション日付(DOUBLE)として受け取るポインタである。 |
解説(Remarks)
有効期限は、1900 年 1 月 1 日から 9999 年 12 月 31 日まで(両端を含む)の協定世界時(グリニッジ標準時)を表す 8 バイトの実数値として格納されます。値 2.0 は 1900 年 1 月 1 日を、3.0 は 1900 年 1 月 2 日を表します。値に 1 を加えると日付が 1 日進みます。値の小数部は時刻を表します。したがって、2.5 は 1900 年 1 月 1 日の 12:00 を、3.25 は 1900 年 1 月 2 日の 06:00 を表します。
1950 年から 2049 年まで(両端を含む)の日付では、日時は YYMMDDHHMMSS 形式の協定世界時としてエンコードされます。1950 年より前または 2049 年より後の日付では、エンコードされた一般化時刻(generalized time)が使用されます。エンコードされた一般化時刻は YYYYMMDDHHMMSSMMM 形式で、4 桁の年を使用し、ミリ秒までの精度があります。ただし、NotBefore の時刻は秒単位までの精度しかありません。
Encode を呼び出した後の既定値は、クロックスキューを補正するために、現在時刻に 1 年を加えて 10 分を引いた値になります。通常、この値は表示される前に、該当する場合はタイムゾーンや夏時間に合わせて調整されます。
このプロパティを呼び出す前に、要求オブジェクトを初期化する必要があります。詳細については、次のいずれかのメソッドを参照してください。
証明書がそれより前では有効とならない日時を指定または取得します。 (Put)
| Value | DOUBLE | in | 証明書の有効期間開始日時を OLE オートメーション日付(DOUBLE)で指定する。 |
解説(Remarks)
有効期限は、1900 年 1 月 1 日から 9999 年 12 月 31 日まで(両端を含む)の協定世界時(グリニッジ標準時)を表す 8 バイトの実数値として格納されます。値 2.0 は 1900 年 1 月 1 日を、3.0 は 1900 年 1 月 2 日を表します。値に 1 を加えると日付が 1 日進みます。値の小数部は時刻を表します。したがって、2.5 は 1900 年 1 月 1 日の 12:00 を、3.25 は 1900 年 1 月 2 日の 06:00 を表します。
1950 年から 2049 年まで(両端を含む)の日付では、日時は YYMMDDHHMMSS 形式の協定世界時としてエンコードされます。1950 年より前または 2049 年より後の日付では、エンコードされた一般化時刻(generalized time)が使用されます。エンコードされた一般化時刻は YYYYMMDDHHMMSSMMM 形式で、4 桁の年を使用し、ミリ秒までの精度があります。ただし、NotBefore の時刻は秒単位までの精度しかありません。
Encode を呼び出した後の既定値は、クロックスキューを補正するために、現在時刻に 1 年を加えて 10 分を引いた値になります。通常、この値は表示される前に、該当する場合はタイムゾーンや夏時間に合わせて調整されます。
このプロパティを呼び出す前に、要求オブジェクトを初期化する必要があります。詳細については、次のいずれかのメソッドを参照してください。
証明書がそれより後では有効でなくなる日時を指定または取得します。 (Get)
| pValue | DOUBLE* | out | 証明書の有効期間終了日時を OLE オートメーション日付(DOUBLE)として受け取るポインタである。 |
解説(Remarks)
有効期限は、1900 年 1 月 1 日から 9999 年 12 月 31 日まで(両端を含む)の協定世界時(グリニッジ標準時)を表す 8 バイトの実数値として格納されます。値 2.0 は 1900 年 1 月 1 日を、3.0 は 1900 年 1 月 2 日を表します。値に 1 を加えると日付が 1 日進みます。値の小数部は時刻を表します。したがって、2.5 は 1900 年 1 月 1 日の 12:00 を、3.25 は 1900 年 1 月 2 日の 06:00 を表します。
1950 年から 2049 年まで(両端を含む)の日付では、日時は YYMMDDHHMMSS 形式の協定世界時としてエンコードされます。1950 年より前または 2049 年より後の日付では、エンコードされた一般化時刻(generalized time)が使用されます。エンコードされた一般化時刻は YYYYMMDDHHMMSSMMM 形式で、4 桁の年を使用し、ミリ秒までの精度があります。ただし、NotAfter の時刻は秒単位までの精度しかありません。
Encode を呼び出した後の既定値は、クロックスキューを補正するために、NotBefore プロパティ値に 1 年と 10 分を加えた値になります。通常、この値は表示される前に、該当する場合はタイムゾーンや夏時間に合わせて調整されます。
このプロパティを呼び出す前に、要求オブジェクトを初期化する必要があります。詳細については、次のいずれかのメソッドを参照してください。
証明書がそれより後では有効でなくなる日時を指定または取得します。 (Put)
| Value | DOUBLE | in | 証明書の有効期間終了日時を OLE オートメーション日付(DOUBLE)で指定する。 |
解説(Remarks)
有効期限は、1900 年 1 月 1 日から 9999 年 12 月 31 日まで(両端を含む)の協定世界時(グリニッジ標準時)を表す 8 バイトの実数値として格納されます。値 2.0 は 1900 年 1 月 1 日を、3.0 は 1900 年 1 月 2 日を表します。値に 1 を加えると日付が 1 日進みます。値の小数部は時刻を表します。したがって、2.5 は 1900 年 1 月 1 日の 12:00 を、3.25 は 1900 年 1 月 2 日の 06:00 を表します。
1950 年から 2049 年まで(両端を含む)の日付では、日時は YYMMDDHHMMSS 形式の協定世界時としてエンコードされます。1950 年より前または 2049 年より後の日付では、エンコードされた一般化時刻(generalized time)が使用されます。エンコードされた一般化時刻は YYYYMMDDHHMMSSMMM 形式で、4 桁の年を使用し、ミリ秒までの精度があります。ただし、NotAfter の時刻は秒単位までの精度しかありません。
Encode を呼び出した後の既定値は、クロックスキューを補正するために、NotBefore プロパティ値に 1 年と 10 分を加えた値になります。通常、この値は表示される前に、該当する場合はタイムゾーンや夏時間に合わせて調整されます。
このプロパティを呼び出す前に、要求オブジェクトを初期化する必要があります。詳細については、次のいずれかのメソッドを参照してください。
証明書のシリアル番号を指定および取得します。 (Get)
| Encoding | EncodingType | in | 取得するシリアル番号文字列のエンコーディング種別を指定する EncodingType 列挙値である。 |
| pValue | LPWSTR* | out | 証明書のシリアル番号を指定エンコーディングの文字列として受け取るポインタである。 |
解説(Remarks)
Encode を呼び出した後の既定値は、上位ニブルが 0 でない GUID です(シリアル番号の 16 進表現の桁数が偶数になるようにするため)。上位ニブルは 1 から 7 の範囲になります。このプロパティを呼び出す前に、要求オブジェクトを初期化する必要があります。詳細については、次のいずれかのメソッドを参照してください。
証明書のシリアル番号を指定および取得します。 (Put)
| Encoding | EncodingType | in | 渡すシリアル番号文字列のエンコーディング種別を指定する EncodingType 列挙値である。 |
| Value | LPWSTR | in | 証明書のシリアル番号を指定エンコーディングの文字列として渡す。 |
解説(Remarks)
Encode を呼び出した後の既定値は、上位ニブルが 0 でない GUID です(シリアル番号の 16 進表現の桁数が偶数になるようにするため)。上位ニブルは 1 から 7 の範囲になります。このプロパティを呼び出す前に、要求オブジェクトを初期化する必要があります。詳細については、次のいずれかのメソッドを参照してください。
証明書の署名に使用する ISignerCertificate オブジェクトを指定または取得します。 (Get)
| ppValue | ISignerCertificate** | out | この証明書要求に署名する署名証明書を表す ISignerCertificate オブジェクトを受け取るポインタである。 |
解説(Remarks)
自己署名証明書を作成しない場合は、このプロパティを設定できます。Encode を呼び出す前にプロパティ値を指定しなかった場合、IX509CertificateRequestCertificate オブジェクトに関連付けられた秘密キーが証明書の署名に使用され、発行者の名前は既定でサブジェクト名に設定されます。
このプロパティを呼び出す前に、要求オブジェクトを初期化する必要があります。詳細については、次のいずれかのメソッドを参照してください。
証明書の署名に使用する ISignerCertificate オブジェクトを指定または取得します。 (Put)
| pValue | ISignerCertificate* | inoptional | この証明書要求に署名する署名証明書を表す ISignerCertificate オブジェクトを渡す。 |
解説(Remarks)
自己署名証明書を作成しない場合は、このプロパティを設定できます。Encode を呼び出す前にプロパティ値を指定しなかった場合、IX509CertificateRequestCertificate オブジェクトに関連付けられた秘密キーが証明書の署名に使用され、発行者の名前は既定でサブジェクト名に設定されます。
このプロパティを呼び出す前に、要求オブジェクトを初期化する必要があります。詳細については、次のいずれかのメソッドを参照してください。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_IX509CertificateRequestCertificate "{728AB343-217D-11DA-B2A4-000E7BBB2B09}" #usecom global IX509CertificateRequestCertificate IID_IX509CertificateRequestCertificate "{}" #comfunc global IX509CertificateRequestCertificate_CheckPublicKeySignature 60 sptr #comfunc global IX509CertificateRequestCertificate_get_Issuer 61 sptr #comfunc global IX509CertificateRequestCertificate_put_Issuer 62 sptr #comfunc global IX509CertificateRequestCertificate_get_NotBefore 63 var #comfunc global IX509CertificateRequestCertificate_put_NotBefore 64 double #comfunc global IX509CertificateRequestCertificate_get_NotAfter 65 var #comfunc global IX509CertificateRequestCertificate_put_NotAfter 66 double #comfunc global IX509CertificateRequestCertificate_get_SerialNumber 67 int,var #comfunc global IX509CertificateRequestCertificate_put_SerialNumber 68 int,wstr #comfunc global IX509CertificateRequestCertificate_get_SignerCertificate 69 sptr #comfunc global IX509CertificateRequestCertificate_put_SignerCertificate 70 sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。 ; ※IDispatch 実装。HSP では comobj 経由でメソッド名による呼び出しも可能(vtbl 不要)。#define global IID_IX509CertificateRequestCertificate "{728AB343-217D-11DA-B2A4-000E7BBB2B09}" #usecom global IX509CertificateRequestCertificate IID_IX509CertificateRequestCertificate "{}" #comfunc global IX509CertificateRequestCertificate_CheckPublicKeySignature 60 sptr #comfunc global IX509CertificateRequestCertificate_get_Issuer 61 sptr #comfunc global IX509CertificateRequestCertificate_put_Issuer 62 sptr #comfunc global IX509CertificateRequestCertificate_get_NotBefore 63 sptr #comfunc global IX509CertificateRequestCertificate_put_NotBefore 64 double #comfunc global IX509CertificateRequestCertificate_get_NotAfter 65 sptr #comfunc global IX509CertificateRequestCertificate_put_NotAfter 66 double #comfunc global IX509CertificateRequestCertificate_get_SerialNumber 67 int,sptr #comfunc global IX509CertificateRequestCertificate_put_SerialNumber 68 int,wstr #comfunc global IX509CertificateRequestCertificate_get_SignerCertificate 69 sptr #comfunc global IX509CertificateRequestCertificate_put_SignerCertificate 70 sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。 ; ※IDispatch 実装。HSP では comobj 経由でメソッド名による呼び出しも可能(vtbl 不要)。