Sindbad~EG File Manager

Current Path : /usr/local/lib/python3.11/test/__pycache__/
Upload File :
Current File : //usr/local/lib/python3.11/test/__pycache__/test_ssl.cpython-311.pyc

�

SԚg�����	�ddlZddlZddlZddlmZddlmZddlmZddlmZddlm	Z	ddlm
Z
ddlZddlZddl
Z
ddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZ	ddl Z n
#e!$rdZ YnwxYwe
j"d��Z#ej$d	��Z%ddl&Z&dd
l%m'Z'm(Z(m)Z)m*Z*e+ed��Z,e,o
ejdkZ-e.e%j/��Z0ej1Z1e%j2d
kZ3ej4d��Z5iZ6dD]4\Z7Z8	e9e%e7��Z7e9e%j'e8��Z8n#e:$rY�+wxYwe8e6e7<�5d�Z;e;d��Z<ej=e<��Z>e;d��Z?e;d��Z@ej=e?��ZAej=e@��ZBe;d��ZCe;d��ZDdZEe;d��ZFej=eF��ZGe;dd��ZHe;dd��ZIdddddddd �ZJe;d!��ZKe;d"��ZLd#ZMd$d%d&d'd(d)d*dddd+�
ZNe;d,��ZOd-ZPe;d.��ZQd/ZRe;dd0��ZSe;d1��ZTe;d2��ZUe;d3��ZVd#ZWd4ZXe;d5��ZYe;d6��ZZe;d7��Z[e;d8��Z\e;d9��Z]e;d:��Z^e;d;��Z_e;d<��Z`ej=e`��Zae9e%d=d��Zbe9e%d>d��Zce9e%d?d��Zde9e%d@d��Zee9e%dAd��ZfdB�Zgeg��rdC�ZhndD�ZhdE�ZiejjdF���ZkdG�ZldH�ZmdI�Zne
joep�J��Zqe%jrdddddK�dL�ZseLfdMdN�dO�ZtGdP�dQeju��ZvGdR�dSeju��ZwGdT�dUeju��ZxGdV�dWeju��ZyGdX�dYeju��ZzGdZ�d[eju��Z{ej|d\��Gd]�d^eju����Z}d{d_�Z~d`�Zddal�m�Z�Gdb�dcej���Z�Gdd�deej���Z�			d|dh�Z�	d}di�Z�Gdj�dkeju��Z�ej�ekdl��dm��Gdn�doeju����Z�e+e%j�dp��Z�ej�e�dq��Z�Gdr�dseju��Z�dt�Z�Gdu�dveju��Z�Gdw�dxeju��Z�dy�Z�e�dzkrej���dSdS)~�N)�support)�
import_helper)�	os_helper)�
socket_helper)�threading_helper)�warnings_helper�asyncore�ssl)�
TLSVersion�_TLSContentType�_TLSMessageType�
_TLSAlertType�gettotalrefcount�win32)�rr�PY_SSL_DEFAULT_CIPHERS))�PROTOCOL_SSLv23�SSLv3)�PROTOCOL_TLSv1�TLSv1)�PROTOCOL_TLSv1_1�TLSv1_1c�v�tjjtj�t��dg|�R�S)N�certdata)�os�path�join�dirname�__file__��names �*/usr/local/lib/python3.11/test/test_ssl.py�	data_filer#Bs,��
�7�<������1�1�:�E��E�E�E�E�zkeycert.pemzssl_cert.pemzssl_key.pemzkeycert.passwd.pemzssl_key.passwd.pem�somepass�capathz
4e1295a3.0z
5ed36f99.0)�)�countryName�XY�)�localityNamezCastle Anthrax�)�organizationNamezPython Software Foundation))�
commonName�	localhostzAug 26 14:23:15 2028 GMTzAug 29 14:23:15 2018 GMT�98A7CF88C74A32ED))�DNSr/r��issuer�notAfter�	notBefore�serialNumber�subject�subjectAltName�versionzrevocation.crlzkeycert3.pemr/)z)http://testca.pythontest.net/testca/ocsp/)z0http://testca.pythontest.net/testca/pycacert.cer)z2http://testca.pythontest.net/testca/revocation.crl)r'))r-�Python Software Foundation CA))r.z
our-ca-serverzOct 28 14:23:16 2037 GMTzAug 29 14:23:16 2018 GMT�CB2D80995A69525C)
�OCSP�	caIssuers�crlDistributionPointsr3r4r5r6r7r8r9zkeycert4.pem�fakehostnamezkeycertecc.pemz
localhost-eccz
ceff1710.0zallsans.pemzidnsans.pemz	nosan.pemzself-signed.pythontest.net�nullcert.pem�badcert.pemzXXXnonexisting.pem�
badkey.pemz	nokia.pemznullbytecert.pemztalos-2019-0758.pemzffdh3072.pem�OP_NO_COMPRESSION�OP_SINGLE_DH_USE�OP_SINGLE_ECDH_USE�OP_CIPHER_SERVER_PREFERENCE�OP_ENABLE_MIDDLEBOX_COMPATc��	tdd���5}d|���vcddd��S#1swxYwYdS#t$rYdSwxYw)Nz/etc/os-releasezutf-8)�encoding�ubuntuF)�open�read�FileNotFoundError)�fs r"�	is_ubunturO�s�����#�g�
6�
6�
6�	(�!��q�v�v�x�x�'�	(�	(�	(�	(�	(�	(�	(�	(�	(�	(�	(�	(����	(�	(�	(�	(�	(�	(�������u�u����s,�A�6�A�:�A�:�A�
A�Ac��|D]A}t|d��r/|jtjjkr|�d���BdS)z@"Lower security level to '1' and allow all ciphers for TLS 1.0/1�minimum_versionz@SECLEVEL=1:ALLN)�hasattrrQr
rr�set_ciphers)�ctxs�ctxs  r"�seclevel_workaroundrV�sU���	3�	3�C���.�/�/�
3��#�s�~�'=�=�=���� 1�2�2�2��	3�	3r$c��dS�N�)rTs r"rVrV�s���r$c�2�t|t��r1|�d��sJ�tt|d��}|�dS|tjtjtjhvrdS|j}t|td��d���S)z�Check if a TLS protocol is available and enabled

    :param protocol: enum ssl._SSLMethod member or name
    :return: bool
    �	PROTOCOL_NFT)�
isinstance�str�
startswith�getattrr
�PROTOCOL_TLS�PROTOCOL_TLS_SERVER�PROTOCOL_TLS_CLIENTr!�has_tls_version�len)�protocolr!s  r"�has_tls_protocolrf�s����(�C� � ���"�"�;�/�/�/�/�/��3��$�/�/�����5����#�1������
�t��=�D��4��K� 0� 0� 1� 1�2�3�3�3r$c��|dkrdSt|t��rtjj|}ttd|j����sdStr|tjjkrdSt�	tj
��}t|d��r'|jtjj
kr
||jkrdSt|d��r'|jtjjkr
||jkrdSdS)z{Check if a TLS/SSL version is enabled

    :param version: TLS version name or ssl.TLSVersion member
    :return: bool
    �SSLv2F�HAS_rQ�maximum_versionT)r\r]r
r�__members__r_r!�IS_OPENSSL_3_0_0�TLSv1_2�
SSLContextrbrRrQ�MINIMUM_SUPPORTEDrj�MAXIMUM_SUPPORTED)r9rUs  r"rcrc�s���'����u��'�3���6��.�,�W�5���3�-�w�|�-�-�.�.���u���G�c�n�&<�<�<��u��.�.��0�
1�
1�C��C�*�+�+����3�>�#C�C�C��c�)�)�)��u���&�'�'����s�~�?�?�?��#�%�%�%��u��4r$c����fd�}|S)z�Decorator to skip tests when a required TLS version is not available

    :param version: TLS version name or ssl.TLSVersion member
    :return:
    c�J���tj�����fd���}|S)Nc�`��t���stj��d�����|i|��S)Nz is not available.)rc�unittest�SkipTest)�args�kw�funcr9s  ��r"�wrapperz8requires_tls_version.<locals>.decorator.<locals>.wrappersB���"�7�+�+�
)��'�7�(F�(F�(F�G�G�G��t�T�(�R�(�(�(r$)�	functools�wraps)rxryr9s` �r"�	decoratorz'requires_tls_version.<locals>.decorator�s>����	���	�	�	)�	)�	)�	)�	)�
�	�	)�
�r$rY)r9r|s` r"�requires_tls_versionr}�s$���������r$c���d�tjtj�����}t
jr$tj�||z��dSdS)N� )	r�	traceback�format_exception�sys�exc_infor�verbose�stdout�write)�prefix�
exc_formats  r"�handle_errorr�
sV�����)�4�c�l�n�n�E�F�F�J���.��
����*�,�-�-�-�-�-�.�.r$c��tjr)tj��jdkr
tjStjS�Nr)�time�daylight�	localtime�tm_isdst�altzone�timezonerYr$r"�
utc_offsetr�s5���}����)�)�2�Q�6�6���}���M�>�r$)�category)�	cert_reqs�ca_certs�ciphers�certfile�keyfilec��|�d��s/t|d<t�tj��}n$t�tj��}|�|tjkrd|_||_|�|�	|��|�|�|�
||��|�|�|��|j|fi|��S)N�server_side�server_hostnameF)
�get�SIGNED_CERTFILE_HOSTNAMEr
rnrbra�	CERT_NONE�check_hostname�verify_mode�load_verify_locations�load_cert_chainrS�wrap_socket)�sockr�r�r�r�r��kwargs�contexts        r"�test_wrap_socketr�s����:�:�m�$�$�:�$<�� �!��.�.��!8�9�9����.�.��!8�9�9������
�%�%�%*�G�"�'������%�%�h�/�/�/���w�2�����'�2�2�2������G�$�$�$��7��t�.�.�v�.�.�.r$T��server_chainc���|tkrt}n5|tkrt}n"|tkrt
}nt
|���t�tj	��}|�
t��t�tj��}|�
|��|r|�
t��|||fS)zUCreate context

    client_context, server_context, hostname = testing_context()
    )�SIGNED_CERTFILEr��SIGNED_CERTFILE2�SIGNED_CERTFILE2_HOSTNAME�	NOSANFILE�NOSAN_HOSTNAME�
ValueErrorr
rnrbr��
SIGNING_CArar�)�server_certr��hostname�client_context�server_contexts     r"�testing_contextr�2s���
�o�%�%�+���	�(�	(�	(�,���	�	�	!�	!�!�����%�%�%��^�^�C�$;�<�<�N��(�(��4�4�4��^�^�C�$;�<�<�N��"�"�;�/�/�/��9��,�,�Z�8�8�8��>�8�3�3r$c�Z�eZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zd
�Zd�Z
d�Zejd
���Zd�Zd�Zd�Zed���Zd�Zd�Zd�Zd�Zed���Zd�Zd�Zejde j!vd��d���Z"d�Z#d�Z$eje%j&dkd��d ���Z'eje%j&dkd��d!���Z(d"�Z)d#�Z*d$�Z+d%�Z,d&�Z-eje.��d'��d(���Z/d)�Z0ej1d*d+��d,���Z2d-�Z3d.�Z4d/S)0�BasicSocketTestsc��tjtjtjtjtjtjtj|�tj	d��|�tj
d��|�tjd��|�tjd��tj
tjtjtjtjtj|�tjtj��dS)NT)r
r��
CERT_OPTIONAL�
CERT_REQUIREDrFrDrErC�assertEqual�HAS_SNI�HAS_ECDH�HAS_TLSv1_2�HAS_TLSv1_3�OP_NO_SSLv2�OP_NO_SSLv3�OP_NO_TLSv1�
OP_NO_TLSv1_3�
OP_NO_TLSv1_1�
OP_NO_TLSv1_2r`r��selfs r"�test_constantszBasicSocketTests.test_constantsMs����
�
��������'�'���������������d�+�+�+������t�,�,�,������$�/�/�/������$�/�/�/�����������������������)�3�+>�?�?�?�?�?r$c��tt��D]u}|�d��s�|�|���5t	t|��}|�|dd|����ddd��n#1swxYwY�vdS)N�OP_��optionr�ssl.)�dirr
r^�subTestr_�assertGreaterEqual)r�r!�values   r"�test_optionszBasicSocketTests.test_optionsas�����H�H�	A�	A�D��?�?�5�)�)�
�����T��*�*�
A�
A���T�*�*���'�'��q�-��-�-�@�@�@�
A�
A�
A�
A�
A�
A�
A�
A�
A�
A�
A����
A�
A�
A�
A��	A�	As�0A?�?B	�B	c��tjtjtjtjtjtjg}|D]j}|�|���5|�td��5d|_
ddd��n#1swxYwYddd��n#1swxYwY�ktj|tj��dS)N)�ssl_typezimmutable type)
�_ssl�_SSLContext�
_SSLSocket�	MemoryBIO�Certificate�
SSLSession�SSLErrorr��assertRaisesRegex�	TypeErrorr�r�check_disallow_instantiation)r��	ssl_typesr�s   r"�test_ssl_typeszBasicSocketTests.test_ssl_typesjs5�����O��N����O��M�

�	�"�	*�	*�H����x��0�0�
*�
*��+�+�I�7G�H�H�*�*�%)�H�N�*�*�*�*�*�*�*�*�*�*�*����*�*�*�*�
*�
*�
*�
*�
*�
*�
*�
*�
*�
*�
*����
*�
*�
*�
*��	�,�T�4�3C�D�D�D�D�Ds6�B&�;B�B&�B�B&�B�B&�&B*	�-B*	c��|�td��5tj��5}t�|��ddd��n#1swxYwYddd��dS#1swxYwYdS�Nzpublic constructor)r�r��socketr
�	SSLSocket�r��ss  r"�test_private_initz"BasicSocketTests.test_private_initys���
�
#�
#�I�/C�
D�
D�	!�	!�����
!�A��
�
�a� � � �
!�
!�
!�
!�
!�
!�
!�
!�
!�
!�
!����
!�
!�
!�
!�	!�	!�	!�	!�	!�	!�	!�	!�	!�	!�	!�	!����	!�	!�	!�	!�	!�	!s4�A/�A�A/�A	�A/�A	�A/�/A3�6A3c�H�tj}|�t|��d|jz��|�t|��t|j����t�|��}|�|j|��dS)Nz$<_SSLMethod.PROTOCOL_TLS_CLIENT: %r>)	r
rbr��reprr�r]rn�assertIsre�r��protorUs   r"�test_str_for_enumsz#BasicSocketTests.test_str_for_enums~s����'������e���&L�u�{�&Z�[�[�[�����U���S���%5�%5�6�6�6��n�n�U�#�#���
�
�c�l�E�*�*�*�*�*r$c�*�t���}tjr(tj�d||rdpdfz��tj��5t�	d��\}}ddd��n#1swxYwY|�
t|��d��|�
||dk��|r>t�d��}|�
t|��d��n+|�
tjtjd��|�
ttjd��tj��5|�
ttj	d��ddd��n#1swxYwYt�dd��t�d	d��t�t#d
��d��dS)Nz
 RAND_status is %d (%s)
zsufficient randomnesszinsufficient randomness�����zthis is a random stringg�R@sthis is a random bytes objects!this is a random bytearray object)r
�RAND_statusrr�r�r�r�r�check_warnings�RAND_pseudo_bytesr�rd�
RAND_bytes�assertRaisesr�r��RAND_add�	bytearray)r��v�data�is_cryptographics    r"�test_randomzBasicSocketTests.test_random�s[���O�O�����?�	<��J���:� !�A�$A�*A�$:� 9� ;�;�
<�
<�
<��
+�
-�
-�	?�	?�%(�%:�%:�2�%>�%>�"�D�"�	?�	?�	?�	?�	?�	?�	?�	?�	?�	?�	?����	?�	?�	?�	?�����T���B�'�'�'����)�1��6�2�2�2��	@��>�>�"�%�%�D����S��Y�Y��+�+�+�+����c�l�C�N�B�?�?�?�	
���*�c�n�b�9�9�9�
�
+�
-�
-�	E�	E����j�#�*?��D�D�D�	E�	E�	E�	E�	E�	E�	E�	E�	E�	E�	E����	E�	E�	E�	E�	���.��5�5�5����5�t�<�<�<����Y�C�D�D�d�K�K�K�K�Ks$�!B�B�B�7'F*�*F.�1F.c��|�tj�t��t
��|�tj�t��t��tj�t��}tj
r7tj�
dtj|��zdz��|�|dd��|�|dd��|�|dd��|�|dd	��dS)
N�
r8))r1zprojects.developer.nokia.com)r1zprojects.forum.nokia.comr<)zhttp://ocsp.verisign.comr=)z0http://SVRIntl-G3-aia.verisign.com/SVRIntlG3.cerr>)z0http://SVRIntl-G3-crl.verisign.com/SVRIntlG3.crl)r�r
r��_test_decode_cert�CERTFILE�
CERTFILE_INFOr��SIGNED_CERTFILE_INFO�	NOKIACERTrr�r�r�r��pprint�pformat�r��ps  r"�test_parse_certz BasicSocketTests.test_parse_cert�sE��	
����H�&�&�x�0�0��	
�	
�	
�	
����H�&�&��7�7� �	
�	
�	
�
�H�&�&�y�1�1���?�	>��J���T�F�N�1�$5�$5�5��<�=�=�=�����+�,�?�	�	�	�
	
����6��$A�B�B�B�����;��N�	P�	P�	P�����2�3�N�	P�	P�	P�	P�	Pr$c��tj�t��}tjr7tj�dtj
|��zdz��|�|dddddddd	���dS)
Nr�)�)r(�UK))r.zcody-cazJun 14 18:00:58 2028 GMTzJun 18 18:00:58 2018 GMT�02)r))r.�#codenomicon-vm-2.test.lal.cisco.com))r1rrr2)r
r�r�TALOS_INVALID_CRLDPrr�r�r�r�rrr�rs  r"�test_parse_cert_CVE_2019_5010z.BasicSocketTests.test_parse_cert_CVE_2019_5010�s����H�&�&�':�;�;���?�	>��J���T�F�N�1�$5�$5�5��<�=�=�=����
�L�6�7� $�H�#E��
�
�	
�	
�	
�	
�	
r$c��tj�t��}tjr7tj�dtj
|��zdz��d}|�|d|��|�|d|��tjdkrd}nd}|�|d|��dS)	Nr�)�)r(�US))�stateOrProvinceName�Oregon))r+�	Beavertonr,))�organizationalUnitNamezPython Core Development�)r.�null.python.orgexample.org))�emailAddresszpython-dev@python.orgr7r3)r�	�)�r1zaltnull.python.orgexample.com��emailz null@python.orguser@example.org��URIz)http://null.python.orghttp://example.org��
IP Addressz	192.0.2.1)r#z2001:DB8:0:0:0:0:0:1)rrr r")r#z	<invalid>r8)
r
r�r�NULLBYTECERTrr�r�r�r�rrr��_OPENSSL_API_VERSION)r�rr7�sans    r"�test_parse_cert_CVE_2013_4238z.BasicSocketTests.test_parse_cert_CVE_2013_4238�s����H�&�&�|�4�4���?�	>��J���T�F�N�1�$5�$5�5��<�=�=�=�A��	
����9��w�/�/�/�����8��g�.�.�.��#�y�0�0�;�C�C�0�C�	
����+�,�c�2�2�2�2�2r$c��tj�t��}|�|dd��dS)Nr8)
)r1�allsans��	othername�
<unsupported>r*)rzuser@example.org)r1zwww.example.org)�DirName)r'r*r,))r.zdirname example)r!zhttps://www.python.org/�r#�	127.0.0.1)r#z0:0:0:0:0:0:0:1)z
Registered IDz	1.2.3.4.5)r
r�r�
ALLSANFILEr�rs  r"�test_parse_all_sansz$BasicSocketTests.test_parse_all_sans�sF���H�&�&�z�2�2������+�,�
�	
�	
�	
�	
�	
r$c�B�ttd��5}|���}ddd��n#1swxYwYt�|��}t�|��}t�|��}|�||��|�tjdz��s|�	d|z��|�
dtjzdz��s|�	d|z��dSdS)N�rr�z-DER-to-PEM didn't include correct header:
%r
z-DER-to-PEM didn't include correct footer:
%r
)rK�
CAFILE_CACERTrLr
�PEM_cert_to_DER_cert�DER_cert_to_PEM_certr�r^�
PEM_HEADER�fail�endswith�
PEM_FOOTER)r�rN�pem�d1�p2�d2s      r"�test_DER_to_PEMz BasicSocketTests.test_DER_to_PEMs?��
�-��
%�
%�	���&�&�(�(�C�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�
�
%�
%�c�
*�
*��
�
%�
%�b�
)�
)��
�
%�
%�b�
)�
)������R� � � ��}�}�S�^�d�2�3�3�	N��I�I�G�"�L�M�M�M��{�{�4�#�.�0�4�7�8�8�	N��I�I�G�"�L�M�M�M�M�M�	N�	Ns�7�;�;c���tj}tj}tj}|�|t
��|�|t��|�|t��|�|d��|�	|d��|\}}}}}|�|d��|�	|d��|�|d��|�	|d��|�|d��|�	|d��|�|d��|�
|d��|�|d��|�
|d��d	|d
��}	|dkrd|d
�d
|d
�d
|d
��}
nd|d
�d
|d
�d
|d
��}
|�|�|
|	f��||t|��f��dS)Nii@r��r��?�z	LibreSSL �drzOpenSSL �.)r
�OPENSSL_VERSION_NUMBER�OPENSSL_VERSION_INFO�OPENSSL_VERSION�assertIsInstance�int�tupler]r��
assertLess�assertLessEqual�
assertTruer^�hex)r��n�tr��major�minor�fix�patch�status�libressl_ver�openssl_vers           r"�test_openssl_versionz%BasicSocketTests.test_openssl_versions���&���$��������a��%�%�%����a��'�'�'����a��%�%�%�	
����:�.�.�.�����:�&�&�&�+,�(��u�c�5�&�����q�)�)�)�����q�!�!�!�����q�)�)�)�����s�#�#�#�����Q�'�'�'�����S�!�!�!�����q�)�)�)����U�B�'�'�'������*�*�*����V�R�(�(�(�,�5�,�,�,���A�:�:�B�U�B�B�B�u�B�B�B��B�B�B�K�K�@�U�@�@�@�u�@�@�@��@�@�@�K����
�L�L�+�|�4�5�5�
��3�q�6�6�N�	
�	
�	
�	
�	
r$c�,�tjtj��}t|��}tj|��}tjdtf��5~ddd��n#1swxYwY|�|��d��dS)N�)	r��AF_INETr��weakref�refrr��ResourceWarningr�)r�r��ss�wrs    r"�
test_refcyclezBasicSocketTests.test_refcycle4s���
�M�&�.�)�)��
�a�
 �
 ��
