й¼]]e ã @ s d d l Z d d l Z y d d l Z Wn e k rB d Z Yn Xd d l m Z d d l m Z d d l m Z d d l m Z d d l m Z d d „ Z d d „ Z d Z d Z d Z d Z Gd d „ d e ƒ Z Gd d „ d e j e j ƒ Z Gd d „ d e j ƒ Z d S)é Né )Úbase_events)Úcompat)Ú protocols)Ú transports)Úloggerc C s� | r t d ƒ ‚ t t d ƒ r? t j ƒ } | s‹ d | _ nL t j t j ƒ } | j t j O_ | j t j O_ | j ƒ t j | _ | S)Nz(Server side SSL needs a valid SSLContextÚcreate_default_contextF) Ú ValueErrorÚhasattrÚsslr Úcheck_hostnameZ SSLContextZPROTOCOL_SSLv23ÚoptionsZOP_NO_SSLv2ZOP_NO_SSLv3Zset_default_verify_pathsZ CERT_REQUIREDÚverify_mode)Úserver_sideÚserver_hostnameÚ sslcontext© r ú-/opt/alt/python35/lib64/python3.5/sslproto.pyÚ_create_transport_context s r c C s t t d ƒ S)NÚ MemoryBIO)r r r r r r Ú_is_sslproto_available% s r Z UNWRAPPEDZDO_HANDSHAKEZWRAPPEDZSHUTDOWNc @ sµ e Z d Z d Z d d d „ Z e d d „ ƒ Z e d d „ ƒ Z e d d „ ƒ Z e d d „ ƒ Z d d d „ Z d d d „ Z d d „ Z d d d „ Z d d d „ Z d S)Ú_SSLPipeé i Nc C sj | | _ | | _ | | _ t | _ t j ƒ | _ t j ƒ | _ 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 t k S)N)r Ú_WRAPPED)r$ r r r Úwrappedm s z_SSLPipe.wrappedc C s| | j t k r t d ƒ ‚ | j j | j | j d | j d | j ƒ| _ t | _ | | _ | j d d d ƒ\ } } | S)Nz"handshake in progress or completedr r ó Úonly_handshakeT) 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 sa | j t k r t d ƒ ‚ | j t k r6 t d ƒ ‚ t | _ | | _ | j d ƒ \ } } | S)Nzno security layer presentzshutdown in progressr+ )r r r- Ú _SHUTDOWNr# r/ )r$ r0 r1 r2 r r r Úshutdown‹ s z_SSLPipe.shutdownc C s&