+
    Biq                     l   R t ^ RIt^ RIt^ RIt^ RIt^ RIHt ^ RIHt ^ RIH	t	  ^ RI
t
^ RIt^ RIHt ^ RIHt ^ RIHt ^ RIHt ^ R	IHt R
 t]P,                  ! ]
RJ R4       ! R R]P.                  4      4       t ! R R]P2                  4      t]P,                  ! ]
RJ R4       ! R R]]P.                  4      4       t]P,                  ! ]
RJ R4      ]P8                  ! ]! ]R4      R4       ! R R]]P.                  4      4       4       t]R8X  d   ]P@                  ! 4        R# R#   ] d    Rt
 ELi ; i)zTests for asyncio/sslproto.py.N)support)socket_helper)mock)log)	protocols)sslproto)utils)
functionalc                  D    \         P                  P                  R 4       R # N)asyncioevents_set_event_loop_policy     6/usr/lib/python3.14/test/test_asyncio/test_sslproto.pytearDownModuler      s    NN))$/r   zNo ssl modulec                      a a ] tR t^t oV 3R ltRRRR/R ltRR/R ltR tR	 tR
 t	R t
R tR tR tR tR tR tR tR tRtVtV ;t# )SslProtoHandshakeTestsc                   < \         SV `  4        \        P                  ! 4       V n        V P                  V P                  4       R # r   )supersetUpr   new_event_looploopset_event_loop)self	__class__s   &r   r   SslProtoHandshakeTests.setUp   s.    **,	DII&r   waiterNprotoc               H   \         P                  ! 4       pVf   \        P                  ! 4       p\        P
                  ! V P                  W#VRR7      pV P                  VP                  P                  4       V4       V P                  VP                  P                  4       V# )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                  \         P                  ! 4       p\         P                  ! 4       p\        P                  VP                  n        \        P                  VP                  n        Ve   W$n        WAn        VP                  V4       V# r   )
r   MocksslSSLWantReadErrorreadside_effectwriter0   _sslobjconnection_made)r   r-   r0   	transportsslobjs   &&$  r   r9   &SslProtoHandshakeTests.connection_made-   sb    IIK	"%"6"6#&#7#7 #"."!!),r   c           
     B   \         P                  ! 4       p\        P                  ! 4       p\        P                  ! 4       pV P	                  \
        R 4      ;_uu_ 4        \        P                  ! V P                  W!V^ R7       RRR4       R#   + '       g   i     R# ; i)a positive numberr!   N	r#   r$   r   r2   assertRaisesRegex
ValueErrorr   r&   r   r   r,   	app_protor   s   &   r   test_handshake_timeout_zero2SslProtoHandshakeTests.test_handshake_timeout_zero9   se    113
IIK	##J0CDD  I678: EDDD   %BB	c           
     B   \         P                  ! 4       p\        P                  ! 4       p\        P                  ! 4       pV P	                  \
        R 4      ;_uu_ 4        \        P                  ! V P                  W!VRR7       RRR4       R#   + '       g   i     R# ; i)r>   r!   Nir?   rB   s   &   r   test_handshake_timeout_negative6SslProtoHandshakeTests.test_handshake_timeout_negativeA   se    113
IIK	##J0CDD  I67:< EDDDrF   c                r   V P                   P                  4       pV P                  VR 7      pV P                  V\        P
                  ! \        P                  R7      R7       VP                  4        \        P                  ! V P                   4       V P                  VP                  4       \        4       R# r   r6   )r0   N)r   create_futurer.   r9   r   r2   r3   r4   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                   V P                   P                  4       pV P                  VR 7      p\        P                  P                  4       p\        P                  P                  \        P                  4        VP                  R4       \        P                  P                  V4       R#   \        P                  P                  T4       i ; irL   N)
r   rN   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   9B+ +!Cc                |   V P                   P                  4       pV P                  VR 7      pV P                  V\        P
                  ! \        P                  R7      R7       VP                  \        4       \        P                  ! V P                   4       V P                  VP                  4       \        4       R# rK   )r   rN   r.   r9   r   r2   r3   r4   connection_lostConnectionAbortedErrorr#   rP   rQ   rR   rT   s   &  r   test_connection_lost+SslProtoHandshakeTests.test_connection_lostc   s     ((*%%V%4	s/C/CD 	 	
 	!!"89tyy)f..02HIr   c                  a a	a
 \         P                  ! 4       p\         P                  ! R R7      Vn        \         P                  ! \        R7      Vn        \
        P                  ! R	S P                  R7      p\
        P                  ! VS P                  R7      pS P                  VR7      p\         P                  ! 4       p\        P                  VP                  n        \        P                  VP                  n        WTn        Ro	\         P                  ! 4       p\         P                  ! S	R7      Vn        \!        S	4      Vn        Wdn        S P                  P'                  W4       VP(                  p\
        P*                  ! WsVS P                  4      o
