HEX
Server: Microsoft-IIS/10.0
System: Windows NT ITPWINWEBSVR22 10.0 build 20348 (Windows Server 2022) AMD64
User: www.conferencesearch.co.uk (0)
PHP: 8.3.30
Disabled: NONE
Upload Files
File: D:/Python311/Lib/test/test_asyncio/__pycache__/test_ssl.cpython-311.opt-1.pyc
�

��Vc������ddlZddlZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddlZ	ddl
Z
n
#e$rdZ
YnwxYwddlmZddlmZejdkZesdndZd�ZGd�d	ej��ZGd
�dej��Zeje
dud��Gd
�dej����ZGd�d��ZGd�de	j ��Z!Gd�de!��Z"Gd�de!��Z#dS)�N)�support)�utils�darwin��@c�.�tjd��dS�N)�asyncio�set_event_loop_policy���.D:\Python311\Lib\test\test_asyncio\test_ssl.py�tearDownModulers���!�$�'�'�'�'�'r
c�6�eZdZdZdZdd�Zd�Zd�Zd�Zd�Z	dS)�MyBaseProtoNc��d|_d|_d|_|�6tj|���|_tj|���|_dSdS)N�INITIALr��loop)�	transport�state�nbytesr
�Future�	connected�done��selfrs  r�__init__zMyBaseProto.__init__$sU�������
�����	2�$�^��6�6�6�D�N���D�1�1�1�D�I�I�I�	2�	2r
c�h�||_d|_|jr|j�d��dSdS)N�	CONNECTED)rrr�
set_result�rrs  r�connection_madezMyBaseProto.connection_made,s@��"��� ��
��>�	,��N�%�%�d�+�+�+�+�+�	,�	,r
c�@�|xjt|��z
c_dSr	)r�len�r�datas  r�
data_receivedzMyBaseProto.data_received3s�����s�4�y�y� ����r
c��d|_dS)N�EOF)r�rs r�eof_receivedzMyBaseProto.eof_received7s
����
�
�
r
c�Z�d|_|jr|j�d��dSdS)N�CLOSED)rrr!�r�excs  r�connection_lostzMyBaseProto.connection_lost;s9����
��9�	'��I� � ��&�&�&�&�&�	'�	'r
r	)
�__name__�
__module__�__qualname__rrrr#r(r,r1rr
rrr sn�������I��D�2�2�2�2�,�,�,�!�!�!����'�'�'�'�'r
rc��eZdZd�Zd�ZdS)�MessageOutFilterc��||_dSr	��msg)rr9s  rrzMessageOutFilter.__init__Cs
������r
c�&�|j|jvrdSdS)NFTr8)r�records  r�filterzMessageOutFilter.filterFs���8�v�z�!�	��5��tr
N)r2r3r4rr<rr
rr6r6Bs2�������������r
r6z
No ssl modulec�`��eZdZdZejZ�fd�Z�fd�Ze	j
dejddd�d�Ze	j
ejfd	�Z
d
�Zd�Zd+d�Zd
d�d�Zejd���Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd,d�Z d�Z!d�Z"d�Z#d �Z$d!�Z%d"�Z&d#�Z'd$�Z(d%�Z)d&�Z*d'�Z+d(�Z,d)�Z-d*�Z.�xZ/S)-�TestSSLi�c����t�����tj��|_|�|j��|�|jj��dSr	)�super�setUpr
�new_event_loopr�set_event_loop�
addCleanup�close�r�	__class__s �rrAz
TestSSL.setUpRsV���
���
�
�����*�,�,��	����D�I�&�&�&�����	��(�(�(�(�(r
c���|j���stj|j��|���tj��t�����dSr	)	r�	is_closed�
test_utils�run_briefly�
doCleanupsr�
gc_collectr@�tearDownrFs �rrNzTestSSL.tearDownXsg����y�"�"�$�$�	.��"�4�9�-�-�-������������
���������r
N��
)�family�addr�timeout�backlog�max_clientsc�&�|�O|ttdd��kr3tj��5}|j}ddd��n#1swxYwYnd}tj|tj��}|�t
d���|dkrt
d���|�|��	|�|��|�	|��n(#t$r}	|���|	�d}	~	wwxYwt|||||��S)N�AF_UNIX��	127.0.0.1r�timeout is requiredr�#only blocking sockets are supported)
�getattr�socket�tempfile�NamedTemporaryFile�name�SOCK_STREAM�RuntimeError�
settimeout�bind�listen�OSErrorrE�TestThreadedServer)
r�server_progrQrRrSrTrU�tmp�sock�exs
          r�
tcp_serverzTestSSL.tcp_serverasg���	(�����D�9�9�9�
(��0�2�2�$�c��8�D�$�$�$�$�$�$�$�$�$�$�$����$�$�$�$��(���}�V�V�%7�8�8���	6��4�5�5�5��a�<�	F��D�E�E�E����� � � �	��I�I�d�O�O�O��K�K�� � � � ���	�	�	��J�J�L�L�L��H�����	����"��$��W�k�;�;�	;s)�A�A�A�-*C�
C=�"C8�8C=c���tj|tj��}|�td���|dkrtd���|�|��t	||||��S)NrZrr[)r]rarbrc�TestThreadedClient)r�client_progrQrSrjs     r�
tcp_clientzTestSSL.tcp_client�sx���}�V�V�%7�8�8���	6��4�5�5�5��a�<�	F��D�E�E�E����� � � �!��$��W�.�.�	.r
c�4�|j|dtji|��S�NrQ)rlr]rW�r�args�kwargss   r�unix_serverzTestSSL.unix_server�� ���t���F�V�^�F�v�F�F�Fr
c�4�|j|dtji|��Srr)rpr]rWrss   r�unix_clientzTestSSL.unix_client�rwr
c��tjtj��}|xjtjzc_|�||��|Sr	)�ssl�
SSLContext�PROTOCOL_TLS_SERVER�options�OP_NO_SSLv2�load_cert_chain)r�certfile�keyfile�
sslcontexts    r�_create_server_ssl_contextz"TestSSL._create_server_ssl_context�sF���^�C�$;�<�<�
����c�o�-����"�"�8�W�5�5�5��r
T��disable_verifyc�`�tj��}d|_|rtj|_|S�NF)r{�create_default_context�check_hostname�	CERT_NONE�verify_mode)rr�r�s   r�_create_client_ssl_contextz"TestSSL._create_client_ssl_context�s0���/�1�1�
�$)�
�!��	3�%(�]�J�"��r
c#��K�tjd��}td��}|�|��	dV�|�|��dS#|�|��wxYw)Nr
zhas no effect when using ssl)�logging�	getLoggerr6�	addFilter�removeFilter)r�loggerr<s   r�_silence_eof_received_warningz%TestSSL._silence_eof_received_warning�s|�����"�9�-�-��!�"@�A�A������ � � �	(��E�E�E�����'�'�'�'�'��F����'�'�'�'���s�A�A.c��	|j���|�|��dS#|�|��wxYwr	)r�stop�fail�rrks  r�_abort_socket_testzTestSSL._abort_socket_test�s@��	��I�N�N�����I�I�b�M�M�M�M�M��D�I�I�b�M�M�M�M���s	�2�A	c�(�tj��Sr	)r
rBr+s r�new_loopzTestSSL.new_loop�s���%�'�'�'r
c�(�tj��Sr	)r
�DefaultEventLoopPolicyr+s r�
new_policyzTestSSL.new_policy�s���-�/�/�/r
c��K�t|tj��sdS	|����d{V��dS#tt
f$rYdSwxYwr	)�
isinstancer
�StreamWriter�wait_closed�BrokenPipeError�ConnectionError)r�objs  rr�zTestSSL.wait_closed�st�����#�w�3�4�4�	��F�	��/�/�#�#�#�#�#�#�#�#�#�#�#����1�	�	�	��D�D�	���s�<�A�Ac���������	�
���d�d�tj�dtz�dtz���tjtj��������g�	����fd��
����	�fd�����
���fd�}����5�j	�
|����ddd��n#1swxYwY�������	D]}|����dS)Nr��AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA�BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBc���K�|�t������d{V��}��|���|�d��|�t������d{V��}��|���|�dtd��t
d��g��|����d{V��|����dz
�dS�N�OKsSP�A�MrO�	�readexactlyr%�assertEqual�write�
writelines�	bytearray�
memoryview�drainrE��reader�writerr'�A_DATA�B_DATA�CNTrs   ����r�
handle_clientz7TestSSL.test_create_server_ssl_1.<locals>.handle_client������� �+�+�C��K�K�8�8�8�8�8�8�8�8�D����T�6�*�*�*��L�L������+�+�C��K�K�8�8�8�8�8�8�8�8�D����T�6�*�*�*����u�i��o�o�z�$�7G�7G�H�I�I�I��,�,�.�.� � � � � � � ��L�L�N�N�N��1�H�C�C�Cr
c������K�tj���������fd�}��|��}|�����|����d{V��dS)Nc�6��	|����|����|����|�d��}��|d��|����|�d��}��|d��|����j��jd��dS#t$r+}�j��j
|��Yd}~dSd}~wwxYw)N�r���SPAM)�starttls�connect�send�recv_allr�rEr�call_soon_threadsafer!�	Exception�
set_exception)	rjr'rkr�r�rR�
client_sslctx�futrs	   ������r�progzCTestSSL.test_create_server_ssl_1.<locals>.test_client.<locals>.prog�s ���I��M�M�-�0�0�0��L�L��&�&�&��I�I�f�%�%�%��=�=��+�+�D��$�$�T�5�1�1�1��I�I�f�%�%�%��=�=��+�+�D��$�$�T�7�3�3�3��J�J�L�L�L�
�I�2�2�3�>�4�H�H�H�H�H��!�J�J�J��I�2�2�3�3D�b�I�I�I�I�I�I�I�I�I�����J���s�B>C#�#
D�- D�D�r
rrp�start�append)	rRr��clientr�r�r�r��clientsrs	`  @�����r�test_clientz5TestSSL.test_create_server_ssl_1.<locals>.test_client�s���������.�"�"�C�
I�
I�
I�
I�
I�
I�
I�
I�
I�
I�(�_�_�T�*�*�F��L�L�N�N�N��N�N�6�"�"�"��I�I�I�I�I�I�I�I�Ir
c���K�i}ttj���}tj�ddft
j�
d�|���d{V��}	|j}�	�|��|d�	��}g}t���D] }|��|�����!tjtj
|�����d{V���	j�|j��|����d{V��dS#�	j�|j��|����d{V��wxYw)N��ssl_handshake_timeoutrYr�rQr{)�dictr�
SHORT_TIMEOUTr
�start_serverr]�AF_INET�sockets�
assertTrue�getsockname�ranger��wait_for�gatherr�	call_soonrEr�)�extras�srv�	srv_socksrR�tasks�_�TIMEOUT�	TOTAL_CNTr�r�sslctxr�s      ������rr�z6TestSSL.test_create_server_ssl_1.<locals>.start_server�s�������F���0E�F�F�F�F��,���Q���~��	��
���������C�
(��K�	����	�*�*�*� ��|�/�/�1�1�����y�)�)�4�4�A��L�L���T�!2�!2�3�3�3�3��&�w�~�u�'=�w�G�G�G�G�G�G�G�G�G��	�#�#�C�I�.�.�.��o�o�'�'�'�'�'�'�'�'�'�'�'���	�#�#�C�I�.�.�.��o�o�'�'�'�'�'�'�'�'�'�'���s
�BD�;E
)
r�LONG_TIMEOUT�BUF_MULTIPLIERr�rJ�ONLYCERT�ONLYKEYr�r�r�run_until_completer�r�)
rr�r�r�r�r�r�r�r�r�r�r�r�s
`  @@@@@@@@@@r�test_create_server_ssl_1z TestSSL.test_create_server_ssl_1�s�����������������	��&���~�-���~�-���0�0����!3�
�
���7�7�9�9�
���	�	�	�	�	�	�	�	� 	�	�	�	�	�	�	�	�	�:	(�	(�	(�	(�	(�	(�	(�	(�	(�	(�6�
/�
/�
1�
1�	9�	9��I�(�(�����8�8�8�	9�	9�	9�	9�	9�	9�	9�	9�	9�	9�	9����	9�	9�	9�	9�	
����i�(�(�(��	�	�F��K�K�M�M�M�M�	�	s�#C�C�Cc��������	�
��j�d��d�d�dtz�dtz���tjtj���
���������
fd��	�����fd�}�����fd�}����	fd�}����5||��ddd��n#1swxYwY����5||��ddd��dS#1swxYwYdS)	Nrr�r�r�c���|��d���|�t�����}��|���|�d��|�t�����}��|���|�d��|���dS)NT��server_sider�r�)r�r�r%r�r�rE)rjr'r�r�rr�s  ����r�serverz4TestSSL.test_create_connection_ssl_1.<locals>.server0s�����M�M�� �
�
"�
"�
"��=�=��V���-�-�D����T�6�*�*�*��I�I�e�����=�=��V���-�-�D����T�6�*�*�*��I�I�g�����J�J�L�L�L�L�Lr
c���K�i}ttj���}tj|�dd�|���d{V��\}}|������|�d���d{V��d��|������|�d���d{V��d���dz
�|�����	|���d{V��dS)	Nr���r{�server_hostnamer�r�r�r�rO)
r�rr�r
�open_connectionr�r�r�rEr�)	rRr�r�r�r�r�r�r�rs	    �����rr�z4TestSSL.test_create_connection_ssl_1.<locals>.client?sA������F���0E�F�F�F�F�#*�#:��!� "�$�$��	$�$�������N�F�F�
�L�L�� � � ����6�#5�#5�a�#8�#8�8�8�8�8�8�8�%�@�@�@��L�L�� � � ����6�#5�#5�a�#8�#8�8�8�8�8�8�8�'�B�B�B�
�1�H�C��L�L�N�N�N��"�"�6�*�*�*�*�*�*�*�*�*�*�*r
c��<�K�tj��}|�|��tj|�d����d{V��\}}|������|�d���d{V��d��|������|�d���d{V��d���dz
�|�����|���d{V��|���dS)Nr�)rjr{r�r�r�r�r�rO)	r]r�r
r�r�r�r�rEr�)	rRrjr�r�r�r�r�r�rs	    �����r�client_sockz9TestSSL.test_create_connection_ssl_1.<locals>.client_sockUsG������=�?�?�D��L�L�����#*�#:��!� "�$$�$$�$$�$�$�$�$�$�$�N�F�F�

�L�L�� � � ����6�#5�#5�a�#8�#8�8�8�8�8�8�8�%�@�@�@��L�L�� � � ����6�#5�#5�a�#8�#8�8�8�8�8�8�8�'�B�B�B�
�1�H�C��L�L�N�N�N��"�"�6�*�*�*�*�*�*�*�*�*��J�J�L�L�L�L�Lr
c�F��d�d�}��������5}g}t���D]%}|�||j�����&�j�||���ddd��n#1swxYwY������dS)Nrc��.K�tj|��d{V��Sr	�r
r��r�s r�_gatherzBTestSSL.test_create_connection_ssl_1.<locals>.run.<locals>._gatherns%����$�^�U�3�3�3�3�3�3�3�3r
�rUrT�rlr�r�rRrr�r��	�cororr�r�r�r�r�rr�s	     ����r�runz1TestSSL.test_create_connection_ssl_1.<locals>.runjs����C�
4�
4�
4�����-6�)2�!�4�4�
>�7:����y�)�)�1�1�A��L�L���c�h���0�0�0�0��	�,�,�W�W�e�_�=�=�=�
>�
>�
>�
>�
>�
>�
>�
>�
>�
>�
>����
>�
>�
>�
>�
���S�)�,�,�,�,�,��AB�B�B)	r�set_exception_handlerr�r�rJr�r�r�r�)rr�r�rr�r�r�r�r�r�r�s`   @@@@@@@r�test_create_connection_ssl_1z$TestSSL.test_create_connection_ssl_1!s�����������	�'�'��-�-�-����	��~�-���~�-���0�0�����
�
���7�7�9�9�
�
	�
	�
	�
	�
	�
	�
	�
	�	+�	+�	+�	+�	+�	+�	+�	+�	+�,	�	�	�	�	�	�	�	�	�*	-�	-�	-�	-�	-�	-�	-�	-�&�
/�
/�
1�
1�	�	��C��K�K�K�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	��
/�
/�
1�
1�	�	��C�����	�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	�	s$�/C�C�C�&C?�?D�Dc����������j�d���d�}��fd�}��|dd���5}��t
d��5�j�||j����ddd��n#1swxYwYddd��dS#1swxYwYdS)Nc��dSr	r�rts r�<lambda>zCTestSSL.test_create_connection_ssl_slow_handshake.<locals>.<lambda>����d�r
c��	|�d��n#t$rYnwxYw|���dS#|���wxYw�N��r��ConnectionAbortedErrorrE�rjs rr�zATestSSL.test_create_connection_ssl_slow_handshake.<locals>.server�sa��
��
�
�k�*�*�*�*��)�
�
�
���
�����
�
��������
�
�������s��>�
%�>�%�>�Ac���K�tj|�ddd���d{V��\}}|�����|���d{V��dS)Nr�g�?�r{r�r�)r
r�rEr��rRr�r�r�rs   ��rr�zATestSSL.test_create_connection_ssl_slow_handshake.<locals>.client�s������#*�#:��!� "�&)�	$+�$+�$+�+�+�+�+�+�+�N�F�F�

�L�L�N�N�N��"�"�6�*�*�*�*�*�*�*�*�*�*�*r
rOrzSSL handshake.*is taking longer)r�rrrl�assertRaisesRegexrr�rR)rr�r�r�r�s`   @r�)test_create_connection_ssl_slow_handshakez1TestSSL.test_create_connection_ssl_slow_handshake�sx�����7�7�9�9�
�	
�	�'�'�(:�(:�;�;�;�	�	�	�	+�	+�	+�	+�	+�	+��_�_�V�)*�%&��(�(�	?�+.��'�'�*�6�8�8�
?�
?��	�,�,�V�V�C�H�-=�-=�>�>�>�	
?�
?�
?�
?�
?�
?�
?�
?�
?�
?�
?����
?�
?�
?�
?�		?�	?�	?�	?�	?�	?�	?�	?�	?�	?�	?�	?����	?�	?�	?�	?�	?�	?s6�B<�/)B$�B<�$B(	�(B<�+B(	�,B<�<C�Cc������j�d�����tjtj�����d�����fd�}��fd�}��|dd���5}��tj
��5�j�||j����ddd��n#1swxYwYddd��dS#1swxYwYdS)Nc��dSr	rrs rr
zGTestSSL.test_create_connection_ssl_failed_certificate.<locals>.<lambda>�rr
Fr�c����	|��d���|���n#tjtf$rYnwxYw|���dS#|���wxYw)NTr�)r�r�r{�SSLErrorrfrE)rjr�s �rr�zETestSSL.test_create_connection_ssl_failed_certificate.<locals>.server�s����
��
�
�� $��&�&�&����������L�'�*�
�
�
���
�����
�
��������
�
�������s&�+/�A!�A�A!�A�A!�!A7c���K�tj|�dtjd���d{V��\}}|�����|���d{V��dS)Nr�r)r
r�rr�rEr�rs   ��rr�zETestSSL.test_create_connection_ssl_failed_certificate.<locals>.client�s������#*�#:��!� "�&-�&;�	$=�$=�$=�=�=�=�=�=�=�N�F�F�

�L�L�N�N�N��"�"�6�*�*�*�*�*�*�*�*�*�*�*r
rOr)
rrr�rJr�r�r�rl�assertRaisesr{�SSLCertVerificationErrorr�rR)rr�r�r�r�r�s`   @@r�-test_create_connection_ssl_failed_certificatez5TestSSL.test_create_connection_ssl_failed_certificate�s�������	�'�'�(:�(:�;�;�;��0�0�����
�
���7�7�u�7�M�M�
�		�		�		�		�		�	+�	+�	+�	+�	+�	+��_�_�V�)*�%&��(�(�	?�+.��"�"�3�#?�@�@�
?�
?��	�,�,�V�V�C�H�-=�-=�>�>�>�
?�
?�
?�
?�
?�
?�
?�
?�
?�
?�
?����
?�
?�
?�
?�		?�	?�	?�	?�	?�	?�	?�	?�	?�	?�	?�	?����	?�	?�	?�	?�	?�	?s6� C/�")C�C/�C	�C/�C	�C/�/C3�6C3c������tj���g��j��fd���d��fd�}��fd�}��|dd���5}��tj��5�j�||j	����ddd��n#1swxYwYddd��n#1swxYwY��
������g��dS)Nc�.����|��Sr	)r�)r�ctx�messagess  �rr
z4TestSSL.test_ssl_handshake_timeout.<locals>.<lambda>�s���(�/�/�#�:N�:N�r
Fc���	|�d��n#t$rd�YnwxYw|���dS#|���wxYw)NrTr)rj�server_side_aborteds �rr�z2TestSSL.test_ssl_handshake_timeout.<locals>.server�si���
��
�
�k�*�*�*�*��)�
+�
+�
+�&*�#�#�#�
+�����
�
��������
�
�������s!��A�(�A�(�A�Ac	���K�tj�jjtjg|�R�ddd��d���d{V��dS)Nr�g$@r��?)r
r�r�create_connection�Protocol)rRr�rs ��rr�z2TestSSL.test_ssl_handshake_timeout.<locals>.client�s�������"�+��	�+��$�0��0�0�&�$&�*.�0�0�0����
�
�
�
�
�
�
�
�
r
rOr)rJ�simple_client_sslcontextrrrlrr
�TimeoutErrorr�rRr�r�)rr�r�r�r�r%r's`   @@@r�test_ssl_handshake_timeoutz"TestSSL.test_ssl_handshake_timeout�s�������#�;�=�=�
����	�'�'�(N�(N�(N�(N�O�O�O�#��	�	�	�	�	�	�	�	�	�	�	��_�_�V�)*�%&��(�(�	?�+.��"�"�7�#7�8�8�
?�
?��	�,�,�V�V�C�H�-=�-=�>�>�>�
?�
?�
?�
?�
?�
?�
?�
?�
?�
?�
?����
?�
?�
?�
?�		?�	?�	?�	?�	?�	?�	?�	?�	?�	?�	?����	?�	?�	?�	?�	
���+�,�,�,�	
����2�&�&�&�&�&s6� C�<)B1�%C�1B5	�5C�8B5	�9C�C�Cc�h������tj����j�d���d�d�d�}G��fd�dtj������fd�}��|dd���5}��t��5�j�	||j
����ddd��n#1swxYwYddd��n#1swxYwY�r0�r��d	��dS��d
��dS�r��d��dSdS)Nc��dSr	r�rr$s  rr
z<TestSSL.test_ssl_handshake_connection_lost.<locals>.<lambda>����$�r
Fc�X�|�d��|���dS)Nr)�recvrErs rr�z:TestSSL.test_ssl_handshake_connection_lost.<locals>.servers"���I�I�d�O�O�O��J�J�L�L�L�L�Lr
c�$��eZdZ�fd�Z�fd�ZdS)�?TestSSL.test_ssl_handshake_connection_lost.<locals>.ClientProtoc���d�dS�NTr)rr�connection_made_calleds  �rr#zOTestSSL.test_ssl_handshake_connection_lost.<locals>.ClientProto.connection_made����)-�&�&�&r
c���d�dSr8r)rr0�connection_lost_calleds  �rr1zOTestSSL.test_ssl_handshake_connection_lost.<locals>.ClientProto.connection_lost
r:r
N)r2r3r4r#r1)r<r9s��r�ClientProtor6sG�������
.�
.�
.�
.�
.�
.�
.�
.�
.�
.�
.�
.r
r=c��H�K��jj�g|�R�dd���d{V��fdS)Nr�r�)rr*)rRr=r�rs ���rr�z:TestSSL.test_ssl_handshake_connection_lost.<locals>.clientso�����-�$�)�-��$��$�$�"� "�	$�$�$�
$�
$�
$�
$�
$�
$�
%�
%�
%�
%r
rOrz$unexpected call to connection_lost()zEunexpected call to connection_lost() withoutcalling connection_made()z$unexpected call to connection_made())rJr,rrr
r+rlr�ConnectionResetErrorr�rRr�)rr�r�r�r=r�r<r9s`   @@@@r�"test_ssl_handshake_connection_lostz*TestSSL.test_ssl_handshake_connection_lost�s*�������#�;�=�=�
�	
�	�'�'�(>�(>�?�?�?�!&��!&��	�	�	�
	.�	.�	.�	.�	.�	.�	.�	.�'�*�	.�	.�	.�	%�	%�	%�	%�	%�	%�	%��_�_�V�)*�%&��(�(�	?�+.��"�"�#7�8�8�
?�
?��	�,�,�V�V�C�H�-=�-=�>�>�>�
?�
?�
?�
?�
?�
?�
?�
?�
?�
?�
?����
?�
?�
?�
?�		?�	?�	?�	?�	?�	?�	?�	?�	?�	?�	?����	?�	?�	?�	?�"�	>�%�
7��	�	�@�A�A�A�A�A��	�	�6�7�7�7�7�7�
#�	>��I�I�<�=�=�=�=�=�	>�	>s6�5C�)C�9C�C		�	C�C		�
C�C �#C c�b�tj}tj|��}|�tjtj��t|d��rd|_tj	|_
tj|��}t|d��rd|_tj	|_
dS)Nr�F)r{r}r|r�rJr�r��hasattrr�r�r�)r�proto�server_context�client_contexts    r� test_ssl_connect_accepted_socketz(TestSSL.test_ssl_connect_accepted_socket%s����'�����.�.���&�&�z�':�J�<N�O�O�O��>�#3�4�4�	2�,1�N�)�%(�]��"����.�.���>�#3�4�4�	2�,1�N�)�%(�]��"�"�"r
c�����
�����|j�G�
�fd�dt��}tjtj��}|�d��|�d��|����d�d�d�
����fd�}tj|d�	��}|�	��|�
��\}}|��
�����_i}	|rttj
���}	���j�fd�|fd
|i|	����}
����|���|���|�d��|�|�����|��jd��|��jt1�����|���
��|
���\}}|r |�d|jj��|���|j�t=jd����dS)Nc�.���eZdZ��fd�Z��fd�Z�xZS)�5TestSSL.test_connect_accepted_socket.<locals>.MyProtoc�~��t���|�����j��dSr	)r@r1r�r�)rr0rGrs  ��rr1zETestSSL.test_connect_accepted_socket.<locals>.MyProto.connection_lost7s5������'�'��,�,�,����t�y�)�)�)�)�)r
c�~��t���|��|j����dSr	)r@r(rr�)rr'rG�expected_responses  ��rr(zCTestSSL.test_connect_accepted_socket.<locals>.MyProto.data_received;s8������%�%�d�+�+�+���$�$�%6�7�7�7�7�7r
)r2r3r4r1r(�
__classcell__)rGrLrs@��r�MyProtorI5s\��������
*�
*�
*�
*�
*�
*�
8�
8�
8�
8�
8�
8�
8�
8�
8�
8r
rNrXrOs	test datasrogerc�j��	tjtj��}����|��}|����|����|�d���|���dS#t$r}td|��Yd}~dSd}~wwxYw)N�cz8Failure in client thread in test_connect_accepted_socket)	r]r��wrap_socketr��sendallr4rEr��print)�csockr0rR�
client_ssl�message�responses  ����rr�z4TestSSL.test_connect_accepted_socket.<locals>.clientHs����
��
�f�n�5�5���:�&�2�2�5�9�9�E��
�
�d�#�#�#��
�
�g�&�&�&� �:�:�b�>�>�����
�
�
�
�
���
�
�
��N���������������
���s�BB
�
B2�B-�-B2T)�target�daemonrr�c����Sr	r�rCs�rr
z6TestSSL.test_connect_accepted_socket.<locals>.<lambda>ds����r
r{r.�SSL皙�����?) rrr]r�rdrer��	threading�Threadr��acceptr�rr��create_task�connect_accepted_socket�run_foreverrE�join�assertFalse�is_aliver�rrr%�result�assertInrGr2r�r
�sleep)r�
server_sslrUrN�lsockr��thread�connr�r��f�trrRrLrrVrCrWs  `         @@@@@@r�test_connect_accepted_socketz$TestSSL.test_connect_accepted_socket2s�����������y��	8�	8�	8�	8�	8�	8�	8�	8�k�	8�	8�	8��
�f�n�-�-��
�
�
�#�$�$�$�
���Q����� � �"�"������$��
	�
	�
	�
	�
	�
	�
	�
	��!���=�=�=���������,�,�.�.���a���T�"�"�"����
����	G���0E�F�F�F�F����(�D�(������
�
�+5�
��
�
�
�
��	
�������
�
����
���
�
�
����A����������*�*�+�+�+������h�/�/�/������s�7�|�|�4�4�4�����#4�5�5�5����
�
���A��	8��M�M�%���!6�7�7�7�
���
�
�
��	�$�$�W�]�3�%7�%7�8�8�8�8�8r
c������j�d���tj���tj����fd�}��fd�}��|dd���5}�j�||j����}ddd��n#1swxYwY��|d��dS)Nc��dSr	rr1s  rr
z=TestSSL.test_start_tls_client_corrupted_ssl.<locals>.<lambda>yr2r
c���|���}	|��d���|�d��|�d��|�d��n#t
j$rYnwxYw|���|���dS#|���|���wxYw)NTr��A
rOs!please corrupt the SSL connection)�dupr�rRr�r�r{rrE)rj�	orig_sockr�s  �rr�z;TestSSL.test_start_tls_client_corrupted_ssl.<locals>.server~s�������
�
�I�
"��
�
�� $��&�&�&����V�$�$�$��
�
�a� � � ����C�D�D�D�D���<�
�
�
���
�����
�
�������!�!�!�!�!���
�
�������!�!�!�!���s*�AA.�-B-�.B�=B-�?B�B-�-*Cc���K�tj|�dd���d{V��\}}��|����d{V��d��|�d����tj��5|����d{V��ddd��n#1swxYwY|���	��	|���d{V��n#tj$rYnwxYwdS)Nr�r�rt�B�OK)
r
r�r��readliner�rr{rrEr�rs   ��rr�z;TestSSL.test_start_tls_client_corrupted_ssl.<locals>.client�s~�����#*�#:��!� "�$$�$$�$$�$�$�$�$�$�$�N�F�F�

���6�?�?�#4�#4�4�4�4�4�4�4�f�=�=�=��L�L������"�"�3�<�0�0�
(�
(��o�o�'�'�'�'�'�'�'�'�'�
(�
(�
(�
(�
(�
(�
(�
(�
(�
(�
(����
(�
(�
(�
(��L�L�N�N�N�
��&�&�v�.�.�.�.�.�.�.�.�.�.���<�
�
�
���
�����4s$�B(�(B,�/B,�C$�$C6�5C6rOrry)	rrrJ�simple_server_sslcontextr,rlr�rRr�)rr�r�r��resr�r�s`    @@r�#test_start_tls_client_corrupted_sslz+TestSSL.test_start_tls_client_corrupted_sslxs7������	�'�'�(>�(>�?�?�?��4�6�6��"�;�=�=�
�
	"�
	"�
	"�
	"�
	"�	�	�	�	�	�	�"�_�_�V�)*�%&��(�(�	A�+.��)�.�.�v�v�c�h�/?�/?�@�@�C�		A�	A�	A�	A�	A�	A�	A�	A�	A�	A�	A����	A�	A�	A�	A�	
����d�#�#�#�#�#s�()B�B!�$B!c�������d�jz�tj���tj������fd�}G�fd�dtj�������fd�}��|�j���5}�j�	t	j
||j��tj
�����ddd��dS#1swxYwYdS)N�1c�,��|��j��|�t�����}��t|��t�����|��d���|�d��|�t�����}��t|��t�����|���|���dS�NTr��O�	rcr�r�r%r�r�rR�unwraprE�rjr'�	HELLO_MSGrrDs  ���r�servez8TestSSL.test_start_tls_client_reg_proto_1.<locals>.serve�s�����O�O�D�L�)�)�)��=�=��Y���0�0�D����S��Y�Y��I���7�7�7��M�M�.�d�M�;�;�;��L�L������=�=��Y���0�0�D����S��Y�Y��I���7�7�7��K�K�M�M�M��J�J�L�L�L�L�Lr
c�,��eZdZd�Z�fd�Zd�Zd�ZdS)�>TestSSL.test_start_tls_client_reg_proto_1.<locals>.ClientProtoc�0�||_||_d|_dS�Nr��on_data�on_eof�con_made_cnt�rr�r�s   rrzGTestSSL.test_start_tls_client_reg_proto_1.<locals>.ClientProto.__init__����&���$���$%��!�!�!r
c�^��|xjdz
c_��|jd��dS�NrO�r�r��rCrors  �rr#zNTestSSL.test_start_tls_client_reg_proto_1.<locals>.ClientProto.connection_made��6����"�"�a�'�"�"�� � ��!3�Q�7�7�7�7�7r
c�:�|j�|��dSr	�r�r!r&s  rr(zLTestSSL.test_start_tls_client_reg_proto_1.<locals>.ClientProto.data_received������'�'��-�-�-�-�-r
c�:�|j�d��dSr8�r�r!r+s rr,zKTestSSL.test_start_tls_client_reg_proto_1.<locals>.ClientProto.eof_received������&�&�t�,�,�,�,�,r
N�r2r3r4rr#r(r,r+s�rr=r���[�������
&�
&�
&�

8�
8�
8�
8�
8�

.�
.�
.�
-�
-�
-�
-�
-r
r=c������K�tjd���d{V���	j�����	j�����	jj���fd�g|�R��d{V��\}}|�����	j�||����d{V��}�	���d{V��d��|������d{V��|���dS)Nr)c��������Sr	r�r=r�r�s���rr
zKTestSSL.test_start_tls_client_reg_proto_1.<locals>.client.<locals>.<lambda>�������G�V�4�4�r
r�)	r
rir�
create_futurer*r��	start_tlsr�rE)
rRrorC�new_trr�r�r=r�rErs
    @@����rr�z9TestSSL.test_start_tls_client_reg_proto_1.<locals>.client�s=��������-��$�$�$�$�$�$�$�$�$��i�-�-�/�/�G��Y�,�,�.�.�F�9�d�i�9�4�4�4�4�4�4�=�7;�=�=�=�=�=�=�=�=�=�I�B��
�H�H�Y�����9�.�.�r�5�.�I�I�I�I�I�I�I�I�F����7�]�]�]�]�]�]�D�1�1�1��L�L��#�#�#��L�L�L�L�L�L�L��L�L�N�N�N�N�Nr
�rS)�PAYLOAD_SIZErJr{r,r
r+rlr�rr�r�rRrr��rr�r�r�r=r�rErDs`   @@@@r�!test_start_tls_client_reg_proto_1z)TestSSL.test_start_tls_client_reg_proto_1�s���������4�,�,�	�#�<�>�>��#�<�>�>��
	�
	�
	�
	�
	�
	�
	�	-�	-�	-�	-�	-�	-�	-�'�*�	-�	-�	-�"	�	�	�	�	�	�	�	�$�_�_�U�D�L�_�
9�
9�	A�S��I�(�(�� �����!1�!1�)0�)>�@�@�@�
A�
A�
A�	A�	A�	A�	A�	A�	A�	A�	A�	A�	A�	A�	A����	A�	A�	A�	A�	A�	As�;AC�C�Cc�H������d�jz���tjtj�����������fd�}G�fd�dtj�������fd�}��|�j	���5}�j
�t
j||j
��tj�����ddd��n#1swxYwYt!j�����������dS)Nrc���|��j��|��d���|�d��|�t�����}��t|��t�����|���|���dSr�)	rcr�r�rRr�r%r�r�rEr�s  ���rr�z9TestSSL.test_create_connection_memory_leak.<locals>.serve�s�����O�O�D�L�)�)�)��M�M�.�d�M�;�;�;��L�L������=�=��Y���0�0�D����S��Y�Y��I���7�7�7��K�K�M�M�M��J�J�L�L�L�L�Lr
c�,��eZdZd�Z�fd�Zd�Zd�ZdS)�?TestSSL.test_create_connection_memory_leak.<locals>.ClientProtoc�0�||_||_d|_dSr�r�r�s   rrzHTestSSL.test_create_connection_memory_leak.<locals>.ClientProto.__init__�r�r
c�l��||_|xjdz
c_��|jd��dSr�)ror�r�r�s  �rr#zOTestSSL.test_create_connection_memory_leak.<locals>.ClientProto.connection_made�s=�������"�"�a�'�"�"�� � ��!3�Q�7�7�7�7�7r
c�:�|j�|��dSr	r�r&s  rr(zMTestSSL.test_create_connection_memory_leak.<locals>.ClientProto.data_receivedr�r
c�:�|j�d��dSr8r�r+s rr,zLTestSSL.test_create_connection_memory_leak.<locals>.ClientProto.eof_receivedr�r
Nr�r+s�rr=r��s[�������
&�
&�
&�

8�
8�
8�
8�
8�
.�
.�
.�
-�
-�
-�
-�
-r
r=c�����K�tjd���d{V���j�����j�����jj���fd�g|�Rd�i��d{V��\}}����d{V��d��|������d{V��|���dS)Nr)c��������Sr	rr�s���rr
zLTestSSL.test_create_connection_memory_leak.<locals>.client.<locals>.<lambda>r�r
r{r�)r
rirr�r*r�r�rE)	rRrorCr�r�r=r�rErs	   @@����rr�z:TestSSL.test_create_connection_memory_leak.<locals>.client	s
��������-��$�$�$�$�$�$�$�$�$��i�-�-�/�/�G��Y�,�,�.�.�F�9�d�i�9�4�4�4�4�4�4�$�7;�$�$�$�"�$�$�$�$�$�$�$�$�I�B��
���7�]�]�]�]�]�]�D�1�1�1��H�H�Y�����L�L�L�L�L�L�L��H�H�J�J�J�J�Jr
r�)r�r�rJr�r�r�r
r+rlr�rr�r�rRrr��weakref�ref�assertIsNoner�s`   @@@@r�"test_create_connection_memory_leakz*TestSSL.test_create_connection_memory_leak�s���������4�,�,�	��8�8����!3�5�5���8�8�:�:��
	�
	�
	�
	�
	�
	�
	�	-�	-�	-�	-�	-�	-�	-�'�*�	-�	-�	-�&	�	�	�	�	�	�	�	� �_�_�U�D�L�_�
9�
9�	A�S��I�(�(�� �����!1�!1�)0�)>�@�@�@�
A�
A�
A�	A�	A�	A�	A�	A�	A�	A�	A�	A�	A�	A����	A�	A�	A�	A�!��^�4�4�����.�.�*�*�+�+�+�+�+s�AC&�&C*�-C*c���������	�d�jz�tj���	tj���d����	fd�}G�fd�dtj���G�fd�dtj���������fd�}��|�j�	��5}�j	�
t	j||j���j�	����ddd��dS#1swxYwYdS)
Nrrc���|��j��|�t�����}��t|��t�����|��d���|�d��|�t�����}��t|��t�����|�d��|�t�����}��t|��t�����|���|���dS)NTr�r��2r�r�s  ���rr�z8TestSSL.test_start_tls_client_buf_proto_1.<locals>.serve+s����O�O�D�L�)�)�)��=�=��Y���0�0�D����S��Y�Y��I���7�7�7��M�M�.�d�M�;�;�;��L�L������=�=��Y���0�0�D����S��Y�Y��I���7�7�7��L�L������=�=��Y���0�0�D����S��Y�Y��I���7�7�7��K�K�M�M�M��J�J�L�L�L�L�Lr
c�2��eZdZd�Z�fd�Zd�Zd�Zd�ZdS)�CTestSSL.test_start_tls_client_buf_proto_1.<locals>.ClientProtoFirstc�<�||_td��|_dSr�)r�r��buf)rr�s  rrzLTestSSL.test_start_tls_client_buf_proto_1.<locals>.ClientProtoFirst.__init__?s��&���$�Q�<�<����r
c����dz
�dSr�r�rro�client_con_made_callss  �rr#zSTestSSL.test_start_tls_client_buf_proto_1.<locals>.ClientProtoFirst.connection_madeC����%��*�%�%�%r
c��|jSr	)r�)r�sizehints  r�
get_bufferzNTestSSL.test_start_tls_client_buf_proto_1.<locals>.ClientProtoFirst.get_bufferGs	���x�r
c�n�|j�t|jd|�����dSr	)r�r!�bytesr�)r�nsizes  r�buffer_updatedzRTestSSL.test_start_tls_client_buf_proto_1.<locals>.ClientProtoFirst.buffer_updatedJs1����'�'��d�h�v��v�.>�(?�(?�@�@�@�@�@r
c��dSr	rr+s rr,zPTestSSL.test_start_tls_client_buf_proto_1.<locals>.ClientProtoFirst.eof_receivedNs���r
N)r2r3r4rr#r�r�r,�r�s�r�ClientProtoFirstr�>sm�������
(�
(�
(�
+�
+�
+�
+�
+�
 �
 �
 �
A�
A�
A�
�
�
�
�
r
r�c�,��eZdZd�Z�fd�Zd�Zd�ZdS)�DTestSSL.test_start_tls_client_buf_proto_1.<locals>.ClientProtoSecondc�0�||_||_d|_dSr�r�r�s   rrzMTestSSL.test_start_tls_client_buf_proto_1.<locals>.ClientProtoSecond.__init__Rr�r
c����dz
�dSr�rr�s  �rr#zTTestSSL.test_start_tls_client_buf_proto_1.<locals>.ClientProtoSecond.connection_madeWr�r
c�:�|j�|��dSr	r�r&s  rr(zRTestSSL.test_start_tls_client_buf_proto_1.<locals>.ClientProtoSecond.data_received[r�r
c�:�|j�d��dSr8r�r+s rr,zQTestSSL.test_start_tls_client_buf_proto_1.<locals>.ClientProtoSecond.eof_received^r�r
Nr�r�s�r�ClientProtoSecondr�Qs[�������
&�
&�
&�

+�
+�
+�
+�
+�
.�
.�
.�
-�
-�
-�
-�
-r
r�c�����K�tjd���d{V���j�����j���}�j���}�jj��fd�g|�R��d{V��\}}|��	���j�||����d{V��}����d{V��d��|��	��|��||������|�d{V��d��|��	��|�d{V��|�	�����
d��dS)Nr)c�������Sr	r)r��on_data1s��rr
zKTestSSL.test_start_tls_client_buf_proto_1.<locals>.client.<locals>.<lambda>is���(�(��2�2�r
r�r�rO)
r
rirr�r*r�r�r��set_protocolrE)
rR�on_data2r�rorCr�r�r�r�r�r�rErs
      @������rr�z9TestSSL.test_start_tls_client_buf_proto_1.<locals>.clientas��������-��$�$�$�$�$�$�$�$�$��y�.�.�0�0�H��y�.�.�0�0�H��Y�,�,�.�.�F�9�d�i�9�2�2�2�2�2�;�59�;�;�;�;�;�;�;�;�;�I�B��
�H�H�Y�����9�.�.�r�5�.�I�I�I�I�I�I�I�I�F����8�^�^�^�^�^�^�T�2�2�2��L�L��#�#�#���� 1� 1�(�F� C� C�D�D�D����8�^�^�^�^�^�^�T�2�2�2��L�L��#�#�#��L�L�L�L�L�L�L��L�L�N�N�N�

���2�A�6�6�6�6�6r
r�)
r�rJr{r,r
�BufferedProtocolr+rlr�rr�r�rR)
rr�r�r�r�r�r�r�rErDs
`   @@@@@@r�!test_start_tls_client_buf_proto_1z)TestSSL.test_start_tls_client_buf_proto_1#s�����������4�,�,�	�#�<�>�>��#�<�>�>�� !��	�	�	�	�	�	�	�&	�	�	�	�	�	�	�w�7�	�	�	�&	-�	-�	-�	-�	-�	-�	-�� 0�	-�	-�	-� 	7�	7�	7�	7�	7�	7�	7�	7�	7�	7�8�_�_�U�D�L�_�
9�
9�	8�S��I�(�(�� �����!1�!1�)-��7�7�7�
8�
8�
8�	8�	8�	8�	8�	8�	8�	8�	8�	8�	8�	8�	8����	8�	8�	8�	8�	8�	8s�AC*�*C.�1C.c��������d�jz�tj����j�������fd�}G�fd�dt
j��������fd�}��|�j���5}�j�	tj
||j��tj
�����ddd��dS#1swxYwYdS)Nrc����|��j��|�t�����}��t|��t�����	�j��jd��|�d��}n#t$rYnwxYw|�	��dS#|�	��wxYwr)
rcr�r�r%r�rr�r!rrE)rjr'r�r�server_waits_on_handshakes  ���rr�z8TestSSL.test_start_tls_slow_client_cancel.<locals>.serve�s�����O�O�D�L�)�)�)��=�=��Y���0�0�D����S��Y�Y��I���7�7�7�
��	�.�.�-�8�$�@�@�@��}�}�[�1�1����)�
�
�
���
�����
�
��������
�
�������s*�/5B%�$C�%
B2�/C�1B2�2C�C!c�,��eZdZd�Z�fd�Zd�Zd�ZdS)�>TestSSL.test_start_tls_slow_client_cancel.<locals>.ClientProtoc�0�||_||_d|_dSr�r�r�s   rrzGTestSSL.test_start_tls_slow_client_cancel.<locals>.ClientProto.__init__�r�r
c�^��|xjdz
c_��|jd��dSr�r�r�s  �rr#zNTestSSL.test_start_tls_slow_client_cancel.<locals>.ClientProto.connection_made�r�r
c�:�|j�|��dSr	r�r&s  rr(zLTestSSL.test_start_tls_slow_client_cancel.<locals>.ClientProto.data_received�r�r
c�:�|j�d��dSr8r�r+s rr,zKTestSSL.test_start_tls_slow_client_cancel.<locals>.ClientProto.eof_received�r�r
Nr�r+s�rr=r��r�r
r=c�����K�tjd���d{V���j�����j�����jj���fd�g|�R��d{V��\}}|�����	�d{V����tj��5tj�j�	||���d���d{V��ddd��dS#1swxYwYdS)Nr)c��������Sr	rr�s���rr
zKTestSSL.test_start_tls_slow_client_cancel.<locals>.client.<locals>.<lambda>�r�r
)
r
rirr�r*r�rr-r�r�)
rRrorCr�r�r=r�rErr�s
   @@�����rr�z9TestSSL.test_start_tls_slow_client_cancel.<locals>.client�s���������-��$�$�$�$�$�$�$�$�$��i�-�-�/�/�G��Y�,�,�.�.�F�9�d�i�9�4�4�4�4�4�4�=�7;�=�=�=�=�=�=�=�=�=�I�B��
�H�H�Y����+�+�+�+�+�+�+�+��"�"�7�#7�8�8�
�
��&��I�'�'��E�>�B�B�����������
�
�
�
�
�
�
�
�
�
�
�
����
�
�
�
�
�
s�/6C2�2C6�9C6r�)r�rJr,rr�r
r+rlr�r�r�rRrr�)rr�r�r�r=r�rEr�s`   @@@@r�!test_start_tls_slow_client_cancelz)TestSSL.test_start_tls_slow_client_cancel�s���������4�,�,�	�#�<�>�>��$(�I�$;�$;�$=�$=�!�
	�
	�
	�
	�
	�
	�
	�	-�	-�	-�	-�	-�	-�	-�'�*�	-�	-�	-�"	�	�	�	�	�	�	�	�	�$�_�_�U�D�L�_�
9�
9�	A�S��I�(�(�� �����!1�!1�)0�)>�@�@�@�
A�
A�
A�	A�	A�	A�	A�	A�	A�	A�	A�	A�	A�	A�	A����	A�	A�	A�	A�	A�	As�AC�C�Cc���������d�jz�tj���tj������fd��Gd�dtj������fd������fd�}�j�|����dS)Nrc���|��j��|�|��|�t	�����}��t	|��t	�����|����|����|���|�	��dSr	)
rcr�r�r�r%r�r�rRr�rE)rjrRr'r�rErs   ���rr�z/TestSSL.test_start_tls_server_1.<locals>.client�s�����O�O�D�L�)�)�)��L�L������=�=��Y���0�0�D����S��Y�Y��I���7�7�7��M�M�.�)�)�)��L�L��#�#�#��K�K�M�M�M��J�J�L�L�L�L�Lr
c�,�eZdZd�Zd�Zd�Zd�Zd�ZdS)�4TestSSL.test_start_tls_server_1.<locals>.ServerProtoc�>�||_||_||_d|_dS�Nr
)�on_conr��on_con_lostr')rr�r�r�s    rrz=TestSSL.test_start_tls_server_1.<locals>.ServerProto.__init__�s#��$���$���#.�� ���	�	�	r
c�:�|j�|��dSr	)r�r!)rros  rr#zDTestSSL.test_start_tls_server_1.<locals>.ServerProto.connection_made�s����&�&�r�*�*�*�*�*r
c�&�|xj|z
c_dSr	)r'r&s  rr(zBTestSSL.test_start_tls_server_1.<locals>.ServerProto.data_received�s���	�	�T�!�	�	�	�	r
c�:�|j�d��dSr�r�r+s rr,zATestSSL.test_start_tls_server_1.<locals>.ServerProto.eof_received�s����&�&�q�)�)�)�)�)r
c�v�|�|j�d��dS|j�|��dSr	)r�r!r�r/s  rr1zDTestSSL.test_start_tls_server_1.<locals>.ServerProto.connection_lost�sD���8��$�/�/��5�5�5�5�5��$�2�2�3�7�7�7�7�7r
N)r2r3r4rr#r(r,r1rr
r�ServerProtor��s_������
 �
 �
 �
+�
+�
+�
"�
"�
"�
*�
*�
*�
8�
8�
8�
8�
8r
r�c��N�K�|�d{V��}|������|jd���j�||�d�j����d{V��}|�d{V��|�d{V����|j���|���dS)Nr
T)r�r�)r�r�r'rr�r�rE)	rCr�r�r�ror�r�rrDs	      ���r�mainz-TestSSL.test_start_tls_server_1.<locals>.main�s�������������B��H�H�Y�������U�Z��-�-�-��9�.�.��E�>� �&*�l�/�4�4�4�4�4�4�4�4�F�
�L�L�L�L�L�L�L������������U�Z��3�3�3��L�L�N�N�N�N�Nr
c	��n���K��	j���}�	j���}�	j���}�|||����	j��fd�dd���d{V��}|jd�����	���fd��	j���5tj��|||���	j����d{V��ddd��n#1swxYwY|�	��|�
���d{V��dS)Nc����Sr	rr[s�rr
zCTestSSL.test_start_tls_server_1.<locals>.run_main.<locals>.<lambda>�s����r
rYrc����|���Sr	r)rjrRr�s ��rr
zCTestSSL.test_start_tls_server_1.<locals>.run_main.<locals>.<lambda>s���f�f�T�4�.@�.@�r
r�)rr��
create_serverr�r�rpr�r
r�rEr�)
r�r�r�r�rRrCr�r�r�rs
    @@����r�run_mainz1TestSSL.test_start_tls_server_1.<locals>.run_main�s���������Y�,�,�.�.�F��Y�,�,�.�.�F��)�1�1�3�3�K��K����<�<�E��9�2�2��
�
�
�{�A�/�/�/�/�/�/�/�/�F��>�!�$�0�0�2�2�D����!@�!@�!@�!@�!@�)-��!�7�7�
*�
*��&��D�����<�<� �L�*�*�*�*�*�*�*�*�*�*�
*�
*�
*�
*�
*�
*�
*�
*�
*�
*�
*����
*�
*�
*�
*�
�L�L�N�N�N��$�$�&�&�&�&�&�&�&�&�&�&�&s�.C<�<D�D)r�rJr{r,r
r+rr�)rr�r�r�r�rEr�rDs` @@@@@@r�test_start_tls_server_1zTestSSL.test_start_tls_server_1�s�����������4�,�,�	�#�<�>�>��#�<�>�>��	�	�	�	�	�	�	�	8�	8�	8�	8�	8�'�*�	8�	8�	8�,	�	�	�	�	�	�	� 	'�	'�	'�	'�	'�	'�	'�	'�&	
�	�$�$�X�X�Z�Z�0�0�0�0�0r
c����������	�
���
����d�d�tj�dtz�dtz���tjtj��������	��tjtj��������
g�����fd��G�fd�dtj	�����fd��
���	�
��fd	������
��fd
�}��
��5�j�|����ddd��n#1swxYwY��
�����D]}|����dS)Nrr�r�r�c���K�|�t������d{V��}��|���|�d��|�t������d{V��}��|���|�dtd��t
d��g��|����d{V��|����dz
�dSr�r�r�s   ����rr�z>TestSSL.test_create_server_ssl_over_ssl.<locals>.handle_clientr�r
c�"���eZdZ��fd�Z�xZS)�?TestSSL.test_create_server_ssl_over_ssl.<locals>.ServerProtocolc������t���|���|j�|j�||�d��������fd�}��|��dS)NTr�c���	����}��|��dS#t$r }��|��Yd}~dSd}~wwxYwr	)rgr#r�r1)r�rorkr��super_s   ��r�cbz[TestSSL.test_create_server_ssl_over_ssl.<locals>.ServerProtocol.connection_made.<locals>.cb5sx���3� �Z�Z�\�\���.�.�r�2�2�2�2�2��%�3�3�3��.�.�r�2�2�2�2�2�2�2�2�2�����3���s�.�
A�A�A)r@�
pause_reading�_looprar��add_done_callback)rrrr�rrG�sslctx_2s   @@��rr#zOTestSSL.test_create_server_ssl_over_ssl.<locals>.ServerProtocol.connection_made/s�����������'�'�)�)�)��j�,�,�T�Z�-A�-A��t�X�4�.B�.A�.A�B�B��3�3�3�3�3�3��%�%�b�)�)�)�)�)r
)r2r3r4r#rM)rGrs@�r�ServerProtocolr�.s>��������

