
    2hhq                     `   S SK r S SKrS SKrS SKrS SKJr  S SKJr  S SKJr   S SK	r	S SKrS SKJr  S SKJr  S SKJr  S SKJr  S S	KJr  S
 r\R*                  " \	SL S5       " S S\R,                  5      5       r " S S\R0                  5      r\R*                  " \	SL S5       " S S\\R,                  5      5       r\R*                  " \	SL S5      \R6                  " \" \S5      S5       " S S\\R,                  5      5       5       r\S:X  a  \R>                  " 5         gg! \
 a    Sr	 GNf = f)    N)support)socket_helper)mock)log)	protocols)sslproto)utils)
functionalc                  0    [         R                  " S 5        g N)asyncioset_event_loop_policy     H/opt/python-3.13.8/usr/lib/python3.13/test/test_asyncio/test_sslproto.pytearDownModuler      s    !!$'r   zNo ssl modulec                      ^  \ rS rSrU 4S jrSSS.S jrSS.S jrS rS	 rS
 r	S r
S rS rS rS rS rS rS rS rSrU =r$ )SslProtoHandshakeTests   c                    > [         TU ]  5         [        R                  " 5       U l        U R                  U R                  5        g r   )supersetUpr   new_event_looploopset_event_loop)self	__class__s    r   r   SslProtoHandshakeTests.setUp   s.    **,	DII&r   N)waiterprotoc                @   [         R                  " 5       nUc  [        R                  " 5       n[        R
                  " U R                  X#USS9nU R                  UR                  R                  5       U5        U R                  UR                  R                  5        U$ )Ng?ssl_handshake_timeout)
test_utilsdummy_ssl_contextr   Protocolr   SSLProtocolr   assertIs_app_transportget_protocol
addCleanupclose)r   r   r    
sslcontext	ssl_protos        r   ssl_protocol#SslProtoHandshakeTests.ssl_protocol#   s|    113
=$$&E((Ev?BD	i..;;=uE	00667r   do_handshakec                   [         R                  " 5       n[         R                  " 5       n[        R                  UR                  l        [        R                  UR                  l        Ub  X$l        XAl        UR                  U5        U$ r   )
r   MocksslSSLWantReadErrorreadside_effectwriter2   _sslobjconnection_made)r   r.   r2   	transportsslobjs        r   r;   &SslProtoHandshakeTests.connection_made-   sb    IIK	"%"6"6#&#7#7 #"."!!),r   c           	      $   [         R                  " 5       n[        R                  " 5       n[        R                  " 5       nU R	                  [
        S5         [        R                  " U R                  X!USS9  S S S 5        g ! , (       d  f       g = f)Na positive numberr   r"   	r$   r%   r   r4   assertRaisesRegex
ValueErrorr   r'   r   r   r-   	app_protor   s       r   test_handshake_timeout_zero2SslProtoHandshakeTests.test_handshake_timeout_zero9   s_    113
IIK	##J0CD  I678: EDD   "B
Bc           	      $   [         R                  " 5       n[        R                  " 5       n[        R                  " 5       nU R	                  [
        S5         [        R                  " U R                  X!USS9  S S S 5        g ! , (       d  f       g = f)Nr@   ir"   rA   rD   s       r   test_handshake_timeout_negative6SslProtoHandshakeTests.test_handshake_timeout_negativeA   s_    113
IIK	##J0CD  I67:< EDDrH   c                 ^   U R                   R                  5       nU R                  US9nU R                  U[        R
                  " [        R                  S9S9  UR                  5         [        R                  " U R                   5        U R                  UR                  5       [        5        g Nr   r8   r1   )r   create_futurer/   r;   r   r4   r5   r6   eof_receivedr$   run_brieflyassertIsInstance	exceptionConnectionResetErrorr   r   r.   s      r   test_eof_received_waiter/SslProtoHandshakeTests.test_eof_received_waiterI   s    ((*%%V%4	s/C/CD 	 	
 	 tyy)f..02FGr   c                    U R                   R                  5       nU R                  US9n[        R                  R                  5       n[        R                  R                  [        R                  5         UR                  S 5        [        R                  R                  U5        g ! [        R                  R                  U5        f = fNrN   )
r   rP   r/   r   loggergetEffectiveLevelsetLevelloggingFATAL_fatal_error)r   r   r.   	log_levels       r   test_fatal_error_no_name_error5SslProtoHandshakeTests.test_fatal_error_no_name_errorT   s     ((*%%V%4	JJ002	

GMM*	+""4( JJ	*CJJ	*s   6B' '!Cc                 h   U R                   R                  5       nU R                  US9nU R                  U[        R
                  " [        R                  S9S9  UR                  [        5        [        R                  " U R                   5        U R                  UR                  5       [        5        g rM   )r   rP   r/   r;   r   r4   r5   r6   connection_lostConnectionAbortedErrorr$   rR   rS   rT   rV   s      r   test_connection_lost+SslProtoHandshakeTests.test_connection_lostc   s     ((*%%V%4	s/C/CD 	 	
 	!!"89tyy)f..02HIr   c                 Z  ^ ^	^
 [         R                  " 5       n[         R                  " SS9Ul        [         R                  " [        S9Ul        [
        R                  " ST R                  S9n[
        R                  " UT R                  S9nT R                  US9n[         R                  " 5       n[        R                  UR                  l        [        R                  UR                  l        XTl        Sm	[         R                  " 5       n[         R                  " T	S9Ul        [!        T	5      Ul        Xdl        T R                  R'                  X5        UR(                  n[
        R*                  " XsUT R                  5      m
U	U U
4S	 jnT R                  R-                  U" 5       5        g )
Ni90  )return_valuerO   i   )limitr   r   r    s   An interesting messagec                     >#    UU4S jn U " 5       I S h  vN   TR                  [        5         U " 5       I S h  vN   S S S 5        g  N2 N! , (       d  f       g = f7f)Nc                  d   >#    TR                  T 5        TR                  5       I S h  vN   g  N7fr   )r9   drain)datawriters   r   r9   RSslProtoHandshakeTests.test_connection_lost_when_busy.<locals>.main.<locals>.write   s!     T"lln$$s   %0.0)assertRaisesrU   )r9   rq   r   rr   s    r   mainCSslProtoHandshakeTests.test_connection_lost_when_busy.<locals>.main   sJ     %
 'MM ""#78g 98   98s5   AAAAA
A
A
A
AA)r   r4   filenoBrokenPipeErrorsendr   StreamReaderr   StreamReaderProtocolr/   r5   r6   r7   r8   r9   r:   lenpending	_outgoing_make_socket_transportr)   StreamWriterrun_until_complete)r   sockreaderprotocolr.   r=   outgoingr<   ru   rq   rr   s   `        @@r   test_connection_lost_when_busy5SslProtoHandshakeTests.test_connection_lost_when_busyp   s.    yy{iiU3II/:	 %%G$))D//TYYG%%H%5	 "%"6"6#&#7#7 " )99;		t4t9& 			((9,,	%%i6499M	 			$$TV,r   c                 t   U R                   R                  5       nU R                  US9nU R                  U[        R
                  " [        R                  S9S9n[        R                  " U R                   5        UR                  R                  5         U R                  UR                  R                  5        g rM   )r   rP   r/   r;   r   r4   r5   r6   r$   rR   r)   r,   
