
    vKg                       % 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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!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K0J1r1  SSK2J3r3  SSK4J5r5  SSK6J7r7J8r8  SSK9J:r:J;r;J<r<J=r=  SSK>J?r?  SSK@JArAJBrBJCrCJDrDJErE  \(       a  S SKFJGrG  S SKHJIrI  S SKJJKrK  SSKLJMrM  \$R                  " 5       rO\OR                  S5      rQ\R                  " \R                  R                  5      rU\V" \S5      (       a   \U=R                  \R                  ) -  slW        \QR                  \U5        \R                  " SSS/S 9SYS! j5       r[S"S#.     SZS$ jjr\\	S[S% j5       r]\	      S\S& j5       r^ " S' S(\-5      r_S]S) jr`\
      S^S* j5       raSSS+.           S_S, jjrb\\"\!4   rcS-\dS.'   S`S/ jre\\\4   rfS-\dS0'   SaS1 jrgSbS2 jrhSbS3 jriSbS4 jrjSbS5 jrkSbS6 jrl\1      ScS7 j5       rmSbS8 jrnS]S9 jro\R                  R                  \R                  S::H  =(       a    \R                  S;:  S<S=9SbS> j5       rtSbS? jru\R                  R                  S@S"SA/5            SdSB j5       rwSbSC jrxSbSD jrySbSE jrzSbSF jr{SbSG jr|SbSH jr}S]SI jr~SbSJ jrSbSK jrSbSL jrSbSM jrSbSN jrSbSO jrSbSP jrSbSQ jr\R                  GR                  SRSS5      SbST j5       rSbSU jrSbSV jrSbSW jrSbSX jrg! \' a  r(\" \(5         Sr(C(GNSr(C(ff = f)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                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)Nr3   )defaultr5   r6   )sslcreate_default_contexthasattroptionsr3   TRIO_TEST_CAconfigure_trustparam
TLSVersionTLSv1_2maximum_versionAssertionError)requestctxs     T/var/www/highfloat_scraper/venv/lib/python3.13/site-packages/trio/_tests/test_ssl.py
client_ctxrI   d   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   BrokenPipeErrorr;   SSLZeroReturnErrorunwrapclosesendallRuntimeErrorConnectionResetErrorConnectionAbortedError	Exceptionprint)sockrL   wrappeddataexcs        rH   ssl_echo_serve_syncrb   v   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                  [        [        U40 U D6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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     ##%DA  ""g ''+Q9&9
 w99!<== Q	 #"" QQ	 #"""ss   1C:B:C:C CAB<C!C )C:4C5C:<
C
C
C	C C: C7&C)'C73C:c                  #    [        S0 UD6 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Nr2   server_hostname )rr   r&   )rI   rn   r^   s      rH   ssl_echo_serverrx      s9     
 #,V,,:STT -,,,,,s;   A5A9A7AAAA AAc                  b    \ 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                f   [         R                  " [         R                  5      nSSKJn  U" 5       n[        UR                  S5      (       a%  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c  SS jnXPl        g Xl        g )	Nr   )BindingSSL_OP_NO_TLSv1_3OP_NO_TLSv1_4z2simultaneous calls to PyOpenSSLEchoStream.send_allz6simultaneous calls to PyOpenSSLEchoStream.receive_somec                   #    g 7frd   rw   )_s    rH   no_op_sleeper3PyOpenSSLEchoStream.__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__PyOpenSSLEchoStream.__init__   s    kk#++,* 	II155-..OOAEE334 30000'',^^C.


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

!s   c                6    U R                   R                  5       $ rd   )r   renegotiate_pendingr   s    rH   r   'PyOpenSSLEchoStream.renegotiate_pending
  s    zz--//rJ   c                F    U R                   R                  5       (       d   eg rd   )r   renegotiater   s    rH   r   PyOpenSSLEchoStream.renegotiate  s     zz%%''''rJ   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    rH   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_writerS   r   r   ZeroReturnErrorshutdowntotal_renegotiationsWantReadErrorr   
unpark_allr   r`   s     rH   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      rH   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   rd   )r   r   r   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__rw   rJ   rH   rz   rz      s.    7#r"0(
@>.5F 5FrJ   rz   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                  S5      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)rz   r   r   r   BusyResourceErrorrh   ri   getattr)func1args1func2args2srq   s         rH   do_testDtest_PyOpenSSLEchoStream_gives_resource_busy_errors.<locals>.do_testn  s       !!8!8.IJ))++w""71#4=u=""71#4=u= ,+ KJ++++ KJsd   .CB>
B B>9B$B>B"B>	C B>"B>$B;	*B-+B;	7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   g  s     
>
>!
> 
> "	
>
 

> *gz7
;;;
*g'F
KKK
'
'
	   .$
