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 類型如下所示。

注意CRYPT_HASH_BLOBCRYPT_DATA_BLOB 主題會說明 CRYPT_INTEGER_BLOB 主題。
 

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_OCSPX509_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_CONTEXT 結構成員。 如果是,則會據以調整 cbSize 成員值。 cbSize 成員必須設定為CERT_KEY_CONTEXT結構的大小。
 

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_CONTEXTdwKeySpec 成員。 如果沒有,則會使用 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_ENCODINGORPKCS_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 哈希。

pvDataCRYPT_DATA_BLOB 結構的指標。

用戶可以使用從 CERT_FIRST_USER_PROP_IDCERT_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 值決定之數據類型的指標。

注意 針對任何 dwPropId,將 pvData 設定為 NULL 會刪除 屬性。
 

傳回值

如果函式成功,函式會傳回 TRUE

如果函式失敗,函式會傳回 FALSE。 如需擴充錯誤資訊,請呼叫 GetLastError。 其中一個可能的錯誤碼如下。

傳回碼 Description
E_INVALIDARG
屬性無效。 指定的標識碼大於 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) 值作為輸入,並評估為布爾值。 下表顯示每個宏評估為TRUEdwPropId 值。

巨集 如果 dwPropId 為 ,則評估為 TRUE
IS_CERT_HASH_PROP_ID (dwPropId)
CERT_SHA1_HASH_PROP_ID
CERT_MD5_HASH_PROP_ID
CERT_SIGNATURE_HASH_PROP_ID
IS_PUBKEY_HASH_PROP_ID (dwPropId)
CERT_ISSUER_PUBLIC_KEY_MD5_HASH_PROP_ID
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
CERT_SUBJECT_NAME_MD5_HASH_PROP_ID
 

如果 dwPropId 參數中設定了CERT_SIGN_HASH_CNG_ALG_PROP_IDCERT_SUBJECT_PUB_KEY_BIT_LENGTH_PROP_IDCERT_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

另請參閱

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

擴充屬性函式