Funzione CryptVerifyCertificateSignatureEx (wincrypt.h)
La funzione CryptVerifyCertificateSignatureEx verifica la firma di un certificato soggetto, un elenco di revoche di certificati, una richiesta di certificato o una richiesta keygen usando la chiave pubblica dell'autorità emittente. La funzione non richiede l'accesso a una chiave privata.
Sintassi
BOOL CryptVerifyCertificateSignatureEx(
[in] HCRYPTPROV_LEGACY hCryptProv,
[in] DWORD dwCertEncodingType,
[in] DWORD dwSubjectType,
[in] void *pvSubject,
[in] DWORD dwIssuerType,
[in] void *pvIssuer,
[in] DWORD dwFlags,
[in, out, optional] void *pvExtra
);
Parametri
[in] hCryptProv
Questo parametro non viene usato e deve essere impostato su NULL.
Windows Server 2003 e Windows XP: Handle per il provider del servizio di crittografia usato per verificare la firma. Il tipo di dati di questo parametro è HCRYPTPROV.
Viene passato NULL a meno che non vi sia un motivo sicuro per il passaggio di un provider di crittografia specifico. Il passaggio di NULL determina l'acquisizione del provider RSA o DSS predefinito.
[in] dwCertEncodingType
Tipo di codifica del certificato usato per crittografare l'oggetto. 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] dwSubjectType
Tipo di oggetto. Questo parametro può essere uno dei tipi di oggetto seguenti.
Valore | Significato |
---|---|
|
pvSubject è un puntatore a una struttura CRYPT_DATA_BLOB . |
|
pvSubject è un puntatore a una struttura CCERT_CONTEXT . |
|
pvSubject è un puntatore a una struttura CCRL_CONTEXT . |
|
pvSubject è un puntatore a una struttura OCSP_BASIC_SIGNED_RESPONSE_INFO .
Windows Server 2003 e Windows XP: Questo tipo di soggetto non è supportato. |
[in] pvSubject
Puntatore a una struttura del tipo indicato da dwSubjectType che contiene la firma da verificare.
[in] dwIssuerType
Tipo di autorità di certificazione. Questo parametro può essere uno dei tipi di autorità di certificazione seguenti.
Valore | Significato |
---|---|
|
pvIssuer è un puntatore a una struttura CERT_PUBLIC_KEY_INFO . |
|
pvIssuer è un puntatore a una struttura CCERT_CONTEXT . |
|
pvIssuer è un puntatore a una struttura CCERT_CHAIN_CONTEXT . |
|
pvIssuer deve essere NULL. |
[in] pvIssuer
Puntatore a una struttura del tipo indicato dal valore di dwIssuerType. La struttura contiene l'accesso alla chiave pubblica necessaria per verificare la firma.
[in] dwFlags
Flag che modificano il comportamento della funzione. Può essere zero o un OR bit per bit dei valori seguenti.
Valore | Significato |
---|---|
|
Se si imposta questo flag e CryptVerifyCertificateSignatureEx rileva un algoritmo MD2 o MD4, la funzione restituisce FALSE e imposta GetLastError su NTE_BAD_ALGID. La firma è ancora verificata, ma questa combinazione di errori consente al chiamante, ora sapendo che è stato usato un algoritmo MD2 o MD4, per decidere se considerare attendibile o rifiutare la firma.
Windows 8 e Windows Server 2012: Viene avviato il supporto per questo flag. |
|
Imposta le proprietà della firma complesse, dopo la verifica riuscita, sull'oggetto a cui punta il parametro pvSubject .
La proprietà seguente viene impostata nel contesto del certificato:
Nota Questo flag è applicabile solo se CRYPT_VERIFY_CERT_SIGN_SUBJECT_CRL è specificato nel parametro dwSubjectType .
|
|
Restituisce un puntatore a una struttura CRYPT_VERIFY_CERT_SIGN_STRONG_PROPERTIES_INFO nel parametro pvExtra . La struttura contiene la lunghezza, in bit, della chiave pubblica e i nomi degli algoritmi di firma e hash usati.
È necessario chiamare CryptMemFree per liberare la struttura. Se non è possibile allocare memoria per la struttura CRYPT_VERIFY_CERT_SIGN_STRONG_PROPERTIES_INFO , questa funzione restituisce correttamente ma imposta il parametro pvExtra su NULL. Nota Questo flag è applicabile solo se CRYPT_VERIFY_CERT_SIGN_SUBJECT_OCSP_BASIC_SIGNED_RESPONSE è specificato nel parametro dwSubjectType .
|
[in, out, optional] pvExtra
Puntatore a una struttura CRYPT_VERIFY_CERT_SIGN_STRONG_PROPERTIES_INFO se il parametro dwFlags è impostato su CRYPT_VERIFY_CERT_SIGN_RETURN_STRONG_PROPERTIES_FLAG.
È necessario chiamare CryptMemFree per liberare la struttura.
Valore restituito
Restituisce un valore diverso da zero se ha esito positivo o zero in caso contrario.
Per informazioni sugli errori estesi, chiamare GetLastError.
Codice restituito | Descrizione |
---|---|
|
Tipo di codifica del certificato non valido. Attualmente è supportato solo X509_ASN_ENCODING . |
|
L'identificatore di oggetto (OID) dell'algoritmo di firma non esegue il mapping a un algoritmo hash noto o supportato. |
|
La firma non è valida. |
Se la funzione ha esito negativo, GetLastError potrebbe restituire un errore di codifica astratta Notation One (ASN.1). Per informazioni su questi errori, vedere Codifica ASN.1/Decodifica dei valori restituiti.
Commenti
Il buffer soggetto può contenere un BLOB codificato o un contesto per un certificato o CRL. Nel caso di un contesto di certificato, se i parametri della chiave pubblica del certificato sono mancanti e se questi parametri possono essere ereditati dall'autorità di certificazione del certificato, ad esempio dal parametro chiave pubblica DSS, la proprietà CERT_PUBKEY_ALG_PARA_PROP_ID del contesto viene aggiornata con i parametri dell'algoritmo di chiave pubblica dell'autorità emittente per una firma valida.
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 |