????

Your IP : 18.216.78.190


Current Path : /lib/python2.7/site-packages/pip/_vendor/urllib3/packages/ssl_match_hostname/
Upload File :
Current File : //lib/python2.7/site-packages/pip/_vendor/urllib3/packages/ssl_match_hostname/_implementation.pyc

�
��abc@s�dZddlZddlZyddlZWnek
rGdZnXdZdefd��YZdd�Z	d�Z
d	�Zd
�ZdS(sJThe match_hostname() function from Python 3.3.3, essential when using SSL.i����Ns3.5.0.1tCertificateErrorcBseZRS((t__name__t
__module__(((sc/usr/lib/python2.7/site-packages/pip/_vendor/urllib3/packages/ssl_match_hostname/_implementation.pyRsic
CsRg}|stS|jd�}|d}|d}|jd�}||krgtdt|���n|s�|j�|j�kS|dkr�|jd�nY|jd�s�|jd�r�|jtj	|��n"|jtj	|�j
dd	��x$|D]}|jtj	|��q�Wtjd
dj|�dtj
�}	|	j|�S(
shMatching according to RFC 6125, section 6.4.3

    http://tools.ietf.org/html/rfc6125#section-6.4.3
    t.iit*s,too many wildcards in certificate DNS name: s[^.]+sxn--s\*s[^.]*s\As\.s\Z(tFalsetsplittcountRtreprtlowertappendt
startswithtretescapetreplacetcompiletjoint
IGNORECASEtmatch(
tdnthostnamet
max_wildcardstpatstpartstleftmostt	remaindert	wildcardstfragtpat((sc/usr/lib/python2.7/site-packages/pip/_vendor/urllib3/packages/ssl_match_hostname/_implementation.pyt_dnsname_matchs*

"
&cCs=t|t�r9tjdkr9t|dddd�}n|S(Nitencodingtasciiterrorststrict(i(t
isinstancetstrtsystversion_infotunicode(tobj((sc/usr/lib/python2.7/site-packages/pip/_vendor/urllib3/packages/ssl_match_hostname/_implementation.pyt_to_unicodeOscCs%tjt|�j��}||kS(s�Exact matching of IP addresses.

    RFC 6125 explicitly doesn't define an algorithm for this
    (section 1.7.2 - "Out of Scope").
    (t	ipaddresst
ip_addressR(trstrip(tipnamethost_iptip((sc/usr/lib/python2.7/site-packages/pip/_vendor/urllib3/packages/ssl_match_hostname/_implementation.pyt_ipaddress_matchTscCs|std��nytjt|��}WnUtk
rGd}n?tk
r]d}n)tk
r�tdkrd}q��nXg}|jdd�}x�|D]�\}}|dkr�|dkr�t||�r�dS|j	|�q�|dkr�|dk	rt
||�rdS|j	|�q�q�W|s�xc|jdd�D]L}xC|D];\}}|dkrQt||�r|dS|j	|�qQqQWqDWnt|�dkr�td	|d
j
tt|��f��n;t|�dkrtd||df��ntd
��dS(s)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.
    stempty or no certificate, match_hostname needs a SSL socket or SSL context with either CERT_OPTIONAL or CERT_REQUIREDtsubjectAltNametDNSNs
IP Addresstsubjectt
commonNameis&hostname %r doesn't match either of %ss, shostname %r doesn't match %ris=no appropriate commonName or subjectAltName fields were found(((t
ValueErrorR)R*R(tNonetUnicodeErrortAttributeErrortgetRR
R/tlenRRtmapR(tcertRR-tdnsnamestsantkeytvaluetsub((sc/usr/lib/python2.7/site-packages/pip/_vendor/urllib3/packages/ssl_match_hostname/_implementation.pytmatch_hostname`sJ
	
	
	%(
t__doc__RR$R)tImportErrorR5t__version__R4RRR(R/RA(((sc/usr/lib/python2.7/site-packages/pip/_vendor/urllib3/packages/ssl_match_hostname/_implementation.pyt<module>s

5