Condividi tramite


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 di pvData sono i seguenti.

Le noteCRYPT_HASH_BLOB e le CRYPT_DATA_BLOB sono descritte nell'argomento CRYPT_INTEGER_BLOB.
 

CERT_ACCESS_STATE_PROP_ID

Tipo di dati di 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 è 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 di pvData: puntatore a una struttura di CRYPT_HASH_BLOB.

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

CERT_ARCHIVED_PROP_ID

Tipo di dati di pvData: puntatore a una struttura CRYPT_DATA_BLOB.

Indica che il del certificato viene ignorato durante le enumerazioni. Un certificato con questo set di proprietà viene ancora 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 di 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 cui il certificato è stato registrato automaticamente. Eventuali 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 di pvData: puntatore a una struttura CRYPT_DATA_BLOB.

Disabilita 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 di pvData: puntatore a una struttura CRYPT_DATA_BLOB.

Contiene l'elenco degli URL (OCSP) del protocollo di stato dei certificati online da usare per i certificati rilasciati dal certificato della CA. Il contenuto della matrice è costituito dai byte con codifica ASN.1 (AsN.1) 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 di pvData: puntatore a una struttura CRYPT_DATA_BLOB.

Imposta il percorso dei certificati incrociati. Questo valore è applicabile solo ai certificati e non ai elenchi di revoche di certificati (CRL) o elenchi di attendibilità dei certificati (CRL). La struttura CRYPT_DATA_BLOB contiene una struttura Astratta Notation One (ASN.1) 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 di 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 di pvData: puntatore a una struttura FILETIME .

Questa proprietà imposta l'ora in cui il certificato è stato aggiunto all'archivio.

CERT_DESCRIPTION_PROP_ID

Tipo di dati di 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 di 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 di 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 Dimensione 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 di pvData: puntatore a una struttura CRYPT_DATA_BLOB.

Questa proprietà imposta una stringa che contiene 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 di 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 di 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 di 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 di pvData: puntatore a una struttura CRYPT_DATA_BLOB.

Questa proprietà imposta il hashMD5 della chiave pubblica associata all'chiave privata usata per firmare questo certificato.

CERT_ISSUER_SERIAL_NUMBER_MD5_HASH_PROP_ID

Tipo di dati di pvData: puntatore a una struttura CRYPT_DATA_BLOB.

La struttura CRYPT_DATA_BLOB contiene l'hash MD5 del nome dell'autorità emittente e del numero di serie del certificato.

CERT_KEY_CONTEXT_PROP_ID

Tipo di dati di pvData: puntatore a una struttura di CERT_KEY_CONTEXT.

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

Nota è possibile aggiungere altri membri della struttura CERT_KEY_CONTEXT per questa proprietà. In tal caso, il cbSize valore del membro 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 di pvData: puntatore a una struttura CRYPT_DATA_BLOB.

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

CERT_KEY_PROV_HANDLE_PROP_ID

Tipo di dati di pvData: valore HCRYPTPROV .

Viene impostato handle HCRYPTPROV per la chiave privata del certificato. Il membro hCryptProv della struttura CERT_KEY_CONTEXT viene aggiornato se esistente. 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 di pvData: puntatore a una struttura di CRYPT_KEY_PROV_INFO.

La struttura specifica la chiave privata del certificato.

CERT_KEY_SPEC_PROP_ID

Tipo di dati di pvData: puntatore a un valore DWORD .

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

CERT_MD5_HASH_PROP_ID

Tipo di dati di pvData: puntatore a una struttura di 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 di 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 il 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 di 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 valore X509_ALTERNATE_NAME impostato.

CERT_NEXT_UPDATE_LOCATION_PROP_ID è attualmente usato solo con elenchi di scopi consentiti.

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 di pvData: puntatore a una struttura CRYPT_DATA_BLOB.

