Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(424)

Side by Side Diff: net/quic/quic_stream_factory_test.cc

Issue 1142953002: Introduce QuicStreamFactoryTest::DefaultProofVerifyDetails(). (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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/quic_stream_factory.h" 5 #include "net/quic/quic_stream_factory.h"
6 6
7 #include "base/run_loop.h" 7 #include "base/run_loop.h"
8 #include "base/strings/string_util.h" 8 #include "base/strings/string_util.h"
9 #include "net/base/test_data_directory.h" 9 #include "net/base/test_data_directory.h"
10 #include "net/cert/cert_verifier.h" 10 #include "net/cert/cert_verifier.h"
(...skipping 287 matching lines...) Expand 10 before | Expand all | Expand 10 after
298 return port; 298 return port;
299 } 299 }
300 300
301 scoped_ptr<QuicEncryptedPacket> ConstructRstPacket() { 301 scoped_ptr<QuicEncryptedPacket> ConstructRstPacket() {
302 QuicStreamId stream_id = kClientDataStreamId1; 302 QuicStreamId stream_id = kClientDataStreamId1;
303 return maker_.MakeRstPacket( 303 return maker_.MakeRstPacket(
304 1, true, stream_id, 304 1, true, stream_id,
305 AdjustErrorForVersion(QUIC_RST_ACKNOWLEDGEMENT, GetParam().version)); 305 AdjustErrorForVersion(QUIC_RST_ACKNOWLEDGEMENT, GetParam().version));
306 } 306 }
307 307
308 // Note that MockCryptoClientStreamFactory::AddProofVerifyDetails() does not
Ryan Hamilton 2015/05/19 19:16:56 I don't understand what this comment means. What
Bence 2015/05/19 19:45:33 I'm landing without the comment as you suggested,
Ryan Hamilton 2015/05/19 19:55:34 Will that actually compile? AddProofVerifyDetails
309 // take ownership of ProofVerifyDetailsChromium, therefore it has to be a
310 // named object so that it is valid until the end of the test.
311 static ProofVerifyDetailsChromium DefaultProofVerifyDetails() {
312 // Load a certificate that is valid for www.example.org, mail.example.org,
313 // and mail.example.com.
314 scoped_refptr<X509Certificate> test_cert(
315 ImportCertFromFile(GetTestCertsDirectory(), "spdy_pooling.pem"));
316 EXPECT_TRUE(test_cert.get());
317 ProofVerifyDetailsChromium verify_details;
318 verify_details.cert_verify_result.verified_cert = test_cert;
319 verify_details.cert_verify_result.is_issued_by_known_root = true;
320 return verify_details;
321 }
322
308 MockQuicServerInfoFactory quic_server_info_factory_; 323 MockQuicServerInfoFactory quic_server_info_factory_;
309 MockHostResolver host_resolver_; 324 MockHostResolver host_resolver_;
310 DeterministicMockClientSocketFactory socket_factory_; 325 DeterministicMockClientSocketFactory socket_factory_;
311 MockCryptoClientStreamFactory crypto_client_stream_factory_; 326 MockCryptoClientStreamFactory crypto_client_stream_factory_;
312 MockRandom random_generator_; 327 MockRandom random_generator_;
313 MockClock* clock_; // Owned by factory_. 328 MockClock* clock_; // Owned by factory_.
314 scoped_refptr<TestTaskRunner> runner_; 329 scoped_refptr<TestTaskRunner> runner_;
315 QuicTestPacketMaker maker_; 330 QuicTestPacketMaker maker_;
316 scoped_ptr<CertVerifier> cert_verifier_; 331 scoped_ptr<CertVerifier> cert_verifier_;
317 scoped_ptr<ChannelIDService> channel_id_service_; 332 scoped_ptr<ChannelIDService> channel_id_service_;
(...skipping 327 matching lines...) Expand 10 before | Expand all | Expand 10 after
645 MockRead reads[] = { 660 MockRead reads[] = {
646 MockRead(ASYNC, OK, 0) // EOF 661 MockRead(ASYNC, OK, 0) // EOF
647 }; 662 };
648 DeterministicSocketData socket_data(reads, arraysize(reads), nullptr, 0); 663 DeterministicSocketData socket_data(reads, arraysize(reads), nullptr, 0);
649 socket_factory_.AddSocketDataProvider(&socket_data); 664 socket_factory_.AddSocketDataProvider(&socket_data);
650 socket_data.StopAfter(1); 665 socket_data.StopAfter(1);
651 666
652 HostPortPair server1("www.example.org", 443); 667 HostPortPair server1("www.example.org", 443);
653 HostPortPair server2("mail.example.org", 443); 668 HostPortPair server2("mail.example.org", 443);
654 669
655 // Load a cert that is valid for: 670 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails();
656 // www.example.org (server1)
657 // mail.example.org (server2)
658 // www.example.com
659 base::FilePath certs_dir = GetTestCertsDirectory();
660 scoped_refptr<X509Certificate> test_cert(
661 ImportCertFromFile(certs_dir, "spdy_pooling.pem"));
662 ASSERT_NE(static_cast<X509Certificate*>(nullptr), test_cert.get());
663 ProofVerifyDetailsChromium verify_details;
664 verify_details.cert_verify_result.verified_cert = test_cert;
665 verify_details.cert_verify_result.is_issued_by_known_root = true;
666 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details); 671 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details);
667 672
668 host_resolver_.set_synchronous_mode(true); 673 host_resolver_.set_synchronous_mode(true);
669 host_resolver_.rules()->AddIPLiteralRule(server1.host(), "192.168.0.1", ""); 674 host_resolver_.rules()->AddIPLiteralRule(server1.host(), "192.168.0.1", "");
670 host_resolver_.rules()->AddIPLiteralRule(server2.host(), "192.168.0.1", ""); 675 host_resolver_.rules()->AddIPLiteralRule(server2.host(), "192.168.0.1", "");
671 676
672 QuicStreamRequest request(&factory_); 677 QuicStreamRequest request(&factory_);
673 is_https_ = true; 678 is_https_ = true;
674 EXPECT_EQ(OK, 679 EXPECT_EQ(OK,
675 request.Request(server1, is_https_, privacy_mode_, server1.host(), 680 request.Request(server1, is_https_, privacy_mode_, server1.host(),
(...skipping 25 matching lines...) Expand all
701 DeterministicSocketData socket_data1(reads, arraysize(reads), nullptr, 0); 706 DeterministicSocketData socket_data1(reads, arraysize(reads), nullptr, 0);
702 DeterministicSocketData socket_data2(reads, arraysize(reads), nullptr, 0); 707 DeterministicSocketData socket_data2(reads, arraysize(reads), nullptr, 0);
703 socket_factory_.AddSocketDataProvider(&socket_data1); 708 socket_factory_.AddSocketDataProvider(&socket_data1);
704 socket_factory_.AddSocketDataProvider(&socket_data2); 709 socket_factory_.AddSocketDataProvider(&socket_data2);
705 socket_data1.StopAfter(1); 710 socket_data1.StopAfter(1);
706 socket_data2.StopAfter(1); 711 socket_data2.StopAfter(1);
707 712
708 HostPortPair server1("www.example.org", 443); 713 HostPortPair server1("www.example.org", 443);
709 HostPortPair server2("mail.example.org", 443); 714 HostPortPair server2("mail.example.org", 443);
710 715
711 // Load a cert that is valid for: 716 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails();
712 // www.example.org (server1)
713 // mail.example.org (server2)
714 // www.example.com
715 base::FilePath certs_dir = GetTestCertsDirectory();
716 scoped_refptr<X509Certificate> test_cert(
717 ImportCertFromFile(certs_dir, "spdy_pooling.pem"));
718 ASSERT_NE(static_cast<X509Certificate*>(nullptr), test_cert.get());
719 ProofVerifyDetailsChromium verify_details;
720 verify_details.cert_verify_result.verified_cert = test_cert;
721 verify_details.cert_verify_result.is_issued_by_known_root = true;
722 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details); 717 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details);
723 718
724 host_resolver_.set_synchronous_mode(true); 719 host_resolver_.set_synchronous_mode(true);
725 host_resolver_.rules()->AddIPLiteralRule(server1.host(), "192.168.0.1", ""); 720 host_resolver_.rules()->AddIPLiteralRule(server1.host(), "192.168.0.1", "");
726 host_resolver_.rules()->AddIPLiteralRule(server2.host(), "192.168.0.1", ""); 721 host_resolver_.rules()->AddIPLiteralRule(server2.host(), "192.168.0.1", "");
727 722
728 // Disable connection pooling. 723 // Disable connection pooling.
729 QuicStreamFactoryPeer::DisableConnectionPooling(&factory_); 724 QuicStreamFactoryPeer::DisableConnectionPooling(&factory_);
730 725
731 QuicStreamRequest request(&factory_); 726 QuicStreamRequest request(&factory_);
(...skipping 30 matching lines...) Expand all
762 DeterministicSocketData socket_data1(reads, arraysize(reads), nullptr, 0); 757 DeterministicSocketData socket_data1(reads, arraysize(reads), nullptr, 0);
763 DeterministicSocketData socket_data2(reads, arraysize(reads), nullptr, 0); 758 DeterministicSocketData socket_data2(reads, arraysize(reads), nullptr, 0);
764 socket_factory_.AddSocketDataProvider(&socket_data1); 759 socket_factory_.AddSocketDataProvider(&socket_data1);
765 socket_factory_.AddSocketDataProvider(&socket_data2); 760 socket_factory_.AddSocketDataProvider(&socket_data2);
766 socket_data1.StopAfter(1); 761 socket_data1.StopAfter(1);
767 socket_data2.StopAfter(1); 762 socket_data2.StopAfter(1);
768 763
769 HostPortPair server1("www.example.org", 443); 764 HostPortPair server1("www.example.org", 443);
770 HostPortPair server2("mail.google.com", 443); 765 HostPortPair server2("mail.google.com", 443);
771 766
772 // Load a cert that is valid for: 767 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails();
773 // www.example.org (server1)
774 // mail.example.org
775 // www.example.com
776 // But is not valid for mail.google.com (server2).
777 base::FilePath certs_dir = GetTestCertsDirectory();
778 scoped_refptr<X509Certificate> test_cert(
779 ImportCertFromFile(certs_dir, "spdy_pooling.pem"));
780 ASSERT_NE(static_cast<X509Certificate*>(nullptr), test_cert.get());
781 ProofVerifyDetailsChromium verify_details;
782 verify_details.cert_verify_result.verified_cert = test_cert;
783 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details); 768 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details);
784 769
785 host_resolver_.set_synchronous_mode(true); 770 host_resolver_.set_synchronous_mode(true);
786 host_resolver_.rules()->AddIPLiteralRule(server1.host(), "192.168.0.1", ""); 771 host_resolver_.rules()->AddIPLiteralRule(server1.host(), "192.168.0.1", "");
787 host_resolver_.rules()->AddIPLiteralRule(server2.host(), "192.168.0.1", ""); 772 host_resolver_.rules()->AddIPLiteralRule(server2.host(), "192.168.0.1", "");
788 773
789 QuicStreamRequest request(&factory_); 774 QuicStreamRequest request(&factory_);
790 is_https_ = true; 775 is_https_ = true;
791 EXPECT_EQ(OK, 776 EXPECT_EQ(OK,
792 request.Request(server1, is_https_, privacy_mode_, server1.host(), 777 request.Request(server1, is_https_, privacy_mode_, server1.host(),
(...skipping 28 matching lines...) Expand all
821 socket_factory_.AddSocketDataProvider(&socket_data); 806 socket_factory_.AddSocketDataProvider(&socket_data);
822 socket_data.StopAfter(1); 807 socket_data.StopAfter(1);
823 808
824 HostPortPair server1("www.example.org", 443); 809 HostPortPair server1("www.example.org", 443);
825 HostPortPair server2("mail.example.org", 443); 810 HostPortPair server2("mail.example.org", 443);
826 uint8 primary_pin = 1; 811 uint8 primary_pin = 1;
827 uint8 backup_pin = 2; 812 uint8 backup_pin = 2;
828 test::AddPin(&transport_security_state_, "mail.example.org", primary_pin, 813 test::AddPin(&transport_security_state_, "mail.example.org", primary_pin,
829 backup_pin); 814 backup_pin);
830 815
831 // Load a cert that is valid for: 816 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails();
832 // www.example.org (server1)
833 // mail.example.org (server2)
834 base::FilePath certs_dir = GetTestCertsDirectory();
835 scoped_refptr<X509Certificate> test_cert(
836 ImportCertFromFile(certs_dir, "spdy_pooling.pem"));
837 ASSERT_NE(static_cast<X509Certificate*>(nullptr), test_cert.get());
838 ProofVerifyDetailsChromium verify_details;
839 verify_details.cert_verify_result.verified_cert = test_cert;
840 verify_details.cert_verify_result.is_issued_by_known_root = true;
841 verify_details.cert_verify_result.public_key_hashes.push_back( 817 verify_details.cert_verify_result.public_key_hashes.push_back(
842 test::GetTestHashValue(primary_pin)); 818 test::GetTestHashValue(primary_pin));
843 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details); 819 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details);
844 820
845 host_resolver_.set_synchronous_mode(true); 821 host_resolver_.set_synchronous_mode(true);
846 host_resolver_.rules()->AddIPLiteralRule(server1.host(), "192.168.0.1", ""); 822 host_resolver_.rules()->AddIPLiteralRule(server1.host(), "192.168.0.1", "");
847 host_resolver_.rules()->AddIPLiteralRule(server2.host(), "192.168.0.1", ""); 823 host_resolver_.rules()->AddIPLiteralRule(server2.host(), "192.168.0.1", "");
848 824
849 QuicStreamRequest request(&factory_); 825 QuicStreamRequest request(&factory_);
850 is_https_ = true; 826 is_https_ = true;
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
882 socket_data1.StopAfter(1); 858 socket_data1.StopAfter(1);
883 socket_data2.StopAfter(1); 859 socket_data2.StopAfter(1);
884 860
885 HostPortPair server1("www.example.org", 443); 861 HostPortPair server1("www.example.org", 443);
886 HostPortPair server2("mail.example.org", 443); 862 HostPortPair server2("mail.example.org", 443);
887 uint8 primary_pin = 1; 863 uint8 primary_pin = 1;
888 uint8 backup_pin = 2; 864 uint8 backup_pin = 2;
889 test::AddPin(&transport_security_state_, "mail.example.org", primary_pin, 865 test::AddPin(&transport_security_state_, "mail.example.org", primary_pin,
890 backup_pin); 866 backup_pin);
891 867
892 // Load a cert that is valid for: 868 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails();
893 // www.example.org (server1)
894 // mail.example.org (server2)
895 base::FilePath certs_dir = GetTestCertsDirectory();
896 scoped_refptr<X509Certificate> test_cert(
897 ImportCertFromFile(certs_dir, "spdy_pooling.pem"));
898 ASSERT_NE(static_cast<X509Certificate*>(nullptr), test_cert.get());
899 ProofVerifyDetailsChromium verify_details;
900 verify_details.cert_verify_result.verified_cert = test_cert;
901 verify_details.cert_verify_result.is_issued_by_known_root = true;
902 verify_details.cert_verify_result.public_key_hashes.push_back( 869 verify_details.cert_verify_result.public_key_hashes.push_back(
903 test::GetTestHashValue(primary_pin)); 870 test::GetTestHashValue(primary_pin));
904 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details); 871 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details);
905 872
906 host_resolver_.set_synchronous_mode(true); 873 host_resolver_.set_synchronous_mode(true);
907 host_resolver_.rules()->AddIPLiteralRule(server1.host(), "192.168.0.1", ""); 874 host_resolver_.rules()->AddIPLiteralRule(server1.host(), "192.168.0.1", "");
908 host_resolver_.rules()->AddIPLiteralRule(server2.host(), "192.168.0.1", ""); 875 host_resolver_.rules()->AddIPLiteralRule(server2.host(), "192.168.0.1", "");
909 876
910 // Disable connection pooling. 877 // Disable connection pooling.
911 QuicStreamFactoryPeer::DisableConnectionPooling(&factory_); 878 QuicStreamFactoryPeer::DisableConnectionPooling(&factory_);
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
949 socket_data2.StopAfter(1); 916 socket_data2.StopAfter(1);
950 917
951 HostPortPair server1("www.example.org", 443); 918 HostPortPair server1("www.example.org", 443);
952 HostPortPair server2("mail.example.org", 443); 919 HostPortPair server2("mail.example.org", 443);
953 uint8 primary_pin = 1; 920 uint8 primary_pin = 1;
954 uint8 backup_pin = 2; 921 uint8 backup_pin = 2;
955 uint8 bad_pin = 3; 922 uint8 bad_pin = 3;
956 test::AddPin(&transport_security_state_, "mail.example.org", primary_pin, 923 test::AddPin(&transport_security_state_, "mail.example.org", primary_pin,
957 backup_pin); 924 backup_pin);
958 925
959 // Load a cert that is valid for: 926 ProofVerifyDetailsChromium verify_details1 = DefaultProofVerifyDetails();
960 // www.example.org (server1)
961 // mail.example.org (server2)
962 base::FilePath certs_dir = GetTestCertsDirectory();
963 scoped_refptr<X509Certificate> test_cert(
964 ImportCertFromFile(certs_dir, "spdy_pooling.pem"));
965 ASSERT_NE(static_cast<X509Certificate*>(nullptr), test_cert.get());
966
967 ProofVerifyDetailsChromium verify_details1;
968 verify_details1.cert_verify_result.verified_cert = test_cert;
969 verify_details1.cert_verify_result.is_issued_by_known_root = true;
970 verify_details1.cert_verify_result.public_key_hashes.push_back( 927 verify_details1.cert_verify_result.public_key_hashes.push_back(
971 test::GetTestHashValue(bad_pin)); 928 test::GetTestHashValue(bad_pin));
972 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details1); 929 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details1);
973 930
974 ProofVerifyDetailsChromium verify_details2; 931 ProofVerifyDetailsChromium verify_details2 = DefaultProofVerifyDetails();
975 verify_details2.cert_verify_result.verified_cert = test_cert;
976 verify_details2.cert_verify_result.is_issued_by_known_root = true;
977 verify_details2.cert_verify_result.public_key_hashes.push_back( 932 verify_details2.cert_verify_result.public_key_hashes.push_back(
978 test::GetTestHashValue(primary_pin)); 933 test::GetTestHashValue(primary_pin));
979 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details2); 934 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details2);
980 935
981 host_resolver_.set_synchronous_mode(true); 936 host_resolver_.set_synchronous_mode(true);
982 host_resolver_.rules()->AddIPLiteralRule(server1.host(), "192.168.0.1", ""); 937 host_resolver_.rules()->AddIPLiteralRule(server1.host(), "192.168.0.1", "");
983 host_resolver_.rules()->AddIPLiteralRule(server2.host(), "192.168.0.1", ""); 938 host_resolver_.rules()->AddIPLiteralRule(server2.host(), "192.168.0.1", "");
984 939
985 QuicStreamRequest request(&factory_); 940 QuicStreamRequest request(&factory_);
986 is_https_ = true; 941 is_https_ = true;
(...skipping 740 matching lines...) Expand 10 before | Expand all | Expand 10 after
1727 EXPECT_TRUE(socket_data.AllReadDataConsumed()); 1682 EXPECT_TRUE(socket_data.AllReadDataConsumed());
1728 EXPECT_TRUE(socket_data.AllWriteDataConsumed()); 1683 EXPECT_TRUE(socket_data.AllWriteDataConsumed());
1729 EXPECT_TRUE(socket_data2.AllReadDataConsumed()); 1684 EXPECT_TRUE(socket_data2.AllReadDataConsumed());
1730 EXPECT_TRUE(socket_data2.AllWriteDataConsumed()); 1685 EXPECT_TRUE(socket_data2.AllWriteDataConsumed());
1731 EXPECT_TRUE(socket_data3.AllReadDataConsumed()); 1686 EXPECT_TRUE(socket_data3.AllReadDataConsumed());
1732 EXPECT_TRUE(socket_data3.AllWriteDataConsumed()); 1687 EXPECT_TRUE(socket_data3.AllWriteDataConsumed());
1733 } 1688 }
1734 1689
1735 } // namespace test 1690 } // namespace test
1736 } // namespace net 1691 } // namespace net
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698