*�

*�

*�

*�

*�

*�

*�

*�

*�

*r
rc�F��tj��}�|���}|Sr	)r
�StreamReader)r��protocolrr�s  ��r�server_protocol_factoryzHTestSSL.test_create_server_ssl_over_ssl.<locals>.server_protocol_factory>s'����)�+�+�F�%�~�f�m�<�<�H��Or
c������K�tj����������	fd�}�	�|��}|�����|����d{V��dS)Nc�"�����	���
�������tj���tj���������}���fd�}||j��||j���||jd��}��|d��||j�	��d}	||jd��}|sn||z
}���|d��||j	����
���j��
j
d��dS#t$r?}�j��
j|����
��Yd}~dSd}~wwxYw)Nc�L��		||�}nl#tj$rY�jr'������������d����YnwxYw�s�jr'��������|S)NTi)r{�SSLWantReadError�pendingr��readr�r4)�funcrt�rv�incoming�outgoingrjs   ���r�dozVTestSSL.test_create_server_ssl_over_ssl.<locals>.test_client.<locals>.prog.<locals>.doQs����A�A�%)�T�4�[�� %��#&�#7�A�A�A�#+�#3�!?�$(�I�I�h�m�m�o�o�$>�$>�$>� (���t�y�y��/?�/?� @� @� @� @� @�A����	A�$�+�7� �I�I�h�m�m�o�o�6�6�6�!�	s�
�A%A2�1A2r�r�r
Tr�r�)r�r�r{�	MemoryBIO�wrap_bio�do_handshaker�rr�r�rErr�r!r�r�)rj�sslobjrr'�chunkrkrrr�r�rR�client_sslctx_1�client_sslctx_2r�rs`     @@�������rr�zJTestSSL.test_create_server_ssl_over_ssl.<locals>.test_client.<locals>.progFs�������-I��L�L��&�&�&��M�M�/�2�2�2� #�}���H�"�}���H�,�5�5�h��I�I�F�"�"�"�"�"�"�"��B�v�*�+�+�+��B�v�|�V�,�,�,��2�f�k�1�-�-�D��$�$�T�5�1�1�1��B�v�|�V�,�,�,��D�&� "��6�;�� 2� 2��$�"�!���
��	&�
�$�$�T�7�3�3�3��B�v�}�%�%�%��J�J�L�L�L��I�2�2�3�>�4�H�H�H�H�H��	!�!�!�!��I�2�2�3�3D�b�I�I�I��J�J�L�L�L�L�L�L�L�L�L�����!���s�DE�
F�4F	�	Fr�)
rRr�r�r�r�r�rrr�rs
`  @������rr�z<TestSSL.test_create_server_ssl_over_ssl.<locals>.test_clientCs���������.�"�"�C�.
I�.
I�.
I�.
I�.
I�.
I�.
I�.
I�.
I�.
I�.
I�`�_�_�T�*�*�F��L�L�N�N�N��N�N�6�"�"�"��I�I�I�I�I�I�I�I�Ir
c��n�K�i}�jj�	ddftj�
d�|���d{V��}	|j}��|��|d���}g}t���D] }|��|�����!tj
tj|�����d{V���j�|j
��|����d{V��dS#�j�|j
��|����d{V��wxYw)NrYrr�)rr�r]r�r�r�r�r�r�r
r�r�r�rEr�)r�r�r�rRr�r�r�r�rr�sslctx_1r�s      ������rr�z=TestSSL.test_create_server_ssl_over_ssl.<locals>.start_server|s�������F�/��	�/�'��Q���~��	��
���������C�
(��K�	����	�*�*�*� ��|�/�/�1�1�����y�)�)�4�4�A��L�L���T�!2�!2�3�3�3�3��&�w�~�u�'=�w�G�G�G�G�G�G�G�G�G��	�#�#�C�I�.�.�.��o�o�'�'�'�'�'�'�'�'�'�'�'���	�#�#�C�I�.�.�.��o�o�'�'�'�'�'�'�'�'�'�'���s�BC9�9;D4)rr�r�r�rJr�r�r�r
�StreamReaderProtocolr�rr�r�r�)rr�r�r�r�r�rr�r�rrr�r�rr rr�s`  @@@@@@@@@@@@@@r�test_create_server_ssl_over_sslz'TestSSL.test_create_server_ssl_over_ssl
sE��������������������	��&���~�-���~�-���2�2����!3�5�5���9�9�;�;���2�2����!3�5�5���9�9�;�;����	�	�	�	�	�	�	�	� 	*�	*�	*�	*�	*�	*�	*�W�9�	*�	*�	*� 	�	�	�	�	�	�
7	�7	�7	�7	�7	�7	�7	�7	�7	�7	�r	(�	(�	(�	(�	(�	(�	(�	(�	(�	(�4�
/�
/�
1�
1�	9�	9��I�(�(�����8�8�8�	9�	9�	9�	9�	9�	9�	9�	9�	9�	9�	9����	9�	9�	9�	9�	
����i�(�(�(��	�	�F��K�K�M�M�M�M�	�	s�#D1�1D5�8D5c�J��������d�d�dtz���tjtj�����������fd������fd�}����fd�}����5||��ddd��dS#1swxYwYdS)Nrr�r�c� ��|��d���|�t�����}��|���|�d��|���|���dS)NTr�r�)r�r�r%r�r�r�rE)rjr'r�rr�s  ���rr�z-TestSSL.test_shutdown_cleanly.<locals>.server�s�����M�M�� �
�
"�
"�
"��=�=��V���-�-�D����T�6�*�*�*��I�I�e�����K�K�M�M�M��J�J�L�L�L�L�Lr
c����K�i}ttj���}tj|�dd�|���d{V��\}}|������|�d���d{V��d����|����d{V��d���dz
�|�	����
|���d{V��dS)Nr�r�r�r�r�r
rO)r�rr�r
r�r�r�r�rrEr�)rRr�r�r�r�r�r�rs    ����rr�z-TestSSL.test_shutdown_cleanly.<locals>.client�s)������F���0E�F�F�F�F�#*�#:��!� "�$�$��	$�$�������N�F�F�
�L�L�� � � ����6�#5�#5�a�#8�#8�8�8�8�8�8�8�%�@�@�@����6�;�;�=�=�0�0�0�0�0�0�#�6�6�6�
�1�H�C��L�L�N�N�N��"�"�6�*�*�*�*�*�*�*�*�*�*�*r
c�F��d�d�}��������5}g}t���D]%}|�||j�����&�j�||���ddd��n#1swxYwY������dS)Nrc��.K�tj|��d{V��Sr	r�rs rrz;TestSSL.test_shutdown_cleanly.<locals>.run.<locals>._gather�s%����$�^�U�3�3�3�3�3�3�3�3r
rrrs	     ����rrz*TestSSL.test_shutdown_cleanly.<locals>.run�s	����C�
4�
4�
4�����-6�)2�!�4�4�
%�7:����y�)�)�1�1�A��L�L���c�h���0�0�0�0��	�,�,��G�U�O�%�%�%�
%�
%�
%�
%�
%�
%�
%�
%�
%�
%�
%����
%�
%�
%�
%�
���S�)�,�,�,�,�,r)r�r�rJr�r�r�r�)	rr�rr�r�r�r�r�r�s	`  @@@@@@r�test_shutdown_cleanlyzTestSSL.test_shutdown_cleanly�sF������������	��~�-���0�0����!3�5�5���7�7�9�9�
�	�	�	�	�	�	�	�	+�	+�	+�	+�	+�	+�	+�	+�*	-�	-�	-�	-�	-�	-�	-�	-�&�
/�
/�
1�
1�	�	��C��K�K�K�	�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	�	s�?B�B�Bc�������	�d�d���tjtj���	�����d�����	fd�}��fd�}�����fd�}��||����5}�j�||j����ddd��dS#1swxYwYdS)N�� c�~��|��d�����|�d��d��|�d��t	jd��|���z��}��t
|����z��|���dS)NTr�r��ping�pongr))r�r�r�r��timerir%rE�rjr'�CHUNK�SIZErr�s  ����rr�z2TestSSL.test_flush_before_shutdown.<locals>.server�s�����M�M�&�d�M�3�3�3����T�]�]�1�-�-�w�7�7�7��I�I�g�����J�s�O�O�O��=�=����.�.�D����S��Y�Y����5�5�5��J�J�L�L�L�L�Lr
c�������fd�}|S)Nc����	�|���j��jd��dS#t$r+}�j��j|��Yd}~dSd}~wwxYwr	�rr�r!r�r��rjrk�future�methrs  ���r�wrapperz@TestSSL.test_flush_before_shutdown.<locals>.run.<locals>.wrapper�����L��D��J�J�J��I�2�2�6�3D�d�K�K�K�K�K��!�M�M�M��I�2�2�6�3G��L�L�L�L�L�L�L�L�L�����M�����0�
A%� A � A%r�r8r9r7rs` ��rrz/TestSSL.test_flush_before_shutdown.<locals>.run��5����
L�
L�
L�
L�
L�
L�
L��Nr
c���K��
j����	tj|�dd���d{V��\}}|jj}|�d��|�d���d{V��}�
�|d��|�	��t���D]}|�d�z���|���|����
�
|���d{V��	|����d{V��}�
�|d��n#t$rYnwxYw�	�d{V��dS�Nr�r�r-r�r.�xr
)rr�r
r�r�
_ssl_protocolr�r�r��
pause_writingr�rE�resume_writingr�rr?)rRr�r��sslprotocolr'r�r1r2r�r7rs      �����rr�z2TestSSL.test_flush_before_shutdown.<locals>.client�s�������Y�,�,�.�.�F�#*�#:��!� "�$$�$$�$$�$�$�$�$�$�$�N�F�F�!�*�8�K��L�L��!�!�!��+�+�A�.�.�.�.�.�.�.�.�D����T�7�+�+�+��%�%�'�'�'��4�[�[�
+�
+�����T�E�\�*�*�*�*��L�L�N�N�N��&�&�(�(�(��"�"�6�*�*�*�*�*�*�*�*�*�
�#�[�[�]�]�*�*�*�*�*�*��� � ��s�+�+�+�+��'�
�
�
���
�����L�L�L�L�L�L�L�L�Ls�0D=�=
E
�	E
�	r�rJr�r�r�rlrr�rR)
rr�rr�r�r1r2r�r7r�s
`    @@@@@r�test_flush_before_shutdownz"TestSSL.test_flush_before_shutdown�sZ�������������0�0����!3�5�5���7�7�9�9�
���	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�6�_�_�S�S��[�[�
)�
)�	;�S��I�(�(�����)9�)9�:�:�:�	;�	;�	;�	;�	;�	;�	;�	;�	;�	;�	;�	;����	;�	;�	;�	;�	;�	;s�)B6�6B:�=B:c�R�����	�
�d�d���tjtj���
�����d�	����
fd�}����
fd�}����	�fd�}�	�fd�}��||����5}�j�||j����ddd��n#1swxYwY��||����5}�j�||j����ddd��dS#1swxYwYdS)Nr*r+c���tj��}tj��}�
�||d���}		|���|jr'|�|�����nl#tj$rY|jr'|�|�����|�|�	d����YnwxYw��		|�d��}n>#tj$r+|�|�	d����YnwxYw�U�	�
|d��|�d��|�|�����tjd���	�
tj��5|���ddd��n#1swxYwY|�|�����d}		t|�d����}||z
}nM#tj$r+|�|�	d����Yntj$rYnwxYw�w�	�
|��z��|���|���dS)	NTr�i@r�r-r.皙�����?r)r{rrrrr�rrr�r4r�r/rirr�r%�SSLZeroReturnErrorrE)rjrrrr'�data_lenrr1r2rr�s       ����rr�zCTestSSL.test_remote_shutdown_receives_trailing_data.<locals>.server&s����}���H��}���H��_�_�X�x�T�_�J�J�F�

�	��'�'�)�)�)� �'�3��	�	�(�-�-�/�/�2�2�2����+�5�5�5��'�3��	�	�(�-�-�/�/�2�2�2��N�N�4�9�9�U�#3�#3�4�4�4�4�4�5����

�
��!�;�;�q�>�>�D����+�5�5�5��N�N�4�9�9�U�#3�#3�4�4�4�4�4�5����
�
���T�7�+�+�+��L�L��!�!�!��I�I�h�m�m�o�o�&�&�&��J�s�O�O�O��"�"�3�#7�8�8�
 �
 ��
�
����
 �
 �
 �
 �
 �
 �
 �
 �
 �
 �
 ����
 �
 �
 �
 ��I�I�h�m�m�o�o�&�&�&��H�
������E� 2� 2�3�3�E���%�H�H���+�5�5�5��N�N�4�9�9�U�#3�#3�4�4�4�4�4��-�����E�����

�
���X�u�t�|�4�4�4�
�M�M�O�O�O��J�J�L�L�L�L�LsO�B�A%C-�,C-�3D	�	7E�E�G-�-G1�4G1�#'I�7J�J�Jc���|��d�����|�d��d��|�d��t	jd��|�tj��|���z��}��t|����z��|�
��dS)NTr�r�r-r.rI)r�r�r�r�r/ri�shutdownr]�SHUT_WRr%rEr0s  ����r�
eof_serverzGTestSSL.test_remote_shutdown_receives_trailing_data.<locals>.eof_server\s�����M�M�&�d�M�3�3�3����T�]�]�1�-�-�w�7�7�7��I�I�g�����J�s�O�O�O�
�M�M�&�.�)�)�)��=�=����.�.�D����S��Y�Y����5�5�5��J�J�L�L�L�L�Lr
c��^�K��	j����tj|�dd���d{V��\}}|�d��|�d���d{V��}�	�|d��t���D]}|j�	d�z��� 	|�
���d{V��}�	�|d��n#ttf$rYnwxYw��d{V��|�
���	�|���d{V��dSr?)rr�r
r�r�r�r�r�r�_test__append_write_backlogrr�r?rEr�)
rRr�r�r'r�r1r2r�r7rs
     �����rr�zCTestSSL.test_remote_shutdown_receives_trailing_data.<locals>.clientls�������Y�,�,�.�.�F�#*�#:��!� "�$$�$$�$$�$�$�$�$�$�$�N�F�F�
�L�L��!�!�!��+�+�A�.�.�.�.�.�.�.�.�D����T�7�+�+�+��4�[�[�
K�
K��� �<�<�T�E�\�J�J�J�J�
�#�[�[�]�]�*�*�*�*�*�*��� � ��s�+�+�+�+��#�%9�:�
�
�
���
�����L�L�L�L�L�L�L��L�L�N�N�N��"�"�6�*�*�*�*�*�*�*�*�*�*�*s�.0C�C3�2C3c�������fd�}|S)Nc����	�|���j��jd��dS#t$r+}�j��j|��Yd}~dSd}~wwxYwr	r5r6s  ���rr9zQTestSSL.test_remote_shutdown_receives_trailing_data.<locals>.run.<locals>.wrapper�r:r;rr<s` ��rrz@TestSSL.test_remote_shutdown_receives_trailing_data.<locals>.run�r=r
rE)rr�rOr�rr�r1r2r�r7r�s`     @@@@@r�+test_remote_shutdown_receives_trailing_dataz3TestSSL.test_remote_shutdown_receives_trailing_datas�������������0�0�����
�
���7�7�9�9�
���4	�4	�4	�4	�4	�4	�4	�4	�l	�	�	�	�	�	�	�	� 	+�	+�	+�	+�	+�	+�	+�	+�	+�6	�	�	�	�	�	��_�_�S�S��[�[�
)�
)�	;�S��I�(�(�����)9�)9�:�:�:�	;�	;�	;�	;�	;�	;�	;�	;�	;�	;�	;����	;�	;�	;�	;��_�_�S�S��_�_�
-�
-�	;���I�(�(�����)9�)9�:�:�:�	;�	;�	;�	;�	;�	;�	;�	;�	;�	;�	;�	;����	;�	;�	;�	;�	;�	;s$�)B=�=C�C�&)D�D �#D c�����tjtj��}|�d��|������fd�}|5	��t
��5}�j�|����tj	��tj	��tj	��ddd��n#1swxYwY��
d�|j����n:#t$r-}��t|��d��Yd}~nd}~wwxYwddd��dS#1swxYwYdS)NrXc����K�	tj�jjtjg��Rddi�d���d{V����d��dS#ttjf$rYdSwxYw)Nr{Tr]�TimeoutError is not raised�r
r�rr*r+r��ConnectionRefusedErrorr-)rRrs��r�testz2TestSSL.test_connect_timeout_warning.<locals>.test�s������
8��&�/�D�I�/��0@�A�15�A�A�A�;?�A�A������������	�	�6�7�7�7�7�7��+�G�,@�A�
�
�
����
�����9A�A/�.A/zUnexpected ResourceWarning: {}zResourceWarning not triggered)r]r�rdr��assertWarns�ResourceWarningrr��gc�collectr��format�warning�AssertionErrorr��str)r�srZ�cm�erRs`    @r�test_connect_timeout_warningz$TestSSL.test_connect_timeout_warning�s������M�&�.�)�)��	���� � � ��}�}����		8�		8�		8�		8�		8�		8��
	O�
	O�	
