f{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,=s | ;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__Xs ) rNc: |j||SN)r2_get_extra_infor4namedefaults rget_extra_infoz$_SSLProtocolTransport.get_extra_info]s1!11$@@@rc:|j|dSr9)r2_set_app_protocol)r4protocols r set_protocolz"_SSLProtocolTransport.set_protocolas ,,X66666rc|jjSr9)r2 _app_protocolr4s r get_protocolz"_SSLProtocolTransport.get_protocolds!//rc|jSr9)r3rEs r is_closingz _SSLProtocolTransport.is_closinggs |rch |js"d|_|jdSd|_dSNT)r3r2_start_shutdownrEs rclosez_SSLProtocolTransport.closejsC | &DL   . . 0 0 0 0 0!%D   rc\|js$d|_|dtdSdS)NTz9unclosed transport )r3warnResourceWarning)r4 _warningss r__del__z_SSLProtocolTransport.__del__xsE| ,DL NN* , , , , , , ,rc|jj Sr9)r2_app_reading_pausedrEs r is_readingz _SSLProtocolTransport.is_readings%999rc: |jdSr9)r2_pause_readingrEs r pause_readingz#_SSLProtocolTransport.pause_readings$ ))+++++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 Ourc2 |ddSr9) _force_closerEs rabortz_SSLProtocolTransport.aborts# $rcZd|_|j|j|dSdSrJ)r3r2_abortr4excs rrz"_SSLProtocolTransport._force_closes7   )   % %c * * * * * * )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.Rs!$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_protocolasc) 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_waiterlsd <  F|%%'' . **3//// ''--- rc|j7|jrtdt|j||_d|_|jS)Nz$Creating _SSLProtocolTransport twiceT)rrrr.r1rEs rrzSSLProtocol._get_app_transportvsK   &* 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$rv}d}|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 rwrCertificateErrorrrr1rrrrrrupdaterr rrrrrDrrr)r4 handshake_excsslobjrrrdts rrz"SSLProtocol._on_handshake_complete8s  ) 5  * 1 1 3 3 3-1D * $ 0 89999##))++HH    M 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_jtjkrddS tjj j fd_ dS)NTc,Sr9)_check_shutdown_timeoutrEsrrz-SSLProtocol._start_shutdown..rs4466r)rr rrr rr3r rrr1rrrrrEs`rrKzSSLProtocol._start_shutdownas K ) ) *   F   **.D  ' ;*7 7 7 KK      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_timeoutvsf K ) )   O ( ('(@AA C C C C C   rc||tj|dSr9)rrr rrrEs rrzSSLProtocol._do_flushs=  (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|j|dSdSr9)rr r rrrs rrzSSLProtocol._abortsD (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_writingr8r9r:r1call_exception_handlerrraresume_writing)r4sizers rr]z SSLProtocol._control_app_writing4s**,, 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_sizeQs~%(???rc^t||tj\}}||_||_dSr9)r,r!FLOW_CONTROL_HIGH_WATER_SSL_WRITErbrar^s rr\z$SSLProtocol._set_write_buffer_limitsTs7, #yBDD c$(!#&   rcd|_dSrJ)rSrEs rrVzSSLProtocol._pause_reading\s#'   rcfjr(d_fd}j|dSdS)NFc jtjkrdSjtjkrdSjtjkrdSdSr9)rr r rrrrrrEsrresumez+SSLProtocol._resume_reading..resumecs};"2":::MMOOOOO[$4$===NN$$$$$[$4$===%%'''''>=r)rSr1r)r4rKs` rrYzSSLProtocol._resume_reading_sW  # )',D $ ( ( ( ( ( J  ( ( ( ( ( ) )rc|}||jkr)|js"d|_|jdS||jkr)|jr$d|_|jdSdSdS)NTF)rqrnrrrWrmrZ)r4rCs rrjz SSLProtocol._control_ssl_readingns))++ 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_limitsws7, #yACC c$(!#&   rc|jjSr9)rrErEs rrqz!SSLProtocol._get_read_buffer_size}s ~%%rc d|_dSrJ)rrEs rr@zSSLProtocol.pause_writings $(   rc> d|_|dSr0)rrrEs rrBzSSLProtocol.resume_writings) $)       rFatal error on transportc\|jr|j|t|tr5|jrt jd||ddSdSt|tj s&|j |||j|ddSdS)Nz%r: %sT)exc_infor=) rrrwOSErrorr1rrrrCancelledErrorrA)r4rr>s rrzSSLProtocol._fatal_errors ? . O ( ( - - - c7 # # z##%% E XtWtDDDDDD E EC!:;;  J - -" !_ //       r)FNTNNr9r)rR).rrrrrrrr7r@rrrrrrrr:rrrrrrKrrrrrr}rrrr(r)rr]rfr\rVrYrjrirqr@rBrrrrrrsH  $#59&*'+&* Q"Q"Q"Q"f 1 1 1###   "2"2"2H%%%    !!!F$-$-$-P ;;;...%%%R*CCC - - -888...AAA0!!! $$$AAA,###:###< B B B:@@@''''((( ) ) )---'''' &&& (((!!!      rr)renumrr ImportErrorrrrrlogrSSLWantReadErrorSSLSyscallErrorrEnumr rr$r,_FlowControlMixin Transportr.rrrrrr`s  JJJJ CCC?*C,?@Nty & & & & &ty & & &   *r;r;r;r;r;J8&0r;r;r;jW W W W W ),W W W W W s