Funzione CertFindChainInStore (wincrypt.h)

La funzione CertFindChainInStore trova il primo o il certificato successivo in un archivio che soddisfa i criteri specificati. Compila e verifica quindi un contesto della catena di certificati per tale certificato. Il certificato trovato e per il quale viene compilata la catena viene selezionato in base ai criteri stabiliti dai parametri dwFindFlags, dwFindType e pvFindPara . Questa funzione può essere usata in un ciclo per trovare tutti i certificati in un archivio certificati che corrispondono ai criteri di ricerca specificati e per compilare un contesto della catena di certificati per ogni certificato trovato.

Sintassi

PCCERT_CHAIN_CONTEXT CertFindChainInStore(
  [in] HCERTSTORE           hCertStore,
  [in] DWORD                dwCertEncodingType,
  [in] DWORD                dwFindFlags,
  [in] DWORD                dwFindType,
  [in] const void           *pvFindPara,
  [in] PCCERT_CHAIN_CONTEXT pPrevChainContext
);

Parametri

[in] hCertStore

Handle dell'archivio in cui cercare un certificato in cui viene compilata una catena. Questo handle viene passato come archivio aggiuntivo alla funzione CertGetCertificateChain durante la compilazione della catena.

[in] dwCertEncodingType

Tipo di codifica del certificato usato per codificare l'archivio. L'identificatore del tipo di codifica del messaggio , contenuto nell'alto word di questo valore, viene ignorato da questa funzione.

Questo parametro può essere il tipo di codifica del certificato attualmente definito di seguito.

Valore Significato
X509_ASN_ENCODING
1 (0x1)
Specifica la codifica del certificato X.509.

[in] dwFindFlags

Contiene opzioni aggiuntive per la ricerca. I valori possibili per questo parametro dipendono dal valore del parametro dwFindType .

Questo parametro può contenere zero o una combinazione di uno o più dei valori seguenti quando dwFindType contiene CERT_CHAIN_FIND_BY_ISSUER.

Valore Significato
CERT_CHAIN_FIND_BY_ISSUER_COMPARE_KEY_FLAG
Confronta la chiave pubblica nel certificato con la chiave pubblicadel provider del servizio di crittografia. Questo confronto è l'ultimo controllo eseguito sulla catena al momento della compilazione.

Poiché il membro hCryptProv di un emittente contiene una chiave privata, potrebbe essere necessario controllare più volte durante questo processo; per facilitare questo controllo, il membro dwAcquirePrivateKeyFlags può essere impostato nella struttura CERT_CHAIN_FIND_BY_ISSUER_PARA per abilitare la memorizzazione nella cache di tale hCryptProv.

CERT_CHAIN_FIND_BY_ISSUER_COMPLEX_CHAIN_FLAG
Per impostazione predefinita, viene verificata solo la prima catena semplice per individuare le corrispondenze del nome dell'autorità di certificazione. Con questo flag impostato, il valore predefinito viene sottoposto a override e vengono controllate anche le successive catene semplici per verificare la presenza di corrispondenze tra i nomi dell'autorità di certificazione.
CERT_CHAIN_FIND_BY_ISSUER_CACHE_ONLY_FLAG
Migliora le prestazioni di questa funzione causando la ricerca solo negli archivi di sistema memorizzati nella cache (Root, My, Ca, Trust) per trovare i certificati dell'autorità emittente. Se questo flag non è impostato, la funzione cerca gli archivi di sistema memorizzati nella cache e l'archivio rappresentato dal parametro hCertStore .
CERT_CHAIN_FIND_BY_ISSUER_CACHE_ONLY_URL_FLAG
Viene eseguita la ricerca solo nella cache degli URL. Internet non viene cercato.
CERT_CHAIN_FIND_BY_ISSUER_LOCAL_MACHINE_FLAG
Apre solo gli archivi certificati del computer locale. Gli archivi certificati dell'utente corrente non vengono aperti.
CERT_CHAIN_FIND_BY_ISSUER_NO_KEY_FLAG
Non viene eseguita alcuna verifica per determinare se il certificato ha una chiave privata associata.

[in] dwFindType

Determina i criteri da usare per trovare un certificato nell'archivio.

Questo parametro può essere il valore attualmente definito seguente.

CERT_CHAIN_FIND_BY_ISSUER

Trova il certificato in base al nome dell'emittente. Il parametro pvFindPara è un puntatore a una struttura CERT_CHAIN_FIND_BY_ISSUER_PARA che contiene membri che modificano la ricerca.

La catena di certificati viene compilata per un certificato con una chiave privata disponibile. Per impostazione predefinita, solo le autorità emittenti della prima catena semplice vengono confrontate con una corrispondenza con il nome dell'autorità di certificazione. Se questo flag è impostato, tutte le catene vengono controllate per un certificato dell'autorità di certificazione corrispondente a uno di un set di nomi di autorità emittenti.

Questa funzione confronta il nome BLOB passati nella struttura pvFindPara a qualsiasi autorità di certificazione (CA) nella catena, non solo l'autorità di certificazione nel certificato radice.

Questa funzione non esegue controlli di revoca.

Se pPrevChainContext non è NULL, questa funzione restituirà una catena per un certificato diverso ogni volta che viene chiamata la funzione. Se è presente un solo certificato appropriato, ma esistono due autorità di certificazione emittente corrispondenti, una delle quali viene revocata, è possibile che questa funzione restituisca la catena revocata. Se l'applicazione verifica la revoca stessa tramite chiamate alla funzione CertVerifyRevocation e trova la catena non idonea, una chiamata aggiuntiva alla funzione CertFindChainInStore non restituirà una catena che include lo stesso certificato dell'autorità di certificazione valida. Restituisce invece una catena completamente diversa con un certificato diverso o NULL, se non è possibile trovare tale catena.

[in] pvFindPara

Puntatore che contiene criteri di ricerca aggiuntivi. Il tipo e il formato dei dati a cui punta questo parametro dipendono dal valore del parametro dwFindType .

[in] pPrevChainContext

Puntatore a una struttura CERT_CHAIN_CONTEXT restituita da una chiamata precedente a questa funzione. La ricerca viene avviata da questo certificato. Per la prima chiamata a questa funzione, questo parametro deve essere NULL. Nelle chiamate successive è il puntatore restituito dalla chiamata precedente alla funzione . Se questo parametro non è NULL, questa funzione libera questa struttura.

Valore restituito

Se il contesto della prima o della catena successiva non viene compilato, viene restituito NULL . In caso contrario, viene restituito un puntatore a una struttura di sola lettura CERT_CHAIN_CONTEXT . La struttura CERT_CHAIN_CONTEXT viene liberata quando viene passata come parametro pPrevChainContext in una chiamata successiva a questa funzione. In caso contrario, la struttura CERT_CHAIN_CONTEXT deve essere liberata in modo esplicito chiamando la funzione CertFreeCertificateChain .

Commenti

Il parametro pPrevChainContext deve essere NULL nella prima chiamata per compilare il contesto della catena. Per compilare il contesto della catena successiva, pPrevChainContext viene impostato sulla struttura CERT_CHAIN_CONTEXT restituita da una chiamata precedente. Se pPrevChainContext non è NULL, la struttura viene sempre liberata da questa funzione usando la funzione CertFreeCertificateChain , anche se si verifica un errore.

Requisiti

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

Vedi anche

CERT_CHAIN_CONTEXT

CERT_CHAIN_FIND_BY_ISSUER_PARA

CertFreeCertificateChain

CertGetCertificateChain

Funzioni di verifica della catena di certificati