Funzione CertGetCertificateContextProperty (wincrypt.h)

La funzione CertGetCertificateContextProperty recupera le informazioni contenute in una proprietà estesa di un contesto di certificato.

Sintassi

BOOL CertGetCertificateContextProperty(
  [in]      PCCERT_CONTEXT pCertContext,
  [in]      DWORD          dwPropId,
  [out]     void           *pvData,
  [in, out] DWORD          *pcbData
);

Parametri

[in] pCertContext

Puntatore alla struttura CERT_CONTEXT del certificato contenente la proprietà da recuperare.

[in] dwPropId

Proprietà da recuperare. Gli identificatori attualmente definiti e il tipo di dati da restituire in pvData sono elencati nella tabella seguente.

CERT_ACCESS_STATE_PROP_ID

Tipo di dati pvData: puntatore a un valore DWORD .

Restituisce un valore DWORD che indica se le operazioni di scrittura nel certificato vengono mantenute. Il valore DWORD non è impostato se il certificato si trova in un archivio di memoria o in un archivio basato sul Registro di sistema aperto come di sola lettura.

CERT_AIA_URL_RETRIEVED_PROP_ID

Questo identificatore è riservato.

CERT_ARCHIVED_KEY_HASH_PROP_ID

Tipo di dati pvData: puntatore a una matrice di valori BYTE . Le dimensioni di questa matrice vengono specificate nel parametro pcbData .

Restituisce un hash di chiave crittografato salvato in precedenza per il contesto del certificato.

CERT_ARCHIVED_PROP_ID

Tipo di dati pvData: NULL. Se la funzione CertGetCertificateContextProperty restituisce true, l'ID proprietà specificato esiste per la CERT_CONTEXT.

Indica che il certificato viene ignorato durante le enumerazioni. Un certificato con questo set di proprietà viene trovato con operazioni di ricerca esplicite, ad esempio quelle usate per trovare un certificato con un hash specifico o un numero di serie. Nessun dato in pvData è associato a questa proprietà.

CERT_AUTHORITY_INFO_ACCESS_PROP_ID

Questo identificatore è riservato.

CERT_AUTO_ENROLL_PROP_ID

Tipo di dati pvData: puntatore a una matrice di valori BYTE . Le dimensioni di questa matrice vengono specificate nel parametro pcbData .

Restituisce una stringa Unicode con terminazione null che nomi il tipo di certificato per cui è stato registrato automaticamente il certificato.

CERT_AUTO_ENROLL_RETRY_PROP_ID

Questo identificatore è riservato.

CERT_BACKED_UP_PROP_ID

Questo identificatore è riservato.

CERT_CA_DISABLE_CRL_PROP_ID

Tipo di dati pvData: puntatore a una matrice di valori BYTE . Le dimensioni di questa matrice vengono specificate nel parametro pcbData .

Disabilita il recupero dell'elenco di revoche di certificati (CRL) per i certificati usati dall'autorità di certificazione (CA). Se il certificato CA contiene questa proprietà, deve includere anche la proprietà CERT_CA_OCSP_AUTHORITY_INFO_ACCESS_PROP_ID .

CERT_CA_OCSP_AUTHORITY_INFO_ACCESS_PROP_ID

Tipo di dati pvData: puntatore a una matrice di valori BYTE . Le dimensioni di questa matrice vengono specificate nel parametro pcbData .

Contiene l'elenco degli URL del protocollo di stato del certificato online (OCSP) da usare per i certificati rilasciati dal certificato CA. Il contenuto della matrice è la notazione sintassi astratta one (ASN.1)byte codificati di una struttura X509_AUTHORITY_INFO_ACCESS in cui pszAccessMethod è impostato su szOID_PKIX_OCSP.

CERT_CROSS_CERT_DIST_POINTS_PROP_ID

Tipo di dati pvData: puntatore a una matrice di valori BYTE . Le dimensioni di questa matrice vengono specificate nel parametro pcbData .

Posizione dei certificati incrociati. Attualmente, questo identificatore è applicabile solo ai certificati e non agli elenchi di attendibilità dei certificati o agli elenchi di attendibilità dei certificati .

