URI: 
       tMerge pull request #677 from wozz/paymnt-update - electrum - Electrum Bitcoin wallet
  HTML git clone https://git.parazyd.org/electrum
   DIR Log
   DIR Files
   DIR Refs
   DIR Submodules
       ---
   DIR commit 78a748149c346683f33e51851c93ee9bc7596016
   DIR parent f004dff9ef8d0c6b3c6a29cb79a78a1bd56a5ff4
  HTML Author: ThomasV <thomasv1@gmx.de>
       Date:   Mon,  5 May 2014 18:14:19 +0200
       
       Merge pull request #677 from wozz/paymnt-update
       
       update to certificate check for Subject Alt Names
       Diffstat:
         M lib/paymentrequest.py               |      26 +++++++++++++++++++++-----
       
       1 file changed, 21 insertions(+), 5 deletions(-)
       ---
   DIR diff --git a/lib/paymentrequest.py b/lib/paymentrequest.py
       t@@ -71,11 +71,27 @@ class PaymentRequest:
        
                x509_1 = X509.load_cert_der_string(cert.certificate[0])
                if self.domain != x509_1.get_subject().CN:
       -            ###TODO: check for subject alt names
       -            ###       check for wildcards
       -            print "ERROR: Certificate Subject Domain Mismatch"
       -            print self.domain, x509_1.get_subject().CN
       -            #return
       +            validcert = False
       +            try:
       +                SANs = x509_1.get_ext("subjectAltName").get_value().split(",")
       +                for s in SANs:
       +                    s = s.strip()
       +                    if s.startswith("DNS:") and s[4:] == self.domain:
       +                        validcert = True
       +                        print "Match SAN DNS"
       +                    elif s.startswith("IP:") and s[3:] == self.domain:
       +                        validcert = True
       +                        print "Match SAN IP"
       +                    elif s.startswith("email:") and s[6:] == self.domain:
       +                        validcert = True
       +                        print "Match SAN email"
       +            except Exception, e:
       +                print "ERROR: No SAN data"
       +            if not validcert:
       +                ###TODO: check for wildcards
       +                print "ERROR: Certificate Subject Domain Mismatch and SAN Mismatch"
       +                print self.domain, x509_1.get_subject().CN
       +                return
        
                x509 = []
                CA_OU = ''