| 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 #ifndef NET_TEST_SPAWNED_TEST_SERVER_BASE_TEST_SERVER_H_ | 5 #ifndef NET_TEST_SPAWNED_TEST_SERVER_BASE_TEST_SERVER_H_ |
| 6 #define NET_TEST_SPAWNED_TEST_SERVER_BASE_TEST_SERVER_H_ | 6 #define NET_TEST_SPAWNED_TEST_SERVER_BASE_TEST_SERVER_H_ |
| 7 | 7 |
| 8 #include <string> | 8 #include <string> |
| 9 #include <utility> | 9 #include <utility> |
| 10 #include <vector> | 10 #include <vector> |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 45 | 45 |
| 46 // Container for various options to control how the HTTPS or WSS server is | 46 // Container for various options to control how the HTTPS or WSS server is |
| 47 // initialized. | 47 // initialized. |
| 48 struct SSLOptions { | 48 struct SSLOptions { |
| 49 enum ServerCertificate { | 49 enum ServerCertificate { |
| 50 CERT_OK, | 50 CERT_OK, |
| 51 | 51 |
| 52 // CERT_AUTO causes the testserver to generate a test certificate issued | 52 // CERT_AUTO causes the testserver to generate a test certificate issued |
| 53 // by "Testing CA" (see net/data/ssl/certificates/ocsp-test-root.pem). | 53 // by "Testing CA" (see net/data/ssl/certificates/ocsp-test-root.pem). |
| 54 CERT_AUTO, | 54 CERT_AUTO, |
| 55 | |
| 56 CERT_MISMATCHED_NAME, | 55 CERT_MISMATCHED_NAME, |
| 57 CERT_EXPIRED, | 56 CERT_EXPIRED, |
| 58 // Cross-signed certificate to test PKIX path building. Contains an | 57 // Cross-signed certificate to test PKIX path building. Contains an |
| 59 // intermediate cross-signed by an unknown root, while the client (via | 58 // intermediate cross-signed by an unknown root, while the client (via |
| 60 // TestRootStore) is expected to have a self-signed version of the | 59 // TestRootStore) is expected to have a self-signed version of the |
| 61 // intermediate. | 60 // intermediate. |
| 62 CERT_CHAIN_WRONG_ROOT, | 61 CERT_CHAIN_WRONG_ROOT, |
| 63 }; | 62 }; |
| 64 | 63 |
| 65 // OCSPStatus enumerates the types of OCSP response that the testserver | 64 // OCSPStatus enumerates the types of OCSP response that the testserver |
| 66 // can produce. | 65 // can produce. |
| 67 enum OCSPStatus { | 66 enum OCSPStatus { |
| 68 OCSP_OK, | 67 OCSP_OK, |
| 69 OCSP_REVOKED, | 68 OCSP_REVOKED, |
| 70 OCSP_INVALID, | 69 OCSP_INVALID, |
| 71 OCSP_UNAUTHORIZED, | 70 OCSP_UNAUTHORIZED, |
| 72 OCSP_UNKNOWN, | 71 OCSP_UNKNOWN, |
| 73 }; | 72 }; |
| 74 | 73 |
| 75 // Bitmask of key exchange algorithms that the test server supports and that | 74 // Bitmask of key exchange algorithms that the test server supports and that |
| 76 // can be selectively enabled or disabled. | 75 // can be selectively enabled or disabled. |
| 77 enum KeyExchange { | 76 enum KeyExchange { |
| 78 // Special value used to indicate that any algorithm the server supports | 77 // Special value used to indicate that any algorithm the server supports |
| 79 // is acceptable. Preferred over explicitly OR-ing all key exchange | 78 // is acceptable. Preferred over explicitly OR-ing all key exchange |
| 80 // algorithms. | 79 // algorithms. |
| 81 KEY_EXCHANGE_ANY = 0, | 80 KEY_EXCHANGE_ANY = 0, |
| 82 | 81 KEY_EXCHANGE_RSA = (1 << 0), |
| 83 KEY_EXCHANGE_RSA = (1 << 0), | |
| 84 KEY_EXCHANGE_DHE_RSA = (1 << 1), | 82 KEY_EXCHANGE_DHE_RSA = (1 << 1), |
| 85 }; | 83 }; |
| 86 | 84 |
| 87 // Bitmask of bulk encryption algorithms that the test server supports | 85 // Bitmask of bulk encryption algorithms that the test server supports |
| 88 // and that can be selectively enabled or disabled. | 86 // and that can be selectively enabled or disabled. |
| 89 enum BulkCipher { | 87 enum BulkCipher { |
| 90 // Special value used to indicate that any algorithm the server supports | 88 // Special value used to indicate that any algorithm the server supports |
| 91 // is acceptable. Preferred over explicitly OR-ing all ciphers. | 89 // is acceptable. Preferred over explicitly OR-ing all ciphers. |
| 92 BULK_CIPHER_ANY = 0, | 90 BULK_CIPHER_ANY = 0, |
| 93 | 91 BULK_CIPHER_RC4 = (1 << 0), |
| 94 BULK_CIPHER_RC4 = (1 << 0), | |
| 95 BULK_CIPHER_AES128 = (1 << 1), | 92 BULK_CIPHER_AES128 = (1 << 1), |
| 96 BULK_CIPHER_AES256 = (1 << 2), | 93 BULK_CIPHER_AES256 = (1 << 2), |
| 97 | 94 |
| 98 // NOTE: 3DES support in the Python test server has external | 95 // NOTE: 3DES support in the Python test server has external |
| 99 // dependencies and not be available on all machines. Clients may not | 96 // dependencies and not be available on all machines. Clients may not |
| 100 // be able to connect if only 3DES is specified. | 97 // be able to connect if only 3DES is specified. |
| 101 BULK_CIPHER_3DES = (1 << 3), | 98 BULK_CIPHER_3DES = (1 << 3), |
| 102 }; | 99 }; |
| 103 | 100 |
| 104 // NOTE: the values of these enumerators are passed to the the Python test | 101 // NOTE: the values of these enumerators are passed to the the Python test |
| 105 // server. Do not change them. | 102 // server. Do not change them. |
| 106 enum TLSIntolerantLevel { | 103 enum TLSIntolerantLevel { |
| 107 TLS_INTOLERANT_NONE = 0, | 104 TLS_INTOLERANT_NONE = 0, |
| 108 TLS_INTOLERANT_ALL = 1, // Intolerant of all TLS versions. | 105 TLS_INTOLERANT_ALL = 1, // Intolerant of all TLS versions. |
| 109 TLS_INTOLERANT_TLS1_1 = 2, // Intolerant of TLS 1.1 or higher. | 106 TLS_INTOLERANT_TLS1_1 = 2, // Intolerant of TLS 1.1 or higher. |
| 110 TLS_INTOLERANT_TLS1_2 = 3, // Intolerant of TLS 1.2 or higher. | 107 TLS_INTOLERANT_TLS1_2 = 3, // Intolerant of TLS 1.2 or higher. |
| 111 }; | 108 }; |
| 112 | 109 |
| 113 // Initialize a new SSLOptions using CERT_OK as the certificate. | 110 // Initialize a new SSLOptions using CERT_OK as the certificate. |
| 114 SSLOptions(); | 111 SSLOptions(); |
| 115 | 112 |
| 116 // Initialize a new SSLOptions that will use the specified certificate. | 113 // Initialize a new SSLOptions that will use the specified certificate. |
| 117 explicit SSLOptions(ServerCertificate cert); | 114 explicit SSLOptions(ServerCertificate cert); |
| 118 ~SSLOptions(); | 115 ~SSLOptions(); |
| (...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 184 bool staple_ocsp_response; | 181 bool staple_ocsp_response; |
| 185 | 182 |
| 186 // Whether to enable NPN support. | 183 // Whether to enable NPN support. |
| 187 bool enable_npn; | 184 bool enable_npn; |
| 188 }; | 185 }; |
| 189 | 186 |
| 190 // Pass as the 'host' parameter during construction to server on 127.0.0.1 | 187 // Pass as the 'host' parameter during construction to server on 127.0.0.1 |
| 191 static const char kLocalhost[]; | 188 static const char kLocalhost[]; |
| 192 | 189 |
| 193 // Initialize a TestServer listening on a specific host (IP or hostname). | 190 // Initialize a TestServer listening on a specific host (IP or hostname). |
| 194 BaseTestServer(Type type, const std::string& host); | 191 BaseTestServer(Type type, const std::string& host); |
| 195 | 192 |
| 196 // Initialize a TestServer with a specific set of SSLOptions for HTTPS or WSS. | 193 // Initialize a TestServer with a specific set of SSLOptions for HTTPS or WSS. |
| 197 BaseTestServer(Type type, const SSLOptions& ssl_options); | 194 BaseTestServer(Type type, const SSLOptions& ssl_options); |
| 198 | 195 |
| 199 // Returns the host port pair used by current Python based test server only | 196 // Returns the host port pair used by current Python based test server only |
| 200 // if the server is started. | 197 // if the server is started. |
| 201 const HostPortPair& host_port_pair() const; | 198 const HostPortPair& host_port_pair() const; |
| 202 | 199 |
| 203 const base::FilePath& document_root() const { return document_root_; } | 200 const base::FilePath& document_root() const { return document_root_; } |
| 204 const base::DictionaryValue& server_data() const; | 201 const base::DictionaryValue& server_data() const; |
| 205 std::string GetScheme() const; | 202 std::string GetScheme() const; |
| 206 bool GetAddressList(AddressList* address_list) const WARN_UNUSED_RESULT; | 203 bool GetAddressList(AddressList* address_list) const WARN_UNUSED_RESULT; |
| 207 | 204 |
| 208 GURL GetURL(const std::string& path) const; | 205 GURL GetURL(const std::string& path) const; |
| 209 | 206 |
| 210 GURL GetURLWithUser(const std::string& path, | 207 GURL GetURLWithUser(const std::string& path, const std::string& user) const; |
| 211 const std::string& user) const; | |
| 212 | 208 |
| 213 GURL GetURLWithUserAndPassword(const std::string& path, | 209 GURL GetURLWithUserAndPassword(const std::string& path, |
| 214 const std::string& user, | 210 const std::string& user, |
| 215 const std::string& password) const; | 211 const std::string& password) const; |
| 216 | 212 |
| 217 static bool GetFilePathWithReplacements( | 213 static bool GetFilePathWithReplacements( |
| 218 const std::string& original_path, | 214 const std::string& original_path, |
| 219 const std::vector<StringPair>& text_to_replace, | 215 const std::vector<StringPair>& text_to_replace, |
| 220 std::string* replacement_path); | 216 std::string* replacement_path); |
| 221 | 217 |
| (...skipping 23 matching lines...) Expand all Loading... |
| 245 void SetResourcePath(const base::FilePath& document_root, | 241 void SetResourcePath(const base::FilePath& document_root, |
| 246 const base::FilePath& certificates_dir); | 242 const base::FilePath& certificates_dir); |
| 247 | 243 |
| 248 // Parses the server data read from the test server. Returns true | 244 // Parses the server data read from the test server. Returns true |
| 249 // on success. | 245 // on success. |
| 250 bool ParseServerData(const std::string& server_data) WARN_UNUSED_RESULT; | 246 bool ParseServerData(const std::string& server_data) WARN_UNUSED_RESULT; |
| 251 | 247 |
| 252 // Generates a DictionaryValue with the arguments for launching the external | 248 // Generates a DictionaryValue with the arguments for launching the external |
| 253 // Python test server. | 249 // Python test server. |
| 254 bool GenerateArguments(base::DictionaryValue* arguments) const | 250 bool GenerateArguments(base::DictionaryValue* arguments) const |
| 255 WARN_UNUSED_RESULT; | 251 WARN_UNUSED_RESULT; |
| 256 | 252 |
| 257 // Subclasses can override this to add arguments that are specific to their | 253 // Subclasses can override this to add arguments that are specific to their |
| 258 // own test servers. | 254 // own test servers. |
| 259 virtual bool GenerateAdditionalArguments( | 255 virtual bool GenerateAdditionalArguments( |
| 260 base::DictionaryValue* arguments) const WARN_UNUSED_RESULT; | 256 base::DictionaryValue* arguments) const WARN_UNUSED_RESULT; |
| 261 | 257 |
| 262 private: | 258 private: |
| 263 void Init(const std::string& host); | 259 void Init(const std::string& host); |
| 264 | 260 |
| 265 // Marks the root certificate of an HTTPS test server as trusted for | 261 // Marks the root certificate of an HTTPS test server as trusted for |
| (...skipping 25 matching lines...) Expand all Loading... |
| 291 bool log_to_console_; | 287 bool log_to_console_; |
| 292 | 288 |
| 293 scoped_ptr<ScopedPortException> allowed_port_; | 289 scoped_ptr<ScopedPortException> allowed_port_; |
| 294 | 290 |
| 295 DISALLOW_COPY_AND_ASSIGN(BaseTestServer); | 291 DISALLOW_COPY_AND_ASSIGN(BaseTestServer); |
| 296 }; | 292 }; |
| 297 | 293 |
| 298 } // namespace net | 294 } // namespace net |
| 299 | 295 |
| 300 #endif // NET_TEST_SPAWNED_TEST_SERVER_BASE_TEST_SERVER_H_ | 296 #endif // NET_TEST_SPAWNED_TEST_SERVER_BASE_TEST_SERVER_H_ |
| OLD | NEW |