=== <K >sC   A'AA'A!A'A#A'A%A'!A'#A'%A'c              +  :   #    [        S0 UD6n[        X SS9v   g 7frt   )rz   r&   )rI   rn   fakesocks      rH   virtual_ssl_echo_serverr     s"     
 #,V,H
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$ )Nrv   r2   rN   T)r&   rP   )rI   client_transportserver_transportr   r   
client_ssl
server_ssls          rH   ssl_wrap_pairr     so      2 	J   	J !!rJ   r.   MemoryStapledStreamc                4    [        5       u  p#[        XU40 UD6$ rd   )r-   r   rI   rn   r   r   s       rH   ssl_memory_stream_pairr     s#     *<)=&7GR6RRrJ   MyStapledStreamc                4    [        5       u  p#[        XU40 UD6$ rd   )r,   r   r   s       rH   ssl_lockstep_stream_pairr     s#     *>)?&7GR6RRrJ   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   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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rN   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)Nr2   ru   r   r      y   z)rQ   rX   rS   rV   )client_sockro   rI   s    rH   client&test_ssl_server_basics.<locals>.client  sr    '' 9 (  ##D)"''*d222##D)""$  s   A
A%%
A3)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    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)	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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rd   )ranger]   r   r   )r   ichunkCHUNKS
CHUNK_SIZEsents      rH   sender'test_full_duplex_basics.<locals>.senderJ  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     rH   receiver)test_full_duplex_basics.<locals>.receiverR  sB     (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   B  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   rR   r  r   r   r   r   rI   r   s     rH   test_renegotiation_simpler%  g  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   
   )rg   sleepuniform)r   rs    rH   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   rH   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    rH   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)Nr/  z)calling SSLStream.receive_some, expectingr   )r  r   r]   r  r*   r   )expectedr   s    rH   r/  -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   順 rg   r)  methods    rH   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  )rg   r)  r   r   s   rH   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;  r/  rB  r<  r=  s    rH   *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   )r3  r   r   r   )r6  r   r   r   )r>  r   r   r   )autojump_thresholdrandomRandomr   rR   r  r   r  r   r   rh   ri   r   r   )
mock_clockrI   rJ  r   r0  r  b1b2rq   r?  rD  rG  r/  r+  r   r   s               @@@@rH   test_renegotiation_randomizedrO  x  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
 
I 	 ,+++ ,+++ 
 ++++ = 
>	=d 	'''' 	 
Q	P0 	'''' 	
 
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   rC  s    rH   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   rC  s    rH   do_receive_some2test_resource_busy_errors.<locals>.do_receive_some  s0     !..### "!# "!rT  c                   #    [        5          U R                  5       I S h  vN   S S S 5        g  N! , (       d  f       g = f7frd   )r*   r   rC  s    rH    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                  S5      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 task)r   r   r   r   r   rh   ri   )r   r   r   r   rq   rI   s        rH   r   *test_resource_busy_errors.<locals>.do_test  s}      (
3!8!8.IJ))++w""5,""5, ,+ KJ++++ KJsd   1B=B,BB,#B5B, BB,	B=B,B,B)	BB)	%B,,
B:6B=)r   Sr   r   )r   Callable[[S], Awaitable[None]]r   r_  r   r   )rg   r&   r   abcr   r   )rI   r^  rR  rW  rZ  r   s   `     rH   test_resource_busy_errorsra    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    rH   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rE   r   s    rH   r   Ltest_wait_writable_calls_underlying_wait_writable.<locals>.NotAStream.aclose        !899   Nc                    #    [        S5      e7frk  rl  )r   	max_bytess     rH   r   Rtest_wait_writable_calls_underlying_wait_writable.<locals>.NotAStream.receive_some  rn  ro  c                    #    [        S5      e7frk  rl  r   s     rH   r   Ntest_wait_writable_calls_underlying_wait_writable.<locals>.NotAStream.send_all   rn  ro  rw   r   rd   )rq  r   r   zbytes | bytearray)r`   zbytes | bytearray | memoryviewr   r   )	r   r   r   r   r   r   r   r   r   )rh  s   rH   
NotAStreamrd    s    	 	:	:	:rJ   ru  xru   rf  )r   r;   r<   r&   r   )ru  rG   r   rh  s      @rH   1test_wait_writable_calls_underlying_wait_writablerw    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   )rx   r*   rR   r   r   r   rV   r   r$  s     rH   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)NrJ   r   r   )rx   rR   r*   r   r   r   r$  s     rH   test_send_all_empty_stringr~  J  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   )rI   r  s   rH   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rd   )r   r   rh   ri   rR   )r   serverrq   rI   s      rH   clogged_stream_maker4test_SSLStream_generic.<locals>.clogged_stream_makeri  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+   )rI   r  r  r  s   ``  rH   test_SSLStream_genericr  Z  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   rJ      trailing)rR   r   r   send_streamsend_all_hookr  rV   )r  rawtrailingr   r   seqs      rH   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  )rR   r   r   rV   r  )r  r  r  r   r   s     rH   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   rh   ri   )	rI   r   r  rq   r   r   r  r   r   s	       @@@@@rH   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rd   )r*   r   )r   s   rH   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(  rJ   )r   r*   r   r   s   rH   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(  rJ   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   rH   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   rh   ri   r   r   r   r   r*   r   r   rV   rR   )rI   r   r  r  rq   r  r   r   s         @@rH   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rd   KeyErrorrw   rJ   rH   bad_hook3test_send_all_fails_in_the_middle.<locals>.bad_hook  
        	r   r   c                    > T S-  m g rV  rw   )closeds   rH   
