URI: 
       tdelete certificates that fail - electrum - Electrum Bitcoin wallet
  HTML git clone https://git.parazyd.org/electrum
   DIR Log
   DIR Files
   DIR Refs
   DIR Submodules
       ---
   DIR commit 06cc8986520f9201512f2ad33cffa7b7b68ae311
   DIR parent 5136e59e14e3974ba3290fa100ffd1c12c3d5577
  HTML Author: ThomasV <thomasv@gitorious>
       Date:   Wed,  2 Oct 2013 03:20:15 +0200
       
       delete certificates that fail
       
       Diffstat:
         M lib/interface.py                    |      36 ++++++++++++++++++++++---------
       
       1 file changed, 26 insertions(+), 10 deletions(-)
       ---
   DIR diff --git a/lib/interface.py b/lib/interface.py
       t@@ -253,6 +253,7 @@ class Interface(threading.Thread):
        
                if self.use_ssl:
                    cert_path = os.path.join( self.config.get('path'), 'certs', self.host)
       +
                    if not os.path.exists(cert_path):
                        # get server certificate.
                        # Do not use ssl.get_server_certificate because it does not work with proxy
       t@@ -267,8 +268,21 @@ class Interface(threading.Thread):
                        dercert = s.getpeercert(True)
                        s.close()
                        cert = ssl.DER_cert_to_PEM_cert(dercert)
       -                    
       +
       +                #from OpenSSL import crypto as c
       +                #_cert = c.load_certificate(c.FILETYPE_PEM, cert)
       +                #notAfter = _cert.get_notAfter() 
       +                #notBefore = _cert.get_notBefore() 
       +                #now = time.time()
       +                #if now > time.mktime( time.strptime(notAfter[:-1] + "GMT", "%Y%m%d%H%M%S%Z") ):
       +                #    print "deprecated cert", host, notAfter
       +                #    return
       +                #if now < time.mktime( time.strptime(notBefore[:-1] + "GMT", "%Y%m%d%H%M%S%Z") ):
       +                #    print "notbefore", host, notBefore
       +                #    return
       +
                        with open(cert_path,"w") as f:
       +                    print_error("saving certificate for",self.host)
                            f.write(cert)
        
        
       t@@ -291,21 +305,23 @@ class Interface(threading.Thread):
                                            do_handshake_on_connect=True)
                    except ssl.SSLError, e:
                        print_error("SSL error:", self.host, e)
       +                if e.errno == 1:
       +                    # delete the certificate so we will download a new one
       +                    os.unlink(cert_path)
                        return
                    except:
                        traceback.print_exc(file=sys.stdout)
                        print_error("wrap_socket failed", self.host)
                        return
        
       -        # hostname verification (disabled)
       -        if self.use_ssl and False:
       -            from backports.ssl_match_hostname import match_hostname, CertificateError
       -            try:
       -                match_hostname(s.getpeercert(), self.host)
       -                print_error("hostname matches", self.host)
       -            except CertificateError, ce:
       -                print_error("hostname does not match", self.host, s.getpeercert())
       -                return
       +            # hostname verification (disabled)
       +            #from backports.ssl_match_hostname import match_hostname, CertificateError
       +            #try:
       +            #    match_hostname(s.getpeercert(), self.host)
       +            #    print_error("hostname matches", self.host)
       +            #except CertificateError, ce:
       +            #    print_error("hostname does not match", self.host, s.getpeercert())
       +            #    return
        
                s.settimeout(60)
                self.s = s