La matrice BYTE contiene una struttura con codifica ASN.1 decodificata tramite la funzione CryptDecodeObject con un valore CROSS_CERT_DIST_POINTS_INFO X509_CROSS_CERT_DIST_POINTS per il parametro lpszStuctType.

CERT_CTL_USAGE_PROP_ID

Tipo di dati pvData: puntatore a una matrice di valori BYTE . Le dimensioni di questa matrice vengono specificate nel parametro pcbData .

Restituisce una matrice di byte che contengono una struttura di CTL_USAGE con codifica ASN.1.

CERT_DATE_STAMP_PROP_ID

Tipo di dati pvData: puntatore a una struttura FILETIME .

Ora in cui il certificato è stato aggiunto all'archivio.

CERT_DESCRIPTION_PROP_ID

Tipo di dati pvData: puntatore a una matrice di valori BYTE . Le dimensioni di questa matrice vengono specificate nel parametro pcbData .

Restituisce la proprietà visualizzata dall'interfaccia utente del certificato. Questa proprietà consente all'utente di descrivere l'uso del certificato.

CERT_EFS_PROP_ID

Questo identificatore è riservato.

CERT_ENHKEY_USAGE_PROP_ID

Tipo di dati pvData: puntatore a una matrice di valori BYTE . Le dimensioni di questa matrice vengono specificate nel parametro pcbData .

Restituisce una matrice di byte che contengono una struttura di CERT_ENHKEY_USAGE con codifica ASN.1. Questa struttura contiene una matrice di identificatori dell'oggetto Utilizzo chiavi avanzato (OID), ognuna delle quali specifica un uso valido del certificato.

CERT_ENROLLMENT_PROP_ID

Tipo di dati pvData: puntatore a una matrice di valori BYTE . Le dimensioni di questa matrice vengono specificate nel parametro pcbData .

Informazioni di registrazione della richiesta in sospeso contenente RequestID, CADNSName, CAName e DisplayName. Il formato dei dati è definito come indicato di seguito.

Byte Contenuto
Primi 4 byte ID richiesta in sospeso
4 byte successivi Dimensioni CADNSName, in caratteri, tra cui il carattere Null terminante, seguito dalla stringa CADNSName con carattere Null terminante
4 byte successivi Dimensioni CAName, in caratteri, tra cui il carattere Null terminante, seguito dalla stringa CAName con carattere Null terminante
4 byte successivi Dimensioni displayName, in caratteri, incluso il carattere Null terminante, seguito dalla stringa DisplayName con carattere null terminante
 

CERT_EXTENDED_ERROR_INFO_PROP_ID

Tipo di dati pvData: puntatore a una matrice di valori BYTE . Le dimensioni di questa matrice vengono specificate nel parametro pcbData .

Restituisce una stringa di caratteri Unicode con terminazione null contenente informazioni di errore estese per il contesto del certificato.

CERT_FORTEZZA_DATA_PROP_ID

Questo identificatore è riservato.

CERT_FRIENDLY_NAME_PROP_ID

Tipo di dati pvData: puntatore a una matrice di valori BYTE . Le dimensioni di questa matrice vengono specificate nel parametro pcbData .

Restituisce una stringa di caratteri Unicode con terminazione null contenente il nome visualizzato per il certificato.

CERT_HASH_PROP_ID

Tipo di dati pvData: puntatore a una matrice di valori BYTE . Le dimensioni di questa matrice vengono specificate nel parametro pcbData .

Restituisce l'hash SHA1. Se l'hash non esiste, viene calcolato usando la funzione CryptHashCertificate .

CERT_HCRYPTPROV_OR_NCRYPT_KEY_HANDLE_PROP_ID

Tipo di dati pvData: puntatore a un tipo di dati HCRYPTPROV_OR_NCRYPT_KEY_HANDLE .

Restituisce la scelta HCRYPTPROV o NCRYPT_KEY_HANDLE .

CERT_HCRYPTPROV_TRANSFER_PROP_ID

