| OLD | NEW | 
|    1 // Copyright 2015 The Chromium Authors. All rights reserved. |    1 // Copyright 2015 The Chromium Authors. All rights reserved. | 
|    2 // Use of this source code is governed by a BSD-style license that can be |    2 // Use of this source code is governed by a BSD-style license that can be | 
|    3 // found in the LICENSE file. |    3 // found in the LICENSE file. | 
|    4  |    4  | 
|    5 #include "net/quic/crypto/proof_verifier_chromium.h" |    5 #include "net/quic/crypto/proof_verifier_chromium.h" | 
|    6  |    6  | 
|    7 #include "base/memory/ref_counted.h" |    7 #include "base/memory/ref_counted.h" | 
|    8 #include "net/base/net_errors.h" |    8 #include "net/base/net_errors.h" | 
|    9 #include "net/cert/cert_status_flags.h" |    9 #include "net/cert/cert_status_flags.h" | 
|   10 #include "net/cert/cert_verifier.h" |   10 #include "net/cert/cert_verifier.h" | 
| (...skipping 213 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  224 // verification fails. |  224 // verification fails. | 
|  225 TEST_F(ProofVerifierChromiumTest, FailsIfCertFails) { |  225 TEST_F(ProofVerifierChromiumTest, FailsIfCertFails) { | 
|  226   MockCertVerifier dummy_verifier; |  226   MockCertVerifier dummy_verifier; | 
|  227   ProofVerifierChromium proof_verifier(&dummy_verifier, &ct_policy_enforcer_, |  227   ProofVerifierChromium proof_verifier(&dummy_verifier, &ct_policy_enforcer_, | 
|  228                                        &transport_security_state_, |  228                                        &transport_security_state_, | 
|  229                                        ct_verifier_.get()); |  229                                        ct_verifier_.get()); | 
|  230  |  230  | 
|  231   std::unique_ptr<DummyProofVerifierCallback> callback( |  231   std::unique_ptr<DummyProofVerifierCallback> callback( | 
|  232       new DummyProofVerifierCallback); |  232       new DummyProofVerifierCallback); | 
|  233   QuicAsyncStatus status = proof_verifier.VerifyProof( |  233   QuicAsyncStatus status = proof_verifier.VerifyProof( | 
|  234       kTestHostname, kTestPort, kTestConfig, QUIC_VERSION_25, "", certs_, "", |  234       kTestHostname, kTestPort, kTestConfig, QUIC_VERSION_35, "", certs_, "", | 
|  235       GetTestSignature(), verify_context_.get(), &error_details_, &details_, |  235       GetTestSignature(), verify_context_.get(), &error_details_, &details_, | 
|  236       std::move(callback)); |  236       std::move(callback)); | 
|  237   ASSERT_EQ(QUIC_FAILURE, status); |  237   ASSERT_EQ(QUIC_FAILURE, status); | 
|  238 } |  238 } | 
|  239  |  239  | 
|  240 // Valid SCT, but invalid signature. |  240 // Valid SCT, but invalid signature. | 
|  241 TEST_F(ProofVerifierChromiumTest, ValidSCTList) { |  241 TEST_F(ProofVerifierChromiumTest, ValidSCTList) { | 
|  242   // Use different certificates for SCT tests. |  242   // Use different certificates for SCT tests. | 
|  243   ASSERT_NO_FATAL_FAILURE(GetSCTTestCertificates(&certs_)); |  243   ASSERT_NO_FATAL_FAILURE(GetSCTTestCertificates(&certs_)); | 
|  244  |  244  | 
|  245   MockCertVerifier cert_verifier; |  245   MockCertVerifier cert_verifier; | 
|  246   ProofVerifierChromium proof_verifier(&cert_verifier, &ct_policy_enforcer_, |  246   ProofVerifierChromium proof_verifier(&cert_verifier, &ct_policy_enforcer_, | 
|  247                                        &transport_security_state_, |  247                                        &transport_security_state_, | 
|  248                                        ct_verifier_.get()); |  248                                        ct_verifier_.get()); | 
|  249  |  249  | 
|  250   std::unique_ptr<DummyProofVerifierCallback> callback( |  250   std::unique_ptr<DummyProofVerifierCallback> callback( | 
|  251       new DummyProofVerifierCallback); |  251       new DummyProofVerifierCallback); | 
|  252   QuicAsyncStatus status = proof_verifier.VerifyProof( |  252   QuicAsyncStatus status = proof_verifier.VerifyProof( | 
|  253       kTestHostname, kTestPort, kTestConfig, QUIC_VERSION_25, "", certs_, |  253       kTestHostname, kTestPort, kTestConfig, QUIC_VERSION_35, "", certs_, | 
|  254       ct::GetSCTListForTesting(), "", verify_context_.get(), &error_details_, |  254       ct::GetSCTListForTesting(), "", verify_context_.get(), &error_details_, | 
|  255       &details_, std::move(callback)); |  255       &details_, std::move(callback)); | 
|  256   ASSERT_EQ(QUIC_FAILURE, status); |  256   ASSERT_EQ(QUIC_FAILURE, status); | 
|  257   CheckSCT(/*sct_expected_ok=*/true); |  257   CheckSCT(/*sct_expected_ok=*/true); | 
|  258 } |  258 } | 
|  259  |  259  | 
|  260 // Invalid SCT and signature. |  260 // Invalid SCT and signature. | 
|  261 TEST_F(ProofVerifierChromiumTest, InvalidSCTList) { |  261 TEST_F(ProofVerifierChromiumTest, InvalidSCTList) { | 
|  262   // Use different certificates for SCT tests. |  262   // Use different certificates for SCT tests. | 
|  263   ASSERT_NO_FATAL_FAILURE(GetSCTTestCertificates(&certs_)); |  263   ASSERT_NO_FATAL_FAILURE(GetSCTTestCertificates(&certs_)); | 
|  264  |  264  | 
|  265   MockCertVerifier cert_verifier; |  265   MockCertVerifier cert_verifier; | 
|  266   ProofVerifierChromium proof_verifier(&cert_verifier, &ct_policy_enforcer_, |  266   ProofVerifierChromium proof_verifier(&cert_verifier, &ct_policy_enforcer_, | 
|  267                                        &transport_security_state_, |  267                                        &transport_security_state_, | 
|  268                                        ct_verifier_.get()); |  268                                        ct_verifier_.get()); | 
|  269  |  269  | 
|  270   std::unique_ptr<DummyProofVerifierCallback> callback( |  270   std::unique_ptr<DummyProofVerifierCallback> callback( | 
|  271       new DummyProofVerifierCallback); |  271       new DummyProofVerifierCallback); | 
|  272   QuicAsyncStatus status = proof_verifier.VerifyProof( |  272   QuicAsyncStatus status = proof_verifier.VerifyProof( | 
|  273       kTestHostname, kTestPort, kTestConfig, QUIC_VERSION_25, "", certs_, |  273       kTestHostname, kTestPort, kTestConfig, QUIC_VERSION_35, "", certs_, | 
|  274       ct::GetSCTListWithInvalidSCT(), "", verify_context_.get(), |  274       ct::GetSCTListWithInvalidSCT(), "", verify_context_.get(), | 
|  275       &error_details_, &details_, std::move(callback)); |  275       &error_details_, &details_, std::move(callback)); | 
|  276   ASSERT_EQ(QUIC_FAILURE, status); |  276   ASSERT_EQ(QUIC_FAILURE, status); | 
|  277   CheckSCT(/*sct_expected_ok=*/false); |  277   CheckSCT(/*sct_expected_ok=*/false); | 
|  278 } |  278 } | 
|  279  |  279  | 
|  280 // Tests that the ProofVerifier doesn't verify certificates if the config |  280 // Tests that the ProofVerifier doesn't verify certificates if the config | 
|  281 // signature fails. |  281 // signature fails. | 
|  282 TEST_F(ProofVerifierChromiumTest, FailsIfSignatureFails) { |  282 TEST_F(ProofVerifierChromiumTest, FailsIfSignatureFails) { | 
|  283   FailsTestCertVerifier cert_verifier; |  283   FailsTestCertVerifier cert_verifier; | 
|  284   ProofVerifierChromium proof_verifier(&cert_verifier, &ct_policy_enforcer_, |  284   ProofVerifierChromium proof_verifier(&cert_verifier, &ct_policy_enforcer_, | 
|  285                                        &transport_security_state_, |  285                                        &transport_security_state_, | 
|  286                                        ct_verifier_.get()); |  286                                        ct_verifier_.get()); | 
|  287  |  287  | 
|  288   std::unique_ptr<DummyProofVerifierCallback> callback( |  288   std::unique_ptr<DummyProofVerifierCallback> callback( | 
|  289       new DummyProofVerifierCallback); |  289       new DummyProofVerifierCallback); | 
|  290   QuicAsyncStatus status = proof_verifier.VerifyProof( |  290   QuicAsyncStatus status = proof_verifier.VerifyProof( | 
|  291       kTestHostname, kTestPort, kTestConfig, QUIC_VERSION_25, "", certs_, "", |  291       kTestHostname, kTestPort, kTestConfig, QUIC_VERSION_35, "", certs_, "", | 
|  292       kTestConfig, verify_context_.get(), &error_details_, &details_, |  292       kTestConfig, verify_context_.get(), &error_details_, &details_, | 
|  293       std::move(callback)); |  293       std::move(callback)); | 
|  294   ASSERT_EQ(QUIC_FAILURE, status); |  294   ASSERT_EQ(QUIC_FAILURE, status); | 
|  295 } |  295 } | 
|  296  |  296  | 
|  297 // Tests that the certificate policy enforcer is consulted for EV |  297 // Tests that the certificate policy enforcer is consulted for EV | 
|  298 // and the certificate is allowed to be EV. |  298 // and the certificate is allowed to be EV. | 
|  299 TEST_F(ProofVerifierChromiumTest, PreservesEVIfAllowed) { |  299 TEST_F(ProofVerifierChromiumTest, PreservesEVIfAllowed) { | 
|  300   scoped_refptr<X509Certificate> test_cert = GetTestServerCertificate(); |  300   scoped_refptr<X509Certificate> test_cert = GetTestServerCertificate(); | 
|  301   ASSERT_TRUE(test_cert); |  301   ASSERT_TRUE(test_cert); | 
|  302  |  302  | 
|  303   CertVerifyResult dummy_result; |  303   CertVerifyResult dummy_result; | 
|  304   dummy_result.verified_cert = test_cert; |  304   dummy_result.verified_cert = test_cert; | 
|  305   dummy_result.cert_status = CERT_STATUS_IS_EV; |  305   dummy_result.cert_status = CERT_STATUS_IS_EV; | 
|  306  |  306  | 
|  307   MockCertVerifier dummy_verifier; |  307   MockCertVerifier dummy_verifier; | 
|  308   dummy_verifier.AddResultForCert(test_cert.get(), dummy_result, OK); |  308   dummy_verifier.AddResultForCert(test_cert.get(), dummy_result, OK); | 
|  309  |  309  | 
|  310   EXPECT_CALL(ct_policy_enforcer_, DoesConformToCTEVPolicy(_, _, _, _)) |  310   EXPECT_CALL(ct_policy_enforcer_, DoesConformToCTEVPolicy(_, _, _, _)) | 
|  311       .WillRepeatedly( |  311       .WillRepeatedly( | 
|  312           Return(ct::EVPolicyCompliance::EV_POLICY_COMPLIES_VIA_SCTS)); |  312           Return(ct::EVPolicyCompliance::EV_POLICY_COMPLIES_VIA_SCTS)); | 
|  313  |  313  | 
|  314   ProofVerifierChromium proof_verifier(&dummy_verifier, &ct_policy_enforcer_, |  314   ProofVerifierChromium proof_verifier(&dummy_verifier, &ct_policy_enforcer_, | 
|  315                                        &transport_security_state_, |  315                                        &transport_security_state_, | 
|  316                                        ct_verifier_.get()); |  316                                        ct_verifier_.get()); | 
|  317  |  317  | 
|  318   std::unique_ptr<DummyProofVerifierCallback> callback( |  318   std::unique_ptr<DummyProofVerifierCallback> callback( | 
|  319       new DummyProofVerifierCallback); |  319       new DummyProofVerifierCallback); | 
|  320   QuicAsyncStatus status = proof_verifier.VerifyProof( |  320   QuicAsyncStatus status = proof_verifier.VerifyProof( | 
|  321       kTestHostname, kTestPort, kTestConfig, QUIC_VERSION_25, "", certs_, "", |  321       kTestHostname, kTestPort, kTestConfig, QUIC_VERSION_35, "", certs_, "", | 
|  322       GetTestSignature(), verify_context_.get(), &error_details_, &details_, |  322       GetTestSignature(), verify_context_.get(), &error_details_, &details_, | 
|  323       std::move(callback)); |  323       std::move(callback)); | 
|  324   ASSERT_EQ(QUIC_SUCCESS, status); |  324   ASSERT_EQ(QUIC_SUCCESS, status); | 
|  325  |  325  | 
|  326   ASSERT_TRUE(details_.get()); |  326   ASSERT_TRUE(details_.get()); | 
|  327   ProofVerifyDetailsChromium* verify_details = |  327   ProofVerifyDetailsChromium* verify_details = | 
|  328       static_cast<ProofVerifyDetailsChromium*>(details_.get()); |  328       static_cast<ProofVerifyDetailsChromium*>(details_.get()); | 
|  329   EXPECT_EQ(dummy_result.cert_status, |  329   EXPECT_EQ(dummy_result.cert_status, | 
|  330             verify_details->cert_verify_result.cert_status); |  330             verify_details->cert_verify_result.cert_status); | 
|  331 } |  331 } | 
| (...skipping 15 matching lines...) Expand all  Loading... | 
|  347       .WillRepeatedly( |  347       .WillRepeatedly( | 
|  348           Return(ct::EVPolicyCompliance::EV_POLICY_NOT_ENOUGH_SCTS)); |  348           Return(ct::EVPolicyCompliance::EV_POLICY_NOT_ENOUGH_SCTS)); | 
|  349  |  349  | 
|  350   ProofVerifierChromium proof_verifier(&dummy_verifier, &ct_policy_enforcer_, |  350   ProofVerifierChromium proof_verifier(&dummy_verifier, &ct_policy_enforcer_, | 
|  351                                        &transport_security_state_, |  351                                        &transport_security_state_, | 
|  352                                        ct_verifier_.get()); |  352                                        ct_verifier_.get()); | 
|  353  |  353  | 
|  354   std::unique_ptr<DummyProofVerifierCallback> callback( |  354   std::unique_ptr<DummyProofVerifierCallback> callback( | 
|  355       new DummyProofVerifierCallback); |  355       new DummyProofVerifierCallback); | 
|  356   QuicAsyncStatus status = proof_verifier.VerifyProof( |  356   QuicAsyncStatus status = proof_verifier.VerifyProof( | 
|  357       kTestHostname, kTestPort, kTestConfig, QUIC_VERSION_25, "", certs_, "", |  357       kTestHostname, kTestPort, kTestConfig, QUIC_VERSION_35, "", certs_, "", | 
|  358       GetTestSignature(), verify_context_.get(), &error_details_, &details_, |  358       GetTestSignature(), verify_context_.get(), &error_details_, &details_, | 
|  359       std::move(callback)); |  359       std::move(callback)); | 
|  360   ASSERT_EQ(QUIC_SUCCESS, status); |  360   ASSERT_EQ(QUIC_SUCCESS, status); | 
|  361  |  361  | 
|  362   ASSERT_TRUE(details_.get()); |  362   ASSERT_TRUE(details_.get()); | 
|  363   ProofVerifyDetailsChromium* verify_details = |  363   ProofVerifyDetailsChromium* verify_details = | 
|  364       static_cast<ProofVerifyDetailsChromium*>(details_.get()); |  364       static_cast<ProofVerifyDetailsChromium*>(details_.get()); | 
|  365   EXPECT_EQ(CERT_STATUS_CT_COMPLIANCE_FAILED, |  365   EXPECT_EQ(CERT_STATUS_CT_COMPLIANCE_FAILED, | 
|  366             verify_details->cert_verify_result.cert_status & |  366             verify_details->cert_verify_result.cert_status & | 
|  367                 (CERT_STATUS_CT_COMPLIANCE_FAILED | CERT_STATUS_IS_EV)); |  367                 (CERT_STATUS_CT_COMPLIANCE_FAILED | CERT_STATUS_IS_EV)); | 
| (...skipping 14 matching lines...) Expand all  Loading... | 
|  382  |  382  | 
|  383   FailsTestCTPolicyEnforcer policy_enforcer; |  383   FailsTestCTPolicyEnforcer policy_enforcer; | 
|  384  |  384  | 
|  385   ProofVerifierChromium proof_verifier(&dummy_verifier, &policy_enforcer, |  385   ProofVerifierChromium proof_verifier(&dummy_verifier, &policy_enforcer, | 
|  386                                        &transport_security_state_, |  386                                        &transport_security_state_, | 
|  387                                        ct_verifier_.get()); |  387                                        ct_verifier_.get()); | 
|  388  |  388  | 
|  389   std::unique_ptr<DummyProofVerifierCallback> callback( |  389   std::unique_ptr<DummyProofVerifierCallback> callback( | 
|  390       new DummyProofVerifierCallback); |  390       new DummyProofVerifierCallback); | 
|  391   QuicAsyncStatus status = proof_verifier.VerifyProof( |  391   QuicAsyncStatus status = proof_verifier.VerifyProof( | 
|  392       kTestHostname, kTestPort, kTestConfig, QUIC_VERSION_25, "", certs_, "", |  392       kTestHostname, kTestPort, kTestConfig, QUIC_VERSION_35, "", certs_, "", | 
|  393       GetTestSignature(), verify_context_.get(), &error_details_, &details_, |  393       GetTestSignature(), verify_context_.get(), &error_details_, &details_, | 
|  394       std::move(callback)); |  394       std::move(callback)); | 
|  395   ASSERT_EQ(QUIC_SUCCESS, status); |  395   ASSERT_EQ(QUIC_SUCCESS, status); | 
|  396  |  396  | 
|  397   ASSERT_TRUE(details_.get()); |  397   ASSERT_TRUE(details_.get()); | 
|  398   ProofVerifyDetailsChromium* verify_details = |  398   ProofVerifyDetailsChromium* verify_details = | 
|  399       static_cast<ProofVerifyDetailsChromium*>(details_.get()); |  399       static_cast<ProofVerifyDetailsChromium*>(details_.get()); | 
|  400   EXPECT_EQ(0u, verify_details->cert_verify_result.cert_status); |  400   EXPECT_EQ(0u, verify_details->cert_verify_result.cert_status); | 
|  401 } |  401 } | 
|  402  |  402  | 
| (...skipping 24 matching lines...) Expand all  Loading... | 
|  427       kTestHostname, base::Time::Now() + base::TimeDelta::FromSeconds(10000), |  427       kTestHostname, base::Time::Now() + base::TimeDelta::FromSeconds(10000), | 
|  428       true, pin_hashes, GURL()); |  428       true, pin_hashes, GURL()); | 
|  429  |  429  | 
|  430   ProofVerifierChromium proof_verifier(&dummy_verifier, &ct_policy_enforcer_, |  430   ProofVerifierChromium proof_verifier(&dummy_verifier, &ct_policy_enforcer_, | 
|  431                                        &transport_security_state_, |  431                                        &transport_security_state_, | 
|  432                                        ct_verifier_.get()); |  432                                        ct_verifier_.get()); | 
|  433  |  433  | 
|  434   std::unique_ptr<DummyProofVerifierCallback> callback( |  434   std::unique_ptr<DummyProofVerifierCallback> callback( | 
|  435       new DummyProofVerifierCallback); |  435       new DummyProofVerifierCallback); | 
|  436   QuicAsyncStatus status = proof_verifier.VerifyProof( |  436   QuicAsyncStatus status = proof_verifier.VerifyProof( | 
|  437       kTestHostname, kTestPort, kTestConfig, QUIC_VERSION_25, "", certs_, "", |  437       kTestHostname, kTestPort, kTestConfig, QUIC_VERSION_35, "", certs_, "", | 
|  438       GetTestSignature(), verify_context_.get(), &error_details_, &details_, |  438       GetTestSignature(), verify_context_.get(), &error_details_, &details_, | 
|  439       std::move(callback)); |  439       std::move(callback)); | 
|  440   ASSERT_EQ(QUIC_FAILURE, status); |  440   ASSERT_EQ(QUIC_FAILURE, status); | 
|  441  |  441  | 
|  442   ASSERT_TRUE(details_.get()); |  442   ASSERT_TRUE(details_.get()); | 
|  443   ProofVerifyDetailsChromium* verify_details = |  443   ProofVerifyDetailsChromium* verify_details = | 
|  444       static_cast<ProofVerifyDetailsChromium*>(details_.get()); |  444       static_cast<ProofVerifyDetailsChromium*>(details_.get()); | 
|  445   EXPECT_TRUE(verify_details->cert_verify_result.cert_status & |  445   EXPECT_TRUE(verify_details->cert_verify_result.cert_status & | 
|  446               CERT_STATUS_PINNED_KEY_MISSING); |  446               CERT_STATUS_PINNED_KEY_MISSING); | 
|  447   EXPECT_FALSE(verify_details->pkp_bypassed); |  447   EXPECT_FALSE(verify_details->pkp_bypassed); | 
| (...skipping 20 matching lines...) Expand all  Loading... | 
|  468       kTestHostname, base::Time::Now() + base::TimeDelta::FromSeconds(10000), |  468       kTestHostname, base::Time::Now() + base::TimeDelta::FromSeconds(10000), | 
|  469       true, expected_hashes, GURL()); |  469       true, expected_hashes, GURL()); | 
|  470  |  470  | 
|  471   ProofVerifierChromium proof_verifier(&dummy_verifier, &ct_policy_enforcer_, |  471   ProofVerifierChromium proof_verifier(&dummy_verifier, &ct_policy_enforcer_, | 
|  472                                        &transport_security_state_, |  472                                        &transport_security_state_, | 
|  473                                        ct_verifier_.get()); |  473                                        ct_verifier_.get()); | 
|  474  |  474  | 
|  475   std::unique_ptr<DummyProofVerifierCallback> callback( |  475   std::unique_ptr<DummyProofVerifierCallback> callback( | 
|  476       new DummyProofVerifierCallback); |  476       new DummyProofVerifierCallback); | 
|  477   QuicAsyncStatus status = proof_verifier.VerifyProof( |  477   QuicAsyncStatus status = proof_verifier.VerifyProof( | 
|  478       kTestHostname, kTestPort, kTestConfig, QUIC_VERSION_25, "", certs_, "", |  478       kTestHostname, kTestPort, kTestConfig, QUIC_VERSION_35, "", certs_, "", | 
|  479       GetTestSignature(), verify_context_.get(), &error_details_, &details_, |  479       GetTestSignature(), verify_context_.get(), &error_details_, &details_, | 
|  480       std::move(callback)); |  480       std::move(callback)); | 
|  481   ASSERT_EQ(QUIC_SUCCESS, status); |  481   ASSERT_EQ(QUIC_SUCCESS, status); | 
|  482  |  482  | 
|  483   ASSERT_TRUE(details_.get()); |  483   ASSERT_TRUE(details_.get()); | 
|  484   ProofVerifyDetailsChromium* verify_details = |  484   ProofVerifyDetailsChromium* verify_details = | 
|  485       static_cast<ProofVerifyDetailsChromium*>(details_.get()); |  485       static_cast<ProofVerifyDetailsChromium*>(details_.get()); | 
|  486   EXPECT_TRUE(verify_details->pkp_bypassed); |  486   EXPECT_TRUE(verify_details->pkp_bypassed); | 
|  487 } |  487 } | 
|  488  |  488  | 
| (...skipping 25 matching lines...) Expand all  Loading... | 
|  514       .WillRepeatedly( |  514       .WillRepeatedly( | 
|  515           Return(ct::CertPolicyCompliance::CERT_POLICY_NOT_ENOUGH_SCTS)); |  515           Return(ct::CertPolicyCompliance::CERT_POLICY_NOT_ENOUGH_SCTS)); | 
|  516  |  516  | 
|  517   ProofVerifierChromium proof_verifier(&dummy_verifier, &ct_policy_enforcer_, |  517   ProofVerifierChromium proof_verifier(&dummy_verifier, &ct_policy_enforcer_, | 
|  518                                        &transport_security_state_, |  518                                        &transport_security_state_, | 
|  519                                        ct_verifier_.get()); |  519                                        ct_verifier_.get()); | 
|  520  |  520  | 
|  521   std::unique_ptr<DummyProofVerifierCallback> callback( |  521   std::unique_ptr<DummyProofVerifierCallback> callback( | 
|  522       new DummyProofVerifierCallback); |  522       new DummyProofVerifierCallback); | 
|  523   QuicAsyncStatus status = proof_verifier.VerifyProof( |  523   QuicAsyncStatus status = proof_verifier.VerifyProof( | 
|  524       kTestHostname, kTestPort, kTestConfig, QUIC_VERSION_25, "", certs_, "", |  524       kTestHostname, kTestPort, kTestConfig, QUIC_VERSION_35, "", certs_, "", | 
|  525       GetTestSignature(), verify_context_.get(), &error_details_, &details_, |  525       GetTestSignature(), verify_context_.get(), &error_details_, &details_, | 
|  526       std::move(callback)); |  526       std::move(callback)); | 
|  527   ASSERT_EQ(QUIC_FAILURE, status); |  527   ASSERT_EQ(QUIC_FAILURE, status); | 
|  528  |  528  | 
|  529   ASSERT_TRUE(details_.get()); |  529   ASSERT_TRUE(details_.get()); | 
|  530   ProofVerifyDetailsChromium* verify_details = |  530   ProofVerifyDetailsChromium* verify_details = | 
|  531       static_cast<ProofVerifyDetailsChromium*>(details_.get()); |  531       static_cast<ProofVerifyDetailsChromium*>(details_.get()); | 
|  532   EXPECT_TRUE(verify_details->cert_verify_result.cert_status & |  532   EXPECT_TRUE(verify_details->cert_verify_result.cert_status & | 
|  533               CERT_STATUS_CERTIFICATE_TRANSPARENCY_REQUIRED); |  533               CERT_STATUS_CERTIFICATE_TRANSPARENCY_REQUIRED); | 
|  534 } |  534 } | 
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  566       .WillRepeatedly( |  566       .WillRepeatedly( | 
|  567           Return(ct::CertPolicyCompliance::CERT_POLICY_NOT_ENOUGH_SCTS)); |  567           Return(ct::CertPolicyCompliance::CERT_POLICY_NOT_ENOUGH_SCTS)); | 
|  568  |  568  | 
|  569   ProofVerifierChromium proof_verifier(&dummy_verifier, &ct_policy_enforcer_, |  569   ProofVerifierChromium proof_verifier(&dummy_verifier, &ct_policy_enforcer_, | 
|  570                                        &transport_security_state_, |  570                                        &transport_security_state_, | 
|  571                                        ct_verifier_.get()); |  571                                        ct_verifier_.get()); | 
|  572  |  572  | 
|  573   std::unique_ptr<DummyProofVerifierCallback> callback( |  573   std::unique_ptr<DummyProofVerifierCallback> callback( | 
|  574       new DummyProofVerifierCallback); |  574       new DummyProofVerifierCallback); | 
|  575   QuicAsyncStatus status = proof_verifier.VerifyProof( |  575   QuicAsyncStatus status = proof_verifier.VerifyProof( | 
|  576       kTestHostname, kTestPort, kTestConfig, QUIC_VERSION_25, "", certs_, "", |  576       kTestHostname, kTestPort, kTestConfig, QUIC_VERSION_35, "", certs_, "", | 
|  577       GetTestSignature(), verify_context_.get(), &error_details_, &details_, |  577       GetTestSignature(), verify_context_.get(), &error_details_, &details_, | 
|  578       std::move(callback)); |  578       std::move(callback)); | 
|  579   ASSERT_EQ(QUIC_FAILURE, status); |  579   ASSERT_EQ(QUIC_FAILURE, status); | 
|  580  |  580  | 
|  581   ASSERT_TRUE(details_.get()); |  581   ASSERT_TRUE(details_.get()); | 
|  582   ProofVerifyDetailsChromium* verify_details = |  582   ProofVerifyDetailsChromium* verify_details = | 
|  583       static_cast<ProofVerifyDetailsChromium*>(details_.get()); |  583       static_cast<ProofVerifyDetailsChromium*>(details_.get()); | 
|  584   EXPECT_TRUE(verify_details->cert_verify_result.cert_status & |  584   EXPECT_TRUE(verify_details->cert_verify_result.cert_status & | 
|  585               CERT_STATUS_PINNED_KEY_MISSING); |  585               CERT_STATUS_PINNED_KEY_MISSING); | 
|  586   EXPECT_TRUE(verify_details->cert_verify_result.cert_status & |  586   EXPECT_TRUE(verify_details->cert_verify_result.cert_status & | 
|  587               CERT_STATUS_CERTIFICATE_TRANSPARENCY_REQUIRED); |  587               CERT_STATUS_CERTIFICATE_TRANSPARENCY_REQUIRED); | 
|  588 } |  588 } | 
|  589  |  589  | 
|  590 }  // namespace test |  590 }  // namespace test | 
|  591 }  // namespace net |  591 }  // namespace net | 
| OLD | NEW |