Viewing File: /opt/alt/python35/lib/python3.5/site-packages/setuptools/__pycache__/ssl_support.cpython-35.pyc



\ "@sBddlZddlZddlZddlZddlZddlmZmZmZm	Z	ddl
mZmZyddl
Z
Wnek
rdZ
YnXdddddgZd	jjZyejjZejZWnek
reZZYnXe
dk	oeeefkZydd
l
mZmZWnWek
ry$ddlmZddlmZWnek
rdZdZYnXYnXesGd
ddeZesdddZddZGdddeZGdddeZdddZ ddZ!e!ddZ"ddZ#ddZ$dS)N)urllibhttp_clientmapfilter)ResolutionErrorExtractionErrorVerifyingHTTPSHandlerfind_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
)rc@seZdZdS)r
N)__name__
__module____qualname__rr/ssl_support.pyr
5sr
c
CsUg}|sdS|jd}|d}|dd}|jd}||krjtdt||s|j|jkS|dkr|jdnY|jd	s|jd	r|jtj|n"|jtj|j	d
dx$|D]}|jtj|qWtj
dd
j|dtj}	|	j
|S)zpMatching according to RFC 6125, section 6.4.3

        http://tools.ietf.org/html/rfc6125#section-6.4.3
        F.rrN*z,too many wildcards in certificate DNS name: z[^.]+zxn--z\*z[^.]*z\Az\.z\Z)splitcountr
reprlowerappend
startswithreescapereplacecompilejoin
IGNORECASEmatch)
ZdnhostnameZ
max_wildcardsZpatspartsZleftmostZ	remainderZ	wildcardsZfragpatrrr_dnsname_match;s*
"
&r'cCsO|stdg}|jdf}x@|D]8\}}|dkr1t||r\dS|j|q1W|sx]|jdfD]I}x@|D]8\}}|dkrt||rdS|j|qWqWt|dkrtd|d	jtt|fn;t|dkr?td
||dfntddS)
a=Verify that *cert* (in decoded format as returned by
        SSLSocket.getpeercert()) matches the *hostname*.  RFC 2818 and RFC 6125
        rules are followed, but IP addresses are not accepted for *hostname*.

        CertificateError is raised on failure. On success, the function
        returns nothing.
        zempty or no certificateZsubjectAltNameZDNSNZsubjectZ
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
r!rr)Zcertr$ZdnsnamesZsankeyvaluesubrrrros.%rc@s.eZdZdZddZddZdS)rz=Simple verifying handler: no auth, subclasses, timeouts, etc.cCs||_tj|dS)N)	ca_bundleHTTPSHandler__init__)selfr.rrrr0s	zVerifyingHTTPSHandler.__init__csjfdd|S)Ncst|j|S)N)VerifyingHTTPSConnr.)hostkw)r1rr<lambda>sz2VerifyingHTTPSHandler.https_open.<locals>.<lambda>)Zdo_open)r1Zreqr)r1r
https_opensz VerifyingHTTPSHandler.https_openN)rrr__doc__r0r6rrrrrsc@s.eZdZdZddZddZdS)r2z@Simple verifying connection: no auth, subclasses, timeouts, etc.cKs tj|||||_dS)N)HTTPSConnectionr0r.)r1r3r.r4rrrr0szVerifyingHTTPSConn.__init__cCstj|j|jft|dd}t|drjt|ddrj||_|j|j}n	|j}t	j
|dt	jd|j|_yt
|jj|Wn5tk
r|jjtj|jjYnXdS)Nsource_address_tunnel_tunnel_hostZ	cert_reqsZca_certs)socketcreate_connectionr3portgetattrhasattrsockr:r;sslZwrap_socketZ
CERT_REQUIREDr.rZgetpeercertr
shutdown	SHUT_RDWRclose)r1rAZactual_hostrrrconnects$!	
	

zVerifyingHTTPSConn.connectN)rrrr7r0rFrrrrr2sr2cCs"tjjt|ptjS)z@Get a urlopen() replacement that uses ca_bundle for verification)rrequestZbuild_openerrr	open)r.rrrrs	cs%tjfdd}|S)Ncs(tds!||_jS)Nalways_returns)r@rI)argskwargs)funcrrwrapperszonce.<locals>.wrapper)	functoolswraps)rLrMr)rLronces!rPcsryddl}Wntk
r(dSYnXGfddd|j}|jd|jd|jS)Nrcs:eZdZfddZfddZS)z"get_win_certfile.<locals>.CertFilecs't|jtj|jdS)N)superr0atexitregisterrE)r1)CertFile	__class__rrr0sz+get_win_certfile.<locals>.CertFile.__init__cs0yt|jWntk
r+YnXdS)N)rQrEOSError)r1)rTrUrrrEs
z(get_win_certfile.<locals>.CertFile.close)rrrr0rEr)rT)rUrrTsrTZCAZROOT)wincertstoreImportErrorrTZaddstorename)rWZ	_wincertsr)rTrget_win_certfiles
		

rZcCs4ttjjt}tp3t|dp3tS)z*Return an existing CA bundle path, or NoneN)rospathisfilerrZnext_certifi_where)Zextant_cert_pathsrrrr	s	c
Cs6ytdjSWntttfk
r1YnXdS)NZcertifi)
__import__ZwhererXrrrrrrr_sr_)%r[r<rRrrNZsetuptools.extern.six.movesrrrrZ
pkg_resourcesrrrBrX__all__striprrrGr/r8AttributeErrorobjectr
r
rZbackports.ssl_match_hostnamer(r'rr2rrPrZr	r_rrrr<module>sP"
	



4)
#	
Back to Directory File Manager