�[��_�_��
�
+�R��,A�
B�
B�	�	��	�	�	�	�	�	�	�	�	�	�	����	�	�	�	��������t�$�$�$�$�$s�A+�+A/�2A/c	��tjtj��}t|��5}|�t|jd��|�t|jtd����|�t|jd��|�t|j	td��d��|�t|j
d��|�t|jdd��|�t|j
��|�t|jdgddd��|�t|jd��|�t|jtd��g��ddd��dS#1swxYwYdS)Nr��x)z0.0.0.0rrYr�d)r�r]r�r��OSError�recv�	recv_intor��recvfrom�
recvfrom_into�send�sendto�NotImplementedError�dup�sendmsg�recvmsg�recvmsg_into�r�r�ras   r"�test_wrapped_unconnectedz)BasicSocketTests.test_wrapped_unconnected?s���
�M�&�.�)�)��
�a�
 �
 �	0�B����g�r�w��2�2�2����g�r�|�Y�t�_�_�E�E�E����g�r�{�A�6�6�6����g�r�'7��4���!�L�L�L����g�r�w��5�5�5����g�r�y�$��G�G�G����1�2�6�:�:�:����1�2�:�#�f�b�!�^�
=�
=�
=����1�2�:�s�C�C�C����1�2�?�(��~�~�.�
0�
0�
0�	0�	0�	0�	0�	0�	0�	0�	0�	0�	0�	0�	0����	0�	0�	0�	0�	0�	0s�E8F3�3F7�:F7c��dD]�}tjtj��}|�|��t|��5}|�||�����ddd��n#1swxYwY��dS)N)Ng�@)r�r]�
settimeoutr�r��
gettimeout)r��timeoutr�ras    r"�test_timeoutzBasicSocketTests.test_timeoutQs���(�	;�	;�G��
�f�n�-�-�A�
�L�L��!�!�!�!�!�$�$�
;��� � ��"�-�-�/�/�:�:�:�
;�
;�
;�
;�
;�
;�
;�
;�
;�
;�
;����
;�
;�
;�
;��	;�	;s�)A<�<B	�B	c���tjtjtjtjg}tjtjtjtjg}tj	j
tj	jtj	jg}|D]�}|�
|���5t�tj��}|�t"��5}|xj|zc_ddd��n#1swxYwY|�dt)|j����ddd��n#1swxYwY��|D]�}t-|��s�|�
|���5|�t"��5}t�|��ddd��n#1swxYwY|�d|j�d�t)|j����ddd��n#1swxYwY��|D]�}t1|��s�|�
|���5t�tj��}|�t"��5}||_ddd��n#1swxYwY|jj�d|j��}	|�d|	�d�t)|j����ddd��n#1swxYwY��dS)Nr�z4ssl.OP_NO_SSL*/ssl.OP_NO_TLS* options are deprecated)rer�z is deprecated)r9rF)r
r�r�r�r�rr�PROTOCOL_TLSv1_2r`rrrrr�rnrb�assertWarns�DeprecationWarning�optionsr�r]�warningrfr!rcrQ�	__class__�__name__)
r�r�	protocols�versionsr�rU�cmrer9�version_texts
          r"�test_openssl111_deprecationsz-BasicSocketTests.test_openssl111_deprecationsZs.���O�������	
��
��� �� ���	
�	�
�N� ��N� ��N�"�
���	�	�F����V��,�,�
�
��n�n�S�%<�=�=���%�%�&8�9�9�*�R��K�K�6�)�K�K�*�*�*�*�*�*�*�*�*�*�*����*�*�*�*�� � �J���
�O�O����	
�
�
�
�
�
�
�
�
�
�
����
�
�
�
��"�		�		�H�#�H�-�-�
�����x��0�0�
�
��%�%�&8�9�9�-�R��N�N�8�,�,�,�-�-�-�-�-�-�-�-�-�-�-����-�-�-�-�� � �8�8�=�8�8�8���
�O�O����
�
�
�
�
�
�
�
�
�
�
����
�
�
�
�� �	�	�G�"�7�+�+�
�����g��.�.�
�
��n�n�S�%<�=�=���%�%�&8�9�9�2�R�*1�C�'�2�2�2�2�2�2�2�2�2�2�2����2�2�2�2�*1�*;�*D�*D�*D�g�l�l�S��� � �7�<�7�7�7���
�O�O����
�
�
�
�
�
�
�
�
�
�
����
�
�
�
��	�	s��)?E�(D�9E�D	�	E�D	�
+E�E	�E	�:H�F<�0H�<G�H�G�4H�H	�H	�:?K&�9J
�K&�
J�K&�J�AK&�&K*	�-K*	c��tj��}|�tdtj|t
���|�tdtj|d���|�tdtj|dd���t�|dt
���5}|�td|jtd	f��ddd��n#1swxYwY|�t��5}tj��5}t�|t�
��ddd��n#1swxYwYddd��n#1swxYwY|�|jj
tj��|�t��5}tj��5}t�|t
t���ddd��n#1swxYwYddd��n#1swxYwY|�|jj
tj��|�t��5}tj��5}t�|tt���ddd��n#1swxYwYddd��n#1swxYwY|�|jj
tj��dS)Nzcertfile must be specified�r�z5certfile must be specified for server-side operationsT�r�r\�r�r�z!can't connect in server-side modei��r��r�r�)r�r�r�r
r�r�connect�HOSTr�rg�NONEXISTINGCERTr��	exception�errno�ENOENT)r�r�r�r�s    r"�test_errors_sslwrapz$BasicSocketTests.test_errors_sslwrap�s����}�������z�4����x�	�	A�	A�	A�	
���z�O����4�	�	A�	A�	A�	
���z�O���$�D�2�	�	O�	O�	O��_�_�T�t�h�_�
G�
G�	>�1��"�"�:�/R�%&�Y��t��
>�
>�
>�	>�	>�	>�	>�	>�	>�	>�	>�	>�	>�	>����	>�	>�	>�	>��
�
�w�
'�
'�	@�2�����
@�D�������?�?�?�
@�
@�
@�
@�
@�
@�
@�
@�
@�
@�
@����
@�
@�
@�
@�	@�	@�	@�	@�	@�	@�	@�	@�	@�	@�	@����	@�	@�	@�	@�	
�����+�U�\�:�:�:�
�
�
�w�
'�
'�	@�2�����
@�D�����%�� �@�@�@�
@�
@�
@�
@�
@�
@�
@�
@�
@�
@�
@����
@�
@�
@�
@�	@�	@�	@�	@�	@�	@�	@�	@�	@�	@�	@����	@�	@�	@�	@�	
�����+�U�\�:�:�:�
�
�
�w�
'�
'�	G�2�����
G�D�����,�o� �G�G�G�
G�
G�
G�
G�
G�
G�
G�
G�
G�
G�
G����
G�
G�
G�
G�	G�	G�	G�	G�	G�	G�	G�	G�	G�	G�	G����	G�	G�	G�	G�	
�����+�U�\�:�:�:�:�:s��7*C-�-C1�4C1�E+�&"E�E+�E	�E+�E	�E+�+E/�2E/�:H�(H�6H�H	�H�	H	�
H�H� H�(K�<(J0�$K�0J4	�4K�7J4	�8K�K�Kc��tj�tj�t��ptjd|��}t
j��}|�|j��|�	tj��5t||���ddd��dS#1swxYwYdS)z;Check that trying to use the given client certificate failsrr�N)
rrrrr�curdirr��
addCleanup�closer�r
r�r��r�r�r�s   r"�
bad_cert_testzBasicSocketTests.bad_cert_test�s����7�<�<������ 9� 9� F�R�Y� *�H�6�6���}��������
�#�#�#�
�
�
�s�|�
,�
,�	0�	0��T�&.�
0�
0�
0�
0�	0�	0�	0�	0�	0�	0�	0�	0�	0�	0�	0�	0����	0�	0�	0�	0�	0�	0s�B;�;B?�B?c�0�|�d��dS)z Wrapping with an empty cert filer@N�r�r�s r"�test_empty_certz BasicSocketTests.test_empty_cert�s�����>�*�*�*�*�*r$c�0�|�d��dS)z:Wrapping with a badly formatted certificate (syntax error)rANr�r�s r"�test_malformed_certz$BasicSocketTests.test_malformed_cert�s�����=�)�)�)�)�)r$c�0�|�d��dS)z2Wrapping with a badly formatted key (syntax error)rBNr�r�s r"�test_malformed_keyz#BasicSocketTests.test_malformed_key�s�����<�(�(�(�(�(r$c�t
��d�}�fd�}ddi}||d��||d��||d��||d��||d	��||d
��ddi}||d��||d
��||d��||d��||d��ddi}||d��||d��||d��||d��||d��ddi}||d��||d	��||d��ddi}||d
��||d��||d��||d��ddi}||d��||d��||d��d�d���d��}dd |fffi}|||��dd!i}|||��dd"i}|||��d#�d���d��}dd |fffi}||d$�d���d����||d%�d���d����||d&�d���d����||d'�d���d����d(d)d*d+�}||d,��||d-��||d.��||d/��d0d1d2�}||d3��||d4��||d5��dd6d7�}||d8��||d9��||d:��||d;��||d<��||d=��||d>��tjrMdd?d7�}||d@��||dA��||dB��||dC��||dD��||d>��d0dEd2�}||d3��dFdGdHd+�}||d3��dFdEdHd+�}||dI����t
tjdd����t
tjid��ddJi}��tj	dK��5t�|dL��ddd��n#1swxYwYddMi}��tj	dN��5t�|dO��ddd��n#1swxYwYddPi}��tj	dQ��5t�|dR��ddd��n#1swxYwYddSi}��tj	dT��5t�|dU��ddd��n#1swxYwYddVi}��tj	dW��5t�|dX��ddd��n#1swxYwYdYD]N}��t
��5t�
|��ddd��n#1swxYwY�OdZD]/}��t�
|�����0tjr2d[D]1}��t�
|�����0dSdS)\Nc�<�t�||��dSrX)r
�match_hostname)�certr�s  r"�okz0BasicSocketTests.test_match_hostname.<locals>.ok�s�����t�X�.�.�.�.�.r$c�`����tjtj||��dSrX)r�r
�CertificateErrorr�)r�r�r�s  �r"r8z2BasicSocketTests.test_match_hostname.<locals>.fail�s9������c�2�!�0�$��
B�
B�
B�
B�
Br$r7)))r.�example.comr�zExAmple.cOmzwww.example.comz.example.comzexample.org�exampleXcom)))r.z*.a.comz	foo.a.comz
bar.foo.a.comza.comzXa.comz.a.com)))r.zf*.comzfoo.comzf.comzbar.comzbar.foo.com)rrznull.python.org)))r.z	*.*.a.com)))r.za.*.comz	a.foo.comza..comupüthon.python.org�idna�asciir.)))r.z
x*.python.org)))r.zxn--p*.python.orguwww*.pythön.orguwww.pythön.orguwww1.pythön.orguftp.pythön.orgupythön.orgzJun 26 21:41:46 2011 GMT)))r.�linuxfrz.org))r1�linuxfr.org)r1�linuxfr.comr*)r4r7r8r�r�r,r�zDec 18 23:59:59 2011 GMT)r�)r�
California�)r+z
Mountain View�)r-z
Google Inc�)r.�mail.google.com)r4r7r�z	gmail.comr�)�r1r�)r#�10.11.12.13)r#�14.15.16.17r.)r7r8r�r�z127.1z14.15.16.17 z14.15.16.17 extra dataz14.15.16.18zexample.net)r�)r#z2001:0:0:0:0:0:0:CAFE
)r#z2003:0:0:0:0:0:0:BABA
z
2001::cafez
2003::babaz2003::baba z2003::baba extra dataz
2003::bebe)rr�r�r�zDec 18 23:59:59 2099 GMT)rr�r�r�))r+�blablaz
google.com)))r.za*b.example.comz5partial wildcards in leftmost label are not supportedzaxxb.example.com)))r.zwww.*.example.comz2wildcard can only be present in the leftmost labelzwww.sub.example.com)))r.za*b*.example.comztoo many wildcardszaxxbxxc.example.com)))r.�*z7sole wildcard without additional labels are not support�host)))r.z*.comz%hostname 'com' doesn't match '\*.com'�com)�1r\z1.2.3z	256.0.0.1z127.0.0.1/24)r/z192.168.0.1)z::1z2001:db8:85a3::8a2e:370:7334)�encode�decoder�IPV6_ENABLEDr�r�r
r�r�r��_inet_patonrO)r�r�r8r�r��invalid�ipaddrs`      r"�test_match_hostnamez$BasicSocketTests.test_match_hostname�s�
���	/�	/�	/�	B�	B�	B�	B�	B��>�?��
��4�����
��4�������T�$�%�%�%���T�>�"�"�"���T�=�!�!�!���T�=�!�!�!��:�;��
��4�������T�?�#�#�#���T�7������T�8������T�8�����9�:����T�9������T�7������T�9������T�;������T�=�!�!�!��D�E��
��4�1�2�2�2���T�=�!�!�!���T�$�%�%�%��<�=����T�?�#�#�#���T�7������T�8������T�8�����:�;����T�;������T�8������T�7����$�*�*�6�2�2�9�9�'�B�B���l�D�1�3�5�6��
��4������@�A����T�4�����D�E����T�4����"�(�(��0�0�7�7��@�@���l�D�1�3�5�6����T�$�+�+�F�3�3�:�:�7�C�C�D�D�D���T�%�,�,�V�4�4�;�;�G�D�D�E�E�E���T�$�+�+�F�3�3�:�:�7�C�C�D�D�D���T�=�'�'��/�/�6�6�w�?�?�@�@�@�7�?�#C�D�D��
	��4�����
��4�������T�?�#�#�#���T�>�"�"�"�7�B�C�C��	��4�"�#�#�#���T�;������T�<� � � �?�#@�A�A��
	��4�����
��4�������T�7������T�>�"�"�"���T�+�,�,�,���T�=�!�!�!���T�=�!�!�!��%�	&�B�'C�D�D�D�

�B�t�\�"�"�"��B�t�\�"�"�"��D��}�%�%�%��D��.�/�/�/��D��|�$�$�$��D��}�%�%�%�
7�C�D�D��
	
��T�$�%�%�%�7�B�#>�?�?��	��4�"�#�#�#�7�C�#=�>�>��	
��T�<� � � �	
���*�c�&8�$�
�N�N�N����*�c�&8�"�m�L�L�L��B�C��
�
#�
#��$�G�I�I�	9�	9�
���t�%7�8�8�8�	9�	9�	9�	9�	9�	9�	9�	9�	9�	9�	9����	9�	9�	9�	9�
�D�E��
�
#�
#��$�D�F�F�	<�	<�
���t�%:�;�;�;�	<�	<�	<�	<�	<�	<�	<�	<�	<�	<�	<����	<�	<�	<�	<�
�C�D��
�
#�
#��$�$�&�&�	<�	<�
���t�%:�;�;�;�	<�	<�	<�	<�	<�	<�	<�	<�	<�	<�	<����	<�	<�	<�	<�
�4�5��
�
#�
#��$�I�K�K�	-�	-�
���t�V�,�,�,�	-�	-�	-�	-�	-�	-�	-�	-�	-�	-�	-����	-�	-�	-�	-�
�8�9��
�
#�
#��$�8�:�:�	,�	,�
���t�U�+�+�+�	,�	,�	,�	,�	,�	,�	,�	,�	,�	,�	,����	,�	,�	,�	,�G�	)�	)�G��"�"�:�.�.�
)�
)�����(�(�(�
)�
)�
)�
)�
)�
)�
)�
)�
)�
)�
)����
)�
)�
)�
)��2�	5�	5�F��O�O�C�O�O�F�3�3�4�4�4�4��%�	9�A�
9�
9��������� 7� 7�8�8�8�8�	9�	9�
9�
9sl�&R�R�R�=S%�%S)�,S)�T<�<U�U�+V�V�V�W*�*W.�1W.�X:�:X>	�X>	c���t�tj��}tj��5}|�t
|j|dd���ddd��dS#1swxYwYdS)NTz
some.hostname�r�)r
rnrar�r�r�r�)r�rUr�s   r"�test_server_sidez!BasicSocketTests.test_server_side�s����n�n�S�4�5�5��
�]�_�_�	?�����j�#�/�4��.=�
�
?�
?�
?�	?�	?�	?�	?�	?�	?�	?�	?�	?�	?�	?�	?����	?�	?�	?�	?�	?�	?s�%A*�*A.�1A.c��tjd��}tjtj��}|�|�����t|d���5}|�t��5|�d��ddd��n#1swxYwYddd��n#1swxYwY|�	��dS)N�r/rF��do_handshake_on_connectzunknown-type)
r��
create_serverr]r��getsocknamer�r�r��get_channel_bindingr�)r�r��cras    r"�test_unknown_channel_bindingz-BasicSocketTests.test_unknown_channel_binding�s3��� �!1�2�2���M�&�.�)�)��	�	�	�!�-�-�/�/�"�"�"�
�a��
?�
?�
?�	7�2��"�"�:�.�.�
7�
7��&�&�~�6�6�6�
7�
7�
7�
7�
7�
7�
7�
7�
7�
7�
7����
7�
7�
7�
7�	7�	7�	7�	7�	7�	7�	7�	7�	7�	7�	7����	7�	7�	7�	7�	
���	�	�	�	�	s6�+B?�B(�B?�(B,	�,B?�/B,	�0B?�?C�C�
tls-unique�*'tls-unique' channel binding not availablec���tjtj��}t|��5}|�|�d����ddd��n#1swxYwYtjtj��}t|dt
���5}|�|�d����ddd��dS#1swxYwYdS)Nr�Tr�)r�r]r��assertIsNoner�rrss   r"�test_tls_unique_channel_bindingz0BasicSocketTests.test_tls_unique_channel_binding�se��
�M�&�.�)�)��
�a�
 �
 �	D�B����b�4�4�\�B�B�C�C�C�	D�	D�	D�	D�	D�	D�	D�	D�	D�	D�	D����	D�	D�	D�	D�
�M�&�.�)�)��
�a�T�H�
E�
E�
E�	D�����b�4�4�\�B�B�C�C�C�	D�	D�	D�	D�	D�	D�	D�	D�	D�	D�	D�	D����	D�	D�	D�	D�	D�	Ds#�)A#�#A'�*A'�#)C�C� Cc�n�ttjtj����}t|��}|�t
��5}d}t
j��ddd��n#1swxYwY|�|t|j
jd����dSr�)r�r�r]r�r}r`r�
gc_collect�assertInr]r�rv)r�rar3r�s    r"�test_dealloc_warnz"BasicSocketTests.test_dealloc_warn�s���
�f�m�F�N�;�;�
<�
<����H�H��
�
�
�o�
.�
.�	!�"��B��� � � �	!�	!�	!�	!�	!�	!�	!�	!�	!�	!�	!����	!�	!�	!�	!�	
�
�
�a��R�Z�_�Q�/�0�0�1�1�1�1�1s�A7�7A;�>A;c���t���}|�t|��d��|�|tj��t
j��5}t|d<t|d<t���}|�|j
t��|�|jt��ddd��dS#1swxYwYdS)N��SSL_CERT_DIR�
SSL_CERT_FILE)r
�get_default_verify_pathsr�rdrJ�DefaultVerifyPathsr�EnvironmentVarGuard�CAPATHr�cafiler&)r��paths�envs   r"�test_get_default_verify_pathsz.BasicSocketTests.test_get_default_verify_paths�s
���,�,�.�.������U���Q�'�'�'����e�S�%;�<�<�<�
�
*�
,�
,�	3��"(�C���#+�C�� ��0�0�2�2�E����U�\�8�4�4�4����U�\�6�2�2�2�	3�	3�	3�	3�	3�	3�	3�	3�	3�	3�	3�	3����	3�	3�	3�	3�	3�	3s�0A.C+�+C/�2C/r�Windows specificc��|�t�d����|�t�d����|�ttj��|�t
tjd��t
��}dD�]
}t�|��}|�|t��|D]�}|�|t��|�
t|��d��|\}}}|�|t��|�
|ddh��|�|tttf��t!|ttf��r|�|���Ӑ�d}|�
||��dS)	N�CA�ROOTr\)r�r�r�x509_asn�
pkcs_7_asn�1.3.6.1.5.5.7.3.1)rOr
�enum_certificatesr�r��WindowsError�setrJ�listrLr�rd�bytesr��	frozenset�boolr\�update)	r��
trust_oids�	storename�store�elementr��enc�trust�
serverAuths	         r"�test_enum_certificatesz'BasicSocketTests.test_enum_certificates�s�������-�-�d�3�3�4�4�4�����-�-�f�5�5�6�6�6����)�S�%:�;�;�;����,��(=�r�B�B�B��U�U�
�'�	-�	-�I��)�)�)�4�4�E��!�!�%��.�.�.� �
-�
-���%�%�g�u�5�5�5�� � ��W���q�1�1�1�#*� ��c�5��%�%�d�E�2�2�2��
�
�c�J��#=�>�>�>��%�%�e�i��d�-C�D�D�D��e�i��%5�6�6�-��%�%�e�,�,�,��
-�)�
��
�
�j�*�-�-�-�-�-r$c�d�|�t�d����|�ttj��|�t
tjd��t�d��}|�|t��|D]}|�|t��|�	t|��d��|�|dt��|�|dddh����dS)Nr�r\�rr�r�r�)
rOr
�	enum_crlsr�r�r�rJr�rLr�rdr�r�)r��crlsr�s   r"�test_enum_crlszBasicSocketTests.test_enum_crls�s������
�
�d�+�+�,�,�,����)�S�]�3�3�3����,��
�r�:�:�:��}�}�T�"�"�����d�D�)�)�)��	B�	B�G��!�!�'�5�1�1�1����S��\�\�1�-�-�-��!�!�'�!�*�e�4�4�4��M�M�'�!�*�z�<�&@�A�A�A�A�		B�	Br$c�0�d}t�d��}|�||��|�|jd��|�|jd��|�|jd��|�|jd��|�|tj��|�ttjd��tj�
d��}|�||��|�|tj��|�ttjj
d��|�td��5tj�
d��ddd��n#1swxYwYtd	��D]�}	tj�
|��}|�|jt��|�|jt��|�|jt��|�|jttd��f����#t$rY��wxYwtj�d��}|�||��|�|tj��|�tj�d��|��|�tj�d��|��|�td
��5tj�d��ddd��dS#1swxYwYdS)N)�r��TLS Web Server Authenticationr�r�rr�r���zunknown NID 100000i����zunknown object 'serverauth'�
serverauth)r
�_ASN1Objectr��nid�	shortname�longname�oidrJr�r��fromnidr��rangerKr]�type�fromname)r��expected�val�i�objs     r"�test_asn1objectz BasicSocketTests.test_asn1object�s���)���o�o�1�2�2������h�'�'�'������#�&�&�&�������5�5�5������'F�G�G�G������"5�6�6�6����c�3�?�3�3�3����*�c�o�|�D�D�D��o�%�%�c�*�*������h�'�'�'����c�3�?�3�3�3����*�c�o�&=�r�B�B�B�
�
#�
#�J�0D�
E�
E�	,�	,��O�#�#�F�+�+�+�	,�	,�	,�	,�	,�	,�	,�	,�	,�	,�	,����	,�	,�	,�	,��t���		B�		B�A�
B��o�-�-�a�0�0���%�%�c�g�s�3�3�3��%�%�c�m�S�9�9�9��%�%�c�l�C�8�8�8��%�%�c�g��T�$�Z�Z�/@�A�A�A�A��
�
�
�
���
�����o�&�&�'F�G�G������h�'�'�'����c�3�?�3�3�3������1�1�,�?�?��J�J�J������1�1�2E�F�F�!�	#�	#�	#�
�
#�
#�J�0M�
N�
N�	3�	3��O�$�$�\�2�2�2�	3�	3�	3�	3�	3�	3�	3�	3�	3�	3�	3�	3����	3�	3�	3�	3�	3�	3s6� F,�,F0�3F0�	I8�8
J�J� N�N�Nc��t�d��}|�tjjtj��|�tjj|��|�tjjjd��|�tjjjd��|�tjjjd��t�d��}|�tjj	tj��|�tjj	|��|�tjj	jd��|�tjj	jd��|�tjj	jd��dS)Nr�rr�z1.3.6.1.5.5.7.3.2��
clientAuth)
r
rrJ�Purpose�SERVER_AUTHr�r	r
r�CLIENT_AUTH)r�rs  r"�test_purpose_enumz"BasicSocketTests.test_purpose_enum
sd���o�o�1�2�2�����c�k�5�s��G�G�G������0�#�6�6�6������0�4�c�:�:�:������0�:�L�I�I�I������0�4�1�	3�	3�	3��o�o�1�2�2�����c�k�5�s��G�G�G������0�#�6�6�6������0�4�c�:�:�:������0�:�L�I�I�I������0�4�1�	3�	3�	3�	3�	3r$c��tjtjtj��}|�|j��|�t��5}t|tj	���ddd��n#1swxYwY|�
t|j��d��t�
tj��}|�t��5}|�|��ddd��n#1swxYwY|�
t|j��d��dS)N�r�z!only stream sockets are supported)r�r]�
SOCK_DGRAMr�r�r�rnr�r
r�r�r]r�rnrbr�)r�r��cxrUs    r"�test_unsupported_dtlsz&BasicSocketTests.test_unsupported_dtlss}���M�&�.�&�*;�<�<������� � � �
�
�
�2�
3�
3�	9�r��Q�#�-�8�8�8�8�	9�	9�	9�	9�	9�	9�	9�	9�	9�	9�	9����	9�	9�	9�	9�����R�\�*�*�,O�P�P�P��n�n�S�4�5�5��
�
�
�2�
3�
3�	�r��O�O�A����	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�����R�\�*�*�,O�P�P�P�P�Ps$�B�B
�
B
�7D�D� Dc�b�|�t�|��|��dSrX)r�r
�cert_time_to_seconds)r��
timestring�	timestamps   r"�cert_time_okzBasicSocketTests.cert_time_ok&s,������1�1�*�=�=�y�I�I�I�I�Ir$c��|�t��5t�|��ddd��dS#1swxYwYdSrX)r�r�r
r#)r�r$s  r"�cert_time_failzBasicSocketTests.cert_time_fail)s���
�
�
�z�
*�
*�	1�	1��$�$�Z�0�0�0�	1�	1�	1�	1�	1�	1�	1�	1�	1�	1�	1�	1����	1�	1�	1�	1�	1�	1s�A�A�
Az)local time needs to be different from UTCc�^�|�dd��|�dd��dS)NzMay  9 00:00:00 2007 GMTg�C��A�Jan  5 09:34:43 2018 GMT���ѓ�A)r&r�s r"�"test_cert_time_to_seconds_timezonez3BasicSocketTests.test_cert_time_to_seconds_timezone-s8��
	
���4�l�C�C�C����4�l�C�C�C�C�Cr$c�L�d}d}|�||��|�t�|���|��|�d|��|�d|��|�d��|�d��|�d��|�d	��|�d
��|�d��|�d��d
}|�d|��|�d|��|�dd��|�dd��|�dd��|�d��|�dd��dS)Nr*r+)�	cert_timezJan 05 09:34:43 2018 GMTzJaN  5 09:34:43 2018 GmTzJan  5 09:34 2018 GMTzJan  5 09:34:43 2018zJan  5 09:34:43 2018 UTCzJan 35 09:34:43 2018 GMTzJon  5 09:34:43 2018 GMTzJan  5 24:00:00 2018 GMTzJan  5 09:60:43 2018 GMTg�W�AzDec 31 23:59:60 2008 GMTzJan  1 00:00:00 2009 GMTzJan  5 09:34:59 2018 GMTi�FOZzJan  5 09:34:60 2018 GMTi�FOZzJan  5 09:34:61 2018 GMTi�FOZzJan  5 09:34:62 2018 GMTzDec 31 23:59:59 9999 GMTg�� �MB)r&r�r
r#r()r�r$�ts�
newyear_tss    r"�test_cert_time_to_secondsz*BasicSocketTests.test_cert_time_to_seconds5s���/�
�
�����*�b�)�)�)�����1�1�J�1�G�G��L�L�L����4�b�9�9�9����4�b�9�9�9����3�4�4�4����2�3�3�3����6�7�7�7����6�7�7�7����6�7�7�7����6�7�7�7����6�7�7�7�!�
����4�j�A�A�A����4�j�A�A�A����4�j�A�A�A����4�j�A�A�A����4�j�A�A�A����6�7�7�7�	
���4�n�E�E�E�E�Er$�LC_ALLr\c���d�}|�����dkr|�d��|�dd��|�|��dz��dS)Nc�,�tjdd��S)Nz%b)	r�r�rrA�r�rrr)r��strftimerYr$r"�local_february_namezNBasicSocketTests.test_cert_time_to_seconds_locale.<locals>.local_february_name\s���=��'B�C�C�Cr$�febz>locale-specific month name needs to be different from C localezFeb  9 00:00:00 2007 GMTg`�r�Az  9 00:00:00 2007 GMT)�lower�skipTestr&r()r�r7s  r"� test_cert_time_to_seconds_localez1BasicSocketTests.test_cert_time_to_seconds_localeXs���	D�	D�	D��� � �&�&�(�(�E�1�1��M�M�4�
5�
5�
5�	
���4�l�C�C�C����/�/�1�1�4K�K�L�L�L�L�Lr$c��tjtj��}|�|j��t	j|��}t
tjtj��tj���}|�|j��|�	t|f��}tjtj
tjtjf}|�||��dS)Nr)r�r]r�r�r�	bind_portr�r
r��
connect_exr�r��ECONNREFUSED�EHOSTUNREACH�	ETIMEDOUT�EWOULDBLOCKr�)r��server�portr��rc�errorss      r"�test_connect_ex_errorz&BasicSocketTests.test_connect_ex_errorgs�����v�~�.�.�������%�%�%��&�v�.�.���V�]�6�>�:�:�&)�&7�
9�
9�
9������� � � �
�\�\�4��,�
'�
'��
��� 2�E�O���
��	
�
�
�b�&�!�!�!�!�!r$c���t��\}}}t|���}|5|�tj��|���5}|�t
|jf��|�|�d��d��|�|�	d��d��ddd��n#1swxYwYddd��dS#1swxYwYdS)N�r�r�rr$)
r��ThreadedEchoServerr�r�r�r�rDr�rhrl�r�r�r�r�rCr�s      r"�test_read_write_zeroz%BasicSocketTests.test_read_write_zerowsb��3B�3D�3D�0����#�N�;�;�;��
�	1�	1��+�+�F�M�O�O�<D�,�F�F�
1�IJ��	�	�4���-�.�.�.�� � �������C�0�0�0�� � �������a�0�0�0�	
1�
1�
1�
1�
1�
1�
1�
1�
1�
1�
1����
1�
1�
1�
1�	1�	1�	1�	1�	1�	1�	1�	1�	1�	1�	1�	1����	1�	1�	1�	1�	1�	1s6�)C&�A4C�C&�C	�C&�C	�C&�&C*�-C*N)5r��
__module__�__qualname__r�r�r�r�r�r�r	rr'r1r?rZr�cpython_onlyrcrtrzr��ignore_deprecationr�r�r�r�r�r�r�r�rt�
skipUnlessr
�CHANNEL_BINDING_TYPESr�r�r�r��platformr�rrrr!r&r(r�r,r1�run_with_localer;rGrLrYr$r"r�r�Ksx������@�@�@�(A�A�A�
E�
E�
E�!�!�!�
+�+�+�L�L�L�4P�P�P�:
�
�
�*3�3�3�:
�
�
�*
N�
N�
N�!
�!
�!
�F
��%�%���%�0�0�0�$;�;�;�3�3�3�j�;�;���;�:0�0�0�+�+�+�*�*�*�)�)�)��D9�D9���D9�L?�?�?�����X����)B�B�E�G�G�D�D�G�G�D�2�2�2�
3�
3�
3��X�����0�2D�E�E�.�.�F�E�.�0�X�����0�2D�E�E�B�B�F�E�B�%3�%3�%3�N3�3�3�"	Q�	Q�	Q�J�J�J�1�1�1��X������D�F�F�D�D�F�F�D�!F�!F�!F�F�W��X�r�*�*�M�M�+�*�M�"�"�"� 	1�	1�	1�	1�	1r$r�c��eZdZd�Zd�Zejedkd��d���Zd�Z	d�Z
d�Zd	�Ze
d
���Zejeejd��d��d
���Zd�Zd�Zd�Zd�Zejed��d���Zd�Zd�Zejejd��d���Zd�Zd�Zd�Z d�Z!d�Z"eje#j$dkd��d���Z%eje#j$dkd ��ejee#d!��d"��d#�����Z&d$�Z'd%�Z(d&�Z)d'�Z*d(�Z+d)�Z,d*�Z-d+S),�ContextTestsc�b�tD]q}t|��r`tj��5t�|��}ddd��n#1swxYwY|�|j|���rtj��5t���}ddd��n#1swxYwY|�|jtj��|�	ttjd��|�	ttjd��dS)Nr�*)�	PROTOCOLSrfrr�r
rnr�rer`r�r�)r�rerUs   r"�test_constructorzContextTests.test_constructor�sw��!�	9�	9�H���)�)�
9�$�3�5�5�3�3��.�.��2�2�C�3�3�3�3�3�3�3�3�3�3�3����3�3�3�3�� � ���x�8�8�8��
�
+�
-�
-�	#�	#��.�.�"�"�C�	#�	#�	#�	#�	#�	#�	#�	#�	#�	#�	#����	#�	#�	#�	#������s�'7�8�8�8����*�c�n�b�9�9�9����*�c�n�b�9�9�9�9�9s#�A�A	�A	�
B3�3B7�:B7c�>�t�tj��}|�d��|�d��|�tjd��5|�d��ddd��dS#1swxYwYdS)N�ALL�DEFAULT�No cipher can be selected�^$:,;?*'dorothyx)r
rnrbrSr�r��r�rUs  r"�test_cipherszContextTests.test_ciphers�s����n�n�S�4�5�5������������	�"�"�"�
�
#�
#�C�L�2M�
N�
N�	0�	0��O�O�.�/�/�/�	0�	0�	0�	0�	0�	0�	0�	0�	0�	0�	0�	0����	0�	0�	0�	0�	0�	0s�/B�B�Br�z+Test applies only to Python default ciphersc�l�t�tj��}|���}|D]x}|d}|�d|��|�d|��|�d|��|�d|��|�d|���ydS)Nr!�PSK�SRP�MD5�RC4�3DES)r
rnrb�get_ciphers�assertNotIn)r�rUr��suiter!s     r"�test_python_ciphersz ContextTests.test_python_ciphers�s����n�n�S�4�5�5���/�/�#�#���	+�	+�E���=�D����U�D�)�)�)����U�D�)�)�)����U�D�)�)�)����U�D�)�)�)����V�T�*�*�*�*�
	+�	+r$c
��t�tj��}|�d��t	d�|���D����}hd�}|�|��}|�t|��ddt|���dt|������dS)N�AESGCMc3�&K�|]}|dV��
dS)r!NrY)�.0rEs  r"�	<genexpr>z0ContextTests.test_get_ciphers.<locals>.<genexpr>�s&����9�9�!�A�f�I�9�9�9�9�9�9r$>�AES128-GCM-SHA256�AES256-GCM-SHA384�DHE-RSA-AES128-GCM-SHA256�DHE-RSA-AES256-GCM-SHA384�ECDHE-RSA-AES128-GCM-SHA256�ECDHE-RSA-AES256-GCM-SHA384�ECDHE-ECDSA-AES128-GCM-SHA256�ECDHE-ECDSA-AES256-GCM-SHA384r�z
got: z
expected: )
r
rnrbrSr�rh�intersectionr�rd�sorted)r�rU�namesrrys     r"�test_get_cipherszContextTests.test_get_ciphers�s����n�n�S�4�5�5������!�!�!��9�9�s���'8�'8�9�9�9�9�9��	
�	
�	
���)�)�(�3�3���������q�"Y�F�5�M�M�"Y�"Y�v�h�GW�GW�"Y�"Y�	
�	
�	
�	
�	
r$c�|�t�tj��}tjtjztjz}|ttztztztzz}|�||j��tj��5|xjtjzc_ddd��n#1swxYwY|�|tjz|j��tj��5|jtjz|_ddd��n#1swxYwY|�||j��d|_|�d|jtjz��|�t"��5d|_ddd��n#1swxYwY|�t"��5ddz|_ddd��n#1swxYwY|�t$��5d|_ddd��dS#1swxYwYdS)Nrrr�rf�abc)r
rnrb�OP_ALLr�r�rCrFrDrErGr�rrr�r�r��
OverflowErrorr�)r�rU�defaults   r"r�zContextTests.test_options�s(���n�n�S�4�5�5���:���/�#�/�A���%�(C�C�$�%�'9�:�.�/�	0��	
����#�+�.�.�.��
+�
-�
-�	+�	+��K�K�3�?�*�K�K�	+�	+�	+�	+�	+�	+�	+�	+�	+�	+�	+����	+�	+�	+�	+�����3�?�2�C�K�@�@�@��
+�
-�
-�	;�	;��;�#�/�)9�9�C�K�	;�	;�	;�	;�	;�	;�	;�	;�	;�	;�	;����	;�	;�	;�	;�����#�+�.�.�.��������C�K�3�?�*:�:�;�;�;��
�
�}�
-�
-�	�	��C�K�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�
�
�
�}�
-�
-�	#�	#��s�(�C�K�	#�	#�	#�	#�	#�	#�	#�	#�	#�	#�	#����	#�	#�	#�	#�
�
�
�y�
)�
)�	 �	 ��C�K�	 �	 �	 �	 �	 �	 �	 �	 �	 �	 �	 �	 ����	 �	 �	 �	 �	 �	 sZ�#C
�
C�C�D7�7D;�>D;�'F;�;F?�F?� G7�7G;�>G;�H1�1H5�8H5c��tj��5t�tj��}ddd��n#1swxYwY|�|jtj��tj|_|�|jtj��tj	|_|�|jtj	��tj|_|�|jtj��|�
t��5d|_ddd��n#1swxYwY|�
t��5d|_ddd��n#1swxYwYt�tj
��}|�|jtj��|�|j��t�tj��}|�|jtj	��|�|j��dS�NrX)rr�r
rnr`r�r�r�r�r�r�r�r�ra�assertFalser�rbrOr`s  r"�test_verify_mode_protocolz&ContextTests.test_verify_mode_protocol�st��
�
+�
-�
-�	3�	3��.�.��!1�2�2�C�	3�	3�	3�	3�	3�	3�	3�	3�	3�	3�	3����	3�	3�	3�	3�	
�����#�-�8�8�8��+��������#�*;�<�<�<��+��������#�*;�<�<�<��-��������#�-�8�8�8�
�
�
�y�
)�
)�	#�	#�"�C�O�	#�	#�	#�	#�	#�	#�	#�	#�	#�	#�	#����	#�	#�	#�	#�
�
�
�z�
*�
*�	!�	!� �C�O�	!�	!�	!�	!�	!�	!�	!�	!�	!�	!�	!����	!�	!�	!�	!��n�n�S�4�5�5�������#�-�8�8�8�����+�,�,�,��n�n�S�4�5�5�������#�*;�<�<�<�����*�+�+�+�+�+s5�%A�A	�A	�1E�E	�E	�*E>�>F�Fc���t�tj��}|�|j��tjred|_|�|j��d|_|�|j��d|_|�|j��dS|�t��5d|_ddd��dS#1swxYwYdS�NTF)	r
rnrbrO�hostname_checks_common_name�HAS_NEVER_CHECK_COMMON_NAMEr�r��AttributeErrorr`s  r"� test_hostname_checks_common_namez-ContextTests.test_hostname_checks_common_name�s���n�n�S�4�5�5������7�8�8�8��*�		7�.2�C�+��O�O�C�;�<�<�<�.3�C�+����S�<�=�=�=�.2�C�+��O�O�C�;�<�<�<�<�<��"�"�>�2�2�
7�
7�26��/�
7�
7�
7�
7�
7�
7�
7�
7�
7�
7�
7�
7����
7�
7�
7�
7�
7�
7s�
C�C#�&C#c���t�tj��}tjjtjjtjjh}tjjtjjh}|�	|j
|��|�	|j|��tjj|_
tjj|_|�
|j
tjj��|�
|jtjj��tjj|_
tjj|_|�
|j
tjj��|�
|jtjj��tjj|_|�
|jtjj��tjj|_|�	|jtjjtjjtjjh��tjj|_
|�	|j
tjjtjjh��|�t ��5d|_
ddd��n#1swxYwYt#tj��r�t�tj��}|�	|j
|��|�
|jtjj��|�t ��5tjj|_
ddd��n#1swxYwY|�t ��5tjj|_ddd��dS#1swxYwYdSdSr�)r
rnrarrorrmrp�TLSv1_3r�rQrjrr�rr�r�rfr)r�rU�
minimum_range�
maximum_ranges    r"�test_min_max_versionz!ContextTests.test_min_max_versions���n�n�S�4�5�5��

�N�,��N� ��N�"�

�
�
�N�,��N�"�	
�
�	
�
�
����	
�	
�	
�	
�
�
����	
�	
�	
�"�n�4���!�n�4����������!7�	
�	
�	
�	
�������!7�	
�	
�	
�"�n�>���!�n�2����������!A�	
�	
�	
�	
�������!5�	
�	
�	
�"�n�>����������!A�	
�	
�	
�"�n�>����
�
���
�^�
!�3�>�#9�3�>�;O�P�	
�	
�	
�
"�n�>����
�
���
�^�
#�S�^�%;�<�	
�	
�	
�
�
�
�z�
*�
*�	%�	%�"$�C��	%�	%�	%�	%�	%�	%�	%�	%�	%�	%�	%����	%�	%�	%�	%��C�0�1�1�	;��.�.��!5�6�6�C��M�M��#�]�
�
�
�
����#�S�^�%E�
�
�
��"�"�:�.�.�
G�
G�&)�n�&F��#�
G�
G�
G�
G�
G�
G�
G�
G�
G�
G�
G����
G�
G�
G�
G��"�"�:�.�.�
;�
;�&)�n�&:��#�
;�
;�
;�
;�
;�
;�
;�
;�
;�
;�
;�
;����
;�
;�
;�
;�
;�
;�	;�	;s6�;K�K�K�6N�N� N�>O"�"O&�)O&�security_levelzrequires OpenSSL >= 1.1.0c��t�tj��}hd�}|�|j|��dS)N>rr�r�rrAr5)r
rnrbr�r�)r�rU�security_level_ranges   r"�test_security_levelz ContextTests.test_security_levelOsJ��
�n�n�S�4�5�5�� 
� 
� 
��	
�
�
�c�(�*>�?�?�?�?�?r$c��t�tj��}ttdd��}|�|jtj|z��tj|_|�|jtj��tj|_|�|jtj��tj|_|�|jtj��tj	|_|�|jtj	��tjtj
z|_|�|jtjtj
z��|�t��5d|_ddd��dS#1swxYwYdS)N�VERIFY_X509_TRUSTED_FIRSTr)
r
rnrar_r��verify_flags�VERIFY_DEFAULT�VERIFY_CRL_CHECK_LEAF�VERIFY_CRL_CHECK_CHAIN�VERIFY_ALLOW_PROXY_CERTS�VERIFY_X509_STRICTr�r�)r�rU�tfs   r"�test_verify_flagszContextTests.test_verify_flagsbs����n�n�S�4�5�5��
�S�5�q�
9�
9������)�3�+=��+B�C�C�C��4�������)�3�+D�E�E�E��5�������)�3�+E�F�F�F��-�������)�3�+=�>�>�>��7�������)�3�+G�H�H�H��4�s�7M�M�������)��2�S�5K�K�	M�	M�	M�
�
�
�y�
)�
)�	$�	$�#�C��	$�	$�	$�	$�	$�	$�	$�	$�	$�	$�	$�	$����	$�	$�	$�	$�	$�	$s�%F:�:F>�F>c���t�tj��}|�td���|�tt���|�t|jt���|�t��5}|�t��ddd��n#1swxYwY|�	|j
jtj��|�
tjd��5|�t��ddd��n#1swxYwY|�
tjd��5|�t ��ddd��n#1swxYwYt�tj��}|�t"t$��|�t"t$���|�t&t(���|�
tjd��5|�t"��ddd��n#1swxYwY|�
tjd��5|�t$��ddd��n#1swxYwY|�
tjd��5|�t$t"���ddd��n#1swxYwYt�tj��}|�
tjd��5|�t*t$��ddd��n#1swxYwY|�t,t.���|�t,t.������|�t,t3t.��������|�t"t4t.��|�t"t4t.�����|�t"t4t3t.�������|�
td��5|�t,d���ddd��n#1swxYwY|�tj��5|�t,d���ddd��n#1swxYwY|�
t6d	��5|�t,d
dz���ddd��n#1swxYwYd�}d
�}d�}d�}d�}d�}d�}	Gd�d��}
|�t,|���|�t,|���|�t,|���|�t,|
�����|�t,|
��j���|�tj��5|�t,|���ddd��n#1swxYwY|�
t6d	��5|�t,|���ddd��n#1swxYwY|�
td��5|�t,|���ddd��n#1swxYwY|�
t:d��5|�t,|	���ddd��n#1swxYwY|�t|	���dS)Nr��PEM libr�zkey values mismatch)�passwordzshould be a stringT�badpasszcannot be longer�ai�c��tSrX��KEY_PASSWORDrYr$r"�getpass_unicodez:ContextTests.test_load_cert_chain.<locals>.getpass_unicode�s���r$c�4�t���SrX)r�r�rYr$r"�
getpass_bytesz8ContextTests.test_load_cert_chain.<locals>.getpass_bytes�s���&�&�(�(�(r$c�N�tt�����SrX)r�r�r�rYr$r"�getpass_bytearrayz<ContextTests.test_load_cert_chain.<locals>.getpass_bytearray�s���\�0�0�2�2�3�3�3r$c��dS)Nr�rYrYr$r"�getpass_badpassz:ContextTests.test_load_cert_chain.<locals>.getpass_badpass�s���9r$c��ddzS)Nr�irYrYr$r"�getpass_hugez7ContextTests.test_load_cert_chain.<locals>.getpass_huge�s
���;�'�'r$c��dS)NrrYrYr$r"�getpass_bad_typez;ContextTests.test_load_cert_chain.<locals>.getpass_bad_type�s���1r$c� �td���)N�
getpass error)�	ExceptionrYr$r"�getpass_exceptionz<ContextTests.test_load_cert_chain.<locals>.getpass_exception�s���O�,�,�,r$c��eZdZd�Zd�ZdS)�:ContextTests.test_load_cert_chain.<locals>.GetPassCallablec��tSrXr�r�s r"�__call__zCContextTests.test_load_cert_chain.<locals>.GetPassCallable.__call__����#�#r$c��tSrXr�r�s r"�getpasszBContextTests.test_load_cert_chain.<locals>.GetPassCallable.getpass�r�r$N)r�rMrNr�r�rYr$r"�GetPassCallabler��s2������
$�
$�
$�
$�
$�
$�
$�
$r$r�zmust return a stringr�)r
rnrar�rr�r�rgr�r�r�r�r�r�r��BADCERT�	EMPTYCERT�ONLYCERT�ONLYKEY�BYTES_ONLYCERT�
BYTES_ONLYKEYr4�CERTFILE_PROTECTEDr�r�r��ONLYKEY_PROTECTEDr�r�r�)r�rUr�r�r�r�r�r�r�r�r�s           r"�test_load_cert_chainz!ContextTests.test_load_cert_chainvs�
���n�n�S�4�5�5�����H�d��3�3�3����H�h��7�7�7����)�S�%8�(��K�K�K�
�
�
�w�
'�
'�	1�2�����0�0�0�	1�	1�	1�	1�	1�	1�	1�	1�	1�	1�	1����	1�	1�	1�	1������+�U�\�:�:�:�
�
#�
#�C�L�)�
<�
<�	)�	)�����(�(�(�	)�	)�	)�	)�	)�	)�	)�	)�	)�	)�	)����	)�	)�	)�	)�
�
#�
#�C�L�)�
<�
<�	+�	+����	�*�*�*�	+�	+�	+�	+�	+�	+�	+�	+�	+�	+�	+����	+�	+�	+�	+��n�n�S�4�5�5�����H�g�.�.�.����X�w��?�?�?����^�]��K�K�K�
�
#�
#�C�L�)�
<�
<�	*�	*�����)�)�)�	*�	*�	*�	*�	*�	*�	*�	*�	*�	*�	*����	*�	*�	*�	*�
�
#�
#�C�L�)�
<�
<�	)�	)�����(�(�(�	)�	)�	)�	)�	)�	)�	)�	)�	)�	)�	)����	)�	)�	)�	)�
�
#�
#�C�L�)�
<�
<�	D�	D�����(��C�C�C�	D�	D�	D�	D�	D�	D�	D�	D�	D�	D�	D����	D�	D�	D�	D��n�n�S�4�5�5��
�
#�
#�C�L�2G�
H�
H�	8�	8����
�w�7�7�7�	8�	8�	8�	8�	8�	8�	8�	8�	8�	8�	8����	8�	8�	8�	8�	���.���F�F�F����.��9L�9L�9N�9N��O�O�O����.�%.�|�/B�/B�/D�/D�%E�%E�	�	G�	G�	G����H�&7��F�F�F����H�&7��9L�9L�9N�9N�O�O�O����H�&7�%�l�&9�&9�&;�&;�<�<�	>�	>�	>�
�
#�
#�I�/C�
D�
D�	C�	C���� 2�T��B�B�B�	C�	C�	C�	C�	C�	C�	C�	C�	C�	C�	C����	C�	C�	C�	C�
�
�
�s�|�
,�
,�	H�	H���� 2�Y��G�G�G�	H�	H�	H�	H�	H�	H�	H�	H�	H�	H�	H����	H�	H�	H�	H�
�
#�
#�J�0B�
C�
C�	L�	L�
��� 2�T�F�]��K�K�K�		L�	L�	L�	L�	L�	L�	L�	L�	L�	L�	L����	L�	L�	L�	L�	 �	 �	 �	)�	)�	)�	4�	4�	4�	�	�	�	(�	(�	(�	�	�	�	-�	-�	-�	$�	$�	$�	$�	$�	$�	$�	$�
	���.���I�I�I����.���G�G�G����.�9J��K�K�K����.���9J�9J��K�K�K����.�%4�_�%6�%6�%>�	�	@�	@�	@�
�
�
�s�|�
,�
,�	N�	N���� 2�_��M�M�M�	N�	N�	N�	N�	N�	N�	N�	N�	N�	N�	N����	N�	N�	N�	N�
�
#�
#�J�0B�
C�
C�	K�	K���� 2�\��J�J�J�	K�	K�	K�	K�	K�	K�	K�	K�	K�	K�	K����	K�	K�	K�	K�
�
#�
#�I�/E�
F�
F�	O�	O���� 2�=M��N�N�N�	O�	O�	O�	O�	O�	O�	O�	O�	O�	O�	O����	O�	O�	O�	O�
�
#�
#�I��
?�
?�	P�	P���� 2�=N��O�O�O�	P�	P�	P�	P�	P�	P�	P�	P�	P�	P�	P����	P�	P�	P�	P�	���H�/@��A�A�A�A�As��#C
�
C�C�E�E
�
E
�1F�F�F�	I0�0I4�7I4�K�K�	K�-"L�L�"L�*!N�N�N�4T�T!�$T!�U0�0U4�7U4� W�W�	W�/[�[�[�>\'�'\+�.\+�
]6�6]:�=]:�_�_	�_	c��t�tj��}|�t��|�td���|�t
��|�t
d���|�t|j��|�t|jddd��|�t��5}|�t��ddd��n#1swxYwY|�
|jjtj
��|�tjd��5|�t ��ddd��n#1swxYwY|�tt"��|�tt$���|�t|jdd��dS)N)r�r&r��r&T)r
rnrar�r�BYTES_CERTFILEr�r�rgr�r�r�r�r�r�r�r�r��BYTES_CAPATH�r�rUr�s   r"�test_load_verify_locationsz'ContextTests.test_load_verify_locations�s���n�n�S�4�5�5���!�!�(�+�+�+��!�!��$�!�?�?�?��!�!�.�1�1�1��!�!���!�E�E�E����)�S�%>�?�?�?����)�S�%>��d�D�Q�Q�Q�
�
�
�w�
'�
'�	7�2��%�%�o�6�6�6�	7�	7�	7�	7�	7�	7�	7�	7�	7�	7�	7����	7�	7�	7�	7������+�U�\�:�:�:�
�
#�
#�C�L�)�
<�
<�	/�	/��%�%�g�.�.�.�	/�	/�	/�	/�	/�	/�	/�	/�	/�	/�	/����	/�	/�	/�	/��!�!�(�F�3�3�3��!�!�(�<�!�@�@�@�	
���)�S�%>��d�K�K�K�K�Ks$�.D�D�D�*F�F�Fc�
�tt��5}|���}ddd��n#1swxYwYt�|��}tt
��5}|���}ddd��n#1swxYwYt�|��}t�tj��}|�|�	��dd��|�
|���|�|�	��dd��|�
|���|�|�	��dd��|�
|���|�|�	��dd��t�tj��}d�||f��}|�
|���|�|�	��dd��t�tj��}d|d|d	|d
g}|�
d�|�����|�|�	��dd��t�tj��}|�
|���|�
|���|�|�	��dd��|�
|���|�|�	��dd��t�tj��}d�||f��}|�
|���|�|�	��dd��t�tj��}|�t|j
t���|�tjd��5|�
d
���ddd��n#1swxYwY|�tjd��5|�
d���ddd��dS#1swxYwYdS)N�x509_car��cadatar�r�r��head�other�again�tailr$z4no start line: cadata does not contain a certificate�brokenz6not enough data: cadata does not contain a certificatesbroken)rKr4rLr
r5�CAFILE_NEURONIOrnrbr��cert_store_statsr�rr�r��objectr�r�)r�rN�
cacert_pem�
cacert_der�neuronio_pem�neuronio_derrU�combineds        r"�test_load_verify_cadataz$ContextTests.test_load_verify_cadata�sJ��
�-�
 �
 �	"�A������J�	"�	"�	"�	"�	"�	"�	"�	"�	"�	"�	"����	"�	"�	"�	"��-�-�j�9�9�
