
    G jJ                       % 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J	r	J
r
Jr  S SKJr  S SKJr  S SKJrJrJrJr  S SKrS SKJr  S SKJr  S S	KJrJr  S S
KJrJr   S SKrS SK J!r!  S SKrSSK$J%r%Jr&  SSK'J(r(  SSK%J)r)J*r*  SSK+J,r,  SSK-J.r.  SSK/J0r0  SSK1J2r2J3r3  SSK4J5r5J6r6J7r7J8r8  SSK9J:r:  SSK;J<r<J=r=J>r>J?r?J@r@  \(       a  S SKAJBrBJCrCJDrDJErE  S SKFJGrG  S SKHJIrI  SSKJJKrK  \R                  " 5       rM\MR                  S5      rO\R                  " \R                  R                  5      rS\T" \S5      (       a   \S=R                  \R                  ) -  slU        \OR                  \S5        \R                  " SSS/S 9SYS! j5       rYS"S#.     SZS$ jjrZ\	S[S\S% jj5       r[\	 S[     S]S& jj5       r\ " S' S(\(5      r]S^S) jr^\
 S_     S`S* jj5       r_SSS+.           SaS, jjr`\\\4   raS-\bS.'     Sb       ScS/ jjrc\\\4   rdS-\bS0'     Sb       SdS1 jjreSeS2 jrfSeS3 jrgSeS4 jrhSeS5 jriSeS6 jrj\,      SfS7 j5       rkSeS8 jrlS^S9 jrm\R                  R                  \R                  S::H  =(       a    \R                  S;:  S<S=9SeS> j5       rrSeS? jrs\R                  R                  S@S"SA/5            SgSB j5       ruSeSC jrvSeSD jrwSeSE jrxSeSF jrySeSG jrzSeSH jr{S^SI jr|SeSJ jr}SeSK jr~SeSL jrSeSM jrSeSN jrSeSO jrSeSP jrSeSQ jr\R                  GR                  SRSS5      SeST j5       rSeSU jrSeSV jrSeSW jrSeSX jrg! \" a  r#\" \#5         Sr#C#GNSr#C#ff = f)h    )annotationsN)asynccontextmanagercontextmanagersuppress)partial)
SSLContext)TYPE_CHECKINGAnyNoReturn	TypeAlias)StapledStream)skip_if_optional_else_raise)ReceiveStream
SendStream)MemoryReceiveStreamMemorySendStream)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)AsyncIterator	AwaitableCallableIterator)	MockClock)T_Stream)CancelScopetrio-test-1.example.orgOP_IGNORE_UNEXPECTED_EOFmoduletls13tls12)scopeparamsc                b   [         R                  " 5       n[        [         S5      (       a$  U=R                  [         R                  ) -  sl        [
        R                  U5        U R                  S;   a  U$ U R                  S:X  a!  [         R                  R                  Ul
        U$ [        5       e)Nr1   )defaultr3   r4   )sslcreate_default_contexthasattroptionsr1   TRIO_TEST_CAconfigure_trustparam
TLSVersionTLSv1_2maximum_versionAssertionError)requestctxs     e/root/GenerationalWealth/GenerationalWealth/venv/lib/python3.13/site-packages/trio/_tests/test_ssl.py
client_ctxrG   W   s    

