CertSetCRLContextProperty 函式 (wincrypt.h)

CertSetCRLContextProperty 函式會為指定的證書吊銷清單設定擴充屬性, (CRL) 內容。

語法

BOOL CertSetCRLContextProperty(
  [in] PCCRL_CONTEXT pCrlContext,
  [in] DWORD         dwPropId,
  [in] DWORD         dwFlags,
  [in] const void    *pvData
);

參數

[in] pCrlContext

CRL_CONTEXT 結構的指標。

[in] dwPropId

識別要設定的屬性。 dwPropId 的值會決定 pvData 參數的類型和內容。 下表列出目前定義的標識碼和 pvData 中要傳回的數據類型。

通常只會設定下列屬性:

  • CERT_HASH_PROP_ID
  • CERT_SHA1_HASH_PROP_ID
  • CERT_MD5_HASH_PROP_ID
  • CERT_SIGNATURE_HASH_PROP_ID
意義
CERT_ACCESS_STATE_PROP_ID
pvData 的數據類型:DWORD 的指標

設定 DWORD 值,指出是否保存憑證的寫入作業。 如果憑證位於記憶體存放區或以登錄為基礎的存放區中,以唯讀方式開啟,則不會設定 DWORD 值。

CERT_ARCHIVED_PROP_ID
pvData 的數據類型:NULL

表示在列舉期間略過憑證。 找到具有此屬性集之憑證的明確搜尋作業,例如用來尋找具有特定哈希或序號之憑證的憑證。 pvData 中沒有任何數據與這個屬性相關聯。

CERT_AUTO_ENROLL_PROP_ID
pvData 的數據類型:BYTE 陣列的指標

設定 以 Null 終止的 Unicode 字串,命名憑證已自動註冊的憑證類型。

CERT_CTL_USAGE_PROP_ID
pvData 的數據類型:BYTE 陣列的指標

設定位元組陣列,其中包含 抽象語法表示法 1 (ASN.1) 編碼 CTL_USAGE 結構。

CERT_DESCRIPTION_PROP_ID
pvData 的數據類型:BYTE 陣列的指標

設定憑證 UI 所顯示的 屬性。 此屬性可讓使用者描述憑證的使用。

CERT_ENHKEY_USAGE_PROP_ID
pvData 的數據類型:

設定包含 ASN.1 編碼 CERT_ENHKEY_USAGE 結構的位元組陣列。

CERT_FRIENDLY_NAME_PROP_ID
pvData 的數據類型:BYTE 陣列的指標

設定 以 Null 結尾的 Unicode 字元字串,其中包含 CRL 的顯示名稱。

CERT_ISSUER_CHAIN_PUB_KEY_CNG_ALG_BIT_LENGTH_PROP_ID
pvData 的數據類型:CRYPT_DATA_BLOB 結構的指標。

設定字串,其中包含一組 L“<PUBKEY>/<BITLENGTH>” 公鑰演演算法和位長度組。 分號 L“;”會當做分隔符使用。

<PUBKEY> 值會識別 CNG 公鑰演演算法。 支援下列演算法:

  • L“RSA” (BCRYPT_RSA_ALGORITHM)
  • L“DSA” (BCRYPT_DSA_ALGORITHM)
  • L“ECDSA” (SSL_ECDSA_ALGORITHM)
<PUBKEY>/<BITLENGTH> 配對是針對CRL簽發者鏈結中排除分葉的每個憑證所設定。 當具有獨立簽署者鏈結的 OCSP 回應轉換成 CRL 時,可以設定這個屬性。
注意 不應該為委派的 OCSP 簽署者憑證設定這個屬性。 委派的簽署者憑證會使用用來簽署主體憑證的相同密鑰進行簽署,並在該處檢查。
 
以下是一個範例:

:L“RSA/2048;RSA/4096”

CERT_ISSUER_CHAIN_SIGN_HASH_CNG_ALG_PROP_ID
pvData 的數據類型:CRYPT_DATA_BLOB 結構的指標。

設定字串,其中包含一組 L“<SIGNATURE>/<HASH>” 演算法組。 分號 L“;”會當做配對之間的分隔符使用。

只有當 OCSP 回應轉換成 CRL 時,才會設定這個屬性。 對於委派的 OCSP 簽署者憑證,只會傳回簽署者憑證的演算法組。 針對獨立的 OCSP 簽署者憑證鏈結,系統會針對鏈結中排除根目錄的每個憑證傳回演算法組。

<SIGNATURE> 值會識別 CNG 公鑰演演算法。 支援下列演算法:

  • L“RSA” (BCRYPT_RSA_ALGORITHM)
  • L“DSA” (BCRYPT_DSA_ALGORITHM)
  • L“ECDSA” (SSL_ECDSA_ALGORITHM)
<HASH> 值會識別 CNG 哈希演算法。 支援下列演算法:
  • L“MD5” (BCRYPT_MD5_ALGORITHM)
  • L“SHA1” (BCRYPT_SHA1_ALGORITHM)
  • L“SHA256” (BCRYPT_SHA256_ALGORITHM)
  • L“SHA384” (BCRYPT_SHA384_ALGORITHM)
  • L“SHA512” (BCRYPT_SHA512_ALGORITHM)
