
    g                         S SK r S SKrS SKJr  S SKrS SKrS SKrS SKrS SK	rS SK
r\R                  R                  S5      r " S S5      rS rS rS rg)	    N)urlparsez_dns.resolver.arpac                   6    \ rS rSrS rS rS rS rS	S jrSr	g)
	_SVCBInfo   c                 4    Xl         X l        X0l        X@l        g N)bootstrap_addressporthostnamenameservers)selfr	   r
   r   r   s        A/home/matz/Project1/venv/lib/python3.13/site-packages/dns/_ddr.py__init___SVCBInfo.__init__   s    !2	 &    c                 R    US    H  u  p#US:X  d  M  X0R                   :X  d  M    g   g)zIVerify that the _SVCBInfo's address is in the cert's subjectAltName (SAN)subjectAltNamez
IP AddressTF)r	   )r   certnamevalues       r   ddr_check_certificate_SVCBInfo.ddr_check_certificate!   s/     01KD|#1G1G(G 2 r   c                     [         R                  R                  nUR                  5       nUR                  R
                  Ul        U$ r   )dnsquerysslcreate_default_context
TLSVersionTLSv1_2minimum_version)r   r   ctxs      r   make_tls_context_SVCBInfo.make_tls_context(   s4    iimm((*!nn44
r   c                    U R                  5       n[        R                  " 5       U-   n[        R                  " U R                  U R
                  4U5       nUR                  X@R                  S9 nUR                  [        R                  R                  U5      5        UR                  5         UR                  5       nU R                  U5      sS S S 5        sS S S 5        $ ! , (       d  f       O= f S S S 5        g ! , (       d  f       g = f)N)server_hostname)r"   timesocketcreate_connectionr	   r
   wrap_socketr   
settimeoutr   r   
_remainingdo_handshakegetpeercertr   )r   lifetimer!   
expirationstsr   s          r   ddr_tls_check_sync_SVCBInfo.ddr_tls_check_sync.   s    ##%YY[8+
%%##TYY/
MMBbcii22:>?!~~'11$7	 CB
 
 CBB
 
 
s%   C=0AC"	C="
C0	,C==
DNc           
        #    Uc  [         R                  R                  5       nU R                  5       n[        R                  " 5       U-   nUR                  [         R                  R                  U R                  5      [        R                  SS U R                  U R                  4UUU R                  5      I S h  vN  IS h  vN nUR                  [         R                  R                  U5      5      I S h  vN nU R!                  U5      sS S S 5      IS h  vN   $  Ne N^ N* N! , IS h  vN  (       d  f       g = f7f)Nr   )r   asyncbackendget_default_backendr"   r&   make_socketinetaf_for_addressr	   r'   SOCK_STREAMr
   r   r-   r   r+   r   )r   r.   backendr!   r/   r1   r   s          r   ddr_tls_check_async_SVCBInfo.ddr_tls_check_async:   s     ?&&::<G##%YY[8+
 ,,HH##D$:$:;##TYY/MM	
 	
 	
 	
 		(<(<Z(HIID--d3	
 	
 	
 J	
 	
 	
 	
sl   B:E<D"=ED$E	2D*;D&<D*ED(E$E&D*(E*E0D31E=E)r	   r   r   r
   r   )
__name__
__module____qualname____firstlineno__r   r   r"   r2   r<   __static_attributes__ r   r   r   r      s    '
84r   r   c           	         U R                   n[        R                  R                  U5      (       d  / $ / nU R                  R                  5        GHn  n/ nUR                  R                  [        R                  R                  R                  R                  5      nUc  MR  [        UR                  5      nUR                  R                  SS9nS nUR                  R                  [        R                  R                  R                  R                   5      nUb  UR"                  nSU;   a  UR                  R                  [        R                  R                  R                  R$                  5      nUb   UR&                  R)                  S5      (       d  GMK  UR&                  S S R+                  5       n	U	R-                  S5      (       d  SU	-   n	Uc  SnSU S	U U	 3n
 [/        U
5        UR1                  [        R                   R3                  X5      5        S
U;   a4  Uc  SnUR1                  [        R                   R7                  XU5      5        SU;   a5  Uc  SnUR1                  [        R                   R9                  XSU5      5        [;        U5      S:  d  GMS  UR1                  [=        XXt5      5        GMq     U$ ! [4         a     Nf = f)NT)omit_final_dots   h2s   {?dns}i/i  zhttps://:s   dotiU  s   doqr   )
nameserverr   r8   
is_addressrrsetprocessing_orderparamsgetrdtypessvcbbaseParamKeyALPNsetidstargetto_textPORTr
   DOHPATHr   endswithdecode
startswithr   appendDoHNameserver	ExceptionDoTNameserverDoQNameserverlenr   )answerr	   infosrrr   paramalpnshostr
   pathurls              r   _extract_nameservers_from_svcbri   M   sO   ))88011	Ell++-		ckk22;;@@A=EIIyy   5		ckk22;;@@A::D E>IIMM#++"6"6"?"?"G"GHE}EKK$8$8$C$C;;s#**,D??3''Tz|TF!D6$0C""3>>#?#?#WX U?|,,->dK U?|,,->dDQ {aLL#4DNOW .X L#  s   "9K
KKc                     / n[        U 5      nU H7  n UR                  U5      (       a  UR                  UR                  5        M7  M9     U$ ! [         a     MJ  f = f)RReturn a list of TLS-validated resolver nameservers extracted from an SVCB
answer.)ri   r2   extendr   r]   ra   r.   r   rb   infos        r   _get_nameservers_syncro      sh     K*62E	&&x00""4#3#34 1    		s   1A
AAc                    #    / n[        U 5      nU H?  n UR                  U5      I Sh  vN (       a  UR                  UR                  5        M?  MA     U$  N,! [         a     MT  f = f7f)rk   N)ri   r<   rl   r   r]   rm   s        r   _get_nameservers_asyncrq      sp      K*62E	--h777""4#3#34 8  	 8 		s8   A*AA$AA*A
A'#A*&A''A*)r'   r&   urllib.parser   dns.asyncbackendr   dns.inetdns.namedns.nameserver	dns.querydns.rdtypes.svcbbaser   	from_text_local_resolver_namer   ri   ro   rq   rC   r   r   <module>r{      sU   
   !       xx))*>? 04 04f1hr   