Funzione CertGetIssuerCertificateFromStore (wincrypt.h)

La funzione CertGetIssuerCertificateFromStore recupera il contesto del certificato dall'archivio certificati per il primo o il successivo emittente del certificato soggetto specificato. Le nuove funzioni di verifica della catena di certificati sono consigliate anziché l'uso di questa funzione.

Sintassi

PCCERT_CONTEXT CertGetIssuerCertificateFromStore(
  [in]           HCERTSTORE     hCertStore,
  [in]           PCCERT_CONTEXT pSubjectContext,
  [in, optional] PCCERT_CONTEXT pPrevIssuerContext,
  [in, out]      DWORD          *pdwFlags
);

Parametri

[in] hCertStore

Handle di un archivio certificati.

[in] pSubjectContext

Puntatore a una struttura CERT_CONTEXT contenente le informazioni sull'oggetto. Questo parametro può essere ottenuto da qualsiasi archivio certificati o può essere creato dall'applicazione chiamante usando la funzione CertCreateCertificateContext .

[in, optional] pPrevIssuerContext

Puntatore a una struttura CERT_CONTEXT contenente le informazioni sull'autorità emittente. Un'autorità emittente può avere più certificati, soprattutto quando un periodo di validità sta per cambiare. Questo parametro deve essere NULL nella chiamata per ottenere il primo certificato dell'autorità emittente. Per ottenere il certificato successivo per l'autorità di certificazione, impostare pPrevIssuerContext sulla struttura CERT_CONTEXT restituita dalla chiamata precedente.

Questa funzione libera il CERT_CONTEXT a cui fa riferimento i valori non NULL di questo parametro.

[in, out] pdwFlags

I flag seguenti abilitano i controlli di verifica sul certificato restituito. Possono essere combinati usando un'operazione OR bit per bit per abilitare più verifiche.

Valore Significato
CERT_STORE_NO_CRL_FLAG
Indica che non è stato trovato alcun CRL corrispondente.
CERT_STORE_NO_ISSUER_FLAG
Indica che non è stato trovato alcun certificato dell'autorità di certificazione.
CERT_STORE_REVOCATION_FLAG
Controlla se il certificato soggetto si trova nell'elenco di revoche dell'autorità emittente.
CERT_STORE_SIGNATURE_FLAG
Usa la chiave pubblica nel certificato dell'autorità emittente per verificare la firma nel certificato soggetto.
CERT_STORE_TIME_VALIDITY_FLAG
Ottiene l'ora corrente e verifica che si trova entro il periodo di validità del certificato soggetto.
 

Se un controllo di verifica di un tipo abilitato ha esito positivo, il flag viene impostato su zero. Se ha esito negativo, il flag rimane impostato al momento della restituzione. Per CERT_STORE_REVOCATION_FLAG, la verifica ha esito positivo se la funzione non trova un CRL correlato al certificato soggetto.

Se CERT_STORE_REVOCATION_FLAG è impostato e l'emittente non dispone di un CRL nell'archivio, CERT_STORE_NO_CRL_FLAG viene impostato e CERT_STORE_REVOCATION_FLAG rimane impostato.

Se CERT_STORE_SIGNATURE_FLAG o CERT_STORE_REVOCATION_FLAG è impostato, CERT_STORE_NO_ISSUER_FLAG viene impostato se la funzione non trova un certificato dell'autorità di certificazione nell'archivio. Per informazioni dettagliate, vedere Osservazioni.

In caso di errore del controllo di verifica, viene comunque restituito un puntatore al CERT_CONTEXT dell'autorità emittente e GetLastError non viene aggiornato.

Valore restituito

Se la funzione ha esito positivo, il valore restituito è un puntatore a un'autorità di certificazione di sola lettura CERT_CONTEXT.

Se la funzione ha esito negativo e il primo o il certificato dell'autorità di certificazione successiva non viene trovato, il valore restituito è NULL.

Solo l'ultima struttura CERT_CONTEXT restituita deve essere liberata chiamando CertFreeCertificateContext. Quando il CERT_CONTEXT restituito da una chiamata alla funzione viene fornito come parametro pPrevIssuerContext in una chiamata successiva, il contesto viene liberato come parte dell'azione della funzione.

Per informazioni sugli errori estesi, chiamare GetLastError. Di seguito sono riportati alcuni possibili codici di errore.

Codice restituito Descrizione
CRYPT_E_NOT_FOUND
Non è stato trovato alcun emittente per il certificato soggetto.
CRYPT_E_SELF_SIGNED
Il certificato dell'autorità emittente corrisponde al certificato soggetto. Si tratta di un certificato radice autofirmato.
E_INVALIDARG
L'handle nel parametro hCertStore non corrisponde a quello del contesto del certificato a cui punta il parametro pPrevIssuerContext oppure in pdwFlags è stato impostato un flag non supportato.

Commenti

Il puntatore restituito viene liberato quando viene passato come parametro pPrevIssuerContext in una chiamata successiva alla funzione. In caso contrario, il puntatore deve essere liberato in modo esplicito chiamando CertFreeCertificateContext. Un valore pPrevIssuerContext che non è NULL viene sempre liberato da CertGetIssuerCertificateFromStore usando una chiamata a CertFreeCertificateContext, anche se si verifica un errore nella funzione.

CertDuplicateCertificateContext può essere chiamato per creare un duplicato del certificato dell'autorità emittente.

I valori esadecimali per dwFlags possono essere combinati usando un'operazione OR bit per bit per abilitare più verifiche. Ad esempio, per abilitare la validità della firma e dell'ora, il valore 0x00000003 viene passato in dwFlags all'input. In questo caso, se CERT_STORE_SIGNATURE_FLAG verifica ha esito positivo ma CERT_STORE_TIME_VALIDITY_FLAG verifica ha esito negativo, dwFlags restituisce come 0x00000002 nell'output.

Requisiti

   
Client minimo supportato Windows XP [app desktop | App UWP]
Server minimo supportato Windows Server 2003 [app desktop | App UWP]
Piattaforma di destinazione Windows
Intestazione wincrypt.h
Libreria Crypt32.lib
DLL Crypt32.dll

Vedi anche

Funzioni per i certificati