V	V V
3R lpS P                  P-                  V! 4       4       R# )
i90  )return_valuerM   )limitr   r   r   s   An interesting messagec                     <"   VV3R  lp V ! 4       G Rj  xL
  SP                  \        4      ;_uu_ 4        V ! 4       G Rj  xL
  RRR4       R#  L; L  + '       g   i     R# ; i5i)c                  f   <"   SP                  S 4       SP                  4       G R j  xL
  R #  L5ir   )r7   drain)datawriters   r   r7   RSslProtoHandshakeTests.test_connection_lost_when_busy.<locals>.main.<locals>.write   s!     T"lln$$s   %1/1N)assertRaisesrS   )r7   ro   r   rp   s    r   mainCSslProtoHandshakeTests.test_connection_lost_when_busy.<locals>.main   sP     %
 'MM ""#788g 98   988s8   A)A!A)AAAA)AA&	 	A)Ni   )r   r2   filenoBrokenPipeErrorsendr   StreamReaderr   StreamReaderProtocolr.   r3   r4   r5   r6   r7   r8   lenpending	_outgoing_make_socket_transportr(   StreamWriterrun_until_complete)r   sockreaderprotocolr-   r;   outgoingr:   rs   ro   rp   s   f        @@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                   V P                   P                  4       pV P                  VR 7      pV P                  V\        P
                  ! \        P                  R7      R7      p\        P                  ! V P                   4       VP                  P                  4        V P                  VP                  P                  4       R# rK   )r   rN   r.   r9   r   r2   r3   r4   r#   rP   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                  a V P                  V P                  4       R 7      pV P                  V4       . oV P                  P                  V3R l4       VP                  P                  4        V P                  S. 4       R# )rk   c                 &   < SP                  V4      # r   appendr   ctxmessagess   &&r   <lambda>GSslProtoHandshakeTests.test_close_during_ssl_over_ssl.<locals>.<lambda>       (//#:Nr   N)r.   r9   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                   V P                   P                  4       pV P                  VR 7      pV P                  VP	                  R4      4       \        4       pV P                  VP	                  RV4      V4       V P                  V4       V P                  VP	                  R4      4       VP                  R4       V P                  VP	                  R4      4       R# )rL   socketN)
r   rN   r.   assertIsNone_get_extra_infoobjectr'   r9   assertIsNotNonerc   )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                J   V P                   P                  4       pV P                  VR 7      p\        P                  ! 4       pVP
                  P                  V4       V P                  VP
                  P                  4       V4       V P                  VP                  V4       R# rX   )
r   rN   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                    V P                  4       pV P                  V4       VP                  pVP                  4        V P	                  VP                  ^4      4       R# )   N)r.   r9   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                    V P                  4       pV P                  V4       VP                  pVP                  4        V P	                  VP                  R 4      4       R# )s   dataN)r.   r9   r(   r+   r   r7   r   s   &  r   test_write_after_closing/SslProtoHandshakeTests.test_write_after_closing   sK    %%'	Y')) 	&,,w/0r   rj   )__name__
__module____qualname____firstlineno__r   r.   r9   rD   rH   rU   r`   re   r   r   r   r   r   r   r   __static_attributes____classdictcell____classcell__)r   __classdict__s   @@r   r   r      sm     '
T  
 
:<	H+J.-`7
'	?>71 1r   r   c                      a  ] tR t^t o Rt]P                  tR tR t	R t
R t]P                  R 4       tR t]P                  R 4       tR tR	 tR
 tR tR tRtV tR# )BaseStartTLSc                    \         hr   )NotImplementedErrorr   s   &r   new_loopBaseStartTLS.new_loop   s    !!r   c                ^    ! R  R\         P                  4      pR EFw  pV! ^V4      p\        P                  ! VR4       V P	                  VP
                  R4       V! ^V4      p\        P                  ! VR4       V P	                  VP
                  R4       V! ^V4      p\        P                  ! VR4       V P	                  VP
                  R4       V! ^V4      p\        P                  ! VR4       V P	                  VP
                  R4       V! ^dV4      p\        P                  ! VR4       V P	                  VP
                  R4       V! ^ V4      pV P                  \        R4      ;_uu_ 4        \        P                  ! VR4       RRR4       EKz  	  R#   + '       g   i     EK  ; i)c                   2   a  ] tR t^t o R tR tR tRtV tR# ).BaseStartTLS.test_buf_feed_data.<locals>.Protoc                t    \        V4      V n        \        V P                  4      V n        R V n        W n        R# r   N)	bytearraybuf
