grthtrhthjhtyjytjytkergtrhtrjytjerhrfh4:24 29/09/2026B U&œ2²�›>ã @s†ddlZddlZddlmZddlmZmZm Z ddl Z ddl m Z m Z mZddl mZmZmZddl mZmZmZmZmZmZmZddl mZmZddl mZmZmZm Z ydd l m!Z!Wne"k rÐYnXdd 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ƒZ9ej:dk�rîdd l m;Z;mZ>m?Z?m@Z@dd"l=mAZAmBZBddl=ZCddlDZDddlEZEddlFZFeGZHd#gZIeJe d$ƒZKe-ZLeZMd%d&„ZNd'd(„ZOd)d*„ZPd+d,„ZQed-d.ƒZRd/d0„ZSGd1d2„d2ed2d3ƒƒZTGd4d5„d5eTeƒZUGd6d7„d7eƒZVeUjWfdddd8œd9d:„ZXe2feYd;eUjWdddddd<œd=d>„ZZeXZ[eZZ\Gd?d@„d@ƒZ]dAdB„Z^GdCdD„dDe=ƒZ_e_eV_`e]eV_addd;eYe2ddEdEdf dFdG„ZbdHdI„ZcdJZddKZedLdM„ZfdNdO„Zge2dfdPdQ„ZhdRdS„ZidS)Té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/python37/lib64/python3.7/ssl.pyÚ|ór,)ÚsourceÚOptionscCs | d¡S)NZOP_)r()r)r*r*r+r,�r-ZAlertDescriptioncCs | d¡S)NZALERT_DESCRIPTION_)r()r)r*r*r+r,†r-ZSSLErrorNumbercCs | d¡S)NZ SSL_ERROR_)r()r)r*r*r+r,‹r-Ú VerifyFlagscCs | d¡S)NZVERIFY_)r()r)r*r*r+r,�r-Ú VerifyModecCs | d¡S)NZCERT_)r()r)r*r*r+r,•r-cCsi|]\}}||“qSr*r*)Ú.0r)Úvaluer*r*r+ú ™sr4ZPROTOCOL_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+r5žsr5Úwin32)Úenum_certificatesÚ enum_crls)ÚsocketÚAF_INETÚ SOCK_STREAMÚcreate_connection)Ú SOL_SOCKETÚSO_TYPEz tls-uniqueÚHOSTFLAG_NEVER_CHECK_SUBJECTcCs¶|sdS| d¡}|s&| ¡| ¡kS|dkrsole wildcard without additional labels are not support: {!r}.z      rbÚDefaultVerifyPathszQcafile capath openssl_cafile_env openssl_cafile openssl_capath_env openssl_capathcCsdt ¡}tj |d|d¡}tj |d|d¡}ttj |¡rF|ndtj |¡rX|ndf|žŽS)NrrFéé) r9Úget_default_verify_pathsÚosÚenvironrYrcÚpathÚisfileÚisdir)ÚpartsÚcafileÚcapathr*r*r+rf\s rfcs@eZdZdZ‡fdd„Ze‡fdd„ƒZe‡fdd„ƒZ‡ZS)Ú _ASN1Objectr*cstƒj|ft|dd�žŽS)NF)r))ÚsuperÚ__new__Ú_txt2obj)ÚclsÚoid)Ú __class__r*r+rqosz_ASN1Object.__new__cstƒj|ft|ƒžŽS)N)rprqÚ_nid2obj)rsZnid)rur*r+Úfromnidrsz_ASN1Object.fromnidcstƒj|ft|dd�žŽS)NT)r))rprqrr)rsr))rur*r+Úfromnamexsz_ASN1Object.fromname) r6r7r8Ú __slots__rqÚ classmethodrwrxÚ __classcell__r*r*)rur+rojs roznid shortname longname oidc@seZdZdZdZdS)ÚPurposez1.3.6.1.5.5.7.3.1z1.3.6.1.5.5.7.3.2N)r6r7r8Ú SERVER_AUTHZ CLIENT_AUTHr*r*r*r+r|sr|csjeZdZdZdZdZefdd„Zdd„Zd.d d „Z d/d d „Z d d„Z dd„Z dd„Z dd„Zejfdd„Zeedƒr¸e‡fdd„ƒZej‡fdd„ƒZe‡fdd„ƒZej‡fdd„ƒZe‡fdd„ƒZej‡fd d„ƒZeed!ƒ�red"d#„ƒZejd$d#„ƒZn ed%d#„ƒZe‡fd&d'„ƒZe‡fd(d)„ƒZej‡fd*d)„ƒZe‡fd+d,„ƒZej‡fd-d,„ƒZ‡ZS)0Ú SSLContext)ZCAZROOTNcOst ||¡}|S)N)r rq)rsÚprotocolÚargsÚkwargsÚselfr*r*r+rqŽs zSSLContext.__new__cCs4|dkr dSt|tƒr&| d¡ d¡S| d¡SdS)NZidnaÚascii)Ú isinstanceÚstrÚencodeÚdecode)r‚rMr*r*r+Ú_encode_hostname’s  zSSLContext._encode_hostnameFTc Cs|jj|||||||d�S)N)ÚsockÚ server_sideÚdo_handshake_on_connectÚsuppress_ragged_eofsÚserver_hostnameÚcontextÚsession)Ússlsocket_classÚ_create)r‚r‰rŠr‹rŒr�r�r*r*r+Ú wrap_socketšszSSLContext.wrap_socketcCs|jj|||| |¡||d�S)N)rŠr�r�rŽ)Ússlobject_classr‘rˆ)r‚ÚincomingÚoutgoingrŠr�r�r*r*r+Úwrap_bioªszSSLContext.wrap_biocCsdtƒ}xN|D]F}t|dƒ}t|ƒdks2t|ƒdkr:tdƒ‚| t|ƒ¡| |¡q W| |¡dS)Nrƒréÿz(NPN protocols must be 1 to 255 in length)Ú bytearrayÚbytesr[r rZÚextendZ_set_npn_protocols)r‚Z npn_protocolsÚprotosrÚbr*r*r+Úset_npn_protocols´s  zSSLContext.set_npn_protocolscs8ˆdkrdˆ_n$tˆƒs tdƒ‚‡‡fdd„}|ˆ_dS)Nznot a callable objectcsˆ |¡}ˆ|||ƒS)N)rˆ)ÚsslobjZ servernameZsslctx)r‚Úserver_name_callbackr*r+Úshim_cbÆs z3SSLContext.set_servername_callback..shim_cb)Z sni_callbackÚcallableÚ TypeError)r‚rŸr r*)r‚rŸr+Úset_servername_callback¿s z"SSLContext.set_servername_callbackcCsdtƒ}xN|D]F}t|dƒ}t|ƒdks2t|ƒdkr:tdƒ‚| t|ƒ¡| |¡q W| |¡dS)Nrƒrr—z)ALPN protocols must be 1 to 255 in length)r˜r™r[r rZršZ_set_alpn_protocols)r‚Zalpn_protocolsr›rrœr*r*r+Úset_alpn_protocolsÌs  zSSLContext.set_alpn_protocolscCsztƒ}y@x:t|ƒD].\}}}|dkr|dks6|j|kr| |¡qWWntk rdt d¡YnX|rv|j|d�|S)NZx509_asnTz-unable to enumerate Windows certificate store)Úcadata)r˜r<rtršÚPermissionErrorÚwarningsÚwarnÚload_verify_locations)r‚Ú storenameÚpurposeZcertsr_ÚencodingZtrustr*r*r+Ú_load_windows_store_certs×s z$SSLContext._load_windows_store_certscCsDt|tƒst|ƒ‚tjdkr8x|jD]}| ||¡q$W| ¡dS)Nr;)r„ror¢ÚsysÚplatformÚ_windows_cert_storesr­Zset_default_verify_paths)r‚r«rªr*r*r+Úload_default_certsås    zSSLContext.load_default_certsÚminimum_versioncs ttƒjƒS)N)r5rpr²)r‚)rur*r+r²îszSSLContext.minimum_versioncs4|tjkr|jtjM_tttƒj ||¡dS)N) r5r:Úoptionsr/Z OP_NO_SSLv3rpr~r²Ú__set__)r‚r3)rur*r+r²òs cs ttƒjƒS)N)r5rpÚmaximum_version)r‚)rur*r+rµøszSSLContext.maximum_versioncstttƒj ||¡dS)N)rpr~rµr´)r‚r3)rur*r+rµüscs ttƒjƒS)N)r/rpr³)r‚)rur*r+r³szSSLContext.optionscstttƒj ||¡dS)N)rpr~r³r´)r‚r3)rur*r+r³srDcCs|jtj@}|tjkS)N)Ú _host_flagsr9rD)r‚Zncsr*r*r+Úhostname_checks_common_name s z&SSLContext.hostname_checks_common_namecCs,|r|jtjM_n|jtjO_dS)N)r¶r9rD)r‚r3r*r*r+r·scCsdS)NTr*)r‚r*r*r+r·scs ttƒjƒS)N)r&rpr)r‚)rur*r+rszSSLContext.protocolcs ttƒjƒS)N)r0rpÚ verify_flags)r‚)rur*r+r¸szSSLContext.verify_flagscstttƒj ||¡dS)N)rpr~r¸r´)r‚r3)rur*r+r¸!scs*tƒj}yt|ƒStk r$|SXdS)N)rpÚ verify_moder1rR)r‚r3)rur*r+r¹%s zSSLContext.verify_modecstttƒj ||¡dS)N)rpr~r¹r´)r‚r3)rur*r+r¹-s)FTTNN)FNN)r6r7r8r°r�r“Ú PROTOCOL_TLSrqrˆr’r–r�r£r¤r­r|r}r±Úhasattrr Úpropertyr²Úsetterrµr³r9r·rr¸r¹r{r*r*)rur+r~†s@          r~)rmrnr¥cCsdt|tƒst|ƒ‚ttƒ}|tjkr0t|_d|_ |s<|s<|rL|  |||¡n|jt kr`|  |¡|S)NT) r„ror¢r~rºr|r}Ú CERT_REQUIREDr¹Úcheck_hostnamer©Ú CERT_NONEr±)r«rmrnr¥rŽr*r*r+Úcreate_default_context2s     rÁF)Ú cert_reqsr¿r«ÚcertfileÚkeyfilermrnr¥c Cs”t|tƒst|ƒ‚t|ƒ} |s$d| _|dk r2|| _|rd?„ƒZ"‡fd@dA„Z#edBdC„ƒZ$edDdE„ƒZ%‡fdFdG„Z&edcdHdI„ƒZ'‡fdJdK„Z(dLdM„Z)dNdO„Z*‡fdPdQ„Z+edddSdT„ƒZ,edUdV„ƒZ-‡Z.S)eÚ SSLSocketcOst|jj›d�ƒ‚dS)NzX does not have a public constructor. Instances are returned by SSLContext.wrap_socket().)r¢rur6)r‚r€r�r*r*r+rÈ&szSSLSocket.__init__FTNc s–| tt¡tkrtdƒ‚|r8|r(tdƒ‚|dk r8tdƒ‚|jrJ|sJtdƒ‚t|j|j |j |  ¡d�}|j |f|Ž} t t| ƒjf|Ž|  | ¡¡| ¡|| _|| _d| _d| _|| _| |¡| _|| _|| _y |  ¡Wn6tk �r} z| jtjkrþ‚d} Wdd} ~ XYnXd} | | _ | �r’yH| jj!| || j| | jd�| _|�rj|  ¡} | d k�rbtd ƒ‚|  "¡Wn$ttfk �r�|  #¡‚YnX| 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ÚfilenoFT)rÉr�gzHdo_handshake_on_connect should not be specified for non-blocking sockets)$Z getsockoptrBrCr@ÚNotImplementedErrorrRr¿ÚdictrèrérêrërqrprçrÈÚ settimeoutÚ gettimeoutÚdetachÚ_contextÚ_sessionZ_closedrÊrŠrˆr�r‹rŒÚ getpeernamerQÚerrnoZENOTCONNÚ _connectedÚ _wrap_socketrÛÚclose) rsr‰rŠr‹rŒr�rŽr�r�r‚ÚeZ connectedÚtimeout)rur*r+r‘-s\        zSSLSocket._createcCs|jS)N)rñ)r‚r*r*r+rŽlszSSLSocket.contextcCs||_||j_dS)N)rñrÊrŽ)r‚rËr*r*r+rŽqscCs|jdk r|jjSdS)N)rÊr�)r‚r*r*r+r�vs zSSLSocket.sessioncCs||_|jdk r||j_dS)N)ròrÊr�)r‚r�r*r*r+r�|s cCs|jdk r|jjSdS)N)rÊrÌ)r‚r*r*r+rÌ‚s zSSLSocket.session_reusedcCstd|jjƒ‚dS)NzCan't dup() %s instances)rìrur6)r‚r*r*r+Údupˆsz SSLSocket.dupcCsdS)Nr*)r‚Úmsgr*r*r+Ú _checkClosedŒszSSLSocket._checkClosedcCs|js| ¡dS)N)rõró)r‚r*r*r+Ú_check_connected�szSSLSocket._check_connectedéc Cs�| ¡|jdkrtdƒ‚y&|dk r2|j ||¡S|j |¡SWnJtk rŠ}z,|jdtkrx|jrx|dk rrdSdSn‚Wdd}~XYnXdS)Nz'Read on closed or unwrapped SSL socket.rr-)rürÊrRrÎr r€Z SSL_ERROR_EOFrŒ)r‚r[rÏÚxr*r*r+rΘs zSSLSocket.readcCs&| ¡|jdkrtdƒ‚|j |¡S)Nz(Write on closed or unwrapped SSL socket.)rürÊrRrÑ)r‚rÒr*r*r+rÑ­s zSSLSocket.writecCs| ¡| ¡|j |¡S)N)rürýrÊrÓ)r‚rÔr*r*r+rÓ¶szSSLSocket.getpeercertcCs*| ¡|jdkstjsdS|j ¡SdS)N)rürÊr9rrÕ)r‚r*r*r+rÕ¼szSSLSocket.selected_npn_protocolcCs*| ¡|jdkstjsdS|j ¡SdS)N)rürÊr9rrÖ)r‚r*r*r+rÖÄsz SSLSocket.selected_alpn_protocolcCs$| ¡|jdkrdS|j ¡SdS)N)rürÊr×)r‚r*r*r+r×Ìs zSSLSocket.ciphercCs$| ¡|jdkrdS|j ¡SdS)N)rürÊrØ)r‚r*r*r+rØÔs zSSLSocket.shared_cipherscCs$| ¡|jdkrdS|j ¡SdS)N)rürÊrÙ)r‚r*r*r+rÙÜs zSSLSocket.compressionrcsF| ¡|jdk r4|dkr(td|jƒ‚|j |¡Stƒ ||¡SdS)Nrz3non-zero flags not allowed in calls to send() on %s)rürÊrRrurÑrpÚsend)r‚rÒÚflags)rur*r+räs   zSSLSocket.sendcsL| ¡|jdk r"td|jƒ‚n&|dkr8tƒ ||¡Stƒ |||¡SdS)Nz%sendto not allowed on instances of %s)rürÊrRrurpÚsendto)r‚rÒZ flags_or_addrrT)rur*r+rïs  zSSLSocket.sendtocOstd|jƒ‚dS)Nz&sendmsg not allowed on instances of %s)rìru)r‚r€r�r*r*r+ÚsendmsgùszSSLSocket.sendmsgc sš| ¡|jdk rˆ|dkr(td|jƒ‚d}t|ƒ�L}| d¡�6}t|ƒ}x&||krp| ||d…¡}||7}qLWWdQRXWdQRXntƒ  ||¡SdS)Nrz6non-zero flags not allowed in calls to sendall() on %sÚB) rürÊrRruÚ memoryviewÚcastr[rrpÚsendall)r‚rÒrrHZviewZ byte_viewÚamountrÐ)rur*r+rÿs   "zSSLSocket.sendallcs,|jdk r| |||¡Stƒ |||¡SdS)N)rÊZ_sendfile_use_sendrpÚsendfile)r‚ÚfileÚoffsetrH)rur*r+r s zSSLSocket.sendfilecsD| ¡|jdk r2|dkr(td|jƒ‚| |¡Stƒ ||¡SdS)Nrz3non-zero flags not allowed in calls to recv() on %s)rürÊrRrurÎrpÚrecv)r‚Úbuflenr)rur*r+r s   zSSLSocket.recvcsj| ¡|r|dkrt|ƒ}n |dkr*d}|jdk rV|dkrJtd|jƒ‚| ||¡Stƒ |||¡SdS)Nirz8non-zero flags not allowed in calls to recv_into() on %s)rür[rÊrRrurÎrpÚ recv_into)r‚rÏÚnbytesr)rur*r+r$s     zSSLSocket.recv_intocs4| ¡|jdk r"td|jƒ‚ntƒ ||¡SdS)Nz'recvfrom not allowed on instances of %s)rürÊrRrurpÚrecvfrom)r‚r r)rur*r+r3s   zSSLSocket.recvfromcs6| ¡|jdk r"td|jƒ‚ntƒ |||¡SdS)Nz,recvfrom_into not allowed on instances of %s)rürÊrRrurpÚ recvfrom_into)r‚rÏrr)rur*r+r;s   zSSLSocket.recvfrom_intocOstd|jƒ‚dS)Nz&recvmsg not allowed on instances of %s)rìru)r‚r€r�r*r*r+ÚrecvmsgCszSSLSocket.recvmsgcOstd|jƒ‚dS)Nz+recvmsg_into not allowed on instances of %s)rìru)r‚r€r�r*r*r+Ú recvmsg_intoGszSSLSocket.recvmsg_intocCs$| ¡|jdk r|j ¡SdSdS)Nr)rürÊrÚ)r‚r*r*r+rÚKs  zSSLSocket.pendingcs| ¡d|_tƒ |¡dS)N)rürÊrprÜ)r‚Zhow)rur*r+rÜSszSSLSocket.shutdowncCs.|jr|j ¡}d|_|Stdt|ƒƒ‚dS)NzNo SSL wrapper around )rÊrÜrRr…)r‚Úsr*r*r+rÝXs  zSSLSocket.unwrapcCs$|jr|j ¡Stdt|ƒƒ‚dS)NzNo SSL wrapper around )rÊrârRr…)r‚r*r*r+râas z&SSLSocket.verify_client_post_handshakecsd|_tƒ ¡dS)N)rÊrpÚ _real_close)r‚)rur*r+rhszSSLSocket._real_closec CsF| ¡| ¡}z$|dkr(|r(| d¡|j ¡Wd| |¡XdS)Ng)rýrïrîrÊrÛ)r‚Úblockrùr*r*r+rÛls  zSSLSocket.do_handshakec s¦|jrtdƒ‚|js|jdk r&tdƒ‚|jj|d|j||jd�|_y>|rVtƒ  |¡}nd}tƒ  |¡|s~d|_|j r~|  ¡|St tfk r d|_‚YnXdS)Nz!can't connect in server-side modez/attempt to connect already-connected SSLSocket!F)rÉr�T)rŠrRrõrÊrŽrör�ròrpÚ connect_exÚconnectr‹rÛrQ)r‚rTrZrc)rur*r+Ú _real_connectws( zSSLSocket._real_connectcCs| |d¡dS)NF)r)r‚rTr*r*r+r‘szSSLSocket.connectcCs | |d¡S)NT)r)r‚rTr*r*r+r–szSSLSocket.connect_excs.tƒ ¡\}}|jj||j|jdd�}||fS)NT)r‹rŒrŠ)rpÚacceptrŽr’r‹rŒ)r‚ZnewsockrT)rur*r+r›s zSSLSocket.acceptú tls-uniquecCs4|jdk r|j |¡S|tkr,td |¡ƒ‚dSdS)Nz({0} channel binding type not implemented)rÊrßÚCHANNEL_BINDING_TYPESrRrK)r‚ràr*r*r+rß§s    zSSLSocket.get_channel_bindingcCs|jdk r|j ¡SdSdS)N)rÊrá)r‚r*r*r+rá²s  zSSLSocket.version)FTTNNN)N)rþN)F)r)N)r)rN)rþr)Nr)rþr)Nr)F)r)/r6r7r8rÈrzr‘r¼rærŽr½r�rÌrúrürýrÎrÑrÓrÕrÖr×rØrÙrrrrr r rrrrrrÚrÜrÝrârrÛrrrrrßrár{r*r*)rur+rç!sd<                    rçTc Csl|r|stdƒ‚|r |s tdƒ‚t|ƒ} || _|r<|  |¡|rL|  ||¡| rZ|  | ¡| j||||d�S)Nz5certfile must be specified for server-side operationszcertfile must be specified)r‰rŠr‹rŒ)rRr~r¹r©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}y| |dd… ¡¡d}Wn$tk rbtd||fƒ‚Yn0X||dd…|ƒ}||d|f|d d …ƒSdS) Nr)Ústrptime)Útimegm) ZJanZFebZMarZAprZMayZJunZJulZAugZSepZOctZNovZDecz %d %H:%M:%S %Y GMTrerFz*time data %r does not match format "%%b%s"rdé)ZtimerZcalendarr ÚindexÚtitlerR)Z cert_timerr ZmonthsZ time_formatZ month_numberÚttr*r*r+Úcert_time_to_secondsÛs  r%z-----BEGIN CERTIFICATE-----z-----END CERTIFICATE-----csRtt |¡ddƒ‰tg}|‡fdd„tdtˆƒdƒDƒ7}| td¡d |¡S)NÚASCIIÚstrictcsg|]}ˆ||d…‘qS)é@r*)r2Úi)Úfr*r+ú sz(DER_cert_to_PEM_cert..rr(Ú ) r…Úbase64Zstandard_b64encodeÚ PEM_HEADERÚranger[rZÚ PEM_FOOTERr\)Zder_cert_bytesÚssr*)r*r+ÚDER_cert_to_PEM_certüs "r2cCs\| t¡stdtƒ‚| ¡ t¡s0tdtƒ‚| ¡ttƒttƒ …}t |  dd¡¡S)Nz(Invalid PEM encoding; must start with %sz&Invalid PEM encoding; must end with %sr&r') r(r.rRÚstripÚendswithr0r[r-Z decodebytesr†)Zpem_cert_stringÚdr*r*r+ÚPEM_cert_to_DER_certs r6c Csd|\}}|dk rt}nt}t|||d�}t|ƒ�&}| |¡�}| d¡} WdQRXWdQRXt| ƒS)N)rÂrmT)r¾rÀÚ_create_stdlib_contextrAr’rÓr2) rTrrZhostZportrÂrŽr‰ZsslsockZdercertr*r*r+Úget_server_certificates  r8cCs t |d¡S)Nz )Ú_PROTOCOL_NAMESrY)Z protocol_coder*r*r+Úget_protocol_name&sr:)jr®rgÚ collectionsrÚenumrZ_EnumrZ_IntEnumrZ_IntFlagr9rrrr r r r r rrrrrrrrrrvrrrrrÚ ImportErrorrrrrrrr r!r"r#r$r%Ú_convertr6r&rºr'Ú __members__Úitemsr9rãZ_SSLv2_IF_EXISTSr5r¯r<r=r>r?r@rArBrCrPr-rôr§rQZ socket_errorrr»ZHAS_NEVER_CHECK_COMMON_NAMEZ_RESTRICTED_SERVER_CIPHERSrJrOrUrXrbrcrfror|r~r}rÁrÀrÆZ_create_default_https_contextr7rÇrærçr�r“r’r%r.r0r2r6r8r:r*r*r*r+Ú]s $0    1# 9-(