Restituisce l'handle di chiave API di crittografia (CAPI) associato al certificato. Il chiamante è responsabile della liberazione dell'handle. Non verrà liberato quando il contesto viene liberato. Il valore della proprietà viene rimosso dopo che viene restituito. Se si chiama questa proprietà in un contesto con una chiave CNG, CRYPT_E_NOT_FOUND viene restituita.

CERT_IE30_RESERVED_PROP_ID

Questo identificatore è riservato.

CERT_ISSUER_PUBLIC_KEY_MD5_HASH_PROP_ID

Tipo di dati pvData: puntatore a una matrice di valori BYTE . Le dimensioni di questa matrice vengono specificate nel parametro pcbData .

Hash MD5 della chiave pubblica associata alla chiave privata usata per firmare questo certificato.

CERT_ISSUER_SERIAL_NUMBER_MD5_HASH_PROP_ID

Tipo di dati pvData: puntatore a una matrice di valori BYTE . Le dimensioni di questa matrice vengono specificate nel parametro pcbData .

Hash MD5 del nome dell'autorità di certificazione e del numero di serie di questo certificato.

CERT_KEY_CONTEXT_PROP_ID

Tipo di dati pvData: puntatore a una struttura CERT_KEY_CONTEXT .

Restituisce una struttura CERT_KEY_CONTEXT .

CERT_KEY_IDENTIFIER_PROP_ID

Tipo di dati pvData: puntatore a una matrice di valori BYTE . Le dimensioni di questa matrice vengono specificate nel parametro pcbData .

Se inesistente, cerca l'estensione szOID_SUBJECT_KEY_IDENTIFIER. In caso contrario, viene eseguito un hash SHA1 nel membro SubjectPublicKeyInfo del certificato per produrre i valori dell'identificatore.

CERT_KEY_PROV_HANDLE_PROP_ID

Tipo di dati pvData: puntatore a un valore HCRYPTPROV .

Restituisce l'handle del provider ottenuto da CERT_KEY_CONTEXT_PROP_ID.

CERT_KEY_PROV_INFO_PROP_ID

Tipo di dati pvData: puntatore a una struttura CRYPT_KEY_PROV_INFO .

Restituisce un puntatore a una struttura di CRYPT_KEY_PROV_INFO .

CERT_KEY_SPEC_PROP_ID

Tipo di dati pvData: puntatore a un valore DWORD .

Restituisce un valore DWORD che specifica la chiave privata ottenuta da CERT_KEY_CONTEXT_PROP_ID se presente. In caso contrario, se esiste CERT_KEY_PROV_INFO_PROP_ID, è l'origine di dwKeySpec.

CERT_MD5_HASH_PROP_ID

Tipo di dati pvData: puntatore a una matrice di valori BYTE . Le dimensioni di questa matrice vengono specificate nel parametro pcbData .

Restituisce l'hash MD5. Se l'hash non esiste, viene calcolato usando la funzione CryptHashCertificate .

CERT_NCRYPT_KEY_HANDLE_PROP_ID

Tipo di dati pvData: puntatore a un tipo di dati NCRYPT_KEY_HANDLE .

Restituisce una scelta di CERT_NCRYPT_KEY_SPEC se applicabile.

CERT_NCRYPT_KEY_HANDLE_TRANSFER_PROP_ID

Restituisce l'handle della chiave CNG associato al certificato. Il chiamante è responsabile della liberazione dell'handle. Non verrà liberato quando il contesto viene liberato. Il valore della proprietà viene rimosso dopo che viene restituito. Se si chiama questa proprietà in un contesto con una chiave CAPI legacy, viene restituita CRYPT_E_NOT_FOUND .

CERT_NEW_KEY_PROP_ID

Questo identificatore è riservato.

CERT_NEXT_UPDATE_LOCATION_PROP_ID

Tipo di dati pvData: puntatore a una matrice di valori BYTE . Le dimensioni di questa matrice vengono specificate nel parametro pcbData .

Restituisce la struttura di CERT_ALT_NAME_INFO con codifica ASN.1.

CERT_NEXT_UPDATE_LOCATION_PROP_ID è attualmente usato solo con le dll.

CERT_NO_AUTO_EXPIRE_CHECK_PROP_ID

