a [dgu! @sddlZddlZddlZddlZddlZddlZddlZddl m Z m Z z ddl Z Wne yjdZ Yn0gdZdZzejjZejjZWneyeZZYn0e duoeeefvZzddl mZmZWnNe y&zddlmZddlmZWne y dZdZYn0Yn0es>Gdd d eZesVdd d Zd dZGdddeZGdddeZdddZ ddZ!e!ddZ"ddZ#ddZ$dS)N)ResolutionErrorExtractionError)VerifyingHTTPSHandlerfind_ca_bundle is_available cert_paths opener_fora /etc/pki/tls/certs/ca-bundle.crt /etc/ssl/certs/ca-certificates.crt /usr/share/ssl/certs/ca-bundle.crt /usr/local/share/certs/ca-root.crt /etc/ssl/cert.pem /System/Library/OpenSSL/certs/cert.pem /usr/local/share/certs/ca-root-nss.crt /etc/ssl/ca-bundle.pem )CertificateErrormatch_hostname)r )r c@s eZdZdS)r N)__name__ __module__ __qualname__rr@/usr/local/lib/python3.9/site-packages/setuptools/ssl_support.pyr 7sr c Csg}|s dS|d}|d}|dd}|d}||krLtdt||s`||kS|dkrt|dn>|ds|dr|t|n|t| d d |D]}|t|qt d d |d tj } | |S)NF.rr*z,too many wildcards in certificate DNS name: z[^.]+zxn--z\*z[^.]*z\Az\.z\Z)splitcountr reprlowerappend startswithreescapereplacecompilejoin IGNORECASEmatch) ZdnhostnameZ max_wildcardsZpatspartsZleftmost remainderZ wildcardsfragpatrrr_dnsname_match=s,     r%cCs|s tdg}|dd}|D]*\}}|dkr t||r@dS||q |s|ddD]6}|D],\}}|dkrdt||rdS||qdq\t|dkrtd|d tt|fn*t|dkrtd ||d fntd dS) Nzempty or no certificateZsubjectAltNamerZDNSZsubjectZ commonNamerz&hostname %r doesn't match either of %sz, zhostname %r doesn't match %rrz=no appropriate commonName or subjectAltName fields were found) ValueErrorgetr%rlenr rmapr)Zcertr ZdnsnamesZsankeyvaluesubrrrr ss>         r c@seZdZddZddZdS)rcCs||_t|dSN) ca_bundle HTTPSHandler__init__)selfr.rrrr0szVerifyingHTTPSHandler.__init__csfdd|S)Ncst|jfi|Sr-)VerifyingHTTPSConnr.)hostkwr1rrz2VerifyingHTTPSHandler.https_open..)Zdo_open)r1Zreqrr5r https_opens z VerifyingHTTPSHandler.https_openN)r r r r0r8rrrrrsrc@seZdZddZddZdS)r2cKstj||fi|||_dSr-)HTTPSConnectionr0r.)r1r3r.r4rrrr0szVerifyingHTTPSConn.__init__cCst|j|jft|dd}t|drHt|ddrH||_||j}n|j}tt drxt j |j d}|j ||d|_nt j |t j |j d|_zt|j|Wn,ty|jtj|jYn0dS)Nsource_address_tunnel _tunnel_hostcreate_default_context)Zcafile)Zserver_hostname)Z cert_reqsZca_certs)socketcreate_connectionr3portgetattrhasattrsockr;r<sslr=r.Z wrap_socketZ CERT_REQUIREDr Z getpeercertr shutdown SHUT_RDWRclose)r1rCZ actual_hostctxrrrconnects(    zVerifyingHTTPSConn.connectN)r r r r0rIrrrrr2sr2cCstjt|ptjSr-)urllibrequestZ build_openerrropen)r.rrrrs rcstfdd}|S)Ncs tds|i|_jS)Nalways_returns)rBrM)argskwargsfuncrrwrappers zonce..wrapper) functoolswraps)rQrRrrProncesrUcsXz ddl}Wnty YdS0Gfddd|j}|d|d|jS)Nrcs,eZdZfddZfddZZS)z"get_win_certfile..CertFilecst|t|jdSr-)superr0atexitregisterrGr5CertFile __class__rrr0sz+get_win_certfile..CertFile.__init__cs*zt|Wnty$Yn0dSr-)rVrGOSErrorr5rYrrrGs z(get_win_certfile..CertFile.close)r r r r0rG __classcell__rrZ)r[rrZsrZZCAZROOT) wincertstore ImportErrorrZZaddstorename)r_Z _wincertsrr^rget_win_certfiles     rbcCs$ttjjt}tp"t|dp"tSr-)filterospathisfilerrbnext_certifi_where)Zextant_cert_pathsrrrrs rc Cs,ztdWStttfy&Yn0dS)NZcertifi) __import__wherer`rrrrrrrhsrh)r)N)%rdr>rWrrSZurllib.requestrJZ http.clienthttpZ pkg_resourcesrrrDr`__all__striprrrKr/clientr9AttributeErrorobjectrr r Zbackports.ssl_match_hostnamer&r%rr2rrUrbrrhrrrrsV         6*(