Funzione CertSetCertificateContextProperty (wincrypt.h)

La funzione CertSetCertificateContextProperty imposta una proprietà estesa per un contesto di certificato specificato.

Sintassi

BOOL CertSetCertificateContextProperty(
  [in] PCCERT_CONTEXT pCertContext,
  [in] DWORD          dwPropId,
  [in] DWORD          dwFlags,
  [in] const void     *pvData
);

Parametri

[in] pCertContext

Puntatore a una struttura CERT_CONTEXT .

[in] dwPropId

Proprietà da impostare. Il valore di dwPropId determina il tipo e il contenuto del parametro pvData . Gli identificatori attualmente definiti e i relativi tipi pvData correlati sono i seguenti.

NotaCRYPT_HASH_BLOB e CRYPT_DATA_BLOB sono descritti nell'argomento CRYPT_INTEGER_BLOB .
 

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 sono persistenti. Il valore DWORD non viene 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 struttura CRYPT_HASH_BLOB .

Questa proprietà salva un hash della chiave crittografata per il contesto del certificato.

CERT_ARCHIVED_PROP_ID

Tipo di dati pvData: puntatore a una struttura CRYPT_DATA_BLOB .

Indica che il certificato viene ignorato durante le enumerazioni. Un certificato con questo set di proprietà viene comunque trovato con operazioni di ricerca esplicite, ad esempio la ricerca di un certificato con un hash specifico o un numero di serie specifico. Questa proprietà può essere impostata sul BLOB vuoto, {0,NULL}.

CERT_AUTHORITY_INFO_ACCESS_PROP_ID

Questo identificatore è riservato.

CERT_AUTO_ENROLL_PROP_ID

Tipo di dati pvData: puntatore a una struttura CRYPT_DATA_BLOB .

Proprietà impostata dopo la registrazione di un certificato tramite Registrazione automatica. La struttura CRYPT_DATA_BLOB a cui punta pvData include un nome Unicode con terminazione Null del tipo di certificato per il quale il certificato è stato registrato automaticamente. Tutte le chiamate successive a Registrazione automatica per il certificato controllano la presenza di questa proprietà per determinare se il certificato è stato registrato.

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 struttura CRYPT_DATA_BLOB .

Disabilita il recupero dell'elenco di revoche di certificati (CRL) per i certificati usati dall'autorità di certificazione (CA). Se il certificato DELLA 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 struttura CRYPT_DATA_BLOB .

Contiene l'elenco di URL OCSP ( Online Certificate Status Protocol ) da usare per i certificati rilasciati dal certificato DELLA CA. Il contenuto della matrice è costituito dai byte con codifica ASN.1 ( Abstract Syntax Notation One ) 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 struttura CRYPT_DATA_BLOB .

Imposta la posizione dei certificati incrociati. Questo valore è applicabile solo ai certificati e non agli elenchi di revoche di certificati (CRL) o agli elenchi di certificati attendibili (CRL). La struttura CRYPT_DATA_BLOB contiene una struttura con codifica ASN.1 ( Abstract Syntax Notation One ) codificata CROSS_CERT_DIST_POINTS_INFO codificata usando la funzione CryptEncodeObject con un valore X509_CROSS_CERT_DIST_POINTS per il parametro lpszStuctType .

CERT_CTL_USAGE_PROP_ID

Tipo di dati pvData: puntatore a una struttura CRYPT_DATA_BLOB .

La struttura CRYPT_DATA_BLOB contiene una struttura con codifica ASN.1 CTL_USAGE . Questa struttura viene codificata usando la funzione CryptEncodeObject con il valore X509_ENHANCED_KEY_USAGE impostato.

CERT_DATE_STAMP_PROP_ID

Tipo di dati pvData: puntatore a una struttura FILETIME .

Questa proprietà imposta l'ora di aggiunta del certificato all'archivio.

CERT_DESCRIPTION_PROP_ID

Tipo di dati pvData: puntatore a una struttura CRYPT_DATA_BLOB .

Proprietà impostata e 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 struttura CRYPT_DATA_BLOB .

Proprietà che indica che il parametro pvData punta a una struttura CRYPT_DATA_BLOB che contiene una struttura con codifica ASN.1 CERT_ENHKEY_USAGE . Questa struttura viene codificata usando la funzione CryptEncodeObject con il valore X509_ENHANCED_KEY_USAGE impostato.

CERT_ENROLLMENT_PROP_ID

Tipo di dati pvData: puntatore a una struttura CRYPT_DATA_BLOB .

