403Webshell
Server IP : 121.121.20.254  /  Your IP : 216.73.217.51
Web Server : Microsoft-IIS/10.0
System : Windows NT WEB-SERVER 10.0 build 20348 (Windows Server 2022) AMD64
User : IUSR ( 0)
PHP Version : 8.3.28
Disable Function : NONE
MySQL : ON  |  cURL : ON  |  WGET : OFF  |  Perl : OFF  |  Python : OFF  |  Sudo : OFF  |  Pkexec : OFF
Directory :  C:/Python313/Lib/test/__pycache__/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : C:/Python313/Lib/test/__pycache__/test_ssl.cpython-313.pyc
�

��i&���
�SSKrSSKrSSKrSSKrSSKJr SSKJr SSKJ	r	 SSK
Jr SSK
Jr SSK
J
r
 SSK
Jr SS	K
Jr SS
K
Jr SSKrSSKrSSKrSSKrSSKrSSKrSSKrSSKrSSKrSSKrSSKrSSKrSSKrSSKrSSK r SSK!r!SSK"r"SSK#r#SSK$r$SSKJ%r% SSK&r&\RP"S5r)SSK*r*SS
K)J+r+J,r,J-r-J.r.J/r/ \	R`=(a \RDS:Hr1\2"\)Rf5r4\
Rjr5S\)Rl;r7\)RpS:�r9\#Rt"S5r;0r<SH(ur=r>\?"\)\=5r=\?"\)RX\>5r>\>\<\='M* SrA\A"S5rB\R�"\B5rD\A"S5rE\A"S5rF\R�"\E5rG\R�"\F5rH\A"S5rI\A"S5rJSrK\A"S5rL\R�"\L5rM\A"SS5rN\A"SS5rOSSSS SS!S"S#.rP\A"S$5rQ\A"S%5rR\A"S&5rSS'rTS(S)S*S+S,S-S.SS!S"S/.
rU\A"S05rVS1rW\A"S25rXS3rY\A"S45rZS5r[\A"S65r\\A"SS75r]\A"S85r^\A"S95r_\A"S:5r`S'raS;rb\A"S<5rc\A"S=5rd\A"S>5re\A"S?5rf\A"S@5rg\A"SA5rh\A"SB5ri\A"SC5rj\R�"\j5rk\?"\)SDS5rl\?"\)SES5rm\?"\)SFS5rn\?"\)SGS5ro\?"\)SHS5rpSIrq\q"5(aSJrrOSKrrSLrs\$R�SM5ruSNrvSOrwSPrx\R�"\zSQ9r{SRS\)R�SSSSSS.STjr}SRS\)R�SSSSSS.SUjr~SRqSq�\R4SVSW.SXjjr�S�SYjr�"SZS[\GR5r�"S\S]\GR5r�"S^S_\GR5r�"S`Sa\GR5r�"SbSc\GR5r�"SdSe\GR5r�\	GR"Sf5"SgSh\GR55r�S�Sijr�Sjr�SSkK�J�r� "SlSm\R5r�"SnSo\R5r�S�Spjr�S�Sqjr�Srr�"SsSt\GR5r�\GR,"\u"Su5Sv5"SwSx\GR55r�\�"\)GR2Sy5r�\GR,"\�Sz5r�"S{S|\GR5r�S}r�"S~S\GR5r�"S�S�\GR5r�S�r�\�S�:Xa\GRD"5 gg!\'a Sr&GN�f=f!\@a GM%f=f)��N)�literal_eval)�Thread)�support)�
import_helper)�	os_helper)�
socket_helper)�threading_helper)�warnings_helper)�asyncore)�nullcontext�ssl)�Purpose�
TLSVersion�_TLSContentType�_TLSMessageType�
_TLSAlertType�win32�AWS-LC)�rr�PY_SSL_DEFAULT_CIPHERS))�PROTOCOL_SSLv3�SSLv3)�PROTOCOL_TLSv1�TLSv1)�PROTOCOL_TLSv1_1�TLSv1_1c��[RR"[RR[5S/UQ76$)N�certdata)�os�path�join�dirname�__file__��names �"C:\Python313\\Lib\test\test_ssl.py�	data_filer'Ds)��
�7�7�<�<�������1�:�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�	localhostzJan 24 04:21:36 2043 GMTzNov 25 04:21:36 2023 GMT�(53E14833F7546C29256DD0F034F776C5E983004C))�DNSr3r��issuer�notAfter�	notBefore�serialNumber�subject�subjectAltName�versionzrevocation.crlzkeycert3.pemz	cert3.pemr3)z)http://testca.pythontest.net/testca/ocsp/)z0http://testca.pythontest.net/testca/pycacert.cer)z2http://testca.pythontest.net/testca/revocation.crl)r+))r1�Python Software Foundation CA))r2z
our-ca-serverzOct 28 14:23:16 2037 GMTzAug 29 14:23:16 2018 GMT�CB2D80995A69525C)
�OCSP�	caIssuers�crlDistributionPointsr7r8r9r:r;r<r=zkeycert4.pem�fakehostnamezkeycertecc.pemz
localhost-ecczleaf-missing-aki.keycert.pemzexample.comzleaf-missing-aki.ca.pemz
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��[SSS9nSUR5;sSSS5 $!,(df   g=f![a gf=f)Nz/etc/os-releasezutf-8)�encoding�ubuntuF)�open�read�FileNotFoundError)�fs r&�	is_ubunturS�sA����#�g�
6�!��q�v�v�x�'�7�
6�
6������s#�
:�)�	:�
7�:�:�
A�Ac���UHcn[US5(dMUR[RR::dM@UR
S:�dMRUR
S5 Me g)z@"Lower security level to '1' and allow all ciphers for TLS 1.0/1�minimum_version�z@SECLEVEL=1:ALLN)�hasattrrUr
rr�security_level�set_ciphers)�ctxs�ctxs  r&�seclevel_workaroundr\�sM���C���.�/�/��#�#�s�~�~�'=�'=�=��"�"�Q�&���� 1�2�
r(c��g�N�)rZs r&r\r\�s��r(c�4�[U[5(a-URS5(de[[US5nUcgU[R
[R[R1;agURn[U[S5S5$)ztCheck 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_protocolrl�s����(�C� � ��"�"�;�/�/�/�/��3��$�/���������#�1�1������
��=�=�D��4��K� 0� 1�2�3�3r(c�l�[U[5(a[RRUn[[SUR35(dg[(aU[RR:ag[R[R5n[US5(a8UR[RR:waXR:ag[US5(a8UR[RR:waXR:�agg)zoCheck if a TLS/SSL version is enabled

:param version: TLS version name or ssl.TLSVersion member
:return: bool
�HAS_FrU�maximum_versionT)rbrcr
r�__members__rer%�IS_OPENSSL_3_0_0�TLSv1_2�
SSLContextrhrWrU�MINIMUM_SUPPORTEDro�MAXIMUM_SUPPORTED)r=r[s  r&riri�s����'�3����.�.�,�,�W�5���3�$�w�|�|�n�-�.�.����G�c�n�n�&<�&<�<���.�.��0�0�
1�C��C�*�+�+����3�>�>�#C�#C�C��)�)�)����&�'�'����s�~�~�?�?�?��%�%�%��r(c�^�U4SjnU$)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>^�[R"T5UU4Sj5nU$)Nc�f>�[T5(d[R"TS35eT"U0UD6$)Nz is not available.)ri�unittest�SkipTest)�args�kw�funcr=s  ��r&�wrapper�8requires_tls_version.<locals>.decorator.<locals>.wrappers7���"�7�+�+��'�'�7�)�3E�(F�G�G��T�(�R�(�(r()�	functools�wraps)r}r~r=s` �r&�	decorator�'requires_tls_version.<locals>.decorators%���	����	�	)�
�	)�
�r(r_)r=r�s` r&�requires_tls_versionr�s�����r(c���SR[R"[R"555n[
R(a"[RRX-5 gg)N� )	r!�	traceback�format_exception�sys�	exceptionr�verbose�stdout�write)�prefix�
exc_formats  r&�handle_errorr�sB�����)�4�4�S�]�]�_�E�F�J�����
�
����,�-�r(c��[R(a4[R"5RS:�a[R*$[R
*$�Nr)�time�daylight�	localtime�tm_isdst�altzone�timezoner_r(r&�
utc_offsetr�s5���}�}����)�2�2�Q�6����}���M�M�>�r()�categoryF��server_side�check_hostname�	cert_reqs�ca_certs�certfile�keyfile�ciphersc�|�U(a$[R[R5nO#[R[R5nUcU[R:XaSUlOXlUbX'lUbURU5 UcUbURXE5 UbURU5 U$�NF)
r
rsrgrh�	CERT_NONEr��verify_mode�load_verify_locations�load_cert_chainrY)r�r�r�r�r�r�r��contexts        r&�make_test_contextr�#s�����.�.��!8�!8�9���.�.��!8�!8�9������
�
�%�%*�G�"��!/����'�����%�%�h�/���w�2�����2������G�$��Nr(c
��[UUUXEUUS9n	U(dURS[5 U	R"U4SU0UD6$)Nr��server_hostnamer�)r��
setdefault�SIGNED_CERTFILE_HOSTNAME�wrap_socket)
�sockr�r�r�r�r�r�r��kwargsr�s
          r&�test_wrap_socketr�?sQ�� ��%���g���G�����+�-E�F����t�G��G��G�Gr(T��server_chainc���[(a
[b[$U[:Xa[nO-U[:Xa[
nOU[:Xa[nO[U5e[R[R5nUR[5 [R[R5nURU5 U(aUR[5 [(a[bX4U4qX4U4$)zMCreate context

client_context, server_context, hostname = testing_context()
)�USE_SAME_TEST_CONTEXT�
_TEST_CONTEXT�SIGNED_CERTFILEr��SIGNED_CERTFILE2�SIGNED_CERTFILE2_HOSTNAME�	NOSANFILE�NOSAN_HOSTNAME�
ValueErrorr
rsrhr��
SIGNING_CArgr�)�server_certr��hostname�client_context�server_contexts     r&�testing_contextr�Xs������$� � ��o�%�+��	�(�	(�,��	�	�	!�!����%�%��^�^�C�$;�$;�<�N��(�(��4��^�^�C�$;�$;�<�N��"�"�;�/���,�,�Z�8����$�*�H�D�M��8�3�3r(c��Sup4U(deXB:a`[R"[R5 UR	5 SSS5 UR5nUS-
nU(dXB:aM`U$!,(df   N3=f)z�Call do_handshake() on the sslobject and return the sent data.

If do_handshake() fails more than *max_retry* times, return None.
r�NrV)�
contextlib�suppressr
�SSLWantReadError�do_handshakerP)�	sslobject�outgoing�	max_retry�data�attempts     r&�do_ssl_object_handshaker�zsf��
�M�D��w�*�
�
 �
 ��!5�!5�
6��"�"�$�7��}�}����1���	�w�*�
�K�	7�
6�s�A3�3
Bc�D�\rSrSrSrSrSrSrSrSr	Sr
S	rS
rSr
SrS
r\R"S5rSrSrSrSrSrSrSrSrSr\R:"S\R>;S5S5r Sr!Sr"\R:"\#RHS:HS5S5r%\R:"\#RHS:HS5S 5r&S!r'S"r(S#r)S$r*S%r+\R:"\,"5S&5S'5r-S(r.\R^"S)S*5S+5r0S,r1S-r2S.r3g/)0�BasicSocketTestsi�c��[R [R [R [R [R
 [R [R UR[RS5 UR[RS5 UR[RS5 UR[RS5 [R [R [R [R  [R" [R$ UR[R&[R(5 g)NT)r
r��
CERT_OPTIONAL�
CERT_REQUIREDrJrHrIrG�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_2rf�PROTOCOL_SSLv23��selfs r&�test_constants�BasicSocketTests.test_constants�s����
�
��������'�'����������������d�+�������t�,�������$�/�������$�/�����������������������)�)�3�+>�+>�?r(c��[[5HYnURS5(dMURUS9 [	[U5nURUSSU35 SSS5 M[ g!,(df   Mm=f)N�OP_��optionr�ssl.)�dirr
rd�subTestre�assertGreaterEqual)r�r%�values   r&�test_options�BasicSocketTests.test_options�se����H�D��?�?�5�)�)�����T��*���T�*���'�'��q�D���-�@�+�*��+�*�s�'A.�.
A=	c���[R[R[R[R[R
[R/nUHAnURUS9 UR[S5 SUl
SSS5 SSS5 MC [R"U[R5 g!,(df   N@=f!,(df   M�=f)N)�ssl_typezimmutable type)
�_ssl�_SSLContext�
_SSLSocket�	MemoryBIO�Certificate�
SSLSession�SSLErrorr��assertRaisesRegex�	TypeErrorr�r�check_disallow_instantiation)r��	ssl_typesr�s   r&�test_ssl_types�BasicSocketTests.test_ssl_types�s�������O�O��N�N�����O�O��M�M�

�	�"�H����x��0��+�+�I�7G�H�%)�H�N�I�1�0�"�	�,�,�T�4�3C�3C�D�I�H��1�0�s$�1C�C
�C�

C�C�
C*	c���UR[S5 [R"5n[R	U5 SSS5 SSS5 g!,(df   N=f!,(df   g=f�Nzpublic constructor)r�r��socketr
�	SSLSocket�r��ss  r&�test_private_init�"BasicSocketTests.test_private_init�sH��
�
#�
#�I�/C�
D�����A��
�
�a� �!�E�
D� ���E�
D�s"�A%�A�A%�
A"	�A%�%
A3c�2�[RnUR[U5SUR-5 UR[U5[UR55 [R
U5nURURU5 g)Nz$<_SSLMethod.PROTOCOL_TLS_CLIENT: %r>)	r
rhr��reprr�rcrs�assertIsrk�r��protor[s   r&�test_str_for_enums�#BasicSocketTests.test_str_for_enums�sj���'�'������e��&L�u�{�{�&Z�[�����U��S����%5�6��n�n�U�#���
�
�c�l�l�E�*r(c�n�[R5n[R(a5[R
R
SX=(a S=(d S4-5 U(a1[RS5nUR[U5S5 O/UR[R[RS5 UR[[RS5 [RSS5 [RSS5 [R[S	5S5 g)
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��
RAND_bytesr�rj�assertRaisesr�r��RAND_add�	bytearray)r��vr�s   r&�test_random�BasicSocketTests.test_random�s����O�O����?�?��J�J���:� !�$A�*A�$:� 9� ;�;�
<�
��>�>�"�%�D����S��Y��+����c�l�l�C�N�N�B�?�	
���*�c�n�n�b�9����.��5����5�t�<����Y�C�D�d�Kr(c�j�UR[RR[5[
5 UR[RR[5[5 [RR[5n[R(a9[RRS[R"U5-S-5 URUSS5 URUSS5 URUSS5 URUSS	5 g)
N�
r<))r5zprojects.developer.nokia.com)r5zprojects.forum.nokia.comr@)zhttp://ocsp.verisign.comrA)z0http://SVRIntl-G3-aia.verisign.com/SVRIntlG3.cerrB)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_cert� BasicSocketTests.test_parse_cert�s���	
����H�H�&�&�x�0��	
�	
����H�H�&�&��7� �	
�
�H�H�&�&�y�1���?�?��J�J���T�F�N�N�1�$5�5��<�=�����+�,�?�	�
	
����6��$A�B�����;��N�	P�����2�3�N�	Pr(c��[RR[5n[R
(a9[RRS[R"U5-S-5 URUSSSSSSSS	.5 g)
Nr)�)r,�UK))r2zcody-cazJun 14 18:00:58 2028 GMTzJun 18 18:00:58 2018 GMT�02)r&))r2�#codenomicon-vm-2.test.lal.cisco.com))r5r)rr6)r
r�r�TALOS_INVALID_CRLDPrr�r�r�r�rr r�r!s  r&�test_parse_cert_CVE_2019_5010�.BasicSocketTests.test_parse_cert_CVE_2019_5010�sw���H�H�&�&�':�;���?�?��J�J���T�F�N�N�1�$5�5��<�=����
�L�6�7� $�H�#E��
�	
r(c��[RR[5n[R
(a9[RRS[R"U5-S-5 SnURUSU5 URUSU5 [RS:�aSnOSnURUSU5 g)	Nr)))r,�US))�stateOrProvinceName�Oregon))r/�	Beavertonr0))�organizationalUnitNamezPython Core Development))r2znull.python.orgexample.org))�emailAddresszpython-dev@python.orgr;r7)r�	�)�r5zaltnull.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)r6r7r9r;)r<z	<invalid>r<)
r
r�r�NULLBYTECERTrr�r�r�r�rr r��_OPENSSL_API_VERSION)r�r"r;�sans    r&�test_parse_cert_CVE_2013_4238�.BasicSocketTests.test_parse_cert_CVE_2013_4238
s����H�H�&�&�|�4���?�?��J�J���T�F�N�N�1�$5�5��<�=�A��	
����9��w�/�����8��g�.��#�#�y�0�;�C�0�C�	
����+�,�c�2r(c�t�[RR[5nUR	USS5 g)Nr<)
)r5�allsans��	othernamez
<unsupported>rD)r8zuser@example.org)r5zwww.example.org)�DirName)r+r.r0))r2zdirname 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�r!s  r&�test_parse_all_sans�$BasicSocketTests.test_parse_all_sans's1���H�H�&�&�z�2������+�,�
�	
r(c��[[S5nUR5nSSS5 [R	W5n[RU5n[R	U5nUR
X55 UR[RS-5(dURSU-5 URS[R-S-5(dURSU-5 gg!,(df   N�=f)N�rrz-DER-to-PEM didn't include correct header:
%r
z-DER-to-PEM didn't include correct footer:
%r
)rO�
CAFILE_CACERTrPr
�PEM_cert_to_DER_cert�DER_cert_to_PEM_certr�rd�
PEM_HEADER�fail�endswith�
PEM_FOOTER)r�rR�pem�d1�p2�d2s      r&�test_DER_to_PEM� BasicSocketTests.test_DER_to_PEM<s���
�-��
%���&�&�(�C�&�
�
%�
%�c�
*��
�
%�
%�b�
)��
�
%�
%�b�
)������ ��}�}�S�^�^�d�2�3�3��I�I�G�"�L�M��{�{�4�#�.�.�0�4�7�8�8��I�I�G�"�L�M�9�&�
%�s�C5�5
Dc�R�[Rn[Rn[RnUR	U[
5 UR	U[5 UR	U[5 URUS5 URUS5 UupEpgnURUS5 URUS5 URUS5 URUS5 URUS5 URUS5 URUS5 URUS5 URUS5 URUS5 S	US
3n	US:�aSUS
S
US
S
US
3n
OSUS
S
US
S
US
3n
URURX�S45X2[U545 g)Nii@rV�r��?�z	LibreSSL �drzOpenSSL �.r)r
�OPENSSL_VERSION_NUMBER�OPENSSL_VERSION_INFO�OPENSSL_VERSION�assertIsInstance�int�tuplercr��
assertLess�assertLessEqual�
assertTruerd�hex)r��n�tr�major�minor�fix�patch�status�libressl_ver�openssl_vers           r&�test_openssl_version�%BasicSocketTests.test_openssl_versionHs����&�&���$�$���������a��%����a��'����a��%�	
����:�.�����:�&�+,�(��c�&�����q�)�����q�!�����q�)�����s�#�����Q�'�����S�!�����q�)����U�B�'������*����V�R�(�"�5��)�,���A�:�$�U�1�I�Q�u�Q�i�q��q�	�B�K�$�U�1�I�Q�u�Q�i�q��Q��@�K����
�L�L�+�X�>�?�
�3�q�6�N�	
r(c�*�[R"[R5n[U5n[R"U5n[
R"S[45 ASSS5 URU"5S5 g!,(df   N&=f)N�)	r�AF_INETr��weakref�refr
�check_warnings�ResourceWarningr�)r�r�ss�wrs    r&�
test_refcycle�BasicSocketTests.test_refcyclekse��
�M�M�&�.�.�)��
�a�
 ��
�[�[��_��
�
+�
+�R��,A�
B��C������t�$�C�
B�s�"B�
Bc	�l�[R"[R5n[U5nUR[UR
S5 UR[UR[S55 UR[URS5 UR[UR[S5S5 UR[URS5 UR[URSS5 UR[UR5 UR[URS/SSS5 UR[URS5 UR[UR [S5/5 SSS5 g!,(df   g=f)NrV�x)z0.0.0.0rr_r�d)rrxr�r�OSError�recv�	recv_intor�recvfrom�
recvfrom_into�send�sendto�NotImplementedError�dup�sendmsg�recvmsg�recvmsg_into�r�rr}s   r&�test_wrapped_unconnected�)BasicSocketTests.test_wrapped_unconnectedvs-��
�M�M�&�.�.�)��
�a�
 �B����g�r�w�w��2����g�r�|�|�Y�t�_�E����g�r�{�{�A�6����g�r�'7�'7��4��!�L����g�r�w�w��5����g�r�y�y�$��G����1�2�6�6�:����1�2�:�:�#�f�b�!�^�
=����1�2�:�:�s�C����1�2�?�?�(��~�.�
0�!�
 �
 �s�E,F%�%
F3c�
�SHkn[R"[R5nURU5 [U5nUR	XR55 SSS5 Mm g!,(df   M=f)N)Ng�@)rrx�
settimeoutr�r��
gettimeout)r��timeoutrr}s    r&�test_timeout�BasicSocketTests.test_timeout�s[��(�G��
�
�f�n�n�-�A�
�L�L��!�!�!�$��� � ��-�-�/�:�%�$�(�%�$�s� A3�3
B	c�p�[R[R[R[R/n[R
[R[R[R/n[RR[RR[RR/nUH�nURUS9 [R[R5nUR!["5nU=R$U-slSSS5 UR'S[)WR*55 SSS5 M� UH�n[-U5(dMURUS9 UR!["5n[RU5 SSS5 UR'SUR.S3[)WR*55 SSS5 M� UH�n[1U5(dMURUS9 [R[R5nUR!["5nX�lSSS5 UR4R6<SUR.<3n	UR'SU	S3[)WR*55 SSS5 M� g!,(df   GN�=f!,(df   GM =f!,(df   GN>=f!,(df   GM�=f!,(df   N�=f!,(df   GM4=f)Nr�z4ssl.OP_NO_SSL*/ssl.OP_NO_TLS* options are deprecated)rkr�z is deprecated)r=r`)r
r�r�r�r�rr�PROTOCOL_TLSv1_2rfrrrrr�rsrh�assertWarns�DeprecationWarning�optionsr�rc�warningrlr%rirU�	__class__�__name__)
r�r��	protocols�versionsr�r[�cmrkr=�version_texts
          r&�test_openssl111_deprecations�-BasicSocketTests.test_openssl111_deprecations�sN���O�O����������	
��
���� � �� � ����	
�	�
�N�N� � ��N�N� � ��N�N�"�"�
���F����V��,��n�n�S�%<�%<�=���%�%�&8�9�R��K�K�6�)�K�:�� � �J���
�
�O��	-�,��"�H�#�H�-�-�����x��0��%�%�&8�9�R��N�N�8�,�:�� � ��8�=�=�/��8���
�
�O��1�0�"� �G�"�7�+�+�����g��.��n�n�S�%<�%<�=���%�%�&8�9�R�*1�'�:�*1�*;�*;�*D�*D�g�l�l�S��� � ��<�.��7���
�
�O��/�.� �%:�9��-�,��:�9��1�0��:�9��/�.�sm�9K�K
�--K�L�"K/�8;L�%9L%�L�%AL%�

K�K�
K,	�/
K>�9L�
L	�
L"�L%�%
L5	c��[RR[RR[5=(d [R
SU5n[R"5nURUR5 UR[R5 [UUS9 SSS5 g!,(df   g=f)z;Check that trying to use the given client certificate failsr�r�N)
rr r!r"r#�curdirr�
addCleanup�closerr
r�r��r�r�r�s   r&�
bad_cert_test�BasicSocketTests.bad_cert_test�sw���7�7�<�<������� 9� F�R�Y�Y� *�H�6���}�}�������
�
�#�
�
�
�s�|�|�
,��T�&.�
0�-�
,�
,�s�)B=�=
Cc�&�URS5 g)z Wrapping with an empty cert filerDN�r�r�s r&�test_empty_cert� BasicSocketTests.test_empty_cert�s�����>�*r(c�&�URS5 g)z:Wrapping with a badly formatted certificate (syntax error)rENr�r�s r&�test_malformed_cert�$BasicSocketTests.test_malformed_cert�s�����=�)r(c�&�URS5 g)z2Wrapping with a badly formatted key (syntax error)rFNr�r�s r&�test_malformed_key�#BasicSocketTests.test_malformed_key�s�����<�(r(c	���[R[R5n[R"5nUR	[
URUSSS9 SSS5 g!,(df   g=f)NTz
some.hostname�r�)r
rsrgrrr�r�)r�r[r�s   r&�test_server_side�!BasicSocketTests.test_server_side�sM���n�n�S�4�4�5��
�]�]�_�����j�#�/�/�4��.=�
�
?��_�_�s�"A$�$
A2c��[R"S5n[R"[R5nURUR	55 [USS9nUR
[5 URS5 SSS5 SSS5 UR5 g!,(df   N'=f!,(df   N0=f)N�rGrF��do_handshake_on_connectzunknown-type)
r�
create_serverrx�connect�getsocknamer�rr��get_channel_bindingr�)r�r�cr}s    r&�test_unknown_channel_binding�-BasicSocketTests.test_unknown_channel_binding�s���� � �!1�2���M�M�&�.�.�)��	�	�	�!�-�-�/�"�
�a��
?�2��"�"�:�.��&�&�~�6�/�@�	
���	�/�.��@�
?�s$�$B>�:B-�B>�-
B;	�7B>�>
C�
tls-unique�*'tls-unique' channel binding not availablec��[R"[R5n[U5nURUR	S55 SSS5 [R"[R5n[US[
S9nURUR	S55 SSS5 g!,(df   Nk=f!,(df   g=f)Nr�T�r�r�)rrxr��assertIsNoner�rr�s   r&�test_tls_unique_channel_binding�0BasicSocketTests.test_tls_unique_channel_binding�s���
�M�M�&�.�.�)��
�a�
 �B����b�4�4�\�B�C�!�
�M�M�&�.�.�)��
�a�T�H�
E�����b�4�4�\�B�C�F�
E�	!�
 ��F�
E�s�!B6�!C�6
C�
Cc�d�[[R"[R55n[U5nUR	[
5nSn[R"5 SSS5 URU[WRRS55 g!,(df   NA=fr�)r�rrxrr�r|r�
gc_collect�assertInrcr�r{)r�r}rLr�s    r&�test_dealloc_warn�"BasicSocketTests.test_dealloc_warn�ss��
�f�m�m�F�N�N�;�
<����H��
�
�
�o�
.�"��B���� �/�	
�
�
�a��R�Z�Z�_�_�Q�/�0�1�/�
.�s�B!�!
B/c���[R5nUR[U5S5 UR	U[R
5 [R"5n[US'[US'[R5nURUR[5 URUR[5 SSS5 g!,(df   g=f)N��SSL_CERT_DIR�
SSL_CERT_FILE)r
�get_default_verify_pathsr�rjrd�DefaultVerifyPathsr�EnvironmentVarGuard�CAPATHr�cafiler*)r��paths�envs   r&�test_get_default_verify_paths�.BasicSocketTests.test_get_default_verify_pathss����,�,�.������U��Q�'����e�S�%;�%;�<�
�
*�
*�
,��"(�C���#+�C�� ��0�0�2�E����U�\�\�8�4����U�\�\�6�2�-�
,�
,�s
�%A'C�
C#r�Windows specificc�8�UR[RS55 UR[RS55 UR[[R5 UR[
[RS5 [
5nSH�n[RU5nURU[5 UH�nURU[5 UR[U5S5 UupVnURU[5 URUSS15 URU[[[45 [!U[[45(dM�UR#U5 M� M� SnURX�5 g)	N�CA�ROOTrw)r�r�r�x509_asn�
pkcs_7_asn�1.3.6.1.5.5.7.3.1)rir
�enum_certificatesrr��WindowsError�setrd�listrfr�rj�bytesr��	frozenset�boolrb�update)	r��
trust_oids�	storename�store�element�cert�enc�trust�
serverAuths	         r&�test_enum_certificates�'BasicSocketTests.test_enum_certificates
s4������-�-�d�3�4�����-�-�f�5�6����)�S�%:�%:�;����,��(=�(=�r�B��U�
�'�I��)�)�)�4�E��!�!�%��.� ���%�%�g�u�5�� � ��W��q�1�#*� ��5��%�%�d�E�2��
�
�c�J��#=�>��%�%�e�i��d�-C�D��e�i��%5�6�6��%�%�e�,�!�(�)�
��
�
�j�-r(c��UR[RS55 UR[[R5 UR[
[RS5 [RS5nUR
U[5 UHdnUR
U[5 UR[U5S5 UR
US[5 URUSSS15 Mf g)Nr�rw�rrVr�r�)
rir
�	enum_crlsrr�r�rdr�rfr�rjr�r�)r��crlsr�s   r&�test_enum_crls�BasicSocketTests.test_enum_crls&s�������
�
�d�+�,����)�S�]�]�3����,��
�
�r�:��}�}�T�"�����d�D�)��G��!�!�'�5�1����S��\�1�-��!�!�'�!�*�e�4��M�M�'�!�*�z�<�&@�A�	r(c���Sn[RS5nURX!5 URURS5 URURS5 URUR
S5 URURS5 URU[R5 UR[[RS5 [RRS5nURX!5 URU[R5 UR[[RRS5 UR[S5 [RRS5 SSS5 [S	5H�n[RRU5nURUR[5 URUR[5 URUR
[5 URUR[[S545 M� [RR!S5nURX!5 URU[R5 UR[RR!S5U5 UR[RR!S5U5 UR[S
5 [RR!S5 SSS5 g!,(df   GN�=f![a GM�f=f!,(df   g=f)N)�r��TLS Web Server Authenticationr�r�rr�r���zunknown NID 100000i����zunknown object 'serverauth'�
serverauth)r
�_ASN1Objectr��nid�	shortname�longname�oidrdrr��fromnidr��rangererc�type�fromname)r��expected�val�i�objs     r&�test_asn1object� BasicSocketTests.test_asn1object5sp��)���o�o�1�2������'�������#�&��������5�������'F�G�������"5�6����c�3�?�?�3����*�c�o�o�|�D��o�o�%�%�c�*������'����c�3�?�?�3����*�c�o�o�&=�&=�r�B�
�
#�
#�J�0D�
E��O�O�#�#�F�+�F��t��A�
B��o�o�-�-�a�0���%�%�c�g�g�s�3��%�%�c�m�m�S�9��%�%�c�l�l�C�8��%�%�c�g�g��T�$�Z�/@�A���o�o�&�&�'F�G������'����c�3�?�?�3�������1�1�,�?��J�������1�1�2E�F�!�	#�
�
#�
#�J�0M�
N��O�O�$�$�\�2�O�
N�'F�
E��
�
��
��O�
N�s*�3 M�*M� M)�
M�
M&�%M&�)
M7c�P�[RS5nUR[RR[R5 UR[RRU5 UR[RRRS5 UR[RRRS5 UR[RRRS5 [RS5nUR[RR[R5 UR[RRU5 UR[RRRS5 UR[RRRS5 UR[RRRS5 g)Nr�rr�z1.3.6.1.5.5.7.3.2��
clientAuth)
r
rrdr�SERVER_AUTHr�rr	r�CLIENT_AUTH)r�rs  r&�test_purpose_enum�"BasicSocketTests.test_purpose_enum\sX���o�o�1�2�����c�k�k�5�5�s���G�������0�0�#�6�������0�0�4�4�c�:�������0�0�:�:�L�I�������0�0�4�4�1�	3��o�o�1�2�����c�k�k�5�5�s���G�������0�0�#�6�������0�0�4�4�c�:�������0�0�:�:�L�I�������0�0�4�4�1�	3r(c��[R"[R[R5nURUR5 UR[5n[U[RS9 SSS5 UR[WR5S5 [R[R5nUR[5nURU5 SSS5 UR[UR5S5 g!,(df   N�=f!,(df   NE=f)N�r�z!only stream sockets are supported)rrx�
SOCK_DGRAMr�r�rr�r�r
r�r�rcr�rsrhr�)r�r�cxr[s    r&�test_unsupported_dtls�&BasicSocketTests.test_unsupported_dtlsms����M�M�&�.�.�&�*;�*;�<�������� �
�
�
�2�
3�r��Q�#�-�-�8�4�����R�\�\�*�,O�P��n�n�S�4�4�5��
�
�
�2�
3�r��O�O�A��4�����R�\�\�*�,O�P�
4�
3��4�
3�s�$D"�"D3�"
D0�3
Ec�N�UR[RU5U5 gr^)r�r
�cert_time_to_seconds)r��
timestring�	timestamps   r&�cert_time_ok�BasicSocketTests.cert_time_okxs������1�1�*�=�y�Ir(c��UR[5 [RU5 SSS5 g!,(df   g=fr^)rr�r
r$)r�r%s  r&�cert_time_fail�BasicSocketTests.cert_time_fail{s*��
�
�
�z�
*��$�$�Z�0�+�
*�
*�s	�5�
Az)local time needs to be different from UTCc�L�URSS5 URSS5 g)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_timezone�3BasicSocketTests.test_cert_time_to_seconds_timezones&��
	
���4�l�C����4�l�Cr(c��SnSnURX5 UR[RUS9U5 URSU5 URSU5 UR	S5 UR	S5 UR	S5 UR	S	5 UR	S
5 UR	S5 UR	S5 S
nURSU5 URSU5 URSS5 URSS5 URSS5 UR	S5 URSS5 g)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_seconds�*BasicSocketTests.test_cert_time_to_seconds�s?��/�
�
�����*�)�����1�1�J�1�G��L����4�b�9����4�b�9����3�4����2�3����6�7����6�7����6�7����6�7����6�7�!�
����4�j�A����4�j�A����4�j�A����4�j�A����4�j�A����6�7�	
���4�n�Er(�LC_ALLrwc��SnU"5R5S:XaURS5 URSS5 URU"5S-5 g)Nc�0�[R"SS5$)Nz%b)	rVr�rr[�r�rrr)r��strftimer_r(r&�local_february_name�NBasicSocketTests.test_cert_time_to_seconds_locale.<locals>.local_february_name�s���=�=��'B�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�r<s  r&� test_cert_time_to_seconds_locale�1BasicSocketTests.test_cert_time_to_seconds_locale�sZ��	D�� �&�&�(�E�1��M�M�4�
5�	
���4�l�C����/�1�4K�K�Lr(c�$�[R"[R5nURUR5 [R
"U5n[
[R"[R5[RS9nURUR5 UR[U45n[R[R[R[R4nUR!XE5 g)Nr)rrxr�r�r�	bind_portr�r
r��
connect_ex�HOST�errno�ECONNREFUSED�EHOSTUNREACH�	ETIMEDOUT�EWOULDBLOCKr�)r��server�portr�rc�errorss      r&�test_connect_ex_error�&BasicSocketTests.test_connect_ex_error�s������v�~�~�.��������%��&�&�v�.���V�]�]�6�>�>�:�&)�&7�&7�
9�������� �
�\�\�4��,�
'��
���� 2� 2�E�O�O����
��	
�
�
�b�!r(c��[5upn[US9nU UR[R"5US9nUR	[
UR45 URURS5S5 URURS5S5 SSS5 SSS5 g!,(df   N=f!,(df   g=f)N�r�r�rr()
r��ThreadedEchoServerr�rr�rFrMr�r�r��r�r�r�r�rLrs      r&�test_read_write_zero�%BasicSocketTests.test_read_write_zero�s���3B�3D�0���#�N�;��
��+�+�F�M�M�O�<D�,�F�IJ��	�	�4����-�.�� � ������C�0�� � ������a�0�	F��V�F�F���V�s#�$C�A$B2�!C�2
C	�<C�
Cr_N)4r��
__module__�__qualname__�__firstlineno__r�r�r�rrrr#r+r@rIrXrtr�cpython_onlyrr�r�r�r�r�r�r�r�r�ry�
skipUnlessr
�CHANNEL_BINDING_TYPESr�r�r�r��platformr�r�rrr!r'r*r�r/r5�run_with_localerArPrV�__static_attributes__r_r(r&r�r��s���@�(A�
E�!�
+�L�(P�:
�*3�:
�*
N�!
�F
���%��%�0�$;�3�j0�+�*�)�?�������)B�)B�B�E�G�D�G�D�2�
3��������0�2D�E�.�F�.�0�������0�2D�E�B�F�B�%3�N3�"	Q�J�1������D�F�D�F�D�!F�F
���X�r�*�M�+�M�"� 	1r(r�c��\rSrSrSrSr\R"\S:HS5S5r	Sr
SrS	rS
r
\S5r\R"\"\R$S5S
5S5rSrSr\R."5S5rSrSrSrSrSr\R"\R<S5S5rSr Sr!Sr"Sr#Sr$Sr%\RL"\'RPS:HS 5S!5r)\R"\'RPS:HS"5\RL"\*RVS#5S$55r,S%r-S&r.S'r/S(r0S)r1S*r2S+r3S,r4g-).�ContextTestsi�c�p�[Hdn[U5(dM[R"5 [RU5nSSS5 UR
WRU5 Mf [R"5 [R5nSSS5 UR
WR[R5 UR[[R
S5 UR[[R
S5 g!,(df   N�=f!,(df   N�=f)Nr�*)�	PROTOCOLSrlr
r{r
rsr�rkrfrr�)r�rkr[s   r&�test_constructor�ContextTests.test_constructor�s���!�H���)�)�$�3�3�5��.�.��2�C�6�� � ����x�8�	"�
�
+�
+�
-��.�.�"�C�.�������s�'7�'7�8����*�c�n�n�b�9����*�c�n�n�b�9�6�5��.�
-�s�D�D'�
D$	�'
D5c�$�[R[R5nURS5 URS5 UR	[R
S5 URS5 SSS5 g!,(df   g=f)N�ALL�DEFAULT�No cipher can be selected�^$:,;?*'dorothyx)r
rsrhrYr�r��r�r[s  r&�test_ciphers�ContextTests.test_ciphers�s]���n�n�S�4�4�5����������	�"�
�
#�
#�C�L�L�2M�
N��O�O�.�/�O�
N�
N�s�&B�
BrVz+Test applies only to Python default ciphersc�:�[R[R5nUR5nUHbnUSnUR	SU5 UR	SU5 UR	SU5 UR	SU5 UR	SU5 Md g)Nr%�PSK�SRP�MD5�RC4�3DES)r
rsrh�get_ciphers�assertNotIn)r�r[r��suiter%s     r&�test_python_ciphers� ContextTests.test_python_ciphers�s����n�n�S�4�4�5���/�/�#���E���=�D����U�D�)����U�D�)����U�D�)����U�D�)����V�T�*�
r(c
�>�[R[R5nURS5 [	SUR555n1SknUR
U5nUR[U5SS[U5S[U535 g)N�AESGCMc3�*# �UH	oSv� M g7f)r%Nr_)�.0r_s  r&�	<genexpr>�0ContextTests.test_get_ciphers.<locals>.<genexpr>�s���9�'8�!�f�I�'8�s�>�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
rsrhrYr�rv�intersectionr�rj�sorted)r�r[�namesrr�s     r&�test_get_ciphers�ContextTests.test_get_ciphers�s����n�n�S�4�4�5������!��9�s���'8�9�9��	
���)�)�(�3��������q�G�F�5�M�?�,�v�h�GW�FX�"Y�	
r(c��[R[R5n[R[R-[R
-nU[[-[-[-[--nURX!R5 [R"5 U=R[R-slSSS5 URU[R-UR5 [R"5 UR[R)-UlSSS5 URX!R5 SUlURSUR[R
)-5 UR!["5 SUlSSS5 UR!["5 SS-UlSSS5 UR![$5 SUlSSS5 g!,(df   GN@=f!,(df   N�=f!,(df   N=f!,(df   Nh=f!,(df   g=f)Nrrr�r��abc)r
rsrh�OP_ALLr�r�rGrJrHrIrKr�r�r
r{r�r�
OverflowErrorr�)r�r[�defaults   r&r��ContextTests.test_options
s����n�n�S�4�4�5���:�:����/�#�/�/�A���%�(C�C�$�%�'9�:�.�/�	0��	
����+�+�.��
+�
+�
-��K�K�3�?�?�*�K�.�����3�?�?�2�C�K�K�@��
+�
+�
-��;�;�#�/�/�)9�9�C�K�.�����+�+�.��������C�K�K�3�?�?�*:�:�;��
�
�}�
-��C�K�.�
�
�
�}�
-��s�(�C�K�.�
�
�
�y�
)��C�K�*�
)�'.�
-��
.�
-��.�
-��
-�
-��
)�
)�s<�+$H�$H�*H+�H<�7I
�
H�
H(�+
H9�<
I
�
Ic���[R"5 [R[R5nSSS5 URWR[R5 [RUlURUR[R5 [RUlURUR[R5 [RUlURUR[R5 UR[5 SUlSSS5 UR[5 SUlSSS5 [R[R5nURUR[R5 URUR5 [R[R 5nURUR[R5 UR#UR5 g!,(df   GN=f!,(df   GN=f!,(df   GN=f�Nrd)r
r{r
rsrfr�r�r�r�r�rr�r�rg�assertFalser�rhrirms  r&�test_verify_mode_protocol�&ContextTests.test_verify_mode_protocol,s���
�
+�
+�
-��.�.��!1�!1�2�C�.�	
������#�-�-�8��+�+���������#�*;�*;�<��+�+���������#�*;�*;�<��-�-���������#�-�-�8�
�
�
�y�
)�"�C�O�*�
�
�
�z�
*� �C�O�+��n�n�S�4�4�5��������#�-�-�8�����+�+�,��n�n�S�4�4�5��������#�*;�*;�<�����*�*�+�+.�
-��*�
)��
*�
*�s#�$I�>I�#I(�
I�
I%�(
I7c���[R[R5nURUR5 [R
(agSUlURUR5 SUlUR
UR5 SUlURUR5 gUR[5 SUlSSS5 g!,(df   g=f�NTF)	r
rsrhri�hostname_checks_common_name�HAS_NEVER_CHECK_COMMON_NAMEr�r�AttributeErrorrms  r&� test_hostname_checks_common_name�-ContextTests.test_hostname_checks_common_nameDs����n�n�S�4�4�5������7�7�8��*�*�.2�C�+��O�O�C�;�;�<�.3�C�+����S�<�<�=�.2�C�+��O�O�C�;�;�<��"�"�>�2�26��/�3�2�2�s�C!�!
C/c��	�[R[R5n[RR[RR
[RR1n[RR[RR1nURURU5 URURU5 [RRUl
[RRUlURUR[RR5 URUR[RR5 [RRUl
[RR
UlURUR[RR5 URUR[RR
5 [RRUlURUR[RR5 [RRUlURUR[RR
[RR[RR[RR15 [RRUl
URUR[RR[RR15 UR[ 5 SUl
SSS5 [#[R$5(a�[R[R$5nURURU5 URUR[RR5 UR[ 5 [RRUl
SSS5 UR[ 5 [RR
UlSSS5 gg!,(df   GN=f!,(df   N_=f!,(df   g=fr�)r
rsrgrrtrrrru�TLSv1_3r�rUrorr�rrr�rlr)r�r[�
minimum_range�
maximum_ranges    r&�test_min_max_version�!ContextTests.test_min_max_versionRsB���n�n�S�4�4�5��

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

�
�
�N�N�,�,��N�N�"�"�	
�
�	
�
�
�����	
�	
�
�
�����	
�"�n�n�4�4���!�n�n�4�4������������!7�!7�	
�	
���������!7�!7�	
�"�n�n�>�>���!�n�n�2�2������������!A�!A�	
�	
���������!5�!5�	
�"�n�n�>�>������������!A�!A�	
�"�n�n�>�>����
�
�������$�$����&�&����&�&����$�$�	
�	
�"�n�n�>�>����
�
����
�^�^�
#�
#�S�^�^�%;�%;�<�	
�
�
�
�z�
*�"$�C��+��C�0�0�1�1��.�.��!5�!5�6�C��M�M��#�#�]�
�
����#�#�S�^�^�%E�%E�
��"�"�:�.�&)�n�n�&F�&F��#�/��"�"�:�.�&)�n�n�&:�&:��#�/�.�2�+�
*��/�.��.�.�s$�R:� S� S�:
S	�
S�
S+rXzrequires OpenSSL >= 1.1.0c��[R[R5n1SknURURU5 g)N>rrVr�rr[r:)r
rsrhr�rX)r�r[�security_level_ranges   r&�test_security_level� ContextTests.test_security_level�s7��
�n�n�S�4�4�5�� 
��	
�
�
�c�(�(�*>�?r(c���[R[R5n[[SS5nUR	UR
[RU-5 [RUlUR	UR
[R5 [RUlUR	UR
[R5 [RUlUR	UR
[R5 [RUlUR	UR
[R5 [R[R-UlUR	UR
[R[R-5 UR[5 SUlSSS5 g!,(df   g=f)N�VERIFY_X509_TRUSTED_FIRSTr)
r
rsrgrer��verify_flags�VERIFY_DEFAULT�VERIFY_CRL_CHECK_LEAF�VERIFY_CRL_CHECK_CHAIN�VERIFY_ALLOW_PROXY_CERTS�VERIFY_X509_STRICTrr�)r�r[�tfs   r&�test_verify_flags�ContextTests.test_verify_flags�sT���n�n�S�4�4�5��
�S�5�q�
9������)�)�3�+=�+=��+B�C��4�4�������)�)�3�+D�+D�E��5�5�������)�)�3�+E�+E�F��-�-�������)�)�3�+=�+=�>��7�7�������)�)�3�+G�+G�H��4�4�s�7M�7M�M�������)�)��2�2�S�5K�5K�K�	M�
�
�
�y�
)�#�C��*�
)�
)�s�G%�%
G3c�8�[R[R5nUR[SS9 UR[[S9 UR[UR[S9 UR[5nUR[5 SSS5 URWRR[R5 URS5 UR[5 SSS5 URS5 UR[ 5 SSS5 [R[R5nUR["[$5 UR["[$S9 UR[&[(S9 URS5 UR["5 SSS5 URS5 UR[$5 SSS5 URS5 UR[$["S9 SSS5 [R[R5n[*R,"S[*R.5nURU5 UR[0[$5 SSS5 UR[2[4S9 UR[2[4R75S9 UR[2[9[4R755S9 UR["[:[45 UR["[:[4R755 UR["[:[9[4R7555 UR[S5 UR[2SS9 SSS5 UR[R5 UR[2SS9 SSS5 UR[<S	5 UR[2S
S-S9 SSS5 SnS
nSnSnSnSn	Sn
"SS5nUR[2US9 UR[2US9 UR[2US9 UR[2U"5S9 UR[2U"5R>S9 UR[R5 UR[2US9 SSS5 UR[<S	5 UR[2US9 SSS5 UR[S5 UR[2U	S9 SSS5 UR[@S5 UR[2U
S9 SSS5 UR[U
S9 g!,(df   GN�=f!,(df   GN)=f!,(df   GN�=f!,(df   GNd=f!,(df   GN8=f!,(df   GN	=f!,(df   GN�=f!,(df   GN�=f!,(df   GNV=f!,(df   GN2=f!,(df   GNq=f!,(df   GNP=f!,(df   GN/=f!,(df   GN=f)N)r��PEM (lib|routines)�r�r�z|(
            key values mismatch         # OpenSSL
            |
            KEY_VALUES_MISMATCH         # AWS-LC
        ))�passwordzshould be a stringT�badpasszcannot be longer�ai�c��[$r^��KEY_PASSWORDr_r(r&�getpass_unicode�:ContextTests.test_load_cert_chain.<locals>.getpass_unicodes���r(c�*�[R5$r^)r��encoder_r(r&�
getpass_bytes�8ContextTests.test_load_cert_chain.<locals>.getpass_bytess���&�&�(�(r(c�<�[[R55$r^)rr�r�r_r(r&�getpass_bytearray�<ContextTests.test_load_cert_chain.<locals>.getpass_bytearrays���\�0�0�2�3�3r(c��g)Nr�r_r_r(r&�getpass_badpass�:ContextTests.test_load_cert_chain.<locals>.getpass_badpasss��r(c��SS-$)Nr�ir_r_r(r&�getpass_huge�7ContextTests.test_load_cert_chain.<locals>.getpass_huge
s
���;�'�'r(c��g)Nr4r_r_r(r&�getpass_bad_type�;ContextTests.test_load_cert_chain.<locals>.getpass_bad_types��r(c��[S5e)N�
getpass error)�	Exceptionr_r(r&�getpass_exception�<ContextTests.test_load_cert_chain.<locals>.getpass_exceptions
���O�,�,r(c� �\rSrSrSrSrSrg)�:ContextTests.test_load_cert_chain.<locals>.GetPassCallableic��[$r^r�r�s r&�__call__�CContextTests.test_load_cert_chain.<locals>.GetPassCallable.__call__���#�#r(c��[$r^r�r�s r&�getpass�BContextTests.test_load_cert_chain.<locals>.GetPassCallable.getpassr�r(r_N)r�rXrYrZr�r�r`r_r(r&�GetPassCallabler�s��
$�
$r(r�zmust return a stringr�)!r
rsrgr�rrr�r��NONEXISTINGCERTr�r�rG�ENOENTr�r��BADCERT�	EMPTYCERT�ONLYCERT�ONLYKEY�BYTES_ONLYCERT�
BYTES_ONLYKEY�re�compile�XrM�CERTFILE_PROTECTEDr�r�r�ONLYKEY_PROTECTEDr�r�r�)r�r[r��regexr�r�r�r�r�r�r�r�s            r&�test_load_cert_chain�!ContextTests.test_load_cert_chain�s#���n�n�S�4�4�5�����H�d��3����H�h��7����)�S�%8�%8�(��K�
�
�
�w�
'�2�����0�(�������+�+�U�\�\�:�
�
#�
#�C�L�L�2F�
G�����(�H�
�
#�
#�C�L�L�2F�
G����	�*�H��n�n�S�4�4�5�����H�g�.����X�w��?����^�]��K�
�
#�
#�C�L�L�2F�
G�����)�H�
�
#�
#�C�L�L�2F�
G�����(�H�
�
#�
#�C�L�L�2F�
G�����(��C�H��n�n�S�4�4�5���
�
�
��d�d�	��
�
#�
#�C�L�L�%�
8����
�w�7�9�	���.���F����.��9L�9L�9N��O����.�%.�|�/B�/B�/D�%E�	�	G����H�&7��F����H�&7��9L�9L�9N�O����H�&7�%�l�&9�&9�&;�<�	>�
�
#�
#�I�/C�
D���� 2�T��B�E�
�
�
�s�|�|�
,���� 2�Y��G�-�
�
#�
#�J�0B�
C�
��� 2�T�F�]��K�	D�	 �	)�	4�	�	(�	�	-�	$�	$�
	���.���I����.���G����.�9J��K����.��9J��K����.�%4�%6�%>�%>�	�	@�
�
�
�s�|�|�
,���� 2�_��M�-�
�
#�
#�J�0B�
C���� 2�\��J�D�
�
#�
#�I�/E�
F���� 2�=M��N�G�
�
#�
#�I��
?���� 2�=N��O�@�	���H�/@��A�c(�
'��H�
G��
G�
G��H�
G��
G�
G��
G�
G��9�
8��E�
D��
,�
,��
C�
C��>-�
,��
C�
C��
F�
F��
?�
?�s��X �:X2�8Y�#Y�!Y(�Y:�(Z�Z�Z0�?[�[�[&�;[8�.\
� 
X/�2
Y�
Y�
Y%�(
Y7�:
Z	�
Z�
Z-�0
Z?�
[�
[#�&
[5�8
\�

\c�^�[R5mU4Sjn[S5Vs/sHn[R"US9PM nn[
R"5n[
R"U5 SSS5 URUR5 SSS5 gs snf!,(df   N7=f!,(df   g=f)Nc�0>�TR[5 gr^)r�r)r[s�r&�race�=ContextTests.test_load_cert_chain_thread_safety.<locals>.race/s�������)r(r5��target)
r
�create_default_contextr
�	threadingrr	�catch_threading_exception�
start_threadsr��	exc_value)r�r��_�threadsr�r[s     @r&�"test_load_cert_chain_thread_safety�/ContextTests.test_load_cert_chain_thread_safety&s�����(�(�*��	*�;@��(�C�(�Q�9�#�#�4�0�(��C�
�
7�
7�
9�R�!�/�/��8��9�
���b�l�l�+�	:�
9��D�8�8��:�
9�s)�B#�B9�5B(�7#B9�(
B6	�2B9�9
Cc��[R[R5nUR[5 UR[SS9 UR[
5 UR[
SS9 UR
[UR5 UR
[URSSS5 UR
[5nUR[5 SSS5 URWRR[R5 UR[RS5 UR[ 5 SSS5 UR[["5 UR[[$S9 UR
[URSS5 g!,(df   N�=f!,(df   Nt=f)N)r�r*r��r*T)r
rsrgr�r�BYTES_CERTFILErr�r�r�r�r�rGr�r�r�r�r��BYTES_CAPATH�r�r[r�s   r&�test_load_verify_locations�'ContextTests.test_load_verify_locations9sF���n�n�S�4�4�5���!�!�(�+��!�!��$�!�?��!�!�.�1��!�!���!�E����)�S�%>�%>�?����)�S�%>�%>��d�D�Q�
�
�
�w�
'�2��%�%�o�6�(�������+�+�U�\�\�:�
�
#�
#�C�L�L�2F�
G��%�%�g�.�H��!�!�(�F�3��!�!�(�<�!�@�	
���)�S�%>�%>��d�K�(�
'��H�
G�s�F3�G�3
G�
Gc���[[5nUR5nSSS5 [R	W5n[[
5nUR5nSSS5 [R	W5n[R
[R5nURUR5SS5 URUS9 URUR5SS5 URUS9 URUR5SS5 URUS9 URUR5SS5 [R
[R5nSRX$45nURUS9 URUR5SS5 [R
[R5nSUSUS	US
/nURSRU5S9 URUR5SS5 [R
[R5nURUS9 URUS9 URUR5SS5 URUS9 URUR5SS5 [R
[R5nSRX545nURUS9 URUR5SS5 [R
[R5nUR[UR[S9 UR[R S5 URS
S9 SSS5 UR[R S5 URSS9 SSS5 UR[R 5 URUS-S9 SSS5 g!,(df   GN�=f!,(df   GN�=f!,(df   N�=f!,(df   N~=f!,(df   g=f)N�x509_car��cadatarVr�r�head�other�again�tailr(z4no start line: cadata does not contain a certificate�brokenz6not enough data: cadata does not contain a certificatesbroken�A)rOrMrPr
rN�CAFILE_NEURONIOrsrhr��cert_store_statsr�r!rr��objectr�r�)r�rR�
cacert_pem�
cacert_der�neuronio_pem�neuronio_derr[�combineds        r&�test_load_verify_cadata�$ContextTests.test_load_verify_cadataLs���
�-�
 �A�����J�!��-�-�j�9�
�
�/�
"�a��6�6�8�L�#��/�/��=���n�n�S�4�4�5������-�-�/�	�:�A�>��!�!��!�4�����-�-�/�	�:�A�>��!�!��!�6�����-�-�/�	�:�A�>��!�!��!�6�����-�-�/�	�:�A�>��n�n�S�4�4�5���9�9�j�7�8���!�!��!�2�����-�-�/�	�:�A�>��n�n�S�4�4�5���J���w� �&�*���!�!����8�)<�!�=�����-�-�/�	�:�A�>��n�n�S�4�4�5���!�!��!�4��!�!��!�6�����-�-�/�	�:�A�>��!�!��!�4�����-�-�/�	�:�A�>��n�n�S�4�4�5���8�8�Z�6�7���!�!��!�2�����-�-�/�	�:�A�>��n�n�S�4�4�5�����)�S�%>�%>�v��N�
�
#�
#��L�L�B�
�
�%�%�X�%�6�	
�
�
#�
#��L�L�D�
�
�%�%�Y�%�7�	
�
�
�
�s�|�|�
,��%�%�Z�$�->�%�?�-�
,�y!�
 ��#�
"��^
�
��

�
��
-�
,�s;�P�
P+�P=�Q�=Q�
P(�+
P:�=
Q�
Q�
Q-c�,�[R[R5nUR[5 [RS:waUR[5 UR[UR5 UR[URS5 UR[5nUR[5 SSS5 URWR R"["R$5 UR[R&5nUR[(5 SSS5 g![
a [(aURS5 ef=f!,(df   N�=f!,(df   g=f)N�"not supported on Win32 debug build�nt)r
rsrg�load_dh_params�DHFILE�RuntimeError�Py_DEBUG_WIN32r@rr%�BYTES_DHFILErr�rQr�r�r�rGr�r�rrs   r&�test_load_dh_params� ContextTests.test_load_dh_params�s���n�n�S�4�4�5��	����v�&�
�7�7�d�?����|�,����)�S�%7�%7�8����)�S�%7�%7��>�
�
�
�0�
1�R�����/�2�������+�+�U�\�\�:�
�
�
�s�|�|�
,�����x�(�-�
,���	��~��
�
�B�C��	��2�
1��-�
,�s#�E	�9E4�*F�	(E1�4
F�
Fc���[R[R1HDn[RU5nUR	UR5SSSSSSSSSSSS.5 MF g)Nr)�numberr��connect_good�connect_renegotiate�accept�accept_good�accept_renegotiate�hits�misses�timeouts�
cache_full)r
rhrgrsr��
session_statsr	s   r&�test_session_stats�ContextTests.test_session_stats�sk���-�-�s�/F�/F�G�E��.�.��'�C����S�.�.�0��� !�'(�� �&'�����3�
�Hr(c�j�[R[R5nUR5 gr^)r
rsrh�set_default_verify_pathsrms  r&�test_set_default_verify_paths�*ContextTests.test_set_default_verify_paths�s$���n�n�S�4�4�5���$�$�&r(z#ECDH disabled on this OpenSSL buildc��[R[R5nURS5 URS5 UR	[
UR5 UR	[
URS5 UR	[URS5 UR	[URS5 g)N�
prime256v1s
prime256v1�foo�foo)r
rsrg�set_ecdh_curverr�r�rms  r&�test_set_ecdh_curve� ContextTests.test_set_ecdh_curve�s����n�n�S�4�4�5�����<�(����=�)����)�S�%7�%7�8����)�S�%7�%7��>����*�c�&8�&8�%�@����*�c�&8�&8�&�Ar(c��[R[R5nUR[UR
5 UR[UR
S5 UR[UR
S5 UR[UR
U5 SnURS5 URU5 g)Nr[rwc��gr^r_�r��
servernamer[s   r&�
dummycallback�5ContextTests.test_sni_callback.<locals>.dummycallback����r()r
rsrgrr��set_servername_callback)r�r[r@s   r&�test_sni_callback�ContextTests.test_sni_callback�s����n�n�S�4�4�5��	
���)�S�%@�%@�A����)�S�%@�%@�!�D����)�S�%@�%@�"�E����)�S�%@�%@�#�F�	��#�#�D�)��#�#�M�2r(c���[5n[R5[R5p2URX#[S9nSn[
RRUS9n[S[S9nURU5 [R5[R5p�URXxSS9n	U	Rn
[XC5nUR5 UcURS5 URU5 UR5 A	[R "5 UR#[R$5nU
R'5 SSS5 UR5 [((aSn
OS	n
UR+U
[-WR.55 UR1UR.R2[R45 g!,(df   N�=f)
Nr�c��gr^r_r>s   r&�sni_callback�GContextTests.test_sni_callback_on_dead_references.<locals>.sni_callback�s��r()r�Tr��r�z,cannot establish a handshake from the client�PARSE_TLSEXTzcallback failed)r�r
r��wrap_bior�ry�mock�Mockr�rC�_sslobjr��assert_not_calledr@r��gc�collectrr�r��	IS_AWS_LCr�rcr�r�rG�
SSL_ERROR_SSL)r��c_ctx�c_inc�c_out�clientrH�s_ctx�s_inc�s_outrL�server_implr�r��libssl_error_reasons              r&�$test_sni_callback_on_dead_references�1ContextTests.test_sni_callback_on_dead_references�sk��!�#���}�}���
�
��u�����>V��W��5��}�}�)�)��)�=��!�d�_�M��
�%�%�l�3��}�}���
�
��u�����$��?���n�n��'�v�5���&�&�(��<��M�M�H�I�
���D���&�&�(�
�
�
�
���
�
�s�|�|�
,���$�$�&�-�	�&�&�(��9�"0��"3���
�
�)�3�r�|�|�+<�=�������+�+�S�->�->�?�-�
,�s�
G � 
G.c��[R[R5nU4SjnURU5 [R
"U5nAA[R"5 URU"5S5 g)Nc��gr^r_)r�r?r[�cycles    r&r@�>ContextTests.test_sni_callback_refcycle.<locals>.dummycallback�rBr()	r
rsrgrCryrzrQrRr)r�r[r@r~s    r&�test_sni_callback_refcycle�'ContextTests.test_sni_callback_refcycle�sZ���n�n�S�4�4�5��7:�	��#�#�M�2�
�[�[��
����
�
�
���
�
�b�d�D�!r(c���[R[R5nURUR	5SSSS.5 UR[5 URUR	5SSSS.5 UR[5 URUR	5SSSS.5 UR[5 URUR	5SSSS.5 g)Nr)r�crl�x509rVr�)	r
rsrhr�rr�rr�rMrms  r&�test_cert_store_stats�"ContextTests.test_cert_store_statss����n�n�S�4�4�5������-�-�/��!�Q�/�	1����H�%�����-�-�/��!�Q�/�	1��!�!�(�+�����-�-�/��!�Q�/�	1��!�!�-�0�����-�-�/��!�Q�/�	1r(c�P�[R[R5nURUR	5/5 UR[5 URUR	5/5 UR[5 URUR	5SSSSSSSS./5 [[5nUR5nSSS5 [RW5nURUR	S5U/5 g!,(df   NF=f)	N)))r1zRoot CA))r2zhttp://www.cacert.org))r2zCA Cert Signing Authority))r3zsupport@cacert.orgzMar 29 12:29:49 2033 GMTzMar 30 12:29:49 2003 GMT�00)z!https://www.cacert.org/revoke.crlr)r7r8r9r:rBr;r=T)r
rsrhr��get_ca_certsr�rrMrOrPrN)r�r[rRrT�ders     r&�test_get_ca_certs�ContextTests.test_get_ca_certss����n�n�S�4�4�5������)�)�+�R�0��!�!�(�+�����)�)�+�R�0��!�!�-�0�����)�)�+�D�5�5�"�'M�E���
�
	��-�
 �A��&�&�(�C�!��&�&�s�+������)�)�$�/�#��7�!�
 �s�D�
D%c��[R[R5nUR5 [R[R5nUR[RR
5 UR5 [R[R5nUR[RR5 [R[R5nUR[URS5 UR[URS5 g)Nr)	r
rsrh�load_default_certsrrrrr�rms  r&�test_load_default_certs�$ContextTests.test_load_default_certs/s����n�n�S�4�4�5����� ��n�n�S�4�4�5�����s�{�{�6�6�7���� ��n�n�S�4�4�5�����s�{�{�6�6�7��n�n�S�4�4�5�����)�S�%;�%;�T�B����)�S�%;�%;�]�Kr(rznot-Windows specificc�4�[R[R5n[R"5n[
US'[US'UR5 URUR5SSSS.5 SSS5 g!,(df   g=f)Nr�r�rrV)rgrhr)
r
rsrhrr�r�rrrr�r)r�r[r�s   r&�test_load_default_certs_env�(ContextTests.test_load_default_certs_env>sq���n�n�S�4�4�5��
�
*�
*�
,��"(�C���#+�C�� ��"�"�$����S�1�1�3�Q��VW�5X�Y�	-�
,�
,�s�AB	�	
Br�z3Debug build does not share environment between CRTsc���[R[R5nUR5 UR	5n[R[R5n[
R"5n[US'[US'UR5 US==S-
ss'URUR	5U5 SSS5 g!,(df   g=f)Nr�r�rhrV)
r
rsrhrrrrr�r�rr�)r�r[�statsr�s    r&�#test_load_default_certs_env_windows�0ContextTests.test_load_default_certs_env_windowsGs����n�n�S�4�4�5����� ��$�$�&���n�n�S�4�4�5��
�
*�
*�
,��"(�C���#+�C�� ��"�"�$��&�M�Q��M����S�1�1�3�U�;�-�
,�
,�s
�<AC�
C#c��URUR[R-[R5 [S:wa'URUR[-[5 [
S:wa'URUR[
-[
5 [S:wa'URUR[-[5 [S:wa'URUR[-[5 URUR[R-[(aS5 g[R5 gr�)
r�r�r
r�rGrHrIrJ�OP_LEGACY_SERVER_CONNECTrqrms  r&�_assert_context_options�$ContextTests._assert_context_optionsWs���������s���6����H���!����S�[�[�+<�<�.�
0��q� ����S�[�[�+;�;�-�
/���"����S�[�[�+=�=�/�
1�&�!�+����S�[�[�+F�F�8�
:�������s�'C�'C�C�.�.��	R�47�4P�4P�	Rr(c��[R5nURUR[R5 URUR
[R5 URUR[R-[R5 URUR[R-[R5 URUR5 URU5 [[5nUR5nSSS5 [R[[ WS9nURUR[R5 URUR
[R5 URU5 [R[R"R$5nURUR[R&5 URUR
[R(5 URU5 g!,(df   GN$=f)N)r�r*r)r
r�r�rkrhr�r�r��VERIFY_X509_PARTIAL_CHAINr�rir�r~rOr�rPr�rrrgr�)r�r[rRrs    r&�test_create_default_context�(ContextTests.test_create_default_contexths����(�(�*��������s�'>�'>�?�������#�*;�*;�<�����)�)�C�,I�,I�I��6�6�	8�����)�)�C�,B�,B�B��*�*�	,�����*�*�+��$�$�S�)�
�*�
���V�V�X�F���(�(�
�6�06�)�8��������s�'>�'>�?�������#�*;�*;�<��$�$�S�)��(�(����)@�)@�A��������s�'>�'>�?�������#�-�-�8��$�$�S�)��
�s�I�
Ic��[R5nURUR[R5 URUR
[R5 URUR5 URU5 [[R5(a�[R"5 [R[R5nSSS5 URUR[R5 URUR
[R5 URU5 [R"5 [R[R[RSS9nSSS5 URUR[R5 URUR
[R5 UR!UR5 URU5 [R[R"R$S9nURUR[R&5 URUR
[R5 URU5 g!,(df   GN�=f!,(df   GN2=f)NT)r�r���purpose)r
�_create_stdlib_contextr�rkrhr�r�r�r�r~rlrr
r{r�r�rirrrgrms  r&�test__create_stdlib_context�(ContextTests.test__create_stdlib_context�s����(�(�*��������s�'>�'>�?�������#�-�-�8�����+�+�,��$�$�S�)��C�.�.�/�/� �/�/�1��0�0��1C�1C�D��2����S�\�\�3�+=�+=�>����S�_�_�c�m�m�<��(�(��-�
�
+�
+�
-��,�,��$�$��+�+�#�-��C�.�	
������s�';�';�<�������#�*;�*;�<�����*�*�+��$�$�S�)��(�(����1H�1H�(�I��������s�'>�'>�?�������#�-�-�8��$�$�S�)�)2�1��.�
-�s�$J9�.2K�9
K�
Kc��[R"5 [R[R5nSSS5 URWR5 URUR[R5 SUlURUR5 URUR[R5 SUl[RUlURUR5 URUR[R5 SUl[RUlSUlURUR5 URUR[R5 SUlURUR5 URUR[R5 SUl[RUlSUlURUR5 URUR[R5 SUlURUR5 URUR[R5 UR[5 [RUlSSS5 SUlURUR5 [RUlURUR[R5 g!,(df   GN�=f!,(df   N�=fr�)r
r{r
rsrfr�r�r�r�r�rir�r�rr�rms  r&�test_check_hostname� ContextTests.test_check_hostname�s;��
�
+�
+�
-��.�.��!1�!1�2�C�.�����+�+�,�������#�-�-�8�"�������*�*�+�������#�*;�*;�<�"����+�+�������+�+�,�������#�*;�*;�<�#����-�-���"�������+�+�,�������#�-�-�8�!�������*�*�+�������#�*;�*;�<�"����+�+���"�������+�+�,�������#�*;�*;�<�!�������*�*�+�������#�*;�*;�<��
�
�z�
*�!�m�m�C�O�+�"�������+�+�,��-�-���������#�-�-�8�S.�
-��H+�
*�s�$L1�1M�1
M�
Mc��[R[R5nURUR5 URUR[R5 [R[R5nURUR5 URUR[R5 gr^)r
rsrhrir�r�r�r�rgr�r�rms  r&�test_context_client_server�'ContextTests.test_context_client_server�s����n�n�S�4�4�5������*�*�+�������#�*;�*;�<��n�n�S�4�4�5������+�+�,�������#�-�-�8r(c���"SS[R5n"SS[R5n[R[R5nXlX#lUR[R"5SS9nURXA5 SSS5 UR[R5[R5SS9nURXR5 g!,(df   NU=f)Nc��\rSrSrSrg)�;ContextTests.test_context_custom_class.<locals>.MySSLSocketi�r_N�r�rXrYrZr`r_r(r&�MySSLSocketr�����r(r�c��\rSrSrSrg)�;ContextTests.test_context_custom_class.<locals>.MySSLObjecti�r_Nr�r_r(r&�MySSLObjectr��r�r(r�TrJ)r
r�	SSLObjectrsrg�sslsocket_class�sslobject_classr�rrdrLr�)r�r�r�r[r�rs      r&�test_context_custom_class�&ContextTests.test_context_custom_class�s���	�#�-�-�	�	�#�-�-�	��n�n�S�4�4�5��)��)��
�_�_�V�]�]�_�$�_�
?�4��!�!�$�4�@��l�l�3�=�=�?�C�M�M�O��l�N�����c�/�@�
?�s�C&�&
C4c���[R[R5nURURS5 SUlURURS5 SUlURURS5 UR[5 SUlSSS5 UR[5 SUlSSS5 [R[R5nURURS5 UR[5 SUlSSS5 g!,(df   N�=f!,(df   N�=f!,(df   g=f)Nr�rVrr)	r
rsrgr��num_ticketsrr�r�rhrms  r&�test_num_tickest�ContextTests.test_num_tickest�s����n�n�S�4�4�5��������!�,����������!�,����������!�,�
�
�
�z�
*� �C�O�+�
�
�
�y�
)�"�C�O�*��n�n�S�4�4�5��������!�,�
�
�
�z�
*��C�O�+�
*�+�
*��
)�
)��
+�
*�s$�D5�E�$E�5
E�
E�
E%r_N)5r�rXrYrZrfrnryr\rryr�r�r�r��ignore_deprecationr�rWr
rsr�r�r�r	�requires_working_threadingr�rrr!r/r3r�r:rDr^rdrirors�skipIfr�r^rvr�Py_DEBUGrzr~r�r�r�r�r�r�r`r_r(r&rbrb�s���
:�0����/�1�4�F�H�	+�H�	+�
�&  �D,�07��Q;��Q;�f������� 0�1�#��
@�	�
@�$�(WB�r�0�0�2�,�3�,�$L�&?@�B)�$�"'�������'L�M�B�N�B�3�)@�V
"�1�8�8
L��_�_�S�\�\�W�,�.D�E�Z�F�Z��������0�2D�E�
�_�_�W�%�%�J�L�<�L�F�<�R�"*�2*�<*9�X	9�0�  r(rbc�,�\rSrSrSrSrSrSrSrg)�
SSLErrorTestsi�c�8�[RSS5nUR[U5S5 URURS5 [RSS5nUR[U5S5 URURS5 g)NrVr7)r
r�r�rcrG�SSLZeroReturnError)r��es  r&�test_str�SSLErrorTests.test_str�st���L�L��E�"������Q���'�������!�$��"�"�1�e�,������Q���'�������!�$r(c�.�[R[R5nUR[R5nUR[5 SSS5 URWRRS5 SnURURRU5 [UR5nUR!SU;U5 g!,(df   N�=f![a [(aURS5 ef=f)Nr�PEMz+(NO_START_LINE|UNSUPPORTED_PUBLIC_KEY_TYPE)�
NO_START_LINE)r
rsrhrr�rrrrr@r�r��library�assertRegex�reasonrcri)r�r[r�r�rs     r&�test_lib_reason�SSLErrorTests.test_lib_reasons����n�n�S�4�4�5��	��"�"�3�<�<�0�B��"�"�8�,�1�	
������-�-�u�5�=��������,�,�e�4�����������1�,�a�0�1�0���	��~��
�
�B�C��	�s)�C,�C�C,�
C)�%C,�)C,�,(Dc��[R[R5nSUl[RUl[R"S5n[R"UR55nURS5 URUSSS9nUR[R5nUR5 SSS5 [WR 5nUR#UR%S5U5 UR'UR R([R*5 SSS5 SSS5 g!,(df   N�=f!,(df   N(=f!,(df   g=f)NFr�r�z%The operation did not complete (read))r
rsrhr�r�r�rr��create_connectionr��setblockingr�rr�r�rcr�rirdr�rG�SSL_ERROR_WANT_READ)r�r[rr�r�s     r&�
test_subclass�SSLErrorTests.test_subclasss���n�n�S�4�4�5��"����-�-���
�
!�
!�"2�
3�q��(�(�����9�A�
�M�M�%� �����E�5��I�Q��&�&�s�';�';�<���N�N�$�=�����%��������-T� U�WX�Y�� � ����!3�!3�S�5L�5L�M�
J�4�
3�=�<��J�I��4�
3�s>�AE3� E"�=E�A2E"�E3�
E�E"�"
E0	�,E3�3
Fc��[R5nUR[5 UR	[R5[R5SS9 SSS5 UR[5 UR	[R5[R5SS9 SSS5 UR[5 UR	[R5[R5SS9 SSS5 g!,(df   N�=f!,(df   Ns=f!,(df   g=f)Nrwr�z.example.orgzexample.orgevil.com)r
r�rr�rLr�r�rms  r&�test_bad_server_hostname�&SSLErrorTests.test_bad_server_hostname's����(�(�*��
�
�
�z�
*��L�L�����#�-�-�/�)+�
�
-�+��
�
�z�
*��L�L�����#�-�-�/�)7�
�
9�+��
�
�y�
)��L�L�����#�-�-�/�)B�
�
D�*�
)�
+�
*��+�
*��*�
)�s#�6D�=6D �6D1�
D� 
D.�1
D?r_N)	r�rXrYrZr�r�r�r�r`r_r(r&r�r��s��%�1�"N�$
Dr(r�c�2�\rSrSrSrSrSrSrSrSr	g)	�MemoryBIOTestsi4c�z�[R5nURS5 URUR	5S5 URUR	5S5 URS5 URS5 URUR	5S5 URUR	5S5 URS5 URUR	S5S5 URUR	S5S	5 URUR	S5S5 g)
Nr8r(�barsfoobar�bazr�sbarV�z)r
r�r�r�rP�r��bios  r&�test_read_write�MemoryBIOTests.test_read_write6s����m�m�o���	�	�&���������V�,��������S�)��	�	�&���	�	�&���������Y�/��������S�)��	�	�&��������!��e�,�������!��d�+�������!��c�*r(c���[R5nURUR5 UR	UR5S5 URUR5 UR
S5 URUR5 UR5 URUR5 UR	URS5S5 URUR5 UR	URS5S5 URUR5 UR	UR5S5 URUR5 g)Nr(r8r�sforV�o)	r
r�r��eofr�rPr��	write_eofrir�s  r&�test_eof�MemoryBIOTests.test_eofDs����m�m�o��������!��������S�)�������!��	�	�&��������!��
�
��������!�������!��e�,�������!�������!��d�+������� ��������S�)������� r(c�$�[R5nURURS5 UR	S5 URURS5 [S5H6nUR
S5 URURSU-
S-
5 M8 [S5H3nUR	S5 URURUS-5 M5 UR
5 URURS5 g)Nrr8rrVr�)r
r�r��pendingr�r
rP)r�r�rs   r&�test_pending�MemoryBIOTests.test_pendingTs����m�m�o��������a�(��	�	�&��������a�(��q��A��H�H�Q�K����S�[�[�!�A�#�a�%�0���q��A��I�I�d�O����S�[�[�!�A�#�.��	���
�������a�(r(c�@�[R5nURS5 URUR	5S5 UR[S55 URUR	5S5 UR[
S55 URUR	5S5 [
[S55nUSSS2nUR[5 UR[
U55 SSS5 g!,(df   g=f)Nr8r�r�s	noncontig���)	r
r�r�r�rPr�
memoryviewr�BufferError)r�r��m�noncontig_writables    r&�test_buffer_types� MemoryBIOTests.test_buffer_typesbs����m�m�o���	�	�&���������V�,��	�	�)�F�#�$��������V�,��	�	�*�V�$�%��������V�,��y��.�/���t��t�W��
�
�
�{�
+��I�I�j�!3�4�5�,�
+�
+�s�+D�
Dc�4�[R5nUR[URS5 UR[URS5 UR[URS5 UR[URS5 g)Nr7TrV)r
r�rr�r�r�s  r&�test_error_types�MemoryBIOTests.test_error_typesose���m�m�o�����)�S�Y�Y��6����)�S�Y�Y��5����)�S�Y�Y��5����)�S�Y�Y��2r(r_N)
r�rXrYrZr�r�r�r�r�r`r_r(r&r�r�4s��+�!� )�6�3r(r�c� �\rSrSrSrSrSrg)�SSLObjectTestsiwc��[R5nUR[S5 [R	X5 SSS5 g!,(df   g=fr�)r
r�r�r�r�r�s  r&r� SSLObjectTests.test_private_initxs7���m�m�o��
�
#�
#�I�/C�
D��M�M�#�#�E�
D�
D�s�A
�

Ac�$�[5upn[R5n[R5n[R5n[R5nURXEUS9nURXgSS9n	[	S5H�n
UR5 UR(aURUR55 U	R5 UR(dMhURUR55 M� UR5 U	R5 UR[R5 UR5 SSS5 URUR55 U	R5 URUR55 UR5 g![Ra GNEf=f![Ra GNf=f!,(df   N�=f)Nr�TrJr:)r�r
r�rLr
r�r�r�r�rPr�unwrap)r��
client_ctx�
server_ctxr��c_inrW�s_inr[rXrLr�s           r&�test_unwrap�SSLObjectTests.test_unwrap}s���+:�+<�(�
���}�}����
�
����}�}����
�
����$�$�T�(�$�K���$�$�T�d�$�C���q��A�
��#�#�%��}�}��
�
�5�:�:�<�(�
��#�#�%��}�}�}��
�
�5�:�:�<�(��	���������
�
�s�3�3�
4��M�M�O�5�
	
�
�
�5�:�:�<� ��
�
��	
�
�
�5�:�:�<� ��
�
���7�'�'�
��
���'�'�
��
��5�
4�s0�
G�G&�H�G#�"G#�&G>�=G>�
Hr_N)r�rXrYrZrr�r`r_r(r&r�r�ws��$�
(r(r�c���\rSrSrSrSrSrSrSrSr	Sr
S	rS
rSr
\R"\R"S:HS
5S5rSrSrSrSrSrSrSrSrSrSrSrSrSrg)�SimpleBackgroundTestsi�z?Tests that connect to a simple server running in the backgroundc��[R[R5UlURR	[
5 [
URS9nURU5 [UR4Ul
g)NrS)r
rsrgr�r�r�rT�enterContextrFrM�server_addr)r�rLs  r&�setUp�SimpleBackgroundTests.setUp�s\��!�n�n�S�-D�-D�E������+�+�O�<�#�D�,?�,?�@�����&�!� �&�+�+�.��r(c��[[R"[R5[RS9nURUR5 UR0UR55 URUR5 SSS5 [[R"[R5[R[S9nURUR5 URUR55 URUR5 SSS5 g!,(df   N�=f!,(df   g=f)Nr�r�r�)r�rrxr
r�r�r�r��getpeercertr�r�r�r�rirs  r&�test_connect�"SimpleBackgroundTests.test_connect�s���
�f�m�m�F�N�N�;�&)�m�m�5�89�
�I�I�d�&�&�'����R�����1����Q�]�]�+�	5��f�m�m�F�N�N�;�&)�&7�&7�%/�1�45�
�I�I�d�&�&�'��O�O�A�M�M�O�,����Q�]�]�+�1�1�5�5��1�1�s�AD8�AE	�8
E�	
Ec�d�[[R"[R5[RS9nURUR5 [R"S[R5nUR[RUURUR5 g)Nr�|(
            certificate verify failed   # OpenSSL
            |
            CERTIFICATE_VERIFY_FAILED   # AWS-LC
        ))r�rrxr
r�r�r�r�r�r�r�r�r�r�)r�rr�s   r&�test_connect_fail�'SimpleBackgroundTests.test_connect_fail�sy��
�V�]�]�6�>�>�:�&)�&7�&7�
9�������� ��
�
�
��d�d�	��
	
���s�|�|�U� �y�y�$�*:�*:�	<r(c�L�[[R"[R5[R[
S9nUR
UR5 URSURUR55 URUR55 g)Nr�r)
r�rrxr
r�r�r�r�r�rEr�rir�rs  r&�test_connect_ex�%SimpleBackgroundTests.test_connect_ex�sj���V�]�]�6�>�>�:�&)�&7�&7�%/�
1��	
������ �����A�L�L��)9�)9�:�;�����
�
��(r(c���[[R"[R5[R[
SS9nUR
UR5 URS5 URUR5nURUS[R[R45 [R"/U//S5 UR!5 UR'UR)55 g![R"a [R"U///S5 O3[R$a [R"/U//S5 Of=fM�)NF)r�r�r�rr�)r�rrxr
r�r�r�r�r�rEr�r�rG�EINPROGRESSrK�selectr�r��SSLWantWriteErrorrir��r�rrNs   r&�test_non_blocking_connect_ex�2SimpleBackgroundTests.test_non_blocking_connect_ex�s��
�V�]�]�6�>�>�:�&)�&7�&7�%/�49�
;��	
������ �	�
�
�e��
�\�\�$�*�*�
+���
�
�b�1�e�/�/��1B�1B�C�D��
�
�b�1�#�r�3�'��
0���� ��	
����
�
��(���'�'�
0��
�
�q�c�2�r�3�/��(�(�
0��
�
�b�1�#�r�3�/�
0��
s�D�.E&�6-E&�%E&c���[R[R5nSUl[RUlUR
[R"[R55nURUR5 UR0UR55 SSS5 UR
[R"[R5SS9nURUR5 SSS5 [RUlUR[5 UR
[R"[R55nURUR5 UR5nUR!U5 SSS5 g!,(df   GN=f!,(df   N�=f!,(df   g=f)NF�dummyr�)r
rsrhr�r�r�r�rrxr�r�r�r�r�r�r�ri�r�r[rr�s    r&�test_connect_with_context�/SimpleBackgroundTests.test_connect_with_context�s6���n�n�S�4�4�5��"����-�-���
�_�_�V�]�]�6�>�>�:�
;�q�
�I�I�d�&�&�'����R�����1�<��_�_�V�]�]�6�>�>�:�,3��5�89�
�I�I�d�&�&�'�5��+�+����!�!�*�-�
�_�_�V�]�]�6�>�>�:�
;�q�
�I�I�d�&�&�'��=�=�?�D��O�O�D�!�<�
;�<�
;��5�5��<�
;�s$�3<F0�)G�*=G�0
F?�
G�
G!c��[R[R5nUR[R"[R
5[S9nURUR5 [R"S[R5nUR[RUURUR5 g)Nr�r�)r
rsrhr�rrxr�r�r�r�r�r�r�r�r�r�)r�r[rr�s    r&�test_connect_with_context_fail�4SimpleBackgroundTests.test_connect_with_context_fails����n�n�S�4�4�5���O�O��M�M�&�.�.�)�4�
�
��	
������ ��
�
�
��d�d�	��
	
���s�|�|�U� !�	�	�4�+;�+;�	=r(c��[R[R5nUR[S9 UR[R"[R5[S9nURUR5 UR5nURU5 SSS5 [R[R5nUR[S9 UR[R"[R5[S9nURUR5 UR5nURU5 SSS5 g!,(df   N�=f!,(df   g=f)Nr�r�)r
rsrhr�r�r�rrxr�r�r�r�rirrs    r&�test_connect_capath�)SimpleBackgroundTests.test_connect_capaths���n�n�S�4�4�5���!�!��!�0�
�_�_�V�]�]�6�>�>�:�-E��G�JK�
�I�I�d�&�&�'��=�=�?�D��O�O�D�!�	G��n�n�S�4�4�5���!�!��!�6�
�_�_�V�]�]�6�>�>�:�-E��G�JK�
�I�I�d�&�&�'��=�=�?�D��O�O�D�!�	G�G�G�G��G�G�s�-=E$�=E5�$
E2�5
Fc��[[5nUR5nSSS5 [R	W5n[R[R5nURUS9 UR[R"[R5[S9nURUR5 UR5nURU5 SSS5 [R[R5nURUS9 UR[R"[R5[S9nURUR5 UR5nURU5 SSS5 g!,(df   GN=f!,(df   N�=f!,(df   g=f)Nrr�)rOr�rPr
rNrsrhr�r�rrxr�r�r�r�ri)r�rRrTrnr[rr�s       r&�test_connect_cadata�)SimpleBackgroundTests.test_connect_cadata1sM��
�*�
���&�&�(�C���&�&�s�+���n�n�S�4�4�5���!�!��!�-�
�_�_�V�]�]�6�>�>�:�-E��G�JK�
�I�I�d�&�&�'��=�=�?�D��O�O�D�!�	G��n�n�S�4�4�5���!�!��!�-�
�_�_�V�]�]�6�>�>�:�-E��G�JK�
�I�I�d�&�&�'��=�=�?�D��O�O�D�!�	G�G��
��
G�G��G�G�s#�F�&=F+�=F<�
F(�+
F9�<
G
rz*Can't use a socket as a file under Windowsc�`�[[R"[R55nURUR5 UR5nUR
5nUR5 [R"US5 UR5 [R"5 UR[5n[R"US5 SSS5 URWRR [ R"5 g!,(df   NC=fr�)r�rrxr�r��fileno�makefiler�rrPrQrRrr�r�r�rG�EBADF)r�r}�fdrRr�s     r&�test_makefile_close�)SimpleBackgroundTests.test_makefile_closeFs���
�f�m�m�F�N�N�;�
<��
�
�
�4�#�#�$�
�Y�Y�[���K�K�M��	���	�
����A��
���
�
�
�
��
�
�
�w�
'�1��G�G�B��N�(�������*�*�E�K�K�8�(�
'�s�
D�
D-c�v�[R"[R5nURUR5 UR	S5 [U[RSS9nURUR5 SnUS-
nUR5 [R(a#[ R"R%SU-5 gg![Ra [R"U///5 O2[Ra [R"/U//5 Of=fM�)NF�r�r�rrVz9
Needed %d calls to do_handshake() to establish session.
)rrxr�r�r�r�r
r�r�r�r�r�r�r�rr�r�r�r�)r�r�counts   r&�test_non_blocking_handshake�1SimpleBackgroundTests.test_non_blocking_handshakeYs����M�M�&�.�.�)��	�	�	�$�"�"�#�	�
�
�e���Q�&)�m�m�49�
;��	
������ ����
+���
����� ��
�?�?��J�J���Z�]b�b�c���	�'�'�
+��
�
�q�c�2�r�*��(�(�
+��
�
�b�1�#�r�*�
+��s�	C�-D6�,D6�5D6c�>�[U/URQ7S[06 g)Nr�)�_test_get_server_certificater�r�r�s r&�test_get_server_certificate�1SimpleBackgroundTests.test_get_server_certificatens��$�T�N�D�,<�,<�N�:�Nr(c	��^�URup/mU4SjnURRU5 [R	X45nU(dURSU<SU<S35 [R	X4[S9nU(dURSU<SU<S35 [R(a,[RRSU<SU<SU<S35 URTX/5 g)	Nc�(>�TRU5 gr^)�append)�ssl_sock�server_name�initial_context�server_namess   �r&�
servername_cb�LSimpleBackgroundTests.test_get_server_certificate_sni.<locals>.servername_cbvs�������,r(�No server certificate on �:�!�r��
Verified certificate for � is
r)
r�r�rCr
�get_server_certificaterQr�rr�r�r�r�r�)r��hostrMr(rTr's     @r&�test_get_server_certificate_sni�5SimpleBackgroundTests.test_get_server_certificate_sniqs�����%�%�
����	-����3�3�M�B��(�(�$��6����I�I�4��F�G��(�(�$��
�(�K����I�I�4��F�G��?�?��J�J���D�RV�X[�\�]������|�4r(c�0�[U/URQ76 gr^)�!_test_get_server_certificate_failr�r�s r&� test_get_server_certificate_fail�6SimpleBackgroundTests.test_get_server_certificate_fail�s��	*�$�B��1A�1A�Br(c��SnURRU5 UR[R5 [
R
UR[SS9 SSS5 g!,(df   g=f)Nc�0�[R"S5 g)N皙�����?)r��sleep�r$r%r&s   r&r(�PSimpleBackgroundTests.test_get_server_certificate_timeout.<locals>.servername_cb�s
���J�J�s�Or(皙�����?)r�r�)	r�rCrrr�r
r0r�r�)r�r(s  r&�#test_get_server_certificate_timeout�9SimpleBackgroundTests.test_get_server_certificate_timeout�sY��	����3�3�M�B�
�
�
�v�~�~�
.��&�&�t�'7�'7�*�/2�
'�
4�/�
.�
.�s�$A+�+
A9c��[[R"[R5[RSS9nURUR5 SSS5 [[R"[R5[RSS9nURUR5 SSS5 UR[RS5 [R"[R5n[U[RSS9nURUR5 SSS5 SSS5 g!,(df   N�=f!,(df   N�=f!,(df   N9=f!,(df   g=f)Nri)r�r�rjrkrl)	r�rrxr
r�r�r�r�r�)r�rr�s   r&rn�"SimpleBackgroundTests.test_ciphers�s	��
�f�m�m�F�N�N�;�'*�}�}�e�E�HI�
�I�I�d�&�&�'�E��f�m�m�F�N�N�;�'*�}�}�i�I�LM�
�I�I�d�&�&�'�I��
#�
#�C�L�L�2M�
N����v�~�~�.�$�$�T�.1�m�m�EW�Y���	�	�$�*�*�+�/�O�
N�E�E��I�I��
/�.��O�
N�s;�E
�E�%E=�5E,�9E=�

E�
E)�,
E:	�6E=�=
Fc��[R[R5nUR[S9 URUR
5/5 UR[R"[R5SS9nURUR5 UR5nURU5 SSS5 UR[UR
55S5 g!,(df   N8=f)Nr�r3r�rV)r
rsrhr�r�r�rmr�rrxr�r�r�rirjrs    r&�test_get_ca_certs_capath�.SimpleBackgroundTests.test_get_ca_certs_capath�s����n�n�S�4�4�5���!�!��!�0�����)�)�+�R�0�
�_�_�V�]�]�6�>�>�:�-8��:�=>�
�I�I�d�&�&�'��=�=�?�D��O�O�D�!�	:�
	
����S�-�-�/�0�!�4�:�:�s�	=C8�8
Dc���[R[R5nUR[S9 [R[R5nUR[S9 [
R
"[
R5nURUSS9nURUR5 URURU5 URURRU5 X$lURURU5 URURRU5 SSS5 g!,(df   g=f)Nr�r3r�)
r
rsrhr�r�rrxr�r�r�rr�rO)r��ctx1�ctx2rr}s     r&�test_context_setget�)SimpleBackgroundTests.test_context_setget�s����~�~�c�5�5�6���"�"�&�"�1��~�~�c�5�5�6���"�"�&�"�1��M�M�&�.�.�)��
�
�
�a��
�
=���J�J�t�'�'�(��M�M�"�*�*�d�+��M�M�"�*�*�,�,�d�3��J��M�M�"�*�*�d�+��M�M�"�*�*�,�,�d�3�
>�
=�
=�s
�!B&E�
Ec���URS[R5nSn[R"U5H�n	Sn
US-
nU"U6nUR5n
URU
5 U
c OUU
[R:XdMLURS5n
U
(aURU
5 MwUR5 M� [R(a-[R RSX�R"4-5 W$![R
aFnUR[R[R4;aeURn
SnAGNSnAff=f)Nr�rrVi�z"Needed %d calls to complete %s().
)�getr�
SHORT_TIMEOUT�
busy_retryr
r�rGr��SSL_ERROR_WANT_WRITErP�sendallr�r�r�r�r�r�r�)r�r��incomingr�r}r{r�r�rr�rG�retr��bufs              r&�ssl_io_loop�!SimpleBackgroundTests.ssl_io_loop�s ���*�*�Y��(=�(=�>�����#�#�G�,�A��E��Q�J�E�
 ��D�k���-�-�/�C��L�L����}���#�1�1�1��i�i��&����N�N�3�'��&�&�(�/-�0�?�?��J�J���B� %�}�}�5�6�
7��
��-�<�<�
 ��7�7�3�#:�#:�#&�#;�#;�#=�=�������	
 �s�D�E"�;E�E"c��[R"[R5nURUR5 UR	UR
5 [R5n[R5n[R[R5nURUR5 URUR[R5 UR[ 5 UR#X#S[$5nUR'UR(R*U5 UR-UR/55 UR-UR155 UR-UR355 UR5[6UR85 S[R:;a4UR15S:wa UR-UR=S55 UR?XX5R@5 URUR/55 UR-UR355 URCUR155 URUR955 S[R:;a4UR15S:wa URUR=S55 UR?XX5RD5 UR5[RHURJS5 g![RFa NBf=f)NFr��TLSv1.3r8)&rrxr�r�r�r�r
r�rsrhrir�r�r�r�r�r�rLr�rrO�ownerr��cipherr=�shared_ciphersrr�r�r]r�rTr��assertIsNotNoner��SSLSyscallErrorr�r�)r�r�rQr�r[�sslobjs      r&�test_bio_handshake�(SimpleBackgroundTests.test_bio_handshake�sA���}�}�V�^�^�,������
�
�#����T�%�%�&��=�=�?���=�=�?���n�n�S�4�4�5������*�*�+�������#�*;�*;�<��!�!�*�-����h�%�6�8���
�
�f�n�n�*�*�F�3����&�-�-�/�*����&�.�.�*�+����&�/�/�1�2����*�f�&8�&8�9��3�4�4�4����9I�Y�9V����f�8�8��F�G������3F�3F�G�����
�
��(����&�/�/�1�2����V�^�^�-�.�����*�*�,�-��3�4�4�4����9I�Y�9V��O�O�F�6�6�|�D�E�	����T�X�}�}�E�
	
���#�,�,����f�=��	�"�"�	�
�	�s�#L+�+M�Mc��[R"[R5nURUR5 UR	UR
5 [R5n[R5n[R[R5nSUl
[RUlURX#S5nURXX5R5 SnURXX5R U5 URXX5R"S5nUR%US5 URXX5R&5 g)NF�FOO
�sfoo
)rrxr�r�r�r�r
r�rsrhr�r�r�rLrTr�r�rPr�r�)r�r�rQr�r[r]�reqrSs        r&�test_bio_read_write_data�.SimpleBackgroundTests.test_bio_read_write_data	s����}�}�V�^�^�,������
�
�#����T�%�%�&��=�=�?���=�=�?���n�n�S�4�4�5��"����-�-������h�%�8�������3F�3F�G��������<�<��E����t�x���d�K������h�'������=�=�Ar(c���[5upn[R"[R5nURUR5 [
R
5n[
R
5nURXVUS9nURXEXgR5 UR5 UR[
RUR5 SSS5 g!,(df   g=f)Nr�)r�rrxr�r�r
r�rLrTr�r�r�SSLEOFErrorrP)r�r�r�r�r�rQr�r]s        r&�test_transport_eof�(SimpleBackgroundTests.test_transport_eof	s���3B�3D�0���
�]�]�6�>�>�
*�d��L�L��)�)�*��}�}��H��}�}��H�#�,�,�X�=E�-�G�F����T�X�7J�7J�K�
��� ����c�o�o�v�{�{�;�+�
*�
*�s�B*C%�%
C3)r�r�N) r�rXrYrZ�__doc__r�r�r�r�rrr	rrryr�rr%rrrr2r6r?rnrDrIrTr^rdrhr`r_r(r&r�r��s���I�/�
,�<� )�)�4"�(=�&"�."�*�_�_�R�W�W��_�&R�S�9�T�9�$d�*O�5�*C�
4�,�
5�
4� �D">�HB�"<r(r��networkc��\rSrSrSr\R"\RS5\	R"S5S55rSrg)�NetworkedTestsi#	c�B�[R"[5 [[R"[R
5[RSS9nURUR5 URS5 UR[S45nUS:XaURS5 O%U[R:XaURS5 URU[R [R"45 SSS5 g!,(df   g=f)NFrgH�����z>�rz!REMOTE_HOST responded too quicklyzNetwork unreachable.)r�transient_internet�REMOTE_HOSTr�rrxr
r�r�r�r�rEr@rG�ENETUNREACHr��EAGAINrKrs   r&�test_timeout_connect_ex�&NetworkedTests.test_timeout_connect_ex&	s����
-�
-�k�
:� ����v�~�~�!>�*-�*;�*;�8=�?�A�
�O�O�A�G�G�$�
�L�L��#����{�C�0�1�B��Q�w��
�
�A�B��u�(�(�(��
�
�4�5��M�M�"�u�|�|�U�->�->�?�@�;�
:�
:�s�C,D�
Dz
Needs IPv6�walltimec��[R"S5 [USS5 [USS5 SSS5 g!,(df   g=f)Nzipv6.google.comro)rrprr5r�s r&� test_get_server_certificate_ipv6�/NetworkedTests.test_get_server_certificate_ipv66	s:���
-�
-�.?�
@�(��/@�#�F�-�d�4E�s�K�A�
@�
@�s	�;�
A	r_N)
r�rXrYrZrtryr\r�IPV6_ENABLEDr�requires_resourcerxr`r_r(r&rmrm#	sE��A� ����3�3�\�B����z�*�L�+�C�Lr(rmc	�b�[RX45nU(dURSU<SU<S35 [RX4US9nU(dURSU<SU<S35 [R(a-[
RRSU<SU<SU<S35 gg)Nr*r+r,r-r.r/r)r
r0rQrr�r�r�r�)�testr1rMr�rTs     r&rr>	sy��

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

�
$�
$�d�\�D�
$�
A�C���	�	�t�T�B�C�����
�
����d�TW�X�Y�r(c
��[R"U5 [RX4[S9nURSU<SU<SU<S35 SSS5 g![RaAn[R(a"[RRSU-5 SnANYSnAff=f!,(df   g=f)Nr-zGot server certificate z for r+r,z%s
)r
�check_no_resource_warningr
r0rrQr�rr�r�r�r�)r}r1rMrT�xs     r&r5r5I	s���	�	2�	2�4�	8�	R��,�,�d�\�H�,�M�C�
�I�I��T�4�P�Q�
9�	8���|�|�	-�����
�
� � ��!��,���	-��
9�	8�s3�B1�A�B1�B.�-7B)�$B1�)B.�.B1�1
B?)�make_https_serverc�z�\rSrSr"SS\R
5rS
SjrSrSr	SSjr
S	rS
rSr
Srg)rTiW	c�<�\rSrSrSrSrSrSrSrSr	Sr
S	rg
)�$ThreadedEchoServer.ConnectionHandleriY	z�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���XlSUlX lX0lURR	S5 SUl[RRU5 SUl	g�NFT)
rL�runningr��addrr��sslconnr�r�__init__�daemon)r�rL�connsockr�s    r&r��-ThreadedEchoServer.ConnectionHandler.__init___	sL�� �K� �D�L� �I��I��I�I�!�!�$�'��D�L����%�%�d�+��D�Kr(c���URRRURSS9UlURR
R
URR55 URRR
URR55 URRR[R:XGaURR5n[R(aTURR(a9[ R"R%S[&R("U5-S-5 URRS5n[R(ajURR(aOUc [ R"R%S5 O,[ R"R%S[+U5S35 URR-5n[R(aIURR(a.[ R"R%S[/U5-S-5 g![0[2[44a�nURR6R
[/U55 URR(a$[9S	[;UR<5-S
-5 SUlURA5 SnAgSnAf[RB[D4a�nURR6R
[/U55 URR(a$[9S	[;UR<5-S
-5 URF[FRH:wa+[ RJS:waSUlURA5 SnAgSnAff=f)
NTrJz client cert is rz 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)&rLr�r�r�r��selected_alpn_protocolsr#�selected_alpn_protocolrZr�r
r�r�rr��chattyr�r�r�rr rjrYrc�ConnectionResetError�BrokenPipeError�ConnectionAbortedError�conn_errorsr�rr�r�r�r�r�rG�
EPROTOTYPEr^)r�r��cert_binaryrYr�s     r&�	wrap_conn�.ThreadedEchoServer.ConnectionHandler.wrap_conni	s���:
�#�{�{�2�2�>�>��I�I�4� ?� 1������3�3�:�:�4�<�<�;^�;^�;`�a�R���*�*�1�1�$�,�,�2M�2M�2O�P��;�;�&�&�2�2�c�6G�6G�G��<�<�3�3�5�D����4�;�;�+=�+=��
�
�(�(�);�f�n�n�T�>R�)R�UY�)Y�Z�"&�,�,�":�":�4�"@�K����4�;�;�+=�+=�&�.��J�J�,�,�-O�P��J�J�,�,�/?��K�@P�?Q�QT�-U�V����,�,�.���?�?�t�{�{�'9�'9��J�J�$�$�%I�C�PV�K�%W�Z^�%^�_���m)�/�;Q�R�
����'�'�.�.�s�1�v�6��;�;�%�%� �!K�d�SW�S\�S\�o�!]�`e�!e�f�$����
�
�����L�L�'�*�
����'�'�.�.�s�1�v�6��;�;�%�%� �!K�d�SW�S\�S\�o�!]�`e�!e�f�
�7�7�e�.�.�.�3�<�<�8�3K�#(�D�L��J�J�L���+
�s&�A0I8�8O3�
BL�O3�3B6O.�.O3c��UR(aURR5$URRS5$)Nrb)r�rPr�r�r�s r&rP�)ThreadedEchoServer.ConnectionHandler.read�	s/���|�|��|�|�(�(�*�*��y�y�~�~�d�+�+r(c��UR(aURRU5$URRU5$r^)r�r�r�r�)r�r�s  r&r��*ThreadedEchoServer.ConnectionHandler.write�	s1���|�|��|�|�)�)�%�0�0��y�y�~�~�e�,�,r(c��UR(aURR5 gURR5 gr^)r�r�r�r�s r&r��*ThreadedEchoServer.ConnectionHandler.close�	s'���|�|����"�"�$��	�	���!r(c��SUlURR(dUR5(dgUR(Ga�UR	5nUR5nU(d@SUlURR5UlSUlUR5 GOUS:Xa`[R(a:URR(a[RR!S5 UR5 gURR(a~US:Xax[R(a:URR(a[RR!S5 UR!S5 UR5(dgGOURR(a�UR(a�US:Xa�[R(a:URR(a[RR!S	5 UR!S5 URR5UlSUl[R(a:URR(a[RR!S
5 GOUS:Xa�[R(a:URR(a[RR!S5 URR#S
5nUR![%U5R'S5S-5 GOuUS:Xa}[R(a:URR(a[RR!S5 URR)5 UR!S5 GO�US:XaAURR/5bUR!S5 GO�UR!S5 GO�US:XaHURR/5nUR![%U5R'S5S-5 GO]US:XaSURR0R35nUR![5U5R7SS5S-5 GOUS:XaRURR0R95nUR![5U5R7SS5S-5 O�[R(awURR(a\UR=(a S=(d Sn[RR!SU<SU<SUR;5<SU<S3	5 UR!UR;55 UR(aGM�gg![a GNPf=f![*R,a6nUR![%U5R'S5S-5 SnANlSnAff=f![a�n[=U[>5(adURR@(a-[R(a[CS URD35 UR5 SUlSnAgURR@(a [R(a[GS!5 UR!S"5 O![a Of=fUR5 SUlSnAGNrSnAff=f)#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
VERIFIEDCHAINrV�bigsUNVERIFIEDCHAIN�	encrypted�unencryptedz server: read z (z), sending back z)...
z Connection reset by peer: zTest server failure:
sERROR
)$r�rL�starttls_serverr�rP�stripr�r�r�r�r�rr��connectionchattyr�r�r�r�rr��verify_client_post_handshaker
r�r�rO�get_verified_chainrj�to_bytes�get_unverified_chainr?rb�ConnectionErrorr��printr�r�)r��msg�strippedr�r�r��certs�ctypes        r&�run�(ThreadedEchoServer.ConnectionHandler.run�	s����D�L��;�;�.�.��~�~�'�'���,�,�,�[)��)�)�+�C�"�y�y�{�H�#�',���0�(,���(;�(;�(=�D�I�,0�D�L��
�
��!�W�,�"�?�?�t�{�{�/K�/K��J�J�,�,�-R�S��
�
����+�+�5�5�"�k�1�"�?�?�t�{�{�/K�/K��J�J�,�,�-b�c��
�
�7�+�#�~�~�/�/�"� 0��+�+�5�5�$�,�,�&�)�3�"�?�?�t�{�{�/K�/K��J�J�,�,�-`�a��
�
�7�+�$(�L�L�$7�$7�$9��	�'+���"�?�?�t�{�{�/K�/K��J�J�,�,�-Z�[��!�%5�5�"�?�?�t�{�{�/K�/K��J�J�,�,�-p�q�#�|�|�?�?��M���
�
�4��:�#4�#4�Z�#@�5�#H�I�!�V�+�"�?�?�t�{�{�/K�/K��J�J�,�,�-X�Y�0� �L�L�E�E�G�!�J�J�w�/�!�Z�/��<�<�3�3�5�A� �J�J�y�1� �J�J�z�2�!�Z�/�#�|�|�7�7�9���
�
�4��:�#4�#4�Z�#@�5�#H�I�!�%5�5� $��� 4� 4� G� G� I���
�
�3�u�:�#6�#6�q�%�#@�5�#H�I�!�%7�7� $��� 4� 4� I� I� K���
�
�3�u�:�#6�#6�q�%�#@�5�#H�I�#�O�O� �K�K�8�8�%)�\�\�%A�k�$S�m�E��J�J�,�,�03�U�C�I�I�K��.P�Q��
�
�3�9�9�;�/�Q�,�,�,�� '�!�!�	!��N #�|�|�K� �J�J�t�A�w�~�~�j�'A�E�'I�J�J��K��2�)�!�!�_�5�5� �;�;�-�-�'�/�/�!�$?��	�	�{�"K�L��
�
��',�����{�{�)�)�g�o�o�$�%=�>���
�
�:�.��"������J�J�L�#(�D�L�L��')�s��.Y�;W$�Y�3A%Y�BY�2DY�;BY�AY�/W5�	Y�2Y�Y�#AY�1AY�
AY�"B+Y�$
W2�.Y�1W2�2Y�5X?�	,X:�5Y�:X?�?Y�
]�A4]�;]�\�]�
\ �]�\ � ]�])r�r�r�rLr�r�N)r�rXrYrZrjr�r�rPr�r�r�r`r_r(r&�ConnectionHandlerr�Y	s'��	8�	�;	�z	,�	-�	"�a	)r(r�Nc��U
(aX�lO�[RUbUO[R5UlUbUO[RURlU(aURR
U5 U(aURRU5 U(aURRU5 U	(aURRU	5 XPl
X`lXpl[R"5Ul[R "UR5UlSUlSUl/Ul/Ul/Ul[.R0R3U5 SUlSUlgr�)r�r
rsrgr�r�r�r��set_alpn_protocolsrYr�r�r�rr�rrDrM�flag�activer�rZr�r�rr�r��_in_context)r��certificate�ssl_version�certreqs�cacertsr�r�r��alpn_protocolsr�r�s           r&r��ThreadedEchoServer.__init__
s��
�"�L��>�>�-8�-D�+6�/2�/F�/F�H�D�L�5=�4H��-0�]�]�
�L�L�$�����2�2�7�;�����,�,�[�9�����/�/��?�����(�(��1��� 0��.���M�M�O��	�!�+�+�D�I�I�6��	���	����')��$� ���������!�!�$�'���� ��r(c���UR(a[S5eSUlUR[R"55 UR
R
5 U$)Nz&Re-entering ThreadedEchoServer contextT)r�r��startr��Eventr��waitr�s r&�	__enter__�ThreadedEchoServer.__enter__>
sE������E�F�F�����
�
�9�?�?�$�%��	�	�����r(c�x�UR(deSUlUR5 UR5 gr�)r��stopr!�r�r{s  r&�__exit__�ThreadedEchoServer.__exit__F
s+������� ����	�	���	�	�r(c��UR(d[S5eXl[RRU5 g)N�4ThreadedEchoServer must be used as a context manager)r�r�r�r�rr��r�r�s  r&r��ThreadedEchoServer.startL
s6������F�H�
H��	������t�$r(c�\�UR(d[S5eURRS5 URR	S5 SUlUR(aURR5 UR
(a�URR5up[R(a?UR(a.[RRS[U5-S-5 UR!XU5nUR#5 UR%5 UR
(aM�UR/5 g![&aCn[R(a$[RRSU<S35 SnANlSnAf[(a UR+5 N�[,a^n[R(a?UR(a.[RRS[U5-S-5 SnAN�SnAff=f)	Nr�g�?r:Tz server:  new connection from rz connection timeout z connection handling failed: )r�r�r�r��listenr�r�r�r'rr�r�r�r�r�rr�r�r!�TimeoutError�KeyboardInterruptr��
BaseExceptionr�)r��newconn�connaddr�handlerr�s     r&r��ThreadedEchoServer.runS
ss������F�H�
H��	�	���S�!��	�	���������9�9��I�I�M�M�O��k�k�
J�$(�I�I�$4�$4�$6�!���?�?�t�{�{��J�J�$�$�%E�'+�H�~�&6�8<�&=�>��0�0���I���
�
�������k�k�k�&	
�
�
��� �
E��?�?��J�J�$�$�';�A�5��%C�D���$�
��	�	�� �
J��?�?�t�{�{��J�J�$�$�7�$�q�'�A�D�H�J���
J�s,�B"E�
H+�'9F%�%H+�	H+�
AH&�&H+c�b�URb"URR5 SUlggr^)r�r�r�s r&r��ThreadedEchoServer.closer
s&���9�9� ��I�I�O�O���D�I�!r(c��SUlgr�)r�r�s r&r��ThreadedEchoServer.stopw
s	����r()
r�r�r�r�r�r�r�r�rMr�rZr�r�)
NNNNTFFNNNr^)r�rXrYrZr�rr�r�r�r�r�r�r�r�r`r_r(r&rTrTW	sL��@)�I�,�,�@)�D6:�(,�FK� $�'+�	!!�F��%��>�
r(rTc�l�\rSrSr"SS\R
5rSrSrSr	Sr
S
S	jrS
rSr
Srg)�AsyncoreEchoServeriz
c�P�\rSrSr"SS\R
5rSrSrSr	Sr
g)	�AsyncoreEchoServer.EchoServeri~
c�8�\rSrSrSrSrSrSrSrSr	Sr
g	)
�/AsyncoreEchoServer.EchoServer.ConnectionHandleri�
c��[USUSS9Ul[RR	XR5 SUlUR
5 g)NTF)r�r�r�)r�rr�dispatcher_with_sendr��_ssl_accepting�_do_ssl_handshake)r��connr�s   r&r��8AsyncoreEchoServer.EchoServer.ConnectionHandler.__init__�
sG��.�t��7?�FK�M����-�-�6�6�t�[�[�I�&*��#��&�&�(r(c���[UR[R5(aNURR	5S:�a0UR5 URR	5S:�aM0g)NrT)rbrr
rr��handle_read_eventr�s r&�readable�8AsyncoreEchoServer.EchoServer.ConnectionHandler.readable�
sR���d�k�k�3�=�=�9�9��+�+�-�-�/�!�3��.�.�0��+�+�-�-�/�!�3�r(c��URR5 SUlg![R[R
4a g[Ra UR5s$[Ra e[a@nURS[R:XaUR5sSnA$SnAgSnAff=f)NFr)
rr�r�r
r�r�rg�handle_closer�r�r{rG�ECONNABORTED�r��errs  r&r��AAsyncoreEchoServer.EchoServer.ConnectionHandler._do_ssl_handshake�
s���0��K�K�,�,�.�+0�D�'���,�,�c�.C�.C�D������/��,�,�.�.��|�|����3��x�x��{�e�&8�&8�8�#�0�0�2�2�9��3�s'�$�$C�
#C�/C�0C�<C�Cc�X�UR(aUR5 gURS5n[R(a+[
RRS[U5-5 U(dUR5 gURUR55 g)Nrbz server:  read %s from client
)r�r�r�rr�r�r�r�rr�r�r?)r�r�s  r&�handle_read�;AsyncoreEchoServer.EchoServer.ConnectionHandler.handle_read�
sf���&�&��*�*�,��9�9�T�?�D�����
�
�(�(�)J�T�RV�Z�)W�X���
�
���	�	�$�*�*�,�/r(c��UR5 [R(a-[RRSUR-5 gg)Nz server:  closed connection %s
)r�rr�r�r�r�rr�s r&r��<AsyncoreEchoServer.EchoServer.ConnectionHandler.handle_close�
s3���
�
���?�?��J�J�$�$�%G�$�+�+�%U�V�#r(c��er^r_r�s r&r��<AsyncoreEchoServer.EchoServer.ConnectionHandler.handle_error�
s��r()r�rN)r�rXrYrZr�r�r�r�r�r�r`r_r(r&r�r��
s!��
)�
�

0�

0�
W�

r(r�c��Xl[R"[R[R5n[R
"US5Ul[RRX5 URS5 g)Nrwr:)r�rrx�SOCK_STREAMrrDrMr�
dispatcherr�r�r�s   r&r��&AsyncoreEchoServer.EchoServer.__init__�
sT��$�M��=�=�����1C�1C�D�D�%�/�/��b�9�D�I����(�(��4��K�K��Nr(c��[R(a"[RR	SU-5 URXR5 g)Nz$ server:  new connection from %s:%s
)rr�r�r�r�r�r�)r��sock_objr�s   r&�handle_accepted�-AsyncoreEchoServer.EchoServer.handle_accepted�
s3������
�
� � �!H�$�!N�O��"�"�8�]�]�;r(c��er^r_r�s r&r��*AsyncoreEchoServer.EchoServer.handle_error�
s��r()r�rMN)r�rXrYrZrr�r�r�r	r�r`r_r(r&�
EchoServerr�~
s$��1	�� =� =�1	�f	�	<�
	r(r
c���SUlSUlURU5UlURRUl[
RRU5 SUlgr�)	r�r�r
rLrMr�rr�r�)r�r�s  r&r��AsyncoreEchoServer.__init__�
sL����	�����o�o�h�/����K�K�$�$��	����!�!�$�'���r(c�T�SURR<SUR<S3$)N�<r��>)r�r�rLr�s r&�__str__�AsyncoreEchoServer.__str__�
s�� �N�N�3�3�T�[�[�A�Ar(c��UR[R"55 URR	5 U$r^)r�r�r�r�r�r�s r&r��AsyncoreEchoServer.__enter__�
s(���
�
�9�?�?�$�%��	�	�����r(c��[R(a[RR	S5 UR5 [R(a[RR	S5 UR
5 [R(a[RR	S5 [R"SS9 g)Nz cleanup: stopping server.
z! cleanup: joining server thread.
z cleanup: successfully joined.
T)�
ignore_all)	rr�r�r�r�r�r!r�	close_allr�s  r&r��AsyncoreEchoServer.__exit__�
sp���?�?��J�J���;�<��	�	���?�?��J�J���A�B��	�	���?�?��J�J���?�@����d�+r(Nc�N�Xl[RRU5 gr^)r�r�rr�r�s  r&r��AsyncoreEchoServer.start�
s���	������t�$r(c���SUlUR(aURR5 UR(a+[R"S5 UR(aM*gg! N=f)NTrV)r�r�r�r�loopr�s r&r��AsyncoreEchoServer.run�
sJ������9�9��I�I�M�M�O��k�k�
��
�
�a� ��k�k�k��
��s�A0�0A4c�F�SUlURR5 gr�)r�rLr�r�s r&r��AsyncoreEchoServer.stop�
s����������r()r�r�r�rMrLr^)r�rXrYrZrrr
r�rr�r�r�r�r�r`r_r(r&r�r�z
s;��B�h�)�)�B�H�B��

,�%��r(r�c��0n[UUSS9nU UR[R"5XVS9n	U	R[UR
45 U[
U5[U54H�n
U(a7[R(a"[RRSU-5 U	RU
5 U	R5nU(a7[R(a"[RRSU-5 X�R5:wdM�[SUSS[!U5USSR5[!U54-5e U	RS	5 U(a4[R(a[RRS
5 UR#U	R%5U	R'5U	R)5U	R+5U	R-5U	R.U	R0S.5 U	R35 SSS5 UR4US'UR6US
'SSS5 U$!,(df   N6=f!,(df   U$=f)zK
Launch a server, connect a client to it and try various reads
and writes.
F�r�r�r�)r��session� client:  sending %r...
� client:  read %r
�4bad data <<%r>> (%d) received; expected <<%r>> (%d)
N��over
� client:  closing connection.
)�compressionrY�peercert�client_alpn_protocolr=�session_reusedr$�server_alpn_protocols�server_shared_ciphers)rTr�rr�rFrMrr�rr�r�r�r�rPr?�AssertionErrorrjr�r+rYr�r�r=r.r$r�r�rZ)r�r��indatar�r��sni_namer$ryrLr�arg�outdatas            r&�server_params_testr6�
s���
�E�
��'-�16�8�F�
�
�
'�
'��
�
�� (�(�;�>?�
�I�I�t�V�[�[�)�*��	�&� 1�:�f�3E�F��#�����
�
�(�(�7�&�@�B�������&�&�(��#�����
�
�(�(�)>��)H�I��l�l�n�,�(�O�"�3�B�<��W��!�#�2�;�,�,�.��F��=�=�>�>�G�
�G�G�I����?�?��J�J�$�$�%F�G��L�L� �}�}���(�(�*��M�M�O�()�(@�(@�(B��9�9�;�"#�"2�"2��9�9��
�
�G�G�I�?;�@*0�)G�)G��%�&�)/�)>�)>��%�&�E
�F�L�E;�;��
��F�L�s*�$I,�C*I�"D	I�+&I,�
I)	�%I,�,
I;c��Uc[Rn[RS[RS[RS0Un[R
(a_U=(a S=(d Sn[RRU[RU5[RU5U4-5 [R"5 [RU5nU=RU-sl
[RU5n	U	=RU-sl
SSS5 [RUS5n
U
bY[!W	S5(aHU[R":Xa4U	R$U
:�a$[R"5 X�lSSS5 WR&[R":XaUR)S5 [+W	U5 X�4H3nX;lUR/[05 UR3[45 M5 [7X�S	S	S
9nU(d:[9S[RU5<S[RU5<S
35eUSLaX,S:wa[9SU<SUS<35egg!,(df   GNh=f!,(df   GN=f![R:a U(aeg[<a0n
U(dU
R>[>R@:waeSn
A
gSn
A
ff=f)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
rUriF)r�r�zClient protocol z  succeeded with server protocol r,Tr=zversion mismatch: expected z, got )!r
r�r�r�rr�r�r�r��get_protocol_namer
r{rsr��PROTOCOL_TO_TLS_VERSIONrLrWrfrUrkrYr\r�r�r�r�r�r6r1r�r�rG�
ECONNRESET)�server_protocol�client_protocol�expect_success�	certsreqs�server_options�client_options�certtype�	formatstrr�r��min_versionr[ryr�s              r&�try_protocol_comborD s������M�M�	��
�
�{����?����?���	�H�
���#�6��K�;K�	��
�
�����/�/��@��/�/��@�"�$�$�	%�

�	'�	'�	)�����8�����.�0������8�����.�0��
*�*�-�-�o�t�D�K���
�N�$5�6�6��s�/�/�/��*�*�[�8��
+�
+�
-�-8�*�.����#�"2�"2�2��"�"�5�)����7��/��#�����O�,��!�!�*�-�0�G�"�>�*/�%�I��� ��(�(��9��(�(��9�;�<�
<��D�(� �)�$4�4� �$2�E�)�4D�"F�G�
G�5�)�c
*�	)��".�
-��(�<�<��������Q�W�W��(8�(8�8��9���s7�AJ�J�J,�
J�
J)�,L�
	L�&K>�>Lc�b�UR5HnUHnSU3US;dM  g M g)NzKx=�descriptionTF)rv)r[�aliasesrY�aliass    r&�supports_kx_aliasrIns8���/�/�#���E��U�G�}��}� 5�5���$�r(c��\rSrSr\R
"S5S5r\R"\RS5S5r
SrSrSr
\R"\RS	5S
5rSr\R"\S5S
5rSrSQSjrSr\"S5S5rSrSrSr\"S5S5r\"S5S5r\"S5S5r\"S5S5rSr Sr!S r"S!r#S"r$S#r%S$r&S%r'S&r(S'r)S(r*S)r+S*r,\"S5S+5r-\"S5\"S5\.S,555r/\"S5\.S-55r0\"S5\"S5\.S.555r1\"S5S/5r2S0r3\R"S1\Rh;S25S35r5S4r6\R"\7"\S55S65S75r8S8r9S9r:S:r;S;r<S<r=S=r>S>r?S?r@S@rASArBSBrCSCrDSDrESErFSFrGSGrHSHrISIrJSJrK\"S5\R"\R�SK5SL55rM\"S5\R"\R�SK5SM55rNSNrOSOrPgP)R�
ThreadedTestsivrvc
�d�[R(a[RR	S5 [5upnUR
[R[RS9 [UUSSUS9 SSS5 SUlUR
[R[RS9 UR[R5n[UUSSUS9 SSS5 URS[WR 55 SSS5 UR
[R[RS9 UR[R5n[UUSSS9 SSS5 URS[WR 55 SSS5 UR
[R[RS9 UR[R5n[UUSSS9 SSS5 URS[WR 55 SSS5 g!,(df   GN�=f!,(df   GNk=f!,(df   GNP=f!,(df   GN=f!,(df   N�=f!,(df   N�=f!,(df   g=f)	z2Basic test of an SSL client connecting to a serverr)rXrLT)r�r�r�r�r3NFz@Cannot create a client socket with a PROTOCOL_TLS_SERVER context)r�r�r�r�)rr�r�r�r�r�r�r
rhrgr6r�rr�r�rcr�)r�r�r�r�r�s     r&�	test_echo�ThreadedTests.test_echoxs����?�?��J�J���T�"�3B�3D�0���
�\�\��!8�!8��AX�AX�\�
Y��n�.<�&*�T�(0�
2�Z�).��%�
�\�\��!8�!8��AX�AX�\�
Y��"�"�3�<�<�0�A�"�.�2@�*.��,4�6�1�

�M�M�R��A�K�K� �
�
Z��\�\��!8�!8��AX�AX�\�
Y��"�"�3�<�<�0�A�"�.�2@�*.��G�1�
�M�M�R��A�K�K� �
�Z��\�\��!8�!8��AX�AX�\�
Y��"�"�3�<�<�0�A�"�.�2@�*.��G�1�
�M�M�R��A�K�K� �
"�Z�
Y�9Z�
Y��1�0��Z�
Y��1�0��Z�
Y��1�0��Z�
Y�sx�.H7�7 I�I	�%-I� I?�&
I-�3-I?� J!�4
J�-J!�7
I�	
I	�I�
I*�-
I<	�7I?�?
J
�
J	�J!�!
J/z*test is only useful if the GIL is disabledc	��/nSqURURURUR[
R"URSS9URUR4HEn[S5H3nURX#S9 UR[US95 SSS5 M5 MG [R"5nUH+nURUS9 UR!5 SSS5 M- UH+nURUS9 UR#5 SSS5 M- UR$b5['UR$[(R*5(dUR$eSSS5 Sqg!,(df   GM=f!,(df   M�=f!,(df   M�=f!,(df   NH=f!Sqf=f)NTF)�warnings_filtersr:)r}�numr�)�thread)r�rM�test_alpn_protocols�test_getpeercert�test_crl_checkr��partial�test_check_hostname_idn�test_wrong_cert_tls12�test_wrong_cert_tls13r
r�r#rr	r�r�r!r�rbryrz)r�r�r}rQr�rRs      r&�test_ssl_in_multiple_threads�*ThreadedTests.test_ssl_in_multiple_threads�st����!%�� 	*�����(�(��%�%��#�#��!�!��0�0�%*���*�*��*�*���!��8�C����4��9����v�T�':�;�:�9�$��$"�;�;�=��%�F����V��4�����5�4�&�&�F����V��4����
�5�4�&��<�<�+�%�b�l�l�H�4E�4E�F�F� �l�l�*�>�%*�!�!:�9��
5�4��5�4��
>�=��%*�!�sm�BF>�E6�!%F>�F-�F	�, F-�F�AF-�+F>�6
F�	F>�	
F�F-�
F*�%F-�-
F;�7F>�>Gc���[R(a[RR	S5 [5upn[
USS9nU UR[R"5SUS9nUR[UR45 UR[5 UR5 SSS5 UR5 UR5nUR!US5 UR#5n[R(ad[RR	[$R&"U5S-5 [RR	S[)U5-S-5 SU;a(UR+S	[$R&"U5-5 S
US;aUR+S5 UR-SU5 UR-S
U5 [.R1US5n[.R1US
5n	UR3X�5 SSS5 SSS5 g!,(df   GN�=f!,(df   N)=f!,(df   g=f)NrF�r�r�)r�r��Can't get peer certificate.zConnection cipher is z.
r;z$No subject field in certificate: %s.r0zkMissing or invalid 'organizationName' field in certificate subject; should be 'Python Software Foundation'.r9r8)rr�r�r�r�r�rTr�rr�rFrMrr�r�r�rirYrr rcrQr�r
r$rg)
r�r�r�r�rLrr�rY�before�afters
          r&rT�ThreadedTests.test_getpeercert�s����?�?��J�J���T�"�3B�3D�0���#�N�5�I��
��+�+�F�M�M�O�DI�<D�,�F�IJ��	�	�4����-�.��&�&�z�2��M�M�O�3���� ��}�}�������&C�D�������?�?��J�J�$�$�V�^�^�D�%9�D�%@�A��J�J�$�$�%<�s�6�{�%J�U�%R�S��D�(��I�I�D�$�n�n�T�2�3�4�I��	�?�+��I�I�B�C��
�
�k�4�0��
�
�j�$�/��1�1�$�{�2C�D���0�0��j�1A�B������.�7F��V�3�2��
F�F���V�s=�%I�37I�*H<�;E0I�+I�<
I�I�
I	�I�
I-c���[R(a[RR	S5 [5upn[
[SS5nURUR[RU-5 [USS9nU UR[R"5US9nUR[UR 45 UR#5nUR%US5 SSS5 SSS5 U=R[R&-sl	[USS9n[(R*"S[(R,5nU UR[R"5US9nUR/[R0U5 UR[UR 45 SSS5 SSS5 SSS5 UR3[45 [USS9nU UR[R"5US9nUR[UR 45 UR#5nUR%US5 SSS5 SSS5 g!,(df   GN�=f!,(df   GN�=f!,(df   N�=f!,(df   N�=f!,(df   N�=f!,(df   Nn=f!,(df   g=f)	Nrr�rTr]r�r^r�)rr�r�r�r�r�rer
r�r�r�rTr�rr�rFrMr�rir�r�r�r�r�r�r��CRLFILE)	r�r�r�r�r�rLrr�r�s	         r&rU�ThreadedTests.test_crl_check�s-���?�?��J�J���T�"�3B�3D�0���
�S�5�q�
9������4�4�c�6H�6H�2�6M�N�$�N�4�H��
��+�+�F�M�M�O�<D�,�F�IJ��	�	�4����-�.��}�}�������&C�D�	F��	�#�#�s�'@�'@�@�#�#�N�4�H���
�
�
��d�d�	��
��+�+�F�M�M�O�<D�,�F�IJ��+�+�C�L�L�%�@��I�I�t�V�[�[�1�2�A�F��	�,�,�W�5�#�N�4�H��
��+�+�F�M�M�O�<D�,�F�IJ��	�	�4����-�.��}�}�������&C�D�	F��V�5F�F���V��(A�@��F�F���V��F�F���V�s��$J�0AI1�4J�$J7�<!J&�"J�?J&�J7�8$K�AK� K�1
J	�;J�
J�
J#�J&�&
J4	�0J7�7
K�
K	�K�
K'c���[R(a[RR	S5 [5upn[
USS9nU UR[R"5US9nUR[UR45 UR5nURUS5 SSS5 SSS5 [
USS9n[R"S[R 5nU UR[R"5SS9nUR#[$R&U5 UR[UR45 SSS5 SSS5 SSS5 [
USS9nU [R"5nUR#[(S5 URU5 SSS5 SSS5 SSS5 g!,(df   GN+=f!,(df   GN5=f!,(df   N�=f!,(df   N�=f!,(df   N�=f!,(df   Nv=f!,(df   N=f!,(df   g=f)	NrTr]r�r^r��invalidz'check_hostname requires server_hostname)rr�r�r�r�r�rTr�rr�rFrMr�rir�r�r�r�r
�CertificateErrorr�)r�r�r�r�rLrr�r�s        r&r��!ThreadedTests.test_check_hostnames����?�?��J�J���T�"�3B�3D�0���$�N�4�H��
��+�+�F�M�M�O�<D�,�F�IJ��	�	�4����-�.��}�}�������&C�D�	F��$�N�4�H���
�
�
��d�d�	��
��+�+�F�M�M�O�<E�,�G�JK��+�+�C�,@�,@�%�H��I�I�t�V�[�[�1�2�I�G��$�N�4�H��
�����A��+�+�J�,U�W�"�.�.�q�1�W�!��V�-F�F���V��$I�H��G�G���V��W�W��!����V�s��$G,�2AG�6G,�7$H �!H�<"G>�H�&H �I�I�/H1�I�	I�
G)	�$G,�,
G;�>
H�H�
H	�H � 
H.�1
H?�;I�
I	�I�
I!z)test requires hostname_checks_common_namec��[5upnUR(deSUl[USS9nU UR[R"5US9nUR[UR45 SSS5 SSS5 [[5upnSUl[USS9nU UR[R"5US9nUR[R5 UR[UR45 SSS5 SSS5 SSS5 g!,(df   N�=f!,(df   N�=f!,(df   NA=f!,(df   NJ=f!,(df   g=f)NFTr]r�)r�r�rTr�rr�rFrMr�rr
�SSLCertVerificationErrorrUs      r&r��.ThreadedTests.test_hostname_checks_common_nameDs7��4C�3D�0����9�9�9�9�5:��2�$�N�4�H��
��+�+�F�M�M�O�<D�,�F�IJ��	�	�4����-�.�F��
4C�9�3M�0���5:��2�#�N�4�H��
��+�+�F�M�M�O�<D�,�F�IJ��&�&�s�'C�'C�D��I�I�t�V�[�[�1�2�E�F��V�F�F���V��E�D��F�F���V�s_�$D?�"D.�:D?�/$E2� E!�3"E�E!�E2�.
D<	�8D?�?
E
�
E�E!�!
E/	�+E2�2
Fc���[R[R5nUR[5 URS5 [n[R[R5nUR[5 [USS9nU UR[R"5US9nUR[UR45 UR!5nUR#US5 UR%5SR'S5nUR#USSS	5 SSS5 SSS5 g!,(df   N=f!,(df   g=f�
NzECDHE:ECDSA:!NULL:!aRSATr]r�r^r�-r�)�ECDHE�ECDSA)r
rsrhr�r�rY�SIGNED_CERTFILE_ECC_HOSTNAMErgr��SIGNED_CERTFILE_ECCrTr�rr�rFrMr�rirY�split�r�r�r�r�rLrr�rYs        r&�
test_ecc_cert�ThreadedTests.test_ecc_cert\s������(?�(?�@���,�,�Z�8��"�"�#<�=�/������(?�(?�@���&�&�':�;�$�N�4�H��
��+�+�F�M�M�O�<D�,�F�IJ��	�	�4����-�.��}�}�������&C�D�����A��,�,�S�1������r��
�,>�?�
F��V�F�F���V�s%�$E�8A;E�3E�
E	�E�
E#z2test requires RFC 5280 check added in OpenSSL 3.0+c��[R5nUR[5 [n[R[
RS9nUR[5 [USS9nU UR[R"5US9nUR[R5 UR[UR 45 SSS5 SSS5 SSS5 [R5nUR[5 U=R"[R$)-sl[R[
RS9nUR[5 [USS9nU UR[R"5US9nUR[UR 45 UR'5nUR)US5 SSS5 SSS5 g!,(df   GN'=f!,(df   GN1=f!,(df   GN;=f!,(df   NM=f!,(df   g=f)Nr�Tr]r�r^)r
r�r��LEAF_MISSING_AKI_CA�"LEAF_MISSING_AKI_CERTFILE_HOSTNAMErrr��LEAF_MISSING_AKI_CERTFILErTr�rrr�r�rFrMr�r�r�ri)r�r�r�r�rLrr�s       r&�test_verify_strict� ThreadedTests.test_verify_strictqs����3�3�5���,�,�-@�A�5���3�3�G�<O�<O�3�P���&�&�'@�A�#�N�4�H��
��+�+�F�M�M�O�<D�,�F�IJ��&�&�s�|�|�4��I�I�t�V�[�[�1�2�5�F���3�3�5���,�,�-@�A��#�#��(>�(>�'>�>�#��3�3�G�<O�<O�3�P���&�&�'@�A�#�N�4�H��
��+�+�F�M�M�O�<D�,�F�IJ��	�	�4����-�.��}�}�������&C�D�	F��V�5�4��F�F���V��F�F���V�sa�2$H� H
�6"G8�H
� H�?$H?�#AH.�'H?�8
H�H
�

H	�H�
H+�.
H<	�8H?�?
I
c�4�[R[R5nUR[5 [R
RUlURS5 [n[R[R5nUR[5 UR[5 [USS9nU UR[ R "5US9nUR#[$UR&45 UR)5nUR+US5 UR-5SR/S5nUR+USSS	5 SSS5 SSS5 g!,(df   N=f!,(df   g=frm)r
rsrhr�r�rrrrorYrqrgr�rrr�rTr�rr�rFrMr�rirYrsrts        r&�test_dual_rsa_ecc�ThreadedTests.test_dual_rsa_ecc�s0������(?�(?�@���,�,�Z�8�*-���)?�)?��&��"�"�#<�=�/������(?�(?�@���&�&�':�;��&�&��7�$�N�4�H��
��+�+�F�M�M�O�<D�,�F�IJ��	�	�4����-�.��}�}�������&C�D�����A��,�,�S�1������r��
�,>�?�
F��V�F�F���V�s%�$F	�,A;E8�'F	�8
F	�F	�	
Fc���[R(a[RR	S5 [
R
[
R5nUR[5 [
R
[
R5n[
RUlSUl
UR[5 /SQnUH�upV[!USS9nU UR#[$R$"5US9nUR'UR(U5 UR+[,UR.45 UR15n	UR'UR(U5 UR3U	S5 SSS5 SSS5 M� [!USS9nU UR#[$R$"5SS9nUR5[
R65 UR+[,UR.45 SSS5 SSS5 SSS5 [!USS9nU(a[8R:"U5O	[=5 UR5[>5 UR#[$R$"5SS9 SSS5 SSS5 SSS5 [!USS9nU(a[8R:"U5O	[=5 UR5[@5 UR#[$R$"5S	S9 SSS5 SSS5 SSS5 g!,(df   GN�=f!,(df   GMz=f!,(df   GNM=f!,(df   GNW=f!,(df   GNa=f!,(df   N�=f!,(df   GN=f!,(df   GN=f!,(df   N�=f!,(df   N�=f!,(df   g=f)
NrT))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
rsrgr��IDNSANSFILErhr�r�r�r�r�rTr�rr�r�r�rFrMr�rirrgr
rr�UnicodeError�UnicodeDecodeError)
r�rPr�r��
idn_hostnamesr��expected_hostnamerLrr�s
          r&rW�%ThreadedTests.test_check_hostname_idn�s����?�?��J�J���T�"�����(?�(?�@���&�&�{�3��.�.��!8�!8�9��!�/�/���!%����%�%�j�1�
�
�.3@�.�O�'��t�L�F���(�(�����9H�)�J�MN��$�$�Q�%6�%6�8I�J��I�I�t�V�[�[�1�2��=�=�?�D��$�$�Q�%6�%6�8I�J��O�O�D�*G�H�
J���3@�$�N�4�H��
��$�$�V�]�]�_�5I�%�K�NO��&�&�s�';�';�<��I�I�t�V�[�[�1�2�=�K��
�~�d�C�v�$� �9�9�$�?� �]�#�
���l�+�����
�
��AR��S�
,�	#�
D�
�~�d�C�v�$� �9�9�$�?� �]�#�
���0�1�����
�
�� >�
 �
�
2�	#�
D�C�7J�J�����=�<��K�K���V��
,�+��	#�#��
D�C��"
2�1��	#�#��
D�C�s��$L1�<A<L�8L1�$M(�< M�"M�>M�M(� (N�N�$M:�N�
N�$(O�O�"$N/�O�O�
L.�)L1�1
M	�
M�M�
M%	� M(�(
M7�:
N�N�
N	�N�
N,�/
N=�9O�
O	�
O�
Oc�^�[5upnUR[5 [RUl[RRUl[USSS9nU UR[R"5US9nUR[UR45 URS5 SSS5 SSS5 g![R aAn["R$(a"[&R(R+SU-5 SnANaSnAf[,a`nUR.[.R0:wae["R$(a"[&R(R+SU-5 SnAN�SnAff=f!,(df   N�=f!,(df   g=f)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�rrrrorTr�rr�rFrMrQr�rr�r�r�r�r�rGr:�r�r�r�r�rLrr�s       r&rX�#ThreadedTests.test_wrong_cert_tls12�s<��4C�3D�0����&�&�x�0�%(�%6�%6��"�),���)?�)?��&�#�"�4�$�
����*�*�6�=�=�?�;C�+�E�HI�
E��	�	�4����-�.��	�	�C�D�!E��V���<�<�
?��?�?��J�J�$�$�%9�A�%=�>����
C��7�7�e�.�.�.���?�?��J�J�$�$�%=��%A�B���	
C��E�E���V�sa�$$F�F
�
!C
�+F
�<F�
F
�!7D�F
�
F
�*AF�F
�F
�
F
�
F	�F�
F,r�c���[5upnUR[5 [RUl[RRUl[RRUl[USSS9nU UR[R"5USS9nUR[UR45 UR[ S5 UR#S5 UR%S5 UR#S5 UR%S5 SSS5 SSS5 SSS5 g!,(df   N=f!,(df   N(=f!,(df   g=f)	NTr#F�r��suppress_ragged_eofszsalert unknown ca|EOF occurred|TLSV1_ALERT_UNKNOWN_CA|closed by the remote host|Connection reset by peer|Broken pipe�datarsshould have failed already)r�r�rr
r�r�rr�rUrTr�rr�rFrMr�r�r�rPrUs      r&rY�#ThreadedTests.test_wrong_cert_tls13 
s��3B�3D�0����&�&�x�0�%(�%6�%6��"�),���)?�)?��&�),���)?�)?��&�#�"�4�$�
���
�
'�
'��
�
��8@�=B�(�D�GH�
�I�I�t�V�[�[�)�*��'�'�������� ����t�����5�6����t���	D��V�
���	D�D���V�s=�%E �(8E� AD>�%E�-E �>
E�E�
E	�E � 
E.c�^^^^^�[R"5m[R"5m[R"5m[R"T[
5mUUU4SjnUUUU4Sjn[R"US9nUR5 U"5 UR5 g!UR5 f=f)zdA brutal shutdown of an SSL server should raise an OSError
in the client when attempting handshake.
c��>�TR5 TR5 TR5upUR5 TR5 TR5 gr^)r�r�r'r�)�newsockr��
listener_gone�listener_readyrs  ���r&�listener�2ThreadedTests.test_rude_shutdown.<locals>.listenerK
sC���
�H�H�J���� ��H�H�J�M�G��M�M�O�
�G�G�I����r(c�,>�TR5 [R"5nUR[T45 TR5 [	U5nTRS5 SSS5 g![a Nf=f!,(df   g=f)Nz2connecting to closed SSL socket should have failed)r�rr�rFr�rQr�)r�r$r�r�rMr�s  ����r&�	connector�3ThreadedTests.test_rude_shutdown.<locals>.connectorS
sx������!�����A��	�	�4��,�'��"�"�$�T�/��2�H��I�I�R�S�!���
�����!��s/�(B�A5�B�5
B�?B�B�B�
Br�N)	r�r�rrrDrFrr�r!)r�r�r�rlr�r�rMrs`   @@@@r&�test_rude_shutdown� ThreadedTests.test_rude_shutdown=
s����#���*��!���)�
��M�M�O���&�&�q�$�/��	 �
	T�
	T�
���H�-��	���	�	��K�
�F�F�H��A�F�F�H�s�B.�.Cc��[R(a[RR	S5 [
R
[
R5nUR[5 [
R
[
R5n[USS9nU UR[R"5[S9nUR[ UR"45 UR%S5 SSS5 SSS5 g![
R&a�nSnUR)U[
R*5 UR-UR.S5 UR-UR0U5 SUS	3nUR3[5U5U5 [6R8"S
[6R:5nUR3[5U5U5 SnAN�SnAff=f!,(df   N�=f!,(df   g=f)NrTr]r�zExpected connection failurez&unable to get local issuer certificater(�(z|CERTIFICATE_VERIFY_FAILED)z�(
                        certificate verify failed   # OpenSSL
                        |
                        CERTIFICATE_VERIFY_FAILED   # AWS-LC
                    ))rr�r�r�r�r
rsrgr�r�rhrTr�rr�r�rFrMrQr�rdrjr��verify_code�verify_messager�rr�r�r�)r�r�r�rLrr�r�r�s        r&�test_ssl_cert_verify_error�(ThreadedTests.test_ssl_cert_verify_errorf
s~���?�?��J�J���T�"�����(?�(?�@���&�&��7��.�.��!8�!8�9��#�N�4�H��
��$�$�V�]�]�_�5M�%�O�RS�5��I�I�t�V�[�[�1�2��I�I�;�<�	O��V���|�|�
5�B�C��)�)�!�S�-I�-I�J��$�$�Q�]�]�B�7��$�$�Q�%5�%5�s�;���u�$?�@�E��$�$�T�!�W�e�4��J�J�(��$�$�	 �E�
�$�$�T�!�W�e�4�4��
5��O�O���V�sI�(G6�G%�2D	�8G6�	G"�B;G�G%�G"�"G%�%
G3	�/G6�6
Hc�j�[R(a[RR	S5 [S5(a)[
[R[RS5 [
[R[RS5 [S5(a)[
[R[RS5 [S5(a8[
[R[RS[R5 [
[R[RS[R5 [S5(a8[
[R[RS[R5 [S5(a8[
[R[RS[R5 [
[R[RS[R5 [S5(a8[
[R[RS[R5 [S5(a6[
[R[RS[RS9 [
[R[RS[R[R-S9 [S5(a7[
[R[RS[RS9 gg)z:Connecting to an SSLv23 server with various client optionsrrFTr)r?N)rr�r�r�r�rirDr
rfrrr�r�r�r�r�r�s r&�test_PROTOCOL_TLS�ThreadedTests.test_PROTOCOL_TLS�
s����?�?��J�J���T�"��7�#�#��s�/�/��1C�1C�U�K��3�+�+�S�-=�-=�t�D��7�#�#��s�/�/��1C�1C�W�M��7�#�#��s�/�/��1C�1C�U�C�L]�L]�^��3�+�+�S�-=�-=�t�S�EV�EV�W��7�#�#��s�/�/��1C�1C�W�c�N_�N_�`��7�#�#��s�/�/��1C�1C�U�C�L]�L]�^��3�+�+�S�-=�-=�t�S�EV�EV�W��7�#�#��s�/�/��1C�1C�W�c�N_�N_�`��7�#�#��s�/�/��1C�1C�U�*-�/�/�
;�	�3�+�+�S�-=�-=�t�*-�/�/�C�O�O�*K�	M��7�#�#��s�/�/��1C�1C�U�.1�o�o�
?�$r(rc�\�[R(a[RR	S5 [[R[RS5 [[R[RS[R5 [[R[RS[R5 [[R[RS[RS9 [[R[RS5 g)z9Connecting to an SSLv3 server with various client optionsrrF�r@N)
rr�r�r�r�rDr
rr�r�rfr�rr�s r&�test_protocol_sslv3�!ThreadedTests.test_protocol_sslv3�
s����?�?��J�J���T�"��3�-�-�s�/A�/A�7�K��3�-�-�s�/A�/A�7�C�L]�L]�^��3�-�-�s�/A�/A�7�C�L]�L]�^��3�-�-�s�/?�/?��*-�/�/�	;��3�-�-�s�/A�/A�5�Ir(rc�|�[R(a[RR	S5 [[R[RS5 [[R[RS[R5 [[R[RS[R5 [S5(a)[[R[RS5 [[R[RS[RS9 g)z8Connecting to a TLSv1 server with various client optionsrrrFr�N)rr�r�r�r�rDr
rr�r�rirrfr�r�s r&�test_protocol_tlsv1�!ThreadedTests.test_protocol_tlsv1�
s����?�?��J�J���T�"��3�-�-�s�/A�/A�7�K��3�-�-�s�/A�/A�7�C�L]�L]�^��3�-�-�s�/A�/A�7�C�L]�L]�^��7�#�#��s�1�1�3�3E�3E�u�M��3�-�-�s�/?�/?��*-�/�/�	;r(rc��[R(a[RR	S5 [[R[RS5 [S5(a)[[R[RS5 [[R[RS[RS9 [[R[RS5 [[R[RS5 [[R[RS5 g)z_Connecting to a TLSv1.1 server with various client options.
Testing against older TLS versions.r�TLSv1.1rFr�N)
rr�r�r�r�rDr
rrirrfr�r�r�s r&�test_protocol_tlsv1_1�#ThreadedTests.test_protocol_tlsv1_1�
s����?�?��J�J���T�"��3�/�/��1E�1E�y�Q��7�#�#��s�3�3�S�5G�5G��O��3�/�/��1A�1A�5�*-�*;�*;�	=�	�3�+�+�S�-A�-A�9�M��3�/�/��1E�1E�u�M��3�/�/��1E�1E�u�Mr(rrc�,�[R(a[RR	S5 [[R[RS[R[R-[R[R-S9 [S5(a)[[R[RS5 [[R[RS[RS9 [[R[RS5 [[R5(aR[[R[RS5 [[R[RS5 [[R 5(aS[[R[R S5 [[R [RS5 gg)z_Connecting to a TLSv1.2 server with various client options.
Testing against older TLS versions.r�TLSv1.2)r?r@rFr�N)rr�r�r�r�rDr
r�r�r�rirrfr�rlrrr�s r&�test_protocol_tlsv1_2�#ThreadedTests.test_protocol_tlsv1_2�
sA���?�?��J�J���T�"��3�/�/��1E�1E�y�*-�/�/�#�/�/�*I�*-�/�/�#�/�/�*I�	L��7�#�#��s�3�3�S�5G�5G��O��3�/�/��1A�1A�5�*-�*;�*;�	=�	�3�+�+�S�-A�-A�9�M��C�.�.�/�/��s�3�3�S�5G�5G��O��s�1�1�3�3G�3G��O��C�0�0�1�1��s�3�3�S�5I�5I�5�Q��s�3�3�S�5I�5I�5�Q�2r(c���Sn[[SSSS9nSnU [R"5nURS5 UR	[
UR45 [R(a[RRS5 UGH�n[R(a"[RRSU-5 U(a"WRU5 UR5nO"URU5 URS5nUR5R!5nUS:Xa]UR#S	5(aG[R(a"[RRS
U-5 [%U5nSnGMUS:XabUR#S	5(aL[R(a"[RRSU-5 WR'5nSnGMo[R(dGM�[RRS
U-5 GM� [R(a[RRS5 U(aWRS5 OURS5 U(aWR)5 OUR)5 SSS5 g!,(df   g=f)z6Switching from clear text to encrypted and back again.)smsg 1sMSG 2r�sMSG 3smsg 4r�smsg 5smsg 6T)r�r�r�Frr%rbr�sokz/ client:  read %r from server, starting TLS...
r�z- client:  read %r from server, ending TLS...
z client:  read %r from server
r*r)N)rTrrr�r�rFrMrr�r�r�r�rPr�r�r�r?rdr�r�r�)	r��msgsrL�wrappedrr2r�r5r�s	         r&�
test_starttls�ThreadedTests.test_starttls�
s���c��#�H�48�+/�59�;����
��
�
��A�
�M�M�$��
�I�I�t�V�[�[�)�*�����
�
� � ��&����?�?��J�J�$�$�3�f�<�>���J�J�v�&�"�i�i�k�G��F�F�6�N��f�f�T�l�G��m�m�o�+�+�-���[�(�S�^�^�E�-B�-B�����
�
�(�(�N�!�"�#�,�A�.�D�"�G��y�(�S�^�^�E�-B�-B�����
�
�(�(�L�!�"�#����
�A�#�G������
�
�(�(�=��C�E�;�>����
�
� � �!B�C���
�
�9�%����y�!���
�
�����	�]�V�V�s�HK�B-K�
K c��[U[S9n[R(a[R
R
S5 [[S5nUR5nSSS5 SnSURS3n[R[S9n[RR!XVS	9nUR#5R%S
5nU(ak['U5S:�a\UR['U55n[R(a-[R
R
S[)U5U4-5 UR+5 UR-WU5 g!,(df   GN
=f!UR+5 f=f)
z8Using socketserver to create and manage SSL connections.r�r�rbNrwzhttps://localhost:z/test_ssl.py�r�rSzcontent-lengthrz/ client: read %d bytes from remote server '%s'
)r�r�rr�r�r�r�rOr#rPrMr
r�r��urllib�request�urlopen�inforLrerjr�r�)r�rLrRrUrW�urlr��dlens        r&�test_socketserver�ThreadedTests.test_socketservers��"�4�/�B���?�?��J�J���T�"�
�(�D�
!�Q�����B�"�
��"�6�;�;�-�|�<���,�,�J�,�?���N�N�"�"�3�"�8��		��6�6�8�<�<� 0�1�D���T��Q���V�V�C��I�&���?�?��J�J�$�$�J��r�7�F�+�,�-�
�G�G�I�����R� �#"�
!�� 
�G�G�I�s�E'�3BE9�'
E6�9Fc
��[R(a[RR	S5 Sn[[5nU [[R"55nURSUR45 [R(a"[RR	SU-5 UR	U5 UR5n[R(a"[RR	SU-5 XAR5:wa>URSUSS[U5USSR5[U54-5 UR	S	5 [R(a[RR	S
5 UR5 [R(a[RR	S5 SSS5 g!,(df   g=f)z'Check the example asyncore integration.rrarGr%r&r'Nr(r)r*z client:  connection closed.
)rr�r�r�r�r�rr�rr�rMrPr?rQrjr�)r�r2rLrr5s     r&�test_asyncore_server�"ThreadedTests.test_asyncore_server8sI���?�?��J�J���T�"���#�H�-��
� �����1�A�
�I�I�{�F�K�K�0�1�����
�
� � �/�&�8�:�
�G�G�F�O��f�f�h�G�����
�
� � �!6��!@�A��,�,�.�(��	�	�K��s��|�S��\��c�r�{�(�(�*�C��K�9�9�:�
�G�G�I������
�
� � �!B�C�
�G�G�I�����
�
� � �!A�B�)�V�V�s
�F%G6�6
Hc
�
^�[R(a[RR	S5 [[[R[R[SSS9nU [[R"5S[[[RS9mTR[UR45 U4SjnU4SjnSTRS/[ 4S	TR"SS
/[ 4STR$S/S4/nS
TR&S/4STR(SS
/4SUS/4SUS/4/nSnUH�upxp�nXg-R+S5nU"U/U
Q76n
SR-U5nUR/X�"U5US9 TR15nX�R35:wa;UR5SR-XSS[!U5USS[!U5S95 M�M� UHunnp�Xg-R+S5nTRU5 U"U
6nX�R35:wa;UR5SR-XSS[!U5USS[!U5S95 MM� SnTRU5 [=[!U55nUR/TR1S U5[!U55 UR/UU5 [>b^[>R@[!U5-nURCU5nTR%U5 UR/TR15U5 URE[FTRH5 URE[FTRJS/5 URE[FTRLS!5 URE[FTRN[=S!5/5 TR	S"5 URE[6TR&S 5 URE[6TR0S 5 TRQ5 SSS5 g![6avnU	(aUR5SR-US95 [9U5R;U5(d&UR5SR-UUS95 SnAGMiSnAGMpSnAff=f![6anU	(aUR5SR-US95 [9U5R;U5(dUR5SR-UUS95 TR15 SnAGMMSnAff=f!,(df   g=f)#z Test recv(), send() and friends.rTF�r�r�r�r�r��r�r�r�r�c�F>�[S5nTRU5nUSU$�Nsd)rr�)�brrs  �r&�
_recv_into�0ThreadedTests.test_recv_send.<locals>._recv_intohs&����i�(�����A�����%�y� r(c�J>�[S5nTRU5upUSU$r�)rr�)r�rr�rs   �r&�_recvfrom_into�4ThreadedTests.test_recv_send.<locals>._recvfrom_intoms)����i�(���o�o�a�0�����%�y� r(r�r�zsome.addressrPc��gr^r_)r�s r&�<lambda>�.ThreadedTests.test_recv_send.<locals>.<lambda>vs��4r(r�r�r�r��PREFIX_�asciizsending with {}�r�zpWhile sending with <<{name:s}>> bad data <<{outdata:r}>> ({nout:d}) received; expected <<{indata:r}>> ({nin:d})
Nr()r%r5�noutr2�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�rr�r)))rr�r�r�r�rTrr
r�rgr�rr�rFrMr�rjr�rPr�r�r��formatr�rPr?rQr�rcrdr�ctypes�c_ubyte�from_buffer_copyrr�r�r�r�r�r�)r�rLr�r��send_methods�recv_methods�data_prefix�	meth_name�	send_methr=r{�ret_val_methr2rRr�r5r��	recv_methr��buffer�ubyte�	byteslikers                      @r&�test_recv_send�ThreadedTests.test_recv_sendUs�����?�?��J�J���T�"�#�H�-0�]�]�03�0G�0G�,4�+/�5:�<��� �����,1�)1�)1�*-�-�-�	9�A�

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

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

���1�1�5�5�9����1�1�9�9�w�i�H����1�1�9�9�c�B����1��n�n�y��~�.>�
@�
�G�G�I�����j�!�&�&�"�5����j�!�&�&�"�5�
�G�G�I�w�V��f"��%��	�	�5�5;�V��V�5K���q�6�,�,�Y�7�7��	�	�;�;A�6�%.�A�<B�<���8��
��:"��%��	�	�5�5;�V��V�5K���q�6�,�,�Y�7�7��	�	�;�;A�6�%.�A�<B�<���F�F�H�H����a�V�sf�*C)T=�BP.� "T=�A"R1�%GT=�.
R.�8A#R)�T=�)R.�.T=�1
T:�;A3T5�.T=�5T:�:T=�=
Uc��[[5nURU5 [R"[
UR45nURUR5 [USS9nURUR5 URS5 URURS5S5 URURS5S5 URUR5S5 URS5 URURS5S5 URUR[!55S5 g)NF�r�r�rr()rTrr�rr�rFrMr�r�r�r�r�r�rPr�r�r)r�rLrs   r&�test_recv_zero�ThreadedTests.test_recv_zero�s���#�H�-�����&�!��$�$�d�F�K�K�%8�9�������� ��Q�U�;�������� �	
���w����������C�(���������C�(��������7�+�	
�
�
�e����������C�(�������Y�[�1�1�5r(c��[[5nURU5 [R"[
UR45nURUR5 [USS9nURUR5 URS5 [R"SSS/5nURURU5S5 UR[U5SSS5 "SS[5nURS5 U"S	5nURURU5S5 UR[U5S
5 g)NFr�r��Irr[c��\rSrSrSrSrg)�;ThreadedTests.test_recv_into_buffer_protocol_len.<locals>.Bi�c��SS- g�NrVrr_r�s r&�__len__�CThreadedTests.test_recv_into_buffer_protocol_len.<locals>.B.__len__�s	���!�r(r_N)r�rXrYrZr�r`r_r(r&�Br��s��
r(r�r�sdata)rTrr�rr�rFrMr�r�r�r��arrayr�r�r�r)r�rLrrSr�s     r&�"test_recv_into_buffer_protocol_len�0ThreadedTests.test_recv_into_buffer_protocol_len�s��#�H�-�����&�!��$�$�d�F�K�K�%8�9�������� ��Q�U�;�������� �	���w���k�k�#��1�v�&��������S�)�1�-�����s��B�Q���1�	�	�	�	
���w����d��������S�)�1�-�����s��[�1r(c	�:^^�[[[R[R[SSS9nU [[R"5S[[[RS9mTR[UR45 TRS5 [S5mUU4SjnUR[R[R4U5 TRS5 TR5 SSS5 g!,(df   g=f)NTFr�r�i c�,>�TRT5 Mr^)r�)rSrs��r&�fill_buffer�8ThreadedTests.test_nonblocking_send.<locals>.fill_buffers�����F�F�3�K�r()rTrr
r�rgr�rr�rFrMr�rrr�r�r�)r�rLr�rSrs   @@r&�test_nonblocking_send�#ThreadedTests.test_nonblocking_sends����#�H�-0�]�]�03�0G�0G�,4�+/�5:�<��� �����,1�)1�)1�*-�-�-�	9�A�

�I�I�t�V�[�[�)�*�
�M�M�%� ��D�/�C�
 �
���s�4�4�"�3�3�5�6A�
C�
�M�M�$��
�G�G�I�)�V�V�s�CD�
Dc��^^^�[R"[R5mSn[R"T5n[R
"5mSmUUU4Sjn[R"US9nUR5 TR5 [R"[R5nURS5 URX45 UR[S[U5 UR5 [R"[R5n[U5nURS5 UR[SURX45 UR5 SmUR5 TR5 g!WR5 f=f!UR5 f=f!SmUR5 TR5 f=f)NrGFc�&>�TR5 TR5 /nT(dN[R"T///S5upnTU;a"URTR	5S5 T(dMNUHnUR5 M g)Nr>r)r�r�r�r#r'r�)�connsrL�wr�r��finishrL�starteds     ���r&�serve�3ThreadedTests.test_handshake_timeout.<locals>.serve*ss����M�M�O��K�K�M��E�� �-�-���"�b�#�>���a��Q�;��L�L������!3�4��f����
�
��r(r�r:z	timed outT)rrxrrDr�r�rr�r�r�r�r�r�r�r�r!)	r�r1rMr	rlr�rrLrs	      @@@r&�test_handshake_timeout�$ThreadedTests.test_handshake_timeout"sZ������v�~�~�.�����&�&�v�.���/�/�#����	�
���E�*��	���	�����	�
��M�M�&�.�.�1�����S�!��	�	�4�,�'��&�&�|�[�'7��<����	�
��M�M�&�.�.�1��$�Q�'�����S�!��&�&�|�[�'(�y�y�4�,�@����	��F�
�F�F�H��L�L�N�����	�����	���F�
�F�F�H��L�L�N�s8�A#F �8G
�	A#F5�,G
� F2�2G
�5G�G
�
$G.c�P^
^^^
�[5upn[R"[R5m
Sn[R"T
5nURT
SS9m
UR
T
R5 [R"5m
SmSmU
UUU
4Sjn[R"US9nUR5 T
R5 UR[R"5US9nURX545 URS5 UR5 UR!5n	UR#5 UR%5 TR#5 T
R#5 UR'T[(R*5 UR-TU	5 g)NrGTrJc�>�TR5 TR5 TR5ummTRTR	S55 g)Nr[)r�r�r'r�r�)�evt�peer�remoterLs����r&r	�/ThreadedTests.test_server_accept.<locals>.serve`s8����M�M�O��G�G�I�!�=�=�?�L�F�D��K�K����A��'r(r�r�r�)r�rrxrrDr�rir�r�r�rr�r�r�r�r�r�r�r!rdr
rr�)r�r�r�r�r1rMr	rlrX�client_addrrrrrLs          @@@@r&�test_server_accept� ThreadedTests.test_server_acceptSs@���,;�+<�(�
�����v�~�~�.�����&�&�v�.���'�'��D�'�A������*�*�+��o�o�������	(�	(�
���E�*��	���	����
��'�'��M�M�O�X�(�
��	����'�(����G�����
��(�(�*������	���������������f�c�m�m�4�����{�+r(c��[R[R5nSUlUR	[
R
"55nUR
[5nUR5 SSS5 URWRR[R5 SSS5 g!,(df   NK=f!,(df   g=fr�)
r
rsrhr�r�rrr�r�r�r�rG�ENOTCONN�r�r�r�r�s    r&�test_getpeercert_enotconn�'ThreadedTests.test_getpeercert_enotconn{s����.�.��!8�!8�9��!&���
�
 �
 �����
1�T��"�"�7�+�r�� � �"�,����R�\�\�/�/����@�2�
1�+�+��2�
1��$�C�%B;�6<C�;
C		�C�
Cc��[R[R5nSUlUR	[
R
"55nUR
[5nUR5 SSS5 URWRR[R5 SSS5 g!,(df   NK=f!,(df   g=fr�)
r
rsrhr�r�rrr�r�r�r�rGrrs    r&�test_do_handshake_enotconn�(ThreadedTests.test_do_handshake_enotconn�s����.�.��!8�!8�9��!&���
�
 �
 �����
1�T��"�"�7�+�r��!�!�#�,����R�\�\�/�/����@�2�
1�+�+��2�
1�rc�>�[5upn[RRUlURS5 URS5 [
US9nUR[R"5US9nUR[5 UR[UR45 SSS5 SSS5 SSS5 URSWRS5 g!,(df   N>=f!,(df   NG=f!,(df   NP=f)N�AES128�AES256rSr��NO_SHARED_CIPHERr)r�r
rrrrorYrTr�rrr�r�rFrMr�r�rUs      r&�test_no_shared_ciphers�$ThreadedTests.test_no_shared_ciphers�s���3B�3D�0���),���)?�)?��&��"�"�8�,��"�"�8�,�
��
7�6��+�+�F�M�M�O�<D�,�F�IJ��&�&�w�/��I�I�t�V�[�[�1�2�0�F�8�
	
�
�
�(�&�*<�*<�Q�*?�@�0�/��F�F��8�
7�s<�$D�<C=�"C,�4C=�<D�,
C:�6C=�=
D	�D�
Dc���[R[R5nSUl[RUl[
[[RSS9nUR[R"55nURUR5S5 URURS5 UR[UR 45 UR#UR5S5 SSS5 URWRS5 URUR5S5 SSS5 g!,(df   NS=f!,(df   g=f)z\
Basic tests for SSLSocket.version().
More tests are done in the test_protocol_*() methods.
F)r�r�NrW)r
rsrhr�r�r�rTrrgr�rrr=rOr�rFrMr�)r�r�rLrs    r&�test_version_basic� ThreadedTests.test_version_basic�s���
�.�.��!8�!8�9��!&���!�m�m���
��,/�,C�,C�',�.�17��$�$�V�]�]�_�5���
�
�a�i�i�k�4�0��
�
�a�i�i��.��	�	�4����-�.�� � �����i�8�	6�

�M�M�!�)�)�T�*��M�M�!�)�)�+�t�,�.�.�6�5��.�.�s&�%E�A>E
�AE�
E	�E�
E,c���[5upn[RRUl[US9nUR
[R"5US9nUR[UR45 URUR5S1Sk5 URUR5S5 SSS5 SSS5 g!,(df   N=f!,(df   g=f)NrSr�r>�TLS_AES_128_GCM_SHA256�TLS_AES_256_GCM_SHA384�TLS_CHACHA20_POLY1305_SHA256rW)r�r
rr�rUrTr�rr�rFrMr�rYr�r=rUs      r&�test_tls1_3�ThreadedTests.test_tls1_3�s���3B�3D�0���),���)?�)?��&�
��
7�6��+�+�F�M�M�O�<D�,�F�IJ��	�	�4����-�.��
�
�a�h�h�j��m�.��
� � �����i�8�F�8�
7�F�F��8�
7�s$�$C#�A'C�C#�
C 	�C#�#
C1c�X�[5upn[RRUl[RR
Ul[RR
Ul[RR
Ul[US9nUR[R"5US9nUR[UR45 URUR5S5 SSS5 SSS5 g!,(df   N=f!,(df   g=f)NrSr�r�)r�r
rrrUrrrorTr�rr�rFrMr�r=rUs      r&�test_min_max_version_tlsv1_2�*ThreadedTests.test_min_max_version_tlsv1_2�s���4C�3D�0���),���)=�)=��&�),���)?�)?��&�),���)?�)?��&�),���)?�)?��&�
��
7�6��+�+�F�M�M�O�<D�,�F�IJ��	�	�4����-�.�� � �����i�8�F�8�
7�F�F��8�
7�s%�$D�7AD
�9D�

D	�D�
D)c�n�[5upn[RRUl[RR
Ul[RRUl[RRUl[X5 [US9nUR[R"5US9nUR[UR45 URUR!5S5 SSS5 SSS5 g!,(df   N=f!,(df   g=f)NrSr�r�)r�r
rrrUrrrorr\rTr�rr�rFrMr�r=rUs      r&�test_min_max_version_tlsv1_1�*ThreadedTests.test_min_max_version_tlsv1_1�s���4C�3D�0���),���)=�)=��&�),���)?�)?��&�),���)=�)=��&�),���)?�)?��&��N�;�
��
7�6��+�+�F�M�M�O�<D�,�F�IJ��	�	�4����-�.�� � �����i�8�F�8�
7�F�F��8�
7�s%�$D&�AD�D&�
D#	�D&�&
D4c���[5upn[RRUl[RRUl[RRUl[RRUl[X5 [US9nUR[R"5US9nUR[R5nUR[UR45 SSS5 UR![#WR$5S5 SSS5 SSS5 g!,(df   ND=f!,(df   N(=f!,(df   g=f)NrSr�z
(alert|ALERT))r�r
rrrrorUrr\rTr�rrr�r�rFrMr�rcr�r�s       r&�test_min_max_version_mismatch�+ThreadedTests.test_min_max_version_mismatch�s��4C�3D�0���),���)?�)?��&�),���)?�)?��&�),���)=�)=��&�),���)=�)=��&��N�;�
��
7�6��+�+�F�M�M�O�<D�,�F�IJ��&�&�s�|�|�4���I�I�t�V�[�[�1�2�5�� � ��Q�[�[�!1�?�C�	F�8�
7�5�4��F�F��8�
7�s<�$E$� E�""E�-E�1E$�
E�E�
E!	�E$�$
E2c�0�[5upn[RRUl[RRUl[RRUl[
X5 [US9nUR[R"5US9nUR[UR45 URUR5S5 SSS5 SSS5 g!,(df   N=f!,(df   g=f)NrSr�r)r�r
rrrUror\rTr�rr�rFrMr�r=rUs      r&�test_min_max_version_sslv3�(ThreadedTests.test_min_max_version_sslv3�s���3B�3D�0���),���)=�)=��&�),���)=�)=��&�),���)=�)=��&��N�;�
��
7�6��+�+�F�M�M�O�<D�,�F�IJ��	�	�4����-�.�� � �����g�6�F�8�
7�F�F��8�
7�s%�?$D�#AC6�%D�6
D	�D�
Dc��[5upn[RRUl[US9nUR
[R"5US9nUR[UR45 URSUR5S5 SSS5 SSS5 g!,(df   N=f!,(df   g=f)NrSr��ECDHr)
r�r
rrrrorTr�rr�rFrMr�rYrUs      r&�test_default_ecdh_curve�%ThreadedTests.test_default_ecdh_curve�s���4C�3D�0���*-���)?�)?��&�
 ��
7�6��+�+�F�M�M�O�<D�,�F�IJ��	�	�4����-�.��
�
�f�a�h�h�j��m�4�F�8�
7�F�F��8�
7�s$�$C�AB0�C�0
B>	�:C�
Cr�r�c���[R(a[RR	S5 [5upn[RRUl	[USSS9nU UR[R"5US9nUR[UR45 UR!S5n[R(a.[RR	SR#U55 UR%U5 UR'5S:XaUR)[+U5S	5 OUR)[+U5S
5 UR	S5 UR-5R/5nUR)U[1U5R3S55 S
S
S
5 UR[R"5US9nUR[UR45 UR!S5n[R(a.[RR	SR#U55 UR5WU5 UR%U5 UR'5S:XaUR)[+U5S	5 OUR)[+U5S
5 UR	S5 UR-5R/5nUR)U[1U5R3S55 S
S
S
5 S
S
S
5 g
!,(df   GN�=f!,(df   N)=f!,(df   g
=f)z Test tls-unique channel binding.rTFr#r�r�z! got channel binding data: {0!r}
rW�0�sCB tls-unique
r�Nz(got another channel binding data: {0!r}
)rr�r�r�r�r�r
rrrrorTr�rr�rFrMr�r�r[r=r�rjrPr�rr��assertNotEqual)	r�r�r�r�rLr�cb_data�peer_data_repr�new_cb_datas	         r&r��-ThreadedTests.test_tls_unique_channel_bindings����?�?��J�J���T�"�3B�3D�0���*-���)?�)?��&�#�N�+/�5:�<����+�+��M�M�O�$,�,�.�12��	�	�4����-�.��/�/��=���?�?��J�J�$�$�<�C�C�G�L�N��$�$�W�-��9�9�;�)�+��$�$�S��\�2�6��$�$�S��\�2�6����*�+�!"������!1��� � ��!%�g��!5�!5�j�!A�C�).�0 �+�+��M�M�O�$,�,�.�12��	�	�4����-�.��3�3�L�A���?�?��J�J�$�$�C�J�J�'�)��
�#�#�G�[�9��$�$�W�-��9�9�;�)�+��$�$�S��\�2�6��$�$�S��\�2�6����*�+�!"������!1��� � ��!%�k�!2�!9�!9�*�!E�G�'.�3�V�.�.��0.�.��3�V�s>�.$M�D+L6�=+M�(D=M�%M�6
M	�M�
M	�M�
M'c���[5upn[XSSUS9n[R(a1[R
R
SRUS55 URUS1Sk5 g)NT�r�r�r3z got compression: {!r}
r+>N�RLE�ZLIB)	r�r6rr�r�r�r�r�r��r�r�r�r�rys     r&�test_compression�ThreadedTests.test_compressionPsc��3B�3D�0���"�>�*.��,4�6���?�?��J�J���7�>�>�u�]�?S�T�U��
�
�e�M�*�,C�Dr(rGz*ssl.OP_NO_COMPRESSION needed for this testc���[5upnU=R[R-slU=R[R-sl[	XSSUS9nURUSS5 g)NTrGr+)r�r�r
rGr6rrJs     r&�test_compression_disabled�'ThreadedTests.test_compression_disabledYsi��4C�3D�0������#�"7�"7�7�����#�"7�"7�7��"�>�*.��,4�6��	
�
�
�e�M�*�D�1r(c�|�[5upnU=R[R-sl[	XSSUS9 g�NTrG�r�r�r
r}r6�r�r�r�r�s    r&�test_legacy_server_connect�(ThreadedTests.test_legacy_server_connectds8��3B�3D�0������#�">�">�>���>�*.��,4�	6r(c�~�[5upnU=R[R)-sl[	XSSUS9 grQrRrSs    r&�test_no_legacy_server_connect�+ThreadedTests.test_no_legacy_server_connectks;��3B�3D�0������3�#?�#?�"?�?���>�*.��,4�	6r(c�N�[5upn1Skn[X5(a[X$5(dURS5 [RR
UlUR[5 URS5 [RR
Ul[XSSUS9nUSSnURS	5nURU5(dURS
US-5 gg![a [(aURS5 ef=f)N>�ADH�DHE�EDHz#libssl doesn't support ephemeral DHr�kEDHTrGrYrrnzNon-DH key exchange: )r�rIr@r
rrrrorrrrrYr6rsr�rQ)r�r�r�r��dhe_aliasesryrY�partss        r&�test_dh_params�ThreadedTests.test_dh_paramsrs��4C�3D�0���+��!�.�>�>�%�n�B�B��M�M�?�@�),���)?�)?��&�	��)�)�&�1�
	�"�"�6�*�),���)?�)?��&�"�>�*.��,4�6���x���#�����S�!���'�'��.�.��I�I�-��q�	�9�:�/���	��~��
�
�B�C��	�s�#C<�<(D$c	��[5upnURS5 URS5 [RR
Ul[XSSUS9n[5upnURS5 URS5 [RR
Ul[XSSUS9n[5upnURS5 URS5 URS5 [RR
UlUR[R5 [XSSUS9 SSS5 g!,(df   g=f)N�	secp384r1zECDHE:!eNULL:!aNULLTrGr6)
r�r9rYr
rrrrUr6rr�rJs     r&�test_ecdh_curve�ThreadedTests.test_ecdh_curve�s"��3B�3D�0����%�%�k�2��"�"�#8�9�),���)?�)?��&�"�>�*.��,4�6��
4C�3D�0����%�%�k�2��"�"�#8�9�),���)?�)?��&�"�>�*.��,4�6��
4C�3D�0����%�%�l�3��%�%�k�2��"�"�#8�9�),���)?�)?��&�
�
�
�s�|�|�
,��~�&*�T�(0�
2�-�
,�
,�s�3
E	�	
Ec�`�[5upn[XSSUS9nURUSS5 g)NTrGr-)r�r6rrJs     r&�test_selected_alpn_protocol�)ThreadedTests.test_selected_alpn_protocol�s9��3B�3D�0���"�>�*.��,4�6��	
�
�
�e�2�3�T�:r(c��[5upnURSS/5 [XSSUS9nURUSS5 g)Nr7�barTrGr-)r�r�r6rrJs     r&�/test_selected_alpn_protocol_if_server_uses_alpn�=ThreadedTests.test_selected_alpn_protocol_if_server_uses_alpn�sK��3B�3D�0����)�)�5�%�.�9�"�>�*.��,4�6��	
�
�
�e�2�3�T�:r(c	��/SQnSS/S4SS/S4S/S4SS/S4/nUH�up4[5upVnURU5 URU5 [UUSSUS9nS	[U5<S
[U5<S[U5<S3n
US
nUR
X�X�S4-5 [US5(aUSSOSnUR
X�X�S4-5 M� g![Ran	U	nSn	A	N�Sn	A	ff=f)N)r7rj�	milkshaker7rjrnzhttp/3.0zhttp/4.0TrGzfailed trying z	 (s) and z (c).
was expecting z, but got %s from the %sr-rXr/r�nothingrL)r�r�r6r
r�rcr�rj)
r��server_protocols�protocol_tests�client_protocolsrr�r�r�ryr�r��
client_result�
server_results
             r&rS�!ThreadedTests.test_alpn_protocols�sA��6���U�^�U�#��U�^�U�#��]�K�(��*�
%�t�,�	
��+9�&��7F�7H�4�N�H��-�-�.>�?��-�-�.>�?�
�*�>�+9�26�<@�4<�	>����+�,�c�2B�.C��H�
�'�C�"�"8�9�M����]� �8�#<�<�
>��u�4�5�6�6�"�"9�:�2�>�<E�
����]� �8�#<�<�
>�/+9���<�<�
����
�s�
C�C;�/C6�6C;c�2�[R(aegr^)r
�HAS_NPNr�s r&�test_npn_protocols� ThreadedTests.test_npn_protocols�s���;�;���;r(c�Z�[R[R5nUR[5 [R[R5nUR[
5 [R[R5nUR[5 XU4$r^)	r
rsrgr�r�r�rhr�r�)r�r��
other_contextr�s    r&�sni_contexts�ThreadedTests.sni_contexts�st������(?�(?�@���&�&��7����s�'>�'>�?�
��%�%�&6�7�����(?�(?�@���,�,�Z�8��n�<�<r(c�>�USnURSU44US5 g)Nr,r2r;)r�)r�ryr%r�s    r&�check_common_name�ThreadedTests.check_common_name�s&���Z� ���
�
��d�+�-�t�I��?r(c��^^�/mUR5unmnSUlUU4SjnURU5 [X!SSS9nUR	TSU4/5 URUS5 /m[X!SSS9nUR	TSU4/5 URU[5 /mURS5 [X!SSS9nURU[5 UR	T/5 g)NFc�@>�TRX45 UbTUlggr^)r#r�)r$r%r&�callsr{s   ��r&r(�6ThreadedTests.test_sni_callback.<locals>.servername_cb�s%����L�L�+�7�8��&�#0�� �'r(T�supermessage�r�r3rC�notfunny)r|r�rCr6r�rr�)r�r�r�r(ryr�r{s     @@r&rD�ThreadedTests.test_sni_callback�s�����8<�8I�8I�8K�5��
�~�(-��%�	1�	�.�.�}�=�"�>�*.�,:�<��
	
����.�.�!A� B�C����u�n�5���"�>�*.�,0�2��	
����$��!7� 8�9����u�&>�?����.�.�t�4�"�>�*.�,6�8��	
���u�&>�?������#r(c�&�UR5upnSnURU5 UR[R5n[X1SSS9nSSS5 UR
WRRS5 g!,(df   N5=f)Nc�"�[R$r^)r
�ALERT_DESCRIPTION_ACCESS_DENIEDr<s   r&�cb_returning_alert�AThreadedTests.test_sni_callback_alert.<locals>.cb_returning_alerts���6�6�6r(Fr�r��TLSV1_ALERT_ACCESS_DENIED)	r|rCrr
r�r6r�r�r�)r�r�r{r�r�r�rys       r&�test_sni_callback_alert�%ThreadedTests.test_sni_callback_alerts{��8<�8I�8I�8K�5��~�	7��.�.�/A�B�
�
�
�s�|�|�
,��&�~�.3�0>�@�E�-�	
������,�,�.I�J�	-�
,�s�B�
Bc	���UR5upnSnURU5 [R"5nUR	[
R5n[X1SSS9nSSS5 SnURWRRU5 URURR[5 SSS5 g!,(df   Ni=f!,(df   g=f)Nc��SS- gr�r_r<s   r&�
cb_raising�;ThreadedTests.test_sni_callback_raising.<locals>.cb_raising's	��
�a�Cr(Fr�r�z0(SSLV3_ALERT_HANDSHAKE_FAILURE|NO_PRIVATE_VALUE))r|rCr�catch_unraisable_exceptionrr
r�r6r�r�r�r��
unraisable�exc_type�ZeroDivisionError)	r�r�r{r�r��catchr�ryr�s	         r&�test_sni_callback_raising�'ThreadedTests.test_sni_callback_raising#s���8<�8I�8I�8K�5��~�	��.�.�z�:�
�
/�
/�
1�U��"�"�3�<�<�0�B�*�>�27�4B�D��1�G�E����R�\�\�0�0�%�8����U�-�-�6�6�8I�J�2�
1�0�0��2�
1�s$� C�C�)AC�
C	�C�
C+c	���UR5upnSnURU5 [R"5nUR	[
R5n[X1SSS9nSSS5 URWRRS5 URURR[5 SSS5 g!,(df   Ng=f!,(df   g=f)Nc��g)Nr7r_r<s   r&�cb_wrong_return_type�OThreadedTests.test_sni_callback_wrong_return_type.<locals>.cb_wrong_return_type;s��r(Fr�r��TLSV1_ALERT_INTERNAL_ERROR)r|rCrr�rr
r�r6r�r�r�r�r�r�)r�r�r{r�r�r�r�rys        r&�#test_sni_callback_wrong_return_type�1ThreadedTests.test_sni_callback_wrong_return_type6s���9=�8I�8I�8K�5��~�	��.�.�/C�D�
�
/�
/�
1�U��"�"�3�<�<�0�B�*�>�27�4B�D��1�
���R�\�\�0�0�2N�O����U�-�-�6�6�	�B�2�
1�0�0��2�
1�s$� C�C
�)AC�

C	�C�
C)c�8^	�[5upnURS5 URS5 /SQn[XUS9nUSSnUR[	U5S5 UH3um	px[U	4SjU55(aM"UR
T	5 M5 g)Nz
AES128:AES256zAES256:eNULL)r!zAES-256�TLS_CHACHA20�TLS_AES�r3r0rc3�,># �UH	oT;v� M g7fr^r_)r~�algr%s  �r&r�4ThreadedTests.test_shared_ciphers.<locals>.<genexpr>Xs����<�m�s�d�{�m�s�)r�rYr6�
assertGreaterrj�anyrQ)
r�r�r�r��
expected_algsryr��tls_version�bitsr%s
         @r&�test_shared_ciphers�!ThreadedTests.test_shared_ciphersIs����3B�3D�0����"�"�?�3��"�"�>�2�
�
�#�>�,4�6���/�0��3�����3�w�<��+�'.�#�D�+��<�m�<�<�<��	�	�$��(/r(c��[5upn[USS9nU UR[R"5US9nUR	[
UR45 UR5 UR[URS5 UR[URS5 SSS5 g!,(df   g=f)NFr]r�rbshello)r�rTr�rr�rFrMr�rr�rPr�rUs      r&�,test_read_write_after_close_raises_valuerror�:ThreadedTests.test_read_write_after_close_raises_valuerror[s���3B�3D�0���#�N�5�I��
��*�*�6�=�=�?�;C�+�E�A�
�I�I�t�V�[�[�)�*�
�G�G�I����j�!�&�&�$�7����j�!�'�'�8�<��V�V�s�BB:�:
Cc���Sn[[RS5nURU5 SSS5 UR	[R
[R5 [
5up4n[USS9nU UR[R"5US9nUR[UR45 [[RS5nURU5 URURS5U5 SSS5 SSS5 SSS5 g!,(df   GN=f!,(df   N1=f!,(df   N:=f!,(df   g=f)Nsxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx�wbFr]r�r�rb)rOr�TESTFNr�r��unlinkr�rTr�rr�rFrM�sendfiler�r�)	r��	TEST_DATArRr�r�r�rLr�files	         r&�
test_sendfile�ThreadedTests.test_sendfilehs���	�
�)�"�"�D�
)�Q�
�G�G�I��*����	�(�(�)�*:�*:�;�3B�3D�0���#�N�5�I��
��+�+�F�M�M�O�<D�,�F�IJ��	�	�4����-�.��)�*�*�D�1�T��J�J�t�$��$�$�Q�V�V�D�\�9�=�2�F��V�*�
)��2�1��F�F���V�sG�D*�>$E�"<E
�3D<�E
�E�*
D9�<
E
�E
�
E	�E�
E,c���[5upn[RRUl[XUS9nUSnUR
UR5 URURS5 URURS5 UR
UR5 URURS5 URUS5 UR5nURUSS5 URUSS5 [XXSS9nUR5nURUSS	5 URUSS5 UR
US5 USnURURUR5 URXu5 UR!Xu5 UR#URUR5 UR#URUR5 [XUS9nURUS5 USnUR%URUR5 UR%X�5 UR5nURUSS
5 URUSS5 [XXSS9nUR
US5 USn	URU	RUR5 URX�5 UR#U	RUR5 UR#U	RUR5 UR5nURUSS5 URUSS	5 g)Nr�r$rr.r'rVr*)r$r3r�rr[)r�r
rrrror6ri�idr�r�r��
has_ticket�ticket_lifetime_hintr�r.r��assertIsNotr�rA)
r�r�r�r�ryr$�	sess_stat�session2�session3�session4s
          r&�test_session�ThreadedTests.test_sessionws���3B�3D�0���),���)?�)?��&�#�>�,4�6���	�"������
�
�#����7�<�<��+����7�?�?�A�.�����*�*�+����7�7�7��;�����/�0�1�"�0�0�2�	�����8�,�a�0�����6�*�A�.�#�>�+2�G��"�0�0�2�	�����8�,�a�0�����6�*�A�.�����.�/�0���#��������g�j�j�1�����+�����+�����
�
�w�|�|�<����� 0� 0�'�/�/�B�#�>�,4�6������/�0�1���#�����H�K�K����4����H�.�"�0�0�2�	�����8�,�a�0�����6�*�A�.�#�>�+2�G������.�/�0���#��������g�j�j�1�����+�����
�
�w�|�|�<����� 0� 0�'�/�/�B�"�0�0�2�	�����8�,�a�0�����6�*�A�.r(c��[5upn[5un n[RRUl[RRUl[USS9nU UR
[R"5US9nURURS5 URURS5 UR[UR45 URnURU5 UR[ 5n	["Ul	SSS5 UR[%W	R&5S5 SSS5 UR
[R"5US9nUR[UR45 UR[(5n	WUl	SSS5 UR[%W	R&5S5 SSS5 UR
[R"5US9nWUl	UR[UR45 URURR*UR*5 URURU5 URURS5 SSS5 UR
[R"5US9nUR[(5n	WUl	UR[UR45 SSS5 UR[%W	R&5S5 SSS5 SSS5 g!,(df   GN/=f!,(df   GN=f!,(df   GN�=f!,(df   GN�=f!,(df   N�=f!,(df   N�=f!,(df   N�=f!,(df   g=f)NFr]r�zValue is not a SSLSession.z#Cannot set session after handshake.Tz)Session refers to a different SSLContext.)r�r
rrrrorTr�rr�r$r.r�rFrMrirr�rrcr�r�r�)
r�r�r�r��client_context2r�rLrr$r�s
          r&�test_session_handling�#ThreadedTests.test_session_handling�s���3B�3D�0��� /� 1����A�*-���)?�)?��&�*-�.�.�*@�*@��'�#�N�5�I��
��+�+�F�M�M�O�<D�,�F�IJ�� � ����D�1�� � ��!1�!1�4�8��	�	�4����-�.��)�)������(��&�&�y�1�Q� &�A�I�2�� � ��Q�[�[�!1�3O�P�F� �+�+�F�M�M�O�<D�,�F�IJ��	�	�4����-�.��&�&�z�2�a� '�A�I�3�� � ��Q�[�[�!1�!F�H�
F� �+�+�F�M�M�O�<D�,�F�IJ�$��	��	�	�4����-�.�� � ������w�z�z�:�� � ����G�4�� � ��!1�!1�4�8�F�!�,�,�V�]�]�_�=E�-�G�JK��&�&�z�2�a� '�A�I��I�I�t�V�[�[�1�2�3�� � ��Q�[�[�!1�!L�N�
G�A�V�2�1��F�F�� 3�2��	F�F��F�F��3�2��G�G��A�V�s��&$O�
BM�M
�"-M�+O�:7N�1M.�9-N�&+O�BN�"+O�
N4�#)N#�-N4�9O�

M�M�
M+	�&O�.
M=�8N�
N	�
O�
N 	�O�#
N1�-N4�4
O	�>O�
Oz&TLS-PSK disabled on this OpenSSL buildc��^^^^	^
�[RS5m
[R[R5nSUl[RUl[RRUl
URS5 URU
4Sj5 [R[R5n[RRUl
URS5 URU
4Sj5 [US9nU UR!["R""55nUR%[&UR(45 SSS5 SSS5 [RS5m	URU	4Sj5 [US9nU UR!["R""55nTR+[R,5 UR%[&UR(45 SSS5 SSS5 SSS5 S	mS
mUUU
U4SjnUU
U4SjnURU5 URUT5 [US9nU UR!["R""55nUR%[&UR(45 SSS5 SSS5 TR/[R,S
5 URUT5 SSS5 TR/[R,S5 URU5 SSS5 SmSmURU5 URUT5 [US9nU UR!["R""55nUR%[&UR(45 SSS5 SSS5 g!,(df   GNd=f!,(df   GNn=f!,(df   GN�=f!,(df   GN�=f!,(df   GN�=f!,(df   GNp=f!,(df   GNz=f!,(df   GNQ=f!,(df   GN)=f!,(df   N�=f!,(df   g=f)N�deadbeefFrqc�>�ST4$r^r_)�hint�psks �r&r��(ThreadedTests.test_psk.<locals>.<lambda>�s	���T�3�Kr(c�>�T$r^r_)�identityr�s �r&r�r��s���r(rS�cafebabec�>�ST4$r^r_)r��
incorrect_psks �r&r�r��s
���T�=�<Qr(�
identity-hint�client-identityc�0>�TRUT5 TT4$r^�r�)r��client_identity�
identity_hintr�r�s ����r&�client_callback�/ThreadedTests.test_psk.<locals>.client_callbacks������T�=�1�"�C�'�'r(c�,>�TRUT5 T$r^r��r�r�r�r�s ���r&�server_callback�/ThreadedTests.test_psk.<locals>.server_callback
�������X��7��Jr(zCannot add PSK server callbackzCannot add PSK client callbacku身份暗示u客户身份)r��fromhexr
rsrhr�r�r�rrrrorY�set_psk_client_callbackrg�set_psk_server_callbackrTr�rr�rFrMrr�r�)r�r�r�rLrr�r�r�r�r�r�s`      @@@@r&�test_psk�ThreadedTests.test_psk�s	����m�m�J�'������(?�(?�@��(-��%�%(�]�]��"�),���)?�)?��&��"�"�5�)��.�.�/G�H�����(?�(?�@��),���)?�)?��&��"�"�5�)��.�.�/C�D�$�N�;��
��+�+�F�M�M�O�<���	�	�4����-�.�=��
�
�
�j�1�
��.�.�/Q�R�#�N�;��
��+�+�F�M�M�O�<���&�&�s�|�|�4��I�I�t�V�[�[�1�2�5�=��(�
�+��	(�	(�	�	�.�.��?��.�.��
�N�#�N�;��
��+�+�F�M�M�O�<���	�	�4����-�.�=��
�
#�
#�C�L�L�2R�
S��2�2�?�M�R�T�
�
#�
#�C�L�L�2R�
S��2�2�?�C�T�'�
�(���.�.��?��.�.��
�N�#�N�;��
��+�+�F�M�M�O�<���	�	�4����-�.�=��V�Y=�<���V��5�4��=�<���V��*=�<���V��
T�
S��
S�
S��=�<���V�s��%O�7"N6�O�%O>� O,�#"O�O,�
O>� %P"�"P�'P"�P4�Q�%Q)�"Q�%Q)�6
O	�O�
O�
O)�$O,�,
O;	�6O>�>
P
�
P	�P"�"
P1�4
Q�
Q�
Q&	�"Q)�)
Q7c�,^^^	�[RS5m	SnSmUU	U4SjnUU	U4Sjn[R[R5nSUl[RUl[RRUl
URS5 URU5 [R[R5n[RRUl
URS5 URX15 [US9nU UR!["R""55nUR%[&UR(45 SSS5 SSS5 g!,(df   N=f!,(df   g=f)	Nr�r�r�c�.>�TRU5 TT4$r^)r�)r�r�r�r�s ���r&r��6ThreadedTests.test_psk_tls1_3.<locals>.client_callback-s������d�#�"�C�'�'r(c�,>�TRUT5 T$r^r�r�s ���r&r��6ThreadedTests.test_psk_tls1_3.<locals>.server_callback2r�r(FrqrS)r�r�r
rsrhr�r�r�rr�rUrYr�rgr�rTr�rr�rFrM)
r�r�r�r�r�r�rLrr�r�s
`       @@r&�test_psk_tls1_3�ThreadedTests.test_psk_tls1_3&s����m�m�J�'��'�
�+��	(�
	�����(?�(?�@��(-��%�%(�]�]��"�),���)?�)?��&��"�"�5�)��.�.��?�����(?�(?�@��),���)?�)?��&��"�"�5�)��.�.��N�#�N�;��
��+�+�F�M�M�O�<���	�	�4����-�.�=��V�<�<���V�s$�%F�"E4�#F�4
F	�>F�
Fc	�R^^	^
�Sm	[R"5m
U	U
U4Sjn[5up#n[US9nU UR	[
R
"5US9nUR
[UR45 URS5 URS5 URS5 TRURS5S5 [R"5n[R "UU4SS	9nUR#5 T
R%5 URT	5 UR'5 UR(bUR(eSSS5 SSS5 SSS5 g!,(df   N=f!,(df   N(=f!,(df   g=f)
Ns1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111c�~>�TR5 UR[T55nTRUT5 gr^)r�r�rjr�)r��receivedr��eventr�s  ���r&�
background�JThreadedTests.test_thread_recv_while_main_thread_sends.<locals>.backgroundQs.����I�I�K��y�y��T��+�H����X�t�,r(rSr�rVs123rT)r�r{r�)r�r�r�rTr�rr�rFrMr�r�rPr�r�r	r�rr�r�r!r�)r�r�r�r�r�rLr�r�rRr�r�s`        @@r&�(test_thread_recv_while_main_thread_sends�6ThreadedTests.test_thread_recv_while_main_thread_sendsGsG��������!��	-�
4C�3D�0���#�N�;��
��+�+�F�M�M�O�<D�,�F�IM����d�F�K�K�0�1�����"�� � ��#����V�$�� � ����1��v�6�%�?�?�A�R�&�-�-�Z�48�7�4�I�F��L�L�N��J�J�L��L�L��&��K�K�M��|�|�/� �l�l�*�0�B�F��V�B�A��F�F���V�s=�$F�BF�*A2E6�F�%F�6
F�F�
F	�F�
F&r_N)T)Qr�rXrYrZrr{rMryr\�Py_GIL_DISABLEDrZrTrUr�r
r�r�rurqr{r~rWrXr�rYr�r�r�r�r�r�r�r�r�r�r�r�r�rrrrrr#r&r,r�r/r2r5r8r<r]r�rKrWrNrTrWr`rdrgrkrSrxr|rrDr�r�r�r�r�r�r�r��HAS_PSKr�r�r�r`r_r(r&rKrKvs������z�*�*"�+�*"�X����0�0�2^�_�&*�`�&*�P"/�H+E�Z#2�J����'�'�)T��3��3�*@�*���)�M�O�E�O�E�<@�4N�`#E�J�)�$��%��8'�R5�>?�B�'�"�	J�#�	J��'�"�
;�#�
;��)�$�
N�%�
N��)�$�R�%�R�*7�r!�4C�:F�P6�&2�*�:/�b&,�PA�A�A�-�&�)�$�9�%�9��)�$��'�"��
9��#�%�
9��)�$��
9��%�
9��)�$��'�"��D��#�%�D� �'�"�7�#�7�5�"�����)B�)B�B�E�G�<G�G�<G�|E������&9�:�E�G�2�G�2�6�6�;�42�>;�;� >�D�=�@�&$�PK�K�&C�& �$=�
>�7/�r0N�d�)�$�
������&N�O�@/�P�%�@/�D�)�$�
������&N�O�/�P�%�/�>"+r(rKr�zTest needs TLS 1.3c�\�\rSrSrSrSrSrSrSrSr	Sr
S	rS
rSr
SrS
rSrg)�TestPostHandshakeAuthilc��[R[R/nUGHbn[RU5nUR	UR
S5 SUlUR	UR
S5 [RUlUR	UR[R5 UR	UR
S5 SUlUR	UR[R5 UR	UR
S5 [RUlSUlUR	UR[R5 UR	UR
S5 GMe gr�)	r
rgrhrsr��post_handshake_authr�r�r�)r�r�rkr[s    r&�test_pha_setter�%TestPostHandshakeAuth.test_pha_setterns"���#�#�S�%<�%<�
�	�"�H��.�.��*�C����S�4�4�e�<�&*�C�#����S�4�4�d�;�!�/�/�C�O����S�_�_�c�.?�.?�@����S�4�4�d�;�&+�C�#����S�_�_�c�.?�.?�@����S�4�4�e�<�!�/�/�C�O�&*�C�#����S�_�_�c�.?�.?�@����S�4�4�d�;�%"r(c��[5upnSUl[RUlSUlUR[5 [USS9nU UR[R"5US9nUR[UR45 URS5 URURS5S5 URS5 URURS5S	5 URS5 URURS5S
5 URS5 URURS5S	5 URS5 URS5R!S
5nUR#SU5 SSS5 SSS5 g!,(df   N=f!,(df   g=f)NTFr]r�r�rbr�r�r�r�r�ir�r>)r�r�r
r�r�r�r�rTr�rr�rFrMr�r�r��decoder�)r�r�r�r�rLr�	cert_texts       r&�test_pha_required�'TestPostHandshakeAuth.test_pha_required�sd��3B�3D�0���-1��*�%(�%6�%6��"�-1��*��&�&��7�#�N�5�I��
��+�+�F�M�M�O�<D�,�F�IJ��	�	�4����-�.����
�#�� � ������z�:������� � ������w�7����
�#�� � ������y�9������� � ������w�7����
�#��F�F�4�L�/�/�
�;�	��
�
�=�y�I�F��V�F�F���V�s%�$G�6D-F4�#G�4
G	�>G�
Gc��[5upnSUl[RUlSUlSnXBlXAl[
USS9nU UR[R"5USS9nUR[UR45 URS5 UR[S5 URS5nUR!US	5 URS
5 URS5 SSS5 SSS5 SSS5 g!,(df   N=f!,(df   N(=f!,(df   g=f)NTc��[R(a?U[R:Xa*XX#XE4n[R
R
SU<S35 ggg)NzTLS: r)rr�r�ALERTr�r�r�)r��	directionr=�content_type�msg_typer�r�s       r&�msg_cb�>TestPostHandshakeAuth.test_pha_required_nocert.<locals>.msg_cb�sE�����<�?�3H�3H�#H����O���
�
� � �5����!3�4�$I�r(r]Fr�r�z`certificate required|EOF occurred|closed by the remote host|Connection reset by peer|Broken piperbr�r�)r�r�r
r�r��
_msg_callbackrTr�rr�rFrMr�r�r�r�r�)r�r�r�r�rrLrr�s        r&�test_pha_required_nocert�.TestPostHandshakeAuth.test_pha_required_nocert�s��3B�3D�0���-1��*�%(�%6�%6��"�-1��*�	5�
(.�$�'-�$�#�N�4�H��
��+�+�F�M�M�O�<D�AF�,�H�KL��	�	�4����-�.�������+�+��$���6�6�$�<�D��$�$�T�7�3��G�G�J�'��F�F�4�L�!�H��V����H�H���V�s>�%D;�1A	D*�:AD�D*�D;�
D'�#D*�*
D8	�4D;�;
E	c�T�[R(a[RR	S5 [5upnSUl[RUl	SUlUR[5 [RUl	[USS9nU UR[R"5US9nUR!["UR$45 UR	S5 UR'UR)S5S5 UR	S	5 UR'UR)S5S
5 UR	S5 UR'UR)S5S5 SSS5 SSS5 g!,(df   N=f!,(df   g=f)NrTFr]r�r�rbr�r�r�r�)rr�r�r�r�r�r�r
r�r�r�r�r�rTr�rr�rFrMr�r�rUs      r&�test_pha_optional�'TestPostHandshakeAuth.test_pha_optional�s7���?�?��J�J���T�"�3B�3D�0���-1��*�%(�%6�%6��"�-1��*��&�&��7�&)�%6�%6��"�#�N�5�I��
��+�+�F�M�M�O�<D�,�F�IJ��	�	�4����-�.����
�#�� � ������z�:������� � ������w�7����
�#�� � ������y�9�F��V�F�F���V�s%�$F�?B8F�7F�
F	�F�
F'c��[R(a[RR	S5 [5upnSUl[RUl	SUl[USS9nU UR[R"5US9nUR[UR45 UR	S5 UR!UR#S5S5 UR	S	5 UR!UR#S5S
5 UR	S5 UR!UR#S5S5 SSS5 SSS5 g!,(df   N=f!,(df   g=f)NrTFr]r�r�rbr�r�r�)rr�r�r�r�r�r�r
r�r�rTr�rr�rFrMr�r�rUs      r&�test_pha_optional_nocert�.TestPostHandshakeAuth.test_pha_optional_nocert�s���?�?��J�J���T�"�3B�3D�0���-1��*�%(�%6�%6��"�-1��*�#�N�5�I��
��+�+�F�M�M�O�<D�,�F�IJ��	�	�4����-�.����
�#�� � ������z�:������� � ������w�7����
�#�� � ������z�:�F��V�F�F���V�s%�1$E/�B8E�
E/�
E,	�(E/�/
E=c��[5upnSUl[RUlUR[5 [USS9nU UR[R"5US9nUR[UR45 UR[RS5 UR5 SSS5 UR!S5 UR#SUR%S55 SSS5 SSS5 g!,(df   NQ=f!,(df   N(=f!,(df   g=f)	NTFr]r�z
not serverr�sextension not receivedrb)r�r�r
r�r�r�r�rTr�rr�rFrMr�r�r�r�r�r�rUs      r&�test_pha_no_pha_client�,TestPostHandshakeAuth.test_pha_no_pha_client�s���3B�3D�0���-1��*�%(�%6�%6��"��&�&��7�#�N�5�I��
��+�+�F�M�M�O�<D�,�F�IJ��	�	�4����-�.��+�+�C�L�L�,�G��2�2�4�H�������
�
�7������F�
F��V�H�G��F�F���V�s=�$D/�/AD�1D
�:D�<D/�
D�D�
D,	�(D/�/
D=c��[5upn[RUlSUlUR[5 [USS9nU UR[R"5US9nUR[UR45 URS5 URURS5S5 URS5 URURS5S	5 URS5 URURS5S5 SSS5 SSS5 g!,(df   N=f!,(df   g=f)
NTFr]r�r�rbr�r�r�)r�r
r�r�r�r�r�rTr�rr�rFrMr�r�r�rUs      r&�test_pha_no_pha_server�,TestPostHandshakeAuth.test_pha_no_pha_servers��3B�3D�0���%(�%6�%6��"�-1��*��&�&��7�#�N�5�I��
��+�+�F�M�M�O�<D�,�F�IJ��	�	�4����-�.����
�#�� � ������y�9������� � ������w�7����
�#�� � ������y�9�F��V�F�F���V�s%�$E	�/B8D8�'E	�8
E	�E	�	
Ec�*�[5upn[RUl[RR
UlSUlUR[5 [USS9nU UR[R"5US9nUR[UR45 UR!S5 UR#SUR%S55 SSS5 SSS5 g!,(df   N=f!,(df   g=f)NTFr]r�r�sWRONG_SSL_VERSIONrb)r�r
r�r�rrrror�r�r�rTr�rr�rFrMr�r�r�rUs      r&�test_pha_not_tls13�(TestPostHandshakeAuth.test_pha_not_tls13s���3B�3D�0���%(�%6�%6��"�),���)?�)?��&�-1��*��&�&��7�#�N�5�I��
��+�+�F�M�M�O�<D�,�F�IJ��	�	�4����-�.�������
�
�2�A�F�F�4�L�A�F��V�F�F���V�s%�*$D�AC3�"D�3
D	�=D�
Dc��[n[R[R5nSUlUR[5 SUl[RUl	[R[R5nUR[5 UR[5 SUl[RUl	[USS9nU UR[ R "5US9nUR#[$UR&45 UR)S5 UR+UR-S5S5 UR)S5 UR+UR-S5S	5 UR)S5 UR+UR-S5S
5 UR+UR/505 SSS5 SSS5 g!,(df   N=f!,(df   g=f)NTFr]r�r�rbr�r�r�r�)r�r
rsrhr�r�r�r�r�r�rgr�r�r�rTr�rr�rFrMr�r�r�r�)r�r�r�r�rLrs      r&�test_bpo37428_pha_cert_none�1TestPostHandshakeAuth.test_bpo37428_pha_cert_none+sv��,������(?�(?�@��-1��*��&�&��7�(-��%�%(�]�]��"�����(?�(?�@���&�&��7��,�,�Z�8�-1��*�%(�%6�%6��"�#�N�5�I��
��+�+�F�M�M�O�<D�,�F�IJ��	�	�4����-�.����
�#�� � ������z�:������� � ������w�7����
�#�� � ������y�9�� � �����"�5�F��V�F�F���V�s%�$G5�;CG$�G5�$
G2	�.G5�5
Hc	��[SS9upn[USS9nU UR[R"5US9nUR	[
UR45 URR5nUR[U5S5 UupxURR5n	UR[U	5S5 URXyS5 UR[U5[U	S55 UR[U5[U	S55 URXx5 UR[U5[U55 UR[U5[U55 URUR5UR55 UR!S[U55 UR!S	[U55 UR#[$R&5n
UR#[$R(5nUR+U
[,5 UR!S
U
5 UR+U[.5 UR[0R3U
5U5 SSS5 SSS5 g!,(df   N=f!,(df   g=f)NFr�r]r�r�rVrzCN=localhostzCN=our-ca-serverz-----BEGIN CERTIFICATE-----)r�rTr�rr�rFrMrOr�r�rjr��hashrrA�get_infor��public_bytesr��ENCODING_PEM�ENCODING_DERrdrcr�r
rN)r�r�r�r�rLr�vc�ee�ca�uvcrTrns            r&�test_internal_chain_client�0TestPostHandshakeAuth.test_internal_chain_clientJs��3B��4
�0���$�N�5�I��
��+�+��
�
�� (�,����	�	�4����-�.��Y�Y�1�1�3��� � ��R��!�,�����i�i�4�4�6��� � ��S��1�-�� � ���V�,�� � ��b��4��A��<�8�� � ��b��4��A��<�8��#�#�B�+��#�#�D��H�d�2�h�7��#�#�D��H�d�2�h�7��#�#�B�K�K�M�2�;�;�=�A��
�
�n�d�2�h�7��
�
�0�$�r�(�;��o�o�d�&7�&7�8���o�o�d�&7�&7�8���%�%�c�3�/��
�
�;�S�A��%�%�c�5�1�� � ��,�,�S�1�3��7��V�����V�s#�$J/�IJ�
J/�
J,	�(J/�/
J=c�(�[SS9upn[USS9n[[5n[RUR
55nSSS5 [[5n[RUR
55nSSS5 U UR[R"5US9nUR[UR45 UR5n	UR[U	5S5 U	up�UR!U
["5 UR!U["5 URWU5 URWU
5 UR%5nUR[U5S5 UR!US["5 URX�S5 UR'X�5 SSS5 SSS5 g!,(df   GN�=f!,(df   GNb=f!,(df   N;=f!,(df   g=f)NFr�r]r�r�rVr)r�rTrOr�r
rNrP�SINGED_CERTFILE_ONLYr�rr�rFrMr�r�rjrdr�r�rA)
r�r�r�r�rLrR�expected_ca_cert�expected_ee_certrr(r)r*r+s
             r&�test_certificate_chain�,TestPostHandshakeAuth.test_certificate_chainos���3B��4
�0���$�N�5�I��
�*�
��"�7�7�����A����&�
'�1�"�7�7�����A��(���+�+��
�
�� (�,����	�	�4����-�.��)�)�+��� � ��R��!�,�����%�%�b�%�0��%�%�b�%�0�� � �!1�2�6�� � �!1�2�6��,�,�.��� � ��S��1�-��%�%�c�!�f�e�4�� � ���V�,��#�#�B�+�'��V�
�
��(�
'������V�s<�$G�!$G �$H�3D
G2�=H�
G� 
G/�2
H	�<H�
Hc��[5upnUR[5 [RUl[RRUl[USS9nU UR[R"5US9nUR[UR45 URS5 UR!S5nUR#US5 URS5 UR!S5nUR#US5 SSS5 SSS5 g!,(df   N=f!,(df   g=f)NFr]r�sVERIFIEDCHAIN
rbs
sUNVERIFIEDCHAIN
)r�r�r�r
r�r�rrrrorTr�rr�rFrMr�r�r�)r�r�r�r�rLr�ress       r&�test_internal_chain_server�0TestPostHandshakeAuth.test_internal_chain_server�s���3B�3D�0����&�&��7�%(�%6�%6��"�),���)?�)?��&�#�N�5�I��
��+�+��
�
�� (�,����	�	�4����-�.����*�+��f�f�T�l��� � ��i�0����,�-��f�f�T�l��� � ��i�0���V�����V�s%�#$D3�B
D"�D3�"
D0	�,D3�3
Er_N)r�rXrYrZr�rrrrrrrr r,r2r6r`r_r(r&r�r�lsD��<�0J�2'!�R:�0;�,G� :�(B�"6�>#�J ,�D1r(r��keylog_filenamez0test requires OpenSSL 1.1.1 with keylog callbackc���\rSrSr\R
4Sjr\S5r\S5r	\\
R"\RRS5S55rSrSrS	rS
rg)�TestSSLDebugi�c�v�[U5n[[U55sSSS5 $!,(df   g=fr^)rOrjr�)r��fnamerRs   r&�keylog_lines�TestSSLDebug.keylog_lines�s ��
�%�[�A��t�A�w�<��[�[�s�*�
8c��UR[R[R5 [R[R5nURURS5 UR[RR[R55 [RUlURUR[R5 UR![RR[R55 URUR#5S5 SUlURURS5 UR%[&[(45 [RR+[RR-[R55UlSSS5 UR%[.5 SUlSSS5 g![a [(aURS5 ef=f!,(df   N_=f!,(df   g=f)NrrV)r�rr�r�r
rsrhr�r8r�rr �isfilerrr@rir=r�IsADirectoryError�PermissionErrorr"�abspathr�rms  r&�test_keylog_defaults�!TestSSLDebug.test_keylog_defaults�s������	�(�(�)�*:�*:�;��n�n�S�4�4�5������,�,�d�3���������	�(8�(8�9�:�	�"+�"2�"2�C��
	
����,�,�i�.>�.>�?���������y�'7�'7�8�9�����*�*�,�a�0�"�������,�,�d�3�
�
�
� 1�?�C�
D�"$�'�'�/�/������	� 0� 0�1�#3�C��E�
�
�
�y�
)�"#�C��*�
)��!�	��~��
�
�B�C��	��E�
D��
*�
)�s%�+H�AH-�1H>�(H*�-
H;�>
Ic��UR[R[R5 [	5upn[RUl[USS9nU UR[R"5US9nUR[UR45 SSS5 SSS5 URUR!5S5 SUl[RUl[USS9nU UR[R"5US9nUR[UR45 SSS5 SSS5 UR#UR!5S5 [RUl[RUl[USS9nU UR[R"5US9nUR[UR45 SSS5 SSS5 UR#UR!5S5 SUlSUlg![a [(aURS5 ef=f!,(df   GN�=f!,(df   GN�=f!,(df   GNA=f!,(df   GNK=f!,(df   N�=f!,(df   N�=f)NrFr]r�r���)r�rr�r�r�r8rrr@rTr�rr�rFrMr�r=r�rUs      r&�test_keylog_filename�!TestSSLDebug.test_keylog_filename�s*�����	�(�(�)�*:�*:�;�3B�3D�0���	�-6�-=�-=�N�*�$�N�5�I��
��+�+�F�M�M�O�<D�,�F�IJ��	�	�4����-�.�F��
	
����*�*�,�a�0�)-��&�)2�)9�)9��&�#�N�5�I��
��+�+�F�M�M�O�<D�,�F�IJ��	�	�4����-�.�F��	
���� 1� 1� 3�R�8�)2�)9�)9��&�)2�)9�)9��&�#�N�5�I��
��+�+�F�M�M�O�<D�,�F�IJ��	�	�4����-�.�F��	
���� 1� 1� 3�R�8�)-��&�)-��&��A�	��~��
�
�B�C��	��F�F���V��F�F���V��F�F���V�sw�H-�$I*�"I�$I*�<$J� "I<�J�($J1�"J �.J1�-(I�
I'	�"I*�*
I9�<
J	�J�
J� 
J.	�*J1�1
J?z.test is not compatible with ignore_environmentc�t�UR[R[R5 [R
RR[R5 [R[RS'UR[RS[R5 [R[R5nURURS5 [R5nURUR[R5 [R'5nURUR[R5 SSS5 g![ a ["(aUR%S5 ef=f!,(df   g=f)N�
SSLKEYLOGFILEr)r�rr�r�ryrMrp�dictr�environr�r
rsrhr8r�rrr@r�rms  r&�test_keylog_env�TestSSLDebug.test_keylog_env�s)��	
���	�(�(�)�*:�*:�;�
�]�]�
 �
 �
%�
%�b�j�j�
1�*3�*:�*:�B�J�J��'����R�Z�Z��8�)�:J�:J�K��.�.��!8�!8�9�C����S�0�0�$�7�
��0�0�2��

���S�0�0�)�2B�2B�C��,�,�.�C����S�0�0�)�2B�2B�C�!2�
1�� �
�!�>��M�M�"F�G��
��2�
1�s&�&BF)�9E>�
A(F)�>(F&�&F)�)
F7c��[5upnSnURURS5 XAlURURU5 UR[5 [5UlSSS5 g!,(df   g=f)Nc��gr^r_�r�rr=r	r
r�s      r&r�.TestSSLDebug.test_msg_callback.<locals>.msg_cbrBr()r�rr
rr�r)r�r�r�r�rs     r&�test_msg_callback�TestSSLDebug.test_msg_callbacksh��3B�3D�0���	�	
�
�
�n�2�2�D�9�'-�$��
�
�n�2�2�F�;�
�
�
�y�
)�+1�8�N�(�*�
)�
)�s�$A=�=
Bc�^^�[5upn[RRUl/mUU4SjnXAl[
USS9nU UR[R"5US9nUR[UR45 SSS5 SSS5 TRS[R[R[R 4T5 TRS[R[R"[R"4T5 g!,(df   N�=f!,(df   N�=f)Nc�>�TRU[R5 TRU[5 TR	USS15 TRXX445 g)NrPr�)rdr
rr�r�r#)r�rr=r	r
r�r�r�s      ��r&r�4TestSSLDebug.test_msg_callback_tls12.<locals>.msg_cbsK����!�!�$��
�
�6��!�!�$��.��M�M�)�f�g�%6�7��J�J�	�L�C�Dr(Fr]r�rPr�)r�r
rrrror
rTr�rr�rFrMr�r�	HANDSHAKEr�SERVER_KEY_EXCHANGE�CHANGE_CIPHER_SPEC)r�r�r�r�rrLrr�s`      @r&�test_msg_callback_tls12�$TestSSLDebug.test_msg_callback_tls12s����3B�3D�0���),���)?�)?��&���	E�(.�$�#�N�5�I��
��+�+�F�M�M�O�<D�,�F�IJ��	�	�4����-�.�F��
	
�
�
�
�Z�'�'��)B�)B�
�
0�
0�
2��	
�
	
�
�
�
�j�(�(�/�*L�*L�
�
/�
/�
1��	
�F�F���V�s$�
$D2�."D!�D2�!
D/	�+D2�2
Ec�(^�[5upn[5SmSnU4SjnXBlXRl[USS9nU UR	[
R
"5US9nUR
[UR45 SSS5 UR	[
R
"5US9nUR
[UR45 SSS5 SSS5 g!,(df   Nd=f!,(df   N(=f!,(df   g=f)NrVc��gr^r_rSs      r&r�@TestSSLDebug.test_msg_callback_deadlock_bpo43577.<locals>.msg_cb;rBr(c�>�TUlgr^rS)r�r?r[�server_context2s   �r&�sni_cb�@TestSSLDebug.test_msg_callback_deadlock_bpo43577.<locals>.sni_cb>s
���*�D�Lr(Fr]r�)	r�r
rHrTr�rr�rFrM)	r�r�r�r�rrdrLrrcs	        @r&�#test_msg_callback_deadlock_bpo43577�0TestSSLDebug.test_msg_callback_deadlock_bpo435777s����3B�3D�0���)�+�A�.��	�	+�(.�$�&,�#�#�N�5�I��
��+�+�F�M�M�O�<D�,�F�IJ��	�	�4����-�.�F� �+�+�F�M�M�O�<D�,�F�IJ��	�	�4����-�.�F�	�V�F�F��F�F��	�V�s;�$D�!"C!�+D�."C2�D�!
C/	�+D�2
D	�<D�
Dr_N)r�rXrYrZrr�r=�requires_keylogrDrIryr�r��flags�ignore_environmentrOrUr]rfr`r_r(r&r:r:�s���!*�!1�!1� ��$��$�6�&.��&.�P�
�_�_�S�Y�Y�1�1�E�G�D�G��D�(
4�
�>/r(r:c	��UR[R[R[R
"SSS55 g)N�iirVr)�
setsockoptr�
SOL_SOCKET�	SO_LINGER�struct�pack�r�s r&�)set_socket_so_linger_on_with_zero_timeoutrsNs+���O�O�F�%�%�v�'7�'7����T�1�a�9P�Qr(c�Z�\rSrSrSr"SS\R5rSrSr	Sr
SrS	rg
)�TestPreHandshakeCloseiRzQVerify behavior of close sockets with received data before to the handshake.
    c�N^�\rSrSrSS.U4SjjrSrSrU4SjrSrS	r	U=r
$)
�6TestPreHandshakeClose.SingleConnectionTestServerThreadiVN)r�c�>�X lSUlSUlSUlSUlUc[
RUlOX0l[TU]%US9 g)Nr(r$)
�call_after_accept�
received_data�
wrap_errorr�rMrrMr��superr�)r�r%ryr�r�s    �r&r��?TestPreHandshakeClose.SingleConnectionTestServerThread.__init__XsM���%6�"�!$�D��"�D�O� �D�M��D�I���&�4�4���&���G��$��'r(c�&�UR5 U$r^)r�r�s r&r��@TestPreHandshakeClose.SingleConnectionTestServerThread.__enter__ds���J�J�L��Kr(c��UR(aURR5 UR5 SUlg![a N$f=fr^)r�r�r�r!r{r�s  r&r��?TestPreHandshakeClose.SingleConnectionTestServerThread.__exit__hsD��
��=�=��M�M�'�'�)�
�I�I�K�"�D�O���
��
�s�+A�
A�Ac�@>�[R[RR5Ul[R
URlURR[S9 URR[[S9 [R"5Ul[R"UR5UlURR!UR"5 URR%S5 [&TU]Q5 g)Nr�r�rV)r
r�rr�ssl_ctxr�r�r�r�r�r�rr�rrDrMr�r�r�r|r�)r�r�s �r&r��<TestPreHandshakeClose.SingleConnectionTestServerThread.startqs�����5�5�c�k�k�6M�6M�N�D�L�'*�'8�'8�D�L�L�$��L�L�.�.�h�.�?��L�L�(�(�(�G�(�L�"�M�M�O�D�M�%�/�/��
�
�>�D�I��M�M�$�$�T�\�\�2��M�M� � ��#��G�M�Or(c�<�URR5upURR5 U UR	U5(a
SSS5 gUR
R
USS9nURS5UlSSS5 g![a URR5 gf=f!URR5 f=f![a N^f=f![anX@l
SnANwSnAff=f!,(df   g=f)NTrJ�)r�r'r�r�ryr�r�r�rzr�r{)r�r��address�
tls_socketr�s     r&r��:TestPreHandshakeClose.SingleConnectionTestServerThread.run|s���
&� $�
�
� 4� 4� 6�
��g�
�
�
�#�#�%���)�)�$�/�/�����!%���!9�!9�$�D�!9�!Q�J��-7�_�_�S�-A��*����
 �
���
�
�#�#�%�	
���
�
�#�#�%��#������*�&)�O�O��*����sp�B�D
�C0�8C �
B>�!C�=B>�>C�C� 
C-�*D
�,C-�-D
�0
D
�:D�D
�D
�
D
�
D)ryr�rMrzr�r�r{)r�rXrYrZr�r�r�r�r�r`�
__classcell__)r�s@r&� SingleConnectionTestServerThreadrwVs)���?C�
	(�
	(�	�	#�		�	�	r(r�c
��[RS;ag[U[5(dr[U[5(aUR
[
R:Xd?[R"S[[USS55[R5(a*URS[RSU<35 Sngg!Snf=f)N)�linux�androidzwrong.version.numberr�rwz!Could not recreate conditions on z: err=)
r�r^rbr�r�rG�EINVALr��searchrcrer�r@r�s  r&�"non_linux_skip_if_other_okay_error�8TestPreHandshakeClose.non_linux_skip_if_other_okay_error�s����<�<�/�/���s�0�1�1�
��W�
%�
%�#�)�)�u�|�|�*C��I�I�,�c�'�#�x��2L�.M�r�t�t�T�T�
��
�
� A�#�,�,��P'�"%��)�*���
U����s�&C�Cc�(^^�[R"5m[R"5mUU4SjnURUSS9nURU5 [R"5nURURR55 [U5 URS5 TR5 URS5 UR5 SSS5 TR5 UR5 URnSUlUR!SUR"5 UR%U[&5 UR)U5 UR%U[*R,5 UR/SUR0S5 UR/SUR25 UR5S	UR0S	5 UR7UR8S
S9 SnSng!,(df   GN=f!SnSnf=f)Nc�>�TR5 TR[R5(d[	S5eg)Nz+wrap_socket event never set, test may fail.F)r�r�rrMr)�unused�ready_for_server_wrap_socket�server_accept_calleds ��r&ry�PTestPreHandshakeClose.test_preauth_data_to_tls_server.<locals>.call_after_accept�s5��� �$�$�&�/�4�4�W�5J�5J�K�K�"�#P�Q�Q�r(�preauth_data_to_tls_server�ryr%FsDELETE /data HTTP/1.0

r(�before TLS handshake with datarVr�attr must existr�)r�r�r�r�rr�r�r�rsr�r�r�r�r�r!r{r�rzrdr�r�r
r�r�r{r�rAr�r�)r�ryrLrXr{r�r�s     @@r&�test_preauth_data_to_tls_server�5TestPreHandshakeClose.test_preauth_data_to_tls_server�s����(���0��'0���'8�$�	��6�6�"3�1�7�3��	
���&�!�
�]�]�_���N�N�6�?�?�6�6�8�9�5�f�=����u�%� �%�%�'��K�K�8�9��L�L�N��	%�(�(�*����
��&�&�
� ���	����S�&�"6�"6�7��!�!�*�g�6��3�3�J�?��!�!�*�c�l�l�;��M�M�:�J�O�O�A�<N�O��M�M�:�J�<M�<M�N�����:�?�?�1�#5�6����j�0�0�6G��H��J��F�7�_��4�J��F�s�*A7G9�CH�9
H�Hc�t^	^
�[R"5m
[R"5m	U	U
4SjnURUSS9nURU5 [	UR
5 [R"5nURUR
R55 T
R5 T	R[R5(dURS5 [R5nUR!USS9nSnUR#S5nUR%5 SSS5 UR)5 UR+SW5 UR-W[&5 UR/U5 UR-U[R05 UR3S	UR4S
5 UR3S	UR65 UR9SUR4S5 UR;UR<SS
9 [>R@"U5 SnSSS5 Sng![&anUnSnSnAGNSnAff=f!,(df   GN-=f!,(df   N?=f![>R@"U5 SnSSS5 Snf!,(df   Snf=f=f)Nc��>�TR[R5(d[S5 [	U5 URS5 UR
5 TR5 g)Nz ERROR: test client took too longsWHTTP/1.0 307 Temporary Redirect
Location: https://example.com/someone-elses-server

T)r�rrMr�rsr�r�r�)�conn_to_client�$client_can_continue_with_wrap_socket�$server_can_continue_with_wrap_sockets ��r&ry�PTestPreHandshakeClose.test_preauth_data_to_tls_client.<locals>.call_after_accept�s]���7�<�<�W�=R�=R�S�S��8�9�
6�n�E�����
�
� � �"�0�4�4�6�r(�preauth_data_to_tls_clientr�ztest server took too longr3r�r�r(r�rVrr�r�)!r�r�r�r�rsr�rr�r�r�r�rrMrQr
r�r�r�r�r�r!r�rdr�r�r�r{r�rAr�r�r
r)r�ryrLrXr��
tls_clientr{rzr�r�r�s         @@r&�test_preauth_data_to_tls_client�5TestPreHandshakeClose.test_preauth_data_to_tls_client�s.���/8���/@�,�/8���/@�,�	��6�6�"3�1�7�3��	
���&�!�1�&�/�/�B�
�]�]�_���N�N�6�?�?�6�6�8�9�0�4�4�6�7�<�<�W�=R�=R�S�S��	�	�5�6��0�0�2�G�	
#�$�0�0���1�=�
�"�
� *���� 4�
�� � �"�!�$	���
�
	����S�-�0��!�!�*�g�6��3�3�J�?��!�!�*�c�l�l�;��M�M�:�J�O�O�A�<N�O��M�M�:�J�<M�<M�N�����:�?�?�1�#5�6����j�0�0�6G��H�!�:�:�4�@�!�
�A��F��-�
$� �
� #�
��
$���_��<A�@���:�:�4�@�!�
�A��F�A�@��F�sh�?BI�I�#I�C
I?�2I.�
I�
I�I�I�I�
I+�.
I<�?J7�J$�J7�$
J4�.	J7c�^�[R"5m"U4SjS[RR5nU4SjnSnURUSUS9nUR
U5 [UR5 U"URR5SUR[R5US9n[R"U5 UR[ 5 UR#S	S
SS0S
9 UR%5nSSS5 SSS5 UR'5 g!,(df   N'=f!,(df   N0=f)Nc�">�\rSrSrU4SjrSrg)�eTestPreHandshakeClose.test_https_client_non_tls_response_ignored.<locals>.SynchronizedHTTPSConnectionic�n>�[RRRU5 TR	[
R5(d4[
R(a[RRS5 URRURURS9Ul
g)Nz"server_responding event never set.r�)�httprX�HTTPConnectionr�r�rrMr�r�r�r��_contextr�r�r1)r��server_respondings �r&r��mTestPreHandshakeClose.test_https_client_non_tls_response_ignored.<locals>.SynchronizedHTTPSConnection.connectsw������*�*�2�2�4�8�)�-�-�g�.C�.C�D�D�����J�J�$�$�%I�J� �M�M�5�5��	�	�4�9�9�6�>��	r(rrN)r�rXrYrZr�r`)r�s�r&�SynchronizedHTTPSConnectionr�s
���	
>�	
>r(r�c�~>�[U5 URS5 UR5 TR5 g)Ns!HTTP/1.0 402 Payment Required

T)rsr�r�r�)r�r�s �r&ry�[TestPreHandshakeClose.test_https_client_non_tls_response_ignored.<locals>.call_after_accept!s;���5�n�E�����
�
� � �"��!�!�#�r(g@�non_tls_http_RST_responder)ryr%r�r)rMr�r��HEADz/test�Hostr3)�headers)r�r�r�rX�HTTPSConnectionr�r�rsr�r�rMr
r�r
rrr�r��getresponser!)r�r�ryr�rL�
connection�responser�s       @r&�*test_https_client_non_tls_response_ignored�@TestPreHandshakeClose.test_https_client_non_tls_response_ignoreds���%�O�O�-��
	>�$�+�+�*E�*E�
	>�	����6�6�"3�1��7�!��	
���&�!�1�&�/�/�B�0����+�+�-�a�0��[�[��2�2�4��	
�
��
6�
6�t�
<��!�!�'�*����v�w���8M��N�!�-�-�/�H�+�=�
	���
�	+�*��=�
<�s$�D>�($D-�D>�-
D;	�7D>�>
Er_N)
r�rXrYrZrjr�rr�r�r�r�r�r`r_r(r&ruruRs0���:�9�+;�+;�:�x�2*�X9�v3r(ruc�P�\rSrSrSrSrSrSrSrSr	Sr
S	rS
rSr
Srg
)�TestEnumerationsiHc�l�"SS[R5n[R"U[5 g)Nc��\rSrSr\R
r\Rr\Rr
\Rr\Rr\Rr\R"rSrg)�;TestEnumerations.test_tlsversion.<locals>.CheckedTLSVersioniKr_N)r�rXrYrZr��PROTO_MINIMUM_SUPPORTEDrt�PROTO_SSLv3r�PROTO_TLSv1r�
PROTO_TLSv1_1r�
PROTO_TLSv1_2rr�
PROTO_TLSv1_3r��PROTO_MAXIMUM_SUPPORTEDrur`r_r(r&�CheckedTLSVersionr�KsQ�� $� <� <���$�$�E��$�$�E��(�(�G��(�(�G��(�(�G� $� <� <�r(r�)�enum�IntEnum�_test_simple_enumr)r�r�s  r&�test_tlsversion� TestEnumerations.test_tlsversionJs%��	=����	=�	
���0�*�=r(c�l�"SS[R5n[R"U[5 g)Nc�0�\rSrSrSrSrSrSrSrSr	Sr
S	rg
)�DTestEnumerations.test_tlscontenttype.<locals>.Checked_TLSContentTypeiVz8Content types (record layer)

See RFC 8446, section B.1
r(rH��r\�r_N)r�rXrYrZrjr\rrZ�APPLICATION_DATA�HEADER�INNER_CONTENT_TYPEr`r_r(r&�Checked_TLSContentTyper�Vs*��
�"$���E��I�!���F�!&�r(r�)r�r�r�r)r�r�s  r&�test_tlscontenttype�$TestEnumerations.test_tlscontenttypeUs%��	'�T�\�\�	'�	
���5��Gr(c�l�"SS[R5n[R"U[5 g)Nc��\rSrSrSrSrSrSrSrSr	Sr
S	rS
rSr
SrS
rSrSrSrSrSrSrSrSrSrSrSrSrSrSrSrSrSr Sr!S r"S!r#S"r$S#r%S$r&S%r'g&)'�@TestEnumerations.test_tlsalerttype.<locals>.Checked_TLSAlertTypeiezIAlert types for TLSContentType.ALERT messages

See RFC 8446, section B.2
r�
r(rHr���(�)rd�+�,�-�.�/r?�1�2�3�<�F�G�P�V�Zr��m�n�o�p�q�r�s�t�xr_N)(r�rXrYrZrj�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_PROTOCOLr`r_r(r&�Checked_TLSAlertTyper�es���
��L�!#���N� "�� �O�$&�!� "���N� �O�&(�#�"$��"$��"$�� "���J��M��L��M�!#��!��$&�!��N�%'�"��M�"�� #��$'�!�'*�$� #��.1�+�),�&�#&� �#&� �&)�#r(r)r�r�r�r)r�rs  r&�test_tlsalerttype�"TestEnumerations.test_tlsalerttypeds&��&	*�4�<�<�&	*�N	
���3�]�Cr(c�l�"SS[R5n[R"U[5 g)Nc�p�\rSrSrSrSrSrSrSrSr	Sr
S	rS
rSr
SrS
rSrSrSrSrSrSrSrSrSrSrSrSrg)�DTestEnumerations.test_tlsmessagetype.<locals>.Checked_TLSMessageTypei�z>Message types (handshake protocol)

See RFC 8446, section B.3
rrVr�rr[r:r�r5rGr@�
�r^rr(rHr�r���C�r�r_N)r�rXrYrZrj�
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_HASHr\r`r_r(r&�Checked_TLSMessageTyper"�s���
��M��L��L�#$� � !�� !��"#��#$� ��K�"$��"$���K�!#��"$���H� �O�!#�� "���J��J��L�!'�r(r<)r�r�r�r)r�r<s  r&�test_tlsmessagetype�$TestEnumerations.test_tlsmessagetype�s%��	(�T�\�\�	(�6	
���5��Gr(c���[R"[RSSS[RS9nUR
Ul[R"U[R5 g)N�
_SSLMethodr
c�<�URS5=(a US:g$)Nrar��rdr$s r&r��1TestEnumerations.test_sslmethod.<locals>.<lambda>�s��T�_�_�[�9�W�d�FW�>W�Wr(��source)	r��
_old_convert_r�r
r�rfr�r�r@)r��Checked_SSLMethods  r&�test_sslmethod�TestEnumerations.test_sslmethod�sN�� �.�.����l�E�W��x�x���->�,J�,J��)����0�#�.�.�Ar(c��[R"[RSSS[RS9n[R
"U[R5 g)N�Optionsr
c�$�URS5$)Nr�rBr$s r&r��/TestEnumerations.test_options.<locals>.<lambda>�s
��T�_�_�U�3r(rD)r�rF�IntFlagr
r�r�rK)r��CheckedOptionss  r&r��TestEnumerations.test_options�s=���+�+����i��3��x�x���
	
���~�s�{�{�;r(c��[R"[RSSS[RS9n[R
"U[R5 g)N�AlertDescriptionr
c�$�URS5$)N�ALERT_DESCRIPTION_rBr$s r&r��8TestEnumerations.test_alertdescription.<locals>.<lambda>�s��T�_�_�-A�Br(rD)r�rFr�r
r�r�rR)r��CheckedAlertDescriptions  r&�test_alertdescription�&TestEnumerations.test_alertdescription�sB��"&�"4�"4����0�%�B��x�x�#��
	
���6��8L�8L�Mr(c��[R"[RSSS[RS9n[R
"U[R5 g)N�SSLErrorNumberr
c�$�URS5$)N�
SSL_ERROR_rBr$s r&r��6TestEnumerations.test_sslerrornumber.<locals>.<lambda>�s
��T�_�_�\�:r(rD)r�rFr�r
r�r�rZ)r��Checked_SSLErrorNumbers  r&�test_sslerrornumber�$TestEnumerations.test_sslerrornumber�sB��!%�!3�!3����.��:��x�x�"��
	
���5�s�7I�7I�Jr(c��[R"[RSSS[RS9n[R
"U[R5 g)N�VerifyFlagsr
c�$�URS5$)N�VERIFY_rBr$s r&r��3TestEnumerations.test_verifyflags.<locals>.<lambda>�s
��T�_�_�Y�7r(rD)r�rFrNr
r�r�rb)r��CheckedVerifyFlagss  r&�test_verifyflags�!TestEnumerations.test_verifyflags�s?��!�/�/����m�U�7��x�x���
	
���1�3�?�?�Cr(c��[R"[RSSS[RS9n[R
"U[R5 g)N�
VerifyModer
c�$�URS5$)N�CERT_rBr$s r&r��2TestEnumerations.test_verifymode.<locals>.<lambda>�s
��T�_�_�W�5r(rD)r�rFr�r
r�r�rj)r��CheckedVerifyModes  r&�test_verifymode� TestEnumerations.test_verifymode�s?�� �.�.����l�E�5��x�x���
	
���0�#�.�.�Ar(r_N)r�rXrYrZr�r�rr=rHr�rWr_rgror`r_r(r&r�r�Hs=��	>�
H�(D�TH�<B�<�N�K�D�Br(r�c���[R(Ga[R[RS.nUR5H*upU"5nU(dMUS(dM!U<SU<3n O  [
[R"55n[S[R<S[R<35 [SU-5 [S[R-5 [S[R-5 [S[R-5 [[ ["[$[&[([*[,[.[0[2[44H@n[6R8R;U5(aM)[R<"S	U-5e [>R@"5n[BRD"[>RF/UQ76 g![a N�f=f)
N)�Mac�Windowsrr�ztest_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�r^�mac_ver�	win32_ver�itemsrr�r
rcrbr�r�r�r�rrr�r�r�r�r�r�r�r��BADKEYr�rr �exists�
TestFailedr	�threading_setupry�addModuleCleanup�threading_cleanup)�platsr%r}�plat�filename�thread_infos      r&�setUpModuler��sl�������#�#��)�)�
�� �+�+�-�J�D��6�D��t��Q���"&��-���	(���)�)�+�,�D�
�
�
 �
 �#�":�":�<�	=�
�"�T�)�*�
�&����4�5�
�(�3�:�:�5�6�	��3�c�6G�6G�G�H�
	�.��'�>�=��)�:����	$��
�w�w�~�~�h�'�'��$�$�%E��%P�Q�Q�
$�#�2�2�4�K����.�@�@�O�;�O���	��	�s�
G#�#
G0�/G0�__main__)�r^)raTFNN)Nrr)�r�r�ry�
unittest.mock�astrr�rr}r�test.supportrrrr	r
rr�r�rr�rpr�r�rQ�http.clientr�rrGr�urllib.requestr�r�ryr^�	sysconfigr�rr��ImportError�
import_moduler
r�rrrrrr�rr��_PROTOCOL_NAMESrerFrcrSrbrq�get_config_varrr9r
�verrer�r'r�fsencoderr�r�r�r�r�r�r�r�rrrMrrcr�r/r�rr�r�rrrqrzryrxr�rHr�r�r�rqr�r�r�rwrr=r*rr rGrHrIrJrKrSr\rl�	lru_cacherir�r�r��ignore_warningsr�r�r�r�r�r�r�r�r��TestCaser�rbr�r�r�r�r{rmrr5�test.ssl_serversr�rTr�r6rDrIrKr\r�rWrs�
HAS_KEYLOGrhr:rsrur�r�r��mainr_r(r&�<module>r�sS���
������&�"�&�)�(�!��	�
�
�
���	��	��
��������"���
�!�!�%�(���T�T��!�!�=�c�l�l�g�&=���3�&�&�'�	�������+�+�+�	��+�+�y�8��"�1�1�2J�K�����J�E�3�
���U�#���c�n�n�c�*��&)��E�"��F��]�#�����X�&���^�$��
�M�
"�����X�&�����G�$�
��3�4���2�3����	�8�	���{�{�6�"���H�l�3���(�L�1�
�/�+�+�>�-�.���
�"�$�
%���N�+�� ��-��&��
;�F�T�0�+�+�&�-�.����$�^�,��*��� 0�1��.��
&�&D�E��%2�"�� 9�:���x��
.�
�
�}�
%�
��
�&���k�"�	���*���n�%�	�
�M�
"���0�1��	�<�	 ���k�"�	��+�,��� 5�6��	�>�	"���{�{�6�"���C�!4�a�8���3� 2�A�6���S�"6��:��%�c�+H�!�L��$�S�*F��J���
�;�;�3�
�4�*���!��!�H�".��%�4�4�
������m�m�
�D�$��
�>���m�m�
�D�$��H�,���
� /�4��4�D�J	1�x�(�(�J	1�Z` �8�$�$�` �F9D�H�%�%�9D�x@3�X�&�&�@3�F.�X�&�&�.�`y<�H�-�-�y<�x	���9�%�L�X�&�&�L�&�L�4	Z�	R�/�a��)�)�a�F	t��)�)�t�l?G�EI�#�.�bIJ�KG�\�s+�H�%�%�s+�l7
���_�Y�/�1E�F�v1�H�-�-�v1�G�v1�r	�S�^�^�%6�
7�
��%�%��B�D��a/�8�$�$�a/�HR�s�H�-�-�s�lTB�x�(�(�TB�n P�F�z���M�M�O���yn��
�F���4����s$�U�=U�U�
U�U�U

Youez - 2016 - github.com/yon3zu
LinuXploit