Bagikan melalui


ICertRequest::GetCertificate method (certcli.h)

Metode GetCertificate mengembalikan sertifikat yang dikeluarkan untuk permintaan sebagai sertifikat X.509 , atau secara opsional dikemas dalam pesan Standar Kriptografi Kunci Publik (PKCS) #7 yang berisi rantai sertifikat lengkap untuk server Layanan Sertifikat .

Sintaks

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

Parameter

[in] Flags

Bendera untuk format dan apakah rantai sertifikat lengkap disertakan.

Format sertifikat yang dikembalikan bisa menjadi salah satu bendera berikut.

Nilai Makna
CR_OUT_BASE64HEADER
Format BASE64 dengan awal/akhir
CR_OUT_BASE64
Format BASE64 tanpa awal/akhir
CR_OUT_BINARY
Format biner
 

Bendera berikut dapat digabungkan dengan bendera format.

Nilai Makna
CR_OUT_CHAIN
Sertakan rantai sertifikat lengkap dalam PKCS #7.

Jika bendera ini tidak ditentukan, hanya sertifikat yang diminta, dalam format X.509 , yang dikembalikan.

CR_OUT_CRLS
Sertakan daftar pencabutan sertifikat (CRL) di PKCS #7.
 

Misalnya, untuk mengambil sertifikat biner dengan rantai sertifikat lengkap di C++ Anda akan menulis yang berikut.

hResult = pCertReq->GetCACertificate(FALSE, bstrConfig,
     CR_OUT_BINARY | CR_OUT_CHAIN, &bstrCert);

[out] pstrCertificate

Penunjuk ke BSTR yang berisi sertifikat, dalam format yang ditentukan.

Saat menggunakan metode ini, buat variabel jenis BSTR , atur variabel yang sama dengan NULL, lalu teruskan alamat variabel ini sebagai pstrCertificate. Setelah Anda selesai menggunakan sertifikat yang diarahkan oleh pstrCertificate, bebaskan dengan memanggil fungsi SysFreeString .

Nilai kembali

Jika metode menetapkan *pstrCertificate ke BSTR yang berisi sertifikat untuk permintaan, metode akan mengembalikan S_OK.

Jika metode gagal, metode mengembalikan nilai HRESULT yang menunjukkan kesalahan. Untuk daftar kode kesalahan umum, lihat Nilai HRESULT Umum.

Keterangan

Aplikasi akan memanggil metode ini untuk mengambil sertifikat yang dikeluarkan melalui panggilan sebelumnya ke ICertRequest3::Submit atau ICertRequest3::RetrievePending.

Contoh

Contoh berikut menunjukkan pengambilan sertifikat.

#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;

}

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Windows XP [hanya aplikasi desktop]
Server minimum yang didukung Windows Server 2003 [hanya aplikasi desktop]
Target Platform Windows
Header certcli.h (termasuk Certsrv.h)
Pustaka Certidl.lib
DLL Certcli.dll

Lihat juga

CCertRequest

ICertRequest

ICertRequest2

ICertRequest3