Informazioni di registrazione della richiesta in sospeso che contiene RequestID, CADNSName, CAName e DisplayName. Il formato dei dati è definito come segue.

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

CERT_EXTENDED_ERROR_INFO_PROP_ID

Tipo di dati pvData: puntatore a una struttura CRYPT_DATA_BLOB .

Questa proprietà imposta una stringa contenente informazioni estese sull'errore 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 struttura CRYPT_DATA_BLOB .

La struttura CRYPT_DATA_BLOB contiene il nome visualizzato del certificato.

CERT_HASH_PROP_ID

Tipo di dati pvData: puntatore a una struttura CRYPT_DATA_BLOB .

Questa proprietà viene impostata in modo implicito da una chiamata alla funzione CertGetCertificateContextProperty .

CERT_HCRYPTPROV_OR_NCRYPT_KEY_HANDLE_PROP_ID

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

Questa proprietà chiama NCryptIsKeyHandle per determinare se si tratta di un NCRYPT_KEY_HANDLE. Per un NCRYPT_KEY_HANDLE, imposta CERT_NCRYPT_KEY_HANDLE_PROP_ID; in caso contrario, imposta CERT_KEY_PROV_HANDLE_PROP_ID.

CERT_HCRYPTPROV_TRANSFER_PROP_ID

Imposta l'handle della chiave CAPI associata al certificato.

CERT_IE30_RESERVED_PROP_ID

Questo identificatore è riservato.

CERT_ISSUER_PUBLIC_KEY_MD5_HASH_PROP_ID

Tipo di dati pvData: puntatore a una struttura CRYPT_DATA_BLOB .

Questa proprietà imposta l'hashMD5 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 struttura CRYPT_DATA_BLOB .

La struttura CRYPT_DATA_BLOB contiene l'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 .

La struttura specifica la chiave privata del certificato. Contiene sia la specifica HCRYPTPROV che la chiave per la chiave privata. Per altre informazioni sulle impostazioni hCryptProv e dwFlags , vedere CERT_KEY_PROV_HANDLE_PROP_ID, più avanti in questo argomento.

Nota Per questa proprietà è possibile aggiungere altri membri della struttura CERT_KEY_CONTEXT . In tal caso, il valore membro cbSize verrà modificato di conseguenza. Il membro cbSize deve essere impostato sulle dimensioni della struttura CERT_KEY_CONTEXT .
 

CERT_KEY_IDENTIFIER_PROP_ID

Tipo di dati pvData: puntatore a una struttura CRYPT_DATA_BLOB .

Questa proprietà è in genere impostata in modo implicito da una chiamata alla funzione CertGetCertificateContextProperty .

CERT_KEY_PROV_HANDLE_PROP_ID

Tipo di dati pvData: valore HCRYPTPROV .

L'handle HCRYPTPROV per la chiave privata del certificato è impostato. Il membro hCryptProv della struttura CERT_KEY_CONTEXT viene aggiornato se esiste. Se non esiste, viene creato con dwKeySpec e inizializzato da CERT_KEY_PROV_INFO_PROP_ID. Se CERT_STORE_NO_CRYPT_RELEASE_FLAG non è impostato, il valore hCryptProv viene rilasciato in modo implicito quando la proprietà è impostata su NULL o sulla liberazione finale della struttura CERT_CONTEXT .

CERT_KEY_PROV_INFO_PROP_ID

Tipo di dati pvData: puntatore a una struttura CRYPT_KEY_PROV_INFO .

La struttura specifica la chiave privata del certificato.

CERT_KEY_SPEC_PROP_ID

Tipo di dati pvData: puntatore a un valore DWORD .

Valore DWORD che specifica la chiave privata. Il membro dwKeySpec della struttura di CERT_KEY_CONTEXT viene aggiornato se esiste. In caso contrario, viene creato con hCryptProv impostato su zero.

CERT_MD5_HASH_PROP_ID

Tipo di dati pvData: puntatore a una struttura CRYPT_HASH_BLOB .

Questa proprietà viene impostata in modo implicito da una chiamata alla funzione CertGetCertificateContextProperty .

CERT_NCRYPT_KEY_HANDLE_PROP_ID

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

Questa proprietà imposta il NCRYPT_KEY_HANDLE per la chiave privata del certificato e imposta l'opzione dwKeySpec su CERT_NCRYPT_KEY_SPEC.

CERT_NCRYPT_KEY_HANDLE_TRANSFER_PROP_ID

Imposta l'handle della chiave CNG associata al certificato.

CERT_NEW_KEY_PROP_ID

Questo identificatore è riservato.

CERT_NEXT_UPDATE_LOCATION_PROP_ID

