a
iCk @ s d dl Z d dlZzd dlZW n ey2 dZY n0 ddlmZ ddlmZ ddlmZ ddlm Z dd Z
d Zd
ZdZ
dZG d
d deZG dd dejejZG dd dejZdS ) N ) 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 (/usr/lib64/python3.9/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__7 s
z_SSLPipe.__init__c C s | j S N)r r r r r
r M s z_SSLPipe.contextc C s | j S r )r r r r r
ssl_objectR s z_SSLPipe.ssl_objectc C s | j S r )r r r r r
need_ssldataZ s z_SSLPipe.need_ssldatac C s
| j tkS r )r _WRAPPEDr r r r
wrapped` 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_handshakei s
z_SSLPipe.do_handshakec C sB | j tkrtd| j tkr$tdt| _ || _| d\}}|S )Nzno security layer presentzshutdown in progressr% )r r r' _SHUTDOWNr r) r* r r r
shutdown~ s
z_SSLPipe.shutdownc C s | j | d\}}d S )Nr% )r Z write_eofr) )r r, r- r r r
feed_eof s
z_SSLPipe.feed_eofFc
C s | j tkr"|r|g}ng }g |fS d| _|r8| j| g }g }z| j tkrz| j t| _ | j rl| d |rz||fW S | j tkr| j
| j}|| |sqqnJ| j t
kr| j d | _t| _ | jr| n| j tkr|| j
W n| tjtjfyn } zZt|dd }|tjtjtjfvrN| j tkrL| j rL| | |tjk| _W Y d }~n
d }~0 0 | jjr|| j
||fS )NFerrno)r r r r writer( r r. r# r readmax_sizeappendr/ unwrapr r SSLErrorCertificateErrorgetattrSSL_ERROR_WANT_READSSL_ERROR_WANT_WRITESSL_ERROR_SYSCALLr pending)r datar&