3 Ävh,! ã " @ s¼ d dl Z d dlZd dlZd dlZd dlZd dlmZmZmZm Z d dl mZmZ yd dl Z W n ek rt dZ Y nX dddddgZd jƒ jƒ ZyejjZejZW n ek r¾ e ZZY nX e dk oÒeeefkZyd d l mZmZ W nR ek �r: yd dlmZ d dlmZ W n ek �r4 dZdZY nX Y nX e�sRG d d„ deƒZe�sjddd„Zdd„ ZG dd„ deƒZG dd„ deƒZd dd„Z dd„ Z!e!dd„ ƒZ"dd„ Z#dd„ Z$dS )!é N)ÚurllibÚhttp_clientÚmapÚfilter)ÚResolutionErrorÚExtractionErrorÚVerifyingHTTPSHandlerÚfind_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 )ÚCertificateErrorÚmatch_hostname)r )r c @ s e Zd ZdS )r N)Ú__name__Ú __module__Ú__qualname__© r r ú!/usr/lib/python3.6/ssl_support.pyr 5 s r é c C sö g }| sdS | j dƒ}|d }|dd… }|jdƒ}||krLtdt| ƒ ƒ‚|s`| jƒ |jƒ kS |dkrt|jdƒ n>|jd ƒsˆ|jd ƒrš|jtj|ƒƒ n|jtj|ƒj d dƒƒ x|D ]}|jtj|ƒƒ q¸W tj dd j|ƒ d tjƒ} | j |ƒS )zpMatching according to RFC 6125, section 6.4.3 http://tools.ietf.org/html/rfc6125#section-6.4.3 FÚ.r r NÚ*z,too many wildcards in certificate DNS name: z[^.]+zxn--z\*z[^.]*z\Az\.z\Z)ÚsplitÚcountr ÚreprÚlowerÚappendÚ startswithÚreÚescapeÚreplaceÚcompileÚjoinÚ IGNORECASEÚmatch) ZdnÚhostnameZ max_wildcardsZpatsÚpartsZleftmostZ remainderZ wildcardsZfragZpatr r r Ú_dnsname_match; s* r&