assertTrue_force_closecalled)r   r   r.   r<   s       r   test_close_during_handshake2SslProtoHandshakeTests.test_close_during_handshake   s    ((*%%V%4	((s/C/CD ) 
	 	tyy)  &&(	..556r   c                    ^ U R                  U R                  5       S9nU R                  U5        / mU R                  R                  U4S j5        UR                  R                  5         U R                  T/ 5        g )Nrm   c                 &   > TR                  U5      $ r   appendr   ctxmessagess     r   <lambda>GSslProtoHandshakeTests.test_close_during_ssl_over_ssl.<locals>.<lambda>       (//#:Nr   )r/   r;   r   set_exception_handlerr)   r,   assertEqual)r   outerr   s     @r   test_close_during_ssl_over_ssl5SslProtoHandshakeTests.test_close_during_ssl_over_ssl   si     !!(9(9(;!<U#		''(NO""$2&r   c                    U R                   R                  5       nU R                  US9nU R                  UR	                  S5      5        [        5       nU R                  UR	                  SU5      U5        U R                  U5        U R                  UR	                  S5      5        UR                  S 5        U R                  UR	                  S5      5        g )NrN   socket)
r   rP   r/   assertIsNone_get_extra_infoobjectr(   r;   assertIsNotNonere   )r   r   r.   defaults       r   (test_get_extra_info_on_closed_connection?SslProtoHandshakeTests.test_get_extra_info_on_closed_connection   s    ((*%%V%4	)33H=>(i//'BGLY'Y66x@A!!$')33H=>r   c                 B   U R                   R                  5       nU R                  US9n[        R                  " 5       nUR
                  R                  U5        U R                  UR
                  R                  5       U5        U R                  UR                  U5        g rZ   )
r   rP   r/   r   r&   r)   set_protocolr(   r*   _app_protocol)r   r   r.   new_app_protos       r   test_set_new_app_protocol0SslProtoHandshakeTests.test_set_new_app_protocol   sz    ((*%%V%4	((*  --m<i..;;=}Mi--}=r   c                     U R                  5       nU R                  U5        UR                  nUR                  5         U R	                  UR                  S5      5        g )N   )r/   r;   r)   r,   r   buffer_updatedr   r.   transps      r    test_data_received_after_closing7SslProtoHandshakeTests.test_data_received_after_closing   sM    %%'	Y')) 	)22156r   c                     U R                  5       nU R                  U5        UR                  nUR                  5         U R	                  UR                  S5      5        g )Ns   data)r/   r;   r)   r,   r   r9   r   s      r   test_write_after_closing/SslProtoHandshakeTests.test_write_after_closing   sK    %%'	Y')) 	&,,w/0r   rl   )__name__
__module____qualname____firstlineno__r   r/   r;   rF   rJ   rW   rb   rg   r   r   r   r   r   r   r   __static_attributes____classcell__)r   s   @r   r   r      sb    '
 &*  :> 
