Re " @ sB d d l Z d d l Z d d l Z d d l Z d d l Z d d l m Z m Z m Z m Z d d l m Z m Z y d d l Z Wn e k r d Z Yn Xd d d d d g Z d j j Z y e j j Z e j Z Wn e k r e Z Z Yn Xe d k oe e e f k Z y d d l m Z m Z WnW e k ry$ d d l m Z d d l m Z Wn e k rd Z d Z Yn XYn Xe sGd d d e Z e sd d d Z d d Z Gd d d e Z Gd d d e Z d d d Z d d Z! e! d d Z" d d Z# d d Z$ d S) 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 Z d Z d S)r N)__name__ __module____qualname__ r r /builddir/build/BUILDROOT/alt-python35-setuptools-36.3.0-4.el8.x86_64/opt/alt/python35/lib/python3.5/site-packages/setuptools/ssl_support.pyr 5 s r c C sU g } | s d S| j d } | d } | d d } | j d } | | k rj t d t | | s | j | j k S| d k r | j d nY | j d s | j d r | j t j | n" | j t j | j d d x$ | D] } | j t j | qWt j d d j | d t j } | 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) dnhostname max_wildcardspatspartsleftmost remainder wildcardsfragpatr r r _dnsname_match; s* " &r. c C sO | s t d g } | j d f } x@ | D]8 \ } } | d k r1 t | | r\ d S| j | q1 W| s x] | j d f D]I } x@ | D]8 \ } } | d k r t | | r d S| j | q Wq Wt | d k rt d | d j t t | f n; t | d k r?t d | | d f n t d d S) 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 certificatesubjectAltNameDNSNsubject commonNamer z&hostname %r doesn't match either of %sz, zhostname %r doesn't match %rr z=no appropriate commonName or subjectAltName fields were found) ValueErrorgetr. r lenr r! r r )certr% dnsnamessankeyvaluesubr r r r o s. %r c @ s. e Z d Z d Z d d Z d d Z d S)r z=Simple verifying handler: no auth, subclasses, timeouts, etc.c C s | | _ t j | d S)N) ca_bundleHTTPSHandler__init__)selfr<