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 結構的指標。
針對 證書頒發機構單位(CA)所使用的憑證,停用 證書吊銷清單 (CRL) 擷取。 如果 CA 憑證包含這個屬性,它也必須包含 CERT_CA_OCSP_AUTHORITY_INFO_ACCESS_PROP_ID 屬性。
CERT_CA_OCSP_AUTHORITY_INFO_ACCESS_PROP_ID
pvData的數據類型:CRYPT_DATA_BLOB 結構的指標。
包含 在線憑證狀態通訊協定 (OCSP) URL 的清單,以用於 CA 憑證所簽發的憑證。 數位內容是 X509_AUTHORITY_INFO_ACCESS結構的 抽象語法表示法一 (ASN.1)編碼位元組,其中 pszAccessMethod 設定為 szOID_PKIX_OCSP。
CERT_CROSS_CERT_DIST_POINTS_PROP_ID
pvData的數據類型:CRYPT_DATA_BLOB 結構的指標。
設定跨憑證的位置。 此值僅適用於憑證,不適用於 證書吊銷清單 或 憑證信任清單(CCL)。 CRYPT_DATA_BLOB 結構包含 抽象語法表示法一(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 結構的指標。
這個屬性會設定與用來簽署此憑證之
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 結構存在,hCryptProv 成員就會更新。 如果不存在,則會使用 dwKeySpec 建立,並由 CERT_KEY_PROV_INFO_PROP_ID 初始化。 如果未設定CERT_STORE_NO_CRYPT_RELEASE_FLAG,hCryptProv 值會在 屬性設定為 NULL 或最終釋放 CERT_CONTEXT 結構時隱含釋放。
CERT_KEY_PROV_INFO_PROP_ID
pvData的數據類型:CRYPT_KEY_PROV_INFO 結構的指標。
結構會指定憑證的私鑰。
CERT_KEY_SPEC_PROP_ID
pvData的數據類型:DWORD 值的指標。
指定私鑰的 DWORD 值。 如果 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 結構,該結構會使用設定X509_ALTERNATE_NAME值設定的 CryptEncodeObject 函式來編碼。
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_IDDWORD 值,定義其他 dwPropId 類型。 針對所有使用者定義 dwPropId 類型,pvData 指向編碼 CRYPT_DATA_BLOB 結構。
[in] dwFlags
您可以為 CERT_KEY_PROV_HANDLE_PROP_ID 或 CERT_KEY_CONTEXT_PROP_ID dwPropId 屬性設定CERT_STORE_NO_CRYPT_RELEASE_FLAG。
如果已設定CERT_SET_PROPERTY_IGNORE_PERSIST_ERROR_FLAG值,則會忽略任何提供者寫入錯誤,而且一律會設定快取內容的屬性。
如果已設定CERT_SET_PROPERTY_INHIBIT_PERSIST_FLAG,則不會保存任何內容屬性集。
[in] pvData
dwPropId值所決定之數據類型的指標。
傳回值
如果函式成功,函式會傳回 true 。
如果函式失敗,函式會傳回 FALSE。 如需擴充錯誤資訊,請呼叫 getLastError
傳回碼 | 描述 |
---|---|
|
屬性無效。 指定的標識碼大於 0x0000FFFF,或針對 CERT_KEY_CONTEXT_PROP_ID 屬性,cbSize 成員,在 CERT_KEY_CONTEXT 結構中指定無效。 |
言論
如果屬性已經存在,則會取代其舊值。
您的程式代碼可以使用宏來評估憑證內容的哈希類別。 Wincrypt.h 標頭會為此定義下列宏。 CertSetCertificateContextProperty 函式會在內部使用這些宏。
IS_CERT_HASH_PROP_ID(X)IS_PUBKEY_HASH_PROP_ID(X)IS_CHAIN_HASH_PROP_ID(X) 每個宏都會以 dwPropId (X) 值作為輸入,並評估為布爾值。 下表顯示 dwPropId 值,這些值會評估為每個宏 TRUE。
宏觀 | 如果 dwPropId,評估為 true |
---|---|
IS_CERT_HASH_PROP_ID(dwPropId) |
|
IS_PUBKEY_HASH_PROP_ID(dwPropId) |
|
IS_CHAIN_HASH_PROP_ID(dwPropId) |
|
例子
如需使用此函式的範例,請參閱 範例 C 程式:取得和設定憑證屬性。
要求
要求 | 價值 |
---|---|
最低支援的用戶端 | Windows XP [傳統型應用程式 |UWP 應用程式] |
支援的最低伺服器 | Windows Server 2003 [傳統型應用程式 |UWP 應用程式] |
目標平臺 | 窗戶 |
標頭 | wincrypt.h |
連結庫 | Crypt32.lib |
DLL | Crypt32.dll |