Metodo ICertRequest::GetCertificate (certcli.h)
Il metodo GetCertificate restituisce il certificato rilasciato per la richiesta come certificato X.509 o facoltativamente pacchetto in un messaggio PKCS ( Public Key Cryptography Standards ) #7 che contiene la catena di certificati completa per il server Servizi certificati .
Sintassi
HRESULT GetCertificate(
[in] LONG Flags,
[out] BSTR *pstrCertificate
);
Parametri
[in] Flags
Flag per il formato e se è inclusa la catena di certificati completa.
Il formato del certificato restituito può essere uno dei flag seguenti.
Valore | Significato |
---|---|
|
Formato BASE64 con inizio/fine |
|
Formato BASE64 senza inizio/fine |
|
Formato binario |
I flag seguenti possono essere combinati con il flag di formato.
Valore | Significato |
---|---|
|
Includere la catena di certificati completa nell'elemento PKCS #7.
Se questo flag non è specificato, viene restituito solo il certificato richiesto, in formato X.509 . |
|
Includere elenchi di revoche di certificati (CRLs) in PKCS #7. |
Ad esempio, per recuperare un certificato binario con catena di certificati completa in C++ si scriverà quanto segue.
hResult = pCertReq->GetCACertificate(FALSE, bstrConfig,
CR_OUT_BINARY | CR_OUT_CHAIN, &bstrCert);
[out] pstrCertificate
Puntatore a BSTR contenente il certificato, nel formato specificato.
Quando si usa questo metodo, creare una variabile di tipo BSTR , impostare la variabile uguale a NULL e quindi passare l'indirizzo di questa variabile come pstrCertificate. Al termine dell'uso del certificato a cui fa riferimento pstrCertificate, liberarlo chiamando la funzione SysFreeString .
Valore restituito
Se il metodo imposta *pstrCertificate sul BSTR contenente il certificato per la richiesta, il metodo restituisce S_OK.
Se il metodo ha esito negativo, restituisce un valore HRESULT che indica l'errore. Per un elenco di codici di errore comuni, vedere Valori HRESULT comuni.
Commenti
Un'applicazione chiama questo metodo per recuperare il certificato rilasciato tramite una chiamata precedente a ICertRequest3::Submit o ICertRequest3::RetrievePending.
Esempio
Nell'esempio seguente viene illustrato il recupero di un certificato.
#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;
}
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato | Windows XP [solo app desktop] |
Server minimo supportato | Windows Server 2003 [solo app desktop] |
Piattaforma di destinazione | Windows |
Intestazione | certcli.h (include Certsrv.h) |
Libreria | Certidl.lib |
DLL | Certcli.dll |