nHd{PddlZddlZddlZ ddlZn #e$rdZYnwxYwddlmZddlmZddlmZddlm Z ddl m Z eej ej fZGdd ejZGd d ejZd Zd ZGdde je jZGddejZdS)N) constants) exceptions) protocols) transports)loggerc"eZdZdZdZdZdZdZdS)SSLProtocolState UNWRAPPED DO_HANDSHAKEWRAPPEDFLUSHINGSHUTDOWNN)__name__ __module__ __qualname__r r r rr7/opt/alt/python311/lib64/python3.11/asyncio/sslproto.pyr r s'I!LGHHHHrr ceZdZdZdZdZdZdS)AppProtocolState STATE_INITSTATE_CON_MADE STATE_EOFSTATE_CON_LOSTN)rrrrrrrrrrrrs$J%NI%NNNrrc`|rtdtj}|sd|_|S)Nz(Server side SSL needs a valid SSLContextF) ValueErrorsslcreate_default_contextcheck_hostname) server_sideserver_hostname sslcontexts r_create_transport_contextr$+s@ECDDD +--J *$) ! rc|||dz}n |}d|z}n|}||dz}n|}||cxkrdksntd|d|d||fS)Nirzhigh (z) must be >= low (z) must be >= 0)r)highlowkbhilos radd_flowcontrol_defaultsr,9s | ;dBBBRBB  { 1W  ====q====j""bbb"## # r6MrceZdZdZejjZdZddZ dZ dZ dZ dZ efd Zd Zd Zd Zdd ZdZdZddZdZdZedZdZdZdZdZdZdZ dZ!dS)_SSLProtocolTransportTc0||_||_d|_dSNF)_loop _ssl_protocol_closed)selfloop ssl_protocols r__init__z_SSLProtocolTransport.__init__Ts ) rNc: |j||SN)r2_get_extra_infor4namedefaults rget_extra_infoz$_SSLProtocolTransport.get_extra_infoYs1!11$@@@rc:|j|dSr9)r2_set_app_protocol)r4protocols r set_protocolz"_SSLProtocolTransport.set_protocol]s ,,X66666rc|jjSr9)r2 _app_protocolr4s r get_protocolz"_SSLProtocolTransport.get_protocol`s!//rc|jSr9)r3rEs r is_closingz _SSLProtocolTransport.is_closingcs |rch |js"d|_|jdSd|_dSNT)r3r2_start_shutdownrEs rclosez_SSLProtocolTransport.closefsC | &DL   . . 0 0 0 0 0!%D   rc\|js$d|_|dtdSdS)NTz9unclosed transport )r3warnResourceWarning)r4 _warningss r__del__z_SSLProtocolTransport.__del__tsE| ,DL NN* , , , , , , ,rc|jj Sr9)r2_app_reading_pausedrEs r is_readingz _SSLProtocolTransport.is_reading{s%999rc: |jdSr9)r2_pause_readingrEs r pause_readingz#_SSLProtocolTransport.pause_reading~s$ ))+++++rc: |jdSr9)r2_resume_readingrEs rresume_readingz$_SSLProtocolTransport.resume_readings$ **,,,,,rcp |j|||jdSr9)r2_set_write_buffer_limits_control_app_writingr4r'r(s rset_write_buffer_limitsz-_SSLProtocolTransport.set_write_buffer_limitss= $ 33D#>>> //11111rc2|jj|jjfSr9)r2_outgoing_low_water_outgoing_high_waterrEs rget_write_buffer_limitsz-_SSLProtocolTransport.get_write_buffer_limits"6"79 9rc6 |jSr9)r2_get_write_buffer_sizerEs rget_write_buffer_sizez+_SSLProtocolTransport.get_write_buffer_sizes;!88:::rcp |j|||jdSr9)r2_set_read_buffer_limits_control_ssl_readingr^s rset_read_buffer_limitsz,_SSLProtocolTransport.set_read_buffer_limitss= $ 224=== //11111rc2|jj|jjfSr9)r2_incoming_low_water_incoming_high_waterrEs rget_read_buffer_limitsz,_SSLProtocolTransport.get_read_buffer_limitsrdrc6 |jSr9)r2_get_read_buffer_sizerEs rget_read_buffer_sizez*_SSLProtocolTransport.get_read_buffer_sizes9!77999rc|jjSr9)r2_app_writing_pausedrEs r_protocol_pausedz&_SSLProtocolTransport._protocol_pauseds!55rc t|tttfs$t dt |j|sdS|j|fdS)Nz+data: expecting a bytes-like instance, got ) isinstancebytes bytearray memoryview TypeErrortyperr2_write_appdatar4datas rwritez_SSLProtocolTransport.writes{ $ : >?? :9#'::#699:: :  F ))4'22222rc< |j|dSr9)r2r})r4 list_of_datas r writelinesz _SSLProtocolTransport.writeliness& )),77777rc tr9)NotImplementedErrorrEs r write_eofz_SSLProtocolTransport.write_eofs "!rc dSr0rrEs r can_write_eofz#_SSLProtocolTransport.can_write_eofs OurcZ d|_|j|jdSdSrJr3r2_abortrEs rabortz_SSLProtocolTransport.aborts<    )   % % ' ' ' ' ' * )rcHd|_|j|dSrJrr4excs r _force_closez"_SSLProtocolTransport._force_closes&  !!#&&&&&rc|jj||jxjt |z c_dSr9)r2_write_backlogappend_write_buffer_sizelenr~s r_test__append_write_backlogz1_SSLProtocolTransport._test__append_write_backlogs? )00666 --T:----rr9NN)"rrr_start_tls_compatibler _SendfileModeFALLBACK_sendfile_compatibler7r>rBrFrHrLwarningsrQrTrWrZr_rcrgrkrorrpropertyrurrrrrrrrrrr.r.Ns!$2; AAAA777000 & & &!),,,,:::,,,---2222,999;;;2222,999:::66X6 3 3 3888""" ( ( (''';;;;;rr.ceZdZdZdZdZdZ d-dZdZd.dZ dZ d Z d Z d Z d Zd Zd.dZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZ dZ!d Z"d!Z#d"Z$d/d#Z%d$Z&d%Z'd&Z(d/d'Z)d(Z*d)Z+d*Z,d0d,Z-dS)1 SSLProtocoliNFTc ttdt|j|_t |j|_| tj}n|dkrtd|| tj } n| dkrtd| |st||}||_ |r |s||_ nd|_ ||_t||_t#j|_d|_||_||_||d|_d|_d|_||_| |_tj|_tj|_t@j!|_"d|_#|rtHj%|_&ntHj'|_&|j(|j|j|j |j |_)d|_*d|_+d|_,d|_-d|_.|/d|_0d|_1d|_2d|_3|4|5dS)Nzstdlib ssl module not availablerz7ssl_handshake_timeout should be a positive number, got z6ssl_shutdown_timeout should be a positive number, got )r#F)r!r")6r RuntimeErrorrymax_size _ssl_bufferrz_ssl_buffer_viewrSSL_HANDSHAKE_TIMEOUTrSSL_SHUTDOWN_TIMEOUTr$ _server_side_server_hostname _sslcontextdict_extra collectionsdequerr_waiterr1r@_app_transport_app_transport_created _transport_ssl_handshake_timeout_ssl_shutdown_timeout MemoryBIO _incoming _outgoingr r _state _conn_lostrr _app_staterwrap_bio_sslobj_ssl_writing_pausedrS_ssl_reading_pausedrnrmri _eof_receivedrtrbrar\_get_app_transport) r4r5 app_protocolr#waiterr!r"call_connection_madessl_handshake_timeoutssl_shutdown_timeouts rr7zSSLProtocol.__init__ s ;@AA A$T]33 *4+; < < ($-$C ! ! "a ' '/,//00 0 '#,#A !Q & &.+..// / .2_..J(  ); )$3D ! !$(D !%j111 */11"#   |,,,"&+#&;#%9"&0   >.9DOO.=DO'00 NDN) 1133 $) #( #( $%!#$  $$&&&"#( $%!#$  %%''' !!!!!rc||_t|dr;t|tjr!|j|_|j|_d|_ dSd|_ dS)N get_bufferTF) rDhasattrrwrBufferedProtocolr_app_protocol_get_bufferbuffer_updated_app_protocol_buffer_updated_app_protocol_is_buffer)r4rs rr@zSSLProtocol._set_app_protocol^sc) L, / / 1<)CDD 1,8,CD )0<0KD -+/D ( ( (+0D ( ( (rc|jdS|js7||j|n|jdd|_dSr9)r cancelled set_exception set_resultrs r_wakeup_waiterzSSLProtocol._wakeup_waiterisd <  F|%%'' . **3//// ''--- rc|j7|jrtdt|j||_d|_|jS)Nz$Creating _SSLProtocolTransport twiceT)rrrr.r1rEs rrzSSLProtocol._get_app_transportssK   &* K"#IJJJ"7 D"I"ID *.D '""rc> ||_|dSr9)r_start_handshake)r4 transports rconnection_madezSSLProtocol.connection_made{s( $ rc |j|j|xjdz c_|j d|j_|jtj kr`|j tj ks|j tj kr6tj|_ |j|jj||tjd|_d|_d|_|||jr |jd|_|jr"|jd|_dSdS)NrT)rclearrreadrrr3rr r rrrrrr1 call_soonrDconnection_lost _set_stater rr_shutdown_timeout_handlecancel_handshake_timeout_handlers rrzSSLProtocol.connection_lostsT !!###  1   **.D  ' ;*7 7 7#3#BBB#3#==="2"A $$T%7%GMMM (2333"! C    ( 1  ) 0 0 2 2 2,0D )  ) 2  * 1 1 3 3 3-1D * * * 2 2rc|}|dks ||jkr|j}t|j|kr-t||_t |j|_|jSNr)rrrryrzr)r4nwants rrzSSLProtocol.get_buffersc 199t},,=D t 4 ' '(D $.t/?$@$@D !$$rc|j|jd||jtjkr|dS|jtjkr|dS|jtj kr| dS|jtj kr| dSdSr9) rrrrr r _do_handshaker _do_readr _do_flushr _do_shutdown)r4nbytess rrzSSLProtocol.buffer_updateds T27F7;<<< ;*7 7 7    [,4 4 4 MMOOOOO [,5 5 5 NN      [,5 5 5        6 5rc d|_ |jrtjd||jt jkr|tdS|jt j kr>| t j |j rdS|dS|jt j krI|| t j|dS|jt jkr|dSdS#t$$r|jwxYw)NTz%r received EOF)rr1 get_debugrdebugrr r _on_handshake_completeConnectionResetErrorr rrrSr _do_writerr ExceptionrrLrEs r eof_receivedzSSLProtocol.eof_receivedsl " z##%% 6 .555{.;;;++,@AAAAA 0 888 0 9:::+%4NN$$$$$ 0 999    0 9:::!!##### 0 999!!#####:9    O ! ! # # #  s%AE);E&Er;s rr:zSSLProtocol._get_extra_infosA 4;  ;t$ $ _ (?11$@@ @Nrcd}|tjkrd}n|jtjkr|tjkrd}nw|jtjkr|tjkrd}nO|jtjkr|tjkrd}n'|jtjkr|tjkrd}|r ||_dStd|j|)NFTz!cannot switch state from {} to {}) r r rr r rrrformat)r4 new_statealloweds rrzSSLProtocol._set_states (2 2 2GG K+5 5 5 )6 6 6GG K+8 8 8 )1 1 1GG K+3 3 3 )2 2 2GG K+4 4 4 )2 2 2G  -#DKKK3::K,,-- -rcfjr4tjdj_nd_tjj j fd_ dS)Nz%r starts SSL handshakec,Sr9)_check_handshake_timeoutrEsrz.SSLProtocol._start_handshake..s$*G*G*I*Ir) r1rrrtime_handshake_start_timerr r call_laterrrrrEs`rrzSSLProtocol._start_handshakes :   ! ! . L2D 9 9 9)-):):D & &)-D & (5666 J ! !$"="I"I"I"I K K & rc|jtjkr/d|jd}|t |dSdS)Nz$SSL handshake is taking longer than z! seconds: aborting the connection)rr r r _fatal_errorConnectionAbortedError)r4msgs rrz$SSLProtocol._check_handshake_timeout"s_ ;*7 7 7+.+++    4S99 : : : : : 8 7rc |j|ddS#t$r|YdSt j$r }||Yd}~dSd}~wwxYwr9)r do_handshakerSSLAgainErrors_process_outgoingrSSLErrorrs rrzSSLProtocol._do_handshake+s . L % % ' ' '  ' ' - - - - -  % % %  " " $ $ $ $ $ $| - - -  ' ' , , , , , , , , , -s2BB!A<<Bc|j |jd|_|j} | |tjn||}n#t$rt}|tjt|tj rd}nd}| ||| |Yd}~dSd}~wwxYw|jr:|j|jz }t%jd||dz|j|||||jt2jkr=t2j|_|j|| |dS)Nz1SSL handshake failed on verifying the certificatezSSL handshake failedz%r: SSL handshake took %.1f msg@@)peercertcipher compression ssl_object) rrrrr r getpeercertrr rwrCertificateErrorrrr1rrrrrrupdater r rrrrrDrrr)r4 handshake_excsslobjrrrdts rrz"SSLProtocol._on_handshake_complete5s  ) 5  * 1 1 3 3 3-1D * $ 0 89999##))++HH    OO,6 7 7 7#s344 -I,   c3 ' ' '    $ $ $ FFFFF  :   ! ! K""T%??B L94c J J J H"(--//'-'9'9';';&,  . . . ?.9 9 9.=DO   . .t/F/F/H/H I I I  s8A)) C'3A)C""C'cjtjtjtjfvrdSj dj_jtjkrdS tjj j fd_ dS)NTc,Sr9)_check_shutdown_timeoutrEsrrz-SSLProtocol._start_shutdown..ns4466r)rr rrr rr3r rrr1rrrrrEs`rrKzSSLProtocol._start_shutdown]s K ) ) *   F   **.D  ' ;*7 7 7 KKMMMMM OO,5 6 6 6,0J,A,A*6666--D ) NN     rc|jtjtjfvr.|jt jddSdS)NzSSL shutdown timed out)rr rrrrr TimeoutErrorrEs rrz#SSLProtocol._check_shutdown_timeoutrsf K ) )   O ( ('(@AA C C C C C   rc||tj|dSr9)rrr rrrEs rrzSSLProtocol._do_flush|s=  (1222 rcf |js|j|||ddS#t $r|YdStj$r }||Yd}~dSd}~wwxYwr9) rrunwrapr_call_eof_received_on_shutdown_completerrrrs rrzSSLProtocol._do_shutdowns -% & ##%%%  " " $ $ $  # # % % %  & &t , , , , , % % %  " " $ $ $ $ $ $| , , ,  & &s + + + + + + + + + ,s A!!B0B0B++B0c|j |jd|_|r||dS|j|jjdSr9)rrrr1rrrL)r4 shutdown_excs rrz!SSLProtocol._on_shutdown_completesk  ( 4  ) 0 0 2 2 2,0D )  8   l + + + + + J !6 7 7 7 7 7rc|tj|j|jdSdSr9)rr r rrrEs rrzSSLProtocol._abortsB (2333 ? & O ! ! # # # # # ' &rc|jtjtjtjfvr;|jt jkrtj d|xjdz c_dS|D]9}|j ||xj t|z c_ : |jtjkr|dSdS#t $r!}||dYd}~dSd}~wwxYw)NzSSL connection is closedrFatal error on SSL protocol)rr rrr rr!LOG_THRESHOLD_FOR_CONNLOST_WRITESrwarningrrrrr rrr)r4rrexs rr}zSSLProtocol._write_appdatas& K ) ) *   )"MMM9::: OOq OO F  1 1D   & &t , , ,  # #s4yy 0 # # # A{.666     76 A A A   b"? @ @ @ @ @ @ @ @ @ As#)C C;C66C;c\ |jr~|jd}|j|}t|}||kr#||d|jd<|xj|zc_n|jd=|xj|zc_|j~n#t $rYnwxYw|dSr)rrrrrrr)r4rcountdata_lens rrzSSLProtocol._do_writes % 8*1- **400t998##-1%&&\D'*++u4++++A.++x7++% 8    D       sBB BBc|jsB|j}t|r|j||dSr9)rrrrrrr]r~s rrzSSLProtocol._process_outgoings\' ,>&&((D4yy ,%%d+++ !!#####rc|jtjtjfvrdS |js`|jr|n||jr| n| | dS#t$r!}| |dYd}~dSd}~wwxYw)Nr )rr r rrSr_do_read__buffered_do_read__copiedrrrrjrr)r4r#s rrzSSLProtocol._do_reads K ( )    F A+ -/,++----))+++&-NN$$$$**,,,  % % ' ' ' ' ' A A A   b"? @ @ @ @ @ @ @ @ @ AsA;B C *CC c,d}d}}t|} j||}|dkr^|}||kr9j||z ||d}|dkr||z }nn#||k9jfdn#t$rYnwxYw|dkr||s*  dSdS)Nrrc,Sr9)rrEsrrz0SSLProtocol._do_read__buffered..sr) rrqrrrr1rrrrrK)r4offsetr%bufwantss` rr)zSSLProtocol._do_read__bufferedsK++D,F,F,H,HIIC L%%eS11Eqyyunn L--efnc&''lKKEqyy% unnJ(()@)@)@)@AAA    D  A::  - -f 5 5 5 #  # # % % %  " " " " " # #sA?B== C  C cd}d}d} |j|j}|sn(|rd}d}|}n|rd}||g}n||Jn#t$rYnwxYw|r|j|n/|s-|jd||s*|| dSdS)N1TFr) rrrrrrD data_receivedjoinrrK)r4chunkzeroonefirstrs rr*zSSLProtocol._do_read__copieds3  ' ))$-88' DC!EE'C!5>DDKK&&& '    D   =   , ,U 3 3 3 3 =   , ,SXXd^^ < < < #  # # % % %  " " " " " # #sA A A! A!c8 |jtjkrBtj|_|j}|rt jddSdSdS#ttf$rt$r!}| |dYd}~dSd}~wwxYw)Nz?returning true from eof_received() has no effect when using sslzError calling eof_received()) rrrrrDrrr"KeyboardInterrupt SystemExit BaseExceptionr)r4 keep_openr#s rrzSSLProtocol._call_eof_received!s B"2"AAA"2"< .;;== CN$BCCCCC BACC":.     B B B   b"@ A A A A A A A A A BsAAB8BBc:|}||jkrw|jspd|_ |jdS#t t f$rt$r/}|j d||j |dYd}~dSd}~wwxYw||j krw|jrrd|_ |j dS#t t f$rt$r/}|j d||j |dYd}~dSd}~wwxYwdSdS)NTzprotocol.pause_writing() failedmessage exceptionrrAFz protocol.resume_writing() failed) rfrbrtrD pause_writingr9r:r;r1call_exception_handlerrraresume_writing)r4sizers rr]z SSLProtocol._control_app_writing0s**,, 4, , ,T5M ,'+D $ "0022222%z2        11@!$!%!4 $ 33 T- - -$2J -',D $ "1133333%z2        11A!$!%!4 $ 33  . - - -s/A B%$BB1C D'$DDc*|jj|jzSr9)rpendingrrEs rrfz"SSLProtocol._get_write_buffer_sizeMs~%(???rc^t||tj\}}||_||_dSr9)r,r!FLOW_CONTROL_HIGH_WATER_SSL_WRITErbrar^s rr\z$SSLProtocol._set_write_buffer_limitsPs7, #yBDD c$(!#&   rcd|_dSrJ)rSrEs rrVzSSLProtocol._pause_readingXs#'   rcfjr(d_fd}j|dSdS)NFc jtjkrdSjtjkrdSjtjkrdSdSr9)rr r rrrrrrEsrresumez+SSLProtocol._resume_reading..resume_s};"2":::MMOOOOO[$4$===NN$$$$$[$4$===%%'''''>=r)rSr1r)r4rLs` rrYzSSLProtocol._resume_reading[sW  # )',D $ ( ( ( ( ( J  ( ( ( ( ( ) )rc|}||jkr)|js"d|_|jdS||jkr)|jr$d|_|jdSdSdS)NTF)rqrnrrrWrmrZ)r4rDs rrjz SSLProtocol._control_ssl_readingjs))++ 4, , ,T5M ,'+D $ O ) ) + + + + + T- - -$2J -',D $ O * * , , , , ,. - - -rc^t||tj\}}||_||_dSr9)r,r FLOW_CONTROL_HIGH_WATER_SSL_READrnrmr^s rriz#SSLProtocol._set_read_buffer_limitsss7, #yACC c$(!#&   rc|jjSr9)rrFrEs rrqz!SSLProtocol._get_read_buffer_sizeys ~%%rc d|_dSrJ)rrEs rrAzSSLProtocol.pause_writing~s $(   rc> d|_|dSr0)rrrEs rrCzSSLProtocol.resume_writings) $)       rFatal error on transportc\|jr|j|t|tr5|jrt jd||ddSdSt|tj s&|j |||j|ddSdS)Nz%r: %sT)exc_infor>) rrrwOSErrorr1rrrrCancelledErrorrB)r4rr?s rrzSSLProtocol._fatal_errors ? . O ( ( - - - c7 # # z##%% E XtWtDDDDDD E EC!:;;  J - -" !_ //       r)FNTNNr9r)rS).rrrrrrrr7r@rrrrrrrr:rrrrrrKrrrrrr}rrrr)r*rr]rfr\rVrYrjrirqrArCrrrrrrsH  $#59&*'+&* Q"Q"Q"Q"f 1 1 1###   "2"2"2H%%%    !!!F$-$-$-P ;;;...$$$P*CCC - - -888$$$AAA0!!! $$$AAA,###:###< B B B:@@@''''((( ) ) )---'''' &&& (((!!!      rr)renumrr ImportErrorrrrrlogrSSLWantReadErrorSSLSyscallErrorrEnumr rr$r,_FlowControlMixin Transportr.rrrrrras JJJJ CCC?*C,?@Nty & & & & &ty & & &   *s;s;s;s;s;J8&0s;s;s;lV V V V V ),V V V V V s