Server IP : 178.210.175.110  /  Your IP : 216.73.217.52
Web Server : Apache
System : Linux lin4.teknikdata.com 5.14.0-611.5.1.el9_7.x86_64 #1 SMP PREEMPT_DYNAMIC Tue Nov 11 08:09:09 EST 2025 x86_64
User : naciustu ( 1040)
PHP Version : 8.2.35
Disable Function : exec,passthru,shell_exec,system
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : OFF
Directory (0755) :  /../lib64/python3.9/__pycache__/

[  Home  ][  C0mmand  ][  Upload File  ]

Current File : //../lib64/python3.9/__pycache__/ssl.cpython-39.opt-2.pyc
a

�1�jS��
@s�ddlZddlZddlmZddlmZmZm	Z
ddlZddlmZm
Z
mZddlmZmZmZddlmZmZmZmZmZmZmZddlmZmZddlmZmZmZm Z zdd	lm!Z!Wne"y�Yn0dd
lm#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,ddlm-Z-m.Z.ej/de0d
d�ed�e
j/de0dd�ed�ej/de0dd�ed�ej/de0dd�ed�e
j/de0dd�ed�ej/de0dd�ed�e1j2Z3e1_3dd�e1j4�5�D�Z6e7e1dd�Z8Gdd�de�Z9Gdd �d e�Z:Gd!d"�d"e�Z;Gd#d$�d$e�Z<ej=d%k�rdd&lm>Z>m?Z?dd'l@m@Z@mAZAmBZBdd(l@mCZCmDZDddl@ZEddlFZFddlGZGddlHZHeIZJd)gZKeLed*�ZMe-ZNeZOd+d,�ZPd-d.�ZQd/d0�ZRd1d2�ZSd\d3d4�ZTed5d6�ZUd7d8�ZVGd9d:�d:ed:d;��ZWGd<d=�d=eWe�ZXGd>d?�d?e�ZYeXjZfdddd@�dAdB�Z[e2fe\dCeXjZddddddD�dEdF�Z]e[Z^e]Z_GdGdH�dH�Z`dIdJ�ZaGdKdL�dLe@�ZbebeY_ce`eY_ddddCe\e2ddMdMdf	dNdO�ZedPdQ�ZfdRZgdSZhdTdU�ZidVdW�Zje2dfdXdY�ZkdZd[�ZldS)]�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,�/usr/lib64/python3.9/ssl.py�<lambda>}�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-�
<dictcomp>�r/r6ZPROTOCOL_SSLv2c@s6eZdZejZejZejZ	ej
ZejZ
ejZejZdS)�
TLSVersionN)�__name__�
__module__�__qualname__�_sslZPROTO_MINIMUM_SUPPORTEDZMINIMUM_SUPPORTEDZPROTO_SSLv3�SSLv3ZPROTO_TLSv1ZTLSv1Z
PROTO_TLSv1_1ZTLSv1_1Z
PROTO_TLSv1_2ZTLSv1_2Z
PROTO_TLSv1_3ZTLSv1_3ZPROTO_MAXIMUM_SUPPORTEDZMAXIMUM_SUPPORTEDr,r,r,r-r7�sr7c@s$eZdZdZdZdZdZdZdZdS)�_TLSContentType������N)	r8r9r:�CHANGE_CIPHER_SPEC�ALERTZ	HANDSHAKEZAPPLICATION_DATA�HEADERZINNER_CONTENT_TYPEr,r,r,r-r=�sr=c@s�eZdZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdZ
dZd
ZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZ dZ!d Z"d!Z#d"Z$d#S)$�
_TLSAlertTyper�
r>r?r@��(�)�*�+�,�-�.�/�0�1�2�3�<�F�G�P�V�Z�d�m�n�o�p�q�r�s�t�xN)%r8r9r: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-rG�sDrGc@sdeZdZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdZ
dZd
ZdZdZdZdZdZdZdZdZdZdS)�_TLSMessageTyper����������
���r>r?r@rA��C�rCN)r8r9r:Z
HELLO_REQUESTZCLIENT_HELLOZSERVER_HELLOZHELLO_VERIFY_REQUESTZNEWSESSION_TICKETZEND_OF_EARLY_DATAZHELLO_RETRY_REQUESTZENCRYPTED_EXTENSIONSZCERTIFICATEZSERVER_KEY_EXCHANGEZCERTIFICATE_REQUESTZSERVER_DONEZCERTIFICATE_VERIFYZCLIENT_KEY_EXCHANGE�FINISHEDZCERTIFICATE_URLZCERTIFICATE_STATUSZSUPPLEMENTAL_DATAZ
KEY_UPDATEZ
NEXT_PROTOZMESSAGE_HASHrDr,r,r,r-rf�s,rf�win32)�enum_certificates�	enum_crls)�socket�SOCK_STREAM�create_connection)�
SOL_SOCKET�SO_TYPE�
tls-unique�HOSTFLAG_NEVER_CHECK_SUBJECTcCs�|sdS|�d�}|s&|��|��kS|dkr<td�|���|�d�\}}}d|vrbtd�|���|sttd�|���|dkr�td�|���|�d�\}}}|r�|s�dS|��|��kS)	NF�*rgz1too 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<partial wildcards in leftmost label are not supported: {!r}.)�count�lower�CertificateError�format�	partition)Zdn�hostnameZ	wildcardsZdn_leftmost�sepZdn_remainderZhostname_leftmostZhostname_remainderr,r,r-�_dnsname_matchs@