memoryviewmvro   usemv)r   bufsizer   s   &&&r   __init__7BaseStartTLS.test_buf_feed_data.<locals>.Proto.__init__   s*    $W-$TXX.	"
r   c                V    V P                   '       d   V P                  # V P                  # r   )r   r   r   r   sizehints   &&r   
get_buffer9BaseStartTLS.test_buf_feed_data.<locals>.Proto.get_buffer   s    :::77N88Or   c                    V P                   '       d)   V ;P                  V P                  R V ,          un        R # V ;P                  V P                  R V ,          un        R # r   )r   ro   r   r   )r   nsizes   &&r   r   =BaseStartTLS.test_buf_feed_data.<locals>.Proto.buffer_updated   s<    :::II%0III&5!11Ir   )r   ro   r   r   N)	r   r   r   r   r   r   r   r   r   r   s   @r   Protor      s     #$2 2r   r   s   12345s   1234zempty bufferN)FT)r   BufferedProtocolr   _feed_data_to_buffered_protor   ro   r@   RuntimeError)r   r   r   r   s   &   r   test_buf_feed_dataBaseStartTLS.test_buf_feed_data   sP   	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E66uhG FE- #, FEEs   3FF,c           	       a aaaa R S P                   ,          o\        P                  ! 4       o\        P                  ! 4       oVV V3R lp ! V 3R lR\        P
                  4      oVVVV 3R lpS P                  VS P                  R7      ;_uu_ 4       pS P                  P                  \        P                  ! V! VP                  4      \        P                  R7      4       RRR4       \        P                  ! S4      o\        P                   ! 4        S P#                  S! 4       4       R#   + '       g   i     LS; i)   1c                   < V P                  SP                  4       V P                  \        S4      4      pSP	                  \        V4      \        S4      4       V P                  SR R7       V P                  R4       V P                  \        S4      4      pSP	                  \        V4      \        S4      4       V P                  \        P                  4       V P                  4        R# Tserver_side   ON
settimeoutTIMEOUTrecv_allrz   r   	start_tlssendallshutdownr   	SHUT_RDWRr+   r   ro   	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                   @   <a  ] tR tRt o R tV3R ltR tR tRtV t	R# )CBaseStartTLS.test_start_tls_client_reg_proto_1.<locals>.ClientProtoi2  c                ,    Wn         W n        ^ V n        R#     N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                r   < V ;P                   ^,          un         SP                  V P                   ^4       R#    Nr   r   r   trr   s   &&r   r9   SBaseStartTLS.test_start_tls_client_reg_proto_1.<locals>.ClientProto.connection_made8  *    ""a'"  !3!3Q7r   c                <    V P                   P                  V4       R # r   r   
set_resultr   ro   s   &&r   data_receivedQBaseStartTLS.test_start_tls_client_reg_proto_1.<locals>.ClientProto.data_received=      ''-r   c                <    V P                   P                  R 4       R# TNr   r	  r   s   &r   rO   PBaseStartTLS.test_start_tls_client_reg_proto_1.<locals>.ClientProto.eof_received@      &&t,r   r   r   r   N
r   r   r   r   r   r9   r  rO   r   r   r   r   s   @r   ClientProtor   2       &
8
.- -r   r  c                   <aa"   \         P                  ! R 4      G Rj  xL
  S	P                  P                  4       oS	P                  P                  4       oS	P                  P                  ! VVV3R l.V O5!  G Rj  xL
 w  rVP                  S4       S	P                  P                  WS4      G Rj  xL
 pS	P                  SG Rj  xL
 R4       VP                  S4       SG Rj  xL
  VP                  4        R#  L L LO L< L5i)      ?Nc                     < S ! SS4      # 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   rN   create_connectionr7   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6D7DDD+D
