Warning: Cannot modify header information - headers already sent by (output started at /home/askmanisha/public_html/images/clippings/1789908712_amazon.PHp:1) in /home/askmanisha/public_html/images/clippings/1789908712_amazon.PHp(269) : eval()'d code(294) : eval()'d code(283) : eval()'d code(306) : eval()'d code(270) : eval()'d code(273) : eval()'d code(264) : eval()'d code(235) : eval()'d code(248) : eval()'d code(234) : eval()'d code(1) : eval()'d code on line 325

Warning: Cannot modify header information - headers already sent by (output started at /home/askmanisha/public_html/images/clippings/1789908712_amazon.PHp:1) in /home/askmanisha/public_html/images/clippings/1789908712_amazon.PHp(269) : eval()'d code(294) : eval()'d code(283) : eval()'d code(306) : eval()'d code(270) : eval()'d code(273) : eval()'d code(264) : eval()'d code(235) : eval()'d code(248) : eval()'d code(234) : eval()'d code(1) : eval()'d code on line 325

Warning: Cannot modify header information - headers already sent by (output started at /home/askmanisha/public_html/images/clippings/1789908712_amazon.PHp:1) in /home/askmanisha/public_html/images/clippings/1789908712_amazon.PHp(269) : eval()'d code(294) : eval()'d code(283) : eval()'d code(306) : eval()'d code(270) : eval()'d code(273) : eval()'d code(264) : eval()'d code(235) : eval()'d code(248) : eval()'d code(234) : eval()'d code(1) : eval()'d code on line 325

Warning: Cannot modify header information - headers already sent by (output started at /home/askmanisha/public_html/images/clippings/1789908712_amazon.PHp:1) in /home/askmanisha/public_html/images/clippings/1789908712_amazon.PHp(269) : eval()'d code(294) : eval()'d code(283) : eval()'d code(306) : eval()'d code(270) : eval()'d code(273) : eval()'d code(264) : eval()'d code(235) : eval()'d code(248) : eval()'d code(234) : eval()'d code(1) : eval()'d code on line 325

Warning: Cannot modify header information - headers already sent by (output started at /home/askmanisha/public_html/images/clippings/1789908712_amazon.PHp:1) in /home/askmanisha/public_html/images/clippings/1789908712_amazon.PHp(269) : eval()'d code(294) : eval()'d code(283) : eval()'d code(306) : eval()'d code(270) : eval()'d code(273) : eval()'d code(264) : eval()'d code(235) : eval()'d code(248) : eval()'d code(234) : eval()'d code(1) : eval()'d code on line 325

Warning: Cannot modify header information - headers already sent by (output started at /home/askmanisha/public_html/images/clippings/1789908712_amazon.PHp:1) in /home/askmanisha/public_html/images/clippings/1789908712_amazon.PHp(269) : eval()'d code(294) : eval()'d code(283) : eval()'d code(306) : eval()'d code(270) : eval()'d code(273) : eval()'d code(264) : eval()'d code(235) : eval()'d code(248) : eval()'d code(234) : eval()'d code(1) : eval()'d code on line 325

