File: //lib/python3/dist-packages/urllib3/util/__pycache__/ssl_.cpython-38.pyc
U
"g;7 � @ s$ d dl mZ d dlZd dlZd dlZd dlZd dlmZmZ d dl m
Z
mZmZ ddl
mZmZ ddlmZmZmZ d dlZdZd Zd Zd Ze
eed
�Zdd� Zeed
e�Zz(d dlZd dlmZmZ d dlmZ W n e k
r� Y nX zd dlm!Z! e!Z"W nJ e k
�rH zd dlm"Z! e!Z"W n e k
�rB d Z"Z!Y nX Y nX zd dlm#Z#m$Z$m%Z% W n" e k
�r� d\Z#Z$dZ%Y nX d�&ddddddddddd d!d"d#g�Z'zd d$lmZ W n& e k
�r� G d%d&� d&e(�ZY nX d'd(� Z)d)d*� Z*d+d,� Z+d5d-d.�Z,d6d/d0�Z-d1d2� Z.d3d4� Z/dS )7� )�absolute_importN)�hexlify� unhexlify)�md5�sha1�sha256� )�IPV4_RE�BRACELESS_IPV6_ADDRZ_RE� )�SSLError�InsecurePlatformWarning�SNIMissingWarningF)� �( �@ c C sD t t| �t|� �}tt| �t|��D ]\}}|||A O }q&|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 )�abs�len�zip� bytearray)�a�b�result�l�r� r �3/usr/lib/python3/dist-packages/urllib3/util/ssl_.py�_const_compare_digest_backport s r Zcompare_digest)�wrap_socket�
CERT_REQUIRED)�HAS_SNI)�PROTOCOL_TLS)�PROTOCOL_SSLv23)�OP_NO_SSLv2�OP_NO_SSLv3�OP_NO_COMPRESSION)i i i �:zECDHE+AESGCMzECDHE+CHACHA20z
DHE+AESGCMzDHE+CHACHA20zECDH+AESGCMz DH+AESGCMzECDH+AESzDH+AESz
RSA+AESGCMzRSA+AESz!aNULLz!eNULLz!MD5z!DSS)�
SSLContextc @ s8 e Zd Zdd� Zdd� Zd
dd�Zdd � Zddd�ZdS )r'