次の方法で共有


ICertRequest::GetCertificate メソッド (certcli.h)

GetCertificate メソッドは、要求に対して発行された証明書を X.509 証明書として返します。または、必要に応じて、Certificate Services サーバーの完全な証明書チェーンを含む公開キー暗号化標準 (PKCS) #7 メッセージにパッケージ化されます。

構文

HRESULT GetCertificate(
  [in]  LONG Flags,
  [out] BSTR *pstrCertificate
);

パラメーター

[in] Flags

形式と、完全な証明書チェーンが含まれているかどうかを示すフラグ。

返される証明書の形式は、次のいずれかのフラグにすることができます。

意味
CR_OUT_BASE64HEADER
BASE64 形式と begin/end
CR_OUT_BASE64
開始/終了なしの BASE64 形式
CR_OUT_BINARY
バイナリ形式
 

次のフラグは、書式フラグと組み合わせることができます。

意味
CR_OUT_CHAIN
PKCS #7 に完全な証明書チェーンを含めます。

このフラグが指定されていない場合は、要求された証明書 ( X.509 形式) のみが返されます。

CR_OUT_CRLS
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

こちらもご覧ください

CCertRequest

ICertRequest

ICertRequest2

ICertRequest3