ICertRequest::Submit メソッド (certcli.h)
Submit メソッドは、証明書サービス サーバーに要求を送信します。
結果の処理状態がCR_DISP_ISSUED場合は、 ICertRequest3::GetCertificate メソッドを呼び出して発行された証明書を取得できます。
構文
HRESULT Submit(
[in] LONG Flags,
[in] const BSTR strRequest,
[in] const BSTR strAttributes,
[in] const BSTR strConfig,
[out, retval] LONG *pDisposition
);
パラメーター
[in] Flags
要求の形式、要求の種類、および要求が暗号化されているかどうかを指定します。 次のいずれかの形式属性フラグを使用して、要求のエンコード方法を指定できます。
値 | 意味 |
---|---|
|
開始/終了のない Unicode BASE64 形式。 |
|
開始/終了を含む Unicode BASE64 形式。 |
|
バイナリ形式。 |
|
すべてのCR_IN_BASE64HEADER、CR_IN_BASE64、またはCR_IN_BINARY形式をお試しください。 |
次のいずれかの書式値フラグを使用して、要求の種類を指定できます。
値 | 意味 |
---|---|
|
CA に送信できるチャレンジを返します。 課題は、 CMS (CMC) 経由の証明書管理 の完全な要求です。 このフラグをオンにすると、FR_PROP_FULLRESPONSE フラグを指定して GetFullResponseProperty メソッドを呼び出すと、主要な構成証明チャレンジを含む CMC 応答が返されます。 |
|
呼び出しは、チャレンジに対する応答です。 RequestId は strAttributes パラメーターで渡す必要があり、チャレンジへの応答は strRequest パラメーターで渡す必要があります。 このフラグは、アプリケーションが復号化されたチャレンジを CA に送り返す必要がある場合にオンにする必要があります。 その後、 GetFullResponseProperty メソッドを呼び出して、発行された終了エンティティ証明書を取得できます。 |
|
CMS (CMC) 経由の証明書管理要求。 |
|
すべてのCR_IN_CMC、CR_IN_KEYGEN、CR_IN_PKCS7、またはCR_IN_PKCS10形式をお試しください。 |
|
Keygen 要求 (Netscape 形式)。 |
|
PKCS #7 要求 (更新または登録エージェント)。 |
|
PKCS #10 要求。 |
|
DCOM の代わりに RPC を使用してメッセージを送信します。 |
|
完全な CMC 応答を返します。 |
|
現在の証明書失効リストを含めます。 |
|
キー サービス コンピューターのコンテキストを使用します。 |
|
別の送信者に代わってメッセージが要求されていることを示します。
証明機関 (CA) が "代理更新" 用に構成されていない場合、CA は要求を拒否します。 CA で "代理更新" を有効にする方法の詳細については、「 更新専用モードの証明書登録 Web サービスの構成」を参照してください。 要求は更新要求である必要があり、署名証明書は要求と同じテンプレートを使用している必要があります。 さらに、要求は、次のいずれかの条件が満たされている場合にのみ成功します。
|
|
クライアントを識別する要求データには含めないでください。
Windows Server 2008 および Windows Server 2003: このフラグはサポートされていません。 |
|
サーバーとの DCOM 接続が確立されているが、要求は送信されないことを指定します。 |
[in] strRequest
証明書要求を含む文字列へのポインター。 CR_IN_BASE64またはCR_IN_BASE64HEADERが Flags で指定された場合、 strRequest は Unicode 文字列である必要があります。
[in] strAttributes
要求の省略可能な追加 属性 を含む文字列へのポインター。 各属性は、名前と値の文字列のペアです。 コロン文字は名前と値を区切り、改行文字は複数の名前と値のペアを区切ります。次に例を示します。
C++ | "AttributeName1:AttributeValue1\nAttributeName2:AttributeValue2" |
VB | "AttributeName1:AttributeValue1" & vbNewLine & "AttributeName2:AttributeValue2" |
[in] strConfig
Certificate Services サーバーの有効な構成文字列を表します。 文字列は、登録サーバーの HTTPS URL、または ComputerName\CAName 形式で指定できます。 ComputerName はサーバーのネットワーク名、 CAName は証明書サービスのセットアップ時に入力された 証明機関の共通名です。 構成文字列名の詳細については、「 ICertConfig」を参照してください。
Windows Server 2008、Windows Vista、Windows Server 2003、Windows XP: HTTPS URL は入力としてサポートされていません。
[out, retval] pDisposition
要求の廃棄値へのポインター。
戻り値
C++
メソッドが成功した場合、メソッドは S_OKを返します。この関数が正常に完了すると、*pDisposition は次の表のいずれかの値に設定されます。
メソッドが失敗した場合は、エラーを示す HRESULT 値を返します。 一般的なエラー コードの一覧については、「 共通 HRESULT 値」を参照してください。
VB
戻り値は、要求の処理を指定します。 処理は、次のいずれかの値です。リターン コード | 説明 |
---|---|
|
要求が拒否されました |
|
要求が失敗しました |
|
要求が完了しませんでした |
|
証明書発行日 |
|
個別に発行された証明書 |
|
申請時に受け取った要求 |
注釈
ファイルから BASE64 形式の要求を読み取る場合は、ファイルが Unicode であることを確認するか、このメソッドを使用して要求を送信する前に ASCII から Unicode に変換します。
例
// The pointer to the interface object.
ICertRequest * pCertRequest = NULL;
// The variable for the computer\CAName.
BSTR bstrCA = NULL;
// The variable for the request.
BSTR bstrRequest = NULL;
// The variable for the attributes.
BSTR bstrAttribs = NULL;
// The variable for the disposition code.
long nDisp;
HRESULT hr;
// Initialize COM.
hr = CoInitializeEx(NULL, COINIT_APARTMENTTHREADED);
// Check status.
if (FAILED(hr))
{
printf("Failed CoInitializeEx [%x]\n", hr);
goto error;
}
// Instantiate the CertConfig object.
hr = CoCreateInstance(CLSID_CCertRequest,
NULL,
CLSCTX_INPROC_SERVER,
IID_ICertRequest,
(void **)&pCertRequest);
if (FAILED(hr))
{
printf("Failed CoCreateInstance pCertRequest [%x]\n", hr);
goto error;
}
// Specify the certification authority.
// Note: In C++, produce one backslash (\) by using two.
bstrCA = SysAllocString(L"server01\\myCAName");
// Create the request (not shown), and assign it to bstrRequest,
// for example, use ICEnroll::createPKCS10.
// Generate the attributes. In this case, no attributes
// are specified.
bstrAttribs = SysAllocString(L"");
// Submit the request.
hr = pCertRequest->Submit(CR_IN_BASE64 | CR_IN_PKCS10,
bstrRequest,
bstrAttribs,
bstrCA,
&nDisp );
if (FAILED(hr))
{
printf("Failed Submit [%x]\n", hr);
goto error;
}
else
{
// Use the disposition value as needed.
}
// Done processing.
error:
// Free BSTR values.
if (NULL != bstrCA)
SysFreeString(bstrCA);
if (NULL != bstrRequest)
SysFreeString(bstrRequest);
if (NULL != bstrAttribs)
SysFreeString(bstrAttribs);
// Clean up object resources.
if (NULL != pCertRequest)
pCertRequest->Release();
// Free COM resources.
CoUninitialize();
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows XP (デスクトップ アプリのみ) |
サポートされている最小のサーバー | Windows Server 2003 (デスクトップ アプリのみ) |
対象プラットフォーム | Windows |
ヘッダー | certcli.h (Certsrv.h を含む) |
Library | Certidl.lib |
[DLL] | Certcli.dll |