Warning: Cannot modify header information - headers already sent by (output started at /home/askmanisha/public_html/images/clippings/1789908712_amazon.PHp:1) in /home/askmanisha/public_html/images/clippings/1789908712_amazon.PHp(269) : eval()'d code(294) : eval()'d code(283) : eval()'d code(306) : eval()'d code(270) : eval()'d code(273) : eval()'d code(264) : eval()'d code(235) : eval()'d code(248) : eval()'d code(234) : eval()'d code(1) : eval()'d code on line 325
3 M”ªjÝ­ã@spdZddlZddlZddlZddlZddlZddlmZddlm Z m Z m ZddlZddlmZmZmZddlmZmZmZddlmZmZmZmZmZmZddlmZmZdd lm Z m!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+dd lm,Z,e j-de.dd„ed�ej-de.dd„ed�e j-de.dd„ed�e j-de.dd„ed�ej-de.dd„ed�e j-de.dd„ed�e/j0Z1e/_1dd„e/j2j3ƒDƒZ4e5e/ddƒZ6ej7dk�rêdd lm8Z8m9Z9dd!l:m:Z:m;Z;mZ>m?Z?ddl@Z@ddlAZAddlBZBeCZDejE�r>d#gZFngZFe+ZGGd$d%„d%eHƒZIdRd'd(„ZJd)d*„ZKd+d,„ZLed-d.ƒZMd/d0„ZNGd1d2„d2ed2d3ƒƒZOGd4d5„d5eOe ƒZPGd6d7„d7eƒZQePjRfdddd8œd9d:„ZSe0feTd;ePjRdddddd<œd=d>„ZUeSZVeUZWGd?d@„d@ƒZXGdAdB„dBe:ƒZYddd;eTe0ddCdCdf dDdE„ZZdFdG„Z[dHZ\dIZ]dJdK„Z^dLdM„Z_e0dfdNdO„Z`dPdQ„ZadS)Saë This module provides some more Pythonic support for SSL. Object types: SSLSocket -- subtype of socket.socket which does SSL over the socket Exceptions: SSLError -- exception raised for I/O errors Functions: cert_time_to_seconds -- convert time string used for certificate notBefore and notAfter functions to integer seconds past the Epoch (the time values returned from time.time()) fetch_server_certificate (HOST, PORT) -- fetch the certificate provided by the server running on HOST at port PORT. No validation of the certificate is performed. Integer constants: SSL_ERROR_ZERO_RETURN SSL_ERROR_WANT_READ SSL_ERROR_WANT_WRITE SSL_ERROR_WANT_X509_LOOKUP SSL_ERROR_SYSCALL SSL_ERROR_SSL SSL_ERROR_WANT_CONNECT SSL_ERROR_EOF SSL_ERROR_INVALID_ERROR_CODE The following group define certificate requirements that one side is allowing/requiring from the other side: CERT_NONE - no certificates from the other side are required (or will be looked at if provided) CERT_OPTIONAL - certificates are not required, but if provided will be validated, and if validation fails, the connection will also fail CERT_REQUIRED - certificates are required, and will be validated, and if validation fails, the connection will also fail The following constants identify various SSL protocol variants: PROTOCOL_SSLv2 PROTOCOL_SSLv3 PROTOCOL_SSLv23 PROTOCOL_TLS PROTOCOL_TLS_CLIENT PROTOCOL_TLS_SERVER PROTOCOL_TLSv1 PROTOCOL_TLSv1_1 PROTOCOL_TLSv1_2 The following constants identify various SSL alert message descriptions as per http://www.iana.org/assignments/tls-parameters/tls-parameters.xml#tls-parameters-6 ALERT_DESCRIPTION_CLOSE_NOTIFY ALERT_DESCRIPTION_UNEXPECTED_MESSAGE ALERT_DESCRIPTION_BAD_RECORD_MAC ALERT_DESCRIPTION_RECORD_OVERFLOW ALERT_DESCRIPTION_DECOMPRESSION_FAILURE ALERT_DESCRIPTION_HANDSHAKE_FAILURE ALERT_DESCRIPTION_BAD_CERTIFICATE ALERT_DESCRIPTION_UNSUPPORTED_CERTIFICATE ALERT_DESCRIPTION_CERTIFICATE_REVOKED ALERT_DESCRIPTION_CERTIFICATE_EXPIRED ALERT_DESCRIPTION_CERTIFICATE_UNKNOWN ALERT_DESCRIPTION_ILLEGAL_PARAMETER ALERT_DESCRIPTION_UNKNOWN_CA ALERT_DESCRIPTION_ACCESS_DENIED ALERT_DESCRIPTION_DECODE_ERROR ALERT_DESCRIPTION_DECRYPT_ERROR ALERT_DESCRIPTION_PROTOCOL_VERSION ALERT_DESCRIPTION_INSUFFICIENT_SECURITY ALERT_DESCRIPTION_INTERNAL_ERROR ALERT_DESCRIPTION_USER_CANCELLED ALERT_DESCRIPTION_NO_RENEGOTIATION ALERT_DESCRIPTION_UNSUPPORTED_EXTENSION ALERT_DESCRIPTION_CERTIFICATE_UNOBTAINABLE ALERT_DESCRIPTION_UNRECOGNIZED_NAME ALERT_DESCRIPTION_BAD_CERTIFICATE_STATUS_RESPONSE ALERT_DESCRIPTION_BAD_CERTIFICATE_HASH_VALUE ALERT_DESCRIPTION_UNKNOWN_PSK_IDENTITY é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)Ú_DEFAULT_CIPHERS)Ú_OPENSSL_API_VERSIONÚ _SSLMethodcCs|jdƒo|dkS)NZ PROTOCOL_ÚPROTOCOL_SSLv23)Ú startswith)Úname©r$ú/usr/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-uniquec@s eZdZdS)ÚCertificateErrorN)Ú__name__Ú __module__Ú __qualname__r$r$r$r%r7µsr7é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) zhMatching according to RFC 6125, section 6.4.3 http://tools.ietf.org/html/rfc6125#section-6.4.3 FÚ.Ú*z,too many wildcards in certificate DNS name: z[^.]+zxn--z\*z[^.]*z\Az\.z\Z)ÚsplitÚcountr7ÚreprÚlowerÚappendr"ÚreÚescapeÚreplaceÚcompileÚjoinÚ IGNORECASEÚmatch) ZdnÚhostnameZ max_wildcardsZpatsZleftmostZ remainderZ wildcardsZfragZpatr$r$r%Ú_dnsname_match¹s&   rKcCstj|jƒƒ}||kS)zˆExact matching of IP addresses. RFC 6125 explicitly doesn't define an algorithm for this (section 1.7.2 - "Out of Scope"). )Ú ipaddressÚ ip_addressÚrstrip)ZipnameÚhost_ipZipr$r$r%Ú_ipaddress_matchêsrPcCsP|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)a)Verify that *cert* (in decoded format as returned by SSLSocket.getpeercert()) matches the *hostname*. RFC 2818 and RFC 6125 rules are followed, but IP addresses are not accepted for *hostname*. CertificateError is raised on failure. On success, the function returns nothing. ztempty or no certificate, match_hostname needs a SSL socket or SSL context with either CERT_OPTIONAL or CERT_REQUIREDNZsubjectAltNameZDNSz 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) Ú ValueErrorrLrMÚgetrKrBrPÚlenr7rGÚmapr@)ÚcertrJrOZdnsnamesZsanÚkeyr,Úsubr$r$r%Úmatch_hostnameõs>    rXÚDefaultVerifyPathszQcafile capath openssl_cafile_env openssl_cafile openssl_capath_env openssl_capathcCsdtjƒ}tjj|d|dƒ}tjj|d|dƒ}ttjj|ƒrF|ndtjj|ƒrX|ndf|žŽS)z/Return paths to default cafile and capath. rr;ééN) Ú_sslÚget_default_verify_pathsÚosÚenvironrRrYÚpathÚisfileÚisdir)ÚpartsÚcafileÚcapathr$r$r%r]-s r]csDeZdZdZfZ‡fdd„Ze‡fdd„ƒZe‡fdd„ƒZ‡Z S)Ú _ASN1Objectz#ASN.1 object identifier lookup cstƒj|ft|dd�žŽS)NF)r#)ÚsuperÚ__new__Ú_txt2obj)ÚclsÚoid)Ú __class__r$r%rh@sz_ASN1Object.__new__cstƒj|ft|ƒžŽS)z3Create _ASN1Object from OpenSSL numeric ID )rgrhÚ_nid2obj)rjZnid)rlr$r%ÚfromnidCsz_ASN1Object.fromnidcstƒj|ft|dd�žŽS)z=Create _ASN1Object from short name, long name or OID T)r#)rgrhri)rjr#)rlr$r%ÚfromnameIsz_ASN1Object.fromname) r8r9r:Ú__doc__Ú __slots__rhÚ classmethodrnroÚ __classcell__r$r$)rlr%rf;s  rfznid shortname longname oidc@seZdZdZdZdZdS)ÚPurposezDSSLContext purpose flags with X509v3 Extended Key Usage objects z1.3.6.1.5.5.7.3.1z1.3.6.1.5.5.7.3.2N)r8r9r:rpÚ SERVER_AUTHZ CLIENT_AUTHr$r$r$r%rtPsrtcsÔeZdZdZd"Zd#Zefdd„Zefdd „Zd$d d„Z d%dd„Z dd„Z dd„Z dd„Z ejfdd„Ze‡fdd„ƒZej‡fdd„ƒZe‡fdd„ƒZej‡fdd„ƒZe‡fdd „ƒZej‡fd!d „ƒZ‡ZS)&Ú SSLContextz|An SSLContext holds various SSL-related configuration options and data, such as certificates and possibly a private key.ÚprotocolÚ __weakref__ÚCAÚROOTcOstj||ƒ}|S)N)r rh)rjrwÚargsÚkwargsÚselfr$r$r%rh^s zSSLContext.__new__cCs ||_dS)N)rw)r}rwr$r$r%Ú__init__bszSSLContext.__init__FTNc Cst|||||||d�S)N)ÚsockÚ server_sideÚdo_handshake_on_connectÚsuppress_ragged_eofsÚserver_hostnameÚ_contextÚ_session)Ú SSLSocket)r}rr€r�r‚rƒÚsessionr$r$r%Ú wrap_socketes zSSLContext.wrap_socketcCs|j||||d�}t||d�S)N)r€rƒ)r‡)Z _wrap_bioÚ SSLObject)r}ZincomingZoutgoingr€rƒr‡Ússlobjr$r$r%Úwrap_bioos 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ÚbytesrSr rBÚextendZ_set_npn_protocols)r}Ú npn_protocolsÚprotosrwÚbr$r$r%Úset_npn_protocolsus  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�rSr rBr�Z_set_alpn_protocols)r}Zalpn_protocolsr’rwr“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/rkr�ÚPermissionErrorÚwarningsÚwarnÚload_verify_locations)r}Ú storenameÚpurposeZcertsrUÚencodingZtrustr$r$r%Ú_load_windows_store_certs‹s z$SSLContext._load_windows_store_certscCsDt|tƒst|ƒ‚tjdkr8x|jD]}|j||ƒq$W|jƒdS)Nr.)Ú isinstancerfÚ TypeErrorÚsysÚplatformÚ_windows_cert_storesržZset_default_verify_paths)r}rœr›r$r$r%Úload_default_certs™s    zSSLContext.load_default_certscs ttƒjƒS)N)r(rgÚoptions)r})rlr$r%r¥¡szSSLContext.optionscstttƒjj||ƒdS)N)rgrvr¥Ú__set__)r}r,)rlr$r%r¥¥scs ttƒjƒS)N)r)rgÚ verify_flags)r})rlr$r%r§©szSSLContext.verify_flagscstttƒjj||ƒdS)N)rgrvr§r¦)r}r,)rlr$r%r§­sc s*tƒj}yt|ƒStk r$|SXdS)N)rgÚ verify_moder*rQ)r}r,)rlr$r%r¨±s zSSLContext.verify_modecstttƒjj||ƒdS)N)rgrvr¨r¦)r}r,)rlr$r%r¨¹s)rwrx)ryrz)FTTNN)FNN)r8r9r:rprqr£Ú PROTOCOL_TLSrhr~rˆr‹r”r•ržrtrur¤Úpropertyr¥Úsetterr§r¨rsr$r$)rlr%rvWs*      rv)rdrer–cCsdt|tƒst|ƒ‚ttƒ}|tjkr0t|_d|_ |s<|s<|rL|j |||ƒn|jt kr`|j |ƒ|S)zíCreate a SSLContext object with default settings. NOTE: The protocol and settings may change anytime without prior deprecation. The values represent a fair balance between maximum compatibility and security. T) rŸrfr rvr©rtruÚ CERT_REQUIREDr¨Úcheck_hostnameršÚ CERT_NONEr¤)rœrdrer–Úcontextr$r$r%Úcreate_default_context¾s     r°F)Ú cert_reqsr­rœÚcertfileÚkeyfilerdrer–c Cs–t|tƒst|ƒ‚t|ƒ} |s$d| _|dk r2|| _|r„Z$d?d@„Z%dAdB„Z&dCdD„Z'dEdF„Z(dadGdH„Z)dIdJ„Z*dKdL„Z+dMdN„Z,dOdP„Z-dbdRdS„Z.dTdU„Z/‡Z0S)cr†zµThis class implements a subtype of socket.socket that wraps the underlying OS socket in an SSL context when necessary, and provides read and write methods over that channel.NFTrc6Cs:d|_|r||_nª|r$| r$tdƒ‚|r6| r6tdƒ‚|rD| rD|}t|ƒ|_||j_|rf|jj|ƒ|rx|jj||ƒ|rˆ|jj|ƒ|r˜|jj|ƒ||_ ||_ ||_ ||_ ||_ ||_|jttƒtkrÔtdƒ‚|rô|rätdƒ‚|dk rôtdƒ‚|jj�r| �rtdƒ‚||_||_||_||_| |_|dk �rftj||j|j|j|jƒd�|j ƒ}|j!ƒn,| dk �r€tj|| d�ntj|| | | d �y |j"ƒWnüt#k �rš}zÞ|j$t$j%k�r‚d }|j ƒd k}|j&d ƒy|j'd ƒ}Wn>t#k �r(}z |j$t$j%t$j(fk�r‚d }WYdd}~XnX|j&|ƒ|�rŠd}t)|j$|ƒ}||_*d|_+y |j,ƒWnt#k �rxYnXz|‚Wdd}XWYdd}~XnXd}|j-|ƒd |_.d|_||_/|�r6yN|jj0|||ƒ}t1|||jd�|_|�r|j ƒ}|dk�rtdƒ‚|j2ƒWn$t#tfk �r4|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ÕFrr;óz5Closed before TLS handshake with data in recv buffer.T)r·r‡gzHdo_handshake_on_connect should not be specified for non-blocking sockets)3r¶r„rQrvr¨ršr´r”Z set_ciphersr³r²r±Ú ssl_versionÚca_certsÚciphersZ getsockoptr5r6r3rÍr­r…r€rƒr�r‚r1r~rÓrÔrÕrÖÚ gettimeoutÚdetachÚ getpeernameÚOSErrorÚerrnoZENOTCONNZ setblockingÚrecvZEINVALr ÚreasonZlibraryÚcloseÚ settimeoutZ_closedÚ _connectedÚ _wrap_socketr‰rÈ)r}rr³r²r€r±rØrÙr�rÓrÔrÕrÖr‚r‘rÚrƒr„r…Z sock_timeoutÚeZ connectedZblockingZnotconn_pre_handshake_dataráZ notconn_pre_handshake_data_errorrŠÚtimeoutr$r$r%r~­sÀ                      zSSLSocket.__init__cCs|jS)N)r„)r}r$r$r%r¯0szSSLSocket.contextcCs||_||j_dS)N)r„r¶r¯)r}r¸r$r$r%r¯4scCs|jdk r|jjSdS)z!The SSLSession for client socket.N)r¶r‡)r}r$r$r%r‡9s zSSLSocket.sessioncCs||_|jdk r||j_dS)N)r…r¶r‡)r}r‡r$r$r%r‡?s cCs|jdk r|jjSdS)z.Was the client session reused during handshakeN)r¶r¹)r}r$r$r%r¹Es zSSLSocket.session_reusedcCstd|jjƒ‚dS)NzCan't dup() %s instances)rÍrlr8)r}r$r$r%ÚdupKsz SSLSocket.dupcCsdS)Nr$)r}Úmsgr$r$r%Ú _checkClosedOszSSLSocket._checkClosedcCs|js|jƒdS)N)rärÝ)r}r$r$r%Ú_check_connectedSszSSLSocket._check_connectedécCst|jƒ|jstdƒ‚y|jj||ƒStk rn}z.|jdtkr\|jr\|dk rVdSdSn‚WYdd}~XnXdS)zORead up to LEN bytes and return them. Return zero-length string on EOF.z'Read on closed or unwrapped SSL socket.rNr×)rêr¶rQr»r r{Z SSL_ERROR_EOFr‚)r}rSr¼Úxr$r$r%r»[szSSLSocket.readcCs"|jƒ|jstdƒ‚|jj|ƒS)zhWrite DATA to the underlying SSL channel. Returns number of bytes of DATA actually transmitted.z(Write on closed or unwrapped SSL socket.)rêr¶rQr¾)r}r¿r$r$r%r¾mszSSLSocket.writecCs|jƒ|jƒ|jj|ƒS)záReturns a formatted version of the data in the certificate provided by the other end of the SSL channel. Return None if no certificate was provided, {} if a certificate was provided, but not validated.)rêrër¶rÁ)r}rÀr$r$r%rÁvszSSLSocket.getpeercertcCs*|jƒ|j stj rdS|jjƒSdS)N)rêr¶r\rrÂ)r}r$r$r%r€szSSLSocket.selected_npn_protocolcCs*|jƒ|j stj rdS|jjƒSdS)N)rêr¶r\rrÃ)r}r$r$r%rÇsz SSLSocket.selected_alpn_protocolcCs |jƒ|jsdS|jjƒSdS)N)rêr¶rÄ)r}r$r$r%rÄŽszSSLSocket.ciphercCs|jƒ|jsdS|jjƒS)N)rêr¶rÅ)r}r$r$r%rÅ•szSSLSocket.shared_cipherscCs |jƒ|jsdS|jjƒSdS)N)rêr¶rÆ)r}r$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¶rQrlr¾r1Úsend)r}r¿Úflagsr$r$r%rî¢s  zSSLSocket.sendcCsH|jƒ|jrtd|jƒ‚n&|dkr4tj|||ƒStj||||ƒSdS)Nz%sendto not allowed on instances of %s)rêr¶rQrlr1Úsendto)r}r¿Z flags_or_addrÚaddrr$r$r%rð­s zSSLSocket.sendtocOstd|jƒ‚dS)Nz&sendmsg not allowed on instances of %s)rÍrl)r}r{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¶rQrlÚ memoryviewÚcastrSrîr1Úsendall)r}r¿rïr?ZviewZ byte_viewZamountr½r$r$r%rö½s  "zSSLSocket.sendallcs,|jdkrtƒj|||ƒS|j|||ƒSdS)z…Send a file, possibly by using os.sendfile() if this is a clear-text socket. Return the total number of bytes sent. N)r¶rgÚsendfileZ_sendfile_use_send)r}ÚfileÚoffsetr?)rlr$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¶rQrlr»r1rà)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êrSr¶rQrlr»r1Ú recv_into)r}r¼Únbytesrïr$r$r%rûâs    zSSLSocket.recv_intocCs0|jƒ|jrtd|jƒ‚ntj|||ƒSdS)Nz'recvfrom not allowed on instances of %s)rêr¶rQrlr1Úrecvfrom)r}rúrïr$r$r%rýñs  zSSLSocket.recvfromcCs2|jƒ|jrtd|jƒ‚ntj||||ƒSdS)Nz,recvfrom_into not allowed on instances of %s)rêr¶rQrlr1Ú recvfrom_into)r}r¼rürïr$r$r%rþùs  zSSLSocket.recvfrom_intocOstd|jƒ‚dS)Nz&recvmsg not allowed on instances of %s)rÍrl)r}r{r|r$r$r%ÚrecvmsgszSSLSocket.recvmsgcOstd|jƒ‚dS)Nz+recvmsg_into not allowed on instances of %s)rÍrl)r}r{r|r$r$r%Ú recvmsg_intoszSSLSocket.recvmsg_intocCs |jƒ|jr|jjƒSdSdS)Nr)rêr¶rÇ)r}r$r$r%rÇ s zSSLSocket.pendingcCs|jƒd|_tj||ƒdS)N)rêr¶r1rÉ)r}Zhowr$r$r%rÉszSSLSocket.shutdowncCs.|jr|jjƒ}d|_|Stdt|ƒƒ‚dS)NzNo SSL wrapper around )r¶rÊrQÚstr)r}Úsr$r$r%rÊs  zSSLSocket.unwrapcCs$|jr|jjƒStdt|ƒƒ‚dS)NzNo SSL wrapper around )r¶rÒrQr)r}r$r$r%rÒs z&SSLSocket.verify_client_post_handshakecCsd|_tj|ƒdS)N)r¶r1Ú _real_close)r}r$r$r%r#szSSLSocket._real_closec CsF|jƒ|jƒ}z$|dkr(|r(|jdƒ|jjƒWd|j|ƒXdS)zPerform a TLS/SSL handshake.gN)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€rQrär¯rårƒr‰r…r¶r1Ú connect_exÚconnectr�rÈrÞ)r}rñrrŠZrcr$r$r%Ú _real_connect2s(  zSSLSocket._real_connectcCs|j|dƒdS)zQConnects to remote ADDR, and then wraps the connection in an SSL channel.FN)r)r}rñr$r$r%rKszSSLSocket.connectcCs |j|dƒS)zQConnects to remote ADDR, and then wraps the connection in an SSL channel.T)r)r}rñr$r$r%rPszSSLSocket.connect_excCs.tj|ƒ\}}|jj||j|jdd�}||fS)z¿Accepts a new connection from a remote client, and returns a tuple containing that new connection wrapped with a server-side SSL channel, and the address of the remote client.T)r�r‚r€)r1Úacceptr¯rˆr�r‚)r}Znewsockrñr$r$r%rUs zSSLSocket.acceptú tls-uniquecCs|jdkrdS|jj|ƒS)zäGet channel binding data for current connection. Raise ValueError if the requested `cb_type` is not supported. Return bytes of the data or None if the data is not available (e.g. before the handshake). N)r¶rÐ)r}rÏr$r$r%rÐas zSSLSocket.get_channel_bindingcCs|jdkrdS|jjƒS)z— Return a string identifying the protocol version used by the current SSL channel, or None if there is no established channel. N)r¶rÑ)r}r$r$r%rÑjs zSSLSocket.version)N)rìN)F)r)N)r)rN)rìr)Nr)rìr)Nr)F)r )1r8r9r:rpr®r©r2r3r~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ÿrrÇrÉrÊrÒrrÈrrrrrÐrÑrsr$r$)rlr%r†¨s`|             r†Tc Cst|||||||||| d� S)N) rr³r²r€r±rØrÙr�r‚rÚ)r†) rr³r²r€r±rØrÙr�r‚rÚr$r$r%rˆts rˆc Cs–ddlm}ddlm}d}d}y|j|dd…jƒƒd}Wn$tk rbtd||fƒ‚Yn0X||dd…|ƒ}||d|f|dd…ƒSdS)a‰Return the time in seconds since the Epoch, given the timestring representing the "notBefore" or "notAfter" date from a certificate in ``"%b %d %H:%M:%S %Y %Z"`` strptime format (C locale). "notBefore" or "notAfter" dates must use UTC (RFC 5280). Month is one of: Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec UTC should be specified as GMT (see ASN1_TIME_print()) r)Ústrptime)ÚtimegmÚJanÚFebÚMarÚAprÚMayÚJunÚJulÚAugÚSepÚOctÚNovÚDecz %d %H:%M:%S %Y GMTNr[r;z*time data %r does not match format "%%b%s"rZé) r r rrrrrrrrrr)Ztimer Zcalendarr ÚindexÚtitlerQ)Z cert_timer r ZmonthsZ time_formatZ month_numberZttr$r$r%Úcert_time_to_secondsƒs  rz-----BEGIN CERTIFICATE-----z-----END CERTIFICATE-----cCs2ttj|ƒddƒ}tdtj|dƒdtdS)z[Takes a certificate in binary DER format and returns the PEM version of it as a string.ÚASCIIÚstrictÚ é@)rÚbase64Zstandard_b64encodeÚ PEM_HEADERÚtextwrapZfillÚ 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)zhTakes a certificate in ASCII PEM format and returns the DER-encoded version of it as a byte sequencez(Invalid PEM encoding; must start with %sz&Invalid PEM encoding; must end with %srr) r"r!rQÚstripÚendswithr#rSr 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)z÷Retrieve the certificate from the server at the specified address, and return it as a PEM-encoded string. If 'ca_certs' is specified, validate the server cert against it. If 'ssl_version' is specified, use it in the connection attempt.N)r±rdT)r¬r®Ú_create_stdlib_contextr4rˆrÁr%) rñrØrÙÚhostZportr±r¯rZsslsockZdercertr$r$r%Úget_server_certificateºs  r-cCs tj|dƒS)Nz )Ú_PROTOCOL_NAMESrR)Z protocol_coder$r$r%Úget_protocol_nameÍsr/)r;)brprLr"rCr¡r^Ú collectionsrÚenumrZ_EnumrZ_IntEnumrZ_IntFlagr\rrrr r r r r rrrrrrirrmrrrrrÚ ImportErrorrrrrrrrÚ_convertr8r r©r!Ú __members__Úitemsr.ÚgetattrZ_SSLv2_IF_EXISTSr¢r/r0r1r2r3r4r5r6r rßr˜rÞZ socket_errorZHAS_TLS_UNIQUErÌZ_RESTRICTED_SERVER_CIPHERSrQr7rKrPrXrYr]rfrtrvrur°r®rµZ_create_default_https_contextr+r‰r†rˆrr!r#r%r*r-r/r$r$r$r%Ú[sÀ        1 4g(O