�
�/�
"�
"�	$�a��6�6�8�8�L�	$�	$�	$�	$�	$�	$�	$�	$�	$�	$�	$����	$�	$�	$�	$��/�/��=�=���n�n�S�4�5�5������-�-�/�/�	�:�A�>�>�>��!�!��!�4�4�4�����-�-�/�/�	�:�A�>�>�>��!�!��!�6�6�6�����-�-�/�/�	�:�A�>�>�>��!�!��!�6�6�6�����-�-�/�/�	�:�A�>�>�>��n�n�S�4�5�5���9�9�j�,�7�8�8���!�!��!�2�2�2�����-�-�/�/�	�:�A�>�>�>��n�n�S�4�5�5���J���w� �&�*���!�!����8�)<�)<�!�=�=�=�����-�-�/�/�	�:�A�>�>�>��n�n�S�4�5�5���!�!��!�4�4�4��!�!��!�6�6�6�����-�-�/�/�	�:�A�>�>�>��!�!��!�4�4�4�����-�-�/�/�	�:�A�>�>�>��n�n�S�4�5�5���8�8�Z��6�7�7���!�!��!�2�2�2�����-�-�/�/�	�:�A�>�>�>��n�n�S�4�5�5�����)�S�%>�v��N�N�N�
�
#�
#��L�B�
�
�	7�	7�
�%�%�X�%�6�6�6�		7�	7�	7�	7�	7�	7�	7�	7�	7�	7�	7����	7�	7�	7�	7�
�
#�
#��L�D�
�
�	8�	8�
�%�%�Y�%�7�7�7�		8�	8�	8�	8�	8�	8�	8�	8�	8�	8�	8�	8����	8�	8�	8�	8�	8�	8sB�6�:�:�/B�B�B�R%�%R)�,R)�S4�4S8�;S8�)Avoid mixing debug/release CRT on Windowsc���t�tj��}|�t��t
jdkr|�t��|�t|j��|�t|jd��|�t��5}|�t��ddd��n#1swxYwY|�|j
jtj��|�tj��5}|�t"��ddd��dS#1swxYwYdS)N�nt)r
rnra�load_dh_params�DHFILErr!�BYTES_DHFILEr�r�rMr�r�r�r�r�r�rr�s   r"�test_load_dh_paramsz ContextTests.test_load_dh_paramss����n�n�S�4�5�5�����6�"�"�"�
�7�d�?�?����|�,�,�,����)�S�%7�8�8�8����)�S�%7��>�>�>�
�
�
�0�
1�
1�	0�R�����/�/�/�	0�	0�	0�	0�	0�	0�	0�	0�	0�	0�	0����	0�	0�	0�	0������+�U�\�:�:�:�
�
�
�s�|�
,�
,�	)�����x�(�(�(�	)�	)�	)�	)�	)�	)�	)�	)�	)�	)�	)�	)����	)�	)�	)�	)�	)�	)s$�C+�+C/�2C/�?E'�'E+�.E+c���tjtjhD]P}t�|��}|�|���dddddddddddd����QdS)Nr)�numberr��connect_good�connect_renegotiate�accept�accept_good�accept_renegotiate�hits�misses�timeouts�
cache_full)r
rbrarnr��
session_statsr�s   r"�test_session_statszContextTests.test_session_stats)s����-�s�/F�G�	�	�E��.�.��'�'�C����S�.�.�0�0��� !�'(�� �&'�����3�3�
�
�
�
�	�	r$c�v�t�tj��}|���dSrX)r
rnrb�set_default_verify_pathsr`s  r"�test_set_default_verify_pathsz*ContextTests.test_set_default_verify_paths:s0���n�n�S�4�5�5���$�$�&�&�&�&�&r$z#ECDH disabled on this OpenSSL buildc��t�tj��}|�d��|�d��|�t
|j��|�t
|jd��|�t|jd��|�t|jd��dS)N�
prime256v1s
prime256v1�foo�foo)r
rnra�set_ecdh_curver�r�r�r`s  r"�test_set_ecdh_curvez ContextTests.test_set_ecdh_curve@s����n�n�S�4�5�5�����<�(�(�(����=�)�)�)����)�S�%7�8�8�8����)�S�%7��>�>�>����*�c�&8�%�@�@�@����*�c�&8�&�A�A�A�A�Ar$c��t�tj��}|�t|j��|�t|jd��|�t|jd��|�t|j|��d�}|�d��|�|��dS)NrAr\c��dSrXrY)r��
servernamerUs   r"�
dummycallbackz5ContextTests.test_sni_callback.<locals>.dummycallbackS����Dr$)r
rnrar�r��set_servername_callback)r�rUr�s   r"�test_sni_callbackzContextTests.test_sni_callbackJs����n�n�S�4�5�5��	
���)�S�%@�A�A�A����)�S�%@�!�D�D�D����)�S�%@�"�E�E�E����)�S�%@�#�F�F�F�	�	�	��#�#�D�)�)�)��#�#�M�2�2�2�2�2r$c��t�tj��}|fd�}|�|��t	j|��}~~t
j��|�|��d��dS)Nc��dSrXrY)r�r�rU�cycles    r"r�z>ContextTests.test_sni_callback_refcycle.<locals>.dummycallback\rr$)	r
rnrarr^r_�gc�collectr�)r�rUr�rbs    r"�test_sni_callback_refcyclez'ContextTests.test_sni_callback_refcycleXs����n�n�S�4�5�5��7:�	�	�	�	��#�#�M�2�2�2�
�[��
�
����
�
�����
�
�b�b�d�d�D�!�!�!�!�!r$c�J�t�tj��}|�|���dddd���|�t��|�|���dddd���|�t��|�|���dddd���|�t��|�|���dddd���dS)Nr)r��crl�x509r�r�)	r
rnrbr�r�r�rr�r4r`s  r"�test_cert_store_statsz"ContextTests.test_cert_store_statsds(���n�n�S�4�5�5������-�-�/�/��!�Q�/�/�	1�	1�	1����H�%�%�%�����-�-�/�/��!�Q�/�/�	1�	1�	1��!�!�(�+�+�+�����-�-�/�/��!�Q�/�/�	1�	1�	1��!�!�-�0�0�0�����-�-�/�/��!�Q�/�/�	1�	1�	1�	1�	1r$c��t�tj��}|�|���g��|�t��|�|���g��|�t��|�|���dddddddd�g��tt��5}|�	��}ddd��n#1swxYwYt�
|��}|�|�d��|g��dS)	N)))r-zRoot CA))rzhttp://www.cacert.org))r.zCA Cert Signing Authority))rzsupport@cacert.orgzMar 29 12:29:49 2033 GMTzMar 30 12:29:49 2003 GMT�00)z!https://www.cacert.org/revoke.crlr)r3r4r5r6r>r7r9T)r
rnrbr��get_ca_certsr�rr4rKrLr5)r�rUrNr;�ders     r"�test_get_ca_certszContextTests.test_get_ca_certsrs����n�n�S�4�5�5������)�)�+�+�R�0�0�0��!�!�(�+�+�+�����)�)�+�+�R�0�0�0��!�!�-�0�0�0�����)�)�+�+�D�5�5�"�'M�E����
�
	�
	�
	��-�
 �
 �	�A��&�&�(�(�C�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	��&�&�s�+�+������)�)�$�/�/�#��7�7�7�7�7s�.D�D�Dc��t�tj��}|���t�tj��}|�tjj��|���t�tj��}|�tjj��t�tj��}|�t|jd��|�t|jd��dS)Nr)	r
rnrb�load_default_certsrrrr�r�r`s  r"�test_load_default_certsz$ContextTests.test_load_default_certs�s����n�n�S�4�5�5����� � � ��n�n�S�4�5�5�����s�{�6�7�7�7���� � � ��n�n�S�4�5�5�����s�{�6�7�7�7��n�n�S�4�5�5�����)�S�%;�T�B�B�B����)�S�%;�]�K�K�K�K�Kr$rznot-Windows specificc�N�t�tj��}tj��5}t
|d<t|d<|���|�|�	��dddd���ddd��dS#1swxYwYdS)Nr�r�rr�)r
rr�)
r
rnrbrr�r�rrr�r�)r�rUr�s   r"�test_load_default_certs_envz(ContextTests.test_load_default_certs_env�s����n�n�S�4�5�5��
�
*�
,�
,�	Z��"(�C���#+�C�� ��"�"�$�$�$����S�1�1�3�3�Q��VW�5X�5X�Y�Y�Y�		Z�	Z�	Z�	Z�	Z�	Z�	Z�	Z�	Z�	Z�	Z�	Z����	Z�	Z�	Z�	Z�	Z�	Zs�AB�B�!Br�rz3Debug build does not share environment between CRTsc��t�tj��}|���|���}t�tj��}tj��5}t|d<t|d<|���|dxxdz
cc<|�	|���|��ddd��dS#1swxYwYdS)Nr�r�rr�)
r
rnrbrr�rr�r�rr�)r�rU�statsr�s    r"�#test_load_default_certs_env_windowsz0ContextTests.test_load_default_certs_env_windows�s���n�n�S�4�5�5����� � � ��$�$�&�&���n�n�S�4�5�5��
�
*�
,�
,�	<��"(�C���#+�C�� ��"�"�$�$�$��&�M�M�M�Q��M�M�M����S�1�1�3�3�U�;�;�;�	<�	<�	<�	<�	<�	<�	<�	<�	<�	<�	<�	<����	<�	<�	<�	<�	<�	<s�A!C2�2C6�9C6c��|�|jtjztj��tdkr(|�|jtzt��t
dkr(|�|jt
zt
��tdkr(|�|jtzt��tdkr*|�|jtzt��dSdSr�)r�rr
r�rCrDrErFr`s  r"�_assert_context_optionsz$ContextTests._assert_context_options�s��������s��6���H�H�H���!�!����S�[�+<�<�.�
0�
0�
0��q� � ����S�[�+;�;�-�
/�
/�
/���"�"����S�[�+=�=�/�
1�
1�
1�&�!�+�+����S�[�+F�F�8�
:�
:�
:�
:�
:�,�+r$c���t���}|�|jtj��|�|jtj��|�|j��|�	|��tt��5}|���}ddd��n#1swxYwYt�tt|���}|�|jtj��|�|jtj��|�	|��t�tjj��}|�|jtj��|�|jtj��|�	|��dS)N)r�r&r�)r
�create_default_contextr�rerbr�r�rOr�rrKr�rLr�rrrar�)r�rUrNr�s    r"�test_create_default_contextz(ContextTests.test_create_default_context�s����(�(�*�*�������s�'>�?�?�?������#�*;�<�<�<�����*�+�+�+��$�$�S�)�)�)�
�*�
�
�	���V�V�X�X�F�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	��(�(�
�6�06�)�8�8�������s�'>�?�?�?������#�*;�<�<�<��$�$�S�)�)�)��(�(���)@�A�A�������s�'>�?�?�?������#�-�8�8�8��$�$�S�)�)�)�)�)s�'C�C�Cc�t�t���}|�|jtj��|�|jtj��|�|j��|�	|��ttj��r�tj
��5t�tj��}ddd��n#1swxYwY|�|jtj��|�|jtj��|�	|��tj
��5t�tjtjd���}ddd��n#1swxYwY|�|jtj��|�|jtj��|�|j��|�	|��t�tjj���}|�|jtj��|�|jtj��|�	|��dS)NT)r�r�)�purpose)r
�_create_stdlib_contextr�rerbr�r�r�r�rrfrrr�r|r�rOrrrar`s  r"�test__create_stdlib_contextz(ContextTests.test__create_stdlib_context�s����(�(�*�*�������s�'>�?�?�?������#�-�8�8�8�����+�,�,�,��$�$�S�)�)�)��C�.�/�/�	.� �/�1�1�
E�
E��0�0��1C�D�D��
E�
E�
E�
E�
E�
E�
E�
E�
E�
E�
E����
E�
E�
E�
E����S�\�3�+=�>�>�>����S�_�c�m�<�<�<��(�(��-�-�-�
�
+�
-�
-�	�	��,�,��$��+�#�-���C�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	
�����s�';�<�<�<������#�*;�<�<�<�����*�+�+�+��$�$�S�)�)�)��(�(���1H�(�I�I�������s�'>�?�?�?������#�-�8�8�8��$�$�S�)�)�)�)�)s$�?%C0�0C4�7C4�-2F+�+F/�2F/c� �tj��5t�tj��}ddd��n#1swxYwY|�|j��|�|jtj	��d|_|�
|j��|�|jtj��d|_tj|_|�|j��|�|jtj��d|_tj	|_d|_|�|j��|�|jtj	��d|_|�
|j��|�|jtj��d|_tj|_d|_|�|j��|�|jtj��d|_|�
|j��|�|jtj��|�
t��5tj	|_ddd��n#1swxYwYd|_|�|j��tj	|_|�|jtj	��dSr�)rr�r
rnr`r�r�r�r�r�rOr�r�r�r�r`s  r"�test_check_hostnamez ContextTests.test_check_hostname�s���
�
+�
-�
-�	3�	3��.�.��!1�2�2�C�	3�	3�	3�	3�	3�	3�	3�	3�	3�	3�	3����	3�	3�	3�	3�����+�,�,�,������#�-�8�8�8�"�������*�+�+�+������#�*;�<�<�<�"����+�������+�,�,�,������#�*;�<�<�<�#����-���"�������+�,�,�,������#�-�8�8�8�!�������*�+�+�+������#�*;�<�<�<�"����+���"�������+�,�,�,������#�*;�<�<�<�!�������*�+�+�+������#�*;�<�<�<��
�
�z�
*�
*�	,�	,�!�m�C�O�	,�	,�	,�	,�	,�	,�	,�	,�	,�	,�	,����	,�	,�	,�	,�"�������+�,�,�,��-��������#�-�8�8�8�8�8s#�%A�A	�A	�J,�,J0�3J0c��t�tj��}|�|j��|�|jtj��t�tj��}|�	|j��|�|jtj
��dSrX)r
rnrbrOr�r�r�r�rar�r�r`s  r"�test_context_client_serverz'ContextTests.test_context_client_server#s����n�n�S�4�5�5������*�+�+�+������#�*;�<�<�<��n�n�S�4�5�5������+�,�,�,������#�-�8�8�8�8�8r$c�.�Gd�dtj��}Gd�dtj��}t�tj��}||_||_|�tj��d���5}|�	||��ddd��n#1swxYwY|�
t���t���d���}|�	||��dS)Nc��eZdZdS)�;ContextTests.test_context_custom_class.<locals>.MySSLSocketN�r�rMrNrYr$r"�MySSLSocketr)/��������Dr$r+c��eZdZdS)�;ContextTests.test_context_custom_class.<locals>.MySSLObjectNr*rYr$r"�MySSLObjectr.2r,r$r/Tr�)r
r��	SSLObjectrnra�sslsocket_class�sslobject_classr�r�rJ�wrap_bior�)r�r+r/rUr�rs      r"�test_context_custom_classz&ContextTests.test_context_custom_class.sG��	�	�	�	�	�#�-�	�	�	�	�	�	�	�	�#�-�	�	�	��n�n�S�4�5�5��)���)���
�_�_�V�]�_�_�$�_�
?�
?�	5�4��!�!�$��4�4�4�	5�	5�	5�	5�	5�	5�	5�	5�	5�	5�	5����	5�	5�	5�	5��l�l�3�=�=�?�?�C�M�M�O�O��l�N�N�����c�;�/�/�/�/�/s�B.�.B2�5B2c���t�tj��}|�|jd��d|_|�|jd��d|_|�|jd��|�t��5d|_ddd��n#1swxYwY|�t��5d|_ddd��n#1swxYwYt�tj��}|�|jd��|�t��5d|_ddd��dS#1swxYwYdS)Nr�r�rr)	r
rnrar��num_ticketsr�r�r�rbr`s  r"�test_num_tickestzContextTests.test_num_tickest>s����n�n�S�4�5�5�������!�,�,�,���������!�,�,�,���������!�,�,�,�
�
�
�z�
*�
*�	!�	!� �C�O�	!�	!�	!�	!�	!�	!�	!�	!�	!�	!�	!����	!�	!�	!�	!�
�
�
�y�
)�
)�	#�	#�"�C�O�	#�	#�	#�	#�	#�	#�	#�	#�	#�	#�	#����	#�	#�	#�	#��n�n�S�4�5�5�������!�,�,�,�
�
�
�z�
*�
*�	 �	 ��C�O�	 �	 �	 �	 �	 �	 �	 �	 �	 �	 �	 �	 ����	 �	 �	 �	 �	 �	 s6�B2�2B6�9B6�C+�+C/�2C/�E$�$E(�+E(N).r�rMrNrZrartrQrrkr|r�r�r�rPr�rRr
rnr�r�r�r�r��skipIf�Py_DEBUG_WIN32r�r�r�r�r�rrrrrr�rSrrrrr"r$r&r4r7rYr$r"rVrV�s������
:�
:�
:�0�0�0��X��/�1�4�F�H�H�	+�	+�H�H�	+�
�
�
�&  �  �  �D,�,�,�07�7�7��L;�L;���L;�\�X������ 0�1�1�#���
@�
@�	��
@�$�$�$�(QB�QB�QB�fL�L�L�&=8�=8�=8�~�X�_�^�%P�Q�Q�)�)�R�Q�)����"'�'�'��X����'L�M�M�B�B�N�M�B�3�3�3�
"�
"�
"�1�1�1�8�8�8�8
L�
L�
L��X�_�S�\�W�,�.D�E�E�Z�Z�F�E�Z��X�����0�2D�E�E��X�_�W�W�S�"4�5�5�7l�m�m�<�<�n�m�F�E�<�
:�
:�
:�*�*�*�**�*�*�<*9�*9�*9�X	9�	9�	9�0�0�0�  � � � � r$rVc�T�eZdZd�Zejed��d���Zd�Zd�Z	dS)�
SSLErrorTestsc�j�t�dd��}|�t|��d��|�|jd��t�dd��}|�t|��d��|�|jd��dS)Nr�r�)r
r�r�r]r��SSLZeroReturnError)r��es  r"�test_strzSSLErrorTests.test_strRs����L�L��E�"�"������Q����'�'�'������!�$�$�$��"�"�1�e�,�,������Q����'�'�'������!�$�$�$�$�$r$r�c���t�tj��}|�tj��5}|�t��ddd��n#1swxYwY|�|jj	d��|�|jj
d��t|j��}|�|�
d��|��dS)N�PEM�
NO_START_LINEz"[PEM: NO_START_LINE] no start line)r
rnrbr�r�r�rr�r��library�reasonr]rOr^)r�rUr�r�s    r"�test_lib_reasonzSSLErrorTests.test_lib_reason\s���n�n�S�4�5�5��
�
�
�s�|�
,�
,�	)�����x�(�(�(�	)�	)�	)�	)�	)�	)�	)�	)�	)�	)�	)����	)�	)�	)�	)������-�u�5�5�5������,�o�>�>�>�������������%I�J�J�A�N�N�N�N�Ns�A+�+A/�2A/c��t�tj��}d|_tj|_t
jd��5}t
j|�	����}|�
d��|�|dd���5}|�tj
��5}|���ddd��n#1swxYwYt|j��}|�|�d��|��|�|jjtj��ddd��n#1swxYwYddd��dS#1swxYwYdS)NFr�r�z%The operation did not complete (read))r
rnrbr�r�r�r�r��create_connectionr��setblockingr�r��SSLWantReadError�do_handshaker]r�rOr^r�r��SSL_ERROR_WANT_READ)r�rUr�r�r�s     r"�
test_subclasszSSLErrorTests.test_subclassgs���n�n�S�4�5�5��"����-���
�
!�"2�
3�
3�		N�q��(������9�9�A�
�M�M�%� � � �����E�5��I�I�
N�Q��&�&�s�';�<�<�%���N�N�$�$�$�%�%�%�%�%�%�%�%�%�%�%����%�%�%�%����%�%��������-T� U� U�WX�Y�Y�Y�� � ���!3�S�5L�M�M�M�

N�
N�
N�
N�
N�
N�
N�
N�
N�
N�
N����
N�
N�
N�
N�		N�		N�		N�		N�		N�		N�		N�		N�		N�		N�		N�		N����		N�		N�		N�		N�		N�		Ns\�AE<�% E$�C&�E$�&C*�*E$�-C*�.A*E$�E<�$E(	�(E<�+E(	�,E<�<F�Fc�
�t���}|�t��5|�t���t���d���ddd��n#1swxYwY|�t��5|�t���t���d���ddd��n#1swxYwY|�t��5|�t���t���d���ddd��dS#1swxYwYdS)Nr\r�z.example.orgzexample.orgevil.com)r
rr�r�r3r�r�r`s  r"�test_bad_server_hostnamez&SSLErrorTests.test_bad_server_hostnameys���(�(�*�*��
�
�
�z�
*�
*�	-�	-��L�L������#�-�-�/�/�)+�
�
-�
-�
-�	-�	-�	-�	-�	-�	-�	-�	-�	-�	-�	-����	-�	-�	-�	-��
�
�z�
*�
*�	9�	9��L�L������#�-�-�/�/�)7�
�
9�
9�
9�	9�	9�	9�	9�	9�	9�	9�	9�	9�	9�	9����	9�	9�	9�	9��
�
�y�
)�
)�	D�	D��L�L������#�-�-�/�/�)B�
�
D�
D�
D�	D�	D�	D�	D�	D�	D�	D�	D�	D�	D�	D�	D����	D�	D�	D�	D�	D�	Ds8�AB�B�B�,AC?�?D�D�$AE8�8E<�?E<N)
r�rMrNr?rtr8r9rErLrNrYr$r"r;r;Psx������%�%�%��X�_�^�%P�Q�Q�O�O�R�Q�O�N�N�N�$
D�
D�
D�
D�
Dr$r;c�,�eZdZd�Zd�Zd�Zd�Zd�ZdS)�MemoryBIOTestsc��t���}|�d��|�|���d��|�|���d��|�d��|�d��|�|���d��|�|���d��|�d��|�|�d��d��|�|�d��d	��|�|�d��d��dS)
Nr�r$�barsfoobar�bazr�sbar��z)r
r�r�r�rL�r��bios  r"�test_read_writezMemoryBIOTests.test_read_write�s5���m�m�o�o���	�	�&������������V�,�,�,���������S�)�)�)��	�	�&�����	�	�&������������Y�/�/�/���������S�)�)�)��	�	�&����������!���e�,�,�,�������!���d�+�+�+�������!���c�*�*�*�*�*r$c�:�t���}|�|j��|�|���d��|�|j��|�d��|�|j��|���|�|j��|�|�d��d��|�|j��|�|�d��d��|�|j��|�|���d��|�|j��dS)Nr$r�r�sfor��o)	r
r�r��eofr�rLr��	write_eofrOrUs  r"�test_eofzMemoryBIOTests.test_eof�sF���m�m�o�o�������!�!�!���������S�)�)�)������!�!�!��	�	�&���������!�!�!��
�
���������!�!�!�������!���e�,�,�,������!�!�!�������!���d�+�+�+������ � � ���������S�)�)�)������ � � � � r$c�F�t���}|�|jd��|�d��|�|jd��td��D]8}|�d��|�|jd|z
dz
���9td��D]5}|�d��|�|j|dz���6|���|�|jd��dS)Nrr�rr�re)r
r�r��pendingr�rrL)r�rVrs   r"�test_pendingzMemoryBIOTests.test_pending�s���m�m�o�o�������a�(�(�(��	�	�&���������a�(�(�(��q���	1�	1�A��H�H�Q�K�K�K����S�[�!�A�#�a�%�0�0�0�0��q���	/�	/�A��I�I�d�O�O�O����S�[�!�A�#�.�.�.�.����
�
�
������a�(�(�(�(�(r$c���t���}|�d��|�|���d��|�td����|�|���d��|�t
d����|�|���d��t
td����}|ddd�}|�t��5|�t
|����ddd��dS#1swxYwYdS)Nr�rRrSs	noncontig���)	r
r�r�r�rLr��
memoryviewr��BufferError)r�rV�m�noncontig_writables    r"�test_buffer_typesz MemoryBIOTests.test_buffer_types�sg���m�m�o�o���	�	�&������������V�,�,�,��	�	�)�F�#�#�$�$�$���������V�,�,�,��	�	�*�V�$�$�%�%�%���������V�,�,�,��y��.�.�/�/���t�t��t�W��
�
�
�{�
+�
+�	6�	6��I�I�j�!3�4�4�5�5�5�	6�	6�	6�	6�	6�	6�	6�	6�	6�	6�	6�	6����	6�	6�	6�	6�	6�	6s�,#E�E �#E c�@�t���}|�t|jd��|�t|jd��|�t|jd��|�t|jd��dS)Nr�Tr�)r
r�r�r�r�rUs  r"�test_error_typeszMemoryBIOTests.test_error_types�s}���m�m�o�o�����)�S�Y��6�6�6����)�S�Y��5�5�5����)�S�Y��5�5�5����)�S�Y��2�2�2�2�2r$N)r�rMrNrWr\r_rfrhrYr$r"rPrP�s_������+�+�+�!�!�!� )�)�)�6�6�6�3�3�3�3�3r$rPc��eZdZd�Zd�ZdS)�SSLObjectTestsc���t���}|�td��5t�||��ddd��dS#1swxYwYdSr�)r
r�r�r�r0rUs  r"r�z SSLObjectTests.test_private_init�s����m�m�o�o��
�
#�
#�I�/C�
D�
D�	$�	$��M�M�#�s�#�#�#�	$�	$�	$�	$�	$�	$�	$�	$�	$�	$�	$�	$����	$�	$�	$�	$�	$�	$s�A�A"�%A"c��t��\}}}t���}t���}t���}t���}|�|||���}|�||d���}	t	d��D]�}
	|���n#tj$rYnwxYw|jr'|�|�	����	|	���n#tj$rYnwxYw|jr'|�|�	������|���|	���|�
tj��5|���ddd��n#1swxYwY|�|�	����|	���|�|�	����|���dS)Nr�Tr�r5)r�r
r�r3rrJrIr^r�rLr��unwrap)r��
client_ctx�
server_ctxr��c_in�c_out�s_in�s_out�clientrC�_s           r"�test_unwrapzSSLObjectTests.test_unwrap�sK��+:�+<�+<�(�
�J���}�}�����
�
�����}�}�����
�
�����$�$�T�5�(�$�K�K���$�$�T�5�d�$�C�C���q���	)�	)�A�
��#�#�%�%�%�%���'�
�
�
���
�����}�
)��
�
�5�:�:�<�<�(�(�(�
��#�#�%�%�%�%���'�
�
�
���
�����}�
)��
�
�5�:�:�<�<�(�(�(���������������
�
�s�3�
4�
4�	�	��M�M�O�O�O�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�
	
�
�
�5�:�:�<�<� � � ��
�
����	
�
�
�5�:�:�<�<� � � ��
�
�����s6�9C�C �C �D'�'D9�8D9�2G�G�GN)r�rMrNr�rvrYr$r"rjrj�s2������$�$�$�
(�(�(�(�(r$rjc���eZdZdZd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zd
�Ze
jejdkd��d
���Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�ZdS)�SimpleBackgroundTestsz?Tests that connect to a simple server running in the backgroundc��t�tj��|_|j�t
��t
|j���}|�|��t|j	f|_
dS)NrI)r
rnrar�r�r�rJ�enterContextr�rD�server_addr)r�rCs  r"�setUpzSimpleBackgroundTests.setUp�sl��!�n�n�S�-D�E�E�����+�+�O�<�<�<�#�D�,?�@�@�@�����&�!�!�!� �&�+�.����r$c��ttjtj��tj���5}|�|j��|�i|�����|�	|j
��ddd��n#1swxYwYttjtj��tjt���5}|�|j��|�
|�����|�	|j
��ddd��dS#1swxYwYdS)Nr�r�r�)r�r�r]r
r�r�r{r��getpeercertr�r�r�r�rOr�s  r"�test_connectz"SimpleBackgroundTests.test_connects���
�f�m�F�N�;�;�&)�m�5�5�5�	,�89�
�I�I�d�&�'�'�'����R������1�1�1����Q�]�+�+�+�		,�	,�	,�	,�	,�	,�	,�	,�	,�	,�	,����	,�	,�	,�	,��f�m�F�N�;�;�&)�&7�%/�1�1�1�	,�45�
�I�I�d�&�'�'�'��O�O�A�M�M�O�O�,�,�,����Q�]�+�+�+�	,�	,�	,�	,�	,�	,�	,�	,�	,�	,�	,�	,����	,�	,�	,�	,�	,�	,s%�AB!�!B%�(B%�)AE�E�Ec��ttjtj��tj���}|�|j��|�tjd|j	|j
��dS)Nr�certificate verify failed)r�r�r]r
r�r�r�r�r�r�r{r�s  r"�test_connect_failz'SimpleBackgroundTests.test_connect_failss��
�V�]�6�>�:�:�&)�&7�
9�
9�
9������� � � ����s�|�-H� �y�$�*:�	<�	<�	<�	<�	<r$c�^�ttjtj��tjt
���}|�|j��|�d|�	|j
����|�|�����dS)Nr~r)
r�r�r]r
r�r�r�r�r�r>r{rOrr�s  r"�test_connect_exz%SimpleBackgroundTests.test_connect_exs����V�]�6�>�:�:�&)�&7�%/�
1�
1�
1��	
����� � � �����A�L�L��)9�:�:�;�;�;�����
�
���(�(�(�(�(r$c���ttjtj��tjt
d���}|�|j��|�d��|�	|j
��}|�|dtj
tjf��tjg|ggd��		|���nV#tj$rtj|gggd��Yn,tj$rtjg|ggd��YnwxYw�l|�|�����dS)NF)r�r�r�rrv)r�r�r]r
r�r�r�r�rHr>r{r�r��EINPROGRESSrB�selectrJrI�SSLWantWriteErrorrOr�r�r�rEs   r"�test_non_blocking_connect_exz2SimpleBackgroundTests.test_non_blocking_connect_ex%sZ��
�V�]�6�>�:�:�&)�&7�%/�49�
;�
;�
;��	
����� � � �	�
�
�e����
�\�\�$�*�
+�
+���
�
�b�1�e�/��1B�C�D�D�D��
�b�1�#�r�3�'�'�'�	0�
0���� � � ����'�
0�
0�
0��
�q�c�2�r�3�/�/�/�/�/��(�
0�
0�
0��
�b�1�#�r�3�/�/�/�/�/�
0����
	0�	
����
�
���(�(�(�(�(s�C$�$'D6�
&D6�5D6c���t�tj��}d|_tj|_|�tjtj����5}|�	|j
��|�i|�����ddd��n#1swxYwY|�tjtj��d���5}|�	|j
��ddd��n#1swxYwYtj
|_|�t��|�tjtj����5}|�	|j
��|���}|�|��ddd��dS#1swxYwYdS)NF�dummyr�)r
rnrbr�r�r�r�r�r]r�r{r�rr�r�r�rO�r�rUr�r�s    r"�test_connect_with_contextz/SimpleBackgroundTests.test_connect_with_context?s1���n�n�S�4�5�5��"����-���
�_�_�V�]�6�>�:�:�
;�
;�	2�q�
�I�I�d�&�'�'�'����R������1�1�1�	2�	2�	2�	2�	2�	2�	2�	2�	2�	2�	2����	2�	2�	2�	2��_�_�V�]�6�>�:�:�,3��5�5�	(�89�
�I�I�d�&�'�'�'�	(�	(�	(�	(�	(�	(�	(�	(�	(�	(�	(����	(�	(�	(�	(��+����!�!�*�-�-�-�
�_�_�V�]�6�>�:�:�
;�
;�	"�q�
�I�I�d�&�'�'�'��=�=�?�?�D��O�O�D�!�!�!�	"�	"�	"�	"�	"�	"�	"�	"�	"�	"�	"�	"����	"�	"�	"�	"�	"�	"s8�.AB=�=C�C�;D"�"D&�)D&�	AG�G�!Gc�J�t�tj��}|�t	jtj��t���}|�|j��|�	tj
d|j|j��dS)Nr�r�)
r
rnrbr�r�r]r�r�r�r�r�r�r{)r�rUr�s   r"�test_connect_with_context_failz4SimpleBackgroundTests.test_connect_with_context_failSs����n�n�S�4�5�5���O�O��M�&�.�)�)�4�
�
�
��	
����� � � ����s�|�-H� !�	�4�+;�	=�	=�	=�	=�	=r$c�P�t�tj��}|�t���|�t
jtj��t���5}|�	|j
��|���}|�|��ddd��n#1swxYwYt�tj��}|�t���|�t
jtj��t���5}|�	|j
��|���}|�|��ddd��dS#1swxYwYdS)Nr�r�)r
rnrbr�r�r�r�r]r�r�r{rrOr�r�s    r"�test_connect_capathz)SimpleBackgroundTests.test_connect_capath`s����n�n�S�4�5�5���!�!��!�0�0�0�
�_�_�V�]�6�>�:�:�-E��G�G�	"�JK�
�I�I�d�&�'�'�'��=�=�?�?�D��O�O�D�!�!�!�		"�	"�	"�	"�	"�	"�	"�	"�	"�	"�	"����	"�	"�	"�	"��n�n�S�4�5�5���!�!��!�6�6�6�
�_�_�V�]�6�>�:�:�-E��G�G�	"�JK�
�I�I�d�&�'�'�'��=�=�?�?�D��O�O�D�!�!�!�		"�	"�	"�	"�	"�	"�	"�	"�	"�	"�	"�	"����	"�	"�	"�	"�	"�	"s&�8AC�C�C�
AF�F�"Fc���tt��5}|���}ddd��n#1swxYwYt�|��}t�tj��}|�|���|�tj	tj
��t���5}|�|j
��|���}|�|��ddd��n#1swxYwYt�tj��}|�|���|�tj	tj
��t���5}|�|j
��|���}|�|��ddd��dS#1swxYwYdS)Nr�r�)rKr�rLr
r5rnrbr�r�r�r]r�r�r{rrO)r�rNr;rrUr�r�s       r"�test_connect_cadataz)SimpleBackgroundTests.test_connect_cadatawsO��
�*�
�
�	���&�&�(�(�C�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	��&�&�s�+�+���n�n�S�4�5�5���!�!��!�-�-�-�
�_�_�V�]�6�>�:�:�-E��G�G�	"�JK�
�I�I�d�&�'�'�'��=�=�?�?�D��O�O�D�!�!�!�		"�	"�	"�	"�	"�	"�	"�	"�	"�	"�	"����	"�	"�	"�	"��n�n�S�4�5�5���!�!��!�-�-�-�
�_�_�V�]�6�>�:�:�-E��G�G�	"�JK�
�I�I�d�&�'�'�'��=�=�?�?�D��O�O�D�!�!�!�		"�	"�	"�	"�	"�	"�	"�	"�	"�	"�	"�	"����	"�	"�	"�	"�	"�	"s2�6�:�:�
AD�D!�$D!�AG+�+G/�2G/r�z*Can't use a socket as a file under Windowsc�b�ttjtj����}|�|j��|���}|���}|���tj	|d��|���tj��|�t��5}tj	|d��ddd��n#1swxYwY|�|jjt j��dSr�)r�r�r]r�r{�fileno�makefiler�rrLrrr�rgr�r�r��EBADF)r�ra�fdrNr>s     r"�test_makefile_closez)SimpleBackgroundTests.test_makefile_close�s��
�f�m�F�N�;�;�
<�
<��
�
�
�4�#�$�$�$�
�Y�Y�[�[���K�K�M�M��	���	�	�	�
���A����
���
�
�
�
�
����
�
�
�w�
'�
'�	�1��G�B��N�N�N�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	������*�E�K�8�8�8�8�8s�C:�:C>�C>c�P�tjtj��}|�|j��|�d��t|tjd���}|�|j	��d}		|dz
}|�
��nT#tj$rtj|ggg��Yn+tj
$rtjg|gg��YnwxYw�otjr$t j�d|z��dSdS)NF�r�r�rTr�z9
Needed %d calls to do_handshake() to establish session.
)r�r]r�r{rHr�r
r�r�r�rJrIr�r�rr�r�r�r�)r�r��counts   r"�test_non_blocking_handshakez1SimpleBackgroundTests.test_non_blocking_handshake�sE���M�&�.�)�)��	�	�	�$�"�#�#�#�	�
�
�e�����Q�&)�m�49�
;�
;�
;��	
����� � � ���	+�
+���
����� � � ����'�
+�
+�
+��
�q�c�2�r�*�*�*�*�*��(�
+�
+�
+��
�b�1�#�r�*�*�*�*�*�
+����	+��?�	d��J���Z�]b�b�c�c�c�c�c�	d�	ds�B"�"&C2�
%C2�1C2c�:�t|g|j�Rdti�dS)Nr�)�_test_get_server_certificater{r�r�s r"�test_get_server_certificatez1SimpleBackgroundTests.test_get_server_certificate�s)��$�T�N�D�,<�N�N�N�:�N�N�N�N�Nr$c	����|j\}}g��fd�}|j�|��t�||f��}|s|�d|�d|�d���t�||ft���}|s|�d|�d|�d���tjr)tj
�d|�d|�d|�d���|��||g��dS)	Nc�2����|��dSrX)�append)�ssl_sock�server_name�initial_context�server_namess   �r"�
servername_cbzLSimpleBackgroundTests.test_get_server_certificate_sni.<locals>.servername_cb�s�������,�,�,�,�,r$�No server certificate on �:�!�r��
Verified certificate for � is
r�)
r{r�rr
�get_server_certificater8r�rr�r�r�r�r�)r�r�rDr�r;r�s     @r"�test_get_server_certificate_sniz5SimpleBackgroundTests.test_get_server_certificate_sni�s(����%�
��d���	-�	-�	-�	-�	-���3�3�M�B�B�B��(�(�$���6�6���	H��I�I�I�4�4�4����F�G�G�G��(�(�$���
�(�K�K���	H��I�I�I�4�4�4����F�G�G�G��?�	^��J����D�D�D�RV�RV�RV�X[�X[�X[�\�]�]�]������d�|�4�4�4�4�4r$c�*�t|g|j�R�dSrX)�!_test_get_server_certificate_failr{r�s r"� test_get_server_certificate_failz6SimpleBackgroundTests.test_get_server_certificate_fail�s#��	*�$�B��1A�B�B�B�B�B�Br$c��d�}|j�|��|�tj��5t
�|jtd���ddd��dS#1swxYwYdS)Nc�.�tjd��dS)N皙�����?)r��sleep�r�r�r�s   r"r�zPSimpleBackgroundTests.test_get_server_certificate_timeout.<locals>.servername_cb�s���J�s�O�O�O�O�Or$皙�����?)r�ry)	r�rr�r�ryr
r�r{r�)r�r�s  r"�#test_get_server_certificate_timeoutz9SimpleBackgroundTests.test_get_server_certificate_timeout�s���	�	�	���3�3�M�B�B�B�
�
�
�v�~�
.�
.�	4�	4��&�&�t�'7�*�/2�
'�
4�
4�
4�	4�	4�	4�	4�	4�	4�	4�	4�	4�	4�	4�	4����	4�	4�	4�	4�	4�	4s�(A2�2A6�9A6c��ttjtj��tjd���5}|�|j��ddd��n#1swxYwYttjtj��tjd���5}|�|j��ddd��n#1swxYwY|�tjd��5tjtj��5}t|tjd���}|�|j��ddd��n#1swxYwYddd��dS#1swxYwYdS)Nr\)r�r�r]r^r_)	r�r�r]r
r�r�r{r�r�)r�r�r�s   r"raz"SimpleBackgroundTests.test_ciphers�sG��
�f�m�F�N�;�;�'*�}�e�E�E�E�	(�HI�
�I�I�d�&�'�'�'�	(�	(�	(�	(�	(�	(�	(�	(�	(�	(�	(����	(�	(�	(�	(��f�m�F�N�;�;�'*�}�i�I�I�I�	(�LM�
�I�I�d�&�'�'�'�	(�	(�	(�	(�	(�	(�	(�	(�	(�	(�	(����	(�	(�	(�	(��
#�
#�C�L�2M�
N�
N�	,�	,���v�~�.�.�
,�$�$�T�.1�m�EW�Y�Y�Y���	�	�$�*�+�+�+�
,�
,�
,�
,�
,�
,�
,�
,�
,�
,�
,����
,�
,�
,�
,�	,�	,�	,�	,�	,�	,�	,�	,�	,�	,�	,�	,����	,�	,�	,�	,�	,�	,sY�A � A$�'A$�#C
�
C�C�5E/�7E�E/�E	�E/�E	�E/�/E3�6E3c�Z�t�tj��}|�t���|�|���g��|�tjtj	��d���5}|�
|j��|���}|�
|��ddd��n#1swxYwY|�t|�����d��dS)Nr�r/r�r�)r
rnrbr�r�r�rr�r�r]r�r{rrOrdr�s    r"�test_get_ca_certs_capathz.SimpleBackgroundTests.test_get_ca_certs_capath�s2���n�n�S�4�5�5���!�!��!�0�0�0�����)�)�+�+�R�0�0�0�
�_�_�V�]�6�>�:�:�-8��:�:�	"�=>�
�I�I�d�&�'�'�'��=�=�?�?�D��O�O�D�!�!�!�		"�	"�	"�	"�	"�	"�	"�	"�	"�	"�	"����	"�	"�	"�	"�
	
����S�-�-�/�/�0�0�!�4�4�4�4�4s�AC+�+C/�2C/c���t�tj��}|�t���t�tj��}|�t���tjt
j��}|�|d���5}|�|j	��|�
|j|��|�
|jj|��||_|�
|j|��|�
|jj|��ddd��dS#1swxYwYdS)Nr�r/r�)
r
rnrbr�r�r�r]r�r�r{r�r��_sslobj)r��ctx1�ctx2r�ras     r"�test_context_setgetz)SimpleBackgroundTests.test_context_setget�s]���~�~�c�5�6�6���"�"�&�"�1�1�1��~�~�c�5�6�6���"�"�&�"�1�1�1��M�&�.�)�)��
�
�
�a��
�
=�
=�	4���J�J�t�'�(�(�(��M�M�"�*�d�+�+�+��M�M�"�*�,�d�3�3�3��B�J��M�M�"�*�d�+�+�+��M�M�"�*�,�d�3�3�3�
	4�	4�	4�	4�	4�	4�	4�	4�	4�	4�	4�	4����	4�	4�	4�	4�	4�	4s�4BE�E� Ec��|�dtj��}d}tj|��D]�}	d}