close_hook5test_send_all_fails_in_the_middle.<locals>.close_hook  s    !rJ   r   r   r   r   )r   r   rh   ri   rR   r  r  r  r   r   r  r   r   r   r  receive_streamr   )rI   r   r  rq   r  r  r  s         @rH   !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)Nr2   ru   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   rH   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   rH   r  !test_ssl_over_ssl.<locals>.server$  s>     **2..%777''' /'s   A=A?AAr   )r-   r&   rP   r   rh   ri   )
rI   client_0server_0client_1server_1r   r  rq   r  r  s
           @@rH   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   rh   ri   rR   rg   r    r   r   r   r   r   r   rI   r   r  rq   s       rH   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(  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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)NTrK   r2   ru   )rr   r;   r<   r&   r   r   r   r   )r^   rI   r   s      rH   (test_ssl_handshake_failure_during_acloser  R  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rV  r  )client_orig_close_hooktransport_close_counts   rH   r  4test_ssl_only_closes_stream_once.<locals>.close_hookq  s%    %111 "rJ   r   r  )r   r   rh   ri   rR   r  r  r  r   r   r  r   )rI   r   r  rq   r  r  r  s        @@rH    test_ssl_only_closes_stream_oncer  e  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    rH   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   rh   ri   rR   r   )rI   r   rq   r  r  s       @rH   )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   rH   server_expect_clean_eofEtest_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   r  s       @rH   $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rd   r  rw   rJ   rH   r  2test_send_error_during_handshake.<locals>.bad_hook  r  r  r  )
r   r  r  r  r   r   r  r*   rR   r   )rI   r   r  r  s       rH    test_send_error_during_handshaker    s     +J7NF 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rd   r  rw   rJ   rH   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rd   )r   r   r  r*   rR   cancel)cancel_scoper   s    rH   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  r1   r   r   )r   r  r  receive_some_hookr   rh   ri   r  rR   r   r   r   r*   )rI   r  r  r  rq   r   s        @rH   #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                6  #    [        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7frd   )r   r   r   r$   selected_alpn_protocolrI   r   r  s      rH   ,test_selected_alpn_protocol_before_handshaker    sc     +J7NF	)	*%%' 
+ 
)	*%%' 
+	* 
+	* 
+	*3   (BA7"BB.	B7
BB
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rd   )r   r   rh   ri   rR   r  r  s       rH   (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                6  #    [        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7frd   )r   r   r   r$   selected_npn_protocolr  s      rH   +test_selected_npn_protocol_before_handshaker    sc     +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rd   )r   r   rh   ri   rR   r  r  s       rH   '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                6  #    [        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7frd   )r   r   r   r$   get_channel_bindingr  s      rH   )test_get_channel_binding_before_handshaker    sc     +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rd   )r   r   rh   ri   rR   r  r  s       rH   (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)DNSr2   subjectAltName)r   r   rh   ri   rR   getpeercertr]   r  s       rH   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U 4S 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[        40 U D6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   r2   ru   )
rl   r   bindlistenr"   r%   rP   r!   getsocknamer&   )rn   listen_socksocket_listenerssl_listenertransport_client
ssl_clientrI   s         rH   setuptest_SSLListener.<locals>.setup)  s      nn&/0001(5"?JI&I!0+2I2I2K!LL5


 *44 	1
 Ms"   *BBA
B8B9BBT)r  )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)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-F8<F
=F8 7F7F8FF8GF6G*G+GG:GG:G0G:9G2:%G:G4 G:2G63G:G8G:G:GGF8F8F3"F%#F3/F86G8G	>G?G	GG:G-GG-)G:2G:4G:6G:8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   r  )rI   r   rn   r
   r   r  )rI   r   r   r   )rL  r/   rI   r   r   r   )rI   r   r  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%  rO  ra  rw  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  rw   rJ   rH   <module>r8     s   " 	  
 
  D D       A . '  '  < % 2 8 < F F $  +$"(( zz|112KL ''(?(?@

3*++37777   
 + h'9: ;( 1
1 1 
	1n > >" UUU &U UWF& WFt>< UUU .U U ,0+/""" "
 )" )" 5"6 "//?AT/T!U Y US +:}+DE ESI4B"AJ"J" uuu 
u upVB. GGtO3((G36  	:  +eT];CCC 
C <CB3#l;.|>#<"(&&4504("(.(N' JHL	L%
H
X.(I(  '&&'s   )
L5 5M;M		M