CertFindCRLInStore 函式 (wincrypt.h)

CertFindCRLInStore 函式會在證書存儲中尋找第一個或下一個證書吊銷清單, (CRL) 內容,符合 dwFindType 參數和相關聯的 pvFindPara 參數所建立的搜尋準則。 此函式可用於迴圈,以在符合指定尋找準則的證書存儲中尋找所有 CRL 內容。

語法

PCCRL_CONTEXT CertFindCRLInStore(
  [in] HCERTSTORE    hCertStore,
  [in] DWORD         dwCertEncodingType,
  [in] DWORD         dwFindFlags,
  [in] DWORD         dwFindType,
  [in] const void    *pvFindPara,
  [in] PCCRL_CONTEXT pPrevCrlContext
);

參數

[in] hCertStore

要搜尋之證書存儲的句柄。

[in] dwCertEncodingType

目前未使用此參數。 它必須設定為零。

[in] dwFindFlags

如果 dwFindType 是CRL_FIND_ISSUED_BY,則預設只會完成簽發者名稱比對。 下列旗標可用來執行其他篩選。

意義
CRL_FIND_ISSUED_BY_AKI_FLAG
檢查具有授權金鑰標識碼的 CRL (AKI) 延伸模組。 如果CRL有 AKI,則只會傳回 AKI 符合簽發者的CRL。
注意 AKI 延伸模組具有 物件標識碼 (OID) 值szOID_AUTHORITY_KEY_IDENTIFIER2及其對應的數據結構。
 
CRL_FIND_ISSUED_BY_SIGNATURE_FLAG
使用簽發者憑證中的公鑰來驗證 CRL 上的簽章。 只會傳回具有有效簽章的CRL。
CRL_FIND_ISSUED_BY_DELTA_FLAG
尋找並傳回差異 CRL。
CRL_FIND_ISSUED_BY_BASE_FLAG
尋找並傳回基底 CRL。
CRL_FIND_ISSUED_FOR_SET_STRONG_PROPERTIES_FLAG
簽章會在驗證成功之後檢查是否有強度。 只有當 dwFindType 參數設定為 CRL_FIND_ISSUED_FOR時,才會套用此旗標。 您也必須設定 CRL_FIND_ISSUED_BY_SIGNATURE_FLAG。 如果成功,則會在CRL內容上設定下列強式簽章屬性:
  • CERT_SIGN_HASH_CNG_ALG_PROP_ID
  • CERT_ISSUER_PUB_KEY_BIT_LENGTH_PROP_ID
Windows 8和 Windows Server 2012:開始支援此旗標。

[in] dwFindType

指定所要進行的搜尋類型。 dwFindType 的值會決定 pvFindPara 參數的數據類型、內容和使用。 目前定義的搜尋類型及其 pvFindPara 需求如下。

意義
CRL_FIND_ANY
不會使用 pvFindPara 參數。 它必須設定為 NULL
沒有搜尋準則。 會傳回存放區中的下一個CRL。
CRL_FIND_ISSUED_BY
CERT_CONTEXT的指標。
在與 CERT_CONTEXT中籤發者相符的存放區中搜尋下一個CRL。
CRL_FIND_EXISTING
CRL_CONTEXT的指標。
以下列方式搜尋符合 CRL_CONTEXT 的下一個CRL:
  • 兩者都是基底或差異CRL。
  • 兩者的簽發者名稱 BLOB 相同。
  • 如果存在,則 Authority/KeyIdentifier 和 IssuingDistributionPoint 編碼延伸模組 BLOB 會相符。
CRL_FIND_ISSUED_FOR
CRL_FIND_ISSUED_FOR_PARA的指標。
在存放區中搜尋符合CRL_FIND_ISSUED_FOR_PARA結構中主體憑證簽發者的下一個CRL。

如果找不到 CRL,請在存放區中搜尋符合 CRL_FIND_ISSUED_FOR_PARA 結構中籤發者的下一個 CRL。

注意 使用跨憑證時,簽發者憑證中的主體名稱可能與主體憑證及其對應的CRL中的簽發者名稱不符。
 

[in] pvFindPara

此參數取決於 dwFindType 的值。 如需詳細資訊,請參閱本主題稍早的表格。

[in] pPrevCrlContext

這個函式傳回之最後 一個CRL_CONTEXT 指標。 必須是 NULL ,才能在符合搜尋準則的存放區中取得第一個 CRL。 將 pPrevCrlContext 設定為先前呼叫函式所傳回 的PCCRL_CONTEXT 指標,即可找到符合搜尋準則的後續 CRL。 搜尋程式會略過不符合搜尋準則或先前由 CertDeleteCRLFromStore 從存放區中刪除的任何 CRL。 此函式會釋放非 NULL 之此參數值所參考的CRL_CONTEXT

傳回值

如果函式成功,函式會傳回只讀CRL內容的指標。 當您完成使用傳回的CRL內容時,請在後續呼叫 CertFindCRLInStore 函式時將其傳遞為 pPrevCrlContext 參數,以隱含釋放它。

如果函式失敗,且找不到符合搜尋準則的CRL,則傳回值為 NULL。 如需擴充錯誤資訊,請呼叫 GetLastError。 以下是一些可能的錯誤碼。

傳回碼 Description
E_INVALIDARG
hCertStore 參數中的句柄與 pPrevCrlContext 參數所指向的 CRL 內容中的句柄不同,或在 dwFindType 參數中指定無效的搜尋類型。
CRYPT_E_NOT_FOUND
存放區中沒有CRL、找不到符合搜尋準則的CRL,或到達存放區清單的結尾。

備註

在後續呼叫函式時,會釋放傳回的指標作為 pPrevCrlContext 參數。 否則,必須藉由呼叫 CertFreeCRLContext 明確釋放指標。 CertFindCRLInStore 一律會使用呼叫 CertFreeCRLContext 來釋放非 NULLpPrevCrlContext,即使函式中有錯誤也一樣。

您可以呼叫 CertDuplicateCRLContext ,使傳回的內容重複。 傳回的CRL內容可以使用 CertAddCRLContextToStore 新增至不同的證書存儲,或使用 CertAddCRLLinkToStore 將該 CRL 內容的連結新增至非集合存放區。

規格需求

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

另請參閱

CRL_CONTEXT

CertAddCRLContextToStore

CertAddCRLLinkToStore

CertDeleteCRLFromStore

CertDuplicateCRLContext

CertFreeCRLContext

證書吊銷清單函式