Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Метод GetCertificate возвращает сертификат, выданный для запроса как сертификат X.509 или при необходимости упакованный в сообщение PKCS 7, содержащее полную цепочку сертификатов для сервера служб сертификатов .
Синтаксис
HRESULT GetCertificate(
[in] LONG Flags,
[out] BSTR *pstrCertificate
);
Параметры
[in] Flags
Флаг для формата и того, включена ли полная цепочка сертификатов.
Формат возвращаемого сертификата может быть одним из следующих флагов.
| Значение | Значение |
|---|---|
|
Формат BASE64 с начальной и конечной |
|
Формат BASE64 без начала и конца |
|
Двоичный формат |
Следующие флаги можно объединить с флагом формата.
| Значение | Значение |
|---|---|
|
Включите полную цепочку сертификатов в PKCS 7.
Если этот флаг не указан, возвращается только запрошенный сертификат в формате X.509 . |
|
Включите списки отзыва сертификатов (CRL) в PKCS 7. |
Например, чтобы получить двоичный сертификат с полной цепочкой сертификатов на C++, необходимо написать следующее.
hResult = pCertReq->GetCACertificate(FALSE, bstrConfig,
CR_OUT_BINARY | CR_OUT_CHAIN, &bstrCert);
[out] pstrCertificate
Указатель на BSTR , содержащий сертификат, в указанном формате.
При использовании этого метода создайте переменную типа BSTR , задайте для переменной значение NULL, а затем передайте адрес этой переменной как pstrCertificate. Завершив использование сертификата, на который указывает pstrCertificate, освободите его, вызвав функцию SysFreeString .
Возвращаемое значение
Если метод задает для *pstrCertificateзначение BSTR , содержащее сертификат для запроса, метод возвращает 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 |
| Header | certcli.h (включая Certsrv.h) |
| Библиотека | Certidl.lib |
| DLL | Certcli.dll |