Tipo di dati pvData: puntatore a una struttura CRYPT_DATA_BLOB .

La struttura CRYPT_DATA_BLOB contiene una struttura con codifica ASN.1 CERT_ALT_NAME_INFO codificata usando la funzione CryptEncodeObject con il set di valori X509_ALTERNATE_NAME.

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 struttura CRYPT_DATA_BLOB .

Questa proprietà imposta la risposta del protocollo OCSP ( Online Certificate Status Protocol ) codificata da un CERT_SERVER_OCSP_RESPONSE_CONTEXT per questo certificato.

CERT_PUB_KEY_CNG_ALG_BIT_LENGTH_PROP_ID

Tipo di dati pvData: puntatore a una struttura CRYPT_DATA_BLOB .

Questa proprietà viene impostata in modo implicito chiamando la funzione CertGetCertificateContextProperty .

Windows Server 2008 R2, Windows 7, Windows Server 2008, Windows Vista, Windows Server 2003 e Windows XP: Questo identificatore non è supportato.

CERT_PUBKEY_ALG_PARA_PROP_ID

Tipo di dati pvData: puntatore a una struttura CRYPT_DATA_BLOB .

Questa proprietà viene usata con chiavi pubbliche che supportano l'ereditarietà dei parametri dell'algoritmo. Il BLOB di dati contiene i parametri dell'algoritmo PublicKey con codifica ASN.1. Per DSS, questi sono parametri codificati usando la funzione CryptEncodeObject . Questa operazione 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 struttura CRYPT_DATA_BLOB .

La struttura CRYPT_DATA_BLOB specifica il nome di un file contenente la chiave privata associata alla chiave pubblica del certificato. All'interno della struttura CRYPT_DATA_BLOB , il membro pbData è un puntatore a una stringa unicode a caratteri wide-character con terminazione null e il membro cbData indica la lunghezza della stringa.

CERT_RENEWAL_PROP_ID

Tipo di dati pvData: puntatore a una struttura CRYPT_DATA_BLOB .

Questa proprietà specifica l'hash del certificato rinnovato.

CERT_REQUEST_ORIGINATOR_PROP_ID

Tipo di dati pvData: puntatore a una struttura CRYPT_DATA_BLOB .

La struttura CRYPT_DATA_BLOB contiene 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 struttura CRYPT_DATA_BLOB .

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_SIGN_HASH_CNG_ALG_PROP_ID

Tipo di dati pvData: puntatore a una struttura CRYPT_DATA_BLOB .

Questa proprietà viene impostata in modo implicito chiamando la funzione CertGetCertificateContextProperty .

Windows Server 2008 R2, Windows 7, Windows Server 2008, Windows Vista, Windows Server 2003 e Windows XP: Questo identificatore non è supportato.

CERT_SHA1_HASH_PROP_ID

Tipo di dati pvData: puntatore a una struttura CRYPT_HASH_BLOB .

Questa proprietà viene impostata in modo implicito da una chiamata alla funzione CertGetCertificateContextProperty .

CERT_SIGNATURE_HASH_PROP_ID

Tipo di dati pvData: puntatore a una struttura CRYPT_HASH_BLOB .

Se non esiste un hash di firma, viene calcolato usando la funzione CryptHashToBeSigned . pvData punta a un hash esistente o calcolato. In genere, 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 struttura CRYPT_DATA_BLOB .

Questa proprietà imposta la proprietà dati della smart card di un contesto di certificato smart card.

CERT_SMART_CARD_ROOT_INFO_PROP_ID

Tipo di dati pvData: puntatore a una struttura CRYPT_DATA_BLOB .

Questa proprietà imposta la proprietà informazioni di un contesto di certificato radice smart card.

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 struttura CRYPT_DATA_BLOB .

Questa proprietà imposta l'estensione dell'accesso alle informazioni del soggetto del contesto del certificato come struttura CERT_SUBJECT_INFO_ACCESS codificata.

CERT_SUBJECT_NAME_MD5_HASH_PROP_ID

Tipo di dati pvData: puntatore a una struttura CRYPT_DATA_BLOB .

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 una struttura CRYPT_DATA_BLOB .

Questa proprietà viene impostata in modo implicito chiamando la funzione CertGetCertificateContextProperty .

Windows Server 2008 R2, Windows 7, Windows Server 2008, Windows Vista, Windows Server 2003 e Windows XP: Questo identificatore non è supportato.

CERT_SUBJECT_PUBLIC_KEY_MD5_HASH_PROP_ID

Tipo di dati pvData: puntatore a una struttura CRYPT_DATA_BLOB .

