Index: net/base/cert_verify_proc_win.cc |
diff --git a/net/base/cert_verify_proc_win.cc b/net/base/cert_verify_proc_win.cc |
index 045ea16840c27a02e50f76e0dccc2632bff035d9..a733d132642c433e805d146e884b467c298f7457 100644 |
--- a/net/base/cert_verify_proc_win.cc |
+++ b/net/base/cert_verify_proc_win.cc |
@@ -541,17 +541,6 @@ int CertVerifyProcWin::VerifyInternal(X509Certificate* cert, |
chain_para.RequestedUsage.Usage.cUsageIdentifier = arraysize(usage); |
chain_para.RequestedUsage.Usage.rgpszUsageIdentifier = |
const_cast<LPSTR*>(usage); |
- // We can set CERT_CHAIN_RETURN_LOWER_QUALITY_CONTEXTS to get more chains. |
- DWORD chain_flags = CERT_CHAIN_CACHE_END_CERT | |
- CERT_CHAIN_REVOCATION_CHECK_CHAIN_EXCLUDE_ROOT; |
- const bool rev_checking_enabled = |
- flags & X509Certificate::VERIFY_REV_CHECKING_ENABLED; |
- |
- if (rev_checking_enabled) { |
- verify_result->cert_status |= CERT_STATUS_REV_CHECKING_ENABLED; |
- } else { |
- chain_flags |= CERT_CHAIN_REVOCATION_CHECK_CACHE_ONLY; |
- } |
// Get the certificatePolicies extension of the certificate. |
scoped_ptr_malloc<CERT_POLICIES_INFO> policies_info; |
@@ -574,6 +563,20 @@ int CertVerifyProcWin::VerifyInternal(X509Certificate* cert, |
} |
} |
+ // We can set CERT_CHAIN_RETURN_LOWER_QUALITY_CONTEXTS to get more chains. |
+ DWORD chain_flags = CERT_CHAIN_CACHE_END_CERT | |
+ CERT_CHAIN_REVOCATION_CHECK_CHAIN_EXCLUDE_ROOT; |
+ const bool rev_checking_enabled = |
+ (flags & X509Certificate::VERIFY_REV_CHECKING_ENABLED) || |
+ (ev_policy_oid != NULL && |
+ (flags & X509Certificate::VERIFY_REV_CHECKING_ENABLED_EV_ONLY)); |
+ |
+ if (rev_checking_enabled) { |
+ verify_result->cert_status |= CERT_STATUS_REV_CHECKING_ENABLED; |
+ } else { |
+ chain_flags |= CERT_CHAIN_REVOCATION_CHECK_CACHE_ONLY; |
+ } |
+ |
// For non-test scenarios, use the default HCERTCHAINENGINE, NULL, which |
// corresponds to HCCE_CURRENT_USER and is is initialized as needed by |
// crypt32. However, when testing, it is necessary to create a new |