Questo identificatore è riservato.

CERT_OCSP_CACHE_PREFIX_PROP_ID

Questo identificatore è riservato.

CERT_OCSP_RESPONSE_PROP_ID

Tipo di dati pvData: puntatore a una matrice di valori BYTE . Le dimensioni di questa matrice vengono specificate nel parametro pcbData .

Restituisce una risposta OCSP codificata per questo certificato.

CERT_PUB_KEY_CNG_ALG_BIT_LENGTH_PROP_ID

Tipo di dati pvData: puntatore a una stringa Unicode con terminazione null.

Restituisce una stringa L"<PUBKEY>/<BITLENGTH>" che rappresenta l'algoritmo di chiave pubblica e la lunghezza del bit del certificato. Sono supportati gli algoritmi PUBKEY> seguenti<:

  • L"RSA" (BCRYPT_RSA_ALGORITHM)
  • L"DSA" (BCRYPT_DSA_ALGORITHM)
  • L"ECDSA" (SSL_ECDSA_ALGORITHM)
Windows 8 e Windows Server 2012: viene avviato il supporto per questa proprietà.

CERT_PUBKEY_ALG_PARA_PROP_ID

Tipo di dati pvData: puntatore a una matrice di valori BYTE . Le dimensioni di questa matrice vengono specificate nel parametro pcbData .

Per le chiavi pubbliche che supportano l'ereditarietà dei parametri dell'algoritmo, restituisce i parametri dell'algoritmo PublicKey con codifica ASN.1. Per Digital Signature Standard (DSS), restituisce i parametri codificati usando la funzione CryptEncodeObject . Questa proprietà viene usata solo se viene definita CMS_PKCS7.

CERT_PUBKEY_HASH_RESERVED_PROP_ID

Questo identificatore è riservato.

CERT_PVK_FILE_PROP_ID

Tipo di dati pvData: puntatore a una matrice di valori BYTE . Le dimensioni di questa matrice vengono specificate nel parametro pcbData .

Restituisce una stringa di caratteri Unicode wide con terminazione Null contenente il nome del file contenente la chiave privata associata alla chiave pubblica del certificato.

CERT_RENEWAL_PROP_ID

Tipo di dati pvData: puntatore a una matrice di valori BYTE . Le dimensioni di questa matrice vengono specificate nel parametro pcbData .

Restituisce l'hash del certificato rinnovato.

CERT_REQUEST_ORIGINATOR_PROP_ID

Tipo di dati pvData: puntatore a una matrice di valori BYTE . Le dimensioni di questa matrice vengono specificate nel parametro pcbData .

Restituisce una stringa Unicode con terminazione null contenente il nome del computer DNS per l'origine della richiesta di contesto del certificato.

CERT_ROOT_PROGRAM_CERT_POLICIES_PROP_ID

Tipo di dati pvData: puntatore a una matrice di valori BYTE . Le dimensioni di questa matrice vengono specificate nel parametro pcbData .

Restituisce un puntatore a una struttura di CERT_POLICIES_INFO codificata che contiene i criteri dell'applicazione del certificato radice per il contesto. Questa proprietà può essere decodificata usando la funzione CryptDecodeObject con il parametro lpszStructType impostato su X509_CERT_POLICIES e il parametro dwCertEncodingType impostato su una combinazione diX509_ASN_ENCODINGor bit per bit PKCS_7_ASN_ENCODING.

CERT_ROOT_PROGRAM_NAME_CONSTRAINTS_PROP_ID

Questo identificatore è riservato.

CERT_SHA1_HASH_PROP_ID

Tipo di dati pvData: puntatore a una matrice di valori BYTE . La dimensione di questa matrice viene specificata nel parametro pcbData .

Restituisce l'hash SHA1. Se l'hash non esiste, viene calcolato usando la funzione CryptHashCertificate .

CERT_SIGN_HASH_CNG_ALG_PROP_ID

Tipo di dati pvData: puntatore a una stringa Unicode con terminazione Null.

