File: //lib/python3.9/site-packages/dns/__pycache__/_ddr.cpython-39.opt-1.pyc
a
�M�e � @ s� d dl Z d dlZd dlmZ d dlZd dlZd dlZd dlZd dl Zd dl
Zej�d�Z
G dd� d�Zdd� Zdd � Zd
d� ZdS )� N)�urlparsez_dns.resolver.arpac @ s6 e Zd Zdd� Zdd� Zdd� Zdd� Zdd
d�Zd S )
� _SVCBInfoc C s || _ || _|| _|| _d S �N)�bootstrap_address�port�hostname�nameservers)�selfr r r r � r
�,/usr/lib/python3.9/site-packages/dns/_ddr.py�__init__ s z_SVCBInfo.__init__c C s. |d D ] \}}|dkr|| j kr dS qdS )zIVerify that the _SVCBInfo's address is in the cert's subjectAltName (SAN)ZsubjectAltNamez
IP AddressTF)r )r �cert�name�valuer
r
r �ddr_check_certificate! s z_SVCBInfo.ddr_check_certificatec C s t jj}|�� }|jj|_|S r )�dns�query�sslZcreate_default_contextZ
TLSVersionZTLSv1_2Zminimum_version)r r �ctxr
r
r �make_tls_context( s
z_SVCBInfo.make_tls_contextc C s� | � � }t�� | }t�| j| jf|��z}|j|| jd��J}|�t j
�|�� |�� |�
� }| �|�W d � W d � S 1 s�0 Y W d � n1 s�0 Y d S )N)Zserver_hostname)r �time�socketZcreate_connectionr r Zwrap_socketr Z
settimeoutr r �
_remainingZdo_handshake�getpeercertr )r �lifetimer �
expiration�s�tsr
r
r
r �ddr_tls_check_sync. s �z_SVCBInfo.ddr_tls_check_syncNc
� s� |d u rt j�� }| �� }t�� | }|�t j�| j�t j
dd | j| jf||| j�I d H 4 I d H �8}|�
t j�|��I d H }| �|�W d �I d H S 1 I d H s�0 Y d S )Nr )r ZasyncbackendZget_default_backendr r Zmake_socket�inetZaf_for_addressr r ZSOCK_STREAMr r r r r r )r r Zbackendr r r r
r
r
r �ddr_tls_check_async: s"