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

IX509CertificateRequestPkcs7

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

公式ドキュメント

IX509CertificateRequestPkcs7 インターフェイスは PKCS を表します

メソッド 8

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

vtbl 32 HRESULT InitializeFromTemplateName(X509CertificateEnrollmentContext Context, LPWSTR strTemplateName)

テンプレートを使用して証明書要求を初期化します。(IX509CertificateRequestPkcs7.InitializeFromTemplateName)

ContextX509CertificateEnrollmentContextinX509CertificateEnrollmentContext 列挙値です。この値は、要求する証明書がエンドユーザー、コンピューター、またはコンピューターの代理として動作する管理者のいずれを対象とするかを指定します。
strTemplateNameLPWSTRinBSTR 変数です。この変数には、Active Directory に表示されるテンプレートの Common Name (CN)、またはドット区切り 10 進数の オブジェクト識別子 を格納します。

戻り値

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

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

リターンコード/値 説明
ERROR_ALREADY_INITIALIZED
証明書要求オブジェクトは既に初期化されています。

解説(Remarks)

InitializeFromTemplateName メソッドは、PKCS #7 要求オブジェクトを作成し、このメソッドが呼び出される前に存在していた値を次のプロパティに設定します。

このメソッドは、次のコレクションを作成します。

続いて、このメソッドはテンプレートを調べ、次の処理を実行します。

CSPInformations プロパティが NULL の場合、このメソッドは、コンピューターにインストールされているプロバイダーから ICspInformations コレクションを作成します。

最後に、このメソッドは、初期化された PKCS #10 要求を内部要求オブジェクトとして設定します。

vtbl 33 HRESULT InitializeFromCertificate(X509CertificateEnrollmentContext Context, VARIANT_BOOL RenewalRequest, LPWSTR strCertificate, EncodingType Encoding, X509RequestInheritOptions InheritOptions)

既存の証明書を使用して証明書要求を初期化します。(IX509CertificateRequestPkcs7.InitializeFromCertificate)

ContextX509CertificateEnrollmentContextinX509CertificateEnrollmentContext 列挙値です。この値は、要求する証明書がエンドユーザー、コンピューター、またはコンピューターの代理として動作する管理者のいずれを対象とするかを指定します。
RenewalRequestVARIANT_BOOLinstrCertificate パラメーターで識別される証明書の更新をエンドエンティティが要求しているかどうかを示す VARIANT_BOOL です。
strCertificateLPWSTRin

DER エンコードされた証明書を格納する BSTR 変数です。

Windows 7 および Windows Server 2008 R2 以降では、エンコードされた証明書の代わりに、証明書の拇印 (サムプリント) またはシリアル番号を指定できます。これにより、関数は一致する証明書を適切なローカルストアから検索します。次の点に注意してください。

  • BSTR は偶数個の 16 進数字でなければなりません。
  • 16 進数のペア間の空白は無視されます。
  • Encoding パラメーターには XCN_CRYPT_STRING_HEXRAW を設定する必要があります。
  • Context パラメーターは、ローカルストアとコンピューターストアのいずれか、または両方のどちらを検索するかを決定します。
  • 秘密キーが必要な場合、個人ストアと要求ストアのみが検索されます。
  • 秘密キーが不要な場合、ルート CA ストアと中間 CA ストアも検索されます。
EncodingEncodingTypeinEncodingType 列挙値です。この値は、DER エンコードされた証明書に適用されるエンコードの種類を指定します。既定値は XCN_CRYPT_STRING_BASE64 です。
InheritOptionsX509RequestInheritOptionsin

X509RequestInheritOptions 列挙値です。この値は、既存の証明書から証明書要求オブジェクトを作成する方法を指定します。次の値のいずれかを選択して、キーを継承する方法を指定できます。既定値は InheritDefault です。

意味
InheritDefault
プロバイダーとキーの継承は指定されません。
InheritNewDefaultKey
新しいキーを作成しますが、既定の暗号化プロバイダーを継承します。
InheritNewSimilarKey
新しいキーを作成しますが、既存の証明書の作成に使用された暗号化プロバイダーを継承します。
InheritPrivateKey
秘密キーと公開キーを継承します。
InheritPublicKey
公開キーのみを継承します。
 

また、ビット単位の AND 演算を使用して、キー継承値を次の値の任意の組み合わせと結合することもできます。

意味
InheritRenewalCertificateFlag
更新証明書を継承します。このフラグを指定すると、ICertPropertyRenewal 値が設定されます。
InheritTemplateFlag
証明書テンプレートを継承します。
InheritSubjectFlag
サブジェクトの識別名を継承します。
InheritExtensionsFlag
証明書から関連する拡張を継承します。
InheritSubjectAltNameFlag
SubjectAlternativeName 拡張を継承します。
InheritValidityPeriodFlag
有効期間を継承します。
 

InheritNone を指定すると、前の表に示したフラグ (キー継承に関連しないフラグ) が既定で適用されないようにすることもできます。InheritNone を指定し、かつキー継承に関連しないフラグも指定した場合、このメソッドは E_INVALIDARG を返します。