|dz
}	||�}nC#tj$r1}|jtjtjfvr�|j}
Yd}~nd}~wwxYw|�	��}
|�
|
��|
�nR|
tjkrA|�d��}
|
r|�|
����|�
����tjr)tj�d||jfz��|S)Nryrr�i�z"Needed %d calls to complete %s().
)r�r�
SHORT_TIMEOUT�
busy_retryr
r�r�rK�SSL_ERROR_WANT_WRITErL�sendallrhr�r[r�r�r�r�)r�r��incoming�outgoingrxrvr�ryr�rur��retr>�bufs              r"�ssl_io_loopz!SimpleBackgroundTests.ssl_io_loop	sd���*�*�Y��(=�>�>�����#�G�,�,�	)�	)�A��E��Q�J�E�
 ��d�D�k�����<�
 �
 �
 ��7�3�#:�#&�#;�#=�=�=��������������	
 �����-�-�/�/�C��L�L������}����#�1�1�1��i�i��&�&���)��N�N�3�'�'�'�'��&�&�(�(�(���?�	7��J���B� %�t�}�5�6�
7�
7�
7��
s�A�B�'B�Bc��tjtj��}|�|j��|�|j��t���}t���}t�tj	��}|�
|j��|�|j
tj��|�t ��|�||dt$��}|�|jj|��|�|�����|�|�����|�|�����|�t6|j��dtjvr(|�|�d����|�||||j ��|�
|�����|�|�����|�!|�����|�
|�����dtjvr(|�
|�d����	|�||||j"��n#tj#$rYnwxYw|�tj$|j%d��dS)NFr�r�)&r�r]r�r�r�r{r
r�rnrbrOr�r�r�r�r�r�r3r�r�r��ownerr��cipherr9�shared_ciphersr�r�rrRr�r�rJ�assertIsNotNonerm�SSLSyscallErrorr�r�)r�r�r�r�rU�sslobjs      r"�test_bio_handshakez(SimpleBackgroundTests.test_bio_handshake%	s����}�V�^�,�,������
�#�#�#����T�%�&�&�&��=�=�?�?���=�=�?�?���n�n�S�4�5�5������*�+�+�+������#�*;�<�<�<��!�!�*�-�-�-����h��%�6�8�8���
�
�f�n�*�F�3�3�3����&�-�-�/�/�*�*�*����&�.�.�*�*�+�+�+����&�/�/�1�1�2�2�2����*�f�&8�9�9�9��3�4�4�4����f�8�8��F�F�G�G�G�����x��6�3F�G�G�G�����
�
���(�(�(����&�/�/�1�1�2�2�2����V�^�^�-�-�.�.�.�����*�*�,�,�-�-�-��3�4�4�4��O�O�F�6�6�|�D�D�E�E�E�	����T�8�X�v�}�E�E�E�E���"�	�	�	�
�D�	����	
���#�,���f�=�=�=�=�=s�:L�L*�)L*c���tjtj��}|�|j��|�|j��t���}t���}t�tj	��}d|_
tj|_|�
||d��}|�||||j��d}|�||||j|��|�||||jd��}|�|d��|�||||j��dS)NF�FOO
�sfoo
)r�r]r�r�r�r{r
r�rnrbr�r�r�r3r�rJr�rLr�rm)r�r�r�r�rUr��reqr�s        r"�test_bio_read_write_dataz.SimpleBackgroundTests.test_bio_read_write_dataG	s%���}�V�^�,�,������
�#�#�#����T�%�&�&�&��=�=�?�?���=�=�?�?���n�n�S�4�5�5��"����-������h��%�8�8������x��6�3F�G�G�G�������x��6�<��E�E�E����t�X�x���d�K�K������h�'�'�'�����x��6�=�A�A�A�A�Ar$c��t��\}}}tjtj��5}|�|j��t
���}t
���}|�|||���}|�||||j	��|�
��|�t
j|j
��ddd��dS#1swxYwYdS)Nr�)r�r�r]r�r{r
r�r3r�rJr[r��SSLEOFErrorrL)r�r�r�r�r�r�r�r�s        r"�test_transport_eofz(SimpleBackgroundTests.test_transport_eofX	s$��3B�3D�3D�0����
�]�6�>�
*�
*�
	<�d��L�L��)�*�*�*��}�}���H��}�}���H�#�,�,�X�x�=E�-�G�G�F����T�8�X�v�7J�K�K�K�
��� � � ����c�o�v�{�;�;�;�
	<�
	<�
	<�
	<�
	<�
	<�
	<�
	<�
	<�
	<�
	<�
	<����
	<�
	<�
	<�
	<�
	<�
	<s�B;C9�9C=�C=N)r�rMrN�__doc__r|r�r�r�r�r�r�r�r�rtr8rr!r�r�r�r�r�r�rar�r�r�r�r�r�rYr$r"rxrx�s�������I�I�/�/�/�
,�
,�
,�<�<�<�)�)�)�)�)�)�4"�"�"�(=�=�=�"�"�"�."�"�"�*�X�_�R�W��_�&R�S�S�9�9�T�S�9�$d�d�d�*O�O�O�5�5�5�*C�C�C�
4�4�4�,�,�,�
5�
5�
5�
4�
4�
4� � � �D >� >� >�DB�B�B�"<�<�<�<�<r$rx�networkc�~�eZdZd�Zejejd��ej	d��d�����Z
dS)�NetworkedTestsc�J�tjt��5tt	jtj��tjd���}|�|j	��|�
d��|�tdf��}|dkr|�d��n%|tjkr|�d��|�|tjtjf��ddd��dS#1swxYwYdS)NFr�gH�����z>�rz!REMOTE_HOST responded too quicklyzNetwork unreachable.)r�transient_internet�REMOTE_HOSTr�r�r]r
r�r�r�rwr>r:r��ENETUNREACHr��EAGAINrBr�s   r"�test_timeout_connect_exz&NetworkedTests.test_timeout_connect_exj	sT���
-�k�
:�
:�	A�	A� ���v�~�!>�!>�*-�*;�8=�?�?�?�A�
�O�O�A�G�$�$�$�
�L�L��#�#�#����{�C�0�1�1�B��Q�w�w��
�
�A�B�B�B�B��u�(�(�(��
�
�4�5�5�5��M�M�"�u�|�U�->�?�@�@�@�	A�	A�	A�	A�	A�	A�	A�	A�	A�	A�	A�	A����	A�	A�	A�	A�	A�	As�C1D�D�Dz
Needs IPv6�walltimec��tjd��5t|dd��t|dd��ddd��dS#1swxYwYdS)Nzipv6.google.comr�)rr�r�r�r�s r"� test_get_server_certificate_ipv6z/NetworkedTests.test_get_server_certificate_ipv6z	s����
-�.?�
@�
@�	L�	L�(��/@�#�F�F�F�-�d�4E�s�K�K�K�	L�	L�	L�	L�	L�	L�	L�	L�	L�	L�	L�	L����	L�	L�	L�	L�	L�	Ls�#A�A	�A	N)r�rMrNr�rtrQrr�r�requires_resourcer�rYr$r"r�r�g	sr������A�A�A� �X���3�\�B�B��W��z�*�*�L�L�+�*�C�B�L�L�Lr$r�c	�`�t�||f��}|s|�d|�d|�d���t�||f|���}|s|�d|�d|�d���tjr+t
j�d|�d|�d|�d���dSdS)Nr�r�r�r�r�r�r�)r
r�r8rr�r�r�r�)�testr�rDr�r;s     r"r�r��	s���

�
$�
$�d�D�\�
2�
2�C��D��	�	�	�t�t�t�T�T�T�B�C�C�C�

�
$�
$�d�D�\�D�
$�
A�
A�C��D��	�	�	�t�t�t�T�T�T�B�C�C�C���Z��
�������d�d�d�TW�TW�TW�X�Y�Y�Y�Y�Y�Z�Zr$c
�|�tj|��5	t�||ft���}|�d|�d|�d|�d���nJ#tj$r8}tjr"tj
�d|z��Yd}~nd}~wwxYwddd��dS#1swxYwYdS)Nr�zGot server certificate z for r�r�z%s
)r�check_no_resource_warningr
r�rr8r�rr�r�r�r�)r�r�rDr;�xs     r"r�r��	s%��	�	2�4�	8�	8�R�R�	R��,�,�d�D�\�H�,�M�M�C�
�I�I�I����T�T�T�4�4�4�P�Q�Q�Q�Q���|�	-�	-�	-���
-��
� � ��!��,�,�,����������	-����R�R�R�R�R�R�R�R�R�R�R�R����R�R�R�R�R�Rs9�B1�#A� B1�B!�).B�B1�B!�!B1�1B5�8B5)�make_https_serverc�l�eZdZGd�dej��Z					d
d�Zd�Zd�Zdd	�Z	d
�Z
d�Zd�ZdS)rJc�6�eZdZdZd�Zd�Zd�Zd�Zd�Zd�Z	dS)	�$ThreadedEchoServer.ConnectionHandlerz�A mildly complicated class, because we want it to work both
        with and without the SSL wrapper around the socket connection, so
        that we can test the STARTTLS functionality.c���||_d|_||_||_|j�d��d|_tj�|��d|_	dS�NFT)
rC�runningr��addrrH�sslconn�	threading�Thread�__init__�daemon)r�rC�connsockr�s    r"r�z-ThreadedEchoServer.ConnectionHandler.__init__�	s]�� �D�K� �D�L� �D�I��D�I��I�!�!�$�'�'�'��D�L���%�%�d�+�+�+��D�K�K�Kr$c��	|jj�|jd���|_|jj�|j�����|jj�|j�����|jjj	tjkr�|j���}tjrC|jjr7t j�dt'j|��zdz��|j�d��}tjr^|jjrR|� t j�d��n0t j�dt+|���d���|j���}tjr>|jjr2t j�dt/|��zdz��dS#t0t2t4f$r�}|jj�t/|����|jjr't9d	t;|j��zd
z��d|_|� ��Yd}~dSd}~wtj!tDf$r�}|jj�t/|����|jjr't9d	t;|j��zd
z��|j#tFj$krDt j%dkr4d|_|j�&��|� ��Yd}~dSd}~wwxYw)
NTr�z client cert is r�z client did not provide a cert
z cert binary is zb
z" server: connection cipher is now z'
 server:  bad connection attempt from z:
F�darwin)'rCr�r�r�r��selected_alpn_protocolsr��selected_alpn_protocolr�r�r
r�rrr��chattyr�r�r�rrrdr�r]�ConnectionResetError�BrokenPipeError�ConnectionAbortedError�conn_errorsr�r�r�r�r�r�rgr��
EPROTOTYPErS�stop)r�r��cert_binaryr�r>s     r"�	wrap_connz.ThreadedEchoServer.ConnectionHandler.wrap_conn�	s��;
�#�{�2�>�>��I�4� ?� 1� 1�����3�:�:�4�<�;^�;^�;`�;`�a�a�a�T��*�1�1�$�,�2M�2M�2O�2O�P�P�P��;�&�2�c�6G�G�G��<�3�3�5�5�D���[�4�;�+=�[��
�(�(�);�f�n�T�>R�>R�)R�UY�)Y�Z�Z�Z�"&�,�":�":�4�"@�"@�K���W�4�;�+=�W�&�.��J�,�,�-O�P�P�P�P��J�,�,�-U��K�@P�@P�-U�-U�-U�V�V�V���,�,�.�.���?�`�t�{�'9�`��J�$�$�%I�C�PV�K�K�%W�Z^�%^�_�_�_��t��o)�/�;Q�R�
�
�
���'�.�.�s�1�v�v�6�6�6��;�%�g� �!K�d�SW�S\�o�o�!]�`e�!e�f�f�f�$����
�
�����u�u�u�u�u������L�'�*�
�
�
���'�.�.�s�1�v�v�6�6�6��;�%�g� �!K�d�SW�S\�o�o�!]�`e�!e�f�f�f�
�7�e�.�.�.�3�<�8�3K�3K�#(�D�L��K�$�$�&�&�&��J�J�L�L�L��u�u�u�u�u�����-
���s&�A!H	�	M<� A:J � M<�9B8M7�7M<c�v�|jr|j���S|j�d��S)Nr�)r�rLr�rhr�s r"rLz)ThreadedEchoServer.ConnectionHandler.read�	s4���|�
,��|�(�(�*�*�*��y�~�~�d�+�+�+r$c�x�|jr|j�|��S|j�|��SrX)r�r�r�rl)r�r�s  r"r�z*ThreadedEchoServer.ConnectionHandler.write�	s6���|�
-��|�)�)�%�0�0�0��y�~�~�e�,�,�,r$c�|�|jr|j���dS|j���dSrX)r�r�r�r�s r"r�z*ThreadedEchoServer.ConnectionHandler.close�	s>���|�
"���"�"�$�$�$�$�$��	���!�!�!�!�!r$c��d|_|jjs|���sdS|j�r	|���}|���}|sTd|_	|j���|_d|_n#t$rYnwxYw|�
���n�|dkrMtjr+|jj
rtj�d��|�
��dS|jjrj|dkrdtjr+|jj
rtj�d��|�d��|���sdS�n|jjr�|jr�|dkr�tjr+|jj
rtj�d	��|�d��|j���|_d|_tjr+|jj
rtj�d
���n>|dkr�tjr+|jj
rtj�d��|j�d
��}|�t%|���d��dz���n�|dkr�tjr+|jj
rtj�d��	|j���|�d���n?#t*j$rC}|�t%|���d��dz��Yd}~�n�d}~wwxYw|dkrG|j����|�d���n�|�d���n�|dkrS|j���}|�t%|���d��dz���nD|dkrX|jj���}|�t5|���dd��dz��n�|dkrX|jj���}|�t5|���dd��dz��n�tjrU|jj
rI|jrdpd}tj�d|�d|�d|����d|�d�	��|�|�����n�#t$r�}|jjrHtjr<t?|t@��rtCd |j"����ntGd!��	|�d"��n#t$rYnwxYw|�
��d|_|j�$��Yd}~nd}~wwxYw|j��dSdS)#NTFsoverz" server: client closed connection
�STARTTLSz2 server: read STARTTLS from client, sending OK...
�OK
�ENDTLSz0 server: read ENDTLS from client, sending OK...
z* server: connection is now unencrypted...
s
CB tls-uniquez@ server: read CB tls-unique from client, sending our CB data...
r��us-ascii�
�PHAz( server: initiating post handshake auth
�HASCERT�TRUE
�FALSE
�GETCERTs
VERIFIEDCHAINr��bigsUNVERIFIEDCHAIN�	encrypted�unencryptedz server: read z (z), sending back z)...
z Connection reset by peer: zTest server failure:
sERROR
)%r�rC�starttls_serverr
rL�stripr�rmr�rgr�rr��connectionchattyr�r�r�r�r�r��verify_client_post_handshaker
r�rr��get_verified_chainrd�to_bytes�get_unverified_chainr9rr\�ConnectionError�printr�r�r)r��msg�strippedr�r>r��certs�ctypes        r"�runz(ThreadedEchoServer.ConnectionHandler.run�	sY���D�L��;�.�
��~�~�'�'���F��,�^
'�]'��)�)�+�+�C�"�y�y�{�{�H�#�D0�',���0�(,��(;�(;�(=�(=�D�I�,0�D�L�L��
 '�!�!�!�!�D�	!�����
�
�����!�W�,�,�"�?�T�t�{�/K�T��J�,�,�-R�S�S�S��
�
�������+�5�20�"�k�1�1�"�?�d�t�{�/K�d��J�,�,�-b�c�c�c��
�
�7�+�+�+�#�~�~�/�/�#�"�F�#��+�5�+0�$�,�+0�&�)�3�3�"�?�b�t�{�/K�b��J�,�,�-`�a�a�a��
�
�7�+�+�+�$(�L�$7�$7�$9�$9��	�'+���"�?�\�t�{�/K�\��J�,�,�-Z�[�[�[��!�%5�5�5�"�?�r�t�{�/K�r��J�,�,�-p�q�q�q�#�|�?�?��M�M���
�
�4��:�:�#4�#4�Z�#@�#@�5�#H�I�I�I�I�!�V�+�+�"�?�Z�t�{�/K�Z��J�,�,�-X�Y�Y�Y�0� �L�E�E�G�G�G�!�J�J�w�/�/�/�/�� #�|�K�K�K� �J�J�t�A�w�w�~�~�j�'A�'A�E�'I�J�J�J�J�J�J�J�J�����K����"�Z�/�/��<�3�3�5�5�A� �J�J�y�1�1�1�1� �J�J�z�2�2�2�2�!�Z�/�/�#�|�7�7�9�9���
�
�4��:�:�#4�#4�Z�#@�#@�5�#H�I�I�I�I�!�%5�5�5� $�� 4� G� G� I� I���
�
�3�u�:�:�#6�#6�q�%�#@�#@�5�#H�I�I�I�I�!�%7�7�7� $�� 4� I� I� K� K���
�
�3�u�:�:�#6�#6�q�%�#@�#@�5�#H�I�I�I�I�#�O�Q� �K�8�Q�%)�\�%A�k�$S�m�E��J�,�,�,�03���U�U�U�C�I�I�K�K�K�K����.P�Q�Q�Q��
�
�3�9�9�;�;�/�/�/����'�'�'��{�)�	C�g�o�	C�%�a��9�9�C�"� I�d�i� I� I�����)�)A�B�B�B���
�
�:�.�.�.�.��"�����������J�J�L�L�L�#(�D�L��K�$�$�&�&�&�&�&�&�&�&�����+'����S�,�^
'�^
'�^
'�^
'�^
's��1U<�%B�U<�
B�U<�B�A*U<�A2U<�8FU<�L<�%U<�<N�8N	�U<�	N�G-U<�<
X?�AX:�W1�0X:�1
W>�;X:�=W>�>7X:�:X?N)
r�rMrNr�r�r
rLr�r�r,rYr$r"�ConnectionHandlerr��	s~������	8�	8�	�	�	�<	�<	�<	�|	,�	,�	,�	-�	-�	-�	"�	"�	"�c	'�c	'�c	'�c	'�c	'r$r-NTFc��|
r|
|_n�t�|�|ntj��|_|�|ntj|j_|r|j�|��|r|j�|��|r|j�|��|	r|j�	|	��||_
||_||_tj
��|_tj|j��|_d|_d|_g|_g|_g|_t.j�|��d|_dSr�)r�r
rnrar�r�r�r��set_alpn_protocolsrSrr!rr�r�rr=rD�flag�activerr�r	r�r�r�r�)r��certificate�ssl_version�certreqs�cacertsrr!r�alpn_protocolsr�r�s           r"r�zThreadedEchoServer.__init__b
sS��
�	2�"�D�L�L��>�>�-8�-D�+6�+�/2�/F�H�H�D�L�5=�4H���-0�]�
�L�$��
<���2�2�7�;�;�;��
:���,�,�[�9�9�9��
@���/�/��?�?�?��
2���(�(��1�1�1���� 0���.����M�O�O��	�!�+�D�I�6�6��	���	����')��$� ��������!�!�$�'�'�'�����r$c��|�tj����|j���|SrX��startr��Eventr0�waitr�s r"�	__enter__zThreadedEchoServer.__enter__�
�3���
�
�9�?�$�$�%�%�%��	�������r$c�V�|���|���dSrX)rr�r�rvs  r"�__exit__zThreadedEchoServer.__exit__�
s ���	�	�����	�	�����r$c�R�||_tj�|��dSrX�r0r�r�r9�r�r0s  r"r9zThreadedEchoServer.start�
�&����	�����t�$�$�$�$�$r$c��|j�d��|j�d��d|_|jr|j���|j�rf	|j���\}}tjr9|j	r2tj�dt|��zdz��|�|||��}|���|���n�#t"$r9}tjr#tj�d|�d���Yd}~n~d}~wt$$r|���Yn[t($rO}tjr9|j	r2tj�dt|��zdz��Yd}~nd}~wwxYw|j��f|���dS)Ng�?r5Tz server:  new connection from r�z connection timeout z connection handling failed: )r�rw�listenr1r0r�r�rr�rr�r�r�r�r-r9r�TimeoutError�KeyboardInterruptr�
BaseExceptionr�)r��newconn�connaddr�handlerr>s     r"r,zThreadedEchoServer.run�
s����	���S�!�!�!��	�����������9�	��I�M�M�O�O�O��k�	J�
J�$(�I�$4�$4�$6�$6�!����?�>�t�{�>��J�$�$�%E�'+�H�~�~�&6�8<�&=�>�>�>��0�0��w��I�I���
�
�������������
E�
E�
E��?�E��J�$�$�%C�A�%C�%C�%C�D�D�D����������$�
�
�
��	�	������ �
J�
J�
J��?�J�t�{�J��J�$�$�7�$�q�'�'�A�D�H�J�J�J����������
J�����k�	J�&	
�
�
�����s,�%B D�
F?�/E�!F?�'	F?�0AF:�:F?c�X�|j�"|j���d|_dSdSrX)r�r�r�s r"r�zThreadedEchoServer.close�
s/���9� ��I�O�O�����D�I�I�I�!� r$c��d|_dS�NF)r1r�s r"rzThreadedEchoServer.stop�
s
������r$)
NNNNTFFNNNrX)
r�rMrNr�r�r-r�r<r@r9r,r�rrYr$r"rJrJ�	s�������C'�C'�C'�C'�C'�I�,�C'�C'�C'�J6:�(,�FK� $�'+�	 � � � �D���
���%�%�%�%����8���
����r$rJc�`�eZdZGd�dej��Zd�Zd�Zd�Zd�Z	dd�Z
d	�Zd
�ZdS)�AsyncoreEchoServerc�F�eZdZGd�dej��Zd�Zd�Zd�ZdS)�AsyncoreEchoServer.EchoServerc�2�eZdZd�Zd�Zd�Zd�Zd�Zd�ZdS)�/AsyncoreEchoServer.EchoServer.ConnectionHandlerc��t|d|d���|_tj�||j��d|_|���dS)NTF)r�r�r�)r�r�r	�dispatcher_with_sendr��_ssl_accepting�_do_ssl_handshake)r��connr�s   r"r�z8AsyncoreEchoServer.EchoServer.ConnectionHandler.__init__�
sb��.�t��7?�FK�M�M�M����-�6�6�t�T�[�I�I�I�&*��#��&�&�(�(�(�(�(r$c���t|jtj��rN|j���dkr1|���|j���dk�1dS)NrT)r\r�r
r�r^�handle_read_eventr�s r"�readablez8AsyncoreEchoServer.EchoServer.ConnectionHandler.readable�
sc���d�k�3�=�9�9�1��+�-�-�/�/�!�3�3��.�.�0�0�0��+�-�-�/�/�!�3�3��tr$c��	|j���d|_dS#tjtjf$rYdStj$r|���cYStj$r�t$r?}|j
dtjkr|���cYd}~SYd}~dSd}~wwxYw)NFr)
r�rJrXr
rIr�r��handle_closer�rgrvr��ECONNABORTED�r��errs  r"rYzAAsyncoreEchoServer.EchoServer.ConnectionHandler._do_ssl_handshake�
s���0��K�,�,�.�.�.�+0�D�'�'�'���,�c�.C�D�����F�F���/�/�/��,�,�.�.�.�.�.��|������3�3�3��x��{�e�&8�8�8�#�0�0�2�2�2�2�2�2�2�2�9�8�8�8�8�8�����3���s'�$�B=�"B=�&B=�>.B8�,B=�8B=c�^�|jr|���dS|�d��}tjr/t
j�dt|��z��|s|�	��dS|�
|�����dS)Nr�z server:  read %s from client
)rXrYrhrr�r�r�r�r�r�rlr9)r�r�s  r"�handle_readz;AsyncoreEchoServer.EchoServer.ConnectionHandler.handle_read�
s����&�	0��*�*�,�,�,�,�,��9�9�T�?�?�D���Y��
�(�(�)J�T�RV�Z�Z�)W�X�X�X��0��
�
�������	�	�$�*�*�,�,�/�/�/�/�/r$c��|���tjr)tj�d|jz��dSdS)Nz server:  closed connection %s
)r�rr�r�r�r�r�r�s r"r_z<AsyncoreEchoServer.EchoServer.ConnectionHandler.handle_close�
sJ���
�
�����?�W��J�$�$�%G�$�+�%U�V�V�V�V�V�W�Wr$c���rXrYr�s r"r�z<AsyncoreEchoServer.EchoServer.ConnectionHandler.handle_error�
s��r$N)	r�rMrNr�r]rYrdr_r�rYr$r"r-rU�
sq������
)�
)�
)�
�
�
�

0�

0�

0�

0�

0�

0�
W�
W�
W�

�
�
�
�
r$r-c��||_tjtjtj��}t	j|d��|_tj�	||��|�
d��dS)Nr\r5)r�r�r]�SOCK_STREAMrr=rDr	�
dispatcherr�rFr�s   r"r�z&AsyncoreEchoServer.EchoServer.__init__�
s_��$�D�M��=����1C�D�D�D�%�/��b�9�9�D�I���(�(��t�4�4�4��K�K��N�N�N�N�Nr$c��tjr"tj�d|z��|�||j��dS)Nz$ server:  new connection from %s:%s
)rr�r�r�r�r-r�)r��sock_objr�s   r"�handle_acceptedz-AsyncoreEchoServer.EchoServer.handle_accepted�
sG����
P��
� � �!H�$�!N�O�O�O��"�"�8�T�]�;�;�;�;�;r$c���rXrYr�s r"r�z*AsyncoreEchoServer.EchoServer.handle_error�
s��r$N)	r�rMrNr	rWr-r�rlr�rYr$r"�
EchoServerrS�
so������1	�1	�1	�1	�1	�� =�1	�1	�1	�f	�	�	�	<�	<�	<�
	�	�	�	�	r$rnc���d|_d|_|�|��|_|jj|_t
j�|��d|_dSr�)	r0r1rnrCrDr�r�r�r�)r�r�s  r"r�zAsyncoreEchoServer.__init__�
sQ����	�����o�o�h�/�/����K�$��	���!�!�$�'�'�'�����r$c�2�d|jj�d|j�d�S)N�<r�>)r�r�rCr�s r"�__str__zAsyncoreEchoServer.__str__s ��� �N�3�3�3�T�[�[�[�A�Ar$c��|�tj����|j���|SrXr8r�s r"r<zAsyncoreEchoServer.__enter__r=r$c��tjrtj�d��|���tjrtj�d��|���tjrtj�d��t�d���dS)Nz cleanup: stopping server.
z! cleanup: joining server thread.
z cleanup: successfully joined.
T)�
ignore_all)	rr�r�r�r�rrr	�	close_allr?s  r"r@zAsyncoreEchoServer.__exit__
s����?�	=��J���;�<�<�<��	�	�����?�	C��J���A�B�B�B��	�	�����?�	A��J���?�@�@�@����d��+�+�+�+�+r$Nc�R�||_tj�|��dSrXrBrCs  r"r9zAsyncoreEchoServer.startrDr$c��d|_|jr|j���|jr,	t�d��n#YnxYw|j�*dSdS)NTr�)r1r0r�r	�loopr�s r"r,zAsyncoreEchoServer.runst������9�	��I�M�M�O�O�O��k�	�
��
�
�a� � � � ��
������	�k�	�	�	�	�	s�A�Ac�F�d|_|j���dSrO)r1rCr�r�s r"rzAsyncoreEchoServer.stop's#�������������r$rX)
r�rMrNr	rirnr�rsr<r@r9r,rrYr$r"rQrQ�
s�������B�B�B�B�B�h�)�B�B�B�H���B�B�B����

,�
,�
,�%�%�%�%��������r$rQr�Fc�&�i}t||d���}|5|�tj��||���5}	|	�t|jf��|t
|��t|��fD]�}
|r.tj	r"tj�d|z��|	�|
��|	�
��}|r.tj	r"tj�d|z��||���krRtd|dd�t!|��|dd����t!|��fz�����|	�d	��|r+tj	rtj�d
��|�|	���|	���|	���|	���|	���|	j|	jd���|	���ddd��n#1swxYwY|j|d<|j|d
<ddd��n#1swxYwY|S)zW
    Launch a server, connect a client to it and try various reads
    and writes.
    F�r�rr!)r��session� client:  sending %r...
� client:  read %r
�4bad data <<%r>> (%d) received; expected <<%r>> (%d)
N��over
� client:  closing connection.
)�compressionr��peercert�client_alpn_protocolr9�session_reusedr~�server_alpn_protocols�server_shared_ciphers)rJr�r�r�r�rDr�rbrr�r�r�r�rLr9�AssertionErrorrdr�r�r�rrr9r�r~r�rr�)r�r��indatarr!�sni_namer~rrCr��arg�outdatas            r"�server_params_testr�+s��
�E�
��'-�16�8�8�8�F�
�"?�"?�
�
'�
'��
��� (�'�(�;�;�	�>?�
�I�I�t�V�[�)�*�*�*��	�&� 1� 1�:�f�3E�3E�F�
>�
>��#�B���B��
�(�(�7�&�@�B�B�B���������&�&�(�(��#�J���J��
�(�(�)>��)H�I�I�I��f�l�l�n�n�,�,�(�O�"�3�B�3�<��W���!�#�2�#�;�,�,�.�.��F���=�=�>�>�>�-�

�G�G�I�����
H��?�H��J�$�$�%F�G�G�G��L�L� �}�}����(�(�*�*��M�M�O�O�()�(@�(@�(B�(B��9�9�;�;�"#�"2��9���
�
�
�
�G�G�I�I�I�?	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�@*0�)G��%�&�)/�)>��%�&�E"?�"?�"?�"?�"?�"?�"?�"?�"?�"?�"?����"?�"?�"?�"?�F�Ls6�*J�HI�J�I	�J�"I	�#J�J
�
J
c���|�tj}tjdtjdtjdi|}tjr[|rdpd}tj�|t�	|��t�	|��|fz��tj��5t�|��}|xj
|zc_
t�|��}	|	xj
|zc_
ddd��n#1swxYwYt�|d��}
|
�]t!|	d��rM|tjkr=|	j|
kr2tj��5|
|	_ddd��n#1swxYwY|jtjkr|�d��t+|	|��||	fD]=}||_|�t0��|�t4���>	t7||	d	d	�
��}|sFt9dt�	|���dt�	|���d
����|dur'||dkrt9d|�d|d�����dSdS#tj$r|r�YdSt<$r#}
|s|
jt>j kr�Yd}
~
dSd}
~
wwxYw)a<
    Try to SSL-connect using *client_protocol* to *server_protocol*.
    If *expect_success* is true, assert that the connection succeeds,
    if it's false, assert that the connection fails.
    Also, if *expect_success* is a string, assert that it is the protocol
    version actually used by the connection.
    Nr�r�r�z %s->%s %s
z
 {%s->%s} %s
rQr\F)rr!zClient protocol z  succeeded with server protocol r�Tr9zversion mismatch: expected z, got )!r
r�r�r�rr�r�r�r��get_protocol_namerr�rnr�PROTOCOL_TO_TLS_VERSIONr�rRr`rQrerSrVr�r�r�r�r�r�r�r�rgr��
ECONNRESET)�server_protocol�client_protocol�expect_success�	certsreqs�server_options�client_options�certtype�	formatstrr�r��min_versionrUrr>s              r"�try_protocol_combor�[s������M�	��
�{���?���?���	�H�
��%�#�6��K�;K�	��
�����/�/��@�@��/�/��@�@�"�$�$�	%�	%�	%�

�	'�	)�	)�1�1�����8�8�����.�0�������8�8�����.�0���1�1�1�1�1�1�1�1�1�1�1����1�1�1�1�*�-�-�o�t�D�D�K���
�N�$5�6�6�	 �
�s�/�/�/��*�[�8�8��
+�
-�
-�	9�	9�-8�N�*�	9�	9�	9�	9�	9�	9�	9�	9�	9�	9�	9����	9�	9�	9�	9���#�"2�2�2��"�"�5�)�)�)����7�7�7���/�.�.��#������O�,�,�,��!�!�*�-�-�-�-�G�"�>�>�*/�%�I�I�I���	G� �.��(�(��9�9�9�9��(�(��9�9�9�9�;�<�<�
<��D�(�(� �E�)�$4�4�4� �.�$2�N�N�E�)�4D�4D�"F�G�G�
G�)�(�4�4���<�����	��	�	�	������	�Q�W��(8�8�8��9�8�8�8�8�8��������sC�5AD�D�D�<F�F�F�J"�"K#�7	K#�K�K#c�^�eZdZejd��d���Zd�Zd�Zd�Ze	j
ejd��d���Z
d�Zd	�Zd
�Zd�Zed��d
���Zd�Zd�Zed��d���Zd�Zed��d���Zed��d���Zed��d���Zed��d���Zd�Zd�Zd�Zd�Zd�Z d �Z!d!�Z"d"�Z#d#�Z$d$�Z%d%�Z&d&�Z'd'�Z(ed��d(���Z)ed��ed��e*d)�������Z+ed��e*d*�����Z,ed��ed��e*d+�������Z-ed��d,���Z.d-�Z/e	j
d.ej0vd/��d0���Z1d1�Z2e	j
e3ed2��d3��d4���Z4e	j5e6d5��d6���Z7d7�Z8d8�Z9d9�Z:d:�Z;d;�Z<d<�Z=d=�Z>d>�Z?d?�Z@d@�ZAdA�ZBdB�ZCdC�ZDdD�ZEdE�ZFdF�ZGdGS)H�
ThreadedTestsr�c	�~�tjrtj�d��t��\}}}|�tjtj	���5t||dd|���ddd��n#1swxYwYd|_|�tj	tj���5|�tj
��5}t||dd|���ddd��n#1swxYwY|�dt|j����ddd��n#1swxYwY|�tj	tj	���5|�tj
��5}t||dd���ddd��n#1swxYwY|�dt|j����ddd��n#1swxYwY|�tjtj���5|�tj
��5}t||dd���ddd��n#1swxYwY|�dt|j����ddd��dS#1swxYwYdS)	z2Basic test of an SSL client connecting to a serverr�)rtrCT)r�r�rr!r�NFz@Cannot create a client socket with a PROTOCOL_TLS_SERVER context)r�r�rr!)rr�r�r�r�r�r�r
rbrar�r�r�r�r�r]r�)r�r�r�r�r>s     r"�	test_echozThreadedTests.test_echo�sy���?�	#��J���T�"�"�"�3B�3D�3D�0����
�\�\��!8��AX�\�
Y�
Y�	2�	2��n�.<�&*�T�(0�
2�
2�
2�
2�	2�	2�	2�	2�	2�	2�	2�	2�	2�	2�	2����	2�	2�	2�	2�).��%�
�\�\��!8��AX�\�
Y�
Y�		�		��"�"�3�<�0�0�
6�A�"�.�2@�*.��,4�6�6�6�6�
6�
6�
6�
6�
6�
6�
6�
6�
6�
6�
6����
6�
6�
6�
6�

�M�M�R��A�K� � �
�
�
�
		�		�		�		�		�		�		�		�		�		�		����		�		�		�		��\�\��!8��AX�\�
Y�
Y�	�	��"�"�3�<�0�0�
G�A�"�.�2@�*.��G�G�G�G�
G�
G�
G�
G�
G�
G�
G�
G�
G�
G�
G����
G�
G�
G�
G�
�M�M�R��A�K� � �
�
�
�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	��\�\��!8��AX�\�
Y�
Y�	"�	"��"�"�3�<�0�0�
G�A�"�.�2@�*.��G�G�G�G�
G�
G�
G�
G�
G�
G�
G�
G�
G�
G�
G����
G�
G�
G�
G�
�M�M�R��A�K� � �
"�
"�
"�	"�	"�	"�	"�	"�	"�	"�	"�	"�	"�	"�	"����	"�	"�	"�	"�	"�	"s��)B
�
B�B� E�'D�<E�D	�E�D	�+E�E�E�= G<�F=�1G<�=G	�G<�G	�+G<�<H�H�2 J2�I2�&J2�2I6	�6J2�9I6	�:+J2�2J6�9J6c�N�tjrtj�d��t��\}}}t
|d���}|5|�tj��d|���5}|�	t|jf��|�t��5|���ddd��n#1swxYwY|���|���}|�|d��|���}tjrftj�t%j|��dz��tj�dt)|��zdz��d|vr*|�d	t%j|��z��d
|dvr|�d��|�d|��|�d
|��t.�|d��}t.�|d
��}	|�||	��ddd��n#1swxYwYddd��dS#1swxYwYdS)Nr�F�r�r)r�r��Can't get peer certificate.zConnection cipher is z.
r7z$No subject field in certificate: %s.r,zkMissing or invalid 'organizationName' field in certificate subject; should be 'Python Software Foundation'.r5r4)rr�r�r�r�r�rJr�r�r�r�rDr�r�rrJrOr�rrr]r8r�r
r#rM)
r�r�r�r�rCr�r�r��before�afters
          r"�test_getpeercertzThreadedTests.test_getpeercert�s,���?�	#��J���T�"�"�"�3B�3D�3D�0����#�N�5�I�I�I��
�	/�	/��+�+�F�M�O�O�DI�<D�,�F�F�
/�IJ��	�	�4���-�.�.�.��&�&�z�2�2�$�$��M�M�O�O�O�$�$�$�$�$�$�$�$�$�$�$����$�$�$�$���� � � ��}�}��������&C�D�D�D��������?�T��J�$�$�V�^�D�%9�%9�D�%@�A�A�A��J�$�$�%<�s�6�{�{�%J�U�%R�S�S�S��D�(�(��I�I�D�$�n�T�2�2�3�4�4�4�I��	�?�+�+��I�I�B�C�C�C��
�
�k�4�0�0�0��
�
�j�$�/�/�/��1�1�$�{�2C�D�D���0�0��j�1A�B�B�������.�.�.�7
/�
/�
/�
/�
/�
/�
/�
/�
/�
/�
/����
/�
/�
/�
/�	/�	/�	/�	/�	/�	/�	/�	/�	/�	/�	/�	/����	/�	/�	/�	/�	/�	/s[�*J�;<J�7C�J�C�J�C� FJ�6J�J	�J�	J	�
J�J�!Jc���tjrtj�d��t��\}}}t
tdd��}|�|j	tj
|z��t|d���}|5|�tj
��|���5}|�t|jf��|���}|�|d��ddd��n#1swxYwYddd��n#1swxYwY|xj	tjzc_	t|d���}|5|�tj
��|���5}|�tjd��5|�t|jf��ddd��n#1swxYwYddd��n#1swxYwYddd��n#1swxYwY|�t.��t|d���}|5|�tj
��|���5}|�t|jf��|���}|�|d��ddd��n#1swxYwYddd��dS#1swxYwYdS)	Nr�r�rTr�r�r�r�)rr�r�r�r�r�r_r
r�r�r�rJr�r�r�r�rDrrOr�r�r�r��CRLFILE)r�r�r�r�r�rCr�r�s        r"�test_crl_checkzThreadedTests.test_crl_check�s����?�	#��J���T�"�"�"�3B�3D�3D�0����
�S�5�q�
9�
9������4�c�6H�2�6M�N�N�N�$�N�4�H�H�H��
�	E�	E��+�+�F�M�O�O�<D�,�F�F�
E�IJ��	�	�4���-�.�.�.��}�}��������&C�D�D�D�	
E�
E�
E�
E�
E�
E�
E�
E�
E�
E�
E����
E�
E�
E�
E�	E�	E�	E�	E�	E�	E�	E�	E�	E�	E�	E����	E�	E�	E�	E�	�#�#�s�'@�@�#�#�#�N�4�H�H�H��
�	3�	3��+�+�F�M�O�O�<D�,�F�F�
3�IJ��+�+�C�L�,G�I�I�3�3��I�I�t�V�[�1�2�2�2�3�3�3�3�3�3�3�3�3�3�3����3�3�3�3�
3�
3�
3�
3�
3�
3�
3�
3�
3�
3�
3����
3�
3�
3�
3�	3�	3�	3�	3�	3�	3�	3�	3�	3�	3�	3����	3�	3�	3�	3�	�,�,�W�5�5�5�#�N�4�H�H�H��
�	E�	E��+�+�F�M�O�O�<D�,�F�F�
E�IJ��	�	�4���-�.�.�.��}�}��������&C�D�D�D�	
E�
E�
E�
E�
E�
E�
E�
E�
E�
E�
E����
E�
E�
E�
E�	E�	E�	E�	E�	E�	E�	E�	E�	E�	E�	E�	E����	E�	E�	E�	E�	E�	Es��)D'�8AD�D'�D	�D'�D	�D'�'D+�.D+�)H�!G.�)"G�G.�G�G.�G�G.�"H�.G2	�2H�5G2	�6H�H	�H	�=)K�&AJ>�2K�>K	�K�K	�K�K�Kc��tjrtj�d��t��\}}}t
|d���}|5|�tj��|���5}|�	t|jf��|���}|�
|d��ddd��n#1swxYwYddd��n#1swxYwYt
|d���}|5|�tj��d���5}|�tjd��5|�	t|jf��ddd��n#1swxYwYddd��n#1swxYwYddd��n#1swxYwYt
|d���}|5tj��5}|�t"d��5|�|��ddd��n#1swxYwYddd��n#1swxYwYddd��dS#1swxYwYdS)	Nr�Tr�r�r�r�z:Hostname mismatch, certificate is not valid for 'invalid'.z'check_hostname requires server_hostname)rr�r�r�r�r�rJr�r�r�r�rDrrOr�r
r�r�)r�r�r�r�rCr�r�s       r"r$z!ThreadedTests.test_check_hostname$sW���?�	#��J���T�"�"�"�3B�3D�3D�0����$�N�4�H�H�H��
�	E�	E��+�+�F�M�O�O�<D�,�F�F�
E�IJ��	�	�4���-�.�.�.��}�}��������&C�D�D�D�	
E�
E�
E�
E�
E�
E�
E�
E�
E�
E�
E����
E�
E�
E�
E�	E�	E�	E�	E�	E�	E�	E�	E�	E�	E�	E����	E�	E�	E�	E�$�N�4�H�H�H��
�	3�	3��+�+�F�M�O�O�<E�,�G�G�
3�JK��+�+��,�T�V�V�3�3��I�I�t�V�[�1�2�2�2�3�3�3�3�3�3�3�3�3�3�3����3�3�3�3�
3�
3�
3�
3�
3�
3�
3�
3�
3�
3�
3����
3�
3�
3�
3�	3�	3�	3�	3�	3�	3�	3�	3�	3�	3�	3����	3�	3�	3�	3�$�N�4�H�H�H��
�	2�	2�����
2�A��+�+�J�,U�W�W�2�2�"�.�.�q�1�1�1�2�2�2�2�2�2�2�2�2�2�2����2�2�2�2�
2�
2�
2�
2�
2�
2�
2�
2�
2�
2�
2����
2�
2�
2�
2�	2�	2�	2�	2�	2�	2�	2�	2�	2�	2�	2�	2����	2�	2�	2�	2�	2�	2s��)C)�:AC�C)�C	�C)�C	�C)�)C-�0C-�)F-�0!F�"E?�3F�?F�F�F�F�
F-�F	�F-�F	�F-�-F1�4F1�I�H4�;H�H4�H!�!H4�$H!�%H4�(I�4H8	�8I�;H8	�<I�I�Iz)test requires hostname_checks_common_namec�(�t��\}}}|jsJ�d|_t|d���}|5|�t	j��|���5}|�t|jf��ddd��n#1swxYwYddd��n#1swxYwYtt��\}}}d|_t|d���}|5|�t	j��|���5}|�	tj��5|�t|jf��ddd��n#1swxYwYddd��n#1swxYwYddd��dS#1swxYwYdS)NFTr�r�)r�r�rJr�r�r�r�rDr�r�r
�SSLCertVerificationErrorrKs      r"r�z.ThreadedTests.test_hostname_checks_common_nameEs���4C�3D�3D�0�����9�9�9�9�5:��2�$�N�4�H�H�H��
�	/�	/��+�+�F�M�O�O�<D�,�F�F�
/�IJ��	�	�4���-�.�.�.�
/�
/�
/�
/�
/�
/�
/�
/�
/�
/�
/����
/�
/�
/�
/�	/�	/�	/�	/�	/�	/�	/�	/�	/�	/�	/����	/�	/�	/�	/�
4C�9�3M�3M�0����5:��2�#�N�4�H�H�H��
�	3�	3��+�+�F�M�O�O�<D�,�F�F�
3�IJ��&�&�s�'C�D�D�3�3��I�I�t�V�[�1�2�2�2�3�3�3�3�3�3�3�3�3�3�3����3�3�3�3�
3�
3�
3�
3�
3�
3�
3�
3�
3�
3�
3����
3�
3�
3�
3�	3�	3�	3�	3�	3�	3�	3�	3�	3�	3�	3�	3����	3�	3�	3�	3�	3�	3s��)B$�"B
�B$�
B	�B$�B	�B$�$B(�+B(�!)F�
 E/�*"E�E/�E�E/�E� E/�#F�/E3	�3F�6E3	�7F�F�Fc�:�t�tj��}|�t��|�d��t}t�tj��}|�t��t|d���}|5|�tj��|���5}|�
t|jf��|���}|�|d��|���d�d��}|�|dd�d	��ddd��n#1swxYwYddd��dS#1swxYwYdS�
NzECDHE:ECDSA:!NULL:!aRSATr�r�r�r�-r�)�ECDHE�ECDSA)r
rnrbr�r�rS�SIGNED_CERTFILE_ECC_HOSTNAMErar��SIGNED_CERTFILE_ECCrJr�r�r�r�rDrrOr��split�r�r�r�r�rCr�r�r�s        r"�
test_ecc_certzThreadedTests.test_ecc_cert]s������(?�@�@���,�,�Z�8�8�8��"�"�#<�=�=�=�/������(?�@�@���&�&�':�;�;�;�$�N�4�H�H�H��
�	@�	@��+�+�F�M�O�O�<D�,�F�F�
@�IJ��	�	�4���-�.�.�.��}�}��������&C�D�D�D������A��,�,�S�1�1������r��r�
�,>�?�?�?�

@�
@�
@�
@�
@�
@�
@�
@�
@�
@�
@����
@�
@�
@�
@�	@�	@�	@�	@�	@�	@�	@�	@�	@�	@�	@�	@����	@�	@�	@�	@�	@�	@s7�,)F�BE8�,F�8E<	�<F�?E<	�F�F�Fc��t�tj��}|�t��tjj|_|�d��t}t�tj
��}|�t��|�t��t|d���}|5|�t!j��|���5}|�t$|jf��|���}|�|d��|���d�d��}|�|dd�d	��ddd��n#1swxYwYddd��dS#1swxYwYdSr�)r
rnrbr�r�rrmrjrSr�rar�r�r�rJr�r�r�r�rDrrOr�r�r�s        r"�test_dual_rsa_ecczThreadedTests.test_dual_rsa_eccrs$������(?�@�@���,�,�Z�8�8�8�*-��)?��&��"�"�#<�=�=�=�/������(?�@�@���&�&�':�;�;�;��&�&��7�7�7�$�N�4�H�H�H��
�	@�	@��+�+�F�M�O�O�<D�,�F�F�
@�IJ��	�	�4���-�.�.�.��}�}��������&C�D�D�D������A��,�,�S�1�1������r��r�
�,>�?�?�?�

@�
@�
@�
@�
@�
@�
@�
@�
@�
@�
@����
@�
@�
@�
@�	@�	@�	@�	@�	@�	@�	@�	@�	@�	@�	@�	@����	@�	@�	@�	@�	@�	@s7�)G�BF(�G�(F,	�,G�/F,	�0G�G�Gc��tjrtj�d��t
�t
j��}|�t��t
�t
j
��}t
j|_d|_
|�t��gd�}|D]�\}}t!|d���}|5|�t%j��|���5}|�|j|��|�t,|jf��|���}|�|j|��|�|d��ddd��n#1swxYwYddd��n#1swxYwY��t!|d���}|5|�t%j��d���5}|�t
j��5|�t,|jf��ddd��n#1swxYwYddd��n#1swxYwYddd��n#1swxYwYt!|d���5}t9j|��5|�t<��5|�t%j��d���ddd��n#1swxYwYddd��n#1swxYwYddd��n#1swxYwYt!|d���5}t9j|��5|�t>��5|�t%j��d	���ddd��n#1swxYwYddd��n#1swxYwYddd��dS#1swxYwYdS)
Nr�T))ukönig.idn.pythontest.net�xn--knig-5qa.idn.pythontest.net)r�r�)sxn--knig-5qa.idn.pythontest.netr�)u(königsgäßchen.idna2003.pythontest.net�.xn--knigsgsschen-lcb0w.idna2003.pythontest.net)r�r�)s.xn--knigsgsschen-lcb0w.idna2003.pythontest.netr�)�.xn--knigsgchen-b4a3dun.idna2008.pythontest.netr�)s.xn--knigsgchen-b4a3dun.idna2008.pythontest.netr�r�r�r�zpython.example.orgz.pythontest.netsk�nig.idn.pythontest.net) rr�r�r�r�r
rnrar��IDNSANSFILErbr�r�r�r�r�rJr�r�r�r�r�r�rDrrOr�r�rr��UnicodeError�UnicodeDecodeError)	r�r�r��
idn_hostnamesr��expected_hostnamerCr�r�s	         r"�test_check_hostname_idnz%ThreadedTests.test_check_hostname_idn�s����?�	#��J���T�"�"�"�����(?�@�@���&�&�{�3�3�3��.�.��!8�9�9��!�/���!%����%�%�j�1�1�1�
�
�
�
�.3@�		I�		I�.�O�.�'��t�L�L�L�F��
I�
I��(�(�����9H�)�J�J�I�MN��$�$�Q�%6�8I�J�J�J��I�I�t�V�[�1�2�2�2��=�=�?�?�D��$�$�Q�%6�8I�J�J�J��O�O�D�*G�H�H�H�
I�I�I�I�I�I�I�I�I�I�I����I�I�I�I�
I�
I�
I�
I�
I�
I�
I�
I�
I�
I�
I����
I�
I�
I�
I��$�N�4�H�H�H��
�	3�	3��$�$�V�]�_�_�5I�%�K�K�
3�NO��&�&�s�';�<�<�3�3��I�I�t�V�[�1�2�2�2�3�3�3�3�3�3�3�3�3�3�3����3�3�3�3�
3�
3�
3�
3�
3�
3�
3�
3�
3�
3�
3����
3�
3�
3�
3�	3�	3�	3�	3�	3�	3�	3�	3�	3�	3�	3����	3�	3�	3�	3�
 ��t�
D�
D�
D�	?�� �:�4�@�@�
?�
?��&�&�|�4�4�?�?��'�'��
���,=�(�?�?�?�?�?�?�?�?�?�?�?�?�?�?����?�?�?�?�
?�
?�
?�
?�
?�
?�
?�
?�
?�
?�
?����
?�
?�
?�
?�	?�	?�	?�	?�	?�	?�	?�	?�	?�	?�	?����	?�	?�	?�	?�
 ��t�
D�
D�
D�	L�� �:�4�@�@�
L�
L��&�&�'9�:�:�L�L��'�'��
���,J�(�L�L�L�L�L�L�L�L�L�L�L�L�L�L����L�L�L�L�
L�
L�
L�
L�
L�
L�
L�
L�
L�
L�
L����
L�
L�
L�
L�	L�	L�	L�	L�	L�	L�	L�	L�	L�	L�	L�	L����	L�	L�	L�	L�	L�	LsE�)F,�BF�	F,�F�F,�F�F,�,F0	�3F0	�)I0�4 I�"I�6I�I�I�	I�
I�
I0�I	�I0� I	�!I0�0I4�7I4�L�!L�<)K1�%L�1K5�5L�8K5�9L�<L�L	�L�L	�L�L#�&L#�;O�N7�+)N �N7� N$�$N7�'N$�(N7�+O�7N;	�;O�>N;	�?O�O�Oc�6�t��\}}}|�t��tj|_tjj|_t|dd���}|5|�
tj��|���5}	|�t|jf��|�d��n�#tj$r8}t"jr"t&j�d|z��Yd}~n^d}~wt,$rN}|jt.jkr�t"jr"t&j�d|z��Yd}~nd}~wwxYwddd��n#1swxYwYddd��dS#1swxYwYdS)z�Connecting when the server rejects the client's certificate

        Launch a server with CERT_REQUIRED, and check that trying to
        connect to it with a wrong client certificate fails.
        Tr}r�z'Use of invalid cert should have failed!z
SSLError is %r
Nz
socket.error is %r
)r�r�rr
r�r�rrmrjrJr�r�r�r�rDr8r�rr�r�r�r�rgr�r��r�r�r�r�rCr�r>s       r"�test_wrong_cert_tls12z#ThreadedTests.test_wrong_cert_tls12�sI��4C�3D�3D�0�����&�&�x�0�0�0�%(�%6��"�),��)?��&�#�"�4�$�
�
�
���	E�	E��*�*�6�=�?�?�;C�+�E�E�	E�HI�
E��	�	�4���-�.�.�.��	�	�C�D�D�D�D���<�
?�
?�
?��?�?��J�$�$�%9�A�%=�>�>�>�����������
C�
C�
C��7�e�.�.�.���?�C��J�$�$�%=��%A�B�B�B����������	
C����	E�	E�	E�	E�	E�	E�	E�	E�	E�	E�	E����	E�	E�	E�	E�	E�	E�	E�	E�	E�	E�	E�	E�	E�	E�	E�	E����	E�	E�	E�	E�	E�	Ess�()F�E6�!C
�4E6�
E'�.D�E6�
E'�AE"�E6�"E'�'E6�*F�6E:	�:F�=E:	�>F�F�Fr�c��t��\}}}|�t��tj|_tjj|_tjj|_t|dd���}|5|�
tj��|d���5}|�t|jf��|�tjd��5|�d��|�d��|�d��|�d��ddd��n#1swxYwYddd��n#1swxYwYddd��dS#1swxYwYdS)	NTr}F�r��suppress_ragged_eofszalert unknown ca|EOF occurred�datarsshould have failed already)r�r�rr
r�r�rr�rQrJr�r�r�r�rDr�r�r�rLrKs      r"�test_wrong_cert_tls13z#ThreadedTests.test_wrong_cert_tls13�s'��3B�3D�3D�0�����&�&�x�0�0�0�%(�%6��"�),��)?��&�),��)?��&�#�"�4�$�
�
�
���
	�
	�
�
'�
'��
���8@�=B�(�D�D�
	�HI�
�I�I�t�V�[�)�*�*�*��'�'���/���
�
�
���� � � ����t�������5�6�6�6����t����
�
�
�
�
�
�
�
�
�
�
����
�
�
�
�
	�
	�
	�
	�
	�
	�
	�
	�
	�
	�
	����
	�
	�
	�
	�
	�
	�
	�
	�
	�
	�
	�
	�
	�
	�
	�
	����
	�
	�
	�
	�
	�
	s\�>*E:�(AE"�*AE�?E"�E�E"�E�E"�E:�"E&	�&E:�)E&	�*E:�:E>�E>c�������tj���tj���tj���tj�t
������fd�}����fd�}tj|���}|���	|��|���dS#|���wxYw)ztA brutal shutdown of an SSL server should raise an OSError
        in the client when attempting handshake.
        c���������������\}}|�����������dSrX)rFr�r�r�)�newsockr��
listener_gone�listener_readyr�s  ���r"�listenerz2ThreadedTests.test_rude_shutdown.<locals>.listener
se���
�H�H�J�J�J���� � � ��H�H�J�J�M�G�T��M�M�O�O�O�
�G�G�I�I�I��������r$c�T������tj��5}|�t�f������	t	|��}��d��n#t$rYnwxYwddd��dS#1swxYwYdS)Nz2connecting to closed SSL socket should have failed)r;r�r�r�r�r8rg)r�r�r�r�rDr�s  ����r"�	connectorz3ThreadedTests.test_rude_shutdown.<locals>.connector$
s
������!�!�!�����
T�A��	�	�4��,�'�'�'��"�"�$�$�$�T�/��2�2�H��I�I�R�S�S�S�S�������D�����
T�
T�
T�
T�
T�
T�
T�
T�
T�
T�
T�
T����
T�
T�
T�
T�
T�
Ts5�1B�B�*B�
B
�
B�B
�
B�B!�$B!��targetN)	r�r:r�rr=r�r�r9r)r�r�r�rRr�r�rDr�s`   @@@@r"�test_rude_shutdownz ThreadedTests.test_rude_shutdown
s��������#��*�*��!��)�)�
��M�O�O���&�q�$�/�/��	 �	 �	 �	 �	 �	 �	 �
	T�
	T�
	T�
	T�
	T�
	T�
	T�
	T�
��H�-�-�-��	���	�	�	�	��I�K�K�K�
�F�F�H�H�H�H�H��A�F�F�H�H�H�H���s�
B2�2Cc	��tjrtj�d��t
�t
j��}|�t��t
�t
j
��}t|d���}|5|�tj
��t���5}	|�t |jf��n�#t
j$r�}d}|�|t
j��|�|jd��|�|j|��|�|t3|����|�dt3|����Yd}~nd}~wwxYwddd��n#1swxYwYddd��dS#1swxYwYdS)Nr�Tr�r�z&unable to get local issuer certificater�r�)rr�r�r�r�r
rnrar�r�rbrJr�r�r�r�r�rDr�rJr�r��verify_code�verify_messager�r�)r�r�r�rCr�r>r(s       r"�test_ssl_cert_verify_errorz(ThreadedTests.test_ssl_cert_verify_error7
sS���?�	#��J���T�"�"�"�����(?�@�@���&�&��7�7�7��.�.��!8�9�9��#�N�4�H�H�H��
�	H�	H��$�$�V�]�_�_�5M�%�O�O�

H�RS�H��I�I�t�V�[�1�2�2�2�2���|�H�H�H�B�C��)�)�!�S�-I�J�J�J��$�$�Q�]�B�7�7�7��$�$�Q�%5�s�;�;�;��M�M�#�t�A�w�w�/�/�/��M�M�"=�t�A�w�w�G�G�G�G�G�G�G�G�����
H����	

H�

H�

H�

H�

H�

H�

H�

H�

H�

H�

H����

H�

H�

H�

H�	H�	H�	H�	H�	H�	H�	H�	H�	H�	H�	H�	H����	H�	H�	H�	H�	H�	Hsa�!.G�F9�!C3�2F9�3F*�BF%� F9�%F*�*F9�-G�9F=	�=G�F=	�G�G�Grhc�&�tjrtj�d��ttjtjd��ttjtjdtj��ttjtjdtj	��ttjtj
d��td��r%ttjtjd��ttjtj
d��ttjtj
dtj���ttjtj
dtj���dS)z9Connecting to an SSLv2 server with various client optionsr�TFr�r�N)rr�r�r�r�r�r
�PROTOCOL_SSLv2r�r�r`rc�PROTOCOL_SSLv3rr�r�r�s r"�test_protocol_sslv2z!ThreadedTests.test_protocol_sslv2N
s)���?�	#��J���T�"�"�"��3�-�s�/A�4�H�H�H��3�-�s�/A�4��IZ�[�[�[��3�-�s�/A�4��IZ�[�[�[��3�-�s�/?��G�G�G��7�#�#�	N��s�1�3�3E�u�M�M�M��3�-�s�/A�5�I�I�I��3�-�s�/?��*-�/�	;�	;�	;�	;��3�-�s�/?��*-�/�	;�	;�	;�	;�	;�	;r$c��tjrtj�d��td��ry	t
tjtj	d��nR#t$rE}tjr/tj�dt|��z��Yd}~nd}~wwxYwtd��r%t
tjtjd��t
tjtjd��td��r%t
tjtj
d��td��r0t
tjtjdtj��t
tjtjdtj��td��r0t
tjtj
dtj��td��r0t
tjtjdtj��t
tjtjdtj��td��r0t
tjtj
dtj��td��r1t
tjtjdtj�	��t
tjtjdtjtjz�	��td��r3t
tjtj
dtj�	��dSdS)
z:Connecting to an SSLv23 server with various client optionsr�rhTz; SSL2 client to SSL23 server test unexpectedly failed:
 %s
