Método ICertRequest::GetCertificate (certcli.h)
O método GetCertificate retorna o certificado emitido para a solicitação como um certificado X.509 ou, opcionalmente, empacotado em uma mensagem PKCS (Public Key Cryptography Standards ) nº 7 que contém a cadeia de certificados completa para o servidor de Serviços de Certificados .
Sintaxe
HRESULT GetCertificate(
[in] LONG Flags,
[out] BSTR *pstrCertificate
);
Parâmetros
[in] Flags
Um sinalizador para o formato e se a cadeia de certificados completa está incluída.
O formato do certificado retornado pode ser um dos sinalizadores a seguir.
Valor | Significado |
---|---|
|
Formato BASE64 com início/término |
|
Formato BASE64 sem início/término |
|
Formato binário |
Os sinalizadores a seguir podem ser combinados com o sinalizador de formato.
Valor | Significado |
---|---|
|
Inclua a cadeia de certificados completa no PKCS nº 7.
Se esse sinalizador não for especificado, somente o certificado solicitado, no formato X.509 , será retornado. |
|
Inclua CRLs ( listas de revogação de certificados ) no PKCS nº 7. |
Por exemplo, para recuperar um certificado binário com cadeia de certificados completa no C++, você escreveria o seguinte.
hResult = pCertReq->GetCACertificate(FALSE, bstrConfig,
CR_OUT_BINARY | CR_OUT_CHAIN, &bstrCert);
[out] pstrCertificate
Um ponteiro para o BSTR que contém o certificado, no formato especificado.
Ao usar esse método, crie uma variável do tipo BSTR , defina a variável igual a NULL e passe o endereço dessa variável como pstrCertificate. Quando terminar de usar o certificado apontado por pstrCertificate, libere-o chamando a função SysFreeString .
Retornar valor
Se o método definir *pstrCertificate como o BSTR que contém o certificado da solicitação, o método retornará S_OK.
Se o método falhar, ele retornará um valor HRESULT que indica o erro. Para obter uma lista de códigos de erro comuns, consulte Valores HRESULT comuns.
Comentários
Um aplicativo chamaria esse método para recuperar o certificado emitido por meio de uma chamada anterior para ICertRequest3::Submit ou ICertRequest3::RetrievePending.
Exemplos
O exemplo a seguir mostra a recuperação de um certificado.
#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;
}
Requisitos
Requisito | Valor |
---|---|
Cliente mínimo com suporte | Windows XP [somente aplicativos da área de trabalho] |
Servidor mínimo com suporte | Windows Server 2003 [somente aplicativos da área de trabalho] |
Plataforma de Destino | Windows |
Cabeçalho | certcli.h (inclua Certsrv.h) |
Biblioteca | Certidl.lib |
DLL | Certcli.dll |