�������r�cCs�zt�|�}Wnty Yn"0t�|�|kr4|Std�|���zt�tj|�WStyrtd�|���Ynty�Yn0td�|���dS)Nz'{!r} is not a quad-dotted IPv4 address.z+{!r} is neither an IPv4 nor an IP6 address.z{!r} is not an IPv4 address.)	�_socket�	inet_aton�OSError�	inet_ntoa�
ValueErrorr��	inet_pton�AF_INET6�AttributeError)Zipname�addrr,r,r-�_inet_patonEs$��
r�cCst|���}||kS�N)r��rstrip)Zcert_ipaddress�host_ip�ipr,r,r-�_ipaddress_matchhsr�cCsH|std��zt|�}Wnty.d}Yn0g}|�dd�}|D]^\}}|dkrx|durlt||�rldS|�|�qD|dkrD|dur�t||�r�dS|�|�qD|s�|�dd�D]6}|D],\}}|dkr�t||�r�dS|�|�q�q�t|�dk�rtd	|d
�t	t
|��f��n,t|�dk�r<td||df��ntd
��dS)Nztempty or no certificate, match_hostname needs a SSL socket or SSL context with either CERT_OPTIONAL or CERT_REQUIREDZsubjectAltNamer,ZDNSz
IP AddressZsubjectZ
commonNamergz&hostname %r doesn't match either of %sz, zhostname %r doesn't match %rrz=no appropriate commonName or subjectAltName fields were found)r�r��getr��appendr��lenr��join�map�repr)�certr�r�ZdnsnamesZsan�keyr5�subr,r,r-�match_hostnametsB


�
�r�cCs6|r |rtd��|dur td��|jr2|s2td��dS)Nz4server_hostname can only be specified in client modez,session can only be specified in client modez'check_hostname requires server_hostname)r��check_hostname��server_side�context�server_hostname�sessionr,r,r-�_check_sslobject_params�s
r��DefaultVerifyPathszQcafile capath openssl_cafile_env openssl_cafile openssl_capath_env openssl_capathcCsft��}tj�|d|d�}tj�|d|d�}ttj�|�rF|ndtj�|�rX|ndg|�R�S)Nrrgrhri)	r;�get_default_verify_paths�os�environr�r��path�isfile�isdir)�parts�cafile�capathr,r,r-r��s��r�cs@eZdZdZ�fdd�Ze�fdd��Ze�fdd��Z�ZS)�_ASN1Objectr,cst�j|gt|dd��R�S)NFr*��super�__new__�_txt2obj)�cls�oid��	__class__r,r-r��sz_ASN1Object.__new__cst�j|gt|��R�Sr�)r�r��_nid2obj)r�Znidr�r,r-�fromnid�sz_ASN1Object.fromnidcst�j|gt|dd��R�S)NTr*r�)r�r+r�r,r-�fromname�sz_ASN1Object.fromname)	r8r9r:�	__slots__r��classmethodr�r��
__classcell__r,r,r�r-r��sr�znid shortname longname oidc@seZdZdZdZdS)�Purposez1.3.6.1.5.5.7.3.1z1.3.6.1.5.5.7.3.2N)r8r9r:�SERVER_AUTHZCLIENT_AUTHr,r,r,r-r��sr�cs�eZdZdZdZdZefdd�Zdd�Zd1d	d
�Z	d2dd�Z
d
d�Zdd�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'��Zej�fd(d'��Ze�fd)d*��Ze�fd+d,��Zej�fd-d,��Ze�fd.d/��Zej�fd0d/��Z�ZS)3�
SSLContext)ZCAZROOTNcOst�||�}|Sr�)r	r�)r��protocol�args�kwargs�selfr,r,r-r��szSSLContext.__new__cCs4|durdSt|t�r&|�d��d�S|�d�SdS)NZidna�ascii)�
isinstance�str�encode�decode)r�r�r,r,r-�_encode_hostname�s

