Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(137)

Side by Side Diff: net/tools/testserver/testserver.py

Issue 2205433002: Implement ALPN in tlslite. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Moving nextProtos back to where it was. Created 4 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « net/test/spawned_test_server/base_test_server.cc ('k') | third_party/tlslite/README.chromium » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 #!/usr/bin/env python 1 #!/usr/bin/env python
2 # Copyright 2013 The Chromium Authors. All rights reserved. 2 # Copyright 2013 The Chromium Authors. All rights reserved.
3 # Use of this source code is governed by a BSD-style license that can be 3 # Use of this source code is governed by a BSD-style license that can be
4 # found in the LICENSE file. 4 # found in the LICENSE file.
5 5
6 """This is a simple HTTP/FTP/TCP/UDP/BASIC_AUTH_PROXY/WEBSOCKET server used for 6 """This is a simple HTTP/FTP/TCP/UDP/BASIC_AUTH_PROXY/WEBSOCKET server used for
7 testing Chrome. 7 testing Chrome.
8 8
9 It supports several test URLs, as specified by the handlers in TestPageHandler. 9 It supports several test URLs, as specified by the handlers in TestPageHandler.
10 By default, it listens on an ephemeral port and sends the port number back to 10 By default, it listens on an ephemeral port and sends the port number back to
(...skipping 143 matching lines...) Expand 10 before | Expand all | Expand 10 after
154 154
155 class HTTPSServer(tlslite.api.TLSSocketServerMixIn, 155 class HTTPSServer(tlslite.api.TLSSocketServerMixIn,
156 testserver_base.ClientRestrictingServerMixIn, 156 testserver_base.ClientRestrictingServerMixIn,
157 testserver_base.BrokenPipeHandlerMixIn, 157 testserver_base.BrokenPipeHandlerMixIn,
158 testserver_base.StoppableHTTPServer): 158 testserver_base.StoppableHTTPServer):
159 """This is a specialization of StoppableHTTPServer that add https support and 159 """This is a specialization of StoppableHTTPServer that add https support and
160 client verification.""" 160 client verification."""
161 161
162 def __init__(self, server_address, request_hander_class, pem_cert_and_key, 162 def __init__(self, server_address, request_hander_class, pem_cert_and_key,
163 ssl_client_auth, ssl_client_cas, ssl_client_cert_types, 163 ssl_client_auth, ssl_client_cas, ssl_client_cert_types,
164 ssl_bulk_ciphers, ssl_key_exchanges, npn_protocols, 164 ssl_bulk_ciphers, ssl_key_exchanges, alpn_protocols,
165 record_resume_info, tls_intolerant, 165 npn_protocols, record_resume_info, tls_intolerant,
166 tls_intolerance_type, signed_cert_timestamps, 166 tls_intolerance_type, signed_cert_timestamps,
167 fallback_scsv_enabled, ocsp_response, 167 fallback_scsv_enabled, ocsp_response,
168 alert_after_handshake, disable_channel_id, disable_ems, 168 alert_after_handshake, disable_channel_id, disable_ems,
169 token_binding_params): 169 token_binding_params):
170 self.cert_chain = tlslite.api.X509CertChain() 170 self.cert_chain = tlslite.api.X509CertChain()
171 self.cert_chain.parsePemList(pem_cert_and_key) 171 self.cert_chain.parsePemList(pem_cert_and_key)
172 # Force using only python implementation - otherwise behavior is different 172 # Force using only python implementation - otherwise behavior is different
173 # depending on whether m2crypto Python module is present (error is thrown 173 # depending on whether m2crypto Python module is present (error is thrown
174 # when it is). m2crypto uses a C (based on OpenSSL) implementation under 174 # when it is). m2crypto uses a C (based on OpenSSL) implementation under
175 # the hood. 175 # the hood.
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
208 self.ssl_handshake_settings.tlsIntolerant = (3, tls_intolerant) 208 self.ssl_handshake_settings.tlsIntolerant = (3, tls_intolerant)
209 self.ssl_handshake_settings.tlsIntoleranceType = tls_intolerance_type 209 self.ssl_handshake_settings.tlsIntoleranceType = tls_intolerance_type
210 if alert_after_handshake: 210 if alert_after_handshake:
211 self.ssl_handshake_settings.alertAfterHandshake = True 211 self.ssl_handshake_settings.alertAfterHandshake = True
212 if disable_channel_id: 212 if disable_channel_id:
213 self.ssl_handshake_settings.enableChannelID = False 213 self.ssl_handshake_settings.enableChannelID = False
214 if disable_ems: 214 if disable_ems:
215 self.ssl_handshake_settings.enableExtendedMasterSecret = False 215 self.ssl_handshake_settings.enableExtendedMasterSecret = False
216 self.ssl_handshake_settings.supportedTokenBindingParams = \ 216 self.ssl_handshake_settings.supportedTokenBindingParams = \
217 token_binding_params 217 token_binding_params
218 self.ssl_handshake_settings.alpnProtos=alpn_protocols;
218 219
219 if record_resume_info: 220 if record_resume_info:
220 # If record_resume_info is true then we'll replace the session cache with 221 # If record_resume_info is true then we'll replace the session cache with
221 # an object that records the lookups and inserts that it sees. 222 # an object that records the lookups and inserts that it sees.
222 self.session_cache = RecordingSSLSessionCache() 223 self.session_cache = RecordingSSLSessionCache()
223 else: 224 else:
224 self.session_cache = tlslite.api.SessionCache() 225 self.session_cache = tlslite.api.SessionCache()
225 testserver_base.StoppableHTTPServer.__init__(self, 226 testserver_base.StoppableHTTPServer.__init__(self,
226 server_address, 227 server_address,
227 request_hander_class) 228 request_hander_class)
(...skipping 1757 matching lines...) Expand 10 before | Expand all | Expand 10 after
1985 stapled_ocsp_response = None 1986 stapled_ocsp_response = None
1986 if self.options.staple_ocsp_response: 1987 if self.options.staple_ocsp_response:
1987 stapled_ocsp_response = ocsp_der 1988 stapled_ocsp_response = ocsp_der
1988 1989
1989 server = HTTPSServer((host, port), TestPageHandler, pem_cert_and_key, 1990 server = HTTPSServer((host, port), TestPageHandler, pem_cert_and_key,
1990 self.options.ssl_client_auth, 1991 self.options.ssl_client_auth,
1991 self.options.ssl_client_ca, 1992 self.options.ssl_client_ca,
1992 self.options.ssl_client_cert_type, 1993 self.options.ssl_client_cert_type,
1993 self.options.ssl_bulk_cipher, 1994 self.options.ssl_bulk_cipher,
1994 self.options.ssl_key_exchange, 1995 self.options.ssl_key_exchange,
1996 self.options.alpn_protocols,
1995 self.options.npn_protocols, 1997 self.options.npn_protocols,
1996 self.options.record_resume, 1998 self.options.record_resume,
1997 self.options.tls_intolerant, 1999 self.options.tls_intolerant,
1998 self.options.tls_intolerance_type, 2000 self.options.tls_intolerance_type,
1999 self.options.signed_cert_timestamps_tls_ext.decode( 2001 self.options.signed_cert_timestamps_tls_ext.decode(
2000 "base64"), 2002 "base64"),
2001 self.options.fallback_scsv, 2003 self.options.fallback_scsv,
2002 stapled_ocsp_response, 2004 stapled_ocsp_response,
2003 self.options.alert_after_handshake, 2005 self.options.alert_after_handshake,
2004 self.options.disable_channel_id, 2006 self.options.disable_channel_id,
(...skipping 214 matching lines...) Expand 10 before | Expand all | Expand 10 after
2219 'indicating multiple algorithms should be ' 2221 'indicating multiple algorithms should be '
2220 'enabled.'); 2222 'enabled.');
2221 self.option_parser.add_option('--ssl-key-exchange', action='append', 2223 self.option_parser.add_option('--ssl-key-exchange', action='append',
2222 help='Specify the key exchange algorithm(s)' 2224 help='Specify the key exchange algorithm(s)'
2223 'that will be accepted by the SSL server. ' 2225 'that will be accepted by the SSL server. '
2224 'Valid values are "rsa", "dhe_rsa", ' 2226 'Valid values are "rsa", "dhe_rsa", '
2225 '"ecdhe_rsa". If omitted, all algorithms ' 2227 '"ecdhe_rsa". If omitted, all algorithms '
2226 'will be used. This option may appear ' 2228 'will be used. This option may appear '
2227 'multiple times, indicating multiple ' 2229 'multiple times, indicating multiple '
2228 'algorithms should be enabled.'); 2230 'algorithms should be enabled.');
2229 # TODO(davidben): Add ALPN support to tlslite. 2231 self.option_parser.add_option('--alpn-protocols', action='append',
2232 help='Specify the list of ALPN protocols. '
2233 'The server will not send an ALPN response '
2234 'if this list does not overlap with the '
2235 'list of protocols the client advertises.')
2230 self.option_parser.add_option('--npn-protocols', action='append', 2236 self.option_parser.add_option('--npn-protocols', action='append',
2231 help='Specify the list of protocols sent in' 2237 help='Specify the list of protocols sent in '
2232 'an NPN response. The server will not' 2238 'an NPN response. The server will not'
2233 'support NPN if the list is empty.') 2239 'support NPN if the list is empty.')
2234 self.option_parser.add_option('--file-root-url', default='/files/', 2240 self.option_parser.add_option('--file-root-url', default='/files/',
2235 help='Specify a root URL for files served.') 2241 help='Specify a root URL for files served.')
2236 # TODO(ricea): Generalize this to support basic auth for HTTP too. 2242 # TODO(ricea): Generalize this to support basic auth for HTTP too.
2237 self.option_parser.add_option('--ws-basic-auth', action='store_true', 2243 self.option_parser.add_option('--ws-basic-auth', action='store_true',
2238 dest='ws_basic_auth', 2244 dest='ws_basic_auth',
2239 help='Enable basic-auth for WebSocket') 2245 help='Enable basic-auth for WebSocket')
2240 self.option_parser.add_option('--ocsp-server-unavailable', 2246 self.option_parser.add_option('--ocsp-server-unavailable',
2241 dest='ocsp_server_unavailable', 2247 dest='ocsp_server_unavailable',
(...skipping 13 matching lines...) Expand all
2255 'an anonymous user.') 2261 'an anonymous user.')
2256 self.option_parser.add_option('--disable-channel-id', action='store_true') 2262 self.option_parser.add_option('--disable-channel-id', action='store_true')
2257 self.option_parser.add_option('--disable-extended-master-secret', 2263 self.option_parser.add_option('--disable-extended-master-secret',
2258 action='store_true') 2264 action='store_true')
2259 self.option_parser.add_option('--token-binding-params', action='append', 2265 self.option_parser.add_option('--token-binding-params', action='append',
2260 default=[], type='int') 2266 default=[], type='int')
2261 2267
2262 2268
2263 if __name__ == '__main__': 2269 if __name__ == '__main__':
2264 sys.exit(ServerRunner().main()) 2270 sys.exit(ServerRunner().main())
OLDNEW
« no previous file with comments | « net/test/spawned_test_server/base_test_server.cc ('k') | third_party/tlslite/README.chromium » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698