
    #)f                    :   U d dl mZ d dl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 d dlmZ d dlmZmZmZmZmZmZmZ d dlZd dlmZ d dlmZ d d	lmZmZ d d
lm Z m!Z!m"Z"m#Z# 	 d dl$Z$d dl%m&Z& d dlZddl)m*Z*mZ+ ddl,m-Z- ddl*m.Z.m/Z/ ddl0m1Z1 ddl2m3Z3 ddl4m5Z5 ddl6m7Z7m8Z8 ddl9m:Z:m;Z;m<Z<m=Z= ddl>m?Z? ddl@mAZAmBZBmCZCmDZDmEZE erd dlFmGZG d dlHmIZI d dlJmKZK ddlLmMZM  e$j                         ZOeOj                  d      ZQ ej                  ej                  j                        ZU eVed      r eUxj                  ej                   z  c_W        eQj                  eU        ej                  dddg       dYd!       Z[d"d#	 	 	 	 	 dZd$Z\e	d[d%       Z]e		 	 	 	 	 	 d\d&       Z^ G d' d(e-      Z_d]d)Z`e
	 	 	 	 	 	 d^d*       Zaddd+	 	 	 	 	 	 	 	 	 	 	 d_d,Zbee"e!f   Zcd-edd.<   d`d/Zeeeef   Zfd-edd0<   dad1Zgdbd2Zhdbd3Zidbd4Zjdbd5Zkdbd6Zle1	 	 	 	 	 	 dcd7       Zmdbd8Znd]d9Zoej                  j                  ej                  d:k(  xr ej                  d;k\  d<=      dbd>       Ztdbd?Zuej                  j                  d@d"dAg      	 	 	 	 	 	 dddB       ZwdbdCZxdbdDZydbdEZzdbdFZ{dbdGZ|dbdHZ}d]dIZ~dbdJZdbdKZdbdLZdbdMZdbdNZdbdOZdbdPZdbdQZej                  j                  dRdS      dbdT       ZdbdUZdbdVZdbdWZdbdXZy# e'$ rZ( ee(       Y dZ([(dZ([(ww xY w)e    )annotationsN)asynccontextmanagercontextmanagersuppress)partial)
SSLContext)TYPE_CHECKINGAnyAsyncIterator	AwaitableCallableIteratorNoReturn)StapledStream)skip_if_optional_else_raise)ReceiveStream
SendStream)MatcherMemoryReceiveStreamMemorySendStreamRaisesGroup)SSL   )_coresocket)Stream)BrokenResourceErrorClosedResourceError)slow)aclose_forcefully)open_tcp_stream)SocketListenerSocketStream)NeedHandshakeErrorSSLListener	SSLStream_is_eof)ConflictDetector)	Sequencerassert_checkpointscheck_two_way_streamlockstep_stream_pairmemory_stream_pair)	TypeAlias)	MockClock)T_Stream)CancelScopetrio-test-1.example.orgOP_IGNORE_UNEXPECTED_EOFmoduletls13tls12)scopeparamsc                P   t        j                         }t        t         d      r$|xj                  t         j                   z  c_        t
        j                  |       | j                  dv r|S | j                  dk(  r!t         j                  j                  |_
        |S t               )Nr3   )defaultr5   r6   )sslcreate_default_contexthasattroptionsr3   TRIO_TEST_CAconfigure_trustparam
TLSVersionTLSv1_2maximum_versionAssertionError)requestctxs     Q/var/www/html/flask-app/venv/lib/python3.12/site-packages/trio/_tests/test_ssl.py
client_ctxrI   d   s~    

$
$
&Cs./4444  %}},,
	'	!!nn44
    Fexpect_failc                  	 t         j                  | dd      }|5  |j                          	 |j                  d      }|sQt	        t
        t        j                        5  |j                          d d d        	 d d d        | j                          y |j                  |       v# 1 sw Y   5xY w# 1 sw Y   nxY w	 |r]t        d      # t        t        f$ r Y | j                          y t        $ r&}|rt        d|       nt        d|        Y d }~nd }~ww xY w| j                          y # | j                          w xY w)NTF)server_sidesuppress_ragged_eofsi   zfailed to fail?z*ssl_echo_serve_sync got error as expected:z)ssl_echo_serve_sync got unexpected error:)
SERVER_CTXwrap_socketdo_handshakerecvr   BrokenPipeErrorr;   SSLZeroReturnErrorunwrapclosesendallRuntimeErrorConnectionResetErrorConnectionAbortedError	Exceptionprint)sockrL   wrappeddataexcs        rH   ssl_echo_serve_syncrb   v   s.   *((d ) 
  	&  "||D) "/33I3IJ )()	&L 	

7 % ) )	& 	& 	&F 011 !"89  	

  >D=sC E 	



sq   C
 AB0B$0	B09C
 B0$B-	)B00B95C
 =D- 
DD- +D3DD- DD- -D?c                  K   t        j                         \  }}t        j                         4 d {   }|5  |5  |j	                  t        j
                  j                  t        t        |fi |        t        t        j                  |             d d d        d d d        d d d       d {    y 7 # 1 sw Y   $xY w# 1 sw Y   (xY w7 # 1 d {  7  sw Y   y xY wwN)stdlib_socket
socketpairtrioopen_nursery
start_soon	to_threadrun_syncr   rb   r#   tsocketfrom_stdlib_socket)kwargsabnurserys       rH   ssl_echo_server_rawrr      s     ##%DAq  " 	> 	>g  	> 	>''1Da)R6)R w99!<==	> 	>		> 	> 	>	> 	> 	> 	>		> 	> 	> 	>ss   0C)B8C)CCAB:CC'C)2C3C):C?CC	CC)C&CC&"C)c                  K   t        di |4 d {   }t        || d       d d d       d {    y 7 &7 # 1 d {  7  sw Y   y xY wwNr2   server_hostname )rr   r&   )rI   rn   r^   s      rH   ssl_echo_serverrx      s]      #,V, U Uj:STTU U U U U U Us<   A9A=A;AAAAAAc                  H    e Zd Zd	d
dZddZddZddZddZddZd	ddZ	y)PyOpenSSLEchoStreamNc                L   t        j                  t         j                        }ddlm}  |       }t        |j                  d      r%|j                  |j                  j                         t        t         d      rJ t        j                  |       t        j                  |d       | _        | j                  j                          t        j                         | _        t#               | _        t'        d      | _        t'        d      | _        |dd}|| _        y || _        y )	Nr   )BindingSSL_OP_NO_TLSv1_3OP_NO_TLSv1_4z2simultaneous calls to PyOpenSSLEchoStream.send_allz6simultaneous calls to PyOpenSSLEchoStream.receive_somec                   K   y wrd   rw   )_s    rH   no_op_sleeperz3PyOpenSSLEchoStream.__init__.<locals>.no_op_sleeper   s	     s   r   objectreturnNone)r   ContextSSLv23_METHOD,cryptography.hazmat.bindings.openssl.bindingr|   r=   libset_optionsr}   TRIO_TEST_1_CERTconfigure_cert
Connection_connset_accept_stater   
ParkingLot_lot	bytearray_pending_cleartextr(   _send_all_conflict_detector_receive_some_conflict_detectorsleeper)selfr   rG   r|   rp   r   s         rH   __init__zPyOpenSSLEchoStream.__init__   s    kk#++,* 	II155-.OOAEE334 300'',^^C.