InheritOptions パラメーターに 0 を設定するか InheritDefault を指定し、キー継承値を指定しなかった場合、既定で InheritNewSimilarKey が使用されます。

InheritOptions パラメーターに 0 を設定するか InheritDefault を指定し、キー継承に関連しない値をいずれも指定しなかった場合、既定で次のフラグが設定されます。

  • InheritSubjectFlag
  • InheritExtensionsFlag
  • InheritValidityPeriodFlag
  • InheritTemplateFlag (証明書がテンプレート拡張を含む場合)
  • InheritRenewalCertificateFlag (クライアントが証明書を更新している場合)

戻り値

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

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

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

解説(Remarks)

InitializeFromCertificate メソッドは、InheritOptions パラメーターで指定されたオプションを検証し、次の処理を実行して新しい PKCS #7 要求オブジェクトを初期化します。

vtbl 34 HRESULT InitializeFromInnerRequest(IX509CertificateRequest* pInnerRequest)

内部の PKCS から証明書要求を初期化します

pInnerRequestIX509CertificateRequest*inoptional要求を表す IX509CertificateRequest インターフェイスへのポインターです。

戻り値

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

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

リターンコード/値 説明
CRYPT_E_INVALID_MSG_TYPE
入力で指定された要求オブジェクトは PKCS #10 要求ではありません。
HRESULT_FROM_WIN32(ERROR_ALREADY_INITIALIZED)
要求オブジェクトは既に初期化されています。

解説(Remarks)

このメソッドは、入力で指定された PKCS #10 要求を内部要求オブジェクトとして設定します。

vtbl 35 HRESULT InitializeDecode(LPWSTR strEncodedData, EncodingType Encoding)

既存の署名済みまたは未署名の PKCS をデコードします (IX509CertificateRequestPkcs7.InitializeDecode)

strEncodedDataLPWSTRinDER エンコードされた要求を格納する BSTR 変数です。
EncodingEncodingTypeinEncodingType 列挙値です。この値は、DER エンコードされた要求を格納する入力文字列に適用される Unicode エンコードの種類を指定します。既定値は XCN_CRYPT_STRING_BASE64 です。

戻り値

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

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

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

解説(Remarks)

InitializeDecode メソッドは、次を行います。

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

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

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

vtbl 36 HRESULT get_RequesterName(LPWSTR* pValue)

証明書を要求するエンドエンティティの Security Account Manager (SAM) 名を格納する文字列を指定または取得します。(Get)

pValueLPWSTR*out代理要求における要求者(対象ユーザー)の名前を文字列として受け取るポインタである。

解説(Remarks)

このプロパティは、登録 (エンロール) エージェントが別のユーザーの代理として登録を行う場合にのみ使用されます。このプロパティを呼び出す前に、PKCS #7 要求オブジェクトを初期化する必要があります。詳細については、次のトピックを参照してください。

vtbl 37 HRESULT put_RequesterName(LPWSTR Value)

証明書を要求するエンドエンティティの Security Account Manager (SAM) 名を格納する文字列を指定または取得します。(Put)

ValueLPWSTRin代理要求における要求者(対象ユーザー)の名前を文字列で指定する。

解説(Remarks)

このプロパティは、登録 (エンロール) エージェントが別のユーザーの代理として登録を行う場合にのみ使用されます。このプロパティを呼び出す前に、PKCS #7 要求オブジェクトを初期化する必要があります。詳細については、次のトピックを参照してください。

vtbl 38 HRESULT get_SignerCertificate(ISignerCertificate** ppValue)

証明書要求への署名に使用する証明書を指定または取得します。(Get)

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

解説(Remarks)

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

vtbl 39 HRESULT put_SignerCertificate(ISignerCertificate* pValue)

証明書要求への署名に使用する証明書を指定または取得します。(Put)

pValueISignerCertificate*inoptionalPKCS#7 要求に署名する署名証明書を表す ISignerCertificate オブジェクトを渡す。

解説(Remarks)

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

出典・ライセンス: 上記「公式ドキュメント」の内容は 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_IX509CertificateRequestPkcs7 "{728AB344-217D-11DA-B2A4-000E7BBB2B09}"
#usecom global IX509CertificateRequestPkcs7 IID_IX509CertificateRequestPkcs7 "{}"
#comfunc global IX509CertificateRequestPkcs7_InitializeFromTemplateName  32 int,wstr
#comfunc global IX509CertificateRequestPkcs7_InitializeFromCertificate   33 int,int,wstr,int,int
#comfunc global IX509CertificateRequestPkcs7_InitializeFromInnerRequest  34 sptr
#comfunc global IX509CertificateRequestPkcs7_InitializeDecode            35 wstr,int
#comfunc global IX509CertificateRequestPkcs7_get_RequesterName           36 var
#comfunc global IX509CertificateRequestPkcs7_put_RequesterName           37 wstr
#comfunc global IX509CertificateRequestPkcs7_get_SignerCertificate       38 sptr
#comfunc global IX509CertificateRequestPkcs7_put_SignerCertificate       39 sptr
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。
; ※IDispatch 実装。HSP では comobj 経由でメソッド名による呼び出しも可能(vtbl 不要)。