ICertRequest::GetCertificate 메서드(certcli.h)
GetCertificate 메서드는 요청에 대해 발급된 인증서를 X.509 인증서로 반환하거나 필요에 따라 인증서 서비스 서버의 전체 인증서 체인을 포함하는 PKCS(공개 키 암호화 표준) #7 메시지에 패키지됩니다.
구문
HRESULT GetCertificate(
[in] LONG Flags,
[out] BSTR *pstrCertificate
);
매개 변수
[in] Flags
형식 및 전체 인증서 체인이 포함되는지 여부에 대한 플래그입니다.
반환된 인증서의 형식은 다음 플래그 중 하나일 수 있습니다.
값 | 의미 |
---|---|
|
시작/종료가 있는 BASE64 형식 |
|
시작/종료가 없는 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 함수를 호출하여 인증서를 해제합니다.
반환 값
메서드가 *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 |
헤더 | certcli.h(Certsrv.h 포함) |
라이브러리 | Certidl.lib |
DLL | Certcli.dll |