CertVerifySubjectCertificateContext 函式 (wincrypt.h)

CertVerifySubjectCertificateContext 函式會藉由檢查憑證簽發者的有效性,對憑證執行已啟用的驗證檢查。 建議使用新的 憑證鏈結驗證函 式,而不是此函式。

語法

BOOL CertVerifySubjectCertificateContext(
  [in]           PCCERT_CONTEXT pSubject,
  [in, optional] PCCERT_CONTEXT pIssuer,
  [in, out]      DWORD          *pdwFlags
);

參數

[in] pSubject

包含主體憑證之 CERT_CONTEXT 結構的指標。

[in, optional] pIssuer

包含簽發者憑證 之CERT_CONTEXT 的指標。 檢查CERT_STORE_TIME_VALIDITY_FLAG時, pIssuer 可以是 NULL

[in, out] pdwFlags

DWORD 值的指標包含驗證檢查旗標。 您可以設定下列旗標,在主體憑證上啟用驗證檢查。 它們可以使用位 OR 作業來合併,以啟用多個驗證。

意義
CERT_STORE_REVOCATION_FLAG
檢查主體憑證是否在簽發者的撤銷清單中。
CERT_STORE_SIGNATURE_FLAG
使用簽發者憑證中的公鑰來驗證主體憑證上的簽章。
CERT_STORE_TIME_VALIDITY_FLAG
取得目前的時間,並確認它是否在主體憑證的有效期間內。
 

如果啟用的驗證檢查成功,其旗標會設定為零。 如果失敗,則會在傳回時設定其旗標。

如果已啟用CERT_STORE_REVOCATION_FLAG,且簽發者在存放區中沒有CRL,則除了CERT_STORE_REVOCATION_FLAG之外,還會設定CERT_STORE_NO_CRL_FLAG。

傳回值

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

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

針對驗證檢查失敗,仍會傳回 TRUE 。 只有在傳入不正確的參數時,才會傳回 FALSE

如需擴充錯誤資訊,請呼叫 GetLastError。 其中一個可能的錯誤碼如下。

傳回碼 Description
E_INVALIDARG
pdwFlags 中已設定不支援的位。 您可以設定CERT_STORE_SIGNATURE_FLAG、CERT_STORE_TIME_VALIDITY_FLAG和CERT_STORE_REVOCATION_FLAG的任何組合。 如果 pIssuerNULL,則只能設定CERT_STORE_TIME_VALIDITY_FLAG。

備註

旗標的十六進位值可以使用位 OR 作業來結合,以啟用多個驗證。 例如,若要同時啟用簽章和時間有效性,值

CERT_STORE_SIGNATURE_FLAG | CERT_STORE_TIME_VALIDITY_FLAG

會放在 pdwFlagsDWORD 值中做為輸入參數。 如果CERT_STORE_SIGNATURE_FLAG驗證成功,但CERT_STORE_TIME_VALIDITY_FLAG驗證失敗,當函式傳回時, pdwFlags 會設定為CERT_STORE_TIME_VALIDITY_FLAG。

規格需求

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

另請參閱

CERT_CONTEXT

CertGetIssuerCertificateFromStore

憑證函數