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 oeeefkZyd d l mZmZ W nR ek r: yd dlmZ d dlmZ W n ek r4 dZdZY nX Y nX esRG d d deZesjdddZdd ZG dd deZG dd deZd ddZ dd Z!e!dd Z"dd Z#dd Z$dS )! N)urllibhttp_clientmapfilter)ResolutionErrorExtractionErrorVerifyingHTTPSHandlerfind_ca_bundleis_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 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| qW 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)splitcountr reprlowerappend startswithreescapereplacecompilejoin IGNORECASEmatch) ZdnhostnameZ max_wildcardsZpatspartsZleftmostZ remainderZ wildcardsZfragZpatr r r _dnsname_match; s* r&