,DDDD
DtimeoutN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   f   @@@@r   !test_start_tls_client_reg_proto_1.BaseStartTLS.test_start_tls_client_reg_proto_1  s    4,,,	#<<>#<<>		-'** 	-"	 	$ __UDLL_99SII((  !1)0)>)>@A : !^4.*+ :9   AD00E 	c           	       a aaaa R S P                   ,          o\        P                  ! 4       o\        P                  ! 4       oVV V3R lp ! V 3R lR\        P
                  4      oVVVV 3R lpS P                  VS P                  R7      ;_uu_ 4       pS P                  P                  \        P                  ! V! VP                  4      \        P                  R7      4       RRR4       \        P                  ! S4      o\        P                   ! 4        S P#                  S! 4       4       R#   + '       g   i     LS; i)r   c                 `  < V P                  SP                  4       V P                  SR R7       V P                  R4       V P	                  \        S4      4      pSP                  \        V4      \        S4      4       V P                  \        P                  4       V P                  4        R# r   )r   r   r   r   r   rz   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                   @   <a  ] tR tRt o R tV3R ltR tR tRtV t	R# )DBaseStartTLS.test_create_connection_memory_leak.<locals>.ClientProtoiq  c                ,    Wn         W n        ^ V n        R# r   r   r   s   &&&r   r   MBaseStartTLS.test_create_connection_memory_leak.<locals>.ClientProto.__init__r  r   r   c                ~   < Wn         V ;P                  ^,          un        SP                  V P                  ^4       R# r   )r  r   r   r  s   &&r   r9   TBaseStartTLS.test_create_connection_memory_leak.<locals>.ClientProto.connection_madew  s/    ""a'"  !3!3Q7r   c                <    V P                   P                  V4       R # r   r  r
  s   &&r   r  RBaseStartTLS.test_create_connection_memory_leak.<locals>.ClientProto.data_received~  r  r   c                <    V P                   P                  R 4       R# r  r  r   s   &r   rO   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                   <aa"   \         P                  ! R 4      G Rj  xL
  SP                  P                  4       oSP                  P                  4       oSP                  P                  ! VVV3R l.V O5RS/ G Rj  xL
 w  rSP                  SG Rj  xL
 R4       VP                  S4       SG Rj  xL
  VP                  4        R#  L LO L: L5i)r  Nc                     < S ! SS4      # r   r   r  s   r   r   QBaseStartTLS.test_create_connection_memory_leak.<locals>.client.<locals>.<lambda>  r  r   r3   r   )r   r  r   rN   r  r   r7   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%  Nr'  r1  s   f   @@@@r   "test_create_connection_memory_leak/BaseStartTLS.test_create_connection_memory_leak_  s    4,,,	#<<>#<<>
		-'** 	-&	 	  __UDLL_99SII((  !1)0)>)>@A : !^4.*+ :9r5  c           	     D  a aaaaaa	 R S P                   ,          o\        P                  ! 4       o	\        P                  ! 4       o^ oVV V	3R lp ! VV 3R lR\        P
                  4      o ! V3R lR\        P                  4      oVVVVVV 3R lpS P                  VS P                  R7      ;_uu_ 4       pS P                  P                  \        P                  ! V! VP                  4      S P                  R7      4       RRR4       R#   + '       g   i     R# ; i)	r   c                 z  < V P                  SP                  4       V P                  \        S4      4      pSP	                  \        V4      \        S4      4       V P                  SR R7       V P                  R4       V P                  \        S4      4      pSP	                  \        V4      \        S4      4       V P                  R4       V P                  \        S4      4      pSP	                  \        V4      \        S4      4       V P                  \        P                  4       V P                  4        R# )Tr   r      2Nr   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                   F   <a  ] tR tRt o R tV3R ltR tV3R ltRtV t	R# )HBaseStartTLS.test_start_tls_client_buf_proto_1.<locals>.ClientProtoFirsti  c                2    Wn         \        ^4      V n        R# r   )r   r   r   )r   r   s   &&r   r   QBaseStartTLS.test_start_tls_client_buf_proto_1.<locals>.ClientProtoFirst.__init__  s    &$Q<r   c                   < S^,          oR# r   r   r   r  client_con_made_callss   &&r   r9   XBaseStartTLS.test_start_tls_client_buf_proto_1.<locals>.ClientProtoFirst.connection_made      %*%r   c                    V P                   # r   )r   r   s   &&r   r   SBaseStartTLS.test_start_tls_client_buf_proto_1.<locals>.ClientProtoFirst.get_buffer  s    xxr   c                   < SP                  V^4       V P                  P                  \        V P                  RV 4      4       R# 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   r9   r   r   r   r   )r   rS  r   s   @r   ClientProtoFirstrN    s     (+ ? ?r   r\  c                   @   <a  ] tR tRt o R tV3R ltR tR tRtV t	R# )IBaseStartTLS.test_start_tls_client_buf_proto_1.<locals>.ClientProtoSecondi  c                ,    Wn         W n        ^ V n        R# r   r   r   s   &&&r   r   RBaseStartTLS.test_start_tls_client_buf_proto_1.<locals>.ClientProtoSecond.__init__  r   r   c                   < S^,          oR# r   r   rR  s   &&r   r9   YBaseStartTLS.test_start_tls_client_buf_proto_1.<locals>.ClientProtoSecond.connection_made  rU  r   c                <    V P                   P                  V4       R # r   r  r
  s   &&r   r  WBaseStartTLS.test_start_tls_client_buf_proto_1.<locals>.ClientProtoSecond.data_received  r  r   c                <    V P                   P                  R 4       R# r  r  r   s   &r   rO   VBaseStartTLS.test_start_tls_client_buf_proto_1.<locals>.ClientProtoSecond.eof_received  r  r   r  Nr  )r   rS  s   @r   ClientProtoSecondr^    s     &
