Método ICertRequest::GetCertificate (certcli.h)
El método GetCertificate devuelve el certificado emitido para la solicitud como un certificado X.509 , o opcionalmente empaquetado en un mensaje estándar de criptografía de clave pública (PKCS) #7 que contiene la cadena de certificados completa para el servidor de Servicios de certificados.
Sintaxis
HRESULT GetCertificate(
[in] LONG Flags,
[out] BSTR *pstrCertificate
);
Parámetros
[in] Flags
Marca para el formato y si se incluye la cadena de certificados completa.
El formato del certificado devuelto puede ser una de las marcas siguientes.
Valor | Significado |
---|---|
|
Formato BASE64 con begin/end |
|
Formato BASE64 sin begin/end |
|
Formato binario |
Las marcas siguientes se pueden combinar con la marca de formato.
Valor | Significado |
---|---|
|
Incluya una cadena de certificados completa en PKCS #7.
Si no se especifica esta marca, solo se devuelve el certificado solicitado, en formato X.509 . |
|
Incluya listas de revocación de certificados (CRL) en el PKCS #7. |
Por ejemplo, para recuperar un certificado binario con una cadena de certificados completa en C++, escribiría lo siguiente.
hResult = pCertReq->GetCACertificate(FALSE, bstrConfig,
CR_OUT_BINARY | CR_OUT_CHAIN, &bstrCert);
[out] pstrCertificate
Puntero al BSTR que contiene el certificado, en el formato especificado.
Al usar este método, cree una variable de tipo BSTR , establezca la variable igual a NULL y, a continuación, pase la dirección de esta variable como pstrCertificate. Cuando haya terminado de usar el certificado al que apunta pstrCertificate, ábrelo llamando a la función SysFreeString .
Valor devuelto
Si el método establece *pstrCertificate en el BSTR que contiene el certificado de la solicitud, el método devuelve S_OK.
Si se produce un error en el método, devuelve un valor HRESULT que indica el error. Para obtener una lista de códigos de error comunes, consulte Valores HRESULT comunes.
Comentarios
Una aplicación llamaría a este método para recuperar el certificado emitido por medio de una llamada anterior a ICertRequest3::Submit o ICertRequest3::RetrievePending.
Ejemplos
En el ejemplo siguiente se muestra cómo recuperar un 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 | Value |
---|---|
Cliente mínimo compatible | Windows XP [solo aplicaciones de escritorio] |
Servidor mínimo compatible | Windows Server 2003 [solo aplicaciones de escritorio] |
Plataforma de destino | Windows |
Encabezado | certcli.h (incluya Certsrv.h) |
Library | Certidl.lib |
Archivo DLL | Certcli.dll |