CertGetCRLFromStore 函式 (wincrypt.h)
CertGetCRLFromStore函式會從指定簽發者的憑證存放區取得第一個或下一個憑證撤銷清單 (CRL) 內容。 函式也會在 CRL 上執行啟用的驗證檢查。 建議使用新的 憑證鏈結驗證函式 ,而不是此函式。
語法
PCCRL_CONTEXT CertGetCRLFromStore(
[in] HCERTSTORE hCertStore,
[in, optional] PCCERT_CONTEXT pIssuerContext,
[in] PCCRL_CONTEXT pPrevCrlContext,
[in, out] DWORD *pdwFlags
);
參數
[in] hCertStore
憑證存放區的控制碼。
[in, optional] pIssuerContext
簽發 者CERT_CONTEXT的指標。 pIssuerCoNtext指標可能來自此存放區或其他存放區,或可能是由呼叫CertCreateCertificateCoNtext所建立。 如果為此參數傳遞 Null ,則會找到存放區中的所有 CRL。
[in] pPrevCrlContext
CRL_CONTEXT的指標。 簽發者可以有多個 CRL。 例如,它可以使用 X.509 第 3 版擴充功能來產生差異 CRL。 第一次呼叫時,此參數必須是 Null ,才能取得 CRL。 若要取得簽發者的下一個 CRL,參數會設定為先前呼叫所傳回 CRL_CONTEXT 。 即使發生錯誤,此函式一律會呼叫CertFreeCRLCoNtext來釋放非NullpPrevCrlCoNtext。
[in, out] pdwFlags
定義下列旗標值,以在傳回的 CRL 上啟用驗證檢查。 您可以使用位OR 運算來結合這些旗標。
如果啟用的驗證檢查成功,其旗標會設定為零。
如果啟用的驗證檢查失敗,其旗標會在傳回時維持設定狀態。 如果 pIssuerCoNtext 為 Null,則啟用的CERT_STORE_SIGNATURE_FLAG一律會失敗,而且也會設定CERT_STORE_NO_ISSUER_FLAG。 如需詳細資訊,請參閱備註。
如果只設定其中一個CERT_STORE_BASE_CRL_FLAG或CERT_STORE_DELTA_CRL_FLAG,此函式會傳回基底或差異 CRL,並在傳回時清除適當的基底或差異旗標。 如果同時設定這兩個旗標,則只會清除其中一個旗標。
針對驗證檢查失敗,仍然會傳回第一個或下一個 CRL_CONTEXT 的指標,而且 GetLastError 不會更新。
傳回值
如果函式成功,則傳回值是唯讀 CRL_CONTEXT的指標。
如果函式失敗,且找不到第一個或下一個 CRL,則傳回值為 Null。
傳回 的CRL_CONTEXT 必須藉由呼叫 CertFreeCRLCoNtext來釋放。 不過,在後續呼叫上為pPrevCrlCoNtext提供傳回CRL_CONTEXT時,函式會釋放它。
如需擴充的錯誤資訊,請呼叫 GetLastError。 接下來有一些可能的錯誤碼。
值 | 描述 |
---|---|
|
hCertStore參數中的控制碼與pPrevCrlCoNtext參數所指向的 CRL 內容中的控制碼不同,或在pdwFlags中設定了不支援的旗標。 |
|
簽發者的存放區中沒有任何 CRL 存在,或函式到達存放區清單的結尾。 |
備註
您可以呼叫CertDuplicateCRLCoNtext來建立重複的 CRL。
旗標的十六進位值可以使用位OR 運算來合併,以啟用這兩個驗證。 例如,若要啟用這兩個驗證,pdwFlags指向的DWORD值會設定為值CERT_STORE_SIGNATURE_FLAG |CERT_STORE_TIME_VALIDITY_FLAG。 如果CERT_STORE_SIGNATURE_FLAG驗證成功,但CERT_STORE_TIME_VALIDITY_FLAG驗證失敗,則 pdwFlags指向的DWORD值會在函式傳回時設定為CERT_STORE_TIME_VALIDITY_FLAG。
規格需求
最低支援的用戶端 | Windows XP [傳統型應用程式 |UWP 應用程式] |
最低支援的伺服器 | Windows Server 2003 [傳統型應用程式 |UWP 應用程式] |
目標平台 | Windows |
標頭 | wincrypt.h |
程式庫 | Crypt32.lib |
Dll | Crypt32.dll |