Index: net/tools/quic/quic_client_bin.cc |
diff --git a/net/tools/quic/quic_client_bin.cc b/net/tools/quic/quic_client_bin.cc |
index dcebd39a9848a6894bc008384565a5dc936a4340..38009448e29febf677a81fe7990035331397f0aa 100644 |
--- a/net/tools/quic/quic_client_bin.cc |
+++ b/net/tools/quic/quic_client_bin.cc |
@@ -48,6 +48,9 @@ |
#include "base/strings/string_util.h" |
#include "net/base/ip_endpoint.h" |
#include "net/base/privacy_mode.h" |
+#include "net/cert/cert_verifier.h" |
+#include "net/http/transport_security_state.h" |
+#include "net/quic/crypto/proof_verifier_chromium.h" |
#include "net/quic/quic_protocol.h" |
#include "net/quic/quic_server_id.h" |
#include "net/quic/quic_utils.h" |
@@ -57,6 +60,9 @@ |
#include "url/gurl.h" |
using base::StringPiece; |
+using net::CertVerifier; |
+using net::ProofVerifierChromium; |
+using net::TransportSecurityState; |
using std::cout; |
using std::cerr; |
using std::map; |
@@ -171,8 +177,9 @@ int main(int argc, char *argv[]) { |
VLOG(1) << "Resolved " << host << " to " << host_port << endl; |
// Build the client, and try to connect. |
+ bool is_https = (FLAGS_port == 443); |
net::EpollServer epoll_server; |
- net::QuicServerId server_id(host, FLAGS_port, /*is_https=*/false, |
+ net::QuicServerId server_id(host, FLAGS_port, is_https, |
net::PRIVACY_MODE_DISABLED); |
net::QuicVersionVector versions = net::QuicSupportedVersions(); |
if (FLAGS_quic_version != -1) { |
@@ -181,6 +188,16 @@ int main(int argc, char *argv[]) { |
} |
net::tools::QuicClient client(net::IPEndPoint(ip_addr, FLAGS_port), server_id, |
versions, &epoll_server); |
+ scoped_ptr<CertVerifier> cert_verifier; |
+ scoped_ptr<TransportSecurityState> transport_security_state; |
+ if (is_https) { |
+ // For secure QUIC we need to verify the cert chain.a |
+ cert_verifier.reset(CertVerifier::CreateDefault()); |
+ transport_security_state.reset(new TransportSecurityState); |
+ // TODO(rtenneti): Fix "Proof invalid: Missing context" error. |
+ client.SetProofVerifier(new ProofVerifierChromium( |
+ cert_verifier.get(), transport_security_state.get())); |
+ } |
if (!client.Initialize()) { |
cerr << "Failed to initialize client." << endl; |
return 1; |