Chromium Code Reviews| Index: net/test/embedded_test_server/embedded_test_server.cc |
| diff --git a/net/test/embedded_test_server/embedded_test_server.cc b/net/test/embedded_test_server/embedded_test_server.cc |
| index 8f10e1ca301bf55318704d7bb147bc80db2690d6..eb09b96786793f83dd7b1da3b18fc03f0276e028 100644 |
| --- a/net/test/embedded_test_server/embedded_test_server.cc |
| +++ b/net/test/embedded_test_server/embedded_test_server.cc |
| @@ -111,9 +111,32 @@ bool EmbeddedTestServer::InitializeAndListen() { |
| port_ = local_endpoint_.port(); |
| listen_socket_->DetachFromThread(); |
| + |
| + if (is_using_ssl_) |
| + InitializeSSLServerContext(); |
| return true; |
| } |
| +void EmbeddedTestServer::InitializeSSLServerContext() { |
| + base::FilePath certs_dir(GetTestCertsDirectory()); |
| + std::string cert_name = GetCertificateName(); |
| + |
| + base::FilePath key_path = certs_dir.AppendASCII(cert_name); |
| + std::string key_string; |
| + CHECK(base::ReadFileToString(key_path, &key_string)); |
| + std::vector<std::string> headers; |
| + headers.push_back("PRIVATE KEY"); |
| + PEMTokenizer pem_tokenizer(key_string, headers); |
| + pem_tokenizer.GetNext(); |
| + std::vector<uint8_t> key_vector; |
| + key_vector.assign(pem_tokenizer.data().begin(), pem_tokenizer.data().end()); |
| + |
| + scoped_ptr<crypto::RSAPrivateKey> server_key( |
| + crypto::RSAPrivateKey::CreateFromPrivateKeyInfo(key_vector)); |
| + context_ = |
| + CreateSSLServerContext(GetCertificate().get(), *server_key, ssl_config_); |
| +} |
| + |
| void EmbeddedTestServer::StartAcceptingConnections() { |
| DCHECK(!io_thread_.get()); |
| base::Thread::Options thread_options; |
| @@ -276,24 +299,7 @@ scoped_ptr<StreamSocket> EmbeddedTestServer::DoSSLUpgrade( |
| scoped_ptr<StreamSocket> connection) { |
| DCHECK(io_thread_->task_runner()->BelongsToCurrentThread()); |
| - base::FilePath certs_dir(GetTestCertsDirectory()); |
| - std::string cert_name = GetCertificateName(); |
| - |
| - base::FilePath key_path = certs_dir.AppendASCII(cert_name); |
| - std::string key_string; |
| - CHECK(base::ReadFileToString(key_path, &key_string)); |
|
davidben
2016/02/24 21:01:26
[ Oh hey, we won't have to read the file on every
|
| - std::vector<std::string> headers; |
| - headers.push_back("PRIVATE KEY"); |
| - PEMTokenizer pem_tokenizer(key_string, headers); |
| - pem_tokenizer.GetNext(); |
| - std::vector<uint8_t> key_vector; |
| - key_vector.assign(pem_tokenizer.data().begin(), pem_tokenizer.data().end()); |
| - |
| - scoped_ptr<crypto::RSAPrivateKey> server_key( |
| - crypto::RSAPrivateKey::CreateFromPrivateKeyInfo(key_vector)); |
| - |
| - return CreateSSLServerSocket(std::move(connection), GetCertificate().get(), |
| - *server_key, ssl_config_); |
| + return context_->CreateSSLServerSocket(std::move(connection)); |
| } |
| void EmbeddedTestServer::DoAcceptLoop() { |