grthtrhthjhtyjytjytkergtrhtrjytjerhrfh4:24 29/09/20263 Õì2aù®ã@sdddlZddlZddlZddlZddlZddlmZddlmZ m Z m Z ddlZddlmZmZmZddlmZmZmZddlmZmZmZmZmZmZddlmZmZddlmZm Z m!Z!m"Z"ydd lm#Z#Wne$k räYnXdd lm%Z%m&Z&m'Z'm(Z(m)Z)dd lm*Z*e j+d e,d d„ed�e j+de,dd„ed�e j+de,dd„ed�e j+de,dd„ed�e j+de,dd„ed�e j+de,dd„ed�e-j.Z/e-_/dd„e-j0j1ƒDƒZ2e3e-ddƒZ4ej5dk�rÚddlm6Z6m7Z7ddl8m8Z8m9Z9m:Z:m;Z;dd l8mZ>ddl?Z?ddl@Z@eAZBejC�r.d!gZDngZDd"ZEd#ZFGd$d%„d%eGƒZHdRd'd(„ZId)d*„ZJd+d,„ZKed-d.ƒZLd/d0„ZMGd1d2„d2ed2d3ƒƒZNGd4d5„d5eNe ƒZOGd6d7„d7eƒZPeOjQfdddd8œd9d:„ZRe.fdd;eOjQdddddd<œd=d>„ZSeRZTeSZUGd?d@„d@ƒZVGdAdB„dBe8ƒZWddd;eXe.ddCdCdf dDdE„ZYdFdG„ZZdHZ[dIZ\dJdK„Z]dLdM„Z^e.dfdNdO„Z_dPdQ„Z`dS)SéN)Ú namedtuple)ÚEnumÚIntEnumÚIntFlag)ÚOPENSSL_VERSION_NUMBERÚOPENSSL_VERSION_INFOÚOPENSSL_VERSION)Ú _SSLContextÚ MemoryBIOÚ SSLSession)ÚSSLErrorÚSSLZeroReturnErrorÚSSLWantReadErrorÚSSLWantWriteErrorÚSSLSyscallErrorÚ SSLEOFError)Útxt2objÚnid2obj)Ú RAND_statusÚRAND_addÚ RAND_bytesÚRAND_pseudo_bytes)ÚRAND_egd)ÚHAS_SNIÚHAS_ECDHÚHAS_NPNÚHAS_ALPNÚ HAS_TLSv1_3)Ú_OPENSSL_API_VERSIONÚ _SSLMethodcCs|jdƒo|dkS)NZ PROTOCOL_ÚPROTOCOL_SSLv23)Ú startswith)Úname©r#ú(/opt/alt/python36/lib64/python3.6/ssl.pyÚ|sr%)ÚsourceÚOptionscCs |jdƒS)NZOP_)r!)r"r#r#r$r%�sZAlertDescriptioncCs |jdƒS)NZALERT_DESCRIPTION_)r!)r"r#r#r$r%†sZSSLErrorNumbercCs |jdƒS)NZ SSL_ERROR_)r!)r"r#r#r$r%‹sÚ VerifyFlagscCs |jdƒS)NZVERIFY_)r!)r"r#r#r$r%�sÚ VerifyModecCs |jdƒS)NZCERT_)r!)r"r#r#r$r%•scCsi|]\}}||“qSr#r#)Ú.0r"Úvaluer#r#r$ú šsr,ZPROTOCOL_SSLv2Úwin32)Úenum_certificatesÚ enum_crls)ÚsocketÚAF_INETÚ SOCK_STREAMÚcreate_connection)Ú SOL_SOCKETÚSO_TYPEz tls-uniquezðTLS13-AES-256-GCM-SHA384:TLS13-CHACHA20-POLY1305-SHA256:TLS13-AES-128-GCM-SHA256:ECDH+AESGCM:ECDH+CHACHA20:DH+AESGCM:DH+CHACHA20:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:ECDH+HIGH:DH+HIGH:RSA+AESGCM:RSA+AES:RSA+HIGH:!aNULL:!eNULL:!MD5:!3DESzúTLS13-AES-256-GCM-SHA384:TLS13-CHACHA20-POLY1305-SHA256:TLS13-AES-128-GCM-SHA256:ECDH+AESGCM:ECDH+CHACHA20:DH+AESGCM:DH+CHACHA20:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:ECDH+HIGH:DH+HIGH:RSA+AESGCM:RSA+AES:RSA+HIGH:!aNULL:!eNULL:!MD5:!DSS:!RC4:!3DESc@s eZdZdS)ÚCertificateErrorN)Ú__name__Ú __module__Ú __qualname__r#r#r#r$r6Ýsr6éc Csæg}|s dS|jdƒ^}}|jdƒ}||kr|jdƒsx|jdƒrŠ|jtj|ƒƒn|jtj|ƒj ddƒƒx|D]}|jtj|ƒƒq¨Wtj d d j |ƒd tj ƒ}|j |ƒS) NFÚ.Ú*z,too many wildcards in certificate DNS name: z[^.]+zxn--z\*z[^.]*z\Az\.z\Z)ÚsplitÚcountr6ÚreprÚlowerÚappendr!ÚreÚescapeÚreplaceÚcompileÚjoinÚ IGNORECASEÚmatch) ZdnÚhostnameZ max_wildcardsZpatsZleftmostZ remainderZ wildcardsZfragZpatr#r#r$Ú_dnsname_matchás&   rJcCstj|jƒƒ}||kS)N)Ú ipaddressÚ ip_addressÚrstrip)ZipnameÚhost_ipZipr#r#r$Ú_ipaddress_matchsrOcCsP|s tdƒ‚ytj|ƒ}Wntk r2d}YnXg}|jdfƒ}xb|D]Z\}}|dkr||dkrpt||ƒrpdS|j|ƒqJ|dkrJ|dk ršt||ƒršdS|j|ƒqJW|sôxF|jdfƒD]6}x0|D](\}}|dkrÄt||ƒrâdS|j|ƒqÄWqºWt|ƒdk�r td|d j t t |ƒƒfƒ‚n,t|ƒdk�rDtd ||d fƒ‚ntd ƒ‚dS) Nztempty or no certificate, match_hostname needs a SSL socket or SSL context with either CERT_OPTIONAL or CERT_REQUIREDZsubjectAltNameZDNSz IP AddressZsubjectZ commonNamer:z&hostname %r doesn't match either of %sz, zhostname %r doesn't match %rrz=no appropriate commonName or subjectAltName fields were found) Ú ValueErrorrKrLÚgetrJrArOÚlenr6rFÚmapr?)ÚcertrIrNZdnsnamesZsanÚkeyr+Úsubr#r#r$Úmatch_hostnames>    rWÚDefaultVerifyPathszQcafile capath openssl_cafile_env openssl_cafile openssl_capath_env openssl_capathcCsdtjƒ}tjj|d|dƒ}tjj|d|dƒ}ttjj|ƒrF|ndtjj|ƒrX|ndf|žŽS)Nrr:éé) Ú_sslÚget_default_verify_pathsÚosÚenvironrQrXÚpathÚisfileÚisdir)ÚpartsÚcafileÚcapathr#r#r$r\Us r\cs@eZdZfZ‡fdd„Ze‡fdd„ƒZe‡fdd„ƒZ‡ZS)Ú _ASN1Objectcstƒj|ft|dd�žŽS)NF)r")ÚsuperÚ__new__Ú_txt2obj)ÚclsÚoid)Ú __class__r#r$rghsz_ASN1Object.__new__cstƒj|ft|ƒžŽS)N)rfrgÚ_nid2obj)riZnid)rkr#r$Úfromnidksz_ASN1Object.fromnidcstƒj|ft|dd�žŽS)NT)r")rfrgrh)rir")rkr#r$Úfromnameqsz_ASN1Object.fromname) r7r8r9Ú __slots__rgÚ classmethodrmrnÚ __classcell__r#r#)rkr$recs reznid shortname longname oidc@seZdZdZdZdS)ÚPurposez1.3.6.1.5.5.7.3.1z1.3.6.1.5.5.7.3.2N)r7r8r9Ú SERVER_AUTHÚ CLIENT_AUTHr#r#r#r$rrxsrrcsÐeZdZd!Zd"Zefdd„Zefdd„Zd#d d „Zd$dd„Z dd„Z dd„Z dd„Z e jfdd„Ze‡fdd„ƒZej‡fdd„ƒZe‡fdd„ƒZej‡fdd„ƒZe‡fdd„ƒZej‡fd d„ƒZ‡ZS)%Ú SSLContextÚprotocolÚ __weakref__ÚCAÚROOTcOs"tj||ƒ}|tkr|jtƒ|S)N)r rgÚ_SSLv2_IF_EXISTSÚ set_ciphersÚ_DEFAULT_CIPHERS)rirvÚargsÚkwargsÚselfr#r#r$rg†s  zSSLContext.__new__cCs ||_dS)N)rv)rrvr#r#r$Ú__init__ŒszSSLContext.__init__FTNc Cst|||||||d�S)N)ÚsockÚ server_sideÚdo_handshake_on_connectÚsuppress_ragged_eofsÚserver_hostnameÚ_contextÚ_session)Ú SSLSocket)rr�r‚rƒr„r…Úsessionr#r#r$Ú wrap_socket�s zSSLContext.wrap_socketcCs|j||||d�}t||d�S)N)r‚r…)r‰)Z _wrap_bioÚ SSLObject)rZincomingZoutgoingr‚r…r‰Ússlobjr#r#r$Úwrap_bio™s zSSLContext.wrap_biocCsdtƒ}xN|D]F}t|dƒ}t|ƒdks2t|ƒdkr:tdƒ‚|jt|ƒƒ|j|ƒq W|j|ƒdS)NÚasciiréÿz(NPN protocols must be 1 to 255 in length)Ú bytearrayÚbytesrRr rAÚextendZ_set_npn_protocols)rÚ npn_protocolsÚprotosrvÚbr#r#r$Úset_npn_protocolsŸs  zSSLContext.set_npn_protocolscCsdtƒ}xN|D]F}t|dƒ}t|ƒdks2t|ƒdkr:tdƒ‚|jt|ƒƒ|j|ƒq W|j|ƒdS)NrŽrr�z)ALPN protocols must be 1 to 255 in length)r�r‘rRr rAr’Z_set_alpn_protocols)rZalpn_protocolsr”rvr•r#r#r$Úset_alpn_protocolsªs  zSSLContext.set_alpn_protocolsc Csztƒ}y@x:t|ƒD].\}}}|dkr|dks6|j|kr|j|ƒqWWntk rdtjdƒYnX|rv|j|d�|S)NZx509_asnTz-unable to enumerate Windows certificate store)Úcadata)r�r.rjr’ÚPermissionErrorÚwarningsÚwarnÚload_verify_locations)rÚ storenameÚpurposeZcertsrTÚencodingZtrustr#r#r$Ú_load_windows_store_certsµs z$SSLContext._load_windows_store_certscCsDt|tƒst|ƒ‚tjdkr8x|jD]}|j||ƒq$W|jƒdS)Nr-)Ú isinstancereÚ TypeErrorÚsysÚplatformÚ_windows_cert_storesr Zset_default_verify_paths)rržr�r#r#r$Úload_default_certsÃs    zSSLContext.load_default_certscs ttƒjƒS)N)r'rfÚoptions)r)rkr#r$r§ËszSSLContext.optionscstttƒjj||ƒdS)N)rfrur§Ú__set__)rr+)rkr#r$r§Ïscs ttƒjƒS)N)r(rfÚ verify_flags)r)rkr#r$r©ÓszSSLContext.verify_flagscstttƒjj||ƒdS)N)rfrur©r¨)rr+)rkr#r$r©×sc s*tƒj}yt|ƒStk r$|SXdS)N)rfÚ verify_moder)rP)rr+)rkr#r$rªÛs zSSLContext.verify_modecstttƒjj||ƒdS)N)rfrurªr¨)rr+)rkr#r$rªãs)rvrw)rxry)FTTNN)FNN)r7r8r9ror¥Ú PROTOCOL_TLSrgr€rŠr�r–r—r rrrsr¦Úpropertyr§Úsetterr©rªrqr#r#)rkr$rus(      ru)rcrdr˜cCszt|tƒst|ƒ‚ttƒ}|tjkr2t|_d|_ n|tj krF|j t ƒ|sR|sR|rb|j |||ƒn|jtkrv|j|ƒ|S)NT)r¡rer¢rur«rrrsÚ CERT_REQUIREDrªÚcheck_hostnamertr{Ú_RESTRICTED_SERVER_CIPHERSrœÚ CERT_NONEr¦)ržrcrdr˜Úcontextr#r#r$Úcreate_default_contextès       r³F)Ú cert_reqsr¯ržÚcertfileÚkeyfilercrdr˜c Csˆt|tƒst|ƒ‚t|ƒ} |dk r(|| _|| _|r@| r@tdƒ‚|sH|rT| j||ƒ|s`|s`|rp| j|||ƒn| jt kr„| j |ƒ| S)Nzcertfile must be specified) r¡rer¢rurªr¯rPÚload_cert_chainrœr±r¦) rvr´r¯ržrµr¶rcrdr˜r²r#r#r$Ú_create_unverified_contexts      r¸c@säeZdZd/dd„Zedd„ƒZejdd„ƒZedd„ƒZejd d„ƒZed d „ƒZed d „ƒZ edd„ƒZ d0dd„Z dd„Z d1dd„Z dd„Zdd„Zdd„Zdd„Zd d!„Zd"d#„Zd$d%„Zd&d'„Zd2d)d*„Zd+d,„Zd-d.„ZdS)3r‹NcCs&||_|p ||j_|dk r"||j_dS)N)Ú_sslobjÚownerr‰)rrŒrºr‰r#r#r$r€Gs zSSLObject.__init__cCs|jjS)N)r¹r²)rr#r#r$r²NszSSLObject.contextcCs ||j_dS)N)r¹r²)rÚctxr#r#r$r²SscCs|jjS)N)r¹r‰)rr#r#r$r‰WszSSLObject.sessioncCs ||j_dS)N)r¹r‰)rr‰r#r#r$r‰\scCs|jjS)N)r¹Úsession_reused)rr#r#r$r¼`szSSLObject.session_reusedcCs|jjS)N)r¹r‚)rr#r#r$r‚eszSSLObject.server_sidecCs|jjS)N)r¹r…)rr#r#r$r…jszSSLObject.server_hostnameécCs(|dk r|jj||ƒ}n |jj|ƒ}|S)N)r¹Úread)rrRÚbufferÚvr#r#r$r¾ps zSSLObject.readcCs |jj|ƒS)N)r¹Úwrite)rÚdatar#r#r$rÁ|szSSLObject.writeFcCs |jj|ƒS)N)r¹Zpeer_certificate)rÚ binary_formr#r#r$Ú getpeercert„szSSLObject.getpeercertcCstjr|jjƒSdS)N)r[rr¹Úselected_npn_protocol)rr#r#r$rÅ�szSSLObject.selected_npn_protocolcCstjr|jjƒSdS)N)r[rr¹Úselected_alpn_protocol)rr#r#r$rÆ”sz SSLObject.selected_alpn_protocolcCs |jjƒS)N)r¹Úcipher)rr#r#r$rÇ›szSSLObject.ciphercCs |jjƒS)N)r¹Úshared_ciphers)rr#r#r$rÈ szSSLObject.shared_cipherscCs |jjƒS)N)r¹Ú compression)rr#r#r$rɦszSSLObject.compressioncCs |jjƒS)N)r¹Úpending)rr#r#r$rÊ«szSSLObject.pendingcCs4|jjƒ|jjr0|js tdƒ‚t|jƒ|jƒdS)Nz-check_hostname needs server_hostname argument)r¹Ú do_handshaker²r¯r…rPrWrÄ)rr#r#r$r˯s  zSSLObject.do_handshakecCs |jjƒS)N)r¹Úshutdown)rr#r#r$Úunwrap¸szSSLObject.unwrapú tls-uniquecCs0|tkrtdƒ‚|dkr&tdj|ƒƒ‚|jjƒS)Nz Unsupported channel binding typez tls-uniquez({0} channel binding type not implemented)ÚCHANNEL_BINDING_TYPESrPÚNotImplementedErrorÚformatr¹Z tls_unique_cb)rÚcb_typer#r#r$Úget_channel_binding¼szSSLObject.get_channel_bindingcCs |jjƒS)N)r¹Úversion)rr#r#r$rÔÈszSSLObject.versioncCs |jjƒS)N)r¹Úverify_client_post_handshake)rr#r#r$rÕÍsz&SSLObject.verify_client_post_handshake)NN)r½N)F)rÎ)r7r8r9r€r¬r²r­r‰r¼r‚r…r¾rÁrÄrÅrÆrÇrÈrÉrÊrËrÍrÓrÔrÕr#r#r#r$r‹7s,          r‹cs¬eZdZddddeeddeeddddddddfdd„Zedd„ƒZ e j d d„ƒZ ed d „ƒZ e j d d „ƒZ ed d„ƒZ dd„Z dUdd„Zdd„ZdVdd„Zdd„ZdWdd„Zdd„Zdd„Zd d!„Zd"d#„Zd$d%„ZdXd&d'„ZdYd(d)„Zd*d+„ZdZd,d-„Zd[‡fd.d/„ Zd\d0d1„Zd]d2d3„Zd^d4d5„Zd_d6d7„Z d8d9„Z!d:d;„Z"dd?„Z$d@dA„Z%dBdC„Z&dDdE„Z'd`dFdG„Z(dHdI„Z)dJdK„Z*dLdM„Z+dNdO„Z,dadQdR„Z-dSdT„Z.‡Z/S)brˆNFTrcCsj|r ||_nª|r| rtdƒ‚|r0| r0tdƒ‚|r>| r>|}t|ƒ|_||j_|r`|jj|ƒ|rr|jj||ƒ|r‚|jj|ƒ|r’|jj|ƒ||_||_ ||_ ||_ ||_ ||_ |jttƒtkrÎtdƒ‚|rî|rÞtdƒ‚|dk rîtdƒ‚|jjoú| �rtdƒ‚||_||_||_||_| |_|dk �rdtj||j|j|j|jƒd�|j|j ƒƒ|j!ƒn,| dk �r~tj|| d�ntj|| | | d �y |j"ƒWn8t#k �rÔ}z|j$t$j%k�rÀ‚d }WYdd}~XnXd }d |_&d|_'||_(|�rfyN|jj)|||ƒ}t*|||jd �|_'|�r>|j ƒ}|d k�r6tdƒ‚|j+ƒWn$t#tfk �rd|j,ƒ‚YnXdS)Nz5certfile must be specified for server-side operationszcertfile must be specifiedz!only stream sockets are supportedz4server_hostname can only be specified in client modez,session can only be specified in client modez'check_hostname requires server_hostname)ÚfamilyÚtypeÚprotoÚfileno)rÙ)rÖr×rØFT)rºr‰gzHdo_handshake_on_connect should not be specified for non-blocking sockets)-r†rPrurªrœr·r–r{r¶rµr´Ú ssl_versionÚca_certsÚciphersZ getsockoptr4r5r2rÐr¯r‡r‚r…rƒr„r0r€rÖr×rØrÙÚ settimeoutÚ gettimeoutÚdetachÚ getpeernameÚOSErrorÚerrnoZENOTCONNZ_closedr¹Ú _connectedÚ _wrap_socketr‹rËÚclose)rr�r¶rµr‚r´rÚrÛrƒrÖr×rØrÙr„r“rÜr…r†r‡ÚeZ connectedrŒÚtimeoutr#r#r$r€Ös’                 zSSLSocket.__init__cCs|jS)N)r†)rr#r#r$r²7szSSLSocket.contextcCs||_||j_dS)N)r†r¹r²)rr»r#r#r$r²;scCs|jdk r|jjSdS)N)r¹r‰)rr#r#r$r‰@s zSSLSocket.sessioncCs||_|jdk r||j_dS)N)r‡r¹r‰)rr‰r#r#r$r‰Fs cCs|jdk r|jjSdS)N)r¹r¼)rr#r#r$r¼Ls zSSLSocket.session_reusedcCstd|jjƒ‚dS)NzCan't dup() %s instances)rÐrkr7)rr#r#r$ÚdupRsz SSLSocket.dupcCsdS)Nr#)rÚmsgr#r#r$Ú _checkClosedVszSSLSocket._checkClosedcCs|js|jƒdS)N)rãrà)rr#r#r$Ú_check_connectedZszSSLSocket._check_connectedécCst|jƒ|jstdƒ‚y|jj||ƒStk rn}z.|jdtkr\|jr\|dk rVdSdSn‚WYdd}~XnXdS)Nz'Read on closed or unwrapped SSL socket.ró)rêr¹rPr¾r r}Z SSL_ERROR_EOFr„)rrRr¿Úxr#r#r$r¾bszSSLSocket.readcCs"|jƒ|jstdƒ‚|jj|ƒS)Nz(Write on closed or unwrapped SSL socket.)rêr¹rPrÁ)rrÂr#r#r$rÁtszSSLSocket.writecCs|jƒ|jƒ|jj|ƒS)N)rêrër¹rÄ)rrÃr#r#r$rÄ}szSSLSocket.getpeercertcCs*|jƒ|j stj rdS|jjƒSdS)N)rêr¹r[rrÅ)rr#r#r$rŇszSSLSocket.selected_npn_protocolcCs*|jƒ|j stj rdS|jjƒSdS)N)rêr¹r[rrÆ)rr#r#r$rÆŽsz SSLSocket.selected_alpn_protocolcCs |jƒ|jsdS|jjƒSdS)N)rêr¹rÇ)rr#r#r$rÇ•szSSLSocket.ciphercCs|jƒ|jsdS|jjƒS)N)rêr¹rÈ)rr#r#r$rÈœszSSLSocket.shared_cipherscCs |jƒ|jsdS|jjƒSdS)N)rêr¹rÉ)rr#r#r$rÉ¢szSSLSocket.compressioncCsB|jƒ|jr0|dkr$td|jƒ‚|jj|ƒStj|||ƒSdS)Nrz3non-zero flags not allowed in calls to send() on %s)rêr¹rPrkrÁr0Úsend)rrÂÚflagsr#r#r$rï©s  zSSLSocket.sendcCsH|jƒ|jrtd|jƒ‚n&|dkr4tj|||ƒStj||||ƒSdS)Nz%sendto not allowed on instances of %s)rêr¹rPrkr0Úsendto)rrÂZ flags_or_addrÚaddrr#r#r$rñ´s zSSLSocket.sendtocOstd|jƒ‚dS)Nz&sendmsg not allowed on instances of %s)rÐrk)rr}r~r#r#r$Úsendmsg¾szSSLSocket.sendmsgcCs–|jƒ|jr„|dkr$td|jƒ‚d}t|ƒ�L}|jdƒ�6}t|ƒ}x&||krl|j||d…ƒ}||7}qHWWdQRXWdQRXntj |||ƒSdS)Nrz6non-zero flags not allowed in calls to sendall() on %sÚB) rêr¹rPrkÚ memoryviewÚcastrRrïr0Úsendall)rrÂrðr>ZviewZ byte_viewÚamountrÀr#r#r$r÷Äs  "zSSLSocket.sendallcs,|jdkrtƒj|||ƒS|j|||ƒSdS)N)r¹rfÚsendfileZ_sendfile_use_send)rÚfileÚoffsetr>)rkr#r$rùÔs zSSLSocket.sendfilecCs@|jƒ|jr.|dkr$td|jƒ‚|j|ƒStj|||ƒSdS)Nrz3non-zero flags not allowed in calls to recv() on %s)rêr¹rPrkr¾r0Úrecv)rÚbuflenrðr#r#r$rüÞs  zSSLSocket.recvcCsf|jƒ|r|dkrt|ƒ}n |dkr*d}|jrR|dkrFtd|jƒ‚|j||ƒStj||||ƒSdS)Nirz8non-zero flags not allowed in calls to recv_into() on %s)rêrRr¹rPrkr¾r0Ú recv_into)rr¿Únbytesrðr#r#r$rþés    zSSLSocket.recv_intocCs0|jƒ|jrtd|jƒ‚ntj|||ƒSdS)Nz'recvfrom not allowed on instances of %s)rêr¹rPrkr0Úrecvfrom)rrýrðr#r#r$røs  zSSLSocket.recvfromcCs2|jƒ|jrtd|jƒ‚ntj||||ƒSdS)Nz,recvfrom_into not allowed on instances of %s)rêr¹rPrkr0Ú recvfrom_into)rr¿rÿrðr#r#r$rs  zSSLSocket.recvfrom_intocOstd|jƒ‚dS)Nz&recvmsg not allowed on instances of %s)rÐrk)rr}r~r#r#r$ÚrecvmsgszSSLSocket.recvmsgcOstd|jƒ‚dS)Nz+recvmsg_into not allowed on instances of %s)rÐrk)rr}r~r#r#r$Ú recvmsg_into szSSLSocket.recvmsg_intocCs |jƒ|jr|jjƒSdSdS)Nr)rêr¹rÊ)rr#r#r$rÊs zSSLSocket.pendingcCs|jƒd|_tj||ƒdS)N)rêr¹r0rÌ)rZhowr#r#r$rÌszSSLSocket.shutdowncCs.|jr|jjƒ}d|_|Stdt|ƒƒ‚dS)NzNo SSL wrapper around )r¹rÍrPÚstr)rÚsr#r#r$rÍs  zSSLSocket.unwrapcCs$|jr|jjƒStdt|ƒƒ‚dS)NzNo SSL wrapper around )r¹rÕrPr)rr#r#r$rÕ$s z&SSLSocket.verify_client_post_handshakecCsd|_tj|ƒdS)N)r¹r0Ú _real_close)rr#r#r$r*szSSLSocket._real_closec CsF|jƒ|jƒ}z$|dkr(|r(|jdƒ|jjƒWd|j|ƒXdS)Ng)rërÞrÝr¹rË)rÚblockrçr#r#r$rË.s  zSSLSocket.do_handshakec Cs¤|jrtdƒ‚|jrtdƒ‚|jj|d|jƒ}t|||jd�|_y>|rTt j ||ƒ}nd}t j ||ƒ|s|d|_|j r||j ƒ|Sttfk ržd|_‚YnXdS)Nz!can't connect in server-side modez/attempt to connect already-connected SSLSocket!F)rºr‰T)r‚rPrãr²rär…r‹r‡r¹r0Ú connect_exÚconnectrƒrËrá)rròrrŒZrcr#r#r$Ú _real_connect9s(  zSSLSocket._real_connectcCs|j|dƒdS)NF)r )rròr#r#r$r RszSSLSocket.connectcCs |j|dƒS)NT)r )rròr#r#r$rWszSSLSocket.connect_excCs.tj|ƒ\}}|jj||j|jdd�}||fS)NT)rƒr„r‚)r0Úacceptr²rŠrƒr„)rZnewsockròr#r#r$r \s zSSLSocket.acceptú tls-uniquecCs|jdkrdS|jj|ƒS)N)r¹rÓ)rrÒr#r#r$rÓhs zSSLSocket.get_channel_bindingcCs|jdkrdS|jjƒS)N)r¹rÔ)rr#r#r$rÔqs zSSLSocket.version)N)rìN)F)r)N)r)rN)rìr)Nr)rìr)Nr)F)r )0r7r8r9r±r«r1r2r€r¬r²r­r‰r¼rèrêrër¾rÁrÄrÅrÆrÇrÈrÉrïrñrór÷rùrürþrrrrrÊrÌrÍrÕrrËr r rr rÓrÔrqr#r#)rkr$rˆÑs^Z             rˆTc Cst|||||||||| d� S)N) r�r¶rµr‚r´rÚrÛrƒr„rÜ)rˆ) r�r¶rµr‚r´rÚrÛrƒr„rÜr#r#r$rŠ{s rŠc Cs–ddlm}ddlm}d}d}y|j|dd…jƒƒd}Wn$tk rbtd||fƒ‚Yn0X||dd…|ƒ}||d|f|dd…ƒSdS)Nr)Ústrptime)ÚtimegmÚJanÚFebÚMarÚAprÚMayÚJunÚJulÚAugÚSepÚOctÚNovÚDecz %d %H:%M:%S %Y GMTrZr:z*time data %r does not match format "%%b%s"rYé) rrrrrrrrrrrr)Ztimer ZcalendarrÚindexÚtitlerP)Z cert_timer rZmonthsZ time_formatZ month_numberÚttr#r#r$Úcert_time_to_secondsŠs  rz-----BEGIN CERTIFICATE-----z-----END CERTIFICATE-----cCs2ttj|ƒddƒ}tdtj|dƒdtdS)NÚASCIIÚstrictÚ é@)rÚbase64Zstandard_b64encodeÚ PEM_HEADERÚtextwrapÚfillÚ PEM_FOOTER)Zder_cert_bytesÚfr#r#r$ÚDER_cert_to_PEM_cert«sr*cCs\|jtƒstdtƒ‚|jƒjtƒs0tdtƒ‚|jƒttƒttƒ …}tj|j ddƒƒS)Nz(Invalid PEM encoding; must start with %sz&Invalid PEM encoding; must end with %sr r!) r!r%rPÚstripÚendswithr(rRr$Z decodebytesÚencode)Zpem_cert_stringÚdr#r#r$ÚPEM_cert_to_DER_cert´s r/c Csd|\}}|dk rt}nt}t|||d�}t|ƒ�&}|j|ƒ�}|jdƒ} WdQRXWdQRXt| ƒS)N)r´rcT)r®r±Ú_create_stdlib_contextr3rŠrÄr*) ròrÚrÛÚhostZportr´r²r�ZsslsockZdercertr#r#r$Úget_server_certificateÁs  r2cCs tj|dƒS)Nz )Ú_PROTOCOL_NAMESrQ)Z protocol_coder#r#r$Úget_protocol_nameÔsr4)r:)arKr&rBr£r]Ú collectionsrÚenumrZ_EnumrZ_IntEnumrZ_IntFlagr[rrrr r r r r rrrrrrhrrlrrrrrÚ ImportErrorrrrrrrÚ_convertr7rr«r Ú __members__Úitemsr3Úgetattrrzr¤r.r/r0r1r2r3r4r5r$râršráZ socket_errorZHAS_TLS_UNIQUErÏr|r°rPr6rJrOrWrXr\rerrrursr³r¸Z_create_default_https_contextr0r‹rˆr±rŠrr%r(r*r/r2r4r#r#r#r$Ú]s¾       1 4i%-