:<	H+J.-`7
'	?>71 1r   r   c                       \ rS rSrSr\R                  rS rS r	S r
S r\R                  S 5       rS r\R                  S	 5       rS
 rS rS rS rS rSrg)BaseStartTLS   i  c                     [         er   )NotImplementedErrorr   s    r   new_loopBaseStartTLS.new_loop   s    !!r   c                 H    " S S[         R                  5      nS GHo  nU" SU5      n[        R                  " US5        U R	                  UR
                  S5        U" SU5      n[        R                  " US5        U R	                  UR
                  S5        U" SU5      n[        R                  " US5        U R	                  UR
                  S5        U" SU5      n[        R                  " US5        U R	                  UR
                  S5        U" S	U5      n[        R                  " US5        U R	                  UR
                  S5        U" S
U5      nU R                  [        S5         [        R                  " US5        S S S 5        GMr     g ! , (       d  f       GM  = f)Nc                   &    \ rS rSrS rS rS rSrg).BaseStartTLS.test_buf_feed_data.<locals>.Proto   c                 r    [        U5      U l        [        U R                  5      U l        SU l        X l        g Nr   )	bytearraybuf
memoryviewmvrq   usemv)r   bufsizer   s      r   __init__7BaseStartTLS.test_buf_feed_data.<locals>.Proto.__init__   s*    $W-$TXX.	"
r   c                 T    U R                   (       a  U R                  $ U R                  $ r   )r   r   r   r   sizehints     r   
get_buffer9BaseStartTLS.test_buf_feed_data.<locals>.Proto.get_buffer   s    ::77N88Or   c                     U R                   (       a#  U =R                  U R                  S U -  sl        g U =R                  U R                  S U -  sl        g r   )r   rq   r   r   )r   nsizes     r   r   =BaseStartTLS.test_buf_feed_data.<locals>.Proto.buffer_updated   s:    ::II%0III&5!11Ir   )r   rq   r   r   N)r   r   r   r   r   r   r   r   r   r   r   Protor      s    #$2r   r   )FT   s   12345   s   1234   d   r   zempty buffer)r   BufferedProtocolr   _feed_data_to_buffered_protor   rq   rB   RuntimeError)r   r   r   r    s       r   test_buf_feed_dataBaseStartTLS.test_buf_feed_data   sJ   	2G,, 	2( #E!UOE225(CUZZ2!UOE225(CUZZ2!UOE225'BUZZ1!UOE225'BUZZ1#u%E225(CUZZ2!UOE''nE66uhG FE- #, FEs   +F
F!	c                 \  ^ ^^^^ ST R                   -  m[        R                  " 5       m[        R                  " 5       mUU U4S jn " U 4S jS[        R
                  5      mUUUU 4S jnT R                  UT R                  S9 nT R                  R                  [        R                  " U" UR                  5      [        R                  S95        S S S 5        [        R                  " T5      m[        R                   " 5         T R#                  T" 5       5        g ! , (       d  f       NP= f)N   1c                   > U R                  TR                  5        U R                  [        T5      5      nTR	                  [        U5      [        T5      5        U R                  TSS9  U R                  S5        U R                  [        T5      5      nTR	                  [        U5      [        T5      5        U R                  [        R                  5        U R                  5         g NTserver_side   O
settimeoutTIMEOUTrecv_allr|   r   	start_tlssendallshutdownr   	SHUT_RDWRr,   r   rq   	HELLO_MSGr   server_contexts     r   serve=BaseStartTLS.test_start_tls_client_reg_proto_1.<locals>.serve#  s    OODLL)==Y0DSYI7NN>tN<LL==Y0DSYI7MM&**+JJLr   c                   4   > \ rS rSrS rU 4S jrS rS rSrg)CBaseStartTLS.test_start_tls_client_reg_proto_1.<locals>.ClientProtoi2  c                 *    Xl         X l        SU l        g Nr   on_dataon_eofcon_made_cntr   r   r   s      r   r   LBaseStartTLS.test_start_tls_client_reg_proto_1.<locals>.ClientProto.__init__3      &$$%!r   c                 h   > U =R                   S-  sl         TR                  U R                   S5        g Nr   r   r   r    trr   s     r   r;   SBaseStartTLS.test_start_tls_client_reg_proto_1.<locals>.ClientProto.connection_made8  *    ""a'"  !3!3Q7r   c                 :    U R                   R                  U5        g r   r   
set_resultr   rq   s     r   data_receivedQBaseStartTLS.test_start_tls_client_reg_proto_1.<locals>.ClientProto.data_received=      ''-r   c                 :    U R                   R                  S5        g NTr   r  r   s    r   rQ   PBaseStartTLS.test_start_tls_client_reg_proto_1.<locals>.ClientProto.eof_received@      &&t,r   r   r   r   N	r   r   r   r   r   r;   r  rQ   r   r   s   r   ClientProtor   2      &
8
.-r   r  c                   >^^#    [         R                  " S5      I S h  vN   T	R                  R                  5       mT	R                  R                  5       mT	R                  R                  " UUU4S j/U Q76 I S h  vN u  pUR                  T5        T	R                  R                  XT5      I S h  vN nT	R                  TI S h  vN S5        UR                  T5        TI S h  vN   UR                  5         g  N N NN N; N7f)N      ?c                     > T " TT5      $ r   r   r  r   r   s   r   r   PBaseStartTLS.test_start_tls_client_reg_proto_1.<locals>.client.<locals>.<lambda>J      GV4r   r   )	r   sleepr   rP   create_connectionr9   r   r   r,   )
addrr  r    new_trr   r   r  r   client_contextr   s
       @@r   client>BaseStartTLS.test_start_tls_client_reg_proto_1.<locals>.clientC  s     --$$$ii--/GYY,,.F"ii994=7;= =IB HHY99..r.IIF7]D1LL#LLLLN %
= J*sX   D
D AD
>D?6D
5D6D

DD
*D+D
D
D
D
D
timeoutPAYLOAD_SIZEr$   simple_server_sslcontextsimple_client_sslcontextr   r&   
tcp_serverr   r   r   wait_forr"  r   SHORT_TIMEOUTweakrefref
gc_collectr   r   r   r%  srvr  r   r$  r   s   `   @@@@r   !test_start_tls_client_reg_proto_1.BaseStartTLS.test_start_tls_client_reg_proto_1  s    4,,,	#<<>#<<>		-'** 	-"	 	$ __UDLL_9SII((  !1)0)>)>@A : !^4.*+ :9   AD
D+c                 \  ^ ^^^^ ST R                   -  m[        R                  " 5       m[        R                  " 5       mUU U4S jn " U 4S jS[        R
                  5      mUUUU 4S jnT R                  UT R                  S9 nT R                  R                  [        R                  " U" UR                  5      [        R                  S95        S S S 5        [        R                  " T5      m[        R                   " 5         T R#                  T" 5       5        g ! , (       d  f       NP= f)Nr   c                 X  > U R                  TR                  5        U R                  TSS9  U R                  S5        U R	                  [        T5      5      nTR                  [        U5      [        T5      5        U R                  [        R                  5        U R                  5         g r   )r   r   r   r   r   r|   r   r   r   r   r,   r   s     r   r   >BaseStartTLS.test_create_connection_memory_leak.<locals>.servee  st    OODLL)NN>tN<LL==Y0DSYI7MM&**+JJLr   c                   4   > \ rS rSrS rU 4S jrS rS rSrg)DBaseStartTLS.test_create_connection_memory_leak.<locals>.ClientProtoiq  c                 *    Xl         X l        SU l        g r   r   r   s      r   r   MBaseStartTLS.test_create_connection_memory_leak.<locals>.ClientProto.__init__r  r  r   c                 t   > Xl         U =R                  S-  sl        TR                  U R                  S5        g r  )r  r   r   r  s     r   r;   TBaseStartTLS.test_create_connection_memory_leak.<locals>.ClientProto.connection_madew  s/    ""a'"  !3!3Q7r   c                 :    U R                   R                  U5        g r   r  r  s     r   r  RBaseStartTLS.test_create_connection_memory_leak.<locals>.ClientProto.data_received~  r  r   c                 :    U R                   R                  S5        g r  r  r   s    r   rQ   QBaseStartTLS.test_create_connection_memory_leak.<locals>.ClientProto.eof_received  r  r   r  Nr  r   s   r   r  r<  q  s    &
8.-r   r  c                   >^^#    [         R                  " S5      I S h  vN   TR                  R                  5       mTR                  R                  5       mTR                  R                  " UUU4S j/U Q7ST06I S h  vN u  pTR                  TI S h  vN S5        UR                  T5        TI S h  vN   UR                  5         g  N NN N9 N7f)Nr  c                     > T " TT5      $ r   r   r  s   r   r   QBaseStartTLS.test_create_connection_memory_leak.<locals>.client.<locals>.<lambda>  r  r   r5   r   )r   r   r   rP   r!  r   r9   r,   )	r"  r  r    r   r   r  r   r$  r   s	      @@r   r%  ?BaseStartTLS.test_create_connection_memory_leak.<locals>.client  s     --$$$ii--/GYY,,.F"ii994$7;$"$ $IB 7]D1HHYLLHHJ %
$ +sF   CCA!CCCCC8C9CCCCr'  r)  r3  s   `   @@@@r   "test_create_connection_memory_leak/BaseStartTLS.test_create_connection_memory_leak_  s    4,,,	#<<>#<<>
		-'** 	-&	 	  __UDLL_9SII((  !1)0)>)>@A : !^4.*+ :9r7  c                   ^ ^^^^^^	 ST R                   -  m[        R                  " 5       m	[        R                  " 5       mSmUU U	4S jn " UU 4S jS[        R
                  5      m " U4S jS[        R                  5      mUUUUUU 4S jnT R                  UT R                  S	9 nT R                  R                  [        R                  " U" UR                  5      T R                  S	95        S S S 5        g ! , (       d  f       g = f)
Nr   r   c                 r  > U R                  TR                  5        U R                  [        T5      5      nTR	                  [        U5      [        T5      5        U R                  TSS9  U R                  S5        U R                  [        T5      5      nTR	                  [        U5      [        T5      5        U R                  S5        U R                  [        T5      5      nTR	                  [        U5      [        T5      5        U R                  [        R                  5        U R                  5         g )NTr   r      2r   r   s     r   r   =BaseStartTLS.test_start_tls_client_buf_proto_1.<locals>.serve  s    OODLL)==Y0DSYI7NN>tN<LL==Y0DSYI7LL==Y0DSYI7MM&**+JJLr   c                   :   > \ rS rSrS rU 4S jrS rU4S jrSrg)HBaseStartTLS.test_start_tls_client_buf_proto_1.<locals>.ClientProtoFirsti  c                 0    Xl         [        S5      U l        g r  )r   r   r   )r   r   s     r   r   QBaseStartTLS.test_start_tls_client_buf_proto_1.<locals>.ClientProtoFirst.__init__  s    &$Q<r   c                    > TS-  mg r  r   r   r  client_con_made_callss     r   r;   XBaseStartTLS.test_start_tls_client_buf_proto_1.<locals>.ClientProtoFirst.connection_made      %*%r   c                     U R                   $ r   )r   r   s     r   r   SBaseStartTLS.test_start_tls_client_buf_proto_1.<locals>.ClientProtoFirst.get_buffer  s    xxr   c                    > TR                  US5        U R                  R                  [        U R                  S U 5      5        g r  )r   r   r  bytesr   )slfr   r   s     r   r   WBaseStartTLS.test_start_tls_client_buf_proto_1.<locals>.ClientProtoFirst.buffer_updated  s4      *&&uSWWVe_'=>r   )r   r   N)	r   r   r   r   r   r;   r   r   r   )rU  r   s   r   ClientProtoFirstrP    s    (+ ? ?r   r^  c                   4   > \ rS rSrS rU 4S jrS rS rSrg)IBaseStartTLS.test_start_tls_client_buf_proto_1.<locals>.ClientProtoSecondi  c                 *    Xl         X l        SU l        g r   r   r   s      r   r   RBaseStartTLS.test_start_tls_client_buf_proto_1.<locals>.ClientProtoSecond.__init__  r  r   c                    > TS-  mg r  r   rT  s     r   r;   YBaseStartTLS.test_start_tls_client_buf_proto_1.<locals>.ClientProtoSecond.connection_made  rW  r   c                 :    U R                   R                  U5        g r   r  r  s     r   r  WBaseStartTLS.test_start_tls_client_buf_proto_1.<locals>.ClientProtoSecond.data_received  r  r   c                 :    U R                   R                  S5        g r  r  r   s    r   rQ   VBaseStartTLS.test_start_tls_client_buf_proto_1.<locals>.ClientProtoSecond.eof_received  r  r   r  Nr  )rU  s   r   ClientProtoSecondr`    s    &
+.-r   ri  c                   >^#    [         R                  " S5      I S h  vN   TR                  R                  5       mTR                  R                  5       nTR                  R                  5       nTR                  R                  " UU4S j/U Q76 I S h  vN u  p4UR                  T	5        TR                  R                  X4T5      I S h  vN nTR                  TI S h  vN S5        UR                  T	5        UR                  T" X5      5        TR                  UI S h  vN S5        UR                  T	5        UI S h  vN   UR                  5         TR                  T
S5        g  GNN N N N NP N27f)Nr  c                     > T " T5      $ r   r   )r^  on_data1s   r   r   PBaseStartTLS.test_start_tls_client_buf_proto_1.<locals>.client.<locals>.<lambda>  s    (2r   r   rM  r   )
r   r   r   rP   r!  r9   r   r   r   r,   )r"  on_data2r   r  r    r#  rl  r^  ri  r   rU  r$  r   s         @r   r%  >BaseStartTLS.test_start_tls_client_buf_proto_1.<locals>.client  s)    --$$$yy..0Hyy..0HYY,,.F"ii992;59; ;IB HHY99..r.IIF8^T2LL# 1( CD8^T2LL#LLLLN
 2A63 %; J+ ,sk   E9E,A7E9E/6E9E1E9"E3#AE9$E5%E9E7(E9/E91E93E95E97E9r'  )r*  r$   r+  r,  r   r   r&   r-  r   r   r   r.  r"  )
r   r   r%  r4  r^  ri  r   rU  r$  r   s
   `   @@@@@@r   !test_start_tls_client_buf_proto_1.BaseStartTLS.test_start_tls_client_buf_proto_1  s    4,,,	#<<>#<<> !	&	? 	?w77 	? 	- 0 0 	- 	7 	78 __UDLL_9SII((  !1)-78 :99s   )A	C;;
D	c                   ^ ^^^^ ST R                   -  m[        R                  " 5       mT R                  R	                  5       mUU U4S jn " U 4S jS[
        R                  5      mUUUU U4S jnT R                  UT R                  S9 nT R                  R                  [
        R                  " U" UR                  5      [        R                  S95        S S S 5        g ! , (       d  f       g = f)Nr   c                   > U R                  TR                  5        U R                  [        T5      5      nTR	                  [        U5      [        T5      5         TR
                  R                  TR                  S 5        U R                  S5      nU R                  5         g ! [         a     Nf = f! U R                  5         f = fN   )
r   r   r   r|   r   r   call_soon_threadsafer  rf   r,   )r   rq   r   r   server_waits_on_handshakes     r   r   =BaseStartTLS.test_start_tls_slow_client_cancel.<locals>.serve  s    OODLL)==Y0DSYI7		..-88$@}}[1 

 *  

s$   7B$ $
B1.B4 0B11B4 4Cc                   4   > \ rS rSrS rU 4S jrS rS rSrg)CBaseStartTLS.test_start_tls_slow_client_cancel.<locals>.ClientProtoi  c                 *    Xl         X l        SU l        g r   r   r   s      r   r   LBaseStartTLS.test_start_tls_slow_client_cancel.<locals>.ClientProto.__init__  r  r   c                 h   > U =R                   S-  sl         TR                  U R                   S5        g r  r  r  s     r   r;   SBaseStartTLS.test_start_tls_slow_client_cancel.<locals>.ClientProto.connection_made  r	  r   c                 :    U R                   R                  U5        g r   r  r  s     r   r  QBaseStartTLS.test_start_tls_slow_client_cancel.<locals>.ClientProto.data_received  r  r   c                 :    U R                   R                  S5        g r  r  r   s    r   rQ   PBaseStartTLS.test_start_tls_slow_client_cancel.<locals>.ClientProto.eof_received  r  r   r  Nr  r   s   r   r  rz    r  r   r  c                 :  >^^#    [         R                  " S5      I S h  vN   TR                  R                  5       mTR                  R                  5       mTR                  R                  " UUU4S j/U Q76 I S h  vN u  pUR                  T5        T	I S h  vN   TR                  [         R                  5         [         R                  " TR                  R                  XT5      S5      I S h  vN   S S S 5        g  N N Nj N! , (       d  f       g = f7f)Nr  c                     > T " TT5      $ r   r   r  s   r   r   PBaseStartTLS.test_start_tls_slow_client_cancel.<locals>.client.<locals>.<lambda>(  r  r   )
r   r   r   rP   r!  r9   rt   TimeoutErrorr.  r   )
r"  r  r    r   r   r  r   r$  r   rw  s
      @@r   r%  >BaseStartTLS.test_start_tls_slow_client_cancel.<locals>.client!  s     --$$$ii--/GYY,,.F"ii994=7;= =IB HHY+++""7#7#78&&II''>B   98 %
=
 , 98s^   DDAD>D?DD#D?5D
4D5D
9
DDDD


DDr'  )r*  r$   r,  r   rP   r   r&   r-  r   r   r.  r"  r   r/  )r   r   r%  r4  r  r   r$  rw  s   `   @@@@r   !test_start_tls_slow_client_cancel.BaseStartTLS.test_start_tls_slow_client_cancel  s    4,,,	#<<>$(II$;$;$=!		-'** 	-"	 	$ __UDLL_9SII((  !1)0)>)>@A :99s   AC""
C0c                 D  ^ ^^^^^^^^	 ST R                   -  mSm[        R                  " 5       m	[        R                  " 5       mS mUUUUU 4S jm " U4S jS[        R
                  5      mUUU U	4S jmUUUUUU 4S jnT R                  R                  U" 5       5        g )Nr   s   answerc                 r  > U R                  TR                  5        U R                  U5        U R                  [	        T5      5      nTR                  [	        U5      [	        T5      5        U R                  T5        U R                  T5        U R                  [	        T5      5      mU R                  5         g r   )	r   r   connectr   r|   r   r   r   r,   )r   r"  rq   ANSWERr   answerr$  r   s      r   r%  4BaseStartTLS.test_start_tls_server_1.<locals>.clientA  s|    OODLL)LL==Y0DSYI7NN>*LL#]]3v;/FJJLr   c                   :   > \ rS rSrS rS rS rU 4S jrS rSr	g)	9BaseStartTLS.test_start_tls_server_1.<locals>.ServerProtoiN  c                 D    Xl         X l        X0l        SU l        S U l        g r   )on_conon_con_loston_got_hellorq   r<   )r   r  r  r  s       r   r   BBaseStartTLS.test_start_tls_server_1.<locals>.ServerProto.__init__O  s!    $#. $0!	!%r   c                 F    Xl         U R                  R                  U5        g r   )r<   r  r  r   r  s     r   r;   IBaseStartTLS.test_start_tls_server_1.<locals>.ServerProto.connection_madeV  s    !#&&r*r   c                     Xl         g r   )r<   r  s     r   replace_transportKBaseStartTLS.test_start_tls_server_1.<locals>.ServerProto.replace_transportZ  s    !#r   c                    > U =R                   U-  sl         [        U R                   5      [        T5      :  a  U R                  R                  S 5        g g r   )rq   r|   r  r  )r   rq   r   s     r   r  GBaseStartTLS.test_start_tls_server_1.<locals>.ServerProto.data_received]  s>    		T!	tyy>S^3%%006 4r   c                     S U l         Uc  U R                  R                  S 5        g U R                  R                  U5        g r   )r<   r  r  set_exception)r   excs     r   re   IBaseStartTLS.test_start_tls_server_1.<locals>.ServerProto.connection_lostb  s6    !%;$$//5$$2237r   )rq   r  r  r  r<   N)
r   r   r   r   r   r;   r  r  re   r   )r   s   r   ServerProtor  N  s    &+$7
8r   r  c                   >#    UI S h  vN nUR                  T5        TR                  U R                  S5        TR                  R	                  X@T	STR
                  S9I S h  vN nU R                  U5        UI S h  vN   UR                  T5        UI S h  vN   TR                  U R                  T5        UR                  5         g  N Ni NP N77f)Nr   T)r   r#   )r9   r   rq   r   r   r   r  r,   )
r    r  r  r  r  r#  r  r   r   r   s
         r   ru   2BaseStartTLS.test_start_tls_server_1.<locals>.maini  s     BHHYUZZ-99..> &*ll / 4 4F ##F+LL UZZ3LLN! 
4  sF   CCAC$C%C?C CC2CCCCc            	        >^^#    TR                   R                  5       n TR                   R                  5       nTR                   R                  5       nT" XU5      mTR                   R                  U4S jSS5      I S h  vN nUR                  S   R	                  5       mTR                  UU	4S jTR                  S9   [        R                  " T
" TXU5      TR                  S9I S h  vN   S S S 5        UR                  5         UR                  5       I S h  vN   TR                  TT5        g  N NI! , (       d  f       NM= f N,7f)Nc                     > T $ r   r   rm   s   r   r   HBaseStartTLS.test_start_tls_server_1.<locals>.run_main.<locals>.<lambda>  s    r   z	127.0.0.1r   c                    > T" U T5      $ r   r   )r   r"  r%  s    r   r   r    s    fT4.@r   r'  )r   rP   create_serversocketsgetsockname
tcp_clientr   r   r.  r,   wait_closedr   )r  r  r  serverr"  r    r  r  r  r%  ru   r   s       @@r   run_main6BaseStartTLS.test_start_tls_server_1.<locals>.run_main|  s    YY,,.F))113K99224L\BE9922{A/ /F>>!$002D!@)- ! 7&&\B LL* * *7 LLN$$&&&VV,/*7 7 'sI   A<ED5A E+D9-D7.D92+EE
E7D99
EE)r*  r$   r+  r,  r   r&   r   r   )
r   r  r  r   r  r  r%  r$  ru   r   s
   ` @@@@@@@@r   test_start_tls_server_1$BaseStartTLS.test_start_tls_server_18  s    4,,,	#<<>#<<>	 		8'** 	86	 	&	- 	-( 			$$XZ0r   c                 R   ^  U 4S jnT R                   R                  U" 5       5        g )Nc                    >#    TR                  [        S5         TR                  R                  S S S 5      I S h  vN   S S S 5        [        R
                  " 5       n TR                  [        S5         TR                  R                  S S U 5      I S h  vN   S S S 5        g  Nf! , (       d  f       Nj= f N ! , (       d  f       g = f7f)NzSSLContext, gotzis not supported)rB   	TypeErrorr   r   r$   r+  )sslctxr   s    r   ru   4BaseStartTLS.test_start_tls_wrong_args.<locals>.main  s     ''	3DEii))$d;;; F  88:F''	3EFii))$f=== GF < FE
 > GFsV   C!B$B"B$ 3C3!B7B5B7	C"B$$
B2.C5B77
CC)r   r   )r   ru   s   ` r   test_start_tls_wrong_args&BaseStartTLS.test_start_tls_wrong_args  s    	> 			$$TV,r   c                 |  ^ ^^^ [         R                  " 5       m/ mT R                  R                  U4S j5        SmU4S jnUU 4S jnT R	                  USSS9 nT R                  [        R                  5         T R                  R                  U" UR                  5      5        S S S 5        S S S 5        T R                  T5        T R                  T/ 5        [        R                  " T5      m[        R                  " 5         T R!                  T" 5       5        g ! , (       d  f       N{= f! , (       d  f       N= f)Nc                 &   > TR                  U5      $ r   r   r   s     r   r   5BaseStartTLS.test_handshake_timeout.<locals>.<lambda>  r   r   Fc                    >  U R                  S5        U R                  5         g ! [         a    Sm Nf = f! U R                  5         f = f)Nru  Tr   rf   r,   )r   server_side_aborteds    r   r  3BaseStartTLS.test_handshake_timeout.<locals>.server  sB    k* 

 * +&*#+ 

s   % 47 47 A	c           	         >#    [         R                  " TR                  R                  " [         R                  /U Q7TS[
        R                  S.6S5      I S h  vN   g  N7f)N r5   server_hostnamer#   r  )r   r.  r   r!  r&   r   r/  )r"  client_sslctxr   s    r   r%  3BaseStartTLS.test_handshake_timeout.<locals>.client  s_     ""		++$$AA &$&*1*?*?A   s   AA"A A"r   max_clientsbacklog)r$   r,  r   r   r-  rt   r   r  r   r"  r   r   r0  r1  r   r2  r   )r   r  r%  r4  r  r   r  s   `   @@@r   test_handshake_timeout#BaseStartTLS.test_handshake_timeout  s     #;;=		''(NO#		 __V)*%&  (+.""7#7#78		,,VCHH-=> 9	( 	+, 	2&  M2-/* 98	( (s$    D-;,D'D-
D*	&D--
D;c                   ^^ [         R                  " 5       m/ mU R                  R                  U4S j5        S nU4S jnU R	                  USSS9 nU R                  [        S5         U R                  R                  U" UR                  5      5        S S S 5        S S S 5        U R                  T/ 5        g ! , (       d  f       N)= f! , (       d  f       N2= f)Nc                 &   > TR                  U5      $ r   r   r   s     r   r   HBaseStartTLS.test_create_connection_ssl_slow_handshake.<locals>.<lambda>  r   r   c                      U R                  S5        U R                  5         g ! [         a     Nf = f! U R                  5         f = frt  r  )r   s    r   r  FBaseStartTLS.test_create_connection_ssl_slow_handshake.<locals>.server  s>    k* 

 *  

s   $ 
14 14 Ac                 V   >#    [         R                  " U TSSS.6I S h  vN u  pg  N7f)Nr  g      ?r  )r   open_connectionr"  r   rr   r  s      r   r%  FBaseStartTLS.test_create_connection_ssl_slow_handshake.<locals>.client  s0     #*#:#:! "&)	$+ +NFF +s   )')r   r  zSSL handshake.*is taking longer)
r$   r,  r   r   r-  rB   rf   r   r"  r   )r   r  r%  r4  r  r   s       @@r   )test_create_connection_ssl_slow_handshake6BaseStartTLS.test_create_connection_ssl_slow_handshake  s    ";;=		''(NO		+ __V)*%&  (+.''*68 		,,VCHH-=>	8	( 	2&8 8	( (s$   C
*,B9C
9
C	C


Cc                   ^^ U R                   R                  S 5        [        R                  " 5       m[        R                  " SS9mU4S jnU4S jnU R                  USSS9 nU R                  [        R                  5         U R                   R                  U" UR                  5      5        S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)Nc                     g r   r   r   r   s     r   r   LBaseStartTLS.test_create_connection_ssl_failed_certificate.<locals>.<lambda>      $r   F)disable_verifyc                    >  U R                  TSS9  U R	                  5         g ! [        R                   a     N'[         a     N2f = f! U R	                  5         f = f)NTr   )r   r5   SSLErrorOSErrorr,   )r   r  s    r   r  JBaseStartTLS.test_create_connection_ssl_failed_certificate.<locals>.server  sY    	 $  & 

 <<   

s+   $ AA	 	AA	 AA	 	Ac                 r   >#    [         R                  " U TS[        R                  S.6I S h  vN u  pg  N7f)Nr  r  )r   r  r   LOOPBACK_TIMEOUTr  s      r   r%  JBaseStartTLS.test_create_connection_ssl_failed_certificate.<locals>.client  s9     #*#:#:! "&-&>&>	$@ @NFF @s   *757r   r  )r   r   r$   r+  r,  r-  rt   r5   SSLCertVerificationErrorr   r"  )r   r  r%  r4  r  r  s       @@r   -test_create_connection_ssl_failed_certificate:BaseStartTLS.test_create_connection_ssl_failed_certificate  s    		''(>?446";; "
		@ __V)*%&  (+.""3#?#?@		,,VCHH-=> A	( ( A@	( (s$   % C,C1C
C	C
C!c                   ^ ^^ T R                   R                  S 5        [        R                  " 5       m[        R                  " 5       mU4S jnUU 4S jnT R                  USSS9 nT R                   R                  U" UR                  5      5      nS S S 5        T R                  WS5        g ! , (       d  f       N!= f)Nc                     g r   r   r  s     r   r   BBaseStartTLS.test_start_tls_client_corrupted_ssl.<locals>.<lambda>  r  r   c                 l  > U R                  5       n U R                  TSS9  U R                  S5        U R                  S5        UR	                  S5        UR                  5         U R                  5         g ! [
        R                   a     N7f = f! UR                  5         U R                  5         f = f)NTr      A
r   s!   please corrupt the SSL connection)dupr   r   r   ry   r5   r  r,   )r   	orig_sockr  s     r   r  @BaseStartTLS.test_start_tls_client_corrupted_ssl.<locals>.server  s    
I $  & V$a CD !

	 <<  !

s$   AA7 7BB BB "B3c                   >#    [         R                  " U TSS.6I S h  vN u  pTR                  UR                  5       I S h  vN S5        UR	                  S5        TR                  [        R                  5         UR                  5       I S h  vN   S S S 5        UR                  5         g N Nm N!! , (       d  f       N%= f7f)Nr  )r5   r  r     BOK)	r   r  r   readliner9   rt   r5   r  r,   )r"  r   rr   r  r   s      r   r%  @BaseStartTLS.test_start_tls_client_corrupted_ssl.<locals>.client$  s     #*#:#:! "$$ $NF
 6??#44f=LL""3<<0oo''' 1 LLN$
 5 ( 10sK   CB/$CB19C=B5B3B5C1C3B55
C?Cr   r  r  )	r   r   r$   r+  r,  r-  r   r"  r   )r   r  r%  r4  resr  r  s   `    @@r   #test_start_tls_client_corrupted_ssl0BaseStartTLS.test_start_tls_client_corrupted_ssl  s    		''(>?446";;=		 __V)*%&  (+.))..vchh/?@C	( 	d#( (s   (,B//
B=r   N)r   r   r   r   r*  r   LONG_TIMEOUTr   r   r   r5  rI  r   skip_if_tcp_blackholerp  r  r  r  r  r  r  r  r   r   r   r   r   r      s    L""G"-H^@,D>,@ ((Y8 )Y8v;Az ((W1 )W1r	-.+`'B?B)$r   r   c                       \ rS rSrS rSrg)SelectorStartTLSTestsi;  c                 ,    [         R                  " 5       $ r   )r   SelectorEventLoopr   s    r   r   SelectorStartTLSTests.new_loop>      ((**r   r   Nr   r   r   r   r   r   r   r   r   r  r  ;  s    +r   r  ProactorEventLoopzWindows onlyc                       \ rS rSrS rSrg)ProactorStartTLSTestsiB  c                 ,    [         R                  " 5       $ r   )r   r  r   s    r   r   ProactorStartTLSTests.new_loopF  r  r   r   Nr   r   r   r   r  r  B  s    +r   r  __main__) r^   r   unittestr0  testr   test.supportr   r   r5   ImportErrorr   r   r   r   test.test_asyncior	   r$   r
   
func_testsr   skipIfTestCaser   FunctionalTestCaseMixinr   r  
skipUnlesshasattrr  r   ru   r   r   r   <module>r     s7        &      1 6( 
o.B1Z00 B1 /B1TR	$:55 R	$j 
o.+L(*;*; + /+ 
o.	WW&9:NK+L(*;*; + L /+ zMMO }  
Cs   D! !D-,D-