共用方式為


CertGetCTLContextProperty 函式 (wincrypt.h)

CertGetCTLContextProperty 函式會擷取憑證信任清單的擴充屬性, (CTL) 內容。

語法

BOOL CertGetCTLContextProperty(
  [in]      PCCTL_CONTEXT pCtlContext,
  [in]      DWORD         dwPropId,
  [out]     void          *pvData,
  [in, out] DWORD         *pcbData
);

參數

[in] pCtlContext

CTL_CONTEXT 結構的指標。

[in] dwPropId

識別要擷取的屬性。 下表列出目前定義的標識碼和 pvData 中要傳回的數據類型。

意義
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 陣列的指標

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

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

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

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

傳回位元組陣列,其中包含 ASN.1 編碼 CERT_ENHKEY_USAGE 結構。

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

傳回 Null 終止的 Unicode 字元字串,其中包含 CTL 的顯示名稱。

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

傳回SHA1哈希。 如果哈希不存在,則會使用 CryptHashCertificate 進行計算。

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

傳回 CERT_KEY_CONTEXT 結構。

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

如果不存在,請搜尋szOID_SUBJECT_KEY_IDENTIFIER延伸模組。 如果失敗,則會在憑證 的 SubjectPublicKeyInfo 成員上完成 SHA1 哈希,以產生標識符值。

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 陣列的指標

傳回 ASN.1 編碼 CERT_ALT_NAME_INFO 結構。

CERT_NEXT_UPDATE_LOCATION_PROP_ID目前只搭配 CCL 使用。

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

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

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

傳回SHA1哈希。 如果哈希不存在,則會使用 CryptHashCertificate 進行計算。

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

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

 

針對所有其他屬性標識碼,pvData 會指向位元組陣列,而不是 CertSetCertificateContextPropertypvData 參數所指向的CRYPT_DATA_BLOB

如需每個屬性標識碼的詳細資訊,請參閱 CertSetCertificateContextPropertydwPropId 參數的檔。 CERT_SHA1_HASH_PROP_ID和CERT_NEXT_UPDATE_LOCATION_PROP_ID是最感興趣的預先定義屬性。

[out] pvData

緩衝區的指標,用來接收 由 dwPropId 決定的數據。 傳回之結構的成員所指向的結構也會在基底結構之後傳回。 因此, 包含在 azureData 中的大小通常超過基底結構的大小。

此參數可以是 NULL ,可設定記憶體配置之資訊的大小。 如需詳細資訊,請參閱 擷取未知長度的數據

[in, out] pcbData

DWORD 值的指標,指定 pvData 參數所指向之緩衝區的大小,以位元組為單位。 當函式傳回時, DWORD 值會包含要儲存在緩衝區中的位元元組數目。

注意 處理緩衝區中傳回的數據時,應用程式必須使用傳回之數據的實際大小。 實際大小可能比輸入上指定的緩衝區大小稍微小一點。 (輸入時,通常會指定足夠的緩衝區大小,以確保最大可能的輸出數據符合 buffer.) On 輸出中,此參數所指向的變數會更新,以反映複製到緩衝區的數據的實際大小。
 

傳回值

如果函式成功,則傳回值為 TRUE

如果函式失敗,則傳回值為 FALSE

來自所呼叫函式 CryptHashCertificate 的錯誤可以傳播至此函式。 如需擴充錯誤資訊,請呼叫 GetLastError

以下是一些可能的錯誤碼。

傳回碼 Description
CRYPT_E_NOT_FOUND
CTL 沒有指定的屬性。
ERROR_MORE_DATA
如果 pvData 參數指定的緩衝區不夠大,無法保存傳回的數據,則函式會設定ERROR_MORE_DATA程式代碼,並將所需的緩衝區大小以位元組為單位儲存在 由其所指向的變數中。

規格需求

需求
最低支援的用戶端 Windows XP [傳統型應用程式 |UWP 應用程式]
最低支援的伺服器 Windows Server 2003 [傳統型應用程式 |UWP 應用程式]
目標平台 Windows
標頭 wincrypt.h
程式庫 Crypt32.lib
Dll Crypt32.dll

另請參閱

CertEnumCTLContextProperties

CertGetCertificateContextProperty

CertSetCTLContextProperty

CryptHashCertificate

擴充屬性函式