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„ deƒZG dd„ dejejƒZG dd„ dejƒZdS )é Né )Ú 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.9/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__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_ssldata©r ÚcallbackÚssldataÚappdatar r r
Údo_handshakei s
ýz_SSLPipe.do_handshakec C sB | j tkrtdƒ‚| j tkr$tdƒ‚t| _ || _| 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¡}| |¡ |s„qðq„nJ| j t
krÖ| j ¡ d | _t| _ | jrð| ¡ n| j tkrð| | j
¡ ¡ W n| tjtjf�yn } zZt|dd ƒ}|tjtjtjfv�rN| j tk�rL| j �rL| |¡ ‚ |tjk| _W Y d }~n
d }~0 0 | jj�rŠ| | j
¡ ¡ ||fS )NFÚerrno)r r r r Úwriter( r r. r# r ÚreadÚmax_sizeÚappendr/ Úunwrapr r ÚSSLErrorÚCertificateErrorÚgetattrÚSSL_ERROR_WANT_READÚSSL_ERROR_WANT_WRITEÚSSL_ERROR_SYSCALLr Úpending)r Údatar&