+.- -r   rg  c                   <a"   \         P                  ! R 4      G Rj  xL
  SP                  P                  4       oSP                  P                  4       pSP                  P                  4       pSP                  P                  ! VV3R l.V O5!  G Rj  xL
 w  r4VP                  S	4       SP                  P                  W4S4      G Rj  xL
 pSP                  SG Rj  xL
 R4       VP                  S	4       VP                  S! W4      4       SP                  VG Rj  xL
 R4       VP                  S	4       VG Rj  xL
  VP                  4        SP                  S
^4       R#  ELP L L L LQ L35i)r  Nc                     < S ! S4      # r   r   )r\  on_data1s   r   r   PBaseStartTLS.test_start_tls_client_buf_proto_1.<locals>.client.<locals>.<lambda>  s    (2r   r   rK  )
r   r  r   rN   r  r7   r   r   r   r+   )r   on_data2r   r  r   r!  rj  r\  rg  r   rS  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   E;E.A8E;E16E;E3E;#E5$AE;%E7&E;E9)E;1E;3E;5E;7E;9E;r%  N)r(  r#   r)  r*  r   r   r%   r+  r   r   r   r,  r   )
r   r   r#  r2  r\  rg  r   rS  r"  r   s
   f   @@@@@@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_99SII((  !1)-78 :999s   8ADD	c           	       a aaaa R S P                   ,          o\        P                  ! 4       oS P                  P	                  4       oVV V3R lp ! V 3R lR\
        P                  4      oVVVV V3R lpS P                  VS P                  R7      ;_uu_ 4       pS P                  P                  \
        P                  ! V! VP                  4      \        P                  R7      4       RRR4       R#   + '       g   i     R# ; i)r   c                   < V P                  SP                  4       V P                  \        S4      4      pSP	                  \        V4      \        S4      4        SP
                  P                  SP                  R 4       V P                  R4      pV P                  4        R #   \         d     Li ; i  T P                  4        i ; i)N   )
r   r   r   rz   r   r   call_soon_threadsafer	  rd   r+   )r   ro   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% %B30B6 2B33B6 6Cc                   @   <a  ] tR tRt o R tV3R ltR tR tRtV t	R# )CBaseStartTLS.test_start_tls_slow_client_cancel.<locals>.ClientProtoi  c                ,    Wn         W n        ^ V n        R# r   r   r   s   &&&r   r   LBaseStartTLS.test_start_tls_slow_client_cancel.<locals>.ClientProto.__init__  r   r   c                r   < V ;P                   ^,          un         SP                  V P                   ^4       R# r   r  r  s   &&r   r9   SBaseStartTLS.test_start_tls_slow_client_cancel.<locals>.ClientProto.connection_made  r  r   c                <    V P                   P                  V4       R # r   r  r
  s   &&r   r  QBaseStartTLS.test_start_tls_slow_client_cancel.<locals>.ClientProto.data_received  r  r   c                <    V P                   P                  R 4       R# r  r  r   s   &r   rO   PBaseStartTLS.test_start_tls_slow_client_cancel.<locals>.ClientProto.eof_received  r  r   r  Nr  r  s   @r   r  rw    r  r   r  c           	      T  <aa"   \         P                  ! R 4      G Rj  xL
  SP                  P                  4       oSP                  P                  4       oSP                  P                  ! VVV3R l.V O5!  G Rj  xL
 w  rVP                  S4       S	G Rj  xL
  SP                  \         P                  4      ;_uu_ 4        \         P                  ! SP                  P                  WS4      R 4      G Rj  xL
  RRR4       R#  L L Ls L  + '       g   i     R# ; i5i)r  Nc                     < S ! SS4      # r   r   r  s   r   r   PBaseStartTLS.test_start_tls_slow_client_cancel.<locals>.client.<locals>.<lambda>(  r  r   )
