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 |
---|---|
|
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 |
---|---|
|
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. |
|
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. |
|
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 . |
|
Viene eseguita la ricerca solo nella cache degli URL. Internet non viene cercato. |
|
Apre solo gli archivi certificati del computer locale. Gli archivi certificati dell'utente corrente non vengono aperti. |
|
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
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per