Edit File: sslproto.cpython-36.opt-2.pyc
3 � \�e��������������� ���@���s����d�dl�Z�d�dlZyd�dlZW�n�ek r4���dZY�nX�ddlmZ�ddlmZ�ddlmZ�ddlmZ�ddl m Z �dd ��Zd d��ZdZ d ZdZdZG�dd��de�ZG�dd��dejej�ZG�dd��dej�ZdS�)�����N����)�base_events)�compat)� protocols)� transports)�loggerc�������������C���sj���|�rt�d��ttd�r*tj��}|sfd|_n<tjtj�}|�jtjO��_|�jtj O��_|j ���tj|_|S�)Nz(Server side SSL needs a valid SSLContext�create_default_contextF) � ValueError�hasattr�sslr����check_hostnameZ SSLContextZPROTOCOL_SSLv23ZoptionsZOP_NO_SSLv2ZOP_NO_SSLv3Zset_default_verify_pathsZ CERT_REQUIRED�verify_mode)�server_side�server_hostname� sslcontext��r����(/usr/lib64/python3.6/asyncio/sslproto.py�_create_transport_context���s���� r���c���������������C���s ���t�td�S�)N� MemoryBIO)r ���r���r���r���r���r����_is_sslproto_available%���s����r���Z UNWRAPPEDZDO_HANDSHAKEZWRAPPEDZSHUTDOWNc���������������@���sz���e�Zd�ZdZddd�Zedd���Zedd ���Zed d���Zedd ���Z ddd�Z ddd�Zdd��Zddd�Z ddd�ZdS�) �_SSLPipe����i���Nc�������������C���sH���||�_�||�_||�_t|�_tj��|�_tj��|�_d�|�_ d|�_ d�|�_d�|�_d�S�)NF) �_context�_server_side�_server_hostname� _UNWRAPPED�_stater���r���� _incoming� _outgoing�_sslobj� _need_ssldata� _handshake_cb�_shutdown_cb)�self�contextr���r���r���r���r����__init__D���s���� z_SSLPipe.__init__c�������������C���s���|�j�S�)N)r���)r#���r���r���r���r$���Z���s����z_SSLPipe.contextc�������������C���s���|�j�S�)N)r���)r#���r���r���r���� ssl_object_���s����z_SSLPipe.ssl_objectc�������������C���s���|�j�S�)N)r ���)r#���r���r���r����need_ssldatag���s����z_SSLPipe.need_ssldatac�������������C���s ���|�j�tkS�)N)r����_WRAPPED)r#���r���r���r����wrappedm���s����z_SSLPipe.wrappedc�������������C���sR���|�j�tkrtd��|�jj|�j|�j|�j|�jd�|�_ t |�_�||�_|�jddd�\}}|S�)Nz"handshake in progress or completed)r���r��������T)�only_handshake) r���r����RuntimeErrorr���Zwrap_bior���r���r���r���r���� _DO_HANDSHAKEr!����feed_ssldata)r#����callback�ssldata�appdatar���r���r����do_handshakev���s���� z_SSLPipe.do_handshakec�������������C���sB���|�j�tkrtd��|�j�tkr$td��t|�_�||�_|�jd�\}}|S�)Nzno security layer presentzshutdown in progressr*���)r���r���r,���� _SHUTDOWNr"���r.���)r#���r/���r0���r1���r���r���r����shutdown����s���� z_SSLPipe.shutdownc�������������C���s���|�j�j���|�jd�\}}d�S�)Nr*���)r���Z write_eofr.���)r#���r0���r1���r���r���r����feed_eof����s���� z_SSLPipe.feed_eofFc�������������C���s���|�j�tkr"|r|g}ng�}g�|fS�d|�_|r8|�jj|��g�}g�}y�|�j�tkrx|�jj���t|�_�|�j rl|�j d���|rx||fS�|�j�tkr�xn|�jj |�j�}|j|��|s�P�q�W�nJ|�j�t kr�|�jj���d�|�_t|�_�|�jr�|�j���n|�j�tkr�|j|�jj ����W�nx�tjtjfk �rl�}�zRt|dd��tjtjtjfk�rN|�j�tk�rL|�j �rL|�j |����|jtjk|�_W�Y�d�d�}~X�nX�|�jj�r�|j|�jj ����||fS�)NF�errno)r���r���r ���r����writer-���r���r2���r(���r!����read�max_size�appendr3���Zunwrapr"���r����SSLError�CertificateError�getattr�SSL_ERROR_WANT_READ�SSL_ERROR_WANT_WRITE�SSL_ERROR_SYSCALLr6���r����pending)r#����datar+���r1���r0����chunk�excr���r���r���r.�������sV���� z_SSLPipe.feed_ssldatar���c�������������C���s��|�j�tkr6|t|�k�r&||d���g}ng�}|t|�fS�g�}t|�}x�d|�_y(|t|�k�rp||�jj||d����7�}W�n\�tjk r��}�z>|j dkr�tj |_|jtj tjtj fkr���|jtj k|�_W�Y�d�d�}~X�nX�|�jjr�|j|�jj����|t|�ks�|�jrDP�qDW�||fS�)NFZPROTOCOL_IS_SHUTDOWN)r���r����len� memoryviewr ���r���r7���r���r;����reasonr>���r6���r?���r@���r���rA���r:���r8���)r#���rB����offsetr0���ZviewrD���r���r���r����feed_appdata����s2���� z_SSLPipe.feed_appdatai���)N)N)N)F)r���)�__name__� __module__�__qualname__r9���r%����propertyr$���r&���r'���r)���r2���r4���r5���r.���rI���r���r���r���r���r���0���s��� Jr���c���������������@���s����e�Zd�Zdd��Zddd�Zdd��Zdd ��Zd d��Zdd ��Ze j rHdd��Zdd��Zdd��Z ddd�Zdd��Zdd��Zdd��Zdd��ZdS�) �_SSLProtocolTransportc�������������C���s���||�_�||�_d|�_d�S�)NF)�_loop� _ssl_protocol�_closed)r#����loopZssl_protocolr���r���r���r%���)��s����z_SSLProtocolTransport.__init__Nc�������������C���s���|�j�j||�S�)N)rP����_get_extra_info)r#����name�defaultr���r���r����get_extra_info/��s����z$_SSLProtocolTransport.get_extra_infoc�������������C���s���||�j�_d�S�)N)rP���� _app_protocol)r#����protocolr���r���r����set_protocol3��s����z"_SSLProtocolTransport.set_protocolc�������������C���s���|�j�jS�)N)rP���rW���)r#���r���r���r����get_protocol6��s����z"_SSLProtocolTransport.get_protocolc�������������C���s���|�j�S�)N)rQ���)r#���r���r���r���� is_closing9��s����z _SSLProtocolTransport.is_closingc�������������C���s���d|�_�|�jj���d�S�)NT)rQ���rP����_start_shutdown)r#���r���r���r����close<��s����z_SSLProtocolTransport.closec�������������C���s&���|�j�s"tjd|��t|�d��|�j���d�S�)Nzunclosed transport %r)�source)rQ����warnings�warn�ResourceWarningr]���)r#���r���r���r����__del__K��s����z_SSLProtocolTransport.__del__c�������������C���s���|�j�jj���d�S�)N)rP���� _transport� pause_reading)r#���r���r���r���rd���Q��s����z#_SSLProtocolTransport.pause_readingc�������������C���s���|�j�jj���d�S�)N)rP���rc����resume_reading)r#���r���r���r���re���Y��s����z$_SSLProtocolTransport.resume_readingc�������������C���s���|�j�jj||��d�S�)N)rP���rc����set_write_buffer_limits)r#���ZhighZlowr���r���r���rf���a��s����z-_SSLProtocolTransport.set_write_buffer_limitsc�������������C���s���|�j�jj��S�)N)rP���rc����get_write_buffer_size)r#���r���r���r���rg���v��s����z+_SSLProtocolTransport.get_write_buffer_sizec�������������C���s<���t�|tttf�s$tdjt|�j���|s,d�S�|�jj |��d�S�)Nz/data: expecting a bytes-like instance, got {!r}) � isinstance�bytes� bytearrayrF���� TypeError�format�typerJ���rP����_write_appdata)r#���rB���r���r���r���r7���z��s����z_SSLProtocolTransport.writec�������������C���s���dS�)NFr���)r#���r���r���r���� can_write_eof���s����z#_SSLProtocolTransport.can_write_eofc�������������C���s���|�j�j���d�S�)N)rP����_abort)r#���r���r���r����abort���s����z_SSLProtocolTransport.abort)N)NN)rJ���rK���rL���r%���rV���rY���rZ���r[���r]���r���ZPY34rb���rd���re���rf���rg���r7���ro���rq���r���r���r���r���rN���&��s��� rN���c���������������@���s����e�Zd�Zd'dd�Zd(dd�Zdd ��Zd d��Zdd ��Zdd��Zdd��Z dd��Z d)dd�Zdd��Zdd��Z dd��Zdd��Zdd��Zd*d!d"�Zd#d$��Zd%d&��ZdS�)+�SSLProtocolFNTc�������������C���s����t�d�krtd��|st||�}||�_|r6|�r6||�_nd�|�_||�_t|d�|�_tj ��|�_ d|�_||�_||�_ ||�_t|�j |��|�_d�|�_d|�_d|�_d|�_d�|�_||�_d�S�)Nzstdlib ssl module not available)r���r���F)r���r,���r���r���r����_sslcontext�dict�_extra�collections�deque�_write_backlog�_write_buffer_size�_waiterrO���rW���rN����_app_transport�_sslpipe�_session_established� _in_handshake�_in_shutdownrc����_call_connection_made)r#���rR���Zapp_protocolr���Zwaiterr���r���Zcall_connection_mader���r���r���r%������s,���� zSSLProtocol.__init__c�������������C���sD���|�j�d�krd�S�|�j�j��s:|d�k r.|�j�j|��n|�j�jd���d�|�_�d�S�)N)rz���Z cancelledZ set_exceptionZ set_result)r#���rD���r���r���r����_wakeup_waiter���s���� zSSLProtocol._wakeup_waiterc�������������C���s&���||�_�t|�j|�j|�j�|�_|�j���d�S�)N)rc���r���rs���r���r���r|����_start_handshake)r#���� transportr���r���r����connection_made���s ���� zSSLProtocol.connection_madec�������������C���s8���|�j�rd|�_�|�jj|�jj|��d�|�_d�|�_|�j|��d�S�)NF)r}���rO���� call_soonrW����connection_lostrc���r{���r����)r#���rD���r���r���r���r�������s����zSSLProtocol.connection_lostc�������������C���s���|�j�j���d�S�)N)rW���� pause_writing)r#���r���r���r���r�������s����zSSLProtocol.pause_writingc�������������C���s���|�j�j���d�S�)N)rW����resume_writing)r#���r���r���r���r�������s����zSSLProtocol.resume_writingc�������������C���s����|�j�d�krd�S�y|�j�j|�\}}W�nH�tjk rj�}�z*|�jj��rTtjd|�|j|j ��|�j ���d�S�d�}~X�nX�x|D�]}|�jj|��qrW�x(|D�] }|r�|�j j|��q�|�j���P�q�W�d�S�)Nz%r: SSL error %s (reason %s))r|���r.���r���r;���rO���� get_debugr����warningr6���rG���rp���rc���r7���rW���� data_receivedr\���)r#���rB���r0���r1����erC���r���r���r���r�������s"���� zSSLProtocol.data_receivedc���������� ���C���sT���zB|�j�j��rtjd|���|�jt��|�js@|�jj��}|r@tj d��W�d�|�j j���X�d�S�)Nz%r received EOFz?returning true from eof_received() has no effect when using ssl)rO���r����r����debugr�����ConnectionResetErrorr~���rW����eof_receivedr����rc���r]���)r#���Z keep_openr���r���r���r������s���� zSSLProtocol.eof_receivedc�������������C���s4���||�j�kr|�j�|�S�|�jd�k r,|�jj||�S�|S�d�S�)N)ru���rc���rV���)r#���rT���rU���r���r���r���rS���!��s ���� zSSLProtocol._get_extra_infoc�������������C���s.���|�j�r d�S�|�jr|�j���nd|�_�|�jd��d�S�)NTr*���)r���r~���rp���rn���)r#���r���r���r���r\���)��s���� zSSLProtocol._start_shutdownc�������������C���s.���|�j�j|df��|��jt|�7��_|�j���d�S�)Nr���)rx���r:���ry���rE����_process_write_backlog)r#���rB���r���r���r���rn���2��s����zSSLProtocol._write_appdatac�������������C���sH���|�j�j��r$tjd|���|�j�j��|�_nd�|�_d|�_|�jjd��|�j ���d�S�)Nz%r starts SSL handshakeTr*���r���)r*���r���) rO���r����r���r�����time�_handshake_start_timer~���rx���r:���r����)r#���r���r���r���r����7��s���� zSSLProtocol._start_handshakec�������������C���sT��d|�_�|�jj}yF|d�k r|�|j��}t|�jd�sR|�jrR|�jjtj krRtj ||�j��W�n~�tk r��}�zb|�jj ��r�t|tj�r�tjd|�dd��ntjd|�dd��|�jj���t|t�r�|�j|��d�S���W�Y�d�d�}~X�nX�|�jj ���r|�jj��|�j�}tjd|�|d���|�jj||j��|j��|d ��|�j�r4|�jj|�j ��|�j���d|�_!|�jj"|�j#��d�S�) NFr���z5%r: SSL handshake failed on verifying the certificateT)�exc_infoz%r: SSL handshake failedz%r: SSL handshake took %.1f msg�����@�@)�peercert�cipher�compressionr&���)$r~���r|���r&���Zgetpeercertr ���rs���r���r ���r���Z CERT_NONEZmatch_hostname� BaseExceptionrO���r����rh���r<���r���r����rc���r]���� Exceptionr����r����r����r����ru����updater����r����r����rW���r����r{���r}���r����r����)r#���Z handshake_excZsslobjr����rD���Zdtr���r���r����_on_handshake_completeC��sD���� z"SSLProtocol._on_handshake_completec�������������C���s>��|�j�d�ks|�jd�krd�S�y�x�tt|�j��D�]�}|�jd�\}}|rT|�jj||�\}}n*|rl|�jj|�j�}d}n|�jj|�j �}d}x|D�]}|�j�j |��q�W�|t|�k�r�||f|�jd<�|�j�jr�|�j�j���P�|�jd=�|��j t|�8��_ q*W�W�nR�tk �r8�}�z4|�j�r|�j|��n|�j|d��t|t��s(��W�Y�d�d�}~X�nX�d�S�)Nr���r���zFatal error on SSL transport)rc���r|����rangerE���rx���rI���r2���r����r4���� _finalizer7���Z_pausedre���ry���r����r~����_fatal_errorrh���r����)r#����irB���rH���r0���rC���rD���r���r���r���r����w��s8���� z"SSLProtocol._process_write_backlog�Fatal error on transportc�������������C���sX���t�|tj�r*|�jj��rBtjd|�|dd��n|�jj|||�j|�d���|�jrT|�jj |��d�S�)Nz%r: %sT)r����)�messageZ exceptionr����rX���) rh���r���Z_FATAL_ERROR_IGNORErO���r����r���r����Zcall_exception_handlerrc���Z_force_close)r#���rD���r����r���r���r���r�������s���� zSSLProtocol._fatal_errorc�������������C���s���d�|�_�|�jd�k r|�jj���d�S�)N)r|���rc���r]���)r#���r���r���r���r�������s���� zSSLProtocol._finalizec���������� ���C���s(���z|�j�d�k r|�j�j���W�d�|�j���X�d�S�)N)rc���rq���r����)r#���r���r���r���rp������s���� zSSLProtocol._abort)FNT)N)N)r����)rJ���rK���rL���r%���r����r����r����r����r����r����r����rS���r\���rn���r����r����r����r����r����rp���r���r���r���r���rr������s$���� " 4, rr���)rv���r_���r����ImportError��r���r���r���r����logr���r���r���r���r-���r(���r3����objectr���Z_FlowControlMixinZ TransportrN���ZProtocolrr���r���r���r���r����<module>���s*��� �wn