U e5dJj ã @ sÆ d dl Z d dlZzd dlZW n ek r4 dZY nX ddlmZ ddlmZ ddlmZ ddlmZ ddl m Z dd „ Zd ZdZ dZd ZG dd„ deƒZG dd„ dejejƒZG dd„ dejƒZdS )é Né )Úbase_events)Ú constants)Ú protocols)Ú transports)Úloggerc C s" | rt dƒ‚t ¡ }|sd|_|S )Nz(Server side SSL needs a valid SSLContextF)Ú ValueErrorÚsslZcreate_default_contextZcheck_hostname)Úserver_sideÚserver_hostnameÚ sslcontext© r ú(/usr/lib64/python3.8/asyncio/sslproto.pyÚ_create_transport_context s r Z UNWRAPPEDZDO_HANDSHAKEZWRAPPEDZSHUTDOWNc @ sz e Zd ZdZddd„Zedd„ ƒZedd„ ƒZed d „ ƒZedd„ ƒZ dd d„Z ddd„Zdd„ Zddd„Z ddd„ZdS )Ú_SSLPipei Nc C sH || _ || _|| _t| _t ¡ | _t ¡ | _d | _ d| _ d | _d | _d S ©NF) Ú_contextÚ_server_sideÚ_server_hostnameÚ _UNWRAPPEDÚ_stater Z MemoryBIOÚ _incomingÚ _outgoingÚ_sslobjÚ _need_ssldataÚ _handshake_cbÚ_shutdown_cb)ÚselfÚcontextr r r r r Ú__init__8 s z_SSLPipe.__init__c C s | j S ©N)r ©r r r r r N s z_SSLPipe.contextc C s | j S r )r r! r r r Ú ssl_objectS s z_SSLPipe.ssl_objectc C s | j S r )r r! r r r Úneed_ssldata[ s z_SSLPipe.need_ssldatac C s | j tkS r )r Ú_WRAPPEDr! r r r Úwrappeda 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_handshakej s ýz_SSLPipe.do_handshakec C sB | j tkrtdƒ‚| j tkr$tdƒ‚t| _ || _| d¡\}}|S )Nzno security layer presentzshutdown in progressr&