OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "net/test/spawned_test_server/base_test_server.h" | 5 #include "net/test/spawned_test_server/base_test_server.h" |
6 | 6 |
7 #include <stdint.h> | 7 #include <stdint.h> |
8 #include <limits> | 8 #include <limits> |
9 #include <string> | 9 #include <string> |
10 #include <utility> | 10 #include <utility> |
(...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
116 | 116 |
117 std::unique_ptr<base::ListValue> GetTokenBindingParams( | 117 std::unique_ptr<base::ListValue> GetTokenBindingParams( |
118 std::vector<int> params) { | 118 std::vector<int> params) { |
119 std::unique_ptr<base::ListValue> values(new base::ListValue()); | 119 std::unique_ptr<base::ListValue> values(new base::ListValue()); |
120 for (int param : params) { | 120 for (int param : params) { |
121 values->AppendInteger(param); | 121 values->AppendInteger(param); |
122 } | 122 } |
123 return values; | 123 return values; |
124 } | 124 } |
125 | 125 |
| 126 std::string OCSPStatusToString( |
| 127 const BaseTestServer::SSLOptions::OCSPStatus& ocsp_status) { |
| 128 switch (ocsp_status) { |
| 129 case BaseTestServer::SSLOptions::OCSP_OK: |
| 130 return "ok"; |
| 131 case BaseTestServer::SSLOptions::OCSP_REVOKED: |
| 132 return "revoked"; |
| 133 case BaseTestServer::SSLOptions::OCSP_INVALID_RESPONSE: |
| 134 return "invalid"; |
| 135 case BaseTestServer::SSLOptions::OCSP_UNAUTHORIZED: |
| 136 return "unauthorized"; |
| 137 case BaseTestServer::SSLOptions::OCSP_UNKNOWN: |
| 138 return "unknown"; |
| 139 case BaseTestServer::SSLOptions::OCSP_TRY_LATER: |
| 140 return "later"; |
| 141 case BaseTestServer::SSLOptions::OCSP_INVALID_RESPONSE_DATA: |
| 142 return "invalid_data"; |
| 143 case BaseTestServer::SSLOptions::OCSP_MISMATCHED_SERIAL: |
| 144 return "mismatched_serial"; |
| 145 } |
| 146 NOTREACHED(); |
| 147 return std::string(); |
| 148 } |
| 149 |
| 150 std::string OCSPDateToString( |
| 151 const BaseTestServer::SSLOptions::OCSPDate& ocsp_date) { |
| 152 switch (ocsp_date) { |
| 153 case BaseTestServer::SSLOptions::OCSP_DATE_VALID: |
| 154 return "valid"; |
| 155 case BaseTestServer::SSLOptions::OCSP_DATE_OLD: |
| 156 return "old"; |
| 157 case BaseTestServer::SSLOptions::OCSP_DATE_EARLY: |
| 158 return "early"; |
| 159 case BaseTestServer::SSLOptions::OCSP_DATE_LONG: |
| 160 return "long"; |
| 161 } |
| 162 NOTREACHED(); |
| 163 return std::string(); |
| 164 } |
| 165 |
126 } // namespace | 166 } // namespace |
127 | 167 |
128 BaseTestServer::SSLOptions::SSLOptions() | 168 BaseTestServer::SSLOptions::SSLOptions() |
129 : server_certificate(CERT_OK), | 169 : server_certificate(CERT_OK), |
130 ocsp_status(OCSP_OK), | 170 ocsp_status(OCSP_OK), |
| 171 ocsp_date(OCSP_DATE_VALID), |
| 172 ocsp_produced(OCSP_PRODUCED_VALID), |
131 cert_serial(0), | 173 cert_serial(0), |
132 request_client_certificate(false), | 174 request_client_certificate(false), |
133 key_exchanges(SSLOptions::KEY_EXCHANGE_ANY), | 175 key_exchanges(SSLOptions::KEY_EXCHANGE_ANY), |
134 bulk_ciphers(SSLOptions::BULK_CIPHER_ANY), | 176 bulk_ciphers(SSLOptions::BULK_CIPHER_ANY), |
135 record_resume(false), | 177 record_resume(false), |
136 tls_intolerant(TLS_INTOLERANT_NONE), | 178 tls_intolerant(TLS_INTOLERANT_NONE), |
137 tls_intolerance_type(TLS_INTOLERANCE_ALERT), | 179 tls_intolerance_type(TLS_INTOLERANCE_ALERT), |
138 fallback_scsv_enabled(false), | 180 fallback_scsv_enabled(false), |
139 staple_ocsp_response(false), | 181 staple_ocsp_response(false), |
140 ocsp_server_unavailable(false), | 182 ocsp_server_unavailable(false), |
141 alert_after_handshake(false), | 183 alert_after_handshake(false), |
142 disable_channel_id(false), | 184 disable_channel_id(false), |
143 disable_extended_master_secret(false) {} | 185 disable_extended_master_secret(false) {} |
144 | 186 |
145 BaseTestServer::SSLOptions::SSLOptions( | 187 BaseTestServer::SSLOptions::SSLOptions( |
146 BaseTestServer::SSLOptions::ServerCertificate cert) | 188 BaseTestServer::SSLOptions::ServerCertificate cert) |
147 : server_certificate(cert), | 189 : server_certificate(cert), |
148 ocsp_status(OCSP_OK), | 190 ocsp_status(OCSP_OK), |
| 191 ocsp_date(OCSP_DATE_VALID), |
| 192 ocsp_produced(OCSP_PRODUCED_VALID), |
149 cert_serial(0), | 193 cert_serial(0), |
150 request_client_certificate(false), | 194 request_client_certificate(false), |
151 key_exchanges(SSLOptions::KEY_EXCHANGE_ANY), | 195 key_exchanges(SSLOptions::KEY_EXCHANGE_ANY), |
152 bulk_ciphers(SSLOptions::BULK_CIPHER_ANY), | 196 bulk_ciphers(SSLOptions::BULK_CIPHER_ANY), |
153 record_resume(false), | 197 record_resume(false), |
154 tls_intolerant(TLS_INTOLERANT_NONE), | 198 tls_intolerant(TLS_INTOLERANT_NONE), |
155 tls_intolerance_type(TLS_INTOLERANCE_ALERT), | 199 tls_intolerance_type(TLS_INTOLERANCE_ALERT), |
156 fallback_scsv_enabled(false), | 200 fallback_scsv_enabled(false), |
157 staple_ocsp_response(false), | 201 staple_ocsp_response(false), |
158 ocsp_server_unavailable(false), | 202 ocsp_server_unavailable(false), |
(...skipping 25 matching lines...) Expand all Loading... |
184 default: | 228 default: |
185 NOTREACHED(); | 229 NOTREACHED(); |
186 } | 230 } |
187 return base::FilePath(); | 231 return base::FilePath(); |
188 } | 232 } |
189 | 233 |
190 std::string BaseTestServer::SSLOptions::GetOCSPArgument() const { | 234 std::string BaseTestServer::SSLOptions::GetOCSPArgument() const { |
191 if (server_certificate != CERT_AUTO) | 235 if (server_certificate != CERT_AUTO) |
192 return std::string(); | 236 return std::string(); |
193 | 237 |
194 switch (ocsp_status) { | 238 // |ocsp_responses| overrides when it is non-empty. |
195 case OCSP_OK: | 239 if (!ocsp_responses.empty()) { |
196 return "ok"; | 240 std::string arg; |
197 case OCSP_REVOKED: | 241 for (size_t i = 0; i < ocsp_responses.size(); i++) { |
198 return "revoked"; | 242 if (i != 0) |
199 case OCSP_INVALID: | 243 arg += ":"; |
200 return "invalid"; | 244 arg += OCSPStatusToString(ocsp_responses[i].status); |
201 case OCSP_UNAUTHORIZED: | 245 } |
202 return "unauthorized"; | 246 return arg; |
203 case OCSP_UNKNOWN: | 247 } |
204 return "unknown"; | 248 |
| 249 return OCSPStatusToString(ocsp_status); |
| 250 } |
| 251 |
| 252 std::string BaseTestServer::SSLOptions::GetOCSPDateArgument() const { |
| 253 if (server_certificate != CERT_AUTO) |
| 254 return std::string(); |
| 255 |
| 256 if (!ocsp_responses.empty()) { |
| 257 std::string arg; |
| 258 for (size_t i = 0; i < ocsp_responses.size(); i++) { |
| 259 if (i != 0) |
| 260 arg += ":"; |
| 261 arg += OCSPDateToString(ocsp_responses[i].date); |
| 262 } |
| 263 return arg; |
| 264 } |
| 265 |
| 266 return OCSPDateToString(ocsp_date); |
| 267 } |
| 268 |
| 269 std::string BaseTestServer::SSLOptions::GetOCSPProducedArgument() const { |
| 270 if (server_certificate != CERT_AUTO) |
| 271 return std::string(); |
| 272 |
| 273 switch (ocsp_produced) { |
| 274 case OCSP_PRODUCED_VALID: |
| 275 return "valid"; |
| 276 case OCSP_PRODUCED_BEFORE_CERT: |
| 277 return "before"; |
| 278 case OCSP_PRODUCED_AFTER_CERT: |
| 279 return "after"; |
205 default: | 280 default: |
206 NOTREACHED(); | 281 NOTREACHED(); |
207 return std::string(); | 282 return std::string(); |
208 } | 283 } |
209 } | 284 } |
210 | 285 |
211 const char BaseTestServer::kLocalhost[] = "127.0.0.1"; | 286 const char BaseTestServer::kLocalhost[] = "127.0.0.1"; |
212 | 287 |
213 BaseTestServer::BaseTestServer(Type type, const std::string& host) | 288 BaseTestServer::BaseTestServer(Type type, const std::string& host) |
214 : type_(type), | 289 : type_(type), |
(...skipping 302 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
517 arguments->Set("ssl-client-cert-type", client_cert_types.release()); | 592 arguments->Set("ssl-client-cert-type", client_cert_types.release()); |
518 } | 593 } |
519 | 594 |
520 if (type_ == TYPE_HTTPS) { | 595 if (type_ == TYPE_HTTPS) { |
521 arguments->Set("https", base::Value::CreateNullValue()); | 596 arguments->Set("https", base::Value::CreateNullValue()); |
522 | 597 |
523 std::string ocsp_arg = ssl_options_.GetOCSPArgument(); | 598 std::string ocsp_arg = ssl_options_.GetOCSPArgument(); |
524 if (!ocsp_arg.empty()) | 599 if (!ocsp_arg.empty()) |
525 arguments->SetString("ocsp", ocsp_arg); | 600 arguments->SetString("ocsp", ocsp_arg); |
526 | 601 |
| 602 std::string ocsp_date_arg = ssl_options_.GetOCSPDateArgument(); |
| 603 if (!ocsp_date_arg.empty()) |
| 604 arguments->SetString("ocsp-date", ocsp_date_arg); |
| 605 |
| 606 std::string ocsp_produced_arg = ssl_options_.GetOCSPProducedArgument(); |
| 607 if (!ocsp_produced_arg.empty()) |
| 608 arguments->SetString("ocsp-produced", ocsp_produced_arg); |
| 609 |
527 if (ssl_options_.cert_serial != 0) { | 610 if (ssl_options_.cert_serial != 0) { |
528 arguments->SetInteger("cert-serial", ssl_options_.cert_serial); | 611 arguments->SetInteger("cert-serial", ssl_options_.cert_serial); |
529 } | 612 } |
530 | 613 |
531 // Check key exchange argument. | 614 // Check key exchange argument. |
532 std::unique_ptr<base::ListValue> key_exchange_values(new base::ListValue()); | 615 std::unique_ptr<base::ListValue> key_exchange_values(new base::ListValue()); |
533 GetKeyExchangesList(ssl_options_.key_exchanges, key_exchange_values.get()); | 616 GetKeyExchangesList(ssl_options_.key_exchanges, key_exchange_values.get()); |
534 if (key_exchange_values->GetSize()) | 617 if (key_exchange_values->GetSize()) |
535 arguments->Set("ssl-key-exchange", key_exchange_values.release()); | 618 arguments->Set("ssl-key-exchange", key_exchange_values.release()); |
536 // Check bulk cipher argument. | 619 // Check bulk cipher argument. |
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
586 | 669 |
587 return GenerateAdditionalArguments(arguments); | 670 return GenerateAdditionalArguments(arguments); |
588 } | 671 } |
589 | 672 |
590 bool BaseTestServer::GenerateAdditionalArguments( | 673 bool BaseTestServer::GenerateAdditionalArguments( |
591 base::DictionaryValue* arguments) const { | 674 base::DictionaryValue* arguments) const { |
592 return true; | 675 return true; |
593 } | 676 } |
594 | 677 |
595 } // namespace net | 678 } // namespace net |
OLD | NEW |