Upstream version 7.36.149.0
[platform/framework/web/crosswalk.git] / src / net / test / spawned_test_server / base_test_server.cc
index ac37c70..a781c6e 100644 (file)
@@ -40,6 +40,13 @@ std::string GetHostname(BaseTestServer::Type type,
   return BaseTestServer::kLocalhost;
 }
 
+void GetKeyExchangesList(int key_exchange, base::ListValue* values) {
+  if (key_exchange & BaseTestServer::SSLOptions::KEY_EXCHANGE_RSA)
+    values->Append(new base::StringValue("rsa"));
+  if (key_exchange & BaseTestServer::SSLOptions::KEY_EXCHANGE_DHE_RSA)
+    values->Append(new base::StringValue("dhe_rsa"));
+}
+
 void GetCiphersList(int cipher, base::ListValue* values) {
   if (cipher & BaseTestServer::SSLOptions::BULK_CIPHER_RC4)
     values->Append(new base::StringValue("rc4"));
@@ -58,11 +65,13 @@ BaseTestServer::SSLOptions::SSLOptions()
       ocsp_status(OCSP_OK),
       cert_serial(0),
       request_client_certificate(false),
+      key_exchanges(SSLOptions::KEY_EXCHANGE_ANY),
       bulk_ciphers(SSLOptions::BULK_CIPHER_ANY),
       record_resume(false),
       tls_intolerant(TLS_INTOLERANT_NONE),
       fallback_scsv_enabled(false),
-      staple_ocsp_response(false) {}
+      staple_ocsp_response(false),
+      enable_npn(false) {}
 
 BaseTestServer::SSLOptions::SSLOptions(
     BaseTestServer::SSLOptions::ServerCertificate cert)
@@ -70,11 +79,13 @@ BaseTestServer::SSLOptions::SSLOptions(
       ocsp_status(OCSP_OK),
       cert_serial(0),
       request_client_certificate(false),
+      key_exchanges(SSLOptions::KEY_EXCHANGE_ANY),
       bulk_ciphers(SSLOptions::BULK_CIPHER_ANY),
       record_resume(false),
       tls_intolerant(TLS_INTOLERANT_NONE),
       fallback_scsv_enabled(false),
-      staple_ocsp_response(false) {}
+      staple_ocsp_response(false),
+      enable_npn(false) {}
 
 BaseTestServer::SSLOptions::~SSLOptions() {}
 
@@ -389,6 +400,11 @@ bool BaseTestServer::GenerateArguments(base::DictionaryValue* arguments) const {
                      base::Value::CreateIntegerValue(ssl_options_.cert_serial));
     }
 
+    // Check key exchange argument.
+    scoped_ptr<base::ListValue> key_exchange_values(new base::ListValue());
+    GetKeyExchangesList(ssl_options_.key_exchanges, key_exchange_values.get());
+    if (key_exchange_values->GetSize())
+      arguments->Set("ssl-key-exchange", key_exchange_values.release());
     // Check bulk cipher argument.
     scoped_ptr<base::ListValue> bulk_cipher_values(new base::ListValue());
     GetCiphersList(ssl_options_.bulk_ciphers, bulk_cipher_values.get());
@@ -410,6 +426,8 @@ bool BaseTestServer::GenerateArguments(base::DictionaryValue* arguments) const {
     }
     if (ssl_options_.staple_ocsp_response)
       arguments->Set("staple-ocsp-response", base::Value::CreateNullValue());
+    if (ssl_options_.enable_npn)
+      arguments->Set("enable-npn", base::Value::CreateNullValue());
   }
 
   return GenerateAdditionalArguments(arguments);