
    g                    V   d dl mZ d dlmZ d dlmZmZmZ d dlZd dl	Z	d dl
Z
d dlZ
d dlmZmZmZ ddlmZmZmZ dd	lmZmZ er d d
lmZmZ d dlmZ d dlmZ ddlmZ ddl m!Z! ddZ" ejF                  d       G d de
jH                  jJ                               Z&	 	 	 	 ddZ'ddZ(y)    )annotations)partial)TYPE_CHECKINGNoReturncastN)AF_INETIPPROTO_TCPSOCK_STREAM   )open_ssl_over_tcp_listenersopen_ssl_over_tcp_streamserve_ssl_over_tcp   )
SERVER_CTX
client_ctx)AddressFamily
SocketKind)
SSLContext)Stream)SocketListener)SSLListenerc                   K   | 4 d {    	 	 | j                  d       d {   }|sn| j                  |       d {    6	 d d d       d {    y 7 N7 57 # t        j                  $ r Y ,w xY w7 $# 1 d {  7  sw Y   y xY ww)Ni'  )receive_somesend_alltrioBrokenResourceError)streamdatas     Y/var/www/html/venv/lib/python3.12/site-packages/trio/_tests/test_highlevel_ssl_helpers.pyecho_handlerr        s       	#0077ood+++	     8 ,'' 		   s   BABA9AAA AAA9BA7BAAA41A93A44A97B9B?B BBF)slotsc                  X    e Zd ZU ded<   	 	 	 	 d	 	 	 	 	 	 	 	 	 	 	 	 	 ddZ	 	 	 	 	 	 ddZy)	FakeHostnameResolver+tuple[str, int] | tuple[str, int, int, int]sockaddrc                F   K   t         t        t        d| j                  fgS w)N )r   r
   r	   r%   )selfhostportfamilytypeprotoflagss          r   getaddrinfoz FakeHostnameResolver.getaddrinfo2   s      " +{BFGGs   !c                   K   t         w)N)NotImplementedError)r(   r%   r.   s      r   getnameinfoz FakeHostnameResolver.getnameinfoE   s     
 "!s   	N)r   r   r   r   )r)   zbytes | Noner*   zbytes | str | int | Noner+   intr,   r3   r-   r3   r.   r3   returnz]list[tuple[AddressFamily, SocketKind, int, str, tuple[str, int] | tuple[str, int, int, int]]])r%   r$   r.   r3   r4   r   )__name__
__module____qualname____annotations__r/   r2        r   r#   r#   .   s    99 HH 'H 	H
 H H H
H&"=" " 
	"r:   r#   c           
     \  K   t        j                         4 d {   }|j                  t        t        t
        dt        d             d {   }t        |t              sJ t        d|      }|\  }|4 d {    |j                  }|j                  j                         }t        |      }t         j                  j                  |       t        dd       d {   }|4 d {    t!        j"                  t         j$                        5  |j'                          d {    d d d        d d d       d {    t        dd|        d {   }|4 d {    t!        j"                  t         j$                        5  |j'                          d {    d d d        d d d       d {    t        dd|        d {   }|4 d {    t        |t         j(                        sJ |j*                  dk(  sJ |j-                  d	       d {    |j/                  d
       d {   d	k(  sJ d d d       d {    |j0                  rJ t        dd| dd
       d {   }|4 d {    |j0                  sJ d d d       d {    |j2                  j5                          d d d       d {    d d d       d {    y 7 7 7 b7 7 7 # 1 sw Y   xY w7 # 1 d {  7  sw Y   xY w7 7 7 z# 1 sw Y   zxY w7 r# 1 d {  7  sw Y   xY w7 u7 m7 *7 7 # 1 d {  7  sw Y   xY w7 7 7 # 1 d {  7  sw Y   xY w7 # 1 d {  7  sw Y   xY w7 # 1 d {  7  sw Y   y xY ww)Nr   	127.0.0.1r)   z!list[SSLListener[SocketListener]]ztrio-test-1.example.orgP   zxyzzy.example.org)ssl_context   xr   T)r?   https_compatiblehappy_eyeballs_delay)r   open_nurserystartr   r   r    r   
isinstancelistr   transport_listenersocketgetsocknamer#   set_custom_hostname_resolverr   pytestraisesr   do_handshake	SSLStreamserver_hostnamer   r   _https_compatiblecancel_scopecancel)	r   nurseryvaluereslistenertp_listenerr%   hostname_resolverr   s	            r   1test_open_ssl_over_tcp_stream_and_everything_elserY   O   sv       " D* D*g mm" 
 
 %&&&6> 4	* 4	**2*E*EK"))557H 4X >KK445FG 44MrRRF 0 0]]4#;#;< 0 --///00 0 4#& F
  0 0]]4#;#;< 0 --///00 0
 4)& F
  < <!&$..999--1JJJJood+++#0033t;;;	< < ////3)&!%%& F  0 0////0 0   '')i4	* 4	*!D* D* D*
4	* S0/0 00 0 0 0
0/0 00 0 0 0

< ,3	< < < <0 0 0 0 0a4	* 4	* 4	* 4	*!D* D* D* D*sn  N,KN,/NK,N;K<N?A N K  
N *K#
+N .$K9K)	&K&'K)	+K93N >K6?N L
N L
 N #$L(L	LL	 L((N 3L%4N 	L>

N M
N AMM
M3M
4	M=N M
	%N .M#/
N 9M%
:N =M)N M'N 6NM>NN,NN,NN N #N &K)	)K3.K96N 9L?L L	N N L	L"L(%N (L;.L1/L;6	N N MM
N M MM 	N %N 'N )M;/M20M;7N >N N	N	N	NN,N)N N)%N,c                 Z  K   t        dt        d       d {   \  } | 4 d {    t        | t        j                        sJ | j
                  }t        |t        j                        sJ |j                  j                         d   dk(  sJ | j                  rJ d d d       d {    t        dt        dd       d {   \  } | 4 d {    | j                  sJ d d d       d {    y 7 7 7 O# 1 d {  7  sw Y   _xY w7 K7 @7 $# 1 d {  7  sw Y   y xY ww)Nr   r<   r=   T)r)   rA   )
r   r   rE   r   r   rG   r   rH   rI   rP   )rV   tls     r    test_open_ssl_over_tcp_listenersr\      s&    3AzTTKX . .(D$4$4555(("d11222yy$$&q)[888----. . 4		 KX  * *))))* * * U. . . . .* * * * *s   D+C5D+C7D+A5C;D+)C9*D+DD+DD+D$D+/D0D+7D+9D+;DDD	D+D+D+D(DD($D+)r   r   r4   None)r   r   r4   r]   )r4   r]   ))
__future__r   	functoolsr   typingr   r   r   attrsrK   r   trio.testingtrio.socketr   r	   r
   _highlevel_ssl_helpersr   r   r   test_sslr   r   rH   r   r   sslr   trio.abcr   _highlevel_socketr   _sslr   r    defineabcHostnameResolverr#   rY   r\   r9   r:   r   <module>rm      s    "  0 0     9 9  -02"	 E"48844 " "@G*G*	G*T*r:   