CertSetCertificateContextProperty 函式 (wincrypt.h)
CertSetCertificateContextProperty 函式會設定指定之憑證內容的擴充屬性。
語法
BOOL CertSetCertificateContextProperty(
[in] PCCERT_CONTEXT pCertContext,
[in] DWORD dwPropId,
[in] DWORD dwFlags,
[in] const void *pvData
);
參數
[in] pCertContext
CERT_CONTEXT 結構的指標。
[in] dwPropId
要設定的屬性。 dwPropId 的值會決定 pvData 參數的類型和內容。 目前定義的標識碼及其相關的 pvData 類型如下所示。
CERT_ACCESS_STATE_PROP_ID
pvData 的數據類型:DWORD 值的指標。
傳回 DWORD 值,指出是否保存憑證的寫入作業。 如果憑證位於記憶體存放區或以登錄為基礎的存放區中,以唯讀方式開啟,則不會設定 DWORD 值。
CERT_AIA_URL_RETRIEVED_PROP_ID
此標識碼是保留的。
CERT_ARCHIVED_KEY_HASH_PROP_ID
pvData 的數據類型:CRYPT_HASH_BLOB 結構的指標。
此屬性會儲存憑證內容的加密金鑰 哈希 。
CERT_ARCHIVED_PROP_ID
pvData 的數據類型:CRYPT_DATA_BLOB 結構的指標。
表示在列舉期間略過 憑證 。 使用明確搜尋作業仍可找到具有此屬性集的憑證,例如尋找具有特定 哈希 或特定序號的憑證。 這個屬性可以設定為空的 BLOB。 {0,NULL}
CERT_AUTHORITY_INFO_ACCESS_PROP_ID
此標識碼是保留的。
CERT_AUTO_ENROLL_PROP_ID
pvData 的數據類型:CRYPT_DATA_BLOB 結構的指標。
使用自動註冊在憑證註冊之後所設定的屬性。 pvData 所指向的CRYPT_DATA_BLOB結構包含憑證自動註冊之憑證類型的 Null 終止 Unicode 名稱。 任何後續對自動註冊的憑證呼叫都會檢查此屬性,以判斷是否已註冊憑證。
CERT_AUTO_ENROLL_RETRY_PROP_ID
此標識碼是保留的。
CERT_BACKED_UP_PROP_ID
此標識碼是保留的。
CERT_CA_DISABLE_CRL_PROP_ID
pvData 的數據類型:CRYPT_DATA_BLOB 結構的指標。
停用證書 吊銷清單 (CRL) 擷取 證書頒發機構單位 (CA) 所使用的憑證。 如果 CA 憑證包含這個屬性,它也必須包含 CERT_CA_OCSP_AUTHORITY_INFO_ACCESS_PROP_ID 屬性。
CERT_CA_OCSP_AUTHORITY_INFO_ACCESS_PROP_ID
pvData 的數據類型:CRYPT_DATA_BLOB 結構的指標。
包含 在線憑證狀態通訊協定 清單 (OCSP) URL,用於 CA 憑證所簽發的憑證。 數位內容是 pszAccessMethod 設定為szOID_PKIX_OCSP之X509_AUTHORITY_INFO_ACCESS結構的抽象語法表示法一 (ASN.1) 編碼位元組。
CERT_CROSS_CERT_DIST_POINTS_PROP_ID
pvData 的數據類型:CRYPT_DATA_BLOB 結構的指標。
設定跨憑證的位置。 此值僅適用於憑證,不適用於證書 吊銷清單 (CRL) 或 憑證信任清單 (CCL) 。 CRYPT_DATA_BLOB 結構包含抽象語法表示法 One (ASN.1) 編碼CROSS_CERT_DIST_POINTS_INFO結構,其使用 CryptEncodeObject 函式搭配 lpszStuctType 參數的X509_CROSS_CERT_DIST_POINTS值進行編碼。
CERT_CTL_USAGE_PROP_ID
pvData 的數據類型:CRYPT_DATA_BLOB 結構的指標。
CRYPT_DATA_BLOB 結構包含 ASN.1 編碼CTL_USAGE結構。 此結構會使用 CryptEncodeObject 函式搭配設定X509_ENHANCED_KEY_USAGE值來編碼。
CERT_DATE_STAMP_PROP_ID
pvData 的數據類型:FILETIME 結構的指標。
這個屬性會設定將憑證新增至存放區的時間。
CERT_DESCRIPTION_PROP_ID
pvData 的數據類型:CRYPT_DATA_BLOB 結構的指標。
憑證 UI 所設定和顯示的屬性。 此屬性可讓使用者描述憑證的使用。
CERT_EFS_PROP_ID
此標識碼是保留的。
CERT_ENHKEY_USAGE_PROP_ID
pvData 的數據類型:CRYPT_DATA_BLOB 結構的指標。
屬性,指出 pvData 參數指向包含 ASN.1 編碼CERT_ENHKEY_USAGE結構的CRYPT_DATA_BLOB結構。 此結構會使用 CryptEncodeObject 函式搭配設定X509_ENHANCED_KEY_USAGE值來編碼。
CERT_ENROLLMENT_PROP_ID
pvData 的數據類型:CRYPT_DATA_BLOB 結構的指標。
包含 RequestID、CADNSName、CAName 和 DisplayName 之擱置要求的註冊資訊。 數據格式的定義如下。
位元組 | 目錄 |
---|---|
前 4 個字節 | 擱置的要求標識碼 |
接下來 4 個字節 | CADNSName 大小,以字元為單位,包括終止 Null 字元,後面接著具有終止 Null 字元的 CADNSName 字串 |
接下來 4 個字節 | CAName 大小,以字元為單位,包括終止 Null 字元,後面接著具有終止 Null 字元的 CAName 字串 |
接下來 4 個字節 | DisplayName 大小,以字元為單位,包括終止 Null 字元,後面接著具有終止 Null 字元的 DisplayName 字串 |
CERT_EXTENDED_ERROR_INFO_PROP_ID
pvData 的數據類型:CRYPT_DATA_BLOB 結構的指標。
此屬性會設定字串,其中包含憑證內容的擴充錯誤資訊。
CERT_FORTEZZA_DATA_PROP_ID
此標識碼是保留的。
CERT_FRIENDLY_NAME_PROP_ID
pvData 的數據類型:CRYPT_DATA_BLOB 結構的指標。
CRYPT_DATA_BLOB 結構包含憑證的顯示名稱。
CERT_HASH_PROP_ID
pvData 的數據類型:CRYPT_DATA_BLOB 結構的指標。
這個屬性是由 CertGetCertificateContextProperty 函式的呼叫隱含設定。
CERT_HCRYPTPROV_OR_NCRYPT_KEY_HANDLE_PROP_ID
pvData 的數據類型:HCRYPTPROV_OR_NCRYPT_KEY_HANDLE數據類型的指標。
這個屬性會呼叫 NCryptIsKeyHandle 來判斷這是否為 NCRYPT_KEY_HANDLE。 若為 NCRYPT_KEY_HANDLE,請設定 CERT_NCRYPT_KEY_HANDLE_PROP_ID;否則,它會設定 CERT_KEY_PROV_HANDLE_PROP_ID。
CERT_HCRYPTPROV_TRANSFER_PROP_ID
設定與憑證相關聯的 CAPI 金鑰句柄。
CERT_IE30_RESERVED_PROP_ID
此標識碼是保留的。
CERT_ISSUER_PUBLIC_KEY_MD5_HASH_PROP_ID
pvData 的數據類型:CRYPT_DATA_BLOB 結構的指標。
此屬性會設定與用來簽署此憑證之私鑰相關聯之公鑰的 MD5哈希。
CERT_ISSUER_SERIAL_NUMBER_MD5_HASH_PROP_ID
pvData 的數據類型:CRYPT_DATA_BLOB 結構的指標。
CRYPT_DATA_BLOB 結構包含此憑證中籤發者名稱和序號的 MD5 哈希。
CERT_KEY_CONTEXT_PROP_ID
pvData 的數據類型:CERT_KEY_CONTEXT 結構的指標。
結構會指定憑證的私鑰。 它同時包含私鑰的 HCRYPTPROV 和金鑰規格。 如需 hCryptProv 成員和 dwFlags 設定的詳細資訊,請參閱本主題稍後的CERT_KEY_PROV_HANDLE_PROP_ID。
CERT_KEY_IDENTIFIER_PROP_ID
pvData 的數據類型:CRYPT_DATA_BLOB 結構的指標。
此屬性通常是由 CertGetCertificateContextProperty 函式的呼叫隱含設定。
CERT_KEY_PROV_HANDLE_PROP_ID
pvData 的數據類型:HCRYPTPROV 值。
已設定憑證私鑰的 HCRYPTPROV 句柄。 如果CERT_KEY_CONTEXT結構存在,就會更新CERT_KEY_CONTEXT結構的 hCryptProv 成員。 如果不存在,則會使用 dwKeySpec 建立,並由 CERT_KEY_PROV_INFO_PROP_ID 初始化。 如果未設定CERT_STORE_NO_CRYPT_RELEASE_FLAG,當 屬性設定為 NULL 或最後釋放CERT_CONTEXT結構時,hCryptProv 值會隱含釋放。
CERT_KEY_PROV_INFO_PROP_ID
pvData 的數據類型:CRYPT_KEY_PROV_INFO 結構的指標。
結構會指定憑證的私鑰。
CERT_KEY_SPEC_PROP_ID
pvData 的數據類型:DWORD 值的指標。
指定私鑰的 DWORD 值。 如果CERT_KEY_CONTEXT結構存在,則會更新CERT_KEY_CONTEXT的 dwKeySpec 成員。 如果沒有,則會使用 hCryptProv 設定為零來建立。
CERT_MD5_HASH_PROP_ID
pvData 的數據類型:CRYPT_HASH_BLOB 結構的指標。
這個屬性是由 CertGetCertificateContextProperty 函式的呼叫隱含設定。
CERT_NCRYPT_KEY_HANDLE_PROP_ID
pvData 的數據類型:NCRYPT_KEY_HANDLE數據類型的指標。
此屬性會設定憑證私鑰 的NCRYPT_KEY_HANDLE ,並將 dwKeySpec 設定為 CERT_NCRYPT_KEY_SPEC。
CERT_NCRYPT_KEY_HANDLE_TRANSFER_PROP_ID
設定與憑證相關聯的 CNG 金鑰句柄。
CERT_NEW_KEY_PROP_ID
此標識碼是保留的。
CERT_NEXT_UPDATE_LOCATION_PROP_ID
pvData 的數據類型:CRYPT_DATA_BLOB 結構的指標。
CRYPT_DATA_BLOB 結構包含 ASN.1 編碼CERT_ALT_NAME_INFO結構,其使用 CryptEncodeObject 函式搭配設定X509_ALTERNATE_NAME值來編碼。
CERT_NEXT_UPDATE_LOCATION_PROP_ID目前僅與 CTL 搭配使用。
CERT_NO_AUTO_EXPIRE_CHECK_PROP_ID
此標識碼是保留的。
CERT_OCSP_CACHE_PREFIX_PROP_ID
此標識碼是保留的。
CERT_OCSP_RESPONSE_PROP_ID
pvData 的數據類型:CRYPT_DATA_BLOB 結構的指標。
此屬性會設定來自此憑證之CERT_SERVER_OCSP_RESPONSE_CONTEXT的編碼在線憑證狀態通訊協定 (OCSP) 回應。
CERT_PUB_KEY_CNG_ALG_BIT_LENGTH_PROP_ID
pvData 的數據類型:CRYPT_DATA_BLOB 結構的指標。
呼叫 CertGetCertificateContextProperty 函式 ,即可隱含設定此屬性。
Windows Server 2008 R2、Windows 7、Windows Server 2008、Windows Vista、Windows Server 2003 和 Windows XP: 不支援此標識碼。
CERT_PUBKEY_ALG_PARA_PROP_ID
pvData 的數據類型:CRYPT_DATA_BLOB 結構的指標。
這個屬性會與支援演算法參數繼承的公鑰搭配使用。 數據 BLOB 包含 ASN.1 編碼的 PublicKey 演算法參數。 針對 DSS,這些是使用 CryptEncodeObject 函式編碼的參數。 只有在已定義CMS_PKCS7時,才會使用此設定。
CERT_PUBKEY_HASH_RESERVED_PROP_ID
此標識碼是保留的。
CERT_PVK_FILE_PROP_ID
pvData 的數據類型:CRYPT_DATA_BLOB 結構的指標。
CRYPT_DATA_BLOB 結構會指定包含與憑證公鑰相關聯之私鑰的檔名。 在 CRYPT_DATA_BLOB 結構內, pbData 成員是 Null 終止 Unicode 寬字元字串的指標, 而 cbData 成員表示字串的長度。
CERT_RENEWAL_PROP_ID
pvData 的數據類型:CRYPT_DATA_BLOB 結構的指標。
此屬性會指定更新憑證的哈希。
CERT_REQUEST_ORIGINATOR_PROP_ID
pvData 的數據類型:CRYPT_DATA_BLOB 結構的指標。
CRYPT_DATA_BLOB 結構包含 Null 終止的 Unicode 字串,其中包含憑證內容要求來源的 DNS 計算機名稱。
CERT_ROOT_PROGRAM_CERT_POLICIES_PROP_ID
pvData 的數據類型:CRYPT_DATA_BLOB 結構的指標。
傳回編碼 CERT_POLICIES_INFO 結構的指標,其中包含內容之跟證書的應用程式原則。 您可以使用 CryptDecodeObject 函式來譯碼此屬性,並將 lpszStructType 參數設定為 X509_CERT_POLICIES ,而 dwCertEncodingType 參數設定為 X509_ASN_ENCODING 位 ORPKCS_7_ASN_ENCODING的組合。
CERT_ROOT_PROGRAM_NAME_CONSTRAINTS_PROP_ID
此標識碼是保留的。
CERT_SIGN_HASH_CNG_ALG_PROP_ID
pvData 的數據類型:CRYPT_DATA_BLOB 結構的指標。
呼叫 CertGetCertificateContextProperty 函式 ,即可隱含設定此屬性。
Windows Server 2008 R2、Windows 7、Windows Server 2008、Windows Vista、Windows Server 2003 和 Windows XP: 不支援此標識碼。
CERT_SHA1_HASH_PROP_ID
pvData 的數據類型:CRYPT_HASH_BLOB 結構的指標。
這個屬性是由 CertGetCertificateContextProperty 函式的呼叫隱含設定。
CERT_SIGNATURE_HASH_PROP_ID
pvData 的數據類型:CRYPT_HASH_BLOB 結構的指標。
如果簽章哈希不存在,則會使用 CryptHashToBeSigned 函式來計算它。 pvData 指向現有的或計算的哈希。 通常,哈希的長度是SHA的20個字節,MD5則為16個字節。
CERT_SMART_CARD_DATA_PROP_ID
pvData 的數據類型:CRYPT_DATA_BLOB 結構的指標。
此屬性會設定智慧卡憑證內容的智慧卡數據屬性。
CERT_SMART_CARD_ROOT_INFO_PROP_ID
pvData 的數據類型:CRYPT_DATA_BLOB 結構的指標。
此屬性會設定智慧卡跟證書內容的資訊屬性。
CERT_SOURCE_LOCATION_PROP_ID
此標識碼是保留的。
CERT_SOURCE_URL_PROP_ID
此標識碼是保留的。
CERT_SUBJECT_DISABLE_CRL_PROP_ID
此標識碼是保留的。
CERT_SUBJECT_INFO_ACCESS_PROP_ID
pvData 的數據類型:CRYPT_DATA_BLOB 結構的指標。
此屬性會將憑證內容的主體資訊存取延伸設定為編碼 CERT_SUBJECT_INFO_ACCESS 結構。
CERT_SUBJECT_NAME_MD5_HASH_PROP_ID
pvData 的數據類型:CRYPT_DATA_BLOB 結構的指標。
傳回憑證內容編碼主體名稱的 MD5 哈希。
CERT_SUBJECT_OCSP_AUTHORITY_INFO_ACCESS_PROP_ID
此標識碼是保留的。
CERT_SUBJECT_PUB_KEY_BIT_LENGTH_PROP_ID
pvData 的數據類型:CRYPT_DATA_BLOB結構的指標。
這個屬性是藉由呼叫 CertGetCertificateContextProperty 函式 來隱含設定。
Windows Server 2008 R2、Windows 7、Windows Server 2008、Windows Vista、Windows Server 2003 和 Windows XP: 不支援此標識碼。
CERT_SUBJECT_PUBLIC_KEY_MD5_HASH_PROP_ID
pvData 的數據類型:CRYPT_DATA_BLOB 結構的指標。
此屬性會設定此憑證公鑰的 MD5 哈希。
pvData 是 CRYPT_DATA_BLOB 結構的指標。
用戶可以使用從 CERT_FIRST_USER_PROP_ID 到CERT_LAST_USER_PROP_ID的 DWORD 值來定義其他 dwPropId 類型。 針對所有使用者定義 dwPropId 類型, pvData 會指向編碼 CRYPT_DATA_BLOB 結構。
[in] dwFlags
CERT_STORE_NO_CRYPT_RELEASE_FLAG可以針對 CERT_KEY_PROV_HANDLE_PROP_ID 或 CERT_KEY_CONTEXT_PROP_ID dwPropId 屬性進行設定。
如果已設定CERT_SET_PROPERTY_IGNORE_PERSIST_ERROR_FLAG值,則會忽略任何提供者寫入錯誤,而且一律會設定快取內容的屬性。
如果已設定CERT_SET_PROPERTY_INHIBIT_PERSIST_FLAG,則不會保存任何內容屬性集。
[in] pvData
由 dwPropId 值決定之數據類型的指標。
傳回值
如果函式成功,函式會傳回 TRUE。
如果函式失敗,函式會傳回 FALSE。 如需擴充錯誤資訊,請呼叫 GetLastError。 其中一個可能的錯誤碼如下。
傳回碼 | Description |
---|---|
|
屬性無效。 指定的標識碼大於 0x0000FFFF,或針對 CERT_KEY_CONTEXT_PROP_ID 屬性,在 CERT_KEY_CONTEXT 結構中指定了無效的 cbSize 成員。 |
備註
如果屬性已經存在,則會取代其舊值。
您的程式代碼可以使用宏來評估憑證內容的哈希類別。 Wincrypt.h 標頭會為此目的定義下列宏。 這些宏是由 CertSetCertificateContextProperty 函式 在內部使用。
IS_CERT_HASH_PROP_ID (X) IS_PUBKEY_HASH_PROP_ID (X) IS_CHAIN_HASH_PROP_ID (X ) 每個宏會採用 dwPropId (X) 值作為輸入,並評估為布爾值。 下表顯示每個宏評估為TRUE的 dwPropId 值。
巨集 | 如果 dwPropId 為 ,則評估為 TRUE |
---|---|
IS_CERT_HASH_PROP_ID (dwPropId) |
|
IS_PUBKEY_HASH_PROP_ID (dwPropId) |
|
IS_CHAIN_HASH_PROP_ID (dwPropId) |
|
如果 dwPropId 參數中設定了CERT_SIGN_HASH_CNG_ALG_PROP_ID、CERT_SUBJECT_PUB_KEY_BIT_LENGTH_PROP_ID或CERT_PUB_KEY_CNG_ALG_BIT_LENGTH_PROP_ID屬性,IS_STRONG_SIGN_PROP_ID (x) 宏會評估為 TRUE。
範例
如需使用此函式的範例,請參閱 範例 C 程式:取得和設定憑證屬性。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | Windows XP [傳統型應用程式 |UWP 應用程式] |
最低支援的伺服器 | Windows Server 2003 [傳統型應用程式 |UWP 應用程式] |
目標平台 | Windows |
標頭 | wincrypt.h |
程式庫 | Crypt32.lib |
Dll | Crypt32.dll |
另請參閱
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應