$
$
&Cs.//4444  %}},,
	'	!!nn44
    Fexpect_failc                   [         R                  U SSS9nU   UR                  5          UR                  S5      nU(       dQ  [	        [
        [        R                  5         UR                  5         S S S 5         S S S 5        U R                  5         g UR                  U5        M|  ! , (       d  f       N;= f! , (       d  f       O= fU(       a  [        S5      eOX! [        [        4 a     U R                  5         g [         a*  nU(       a  [        SU5         S nAO[        SU5        e S nAff = fU R                  5         g ! U R                  5         f = f)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   BrokenPipeErrorr9   SSLZeroReturnErrorunwrapclosesendallRuntimeErrorConnectionResetErrorConnectionAbortedError	Exceptionprint)sockrJ   wrappeddataexcs        rF   ssl_echo_serve_syncr`   i   s    
,((!& ) 

   "||D) "/33I3IJ( K L 	

7 %  KJ WF 011  !"89  	

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



sw   C AB8!B'2	B8;C B8'
B5	1B88
CC 	E D1,E >	D1D,E D,,D11E Ec                 #    [         R                  " 5       u  p[        R                  " 5        IS h  vN nU   U   UR	                  [        R
                  R                  [        [        X S95        [        [        R                  " U5      5      7v   S S S 5        S S S 5        S S S 5      IS h  vN   g  N! , (       d  f       N)= f! , (       d  f       N2= f N)! , IS h  vN  (       d  f       g = f7f)NrI   )stdlib_socket
socketpairtrioopen_nursery
start_soon	to_threadrun_syncr   r`   r   tsocketfrom_stdlib_socket)rJ   abnurserys       rF   ssl_echo_server_rawrn      s     ##%DA  ""g ''+QH
 w99!<== Q	 #"" QQ	 #"""ss   1C7B7C7CC
AB9C
C&C71C2C79
CC


C	CC7C4#C&$C40C7c                  #    [        US9 IS h  vN n[        X SS97v   S S S 5      IS h  vN   g  N" N! , IS h  vN  (       d  f       g = f7f)NrI   r0   server_hostname)rn   r!   )rG   rJ   r\   s      rF   ssl_echo_serverrr      s6     
 #{;;t:STT <;;;;;s:   A3A7A5AAAA A
Ac                  j    \ rS rSr S   SS jjrSS jrSS jrSS jrSS jrSS jr	SSS	 jjr
S
rg)PyOpenSSLEchoStream   Nc                4   [         R                  " [         R                  5      nSSKJn  U" 5       nUR                  UR                  R                  5        [        [         S5      (       a   e[        R                  U5        [         R                  " US 5      U l        U R                  R                  5         [        R                  " 5       U l        [#        5       U l        ['        S5      U l        ['        S5      U l        U   Uc  SS jnXPl        g Xl        g )Nr   )BindingOP_NO_TLSv1_4z2simultaneous calls to PyOpenSSLEchoStream.send_allz6simultaneous calls to PyOpenSSLEchoStream.receive_somec                   #    g 7fN )_s    rF   no_op_sleeper3PyOpenSSLEchoStream.__init__.<locals>.no_op_sleeper   s     s   r|   objectreturnNone)r   ContextSSLv23_METHOD,cryptography.hazmat.bindings.openssl.bindingrw   set_optionslibSSL_OP_NO_TLSv1_3r;   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   rE   rw   rl   r}   s         rF   __init__PyOpenSSLEchoStream.__init__   s     kk#++, 	II//0 30000'',^^C.


##%$$&	"+++;@,
( 0@D0
, 	? )L"LrH   c                @   #    U R                   R                  5         g 7frz   )r   bio_shutdownr   s    rF   aclosePyOpenSSLEchoStream.aclose   s     

!s   c                6    U R                   R                  5       $ rz   )r   renegotiate_pendingr   s    rF   r   'PyOpenSSLEchoStream.renegotiate_pending   s    zz--//rH   c                F    U R                   R                  5       (       d   eg rz   )r   renegotiater   s    rF   r   PyOpenSSLEchoStream.renegotiate   s     zz%%''''rH   c                
  #    U R                      [        R                  " 5       I S h  vN   [        R                  " 5       I S h  vN   U R                  S5      I S h  vN   S S S 5        g  NC N( N! , (       d  f       g = f7f)Nwait_send_all_might_not_block)r   r   
checkpointr   r   s    rF   r   1PyOpenSSLEchoStream.wait_send_all_might_not_block   s^     --""$$$""$$$,,>??? .-$$? .-sP   BA2A,A2A.A2A0A2#	B,A2.A20A22
B <Bc                L  #    [        S5        U R                     [        R                  " 5       I S h  vN   [        R                  " 5       I S h  vN   U R	                  S5      I S h  vN   U R
                  R                  U5         U R	                  S5      I S h  vN    U R
                  R                  S5      nU =R                  U-  sl        ML   N N Np N=! [        R                   aA    U R
                  R                  5         [        SU R
                  R                  5       5         O[        R                   a     Of = fU R                  R                  5         U R	                  S5      I S h  vN    [        S5        S S S 5        g ! , (       d  f       g = f7f)Nz  --> transport_stream.send_allsend_all   zrenegotiations:z(  <-- transport_stream.send_all finished)r[   r   r   r   r   r   	bio_writerQ   r   r   ZeroReturnErrorshutdowntotal_renegotiationsWantReadErrorr   
unpark_allr   r^   s     rF   r   PyOpenSSLEchoStream.send_all   s>    /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0F2EFE1F9E<:F
	F$
F!F$c                  #    [        S5        Uc  SnU R                      [        R                  " 5       I S h  vN   [        R                  " 5       I S h  vN    U R	                  S5      I S h  vN    U R
                  R                  U5      U R	                  S5      I S h  vN   [        S5        sS S S 5        $  N Ni NQ N! [        R                   GaN    U R                  (       Ga  [        SU R                  5         U R                  SS nU R
                  R                  [        U5      5        U R                  SS2	  O! [        R                   a     U R
                  R                  U5      s s U R	                  S5      I S h  vN    [        S5        sS S S 5        $ ! [        R                   a3    [        S5        U R                  R                  5       I S h  vN       O<f = ff = f[        S	5        U R                  R                  5       I S h  vN     Of = fGM  ! U R	                  S5      I S h  vN    [        S5        f = f! , (       d  f       g = f7f)
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      rF   r    PyOpenSSLEchoStream.receive_some  s    34>F110F&&(((&&(((,,~666(3#zz226:R ll>222DEc 21((6V 3Q ,, &3  222 ",0G0GHA -1,C,CAa,H	 $

i0@ A, %)$;$;AaC$@% $'#4#4 ;!;+/::+>+>v+F$F" ll>222DEc 21@ (+'8'8 !; %*-$8*.))..*:$:$:!;;, "-0"&)).."222M&3	 X ll>222DEc 21s-  I*IH/B>H/C H/0C1H/6CI$C%I4
I*>H/ H/H/I=H)3E7H)H/G5F*7G58H):H/;IFI 
I**<G1	&G)'G1	,G5-H).H/0G1	1G55+H) H#!H)&H/(H))H//II
II
I'#I*)r   r   r   r   r   r   rz   )r   'Callable[[str], Awaitable[None]] | Noner   r   r   r   )r   bool)r^   r   r   r   )r   
int | Noner   r   )__name__
__module____qualname____firstlineno__r   r   r   r   r   r   r   __static_attributes__r{   rH   rF   rt   rt      sF     <@+#8+# 
+#Z"0(
@>.5F 5FrH   rt   c                    #              SS jn U " SSSS5      I S h  vN   U " SSSS5      I S h  vN   U " SSSS5      I S h  vN   U " SSSS5      I S h  vN   g  N> N- N N7f)	Nc                  #    [        5       n[        R                  " [        R                  " [        R
                  SS95         [        R                  " 5        IS h  vN nUR                  " [        X@5      /UQ76   UR                  " [        XB5      /UQ76   S S S 5      IS h  vN   S S S 5        g  NU N! , IS h  vN  (       d  f       N$= f! , (       d  f       g = f7f)Nsimultaneousmatch)	rt   pytestRaisesGroup	RaisesExcr   BusyResourceErrorre   rf   getattr)func1args1func2args2srm   s         rF   do_testDtest_PyOpenSSLEchoStream_gives_resource_busy_errors.<locals>.do_testU  s       !U44NK
 ))++w""71#4=u=""71#4=u= ,+
 
 ,+++
 
sf   AC#CB4C"9B8C&B6'C+	C#4C6C8C	>C?C	C
C C#r   )   xr   r{   r   )r   )
r   strr   tuple[object, ...]r   r   r   r   r   r   r{   )r   s    rF   3test_PyOpenSSLEchoStream_gives_resource_busy_errorsr   N  s     >>!> > "	>
 
> *gz7
;;;
*g'F
KKK
'
'
	   .$
=== <K >sC   A'AA'A!A'A#A'A%A'!A'#A'%A'c              #  6   #    [        US9n[        X SS9v   g 7f)Nr   r0   rp   )rt   r!   )rG   r   fakesocks      rF   virtual_ssl_echo_serverr   n  s     
 #73H
H:S
TTs   client_kwargsserver_kwargsc               `    Uc  0 nUc  0 n[        UU 4SS0UD6n[        U[        4SS0UD6nXV4$ )Nrq   r0   rL   T)r!   rN   )rG   client_transportserver_transportr   r   
client_ssl
server_ssls          rF   ssl_wrap_pairr   w  so      2 	J   	J !!rH   r   MemoryStapledStreamc                4    [        5       u  p4[        U UUUUS9$ Nr   )r(   r   rG   r   r   r   r   s        rF   ssl_memory_stream_pairr     s,     *<)=&## rH   MyStapledStreamc                4    [        5       u  p4[        U UUUUS9$ r   )r'   r   r   s        rF   ssl_lockstep_stream_pairr     s,     *>)?&## rH   c                &  #    [        U 5       IS h  vN nUR                  (       a   eUR                  S5      I S h  vN   UR                  S5      I S h  vN S:X  d   eUR	                  5       I S h  vN   S S S 5      IS h  vN   [        SS9 IS h  vN n[        R                  " 5       n[        X#SS9nUR                  (       a   e[        R                  " [        5       nUR                  S5      I S h  vN   S S S 5        [        WR                  R                  [        R                  5      (       d   eS S S 5      IS h  vN   [        SS9 IS h  vN n[        X SS9nUR                  (       a   e[        R                  " [        5       nUR                  S5      I S h  vN   S S S 5        [        WR                  R                  [        R                   5      (       d   eS S S 5      IS h  vN   g  GN GN GN GN GN! , IS h  vN  (       d  f       GN= f GN GN0! , (       d  f       GN5= f N! , IS h  vN  (       d  f       GN= f GN N! , (       d  f       N= f Nz! , IS h  vN  (       d  f       g = f7f)Nr   r   TrI   r0   rp   ztrio-test-2.example.org)rr   rL   r   r   r   rn   r9   r:   r!   r   raisesr   
isinstancevalue	__cause__SSLErrorCertificateError)rG   r   r\   bad_client_ctxexcinfos        rF   test_ssl_client_basicsr     s    z**a==  jj^^A&&$...hhj	 +* #t44335d<UV==  ]]./7**T""" 0'--113<<@@@@ 54 #t44d8QR==  ]]./7**T""" 0'--1133G3GHHHH 544! +&	 +*** 5
 # 0/	 5444 5 # 0/ 5444sQ  JH J(HHHHH5H	6H:JHJH*JAI(H0=H->H0=I?J
IJIJ 8I7I$-I".I$2=I7/J:I5;JHH	HJH'HH'"	J-H00
H?	:IJI
II	J"I$$
I2	.I75J7J=J >J
Jc                  ^ ^#    [         R                  " 5       u  mnT   U   [        R                  " U5      n[	        [        U5      [        SS9nUR                  (       d   eS
UU 4S jjn[        R                  " US9nUR                  5         UR                  S5      I S h  vN S:X  d   eUR                  S5      I S h  vN   UR                  S5      I S h  vN S:X  d   eUR                  S5      I S h  vN S	:X  d   eUR                  5       I S h  vN   UR                  5         S S S 5        S S S 5        g  N N} Nf NI N-! , (       d  f       N!= f! , (       d  f       g = f7f)NTrL   c                    > TR                  TSS9 n U R                  S5        U R                  S5      S:X  d   eU R                  S5        U R                  5         S S S 5        g ! , (       d  f       g = f)Nr0   rp   r   r      y   z)rO   rV   rQ   rT   )client_sockrk   rG   s    rF   client&test_ssl_server_basics.<locals>.client  sr    '' 9 (  ##D)"''*d222##D)""$  s   A
A%%
A3)targetr   r   r   r   rH   r   )rb   rc   ri   rj   r!   r   rN   rL   	threadingThreadstartr   r   r   join)rG   rl   server_sockr   r   trk   s   `     @rF   test_ssl_server_basicsr    s%    ##%DAq	
A003$%

  ++++	% 	% F+		%22155===''---%22155===%22155<<<%%'''	9 , 6-55'5 As   E,EBE
%E &E
EE
EE
<E=E
EE
/E7	E, E
E
E
E
E


E	E
E)%E,c                B  #    [        SS9 IS h  vN nU n[        R                  " 5       n[        XSS9nUR                  UL d   eUR
                  UL d   eUR                  S:X  d   eUR                  S:X  d   e[        R                  " [        5         UR                    S S S 5        S[        U5      ;   d   eS[        U5      ;   d   e[        R                  " [        5         SUl        S S S 5        [        R                  " [        5         SUl        S S S 5        X4l        UR
                  UL d   e[        R                  " [        5       nUR                  5       I S h  vN   S S S 5        [        WR                   R"                  [        R$                  5      (       d   eS S S 5      IS h  vN   g  GN! , (       d  f       GN = f! , (       d  f       N= f! , (       d  f       N= f N! , (       d  f       N= f NO! , IS h  vN  (       d  f       g = f7f)	NTrI   r0   rp   Ftransport_streamcontextasdf)rn   r9   r:   r!   r	  r
  rL   rq   r   r   AttributeError
asfdasdfsadirr   rP   r   r   r   r   )rG   r\   good_ctxbad_ctxr   r   s         rF   test_attributesr    s    "t44,,.d6OP!!T))) yyH$$$}}%%%  $====]]>*LL + "SV+++CF"""
 ]]>* AM +]]>* &A + 	yyG###]]./7..""" 0'--113<<@@@@C 544 +* +*** # 0/? 5444s   HF9HBHF<#AH'G/"HG9HG2&G0'G2+=H(H3H4H<
G	H
G	H
G-	)H0G22
H 	<HHHHHHc                  ^^^^^	#    SmSmTT-  m[        5       m	[        5       mSUUU	4S jjnSUUU4S jjn[        U 5       IS h  vN n[        R                  " 5        IS h  vN nUR	                  X5        UR	                  X#5        UR	                  UR
                  5        UR	                  UR
                  5        S S S 5      IS h  vN   UR                  5       I S h  vN   S S S 5      IS h  vN   [        T	5      [        T5      s=:X  a  T:X  d   e   eT	T:X  d   eg  N N N]! , IS h  vN  (       d  f       Nr= f Na NS! , IS h  vN  (       d  f       Nh= f7f)N   i   c                   >#    [        T5       H;  n[        U5        [        U/T-  5      nTU-  mU R                  U5      I S h  vN   M=     g  N	7frz   )ranger[   r   r   )r   ichunkCHUNKS
CHUNK_SIZEsents      rF   sender'test_full_duplex_basics.<locals>.senderG  sL     vA!H1#
*+EEMD**U###	  $s   AAA
Ac                   >#    [        T5      T:  a3  U R                  TS-  5      I S h  vN nTU-  m[        T5      T:  a  M2  g g  N7f)Nr   )lenr   )r   r  r  EXPECTEDreceiveds     rF   receiver)test_full_duplex_basics.<locals>.receiverO  sB     (mh&..q99EH (mh&9s   'A	AA	A	)r   r   r   r   )r   rr   r   re   rf   rP   r   r  )
rG   r  r!  r   rm   r  r  r  r   r  s
        @@@@@rF   test_full_duplex_basicsr#  ?  s    FJ
"H;D{H$ $  z**a%%''7v)x+ q~~.q~~. (' hhj +* t9H1111118 +'''' 	 +***s   AE&D(	E&E&D*'E*AD.ED,E&E'E+E&6E
72E&*E,E.E	4D75E	E
E&E#EE#E&c                  #    [        U 5       nUR                  5       I S h  vN   UR                  R                  5         UR	                  S5      I S h  vN   UR                  S5      I S h  vN S:X  d   eUR	                  S5      I S h  vN   UR                  S5      I S h  vN S:X  d   eUR                  5       I S h  vN   S S S 5        g  N N~ Ng NJ N3 N! , (       d  f       g = f7f)N   ar      b)r   rP   r	  r   r   r   r   rG   r   s     rF   test_renegotiation_simpler(  d  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           	     "
  ^^^^#    SU l         SS KnUR                  S5      mSU4S jjnSUUU4S jjnSU4S jjmSU4S jjm[        XS9 mTR	                  5       I S h  vN   T" S5      I S h  vN   TR
                  R                  5         T" S5      I S h  vN   U" 5       I S h  vN   [        S5       H  n[        US	-  /5      n[        S
U-  S	-  /5      nTR
                  R                  5         [        R                  " 5        IS h  vN nUR                  TU5        UR                  TU5        S S S 5      IS h  vN   [        R                  " 5        IS h  vN nUR                  TU5        UR                  TU5        S S S 5      IS h  vN   U" 5       I S h  vN   M     [        S5       H  n[        US	-  /5      n[        S
U-  S	-  /5      nT" U5      I S h  vN   TR
                  R                  5         T" U5      I S h  vN   [        R                  " 5        IS h  vN nUR                  TU5        UR                  TU5        S S S 5      IS h  vN   U" 5       I S h  vN   M     S S S 5        SS jn	SU4S jjn
[        XS9 mT" S5      I S h  vN   TR
                  R                  5         [        R                  " 5        IS h  vN nUR                  TS5        UR                  U
5        S S S 5      IS h  vN   U" 5       I S h  vN   TR                  5       I S h  vN   S S S 5        SS jn[        UUS9 mT" S5      I S h  vN   TR
                  R                  5         [        R                  " 5        IS h  vN nUR                  TS5        UR                  TR                  5        S S S 5      IS h  vN   U" 5       I S h  vN   TR                  5       I S h  vN   S S S 5        g  GN GN GNv GNj GN GN! , IS h  vN  (       d  f       GN= f GN GN! , IS h  vN  (       d  f       GN= f GN GNs GNL GN1 GN ! , IS h  vN  (       d  f       GN= f GN! , (       d  f       GN= f GN GN GN! , IS h  vN  (       d  f       GN= f GN GN! , (       d  f       GN= f GNs GN> GN! , IS h  vN  (       d  f       GN= f GN N! , (       d  f       g = f7f)Nr   c                n   >#    [         R                  " TR                  SS5      5      I S h  vN   g  N7f)Nr   
   )rd   sleepuniform)r|   rs    rF   r   .test_renegotiation_randomized.<locals>.sleeper  s#     jj1b)***s   *535c                 |  >#    TR                   R                  5       (       ag  [        5          T" S5      I S h  vN   S S S 5        [        5          T " S5      I S h  vN   S S S 5        TR                   R                  5       (       a  Mg  [        S5        g  N\! , (       d  f       N`= f NL! , (       d  f       NP= f7f)N   -z-- clear --)r	  r   r%   r[   )expectr   r   s   rF   clear,test_renegotiation_randomized.<locals>.clear  s       4466#%4j   &#%Tl"" &   4466
 	m ! &% # &%s[   *B<BBBB<B+B)B+!'B<
B<B
B&"B<)B++
B95B<c                   >#    TR                   R                  S5      I S h  vN   [        SU 5        [        5          TR	                  U 5      I S h  vN   S S S 5        g  N= N! , (       d  f       g = f7f)Nz
outer sendzcalling SSLStream.send_all)r	  r   r[   r%   r   )byter   s    rF   r   +test_renegotiation_randomized.<locals>.send  s]       ((666*D1!**T""" "! 	7 # "!s8   A5A A5A$A"A$
A5"A$$
A2.A5c                  >#    TR                   R                  S5      I S h  vN   [        SU 5        [        U 5      S:X  d   e[	        5          TR                  S5      I S h  vN U :X  d   e S S S 5        g  NU N! , (       d  f       g = f7f)Nr2  z)calling SSLStream.receive_some, expectingr   )r	  r   r[   r  r%   r   )expectedr   s    rF   r2  -test_renegotiation_randomized.<locals>.expect  sw       ((22298D8}!!!!**h666 "! 	3 + "!s9   BA8+BA<#A:$
A</
B:A<<
B
Br   r%  d      r   c                Z   #    U S:X  a  [         R                  " S5      I S h  vN   g g  N7f)Nr   順 rd   r,  methods    rF   sleeper_with_slow_send_allAtest_renegotiation_randomized.<locals>.sleeper_with_slow_send_all  s'     Z**V$$$  $s    +)+c                    >#    [         R                  " S5      I S h  vN   T R                  5       I S h  vN   g  N N7f)N  )rd   r,  r   r   s   rF   sleep_then_wait_writable?test_renegotiation_randomized.<locals>.sleep_then_wait_writable  s2     jj--/// 	/s   ?;?=??r   c                   #    U S:X  a  [         R                  " S5      I S h  vN   g U S:X  a  [         R                  " S5      I S h  vN   g g  N+ N7f)Nr   r>  r2  rE  r?  r@  s    rF   *sleeper_with_slow_wait_writable_and_expectQtest_renegotiation_randomized.<locals>.sleeper_with_slow_wait_writable_and_expect  sG     44**V$$$x**T"""   %"s!    AA$AAAAr   r   )r6  r   r   r   )r9  r   r   r   )rA  r   r   r   )autojump_thresholdrandomRandomr   rP   r	  r   r  r   r   re   rf   r   r   )
mock_clockrG   rM  r   r3  r  b1b2rm   rB  rG  rJ  r2  r.  r   r   s               @@@@rF   test_renegotiation_randomizedrR  u  s     %&J!aA+ #7 
!	=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 
!	PTU4j	&&(%%''7vt,78 (' ghhj 
Q# 
!:
 
4j	&&(%%''7vt,q>>? (' ghhj
 
M 	 ,+++ ,+++ 
 ++++ = 
>	=f 	'''' 	 
Q	P2 	'''' 	
 
s  ATR"P#R2P3)RPR+P,A&RP
R%P;RPR$P9
%R(%P?RP<R'Q(AR*Q+)RQ R2Q#
3R6%Q)R&Q&'R5R6R>TS(R)7S R!S$$R"SRS"R=#S:S ;S?TS>"S#7S>SS>.SS>SS>&S9'S>>S<?S>	TRRRRRRP6$P'%P61	R<R?QQQ	RR R#R&R)R/Q20R<	R
RTSSS"R:	(R+)R:	5	S S
STS>S>S>S6	$S'%S6	1	S><S>>
TTc                  ^ #    [         R                  [         R                  [         R                  R                  [         R                  R
                  4      nSS jnSS jnSS jn      SU 4S jjnU" X"5      I S h  vN   U" X35      I S h  vN   U" X$5      I S h  vN   U" XD5      I S h  vN   g  N5 N' N N7f)Nc                   #    [        5          U R                  S5      I S h  vN   S S S 5        g  N! , (       d  f       g = f7f)Nr   )r%   r   rF  s    rF   do_send_all.test_resource_busy_errors.<locals>.do_send_all  s0     !**T""" "!" "!$   A202	A2
A Ac                   #    [        5          U R                  S5      I S h  vN   S S S 5        g  N! , (       d  f       g = f7fNr   )r%   r   rF  s    rF   do_receive_some2test_resource_busy_errors.<locals>.do_receive_some  s0     !..### "!# "!rW  c                   #    [        5          U R                  5       I S h  vN   S S S 5        g  N! , (       d  f       g = f7frz   )r%   r   rF  s    rF    do_wait_send_all_might_not_blockCtest_resource_busy_errors.<locals>.do_wait_send_all_might_not_block  s0     !11333 "!3 "!s#   A1/1	A1
?Ac                  >#    [        T5      u  p#[        R                  " [        R                  " [        R
                  SS95         [        R                  " 5        IS h  vN nUR                  X5        UR                  X5        S S S 5      IS h  vN   S S S 5        g  N? N! , IS h  vN  (       d  f       N$= f! , (       d  f       g = f7f)Nzanother taskr   )r   r   r   r   r   r   re   rf   )r   r   r   r|   rm   rG   s        rF   r   *test_resource_busy_errors.<locals>.do_test  s      (
3U44NK
 ))++w""5,""5, ,+
 
 ,+++
 
sf   ACC "B"#C &#B&	C B$C 	C"C $C &B=	,B/-B=	9C  
C
C)r   Sr   r   )r   Callable[[S], Awaitable[None]]r   rb  r   r   )rd   r!   r   abcr   r   )rG   ra  rU  rZ  r]  r   s   `     rF   test_resource_busy_errorsrd    s     >>488..0F0FFGA#$4
--
--
- 

- +
+++
/
333
+
@@@
2
UUU ,3@UsH   A?C B8C B:C "B<#C 2B>3C :C <C >C c                    ^#    / m " U4S jS[         5      n [        R                  " 5       n[        U " 5       USS9nUR	                  5       I S h  vN   TS/:X  d   eg  N7f)Nc                  H   > \ rS rSrSU 4S jjrSS jrS	S
S jjrSS jrSrg)Etest_wait_writable_calls_underlying_wait_writable.<locals>.NotAStreami  c                0   >#    TR                  S5        g 7f)Nok)append)r   records    rF   r   ctest_wait_writable_calls_underlying_wait_writable.<locals>.NotAStream.wait_send_all_might_not_block  s     MM$s   c                    #    [        S5      e7fNzShould not get calledrC   r   s    rF   r   Ltest_wait_writable_calls_underlying_wait_writable.<locals>.NotAStream.aclose        !899   Nc                    #    [        S5      e7frn  ro  )r   	max_bytess     rF   r   Rtest_wait_writable_calls_underlying_wait_writable.<locals>.NotAStream.receive_some  rq  rr  c                    #    [        S5      e7frn  ro  r   s     rF   r   Ntest_wait_writable_calls_underlying_wait_writable.<locals>.NotAStream.send_all!  rq  rr  r{   r   rz   )rt  r   r   zbytes | bytearray)r^   zbytes | bytearray | memoryviewr   r   )	r   r   r   r   r   r   r   r   r   )rk  s   rF   
NotAStreamrg    s    	 	:	:	:rH   rx  xrp   ri  )r   r9   r:   r!   r   )rx  rE   r   rk  s      @rF   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                  #    [        U 5       IS h  vN n[        5          UR                  5       I S h  vN   S S S 5        [        5          UR                  5       I S h  vN   S S S 5        [        5          UR                  5       I S h  vN   S S S 5        [        5          UR	                  S5      I S h  vN   S S S 5        [        5          UR                  S5      I S h  vN   S S S 5        [        5          UR                  S5      I S h  vN   S S S 5        [        5          UR                  S5      I S h  vN   S S S 5        [        5          UR                  5       I S h  vN   S S S 5        S S S 5      IS h  vN   [        U 5       IS h  vN nUR                  5       I S h  vN   [        5          UR                  5       I S h  vN   S S S 5        S S S 5      IS h  vN   g  GN GN! , (       d  f       GN= f GN! , (       d  f       GN= f GN! , (       d  f       GN= f GNv! , (       d  f       GN{= f GN_! , (       d  f       GNd= f GNH! , (       d  f       GNM= f GN1! , (       d  f       GN6= f GN! , (       d  f       GN = f GN! , IS h  vN  (       d  f       GN.= f GN" GN N! , (       d  f       N= f N! , IS h  vN  (       d  f       g = f7f)Ns   xxxr   )rr   r%   rP   r   r   r   rT   r   r'  s     rF   test_checkpointsr  *  s    
 z**a!..""" "!..""" "!11333 "!**V$$$ "!..### "  !..### "!..### "!((* "' +*, z**ann!((* " +**- +" "! # "! 4 "! % "! $ "! $ "! $ "!  "!' +***, + "! +***s  K)G+K)JG1G.G1JH H!H%J7HHHJ"H07H-8H0<JI#I$I(J:IIIJ&I/;I,<I/ JJ&J'J+J3K)>J?K)J4K)K*J7+K9J<J:J<KK)%K&K).G11
H 	;JH
H	JH
H*	%J-H00
H?	:JI
I	JI
I)	$J,I//
I>	9JJ
J	JK)J1J" J1,	K)7K:J<<
K
	KK)K&KK&"K)c                l  #    [        U 5       IS h  vN nUR                  5       I S h  vN   [        5          UR                  S5      I S h  vN   S S S 5        [        5          UR                  S5      I S h  vN   S S S 5        UR                  S5      I S h  vN   UR	                  S5      I S h  vN S:X  d   eUR                  5       I S h  vN   S S S 5      IS h  vN   g  N N N! , (       d  f       N= f N! , (       d  f       N= f Nv N_ NC N5! , IS h  vN  (       d  f       g = f7f)NrH   r   r   )rr   rP   r%   r   r   r   r'  s     rF   test_send_all_empty_stringr  K  s     z**ann  !**S/!! "!**S/!! "jj^^A&&$...hhj +**
 " "! " "!& +***s   D4C(D4DC*DC.C,C.D%D:C?;D?DDD4D5DDDD4"D#D4*D,C..
C<	8D?D
D	DDDD4D1 D#!D1-D4https_compatibleTc                \   ^ ^#    SU U4S jjnSU 4S jjn[        X#5      I S h  vN   g  N7f)Nc                 *   >#    [        T ST0ST0S9$ 7f)Nr  r   )r   )rG   r  s   rF   stream_maker,test_SSLStream_generic.<locals>.stream_maker`  s*      &-/?@-/?@
 	
s   c                 4  >#    [        T5      u  p[        R                  " 5        IS h  vN nUR                  U R                  5        UR                  UR                  5        S S S 5      IS h  vN   X4$  NM N	! , IS h  vN  (       d  f       X4$ = f7frz   )r   r   re   rf   rP   )r   serverrm   rG   s      rF   clogged_stream_maker4test_SSLStream_generic.<locals>.clogged_stream_makerj  sy      2*= %%''7v223v223 (' ~ (''' ~sD   'BA8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&   )rG   r  r  r  s   ``  rF   test_SSLStream_genericr  [  s%     

 
  |
BBBs    ,*,c                z  ^^^^^#    [        U 5      u  mmTR                  mTR                  m[        5       mSUUU4S jjnSUUU4S jjn[        R                  " 5        IS h  vN nUR                  U5        UR                  U5        S S S 5      IS h  vN   g  N7 N! , IS h  vN  (       d  f       g = f7f)Nc                 <  >#    TR                  5       I S h  vN   TR                  S5      I S h  vN   TR                  S5      I S h  vN S:X  d   eTR                  S5      I S h  vN   T" S5       IS h  vN   TR                  R                  n S TR                  l        S S S 5      IS h  vN   TR                  S5      I S h  vN S:X  d   eTR
                  TL d   eTR                  5       I S h  vN u  pUTL d   eUS:X  d   eTR
                  b   eUR                  S5      I S h  vN   W TR                  l        TR                  R	                  5       I S h  vN   g  GNS GN= GN' GN N N! , IS h  vN  (       d  f       N= f N N Nf N57f)Nr   r   r   r   r   rH      trailing)rP   r   r   send_streamsend_all_hookr	  rT   )r  rawtrailingr   r   seqs      rF   r   test_unwrap.<locals>.client  sk    %%'''!!$''',,Q//4777!!$'''
 q66,88FFM9=((6 6  ,,Q//3666**.>>>>(//11&&&&3**222ll;''' 6C$$2**88:::1 	('/'
 666 0 2 	(
 	;s   FE*FE-F	E0
F(E3)F9E6:F=(E:%F0E81F	F
.F8F98F1F22F$F%F-F0F3F6F8F:F FFFFFFc                   >#    TR                  5       I S h  vN   TR                  S5      I S h  vN S:X  d   eTR                  S5      I S h  vN   TR                  S5      I S h  vN S:X  d   eT" S5       IS h  vN   TR                  5       I S h  vN u  pS S S 5      IS h  vN   W TL d   eWS:X  d   eTR                  b   eg  N N N Nj NU N? N/! , IS h  vN  (       d  f       ND= f7f)Nr   r   r   r   r  )rP   r   r   rT   r	  )r  r  r  r   r   s     rF   r  test_unwrap.<locals>.server  s     %%''',,Q//4777!!$''',,Q//4777
 q66","3"3"55MC 6&&&&;&&&**222 	(/'/
 5 666s   C5CC5CC5CC5(C)C5?C C5CCCC5)C*$C5C5C5C5C5CC5C2!C$"C2.C5r   )r   r	  r$   r   re   rf   )	rG   r   r  rm   r   r   r  r   r   s	       @@@@@rF   test_unwrapr  }  s     3J?J
!22!22
+C; ;63 3 !!##w6"6" $#####sH   AB;%B&B;)#B!B;BB;B;!B8'B*(B84B;c                  ^^#    [        U 5      u  mmTR                  nSU4S jjnSU4S jjn[        R                  " 5        IS h  vN nUR	                  U5        UR	                  U5        S S S 5      IS h  vN   [
        R                  " [        5         UR                  S5      I S h  vN   S S S 5        [        5          TR                  5       I S h  vN   S S S 5        [        5          TR                  5       I S h  vN   S S S 5        [
        R                  " [        5         TR                  S5      I S h  vN   S S S 5        [
        R                  " [        5         TR                  S5      I S h  vN S:X  d   e S S S 5        [
        R                  " [        5         TR                  5       I S h  vN   S S S 5        [
        R                  " [        5         TR                  5       I S h  vN   S S S 5        [        U 5      u  mmSU4S jjn[        R                  " 5        IS h  vN nUR	                  TR                  5        UR	                  U5        S S S 5      IS h  vN   g  GN/ GN ! , IS h  vN  (       d  f       GN= f GN! , (       d  f       GN= f GN! , (       d  f       GN= f GN! , (       d  f       GN= f GN! , (       d  f       GN= f GNp! , (       d  f       GNn= f GNC! , (       d  f       GNH= f GN! , (       d  f       GN"= f N N! , IS h  vN  (       d  f       g = f7f)Nc                    >#    [        5          T R                  5       I S h  vN   S S S 5        g  N! , (       d  f       g = f7frz   )r%   r   )r   s   rF   client_closer-test_closing_nice_case.<locals>.client_closer  s1     !##%%% "!% "!s$   A202	A2
A Ac                   >#    T R                  S5      I S h  vN S:X  d   eT R                  S5      I S h  vN S:X  d   e[        5          T R                  5       I S h  vN   S S S 5        g  NU N8 N! , (       d  f       g = f7fNr+  rH   )r   r%   r   r   s   rF   server_closer-test_closing_nice_case.<locals>.server_closer  sq     ,,R00C777,,R00C777!##%%% "! 10% "!sI   BA.BA0BA4 A2!A4%
B0B2A44
B>Bs   123r+  rH   c                   >#    [        5          T R                  S5      I S h  vN S:X  d   e S S S 5        [        5          T R                  5       I S h  vN   S S S 5        g  N?! , (       d  f       N<= f N ! , (       d  f       g = f7fr  )r%   r   r   r  s   rF   expect_eof_server1test_closing_nice_case.<locals>.expect_eof_server  sh     !#0044;;; "!##%%% "! 5 "! & "!sU   B	A%A#
A%B	A8A6A8	B	#A%%
A3/B	6A88
BB	r   )r   r	  r   re   rf   r   r   r   r   r%   r   r   rT   rP   )rG   r   r  r  rm   r  r   r   s         @@rF   test_closing_nice_caser    sC     4J?J
!22&& !!##w=)=) $#
 
*	+''/// 
, 
	!!! 
		!!! 
 
*	+!!&))) 
,
 
*	+,,R00C777 
, 
*	+!!! 
, 
*	+%%''' 
,
 4J?J
& !!##w:,,-,- $##O $### 	0 
,	+
 	" 
	 	" 
	
 	* 
,	+ 1 
,	+ 	" 
,	+ 	( 
,	+ $###s  AM	I7	M	#I=/M	:I:;M	J.J/J3M	J0J-J0M	0KKK	"M	+K KK"M	'K/<K,=
K/"M	*L>L?L"M	%L9L:L>7M	5L+6M	9-L/&M	1L-2M	:M	=JJJM	J
J*%M	-J00
J?:M	K
KM	K
K)$M	,K//
K>9M	L
LM	L
L(#	M	-M	/M5L86MM	c                h  ^#    [        U 5      u  p[        R                  " 5        IS h  vN nUR                  UR                  5        UR                  UR                  5        S S S 5      IS h  vN   SS jnXAR
                  R                  l        [        R                  " [        5         UR                  S5      I S h  vN   S S S 5        [        R                  " [        5         UR                  5       I S h  vN   S S S 5        SmSU4S jjnXQR
                  R                  l        XQR
                  R                  l        UR!                  5       I S h  vN   TS:X  d   eg  GN@ N! , IS h  vN  (       d  f       GN= f N! , (       d  f       N= f N! , (       d  f       N= f NS7f)Nc                    #    [         e7frz   KeyErrorr{   rH   rF   bad_hook3test_send_all_fails_in_the_middle.<locals>.bad_hook  
        	r   r   c                    > T S-  m g rY  r{   )closeds   rF   
close_hook5test_send_all_fails_in_the_middle.<locals>.close_hook  s    !rH   r   r   r   r   )r   r   re   rf   rP   r	  r  r  r   r   r  r   r   r   r  receive_streamr   )rG   r   r  rm   r  r  r  s         @rF   !test_send_all_fails_in_the_middler    s4    +J7NF!!##w6../6../ $# 9A''5	x	 ood### 
! 
*	+22444 
, F 6@''28B**5
--/Q;;3 $### 	$ 
!	  	5 
,	+ s   'F2E*F27E/%F20E-1=F2.FF
F"F2*F>F?FAF2F0F2-F2/F5E86FF2
F
FF2F
F-)F2c                  ^^	#    [        5       u  p[        UU SS9n[        U[        SS9n[        UU SS9m[        U[        SS9m	SU4S jjnSU	4S jjn[        R                  " 5        IS h  vN nUR                  U5        UR                  U5        S S S 5      IS h  vN   g  N7 N! , IS h  vN  (       d  f       g = f7f)Nr0   rp   Tr   c                    >#    T R                  S5      I S h  vN   T R                  S5      I S h  vN S:X  d   eg  N$ N7f)N   hir+     bye)r   r   )client_2s   rF   r   !test_ssl_over_ssl.<locals>.client!  s>     &&&**2..&888 	'.s   A=A?AAc                    >#    T R                  S5      I S h  vN S:X  d   eT R                  S5      I S h  vN   g  N$ N7f)Nr+  r  r  )r   r   )server_2s   rF   r  !test_ssl_over_ssl.<locals>.server%  s>     **2..%777''' /'s   A=A?AAr   )r(   r!   rN   r   re   rf   )
rG   client_0server_0client_1server_1r   r  rm   r  r  s
           @@rF   test_ssl_over_sslr    s     +-H1H
 :4@H1H
 :4@H9( !!##w6"6" $#####sH   A*C.B&/C2#B*C B(!C(C*C0B31C=Cc                  #    [        U 5      u  p[        R                  " 5        IS h  vN nUR                  UR                  5        UR                  UR                  5        S S S 5      IS h  vN   [
        R                  " U5      I S h  vN   [        R                  " [        5         UR                  S5      I S h  vN   S S S 5        [        R                  " [        5         UR                  S5      I S h  vN   S S S 5        UR                  5       I S h  vN   g  N N! , IS h  vN  (       d  f       N= f N N! , (       d  f       N= f NX! , (       d  f       N\= f NK7f)Nr+  
   xxxxxxxxxx)r   r   re   rf   rP   rd   r   r   r   r   r   r   r   rG   r   r  rm   s       rF   test_ssl_bad_shutdownr  .  s     +J7NF!!##w6../6../ $# 
 
 
(((	*	+!!"%%% 
,	*	+ooi((( 
, --/ $### ) 	& 
,	+ 	) 
,	+ s   'E+D#E+7D'$E+/D%0E+EE+,EEE"E+(E=E>EE+E)E+%E+'D>-D0.D>:E+E
EE+E
E&"E+c                  #    [        U SS0SS0S9u  p[        R                  " 5        IS h  vN nUR                  UR                  5        UR                  UR                  5        S S S 5      IS h  vN   [
        R                  " U5      I S h  vN   UR                  S5      I S h  vN S:X  d   e[        R                  " [        5         UR                  S5      I S h  vN   S S S 5        UR                  5       I S h  vN   g  N N! , IS h  vN  (       d  f       N= f N N NG! , (       d  f       NK= f N:7f)Nr  Tr   r   r+  rH   r  )r   r   re   rf   rP   rd   r   r   r   r   r   r   r   r  s       rF    test_ssl_bad_shutdown_but_its_okr  ?  s     +)40)40NF !!##w6../6../ $# 
 
 
((($$R((C///	*	+ooi((( 
, --/ $### )(( 
,	+ s   +ED
E7D(E3D4ED(E*D*+$ED.$D,%D.)ED?EED%DD%!E*E,D..
D<8Ec                 f  #    [        SS9 IS h  vN n [        R                  " 5       n[        XSS9n[        R
                  " [        5         UR                  5       I S h  vN   S S S 5        S S S 5      IS h  vN   g  No N! , (       d  f       N#= f N! , IS h  vN  (       d  f       g = f7f)NTrI   r0   rp   )rn   r9   r:   r!   r   r   r   r   )r\   rG   r   s      rF   (test_ssl_handshake_failure_during_acloser  S  sy     
 #t44//1
d8QR ]]./((* 0 544  0/ 5444sn   B1B B1:BB"B#B'B/B1:B;B1B
B	BB1B.B B.*B1c                d  ^^#    [        U 5      u  p[        R                  " 5        IS h  vN nUR                  UR                  5        UR                  UR                  5        S S S 5      IS h  vN   UR
                  R                  R                  mSmSUU4S jjnXAR
                  R                  l        [        R                  " [        5         UR                  5       I S h  vN   S S S 5        TS:X  d   eg  N N! , IS h  vN  (       d  f       N= f N3! , (       d  f       N7= f7f)Nr   c                 2   > T c   eT " 5         TS-  m[         erY  r  )client_orig_close_hooktransport_close_counts   rF   r  4test_ssl_only_closes_stream_once.<locals>.close_hookr  s%    %111 "rH   r   r  )r   r   re   rf   rP   r	  r  r  r   r   r  r   )rG   r   r  rm   r  r  r  s        @@rF    test_ssl_only_closes_stream_oncer  f  s      ,J7NF!!##w6../6../ $# $44@@KK  6@''2	x	 mmo 
! A%%%% $###" 	 
!	 so   'D0C?D07D&D01D2A#D0D)D*D.D0D0D	D
DD0D
D-)D0c                6  ^#    [        U SS0SS0S9u  nm[        R                  " 5        IS h  vN nUR                  UR                  5        UR                  TR                  5        S S S 5      IS h  vN   SU4S jjn[        R                  " 5        IS h  vN nUR                  UR
                  5        UR                  U5        S S S 5      IS h  vN   g  N Ni! , IS h  vN  (       d  f       N~= f N_ N%! , IS h  vN  (       d  f       g = f7f)Nr  FTr  c                    >#    [         R                  " [        5       n TR                  S5      I S h  vN   S S S 5        [	        W R
                  R                  5      (       d   eg  N3! , (       d  f       N7= f7f)Nr+  )r   r   r   r   r"   r   r   )r   r  s    rF   receive_and_expect_errorKtest_ssl_https_compatibility_disagreement.<locals>.receive_and_expect_error  sX     ]]./7%%b))) 0 w}}..//// * 0/s+   A:A)A'A)/A:'A))
A73A:r   )r   r   re   rf   rP   r   )rG   r   rm   r  r  s       @rF   )test_ssl_https_compatibility_disagreementr    s     +)51)40NFF !!##w6../6../ $#0 !!##w6==)34 $## $### $###s   ,DCD7C!*D5C6%DC;D-C?DC=DD!C8'C*(C84D=D?DDDDc                2  ^#    [        U SS0SS0S9u  nmSU4S jjn[        R                  " 5        IS h  vN nUR                  UR                  5        UR                  U5        S S S 5      IS h  vN   g  NA N! , IS h  vN  (       d  f       g = f7f)Nr  Tr  c                 P   >#    T R                  S5      I S h  vN S:X  d   eg  N7fr  )r   )r  s   rF   server_expect_clean_eofEtest_https_mode_eof_before_handshake.<locals>.server_expect_clean_eof  s%     ((,,333,s   &$&r   )r   r   re   rf   r   )rG   r   r  rm   r  s       @rF   $test_https_mode_eof_before_handshaker    st     +)40)40NFF4 !!##w6==)23 $#####sD   4BA9B-A=(B3A;4B;B=BBBBc                ,  #    [        U 5      u  pSS jnX1R                  R                  l        [        R
                  " [        5         [        5          UR                  5       I S h  vN   S S S 5        S S S 5        [        R
                  " [        5         [        5          UR                  5       I S h  vN   S S S 5        S S S 5        g  Nc! , (       d  f       Ng= f! , (       d  f       Np= f N9! , (       d  f       N== f! , (       d  f       g = f7f)Nc                    #    [         e7frz   r  r{   rH   rF   r  2test_send_error_during_handshake.<locals>.bad_hook  r  r  r  )
r   r	  r  r  r   r   r  r%   rP   r   )rG   r   _serverr  s       rF    test_send_error_during_handshaker    s     ,Z8OF 9A''5	x	 !%%''' " 
! 
*	+!%%''' " 
,	+ ( "! 
!	  ( "! 
,	+s   AD	CC(C)C-C5"DD"C26C07C2;D	DC
C	C
C-)D0C22
D 	<D
DDc                b  ^#    [        U 5      u  mnSS jnUTR                  R                  l        SU4S jjn[        R
                  " 5        IS h  vN nUR                  X4R                  5        UR                  UR                  5        S S S 5      IS h  vN   [        R                  " [        5         [        5          TR                  5       I S h  vN   S S S 5        S S S 5        g  N NU! , IS h  vN  (       d  f       Nj= f N3! , (       d  f       N7= f! , (       d  f       g = f7f)Nc                    #    [         e7frz   r  r{   rH   rF   r  5test_receive_error_during_handshake.<locals>.bad_hook  r  r  c                  >#    [         R                  " [        5         [        5          TR	                  5       I S h  vN   S S S 5        S S S 5        U R                  5         g  N%! , (       d  f       N)= f! , (       d  f       N2= f7frz   )r   r   r  r%   rP   cancel)cancel_scoper   s    rF   client_side8test_receive_error_during_handshake.<locals>.client_side  sX     ]]8$#%))+++ & % 	 , &% %$sC   BA6A%A#A%A6
B#A%%
A3	/A66
B Br  )r  r/   r   r   )r   r	  r  receive_some_hookr   re   rf   r  rP   r   r   r   r%   )rG   r  r  r  rm   r   s        @rF   #test_receive_error_during_handshaker    s     +J7NFF @HF**< !!##w;(<(<=6../ $# 
*	+!%%''' " 
,	+	 $### ( "! 
,	+s   AD/C-D/7C1D/C/D/8DDDDD$
D//D/1D7C:8DD/D
D	D
D,(D/c                .   [        U 5      u  p[        R                  " [        5         UR	                  5         S S S 5        [        R                  " [        5         UR	                  5         S S S 5        g ! , (       d  f       NB= f! , (       d  f       g = frz   )r   r   r   r   selected_alpn_protocolrG   r   r  s      rF   ,test_selected_alpn_protocol_before_handshaker    sa    +J7NF	)	*%%' 
+ 
)	*%%' 
+	* 
+	* 
+	*   A5B5
B
Bc                  #    [        U 5      u  p[        R                  " 5        IS h  vN nUR                  UR                  5        UR                  UR                  5        S S S 5      IS h  vN   UR                  5       b   eUR                  5       b   eUR                  5       UR                  5       :X  d   eg  N NQ! , IS h  vN  (       d  f       Nf= f7frz   )r   r   re   rf   rP   r  r  s       rF   (test_selected_alpn_protocol_when_not_setr    s      ,J7NF!!##w6../6../ $# ((*222((*222((*f.K.K.MMMM $###E   'CB?C7C$C/C0ACCC	C
CCc                .   [        U 5      u  p[        R                  " [        5         UR	                  5         S S S 5        [        R                  " [        5         UR	                  5         S S S 5        g ! , (       d  f       NB= f! , (       d  f       g = frz   )r   r   r   r   selected_npn_protocolr  s      rF   +test_selected_npn_protocol_before_handshaker    sa    +J7NF	)	*$$& 
+ 
)	*$$& 
+	* 
+	* 
+	*r  zCignore: ssl module. NPN is deprecated, use ALPN instead:UserWarningzAignore:ssl NPN is deprecated, use ALPN instead:DeprecationWarningc                  #    [        U 5      u  p[        R                  " 5        IS h  vN nUR                  UR                  5        UR                  UR                  5        S S S 5      IS h  vN   UR                  5       b   eUR                  5       b   eUR                  5       UR                  5       :X  d   eg  N NQ! , IS h  vN  (       d  f       Nf= f7frz   )r   r   re   rf   rP   r  r  s       rF   'test_selected_npn_protocol_when_not_setr    s      ,J7NF!!##w6../6../ $# '')111'')111'')V-I-I-KKKK $###r  c                .   [        U 5      u  p[        R                  " [        5         UR	                  5         S S S 5        [        R                  " [        5         UR	                  5         S S S 5        g ! , (       d  f       NB= f! , (       d  f       g = frz   )r   r   r   r   get_channel_bindingr  s      rF   )test_get_channel_binding_before_handshaker    sa    +J7NF	)	*""$ 
+ 
)	*""$ 
+	* 
+	* 
+	*r  c                  #    [        U 5      u  p[        R                  " 5        IS h  vN nUR                  UR                  5        UR                  UR                  5        S S S 5      IS h  vN   UR                  5       c   eUR                  5       c   eUR                  5       UR                  5       :X  d   eg  N NQ! , IS h  vN  (       d  f       Nf= f7frz   )r   r   re   rf   rP   r  r  s       rF   (test_get_channel_binding_after_handshaker    s     +J7NF!!##w6../6../ $# %%'333%%'333%%'6+E+E+GGGG $###r  c                  #    [        U 5      u  p[        R                  " 5        IS h  vN nUR                  UR                  5        UR                  UR                  5        S S S 5      IS h  vN   UR                  5       b   e[        UR                  5       5        SUR                  5       S   ;   d   eg  N NL! , IS h  vN  (       d  f       Na= f7f)N)DNSr0   subjectAltName)r   r   re   rf   rP   getpeercertr[   r  s       rF   test_getpeercertr    s     +J7NF!!##w6../6../ $# '''	&


-1C1C1EFV1WWWW $###sE   'CB:C7B>$C/B<0AC<C>CCCCc           	       ^ #     S   SU 4S jjjnU" 5       I S h  vN u  p#nU IS h  vN   UR                  5       I S h  vN nU IS h  vN   UR                  (       a   e[        R                  " 5        IS h  vN nUR	                  UR
                  5        UR	                  UR
                  5        S S S 5      IS h  vN   S S S 5      IS h  vN   UR                  5       I S h  vN   UR                  5       S:X  d   eS S S 5      IS h  vN   U" SS9I S h  vN u  psnUR                  5       I S h  vN nUR                  (       d   e[        U5      I S h  vN   [        U5      I S h  vN   [        U5      I S h  vN   g  GNq GNf GNQ GNI GN N! , IS h  vN  (       d  f       N= f N! , IS h  vN  (       d  f       N= f N N! , IS h  vN  (       d  f       N= f N N N N Nr7f)Nc                   >#    [         R                  " 5       nUR                  S5      I S h  vN   UR                  S5        [	        U5      n[        U[        U S9n[        UR                  5       6 I S h  vN n[        UTSS9nXU4$  N\ N7f)N)z	127.0.0.1r   r   r  r0   rp   )
ri   r   bindlistenr   r    rN   r   getsocknamer!   )r  listen_socksocket_listenerssl_listenertransport_client
ssl_clientrG   s         rF   setuptest_SSLListener.<locals>.setup*  s      nn&/0001(5"-
 "1+2I2I2K!LL5


 *44 	1 Ms"   *BB
AB6B7BBTr  F)r  r   r   zMtuple[tsocket.SocketType, SSLListener[SocketStream], SSLStream[SocketStream]])	accept_https_compatibler   re   rf   rP   r   filenor   )rG   r  r	  r  r  
ssl_serverrm   r|   s   `       rF   test_SSLListenerr  )  s    !&55	V5 5* 38'M)Kzz'..00
:!3333 ))++w"":#:#:;"":#:#:; ,+	 : !!###!!#r))) z$ ).t(D"DAZ#**,,J''''
L
)))
J
'''
J
'''9 -:0 ,+++	 ::: 	$ zzz$ #E, *''sV  G<FG<FG<GF
GFG-F:>F
?F:7F9F:FF:	GF8G,G-GG<GG< G2!G<;G4<%G<!G6"G<4G85G<G:G<G<GGF:F:F5$F'%F51F:8G:G	 GG	GG<G/G!G/+G<4G<6G<8G<:G<)rD   zpytest.FixtureRequestr   zssl.SSLContext)r\   zstdlib_socket.socketrJ   r   r   r   r  )rJ   r   r   zAsyncIterator[SocketStream])rG   r   rJ   r   r   z AsyncIterator[SSLStream[Stream]]r   rz   )rG   r   r   r   r   z(Iterator[SSLStream[PyOpenSSLEchoStream]])rG   r   r   r.   r   r.   r   dict[str, Any] | Noner   r  r   z/tuple[SSLStream[T_Stream], SSLStream[T_Stream]])NN)rG   r   r   +dict[str, str | bytes | bool | None] | Noner   r  r   r  )rG   r   r   r  r   r  r   r  )rG   r   r   r   )rO  r-   rG   r   r   r   )rG   r   r  r   r   r   )
__future__r   osr   rb   r9   sysr  
contextlibr   r   r   	functoolsr   r   typingr	   r
   r   r   r   rd   r   trio._tests.pytest_pluginr   trio.abcr   r   trio.testingr   r   trustmeOpenSSLr   ImportErrorerror r   ri   _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(   collections.abcr)   r*   r+   r,   
trio._corer-   	trio._sslr.   
_core._runr/   CAr=   issue_server_certr   r:   PurposeCLIENT_AUTHrN   r;   r<   r1   r   fixturerG   r`   rn   rr   rt   r   r   r   r   __annotations__r   r   r   r   r  r  r#  r(  rR  rd  rz  markskipifnameversion_infor  r  parametrizer  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  filterwarningsr  r  r  r  r  r{   rH   rF   <module>r?     sS   " 	  
 
  D D   : :   A . >'  '  < % 2 8 < F F $  LL$"(( zz|112KL ''(?(?@

3*++37777   
 + h'9: ;( 1
1 1 
	1n > >"  UUU &U UKF& KF\>@  8<UU4U .U U ,0+/""" "
 )" )" 5"6 "//?AT/T!U Y U
 BFAE> ?	$ +:}+DE E
 BFAE> ?	*I4B"AJ"J" www 
w wt VF. GGtO3((G36  	:  +eT];CCC 
C <CB3#l;.|>#<"(&&4504("(.(N' JHL	L%
H
X2(e(  '&&'s   
M M&M!!M&