以下是一個範例:
  • L“RSA/SHA256;RSA/SHA256”
這個屬性是由驗證撤銷函式明確設定。
CERT_ISSUER_PUB_KEY_BIT_LENGTH_PROP_ID
pvData 的數據類型:CRYPT_DATA_BLOB 結構的指標。

設定CRL簽發者憑證中公鑰的長度,以位為單位。 此屬性也適用於已轉換成CRL的OCSP。

這個屬性是由驗證撤銷函式明確設定。

Windows 8 和 Windows Server 2012:開始支援此屬性。

CERT_KEY_CONTEXT_PROP_ID
pvData 的數據類型:指向CERT_KEY_CONTEXT的指標

設定 CERT_KEY_CONTEXT 結構。

CERT_KEY_IDENTIFIER_PROP_ID
pvData 的數據類型:BYTE 陣列的指標
CERT_KEY_PROV_HANDLE_PROP_ID
pvData 的數據類型:HCRYPTPROV 的指標

設定從 CERT_KEY_CONTEXT_PROP_ID取得的提供者句柄。

CERT_KEY_PROV_INFO_PROP_ID
pvData 的數據類型:指向CRYPT_KEY_PROV_INFO的指標

設定 CRYPT_KEY_PROV_INFO 結構的指標。

CERT_KEY_SPEC_PROP_ID
pvData 的數據類型:DWORD 的指標

設定 DWORD 值,指定如果有的話,從 CERT_KEY_CONTEXT_PROP_ID 屬性取得的私鑰。 否則,如果CERT_KEY_PROV_INFO_PROP_ID存在,則為 dwKeySpec 的來源。

CERT_MD5_HASH_PROP_ID
pvData 的數據類型:BYTE 陣列的指標

設定 MD5 哈希。 您可以使用 CryptHashCertificate 函式來計算哈希。

CERT_NEXT_UPDATE_LOCATION_PROP_ID
pvData 的數據類型:BYTE 陣列的指標

在 CTL 上設定 ASN.1 編碼 CERT_ALT_NAME_INFO 結構。

CERT_PVK_FILE_PROP_ID
pvData 的數據類型:BYTE 陣列的指標

設定 Null 終止的 Unicode 寬字元字串,指定包含與憑證公鑰相關聯之私鑰的檔名。

CERT_SHA1_HASH_PROP_ID
pvData 的數據類型:BYTE 陣列的指標

設定SHA1哈希。 您可以使用 CryptHashCertificate 來計算哈希。

CERT_SIGN_HASH_CNG_ALG_PROP_ID
pvData 的數據類型:CRYPT_DATA_BLOB結構的指標。

設定代表憑證簽章的 L“<SIGNATURE>/<HASH>” 字串。 <SIGNATURE> 值會識別 CNG 公鑰演演算法。 支援下列演算法:

  • L“RSA” (BCRYPT_RSA_ALGORITHM)
  • L“DSA” (BCRYPT_DSA_ALGORITHM)
  • L“ECDSA” (SSL_ECDSA_ALGORITHM)
<HASH> 值會識別 CNG 哈希演算法。 支援下列演算法:
  • L“MD5” (BCRYPT_MD5_ALGORITHM)
  • L“SHA1” (BCRYPT_SHA1_ALGORITHM)
  • L“SHA256” (BCRYPT_SHA256_ALGORITHM)
  • L“SHA384” (BCRYPT_SHA384_ALGORITHM)
  • L“SHA512” (BCRYPT_SHA512_ALGORITHM)
以下是常見的範例:
  • L“RSA/SHA1”
  • L“RSA/SHA256”
  • L“ECDSA/SHA256”
此屬性也適用於已轉換成 CRL 的 OCSP 回應。

這個屬性是由驗證撤銷函式明確設定。

Windows 8 和 Windows Server 2012:開始支援此屬性。

CERT_SIGNATURE_HASH_PROP_ID
pvData 的數據類型:BYTE 陣列的指標

設定簽章哈希。 如果哈希不存在,則會使用 CryptHashToBeSigned 進行計算。 哈希的長度是SHA的20個字節,MD5則為16個字節。

 

用戶可以使用從 CERT_FIRST_USER_PROP_ID 到CERT_LAST_USER_PROP_ID的 DWORD 值來定義其他 dwPropId 類型。 針對所有使用者定義 dwPropId 類型, pvData 會指向編碼 的CRYPT_DATA_BLOB

針對所有其他屬性標識碼, 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 成員。

備註

如果屬性已經存在,則會取代其舊值。

範例

如需使用此函式的範例,請參閱 範例 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

CRL_CONTEXT

CRYPT_DATA_BLOB

CRYPT_HASH_BLOB

CRYPT_KEY_PROV_INFO

CTL_USAGE

CertGetCRLContextProperty

CertSetCertificateContextProperty

CryptEncodeObject

CryptHashToBeSigned

擴充屬性函式