ó Ÿ/{Yc@sNddlZddlZddlZddlZddlZddlmZmZddlmZyddl Z Wne k r‹dZ nXdddddgZ d j ƒjƒZeZZxmd d d gfd ddgffD]G\ZZx8eD]0ZydeefdUWqõe k r$qõXqõWqâWe dk oHeeefkZyddl mZmZWnUe k r¼y$ddlmZddlmZWq½e k r¸dZdZq½XnXesÜdefd„ƒYZnesúdd„Zd„Zndefd„ƒYZdefd„ƒYZdd„Zdad„Z d„Z!dS(iÿÿÿÿN(tResolutionErrortExtractionError(turllib2tVerifyingHTTPSHandlertfind_ca_bundlet is_availablet cert_pathst opener_forsÄ /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 t HTTPSHandlerRsurllib.requesttHTTPSConnectionthttplibs http.clientsfrom %s import %s(tCertificateErrortmatch_hostname(R (R R cBseZRS((t__name__t __module__(((sG/opt/alt/python33/lib/python3.3/site-packages/setuptools/ssl_support.pyR 8sic 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ÿWtj d d j |ƒd tj ƒ} | j|ƒS( spMatching 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(tFalsetsplittcountR treprtlowertappendt startswithtretescapetreplacetcompiletjoint IGNORECASEtmatch( tdnthostnamet max_wildcardstpatstpartstleftmostt remaindert wildcardstfragtpat((sG/opt/alt/python33/lib/python3.3/site-packages/setuptools/ssl_support.pyt_dnsname_match<s*    " &cCs[|stdƒ‚ng}|jdd ƒ}xC|D];\}}|dkr4t||ƒr_dS|j|ƒq4q4W|sßxc|jddƒD]L}xC|D];\}}|dkr™t||ƒrÄdS|j|ƒq™q™WqŒWnt|ƒdkrtd|d jtt|ƒƒfƒ‚n;t|ƒdkrKtd ||d fƒ‚n td ƒ‚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. sempty or no certificatetsubjectAltNametDNSNtsubjectt commonNameis&hostname %r doesn't match either of %ss, shostname %r doesn't match %ris=no appropriate commonName or subjectAltName fields were found((( t ValueErrortgetR)RtlenR RtmapR(tcertR tdnsnamestsantkeytvaluetsub((sG/opt/alt/python33/lib/python3.3/site-packages/setuptools/ssl_support.pyR ps.  %cBs eZdZd„Zd„ZRS(s=Simple verifying handler: no auth, subclasses, timeouts, etc.cCs||_tj|ƒdS(N(t ca_bundleRt__init__(tselfR8((sG/opt/alt/python33/lib/python3.3/site-packages/setuptools/ssl_support.pyR9œs csˆj‡fd†|ƒS(Ncst|ˆj|S(N(tVerifyingHTTPSConnR8(thosttkw(R:(sG/opt/alt/python33/lib/python3.3/site-packages/setuptools/ssl_support.pyt¢s(tdo_open(R:treq((R:sG/opt/alt/python33/lib/python3.3/site-packages/setuptools/ssl_support.pyt https_open s(R Rt__doc__R9RA(((sG/opt/alt/python33/lib/python3.3/site-packages/setuptools/ssl_support.pyR™s R;cBs eZdZd„Zd„ZRS(s@Simple verifying connection: no auth, subclasses, timeouts, etc.cKs tj|||||_dS(N(R R9R8(R:R<R8R=((sG/opt/alt/python33/lib/python3.3/site-packages/setuptools/ssl_support.pyR9¨scCsÝtj|j|jft|ddƒƒ}t|dƒrat|ddƒra||_|jƒnt j |dt j d|j ƒ|_yt |jjƒ|jƒWn4tk rØ|jjtjƒ|jjƒ‚nXdS(Ntsource_addresst_tunnelt _tunnel_hostt cert_reqstca_certs(tsockettcreate_connectionR<tporttgetattrtNonethasattrtsockRDtsslt wrap_sockett CERT_REQUIREDR8R t getpeercertR tshutdownt SHUT_RDWRtclose(R:RN((sG/opt/alt/python33/lib/python3.3/site-packages/setuptools/ssl_support.pytconnect¬s$!    (R RRBR9RV(((sG/opt/alt/python33/lib/python3.3/site-packages/setuptools/ssl_support.pyR;¦s cCstjt|ptƒƒƒjS(s@Get a urlopen() replacement that uses ca_bundle for verification(Rt build_openerRRtopen(R8((sG/opt/alt/python33/lib/python3.3/site-packages/setuptools/ssl_support.pyRÀscsttdk rtjSyddlm‰Wntk r;dSXdˆf‡fd†ƒY}|dddgƒatjS(Niÿÿÿÿ(tCertFilet MyCertFilecseZdd‡fd†ZRS(csLˆj|ƒx|D]}|j|ƒqW|j|ƒtj|jƒdS(N(R9taddstoretaddcertstatexittregisterRU(R:tstorestcertststore(RY(sG/opt/alt/python33/lib/python3.3/site-packages/setuptools/ssl_support.pyR9Ôs    (((R RR9((RY(sG/opt/alt/python33/lib/python3.3/site-packages/setuptools/ssl_support.pyRZÓsR_tCAtROOT(t _wincertsRLtnamet wincertstoreRYt ImportError(RZ((RYsG/opt/alt/python33/lib/python3.3/site-packages/setuptools/ssl_support.pytget_win_certfileÉs  cCsstjdkrtƒSx$tD]}tjj|ƒr|SqWytjddƒSWntt t fk rndSXdS(s*Return an existing CA bundle path, or Nonetnttcertifis cacert.pemN( tosReRhRtpathtisfilet pkg_resourcestresource_filenameRgRRRL(t cert_path((sG/opt/alt/python33/lib/python3.3/site-packages/setuptools/ssl_support.pyRßs ("RkRHR]RRnRRtsetuptools.compatRRORgRLt__all__tstripRRtobjectRR twhattwheretmoduleRR R tbackports.ssl_match_hostnameR.R)RR;RRdRhR(((sG/opt/alt/python33/lib/python3.3/site-packages/setuptools/ssl_support.pytsV                4 )