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)); |
- 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() { |