3 nNj35 ) @ s d dl mZ d dlZd dlZd dlZd dlZd dlmZmZ d dl m Z mZmZ ddl mZmZmZ ddlmZ dZdZdZdZe eed Zd d ZeedeZy,d dlZd d lmZmZmZ d dlmZ W n ek r Y nX yd dlm Z m!Z!m"Z" W n" ek r d6\Z Z!dZ"Y nX e#edr2ej$Z$n4yd dl%Z%dd Z$W n ek rd dd Z$Y nX dj&dddddddddd d!d"d#d$d%d&gZ'yd d'lmZ W n. ek r d dl(Z(G d(d) d)e)ZY nX d*d+ Z*d,d- Z+d.d/ Z,d7d0d1Z-d8d2d3Z.d4d5 Z/dS )9 )absolute_importN)hexlify unhexlify)md5sha1sha256 )SSLErrorInsecurePlatformWarningSNIMissingWarning)sixF) ( @ c C sH t t| t| }x*tt| t|D ]\}}|||A O }q(W |dkS )z Compare two digests of equal length in constant time. The digests must be of type str/bytes. Returns True if the digests match, and False otherwise. r )abslenzip bytearray)abresultlr r /usr/lib/python3.6/ssl_.py_const_compare_digest_backport s r Zcompare_digest)wrap_socket CERT_NONEPROTOCOL_SSLv23)HAS_SNI)OP_NO_SSLv2OP_NO_SSLv3OP_NO_COMPRESSION i inet_ptonc C s t |tr|jd}tj|S )Nascii) isinstancebytesdecode ipaddressZ ip_address)_hostr r r r% D s c C s t j|S )N)socketZ inet_aton)r+ r, r r r r% J s :zTLS13-AES-256-GCM-SHA384zTLS13-CHACHA20-POLY1305-SHA256zTLS13-AES-128-GCM-SHA256zECDH+AESGCMz ECDH+CHACHA20z DH+AESGCMzDH+CHACHA20zECDH+AES256z DH+AES256zECDH+AES128zDH+AESz RSA+AESGCMzRSA+AESz!aNULLz!eNULLz!MD5) SSLContextc @ s8 e Zd Zdd Zdd Zd ddZdd ZdddZdS )r/ c C s6 || _ d| _tj| _d | _d| _d | _d | _d | _ d S )NFr ) protocolcheck_hostnamesslr verify_modeca_certsoptionscertfilekeyfileciphers)selfZprotocol_versionr r r __init__v s zSSLContext.__init__c C s || _ || _d S )N)r6 r7 )r9 r6 r7 r r r load_cert_chain s zSSLContext.load_cert_chainNc C s || _ |d k rtdd S )Nz-CA directories not supported in older Pythons)r4 r )r9 ZcafileZcapathr r r load_verify_locations s z SSLContext.load_verify_locationsc C s || _ d S )N)r8 )r9 Zcipher_suiter r r set_ciphers s zSSLContext.set_ciphersFc C s> t jdt | j| j| j| j| j|d}t|fd| j i|S )Na2 A true SSLContext object is not available. This prevents urllib3 from configuring SSL appropriately and may cause certain SSL connections to fail. You can upgrade to a newer version of Python to solve this. For more information, see https://urllib3.readthedocs.io/en/latest/advanced-usage.html#ssl-warnings)r7 r6 r4 cert_reqsssl_versionserver_sider8 ) warningswarnr r7 r6 r4 r3 r0 r r8 )r9 r- server_hostnamer@ kwargsr r r r s zSSLContext.wrap_socket)NN)NF)__name__ __module____qualname__r: r; r<