Chromium Code Reviews| Index: net/test/spawned_test_server/base_test_server.cc |
| diff --git a/net/test/spawned_test_server/base_test_server.cc b/net/test/spawned_test_server/base_test_server.cc |
| index bb4427ac451ff332763ce17821c0ebcd4c6596d9..0790e57e2e78af94d6f632050b2e90686950fa05 100644 |
| --- a/net/test/spawned_test_server/base_test_server.cc |
| +++ b/net/test/spawned_test_server/base_test_server.cc |
| @@ -123,11 +123,53 @@ std::unique_ptr<base::ListValue> GetTokenBindingParams( |
| return values; |
| } |
| +std::string OCSPStatusToString( |
| + const BaseTestServer::SSLOptions::OCSPStatus& ocsp_status) { |
| + switch (ocsp_status) { |
| + case BaseTestServer::SSLOptions::OCSP_OK: |
| + return "ok"; |
| + case BaseTestServer::SSLOptions::OCSP_REVOKED: |
| + return "revoked"; |
| + case BaseTestServer::SSLOptions::OCSP_INVALID_RESPONSE: |
| + return "invalid"; |
| + case BaseTestServer::SSLOptions::OCSP_UNAUTHORIZED: |
| + return "unauthorized"; |
| + case BaseTestServer::SSLOptions::OCSP_UNKNOWN: |
| + return "unknown"; |
| + case BaseTestServer::SSLOptions::OCSP_TRY_LATER: |
| + return "later"; |
| + case BaseTestServer::SSLOptions::OCSP_INVALID_RESPONSE_DATA: |
| + return "invalid_data"; |
| + case BaseTestServer::SSLOptions::OCSP_MISMATCHED_SERIAL: |
| + return "mismatched_serial"; |
| + } |
| + NOTREACHED(); |
| + return ""; |
|
Ryan Sleevi
2016/07/18 20:08:08
std::string, not ""
dadrian
2016/07/18 22:23:32
Done.
|
| +} |
| + |
| +std::string OCSPDateToString( |
| + const BaseTestServer::SSLOptions::OCSPDate& ocsp_date) { |
| + switch (ocsp_date) { |
| + case BaseTestServer::SSLOptions::OCSP_DATE_VALID: |
| + return "valid"; |
| + case BaseTestServer::SSLOptions::OCSP_DATE_OLD: |
| + return "old"; |
| + case BaseTestServer::SSLOptions::OCSP_DATE_EARLY: |
| + return "early"; |
| + case BaseTestServer::SSLOptions::OCSP_DATE_LONG: |
| + return "long"; |
| + } |
| + NOTREACHED(); |
| + return ""; |
|
Ryan Sleevi
2016/07/18 20:08:08
std::string() not ""
dadrian
2016/07/18 22:23:32
Done.
|
| +} |
| + |
| } // namespace |
| BaseTestServer::SSLOptions::SSLOptions() |
| : server_certificate(CERT_OK), |
| ocsp_status(OCSP_OK), |
| + ocsp_date(OCSP_DATE_VALID), |
| + ocsp_produced(OCSP_PRODUCED_VALID), |
| cert_serial(0), |
| request_client_certificate(false), |
| key_exchanges(SSLOptions::KEY_EXCHANGE_ANY), |
| @@ -146,6 +188,8 @@ BaseTestServer::SSLOptions::SSLOptions( |
| BaseTestServer::SSLOptions::ServerCertificate cert) |
| : server_certificate(cert), |
| ocsp_status(OCSP_OK), |
| + ocsp_date(OCSP_DATE_VALID), |
| + ocsp_produced(OCSP_PRODUCED_VALID), |
| cert_serial(0), |
| request_client_certificate(false), |
| key_exchanges(SSLOptions::KEY_EXCHANGE_ANY), |
| @@ -191,17 +235,48 @@ std::string BaseTestServer::SSLOptions::GetOCSPArgument() const { |
| if (server_certificate != CERT_AUTO) |
| return std::string(); |
| - switch (ocsp_status) { |
| - case OCSP_OK: |
| - return "ok"; |
| - case OCSP_REVOKED: |
| - return "revoked"; |
| - case OCSP_INVALID: |
| - return "invalid"; |
| - case OCSP_UNAUTHORIZED: |
| - return "unauthorized"; |
| - case OCSP_UNKNOWN: |
| - return "unknown"; |
| + // |ocsp_responses| overrides when it is non-empty. |
| + if (!ocsp_responses.empty()) { |
| + std::string arg; |
| + for (size_t i = 0; i < ocsp_responses.size(); i++) { |
| + if (i != 0) |
| + arg += ":"; |
| + arg += OCSPStatusToString(ocsp_responses[i].status); |
| + } |
| + return arg; |
| + } |
| + |
| + return OCSPStatusToString(ocsp_status); |
| +} |
| + |
| +std::string BaseTestServer::SSLOptions::GetOCSPDateArgument() const { |
| + if (server_certificate != CERT_AUTO) |
| + return std::string(); |
| + |
| + if (!ocsp_responses.empty()) { |
| + std::string arg; |
| + for (size_t i = 0; i < ocsp_responses.size(); i++) { |
| + if (i != 0) |
| + arg += ":"; |
| + arg += OCSPDateToString(ocsp_responses[i].date); |
| + } |
| + return arg; |
| + } |
| + |
| + return OCSPDateToString(ocsp_date); |
| +} |
| + |
| +std::string BaseTestServer::SSLOptions::GetOCSPProducedArgument() const { |
| + if (server_certificate != CERT_AUTO) |
| + return std::string(); |
| + |
| + switch (ocsp_produced) { |
| + case OCSP_PRODUCED_VALID: |
| + return "valid"; |
| + case OCSP_PRODUCED_BEFORE_CERT: |
| + return "before"; |
| + case OCSP_PRODUCED_AFTER_CERT: |
| + return "after"; |
| default: |
| NOTREACHED(); |
| return std::string(); |
| @@ -524,6 +599,14 @@ bool BaseTestServer::GenerateArguments(base::DictionaryValue* arguments) const { |
| if (!ocsp_arg.empty()) |
| arguments->SetString("ocsp", ocsp_arg); |
| + std::string ocsp_date_arg = ssl_options_.GetOCSPDateArgument(); |
| + if (!ocsp_date_arg.empty()) |
| + arguments->SetString("ocsp-date", ocsp_date_arg); |
| + |
| + std::string ocsp_produced_arg = ssl_options_.GetOCSPProducedArgument(); |
| + if (!ocsp_produced_arg.empty()) |
| + arguments->SetString("ocsp-produced", ocsp_produced_arg); |
| + |
| if (ssl_options_.cert_serial != 0) { |
| arguments->SetInteger("cert-serial", ssl_options_.cert_serial); |
| } |