| Index: net/url_request/url_request_unittest.cc
|
| diff --git a/net/url_request/url_request_unittest.cc b/net/url_request/url_request_unittest.cc
|
| index dda181e9ec6e2489275a9d1dbaf9f2851e8e8ea3..7a5805bc73efef4e40a78290ac41abde01708f26 100644
|
| --- a/net/url_request/url_request_unittest.cc
|
| +++ b/net/url_request/url_request_unittest.cc
|
| @@ -696,6 +696,31 @@ class TestExperimentalFeaturesNetworkDelegate : public TestNetworkDelegate {
|
| bool OnAreStrictSecureCookiesEnabled() const override { return true; }
|
| };
|
|
|
| +// OCSPErrorTestDelegate caches the SSLInfo passed to OnSSLCertificateError.
|
| +// This is needed because after the certificate failure, the URLRequest will
|
| +// retry the connection, and return a partial SSLInfo with a cached cert status.
|
| +// The partial SSLInfo does not have the OCSP information filled out.
|
| +class OCSPErrorTestDelegate : public TestDelegate {
|
| + public:
|
| + void OnSSLCertificateError(URLRequest* request,
|
| + const SSLInfo& ssl_info,
|
| + bool fatal) override {
|
| + ssl_info_ = ssl_info;
|
| + on_ssl_certificate_error_called_ = true;
|
| + TestDelegate::OnSSLCertificateError(request, ssl_info, fatal);
|
| + }
|
| +
|
| + bool on_ssl_certificate_error_called() {
|
| + return on_ssl_certificate_error_called_;
|
| + }
|
| +
|
| + SSLInfo ssl_info() { return ssl_info_; }
|
| +
|
| + private:
|
| + bool on_ssl_certificate_error_called_ = false;
|
| + SSLInfo ssl_info_;
|
| +};
|
| +
|
| } // namespace
|
|
|
| // Inherit PlatformTest since we require the autorelease pool on Mac OS X.
|
| @@ -8958,26 +8983,41 @@ class HTTPSOCSPTest : public HTTPSRequestTest {
|
| #endif
|
| }
|
|
|
| - void DoConnection(const SpawnedTestServer::SSLOptions& ssl_options,
|
| - CertStatus* out_cert_status) {
|
| - // We always overwrite out_cert_status.
|
| - *out_cert_status = 0;
|
| + void DoConnectionWithDelegate(
|
| + const SpawnedTestServer::SSLOptions& ssl_options,
|
| + TestDelegate* delegate,
|
| + SSLInfo* out_ssl_info) {
|
| + // Always overwrite |out_ssl_info|.
|
| + out_ssl_info->Reset();
|
| +
|
| SpawnedTestServer test_server(
|
| SpawnedTestServer::TYPE_HTTPS,
|
| ssl_options,
|
| base::FilePath(FILE_PATH_LITERAL("net/data/ssl")));
|
| ASSERT_TRUE(test_server.Start());
|
|
|
| - TestDelegate d;
|
| - d.set_allow_certificate_errors(true);
|
| - std::unique_ptr<URLRequest> r(
|
| - context_.CreateRequest(test_server.GetURL("/"), DEFAULT_PRIORITY, &d));
|
| + delegate->set_allow_certificate_errors(true);
|
| + std::unique_ptr<URLRequest> r(context_.CreateRequest(
|
| + test_server.GetURL("/"), DEFAULT_PRIORITY, delegate));
|
| r->Start();
|
|
|
| base::RunLoop().Run();
|
| + EXPECT_EQ(1, delegate->response_started_count());
|
|
|
| - EXPECT_EQ(1, d.response_started_count());
|
| - *out_cert_status = r->ssl_info().cert_status;
|
| + *out_ssl_info = r->ssl_info();
|
| + }
|
| +
|
| + void DoConnection(const SpawnedTestServer::SSLOptions& ssl_options,
|
| + CertStatus* out_cert_status) {
|
| + // Always overwrite |out_cert_status|.
|
| + *out_cert_status = 0;
|
| +
|
| + TestDelegate d;
|
| + SSLInfo ssl_info;
|
| + ASSERT_NO_FATAL_FAILURE(
|
| + DoConnectionWithDelegate(ssl_options, &d, &ssl_info));
|
| +
|
| + *out_cert_status = ssl_info.cert_status;
|
| }
|
|
|
| ~HTTPSOCSPTest() override {
|
| @@ -9132,7 +9172,8 @@ TEST_F(HTTPSOCSPTest, Invalid) {
|
|
|
| SpawnedTestServer::SSLOptions ssl_options(
|
| SpawnedTestServer::SSLOptions::CERT_AUTO);
|
| - ssl_options.ocsp_status = SpawnedTestServer::SSLOptions::OCSP_INVALID;
|
| + ssl_options.ocsp_status =
|
| + SpawnedTestServer::SSLOptions::OCSP_INVALID_RESPONSE;
|
|
|
| CertStatus cert_status;
|
| DoConnection(ssl_options, &cert_status);
|
| @@ -9196,6 +9237,267 @@ TEST_F(HTTPSOCSPTest, MAYBE_RevokedStapled) {
|
| EXPECT_TRUE(cert_status & CERT_STATUS_REV_CHECKING_ENABLED);
|
| }
|
|
|
| +static const struct OCSPVerifyTestData {
|
| + std::vector<SpawnedTestServer::SSLOptions::OCSPSingleResponse> ocsp_responses;
|
| + SpawnedTestServer::SSLOptions::OCSPProduced ocsp_produced;
|
| + OCSPVerifyResult::ResponseStatus response_status;
|
| + bool has_revocation_status;
|
| + OCSPRevocationStatus cert_status;
|
| +} kOCSPVerifyData[] = {
|
| +
|
| + {{{SpawnedTestServer::SSLOptions::OCSP_OK,
|
| + SpawnedTestServer::SSLOptions::OCSP_DATE_VALID}},
|
| + SpawnedTestServer::SSLOptions::OCSP_PRODUCED_VALID,
|
| + OCSPVerifyResult::PROVIDED,
|
| + true,
|
| + OCSPRevocationStatus::GOOD},
|
| +
|
| + {{{SpawnedTestServer::SSLOptions::OCSP_OK,
|
| + SpawnedTestServer::SSLOptions::OCSP_DATE_OLD}},
|
| + SpawnedTestServer::SSLOptions::OCSP_PRODUCED_VALID,
|
| + OCSPVerifyResult::INVALID_DATE,
|
| + false,
|
| + OCSPRevocationStatus::UNKNOWN},
|
| +
|
| + {{{SpawnedTestServer::SSLOptions::OCSP_OK,
|
| + SpawnedTestServer::SSLOptions::OCSP_DATE_EARLY}},
|
| + SpawnedTestServer::SSLOptions::OCSP_PRODUCED_VALID,
|
| + OCSPVerifyResult::INVALID_DATE,
|
| + false,
|
| + OCSPRevocationStatus::UNKNOWN},
|
| +
|
| + {{{SpawnedTestServer::SSLOptions::OCSP_OK,
|
| + SpawnedTestServer::SSLOptions::OCSP_DATE_LONG}},
|
| + SpawnedTestServer::SSLOptions::OCSP_PRODUCED_VALID,
|
| + OCSPVerifyResult::INVALID_DATE,
|
| + false,
|
| + OCSPRevocationStatus::UNKNOWN},
|
| +
|
| + {{{SpawnedTestServer::SSLOptions::OCSP_OK,
|
| + SpawnedTestServer::SSLOptions::OCSP_DATE_LONG}},
|
| + SpawnedTestServer::SSLOptions::OCSP_PRODUCED_VALID,
|
| + OCSPVerifyResult::INVALID_DATE,
|
| + false,
|
| + OCSPRevocationStatus::UNKNOWN},
|
| +
|
| + {{{SpawnedTestServer::SSLOptions::OCSP_TRY_LATER,
|
| + SpawnedTestServer::SSLOptions::OCSP_DATE_VALID}},
|
| + SpawnedTestServer::SSLOptions::OCSP_PRODUCED_VALID,
|
| + OCSPVerifyResult::ERROR_RESPONSE,
|
| + false,
|
| + OCSPRevocationStatus::UNKNOWN},
|
| +
|
| + {{{SpawnedTestServer::SSLOptions::OCSP_INVALID_RESPONSE,
|
| + SpawnedTestServer::SSLOptions::OCSP_DATE_VALID}},
|
| + SpawnedTestServer::SSLOptions::OCSP_PRODUCED_VALID,
|
| + OCSPVerifyResult::PARSE_RESPONSE_ERROR,
|
| + false,
|
| + OCSPRevocationStatus::UNKNOWN},
|
| +
|
| + {{{SpawnedTestServer::SSLOptions::OCSP_INVALID_RESPONSE_DATA,
|
| + SpawnedTestServer::SSLOptions::OCSP_DATE_VALID}},
|
| + SpawnedTestServer::SSLOptions::OCSP_PRODUCED_VALID,
|
| + OCSPVerifyResult::PARSE_RESPONSE_DATA_ERROR,
|
| + false,
|
| + OCSPRevocationStatus::UNKNOWN},
|
| +
|
| + {{{SpawnedTestServer::SSLOptions::OCSP_REVOKED,
|
| + SpawnedTestServer::SSLOptions::OCSP_DATE_EARLY}},
|
| + SpawnedTestServer::SSLOptions::OCSP_PRODUCED_VALID,
|
| + OCSPVerifyResult::INVALID_DATE,
|
| + false,
|
| + OCSPRevocationStatus::UNKNOWN},
|
| +
|
| + {{{SpawnedTestServer::SSLOptions::OCSP_UNKNOWN,
|
| + SpawnedTestServer::SSLOptions::OCSP_DATE_VALID}},
|
| + SpawnedTestServer::SSLOptions::OCSP_PRODUCED_VALID,
|
| + OCSPVerifyResult::PROVIDED,
|
| + true,
|
| + OCSPRevocationStatus::UNKNOWN},
|
| +
|
| + {{{SpawnedTestServer::SSLOptions::OCSP_UNKNOWN,
|
| + SpawnedTestServer::SSLOptions::OCSP_DATE_OLD}},
|
| + SpawnedTestServer::SSLOptions::OCSP_PRODUCED_VALID,
|
| + OCSPVerifyResult::INVALID_DATE,
|
| + false,
|
| + OCSPRevocationStatus::UNKNOWN},
|
| +
|
| + {{{SpawnedTestServer::SSLOptions::OCSP_UNKNOWN,
|
| + SpawnedTestServer::SSLOptions::OCSP_DATE_EARLY}},
|
| + SpawnedTestServer::SSLOptions::OCSP_PRODUCED_VALID,
|
| + OCSPVerifyResult::INVALID_DATE,
|
| + false,
|
| + OCSPRevocationStatus::UNKNOWN},
|
| +
|
| + {{{SpawnedTestServer::SSLOptions::OCSP_OK,
|
| + SpawnedTestServer::SSLOptions::OCSP_DATE_VALID}},
|
| + SpawnedTestServer::SSLOptions::OCSP_PRODUCED_BEFORE_CERT,
|
| + OCSPVerifyResult::BAD_PRODUCED_AT,
|
| + false,
|
| + OCSPRevocationStatus::UNKNOWN},
|
| +
|
| + {{{SpawnedTestServer::SSLOptions::OCSP_OK,
|
| + SpawnedTestServer::SSLOptions::OCSP_DATE_VALID}},
|
| + SpawnedTestServer::SSLOptions::OCSP_PRODUCED_AFTER_CERT,
|
| + OCSPVerifyResult::BAD_PRODUCED_AT,
|
| + false,
|
| + OCSPRevocationStatus::UNKNOWN},
|
| +
|
| + {{{SpawnedTestServer::SSLOptions::OCSP_OK,
|
| + SpawnedTestServer::SSLOptions::OCSP_DATE_VALID}},
|
| + SpawnedTestServer::SSLOptions::OCSP_PRODUCED_AFTER_CERT,
|
| + OCSPVerifyResult::BAD_PRODUCED_AT,
|
| + false,
|
| + OCSPRevocationStatus::UNKNOWN},
|
| +
|
| + {{{SpawnedTestServer::SSLOptions::OCSP_REVOKED,
|
| + SpawnedTestServer::SSLOptions::OCSP_DATE_VALID}},
|
| + SpawnedTestServer::SSLOptions::OCSP_PRODUCED_VALID,
|
| + OCSPVerifyResult::PROVIDED,
|
| + true,
|
| + OCSPRevocationStatus::REVOKED},
|
| +
|
| + {{{SpawnedTestServer::SSLOptions::OCSP_REVOKED,
|
| + SpawnedTestServer::SSLOptions::OCSP_DATE_OLD}},
|
| + SpawnedTestServer::SSLOptions::OCSP_PRODUCED_VALID,
|
| + OCSPVerifyResult::INVALID_DATE,
|
| + false,
|
| + OCSPRevocationStatus::UNKNOWN},
|
| +
|
| + {{{SpawnedTestServer::SSLOptions::OCSP_REVOKED,
|
| + SpawnedTestServer::SSLOptions::OCSP_DATE_LONG}},
|
| + SpawnedTestServer::SSLOptions::OCSP_PRODUCED_VALID,
|
| + OCSPVerifyResult::INVALID_DATE,
|
| + false,
|
| + OCSPRevocationStatus::UNKNOWN},
|
| +
|
| + {{{SpawnedTestServer::SSLOptions::OCSP_OK,
|
| + SpawnedTestServer::SSLOptions::OCSP_DATE_VALID}},
|
| + SpawnedTestServer::SSLOptions::OCSP_PRODUCED_VALID,
|
| + OCSPVerifyResult::PROVIDED,
|
| + true,
|
| + OCSPRevocationStatus::GOOD},
|
| +
|
| + {{{SpawnedTestServer::SSLOptions::OCSP_OK,
|
| + SpawnedTestServer::SSLOptions::OCSP_DATE_OLD},
|
| + {SpawnedTestServer::SSLOptions::OCSP_OK,
|
| + SpawnedTestServer::SSLOptions::OCSP_DATE_VALID}},
|
| + SpawnedTestServer::SSLOptions::OCSP_PRODUCED_VALID,
|
| + OCSPVerifyResult::PROVIDED,
|
| + true,
|
| + OCSPRevocationStatus::GOOD},
|
| +
|
| + {{{SpawnedTestServer::SSLOptions::OCSP_OK,
|
| + SpawnedTestServer::SSLOptions::OCSP_DATE_EARLY},
|
| + {SpawnedTestServer::SSLOptions::OCSP_OK,
|
| + SpawnedTestServer::SSLOptions::OCSP_DATE_VALID}},
|
| + SpawnedTestServer::SSLOptions::OCSP_PRODUCED_VALID,
|
| + OCSPVerifyResult::PROVIDED,
|
| + true,
|
| + OCSPRevocationStatus::GOOD},
|
| +
|
| + {{{SpawnedTestServer::SSLOptions::OCSP_OK,
|
| + SpawnedTestServer::SSLOptions::OCSP_DATE_LONG},
|
| + {SpawnedTestServer::SSLOptions::OCSP_OK,
|
| + SpawnedTestServer::SSLOptions::OCSP_DATE_VALID}},
|
| + SpawnedTestServer::SSLOptions::OCSP_PRODUCED_VALID,
|
| + OCSPVerifyResult::PROVIDED,
|
| + true,
|
| + OCSPRevocationStatus::GOOD},
|
| +
|
| + {{{SpawnedTestServer::SSLOptions::OCSP_OK,
|
| + SpawnedTestServer::SSLOptions::OCSP_DATE_EARLY},
|
| + {SpawnedTestServer::SSLOptions::OCSP_OK,
|
| + SpawnedTestServer::SSLOptions::OCSP_DATE_OLD},
|
| + {SpawnedTestServer::SSLOptions::OCSP_OK,
|
| + SpawnedTestServer::SSLOptions::OCSP_DATE_LONG}},
|
| + SpawnedTestServer::SSLOptions::OCSP_PRODUCED_VALID,
|
| + OCSPVerifyResult::INVALID_DATE,
|
| + false,
|
| + OCSPRevocationStatus::UNKNOWN},
|
| +
|
| + {{{SpawnedTestServer::SSLOptions::OCSP_UNKNOWN,
|
| + SpawnedTestServer::SSLOptions::OCSP_DATE_VALID},
|
| + {SpawnedTestServer::SSLOptions::OCSP_REVOKED,
|
| + SpawnedTestServer::SSLOptions::OCSP_DATE_VALID},
|
| + {SpawnedTestServer::SSLOptions::OCSP_OK,
|
| + SpawnedTestServer::SSLOptions::OCSP_DATE_VALID}},
|
| + SpawnedTestServer::SSLOptions::OCSP_PRODUCED_VALID,
|
| + OCSPVerifyResult::PROVIDED,
|
| + true,
|
| + OCSPRevocationStatus::REVOKED},
|
| +
|
| + {{{SpawnedTestServer::SSLOptions::OCSP_UNKNOWN,
|
| + SpawnedTestServer::SSLOptions::OCSP_DATE_VALID},
|
| + {SpawnedTestServer::SSLOptions::OCSP_OK,
|
| + SpawnedTestServer::SSLOptions::OCSP_DATE_VALID}},
|
| + SpawnedTestServer::SSLOptions::OCSP_PRODUCED_VALID,
|
| + OCSPVerifyResult::PROVIDED,
|
| + true,
|
| + OCSPRevocationStatus::UNKNOWN},
|
| +
|
| + {{{SpawnedTestServer::SSLOptions::OCSP_UNKNOWN,
|
| + SpawnedTestServer::SSLOptions::OCSP_DATE_VALID},
|
| + {SpawnedTestServer::SSLOptions::OCSP_REVOKED,
|
| + SpawnedTestServer::SSLOptions::OCSP_DATE_LONG},
|
| + {SpawnedTestServer::SSLOptions::OCSP_OK,
|
| + SpawnedTestServer::SSLOptions::OCSP_DATE_VALID}},
|
| + SpawnedTestServer::SSLOptions::OCSP_PRODUCED_VALID,
|
| + OCSPVerifyResult::PROVIDED,
|
| + true,
|
| + OCSPRevocationStatus::UNKNOWN},
|
| +
|
| + {{{SpawnedTestServer::SSLOptions::OCSP_MISMATCHED_SERIAL,
|
| + SpawnedTestServer::SSLOptions::OCSP_DATE_VALID}},
|
| + SpawnedTestServer::SSLOptions::OCSP_PRODUCED_VALID,
|
| + OCSPVerifyResult::NO_MATCHING_RESPONSE,
|
| + false,
|
| + OCSPRevocationStatus::UNKNOWN},
|
| +
|
| + {{{SpawnedTestServer::SSLOptions::OCSP_MISMATCHED_SERIAL,
|
| + SpawnedTestServer::SSLOptions::OCSP_DATE_EARLY}},
|
| + SpawnedTestServer::SSLOptions::OCSP_PRODUCED_VALID,
|
| + OCSPVerifyResult::NO_MATCHING_RESPONSE,
|
| + false,
|
| + OCSPRevocationStatus::UNKNOWN},
|
| +
|
| +};
|
| +
|
| +class HTTPSOCSPVerifyTest
|
| + : public HTTPSOCSPTest,
|
| + public testing::WithParamInterface<OCSPVerifyTestData> {};
|
| +
|
| +TEST_P(HTTPSOCSPVerifyTest, VerifyResult) {
|
| + SpawnedTestServer::SSLOptions ssl_options(
|
| + SpawnedTestServer::SSLOptions::CERT_AUTO);
|
| + OCSPVerifyTestData test = GetParam();
|
| +
|
| + ssl_options.ocsp_responses = test.ocsp_responses;
|
| + ssl_options.ocsp_produced = test.ocsp_produced;
|
| + ssl_options.staple_ocsp_response = true;
|
| +
|
| + SSLInfo ssl_info;
|
| + OCSPErrorTestDelegate delegate;
|
| + ASSERT_NO_FATAL_FAILURE(
|
| + DoConnectionWithDelegate(ssl_options, &delegate, &ssl_info));
|
| +
|
| + // The SSLInfo must be extracted from |delegate| on error, due to how
|
| + // URLRequest caches certificate errors.
|
| + if (delegate.have_certificate_errors()) {
|
| + ASSERT_TRUE(delegate.on_ssl_certificate_error_called());
|
| + ssl_info = delegate.ssl_info();
|
| + }
|
| +
|
| + EXPECT_EQ(test.response_status, ssl_info.ocsp_result.response_status);
|
| +
|
| + if (test.has_revocation_status)
|
| + EXPECT_EQ(test.cert_status, ssl_info.ocsp_result.revocation_status);
|
| +}
|
| +
|
| +INSTANTIATE_TEST_CASE_P(OCSPVerify,
|
| + HTTPSOCSPVerifyTest,
|
| + testing::ValuesIn(kOCSPVerifyData));
|
| +
|
| class HTTPSHardFailTest : public HTTPSOCSPTest {
|
| protected:
|
| void SetupContext() override {
|
| @@ -9221,7 +9523,8 @@ TEST_F(HTTPSHardFailTest, FailsOnOCSPInvalid) {
|
|
|
| SpawnedTestServer::SSLOptions ssl_options(
|
| SpawnedTestServer::SSLOptions::CERT_AUTO);
|
| - ssl_options.ocsp_status = SpawnedTestServer::SSLOptions::OCSP_INVALID;
|
| + ssl_options.ocsp_status =
|
| + SpawnedTestServer::SSLOptions::OCSP_INVALID_RESPONSE;
|
|
|
| CertStatus cert_status;
|
| DoConnection(ssl_options, &cert_status);
|
| @@ -9252,7 +9555,8 @@ TEST_F(HTTPSEVCRLSetTest, MissingCRLSetAndInvalidOCSP) {
|
|
|
| SpawnedTestServer::SSLOptions ssl_options(
|
| SpawnedTestServer::SSLOptions::CERT_AUTO);
|
| - ssl_options.ocsp_status = SpawnedTestServer::SSLOptions::OCSP_INVALID;
|
| + ssl_options.ocsp_status =
|
| + SpawnedTestServer::SSLOptions::OCSP_INVALID_RESPONSE;
|
| SSLConfigService::SetCRLSet(scoped_refptr<CRLSet>());
|
|
|
| CertStatus cert_status;
|
| @@ -9324,7 +9628,8 @@ TEST_F(HTTPSEVCRLSetTest, ExpiredCRLSet) {
|
|
|
| SpawnedTestServer::SSLOptions ssl_options(
|
| SpawnedTestServer::SSLOptions::CERT_AUTO);
|
| - ssl_options.ocsp_status = SpawnedTestServer::SSLOptions::OCSP_INVALID;
|
| + ssl_options.ocsp_status =
|
| + SpawnedTestServer::SSLOptions::OCSP_INVALID_RESPONSE;
|
| SSLConfigService::SetCRLSet(
|
| scoped_refptr<CRLSet>(CRLSet::ExpiredCRLSetForTesting()));
|
|
|
| @@ -9347,7 +9652,8 @@ TEST_F(HTTPSEVCRLSetTest, FreshCRLSetCovered) {
|
|
|
| SpawnedTestServer::SSLOptions ssl_options(
|
| SpawnedTestServer::SSLOptions::CERT_AUTO);
|
| - ssl_options.ocsp_status = SpawnedTestServer::SSLOptions::OCSP_INVALID;
|
| + ssl_options.ocsp_status =
|
| + SpawnedTestServer::SSLOptions::OCSP_INVALID_RESPONSE;
|
| SSLConfigService::SetCRLSet(
|
| scoped_refptr<CRLSet>(CRLSet::ForTesting(
|
| false, &kOCSPTestCertSPKI, "")));
|
| @@ -9372,7 +9678,8 @@ TEST_F(HTTPSEVCRLSetTest, FreshCRLSetNotCovered) {
|
|
|
| SpawnedTestServer::SSLOptions ssl_options(
|
| SpawnedTestServer::SSLOptions::CERT_AUTO);
|
| - ssl_options.ocsp_status = SpawnedTestServer::SSLOptions::OCSP_INVALID;
|
| + ssl_options.ocsp_status =
|
| + SpawnedTestServer::SSLOptions::OCSP_INVALID_RESPONSE;
|
| SSLConfigService::SetCRLSet(
|
| scoped_refptr<CRLSet>(CRLSet::EmptyCRLSetForTesting()));
|
|
|
| @@ -9432,7 +9739,8 @@ class HTTPSCRLSetTest : public HTTPSOCSPTest {
|
| TEST_F(HTTPSCRLSetTest, ExpiredCRLSet) {
|
| SpawnedTestServer::SSLOptions ssl_options(
|
| SpawnedTestServer::SSLOptions::CERT_AUTO);
|
| - ssl_options.ocsp_status = SpawnedTestServer::SSLOptions::OCSP_INVALID;
|
| + ssl_options.ocsp_status =
|
| + SpawnedTestServer::SSLOptions::OCSP_INVALID_RESPONSE;
|
| SSLConfigService::SetCRLSet(
|
| scoped_refptr<CRLSet>(CRLSet::ExpiredCRLSetForTesting()));
|
|
|
|
|