Questa proprietà imposta la risposta del protocollo di stato del certificato online (OCSP) codificata da un CERT_SERVER_OCSP_RESPONSE_CONTEXT per questo certificato.

CERT_PUB_KEY_CNG_ALG_BIT_LENGTH_PROP_ID

Tipo di dati di pvData: puntatore a una struttura di 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 di 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 . Viene utilizzato solo se è definito CMS_PKCS7.

CERT_PUBKEY_HASH_RESERVED_PROP_ID

Questo identificatore è riservato.

CERT_PVK_FILE_PROP_ID

Tipo di dati di 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 di caratteri wide Unicode con terminazione Null e il membro cbData indica la lunghezza della stringa.

CERT_RENEWAL_PROP_ID

Tipo di dati di pvData: puntatore a una struttura CRYPT_DATA_BLOB.

Questa proprietà specifica l'hash del certificato rinnovato.

CERT_REQUEST_ORIGINATOR_PROP_ID

Tipo di dati di pvData: puntatore a una struttura CRYPT_DATA_BLOB.

La struttura CRYPT_DATA_BLOB contiene una stringa Unicode con terminazione Null contenente il nome computer DNS per l'origine della richiesta di contesto del certificato.

CERT_ROOT_PROGRAM_CERT_POLICIES_PROP_ID

Tipo di dati di 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 di X509_ASN_ENCODING ORPKCS_7_ASN_ENCODINGbit per bit.

CERT_ROOT_PROGRAM_NAME_CONSTRAINTS_PROP_ID

Questo identificatore è riservato.

CERT_SIGN_HASH_CNG_ALG_PROP_ID

Tipo di dati di pvData: puntatore a una struttura di 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 di pvData: puntatore a una struttura di CRYPT_HASH_BLOB.

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

CERT_SIGNATURE_HASH_PROP_ID

Tipo di dati di pvData: puntatore a una struttura di CRYPT_HASH_BLOB.

Se non esiste un hash della 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 di pvData: puntatore a una struttura CRYPT_DATA_BLOB.

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

CERT_SMART_CARD_ROOT_INFO_PROP_ID

Tipo di dati di pvData: puntatore a una struttura CRYPT_DATA_BLOB.

Questa proprietà imposta la proprietà information di un contesto di certificato radice della 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 di pvData: puntatore a una struttura CRYPT_DATA_BLOB.

Questa proprietà imposta l'estensione di accesso alle informazioni sull'oggetto del contesto del certificato come struttura CERT_SUBJECT_INFO_ACCESS codificata.

CERT_SUBJECT_NAME_MD5_HASH_PROP_ID

Tipo di dati di 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 di pvData: puntatore a una struttura di 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 di 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 di CRYPT_DATA_BLOB.

L'utente può definire altri tipi di dwPropId usando valori di DWORD da CERT_FIRST_USER_PROP_ID a CERT_LAST_USER_PROP_ID. Per tutti i tipi di 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à di CERT_KEY_PROV_HANDLE_PROP_ID o CERT_KEY_CONTEXT_PROP_ID dwPropId.

Se il valore CERT_SET_PROPERTY_IGNORE_PERSIST_ERROR_FLAG è impostato, eventuali 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, un membro cbSize non valido è stato specificato nella struttura CERT_KEY_CONTEXT.

Osservazioni

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 usate 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 di dwPropId (X) come input e restituisce un valore booleano. Nella tabella seguente vengono illustrati i valori di 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_IDo
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_IDo
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_IDo CERT_PUB_KEY_CNG_ALG_BIT_LENGTH_PROP_ID vengono impostate nel parametro dwPropId.

Esempi

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

Fabbisogno

Requisito Valore
client minimo supportato Windows XP [app desktop | App UWP]
server minimo supportato Windows Server 2003 [app desktop | App UWP]
piattaforma di destinazione Finestre
intestazione wincrypt.h
libreria Crypt32.lib
dll Crypt32.dll

Vedere 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 delle proprietà estese