grthtrhthjhtyjytjytkergtrhtrjytjerhrfh4:24 29/09/2026o ®û|j‡Òã @s¶ ddlZddlZddlmZddlmZmZm Z ddl Z ddl m Z m Z mZddl mZmZmZddl mZmZmZmZmZmZmZddl mZmZddl mZmZmZm Z zdd l m!Z!Wn e"yhYnwdd l m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,dd l m-Z-m.Z.ej/d e0d d„e d�e j/de0dd„e d�ej/de0dd„e d�ej/de0dd„e d�e j/de0dd„e d�ej/de0dd„e d�e1j2Z3e1_3dd„e1j4 5¡DƒZ6e7e1ddƒZ8Gdd„deƒZ9Gdd „d eƒZ:Gd!d"„d"eƒZ;Gd#d$„d$eƒZZ>m?Z?dd'l@m@Z@mAZAmBZBdd(l@mCZCmDZDmEZEddl@ZFddlGZGddlHZHddlIZIeJZKd)gZLeMe d*ƒZNe-ZOeZPd+d,„ZQd-d.„ZRd/d0„ZSd1d2„ZTed3d4ƒZUd5d6„ZVGd7d8„d8ed8d9ƒƒZWGd:d;„d;eWeƒZXGdœd?d@„Z[dZe\dAeXjZddddddBœdCdD„Z]e[Z^e]Z_GdEdF„dFƒZ`dGdH„ZaGdIdJ„dJe@ƒZbebeY_ce`eY_ddddAe\e2ddKdKdf dLdM„ZedNdO„ZfdPZgdQZhdRdS„ZidTdU„ZjekdeEfdVdW„ZldXdY„ZmdS)[éN)Ú namedtuple)ÚEnumÚIntEnumÚIntFlag)ÚOPENSSL_VERSION_NUMBERÚOPENSSL_VERSION_INFOÚOPENSSL_VERSION)Ú _SSLContextÚ MemoryBIOÚ SSLSession)ÚSSLErrorÚSSLZeroReturnErrorÚSSLWantReadErrorÚSSLWantWriteErrorÚSSLSyscallErrorÚ SSLEOFErrorÚSSLCertVerificationError)Útxt2objÚnid2obj)Ú RAND_statusÚRAND_addÚ RAND_bytesÚRAND_pseudo_bytes)ÚRAND_egd) ÚHAS_SNIÚHAS_ECDHÚHAS_NPNÚHAS_ALPNÚ HAS_SSLv2Ú HAS_SSLv3Ú HAS_TLSv1Ú HAS_TLSv1_1Ú HAS_TLSv1_2Ú HAS_TLSv1_3)Ú_DEFAULT_CIPHERSÚ_OPENSSL_API_VERSIONÚ _SSLMethodcCs| d¡o|dkS)NZ PROTOCOL_ÚPROTOCOL_SSLv23©Ú startswith©Úname©r,ú*/opt/alt/python310/lib64/python3.10/ssl.pyÚ}sr.)ÚsourceÚOptionscCó | d¡S)NZOP_r(r*r,r,r-r.‚ó ZAlertDescriptioncCr1)NZALERT_DESCRIPTION_r(r*r,r,r-r.‡r2ZSSLErrorNumbercCr1)NZ SSL_ERROR_r(r*r,r,r-r.Œr2Ú VerifyFlagscCr1)NZVERIFY_r(r*r,r,r-r.‘r2Ú VerifyModecCr1)NZCERT_r(r*r,r,r-r.–r2cCsi|]\}}||“qSr,r,)Ú.0r+Úvaluer,r,r-Ú šsr7ZPROTOCOL_SSLv2c@s6eZdZejZejZejZ ej Z ej Z ejZejZdS)Ú TLSVersionN)Ú__name__Ú __module__Ú __qualname__Ú_sslZPROTO_MINIMUM_SUPPORTEDZMINIMUM_SUPPORTEDZ PROTO_SSLv3ÚSSLv3Z PROTO_TLSv1ZTLSv1Z PROTO_TLSv1_1ZTLSv1_1Z PROTO_TLSv1_2ZTLSv1_2Z PROTO_TLSv1_3ZTLSv1_3ZPROTO_MAXIMUM_SUPPORTEDZMAXIMUM_SUPPORTEDr,r,r,r-r8Ÿs r8c@s&eZdZ dZdZdZdZdZdZdS)Ú_TLSContentTypeééééééN) r9r:r;ÚCHANGE_CIPHER_SPECÚALERTZ HANDSHAKEZAPPLICATION_DATAÚHEADERZINNER_CONTENT_TYPEr,r,r,r-r>©sr>c@s–eZdZ dZdZdZdZdZdZdZ dZ d Z d Z d Z d Zd ZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZ dZ!d Z"d!Z#d"Z$d#S)$Ú _TLSAlertTyperé r?r@rAéé(é)é*é+é,é-é.é/é0é1é2é3é<éFéGéPéVéZédéménéoépéqérésétéxN)%r9r:r;Z CLOSE_NOTIFYZUNEXPECTED_MESSAGEZBAD_RECORD_MACZDECRYPTION_FAILEDZRECORD_OVERFLOWZDECOMPRESSION_FAILUREZHANDSHAKE_FAILUREZNO_CERTIFICATEZBAD_CERTIFICATEZUNSUPPORTED_CERTIFICATEZCERTIFICATE_REVOKEDZCERTIFICATE_EXPIREDZCERTIFICATE_UNKNOWNZILLEGAL_PARAMETERZ UNKNOWN_CAZ ACCESS_DENIEDZ DECODE_ERRORZ DECRYPT_ERRORZEXPORT_RESTRICTIONZPROTOCOL_VERSIONZINSUFFICIENT_SECURITYZINTERNAL_ERRORZINAPPROPRIATE_FALLBACKZ USER_CANCELEDZNO_RENEGOTIATIONZMISSING_EXTENSIONZUNSUPPORTED_EXTENSIONZCERTIFICATE_UNOBTAINABLEZUNRECOGNIZED_NAMEZBAD_CERTIFICATE_STATUS_RESPONSEZBAD_CERTIFICATE_HASH_VALUEZUNKNOWN_PSK_IDENTITYZCERTIFICATE_REQUIREDZNO_APPLICATION_PROTOCOLr,r,r,r-rH·sHrHc@sfeZdZ dZdZdZdZdZdZdZ dZ d Z d Z d Z d Zd ZdZdZdZdZdZdZdZdZdZdS)Ú_TLSMessageTyperéééééééé é é ééér?r@rArBééCéþrDN)r9r:r;Z HELLO_REQUESTZ CLIENT_HELLOZ SERVER_HELLOZHELLO_VERIFY_REQUESTZNEWSESSION_TICKETZEND_OF_EARLY_DATAZHELLO_RETRY_REQUESTZENCRYPTED_EXTENSIONSZ CERTIFICATEZSERVER_KEY_EXCHANGEZCERTIFICATE_REQUESTZ SERVER_DONEZCERTIFICATE_VERIFYZCLIENT_KEY_EXCHANGEZFINISHEDZCERTIFICATE_URLZCERTIFICATE_STATUSZSUPPLEMENTAL_DATAZ KEY_UPDATEZ NEXT_PROTOZ MESSAGE_HASHrEr,r,r,r-rgàs0rgÚwin32)Úenum_certificatesÚ enum_crls)ÚsocketÚ SOCK_STREAMÚcreate_connection)Ú SOL_SOCKETÚSO_TYPEÚ_GLOBAL_DEFAULT_TIMEOUTú tls-uniqueÚHOSTFLAG_NEVER_CHECK_SUBJECTcCs¸ |sdS| d¡}|s| ¡| ¡kS|dkrtd |¡ƒ‚| d¡\}}}d|vr2td |¡ƒ‚|s;td |¡ƒ‚|dkrFtd |¡ƒ‚| d¡\}}}|rR|sTdS| ¡| ¡kS) NFÚ*rhz1too many wildcards in certificate DNS name: {!r}.Ú.z9wildcard can only be present in the leftmost label: {!r}.z>sole wildcard without additional labels are not support: {!r}.z.shim_cb)Z sni_callbackÚcallableÚ TypeError)rÉrérêr,rèr-Úset_servername_callback%s   z"SSLContext.set_servername_callbackcCs`tƒ}|D]#}t|dƒ}t|ƒdkst|ƒdkrtdƒ‚| t|ƒ¡| |¡q| |¡dS)NrÊrràz)ALPN protocols must be 1 to 255 in length)rárâr r rŸrãZ_set_alpn_protocols)rÉZalpn_protocolsrärÆrår,r,r-Úset_alpn_protocols2s  zSSLContext.set_alpn_protocolscCsttƒ}zt|ƒD]\}}}|dkr|dus|j|vr| |¡qWnty/t d¡Ynw|r8|j|d�|S)NZx509_asnTz-unable to enumerate Windows certificate store)Úcadata)ráryr¸rãÚPermissionErrorr›rœÚload_verify_locations)rÉÚ storenameÚpurposeZcertsr¤ÚencodingZtrustr,r,r-Ú_load_windows_store_certs=s €ü ÿ z$SSLContext._load_windows_store_certscCs@t|tƒs t|ƒ‚tjdkr|jD]}| ||¡q| ¡dS)Nrx)rËr²rìÚsysÚplatformÚ_windows_cert_storesrõZset_default_verify_paths)rÉróròr,r,r-Úload_default_certsKs    zSSLContext.load_default_certsÚminimum_versioncó ttƒjƒSr“)r8r´rú©rÉr¹r,r-rúTó zSSLContext.minimum_versioncs4|tjkr|jtjM_tttƒj ||¡dSr“) r8r=Úoptionsr0Z OP_NO_SSLv3r´rÄrúÚ__set__©rÉr6r¹r,r-rúXs crûr“)r8r´Úmaximum_versionrür¹r,r-r^rýzSSLContext.maximum_versioncótttƒj ||¡dSr“)r´rÄrrÿrr¹r,r-rbócrûr“)r0r´rþrür¹r,r-rþfrýzSSLContext.optionscrr“)r´rÄrþrÿrr¹r,r-rþjrr‚cCs|jtj@}|tjkSr“©Z _host_flagsr<r‚)rÉZncsr,r,r-Úhostname_checks_common_nameos  z&SSLContext.hostname_checks_common_namecCs.|r |jtjM_dS|jtjO_dSr“rrr,r,r-rtscCsdS©NTr,rür,r,r-r{ócs tƒj}|dur |jSdSr“)r´Ú _msg_callbackÚ user_function)rÉÚinnerr¹r,r-rs zSSLContext._msg_callbackcsbˆdurtttƒj |d¡dStˆdƒstˆ›d�ƒ‚‡fdd„}ˆ|_tttƒj ||¡dS)NÚ__call__z is not callable.cs–zt|ƒ}Wn tyYnwzt|ƒ}Wn tyYnw|tjkr(t}n |tjkr0t}nt}z||ƒ}Wn tyAYnwˆ||||||ƒSr“)r8r�r>rGrFrHrg)ZconnZ directionÚversionZ content_typeZmsg_typeÚdataZmsg_enum©Úcallbackr,r-r ¯s.  ÿ  ÿ    ÿÿz'SSLContext._msg_callback..inner)r´rÄrrÿÚhasattrrìr )rÉrr r¹rr-r¦s  crûr“)r&r´rÆrür¹r,r-rÆÌrýzSSLContext.protocolcrûr“)r3r´Ú verify_flagsrür¹r,r-rÐrýzSSLContext.verify_flagscrr“)r´rÄrrÿrr¹r,r-rÔrcs*tƒj}zt|ƒWSty|YSwr“)r´Ú verify_moder4r�rr¹r,r-rØs   ÿzSSLContext.verify_modecrr“)r´rÄrrÿrr¹r,r-ràrr“)FTTNN)FNN)r9r:r;rør×rÚrµrÏrÙrÝrærírîrõrÁrÂrùrr ÚpropertyrúÚsetterrrþr<rrrÆrrrÀr,r,r¹r-rÄàsl   ý ÿ        &%rÄ)r°r±rïcCs¬ t|tƒs t|ƒ‚|tjkrttƒ}t|_d|_ n|tj kr$tt ƒ}nt |ƒ‚|s.|s.|r6|  |||¡n |jtkr@| |¡t|dƒrTtj d¡}|rTtjjsT||_|S)NTÚkeylog_filenameÚ SSLKEYLOGFILE)rËr²rìrÁrÂrÄÚPROTOCOL_TLS_CLIENTÚ CERT_REQUIREDrÚcheck_hostnamerÃÚPROTOCOL_TLS_SERVERr�rñÚ CERT_NONErùrrªr«ržröÚflagsÚignore_environmentr)rór°r±rïrÕÚ keylogfiler,r,r-Úcreate_default_contextås&          rF)Ú cert_reqsrróÚcertfileÚkeyfiler°r±rïc Csò t|tƒs t|ƒ‚|tjkr|durt}n|tjkr"|dur!t}nt|ƒ‚t |ƒ} || _ |dur4|| _ |r9d| _ |rA|sAtdƒ‚|sE|rK|   ||¡|sQ|sQ|rY|   |||¡n | j tkrc|  |¡t| dƒrwtj d¡} | rwtjjsw| | _| S)NTúcertfile must be specifiedrr)rËr²rìrÁrÂrrÃrr�rÄrrÚload_cert_chainrñrrùrrªr«ržrörrr) rÆr rrór!r"r°r±rïrÕrr,r,r-Ú_create_unverified_context s>  € €       r%c@söeZdZ dd„Ze  d1dd„ƒZedd„ƒZejd d„ƒZed d „ƒZ e jd d „ƒZ ed d„ƒZ edd„ƒZ edd„ƒZ d2dd„Z dd„Zd3dd„Zdd„Zdd„Zdd„Zd d!„Zd"d#„Zd$d%„Zd&d'„Zd(d)„Zd4d+d,„Zd-d.„Zd/d0„ZdS)5Ú SSLObjectcOót|jj›d�ƒ‚)NzU does not have a public constructor. Instances are returned by SSLContext.wrap_bio().©rìrºr9©rÉrÇrÈr,r,r-Ú__init__Xó ÿzSSLObject.__init__FNc Cs*| |¡}|j||||||d�}||_|S)N)rÑrÔÚownerrÖ)rµZ _wrap_bioÚ_sslobj) r·rÛrÜrÑrÔrÖrÕrÉrçr,r,r-rØ^s ýzSSLObject._createcCó |jjSr“©r-rÕrür,r,r-rÕjózSSLObject.contextcCó ||j_dSr“r/©rÉÚctxr,r,r-rÕorýcCr.r“©r-rÖrür,r,r-rÖsr0zSSLObject.sessioncCr1r“r4©rÉrÖr,r,r-rÖxrýcCr.r“©r-Úsession_reusedrür,r,r-r7|r0zSSLObject.session_reusedcCr.r“)r-rÑrür,r,r-rÑ�r0zSSLObject.server_sidecCr.r“)r-rÔrür,r,r-rÔ†szSSLObject.server_hostnameécCs, |dur|j ||¡}|S|j |¡}|Sr“)r-Úread)rÉr ÚbufferÚvr,r,r-r9Œs  ÿzSSLObject.readcCó |j |¡Sr“)r-Úwrite©rÉr r,r,r-r=˜s zSSLObject.writecCr<r“)r-Ú getpeercert©rÉZ binary_formr,r,r-r? s zSSLObject.getpeercertcCs tjdtdd�dS©NrÞrirß)r›rœr�rür,r,r-Úselected_npn_protocol©s  ýzSSLObject.selected_npn_protocolcCó |j ¡Sr“)r-Úselected_alpn_protocolrür,r,r-rD³ó z SSLObject.selected_alpn_protocolcCrCr“)r-Úcipherrür,r,r-rF¹ó zSSLObject.ciphercCrCr“)r-Úshared_ciphersrür,r,r-rH¾rEzSSLObject.shared_cipherscCrCr“)r-Ú compressionrür,r,r-rIÄrGzSSLObject.compressioncCrCr“)r-Úpendingrür,r,r-rJÉó zSSLObject.pendingcCs |j ¡dSr“)r-Ú do_handshakerür,r,r-rLÍszSSLObject.do_handshakecCrCr“)r-Úshutdownrür,r,r-ÚunwrapÑrKzSSLObject.unwrapr�cCr<r“)r-Úget_channel_binding©rÉZcb_typer,r,r-rOÕs zSSLObject.get_channel_bindingcCrCr“©r-r rür,r,r-r ÛrGzSSLObject.versioncCs |j ¡Sr“)r-Úverify_client_post_handshakerür,r,r-rRàs z&SSLObject.verify_client_post_handshake)FNNN©r8N©F©r�)r9r:r;r*r¿rØrrÕrrÖr7rÑrÔr9r=r?rBrDrFrHrIrJrLrNrOr rRr,r,r,r-r&IsF ÿ             r&cCs tt|jƒj|_|Sr“)Úgetattrr&r9Ú__doc__)Úfuncr,r,r-Ú _sslcopydocäsrYcseZdZ dd„Ze   dW‡fdd„ ƒZeedd „ƒƒZej d d „ƒZeed d „ƒƒZ e j d d „ƒZ eedd„ƒƒZ dd„Z dXdd„Z dd„ZdYdd„Zdd„ZedZdd„ƒZedd„ƒZedd „ƒZed!d"„ƒZed#d$„ƒZed%d&„ƒZd[‡fd(d)„ ZdX‡fd*d+„ Zd,d-„Zd[‡fd.d/„ Zd\‡fd0d1„ Zd]‡fd2d3„ Zd^‡fd4d5„ Zd]‡fd6d7„ Zd^‡fd8d9„ Zd:d;„Z dd?„ƒZ"‡fd@dA„Z#edBdC„ƒZ$edDdE„ƒZ%‡fdFdG„Z&edZdHdI„ƒZ'‡fdJdK„Z(dLdM„Z)dNdO„Z*‡fdPdQ„Z+ed_dSdT„ƒZ,edUdV„ƒZ-‡Z.S)`Ú SSLSocketcOr')NzX does not have a public constructor. Instances are returned by SSLContext.wrap_socket().r(r)r,r,r-r*ïr+zSSLSocket.__init__FTNc sX| tt¡tkr tdƒ‚|r|rtdƒ‚|durtdƒ‚|jr%|s%tdƒ‚t|j|j |j |  ¡d�}|j |fi|¤Ž} t t| ƒjdi|¤Ž| ¡} | ¡|| _|| _d| _d| _|| _| |¡| _|| _|| _z|  ¡Wnutyä} zi| jtjkr~‚d} |  ¡} |   d¡z|  !d¡}Wnty®} z| jtjtj"fvr¢‚d}WYd} ~ nd} ~ ww|   | ¡|rÚd }t#| j|ƒ}||_$d|_%z|  &¡Wn tyÓYnwz|‚d}wWYd} ~ nd} ~ wwd } |  '| ¡| | _(| �r*z(| jj)| || j| | jd �| _|�r|  ¡}|d k�rtd ƒ‚|  *¡W| SW| Sttf�y)|  &¡‚w| S)Nz!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ÚfilenoFrhóz5Closed before TLS handshake with data in recv buffer.T©r,rÖçzHdo_handshake_on_connect should not be specified for non-blocking socketsr,)+Z getsockoptr~rr|ÚNotImplementedErrorr�rÚdictr[r\r]r^rµr´rZr*Ú gettimeoutÚdetachÚ_contextÚ_sessionZ_closedr-rÑrÏrÔrÒrÓÚ getpeernamerŽÚerrnoZENOTCONNZ getblockingZ setblockingÚrecvZEINVALr ÚreasonZlibraryÚcloseÚ settimeoutÚ _connectedÚ _wrap_socketrL)r·rÐrÑrÒrÓrÔrÕrÖrÈrÉZ sock_timeoutÚeZ connectedZblockingZnotconn_pre_handshake_datarkZ notconn_pre_handshake_data_errorÚtimeoutr¹r,r-rØös   þ    €ü    ÿ ï€î% þ  ÷ ýþzSSLSocket._createcCs|jSr“)rfrür,r,r-rÕVszSSLSocket.contextcCs||_||j_dSr“)rfr-rÕr2r,r,r-rÕ[s cCó|jdur |jjSdSr“r4rür,r,r-rÖ`ó ÿzSSLSocket.sessioncCs ||_|jdur||j_dSdSr“)rgr-rÖr5r,r,r-rÖfs  ÿcCrrr“r6rür,r,r-r7lrszSSLSocket.session_reusedcCstd|jjƒ‚)NzCan't dup() %s instances)rbrºr9rür,r,r-Úduprsÿz SSLSocket.dupcCsdSr“r,)rÉÚmsgr,r,r-Ú _checkClosedvrzSSLSocket._checkClosedcCs|js | ¡dSdSr“)rnrhrür,r,r-Ú_check_connectedzs ûzSSLSocket._check_connectedr8c Cs– | ¡|jdurtdƒ‚z|dur|j ||¡WS|j |¡WStyJ}z|jdtkrE|jrE|dur>WYd}~dSWYd}~dS‚d}~ww)Nz'Read on closed or unwrapped SSL socket.rr_)rvr-r�r9r rÇZ SSL_ERROR_EOFrÓ)rÉr r:Úxr,r,r-r9‚s  €ùzSSLSocket.readcCs( | ¡|jdurtdƒ‚|j |¡S)Nz(Write on closed or unwrapped SSL socket.)rvr-r�r=r>r,r,r-r=—s   zSSLSocket.writecCs| ¡| ¡|j |¡Sr“)rvrwr-r?r@r,r,r-r? s zSSLSocket.getpeercertcCs| ¡tjdtdd�dSrA)rvr›rœr�rür,r,r-rB¦sýzSSLSocket.selected_npn_protocolcCs&| ¡|jdus tjsdS|j ¡Sr“)rvr-r<rrDrür,r,r-rD°s z SSLSocket.selected_alpn_protocolcCó | ¡|jdur dS|j ¡Sr“)rvr-rFrür,r,r-rF¸ó  zSSLSocket.ciphercCryr“)rvr-rHrür,r,r-rHÀrzzSSLSocket.shared_cipherscCryr“)rvr-rIrür,r,r-rIÈrzzSSLSocket.compressionrcsB| ¡|jdur|dkrtd|jƒ‚|j |¡Stƒ ||¡S)Nrz3non-zero flags not allowed in calls to send() on %s)rvr-r�rºr=r´Úsend)rÉr rr¹r,r-r{Ðs ÿÿ zSSLSocket.sendcsF| ¡|jdurtd|jƒ‚|durtƒ ||¡Stƒ |||¡S)Nz%sendto not allowed on instances of %s)rvr-r�rºr´Úsendto)rÉr Z flags_or_addrr‘r¹r,r-r|Ûs ÿzSSLSocket.sendtocOótd|jƒ‚)Nz&sendmsg not allowed on instances of %s©rbrºr)r,r,r-ÚsendmsgåsÿzSSLSocket.sendmsgc sÔ| ¡|jdurc|dkrtd|jƒ‚d}t|ƒ�?}| d¡�!}t|ƒ}||kr:| ||d…¡}||7}||ks)Wdƒn1sDwYWdƒdSWdƒdS1s\wYdStƒ  ||¡S)Nrz6non-zero flags not allowed in calls to sendall() on %sÚB) rvr-r�rºÚ memoryviewÚcastr r{r´Úsendall)rÉr rr…ZviewZ byte_viewZamountr;r¹r,r-rƒës$ ÿÿþ€PþzSSLSocket.sendallcs* |jdur | |||¡Stƒ |||¡Sr“)r-Z_sendfile_use_sendr´Úsendfile)rÉÚfileÚoffsetr…r¹r,r-r„ûs zSSLSocket.sendfilecs@| ¡|jdur|dkrtd|jƒ‚| |¡Stƒ ||¡S)Nrz3non-zero flags not allowed in calls to recv() on %s)rvr-r�rºr9r´rj©rÉZbuflenrr¹r,r-rjs ÿÿ zSSLSocket.recvcsf| ¡|r|durt|ƒ}n|durd}|jdur+|dkr%td|jƒ‚| ||¡Stƒ |||¡S)Nr8rz8non-zero flags not allowed in calls to recv_into() on %s)rvr r-r�rºr9r´Ú recv_into©rÉr:Únbytesrr¹r,r-rˆs   ÿÿ zSSLSocket.recv_intocs.| ¡|jdurtd|jƒ‚tƒ ||¡S)Nz'recvfrom not allowed on instances of %s)rvr-r�rºr´Úrecvfromr‡r¹r,r-r‹s  ÿzSSLSocket.recvfromcs0| ¡|jdurtd|jƒ‚tƒ |||¡S)Nz,recvfrom_into not allowed on instances of %s)rvr-r�rºr´Ú recvfrom_intor‰r¹r,r-rŒ's  ÿzSSLSocket.recvfrom_intocOr})Nz&recvmsg not allowed on instances of %sr~r)r,r,r-Úrecvmsg/óÿzSSLSocket.recvmsgcOr})Nz+recvmsg_into not allowed on instances of %sr~r)r,r,r-Ú recvmsg_into3rŽzSSLSocket.recvmsg_intocCs | ¡|jdur|j ¡SdS©Nr)rvr-rJrür,r,r-rJ7s  zSSLSocket.pendingcs| ¡d|_tƒ |¡dSr“)rvr-r´rM)rÉZhowr¹r,r-rM?szSSLSocket.shutdowncCs*|jr |j ¡}d|_|Stdt|ƒƒ‚©NzNo SSL wrapper around )r-rMr�rÌ)rÉÚsr,r,r-rNDs  zSSLSocket.unwrapcCs |jr|j ¡Stdt|ƒƒ‚r‘)r-rRr�rÌrür,r,r-rRMs z&SSLSocket.verify_client_post_handshakecsd|_tƒ ¡dSr“)r-r´Ú _real_closerür¹r,r-r“TszSSLSocket._real_closec CsN| ¡| ¡}z|dkr|r| d¡|j ¡W| |¡dS| |¡w)Nra)rwrdrmr-rL)rÉÚblockrqr,r,r-rLXs   zSSLSocket.do_handshakec sž|jrtdƒ‚|js|jdurtdƒ‚|jj|d|j||jd�|_z |r+tƒ  |¡}nd}tƒ  |¡|s?d|_|j r?|  ¡|WSt tfyNd|_‚w)Nz!can't connect in server-side modez/attempt to connect already-connected SSLSocket!Fr`T)rÑr�rnr-rÕrorÔrgr´Ú connect_exÚconnectrÒrLrŽ)rÉr‘r•Zrcr¹r,r-Ú _real_connectcs,þ þzSSLSocket._real_connectcCs | |d¡dS)NF©r—©rÉr‘r,r,r-r–}szSSLSocket.connectcCs | |d¡Srr˜r™r,r,r-r•‚s zSSLSocket.connect_excs0 tƒ ¡\}}|jj||j|jdd�}||fS)NT)rÒrÓrÑ)r´ÚacceptrÕrÙrÒrÓ)rÉZnewsockr‘r¹r,r-rš‡sýzSSLSocket.acceptr�cCs0|jdur |j |¡S|tvrtd |¡ƒ‚dS)Nz({0} channel binding type not implemented)r-rOÚCHANNEL_BINDING_TYPESr�rˆrPr,r,r-rO“s  ÿzSSLSocket.get_channel_bindingcCs|jdur |j ¡SdSr“rQrür,r,r-r žs  zSSLSocket.version)FTTNNNr“rSrT)r)rN)r8rr�rU)/r9r:r;r*r¿rØrrYrÕrrÖr7rtrvrwr9r=r?rBrDrFrHrIr{r|rrƒr„rjrˆr‹rŒr�r�rJrMrNrRr“rLr—r–r•ršrOr rÀr,r,r¹r-rZês†þ_                           rZTc Cs|tjdtdd�|r|stdƒ‚|r|stdƒ‚t|ƒ} || _|r&|  |¡|r.|  ||¡| r5|  | ¡| j ||||d�S)Nz=ssl.wrap_socket() is deprecated, use SSLContext.wrap_socket()rir—z5certfile must be specified for server-side operationsr#)rÐrÑrÒrÓ) r›rœr�r�rÄrrñr$Z set_ciphersrÙ) rÐr"r!rÑr Ú ssl_versionÚca_certsrÒrÓZciphersrÕr,r,r-rÙ«s,ý   ýrÙcCsŽ ddlm}ddlm}d}d}z| |dd… ¡¡d}Wnty/td||fƒ‚w||dd…|ƒ}||d|f|d d …ƒS) Nr)Ústrptime)Útimegm) ZJanZFebZMarZAprZMayZJunZJulZAugZSepZOctZNovZDecz %d %H:%M:%S %Y GMTrjrhz*time data %r does not match format "%%b%s"rirm)ÚtimeržZcalendarrŸÚindexÚtitler�)Z cert_timeržrŸZmonthsZ time_formatZ month_numberZttr,r,r-Úcert_time_to_secondsËs  ÿÿr£z-----BEGIN CERTIFICATE-----z-----END CERTIFICATE-----csT tt |¡ddƒ‰tg}|‡fdd„tdtˆƒdƒDƒ7}| td¡d |¡S)NÚASCIIÚstrictcsg|] }ˆ||d…‘qS)é@r,)r5Úi©Úfr,r-Ú òsz(DER_cert_to_PEM_cert..rr¦Ú ) rÌÚbase64Zstandard_b64encodeÚ PEM_HEADERÚranger rŸÚ PEM_FOOTERr¡)Zder_cert_bytesZssr,r¨r-ÚDER_cert_to_PEM_certìs " r°cCs^ | t¡s tdtƒ‚| ¡ t¡stdtƒ‚| ¡ttƒttƒ …}t |  dd¡¡S)Nz(Invalid PEM encoding; must start with %sz&Invalid PEM encoding; must end with %sr¤r¥) r)r­r�ÚstripÚendswithr¯r r¬Z decodebytesrÍ)Zpem_cert_stringÚdr,r,r-ÚPEM_cert_to_DER_certös ÿÿr´c Cs° |\}}|dur t}nt}t|||d�}t||d��1}|j||d�� } |  d¡} Wdƒn1s3wYWdƒt| ƒSWdƒt| ƒS1sOwYt| ƒS)N)r r°)rq)rÔT)rrÚ_create_stdlib_contextr}rÙr?r°) r‘rœr�rqZhostZportr rÕrÐZsslsockZdercertr,r,r-Úget_server_certificates(þ ÿ ÿþ ÿýr¶cCs t |d¡S)Nz )Ú_PROTOCOL_NAMESrž)Z protocol_coder,r,r-Úget_protocol_names r¸r“)nrörªÚ collectionsrÚenumrZ_EnumrZ_IntEnumrZ_IntFlagr<rrrr r r r r rrrrrrr¶rr»rrrrrÚ ImportErrorrrrrrrr r!r"r#r$r%Ú _convert_r9r&rÅr'Ú __members__Úitemsr·rVZ_SSLv2_IF_EXISTSr8r>rHrgr÷ryrzr{r|r}r~rr€r�r¬rir›rŽZ socket_errorr›rZHAS_NEVER_CHECK_COMMON_NAMEZ_RESTRICTED_SERVER_CIPHERSr‡rŒr’r–r§r¨r©r²rÁrÄrÂrrr%Z_create_default_https_contextrµr&rYrZr×rÚrÙr£r­r¯r°r´rr¶r¸r,r,r,r-ÚsèZ $ þ0ýýýýýý   )  1# >ÿ ÿ& ý7@ û    ÿ