ICertRequest::GetCertificate メソッド (certcli.h)
GetCertificate メソッドは、要求に対して発行された証明書を X.509 証明書として返します。または、必要に応じて、Certificate Services サーバーの完全な証明書チェーンを含む公開キー暗号化標準 (PKCS) #7 メッセージにパッケージ化されます。
構文
HRESULT GetCertificate(
[in] LONG Flags,
[out] BSTR *pstrCertificate
);
パラメーター
[in] Flags
形式と、完全な証明書チェーンが含まれているかどうかを示すフラグ。
返される証明書の形式は、次のいずれかのフラグにすることができます。
値 | 意味 |
---|---|
|
BASE64 形式と begin/end |
|
開始/終了なしの BASE64 形式 |
|
バイナリ形式 |
次のフラグは、書式フラグと組み合わせることができます。
値 | 意味 |
---|---|
|
PKCS #7 に完全な証明書チェーンを含めます。
このフラグが指定されていない場合は、要求された証明書 ( X.509 形式) のみが返されます。 |
|
PKCS #7 に 証明書失効リスト (CRL) を含めます。 |
たとえば、C++ で完全な証明書チェーンを持つバイナリ証明書を取得するには、次のように記述します。
hResult = pCertReq->GetCACertificate(FALSE, bstrConfig,
CR_OUT_BINARY | CR_OUT_CHAIN, &bstrCert);
[out] pstrCertificate
指定した形式の証明書を含む BSTR へのポインター。
このメソッドを使用する場合は、 BSTR 型の変数を作成し、変数を NULL に設定し、この変数のアドレス を pstrCertificate として渡します。 pstrCertificate が指す証明書の使用が完了したら、SysFreeString 関数を呼び出して解放します。
戻り値
メソッドが要求の証明書を含む BSTR に *pstrCertificate を設定すると、メソッドは S_OKを返します。
メソッドが失敗した場合は、エラーを示す HRESULT 値を返します。 一般的なエラー コードの一覧については、「 共通の HRESULT 値」を参照してください。
注釈
アプリケーションはこのメソッドを呼び出して、 ICertRequest3::Submit または ICertRequest3:: RetrievePending の以前の呼び出しによって発行された証明書 を取得します。
例
次の例は、証明書の取得を示しています。
#include <windows.h>
#include <stdio.h>
#include <Certcli.h>
HRESULT main()
{
// Pointer to interface object.
ICertRequest * pCertRequest = NULL;
// Variable for COMPUTER\CANAME.
BSTR bstrCA = NULL;
// Variable for CA Certificate.
BSTR bstrCACert = NULL;
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;
}
// Note use of two backslashes (\\) in C++
// to produce one backslash (\).
bstrCA = SysAllocString(L"server01\\myCAName");
// Retrieve the CA certificate.
hr = pCertRequest->GetCACertificate(FALSE,
bstrCA,
CR_OUT_BASE64,
&bstrCACert);
if (FAILED(hr))
{
printf("Failed GetCACertificate [%x]\n", hr);
goto error;
}
else
{
// Use CA Certificate as needed.
}
// Done processing.
error:
// Free BSTR values.
if (NULL != bstrCA)
SysFreeString(bstrCA);
if (NULL != bstrCACert)
SysFreeString(bstrCACert);
// Clean up object resources.
if (NULL != pCertRequest)
pCertRequest->Release();
// Free COM resources.
CoUninitialize();
return hr;
}
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows XP (デスクトップ アプリのみ) |
サポートされている最小のサーバー | Windows Server 2003 (デスクトップ アプリのみ) |
対象プラットフォーム | Windows |
ヘッダー | certcli.h (Certsrv.h を含む) |
Library | Certidl.lib |
[DLL] | Certcli.dll |