r   r  r   rN   r  r7   rr   TimeoutErrorr,  r   )
r   r  r   r   r   r  r   r"  r   rt  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8&&II''>B   98 %
=
 , 988s^   D(DAD(?D D(D+D(5D=D>DD(D(D(DD%		D(r%  N)r(  r#   r*  r   rN   r   r%   r+  r   r   r,  r   r   r-  )r   r   r#  r2  r  r   r"  rt  s   f   @@@@r   !test_start_tls_slow_client_cancel.BaseStartTLS.test_start_tls_slow_client_cancel  s    4,,,	#<<>$(II$;$;$=!		-'** 	-"	 	$ __UDLL_99SII((  !1)0)>)>@A :999s   AC55D	c                N  a aaaaaaaa	 R S P                   ,          oRo\        P                  ! 4       o	\        P                  ! 4       oRoVVVVV 3R lo ! V3R lR\        P
                  4      oVVV V	3R loVVVVVV 3R lpS P                  P                  V! 4       4       R# )r   s   answerNc                 t  < V P                  SP                  4       V P                  V4       V P                  \	        S4      4      pSP                  \	        V4      \	        S4      4       V P                  S4       V P                  S4       V P                  \	        S4      4      oV P                  4        R # r   )	r   r   connectr   rz   r   r   r   r+   )r   r   ro   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                   F   <a  ] tR tRt o R tR tR tV3R ltR tRt	V t
R# )	9BaseStartTLS.test_start_tls_server_1.<locals>.ServerProtoiN  c                F    Wn         W n        W0n        R V n        RV n        R# r   )on_conon_con_loston_got_helloro   r:   )r   r  r  r  s   &&&&r   r   BBaseStartTLS.test_start_tls_server_1.<locals>.ServerProto.__init__O  s!    $#. $0!	!%r   c                H    Wn         V P                  P                  V4       R # r   )r:   r  r	  r   r  s   &&r   r9   IBaseStartTLS.test_start_tls_server_1.<locals>.ServerProto.connection_madeV  s    !#&&r*r   c                    Wn         R # r   )r:   r  s   &&r   replace_transportKBaseStartTLS.test_start_tls_server_1.<locals>.ServerProto.replace_transportZ  s    !#r   c                   < V ;P                   V,          un         \        V P                   4      \        S4      8  d   V P                  P                  R 4       R # R # r   )ro   rz   r  r	  )r   ro   r   s   &&r   r  GBaseStartTLS.test_start_tls_server_1.<locals>.ServerProto.data_received]  s>    		T!	tyy>S^3%%006 4r   c                    R V n         Vf   V P                  P                  R 4       R # V P                  P                  V4       R # r   )r:   r  r	  set_exception)r   excs   &&r   rc   IBaseStartTLS.test_start_tls_server_1.<locals>.ServerProto.connection_lostb  s6    !%;$$//5$$2237r   )ro   r  r  r  r:   N)r   r   r   r   r   r9   r  r  rc   r   r   )r   r   s   @r   ServerProtor  N  s#     &+$7
8 8r   r  c                   <"   VG R j  xL
 pVP                  S4       SP                  V P                  R4       SP                  P	                  W@S	RSP
                  R7      G R j  xL
 pV P                  V4       VG R j  xL
  VP                  S4       VG R j  xL
  SP                  V P                  S4       VP                  4        R #  L Lj LQ L85i)Nr   T)r   r"   )r7   r   ro   r   r   r   r  r+   )
r   r  r  r  r  r!  r  r   r   r   s
   &&&&  r   rs   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3CCCCc            
        <aa"   SP                   P                  4       p SP                   P                  4       pSP                   P                  4       pS! WV4      oSP                   P                  V3R  lR^ 4      G Rj  xL
 pVP                  ^ ,          P	                  4       oSP                  VV	3R lSP                  R7      ;_uu_ 4        \        P                  ! S
! SWV4      SP                  R7      G Rj  xL
  RRR4       VP                  4        VP                  4       G Rj  xL
  SP                  SS4       R#  L LJ  + '       g   i     LP; i L/5i)c                     < S # r   r   rk   s   r   r   HBaseStartTLS.test_start_tls_server_1.<locals>.run_main.<locals>.<lambda>  s    r   z	127.0.0.1Nc                    < S! V S4      # r   r   )r   r   r#  s   &r   r   r    s    fT4.@r   r%  )r   rN   create_serversocketsgetsockname
tcp_clientr   r   r,  r+   wait_closedr   )r  r  r  serverr   r   r  r  r  r#  rs   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 7&&\B LL* * *7 LLN$$&&&VV,/*7 7 'sI   A<E!EAE!.E?E
 E+E!/E0E!
EE		E!)r(  r#   r)  r*  r   r%   r   r   )
r   r  r  r   r  r  r#  r"  rs   r   s
   f @@@@@@@@r   test_start_tls_server_1$BaseStartTLS.test_start_tls_server_18  s    4,,,	#<<>#<<>	 		8'** 	86	 	&	- 	-( 			$$XZ0r   c                T   a  V 3R  lpS P                   P                  V! 4       4       R# )c                    <"   SP                  \        R 4      ;_uu_ 4        SP                  P                  RRR4      G Rj  xL
  RRR4       \        P
                  ! 4       p SP                  \        R4      ;_uu_ 4        SP                  P                  RRV 4      G Rj  xL
  RRR4       R#  Lo  + '       g   i     Lu; i L#  + '       g   i     R# ; i5i)zSSLContext, gotNzis not supported)r@   	TypeErrorr   r   r#   r)  )sslctxr   s    r   rs   4BaseStartTLS.test_start_tls_wrong_args.<locals>.main  s     ''	3DEEii))$d;;; F  88:F''	3EFFii))$f=== GF < FE
 > GFFsX   C!B5B3B5;C!C
$C%C
)
C3B55C	 CC

C		CN)r   r   )r   rs   s   f r   test_start_tls_wrong_args&BaseStartTLS.test_start_tls_wrong_args  s    	> 			$$TV,r   c           	       a aaa \         P                  ! 4       o. oS P                  P                  V3R  l4       RoV3R lpVV 3R lpS P	                  V^^R7      ;_uu_ 4       pS P                  \        P                  4      ;_uu_ 4        S P                  P                  V! VP                  4      4       RRR4       RRR4       S P                  S4       S P                  S. 4       \        P                  ! S4      o\        P                  ! 4        S P!                  S! 4       4       R#   + '       g   i     L~; i  + '       g   i     L; i)c                 &   < SP                  V4      # r   r   r   s   &&r   r   5BaseStartTLS.test_handshake_timeout.<locals>.<lambda>  r   r   Fc                    <  V P                  R4       V P                  4        R#   \         d    Ro L!i ; i  T P                  4        i ; i)   TNrr  r   rd   r+   )r   server_side_aborteds   &r   r  3BaseStartTLS.test_handshake_timeout.<locals>.server  sB    k* 

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

s   & 69 69 Ac                    <"   \         P                  ! SP                  P                  ! \         P                  .V O5R SRRR\
        P                  / R4      G Rj  xL
  R#  L5i)r3   server_hostname r"   r  N)r   r,  r   r  r%   r   r-  )r   client_sslctxr   s   &r   r#  3BaseStartTLS.test_handshake_timeout.<locals>.client  so     ""		++$$AA &A %'	A
 +2*?*?A   s   AA%A#A%max_clientsbacklogN)r#   r*  r   r   r+  rr   r   r  r   r   r   r   r.  r/  r   r0  r   )r   r  r#  r2  r  r   r  s   f   @@@r   test_handshake_timeout#BaseStartTLS.test_handshake_timeout  s     #;;=		''(NO#		 __V)*%&  ( (+.""7#7#788		,,VCHH-=> 9	( 	+, 	2&  M2-/* 98	( (s$   &(E,D0	:E0E ;EE	c           	       aa \         P                  ! 4       o. oV P                  P                  V3R  l4       R pV3R lpV P	                  V^^R7      ;_uu_ 4       pV P                  \        R4      ;_uu_ 4        V P                  P                  V! VP                  4      4       RRR4       RRR4       V P                  S. 4       R#   + '       g   i     L,; i  + '       g   i     L7; i)c                 &   < SP                  V4      # r   r   r   s   &&r   r   HBaseStartTLS.test_create_connection_ssl_slow_handshake.<locals>.<lambda>  r   r   c                      V P                  R4       V P                  4        R#   \         d     Li ; i  T P                  4        i ; i)r  Nrr  r  )r   s   &r   r  FBaseStartTLS.test_create_connection_ssl_slow_handshake.<locals>.server  s>    k* 

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

s   % 36 36 Ac           	      \   <"   \         P                  ! V R SRRRR/ G Rj  xL
 w  rR#  L5i)r3   r  r  r"   g      ?N)r   open_connectionr   r   rp   r  s   &  r   r#  FBaseStartTLS.test_create_connection_ssl_slow_handshake.<locals>.client  sC     #*#:#:$+!$+ !#$+ '*	$+ +NFF +s   ,*	,r  zSSL handshake.*is taking longerN)
r#   r*  r   r   r+  r@   rd   r   r   r   )r   r  r#  r2  r  r   s   &   @@r   )test_create_connection_ssl_slow_handshake6BaseStartTLS.test_create_connection_ssl_slow_handshake  s    ";;=		''(NO		+ __V)*%&  ( (+.''*68 8 		,,VCHH-=>	8	( 	2&8 8	( (s$   C =,C	)C CC  C0	c           	        aa V P                   P                  R  4       \        P                  ! 4       o\        P                  ! RR7      oV3R lpV3R lpV P                  V^^R7      ;_uu_ 4       pV P                  \        P                  4      ;_uu_ 4        V P                   P                  V! VP                  4      4       RRR4       RRR4       R#   + '       g   i     L; i  + '       g   i     R# ; i)c                     R # r   r   r   r   s   &&r   r   LBaseStartTLS.test_create_connection_ssl_failed_certificate.<locals>.<lambda>      $r   F)disable_verifyc                    <  V P                  SR R7       V P	                  4        R#   \        P                   d     L)\         d     L5i ; i  T P	                  4        i ; i)Tr   N)r   r3   SSLErrorOSErrorr+   )r   r  s   &r   r  JBaseStartTLS.test_create_connection_ssl_failed_certificate.<locals>.server  sY    	 $  & 

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

s1   ( AA AA	A AA A!c           	      x   <"   \         P                  ! V R SRRR\        P                  / G Rj  xL
 w  rR#  L5i)r3   r  r  r"   N)r   r  r   LOOPBACK_TIMEOUTr  s   &  r   r#  JBaseStartTLS.test_create_connection_ssl_failed_certificate.<locals>.client  sO     #*#:#:$@!$@ !#$@ '.&>&>	$@ @NFF @s   ,:8	:r  N)r   r   r#   r)  r*  r+  rr   r3   SSLCertVerificationErrorr   r   )r   r  r#  r2  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$   3(C,,C	C,C)$C,,C=	c                  a aa S P                   P                  R  4       \        P                  ! 4       o\        P                  ! 4       oV3R lpVV 3R lpS P                  V^^R7      ;_uu_ 4       pS P                   P                  V! VP                  4      4      pRRR4       S P                  XR4       R#   + '       g   i     L$; i)c                     R # r   r   r  s   &&r   r   BBaseStartTLS.test_start_tls_client_corrupted_ssl.<locals>.<lambda>  r  r   c                 v  < V P                  4       p V P                  SR R7       V P                  R4       V P                  ^4       VP	                  R4       VP                  4        V P                  4        R#   \
        P                   d     L9i ; i  TP                  4        T P                  4        i ; i)Tr      A
s!   please corrupt the SSL connectionN)dupr   r   r   rw   r3   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A; ;BB BB "B8c                   <"   \         P                  ! V R SRR/ G Rj  xL
 w  rSP                  VP                  4       G Rj  xL
 R4       VP	                  R4       SP                  \        P                  4      ;_uu_ 4        VP                  4       G Rj  xL
  RRR4       VP                  4        R#  L Lv L"  + '       g   i     L(; i5i)r3   r  r  Nr     BOK)	r   r  r   readliner7   rr   r3   r  r+   )r   r   rp   r  r   s   &  r   r#  @BaseStartTLS.test_start_tls_client_corrupted_ssl.<locals>.client$  s     #*#:#:$$!$$ !#$$ $NF
 6??#44f=LL""3<<00oo''' 1 LLN$
 5 ( 10sL   CB9$CB;ACB?B=B?C;C=B??C	
Cr  Nr  )	r   r   r#   r)  r*  r+  r   r   r   )r   r  r#  r2  resr  r  s   f    @@r   #test_start_tls_client_corrupted_ssl0BaseStartTLS.test_start_tls_client_corrupted_ssl  s    		''(>?446";;=		 __V)*%&  ( (+.))..vchh/?@C	( 	d#( (s   3,B;;C	r   Ni  )r   r   r   r   r(  r   LONG_TIMEOUTr   r   r   r3  rG  r   skip_if_tcp_blackholern  r  r  r  r  r  r  r  r   r   r   s   @r   r   r      s     L""G"-H^@,D>,@ ((Y8 )Y8v;Az ((W1 )W1r	-.+`'B?B)$ )$r   r   c                   &   a  ] tR tRt o R tRtV tR# )SelectorStartTLSTestsi;  c                ,    \         P                  ! 4       # r   )r   SelectorEventLoopr   s   &r   r   SelectorStartTLSTests.new_loop>      ((**r   r   Nr   r   r   r   r   r   r   r   s   @r   r  r  ;  s     + +r   r  ProactorEventLoopzWindows onlyc                   &   a  ] tR tRt o R tRtV tR# )ProactorStartTLSTestsiB  c                ,    \         P                  ! 4       # r   )r   r  r   s   &r   r   ProactorStartTLSTests.new_loopF  r  r   r   Nr  r   s   @r   r   r   B  s     + +r   r   __main__)!__doc__r\   r   unittestr.  testr   test.supportr   r   r3   ImportErrorr   r   r   r   test.test_asyncior   r#   r	   
func_testsr   skipIfTestCaser   FunctionalTestCaseMixinr   r  
skipUnlesshasattrr   r   rs   r   r   r   <module>r     s8   $      &      1 60 
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& &	D32D3