mercurial/url.py
changeset 13422 ebce5196b9db
parent 13421 bd8bfa85d5a5
child 13424 08f9c587141f
equal deleted inserted replaced
13421:bd8bfa85d5a5 13422:ebce5196b9db
   544 if has_https:
   544 if has_https:
   545     class BetterHTTPS(httplib.HTTPSConnection):
   545     class BetterHTTPS(httplib.HTTPSConnection):
   546         send = keepalive.safesend
   546         send = keepalive.safesend
   547 
   547 
   548         def connect(self):
   548         def connect(self):
       
   549             self.sock = _create_connection((self.host, self.port))
       
   550 
   549             host = self.host
   551             host = self.host
   550             cacerts = self.ui.config('web', 'cacerts')
   552             cacerts = self.ui.config('web', 'cacerts')
   551             hostfingerprint = self.ui.config('hostfingerprints', host)
   553             hostfingerprint = self.ui.config('hostfingerprints', host)
   552 
   554 
   553             if cacerts and not hostfingerprint:
   555             if cacerts and not hostfingerprint:
   554                 sock = _create_connection((self.host, self.port))
       
   555                 self.sock = _ssl_wrap_socket(self.sock, self.key_file,
   556                 self.sock = _ssl_wrap_socket(self.sock, self.key_file,
   556                     self.cert_file, cert_reqs=CERT_REQUIRED,
   557                     self.cert_file, cert_reqs=CERT_REQUIRED,
   557                     ca_certs=util.expandpath(cacerts))
   558                     ca_certs=util.expandpath(cacerts))
   558                 msg = _verifycert(self.sock.getpeercert(), host)
   559                 msg = _verifycert(self.sock.getpeercert(), host)
   559                 if msg:
   560                 if msg:
   560                     raise util.Abort(_('%s certificate error: %s '
   561                     raise util.Abort(_('%s certificate error: %s '
   561                                        '(use --insecure to connect '
   562                                        '(use --insecure to connect '
   562                                        'insecurely)') % (host, msg))
   563                                        'insecurely)') % (host, msg))
   563                 self.ui.debug('%s certificate successfully verified\n' % host)
   564                 self.ui.debug('%s certificate successfully verified\n' % host)
   564             else:
   565             else:
   565                 httplib.HTTPSConnection.connect(self)
   566                 self.sock = _ssl_wrap_socket(self.sock, self.key_file,
       
   567                     self.cert_file)
   566                 if hasattr(self.sock, 'getpeercert'):
   568                 if hasattr(self.sock, 'getpeercert'):
   567                     peercert = self.sock.getpeercert(True)
   569                     peercert = self.sock.getpeercert(True)
   568                     peerfingerprint = util.sha1(peercert).hexdigest()
   570                     peerfingerprint = util.sha1(peercert).hexdigest()
   569                     nicefingerprint = ":".join([peerfingerprint[x:x + 2]
   571                     nicefingerprint = ":".join([peerfingerprint[x:x + 2]
   570                         for x in xrange(0, len(peerfingerprint), 2)])
   572                         for x in xrange(0, len(peerfingerprint), 2)])