NrFr)r�)rr�r�r�r�rcr�r
r`r�rgr]r�rr�r�r�r�r�)r�r�s  r"�test_PROTOCOL_TLSzThreadedTests.test_PROTOCOL_TLS`
s����?�	#��J���T�"�"�"��7�#�#�	"�
"�"�3�#3�S�5G��N�N�N�N���
"�
"�
"��?�"��J�$�$�W��a�&�&�!�"�"�"����������
"�����7�#�#�	L��s�/��1C�U�K�K�K��3�+�S�-=�t�D�D�D��7�#�#�	N��s�/��1C�W�M�M�M��7�#�#�	_��s�/��1C�U�C�L]�^�^�^��3�+�S�-=�t�S�EV�W�W�W��7�#�#�	a��s�/��1C�W�c�N_�`�`�`��7�#�#�	_��s�/��1C�U�C�L]�^�^�^��3�+�S�-=�t�S�EV�W�W�W��7�#�#�	a��s�/��1C�W�c�N_�`�`�`��7�#�#�	;��s�/��1C�U�*-�/�
;�
;�
;�
;�	�3�+�S�-=�t�*-�/�C�O�*K�	M�	M�	M�	M��7�#�#�	?��s�/��1C�U�.1�o�
?�
?�
?�
?�
?�
?�	?�	?s�%A"�"
B1�,;B,�,B1rc�z�tjrtj�d��ttjtjd��ttjtjdtj��ttjtjdtj	��td��r%ttjtjd��ttjtjdtj
���ttjtjd��dS)z9Connecting to an SSLv3 server with various client optionsr�rrhFr�N)rr�r�r�r�r�r
r�r�r�rcr�r`r�rr�s r"�test_protocol_sslv3z!ThreadedTests.test_protocol_sslv3�
s����?�	#��J���T�"�"�"��3�-�s�/A�7�K�K�K��3�-�s�/A�7�C�L]�^�^�^��3�-�s�/A�7�C�L]�^�^�^��7�#�#�	N��s�1�3�3E�u�M�M�M��3�-�s�/?��*-�/�	;�	;�	;�	;��3�-�s�/A�5�I�I�I�I�Ir$rc��tjrtj�d��ttjtjd��ttjtjdtj��ttjtjdtj	��td��r%ttjtjd��td��r%ttjtjd��ttjtj
dtj���dS)z8Connecting to a TLSv1 server with various client optionsr�rrhFrr�N)rr�r�r�r�r�r
rr�r�rcr�r�r`r�r�s r"�test_protocol_tlsv1z!ThreadedTests.test_protocol_tlsv1�
s����?�	#��J���T�"�"�"��3�-�s�/A�7�K�K�K��3�-�s�/A�7�C�L]�^�^�^��3�-�s�/A�7�C�L]�^�^�^��7�#�#�	N��s�1�3�3E�u�M�M�M��7�#�#�	N��s�1�3�3E�u�M�M�M��3�-�s�/?��*-�/�	;�	;�	;�	;�	;�	;r$rc��tjrtj�d��ttjtjd��td��r%ttjtj	d��td��r%ttjtj
d��ttjtjdtj���ttjtjd��ttjtj
d��ttj
tjd��dS)zjConnecting to a TLSv1.1 server with various client options.
           Testing against older TLS versions.r��TLSv1.1rhFrr�N)rr�r�r�r�r�r
rrcr�r�r`r�r|r�s r"�test_protocol_tlsv1_1z#ThreadedTests.test_protocol_tlsv1_1�
s���?�	#��J���T�"�"�"��3�/��1E�y�Q�Q�Q��7�#�#�	P��s�3�S�5G��O�O�O��7�#�#�	P��s�3�S�5G��O�O�O��3�/��1A�5�*-�*;�	=�	=�	=�	=�	�3�+�S�-A�9�M�M�M��3�/��1E�u�M�M�M��3�/��1E�u�M�M�M�M�Mr$rmc��tjrtj�d��ttjtjdtjtj	ztjtj	z���td��r%ttjtjd��td��r%ttjtjd��ttjtj
dtj���ttj
tjd��ttj��rJttjtjd��ttjtjd��ttj��rLttjtjd��ttjtjd��dSdS)	zjConnecting to a TLSv1.2 server with various client options.
           Testing against older TLS versions.r��TLSv1.2)r�r�rhFrr�N)rr�r�r�r�r�r
r|r�r�rcr�r�r`r�rfrrr�s r"�test_protocol_tlsv1_2z#ThreadedTests.test_protocol_tlsv1_2�
s����?�	#��J���T�"�"�"��3�/��1E�y�*-�/�#�/�*I�*-�/�#�/�*I�	L�	L�	L�	L��7�#�#�	P��s�3�S�5G��O�O�O��7�#�#�	P��s�3�S�5G��O�O�O��3�/��1A�5�*-�*;�	=�	=�	=�	=�	�3�+�S�-A�9�M�M�M��C�.�/�/�	P��s�3�S�5G��O�O�O��s�1�3�3G��O�O�O��C�0�1�1�	R��s�3�S�5I�5�Q�Q�Q��s�3�S�5I�5�Q�Q�Q�Q�Q�	R�	Rr$c��d}ttddd���}d}|5tj��}|�d��|�t
|jf��tjrtj
�d��|D�]�}tjr"tj
�d|z��|r*|�|��|���}n*|�
|��|�d��}|������}|dkrV|�d	��rAtjr"tj
�d
|z��t%|��}d}��	|dkr[|�d	��rFtjr"tj
�d|z��|���}d}��jtjr"tj
�d
|z�����tjrtj
�d��|r|�d��n|�
d��|r|���n|���ddd��dS#1swxYwYdS)z6Switching from clear text to encrypted and back again.)smsg 1sMSG 2rsMSG 3smsg 4rsmsg 5smsg 6T)rrr!Fr�rr�rsokz/ client:  read %r from server, starting TLS...
rz- client:  read %r from server, ending TLS...
z client:  read %r from server
r�r�N)rJrr�rHr�r�rDrr�r�r�r�rLrlrhr r9r^r�rmr�)	r��msgsrC�wrappedr�r�rZr�r(s	         r"�
test_starttlszThreadedTests.test_starttls�
s���c��#�H�48�+/�59�;�;�;����
�.	�.	��
���A�
�M�M�$����
�I�I�t�V�[�)�*�*�*���
'��
� � ��&�&�&��
E�
E���?�>��J�$�$�3�f�<�>�>�>��+��J�J�v�&�&�&�"�i�i�k�k�G�G��F�F�6�N�N�N��f�f�T�l�l�G��m�m�o�o�+�+�-�-���[�(�(�S�^�^�E�-B�-B�(���#��
�(�(�N�!�"�#�#�#�,�A�.�.�D�"�G�G��y�(�(�S�^�^�E�-B�-B�(���#��
�(�(�L�!�"�#�#�#����
�
�A�#�G�G���E��
�(�(�=��C�E�E�E����
D��
� � �!B�C�C�C��
"��
�
�9�%�%�%�%����y�!�!�!��
��
�
��������	�	�	�].	�.	�.	�.	�.	�.	�.	�.	�.	�.	�.	�.	����.	�.	�.	�.	�.	�.	s�JK�K�Kc�f�t|t���}tjrtj�d��ttd��5}|�	��}ddd��n#1swxYwYd}d|j
�d�}t�t���}tj�||�	��}	|����d
��}|rrt'|��dkr_|�	t'|����}tjr1tj�dt)|��|fz��|���n#|���wxYw|�||��dS)
z8Using socketserver to create and manage SSL connections.r�r��rbNr\zhttps://localhost:z/test_ssl.py�r�rIzcontent-lengthrz/ client: read %d bytes from remote server '%s'
)r�r�rr�r�r�r�rKrrLrDr
rr��urllib�request�urlopen�infor�rKrdr�r�)r�rCrNr<r>�urlr��dlens        r"�test_socketserverzThreadedTests.test_socketserver
s���"�4�/�B�B�B���?�	#��J���T�"�"�"�
�(�D�
!�
!�	�Q������B�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�
��<�6�;�<�<�<���,�,�J�,�?�?���N�"�"�3��"�8�8��		��6�6�8�8�<�<� 0�1�1�D��
-��T���Q����V�V�C��I�I�&�&���?�-��J�$�$�J��r�7�7�F�+�,�-�-�-�
�G�G�I�I�I�I��A�G�G�I�I�I�I��������R� � � � � s�A8�8A<�?A<�BF�Fc
��tjrtj�d��d}tt��}|5ttj����}|�	d|j
f��tjr"tj�d|z��|�|��|���}tjr"tj�d|z��||���krX|�
d|dd�t|��|dd����t|��fz��|�d	��tjrtj�d
��|���tjrtj�d��ddd��dS#1swxYwYdS)z'Check the example asyncore integration.r�r�r/rr�r�Nr�r�r�z client:  connection closed.
)rr�r�r�r�rQrr�r�r�rDrLr9r8rdr�)r�r�rCr�r�s     r"�test_asyncore_serverz"ThreadedTests.test_asyncore_server$s���?�	#��J���T�"�"�"���#�H�-�-��
�	C�	C� �����1�1�A�
�I�I�{�F�K�0�1�1�1���
:��
� � �/�&�8�:�:�:�
�G�G�F�O�O�O��f�f�h�h�G���
B��
� � �!6��!@�A�A�A��&�,�,�.�.�(�(��	�	�K��s��s�|�S��\�\��c�r�c�{�(�(�*�*�C��K�K�9�9�:�:�:�
�G�G�I������
D��
� � �!B�C�C�C�
�G�G�I�I�I���
C��
� � �!A�B�B�B�)	C�	C�	C�	C�	C�	C�	C�	C�	C�	C�	C�	C����	C�	C�	C�	C�	C�	Cs�F1H�H�	Hc
����tjrtj�d��tttjtj	tdd���}|5ttj��dtttj������t|jf���fd�}�fd�}d�jdgt fd	�jdd
gt fd�jdgd�fg}d
�jdgfd�jdd
gfd|dgfd|dgfg}d}|D�]r\}}}	}
}||z�d��}	||g|
�R�}
d�|��}|�|
||��|�������}||���krW|�d�||dd�t!|��|dd�t!|���������#t6$r�}|	r)|�d�|�����t9|���|��s*|�d�||�����Yd}~��ld}~wwxYw|D�]L\}}}	}
||z�d��}	��|��||
�}||���krW|�d�||dd�t!|��|dd�t!|���������#t6$r�}|	r)|�d�|�����t9|���|��s*|�d�||���������Yd}~��Fd}~wwxYwd}��|��t=t!|����}|���d |��t!|����|�||��t>�nt>j t!|��z}|�!|��}��|��|�����|��|�"tF�j$��|�"tF�j%dg��|�"tF�j&d!��|�"tF�j't=d!��g����d"��|�"t6�jd ��|�"t6�jd ����(��ddd��dS#1swxYwYdS)#z Test recv(), send() and friends.r�TF�r4r3r5rr!�r�r�r�r�c�`��td��}��|��}|d|�S�Nsd)r�ri)�br�r�s  �r"�
_recv_intoz0ThreadedTests.test_recv_send.<locals>._recv_intoTs-����i�(�(�����A������%��y� r$c�f��td��}��|��\}}|d|�Sr)r�rk)rr�r�r�s   �r"�_recvfrom_intoz4ThreadedTests.test_recv_send.<locals>._recvfrom_intoYs3����i�(�(���o�o�a�0�0���t���%��y� r$rlrmzsome.addressr�c��dSrXrY)r�s r"�<lambda>z.ThreadedTests.test_recv_send.<locals>.<lambda>bs��4�r$rhrjrirk�PREFIX_r�zsending with {}�r(zpWhile sending with <<{name:s}>> bad data <<{outdata:r}>> ({nout:d}) received; expected <<{indata:r}>> ({nin:d})
Nr�)r!r��noutr��ninz>Failed to send with method <<{name:s}>>; expected to succeed.
r zFMethod <<{name:s}>> failed with unexpected exception message: {exp:s}
)r!�expzrWhile receiving with <<{name:s}>> bad data <<{outdata:r}>> ({nout:d}) received; expected <<{indata:r}>> ({nin:d})
zAFailed to receive with method <<{name:s}>>; expected to succeed.
r�rrfr�))rr�r�r�r�rJrr
r�rar�r�r�r�rDrlrdrmr�rhrjr��formatr�rLr9r8r�r]r^r��ctypes�c_ubyte�from_buffer_copyr�rnrorprqrrr�)r�rCrr�send_methods�recv_methods�data_prefix�	meth_name�	send_methr�rv�ret_val_methr�r�r(r�r>�	recv_methr��buffer�ubyte�	bytesliker�s                      @r"�test_recv_sendzThreadedTests.test_recv_sendAs�����?�	#��J���T�"�"�"�#�H�-0�]�03�0G�,4�+/�5:�<�<�<���{	�{	� �����,1�)1�)1�*-�-�	9�9�9�A�

�I�I�t�V�[�)�*�*�*�
!�
!�
!�
!�
!�

!�
!�
!�
!�
!�����r�3�/��1�8�U�^�,<�c�B��A�I�t�R���@��L�����r�*��Q�Z���0@�A��j�$��3� �.�%��<�	�L�$�K�&2�
�
�"��I�~�t� �%�	�1�9�9�'�B�B���#�)�F�2�T�2�2�2�C�+�2�2�9�=�=�C��$�$�S�,�,�v�*>�*>�C�$�H�H�H��f�f�h�h�G��&�,�,�.�.�0�0��	�	�B�BH�&�%.������%(��\�\�'-�c�r�c�{��F���CI�C�C������"����%���	�	�5�5;�V��V�5K�5K�����q�6�6�,�,�Y�7�7���	�	�;�;A�6�%.�A�<B�<�<�����������������?K�
�
�:�	�9�n�d�%�	�1�9�9�'�B�B����F�F�6�N�N�N�'�i��.�G��&�,�,�.�.�0�0��	�	�B�BH�&�%.������%(��\�\�'-�c�r�c�{��F���CI�C�C������"����%���	�	�5�5;�V��V�5K�5K�����q�6�6�,�,�Y�7�7���	�	�;�;A�6�%.�A�<B�<�<�����F�F�H�H�H�H�H�H�H�H���������"�D�
�F�F�4�L�L�L��s�4�y�y�)�)�F����Q�V�V�B��/�/��T���;�;�;����V�T�*�*�*��!����T���2��!�2�2�4�8�8�	��	�	�)�$�$�$�� � ������4�0�0�0�

���1�1�5�9�9�9����1�1�9�w�i�H�H�H����1�1�9�c�B�B�B����1��n�y��~�~�.>�
@�
@�
@�
�G�G�I�������j�!�&�"�5�5�5����j�!�&�"�5�5�5�
�G�G�I�I�I�w{	�{	�{	�{	�{	�{	�{	�{	�{	�{	�{	�{	����{	�{	�{	�{	�{	�{	sl�"CW�=CH�?W�
J�
A7J�W�J�%W�2B	L<�;W�<
O�BO�W�O�G5W�W"�%W"c�&�tt��}|�|��tjt
|jf��}|�|j��t|d���}|�|j��|�
d��|�|�d��d��|�|�
d��d��|�|�
��d��|�d��|�|�d��d��|�|�t!����d��dS)NF�r�r�rr$)rJrrzr�rGr�rDr�r�r�rlr�rhrLrHrir�)r�rCr�s   r"�test_recv_zerozThreadedTests.test_recv_zero�sC��#�H�-�-�����&�!�!�!��$�d�F�K�%8�9�9������� � � ��Q�U�;�;�;������� � � �	
���w�������������C�(�(�(����������C�(�(�(���������7�+�+�+�	
�
�
�e�������������C�(�(�(�������Y�[�[�1�1�1�5�5�5�5�5r$c� �tt��}|�|��tjt
|jf��}|�|j��t|d���}|�|j��|�
d��tjdddg��}|�|�
|��d��|�t|��dd�d��Gd�dt��}|�
d��|d	��}|�|�
|��d��|�t|��d
��dS)NFrr��IrrAc��eZdZd�ZdS)�;ThreadedTests.test_recv_into_buffer_protocol_len.<locals>.Bc��ddzdS�Nr�rrYr�s r"�__len__zCThreadedTests.test_recv_into_buffer_protocol_len.<locals>.B.__len__�s���!����r$N)r�rMrNr%rYr$r"�Br"�s#������
�
�
�
�
r$r&r�sdata)rJrrzr�rGr�rDr�r�r�rl�arrayr�rir�r�)r�rCr�r�r&s     r"�"test_recv_into_buffer_protocol_lenz0ThreadedTests.test_recv_into_buffer_protocol_len�sj��#�H�-�-�����&�!�!�!��$�d�F�K�%8�9�9������� � � ��Q�U�;�;�;������� � � �	���w�����k�#��1�v�&�&��������S�)�)�1�-�-�-�����s���B�Q�B���1�1�1�	�	�	�	�	�	�	�	�	�	
���w�����a��d�d��������S�)�)�1�-�-�-�����s���[�1�1�1�1�1r$c�X���tttjtjtdd���}|5tt
j��dtttj������t|j	f����
d��td�����fd�}|�tj
tjf|����
d������ddd��dS#1swxYwYdS)NTFr�r�i c�2��	������rX)rl)r�r�s��r"�fill_bufferz8ThreadedTests.test_nonblocking_send.<locals>.fill_buffers��� ��F�F�3�K�K�K� r$)rJrr
r�rar�r�r�r�rDrHr�r�r�rIr�)r�rCr+r�r�s   @@r"�test_nonblocking_sendz#ThreadedTests.test_nonblocking_send�sm����#�H�-0�]�03�0G�,4�+/�5:�<�<�<���	�	� �����,1�)1�)1�*-�-�	9�9�9�A�

�I�I�t�V�[�)�*�*�*�
�M�M�%� � � ��D�/�/�C�
 �
 �
 �
 �
 �
 �
���s�4�"�3�5�6A�
C�
C�
C�
�M�M�$����
�G�G�I�I�I�)	�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	�	s�CD�D#�&D#c�<����tjtj���d}tj���}t	j���d����fd�}t	j|���}|�������		tjtj��}|�	d��|�
||f��|�tdt|��|���n#|���wxYw	tjtj��}t|��}|�	d��|�td|j
||f��|���n#|���wxYw	d�|�������dS#d�|�������wxYw)Nr/Fc�0����������g}�sOtj�gggd��\}}}�|vr-|�����d����O|D]}|����dS)Nr�r)rFr�r�r�r�r�)�connsr3�wr>r��finishrC�starteds     ���r"�servez3ThreadedTests.test_handshake_timeout.<locals>.serves�����M�M�O�O�O��K�K�M�M�M��E��
5� �-���"�b�#�>�>���1�a��Q�;�;��L�L�������!3�4�4�4��
5��
�
���
�
�����
�
r$r�r�z	timed outT)r�r]rr=r�r:r�r9r;rwr�r�rGr�r�r)	r�r�rDr3rRr�r1rCr2s	      @@@r"�test_handshake_timeoutz$ThreadedTests.test_handshake_timeouts��������v�~�.�.�����&�v�.�.���/�#�#����	�	�	�	�	�	�	�
��E�*�*�*��	���	�	�	�������	�
��M�&�.�1�1�����S�!�!�!��	�	�4��,�'�'�'��&�&�|�[�'7��<�<�<����	�	�	�	�����	�	�	�	����
��M�&�.�1�1��$�Q�'�'�����S�!�!�!��&�&�|�[�'(�y�4��,�@�@�@����	�	�	�	�����	�	�	�	����	��F�
�F�F�H�H�H��L�L�N�N�N�N�N���F�
�F�F�H�H�H��L�L�N�N�N�N���s8�A,D�?G/�D*�*G/�.A&F)�G/�)F?�?G/�/,Hc��
���
�t��\}}}tjtj���
d}tj�
��}|��
d����
|��
j��tj	���
d�d��
���
fd�}tj
|���}|����
���|�tj��|���}|�
||f��|�d��|���|���}	|���|��������
���|��t(j��|��|	��dS)Nr/Tr�c����������������\������d����dS)NrA)rFr�r�rlrh)�evt�peer�remoterCs����r"r3z/ThreadedTests.test_server_accept.<locals>.serveLsP����M�M�O�O�O��G�G�I�I�I�!�=�=�?�?�L�F�D��K�K����A���'�'�'�'�'r$r�r�r�)r�r�r]rr=r�rOr�r�r:r�r9r;r�rlrhr�r�rrJr
r�r�)r�rnror�r�rDr3rRrt�client_addrr7r8r9rCs          @@@@r"�test_server_acceptz ThreadedTests.test_server_accept?s�������,;�+<�+<�(�
�J����v�~�.�.�����&�v�.�.���'�'��D�'�A�A������*�+�+�+��o��������	(�	(�	(�	(�	(�	(�	(�	(�
��E�*�*�*��	���	�	�	����
�
�
��'�'��M�O�O�X�(�
�
��	����$�'�(�(�(����G�������
�
�
��(�(�*�*��������	���������������������f�c�m�4�4�4�����{�+�+�+�+�+r$c��t�tj��}d|_|�tj����5}|�t��5}|���ddd��n#1swxYwY|�	|j
jtj��ddd��dS#1swxYwYdSrO)
r
rnrbr�r�r�r�rgrr�r�r��ENOTCONN�r�r�r�r�s    r"�test_getpeercert_enotconnz'ThreadedTests.test_getpeercert_enotconngsA���.�.��!8�9�9��!&���
�
 �
 �����
1�
1�	A�T��"�"�7�+�+�
#�r�� � �"�"�"�
#�
#�
#�
#�
#�
#�
#�
#�
#�
#�
#����
#�
#�
#�
#����R�\�/���@�@�@�	A�	A�	A�	A�	A�	A�	A�	A�	A�	A�	A�	A����	A�	A�	A�	A�	A�	A�6�C�-B�C�B	�C�B	�-C�C�Cc��t�tj��}d|_|�tj����5}|�t��5}|���ddd��n#1swxYwY|�	|j
jtj��ddd��dS#1swxYwYdSrO)
r
rnrbr�r�r�r�rgrJr�r�r�r=r>s    r"�test_do_handshake_enotconnz(ThreadedTests.test_do_handshake_enotconnosA���.�.��!8�9�9��!&���
�
 �
 �����
1�
1�	A�T��"�"�7�+�+�
$�r��!�!�#�#�#�
$�
$�
$�
$�
$�
$�
$�
$�
$�
$�
$����
$�
$�
$�
$����R�\�/���@�@�@�	A�	A�	A�	A�	A�	A�	A�	A�	A�	A�	A�	A����	A�	A�	A�	A�	A�	Ar@c�b�t��\}}}tjj|_|�d��|�d��t
|���5}|�tj��|���5}|�	t��5|�t|j
f��ddd��n#1swxYwYddd��n#1swxYwYddd��n#1swxYwY|�d|jd��dS)N�AES128�AES256rIr�zno shared cipherr)r�r
rrmrjrSrJr�r�r�rgr�r�rDr�r	rKs      r"�test_no_shared_ciphersz$ThreadedTests.test_no_shared_ciphersws���3B�3D�3D�0����),��)?��&��"�"�8�,�,�,��"�"�8�,�,�,�
��
7�
7�
7�	3�6��+�+�F�M�O�O�<D�,�F�F�
3�IJ��&�&�w�/�/�3�3��I�I�t�V�[�1�2�2�2�3�3�3�3�3�3�3�3�3�3�3����3�3�3�3�
3�
3�
3�
3�
3�
3�
3�
3�
3�
3�
3����
3�
3�
3�
3�	3�	3�	3�	3�	3�	3�	3�	3�	3�	3�	3����	3�	3�	3�	3�
	
�
�
�(�&�*<�Q�*?�@�@�@�@�@sZ�#)D�C,�'"C�	C,�C�C,�C�C,� D�,C0	�0D�3C0	�4D�D�
Dc��t�tj��}d|_tj|_t
ttjd���5}|�	tj
����5}|�|���d��|�|j
d��|�t|jf��|�|���d��ddd��n#1swxYwY|�|j
d��|�|���d��ddd��dS#1swxYwYdS)zt
        Basic tests for SSLSocket.version().
        More tests are done in the test_protocol_*() methods.
        F)r3rN�TLSv1.3)r
rnrbr�r�r�rJrrar�r�r�r9r�r�r�rDr�)r�r�rCr�s    r"�test_version_basicz ThreadedTests.test_version_basic�s���
�.�.��!8�9�9��!&���!�m���
��,/�,C�',�.�.�.�		-�17��$�$�V�]�_�_�5�5�
9���
�
�a�i�i�k�k�4�0�0�0��
�
�a�i��.�.�.��	�	�4���-�.�.�.�� � ������i�8�8�8�	
9�
9�
9�
9�
9�
9�
9�
9�
9�
9�
9����
9�
9�
9�
9�

�M�M�!�)�T�*�*�*��M�M�!�)�)�+�+�t�,�,�,�		-�		-�		-�		-�		-�		-�		-�		-�		-�		-�		-�		-����		-�		-�		-�		-�		-�		-s8�'E9�B
D�E9�D"	�"E9�%D"	�&AE9�9E=�E=c��t��\}}}tjj|_t|���5}|�tj��|���5}|�t|j
f��|�|���dhd���|�
|���d��ddd��n#1swxYwYddd��dS#1swxYwYdS)NrIr�r>�TLS_AES_128_GCM_SHA256�TLS_AES_256_GCM_SHA384�TLS_CHACHA20_POLY1305_SHA256rH)r�r
rr�rQrJr�r�r�r�rDr�r�r�r9rKs      r"�test_tls1_3zThreadedTests.test_tls1_3�sz��3B�3D�3D�0����),��)?��&�
��
7�
7�
7�		9�6��+�+�F�M�O�O�<D�,�F�F�
9�IJ��	�	�4���-�.�.�.��
�
�a�h�h�j�j��m�.�.�.����
� � ������i�8�8�8�
9�
9�
9�
9�
9�
9�
9�
9�
9�
9�
9����
9�
9�
9�
9�		9�		9�		9�		9�		9�		9�		9�		9�		9�		9�		9�		9����		9�		9�		9�		9�		9�		9s6�)D�"A:C(�D�(C,	�,D�/C,	�0D�D�Dc�>�t��\}}}tjj|_tjj|_tjj|_tjj|_t|���5}|�tj	��|���5}|�
t|jf��|�
|���d��ddd��n#1swxYwYddd��dS#1swxYwYdS)NrIr�r�)r�r
rrrQrmrjrJr�r�r�r�rDr�r9rKs      r"�test_min_max_version_tlsv1_2z*ThreadedTests.test_min_max_version_tlsv1_2�so��4C�3D�3D�0����),��)=��&�),��)?��&�),��)?��&�),��)?��&�
��
7�
7�
7�	9�6��+�+�F�M�O�O�<D�,�F�F�
9�IJ��	�	�4���-�.�.�.�� � ������i�8�8�8�
9�
9�
9�
9�
9�
9�
9�
9�
9�
9�
9����
9�
9�
9�
9�	9�	9�	9�	9�	9�	9�	9�	9�	9�	9�	9�	9����	9�	9�	9�	9�	9�	9s7�;)D�$A
C:�.D�:C>	�>D�C>	�D�D�Dc�^�t��\}}}tjj|_tjj|_tjj|_tjj|_t||��t|���5}|�
tj��|���5}|�t|jf��|�|���d��ddd��n#1swxYwYddd��dS#1swxYwYdS)NrIr�r�)r�r
rrrQrmrjrrVrJr�r�r�r�rDr�r9rKs      r"�test_min_max_version_tlsv1_1z*ThreadedTests.test_min_max_version_tlsv1_1�s��4C�3D�3D�0����),��)=��&�),��)?��&�),��)=��&�),��)?��&��N�N�;�;�;�
��
7�
7�
7�	9�6��+�+�F�M�O�O�<D�,�F�F�
9�IJ��	�	�4���-�.�.�.�� � ������i�8�8�8�
9�
9�
9�
9�
9�
9�
9�
9�
9�
9�
9����
9�
9�
9�
9�	9�	9�	9�	9�	9�	9�	9�	9�	9�	9�	9�	9����	9�	9�	9�	9�	9�	9s7�)D"�4A
D
�>D"�
D	�D"�D	�D"�"D&�)D&c���t��\}}}tjj|_tjj|_tjj|_tjj|_t||��t|���5}|�	tj
��|���5}|�tj��5}|�
t|jf��ddd��n#1swxYwY|�dt#|j����ddd��n#1swxYwYddd��dS#1swxYwYdS)NrIr��alert)r�r
rrmrjrQrrVrJr�r�r�r�r�r�rDr�r]r�r�s       r"�test_min_max_version_mismatchz+ThreadedTests.test_min_max_version_mismatch�s���4C�3D�3D�0����),��)?��&�),��)?��&�),��)=��&�),��)=��&��N�N�;�;�;�
��
7�
7�
7�	9�6��+�+�F�M�O�O�<D�,�F�F�
9�IJ��&�&�s�|�4�4�3���I�I�t�V�[�1�2�2�2�3�3�3�3�3�3�3�3�3�3�3����3�3�3�3��
�
�g�s�1�;�'7�'7�8�8�8�	
9�
9�
9�
9�
9�
9�
9�
9�
9�
9�
9����
9�
9�
9�
9�	9�	9�	9�	9�	9�	9�	9�	9�	9�	9�	9�	9����	9�	9�	9�	9�	9�	9sZ�)E�4 E�"D�6E�D�E�	D�
+E�5E�E	�E�E	�	E�E� Ec�2�t��\}}}tjj|_tjj|_tjj|_t
||��t|���5}|�tj	��|���5}|�
t|jf��|�
|���d��ddd��n#1swxYwYddd��dS#1swxYwYdS)NrIr�r)r�r
rrrQrjrVrJr�r�r�r�rDr�r9rKs      r"�test_min_max_version_sslv3z(ThreadedTests.test_min_max_version_sslv3�so��3B�3D�3D�0����),��)=��&�),��)=��&�),��)=��&��N�N�;�;�;�
��
7�
7�
7�	7�6��+�+�F�M�O�O�<D�,�F�F�
7�IJ��	�	�4���-�.�.�.�� � ������g�6�6�6�
7�
7�
7�
7�
7�
7�
7�
7�
7�
7�
7����
7�
7�
7�
7�	7�	7�	7�	7�	7�	7�	7�	7�	7�	7�	7�	7����	7�	7�	7�	7�	7�	7s7�5)D�A
C4�(D�4C8	�8D�;C8	�<D�D�Dc���t��\}}}tjj|_t|���5}|�tj��|���5}|�t|j
f��|�d|���d��ddd��n#1swxYwYddd��dS#1swxYwYdS)NrIr��ECDHr)
r�r
rrmrjrJr�r�r�r�rDr�r�rKs      r"�test_default_ecdh_curvez%ThreadedTests.test_default_ecdh_curve�sN��4C�3D�3D�0����*-��)?��&�
 ��
7�
7�
7�	5�6��+�+�F�M�O�O�<D�,�F�F�
5�IJ��	�	�4���-�.�.�.��
�
�f�a�h�h�j�j��m�4�4�4�
5�
5�
5�
5�
5�
5�
5�
5�
5�
5�
5����
5�
5�
5�
5�	5�	5�	5�	5�	5�	5�	5�	5�	5�	5�	5�	5����	5�	5�	5�	5�	5�	5s6�)C�"AB>�2C�>C	�C�C	�C�C�Cr�r�c�j�tjrtj�d��t��\}}}t
|dd���}|5|�tj��|���5}|�	t|jf��|�d��}tjr2tj�d�
|����|�|��|���dkr$|�t#|��d	��n#|�t#|��d
��|�d��|������}|�|t)|���d����d
d
d
��n#1swxYwY|�tj��|���5}|�	t|jf��|�d��}tjr2tj�d�
|����|�||��|�|��|���dkr$|�t#|��d	��n#|�t#|��d
��|�d��|������}|�|t)|���d����d
d
d
��n#1swxYwYd
d
d
��d
S#1swxYwYd
S)z Test tls-unique channel binding.r�TFr}r�r�z! got channel binding data: {0!r}
rH�0�sCB tls-unique
rNz(got another channel binding data: {0!r}
)rr�r�r�r�r�rJr�r�r�r�rDr�r
r�r9r�rdrLr r�r��assertNotEqual)	r�r�r�r�rCr��cb_data�peer_data_repr�new_cb_datas	         r"r�z-ThreadedTests.test_tls_unique_channel_binding�sQ���?�	#��J���T�"�"�"�3B�3D�3D�0����#�N�+/�5:�<�<�<���-	G�-	G��+�+��M�O�O�$,�,�.�.�
C�12��	�	�4���-�.�.�.��/�/��=�=���?�N��J�$�$�<�C�C�G�L�L�N�N�N��$�$�W�-�-�-��9�9�;�;�)�+�+��$�$�S��\�\�2�6�6�6�6��$�$�S��\�\�2�6�6�6����*�+�+�+�!"�������!1�!1��� � ��!%�g���!5�!5�j�!A�!A�C�C�C�)
C�
C�
C�
C�
C�
C�
C�
C�
C�
C�
C����
C�
C�
C�
C�0 �+�+��M�O�O�$,�,�.�.�
G�12��	�	�4���-�.�.�.��3�3�L�A�A���?���J�$�$�C�J�J�'�)�)����
�#�#�G�[�9�9�9��$�$�W�-�-�-��9�9�;�;�)�+�+��$�$�S��\�\�2�6�6�6�6��$�$�S��\�\�2�6�6�6����*�+�+�+�!"�������!1�!1��� � ��!%�k�!2�!2�!9�!9�*�!E�!E�G�G�G�'
G�
G�
G�
G�
G�
G�
G�
G�
G�
G�
G����
G�
G�
G�
G�3-	G�-	G�-	G�-	G�-	G�-	G�-	G�-	G�-	G�-	G�-	G�-	G����-	G�-	G�-	G�-	G�-	G�-	Gs\�)N(�;EG!�N(�!G%	�%N(�(G%	�)+N(�E0N�N(�N	�N(�N	�N(�(N,�/N,c��t��\}}}t||dd|���}tjr8tj�d�|d����|�|dhd���dS)NT�rr!r�z got compression: {!r}
r�>N�RLE�ZLIB)	r�r�rr�r�r�r�r
r��r�r�r�r�rs     r"�test_compressionzThreadedTests.test_compression8s���3B�3D�3D�0����"�>�>�*.��,4�6�6�6���?�	V��J���7�>�>�u�]�?S�T�T�U�U�U��
�
�e�M�*�,C�,C�,C�D�D�D�D�Dr$rCz*ssl.OP_NO_COMPRESSION needed for this testc���t��\}}}|xjtjzc_|xjtjzc_t	||dd|���}|�|dd��dS)NTrcr�)r�rr
rCr�r�rfs     r"�test_compression_disabledz'ThreadedTests.test_compression_disabledAs���4C�3D�3D�0�������#�"7�7������#�"7�7���"�>�>�*.��,4�6�6�6��	
�
�
�e�M�*�D�1�1�1�1�1r$r�c��t��\}}}tjj|_|�t��|�d��tjj|_t||dd|���}|dd}|�	d��}d|vr(d|vr&d	|vr$|�
d
|dz��dSdSdSdS)N�kEDHTrcr�rr��ADH�EDH�DHEzNon-DH cipher: )r�r
rrmrjr�r�rSr�r�r8)r�r�r�r�rr��partss       r"�test_dh_paramszThreadedTests.test_dh_paramsLs���4C�3D�3D�0����),��)?��&��%�%�f�-�-�-��"�"�6�*�*�*�),��)?��&�"�>�>�*.��,4�6�6�6���x���#�����S�!�!������%�u�"4�"4��e�9K�9K��I�I�'�&��)�3�4�4�4�4�4���"4�"4�9K�9Kr$c��t��\}}}|�d��|�d��tjj|_t||dd|���}t��\}}}|�d��|�d��tjj|_t||dd|���}t��\}}}|�d��|�d��|�d��tjj|_|�tj	��5t||dd|���ddd��dS#1swxYwYdS)N�	secp384r1zECDHE:!eNULL:!aNULLTrcr�)
r�r�rSr
rrmrQr�r�r�rfs     r"�test_ecdh_curvezThreadedTests.test_ecdh_curve]s���3B�3D�3D�0�����%�%�k�2�2�2��"�"�#8�9�9�9�),��)?��&�"�>�>�*.��,4�6�6�6��
4C�3D�3D�0�����%�%�k�2�2�2��"�"�#8�9�9�9�),��)?��&�"�>�>�*.��,4�6�6�6��
4C�3D�3D�0�����%�%�l�3�3�3��%�%�k�2�2�2��"�"�#8�9�9�9�),��)?��&�
�
�
�s�|�
,�
,�	2�	2��~�~�&*�T�(0�
2�
2�
2�
2�	2�	2�	2�	2�	2�	2�	2�	2�	2�	2�	2�	2����	2�	2�	2�	2�	2�	2s�E5�5E9�<E9c��t��\}}}t||dd|���}|�|dd��dS)NTrcr�)r�r�r�rfs     r"�test_selected_alpn_protocolz)ThreadedTests.test_selected_alpn_protocol|sV��3B�3D�3D�0����"�>�>�*.��,4�6�6�6��	
�
�
�e�2�3�T�:�:�:�:�:r$c��t��\}}}|�ddg��t||dd|���}|�|dd��dS)Nr��barTrcr�)r�r/r�r�rfs     r"�/test_selected_alpn_protocol_if_server_uses_alpnz=ThreadedTests.test_selected_alpn_protocol_if_server_uses_alpn�sn��3B�3D�3D�0�����)�)�5�%�.�9�9�9�"�>�>�*.��,4�6�6�6��	
�
�
�e�2�3�T�:�:�:�:�:r$c	�\�gd�}ddgdfddgdfdgdfddgdfg}|D�]\}}t��\}}}|�|��|�|��	t||dd|���}n#tj$r}	|	}Yd}	~	nd}	~	wwxYwd	t|���d
t|���dt|���d�}
|d
}|�|||
|dfz��t|d��r|ddnd}|�|||
|dfz����dS)N)r�rw�	milkshaker�rwrzzhttp/3.0zhttp/4.0Trczfailed trying z	 (s) and z (c).
was expecting z, but got %s from the %sr�rtr�r�nothingrC)r�r/r�r
r�r]r�rd)
r��server_protocols�protocol_tests�client_protocolsrr�r�r�rr>r(�
client_result�
server_results
             r"�test_alpn_protocolsz!ThreadedTests.test_alpn_protocols�s���6�6�6���U�^�U�#��U�^�U�#��]�K�(��*�
%�t�,�	
��+9�	>�	>�&��h�7F�7H�7H�4�N�N�H��-�-�.>�?�?�?��-�-�.>�?�?�?�
�*�>�+9�26�<@�4<�	>�>�>����
�<�
�
�
������������
�����
�+�,�,�,�,�c�2B�.C�.C�.C�.C��H�
�
�
�
�'�C�"�"8�9�M����]�H� �M�8�#<�<�
>�
>�
>��u�4�5�6�6�F�E�"9�:�2�>�>�<E�
����]�H� �M�8�#<�<�
>�
>�
>�
>�/	>�	>s�A4�4B�B
�
Bc�"�tjrJ�dSrX)r
�HAS_NPNr�s r"�test_npn_protocolsz ThreadedTests.test_npn_protocols�s���;�����r$c��t�tj��}|�t��t�tj��}|�t
��t�tj��}|�t��|||fSrX)	r
rnrar�r�r�rbr�r�)r�r��
other_contextr�s    r"�sni_contextszThreadedTests.sni_contexts�s�������(?�@�@���&�&��7�7�7����s�'>�?�?�
��%�%�&6�7�7�7�����(?�@�@���,�,�Z�8�8�8��}�n�<�<r$c�T�|d}|�d|ff|d��dS)Nr�r.r7)r�)r�rr!r�s    r"�check_common_namezThreadedTests.check_common_name�s2���Z� ���
�
��d�+�-�t�I��?�?�?�?�?r$c�N���g�|���\}�}d|_��fd�}|�|��t||dd���}|��d|fg��|�|d��g�t||dd���}|��d|fg��|�|t��g�|�d��t||dd���}|�|t��|��g��dS)NFc�L����||f��|�	�|_dSdSrX)r�r�)r�r�r��callsr�s   ��r"r�z6ThreadedTests.test_sni_callback.<locals>.servername_cb�s6����L�L�+��7�8�8�8��&�#0�� � � �'�&r$T�supermessage�rr�r?�notfunny)r�r�rr�r�r�r�)r�r�r�r�rr�r�s     @@r"rzThreadedTests.test_sni_callback�sy������8<�8I�8I�8K�8K�5��
�~�(-��%�	1�	1�	1�	1�	1�	1�	�.�.�}�=�=�=�"�>�>�*.�,:�<�<�<��
	
