Condividi tramite


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
CRYPT_E_NO_VERIFY_USAGE_DLL
Nessuna funzione DLL o esportata è stata trovata per verificare l'utilizzo soggetto.
CRYPT_E_NO_VERIFY_USAGE_CHECK
La funzione chiamata non è stata in grado di eseguire un controllo di utilizzo sul soggetto.
CRYPT_E_VERIFY_USAGE_OFFLINE
Il server era offline; pertanto, la funzione chiamata non è riuscita a completare il controllo di utilizzo.
CRYPT_E_NOT_IN_CTL
L'oggetto non è stato trovato in un CTL.
CRYPT_E_NO_TRUSTED_SIGNER
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

CTL_VERIFY_USAGE_PARA

CTL_VERIFY_USAGE_STATUS

CertFindCTLInStore

CertFindSubjectInCTL

Funzioni di verifica tramite elenchi di controllo di accesso