Funzione CertVerifyCTLUsage (wincrypt.h)
La funzione CertVerifyCTLUsage verifica che un soggetto sia attendibile per un utilizzo specificato trovando un elenco di attendibilità certificato firmato e valido per il tempo (CTL) con gli identificatori di utilizzo che contengono l'oggetto. L'oggetto di un certificato può essere identificato dal contesto del certificato o da qualsiasi identificatore univoco, ad esempio l'hash SHA1 del certificato del soggetto.
Sintassi
BOOL CertVerifyCTLUsage(
[in] DWORD dwEncodingType,
[in] DWORD dwSubjectType,
[in] void *pvSubject,
[in] PCTL_USAGE pSubjectUsage,
[in] DWORD dwFlags,
[in, optional] PCTL_VERIFY_USAGE_PARA pVerifyUsagePara,
[in, out] PCTL_VERIFY_USAGE_STATUS pVerifyUsageStatus
);
Parametri
[in] dwEncodingType
Specifica il tipo di codifica usato. Attualmente vengono usati solo X509_ASN_ENCODING e PKCS_7_ASN_ENCODING; Tuttavia, è possibile aggiungere altri tipi di codifica in futuro. Per entrambi i tipi di codifica correnti, usare
X509_ASN_ENCODING | PKCS_7_ASN_ENCODING.
[in] dwSubjectType
Se il parametro dwSubjectType è impostato su CTL_CERT_SUBJECT_TYPE, pvSubject punta a una struttura CERT_CONTEXT . Il membro SubjectAlgorithm della struttura viene esaminato per determinare la rappresentazione dell'identità del soggetto. Inizialmente, solo gli hash SHA1 e MD5 sono supportati come valori per SubjectAlgorithm. La proprietà hash appropriata viene ottenuta dalla struttura CERT_CONTEXT .
Se il parametro dwSubjectType è impostato su CTL_ANY_SUBJECT_TYPE, pvSubject punta alla struttura CTL_ANY_SUBJECT_INFO . Il membro SubjectAlgorithm di questa struttura deve corrispondere al tipo di algoritmo del CTL e il membro SubjectIdentifier deve corrispondere a una delle voci CTL.
Se dwSubjectType è impostato su entrambi i valori precedenti, dwEncodingType non viene usato.
[in] pvSubject
Valore usato insieme al parametro dwSubjectType .
[in] pSubjectUsage
Puntatore a una struttura CTL_USAGE utilizzata per specificare l'utilizzo previsto dell'oggetto.
[in] dwFlags
Se il CERT_VERIFY_INHIBIT_CTL_UPDATE_FLAG non è impostato, è possibile sostituire un CTL il cui tempo non è più valido in uno degli archivi specificati da rghCtlStore in CTL_VERIFY_USAGE_PARA . Quando sostituito, il CERT_VERIFY_UPDATED_CTL_FLAG è impostato nel membro dwFlags di pVerifyUsageStatus. Se questo flag è impostato, non verrà eseguito un aggiornamento, anche se viene ricevuto un CTL aggiornato per un CTL che si trova nell'archivio e il cui tempo non è più valido.
Se il CERT_VERIFY_TRUSTED_SIGNERS_FLAG è impostato, vengono cercati solo gli archivi di firma specificati da rghSignerStore in CTL_VERIFY_USAGE_PARA per trovare il firmatario. In caso contrario, gli archivi di firma forniscono origini aggiuntive per trovare il certificato del firmatario. Per altre informazioni, vedere la sezione Osservazioni.
Se CERT_VERIFY_NO_TIME_CHECK_FLAG è impostato, gli elenchi di controllo di accesso non vengono controllati per la validità del tempo. In caso contrario, sono.
Se CERT_VERIFY_ALLOW_MORE_USAGE_FLAG è impostato, il CTL può contenere identificatori di utilizzo oltre a quelli specificati da pSubjectUsage. In caso contrario, il CTL trovato non conterrà identificatori di utilizzo aggiuntivi.
[in, optional] pVerifyUsagePara
Puntatore a una struttura CTL_VERIFY_USAGE_PARA che specifica gli archivi da cercare per trovare il controllo CTL e gli archivi che contengono segni CTL accettabili. L'impostazione del membro ListIdentifier limita ulteriormente la ricerca.
[in, out] pVerifyUsageStatus
Puntatore a una struttura CTL_VERIFY_USAGE_STATUS . Il membro cbSize della struttura deve essere impostato sulle dimensioni, in byte, della struttura e tutti gli altri campi devono essere impostati su zero prima che venga chiamato CertVerifyCTLUsage . Per altre informazioni, vedere CTL_VERIFY_USAGE_STATUS.
Valore restituito
Se l'oggetto è attendibile per l'utilizzo specificato, viene restituito TRUE . In caso contrario, FALSE viene restituito. GetLastError può restituire uno dei codici di errore seguenti.
Valore | Descrizione |
---|---|
|
Nessuna funzione DLL o esportata è stata trovata per verificare l'utilizzo soggetto. |
|
La funzione chiamata non è stata in grado di eseguire un controllo di utilizzo sul soggetto. |
|
Il server era offline; pertanto, la funzione chiamata non è riuscita a completare il controllo di utilizzo. |
|
L'oggetto non è stato trovato in un CTL. |
|
Non è stato trovato alcun firmatario attendibile per verificare la firma del messaggio o dell'elenco di attendibilità. |
Il membro dwError del CTL_VERIFY_USAGE_PARA indicato da pVerifyUsageStatus è impostato sullo stesso codice di errore.
Commenti
CertVerifyCTLUsage è un dispatcher per le funzioni che possono essere installate usando un identificatore di oggetto (OID). Prima di tutto, tenta di trovare una funzione OID che corrisponde al primo identificatore dell'oggetto di utilizzo nella struttura CLT_USAGE puntata da pSubjectUsage. In caso contrario, usa le funzioni CertDllVerifyCTLUsage predefinite.
La funzione CertDllVerifyCTLUsage in Cryptnet.dll può essere installata usando un OID; ha le proprietà seguenti:
- Se gli archivi CTL vengono specificati da rghCtlStore in pVerifyUsagePara, vengono cercati solo tali archivi per trovare un CTL. In caso contrario, l'archivio del sistema trust viene cercato per trovare un CTL.
- Se CERT_VERIFY_TRUSTED_SIGNERS_FLAG è impostato, vengono cercati solo gli archivi di firma specificati da rghSignerStore in pVerifyUsagePara per trovare il certificato corrispondente al numero di certificazione e seriale del firmatario. In caso contrario, l'archivio dei messaggi CTL archivia gli archivi di firma specificati da rghSignerStore in pVerifyUsagePara, l'archivio del sistema di attendibilità, l'archivio di sistema CA, ROOT e gli archivi di sistema SPC ( Software Publisher Certificate ) vengono cercati per trovare il certificato del firmatario. In entrambi i casi, la chiave pubblica nel certificato trovato viene usata per verificare la firma del CTL.
- Se il CTL ha un membro NextUpdate impostato e CERT_VERIFY_NO_TIME_CHECK non è impostato, viene verificato per la validità del tempo.
- Se il CTL ottenuto dall'archivio ha un tempo non valido, viene eseguito un tentativo di ottenere una versione valida per il tempo. La funzione CertDllVerifyCTLUsage usa la proprietà NextUpdateLocation o l'estensione NextUpdateLocation del CTL oppure cerca le informazioni del firmatario per un attributo NextUpdateLocation .
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
Funzioni di verifica tramite elenchi di controllo di accesso