zSSLContext._encode_hostnameFTc	Cs|jj|||||||d�S)N)�sockr��do_handshake_on_connect�suppress_ragged_eofsr�r�r�)�sslsocket_class�_create)r�r�r�r�r�r�r�r,r,r-�wrap_socket�s�zSSLContext.wrap_socketcCs|jj||||�|�||d�S)N)r�r�r�r�)�sslobject_classr�r�)r��incoming�outgoingr�r�r�r,r,r-�wrap_bio
s
�zSSLContext.wrap_biocCslt�}|std��|D]F}t|d�}t|�dks<t|�dkrDtd��|�t|��|�|�q|�|�dS)NzNPN protocols must not be emptyr�r�z(NPN protocols must be 1 to 255 in length)�	bytearrayr�bytesr�r��extendZ_set_npn_protocols)r�Z
npn_protocols�protosr��br,r,r-�set_npn_protocolss
zSSLContext.set_npn_protocolscs8�durd�_n$t��s td����fdd�}|�_dS)Nznot a callable objectcs��|�}�|||�Sr�)r�)�sslobjZ
servernameZsslctx�r��server_name_callbackr,r-�shim_cb+s
z3SSLContext.set_servername_callback.<locals>.shim_cb)Zsni_callback�callable�	TypeError)r�r�r�r,r�r-�set_servername_callback$sz"SSLContext.set_servername_callbackcCs`t�}|D]F}t|d�}t|�dks0t|�dkr8td��|�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_protocols1s
zSSLContext.set_alpn_protocolscCstt�}z<t|�D].\}}}|dkr|dus4|j|vr|�|�qWnty^t�d�Yn0|rp|j|d�|S)NZx509_asnTz-unable to enumerate Windows certificate store)�cadata)r�ryr�r��PermissionError�warnings�warn�load_verify_locations)r��	storename�purposeZcertsr��encodingZtrustr,r,r-�_load_windows_store_certs<sz$SSLContext._load_windows_store_certscCs@t|t�st|��tjdkr4|jD]}|�||�q"|��dS)Nrx)r�r�r��sys�platform�_windows_cert_storesr�Zset_default_verify_paths)r�r�r�r,r,r-�load_default_certsJs


zSSLContext.load_default_certs�minimum_versioncstt�j�Sr�)r7r�r��r�r�r,r-r�SszSSLContext.minimum_versioncs4|tjkr|jtjM_ttt�j�||�dSr�)	r7r<�optionsr1ZOP_NO_SSLv3r�r�r��__set__�r�r5r�r,r-r�Ws
cstt�j�Sr�)r7r��maximum_versionr�r�r,r-r�]szSSLContext.maximum_versioncsttt�j�||�dSr�)r�r�r�r�r�r�r,r-r�ascstt�j�Sr�)r1r�r�r�r�r,r-r�eszSSLContext.optionscsttt�j�||�dSr�)r�r�r�r�r�r�r,r-r�isr�cCs|jtj@}|tjkSr��Z_host_flagsr;r�)r�Zncsr,r,r-�hostname_checks_common_namensz&SSLContext.hostname_checks_common_namecCs,|r|jtjM_n|jtjO_dSr�r�r�r,r,r-r�sscCsdS�NTr,r�r,r,r-r�zscst�j}|dur|jSdSdSr�)r��
_msg_callback�
user_function)r��innerr�r,r-r~s!zSSLContext._msg_callbackcsb�dur ttt�j�|d�dSt�d�s8t��d����fdd�}�|_ttt�j�||�dS)N�__call__z is not callable.cs�zt|�}WntyYn0zt|�}Wnty>Yn0|tjkrPt}n|tjkr`t}nt}z||�}Wnty�Yn0�||||||�Sr�)r7r�r=rFrErGrf)�conn�	direction�versionZcontent_typeZmsg_type�dataZmsg_enum��callbackr,r-r�s(

�z'SSLContext._msg_callback.<locals>.inner)r�r�rr��hasattrr�r)r�r
rr�r	r-r�s
cstt�j�Sr�)r&r�r�r�r�r,r-r��szSSLContext.protocolcstt�j�Sr�)r2r��verify_flagsr�r�r,r-r�szSSLContext.verify_flagscsttt�j�||�dSr�)r�r�rr�r�r�r,r-r�scs.t�j}z
t|�WSty(|YS0dSr�)r��verify_moder3r�r�r�r,r-r
�s

zSSLContext.verify_modecsttt�j�||�dSr�)r�r�r
r�r�r�r,r-r
�s)FTTNN)FNN) r8r9r:r�r�r��PROTOCOL_TLSr�r�r�r�r�r�r�r�r�r�r�rr	�propertyr��setterr�r�r;r�rr�rr
r�r,r,r�r-r��sh�
�






&%r�)r�r�r�cCs�t|t�st|��tt�}|tjkr0t|_d|_	|s<|s<|rL|�
|||�n|jtkr`|�|�t
|d�r�tj�d�}|r�tjjs�||_|S)NT�keylog_filename�
SSLKEYLOGFILE)r�r�r�r�rr�r��
CERT_REQUIREDr
r�r��	CERT_NONEr�rr�r�r�r��flags�ignore_environmentr)r�r�r�r�r��
keylogfiler,r,r-�create_default_context�s