##%$$&	"+++;@,
( 0@D0
, ? )DL"DLrJ   c                @   K   | j                   j                          y wrd   )r   bio_shutdownr   s    rH   aclosezPyOpenSSLEchoStream.aclose  s     

!s   c                6    | j                   j                         S rd   )r   renegotiate_pendingr   s    rH   r   z'PyOpenSSLEchoStream.renegotiate_pending  s    zz--//rJ   c                <    | j                   j                         sJ y rd   )r   renegotiater   s    rH   r   zPyOpenSSLEchoStream.renegotiate  s     zz%%'''rJ   c                   K   | j                   5  t        j                          d {    t        j                          d {    | j                  d       d {    d d d        y 7 B7 (7 # 1 sw Y   y xY ww)Nwait_send_all_might_not_block)r   r   
checkpointr   r   s    rH   r   z1PyOpenSSLEchoStream.wait_send_all_might_not_block  sp     -- 	@""$$$""$$$,,>???	@ 	@$$?	@ 	@sP   A<A0A*A0A,A0A.A0!	A<*A0,A0.A00A95A<c                8  K   t        d       | j                  5  t        j                          d {    t        j                          d {    | j	                  d       d {    | j
                  j                  |       	 | j	                  d       d {    	 | j
                  j                  d      }| xj                  |z  c_        K7 7 7 o7 <# t        j                  $ rA | j
                  j                          t        d| j
                  j                                Y nt        j                  $ r Y nw xY w| j                  j                          | j	                  d       d {  7   t        d       d d d        y # 1 sw Y   y xY ww)Nz  --> transport_stream.send_allsend_all   zrenegotiations:z(  <-- transport_stream.send_all finished)r]   r   r   r   r   r   	bio_writerS   r   r   ZeroReturnErrorshutdowntotal_renegotiationsWantReadErrorr   
unpark_allr   r`   s     rH   r   zPyOpenSSLEchoStream.send_all  sK    /0-- 	>""$$$""$$$,,z***JJ  &ll:...	4::??1-D ++t3+ 	 %$* / ** JJ'')+TZZ-L-L-NO((  II  ",,z***<='	> 	> 	>s   FFCFCF'C(4FCF"C=FFFFAE,F.E FE1F4E75F	FFFc                  K   t        d       |d}| j                  5  	 t        j                          d {    t        j                          d {    	 | j	                  d       d {    	 | j
                  j                  |      | j	                  d       d {    t        d       cd d d        S 7 7 i7 Q7 # t        j                  $ rF | j                  rt        d| j                         	 | j                  dd }| j
                  j                  t        |             | j                  dd= n# t        j                  $ r 	 | j
                  j                  |      cY cY | j	                  d       d {  7   t        d       cd d d        S # t        j                  $ r1 t        d       | j                  j                          d {  7   Y nw xY wY n2w xY wt        d	       | j                  j                          d {  7   Y nw xY w# | j	                  d       d {  7   t        d       w xY w# 1 sw Y   y xY ww)
Nz#  --> transport_stream.receive_somei   receive_somez,  <-- transport_stream.receive_some finishedz
    tryingr   r   zparking (a)zparking (b))r]   r   r   r   r   r   bio_readr   r   r   sendbytesr   park)r   nbytes	next_bytes      rH   r   z PyOpenSSLEchoStream.receive_some)  s    34>F11 1	F0F&&(((&&(((,,~666(3#zz226:R ll>222DEc1	F 1	F((6V 3Q ,, &3  22 ",0G0GHA -1,C,CAa,H	 $

i0@ A, %)$;$;AaC$@% $'#4#4 ;!;+/::+>+>v+F$F" ll>222DEc1	F 1	F@ (+'8'8 !; %*-$8*.))..*:$:$:!;
 %;;, "-0"&)).."222M&3	 X ll>222DEc1	F 1	Fs'  IIH"B;H"B=H"-B?.H"3CI!C"I1
I;H"=H"?H"I7H;3D>.H>G)F,G)-H/H"0IFI
I;G#	GG#	 G)"G#	#G)&H(G))+HHHH"HH""I	7H:
8I		IIIrd   )r   r   r   r   r   r   )r   bool)r`   r   r   r   )r   
int | Noner   r   )
__name__
__module____qualname__r   r   r   r   r   r   r   rw   rJ   rH   rz   rz      s(    7#r"0(
@>.5FrJ   rz   c                    K   	 	 	 	 	 	 	 	 	 	 dd}  | dddd       d {     | dddd       d {     | dddd       d {     | dddd       d {    y 7 >7 -7 7 w)	Nc                  K   t               }t        t        t        j                  d            5  t        j
                         4 d {   } |j                  t        ||       g|   |j                  t        ||      g|  d d d       d {    d d d        y 7 W7 # 1 d {  7  sw Y   xY w# 1 sw Y   y xY ww)Nsimultaneous)rz   r   r   r   BusyResourceErrorrh   ri   getattr)func1args1func2args2srq   s         rH   do_testzDtest_PyOpenSSLEchoStream_gives_resource_busy_errors.<locals>.do_testh  s       !!8!8.IJ 	>))+ > >w"""71e#4=u="""71e#4=u=> >	> 	>> > > > >	> 	>sd   .CB:	B!
B:;B%B:B#B:	C!B:#B:%B7	+B.,B7	3B::C?Cr   )   xr   rw   r   )r   )
r   strr   tuple[object, ...]r   r   r   r   r   r   rw   )r   s    rH   3test_PyOpenSSLEchoStream_gives_resource_busy_errorsr   a  s     >>->69>BT>	> *gz7
;;;
*g'F
KKK
'-Lb   .$
=== <K >sC   A&AA&A A&A"A&A$A& A&"A&$A&c              +  B   K   t        di |}t        || d       y wrt   )rz   r&   )rI   rn   fakesocks      rH   virtual_ssl_echo_serverr   y  s%      #,V,H
Hj:S
TTs   client_kwargsserver_kwargsc               ^    |i }|i }t        || fddi|}t        |t        fddi|}||fS )Nrv   r2   rN   T)r&   rP   )rI   client_transportserver_transportr   r   
client_ssl
server_ssls          rH   ssl_wrap_pairr     sl      2 	J *26:GJ z!!rJ   r.   MemoryStapledStreamc                8    t               \  }}t        | ||fi |S rd   )r-   r   rI   rn   r   r   s       rH   ssl_memory_stream_pairr     s)     *<)=&&%57GR6RRrJ   MyStapledStreamc                8    t               \  }}t        | ||fi |S rd   )r,   r   r   s       rH   ssl_lockstep_stream_pairr     s)     *>)?&&%57GR6RRrJ   c                  K   t        |       4 d {   }|j                  rJ |j                  d       d {    |j                  d       d {   dk(  sJ |j	                          d {    d d d       d {    t        d      4 d {   }t        j                         }t        ||d      }|j                  rJ t        j                  t              5 }|j                  d       d {    d d d        t        j                  j                  t        j                        sJ d d d       d {    t        d      4 d {   }t        || d      }|j                  rJ t        j                  t              5 }|j                  d       d {    d d d        t        j                  j                  t        j                         sJ d d d       d {    y 7 7 7 7 7 ~# 1 d {  7  sw Y   xY w7 7 "# 1 sw Y   "xY w7 # 1 d {  7  sw Y   xY w7 7 # 1 sw Y   xY w7 d# 1 d {  7  sw Y   y xY ww)Nr   r   TrK   r2   ru   ztrio-test-2.example.org)rx   rN   r   r   r   rr   r;   r<   r&   pytestraisesr   
isinstancevalue	__cause__SSLErrorCertificateError)rI   r   r^   bad_client_ctxexcinfos        rH   test_ssl_client_basicsr     s    z*  a== jj^^A&&$..hhj	  #t4 A A335dN<UV== ]]./ 	#7**T"""	#'--113<<@@A A #t4 I IdJ8QR== ]]./ 	#7**T"""	#'--1133G3GHHI I I!&	   A
 #	# 	#	A A A AI #	# 	#I I I IsQ  I'G1I'#H G4H G7H /G:0H 4I'?G= I'HI'A
H+"H7H8H<8H+4I'?H) I'I I'6II#I$I(8I I'+I,I'4H 7H :H =I' HH	H	I'HH&	!H+)I'+H=1H42H=9I'II		II'I$II$ I'c                   K   t        j                         \  }5  |5  t        j                  |      }t	        t        |      t        d      }|j                  sJ d
 fd}t        j                  |      }|j                          |j                  d       d {   dk(  sJ |j                  d       d {    |j                  d       d {   dk(  sJ |j                  d       d {   d	k(  sJ |j                          d {    |j                          d d d        d d d        y 7 7 {7 d7 H7 -# 1 sw Y   xY w# 1 sw Y   y xY ww)NTrN   c                     j                  d      5 } | j                  d       | j                  d      dk(  sJ | j                  d       | j                          d d d        y # 1 sw Y   y xY w)Nr2   ru   r   r      y   z)rQ   rX   rS   rV   )client_sockro   rI   s    rH   clientz&test_ssl_server_basics.<locals>.client  sr    ''#< (  %##D)"''*d22##D)""$% % %s   A	A''A0)targetr   r   r   r   rJ   r   )re   rf   rl   rm   r&   r#   rP   rN   	threadingThreadstartr   r   r   join)rI   rp   server_sockr   r   tro   s   `     @rH   test_ssl_server_basicsr     s1    ##%DAq	
 A 003$%zt
  +++	% F+		%22155==''---%22155==%22155<<%%'''	3  & 6-55'/   s   EEB E!D9"E?D; ED=E6D?7EEE(E0	E9E;E=E?EEE	EEEc                  K   t        d      4 d {   }| }t        j                         }t        ||d      }|j                  |u sJ |j
                  |u sJ |j                  dk(  sJ |j                  dk(  sJ t        j                  t              5  |j                   d d d        dt        |      v sJ dt        |      v sJ t        j                  t              5  d|_        d d d        t        j                  t              5  d|_        d d d        ||_        |j
                  |u sJ t        j                  t              5 }|j                          d {    d d d        t        j                   j"                  t        j$                        sJ d d d       d {    y 7 # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w7 u# 1 sw Y   txY w7 ;# 1 d {  7  sw Y   y xY ww)	NTrK   r2   ru   Ftransport_streamcontextasdf)rr   r;   r<   r&   r   r   rN   rv   r   r   AttributeError
asfdasdfsadirr   rR   r   r   r   r   )rI   r^   good_ctxbad_ctxr   r   s         rH   test_attributesr    s    "t4 !A !A,,.dH6OP!!T)) yyH$$}}%%  $===]]>* 	LL	 "SV++CF""
 ]]>* 	! AM	!]]>* 	' &A	' 	yyG##]]./ 	#7.."""	#'--113<<@@C!A !A !A	 		! 	!	' 	' #	# 	#?!A !A !A !As   G;F.G;B G&F1$?G&#F>+!G&G
8G&G G!G%8G&G;(G$)G;1F;	6G&>G	G&
G	G&GG!	G&$G;&G8,G/-G84G;c                  	K   ddz  t               	t               d	fd}dfd}t        |       4 d {   }t        j                         4 d {   }|j	                  ||       |j	                  ||       |j	                  |j
                         |j	                  |j
                         d d d       d {    |j                          d {    d d d       d {    t        	      t              cxk(  rk(  sJ  J 	k(  sJ y 7 7 7 Z# 1 d {  7  sw Y   jxY w7 Y7 K# 1 d {  7  sw Y   [xY ww)N   i   c                   K   t              D ]:  }t        |       t        |gz        }|z  | j                  |       d {    < y 7 wrd   )ranger]   r   r   )r   ichunkCHUNKS
CHUNK_SIZEsents      rH   senderz'test_full_duplex_basics.<locals>.sender7  sR     v 	$A!H1#
*+EEMD**U###		$ $s   AAAAc                   K   t              k  r1| j                  dz         d {   }|z  t              k  r0y y 7 w)Nr   )lenr   )r   r  r	  EXPECTEDreceiveds     rH   receiverz)test_full_duplex_basics.<locals>.receiver?  sC     (mh&..q99EH (mh&9s   &AAAA)r   r   r   r   )r   rx   r   rh   ri   rR   r   r  )
rI   r  r  r   rq   r  r	  r  r  r
  s
        @@@@@rH   test_full_duplex_basicsr  /  s7    FJ
"H;D{H$ z* 	 	a%%' 	/ 	/7vq)x+ q~~.q~~.	/ 	/ hhj	 	 t9H111118		/ 	/ 	/ 	/ 	/ 		 	 	 	s   =ED"EE!D$"E%AD( ED&E#D=$E(E3D?4/E$E&E(D:	.D1/D:	6E?EEE
EEc                  K   t        |       5 }|j                          d {    |j                  j                          |j	                  d       d {    |j                  d       d {   dk(  sJ |j	                  d       d {    |j                  d       d {   dk(  sJ |j                          d {    d d d        y 7 7 |7 e7 I7 27 # 1 sw Y   y xY ww)N   ar      b)r   rR   r   r   r   r   r   rI   r   s     rH   test_renegotiation_simpler  T  s     	 	, nn	&&(jj^^A&&$.. jj^^A&&$..hhj & 	& s   C(CC2CCC.C/CCC%C&CCC	C(CCCCCCC%!C(c           	     	  K   d| _         dd l}|j                  d      dfd}dfd}dfddfdt        ||      5 j	                          d {     d       d {    j
                  j                           d       d {     |        d {    t        d      D ]  }t        |d	z  g      }t        d
|z  d	z  g      }j
                  j                          t        j                         4 d {   }|j                  |       |j                  |       d d d       d {    t        j                         4 d {   }|j                  |       |j                  |       d d d       d {     |        d {     t        d      D ]  }t        |d	z  g      }t        d
|z  d	z  g      } |       d {    j
                  j                           |       d {    t        j                         4 d {   }|j                  |       |j                  |       d d d       d {     |        d {     	 d d d        dd}	dfd}
t        ||	      5  d       d {    j
                  j                          t        j                         4 d {   }|j                  d       |j                  |
       d d d       d {     |        d {    j                          d {    d d d        dd}t        ||      5  d       d {    j
                  j                          t        j                         4 d {   }|j                  d       |j                  j                         d d d       d {     |        d {    j                          d {    d d d        y 7 7 7 q7 e7 7 # 1 d {  7  sw Y   xY w7 7 # 1 d {  7  sw Y   xY w7 7 h7 A7 '7 # 1 d {  7  sw Y   xY w7  # 1 sw Y   xY w7 7 7 y# 1 d {  7  sw Y   xY w7 7 n# 1 sw Y   nxY w7 T7  7 # 1 d {  7  sw Y   xY w7 7 # 1 sw Y   y xY ww)Nr   c                l   K   t        j                  j                  dd             d {    y 7 w)Nr   
   )rg   sleepuniform)r   rs    rH   r   z.test_renegotiation_randomized.<locals>.sleeperq  s$     jj1b)***s   )424c                 R  K   j                   j                         rat               5   d       d {    d d d        t               5    d       d {    d d d        j                   j                         rat        d       y 7 V# 1 sw Y   UxY w7 A# 1 sw Y   @xY ww)N   -z-- clear --)r   r   r*   r]   )expectr   r   s   rH   clearz,test_renegotiation_randomized.<locals>.cleart  s       446#% !4j  !#% #Tl""#   446
 	m !! ! ## #s[   %B'BBBB'BBB"B'?B'BBB'BB$ B'c                   K   j                   j                  d       d {    t        d|        t               5  j	                  |        d {    d d d        y 7 =7 # 1 sw Y   y xY ww)Nz
outer sendzcalling SSLStream.send_all)r   r   r]   r*   r   )byter   s    rH   r   z+test_renegotiation_randomized.<locals>.send|  si       ((666*D1! 	#**T"""	# 	# 	7 #	# 	#s8   A0A A0A$A"A$
A0"A$$A-)A0c                  K   j                   j                  d       d {    t        d|        t        |       dk(  sJ t	               5  j                  d       d {   | k(  sJ 	 d d d        y 7 S7 # 1 sw Y   y xY ww)Nr  z)calling SSLStream.receive_some, expectingr   )r   r   r]   r  r*   r   )expectedr   s    rH   r  z-test_renegotiation_randomized.<locals>.expect  s       ((22298D8}!!! 	7**h666	7 	7 	3 +	7 	7s9   BA6*BA:"A8#	A:-
B8A::B?B)r   r  d      r   c                V   K   | dk(  rt        j                  d       d {    y y 7 w)Nr   順 rg   r  methods    rH   sleeper_with_slow_send_allzAtest_renegotiation_randomized.<locals>.sleeper_with_slow_send_all  s(     Z**V$$$  $s   )')c                    K   t        j                  d       d {     j                          d {    y 7 7 w)N  )rg   r  r   r   s   rH   sleep_then_wait_writablez?test_renegotiation_randomized.<locals>.sleep_then_wait_writable  s4     jj--/// 	/s   >:><>>r   c                   K   | dk(  rt        j                  d       d {    y | dk(  rt        j                  d       d {    y y 7 )7 w)Nr   r(  r  r.  r)  r*  s    rH   *sleeper_with_slow_wait_writable_and_expectzQtest_renegotiation_randomized.<locals>.sleeper_with_slow_wait_writable_and_expect  sI     44**V$$$x**T"""   %"s!   AA
"AAAAr   r   )r"  r   r   r   )r$  r   r   r   )r+  r   r   r   )autojump_thresholdrandomRandomr   rR   r   r   r  r   r   rh   ri   r   r   )
mock_clockrI   r4  r   r   r  b1b2rq   r,  r0  r2  r  r  r   r   s               @@@@rH   test_renegotiation_randomizedr9  e  sc     %&J!aA+#7 
!W	= nn4j	&&(Tlgs 
	ADz"BQ$'(B**,))+ / /w""4,""62./ / ))+ - -w""62.""4,- - 'MM
	 s 		ADz"BQ$'(Br(NN**,*))+ - -w""62.""4,- - 'MM		+N%0 
!5O	P 	TU4j	&&(%%' 	9 	97vt,78	9 	9 ghhj	# 
!F
 	
4j	&&(%%' 	@ 	@7vt,q>>?	@ 	@ ghhj I 	/ / / / /- - - - - 
 - - - - - = d 		9 	9 	9 	9 	9 		 	. 		@ 	@ 	@ 	@ 	@ 	 s  AS
Q/PQ/.P/)Q/P	Q/'P(A%Q/P
Q/%P6Q/PQ/P+
Q/"%P1Q/P.Q/!Q"A Q/"Q
#)Q/QQ/)Q
*Q/-%QQ/QQ/,Q,-Q/4SR!Q< 6R!Q?R!$R>R!	R
R!RR!0R1R!5SSR.6SR1S.R6SR4SSS5S6S:	SQ/Q/	Q/Q/Q/Q/P(PP(#	Q/.Q/1Q7P:8Q?	Q/
Q/Q/Q/Q/Q)QQ)$	Q//Q94S<R!?R!R!R	RR		R!R!!R+&S.S1S4S6S	<R?=S	SSSSc                   K   t         j                  t         j                  t         j                  j                  t         j                  j
                  f      }dd}dd}dd}	 	 	 	 	 	 d fd} |||       d {     |||       d {     |||       d {     |||       d {    y 7 87 )7 7 w)Nc                   K   t               5  | j                  d       d {    d d d        y 7 # 1 sw Y   y xY ww)Nr   )r*   r   r/  s    rH   do_send_allz.test_resource_busy_errors.<locals>.do_send_all  s;     ! 	#**T"""	# 	#"	# 	#    >202	>2;>c                   K   t               5  | j                  d       d {    d d d        y 7 # 1 sw Y   y xY wwNr   )r*   r   r/  s    rH   do_receive_somez2test_resource_busy_errors.<locals>.do_receive_some  s;     ! 	$..###	$ 	$#	$ 	$r=  c                ~   K   t               5  | j                          d {    d d d        y 7 # 1 sw Y   y xY wwrd   )r*   r   r/  s    rH    do_wait_send_all_might_not_blockzCtest_resource_busy_errors.<locals>.do_wait_send_all_might_not_block  s;     ! 	411333	4 	43	4 	4s    =1/1	=1:=c                n  K   t              \  }}t        t        t        j                  d            5  t        j
                         4 d {   }|j                  | |       |j                  ||       d d d       d {    d d d        y 7 A7 # 1 d {  7  sw Y   xY w# 1 sw Y   y xY ww)Nzanother task)r   r   r   r   r   rh   ri   )r   r   r   r   rq   rI   s        rH   r   z*test_resource_busy_errors.<locals>.do_test  s      (
31!8!8.IJ 	-))+ - -w""5!,""5!,- -	- 	-- - - - -	- 	-sd   2B5B)BB)%B7B)BB)	B5B)B)B&	BB&	"B))B2.B5)r   Sr   r   )r   Callable[[S], Awaitable[None]]r   rE  r   r   )rg   r&   r   abcr   r   )rI   rD  r<  r@  rB  r   s   `     rH   test_resource_busy_errorsrG    s     >>488..0F0FFGA#$4---6T-	- +{
+++
/?
333
+?
@@@
24T
UUU ,3@UsH   A;B?>B7?B?B9B? B;!B?1B=2B?9B?;B?=B?c                    K   g  G fddt               } t        j                         }t         |        |d      }|j	                          d {    dgk(  sJ y 7 w)Nc                  4    e Zd Zd fdZddZdddZd	dZy)
Etest_wait_writable_calls_underlying_wait_writable.<locals>.NotAStreamc                0   K   j                  d       y w)Nok)append)r   records    rH   r   zctest_wait_writable_calls_underlying_wait_writable.<locals>.NotAStream.wait_send_all_might_not_block   s     MM$   c                    K   t        d      wNzShould not get calledrE   r   s    rH   r   zLtest_wait_writable_calls_underlying_wait_writable.<locals>.NotAStream.aclose        !899   Nc                    K   t        d      wrQ  rR  )r   	max_bytess     rH   r   zRtest_wait_writable_calls_underlying_wait_writable.<locals>.NotAStream.receive_some  rS  rT  c                    K   t        d      wrQ  rR  r   s     rH   r   zNtest_wait_writable_calls_underlying_wait_writable.<locals>.NotAStream.send_all
  rS  rT  r   rd   )rV  r   r   zbytes | bytearray)r`   zbytes | bytearray | memoryviewr   r   )r   r   r   r   r   r   r   )rN  s   rH   
NotAStreamrJ    s    	 	:	:	:rJ   rX  xru   rL  )r   r;   r<   r&   r   )rX  rG   r   rN  s      @rH   1test_wait_writable_calls_underlying_wait_writablerZ    s_     F:V : 
$
$
&C*,S9A

)
)
+++dV ,s   AA!AA!nt)   r  z)frequently fails on Windows + Python 3.10)reasonc                \  K   t        |       4 d {   }t               5  |j                          d {    d d d        t               5  |j                          d {    d d d        t               5  |j                          d {    d d d        t               5  |j	                  d       d {    d d d        t               5  |j                  d       d {    d d d        t               5  |j                  d       d {    d d d        t               5  |j                  d       d {    d d d        t               5  |j                          d {    d d d        d d d       d {    t        |       4 d {   }|j                          d {    t               5  |j                          d {    d d d        d d d       d {    y 7 7 # 1 sw Y   xY w7 # 1 sw Y   xY w7 # 1 sw Y   xY w7 g# 1 sw Y   gxY w7 K# 1 sw Y   KxY w7 /# 1 sw Y   /xY w7 # 1 sw Y   xY w7 # 1 sw Y   xY w7 # 1 d {  7  sw Y   xY w7 7 7 # 1 sw Y   xY w7 # 1 d {  7  sw Y   y xY ww)Ns   xxxr   )rx   r*   rR   r   r   r   rV   r   r  s     rH   test_checkpointsr_    sU    
 z*  a! 	#.."""	#! 	#.."""	#! 	411333	4! 	%**V$$$	%! 	$..###	$  ! 	$..###	$! 	$..###	$! 	((*	' , z*  ann! 	((*	  -"	# 	# #	# 	# 4	4 	4 %	% 	% $	$ 	$ $	$ 	$ $	$ 	$ 	 	'   ,	 	   s  J,G+J,I.G1G.G1I.H G>!H%I.7HHHI."H!7H8H!<I.H1#H.$H1(I.:IH>II.&I;I<I I.I &I'I +I.3J,>I,?J,JJ,J*J+J9J	JJ	JJ,%J&J,.G11G;	6I.>HH	I.HH	I.H!!H+	&I..H11H;	6I.>II	I.II	I.I  I)	%I.,J,.J 4I75J <J,JJ		J	JJ,J)J J)%J,c                L  K   t        |       4 d {   }|j                          d {    t               5  |j                  d       d {    d d d        t               5  |j                  d       d {    d d d        |j                  d       d {    |j	                  d       d {   dk(  sJ |j                          d {    d d d       d {    y 7 7 7 # 1 sw Y   xY w7 ~# 1 sw Y   }xY w7 k7 T7 97 +# 1 d {  7  sw Y   y xY ww)NrJ   r   r   )rx   rR   r*   r   r   r   r  s     rH   test_send_all_empty_stringra  4  s     z*  ann  ! 	"**S/!!	"! 	"**S/!!	"jj^^A&&$..hhj  
 "	" 	" "	" 	"&   s   D$C'D$DC)DC-C+C-D%C;:C9;C;?DDD4D	5DDDD$!D"D$)D+C--C6	2D9C;;D	 D	DDD$D!DD!D$https_compatibleTc                V    K   d fd}d fd}t        ||       d {    y 7 w)Nc                 0   K   t         didi      S w)Nrb  r   )r   )rI   rb  s   rH   stream_makerz,test_SSLStream_generic.<locals>.stream_makerH  s+      &-/?@-/?@
 	
rO  c                 .  K   t              \  } }t        j                         4 d {   }|j                  | j                         |j                  |j                         d d d       d {    | |fS 7 N7 
# 1 d {  7  sw Y   | |fS xY wwrd   )r   r   rh   ri   rR   )r   serverrq   rI   s      rH   clogged_stream_makerz4test_SSLStream_generic.<locals>.clogged_stream_makerR  s      2*= %%' 	4 	47v223v223	4 	4 v~	4 	4 	4 	4 	4 v~sD   'BA9B7A=%B0A;1	B;B=BBB
B)r   Etuple[SSLStream[MemoryStapledStream], SSLStream[MemoryStapledStream]])r   =tuple[SSLStream[MyStapledStream], SSLStream[MyStapledStream]])r+   )rI   rb  re  rh  s   ``  rH   test_SSLStream_genericrk  D  s$     
  |-A
BBBs   )')c                f  K   t        |       \  j                  j                  t               dfd}dfd}t        j                         4 d {   }|j                  |       |j                  |       d d d       d {    y 7 77 # 1 d {  7  sw Y   y xY ww)Nc                 (  K   j                          d {    j                  d       d {    j                  d       d {   dk(  sJ j                  d       d {     d      4 d {    j                  j                  } d j                  _        d d d       d {    j                  d       d {   dk(  sJ j
                  u sJ j                          d {   \  }}|u sJ |dk(  sJ j
                  J |j                  d       d {     j                  _        j                  j	                          d {    y 7 N7 87 "7 7 7 # 1 d {  7  sw Y   xY w7 7 7 a7 0w)Nr   r   r   r   r   rJ      trailing)rR   r   r   send_streamsend_all_hookr   rV   )rp  rawtrailingr   r   seqs      rH   r   ztest_unwrap.<locals>.clientl  s    %%'''!!$''',,Q//477!!$'''
 q6 	> 	>,88FFM9=((6	> 	>  ,,Q//366**.>>>(//11X&&&3**22ll;''' 6C$$2**88:::1 	('/'
	> 	> 	> 	> 	> 0 2 	(
 	;s   FE%FE(F	E+
F'E.(F8E19F<(E5$F/E30FF
	,F5F66F,F-2FF F(F+F.F1F3F5F;E><FFFFFc                   K   j                          d {    j                  d       d {   dk(  sJ j                  d       d {    j                  d       d {   dk(  sJ  d      4 d {    j                          d {   \  } }d d d       d {     u sJ dk(  sJ j                  J y 7 7 7 ~7 g7 S7 =7 ,# 1 d {  7  sw Y   <xY ww)Nr   r   r   r   rn  )rR   r   r   rV   r   )rq  rr  rs  r   r   s     rH   rg  ztest_unwrap.<locals>.server  s     %%''',,Q//477!!$''',,Q//477
 q6 	6 	6","3"3"55MC	6 	6&&&;&&**222 	(/'/
	65	6 	6 	6 	6s   C,C	C,CC,CC,'C(C,=C>C,CCCC,(C)!C,C,C,C,C,CC,C)C C)%C,r   )r   r   r)   r   rh   ri   )	rI   r   rg  rq   r   r   rs  r   r   s	       @@@@@rH   test_unwrapru  e  s     3J?J
!22!22
+C;63 !!# # #w6"6"# # # # # # #sH   AB1 B!B1$#BB1BB1B1B."B%#B.*B1c                  K   t        |       \  j                  }dfd}dfd}t        j                         4 d {   }|j	                  |       |j	                  |       d d d       d {    t        j                  t              5  |j                  d       d {    d d d        t               5  j                          d {    d d d        t               5  j                          d {    d d d        t        j                  t              5  j                  d       d {    d d d        t        j                  t              5  j                  d       d {   dk(  sJ 	 d d d        t        j                  t              5  j                          d {    d d d        t        j                  t              5  j                          d {    d d d        t        |       \  dfd}t        j                         4 d {   }|j	                  j                         |j	                  |       d d d       d {    y 7 &7 # 1 d {  7  sw Y   xY w7 # 1 sw Y   xY w7 # 1 sw Y   xY w7 # 1 sw Y   xY w7 |# 1 sw Y   |xY w7 Q# 1 sw Y   KxY w7 !# 1 sw Y   !xY w7 # 1 sw Y   xY w7 7 # 1 d {  7  sw Y   y xY ww)Nc                    K   t               5   j                          d {    d d d        y 7 # 1 sw Y   y xY wwrd   )r*   r   )r   s   rH   client_closerz-test_closing_nice_case.<locals>.client_closer  s<     ! 	&##%%%	& 	&%	& 	&s    >202	>2;>c                    K    j                  d       d {   dk(  sJ  j                  d       d {   dk(  sJ t               5   j                          d {    d d d        y 7 S7 77 # 1 sw Y   y xY wwNr  rJ   )r   r*   r   r   s   rH   server_closerz-test_closing_nice_case.<locals>.server_closer  sx     ,,R00C77,,R00C77! 	&##%%%	& 	& 10%	& 	&sI   A>A,A>A.A>
A2A0A2#
A>.A>0A22A;7A>s   123r  rJ   c                    K   t               5   j                  d       d {   dk(  sJ 	 d d d        t               5   j                          d {    d d d        y 7 ># 1 sw Y   7xY w7 # 1 sw Y   y xY wwrz  )r*   r   r   r{  s   rH   expect_eof_serverz1test_closing_nice_case.<locals>.expect_eof_server  s{     ! 	<#0044;;;	<! 	&##%%%	& 	& 5	< 	< &	& 	&sU   A>A$A"	A$A> A2A0A2	A>"A$$A-)A>0A22A;7A>r   )r   r   r   rh   ri   r   r   r   r   r*   r   r   rV   rR   )rI   r   rx  r|  rq   r~  r   r   s         @@rH   test_closing_nice_caser    s     4J?J
!22&& !!# * *w=)=)* *
 
*	+ 0''///0 
	 "!!!"		 "!!!" 
*	+ *!!&)))*
 
*	+ 8,,R00C7778 
*	+ "!!!" 
*	+ (%%'''(
 4J?J
& !!# . .w:,,-,-. . .O* * * * * 	00 0
 	"" " 	"" "
 	** * 18 8 	"" " 	(( (. . . . .s  ?LI)L#I/*L5I,6LJ(J)J-L?JJJL*J(>J%?J(!L$J89J5:J8>!LK4K5	K?!L K4K5K9!LK'.K%/K'34L'K3(L+-K7L#K5$L,L/J5I86J=LJJLJJ"L%J((J2-L5J88K=LKKLKK"L%K''K0,L5L7L	=L >L	Lc                D  K   t        |       \  }}t        j                         4 d {   }|j                  |j                         |j                  |j                         d d d       d {    dd}||j
                  j                  _        t        j                  t              5  |j                  d       d {    d d d        t        j                  t              5  |j                          d {    d d d        ddfd}||j
                  j                  _        ||j
                  j                  _        |j!                          d {    dk(  sJ y 7 =7 # 1 d {  7  sw Y   
xY w7 # 1 sw Y   xY w7 # 1 sw Y   xY w7 Cw)Nc                    K   t         wrd   KeyErrorrw   rJ   rH   bad_hookz3test_send_all_fails_in_the_middle.<locals>.bad_hook          	r   r   c                      dz   y r?  rw   )closeds   rH   
close_hookz5test_send_all_fails_in_the_middle.<locals>.close_hook  s    !rJ   r   r   r   r   )r   r   rh   ri   rR   r   ro  rp  r   r   r  r   r   r   r  receive_streamr   )rI   r   rg  rq   r  r  r  s         @rH   !test_send_all_fails_in_the_middler    sc    +J7NFF!!# 0 0w6../6../0 0 9AF''5	x	  $ood###$ 
*	+ 5224445 F 6@F''28BF**5
--/Q;;30 0 0 0 0 	$$ $ 	55 5 s   'F E'F 7E,%F 0E*1<F -FFF!F (F<F=FAF FF *F ,E?2E53E?:F FF	F FFF c                  	K   t               \  }}t        || d      }t        |t        d      }t        || d      t        |t        d      	dfd}d	fd}t        j                         4 d {   }|j                  |       |j                  |       d d d       d {    y 7 77 # 1 d {  7  sw Y   y xY ww)Nr2   ru   Tr   c                    K    j                  d       d {     j                  d       d {   dk(  sJ y 7 #7 w)N   hir     bye)r   r   )client_2s   rH   r   z!test_ssl_over_ssl.<locals>.client  s@     &&&**2..&888 	'.s   A <A >A A c                    K    j                  d       d {   dk(  sJ  j                  d       d {    y 7 #7 w)Nr  r  r  )r   r   )server_2s   rH   rg  z!test_ssl_over_ssl.<locals>.server	  s=     **2..%77''' /'s   A <A >A A r   )r-   r&   rP   r   rh   ri   )
rI   client_0server_0client_1server_1r   rg  rq   r  r  s
           @@rH   test_ssl_over_sslr    s     +-Hh*.GH :4@H*.GH :4@H9( !!# # #w6"6"# # # # # # #sH   A2C6B.7C:#B2C(B0)C0C2C8B;9C Cc                  K   t        |       \  }}t        j                         4 d {   }|j                  |j                         |j                  |j                         d d d       d {    t        j                  |       d {    t        j                  t              5  |j                  d       d {    d d d        t        j                  t              5  |j                  d       d {    d d d        |j                          d {    y 7 7 # 1 d {  7  sw Y   xY w7 7 {# 1 sw Y   zxY w7 N# 1 sw Y   MxY w7 <w)Nr  
   xxxxxxxxxx)r   r   rh   ri   rR   rg   r    r   r   r   r   r   r   rI   r   rg  rq   s       rH   test_ssl_bad_shutdownr    s"    +J7NFF!!# 0 0w6../6../0 0 
 
 
(((	*	+ &!!"%%%&	*	+ )ooi((() --/0 0 0 0 0 ) 	&& & 	)) ) s   'ED E7D$$E/D"0ED9E*D=?D; D=!E%E:E	;E?EEE"E$D6*D-+D62E;D==EE	EEEc                r  K   t        | ddiddi      \  }}t        j                         4 d {   }|j                  |j                         |j                  |j                         d d d       d {    t        j                  |       d {    |j                  d       d {   dk(  sJ t        j                  t              5  |j                  d       d {    d d d        |j                          d {    y 7 7 # 1 d {  7  sw Y   xY w7 7 x7 B# 1 sw Y   AxY w7 0w)Nrb  Tr   r   r  rJ   r  )r   r   rh   ri   rR   rg   r    r   r   r   r   r   r   r  s       rH    test_ssl_bad_shutdown_but_its_okr  #  s    +)40)40NFF !!# 0 0w6../6../0 0 
 
 
((($$R((C//	*	+ )ooi((() --/0 0 0 0 0 )(() ) s   .D7D
D77D+D76D7D7D#D7,D%-"D7D)$D'%D))D7D5D7D7D DD D7%D7'D))D2.D7c                 \  K   t        d      4 d {   } t        j                         }t        | |d      }t	        j
                  t              5  |j                          d {    d d d        d d d       d {    y 7 q7 # 1 sw Y   xY w7 # 1 d {  7  sw Y   y xY ww)NTrK   r2   ru   )rr   r;   r<   r&   r   r   r   r   )r^   rI   r   s      rH   (test_ssl_handshake_failure_during_acloser  7  s     
 #t4  //1
dJ8QR ]]./ 	((*	   	 	   sn   B,BB,<BB	'B(B	,B4B,?B B,B		B	BB,B)B B)%B,c                J  K   t        |       \  }}t        j                         4 d {   }|j                  |j                         |j                  |j                         d d d       d {    |j
                  j                  j                  ddfd}||j
                  j                  _        t        j                  t              5  |j                          d {    d d d        dk(  sJ y 7 7 # 1 d {  7  sw Y   xY w7 -# 1 sw Y   ,xY ww)Nr   c                 0     J           dz  t         r?  r  )client_orig_close_hooktransport_close_counts   rH   r  z4test_ssl_only_closes_stream_once.<locals>.close_hookV  s"    %11 "rJ   r   r  )r   r   rh   ri   rR   r   ro  r  r   r   r  r   )rI   r   rg  rq   r  r  r  s        @@rH    test_ssl_only_closes_stream_oncer  J  s      ,J7NFF!!# 0 0w6../6../0 0 $44@@KK 6@F''2	x	  mmo A%%%%0 0 0 0 0" 	 so   'D#C<D#7D &D#1C>2A!D#D'D(D,D#>D# DD	DD#DD D#c                   K   t        | ddiddi      \  }t        j                         4 d {   }|j                  |j                         |j                  j                         d d d       d {    dfd}t        j                         4 d {   }|j                  |j
                         |j                  |       d d d       d {    y 7 7 f# 1 d {  7  sw Y   vxY w7 Z7  # 1 d {  7  sw Y   y xY ww)Nrb  FTr  c                    K   t        j                  t              5 } j                  d       d {    d d d        t	         j
                  j                        sJ y 7 .# 1 sw Y   -xY ww)Nr  )r   r   r   r   r'   r   r   )r   rg  s    rH   receive_and_expect_errorzKtest_ssl_https_compatibility_disagreement.<locals>.receive_and_expect_errorq  s^     ]]./ 	*7%%b)))	* w}}../// *	* 	*s+   A/A#A!A#*A/!A##A,(A/r   )r   r   rh   ri   rR   r   )rI   r   rq   r  rg  s       @rH   )test_ssl_https_compatibility_disagreementr  d  s     +)51)40NFF !!# 0 0w6../6../0 00 !!# 5 5w6==)345 5 50 0 0 0 05 5 5 5 5s   .DCD7C ,D7C8"DC5D-C9DC7DD C2&C)'C2.D7D9D?D DDc                (  K   t        | ddiddi      \  }dfd}t        j                         4 d {   }|j                  |j                         |j                  |       d d d       d {    y 7 A7 # 1 d {  7  sw Y   y xY ww)Nrb  Tr  c                 N   K    j                  d       d {   dk(  sJ y 7 
wrz  )r   )rg  s   rH   server_expect_clean_eofzEtest_https_mode_eof_before_handshake.<locals>.server_expect_clean_eof  s&     ((,,333,s   %#%r   )r   r   rh   ri   r   )rI   r   r  rq   rg  s       @rH   $test_https_mode_eof_before_handshaker  |  s     +)40)40NFF4 !!# 4 4w6==)234 4 4 4 4 4 4sD   4BA9B-A=(B3A;4B;B=BBBBc                  K   t        |       \  }}dd}||j                  j                  _        t	        j
                  t              5  t               5  |j                          d {    d d d        d d d        t	        j
                  t              5  t               5  |j                          d {    d d d        d d d        y 7 b# 1 sw Y   axY w# 1 sw Y   exY w7 /# 1 sw Y   .xY w# 1 sw Y   y xY ww)Nc                    K   t         wrd   r  rw   rJ   rH   r  z2test_send_error_during_handshake.<locals>.bad_hook  r  r  r  )
r   r   ro  rp  r   r   r  r*   rR   r   )rI   r   rg  r  s       rH    test_send_error_during_handshaker    s     +J7NFF 9AF''5	x	  (! 	(%%'''	(( 
*	+ (! 	(%%'''	(( ( (	( 	(( ( (	( 	(( (s   AC?	CC(C)C-C5!C?C3!C'5C%6C':C3	C?CC	CC"C?%C''C0	,C33C<8C?c                <  K   t        |       \  }dd}|j                  j                  _        dfd}t	        j
                         4 d {   }|j                  ||j                         |j                  |j                         d d d       d {    t        j                  t              5  t               5  j                          d {    d d d        d d d        y 7 7 T# 1 d {  7  sw Y   dxY w7 .# 1 sw Y   -xY w# 1 sw Y   y xY ww)Nc                    K   t         wrd   r  rw   rJ   rH   r  z5test_receive_error_during_handshake.<locals>.bad_hook  r  r  c                   K   t        j                  t              5  t               5  j	                          d {    d d d        d d d        | j                          y 7 %# 1 sw Y   $xY w# 1 sw Y   (xY wwrd   )r   r   r  r*   rR   cancel)cancel_scoper   s    rH   client_sidez8test_receive_error_during_handshake.<locals>.client_side  sh     ]]8$ 	,#% ,))+++,	, 	 ,, ,	, 	,sC   A<A0A$A"A$A0	A<"A$$A-	)A00A95A<r  )r  r1   r   r   )r   r   r  receive_some_hookr   rh   ri   r  rR   r   r   r   r*   )rI   rg  r  r  rq   r   s        @rH   #test_receive_error_during_handshaker    s     +J7NFF @HF**< !!# 0 0w;(<(<=6../0 0 
*	+ (! 	(%%'''	(( (	0 0 0 0 0 (	( 	(( (s   ADC)D8C-DC+D4D?DDDD 
D+D-C?3C64C?;DDD		DDDc                   K   t        |       \  }}t        j                  t              5  |j	                          d d d        t        j                  t              5  |j	                          d d d        y # 1 sw Y   <xY w# 1 sw Y   y xY wwrd   )r   r   r   r$   selected_alpn_protocolrI   r   rg  s      rH   ,test_selected_alpn_protocol_before_handshaker    sv     +J7NFF	)	* (%%'( 
)	* (%%'( (( (( (3   (BA6!BB-	B6A?;BBBc                  K   t        |       \  }}t        j                         4 d {   }|j                  |j                         |j                  |j                         d d d       d {    |j                         J |j                         J |j                         |j                         k(  sJ y 7 7 N# 1 d {  7  sw Y   ^xY wwrd   )r   r   rh   ri   rR   r  r  s       rH   (test_selected_alpn_protocol_when_not_setr    s      ,J7NFF!!# 0 0w6../6../0 0 ((*22((*22((*f.K.K.MMMM0 0 0 0 0E   'CB<C7C $C/B>0AC>C CC	CCc                   K   t        |       \  }}t        j                  t              5  |j	                          d d d        t        j                  t              5  |j	                          d d d        y # 1 sw Y   <xY w# 1 sw Y   y xY wwrd   )r   r   r   r$   selected_npn_protocolr  s      rH   +test_selected_npn_protocol_before_handshaker    sv     +J7NFF	)	* '$$&' 
)	* '$$&' '' '' 'r  zCignore: ssl module. NPN is deprecated, use ALPN instead:UserWarningzAignore:ssl NPN is deprecated, use ALPN instead:DeprecationWarningc                  K   t        |       \  }}t        j                         4 d {   }|j                  |j                         |j                  |j                         d d d       d {    |j                         J |j                         J |j                         |j                         k(  sJ y 7 7 N# 1 d {  7  sw Y   ^xY wwrd   )r   r   rh   ri   rR   r  r  s       rH   'test_selected_npn_protocol_when_not_setr    s      ,J7NFF!!# 0 0w6../6../0 0 '')11'')11'')V-I-I-KKKK0 0 0 0 0r  c                   K   t        |       \  }}t        j                  t              5  |j	                          d d d        t        j                  t              5  |j	                          d d d        y # 1 sw Y   <xY w# 1 sw Y   y xY wwrd   )r   r   r   r$   get_channel_bindingr  s      rH   )test_get_channel_binding_before_handshaker    sv     +J7NFF	)	* %""$% 
)	* %""$% %% %% %r  c                  K   t        |       \  }}t        j                         4 d {   }|j                  |j                         |j                  |j                         d d d       d {    |j                         J |j                         J |j                         |j                         k(  sJ y 7 7 N# 1 d {  7  sw Y   ^xY wwrd   )r   r   rh   ri   rR   r  r  s       rH   (test_get_channel_binding_after_handshaker    s     +J7NFF!!# 0 0w6../6../0 0 %%'33%%'33%%'6+E+E+GGGG0 0 0 0 0r  c                  K   t        |       \  }}t        j                         4 d {   }|j                  |j                         |j                  |j                         d d d       d {    |j                         J t        |j                                d|j                         d   v sJ y 7 7 I# 1 d {  7  sw Y   YxY ww)N)DNSr2   subjectAltName)r   r   rh   ri   rR   getpeercertr]   r  s       rH   test_getpeercertr     s     +J7NFF!!# 0 0w6../6../0 0 ''	&


-1C1C1EFV1WWWW0 0 0 0 0sE   'CB7C7B;$C/B90AC9C;CCC	Cc           	        K   	 	 	 	 d fd} |        d {   \  }}}|4 d {    |j                          d {   }|4 d {    |j                  rJ t        j                         4 d {   }|j	                  |j
                         |j	                  |j
                         d d d       d {    d d d       d {    |j                          d {    |j                         dk(  sJ d d d       d {     |d       d {   \  }}}|j                          d {   }|j                  sJ t        |       d {    t        |       d {    t        |       d {    y 7 j7 ^7 I7 A7 7 # 1 d {  7  sw Y   xY w7 # 1 d {  7  sw Y   xY w7 7 # 1 d {  7  sw Y   xY w7 7 7 7 t7 cw)Nc                 *  K   t        j                         }|j                  d       d {    |j                  d       t	        |      }t        |t        fi | }t        |j                           d {   }t        |d      }|||fS 7 b7 w)N)z	127.0.0.1r   r   r2   ru   )
rl   r   bindlistenr"   r%   rP   r!   getsocknamer&   )rn   listen_socksocket_listenerssl_listenertransport_client
ssl_clientrI   s         rH   setupztest_SSLListener.<locals>.setup  s      nn&/0001(5"?JI&I!0+2I2I2K!LLj:S

 L*44 	1
 Ms"   )BBA
B7B8BBT)rb  )rn   r
   r   zMtuple[tsocket.SocketType, SSLListener[SocketStream], SSLStream[SocketStream]])	accept_https_compatibler   rh   ri   rR   r   filenor    )rI   r  r  r  r  
ssl_serverrq   r   s   `       rH   test_SSLListenerr    s    55	V5 38'M)Kz * *'..00
 	< 	<!333 ))+ < <w"":#:#:;"":#:#:;< <		< 	< !!###!!#r))* *$ ).t(D"DA|Z#**,,J'''
L
)))
J
'''
J
'''9 -:*0	<< < < < <		< 	< 	< 	< 	$* * * *$ #E, *''sU  G"FG"FG"GF 
G
FG'F*5F
6F*97F0F*;F<F* GF(G#F?$G=G"G	G"GG"5G6 G"GG")G*G"<G =G"G"GGF*F*F%FF%!F*(G*F<	0F31F<	8GG"G	G
GG"G"G"G" G")rF   zpytest.FixtureRequestr   zssl.SSLContext)r^   zstdlib_socket.socketrL   r   r   r   )rn   r
   r   zAsyncIterator[SocketStream])rI   r   rn   r
   r   z AsyncIterator[SSLStream[Stream]]r   )rI   r   rn   r
   r   z(Iterator[SSLStream[PyOpenSSLEchoStream]])rI   r   r   r0   r   r0   r   dict[str, Any] | Noner   r  r   z/tuple[SSLStream[T_Stream], SSLStream[T_Stream]])rI   r   rn   r
   r   ri  )rI   r   rn   r
   r   rj  )rI   r   r   r   )r6  r/   rI   r   r   r   )rI   r   rb  r   r   r   )
__future__r   osr   re   r;   sysr   
contextlibr   r   r   	functoolsr   r   typingr	   r
   r   r   r   r   r   r   rg   r   trio._tests.pytest_pluginr   trio.abcr   r   trio.testingr   r   r   r   trustmeOpenSSLr   ImportErrorerror r   rl   _abcr   r   r   _core._tests.tutilr   _highlevel_genericr    _highlevel_open_tcp_streamr!   _highlevel_socketr"   r#   _sslr$   r%   r&   r'   _utilr(   testingr)   r*   r+   r,   r-   typing_extensionsr.   
trio._corer/   	trio._sslr0   
_core._runr1   CAr?   issue_server_certr   r<   PurposeCLIENT_AUTHrP   r=   r>   r3   r   fixturerI   rb   rr   rx   rz   r   r   r   r   __annotations__r   r   r   r   r   r  r  r  r9  rG  rZ  markskipifnameversion_infor_  ra  parametrizerk  ru  r  r  r  r  r  r  r  r  r  r  r  r  r  r  filterwarningsr  r  r  r  r  rw   rJ   rH   <module>r	     s   " 	  
 
  D D       A . '  '  < % 2 8 < F F $  +$"(( wzz|112KL 'S''(?(?@

3*+37777   
 + h'9: ;$ 8=-
-04-	-f > >  UU&)U%U UWF& WFt>0 UU&)U-U U ,0+/""" "
 )" )" 5"0 "//?AT/T!U Y US +:}+DE ESI4<"AJ"J" ss'1s	s slV@. GGtO3((G36  	:  +eT];CC.2C	C <C@3#l;.|>#4"(&&4504("(.(N' JHL	L%
H
X,(S'  '&&'s   )
L LLL