Restituisce la stringa L"<SIGNATURE>/<HASH>" che rappresenta la firma del certificato. Il <valore SIGNATURE> identifica l'algoritmo di chiave pubblica CNG. Sono supportati gli algoritmi seguenti:

  • L"RSA" (BCRYPT_RSA_ALGORITHM)
  • L"DSA" (BCRYPT_DSA_ALGORITHM)
  • L"ECDSA" (SSL_ECDSA_ALGORITHM)
Il <valore HASH> identifica l'algoritmo hash CNG. Sono supportati gli algoritmi seguenti:
  • L"MD5" (BCRYPT_MD5_ALGORITHM)
  • L"SHA1" (BCRYPT_SHA1_ALGORITHM)
  • L"SHA256" (BCRYPT_SHA256_ALGORITHM)
  • L"SHA384" (BCRYPT_SHA384_ALGORITHM)
  • L"SHA512" (BCRYPT_SHA512_ALGORITHM)
Di seguito sono riportati alcuni esempi comuni:
  • L"RSA/SHA1"
  • L"RSA/SHA256"
  • L"ECDSA/SHA256"
Windows 7 e Windows Server 2008 R2: Viene avviato il supporto per questa proprietà.

CERT_SIGNATURE_HASH_PROP_ID

Tipo di dati pvData: puntatore a una matrice di valori BYTE . La dimensione di questa matrice viene specificata nel parametro pcbData .

Restituisce l'hash della firma. Se l'hash non esiste, viene calcolato usando la funzione CryptHashToBeSigned . La lunghezza dell'hash è di 20 byte per SHA e 16 per MD5.

CERT_SMART_CARD_DATA_PROP_ID

Tipo di dati pvData: puntatore a una matrice di valori BYTE . La dimensione di questa matrice viene specificata nel parametro pcbData .

Restituisce un puntatore ai dati della smart card codificati. Prima di chiamare CertGetCertificateContextProperty, è possibile usare questa costante per recuperare un certificato di smart card usando la funzione CertFindCertificateInStore con il parametro pvFindPara impostato su CERT_SMART_CARD_DATA_PROP_ID e il parametro dwFindType impostato su CERT_FIND_PROPERTY.

CERT_SMART_CARD_ROOT_INFO_PROP_ID

Tipo di dati pvData: puntatore a una matrice di valori BYTE . La dimensione di questa matrice viene specificata nel parametro pcbData .

Restituisce un puntatore a una struttura CRYPT_SMART_CARD_ROOT_INFO codificata.

CERT_SOURCE_LOCATION_PROP_ID

Questo identificatore è riservato.

CERT_SOURCE_URL_PROP_ID

Questo identificatore è riservato.

CERT_SUBJECT_DISABLE_CRL_PROP_ID

Questo identificatore è riservato.

CERT_SUBJECT_INFO_ACCESS_PROP_ID

Tipo di dati pvData: puntatore a una matrice di valori BYTE . La dimensione di questa matrice viene specificata nel parametro pcbData .

Restituisce l'estensione dell'accesso alle informazioni sull'oggetto del contesto del certificato come struttura di CERT_SUBJECT_INFO_ACCESS codificata.

CERT_SUBJECT_NAME_MD5_HASH_PROP_ID

Tipo di dati pvData: puntatore a una matrice di valori BYTE . La dimensione di questa matrice viene specificata nel parametro pcbData .

Restituisce un hash MD5 del nome soggetto codificato del contesto del certificato.

CERT_SUBJECT_OCSP_AUTHORITY_INFO_ACCESS_PROP_ID

Questo identificatore è riservato.

CERT_SUBJECT_PUB_KEY_BIT_LENGTH_PROP_ID

Tipo di dati pvData: puntatore a un valore DWORD .

Restituisce la lunghezza, in bit, della chiave pubblica nel certificato.

Windows 8 e Windows Server 2012: inizia il supporto per questa proprietà.

CERT_SUBJECT_PUBLIC_KEY_MD5_HASH_PROP_ID

Tipo di dati pvData: puntatore a una matrice di valori BYTE . La dimensione di questa matrice viene specificata nel parametro pcbData .

Restituisce l'hash MD5 della chiave pubblica del certificato.