rF)�	cert_reqsr�r��certfile�keyfiler�r�r�cCs�t|t�st|��t|�}	|s$d|	_|dur2||	_|r<d|	_|rL|sLtd��|sT|r`|	�||�|sl|sl|r||	�|||�n|	jt	kr�|	�
|�t|	d�r�tj
�d�}
|
r�tjjs�|
|	_|	S)NFT�certfile must be specifiedrr)r�r�r�r�r�r
r��load_cert_chainr�rr�rr�r�r�r�rrr)r�rr�r�rrr�r�r�r�rr,r,r-�_create_unverified_contexts,



rc@s�eZdZdd�Zed1dd��Zedd��Zejd	d��Zed
d��Z	e	jdd��Z	ed
d��Z
edd��Zedd��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�	SSLObjectcOst|jj�d���dS)NzU does not have a public constructor. Instances are returned by SSLContext.wrap_bio().�r�r�r8�r�r�r�r,r,r-�__init__Ls�zSSLObject.__init__FNc	Cs:t||||d�|�|�}|j||||||d�}||_|S)Nr�)r�r��ownerr�)r�r�Z	_wrap_bio�_sslobj)	r�r�r�r�r�r�r�r�r�r,r,r-r�Rs�
�zSSLObject._createcCs|jjSr��r$r�r�r,r,r-r�`szSSLObject.contextcCs||j_dSr�r%�r��ctxr,r,r-r�escCs|jjSr��r$r�r�r,r,r-r�iszSSLObject.sessioncCs||j_dSr�r(�r�r�r,r,r-r�nscCs|jjSr��r$�session_reusedr�r,r,r-r+rszSSLObject.session_reusedcCs|jjSr�)r$r�r�r,r,r-r�wszSSLObject.server_sidecCs|jjSr�)r$r�r�r,r,r-r�|szSSLObject.server_hostname�cCs(|dur|j�||�}n|j�|�}|Sr�)r$�read)r�r��buffer�vr,r,r-r-�szSSLObject.readcCs|j�|�Sr�)r$�write�r�rr,r,r-r0�szSSLObject.writecCs|j�|�Sr�)r$�getpeercert�r�Zbinary_formr,r,r-r2�szSSLObject.getpeercertcCstjr|j��SdSr�)r;rr$�selected_npn_protocolr�r,r,r-r4�szSSLObject.selected_npn_protocolcCstjr|j��SdSr�)r;rr$�selected_alpn_protocolr�r,r,r-r5�sz SSLObject.selected_alpn_protocolcCs
|j��Sr�)r$�cipherr�r,r,r-r6�szSSLObject.ciphercCs
|j��Sr�)r$�shared_ciphersr�r,r,r-r7�szSSLObject.shared_cipherscCs
|j��Sr�)r$�compressionr�r,r,r-r8�szSSLObject.compressioncCs
|j��Sr�)r$�pendingr�r,r,r-r9�szSSLObject.pendingcCs|j��dSr�)r$�do_handshaker�r,r,r-r:�szSSLObject.do_handshakecCs
|j��Sr�)r$�shutdownr�r,r,r-�unwrap�szSSLObject.unwrapr�cCs|j�|�Sr�)r$�get_channel_binding�r�Zcb_typer,r,r-r=�szSSLObject.get_channel_bindingcCs
|j��Sr��r$rr�r,r,r-r�szSSLObject.versioncCs
|j��Sr�)r$�verify_client_post_handshaker�r,r,r-r@�sz&SSLObject.verify_client_post_handshake)FNNN)r,N)F)r�)r8r9r:r"r�r�rr�rr�r+r�r�r-r0r2r4r5r6r7r8r9r:r<r=rr@r,r,r,r-r=sB�









	
rcCstt|j�j|_|Sr�)�getattrrr8�__doc__)�funcr,r,r-�_sslcopydoc�srDcseZdZdd�ZedW�fdd�	�Zeedd	���Zej	d
d	��Zeedd���Z
e
j	d
d��Z
eedd���Zdd�ZdXdd�Z
dd�ZdYdd�Zdd�ZedZdd��Zedd��Zedd ��Zed!d"��Zed#d$��Zed%d&��Zd[�fd(d)�	Zd\�fd*d+�	Zd,d-�Zd]�fd.d/�	Zd^�fd0d1�	Zd_�fd2d3�	Zd`�fd4d5�	Zda�fd6d7�	Zdb�fd8d9�	Zd:d;�Z d<d=�Z!ed>d?��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 r!r,r,r-r"�s�zSSLSocket.__init__FTNc
sD|�tt�tkrtd��t||||d�t|j|j|j	|�
�d�}|j|fi|��}	tt
|	�jfi|��|��}
|��||	_||	_d|	_d|	_||	_|�|�|	_||	_||	_z|	��Wn�t�y�}z�|jtjkr܂d}|	��}
|	�d�z|	� d�}Wn@t�y@}z&|jtjtj!fv�r(�d}WYd}~n
d}~00|	�|
�|�r�d}t"|j|�}||_#d|_$z|	�%�Wnt�y�Yn0z|�Wd}nd}0WYd}~nd}~00d}|	�&|
�||	_'|�r@zH|	jj(|	||	j|	|	jd	�|	_|�r|	��}|d
k�rt)d��|	�*�Wn"tt)f�y>|	�%��Yn0|	S)Nz!only stream sockets are supportedr�)�family�type�proto�filenoFrgr/z5Closed before TLS handshake with data in recv buffer.T�r#r��zHdo_handshake_on_connect should not be specified for non-blocking sockets)+�
getsockoptr~rr|�NotImplementedErrorr��dictrFrGrHrIr�r�rEr"�
gettimeout�detach�_context�_session�_closedr$r�r�r�r�r��getpeernamer��errnoZENOTCONN�getblocking�setblocking�recv�EINVALr�reasonZlibrary�close�
settimeout�
_connected�_wrap_socketr�r:)r�r�r�r�r�r�r�r�r�r�Zsock_timeout�eZ	connected�blockingZnotconn_pre_handshake_datarZZ notconn_pre_handshake_data_error�timeoutr�r,r-r��s���

"
�
zSSLSocket._createcCs|jSr�)rQr�r,r,r-r�CszSSLSocket.contextcCs||_||j_dSr�)rQr$r�r&r,r,r-r�HscCs|jdur|jjSdSr�r(r�r,r,r-r�Ms
zSSLSocket.sessioncCs||_|jdur||j_dSr�)rRr$r�r)r,r,r-r�Ss
cCs|jdur|jjSdSr�r*r�r,r,r-r+Ys
zSSLSocket.session_reusedcCstd|jj��dS)NzCan't dup() %s instances)rMr�r8r�r,r,r-�dup_s�z
SSLSocket.dupcCsdSr�r,)r��msgr,r,r-�_checkClosedcszSSLSocket._checkClosedcCs|js|��dSr�)r]rTr�r,r,r-�_check_connectedgszSSLSocket._check_connectedr,c
Cs�|��|jdurtd��z*|dur4|j�||�WS|j�|�WSWn`ty�}zH|jdtkr�|jr�|dur~WYd}~dSWYd}~dSn�WYd}~n
d}~00dS)Nz'Read on closed or unwrapped SSL socket.rr/)rdr$r�r-rr�Z
SSL_ERROR_EOFr�)r�r�r.�xr,r,r-r-os
zSSLSocket.readcCs&|��|jdurtd��|j�|�S)Nz(Write on closed or unwrapped SSL socket.)rdr$r�r0r1r,r,r-r0�s
zSSLSocket.writecCs|��|��|j�|�Sr�)rdrer$r2r3r,r,r-r2�szSSLSocket.getpeercertcCs*|��|jdustjsdS|j��SdSr�)rdr$r;rr4r�r,r,r-r4�szSSLSocket.selected_npn_protocolcCs*|��|jdustjsdS|j��SdSr�)rdr$r;rr5r�r,r,r-r5�sz SSLSocket.selected_alpn_protocolcCs$|��|jdurdS|j��SdSr�)rdr$r6r�r,r,r-r6�s
zSSLSocket.ciphercCs$|��|jdurdS|j��SdSr�)rdr$r7r�r,r,r-r7�s
zSSLSocket.shared_cipherscCs$|��|jdurdS|j��SdSr�)rdr$r8r�r,r,r-r8�s
zSSLSocket.compressionrcsF|��|jdur4|dkr(td|j��|j�|�St��||�SdS)Nrz3non-zero flags not allowed in calls to send() on %s)rdr$r�r�r0r��send)r�rrr�r,r-rg�s
��zSSLSocket.sendcsL|��|jdur"td|j��n&|dur8t��||�St��|||�SdS)Nz%sendto not allowed on instances of %s)rdr$r�r�r��sendto)r�rZ
flags_or_addrr�r�r,r-rh�s
�zSSLSocket.sendtocOstd|j��dS)Nz&sendmsg not allowed on instances of %s�rMr�r!r,r,r-�sendmsg�s�zSSLSocket.sendmsgc	s�|��|jdur�|dkr(td|j��d}t|��f}|�d��<}t|�}||krn|�||d��}||7}qJWd�n1s�0YWd�q�1s�0Ynt��	||�SdS)Nrz6non-zero flags not allowed in calls to sendall() on %s�B)
rdr$r�r��
memoryview�castr�rgr��sendall)r�rrr��view�	byte_view�amountr/r�r,r-rn�s
��HzSSLSocket.sendallcs,|jdur|�|||�St��|||�SdSr�)r$�_sendfile_use_sendr��sendfile)r��file�offsetr�r�r,r-rs�s
zSSLSocket.sendfilecsD|��|jdur2|dkr(td|j��|�|�St��||�SdS)Nrz3non-zero flags not allowed in calls to recv() on %s)rdr$r�r�r-r�rX�r��buflenrr�r,r-rX�s
��
zSSLSocket.recvcsj|��|r|durt|�}n|dur*d}|jdurV|dkrJtd|j��|�||�St��|||�SdS)Nr,rz8non-zero flags not allowed in calls to recv_into() on %s)rdr�r$r�r�r-r��	recv_into�r�r.�nbytesrr�r,r-rx�s

��zSSLSocket.recv_intocs4|��|jdur"td|j��nt��||�SdS)Nz'recvfrom not allowed on instances of %s)rdr$r�r�r��recvfromrvr�r,r-r{
s
�zSSLSocket.recvfromcs6|��|jdur"td|j��nt��|||�SdS)Nz,recvfrom_into not allowed on instances of %s)rdr$r�r�r��
recvfrom_intoryr�r,r-r|s
�zSSLSocket.recvfrom_intocOstd|j��dS)Nz&recvmsg not allowed on instances of %srir!r,r,r-�recvmsgs�zSSLSocket.recvmsgcOstd|j��dS)Nz+recvmsg_into not allowed on instances of %srir!r,r,r-�recvmsg_intos�zSSLSocket.recvmsg_intocCs$|��|jdur|j��SdSdS)Nr)rdr$r9r�r,r,r-r9"s

zSSLSocket.pendingcs|��d|_t��|�dSr�)rdr$r�r;)r��howr�r,r-r;*szSSLSocket.shutdowncCs.|jr|j��}d|_|Stdt|���dS�NzNo SSL wrapper around )r$r;r�r�)r��sr,r,r-r</s

zSSLSocket.unwrapcCs$|jr|j��Stdt|���dSr�)r$r@r�r�r�r,r,r-r@8s
z&SSLSocket.verify_client_post_handshakecsd|_t���dSr�)r$r��_real_closer�r�r,r-r�?szSSLSocket._real_closec	CsP|��|��}z.|dkr(|r(|�d�|j��W|�|�n|�|�0dS)NrK)rerOr\r$r:)r��blockrar,r,r-r:Cs
zSSLSocket.do_handshakec	s�|jrtd��|js|jdur&td��|jj|d|j||jd�|_z@|rVt��	|�}nd}t��
|�|s~d|_|jr~|��|WSt
tfy�d|_�Yn0dS)Nz!can't connect in server-side modez/attempt to connect already-connected SSLSocket!FrJT)r�r�r]r$r�r^r�rRr��
connect_ex�connectr�r:r�)r�r�r��rcr�r,r-�
_real_connectNs*�zSSLSocket._real_connectcCs|�|d�dS)NF�r��r�r�r,r,r-r�hszSSLSocket.connectcCs|�|d�Srr�r�r,r,r-r�mszSSLSocket.connect_excs.t���\}}|jj||j|jdd�}||fS)NT)r�r�r�)r��acceptr�r�r�r�)r�Znewsockr�r�r,r-r�rs�zSSLSocket.acceptr�cCs4|jdur|j�|�S|tvr,td�|���dSdS)Nz({0} channel binding type not implemented)r$r=�CHANNEL_BINDING_TYPESr�r�r>r,r,r-r=~s
�zSSLSocket.get_channel_bindingcCs|jdur|j��SdSdSr�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�)/r8r9r:r"r�r�rrDr�rr�r+rbrdrer-r0r2r4r5r6r7r8rgrhrjrnrsrXrxr{r|r}r~r9r;r<r@r�r:r�r�r�r�r=rr�r,r,r�r-rE�s��X



	











rETc
Csl|r|std��|r |s td��t|�}
||
_|r<|
�|�|rL|
�||�|	rZ|
�|	�|
j||||d�S)Nz5certfile must be specified for server-side operationsr)r�r�r�r�)r�r�r
r�rZset_ciphersr�)r�rrr�r�ssl_version�ca_certsr�r�Zciphersr�r,r,r-r��s"

�r�cCs�ddlm}ddlm}d}d}z|�|dd����d}Wn"ty`td||f��Yn00||dd�|�}||d|f|d	d
��SdS)Nr)�strptime)�timegm)ZJanZFebZMarZAprZMayZJunZJulZAugZSepZOctZNovZDecz %d %H:%M:%S %Y GMTrirgz*time data %r does not match format "%%b%s"rhrl)�timer�Zcalendarr��index�titler�)Z	cert_timer�r�ZmonthsZtime_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,)r4�i��fr,r-�
<listcomp>�r/z(DER_cert_to_PEM_cert.<locals>.<listcomp>rr��
)	r��base64Zstandard_b64encode�
PEM_HEADER�ranger�r��
PEM_FOOTERr�)Zder_cert_bytes�ssr,r�r-�DER_cert_to_PEM_cert�s
"r�cCs\|�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�r��strip�endswithr�r�r�Zdecodebytesr�)Zpem_cert_string�dr,r,r-�PEM_cert_to_DER_cert�s
��r�c
	Cs�|\}}|durt}nt}t|||d�}t|��D}|�|��}|�d�}	Wd�n1s\0YWd�n1sz0Yt|	�S)N)rr�T)rr�_create_stdlib_contextr}r�r2r�)
r�r�r��host�portrr�r�ZsslsockZdercertr,r,r-�get_server_certificate�s�
Fr�cCst�|d�S)Nz	<unknown>)�_PROTOCOL_NAMESr�)Z
protocol_coder,r,r-�get_protocol_name�sr�)NNN)mr�r��collectionsr�enumrZ_Enumr�_IntEnumrZ_IntFlagr;rrrr	r
rrr
rrrrrrr�rr�rrrrr�ImportErrorrrrrrrr r!r"r#r$r%�	_convert_r8r&rr'�__members__�itemsr�rAZ_SSLv2_IF_EXISTSr7r=rGrfr�ryrzr{r|r}r~rr�r�rUr�r�Zsocket_errorr�rZHAS_NEVER_CHECK_COMMON_NAMEZ_RESTRICTED_SERVER_CIPHERSr�r�r�r�r�r�r�r�r�r�r�r�rrrZ_create_default_https_contextr�rrDrEr�r�r�r�r�r�r�r�r�r�r,r,r,r-�<module>^s�$0������
)
1#9
�|�#�/7