����.�.�!A� B�C�C�C����u�n�5�5�5���"�>�>�*.�,0�2�2�2��	
����$��!7� 8�9�9�9����u�&>�?�?�?����.�.�t�4�4�4�"�>�>�*.�,6�8�8�8��	
���u�&>�?�?�?������#�#�#�#�#r$c�:�|���\}}}d�}|�|��|�tj��5}t||dd���}ddd��n#1swxYwY|�|jjd��dS)Nc��tjSrX)r
�ALERT_DESCRIPTION_ACCESS_DENIEDr�s   r"�cb_returning_alertzAThreadedTests.test_sni_callback_alert.<locals>.cb_returning_alert�s���6�6r$Fr�r��TLSV1_ALERT_ACCESS_DENIED)	r�rr�r
r�r�r�r�rD)r�r�r�r�r�r�rs       r"�test_sni_callback_alertz%ThreadedTests.test_sni_callback_alert�s���8<�8I�8I�8K�8K�5��
�~�	7�	7�	7��.�.�/A�B�B�B�
�
�
�s�|�
,�
,�	@��&�~�~�.3�0>�@�@�@�E�	@�	@�	@�	@�	@�	@�	@�	@�	@�	@�	@����	@�	@�	@�	@�	
�����,�.I�J�J�J�J�Js�A0�0A4�7A4c���|���\}}}d�}|�|��tj��5}|�t
j��5}t||dd���}ddd��n#1swxYwY|�|j	j
d��|�|jjt��ddd��dS#1swxYwYdS)Nc��ddzdSr$rYr�s   r"�
cb_raisingz;ThreadedTests.test_sni_callback_raising.<locals>.cb_raising�s��
�a�C�C�C�Cr$Fr�r��SSLV3_ALERT_HANDSHAKE_FAILURE)r�rr�catch_unraisable_exceptionr�r
r�r�r�r�rD�
unraisable�exc_type�ZeroDivisionError)r�r�r�r�r��catchr�rs        r"�test_sni_callback_raisingz'ThreadedTests.test_sni_callback_raising�s���8<�8I�8I�8K�8K�5��
�~�	�	�	��.�.�z�:�:�:�
�
/�
1�
1�	K�U��"�"�3�<�0�0�
D�B�*�>�>�27�4B�D�D�D��
D�
D�
D�
D�
D�
D�
D�
D�
D�
D�
D����
D�
D�
D�
D�

���R�\�0�<�
>�
>�
>����U�-�6�8I�J�J�J�	K�	K�	K�	K�	K�	K�	K�	K�	K�	K�	K�	K����	K�	K�	K�	K�	K�	K�7� C!�$B�8C!�B	�C!�B	�AC!�!C%�(C%c���|���\}}}d�}|�|��tj��5}|�t
j��5}t||dd���}ddd��n#1swxYwY|�|j	j
d��|�|jjt��ddd��dS#1swxYwYdS)Nc��dS)Nr�rYr�s   r"�cb_wrong_return_typezOThreadedTests.test_sni_callback_wrong_return_type.<locals>.cb_wrong_return_types���5r$Fr�r��TLSV1_ALERT_INTERNAL_ERROR)r�rrr�r�r
r�r�r�r�rDr�r�r�)r�r�r�r�r�r�r�rs        r"�#test_sni_callback_wrong_return_typez1ThreadedTests.test_sni_callback_wrong_return_types���9=�8I�8I�8K�8K�5��
�~�	�	�	��.�.�/C�D�D�D�
�
/�
1�
1�	C�U��"�"�3�<�0�0�
D�B�*�>�>�27�4B�D�D�D��
D�
D�
D�
D�
D�
D�
D�
D�
D�
D�
D����
D�
D�
D�
D�
���R�\�0�2N�O�O�O����U�-�6�	�B�B�B�	C�	C�	C�	C�	C�	C�	C�	C�	C�	C�	C�	C����	C�	C�	C�	C�	C�	Cr�c��	�t��\}}}|�d��|�d��gd�}t|||���}|dd}|�t	|��d��|D]6\�	}}t�	fd�|D����s|��	���7dS)Nz
AES128:AES256zAES256:eNULL)rEzAES-256�TLS_CHACHA20�TLS_AES�r�r�rc3� �K�|]}|�vV��	dSrXrY)ro�algr!s  �r"rpz4ThreadedTests.test_shared_ciphers.<locals>.<genexpr>(s'�����<�<�s�s�d�{�<�<�<�<�<�<r$)r�rSr��
assertGreaterrd�anyr8)
r�r�r�r��
expected_algsrr��tls_version�bitsr!s
         @r"�test_shared_ciphersz!ThreadedTests.test_shared_cipherss����3B�3D�3D�0�����"�"�?�3�3�3��"�"�>�2�2�2�
�
�
�
�#�>�>�,4�6�6�6���/�0��3�����3�w�<�<��+�+�+�'.�	 �	 �#�D�+�t��<�<�<�<�m�<�<�<�<�<�
 ��	�	�$�����	 �	 r$c��t��\}}}t|d���}|5|�tj��|���}|�t
|jf��|���|�t|j
d��|�t|jd��ddd��dS#1swxYwYdS)NFr�r�r�shello)r�rJr�r�r�r�rDr�r�r�rLr�rKs      r"�,test_read_write_after_close_raises_valuerrorz:ThreadedTests.test_read_write_after_close_raises_valuerror+s��3B�3D�3D�0����#�N�5�I�I�I��
�	=�	=��*�*�6�=�?�?�;C�+�E�E�A�
�I�I�t�V�[�)�*�*�*�
�G�G�I�I�I����j�!�&�$�7�7�7����j�!�'�8�<�<�<�	=�	=�	=�	=�	=�	=�	=�	=�	=�	=�	=�	=����	=�	=�	=�	=�	=�	=s�B C�C�Cc�
�d}ttjd��5}|�|��ddd��n#1swxYwY|�tjtj��t
��\}}}t|d���}|5|�tj	��|���5}|�
t|jf��ttjd��5}|�
|��|�|�d��|��ddd��n#1swxYwYddd��n#1swxYwYddd��dS#1swxYwYdS)Nsxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx�wbFr�r�r�r�)rKr�TESTFNr�r��unlinkr�rJr�r�r�r�rD�sendfiler�rh)	r��	TEST_DATArNr�r�r�rCr��files	         r"�
test_sendfilezThreadedTests.test_sendfile8sQ���	�
�)�"�D�
)�
)�	�Q�
�G�G�I����	�	�	�	�	�	�	�	�	�	�	����	�	�	�	����	�(�)�*:�;�;�;�3B�3D�3D�0����#�N�5�I�I�I��
�	>�	>��+�+�F�M�O�O�<D�,�F�F�
>�IJ��	�	�4���-�.�.�.��)�*�D�1�1�>�T��J�J�t�$�$�$��$�$�Q�V�V�D�\�\�9�=�=�=�>�>�>�>�>�>�>�>�>�>�>����>�>�>�>�
>�
>�
>�
>�
>�
>�
>�
>�
>�
>�
>����
>�
>�
>�
>�	>�	>�	>�	>�	>�	>�	>�	>�	>�	>�	>�	>����	>�	>�	>�	>�	>�	>si�?�A�A�)E8�<E �>?E	�=E �	E
�
E �E
�E �E8� E$	�$E8�'E$	�(E8�8E<�?E<c���t��\}}}tjj|_t|||���}|d}|�|j��|�|j	d��|�|j
d��|�|j��|�|jd��|�
|d��|���}|�|dd��|�|dd��t||||���}|���}|�|dd	��|�|dd��|�|d��|d}|�|j|j��|�||��|�||��|�|j	|j	��|�|j
|j
��t|||���}|�
|d��|d}|�|j|j��|�||��|���}|�|dd
��|�|dd��t||||���}|�|d��|d}	|�|	j|j��|�|	|��|�|	j	|j	��|�|	j
|j
��|���}|�|dd��|�|dd	��dS)Nr�r~rr�r�r�r�)r~r�r�rrA)r�r
rrmrjr�rO�idr�r�ry�
has_ticket�ticket_lifetime_hintr�r�r��assertIsNotr�r^)
r�r�r�r�rr~�	sess_stat�session2�session3�session4s
          r"�test_sessionzThreadedTests.test_sessionGs���3B�3D�3D�0����),��)?��&�#�>�>�,4�6�6�6���	�"������
�#�#�#����7�<��+�+�+����7�?�A�.�.�.�����*�+�+�+����7�7��;�;�;�����/�0�1�1�1�"�0�0�2�2�	�����8�,�a�0�0�0�����6�*�A�.�.�.�#�>�>�+2�X�G�G�G��"�0�0�2�2�	�����8�,�a�0�0�0�����6�*�A�.�.�.�����.�/�0�0�0���#�������g�j�1�1�1�����7�+�+�+�����7�+�+�+�����
�w�|�<�<�<����� 0�'�/�B�B�B�#�>�>�,4�6�6�6������/�0�1�1�1���#�����H�K���4�4�4����H�g�.�.�.�"�0�0�2�2�	�����8�,�a�0�0�0�����6�*�A�.�.�.�#�>�>�+2�X�G�G�G������.�/�0�0�0���#�������g�j�1�1�1�����7�+�+�+�����
�w�|�<�<�<����� 0�'�/�B�B�B�"�0�0�2�2�	�����8�,�a�0�0�0�����6�*�A�.�.�.�.�.r$c��t��\}}}t��\}}}tjj|_tjj|_t|d���}|5|�tj��|���5}|�|j	d��|�|j
d��|�t|j
f��|j	}|�|��|�t ��5}	t"|_	ddd��n#1swxYwY|�t%|	j��d��ddd��n#1swxYwY|�tj��|���5}|�t|j
f��|�t(��5}	||_	ddd��n#1swxYwY|�t%|	j��d��ddd��n#1swxYwY|�tj��|���5}||_	|�t|j
f��|�|j	j|j��|�|j	|��|�|j
d��ddd��n#1swxYwY|�tj��|���5}|�t(��5}	||_	|�t|j
f��ddd��n#1swxYwY|�t%|	j��d��ddd��n#1swxYwYddd��dS#1swxYwYdS)NFr�r�zValue is not a SSLSession.z#Cannot set session after handshake.Tz)Session refers to a different SSLContext.)r�r
rrmrjrJr�r�r�r~r�r�r�rDrOr�r�r�r]r�r�r�)
r�r�r�r��client_context2rurCr�r~r>s
          r"�test_session_handlingz#ThreadedTests.test_session_handling�s���3B�3D�3D�0���� /� 1� 1����A�*-��)?��&�*-�.�*@��'�#�N�5�I�I�I��
�'	N�'	N��+�+�F�M�O�O�<D�,�F�F�

Q�IJ�� � ���D�1�1�1�� � ��!1�4�8�8�8��	�	�4���-�.�.�.��)������(�(�(��&�&�y�1�1�'�Q� &�A�I�'�'�'�'�'�'�'�'�'�'�'����'�'�'�'�� � ��Q�[�!1�!1�3O�P�P�P�

Q�

Q�

Q�

Q�

Q�

Q�

Q�

Q�

Q�

Q�

Q����

Q�

Q�

Q�

Q� �+�+�F�M�O�O�<D�,�F�F�
H�IJ��	�	�4���-�.�.�.��&�&�z�2�2�(�a� '�A�I�(�(�(�(�(�(�(�(�(�(�(����(�(�(�(�� � ��Q�[�!1�!1�!F�H�H�H�

H�
H�
H�
H�
H�
H�
H�
H�
H�
H�
H����
H�
H�
H�
H� �+�+�F�M�O�O�<D�,�F�F�
9�IJ�$��	��	�	�4���-�.�.�.�� � ����w�z�:�:�:�� � ���G�4�4�4�� � ��!1�4�8�8�8�
9�
9�
9�
9�
9�
9�
9�
9�
9�
9�
9����
9�
9�
9�
9�!�,�,�V�]�_�_�=E�-�G�G�
N�JK��&�&�z�2�2�3�a� '�A�I��I�I�t�V�[�1�2�2�2�3�3�3�3�3�3�3�3�3�3�3����3�3�3�3�� � ��Q�[�!1�!1�!L�N�N�N�

N�
N�
N�
N�
N�
N�
N�
N�
N�
N�
N����
N�
N�
N�
N�A'	N�'	N�'	N�'	N�'	N�'	N�'	N�'	N�'	N�'	N�'	N�'	N����'	N�'	N�'	N�'	N�'	N�'	Ns�$)O�
BE3�
D4�(E3�4D8�8E3�;D8�<+E3�'O�3E7	�7O�:E7	�;+O�&<H5�"G6�*H5�6G:�:H5�=G:�>+H5�)O�5H9	�9O�<H9	�=+O�(BK8�,O�8K<	�<O�?K<	�+O�+N:�)M;�/N:�;M?�?N:�M?�+N:�.O�:N>	�>O�N>	�O�O�ON)Hr�rMrNrr�r�r�r�r$rtrQr
r�r�r�r�r�r�r}r�r�r�r�r�r�r�r�r�r�r�r�rrr(r,r4r;r?rBrFrIrNrPrPrRrUrWrZrRr�rgrRrir8r9rprsrurxr�r�r�r�rr�r�r�r�r�r�r�r�rYr$r"r�r��s��������W��z�*�*�*"�*"�+�*�*"�X"/�"/�"/�H&E�&E�&E�P2�2�2�B�X���'�)T���3�3���3�*@�@�@�*@�@�@�4@L�@L�@L�D#E�#E�#E�J��)�$�$���%�$��4'�'�'�RH�H�H�.��'�"�"�;�;�#�"�;�"(?�(?�(?�T��'�"�"�J�J�#�"�J���'�"�"�;�;�#�"�;���)�$�$�N�N�%�$�N�"��)�$�$�R�R�%�$�R�.7�7�7�r!�!�!�4C�C�C�:F�F�F�P6�6�6�&2�2�2�*���:/�/�/�b&,�&,�&,�PA�A�A�A�A�A�A�A�A�-�-�-�&��)�$�$�9�9�%�$�9���)�$�$���'�"�"��
9�
9���#�"�%�$�
9���)�$�$��
9�
9���%�$�
9���)�$�$���'�"�"��9�9���#�"�%�$�9� ��'�"�"�7�7�#�"�7�5�5�5�"�X����)B�B�E�G�G�8G�8G�G�G�8G�tE�E�E��X�����&9�:�:�E�G�G�2�2�G�G�2��X�_�^�%P�Q�Q�5�5�R�Q�5� 2�2�2�>;�;�;�;�;�;� >� >� >�D���=�=�=�@�@�@�&$�&$�&$�PK�K�K�K�K�K�$C�C�C�& � � �$=�=�=�
>�
>�
>�7/�7/�7/�r0N�0N�0N�0N�0Nr$r�r�zTest needs TLS 1.3c�P�eZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zd
�Zd�Z
dS)
�TestPostHandshakeAuthc���tjtjg}|D�]J}t�|��}|�|jd��d|_|�|jd��tj|_|�|jtj��|�|jd��d|_|�|jtj��|�|jd��tj|_d|_|�|jtj��|�|jd����LdSr�)	r
rarbrnr��post_handshake_authr�r�r�)r�r�rerUs    r"�test_pha_setterz%TestPostHandshakeAuth.test_pha_setter�s=���#�S�%<�
�	�"�	<�	<�H��.�.��*�*�C����S�4�e�<�<�<�&*�C�#����S�4�d�;�;�;�!�/�C�O����S�_�c�.?�@�@�@����S�4�d�;�;�;�&+�C�#����S�_�c�.?�@�@�@����S�4�e�<�<�<�!�/�C�O�&*�C�#����S�_�c�.?�@�@�@����S�4�d�;�;�;�;�%	<�	<r$c�L�t��\}}}d|_tj|_d|_|�t��t|d���}|5|�tj	��|���5}|�
t|jf��|�
d��|�|�d��d��|�
d��|�|�d��d	��|�
d��|�|�d��d
��|�
d��|�|�d��d	��|�
d��|�d���d
��}|�d|��ddd��n#1swxYwYddd��dS#1swxYwYdS)NTFr�r�rr�rrrrrirr:)r�r�r
r�r�r�r�rJr�r�r�r�rDr�r�rhr�r�)r�r�r�r�rCr��	cert_texts       r"�test_pha_requiredz'TestPostHandshakeAuth.test_pha_required�s}��3B�3D�3D�0����-1��*�%(�%6��"�-1��*��&�&��7�7�7�#�N�5�I�I�I��
�	J�	J��+�+�F�M�O�O�<D�,�F�F�
J�IJ��	�	�4���-�.�.�.����
�#�#�#�� � �������z�:�:�:��������� � �������w�7�7�7����
�#�#�#�� � �������y�9�9�9��������� � �������w�7�7�7����
�#�#�#��F�F�4�L�L�/�/�
�;�;�	��
�
�=�y�I�I�I�
J�
J�
J�
J�
J�
J�
J�
J�
J�
J�
J����
J�
J�
J�
J�	J�	J�	J�	J�	J�	J�	J�	J�	J�	J�	J�	J����	J�	J�	J�	J�	J�	Js7�)H�E-H�5H�H	�H�H	�	H�H� Hc���t��\}}}d|_tj|_d|_d�}||_||_t
|d���}|5|�tj��|d���5}|�	t|jf��|�d��|�
tjd��5|�d��}|�|d	��|�d
��|�d��ddd��n#1swxYwYddd��n#1swxYwYddd��dS#1swxYwYdS)NTc��tjr=|tjkr/||||||f}tj�d|�d���dSdSdS)NzTLS: r�)rr�r�ALERTr�r�r�)rZ�	directionr9�content_type�msg_typer�r�s       r"�msg_cbz>TestPostHandshakeAuth.test_pha_required_nocert.<locals>.msg_cb�sc����
5�<�?�3H�#H�#H��i��,��$�O���
� � �!3��!3�!3�!3�4�4�4�4�4�
5�
5�#H�#Hr$r�Fr�rz#(certificate required|EOF occurred)r�rr)r�r�r
r�r��
_msg_callbackrJr�r�r�r�rDr�r�r�rhr�)r�r�r�r�r�rCr�r�s        r"�test_pha_required_nocertz.TestPostHandshakeAuth.test_pha_required_nocert�s3��3B�3D�3D�0����-1��*�%(�%6��"�-1��*�	5�	5�	5�
(.��$�'-��$�#�N�4�H�H�H��
�	!�	!��+�+�F�M�O�O�<D�AF�,�H�H�
!�KL��	�	�4���-�.�.�.���������+�+��L�9���!�!�
�6�6�$�<�<�D��$�$�T�7�3�3�3��G�G�J�'�'�'��F�F�4�L�L�L�!�!�!�!�!�!�!�!�!�!�!����!�!�!�!�
!�
!�
!�
!�
!�
!�
!�
!�
!�
!�
!����
!�
!�
!�
!�	!�	!�	!�	!�	!�	!�	!�	!�	!�	!�	!�	!����	!�	!�	!�	!�	!�	!s\�*E(�AE�AD9�-E�9D=�=E�D=�E�E(�E	�E(�E	�E(�(E,�/E,c��tjrtj�d��t��\}}}d|_tj|_	d|_|�
t��tj|_	t|d���}|5|�tj��|���5}|�t"|jf��|�d��|�|�d��d��|�d	��|�|�d��d
��|�d��|�|�d��d��ddd��n#1swxYwYddd��dS#1swxYwYdS)Nr�TFr�r�rr�rrrr)rr�r�r�r�r�r�r
r�r�r�r�r�rJr�r�r�r�rDr�rhrKs      r"�test_pha_optionalz'TestPostHandshakeAuth.test_pha_optionals���?�	#��J���T�"�"�"�3B�3D�3D�0����-1��*�%(�%6��"�-1��*��&�&��7�7�7�&)�%6��"�#�N�5�I�I�I��
�		:�		:��+�+�F�M�O�O�<D�,�F�F�
:�IJ��	�	�4���-�.�.�.����
�#�#�#�� � �������z�:�:�:��������� � �������w�7�7�7����
�#�#�#�� � �������y�9�9�9�
:�
:�
:�
:�
:�
:�
:�
:�
:�
:�
:����
:�
:�
:�
:�		:�		:�		:�		:�		:�		:�		:�		:�		:�		:�		:�		:����		:�		:�		:�		:�		:�		:s7�)G�CF,� G�,F0	�0G�3F0	�4G�G�Gc�L�tjrtj�d��t��\}}}d|_tj|_	d|_t|d���}|5|�tj��|���5}|�
t|jf��|�d��|�|�d��d��|�d	��|�|�d��d
��|�d��|�|�d��d��ddd��n#1swxYwYddd��dS#1swxYwYdS)Nr�TFr�r�rr�rrr)rr�r�r�r�r�r�r
r�r�rJr�r�r�r�rDr�rhrKs      r"�test_pha_optional_nocertz.TestPostHandshakeAuth.test_pha_optional_nocert#s����?�	#��J���T�"�"�"�3B�3D�3D�0����-1��*�%(�%6��"�-1��*�#�N�5�I�I�I��
�
	;�
	;��+�+�F�M�O�O�<D�,�F�F�	
;�IJ��	�	�4���-�.�.�.����
�#�#�#�� � �������z�:�:�:��������� � �������w�7�7�7����
�#�#�#�� � �������z�:�:�:�	
;�	
;�	
;�	
;�	
;�	
;�	
;�	
;�	
;�	
;�	
;����	
;�	
;�	
;�	
;�
	;�
	;�
	;�
	;�
	;�
	;�
	;�
	;�
	;�
	;�
	;�
	;����
	;�
	;�
	;�
	;�
	;�
	;s7�0)F�CF�5F�F	�F�F	�	F�F� Fc��t��\}}}d|_tj|_|�t��t|d���}|5|�tj	��|���5}|�
t|jf��|�
tjd��5|���ddd��n#1swxYwY|�d��|�d|�d����ddd��n#1swxYwYddd��dS#1swxYwYdS)	NTFr�r�z
not serverrsextension not receivedr�)r�r�r
r�r�r�r�rJr�r�r�r�rDr�r�r"r�r�rhrKs      r"�test_pha_no_pha_clientz,TestPostHandshakeAuth.test_pha_no_pha_client9s��3B�3D�3D�0����-1��*�%(�%6��"��&�&��7�7�7�#�N�5�I�I�I��
�	G�	G��+�+�F�M�O�O�<D�,�F�F�
G�IJ��	�	�4���-�.�.�.��+�+�C�L�,�G�G�5�5��2�2�4�4�4�5�5�5�5�5�5�5�5�5�5�5����5�5�5�5���������
�
�7�������F�F�F�

G�
G�
G�
G�
G�
G�
G�
G�
G�
G�
G����
G�
G�
G�
G�	G�	G�	G�	G�	G�	G�	G�	G�	G�	G�	G�	G����	G�	G�	G�	G�	G�	Gs\�)E�AD9�C$�D9�$C(�(D9�+C(�,AD9�-E�9D=	�=E�D=	�E�E�Ec��t��\}}}tj|_d|_|�t��t|d���}|5|�tj	��|���5}|�
t|jf��|�
d��|�|�d��d��|�
d��|�|�d��d	��|�
d��|�|�d��d��ddd��n#1swxYwYddd��dS#1swxYwYdS)
NTFr�r�rr�rrr)r�r
r�r�r�r�r�rJr�r�r�r�rDr�r�rhrKs      r"�test_pha_no_pha_serverz,TestPostHandshakeAuth.test_pha_no_pha_serverIs���3B�3D�3D�0����%(�%6��"�-1��*��&�&��7�7�7�#�N�5�I�I�I��
�
	:�
	:��+�+�F�M�O�O�<D�,�F�F�	
:�IJ��	�	�4���-�.�.�.����
�#�#�#�� � �������y�9�9�9��������� � �������w�7�7�7����
�#�#�#�� � �������y�9�9�9�	
:�	
:�	
:�	
:�	
:�	
:�	
:�	
:�	
:�	
:�	
:����	
:�	
:�	
:�	
:�
	:�
	:�
	:�
	:�
	:�
	:�
	:�
	:�
	:�
	:�
	:�
	:����
	:�
	:�
	:�
	:�
	:�
	:s7�)F�CE)�F�)E-	�-F�0E-	�1F�F�Fc�P�t��\}}}tj|_tjj|_d|_|�t��t|d���}|5|�tj��|���5}|�
t|jf��|�d��|�d|�d����ddd��n#1swxYwYddd��dS#1swxYwYdS)NTFr�r�rsWRONG_SSL_VERSIONr�)r�r
r�r�rrmrjr�r�r�rJr�r�r�r�rDr�r�rhrKs      r"�test_pha_not_tls13z(TestPostHandshakeAuth.test_pha_not_tls13]s���3B�3D�3D�0����%(�%6��"�),��)?��&�-1��*��&�&��7�7�7�#�N�5�I�I�I��
�	B�	B��+�+�F�M�O�O�<D�,�F�F�
B�IJ��	�	�4���-�.�.�.���������
�
�2�A�F�F�4�L�L�A�A�A�
B�
B�
B�
B�
B�
B�
B�
B�
B�
B�
B����
B�
B�
B�
B�	B�	B�	B�	B�	B�	B�	B�	B�	B�	B�	B�	B����	B�	B�	B�	B�	B�	Bs7�.)D�A D�7D�D	�D�
D	�D�D�"Dc��t}t�tj��}d|_|�t��d|_tj|_	t�tj
��}|�t��|�t��d|_tj
|_	t|d���}|5|�t!j��|���5}|�t$|jf��|�d��|�|�d��d��|�d��|�|�d��d	��|�d��|�|�d��d
��|�|���i��ddd��n#1swxYwYddd��dS#1swxYwYdS)NTFr�r�rr�rrrr)r�r
rnrbr�r�r�r�r�r�rar�r�r�rJr�r�r�r�rDr�r�rhr)r�r�r�r�rCr�s      r"�test_bpo37428_pha_cert_nonez1TestPostHandshakeAuth.test_bpo37428_pha_cert_nonens[��,������(?�@�@��-1��*��&�&��7�7�7�(-��%�%(�]��"�����(?�@�@���&�&��7�7�7��,�,�Z�8�8�8�-1��*�%(�%6��"�#�N�5�I�I�I��
�	6�	6��+�+�F�M�O�O�<D�,�F�F�

6�IJ��	�	�4���-�.�.�.����
�#�#�#�� � �������z�:�:�:��������� � �������w�7�7�7����
�#�#�#�� � �������y�9�9�9�� � ������"�5�5�5�

6�

6�

6�

6�

6�

6�

6�

6�

6�

6�

6����

6�

6�

6�

6�	6�	6�	6�	6�	6�	6�	6�	6�	6�	6�	6�	6����	6�	6�	6�	6�	6�	6s7�()H9�DH!�H9�!H%	�%H9�(H%	�)H9�9H=�H=c	��td���\}}}t|d���}|5|�tj��|���5}|�t
|jf��|j���}|�	t|��d��|\}}|j���}	|�	t|	��d��|�	||	d��|�	t|��t|	d����|�	t|��t|	d����|�||��|�t|��t|����|�t|��t|����|�|���|�����|�dt|����|�d	t|����|�t$j��}
|�t$j��}|�|
t,��|�d
|
��|�|t.��|�	t0�|
��|��ddd��n#1swxYwYddd��dS#1swxYwYdS)NFr�r�r�r�r�rzCN=localhostzCN=our-ca-serverz-----BEGIN CERTIFICATE-----)r�rJr�r�r�r�rDr�r#r�rdr%�hashr�r^�get_infor��public_bytesr��ENCODING_PEM�ENCODING_DERrJr]r�r
r5)r�r�r�r�rCr��vc�ee�ca�uvcr;rs            r"�test_internal_chain_clientz0TestPostHandshakeAuth.test_internal_chain_client�sI��3B��4
�4
�4
�0����$�N�5�I�I�I��
�	�	��+�+��
��� (�,���
���	�	�4���-�.�.�.��Y�1�1�3�3��� � ��R���!�,�,�,����B��i�4�4�6�6��� � ��S���1�-�-�-�� � ��S��V�,�,�,�� � ��b���4��A��<�<�8�8�8�� � ��b���4��A��<�<�8�8�8��#�#�B��+�+�+��#�#�D��H�H�d�2�h�h�7�7�7��#�#�D��H�H�d�2�h�h�7�7�7��#�#�B�K�K�M�M�2�;�;�=�=�A�A�A��
�
�n�d�2�h�h�7�7�7��
�
�0�$�r�(�(�;�;�;��o�o�d�&7�8�8���o�o�d�&7�8�8���%�%�c�3�/�/�/��
�
�;�S�A�A�A��%�%�c�5�1�1�1�� � ��,�,�S�1�1�3����7
�
�
�
�
�
�
�
�
�
�
����
�
�
�
�	�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	�	s6�)M
�KL2�&M
�2L6	�6M
�9L6	�:M
�
M�Mc���t��\}}}|�t��tj|_tjj|_t|d���}|5|�
tj��|���5}|�t|jf��|�d��|�d��}|�|d��|�d��|�d��}|�|d��ddd��n#1swxYwYddd��dS#1swxYwYdS)NFr�r�sVERIFIEDCHAIN
r�s
sUNVERIFIEDCHAIN
)r�r�r�r
r�r�rrmrjrJr�r�r�r�rDr�rhr�)r�r�r�r�rCr��ress       r"�test_internal_chain_serverz0TestPostHandshakeAuth.test_internal_chain_server�s���3B�3D�3D�0�����&�&��7�7�7�%(�%6��"�),��)?��&�#�N�5�I�I�I��
�	1�	1��+�+��
��� (�,���

1���	�	�4���-�.�.�.����*�+�+�+��f�f�T�l�l��� � ��i�0�0�0����,�-�-�-��f�f�T�l�l��� � ��i�0�0�0�

1�

1�

1�

1�

1�

1�

1�

1�

1�

1�

1����

1�

1�

1�

1�	1�	1�	1�	1�	1�	1�	1�	1�	1�	1�	1�	1����	1�	1�	1�	1�	1�	1s7�')E�B"D>�2E�>E	�E�E	�E�E�EN)r�rMrNr�r�r�r�r�r�r�r�r�r�r�rYr$r"r�r��s�������<�<�<�0J�J�J�2#!�#!�#!�J:�:�:�0;�;�;�,G�G�G� :�:�:�(B�B�B�"6�6�6�>#�#�#�J1�1�1�1�1r$r��keylog_filenamez0test requires OpenSSL 1.1.1 with keylog callbackc�B�eZdZejfd�Zeeje	d��d�����Z
eeje	d��d�����Zeejej
jd��eje	d��d�������Zd�Zd�Zd	�Zd
S)�TestSSLDebugc��t|��5}tt|����cddd��S#1swxYwYdSrX)rKrdr�)r��fnamerNs   r"�keylog_lineszTestSSLDebug.keylog_lines�s~��
�%�[�[�	 �A��t�A�w�w�<�<�	 �	 �	 �	 �	 �	 �	 �	 �	 �	 �	 �	 ����	 �	 �	 �	 �	 �	 s
�9�=�=r�c�D�|�tjtj��t�tj��}|�|jd��|�	tj�tj����tj|_|�|jtj��|�
tj�tj����|�|���d��d|_|�|jd��|�t t"f��5tj�tj�tj����|_ddd��n#1swxYwY|�t(��5d|_ddd��dS#1swxYwYdS)Nr�)r�rr�r�r
rnrbr�r�r�rr�isfilerOr�r��IsADirectoryError�PermissionErrorr�abspathr�r`s  r"�test_keylog_defaultsz!TestSSLDebug.test_keylog_defaults�s��	
���	�(�)�*:�;�;�;��n�n�S�4�5�5������,�d�3�3�3��������	�(8�9�9�:�:�:�'�.�������,�i�.>�?�?�?��������y�'7�8�8�9�9�9�����*�*�,�,�a�0�0�0�"�������,�d�3�3�3�
�
�
� 1�?�C�
D�
D�	3�	3�"$�'�/�/�����	� 0�1�1�#3�#3�C��	3�	3�	3�	3�	3�	3�	3�	3�	3�	3�	3����	3�	3�	3�	3�
�
�
�y�
)�
)�	$�	$�"#�C��	$�	$�	$�	$�	$�	$�	$�	$�	$�	$�	$�	$����	$�	$�	$�	$�	$�	$s%�AG�G�"G�H�H�Hc�h�|�tjtj��t	��\}}}tj|_t
|d���}|5|�tj��|���5}|�	t|jf��ddd��n#1swxYwYddd��n#1swxYwY|�|�
��d��d|_tj|_t
|d���}|5|�tj��|���5}|�	t|jf��ddd��n#1swxYwYddd��n#1swxYwY|�|�
��d��tj|_tj|_t
|d���}|5|�tj��|���5}|�	t|jf��ddd��n#1swxYwYddd��n#1swxYwY|�|�
��d��d|_d|_dS)NFr�r�r���)r�rr�r�r�r�rJr�r�r�r�rDr�r�r�rKs      r"�test_keylog_filenamez!TestSSLDebug.test_keylog_filename�s���	
���	�(�)�*:�;�;�;�3B�3D�3D�0����)2�)9��&�#�N�5�I�I�I��
�	/�	/��+�+�F�M�O�O�<D�,�F�F�
/�IJ��	�	�4���-�.�.�.�
/�
/�
/�
/�
/�
/�
/�
/�
/�
/�
/����
/�
/�
/�
/�	/�	/�	/�	/�	/�	/�	/�	/�	/�	/�	/����	/�	/�	/�	/�
	
����*�*�,�,�a�0�0�0�)-��&�)2�)9��&�#�N�5�I�I�I��
�	/�	/��+�+�F�M�O�O�<D�,�F�F�
/�IJ��	�	�4���-�.�.�.�
/�
/�
/�
/�
/�
/�
/�
/�
/�
/�
/����
/�
/�
/�
/�	/�	/�	/�	/�	/�	/�	/�	/�	/�	/�	/����	/�	/�	/�	/�	
���� 1� 1� 3� 3�R�8�8�8�)2�)9��&�)2�)9��&�#�N�5�I�I�I��
�	/�	/��+�+�F�M�O�O�<D�,�F�F�
/�IJ��	�	�4���-�.�.�.�
/�
/�
/�
/�
/�
/�
/�
/�
/�
/�
/����
/�
/�
/�
/�	/�	/�	/�	/�	/�	/�	/�	/�	/�	/�	/����	/�	/�	/�	/�	
���� 1� 1� 3� 3�R�8�8�8�)-��&�)-��&�&�&s��!)C�
"B8�,C�8B<	�<C�?B<	�C�C�C�-)F�"F�8F�F	�F�F	�F�F�"F�)I1�,"I�I1�I	�I1�!I	�"I1�1I5�8I5z.test is not compatible with ignore_environmentc���|�tjtj��tjj�tj	��5tjtj	d<|�
tj	dtj��t�tj
��}|�
|jd��t���}|�
|jtj��t���}|�
|jtj��ddd��dS#1swxYwYdS)N�
SSLKEYLOGFILE)r�rr�r�rt�mockrV�dictr�environr�r
rnrbr�rr!r`s  r"�test_keylog_envzTestSSLDebug.test_keylog_env
sg��
	
���	�(�)�*:�;�;�;�
�]�
 �
