comparison mercurial/sslutil.py @ 29108:16021d58c5ca

sslutil: make sslkwargs code even more explicit The ways in which this code can interact with socket wrapping and validation later are mind numbing. This patch helps make it even more clear. The end behavior should be identical.
author Gregory Szorc <gregory.szorc@gmail.com>
date Thu, 05 May 2016 00:32:43 -0700
parents c8fbfb9163ce
children 843df550b465
comparison
equal deleted inserted replaced
29107:c8fbfb9163ce 29108:16021d58c5ca
259 'cert_reqs': ssl.CERT_REQUIRED}) 259 'cert_reqs': ssl.CERT_REQUIRED})
260 return kws 260 return kws
261 261
262 # No CAs in config. See if we can load defaults. 262 # No CAs in config. See if we can load defaults.
263 cacerts = _defaultcacerts() 263 cacerts = _defaultcacerts()
264
265 # We found an alternate CA bundle to use. Load it.
264 if cacerts: 266 if cacerts:
265 ui.debug('using %s to enable OS X system CA\n' % cacerts) 267 ui.debug('using %s to enable OS X system CA\n' % cacerts)
266 else: 268 ui.setconfig('web', 'cacerts', cacerts, 'defaultcacerts')
267 if not _canloaddefaultcerts:
268 cacerts = '!'
269
270 ui.setconfig('web', 'cacerts', cacerts, 'defaultcacerts')
271
272 if cacerts != '!':
273 kws.update({'ca_certs': cacerts, 269 kws.update({'ca_certs': cacerts,
274 'cert_reqs': ssl.CERT_REQUIRED, 270 'cert_reqs': ssl.CERT_REQUIRED})
275 }) 271 return kws
272
273 # FUTURE this can disappear once wrapsocket() is secure by default.
274 if _canloaddefaultcerts:
275 kws['cert_reqs'] = ssl.CERT_REQUIRED
276 return kws
277
278 # This is effectively indicating that no CAs can be loaded because
279 # we can't get here if web.cacerts is set or if we can find
280 # CA certs elsewhere. Using a config option (which is later
281 # consulted by validator.__call__ is not very obvious).
282 # FUTURE fix this
283 ui.setconfig('web', 'cacerts', '!', 'defaultcacerts')
276 return kws 284 return kws
277 285
278 class validator(object): 286 class validator(object):
279 def __init__(self, ui, host): 287 def __init__(self, ui, host):
280 self.ui = ui 288 self.ui = ui