Funzione CertSelectCertificateChains (wincrypt.h)
La funzione CertSelectCertificateChains recupera le catene di certificati in base ai criteri di selezione specificati.
Sintassi
BOOL CertSelectCertificateChains(
[in, optional] LPCGUID pSelectionContext,
[in] DWORD dwFlags,
[in, optional] PCCERT_SELECT_CHAIN_PARA pChainParameters,
[in] DWORD cCriteria,
[in, optional] PCCERT_SELECT_CRITERIA rgpCriteria,
[in] HCERTSTORE hStore,
[out] PDWORD pcSelection,
[out] PCCERT_CHAIN_CONTEXT **pprgpSelection
);
Parametri
[in, optional] pSelectionContext
Puntatore al GUID dello scenario di selezione del certificato da usare per questa chiamata.
[in] dwFlags
Flag per controllare il processo di selezione del certificato. Questo parametro può essere una combinazione di zero o più flag seguenti:
[in, optional] pChainParameters
Puntatore a una struttura CERT_SELECT_CHAIN_PARA per specificare i parametri per la compilazione della catena. Se NULL, verranno usati i parametri predefiniti.
Il membro pChainPara della struttura CERT_SELECT_CHAIN_PARA punta a una struttura CERT_CHAIN_PARA che può essere usata per abilitare la firma complessa.
[in] cCriteria
Numero di elementi nella matrice a cui punta la matrice rgpCriteria .
[in, optional] rgpCriteria
Puntatore a una matrice di strutture CERT_SELECT_CRITERIA che definiscono i criteri di selezione. Se questo parametro è impostato su NULL, il valore del parametro cCriteria deve essere zero.
[in] hStore
Handle in un archivio da cui selezionare i certificati.
[out] pcSelection
Puntatore a un valore DWORD per ricevere il numero di elementi nella matrice a cui punta il parametro pprgpSelection .
[out] pprgpSelection
Puntatore a un puntatore a una posizione per ricevere una matrice di CERT_CHAIN_CONTEXT struttura. La funzione CertSelectCertificateChains restituisce solo catene di certificati che corrispondono a tutti i criteri di selezione. Le voci nella matrice sono ordinate in base alla qualità, ad esempio la catena con la massima qualità è la prima voce.
L'archiviazione per la matrice viene allocata dalla funzione CertSelectCertificateChains . Per liberare la memoria allocata, è prima necessario rilasciare ogni singolo contesto della catena nella matrice chiamando la funzione CertFreeCertificateChain . È quindi necessario liberare la memoria chiamando la funzione CertFreeCertificateChainList .
Valore restituito
Se la funzione ha esito positivo, la funzione restituisce TRUE.
Se la funzione ha esito negativo, restituisce zero (FALSE). Per informazioni sull'errore estese, chiamare la funzione GetLastError .
Commenti
I criteri di selezione possono essere specificati tramite il parametro dwFlags , tramite il parametro rgpCriteria o tramite entrambi i parametri. Se non vengono specificati criteri di selezione, la funzione ha esito positivo e restituisce catene di certificati per tutti i certificati nell'archivio specificato dal parametro hStore .
Le catene di certificati selezionate sono ordinate in base alla logica di preferenza seguente:
- Preferisce i certificati che sono certificati smart card sui certificati che non sono basati su smart card.
- Preferisce i certificati con un periodo di validità più lungo (la data di scadenza è successiva).
- Se più certificati hanno la stessa data di scadenza, preferire i certificati rilasciati più di recente.
- Se c'è un tie, preferisce catene più brevi.
- CERT_SELECT_BY_ISSUER_NAME
- CERT_SELECT_BY_ISSUER_ATTR
- CERT_SELECT_BY_POLICY_OID
- Creare una struttura CERT_STRONG_SIGN_PARA , specificare i parametri di firma sicuri necessari e impostare un puntatore alla struttura nel membro pStrongSignPara di una struttura CERT_CHAIN_PARA .
- Impostare un puntatore alla struttura CERT_CHAIN_PARA nel membro pChainPara di una struttura CERT_SELECT_CHAIN_PARA .
- Impostare un puntatore alla struttura CERT_SELECT_CHAIN_PARA nel parametro pChainParameters della funzione (CertSelectCertificateChains).
Quando si abilita il controllo delle firme complesse, verrà ignorata qualsiasi catena di certificati che restituisce un errore di CERT_TRUST_IS_NOT_SIGNATURE_VALID nel campo dwErrorStatusdella struttura CERT_TRUST_STATUS. Il parametro pprgpSelection punta a una struttura CERT_CHAIN_CONTEXT che, a sua volta, punta alla struttura CERT_TRUST_STATUS . Il valore CERT_TRUST_HAS_WEAK_SIGNATURE è impostato anche per una firma debole.
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato | Windows 7 [app desktop | App UWP] |
Server minimo supportato | Windows Server 2008 R2 [app desktop | App UWP] |
Piattaforma di destinazione | Windows |
Intestazione | wincrypt.h |
Libreria | Crypt32.lib |
DLL | Crypt32.dll |
Vedi anche