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

IX509CertificateRequestCertificate

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

公式ドキュメント

IX509CertificateRequestCertificate インターフェイスは、自己生成された証明書の要求オブジェクトを表し、登録機関(RA)や証明機関(CA)を経由せずに証明書を直接作成できるようにします。

メソッド 11

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

vtbl 60 HRESULT CheckPublicKeySignature(IX509PublicKey* pPublicKey)

署名側の証明書の公開キーを使用して、証明書の署名を検証します。

pPublicKeyIX509PublicKey*inoptional公開キーを表す IX509PublicKey インターフェイスへのポインター。

戻り値

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

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

リターンコード/値 説明
CRYPT_E_NO_SIGNER
署名が見つかりません。
HRESULT_FROM_WIN32(ERROR_INVALID_STATE)
IX509PublicKey オブジェクトが初期化されていません。
OLE_E_BLANK
要求オブジェクトが初期化されていません。

解説(Remarks)

このメソッドは署名を復号し、署名で指定されたハッシュアルゴリズムを使用して、証明書のハッシュと比較します。このプロパティを呼び出す前に、要求オブジェクトを初期化する必要があります。詳細については、次のいずれかのメソッドを参照してください。

vtbl 61 HRESULT get_Issuer(IX500DistinguishedName** ppValue)

証明書の発行者の名前を指定または取得します。 (Get)

ppValueIX500DistinguishedName**out証明書の発行者識別名を表す IX500DistinguishedName オブジェクトを受け取るポインタである。

解説(Remarks)

Encode を呼び出す前にこのプロパティを指定しなかった場合、プロパティ値は署名側の証明書のサブジェクトを使用して設定されます。署名側の証明書が指定されていない場合、プロパティ値は要求オブジェクトのサブジェクトを使用して設定されます。

このプロパティを呼び出す前に、要求オブジェクトを初期化する必要があります。詳細については、次のいずれかのメソッドを参照してください。

vtbl 62 HRESULT put_Issuer(IX500DistinguishedName* pValue)

証明書の発行者の名前を指定または取得します。 (Put)

pValueIX500DistinguishedName*inoptional証明書の発行者識別名を表す IX500DistinguishedName オブジェクトを渡す。

解説(Remarks)

Encode を呼び出す前にこのプロパティを指定しなかった場合、プロパティ値は署名側の証明書のサブジェクトを使用して設定されます。署名側の証明書が指定されていない場合、プロパティ値は要求オブジェクトのサブジェクトを使用して設定されます。

このプロパティを呼び出す前に、要求オブジェクトを初期化する必要があります。詳細については、次のいずれかのメソッドを参照してください。

vtbl 63 HRESULT get_NotBefore(DOUBLE* pValue)

証明書がそれより前では有効とならない日時を指定または取得します。 (Get)

pValueDOUBLE*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 分を引いた値になります。通常、この値は表示される前に、該当する場合はタイムゾーンや夏時間に合わせて調整されます。

このプロパティを呼び出す前に、要求オブジェクトを初期化する必要があります。詳細については、次のいずれかのメソッドを参照してください。

vtbl 64 HRESULT put_NotBefore(DOUBLE Value)

証明書がそれより前では有効とならない日時を指定または取得します。 (Put)

ValueDOUBLEin証明書の有効期間開始日時を 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 分を引いた値になります。通常、この値は表示される前に、該当する場合はタイムゾーンや夏時間に合わせて調整されます。

このプロパティを呼び出す前に、要求オブジェクトを初期化する必要があります。詳細については、次のいずれかのメソッドを参照してください。

vtbl 65 HRESULT get_NotAfter(DOUBLE* pValue)

証明書がそれより後では有効でなくなる日時を指定または取得します。 (Get)

pValueDOUBLE*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 分を加えた値になります。通常、この値は表示される前に、該当する場合はタイムゾーンや夏時間に合わせて調整されます。

このプロパティを呼び出す前に、要求オブジェクトを初期化する必要があります。詳細については、次のいずれかのメソッドを参照してください。

vtbl 66 HRESULT put_NotAfter(DOUBLE Value)

証明書がそれより後では有効でなくなる日時を指定または取得します。 (Put)

ValueDOUBLEin証明書の有効期間終了日時を 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 分を加えた値になります。通常、この値は表示される前に、該当する場合はタイムゾーンや夏時間に合わせて調整されます。

このプロパティを呼び出す前に、要求オブジェクトを初期化する必要があります。詳細については、次のいずれかのメソッドを参照してください。

vtbl 67 HRESULT get_SerialNumber(EncodingType Encoding, LPWSTR* pValue)

証明書のシリアル番号を指定および取得します。 (Get)

EncodingEncodingTypein取得するシリアル番号文字列のエンコーディング種別を指定する EncodingType 列挙値である。
pValueLPWSTR*out証明書のシリアル番号を指定エンコーディングの文字列として受け取るポインタである。

解説(Remarks)

Encode を呼び出した後の既定値は、上位ニブルが 0 でない GUID です(シリアル番号の 16 進表現の桁数が偶数になるようにするため)。上位ニブルは 1 から 7 の範囲になります。このプロパティを呼び出す前に、要求オブジェクトを初期化する必要があります。詳細については、次のいずれかのメソッドを参照してください。

vtbl 68 HRESULT put_SerialNumber(EncodingType Encoding, LPWSTR Value)

証明書のシリアル番号を指定および取得します。 (Put)

EncodingEncodingTypein渡すシリアル番号文字列のエンコーディング種別を指定する EncodingType 列挙値である。
ValueLPWSTRin証明書のシリアル番号を指定エンコーディングの文字列として渡す。

解説(Remarks)

Encode を呼び出した後の既定値は、上位ニブルが 0 でない GUID です(シリアル番号の 16 進表現の桁数が偶数になるようにするため)。上位ニブルは 1 から 7 の範囲になります。このプロパティを呼び出す前に、要求オブジェクトを初期化する必要があります。詳細については、次のいずれかのメソッドを参照してください。

vtbl 69 HRESULT get_SignerCertificate(ISignerCertificate** ppValue)

証明書の署名に使用する ISignerCertificate オブジェクトを指定または取得します。 (Get)

ppValueISignerCertificate**outこの証明書要求に署名する署名証明書を表す ISignerCertificate オブジェクトを受け取るポインタである。

解説(Remarks)

自己署名証明書を作成しない場合は、このプロパティを設定できます。Encode を呼び出す前にプロパティ値を指定しなかった場合、IX509CertificateRequestCertificate オブジェクトに関連付けられた秘密キーが証明書の署名に使用され、発行者の名前は既定でサブジェクト名に設定されます。

このプロパティを呼び出す前に、要求オブジェクトを初期化する必要があります。詳細については、次のいずれかのメソッドを参照してください。

vtbl 70 HRESULT put_SignerCertificate(ISignerCertificate* pValue)

証明書の署名に使用する ISignerCertificate オブジェクトを指定または取得します。 (Put)

pValueISignerCertificate*inoptionalこの証明書要求に署名する署名証明書を表す ISignerCertificate オブジェクトを渡す。

解説(Remarks)

自己署名証明書を作成しない場合は、このプロパティを設定できます。Encode を呼び出す前にプロパティ値を指定しなかった場合、IX509CertificateRequestCertificate オブジェクトに関連付けられた秘密キーが証明書の署名に使用され、発行者の名前は既定でサブジェクト名に設定されます。

このプロパティを呼び出す前に、要求オブジェクトを初期化する必要があります。詳細については、次のいずれかのメソッドを参照してください。

出典・ライセンス: 上記「公式ドキュメント」の内容は 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_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 不要)。