O��%�%�o�6�6�!�"��I�0�0�����8�8�8��J�L�L�L��J�L�L�L��J�L�L�L�	!�!�!�!�!�!�!�!�!�!�!����!�!�!�!��	�	�:�A�A�"�*�M�M�N�N�N�N��"�
J�
J�
J�� � ��Q���)H�I�I�I�I�I�I�I�I�����
J����
	O�
	O�
	O�
	O�
	O�
	O�
	O�
	O�
	O�
	O�
	O�
	O����
	O�
	O�
	O�
	O�
	O�
	Osa�E�D�.AC�
D�C	�D�C	�D�!.E�
E�#E�<E�E�E�E�Ec�����tjtj��}|�d��|�d��|������fd�}|5tj��}�j�||����tj
|��}ddd��n#1swxYwY��|����dS)NrXrOc����K�	tj�jjtjg��Rd|i�d���d{V����d��dS#ttjf$rYdSwxYw)Nr{r]rWrX)r$rRrs ��rrZz9TestSSL.test_handshake_timeout_handler_leak.<locals>.test�s������
8��&�/�D�I�/��0@�9�4�9�9�9�47�9�9������������	�	�6�7�7�7�7�7��+�G�,@�A�
�
�
����
���r[)r]r�rdrer�r{r�rr�r�r�r�)rrdrZr$rRs`   @r�#test_handshake_timeout_handler_leakz+TestSSL.test_handshake_timeout_handler_leak�s�����M�&�.�)�)��	���� � � �	��������}�}����		8�		8�		8�		8�		8�		8��	#�	#��,�.�.�C��I�(�(���c���3�3�3��+�c�"�"�C�	#�	#�	#�	#�	#�	#�	#�	#�	#�	#�	#����	#�	#�	#�	#�	
���#�#�%�%� � � � � s�'AB>�>C�Cc������j��fd�}G�fd�dtj�����fd�}��|��5}����}��||j|����tj|��}ddd��n#1swxYwYtj
��tj
��tj
����|����dS)Nc������tjtj��}|�|d���}|�d��|���dS)NTr�r+)r�rJr�r�rQr4rE)rjr�rs  �rr�z:TestSSL.test_shutdown_timeout_handler_leak.<locals>.server�s^����4�4��#��"���F��%�%�d��%�=�=�D��I�I�b�M�M�M��J�J�L�L�L�L�Lr
c� ��eZdZ�fd�Zd�ZdS)�<TestSSL.test_shutdown_timeout_handler_leak.<locals>.Protocolc�<��tj����|_dS�Nr)r
rr�rs �rrzETestSSL.test_shutdown_timeout_handler_leak.<locals>.Protocol.__init__�s���"�>�t�4�4�4����r
c�:�|j�d��dSr	)r�r!r/s  rr1zLTestSSL.test_shutdown_timeout_handler_leak.<locals>.Protocol.connection_lost�s����#�#�D�)�)�)�)�)r
N)r2r3r4rr1rs�rr+rn�s=�������
5�
5�
5�
5�
5�
*�
*�
*�
*�
*r
r+c���K��j�g|�Rd|i��d{V��\}}|���|j�d{V��dS�Nr{)r*rEr�)rRr$ro�prr+rs    ��rr�z:TestSSL.test_shutdown_timeout_handler_leak.<locals>.client�sc�����1�4�1�(�K�T�K�K�K�s�K�K�K�K�K�K�K�K�F�B���H�H�J�J�J��&�L�L�L�L�L�L�L�L�Lr
)rr
r+rlr�r�rRr�r�r^r_r�)rr�r�r�r$r+rs`    @@r�"test_shutdown_timeout_handler_leakz*TestSSL.test_shutdown_timeout_handler_leak�sg������y��	�	�	�	�	�	*�	*�	*�	*�	*�	*�	*�w�'�	*�	*�	*�	�	�	�	�	�	�
�_�_�V�
$�
$�	#���1�1�3�3�C��#�#�F�F�3�8�S�$9�$9�:�:�:��+�c�"�"�C�	#�	#�	#�	#�	#�	#�	#�	#�	#�	#�	#����	#�	#�	#�	#�	�
����
�
����
�
����	
���#�#�%�%� � � � � s�A
B�B"�%B"c�@�������j�tj���d����fd�}G��fd�dtj��������fd�}��|��5}��||j����ddd��dS#1swxYwYdS)Nc�x����tjtj��}|�|d���}|�d��|�d��|�tj����	�j
��|���dS)NTr��hellosextra bytes)r�rJr�r�rQr�rMr]rNr��setrE)rjr��eofrrs  ���rr�z=TestSSL.test_shutdown_timeout_handler_not_set.<locals>.server�s�����4�4��#��"���F��%�%�d��%�=�=�D��I�I�h�����I�I�n�%�%�%��M�M�&�.�)�)�)��%�%�c�g�.�.�.�
�J�J�L�L�L�L�Lr
c�0��eZdZ�fd�Zd�Z�fd�Zd�ZdS)�?TestSSL.test_shutdown_timeout_handler_not_set.<locals>.Protocolc�J��tj����|_d|_dSrp)r
rr�rrs �rrzHTestSSL.test_shutdown_timeout_handler_not_set.<locals>.Protocol.__init__	s"���"�>�t�4�4�4���!%����r
c��||_dSr	)rr"s  rr#zOTestSSL.test_shutdown_timeout_handler_not_set.<locals>.Protocol.connection_made
s
��!*����r
c���|dkr5|j�d��|j���dS|�dS)Nrxsworld)rr�r)rr'�extras  �rr(zMTestSSL.test_shutdown_timeout_handler_not_set.<locals>.Protocol.data_receivedsK����8�#�!��N�(�(��2�2�2��N�0�0�2�2�2�2�2�!�E�E�Er
c�v�|�|j�d��dS|j�|��dSr	)r�r!r�r/s  rr1zOTestSSL.test_shutdown_timeout_handler_not_set.<locals>.Protocol.connection_lostsB���0��H�'�'��-�-�-�-�-��H�*�*�3�/�/�/�/�/r
N)r2r3r4rr#r(r1)r�rs��rr+r|se�������
&�
&�
&�
&�
&�
+�
+�
+�
!�
!�
!�
!�
!�
0�
0�
0�
0�
0r
r+c���K�����}�j�g|�Rd|i��d{V��\}}�����d{V��|���|j�d{V��|���dSrs)r�r*�wait�resume_readingr�rE)	rRr$rortr+rzr�rrs	    �����rr�z=TestSSL.test_shutdown_timeout_handler_not_set.<locals>.clients�������1�1�3�3�C�1�4�1�(�K�T�K�K�K�s�K�K�K�K�K�K�K�K�F�B���(�(�*�*���������������&�L�L�L�L�L�L�L��H�H�J�J�J�J�Jr
)rr
�Eventr+rlr�rR)rr�r�r�r+rzr�rs`   @@@@r�%test_shutdown_timeout_handler_not_setz-TestSSL.test_shutdown_timeout_handler_not_set�s?��������y���m�o�o����	�	�	�	�	�	�	� 	0�	0�	0�	0�	0�	0�	0�	0�w�'�	0�	0�	0�.	+�	+�	+�	+�	+�	+�	+�	+�	+��_�_�V�
$�
$�	6���#�#�F�F�3�8�$4�$4�5�5�5�	6�	6�	6�	6�	6�	6�	6�	6�	6�	6�	6�	6����	6�	6�	6�	6�	6�	6s�"$B�B�Br	)NN)0r2r3r4r�rr�r�rArNr]r�r�rlrprvryr�r��
contextlib�contextmanagerr�r�r�r�r�r�r	rr!r.r@rFrpr}r�r�r�r�r�r"r(rFrTrgrjrur�rM�rGs@rr>r>Ls���������L��"�G�)�)�)�)�)������!�.��"�0��!�;�;�;�;�;�B!�.�"�0�
.�
.�
.�
.�G�G�G�G�G�G�����<@��������(�(���(����(�(�(�0�0�0����]�]�]�~`�`�`�D?�?�?�B#?�#?�#?�J)'�)'�)'�V/>�/>�/>�b3�3�3�D9�D9�D9�D9�L,$�,$�,$�\;A�;A�;A�z>,�>,�>,�@]8�]8�]8�~;A�;A�;A�zL1�L1�L1�\O�O�O�b@�@�@�D9;�9;�9;�vz;�z;�z;�xO�O�O�8!�!�!�2%!�%!�%!�N66�66�66�66�66�66�66r
r>c�6�eZdZd�Zd�Zdddd�d�Zd�Zd	�ZdS)
�TestSocketWrapperc��||_dSr	)�_TestSocketWrapper__sock�rrjs  rrzTestSocketWrapper.__init__3s
������r
c���d}t|��|krJ|�|t|��z
��}|dkrt�||z
}t|��|k�J|Sr�)r%r4r)r�nr�r's    rr�zTestSocketWrapper.recv_all6sj�����#�h�h��l�	��9�9�Q��S���\�*�*�D��s�{�
-�,�,��4�K�C�	�#�h�h��l�	�
�
r
FNT�r�r��do_handshake_on_connectc��|�|j|||���}|r|���|j���||_dS)Nr�)rQr�rrE)r�ssl_contextr�r�r��ssl_socks      rr�zTestSocketWrapper.starttls?sf���*�*��K�[�+�$;�+�=�=��
�	$��!�!�#�#�#������������r
c�,�t|j|��Sr	)r\r�)rr`s  r�__getattr__zTestSocketWrapper.__getattr__Qs���t�{�D�)�)�)r
c�\�d�t|��j|j��S)Nz	<{} {!r}>)r`�typer2r�r+s r�__repr__zTestSocketWrapper.__repr__Ts#���!�!�$�t�*�*�"5�t�{�C�C�Cr
)r2r3r4rr�r�r�r�rr
rr�r�1sy������������#�!%�)-������$*�*�*�D�D�D�D�Dr
r�c� �eZdZd�Zd�Zd�ZdS)�SocketThreadc�<�d|_|���dSr�)�_activerdr+s rr�zSocketThread.stopZs������	�	�����r
c�.�|���|Sr	)r�r+s r�	__enter__zSocketThread.__enter__^s���
�
�����r
c�.�|���dSr	)r�r/s  r�__exit__zSocketThread.__exit__bs���	�	�����r
N)r2r3r4r�r�r�rr
rr�r�XsA����������������r
r�c��eZdZd�Zd�ZdS)rnc��tj�|ddd��d|_||_||_d|_||_||_dS)Nztest-clientT)	r^r_rrY�_timeout�_sockr��_prog�_test)rrZrjr�rSs     rrzTestThreadedClient.__init__hsM����!�!�$��d�M�B�B�B������
���
������
���
�
�
r
c���	|�t|j����dS#ttf$r�t
$r%}|j�|��Yd}~dSd}~wwxYwr	)r�r�r��KeyboardInterrupt�
SystemExit�
BaseExceptionr�r�r�s  rrzTestThreadedClient.runrs���	.��J�J�(���4�4�5�5�5�5�5��!�:�.�	�	�	���	.�	.�	.��J�)�)�"�-�-�-�-�-�-�-�-�-�����	.���s�'+�A+�A&�&A+N)r2r3r4rrrr
rrnrnfs2���������.�.�.�.�.r
rnc�L��eZdZd�Z�fd�Zd�Zd�Zd�Zed���Z	�xZ
S)rgc�<�tj�|ddd��d|_d|_d|_||_||_||_d|_	||_
tj��\|_
|_|j
�d��||_dS)Nztest-serverTrF)r^r_rrY�_clients�_finished_clients�_max_clientsr�r�r�r�r]�
socketpair�_s1�_s2�setblockingr�)rrZrjr�rSrUs      rrzTestThreadedServer.__init__}s�����!�!�$��d�M�B�B�B������
�!"���'�����
���
������
�#�.�0�0����$�(�����U�#�#�#���
�
�
r
c�4��	|jrI|j���dkr,	|j�d��n#t$rYnwxYwt	�����dS#t	�����wxYw)N���sstop)r��filenor�rfr@r�rFs �rr�zTestThreadedServer.stop�s����	��x�
�D�H�O�O�-�-��3�
���H�M�M�'�*�*�*�*�������D�����
�G�G�L�L�N�N�N�N�N��E�G�G�L�L�N�N�N�N���s.�$A5�A�A5�
A�
A5�A�A5�5"Bc�t�	|j5|j�d��|���ddd��n#1swxYwY|j���|j���dS#|j���|j���wxYwr�)r�r��_runr�rEr�r+s rrzTestThreadedServer.run�s���	���
�
��
�&�&�q�)�)�)��	�	����
�
�
�
�
�
�
�
�
�
�
����
�
�
�
�
�H�N�N�����H�N�N�������
�H�N�N�����H�N�N�������s-�B�/A�B�A�B�A�B�4B7c��|j�rI|j|jkrdStj|j|jggg|j��\}}}|j|vrdS|j|vr�	|j���\}}|xjdz
c_|�|j��	|5|�	|��ddd��n#1swxYwYnu#ttf$r�t$r-}d|_	�#|j
�|��wxYwd}~wwxYw#t$rY��*t j$r|jsYdS�wxYw|j��GdSdS)NrOF)r�r�r��selectr�r�r�r`rc�_handle_clientr�r�r�r�r��BlockingIOErrorr]rS)r�r�w�xrmrRrks       rr�zTestThreadedServer._run�s����l�!	>��}�� 1�1�
����m���T�X�&��B��
�?�?�G�A�q�!��x�1�}�
����z�Q��
>�>�!%��!2�!2�!4�!4�J�D�$��M�M�Q�&�M�M��O�O�D�M�2�2�2�
>�!�6�6� �/�/��5�5�5�6�6�6�6�6�6�6�6�6�6�6����6�6�6�6���-�z�:�����(�>�>�>�',���>�!�� �J�9�9�"�=�=�=�=��������>�����'�����H��~�����<������	�����l�!	>�!	>�!	>�!	>�!	>sf�D�#C�%C�;C�C�C�C�C�D�.D�6C7�7D�D�D�
E�+E�Ec�J�|�t|����dSr	)r�r�r�s  rr�z!TestThreadedServer._handle_client�s#���
�
�$�T�*�*�+�+�+�+�+r
c�4�|j���Sr	)r�r�r+s rrRzTestThreadedServer.addr�s���z�%�%�'�'�'r
)r2r3r4rr�rr�r��propertyrRrMr�s@rrgrg{s�����������$��������">�">�">�H,�,�,��(�(��X�(�(�(�(�(r
rg)$r
�asyncio.sslprotor�r^r�r�r]�sysr^r^r/r��unittestr{�ImportErrorrZr�test.test_asynciorrJ�platform�MACOSr�rr+r�Filterr6�skipIf�TestCaser>r�r_r�rnrgrr
r�<module>r�s}��������������	�	�	�	�����
�
�
�
�
�
�
�
�
�
�
�
�����������������������J�J�J�J������
�C�C�C�����������1�1�1�1�1�1�

���	!��"�*�����(�(�(�'�'�'�'�'�'�"�'�'�'�D�����w�~����������o�.�.�\6�\6�\6�\6�\6�j�!�\6�\6�/�.�\6�H/$D�$D�$D�$D�$D�$D�$D�$D�N�����9�#����.�.�.�.�.��.�.�.�*P(�P(�P(�P(�P(��P(�P(�P(�P(�P(s�;�A�A