%�
%�b�j�
1�
1�	D�	D�*3�*:�B�J��'����R�Z��8�)�:J�K�K�K��.�.��!8�9�9�C����S�0�$�7�7�7��,�,�.�.�C����S�0�)�2B�C�C�C��,�,�.�.�C����S�0�)�2B�C�C�C�	D�	D�	D�	D�	D�	D�	D�	D�	D�	D�	D�	D����	D�	D�	D�	D�	D�	Ds�DE+�+E/�2E/c�6�t��\}}}d�}|�|jd��||_|�|j|��|�t��5t��|_ddd��dS#1swxYwYdS)Nc��dSrXrY�rZr�r9r�r�r�s      r"r�z.TestSSLDebug.test_msg_callback.<locals>.msg_cb#rr$)r�r�r�r�r�r�)r�r�r�r�r�s     r"�test_msg_callbackzTestSSLDebug.test_msg_callback s���3B�3D�3D�0����	�	�	�	
�
�
�n�2�D�9�9�9�'-��$��
�
�n�2�F�;�;�;�
�
�
�y�
)�
)�	4�	4�+1�8�8�N�(�	4�	4�	4�	4�	4�	4�	4�	4�	4�	4�	4�	4����	4�	4�	4�	4�	4�	4s�-B�B�Bc�p���t��\}}}tjj|_g���fd�}||_t
|d���}|5|�tj��|���5}|�	t|jf��ddd��n#1swxYwYddd��n#1swxYwY��dtjtjtjf�����dtjtjtjf���dS)Nc������|tj����|t����|ddh����||||f��dS)NrLr�)rJr
r�r�r�r�)rZr�r9r�r�r�r(r�s      ��r"r�z4TestSSLDebug.test_msg_callback_tls12.<locals>.msg_cb2sk����!�!�$��
�6�6�6��!�!�$��.�.�.��M�M�)�f�g�%6�7�7�7��J�J�	�7�L�(�C�D�D�D�D�Dr$Fr�r�rLr�)r�r
rrmrjr�rJr�r�r�r�rDr�r�	HANDSHAKEr
�SERVER_KEY_EXCHANGE�CHANGE_CIPHER_SPEC)r�r�r�r�r�rCr�r(s`      @r"�test_msg_callback_tls12z$TestSSLDebug.test_msg_callback_tls12,s�����3B�3D�3D�0����),��)?��&���	E�	E�	E�	E�	E�	E�(.��$�#�N�5�I�I�I��
�	/�	/��+�+�F�M�O�O�<D�,�F�F�
/�IJ��	�	�4���-�.�.�.�
/�
/�
/�
/�
/�
/�
/�
/�
/�
/�
/����
/�
/�
/�
/�	/�	/�	/�	/�	/�	/�	/�	/�	/�	/�	/����	/�	/�	/�	/�
	
�
�
�
�Z�'��)B�
�
0�
2��	
�	
�	
�
	
�
�
�
�j�(�/�*L�
�
/�
1��	
�	
�	
�	
�	
s6�
)B;�6"B$�B;�$B(	�(B;�+B(	�,B;�;B?�B?c�\��t��\}}}t��d�d�}�fd�}||_||_t|d���}|5|�tj��|���5}|�t|jf��ddd��n#1swxYwY|�tj��|���5}|�t|jf��ddd��n#1swxYwYddd��dS#1swxYwYdS)Nr�c��dSrXrYrs      r"r�z@TestSSLDebug.test_msg_callback_deadlock_bpo43577.<locals>.msg_cbOrr$c����|_dSrXrI)r�r�rU�server_context2s   �r"�sni_cbz@TestSSLDebug.test_msg_callback_deadlock_bpo43577.<locals>.sni_cbRs���*�D�L�L�Lr$Fr�r�)	r�r��sni_callbackrJr�r�r�r�rD)	r�r�r�r�r�rrCr�rs	        @r"�#test_msg_callback_deadlock_bpo43577z0TestSSLDebug.test_msg_callback_deadlock_bpo43577Ks���3B�3D�3D�0����)�+�+�A�.��	�	�	�	+�	+�	+�	+�	+�(.��$�&,��#�#�N�5�I�I�I��
�	/�	/��+�+�F�M�O�O�<D�,�F�F�
/�IJ��	�	�4���-�.�.�.�
/�
/�
/�
/�
/�
/�
/�
/�
/�
/�
/����
/�
/�
/�
/� �+�+�F�M�O�O�<D�,�F�F�
/�IJ��	�	�4���-�.�.�.�
/�
/�
/�
/�
/�
/�
/�
/�
/�
/�
/����
/�
/�
/�
/�		/�	/�	/�	/�	/�	/�	/�	/�	/�	/�	/�	/����	/�	/�	/�	/�	/�	/sZ�)D!�:"B(�D!�(B,	�,D!�/B,	�0+D!�"D	�=D!�	D
	�
D!�D
	�D!�!D%�(D%N)r�rMrNrr�r��requires_keylogrtr8r9r�rr��flags�ignore_environmentr	r
rrrYr$r"r�r��s*������!*�!1� � � � ���X�_�^�%P�Q�Q�$�$�R�Q��_�$�,��X�_�^�%P�Q�Q� .� .�R�Q��_� .�D��X�_�S�Y�1�E�G�G��X�_�^�%P�Q�Q�
D�
D�R�Q�G�G��_�
D�
4�
4�
4�
�
�
�>/�/�/�/�/r$r�c	��|�tjtjt	jddd����dS)N�iir�r)�
setsockoptr��
SOL_SOCKET�	SO_LINGER�struct�pack)r�s r"�)set_socket_so_linger_on_with_zero_timeoutr%bs2���O�O�F�%�v�'7���T�1�a�9P�9P�Q�Q�Q�Q�Qr$c�P�eZdZdZGd�dej��Zd�Zd�Zd�Z	d�Z
dS)	�TestPreHandshakeClosezQVerify behavior of close sockets with received data before to the handshake.
    c�@��eZdZdd��fd�
Zd�Zd�Z�fd�Zd�Z�xZS)�6TestPreHandshakeClose.SingleConnectionTestServerThreadN)ryc����||_d|_d|_d|_d|_|�t
j|_n||_t���	|���dS)Nr$r )
�call_after_accept�
received_data�
wrap_errorr�rDrr�ry�superr�)r�r!r+ryr�s    �r"r�z?TestPreHandshakeClose.SingleConnectionTestServerThread.__init__lsa���%6�D�"�!$�D��"�D�O� �D�M��D�I���&�4����&����G�G���$��'�'�'�'�'r$c�.�|���|SrX)r9r�s r"r<z@TestPreHandshakeClose.SingleConnectionTestServerThread.__enter__xs���J�J�L�L�L��Kr$c��	|jr|j���n#t$rYnwxYw|���d|_dSrX)r�r�rgrr-r?s  r"r@z?TestPreHandshakeClose.SingleConnectionTestServerThread.__exit__|s^��
��=�*��M�'�'�)�)�)����
�
�
���
�����I�I�K�K�K�"�D�O�O�Os� #�
0�0c�:��t�tjj��|_tj|j_|j�t���|j�	tt���tj��|_tj|j��|_|j�|j��|j�d��t'�����dS)Nr�r�r�)r
rrr�ssl_ctxr�r�r�r�r�r�r�r�rr=rDrwryrFr.r9)r�r�s �r"r9z<TestPreHandshakeClose.SingleConnectionTestServerThread.start�s�����5�5�c�k�6M�N�N�D�L�'*�'8�D�L�$��L�.�.�h�.�?�?�?��L�(�(�(�G�(�L�L�L�"�M�O�O�D�M�%�/��
�>�>�D�I��M�$�$�T�\�2�2�2��M� � ��#�#�#��G�G�M�M�O�O�O�O�Or$c�R�	|j���\}}n*#t$rY|j���dSwxYw	|j���n#|j���wxYw|5|�|��r	ddd��dS	|j�|d���}	|�d��|_n.#t$rYn"wxYw#t$r}||_
Yd}~nd}~wwxYwddd��dS#1swxYwYdS)NTr��)r�r�rGr�r+r2r�rhr,rgr-)r�rZ�address�
tls_socketrbs     r"r,z:TestPreHandshakeClose.SingleConnectionTestServerThread.run�s���
&� $�
� 4� 4� 6� 6�
��g�g���
�
�
���
�#�#�%�%�%�%�%�	
�����
�
�#�#�%�%�%�%���
�#�#�%�%�%�%�����
�
��)�)�$�/�/���
�
�
�
�
�
�
�
��!%��!9�!9�$�D�!9�!Q�!Q�J��-7�_�_�S�-A�-A��*�*��"������������*�*�*�&)�D�O�O�O�O�O�O�����*����
�
�
�
�
�
�
�
�
�
�
�
����
�
�
�
�
�
s��A$�
A�A$�A�A$�$A?�D�)C1�C!� D�!
C.�+D�-C.�.D�1
D�;D�D�D�D�D �#D )	r�rMrNr�r<r@r9r,�
__classcell__)r�s@r"� SingleConnectionTestServerThreadr)js��������?C�
	(�
	(�
	(�
	(�
	(�
	(�
	(�	�	�	�	#�	#�	#�		�		�		�		�		�	�	�	�	�	�	�	r$r8c�h�tjdkrdSt|t��sYt|t��r|jt
jks/tjdt|dd��tj
��r1	|�dtj�d|����d}dS#d}wxYwdS)N�linuxzwrong.version.numberrDr\z!Could not recreate conditions on z: err=)r�rSr\rrgr��EINVAL�re�searchr_r r:ras  r"�"non_linux_skip_if_other_okay_errorz8TestPreHandshakeClose.non_linux_skip_if_other_okay_error�s����<�7�"�"��F��s�0�1�1�	�
��W�
%�
%�	�*-�)�u�|�*C�*C��I�,�g�c�8�R�.H�.H�"�$�O�O�+D�
��
�
�)�#�,�)�)�"%�)�)�*�*�*������d��
�
�
�
�+D�*Cs�%B+�+B/c�z���tj���tj�����fd�}|�|d���}|�|��t	j��5}|�|j�����t|��|�	d����
��|�d��|���ddd��n#1swxYwY��
��|���|j}d|_	|�d|j��|�|t&��|�|��|�|t*j��|�d|jd��|�d|j��|�d	|jd	��|�|jd
���d}d}dS#d}d}wxYw)Nc���������tj��st	d���dS)Nz+wrap_socket event never set, test may fail.F)r�r;rr��RuntimeError)�unused�ready_for_server_wrap_socket�server_accept_calleds ��r"r+zPTestPreHandshakeClose.test_preauth_data_to_tls_server.<locals>.call_after_accept�sC��� �$�$�&�&�&�/�4�4�W�5J�K�K�
R�"�#P�Q�Q�Q��5r$�preauth_data_to_tls_server�r+r!FsDELETE /data HTTP/1.0

r$�before TLS handshake with datar�r�attr must existr	)r�r:r8rzr�r�r�r�r%rHr;rlr�r�rr-r�r,rJrgr>r
r�r�rvrDr^r�rC)r�r+rCrtr-rCrDs     @@r"�test_preauth_data_to_tls_serverz5TestPreHandshakeClose.test_preauth_data_to_tls_server�sl����(��0�0��'0��'8�'8�$�	�	�	�	�	�	��6�6�"3�1�7�3�3��	
���&�!�!�!�
�]�_�_�	���N�N�6�?�6�6�8�8�9�9�9�5�f�=�=�=����u�%�%�%� �%�%�'�'�'��K�K�8�9�9�9��L�L�N�N�N�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	%�(�(�*�*�*����
�
�
��&�
� ���	����S�&�"6�7�7�7��!�!�*�g�6�6�6��3�3�J�?�?�?��!�!�*�c�l�;�;�;��M�M�:�J�O�A�<N�O�O�O��M�M�:�J�<M�N�N�N�����:�?�1�#5�6�6�6����j�0�6G��H�H�H��J��F�F�F���J��F�M�M�M�Ms �.BD�D�D�
C$H4�4H:c���	�
�tj���
tj���	�	�
fd�}|�|d���}|�|��t	|j��t
j��5}|�|j������
�	���	�
tj��s|�
d��t���}	|�|d���}d}|�d��}|���n#t&$r}|}d}Yd}~nd}~wwxYwddd��n#1swxYwY|���	|�d|��|�|t&��|�|��|�|tj��|�d	|jd
��|�d	|j��|�d|jd��|�|jd�
��t?j |��5d}ddd��n#1swxYwYd}dS#t?j |��5d}ddd��n#1swxYwYd}wxYw)Nc�����tj��std��t	|��|�d��|�������dS)Nz ERROR: test client took too longsWHTTP/1.0 307 Temporary Redirect
Location: https://example.com/someone-elses-server

T)r;rr�r'r%rlr�r�)�conn_to_client�$client_can_continue_with_wrap_socket�$server_can_continue_with_wrap_sockets ��r"r+zPTestPreHandshakeClose.test_preauth_data_to_tls_client.<locals>.call_after_accept�s����7�<�<�W�=R�S�S�
:��8�9�9�9�
6�n�E�E�E�����
�
�
�
� � �"�"�"�0�4�4�6�6�6��4r$�preauth_data_to_tls_clientrFztest server took too longr/r�r4r$rGr�rrHr	)!r�r:r8rzr%r�r�r�r�r�r;rr�r8r
rr�rhr�rgrr�rJr>r�r�rvrDr^r�rCrr�)r�r+rCrtr2�
tls_clientr-r,rbrMrNs         @@r"�test_preauth_data_to_tls_clientz5TestPreHandshakeClose.test_preauth_data_to_tls_client�s�����/8��/@�/@�,�/8��/@�/@�,�	�	�	�	�	�	��6�6�"3�1�7�3�3��	
���&�!�!�!�1�&�/�B�B�B�
�]�_�_�	#���N�N�6�?�6�6�8�8�9�9�9�0�4�4�6�6�6�7�<�<�W�=R�S�S�
7��	�	�5�6�6�6��0�0�2�2�G�	
#�$�0�0���1�=�=�
�"�
� *���� 4� 4�
�� � �"�"�"�"��
�
$�
$�
$� �
� #�
�
�
�
�
�
�����
$����	#�	#�	#�	#�	#�	#�	#�	#�	#�	#�	#����	#�	#�	#�	#�$	���
�
�
�
	����S�-�0�0�0��!�!�*�g�6�6�6��3�3�J�?�?�?��!�!�*�c�l�;�;�;��M�M�:�J�O�A�<N�O�O�O��M�M�:�J�<M�N�N�N�����:�?�1�#5�6�6�6����j�0�6G��H�H�H�!�:�4�@�@�
"�
"�!�
�
"�
"�
"�
"�
"�
"�
"�
"�
"�
"�
"����
"�
"�
"�
"��F�F�F��!�:�4�@�@�
"�
"�!�
�
"�
"�
"�
"�
"�
"�
"�
"�
"�
"�
"����
"�
"�
"�
"��F�M�M�M�Ms��BE;�E�(,E;�
E,�E'�"E;�'E,�,E;�;E?�E?�CJ,�J�J!�$J!�,K�K�K�K�K�K�Kc����tj���G�fd�dtjj��}�fd�}d}|�|d|���}|�|��t|j��||j�	��d|j
t���|���}tj|��5|�t ��5|�d	d
ddi�
��|���}ddd��n#1swxYwYddd��n#1swxYwY|���dS)Nc���eZdZ�fd�ZdS)�eTestPreHandshakeClose.test_https_client_non_tls_response_ignored.<locals>.SynchronizedHTTPSConnectionc�:��tjj�|����t
j��s+t
jrtj	�
d��|j�|j
|j���|_
dS)Nz"server_responding event never set.r�)�httprt�HTTPConnectionr�r;rr�r�r�r�r��_contextr�r�r�)r��server_respondings �r"r�zmTestPreHandshakeClose.test_https_client_non_tls_response_ignored.<locals>.SynchronizedHTTPSConnection.connect*s������*�2�2�4�8�8�8�)�-�-�g�.C�D�D�K���K��J�$�$�%I�J�J�J� �M�5�5��	�4�9�6�>�>��	�	�	r$N)r�rMrNr�)rYs�r"�SynchronizedHTTPSConnectionrT)s.�������	
>�	
>�	
>�	
>�	
>�	
>�	
>r$rZc���t|��|�d��|�������dS)Ns!HTTP/1.0 402 Payment Required

T)r%rlr�r�)rLrYs �r"r+z[TestPreHandshakeClose.test_https_client_non_tls_response_ignored.<locals>.call_after_accept5sY���5�n�E�E�E�����
�
�
�
� � �"�"�"��!�!�#�#�#��4r$g@�non_tls_http_RST_responder)r+r!ryr)rDr�ry�HEADz/test�Hostr/)�headers)r�r:rVrt�HTTPSConnectionr8rzr%r�r�rDr
rrr�r�rgr��getresponser)r�rZr+ryrC�
connection�responserYs       @r"�*test_https_client_non_tls_response_ignoredz@TestPreHandshakeClose.test_https_client_non_tls_response_ignored&s���%�O�-�-��
	>�
	>�
	>�
	>�
	>�
	>�
	>�$�+�*E�
	>�
	>�
	>�	�	�	�	�	����6�6�"3�1��7�!�!��	
���&�!�!�!�1�&�/�B�B�B�0�0���+�+�-�-�a�0��[��2�2�4�4��	
�
�
�
��
6�t�
<�
<�	0�	0��!�!�'�*�*�	0�	0����v�w���8M��N�N�N�!�-�-�/�/�H�	0�	0�	0�	0�	0�	0�	0�	0�	0�	0�	0����	0�	0�	0�	0�	0�	0�	0�	0�	0�	0�	0�	0�	0�	0�	0����	0�	0�	0�	0�
	���
�
�
�
�
s6�E�3/D.�"E�.D2	�2E�5D2	�6E�E	�E	N)r�rMrNr�r�r�r8r>rIrQrdrYr$r"r'r'fs���������:�:�:�:�:�9�+;�:�:�:�x���2*�*�*�X9�9�9�v3�3�3�3�3r$r'c�J�eZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zd
�ZdS)�TestEnumerationsc�j�Gd�dtj��}tj|t��dS)Nc�p�eZdZejZejZejZ	ej
ZejZ
ejZejZdS)�;TestEnumerations.test_tlsversion.<locals>.CheckedTLSVersionN)r�rMrNr��PROTO_MINIMUM_SUPPORTEDro�PROTO_SSLv3r�PROTO_TLSv1r�
PROTO_TLSv1_1r�
PROTO_TLSv1_2rm�
PROTO_TLSv1_3r��PROTO_MAXIMUM_SUPPORTEDrprYr$r"�CheckedTLSVersionri_sJ������ $� <���$�E��$�E��(�G��(�G��(�G� $� <���r$rq)�enum�IntEnum�_test_simple_enumr)r�rqs  r"�test_tlsversionz TestEnumerations.test_tlsversion^sJ��	=�	=�	=�	=�	=���	=�	=�	=�	
��0�*�=�=�=�=�=r$c�j�Gd�dtj��}tj|t��dS)Nc�*�eZdZdZdZdZdZdZdZdZ	dS)	�DTestEnumerations.test_tlscontenttype.<locals>.Checked_TLSContentTypezPContent types (record layer)

            See RFC 8446, section B.1
            r�r��rB�N)
r�rMrNr�rr�r�APPLICATION_DATA�HEADER�INNER_CONTENT_TYPErYr$r"�Checked_TLSContentTyperxjs=������
�
�"$���E��I�!���F�!&���r$r)rrrsrtr)r�rs  r"�test_tlscontenttypez$TestEnumerations.test_tlscontenttypeisJ��	'�	'�	'�	'�	'�T�\�	'�	'�	'�	
��5��G�G�G�G�Gr$c�j�Gd�dtj��}tj|t��dS)Nc��eZdZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdZ
dZd
ZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZ dZ!d Z"d!Z#d"Z$d#Z%d$S)%�@TestEnumerations.test_tlsalerttype.<locals>.Checked_TLSAlertTypezaAlert types for TLSContentType.ALERT messages

            See RFC 8466, section B.2
            r�
r�rry��(�)rX�+�,�-�.�/r\�1�2�3�<�F�G�P�V�Zrf�m�n�o�p�q�r�s�t�xN)&r�rMrNr��CLOSE_NOTIFY�UNEXPECTED_MESSAGE�BAD_RECORD_MAC�DECRYPTION_FAILED�RECORD_OVERFLOW�DECOMPRESSION_FAILURE�HANDSHAKE_FAILURE�NO_CERTIFICATE�BAD_CERTIFICATE�UNSUPPORTED_CERTIFICATE�CERTIFICATE_REVOKED�CERTIFICATE_EXPIRED�CERTIFICATE_UNKNOWN�ILLEGAL_PARAMETER�
UNKNOWN_CA�
ACCESS_DENIED�DECODE_ERROR�
DECRYPT_ERROR�EXPORT_RESTRICTION�PROTOCOL_VERSION�INSUFFICIENT_SECURITY�INTERNAL_ERROR�INAPPROPRIATE_FALLBACK�
USER_CANCELED�NO_RENEGOTIATION�MISSING_EXTENSION�UNSUPPORTED_EXTENSION�CERTIFICATE_UNOBTAINABLE�UNRECOGNIZED_NAME�BAD_CERTIFICATE_STATUS_RESPONSE�BAD_CERTIFICATE_HASH_VALUE�UNKNOWN_PSK_IDENTITY�CERTIFICATE_REQUIRED�NO_APPLICATION_PROTOCOLrYr$r"�Checked_TLSAlertTyper�ys�������
�
��L�!#���N� "�� �O�$&�!� "���N� �O�&(�#�"$��"$��"$�� "���J��M��L��M�!#��!��$&�!��N�%'�"��M�"�� #��$'�!�'*�$� #��.1�+�),�&�#&� �#&� �&)�#�#�#r$r�)rrrsrtr)r�r�s  r"�test_tlsalerttypez"TestEnumerations.test_tlsalerttypexsK��&	*�&	*�&	*�&	*�&	*�4�<�&	*�&	*�&	*�N	
��3�]�C�C�C�C�Cr$c�j�Gd�dtj��}tj|t��dS)Nc�j�eZdZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdZ
dZd
ZdZdZdZdZdZdZdZdZdZdZdS)�DTestEnumerations.test_tlsmessagetype.<locals>.Checked_TLSMessageTypezVMessage types (handshake protocol)

            See RFC 8446, section B.3
            rr�r�rrAr5r�rrr]�
�rDr�r�rryrz��C�r{N)r�rMrNr��
HELLO_REQUEST�CLIENT_HELLO�SERVER_HELLO�HELLO_VERIFY_REQUEST�NEWSESSION_TICKET�END_OF_EARLY_DATA�HELLO_RETRY_REQUEST�ENCRYPTED_EXTENSIONS�CERTIFICATEr�CERTIFICATE_REQUEST�SERVER_DONE�CERTIFICATE_VERIFY�CLIENT_KEY_EXCHANGE�FINISHED�CERTIFICATE_URL�CERTIFICATE_STATUS�SUPPLEMENTAL_DATA�
KEY_UPDATE�
NEXT_PROTO�MESSAGE_HASHrrYr$r"�Checked_TLSMessageTyper��s�������
�
��M��L��L�#$� � !�� !��"#��#$� ��K�"$��"$���K�!#��"$���H� �O�!#�� "���J��J��L�!'���r$r�)rrrsrtr
)r�r�s  r"�test_tlsmessagetypez$TestEnumerations.test_tlsmessagetype�sJ��	(�	(�	(�	(�	(�T�\�	(�	(�	(�6	
��5��G�G�G�G�Gr$c��tjtjddd�tj���}|j|_tj|tj��dS)N�
_SSLMethodr
c�8�|�d��o|dkS)Nr[r�r^r s r"rz1TestEnumerations.test_sslmethod.<locals>.<lambda>�s��T�_�_�[�9�9�W�d�FW�>W�r$��source)	rr�
_old_convert_rsr
r�r`rrtr�)r��Checked_SSLMethods  r"�test_sslmethodzTestEnumerations.test_sslmethod�sX�� �.���l�E�W�W��x�����->�,J��)���0�#�.�A�A�A�A�Ar$c��tjtjddd�tj���}tj|tj��dS)N�Optionsr
c�,�|�d��S)Nr�r�r s r"rz/TestEnumerations.test_options.<locals>.<lambda>�s��T�_�_�U�3�3�r$r�)rrr��IntFlagr
r�rtr�)r��CheckedOptionss  r"r�zTestEnumerations.test_options�sJ���+���i��3�3��x�����
	
��~�s�{�;�;�;�;�;r$c��tjtjddd�tj���}tj|tj��dS)N�AlertDescriptionr
c�,�|�d��S)N�ALERT_DESCRIPTION_r�r s r"rz8TestEnumerations.test_alertdescription.<locals>.<lambda>�s��T�_�_�-A�B�B�r$r�)rrr�rsr
r�rtr�)r��CheckedAlertDescriptions  r"�test_alertdescriptionz&TestEnumerations.test_alertdescription�sN��"&�"4���0�%�B�B��x�#�#�#��
	
��6��8L�M�M�M�M�Mr$c��tjtjddd�tj���}tj|tj��dS)N�SSLErrorNumberr
c�,�|�d��S)N�
SSL_ERROR_r�r s r"rz6TestEnumerations.test_sslerrornumber.<locals>.<lambda>�s��T�_�_�\�:�:�r$r�)rrr�rsr
r�rtr�)r��Checked_SSLErrorNumbers  r"�test_sslerrornumberz$TestEnumerations.test_sslerrornumber�sN��!%�!3���.��:�:��x�"�"�"��
	
��5�s�7I�J�J�J�J�Jr$c��tjtjddd�tj���}tj|tj��dS)N�VerifyFlagsr
c�,�|�d��S)N�VERIFY_r�r s r"rz3TestEnumerations.test_verifyflags.<locals>.<lambda>�s��T�_�_�Y�7�7�r$r�)rrr�r�r
r�rtr�)r��CheckedVerifyFlagss  r"�test_verifyflagsz!TestEnumerations.test_verifyflags�sL��!�/���m�U�7�7��x�����
	
��1�3�?�C�C�C�C�Cr$c��tjtjddd�tj���}tj|tj��dS)N�
VerifyModer
c�,�|�d��S)N�CERT_r�r s r"rz2TestEnumerations.test_verifymode.<locals>.<lambda>�s��T�_�_�W�5�5�r$r�)rrr�rsr
r�rtr)r��CheckedVerifyModes  r"�test_verifymodez TestEnumerations.test_verifymode�sL�� �.���l�E�5�5��x�����
	
��0�#�.�A�A�A�A�Ar$N)
r�rMrNrur�r�r�r�r�r�r�rrrYr$r"rfrf\s�������	>�	>�	>�
H�
H�
H�(D�(D�(D�TH�H�H�<B�B�B�<�<�<�N�N�N�K�K�K�D�D�D�B�B�B�B�Br$rfc��tj�rtjtjd�}|���D]"\}}|��}|r|dr	|�d|��}n!�#t
tj����}tdtj	�dtj
����td|z��tdtjz��tdtjz��	tdtj
z��n#t$rYnwxYwtt t"t$t&t(t*t,t.t0t2t4fD]8}t6j�|��stjd	|z����9t?j ��}tCj"t>j#g|�R�dS)
N)�Mac�Windowsrrztest_ssl: testing with z          under %sz          HAS_SNI = %rz          OP_ALL = 0x%8xz          OP_NO_TLSv1_1 = 0x%8xzCan't read certificate file %r)$rr�rS�mac_ver�	win32_ver�itemsr�r'r
rIrHr�rr�r�rr�r�r�r�r�r�r�r�r��BADKEYr�rr�exists�
TestFailedr�threading_setuprt�addModuleCleanup�threading_cleanup)�platsr!rx�plat�filename�thread_infos      r"�setUpModuler�s�������#��)�
�
�� �+�+�-�-�	-�	-�J�D�$��4�6�6�D��
��Q��
�"&�$�$���-�������)�+�+�,�,�D�
��
�
 �
 �
 �#�":�":�<�	=�	=�	=�
�"�T�)�*�*�*�
�&���4�5�5�5�
�(�3�:�5�6�6�6�	��3�c�6G�G�H�H�H�H���	�	�	��D�	����	�.��'�>�=��)�:����	$�R�R��
�w�~�~�h�'�'�	R��$�%E��%P�Q�Q�Q�	R�#�2�4�4�K���.�@�O�;�O�O�O�O�O�Os�2D�
D�D�__main__rX)r�TFNN)Nrr)�r�rt�
unittest.mockr�r�test.supportrrrrrr'r<r�r�r#r�rrr�http.clientrVrr�r�urllib.requestr�r�r�r^rS�	sysconfigrzr�ImportError�import_deprecatedr	�
import_moduler
r�rrr
rrR�Py_DEBUGr9rz�_PROTOCOL_NAMESrYr�rHrl�get_config_varrr�r��verr_r�r#r�fsencoder�r�r�r�r�r�r�r�r�r�r�r4rr�r�r�rr�r�r�r�r�r0r�r�r�r�r�r�r�r
rr$rr�r�rCrDrErFrGrOrVrf�	lru_cachercr}r�r��ignore_warningsr~rPr�r�r��TestCaser�rVr;rPrjrxr�r�r�r��test.ssl_serversr�r�rJrQr�r�r�rQr�rn�
HAS_KEYLOGrr�r%r'rfrr��mainrYr$r"�<module>r,s�
���
�
�
���������������&�&�&�&�&�&�"�"�"�"�"�"�&�&�&�&�&�&�)�)�)�)�)�)�(�(�(�(�(�(�����	�	�	�	�
�
�
�
�
�
�
�
�
�
�
�
���������	�	�	�	�����	�	�	�	�����
�
�
�
�������������������������������M�M�M�M������
�F�F�F�����-�?�,�Z�8�8��"�m�!�%�(�(������K�K�K�K�K�K�K�K�K�K�K�K��7�3�*�+�+���5�c�l�g�5���F�3�&�'�'�	�����+�y�8��1��1�2J�K�K�����
)�
)�J�E�3�
����U�#�#���g�c�n�c�*�*��������������%(��E�"�"�F�F�F��9�]�#�#�����X�&�&���9�^�$�$��
�)�M�
"�
"�����X�&�&�����G�$�$�
��Y�3�4�4���I�2�3�3����	��8�	�	���r�{�6�"�"���)�H�l�3�3���	�(�L�1�1�
�/�+�+�&�-�.����
�"�)�$�
%�
%���)�N�+�+��&��
;�F�T�0�+�+�&�-�.�����$�9�^�,�,��*���i� 0�1�1��.���Y�x��
.�
.�
�
�Y�}�
%�
%�
��i�
�&�&���I�k�"�"�	���*���I�n�%�%�	�
�)�M�
"�
"���)�0�1�1��	��<�	 �	 ���I�k�"�"�	��y�+�,�,���i� 5�6�6��	��>�	"�	"���r�{�6�"�"���G�C�!4�a�8�8���7�3� 2�A�6�6���W�S�"6��:�:��%�g�c�+H�!�L�L��$�W�S�*F��J�J�����
�9�;�;�
�3�3�3�3�
�
�
�4�4�4�*��%�%���%�P���".�.�.����5�_�4�
����� #�}�t�!�D�$�/�/�/�/�/�,!0�4��4�4�4�4�4�2u1�u1�u1�u1�u1�x�(�u1�u1�u1�pJ �J �J �J �J �8�$�J �J �J �Z3D�3D�3D�3D�3D�H�%�3D�3D�3D�l@3�@3�@3�@3�@3�X�&�@3�@3�@3�F.�.�.�.�.�X�&�.�.�.�`k<�k<�k<�k<�k<�H�-�k<�k<�k<�\���9�%�%�L�L�L�L�L�X�&�L�L�&�%�L�4	Z�	Z�	Z�	Z�	R�	R�	R�/�.�.�.�.�.�X�X�X�X�X��)�X�X�X�tt�t�t�t�t��)�t�t�t�l?G�EI�#�.�.�.�.�bIJ�KG�KG�KG�KG�\GN�GN�GN�GN�GN�H�%�GN�GN�GN�T0���_�_�Y�/�/�1E�F�F�P1�P1�P1�P1�P1�H�-�P1�P1�G�F�P1�f�W�S�^�%6�
7�
7�
�%�(�%��B�D�D��T/�T/�T/�T/�T/�8�$�T/�T/�T/�nR�R�R�s�s�s�s�s�H�-�s�s�s�lTB�TB�TB�TB�TB�x�(�TB�TB�TB�n P� P� P�F�z����H�M�O�O�O�O�O��s$�>B�B
�B
�D3�3D;�:D;

Sindbad File Manager Version 1.0, Coded By Sindbad EG ~ The Terrorists