a  zerh@sXddlZddlZddlmZddlZddlZddlmZz ddlZWneyZdZYn0ddl Z ddl m Z ddl m Z ddl m Z ddlmZddl mZddl mZd d Zeedud Gd d d ejZGdddejZeedud GdddeejZeedud eee ddGdddeejZedkrTedS)N)support)mock)log) protocols)sslproto)utils) functionalcCstddSN)asyncioZset_event_loop_policyr r S/opt/bitninja-python-dojo/embedded/lib/python3.9/test/test_asyncio/test_sslproto.pytearDownModulesr z No ssl modulecseZdZfddZdddddZdddd Zd d Zd d ZddZddZ ddZ ddZ ddZ ddZ ddZddZZS)SslProtoHandshakeTestscs$tt|_||jdSr )supersetUpr Znew_event_looploopZset_event_loopself __class__r r rs  zSslProtoHandshakeTests.setUpN)waiterprotocCsRt}|durt}tj|j|||dd}||j || |jj |S)Ng?ssl_handshake_timeout) test_utilsdummy_ssl_contextr Protocolr SSLProtocolrassertIs_app_transport get_protocolZ addCleanupclose)rrr sslcontext ssl_protor r r ssl_protocol#sz#SslProtoHandshakeTests.ssl_protocol) do_handshakecCsrt}t}d|j_|r&||j_ndd}||j_tjd|d||Wdn1sd0Y|S)NcSsgSr r )callbackr r r mock_handshake4sz>SslProtoHandshakeTests.connection_made..mock_handshakezasyncio.sslproto._SSLPipe) return_value)rMockshutdownr)r%Z side_effectZpatchconnection_made)rr#r% transportZsslpiper(r r r r,-s (z&SslProtoHandshakeTests.connection_madecCs^t}t}t}|td&tj|j|||ddWdn1sP0YdS)Na positive numberrr rrrr*assertRaisesRegex ValueErrorrrrrr"Z app_protorr r r test_handshake_timeout_zero;sz2SslProtoHandshakeTests.test_handshake_timeout_zerocCs^t}t}t}|td&tj|j|||ddWdn1sP0YdS)Nr.irr/r2r r r test_handshake_timeout_negativeCsz6SslProtoHandshakeTests.test_handshake_timeout_negativecCsH|j}|j|d}|||t|j||t dSNr) r create_futurer$r, eof_receivedr run_brieflyassertIsInstance exceptionConnectionResetErrorrrr#r r r test_eof_received_waiterKs     z/SslProtoHandshakeTests.test_eof_received_waiterc Cs\|j}|j|d}tj}tjtjz| dWtj|ntj|0dSr5) rr7r$rloggergetEffectiveLevelsetLevelloggingFATALZ _fatal_error)rrr#Z log_levelr r r test_fatal_error_no_name_errorSs    z5SslProtoHandshakeTests.test_fatal_error_no_name_errorcCsJ|j}|j|d}|||tt|j|| tdSr5) rr7r$r,connection_lostConnectionAbortedErrorrr9r:r;r=r r r test_connection_lostbs      z+SslProtoHandshakeTests.test_connection_lostcCsH|j}|j|d}||}t|j|j||j j dSr5) rr7r$r,rr9rr! assertTrueabortZcalled)rrr#r-r r r test_close_during_handshakels      z2SslProtoHandshakeTests.test_close_during_handshakecCsx|j}|j|d}||dt}||d||||||d| d||ddS)Nr6socket) rr7r$ assertIsNoneZ_get_extra_infoobjectrr,ZassertIsNotNonerE)rrr#defaultr r r (test_get_extra_info_on_closed_connectionws    z?SslProtoHandshakeTests.test_get_extra_info_on_closed_connectioncCsN|j}|j|d}t}|j|||j|||j |dSr5) rr7r$r rr set_protocolrr Z _app_protocol)rrr#Z new_app_protor r r test_set_new_app_protocols    z0SslProtoHandshakeTests.test_set_new_app_protocolcCs4|}|||j}|||ddSNsdata)r$r,rr!rL data_receivedrr#Ztranspr r r test_data_received_after_closings  z7SslProtoHandshakeTests.test_data_received_after_closingcCs4|}|||j}|||ddSrR)r$r,rr!rLwriterTr r r test_write_after_closings  z/SslProtoHandshakeTests.test_write_after_closing)__name__ __module__ __qualname__rr$r,r3r4r>rDrGrJrOrQrUrW __classcell__r r rr rs      rc@sveZdZdZejZddZddZddZ dd Z d d Z d d Z ddZ ddZddZddZddZddZdS) BaseStartTLSicCstdSr )NotImplementedErrorrr r r new_loopszBaseStartTLS.new_loopc CsGdddtj}dD]}|d|}t|d||jd|d|}t|d||jd|d|}t|d||jd|d|}t|d||jd|d |}t|d||jd|d |}|td t|dWdq1s0YqdS) Nc@s$eZdZddZddZddZdS)z.BaseStartTLS.test_buf_feed_data..ProtocSs&t||_t|j|_d|_||_dSNr&) bytearraybuf memoryviewmvdatausemv)rbufsizerer r r __init__s  z7BaseStartTLS.test_buf_feed_data..Proto.__init__cSs|jr |jS|jSdSr )rercrarsizehintr r r get_buffersz9BaseStartTLS.test_buf_feed_data..Proto.get_buffercSs<|jr |j|jd|7_n|j|jd|7_dSr )rerdrcrarZnsizer r r buffer_updatedsz=BaseStartTLS.test_buf_feed_data..Proto.buffer_updatedN)rXrYrZrgrjrlr r r r Protosrm)FTs12345s1234drz empty buffer)r BufferedProtocolrZ_feed_data_to_buffered_proto assertEqualrdr0 RuntimeError)rrmrerr r r test_buf_feed_datas(           zBaseStartTLS.test_buf_feed_datacsdjttfdd}Gfdddtjfdd}j|jd.}j tj ||j t j dWdn1s0Ytt dS) N1cs|j|t}t|t|jdd|d|t}t|t|tj | dSNT server_sideO settimeoutTIMEOUTrecv_alllenrs start_tlssendallr+rK SHUT_RDWRr!sockrd HELLO_MSGrserver_contextr r serves   z=BaseStartTLS.test_start_tls_client_reg_proto_1..servecs0eZdZddZfddZddZddZd S) zCBaseStartTLS.test_start_tls_client_reg_proto_1..ClientProtocSs||_||_d|_dSNron_dataon_eof con_made_cntrrrr r r rgszLBaseStartTLS.test_start_tls_client_reg_proto_1..ClientProto.__init__cs |jd7_|jddSNrnrrsrtrrr r r,szSBaseStartTLS.test_start_tls_client_reg_proto_1..ClientProto.connection_madecSs|j|dSr r set_resultrrdr r r rSszQBaseStartTLS.test_start_tls_client_reg_proto_1..ClientProto.data_receivedcSs|jddSNTrrrr r r r8szPBaseStartTLS.test_start_tls_client_reg_proto_1..ClientProto.eof_receivedNrXrYrZrgr,rSr8r rr r ClientProtos rcstdIdHjjjjfddg|RIdH\}}|j||IdH}IdHd|IdH|dS)N?cs Sr r r rrrr r r&zPBaseStartTLS.test_start_tls_client_reg_proto_1..client..rz) r sleeprr7create_connectionrVrrsr!)addrrrnew_trrrclient_contextrrrr clients     z>BaseStartTLS.test_start_tls_client_reg_proto_1..clienttimeout PAYLOAD_SIZErsimple_server_sslcontextsimple_client_sslcontextr r tcp_serverr}rrun_until_completewait_forrr SHORT_TIMEOUTweakrefref gc_collectrLrrrsrvr rrrrrr !test_start_tls_client_reg_proto_1s  " z.BaseStartTLS.test_start_tls_client_reg_proto_1csdjttfdd}Gfdddtjfdd}j|jd.}j tj ||j t j dWdn1s0Ytt dS) Nrvcs^|j|jdd|d|t}t|t|tj | dSrw) r|r}rrr~rrsr+rKrr!rrr r r"s   z>BaseStartTLS.test_create_connection_memory_leak..servecs0eZdZddZfddZddZddZd S) zDBaseStartTLS.test_create_connection_memory_leak..ClientProtocSs||_||_d|_dSrrrr r r rg/szMBaseStartTLS.test_create_connection_memory_leak..ClientProto.__init__cs&||_|jd7_|jddSr)rrrsrrr r r,4szTBaseStartTLS.test_create_connection_memory_leak..ClientProto.connection_madecSs|j|dSr rrr r r rS;szRBaseStartTLS.test_create_connection_memory_leak..ClientProto.data_receivedcSs|jddSrrrr r r r8>szQBaseStartTLS.test_create_connection_memory_leak..ClientProto.eof_receivedNrr rr r r.s rcstdIdHjjjjfddg|RdiIdH\}}IdHd|IdH|dS)Nrcs Sr r r rr r rHr&zQBaseStartTLS.test_create_connection_memory_leak..client..sslrz)r rrr7rrsrVr!rrrrrr rAs    z?BaseStartTLS.test_create_connection_memory_leak..clientrrrr rr "test_create_connection_memory_leaks   " z/BaseStartTLS.test_create_connection_memory_leakcsdjttdfdd}GfdddtjGfdddtjfd d }j|jd .}j tj ||j jd Wdn1s0YdS) Nrvrcs|j|t}t|t|jdd|d|t}t|t|d|t}t|t|tj | dS)NTrxrz2r{rrr r rcs    z=BaseStartTLS.test_start_tls_client_buf_proto_1..servecs0eZdZddZfddZddZddZd S) zHBaseStartTLS.test_start_tls_client_buf_proto_1..ClientProtoFirstcSs||_td|_dSr)rr`ra)rrr r r rgwszQBaseStartTLS.test_start_tls_client_buf_proto_1..ClientProtoFirst.__init__cs d7dSrr rrclient_con_made_callsr r r,{szXBaseStartTLS.test_start_tls_client_buf_proto_1..ClientProtoFirst.connection_madecSs|jSr )rarhr r r rjszSBaseStartTLS.test_start_tls_client_buf_proto_1..ClientProtoFirst.get_buffercSs|jt|jd|dSr )rrbytesrarkr r r rlszWBaseStartTLS.test_start_tls_client_buf_proto_1..ClientProtoFirst.buffer_updatedN)rXrYrZrgr,rjrlr rr r ClientProtoFirstvs rcs0eZdZddZfddZddZddZd S) zIBaseStartTLS.test_start_tls_client_buf_proto_1..ClientProtoSecondcSs||_||_d|_dSrrrr r r rgszRBaseStartTLS.test_start_tls_client_buf_proto_1..ClientProtoSecond.__init__cs d7dSrr rrr r r,szYBaseStartTLS.test_start_tls_client_buf_proto_1..ClientProtoSecond.connection_madecSs|j|dSr rrr r r rSszWBaseStartTLS.test_start_tls_client_buf_proto_1..ClientProtoSecond.data_receivedcSs|jddSrrrr r r r8szVBaseStartTLS.test_start_tls_client_buf_proto_1..ClientProtoSecond.eof_receivedNrr rr r ClientProtoSeconds rcstdIdHjj}j}jjfddg|RIdH\}}|j||IdH}IdHd|||||IdHd||IdH| ddS)NrcsSr r r )ron_data1r r rr&zPBaseStartTLS.test_start_tls_client_buf_proto_1..client..rzrrn) r rrr7rrVrrsrPr!)rZon_data2rrrr)rrrrrr)rr rs&        z>BaseStartTLS.test_start_tls_client_buf_proto_1..clientr) rrrrr rrrrr}rrrrrr )rrrrrrrr !test_start_tls_client_buf_proto_1\s  z.BaseStartTLS.test_start_tls_client_buf_proto_1csdjtjfdd}Gfdddtjfdd}j|jd.}j tj ||j t j dWdn1s0YdS) Nrvcs||j|t}t|tz>zjjd|d}Wnty`Yn0W| n | 0dSN) r|r}r~rrsrZcall_soon_threadsaferrFr!r)rrserver_waits_on_handshaker r rs  z=BaseStartTLS.test_start_tls_slow_client_cancel..servecs0eZdZddZfddZddZddZd S) zCBaseStartTLS.test_start_tls_slow_client_cancel..ClientProtocSs||_||_d|_dSrrrr r r rgszLBaseStartTLS.test_start_tls_slow_client_cancel..ClientProto.__init__cs |jd7_|jddSrrrrr r r,szSBaseStartTLS.test_start_tls_slow_client_cancel..ClientProto.connection_madecSs|j|dSr rrr r r rSszQBaseStartTLS.test_start_tls_slow_client_cancel..ClientProto.data_receivedcSs|jddSrrrr r r r8szPBaseStartTLS.test_start_tls_slow_client_cancel..ClientProto.eof_receivedNrr rr r rs rcstdIdHjjjjfddg|RIdH\}}|IdHtj.tj ||dIdHWdn1s0YdS)Nrcs Sr r r rr r rr&zPBaseStartTLS.test_start_tls_slow_client_cancel..client..) r rrr7rrV assertRaises TimeoutErrorrrrrrrrrrr rs    z>BaseStartTLS.test_start_tls_slow_client_cancel..clientr)rrrrr7r rrr}rrrrrrr rr !test_start_tls_slow_client_cancels   z.BaseStartTLS.test_start_tls_slow_client_cancelcsdjdttdfddGfdddtjfddfd d }j|dS) Nrvsanswercsf|j|||t}t|t|||t|dSr ) r|r}connectr~rrsrrr!)rrrd)ANSWERranswerrrr r rs    z4BaseStartTLS.test_start_tls_server_1..clientcs8eZdZddZddZddZfddZd d Zd S) z9BaseStartTLS.test_start_tls_server_1..ServerProtocSs"||_||_||_d|_d|_dSr_)on_con on_con_lost on_got_hellordr-)rrrrr r r rg s zBBaseStartTLS.test_start_tls_server_1..ServerProto.__init__cSs||_|j|dSr )r-rrrr r r r,szIBaseStartTLS.test_start_tls_server_1..ServerProto.connection_madecSs ||_dSr )r-rr r r replace_transportszKBaseStartTLS.test_start_tls_server_1..ServerProto.replace_transportcs0|j|7_t|jtkr,|jddSr )rdrrrrrr r rSszGBaseStartTLS.test_start_tls_server_1..ServerProto.data_receivedcSs,d|_|dur|jdn |j|dSr )r-rr set_exception)rexcr r r rEszIBaseStartTLS.test_start_tls_server_1..ServerProto.connection_lostN)rXrYrZrgr,rrSrEr rr r ServerProto s  rcs|IdH}||jdjj||djdIdH}|||IdH||IdH|j|dS)Nr&T)ryr)rVrsrdrrr}rr!)rrrrrr)rrrrr r main$s       z2BaseStartTLS.test_start_tls_server_1..maincsj}j}j}|||jfddddIdH}|jdjfddjd0tj|||jdIdHWdn1s0Y| | IdH dS)NcsSr r r )rr r r>r&zHBaseStartTLS.test_start_tls_server_1..run_main..z 127.0.0.1rcs |Sr r r)rrr r rAr&r) rr7 create_serverZsockets getsocknameZ tcp_clientr}r rr!Z wait_closedrs)rrrserver)rrrrrr)rrr run_main7s$      *z6BaseStartTLS.test_start_tls_server_1..run_main)rrrrr rrr)rrr ) rrrrrrrrrr test_start_tls_server_1s  z$BaseStartTLS.test_start_tls_server_1csfdd}j|dS)Ncstd&jdddIdHWdn1s80Yt}td&jdd|IdHWdn1s0YdS)NzSSLContext, gotzis not supported)r0 TypeErrorrrrrsslctxrr r rNs 4z4BaseStartTLS.test_start_tls_wrong_args..main)rr)rrr rr test_start_tls_wrong_argsMs z&BaseStartTLS.test_start_tls_wrong_argsc stgjfdddfdd}fdd}j|ddd N}tj"j||j Wdn1s0YWdn1s0Y  gt tdS) Ncs |Sr appendrctxmessagesr r r^r&z5BaseStartTLS.test_handshake_timeout..FcsBz2z|dWnty&dYn0W|n |0dS)NrTr~rFr!r)server_side_abortedr r rbs   z3BaseStartTLS.test_handshake_timeout..servercs4tjjtjg|RdtjddIdHdS)N)rserver_hostnamerr)r rrrrrr)r client_sslctxrr r rksz3BaseStartTLS.test_handshake_timeout..clientrnZ max_clientsbacklog)rrrset_exception_handlerrrr rrrrHrsrrrrrLrrrrr )rrrrr test_handshake_timeoutXs$  N   z#BaseStartTLS.test_handshake_timeoutc stgjfdddd}fdd}j|dddN}td "j||jWdn1s|0YWdn1s0Y gdS) Ncs |Sr rrrr r rr&zHBaseStartTLS.test_create_connection_ssl_slow_handshake..cSs>z.z|dWnty"Yn0W|n |0dSrrrr r r rs  zFBaseStartTLS.test_create_connection_ssl_slow_handshake..servercsPt2tj|djddIdH\}}Wdn1sB0YdS)Nrg?rrrr) assertWarnsDeprecationWarningr open_connectionrrreaderwriterrr r rs zFBaseStartTLS.test_create_connection_ssl_slow_handshake..clientrnrzSSL handshake.*is taking longer) rrrrrr0rFrrrsrr )rrrr )test_create_connection_ssl_slow_handshakes  Nz6BaseStartTLS.test_create_connection_ssl_slow_handshakec sjddttjddfdd}fdd}j|d d d N}tj"j ||j Wdn1s0YWdn1s0YdS) NcSsdSr r rr r r rr&zLBaseStartTLS.test_create_connection_ssl_failed_certificate..F)Zdisable_verifycsTzDz|jddWn$tjy(Ynty8Yn0W|n |0dS)NTrx)rrSSLErrorOSErrorr!rrr r rs  zJBaseStartTLS.test_create_connection_ssl_failed_certificate..servercsRt4tj|djtjdIdH\}}Wdn1sD0YdS)Nrr)rrr rrrZLOOPBACK_TIMEOUTrrr r rs zJBaseStartTLS.test_create_connection_ssl_failed_certificate..clientrnr) rrrrrrrrZSSLCertVerificationErrorrrrr rrrr -test_create_connection_ssl_failed_certificates  z:BaseStartTLS.test_create_connection_ssl_failed_certificatecsjddttfdd}fdd}j|ddd"}j||j}Wdn1sr0Y|d dS) NcSsdSr r rr r r rr&zBBaseStartTLS.test_start_tls_client_corrupted_ssl..csz|}zZz0|jdd|d|d|dWntjyNYn0W||n||0dS)NTrxA rns!please corrupt the SSL connection)duprrr~sendrrr!)rZ orig_sockrr r rs   z@BaseStartTLS.test_start_tls_client_corrupted_ssl..servercst0tj|djdIdH\}}Wdn1s@0Y|IdHd|dt j |IdHWdn1s0Y| dS)Nr)rrrrBOK) rrr rrrsreadlinerVrrrr!rrr r rs 0 ,z@BaseStartTLS.test_start_tls_client_corrupted_ssl..clientrnrr) rrrrrrrrrs)rrrrresr rr #test_start_tls_client_corrupted_ssls 0z0BaseStartTLS.test_start_tls_client_corrupted_sslN)rXrYrZrrZ LONG_TIMEOUTr}r^rurrrrrrrrrrr r r r r\s/B@[=Y 0##r\c@seZdZddZdS)SelectorStartTLSTestscCstSr )r ZSelectorEventLooprr r r r^szSelectorStartTLSTests.new_loopNrXrYrZr^r r r r rsrProactorEventLoopz Windows onlyc@seZdZddZdS)ProactorStartTLSTestscCstSr )r rrr r r r^szProactorStartTLSTests.new_loopNrr r r r rsr__main__)rBrKtestrZunittestrrr ImportErrorr rrrZtest.test_asynciorrrZ func_testsr ZskipIfZTestCaserZFunctionalTestCaseMixinr\rZ skipUnlesshasattrrrXrr r r r s@           ]