Per tutti gli identificatori di proprietà definiti dall'utente, pvData punta a una matrice di valori BYTE .

Per altre informazioni su ogni identificatore di proprietà, vedere la documentazione sul parametro dwPropId in CertSetCertificateContextProperty.

[out] pvData

Puntatore a un buffer per ricevere i dati come determinato da dwPropId. Le strutture a cui puntano i membri di una struttura restituita vengono restituite anche in base alla struttura di base. Pertanto, le dimensioni contenute in pcbData spesso superano le dimensioni della struttura di base.

Questo parametro può essere NULL per impostare le dimensioni delle informazioni a scopo di allocazione della memoria. Per altre informazioni, vedere Recupero di dati di lunghezza sconosciuta.

[in, out] pcbData

Puntatore a un valore DWORD che specifica le dimensioni, in byte, del buffer a cui punta il parametro pvData . Quando la funzione viene restituita, il valore DWORD contiene il numero di byte da archiviare nel buffer.

Per ottenere le dimensioni necessarie di un buffer in fase di esecuzione, passare NULL per il parametro pvData e impostare il valore a cui punta questo parametro su zero. Se il parametro pvData non è NULL e le dimensioni specificate in pcbData sono inferiori al numero di byte necessari per contenere i dati, la funzione ha esito negativo, GetLastError restituisce ERROR_MORE_DATA e la dimensione richiesta viene inserita nella variabile a cui punta il parametro pcbData .

Nota Quando si elaborano i dati restituiti nel buffer, le applicazioni devono usare le dimensioni effettive dei dati restituiti. Le dimensioni effettive possono essere leggermente inferiori alle dimensioni del buffer specificato nell'input. In caso di input, le dimensioni del buffer vengono in genere specificate sufficientemente grandi per garantire che i dati di output più grandi possibili si adattino al buffer. Nell'output la variabile a cui punta questo parametro viene aggiornata in modo da riflettere le dimensioni effettive dei dati copiati nel buffer.
 

Valore restituito

Se la funzione ha esito positivo, la funzione restituisce TRUE.

Se la funzione ha esito negativo, restituisce FALSE. Per informazioni sugli errori estesi, chiamare GetLastError.

Di seguito sono riportati alcuni possibili codici di errore.

Codice restituito Descrizione
CRYPT_E_NOT_FOUND
Il certificato non dispone della proprietà specificata.
ERROR_MORE_DATA
Se il buffer specificato dal parametro pvData non è sufficientemente grande da contenere i dati restituiti, la funzione imposta il codice ERROR_MORE_DATA e archivia le dimensioni del buffer necessarie, in byte, nella variabile a cui punta pcbData.
 

Gli errori della funzione chiamata CryptHashCertificate possono essere propagati a questa funzione.

Commenti

Le proprietà non vengono archiviate all'interno di un certificato. In genere, sono associati a un certificato dopo la ricezione della risposta del certificato e quindi salvati con il certificato nell'archivio. Per motivi di sicurezza, è consigliabile convalidare i valori delle proprietà prima di salvarli e salvare solo le proprietà informative, ad esempio il valore CERT_FRIENDLY_NAME_PROP_ID negli archivi utente. Tutti gli altri tipi di proprietà devono essere salvati negli archivi computer locali.

Il codice può usare una macro per valutare la classe di hash per un contesto di certificato. Per altre informazioni, vedere CertSetCertificateContextProperty.

Esempio

Per esempi che usano questa funzione, vedere Programma C di esempio: Recupero e impostazione delle proprietà del certificato e programma C di esempio: presentazione dei certificati in un archivio.

Requisiti

   
Client minimo supportato Windows XP [app desktop | App UWP]
Server minimo supportato Windows Server 2003 [app desktop | App UWP]
Piattaforma di destinazione Windows
Intestazione wincrypt.h
Libreria Crypt32.lib
DLL Crypt32.dll

Vedi anche

CERT_KEY_CONTEXT

CertCreateCertificateContext

CertSetCertificateContextProperty

CryptHashCertificate

CryptHashToBeSigned

Funzioni delle proprietà estese