Questa proprietà imposta l'hash MD5 della chiave pubblica del certificato.

pvData è un puntatore a una struttura CRYPT_DATA_BLOB .

L'utente può definire tipi dwPropId aggiuntivi usando valori DWORD da CERT_FIRST_USER_PROP_ID a CERT_LAST_USER_PROP_ID. Per tutti i tipi dwPropId definiti dall'utente, pvData punta a una struttura CRYPT_DATA_BLOB codificata.

[in] dwFlags

CERT_STORE_NO_CRYPT_RELEASE_FLAG può essere impostato per le proprietà CERT_KEY_PROV_HANDLE_PROP_ID o CERT_KEY_CONTEXT_PROP_ID dwPropId .

Se il valore CERT_SET_PROPERTY_IGNORE_PERSIST_ERROR_FLAG è impostato, tutti gli errori di scrittura del provider vengono ignorati e le proprietà del contesto memorizzato nella cache vengono sempre impostate.

Se CERT_SET_PROPERTY_INHIBIT_PERSIST_FLAG è impostato, qualsiasi set di proprietà di contesto non viene salvato in modo permanente.

[in] pvData

Puntatore a un tipo di dati determinato dal valore di dwPropId.

Nota Per qualsiasi dwPropId, l'impostazione di pvData su NULL elimina la proprietà .
 

Valore restituito

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

Se la funzione ha esito negativo, la funzione restituisce FALSE. Per informazioni sugli errori estesi, chiamare GetLastError. Un possibile codice di errore è il seguente.

Codice restituito Descrizione
E_INVALIDARG
La proprietà non è valida. L'identificatore specificato è maggiore di 0x0000FFFF oppure, per la proprietà CERT_KEY_CONTEXT_PROP_ID, è stato specificato un membro cbSize non valido nella struttura CERT_KEY_CONTEXT .

Commenti

Se esiste già una proprietà, il valore precedente viene sostituito.

Il codice può usare una macro per valutare la classe di hash per un contesto di certificato. L'intestazione Wincrypt.h definisce le macro seguenti a questo scopo. Queste macro vengono utilizzate internamente dalla funzione CertSetCertificateContextProperty .

IS_CERT_HASH_PROP_ID(X)IS_PUBKEY_HASH_PROP_ID(X)IS_CHAIN_HASH_PROP_ID(X) Ogni macro accetta il valore dwPropId (X) come input e restituisce un valore booleano. Nella tabella seguente vengono illustrati i valori dwPropId che restituiscono TRUE per ogni macro.

Macro Restituisce TRUE se dwPropId è
IS_CERT_HASH_PROP_ID(dwPropId)
CERT_SHA1_HASH_PROP_ID,
CERT_MD5_HASH_PROP_ID o
CERT_SIGNATURE_HASH_PROP_ID
IS_PUBKEY_HASH_PROP_ID(dwPropId)
CERT_ISSUER_PUBLIC_KEY_MD5_HASH_PROP_ID o
CERT_SUBJECT_PUBLIC_KEY_MD5_HASH_PROP_ID
IS_CHAIN_HASH_PROP_ID(dwPropId)
CERT_ISSUER_PUBLIC_KEY_MD5_HASH_PROP_ID,
CERT_SUBJECT_PUBLIC_KEY_MD5_HASH_PROP_ID,
CERT_ISSUER_SERIAL_NUMBER_MD5_HASH_PROP_ID o
CERT_SUBJECT_NAME_MD5_HASH_PROP_ID
 

La macro IS_STRONG_SIGN_PROP_ID(x) restituisce TRUE se le proprietà CERT_SIGN_HASH_CNG_ALG_PROP_ID, CERT_SUBJECT_PUB_KEY_BIT_LENGTH_PROP_ID o CERT_PUB_KEY_CNG_ALG_BIT_LENGTH_PROP_ID vengono impostate nel parametro dwPropId .

Esempio

Per un esempio che usa questa funzione, vedere Esempio di programma C: Recupero e impostazione delle proprietà del certificato.

Requisiti

Requisito Valore
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_ALT_NAME_INFO

CERT_CONTEXT

CERT_ENHKEY_USAGE

CERT_KEY_CONTEXT

CROSS_CERT_DIST_POINTS_INFO

CRYPT_DATA_BLOB

CRYPT_HASH_BLOB

CRYPT_KEY_PROV_INFO

CTL_USAGE

CertGetCertificateContextProperty

CertSetCRLContextProperty

CryptEncodeObject

CryptHashToBeSigned

Funzioni di proprietà estese