U ifJj @ 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 deZG dd dejejZG dd dejZdS ) N )base_events) constants) protocols) transports)loggerc C s" | rt dt }|sd|_|S )Nz(Server side SSL needs a valid SSLContextF) ValueErrorsslZcreate_default_contextZcheck_hostname)server_sideserver_hostname sslcontext r 5/opt/alt/python38/lib64/python3.8/asyncio/sslproto.py_create_transport_context s r Z UNWRAPPEDZDO_HANDSHAKEZWRAPPEDZSHUTDOWNc @ sz e Zd ZdZdddZedd Zedd Zed d Zedd Z dd dZ dddZdd ZdddZ dddZdS )_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)selfcontextr 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_ssldatar callbackssldataappdatar r r do_handshakej s z_SSLPipe.do_handshakec C sB | j tkrtd| j tkr$tdt| _ || _| d\}}|S )Nzno security layer presentzshutdown in progressr&