403Webshell
Server IP : 121.121.20.254  /  Your IP : 216.73.216.202
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:/Python315/Lib/test/__pycache__/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : C:/Python315/Lib/test/__pycache__/test_ssl.cpython-315.opt-2.pyc
R
>lqj�	c�(�]PHs]PHs]PHs]PHs]QHGs]QHGs]QH G	s	]QH(Gs]QH(Gs]QH(G
s
]QH(Gs]QH(Gs]Q	H(Gs]PHDs]PHHs]PHLs]PHPs]PHTs]PHXs]PH\s]PH`s]PHds]PHls]PHps]PHts]PHxs]PHs]PH�s ]PH�s!]PH�s"]PH�s#]PH�s$]Q
HG%s%]PH�s&\OPQ2s)]PH�s*]QH�G+s+G,s,G-s-G.s.G/s/\	O`9%c\ODQ
6Hs1\2\)Of2s4\
Ojs5Q\)Ol7s7Q\)Ol7s8\)OrQ�6�s:\)OrQ�6�s;\)OrQ�6�s<\)OrQ�6�s=\)OrQ�6�s>\7%(9%c\8%(s?\8%(s@\)OrQ�6�sA\)OrQ�6�sB\#O�Q2sD\E\)O�Q2sG\O�\GQ2sI\G9%c\O�Q6gsK\O�\KQ2sL-sMQ�FD(vsNsO\P\)\N2sN\P\)OX\O2sO\O\M\N$J*	QsR\RQ2sS\O�\S2sU\RQ2sV\RQ2sW\O�\V2sX\O�\W2sY\RQ2sZ\RQ2s[Qs\\RQ2s]\O�\]2s^\RQQ2s_\RQQ2s`\a\RQ229^tt^2sb\\bO�22sdPPP2\RQ 2se\RQ!2sf\RQ"2sgQ#sh\a\RQ$229^tt^2sb\\bO�22siPPP2\RQ%2sjQ&sk\RQ'2slQ(sm\RQ)2snQ*so\RQ+2sp\RQQ,2sq\RQ-2sr\RQ.2ss\RQ/2stQ#suQ0sv\RQ12sw\RQ22sx\RQ32sy\RQ42sz\RQ52s{\RQ62s|\RQ72s}\RQ82s~\RQ92s\O�\2s�\P\)Q:]2s�\P\)Q;]2s�\P\)Q<]2s�\P\)Q=]2s�\P\)Q>]2s�Q?s�\�2%cQ@s�LQAs�QBs�\$COQC2s�QDs�QEs�QFs�\CO\�QG5s�QHP
QIPQJ\)CO"QKPQLPQMPQNPQOPQPPQQP-
QRks�QHP
QIPQJ\)CO"QKPQLPQMPQNPQOPQPPQQP-
QSks�P
r�Pr�\f1QTP	QUP-QVkks�Q�QWks�QXQY\CO02s�QZQ[\CO02s�Q\Q]\CO02s�Q^Q_\CO02s�Q`Qa\CO02s�QbQc\CO02s�\O�\�Qd2Qe2QfQg\CO022s�\	CO@Qh2QiQj\CO022s�Q�Qkks�Qls�]QmCH�G�s�QnQo\O2s�QpQq\O2s�QrQs\O2s�Q�Qtks�Q�Quks�Qvs�QwQx\CO02s�\O�\�Qd29%c\)COZQy2QzQ{\CO022s�Q|Q}\CO02s�Q~s�QQ�\CO02s�Q�Q�\CO02s�Q�s�\�Q�6Xc\COj2P!P!\'cPs&CK:h9h\QcCJ�h9h)%fhCK�9h)%fhCK�9h)��)�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�LibreSSL�PY_SSL_DEFAULT_CIPHERS�keylog_filenamez0test requires OpenSSL 1.1.1 with keylog callback�ntz'cannot set 'keylog_filename' on Windowsc��[OO[OO[2Q,UN3!)�certdata)�os�path�join�dirname�__file__��names*�"C:\Python315\\Lib\test\test_ssl.py�	data_filer"Xs)��
�7�7�<�<�������1�:�E��E�E�zkeycert.pemzssl_cert.pemzssl_key.pemzkeycert.passwd.pemzssl_key.passwd.pem�somepass�capathz
4e1295a3.0z
5ed36f99.0zkeycert.pem.referencezrevocation.crlzkeycert3.pemz	cert3.pem�	localhostzkeycert3.pem.referencez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.pemzXXXnonexistingkey.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��[QQQ59^tt^2oQUO27ttPPP2!)%fhP!9h[cP
!h9h)z/etc/os-releasezutf-8)�encoding�ubuntu)�open�read�FileNotFoundError)�fs r!�	is_ubuntur7�sG����#�g�
6�
6�!��q�v�v�x�'�7�
6�
6�
6������s6�A
�6�
A
�A	�A	�A
�A
�
	A�A�Ac���SFDfo[UQ2%fJUO[OO6:fJBUO
]6�fJUUO
Q2Jh	P!)�minimum_versionz@SECLEVEL=1:ALL)�hasattrr9rr�TLSv1_1�security_level�set_ciphers)�ctxs�ctxs* r!�seclevel_workaroundr@�sM���C���.�/�/��#�#�s�~�~�'=�'=�=��"�"�Q�&���� 1�2�
r#c��P!�N�)r>s*r!r@r@�s��r#c��[U[2%c[[UP2oUeP
!U[O[O
[O.7cP	!UOo[U[Q2P2!)N�	PROTOCOL_)
�
isinstance�str�getattrr�PROTOCOL_TLS�PROTOCOL_TLS_SERVER�PROTOCOL_TLS_CLIENTr �has_tls_version�len)�protocolr s& r!�has_tls_protocolrO�su���(�C� � ��3��$�/���������#�1�1������
��=�=�D��4��K� 0� 1�2�3�3r#c��[U[2%c"[OOU*o[[QUO02%fP
![%c"U[OO6cP
![O[O2o[UQ2%c<UO[OO6wcVO6cP
![UQ2%c<UO[OO6wcVO6�cP
!P	!)�HAS_r9�maximum_version)rFrGrr�__members__rHr �IS_OPENSSL_3_0_0�TLSv1_2�
SSLContextrKr:r9�MINIMUM_SUPPORTEDrR�MAXIMUM_SUPPORTED)�versionr?s& r!rLrL�s����'�3����.�.�,�,�W�5���3�$�w�|�|�n�-�.�.����G�c�n�n�&<�&<�<���.�.��0�0�
1�C��C�*�+�+����3�>�>�#C�#C�C��)�)�)����&�'�'����s�~�~�?�?�?��%�%�%��r#c�`�U1QkoU!)c�L:`�[OR2UU1Qk2oU!)c�l:�[R2%f[ORQ02gRU-U@!)z is not available.)rL�unittest�SkipTest)�args�kw�funcrYs*,��r!�wrapper�8requires_tls_version.<locals>.decorator.<locals>.wrappers7���"�7�+�+��'�'�7�)�3E�(F�G�G��T�(�R�(�(r#)�	functools�wraps)rarbrYsf �r!�	decorator�'requires_tls_version.<locals>.decorator�s%���	����	�	)�
�	)�
�r#rC)rYrfsf r!�requires_tls_versionrh�s�����r#c���QO[O[O222o[
O%c([OOV*2P!P!)� )	r�	traceback�format_exception�sys�	exceptionr�verbose�stdout�write)�prefix�
exc_formats& r!�handle_errorrt
sD�����)�4�4�S�]�]�_�E�F�J������
�
����,�-�r#c��[O%c6[O2O]6�c[O'![O
'!�r)�time�daylight�	localtime�tm_isdst�altzone�timezonerCr#r!�
utc_offsetr}s7���}�}�}����)�2�2�Q�6����}���M�M�>�r#)�category�server_side�check_hostname�	cert_reqs�ca_certs�certfile�keyfile�ciphers�ciphersuites�min_version�max_versionc
���U%c%[O[O2o
L#[O[O2o
UeU[O6XcP
U
mLVmUdV*mUdU
OU2UeUdU
OVE2UdU
OU2UdU
OU2UdV�mU	dV�mU
!rB)
rrVrJrK�	CERT_NONEr��verify_mode�load_verify_locations�load_cert_chainr=�set_ciphersuitesr9rR)rr�r�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

��[UUUVEUVxV�Q5
oU%fUOQ[2UOU1QU-U@!))
rr�r�r�r�r�r�r�r�r��server_hostnamer)r��
setdefault�SIGNED_CERTFILE_HOSTNAME�wrap_socket)
�sockrr�r�r�r�r�r�r�r�r��kwargsr�s
&$$$$$$$$$$, r!�test_wrap_socketr�EsT�� ��%���g���
�G�����+�-E�F����t�G��G��G�Gr#�server_chain�client_certc�`�[%c[d[!U[6Xc[oL/U[6Xc[
oLU[6Xc[oL[U2g[O[O2oUO[2[O[O2oUOU2U%cUO[2U%c'UOU2[O Um[%c
[dVEU1rVEU1!rB)�USE_SAME_TEST_CONTEXT�
_TEST_CONTEXT�SIGNED_CERTFILEr��SIGNED_CERTFILE2�SIGNED_CERTFILE2_HOSTNAME�	NOSANFILE�NOSAN_HOSTNAME�
ValueErrorrrVrKr��
SIGNING_CArJr��
CERT_REQUIREDr�)�server_certr�r��hostname�client_context�server_contexts&$$   r!�testing_contextr�`s������$� � ��o�%�+��	�(�	(�,��	�	�	!�!����%�%��^�^�C�$;�$;�<�N��(�(��4��^�^�C�$;�$;�<�N��"�"�;�/���,�,�Z�8���&�&�{�3�%(�%6�%6��"����$�*�H�D�M��8�3�3r#c��P]qCU%fgVB6ca[O[O29^tt^2UO	2PPP2UO2oU]*
oJnU!)%fhK-9hrB)�
contextlib�suppressr�SSLWantReadError�do_handshaker4)�	sslobject�outgoing�	max_retry�data�attempts&&&  r!�do_ssl_object_handshaker��s]��
�!�'��w�*�
�
 �
 ��!5�!5�
6�
6��"�"�$�7��}�}����1����K�	7�
6�s�A5�5B	�>B	c�R`�\sQsQsnQsQsQsQsQsQs	Qs
Q	sQ
sQs
QsQ
s\O"Q2sQsQsQsQsQsQsQsQsQs\O:Q\O>7Q2Q2s Qs!Qs"\O:\#OHQ6HQ2Q2s%\O:\#OHQ6HQ2Q 2s&Q!s'Q"s(Q#s)Q$s*Q%s+\O:\,2Q&2Q'2s-Q(s.\O^Q)P2Q*2s0Q+s1Q,s2Q-s3Us4P!).�BasicSocketTests�c��[O[O[O[O[O
[O[OUO[OP	2UO[OP	2UO[O[2UO[OP	2[O[O [O"[O$[O&[O(UO[O*[O,2P!�T)rr��
CERT_OPTIONALr�r.r,r-r+�assertEqual�HAS_SNI�HAS_ECDH�assertIsInstance�HAS_TLSv1_2�bool�HAS_TLSv1_3�OP_NO_SSLv2�OP_NO_SSLv3�OP_NO_TLSv1�
OP_NO_TLSv1_3�
OP_NO_TLSv1_1�
OP_NO_TLSv1_2rI�PROTOCOL_SSLv23��selfs&r!�test_constants�BasicSocketTests.test_constants�s����
�
��������'�'����������������d�+�������t�,����c�o�o�t�4�������$�/�����������������������)�)�3�+>�+>�?r#c
�"�[[2FDeoUOQ2%fJUOUQ59^tt^2[	[U2oUOU]QU02PPP2Jg	P!)%fhJ|9h)�OP_��option�ssl.)�dirr�
startswith�subTestrH�assertGreaterEqual)r�r �values&  r!�test_options�BasicSocketTests.test_options�sk����H�D��?�?�5�)�)�����T��*�*���T�*���'�'��q�D���-�@�+�*��+�*�*�s�'A=	�=B
�B
c��[O[O[O[O[O
[O,oSFDToUOUQ59^tt^2UO[Q29^tt^2PUm
PPP2PPP2JV	[OU[O2P!)%fhKC9h)%fhJ�9h))�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�0��+�+�I�7G�H�H�%)�H�N�I�1�0�"�	�,�,�T�4�3C�3C�D�I�H��1�0�0�s0�>C3	�C 
�%C3	� C0�)C0�+C3	�3D
�<D
c	��UO[Q29^tt^2[O29^tt^2o[O	U2PPP2PPP2P!)%fhK9h)%fhP!9h�zpublic constructor)r�r��socketr�	SSLSocket�r��ss& r!�test_private_init�"BasicSocketTests.test_private_init�sP��
�
#�
#�I�/C�
D�
D������A��
�
�a� �!�E�
D� ���E�
D�
D�s.�A9�A&	�A9�&A6
�/A6
�1A9�9B
	�B
	c�>�[OoUO[U2QUO*2UO[U2[UO22[O
U2oUOUOU2P!)z$<_SSLMethod.PROTOCOL_TLS_CLIENT: %r>)	rrKr��reprr�rGrV�assertIsrN�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��[O2o[O%c<[O
O
QX9%cQ9%fQ1*2U%c2[O]2oUO[U2]2L/UO[O[O]2UO[[OQ2[OQQ2[OQQ2[O[Q2Q2P!)z
 RAND_status is %d (%s)
zsufficient randomnesszinsufficient randomnesszthis is a random stringg�R@sthis is a random bytes objects!this is a random bytearray object���)r�RAND_statusrrormrprq�
RAND_bytesr�rM�assertRaisesr�r��RAND_add�	bytearray)r��vr�s&  r!�test_random�BasicSocketTests.test_random�s����O�O����?�?�?��J�J���:� !�$A�$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��PUmUO[OO	[
2[2UO[OO	[2[2[OO	[2o[O%cB[OOQ[O U2*Q*2UOUQ*Q2UOUQ*Q2UOUQ*Q2UOUQ*Q	2P!)
N�
�subjectAltName�OCSP�	caIssuers�crlDistributionPoints))�DNSzprojects.developer.nokia.com)rzprojects.forum.nokia.com)zhttp://ocsp.verisign.com)z0http://SVRIntl-G3-aia.verisign.com/SVRIntlG3.cer)z0http://SVRIntl-G3-crl.verisign.com/SVRIntlG3.crl)�maxDiffr�rr��_test_decode_cert�CERTFILE�
CERTFILE_INFOr��SIGNED_CERTFILE_INFO�	NOKIACERTrrormrprq�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�<�[OO[2o[O
%cB[OOQ[OU2*Q*2UOUQQQQQQQQQQQ	Q
Q
]-2P!)r�issuer�notAfterzJun 14 18:00:58 2028 GMT�	notBeforezJun 18 18:00:58 2018 GMT�serialNumber�02�subjectrrY)�)�countryName�UK))�
commonNamezcody-ca)r))r�#codenomicon-vm-2.test.lal.cisco.com))rr )rr�r
�TALOS_INVALID_CRLDPrrormrprqrrr�rs& r!�test_parse_cert_CVE_2019_5010�.BasicSocketTests.test_parse_cert_CVE_2019_5010s����H�H�&�&�':�;���?�?�?��J�J���T�F�N�N�1�$5�5��<�=����
��L��6��7����H�!�#E��1�
�	
r#c���[OO[2o[O
%cB[OOQ[OU2*Q*2QoUOUQ*U2UOUQ*U2[OQ6�cQoLQoUOUQ*U2P!)rrrr)))r�US))�stateOrProvinceName�Oregon))�localityName�	Beaverton�)�organizationNamezPython Software Foundation))�organizationalUnitNamezPython Core Development))rznull.python.orgexample.org))�emailAddresszpython-dev@python.org)r�	�)�rzaltnull.python.orgexample.com��emailz null@python.orguser@example.org��URIz)http://null.python.orghttp://example.org��
IP Addressz	192.0.2.1)r6z2001:DB8:0:0:0:0:0:1)r0r1r3r5)r6z	<invalid>)
rr�r
�NULLBYTECERTrrormrprqrrr��_OPENSSL_API_VERSION)r�rr�sans&   r!�test_parse_cert_CVE_2013_4238�.BasicSocketTests.test_parse_cert_CVE_2013_4238s����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��[OO[2oUO	UQ*Q2P!)r)
)r�allsans��	othernamez
<unsupported>r>)r2zuser@example.org)rzwww.example.org)�DirName)))r�XY))r(zCastle Anthraxr*))rzdirname example)r4zhttps://www.python.org/)r6�	127.0.0.1)r6z0:0:0:0:0:0:0:1)z
Registered IDz	1.2.3.4.5)rr�r
�
ALLSANFILEr�rs& r!�test_parse_all_sans�$BasicSocketTests.test_parse_all_sans5s1���H�H�&�&�z�2������+�,�
�	
r#c�R�[[Q29^tt^2oUO2oPPP2[O	W2o[OU2o[O	U2oUO
V52UO[OQ*2%fUOQU*2UOQ[O*Q*2%fUOQU*2P!P!)%fhK�9h)�rrz-DER-to-PEM didn't include correct header:
%r
z-DER-to-PEM didn't include correct footer:
%r
)r3�
CAFILE_CACERTr4r�PEM_cert_to_DER_cert�DER_cert_to_PEM_certr�r��
PEM_HEADER�fail�endswith�
PEM_FOOTER)r�r6�pem�d1�p2�d2s&     r!�test_DER_to_PEM� BasicSocketTests.test_DER_to_PEMJs���
�-��
%�
%���&�&�(�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�D�D&	�D&	c�<�[Oo[Oo[OoUO	U[
2UO	U[2UO	U[2UOUQ2UOUQ2UvqEqgoUOU]2UOU]2UOU]2UOUQ2UOU]2UOUQ2UOU]2UOU]?2UOU]2UOU]2QUQ
0o	U]6�cQUQ
QUQ
QUQ
0o
LQUQ
QUQ
QUQ
0o
UOV:U	Q1U[U212P!)iiP�z	LibreSSL �dzOpenSSL �.r)
r�OPENSSL_VERSION_NUMBER�OPENSSL_VERSION_INFO�OPENSSL_VERSIONr��int�tuplerGr��
assertLess�assertLessEqual�assertStartsWith�hex)r��n�tr��major�minor�fix�patch�status�libressl_ver�openssl_vers&          r!�test_openssl_version�%BasicSocketTests.test_openssl_versionVs����&�&���$�$���������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����
�\�8�4�
��A��K�	
r#c�B�[O[O2o[U2o[OU2o[
OP[129^tt^2=PPP2UOU2P2P!)%fhK)9h��)	r��AF_INETr��weakref�refr	�check_warnings�ResourceWarningr�)r�r��ss�wrs&   r!�
test_refcycle�BasicSocketTests.test_refcycleysh��
�M�M�&�.�.�)��
�a�
 ��
�[�[��_��
�
+�
+�R��,A�
B�
B��C������t�$�C�
B�s�+B�B	�B	c
��[O[O2o[U29^tt^2oUO[UO
]2UO[UO[Q22UO[UO]2UO[UO[Q2]2UO[UOQ2UO[UOQQ2UO[UO2UO[UOQ,Q]Q2UO[UO]d2UO[UO []d2,2PPP2P!)%fhP!9h)��x)z0.0.0.0rrC)r�rpr�r��OSError�recv�	recv_intor��recvfrom�
recvfrom_into�send�sendto�NotImplementedError�dup�sendmsg�recvmsg�recvmsg_into�r�r�rus&  r!�test_wrapped_unconnected�)BasicSocketTests.test_wrapped_unconnected�s3��
�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/�/G	�8G	c	�$�QFDso[O[O2oUOU2[U29^tt^2oUO	VO22PPP2Ju	P!)%fhJ�9h)N)Ng�@)r�rp�
settimeoutr�r��
gettimeout)r��timeoutr�rus&   r!�test_timeout�BasicSocketTests.test_timeout�sa��(�G��
�
�f�n�n�-�A�
�L�L��!�!�!�$�$��� � ��-�-�/�:�%�$�(�%�$�$�s� A>	�>B
�B
c��[O[O[O[O,o,o[[Q2%c UO
[O2[[Q2%c UO
[O2[[Q2%c UO
[O2UO
[O2[OO[OO[OO,oSFD�oUOUQ59^tt^2[O![O"2oUO%[&29^tt^2oU9O(U*tmPPP2UO+Q[-WO.22PPP2J�	SFD�o[1U2%fJUOUQ59^tt^2UO%[&29^tt^2o[O!U2PPP2UO+QUO2Q0[-WO.22PPP2J�	SFD�o[5U2%fJUOUQ59^tt^2[O![O"2oUO%[&29^tt^2oV�mPPP2UO8O:8Q	UO280o	UO+QU	Q0[-WO.22PPP2J�	P!)%fhCK�9h)%fhCJf9h)%fhCKZ9h)%fhCJ�9h)%fhK�9h)%fhCJU9h)
�PROTOCOL_TLSv1�PROTOCOL_TLSv1_1�PROTOCOL_TLSv1_2r�z4ssl.OP_NO_SSL*/ssl.OP_NO_TLS* options are deprecated)rNr�z is deprecated)rYrX)rr�r�r�r�r:�appendr�r�r�rIr�SSLv3�TLSv1r;r�rVrK�assertWarns�DeprecationWarning�optionsr�rG�warningrOr rLr9�	__class__�__name__)
r�r��	protocols�versionsr�r?�cmrNrY�version_texts
&         r!�test_openssl111_deprecations�-BasicSocketTests.test_openssl111_deprecations�s����O�O����������	
���	��3�(�)�)����S�/�/�0��3�*�+�+����S�1�1�2��3�*�+�+����S�1�1�2�����)�)�*��N�N� � ��N�N� � ��N�N�"�"�
���F����V��,�,��n�n�S�%<�%<�=���%�%�&8�9�9�R��K�K�6�)�K�:�� � �J���
�
�O��	-�,��"�H�#�H�-�-�����x��0�0��%�%�&8�9�9�R��N�N�8�,�:�� � ��8�=�=�/��8���
�
�O��1�0�"� �G�"�7�+�+�����g��.�.��n�n�S�%<�%<�=���%�%�&8�9�9�R�*1�'�:�*1�*;�*;�*D�*D�g�l�l�S��� � ��<�.��7���
�
�O��/�.� �%:�9�9��-�,�,��:�9�9��1�0�0��:�9��/�.�.�s��-AN$	�.N
�-N$	�4O
	�N9
�(;O
	�"AO5	�#O"
�*AO5	�N!�N!�	N$	�$N6
�-N6
�9O
�O
�	O
	�
O
�O
�"O2�+O2�-O5	�5P
�>P
c��[OO[OO[29%f[O
QU2o[O2oUOUO2UO[O29^tt^2[UUQ5PPP2P!)%fhP!9h)r�r�)
rrrrr�curdirr��
addCleanup�closer�rr�r��r�r�r�s&& r!�
bad_cert_test�BasicSocketTests.bad_cert_test�s����7�7�<�<������� 9� F� F�R�Y�Y� *�H�6���}�}�������
�
�#�
�
�
�s�|�|�
,�
,��T�&.�
0�-�
,�
,�
,�s�3C�C	�C	c�*�UOQ2P!)r(�r�r�s&r!�test_empty_cert� BasicSocketTests.test_empty_cert�s�����>�*r#c�*�UOQ2P!)r)r�r�s&r!�test_malformed_cert�$BasicSocketTests.test_malformed_cert�s�����=�)r#c�*�UOQ2P!)r*r�r�s&r!�test_malformed_key�#BasicSocketTests.test_malformed_key�s�����<�(r#c
�
�[O[O2o[O29^tt^2oUO	[
UOUP	QQ5PPP2P!)%fhP!9h)Tz
some.hostname�r�)rrVrJr�r�r�r�)r�r?r�s&  r!�test_server_side�!BasicSocketTests.test_server_side�sQ���n�n�S�4�4�5��
�]�]�_�_�����j�#�/�/�4��.=�
�
?��_�_�_�s�%A1�1B	�:B	c	���[OQ2o[O[O2oUOUO	22[UP
Q59^tt^2oUO
[29^tt^2UOQ2PPP2PPP2UO2P!)%fhK*9h)%fhK59h)rB��do_handshake_on_connectzunknown-type�rBr)
r��
create_serverrp�connect�getsocknamer�r�r��get_channel_bindingr�)r�r��crus&   r!�test_unknown_channel_binding�-BasicSocketTests.test_unknown_channel_binding�s���� � �!1�2���M�M�&�.�.�)��	�	�	�!�-�-�/�"�
�a��
?�
?�2��"�"�:�.�.��&�&�~�6�/�@�	
���	�/�.��@�
?�s0�0C�C	� C�C
�C
�
C�C%	�C%	�
tls-unique�*'tls-unique' channel binding not availablec���[O[O2o[U29^tt^2oUOUO	Q22PPP2[O[O2o[UP	[
Q59^tt^2oUOUO	Q22PPP2P!)%fhKy9h)%fhP!9h)r��rr�)r�rpr��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�
E�����b�4�4�\�B�C�F�
E�	!�
 ��F�
E�
E�s#�!C� !C�C	�C	�C/	�'C/	c��[[O[O22o[U2oUO	[
29^tt^2oPo[O2PPP2UOU[WOO]*22P!)%fhKH9hrB)r�r�rpr�r�rtr�
gc_collect�assertInrGr�r_)r�rurGr�s&   r!�test_dealloc_warn�"BasicSocketTests.test_dealloc_warn	sv��
�f�m�m�F�N�N�;�
<����H��
�
�
�o�
.�
.�"��B���� �/�	
�
�
�a��R�Z�Z�_�_�Q�/�0�1�/�
.�s�B/�/B?	�8B?	c���[O2oUO[U2]2UO	U[O
2[O29^tt^2o[UQ$[UQ$[O2oUOUO[2UOUO[2PPP2P!)%fhP!9h)��SSL_CERT_DIR�
SSL_CERT_FILE)r�get_default_verify_pathsr�rMr��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�C0	�(C0	r�Windows specificc
�B�UO[OQ22UO[OQ22UO[[O2UO[
[OP2[
2oQFD�o[OU2oUOU[2SFD�oUOU[2UO[U2]2UvqVoUOU[2UOUQQ.2UOU[[[12[!U[[12%fJ�UO#U2J�	J�	QoUOV�2P!)�CA�ROOT�x509_asn�
pkcs_7_asn�1.3.6.1.5.5.7.3.1)r�r�)�
assertTruer�enum_certificatesr�r��WindowsError�setr��listr]r�rM�bytesr��	frozensetr�rF�update)	r��
trust_oids�	storename�store�element�cert�enc�trust�
serverAuths	&        r!�test_enum_certificates�'BasicSocketTests.test_enum_certificatess4������-�-�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��UO[OQ22UO[[O2UO[
[OP2[OQ2oUO
U[2SFDloUO
U[2UO[U2]2UO
U]*[2UOU]*QQ.2Jn	P!)r�r�r�)
r�r�	enum_crlsr�r�r�r�r�r]r�rMr�r�)r��crlsr�s&  r!�test_enum_crls�BasicSocketTests.test_enum_crls6s�������
�
�d�+�,����)�S�]�]�3����,��
�
�r�:��}�}�T�"�����d�D�)��G��!�!�'�5�1����S��\�1�-��!�!�'�!�*�e�4��M�M�'�!�*�z�<�&@�A�	r#c	�&�Q	o[OQ2oUOV!2UOUO]�2UOUOQ2UOUO
Q2UOUOQ2UOU[O2UO[[OQ2[OO]�2oUOV!2UOU[O2UO[[OOP2UO[Q29^tt^2[OOQ2PPP2[Q2FD�o[OOU2oUOUO[2UOUO[2UOUO
[2UOUO[[P212J�	[OO!Q2oUOV!2UOU[O2UO[OO!Q2U2UO[OO!Q2U2UO[Q29^tt^2[OO!Q2PPP2P!)%fhCK�9h[cCJ�h9h)%fhP!9h)
�r��TLS Web Server Authenticationr�zunknown NID 100000i����zunknown object 'serverauth'�
serverauth)r�r�r�r�)r�_ASN1Objectr��nid�	shortname�longname�oidr�r�r��fromnidr��ranger\rG�type�fromname)r��expected�val�i�objs&    r!�test_asn1object� BasicSocketTests.test_asn1objectEs|��)���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�
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�
N��O�O�$�$�\�2�O�
N�'F�
E�
E��
�
��
��O�
N�
N�s<�< M�4M,�. M?�M)	�!M)	�,	M<�6M<�;M<�?N	�N	c�T�[OQ2oUO[OO[O2UO[OOU2UO[OOO]�2UO[OOOQ2UO[OOOQ2[OQ2oUO[OO[O2UO[OOU2UO[OOO]�2UO[OOOQ2UO[OOOQ2P!)r�r�z1.3.6.1.5.5.7.3.2�
clientAuth)
rrr�r
�SERVER_AUTHr�rrr�CLIENT_AUTH)r�rs& r!�test_purpose_enum�"BasicSocketTests.test_purpose_enumlsX���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��[O[O[O2oUOUO2UO[29^tt^2o[U[OQ5PPP2UO[WO2Q2[O[O2oUO[29^tt^2oUOU2PPP2UO[UO2Q2P!)%fhK�9h)%fhKJ9h)�r�z!only stream sockets are supported)r�rp�
SOCK_DGRAMr�r�r�r�r�rr�r�rGrnrVrKr�)r�r��cxr?s&   r!�test_unsupported_dtls�&BasicSocketTests.test_unsupported_dtls}s����M�M�&�.�.�&�*;�*;�<�������� �
�
�
�2�
3�
3�r��Q�#�-�-�8�4�����R�\�\�*�,O�P��n�n�S�4�4�5��
�
�
�2�
3�
3�r��O�O�A��4�����R�\�\�*�,O�P�
4�
3��4�
3�s$�-D7�6E
�7E	�E	�
E	�E	c�R�UO[OU2U2P!rB)r�r�cert_time_to_seconds)r��
timestring�	timestamps&&&r!�cert_time_ok�BasicSocketTests.cert_time_ok�s������1�1�*�=�y�Ir#c��UO[29^tt^2[OU2PPP2P!)%fhP!9hrB)r�r�rr)r�rs&&r!�cert_time_fail�BasicSocketTests.cert_time_fail�s0��
�
�
�z�
*�
*��$�$�Z�0�+�
*�
*�
*�s�?�A	�A	z)local time needs to be different from UTCc�P�UOQQ2UOQQ2P!)zMay  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_timezone�s&��
	
���4�l�C����4�l�Cr#c��QoQoUOV2UO[OUQ5U2UOQU2UOQU2UO	Q2UO	Q2UO	Q2UO	Q2UO	Q	2UO	Q
2UO	Q2QoUOQ
U2UOQU2UOQQ2UOQQ2UOQQ2UO	Q2UOQQ2P!)r'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rr$)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_ALLc���QoU2O2Q6XcUOQ2UOQQ2UOU2Q*2P!)c�2�[OQQ2!)z%b)	rz����r�rrr)rw�strftimerCr#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�r9s& 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�.�[O[O2oUOUO2[O
U2o[
[O[O2[OQ5oUOUO2UO[U12o[O[O[O[O1oUO!VE2P!)r)r�rpr�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	���[2vqo[UQ5oS9^tt^2UO[O2UQ59^tt^2oUO	[
UO12UOUO]2Q2UOUOQ2]2PPP2PPP2P!)%fhK9h)%fhP!9h)�r�r�r#)
r��ThreadedEchoServerr�r�r�rCrJr�r}r��r�r�r�r�rIr�s&     r!�test_read_write_zero�%BasicSocketTests.test_read_write_zero�s���3B�3D�0���#�N�;��
�V��+�+�F�M�M�O�<D�,�F�F�IJ��	�	�4����-�.�� � ������C�0�� � ������a�0�	F��V�F�F���V�V�s0�/C�A$C
	�8C�
C
�C
�C�C.	�&C.	)r	)5r��
__module__�__qualname__�__firstlineno__r�r�r�r�r�rrr"r:rDrSrkr�cpython_onlyrwr�r�r�r�r�r�r�r�r�r]�
skipUnlessr�CHANNEL_BINDING_TYPESr�r�r�rm�platformr�r�rrrr!r$r}r)r/�run_with_localer>rMrS�__static_attributes__�__classdictcell__��
__classdict__s@r!r�r��s�����@�(A�
E�!�
+�L�(P�<
�*3�:
�*
N�!
�F
���%��%�0�$;�5�n0�+�*�)�?�������)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�"� 	1�	1r#r�c��`�\sQsQsnQsQs\O\]6HQ2Q2s	Qs
Qs\O\Q2Q	2s
\O\Q
2Q2s\O\Q2Q
2s\O\Q2Q2sQsQsQs\Q2s\O\\O6Q2Q2Q2sQsQs\O@2Q2s!Qs"Qs#Qs$Qs%Qs&\O\ONQ2Q 2s(Q!s)Q"s*Q#s+\,OZQ$P	Q%5\O@2Q&22s.Q's/Q(s0Q)s1\Od\3OhQ*6HQ+2Q,2s5\O\3OhQ*6HQ-2\Od\,OlQ.2Q/22s7Q0s8Q1s9Q2s:Q3s;Q4s<Q5s=Q6s>\,O~Q72s@\,O~\AQ822sB\,O~\O\O�Q92Q:22sD\,O~\O\O�Q92Q;22sEQ<sFUsGP!)=�ContextTests��c	��[FDmo[U2%fJ[O29^tt^2[OU2oPPP2UO
WOU2Jo	[O29^tt^2[O2oPPP2UO
WO[O2UO[[O
P2UO[[O
]*2P!)%fhK�9h)%fhK�9hrB)�	PROTOCOLSrOr	rsrrVr�rNrIr�r�)r�rNr?s&  r!�test_constructor�ContextTests.test_constructor�s���!�	�H���)�)�$�3�3�5�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:
�3D:
�=E
	�E
	c�>�[O[O2oUOQ2UOQ2UO	[O
Q29^tt^2UOQ2PPP2P!)%fhP!9h)�ALL�DEFAULT�No cipher can be selected�^$:,;?*'dorothyx)rrVrKr=r�r��r�r?s& r!�test_ciphers�ContextTests.test_ciphers�sc���n�n�S�4�4�5����������	�"�
�
#�
#�C�L�L�2M�
N�
N��O�O�.�/�O�
N�
N�
N�s�/B�B	�B	z+Test applies only to Python default ciphersc�H�[O[O2oUO2oSFDfoUQ*oUO	QU2UO	QU2UO	QU2UO	QU2UO	QU2Jh	P!)r �PSK�SRP�MD5�RC4�3DES)rrVrK�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
��[O[O2oUOQ2[9PIc!.QUO22DjJ	LQUO222o.QloUO
U2oUO[U2]Q[U2Q[U202P!)�AESGCMc3�>�SF �DpQ*w�	J	P!3hrrC)�.0rWs& r!�	<genexpr>�0ContextTests.test_get_ciphers.<locals>.<genexpr>
s��'8���'8�!�f�I�I�'8�s�z
got: z
expected: >�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-SHA384)
rrVrKr=r�rv�intersectionr�rM�sorted)r�r?�namesrr�s&    r!�test_get_ciphers�ContextTests.test_get_cipherss����n�n�S�4�4�5������!���9�s���'8�9���9�s���'8�9�9��	
���)�)�(�3��������q�G�F�5�M�?�,�v�h�GW�FX�"Y�	
r#c�"�[O2oUOUOQ22UO	[O
UOQ2[%c#UOUOQ22P!P!)zP-256:P-384z	P-256:fooz
P-256:?foo)r�create_default_contextr��
set_groupsr�r��!CAN_IGNORE_UNKNOWN_OPENSSL_GROUPSrms& r!�test_set_groups�ContextTests.test_set_groupsse���(�(�*��	
���#�.�.��7�8����#�,�,�����D�,�,����c�n�n�\�:�;�-r#z.OpenSSL version doesn't support getting groupsc��[O2oUOQUO22UO	QUOP	Q52P!)zP-256)�include_aliases)rr�rw�
get_groupsr�rms& r!�test_get_groups�ContextTests.test_get_groups%sB���(�(�*������#�.�.�"2�3��
�
�g�s�~�~�d�~�C�Dr#z+SSL library doesn't support getting sigalgsc�P�UOQ[O22P!)�rsa_pss_rsae_sha256)r�r�get_sigalgsr�s&r!�test_get_sigalgs�ContextTests.test_get_sigalgs-s��	
�
�
�+�S�_�_�->�?r#�2SSL library doesn't support setting client sigalgsc�"�[O2oUOUOQ22UO	[O
UOQ2[%c#UOUOQ22P!P!�r�zrsa_pss_rsae_sha256:foozrsa_pss_rsae_sha256:?foo)rr�r��set_client_sigalgsr�r��"CAN_IGNORE_UNKNOWN_OPENSSL_SIGALGSrms& r!�test_set_client_sigalgs�$ContextTests.test_set_client_sigalgs2�r���(�(�*�����#�0�0�1F�G�H����#�,�,��(>�(>�3�	5�.�-����c�4�4�5O�P�Q�.r#�2SSL library doesn't support setting server sigalgsc�"�[O2oUOUOQ22UO	[O
UOQ2[%c#UOUOQ22P!P!r�)rr�r��set_server_sigalgsr�r�r�rms& r!�test_set_server_sigalgs�$ContextTests.test_set_server_sigalgs@r�r#c��[O[O2o[O[O*[O
*oU[[*[*[*[**oUOV!O2[O29^tt^2U9O[O*tmPPP2UOU[O*UO2[O29^tt^2UO[O&*UmPPP2UOV!O2]UmUO]UO[O
&*2UO!["29^tt^2PUmPPP2UO![$29^tt^2]]d*UmPPP2UO![&29^tt^2QUmPPP2P!)%fhCKs9h)%fhCK	9h)%fhK�9h)%fhKz9h)%fhP!9h)N�abc)rrVrK�OP_ALLr�r�r+r.r,r-r/r�r�r	rsr�r�r��
OverflowErrorr�)r�r?�defaults&  r!r��ContextTests.test_optionsNs����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�?�?�*:�:�;��
�
�z�
*�
*��C�K�+�
�
�
�}�
-�
-��s�(�C�K�.�
�
�
�y�
)�
)��C�K�*�
)�'.�
-�
-��
.�
-�
-��+�
*��
-�
-��
)�
)�
)�sZ�(I"�(I6�/J
�J�J0�"I3	�+I3	�6J	�?J	�
J	�J	�J-	�&J-	�0K	�9K	c�4�[O29^tt^2[O[O2oPPP2UOWO[O2[OUmUOUO[O2[OUmUOUO[O2[OUmUOUO[O2UO[29^tt^2PUmPPP2UO[29^tt^2]*UmPPP2[O[O2oUOUO[O2UOUO2[O[O 2oUOUO[O2UO#UO2P!)%fhCK$9h)%fhCK$9h)%fhCK9hrB)r	rsrrVrIr�r�r�r�r�r�r�r�rJ�assertFalser�rKr�rms& r!�test_verify_mode_protocol�&ContextTests.test_verify_mode_protocolps���
�
+�
+�
-�
-��.�.��!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��������#�*;�*;�<�����*�*�+�+.�
-�
-��*�
)�
)��
*�
*�
*�s5�$I�I2�<J�I/	�'I/	�2J	�;J	�J	�J	c��[O[O2oUOUO2[O
%ciP	UmUOUO2P
UmUO
UO2P	UmUOUO2P!UO[29^tt^2P	UmPPP2P!)%fhP!9hr�)	rrVrKr��hostname_checks_common_name�HAS_NEVER_CHECK_COMMON_NAMEr�r��AttributeErrorrms& r!� test_hostname_checks_common_name�-ContextTests.test_hostname_checks_common_name�s����n�n�S�4�4�5������7�7�8��*�*�*�.2�C�+��O�O�C�;�;�<�.3�C�+����S�<�<�=�.2�C�+��O�O�C�;�;�<��"�"�>�2�2�26��/�3�2�2�2�s�C-�-C>	�6C>	c�:
�[O[O2o[OO[OO
[OO.o[OO[OO.oUOUOU2UOUOU2[OOUm
[OOUmUOUO[OO2UOUO[OO2[OOUm
[OO
UmUOUO[OO2UOUO[OO
2[OOUmUOUO[OO2[OOUmUOUO[OO
[OO[OO[OO[OO.2[OOUm
UOUO[OO[OO.2UO[ 29^tt^2]*Um
PPP2[#Q2%Cc[O[O$2oUOUOU2UOUO[OO2UO[ 29^tt^2[OOUm
PPP2UO[ 29^tt^2[OO
UmPPP2P!P!)%fhCK$9h)%fhKm9h)%fhP!9h)�*r�)rrVrJrrWr�rUrX�TLSv1_3r�r9rRr;r�r�r�r�rOr�)r�r?�
minimum_range�
maximum_ranges&   r!�test_min_max_version�!ContextTests.test_min_max_version�sY���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��+��.�/�/��.�.��!5�!5�6�C��M�M��#�#�]�
�
����#�#�S�^�^�%E�%E�
��"�"�:�.�.�&)�n�n�&F�&F��#�/��"�"�:�.�.�&)�n�n�&:�&:��#�/�.�0�+�
*�
*��/�.��.�.�.�s6�?S"�1 S6�6 T	�"S3	�+S3	�6T	�?T	�	T	�T	r<zrequires OpenSSL >= 1.1.0c��[O[O2o.QloUOUOU2P!)r>rrzr4r5r6r7)rrVrKr�r<)r�r?�security_level_ranges&  r!�test_security_level� ContextTests.test_security_level�s7��
�n�n�S�4�4�5�� 
��	
�
�
�c�(�(�*>�?r#c��[O[O2o[[Q]2oUO	UO
[OU*2[OUmUO	UO
[O2[OUmUO	UO
[O2[OUmUO	UO
[O2[OUmUO	UO
[O2[O[O*UmUO	UO
[O[O*2UO[29^tt^2PUmPPP2P!)%fhP!9h)�VERIFY_X509_TRUSTED_FIRST)
rrVrJrHr��verify_flags�VERIFY_DEFAULT�VERIFY_CRL_CHECK_LEAF�VERIFY_CRL_CHECK_CHAIN�VERIFY_ALLOW_PROXY_CERTS�VERIFY_X509_STRICTr�r�)r�r?�tfs&  r!�test_verify_flags�ContextTests.test_verify_flags�sZ���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;�;H	�H	c��[O[O2oUO[PQ5UO[[Q5UO[UO[Q5UO[29^tt^2oUO[2PPP2UOWOO[O2UOUOO[2UO[29^tt^2oUO[[Q5PPP2UOUOO[O2UOUOO[2UO[O Q29^tt^2UO["2PPP2UO[O Q29^tt^2UO[$2PPP2[O[O2oUO[&[(2UO[&[(Q5UO[*[,Q5UO[O Q29^tt^2UO[&2PPP2UO[O Q29^tt^2UO[(2PPP2UO[O Q29^tt^2UO[([&Q5PPP2[O[O2o[.O0Q[.O22oUO[O U29^tt^2UO[4[(2PPP2UO[6[8Q5UO[6[8O;2Q5UO[6[=[8O;22Q5UO[&[>[82UO[&[>[8O;22UO[&[>[=[8O;222UO[Q29^tt^2UO[6P	Q5PPP2UO[O 29^tt^2UO[6QQ5PPP2UO[@Q29^tt^2UO[6Q	Q
*Q5PPP2QoQoQ
oQoQoQo	Qo
QQ2oUO[6UQ5UO[6UQ5UO[6UQ5UO[6U2Q5UO[6U2OBQ5UO[O 29^tt^2UO[6UQ5PPP2UO[@Q29^tt^2UO[6UQ5PPP2UO[Q29^tt^2UO[6U	Q5PPP2UO[DQ29^tt^2UO[6U
Q5PPP2UO[U
Q5P!)%fhCK�9h)%fhCKo9h)%fhCK�9h)%fhCK�9h)%fhCK9h)%fhCK�9h)%fhCK�9h)%fhCK9h)%fhCK�9h)%fhCK�9h)%fhCK�9h)%fhCK�9h)%fhCK�9h)%fhCKl9h)%fhCKB9h)N)r��PEM (lib|routines)�r�r�z|(
            key values mismatch         # OpenSSL
            |
            KEY_VALUES_MISMATCH         # AWS-LC
        ))�passwordzshould be a string�badpasszcannot be longer�ai�c��[!rB��KEY_PASSWORDrCr#r!�getpass_unicode�:ContextTests.test_load_cert_chain.<locals>.getpass_unicodeLs���r#c�,�[O2!rB)r��encoderCr#r!�
getpass_bytes�8ContextTests.test_load_cert_chain.<locals>.getpass_bytesNs���&�&�(�(r#c�>�[[O22!rB)r�r�r�rCr#r!�getpass_bytearray�<ContextTests.test_load_cert_chain.<locals>.getpass_bytearrayPs���\�0�0�2�3�3r#c��Q!)r�rCrCr#r!�getpass_badpass�:ContextTests.test_load_cert_chain.<locals>.getpass_badpassRs��r#c��QQ*!)r�irCrCr#r!�getpass_huge�7ContextTests.test_load_cert_chain.<locals>.getpass_hugeTs
���;�'�'r#c��]	!)r.rCrCr#r!�getpass_bad_type�;ContextTests.test_load_cert_chain.<locals>.getpass_bad_typeVs��r#c��[Q2g)�
getpass error)�	ExceptionrCr#r!�getpass_exception�<ContextTests.test_load_cert_chain.<locals>.getpass_exceptionXs
���O�,�,r#c�.`�\sQsQsnQsQsQsUsP!)�:ContextTests.test_load_cert_chain.<locals>.GetPassCallableiZc��[!rBr�r�s&r!�__call__�CContextTests.test_load_cert_chain.<locals>.GetPassCallable.__call__[���#�#r#c��[!rBr�r�s&r!�getpass�BContextTests.test_load_cert_chain.<locals>.GetPassCallable.getpass]r�r#rC)r�rUrVrWr�r�r]r^r_s@r!�GetPassCallabler�Zs����
$�
$�
$r#r�zmust return a stringr�)#rrVrJr�rr�r�r|�NONEXISTINGCERTr�rnrD�ENOENT�filename�NONEXISTINGKEYr�r��BADCERT�	EMPTYCERT�ONLYCERT�ONLYKEY�BYTES_ONLYCERT�
BYTES_ONLYKEY�re�compile�XrH�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_chains���n�n�S�4�4�5�����H�d��3����H�h��7����)�S�%8�%8�(��K�
�
�
�w�
'�
'�2�����0�(�������+�+�U�\�\�:�������.�.��@�
�
�
�w�
'�
'�2�����.��A�(�������+�+�U�\�\�:�������.�.��?�
�
#�
#�C�L�L�2F�
G�
G�����(�H�
�
#�
#�C�L�L�2F�
G�
G����	�*�H��n�n�S�4�4�5�����H�g�.����X�w��?����^�]��K�
�
#�
#�C�L�L�2F�
G�
G�����)�H�
�
#�
#�C�L�L�2F�
G�
G�����(�H�
�
#�
#�C�L�L�2F�
G�
G�����(��C�H��n�n�S�4�4�5���
�
�
��d�d�	��
�
#�
#�C�L�L�%�
8�
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�
D���� 2�T��B�E�
�
�
�s�|�|�
,�
,���� 2�Y��G�-�
�
#�
#�J�0B�
C�
C�
��� 2�T�F�]��K�	D�	 �	)�	4�	�	(�	�	-�	$�	$�
	���.���I����.���G����.�9J��K����.��9J��K����.�%4�%6�%>�%>�	�	@�
�
�
�s�|�|�
,�
,���� 2�_��M�-�
�
#�
#�J�0B�
C�
C���� 2�\��J�D�
�
#�
#�I�/E�
F�
F���� 2�=M��N�G�
�
#�
#�I��
?�
?���� 2�=N��O�@�	���H�/@��A�m(�
'�
'��(�
'�
'��H�
G�
G��
G�
G�
G��H�
G�
G��
G�
G�
G��
G�
G�
G��9�
8�
8��E�
D�
D��
,�
,�
,��
C�
C�
C��>-�
,�
,��
C�
C�
C��
F�
F�
F��
?�
?�
?�s�^!�3^5�_	�#_�_1�"`�(`�<`-�5a�<a�:a)�.a=�,b�*b%�(b9�!^2	�*^2	�5_	�>_	�	_	�_	�_.	�&_.	�1`	�:`	�`	�`	�`*	�"`*	�-`>	�6`>	�a	�
a	�a&	�a&	�)a:	�2a:	�=b	�b	�b"	�b"	�%b6	�.b6	�9c
	�c
	c	��`�[O2nU1Qko[]2Tt,tFDo[OUQ5MJ	oo[
O29^tt^2o[
OU29^tt^2PPP2UOUO2PPP2P!ttoh)%fhK:9h)%fhP!9h)c�4:�RO[2P!rB)r�r)r?s�r!�race�=ContextTests.test_load_cert_chain_thread_safety.<locals>.raceys�������)r#��target)
rr�r�	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_safetyps�����(�(�*��	*�;@��(�C�(�Q�9�#�#�4�0�(��C�
�
7�
7�
9�
9�R�!�/�/��8�8��9�
���b�l�l�+�	:�
9��D�8�8��:�
9�
9�s5�"B8�*C�	B=	�#C�=C

�C

�C�C!	�C!	c���[O[O2oUO[2UO[PQ5UO[
2UO[
PQ5UO
[UO2UO
[UOPPP2UO
[29^tt^2oUO[2PPP2UOWOO[O2UO[OQ29^tt^2UO[ 2PPP2UO[["2UO[[$Q5UO
[UOPP	2P!)%fhK�9h)%fhK|9h)N)r�r%r��r%)rrVrJr�r�BYTES_CERTFILEr�r�r|r�r�rnrDr�r�r�r�r��BYTES_CAPATH�r�r?r�s&  r!�test_load_verify_locations�'ContextTests.test_load_verify_locations�sL���n�n�S�4�4�5���!�!�(�+��!�!��$�!�?��!�!�.�1��!�!���!�E����)�S�%>�%>�?����)�S�%>�%>��d�D�Q�
�
�
�w�
'�
'�2��%�%�o�6�(�������+�+�U�\�\�:�
�
#�
#�C�L�L�2F�
G�
G��%�%�g�.�H��!�!�(�F�3��!�!�(�<�!�@�	
���)�S�%>�%>��d�K�(�
'��H�
G�s$�G�G!�G	�G	�!G1	�*G1	c��	�[[29^tt^2oUO2oPPP2[O	W2o[[
29^tt^2oUO2oPPP2[O	W2o[O
[O2oUOUO2Q*]2UOUQ5UOUO2Q*]2UOUQ5UOUO2Q*]2UOUQ5UOUO2Q*]2[O
[O2oQOV$12oUOUQ5UOUO2Q*]2[O
[O2oQUQUQUQ,oUOQOU2Q5UOUO2Q*]2[O
[O2oUOUQ5UOUQ5UOUO2Q*]2UOUQ5UOUO2Q*]2[O
[O2oQOV512oUOUQ5UOUO2Q*]2[O
[O2oUO[UO[Q5UO[O Q	29^tt^2UOQ
Q5PPP2UO[O Q29^tt^2UOQQ5PPP2UO[O 29^tt^2UOUQ
*Q5PPP2P!)%fhCKq9h)%fhCK@9h)%fhK�9h)%fhK�9h)%fhP!9h)N�x509_ca��cadatar�head�other�again�tailr#z4no start line: cadata does not contain a certificate�brokenz6not enough data: cadata does not contain a certificatesbroken�A)r3rHr4rrI�CAFILE_NEURONIOrVrKr��cert_store_statsr�rr�r��objectr�r�)r�r6�
cacert_pem�
cacert_der�neuronio_pem�neuronio_derr?�combineds&       r!�test_load_verify_cadata�$ContextTests.test_load_verify_cadata�s���
�-�
 �
 �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!�
 �
 ��#�
"�
"��^
�
��

�
��
-�
,�
,�sY�R�R&�)R:�,S
�.S �R#	�R#	�&R7	�/R7	�:S
	�S
	�
S	�S	� S1	�)S1	c�6�[O[O2oUO[2UO[2UO[UO2UO[UOP2UO[29^tt^2oUO[2PPP2UOWOO[O 2UO[O"29^tt^2oUO[$2PPP2P![
c [%cSOQ2gh9h)%fhK�9h)%fhP!9h)�"not supported on Win32 debug build)rrVrJ�load_dh_params�DHFILE�RuntimeError�Py_DEBUG_WIN32r=�BYTES_DHFILEr�r�r5r�r�rnrDr�r�rrs&  r!�test_load_dh_params� ContextTests.test_load_dh_params�s���n�n�S�4�4�5��	����v�&�
	���<�(����)�S�%7�%7�8����)�S�%7�%7��>�
�
�
�0�
1�
1�R�����/�2�������+�+�U�\�\�:�
�
�
�s�|�|�
,�
,�����x�(�-�
,���	��~��
�
�B�C��	��2�
1��-�
,�
,�s;�E�.E4�'F�	E1�E1�E1�4F	�=F	�F	�F	c���[O[O.FDNo[OU2oUO	UO2Q]Q]Q]Q]Q]Q]Q]Q]Q]Q	]Q
]-2JP	P!)�numberr��connect_good�connect_renegotiate�accept�accept_good�accept_renegotiate�hits�misses�timeouts�
cache_full)rrKrJrVr��
session_statsr�s&  r!�test_session_stats�ContextTests.test_session_stats�s����-�-�s�/F�/F�G�E��.�.��'�C����S�.�.�0��!��1���%�q��!��q�$�a����!��A��a�3�
�Hr#c�n�[O[O2oUO2P!rB)rrVrK�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��[O[O2oUOQ2UOQ2UO	[
UO2UO	[
UOP2UO	[UOQ2UO	[UOQ2P!)�
prime256v1s
prime256v1�foo�foo)rrVrJ�set_ecdh_curver�r�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��[O[O2oUO[UO
2UO[UO
]2UO[UO
P2UO[UO
U2QoUOP2UOU2P!)r6c��P!rBrC�r��
servernamer?s&&&r!�
dummycallback�5ContextTests.test_sni_callback.<locals>.dummycallback���r#)rrVrJr�r��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��[2o[O2[O2q2UOV#[Q5oQo[
OOUQ5o[P	[Q5oUOU2[O2[O2q�UOVxP	Q5o	U	Oo
[VC2oUO2UeUOQ2UOU2UO2=	[O 2UO#[O$29^tt^2oU
O'2PPP2UO2[(%cQo
LQo
UO+U
[-WO.22UO1UO.O2[O42P!)%fhK�9h)r�c��P!rBrCrZs&&&r!�sni_callback�GContextTests.test_sni_callback_on_dead_references.<locals>.sni_callbacks��r#)rer��rz,cannot establish a handshake from the client�PARSE_TLSEXTzcallback failed)r�rr��wrap_bior�r]�mock�Mockr�r_�_sslobjr��assert_not_calledr=rq�gc�collectr�r�r��	IS_AWS_LCr�rGrnr�rD�
SSL_ERROR_SSL)r��c_ctx�c_inc�c_out�clientrd�s_ctx�s_inc�s_outrI�server_implr�r��libssl_error_reasons&             r!�$test_sni_callback_on_dead_references�1ContextTests.test_sni_callback_on_dead_referencessn��!�#���}�}���
�
��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�#G8�8H	�H	c��[O[O2oU1QkoUOU2[O
U2o==[O2UOU2P2P!)c��P!rBrC)r�r[r?�cycles&&&&r!r\�>ContextTests.test_sni_callback_refcycle.<locals>.dummycallbackFr^r#)	rrVrJr_rqrrrmrnr�)r�r?r\rvs&   r!�test_sni_callback_refcycle�'ContextTests.test_sni_callback_refcycleBsZ���n�n�S�4�4�5��7:�	��#�#�M�2�
�[�[��
����
�
�
���
�
�b�d�D�!r#zagh-150191: OpenSSL has an internal data race when the SNI callback is replaced during a handshake��threadc��````�[2vnnnQRm[O2Q*nUUUU1QkoUU1Qko[O
U,]U,**2P!)c��P!rBrC��as*r!�<lambda>�5ContextTests.test_sni_callback_race.<locals>.<lambda>^s��Tr#皙�����?c�8:�[O2R6Cc[O2o[O2o[O2o[O2oRO	VR	Q5oR
O	V#P	Q5o[]22FD�oUO
2UO%c UOUO22UO
2UO%fJjUOUO22J�	CJ-P![OcK�[OcCJ`h9h[OcK�[OcCJ�h9h�r�rf)rw�	monotonicrr�rhrr�r�r��pendingrqr4)�c_inrs�s_inrwrtrIr�
client_ctx�deadliner��
server_ctxs       ����r!�
do_handshakes�:ContextTests.test_sni_callback_race.<locals>.do_handshakesas-����.�.�"�X�-��}�}����
�
����}�}����
�
���#�,�,���-�;��#�,�,�T�d�,�K���r��A���+�+�-�
�}�}�}��
�
�5�:�:�<�0���+�+�-�
�}�}�}��
�
�5�:�:�<�0�!#�.���/�/����<�<������/�/����<�<����sH�$D2�&E'�2E$�E$�	E$�E$�#E$�'F�;F�>F�F�Fc�`:�[O2R6cQRmPRmJ+P!)c��P!rBrCr�s*r!r��NContextTests.test_sni_callback_race.<locals>.toggle_callback.<locals>.<lambda>~s��Tr#)rwr�rd)r�r�s��r!�toggle_callback�<ContextTests.test_sni_callback_race.<locals>.toggle_callback|s'����.�.�"�X�-�*9�
�'�*.�
�'�.r#)r�rdrwr�r�run_concurrently)r�r�r�r�r�r�r�s&  @@@@r!�test_sni_callback_race�#ContextTests.test_sni_callback_raceNs[���,;�+<�(�
�J��"1�
���>�>�#�c�)��	1�	1�6	/�
	�)�)�=�/�A��@Q�<Q�*Q�Rr#c	��[O[O2oUOUO	2Q]Q]Q]-2UO[2UOUO	2Q]Q]Q]-2UO[2UOUO	2Q]Q]Q]-2UO[2UOUO	2Q]Q]Q]-2P!)r#�crl�x509)	rrVrKr�r-r�rr�rHrms& r!�test_cert_store_stats�"ContextTests.test_cert_store_stats�s����n�n�S�4�4�5������-�-�/�
��5�!�V�Q�/�	1����H�%�����-�-�/�
��5�!�V�Q�/�	1��!�!�(�+�����-�-�/�
��5�!�V�Q�/�	1��!�!�-�0�����-�-�/�
��5�!�V�Q�/�	1r#c�t�[O[O2oUOUO	2,2UO[2UOUO	2,2UO[2UOUO	2QQ
QQQQQQQQQQ
Q	]-,2[[29^tt^2oUO2oPPP2[OW2oUOUO	P	2U,2P!)%fhKI9h)rrzMar 29 12:29:49 2033 GMTrzMar 30 12:29:49 2003 GMTr�00rrrY)))r+zRoot CA))r,zhttp://www.cacert.org))rzCA Cert Signing Authority))r-zsupport@cacert.org)z!https://www.cacert.org/revoke.crl)rrVrKr��get_ca_certsr�rrHr3r4rI)r�r?r6rO�ders&    r!�test_get_ca_certs�ContextTests.test_get_ca_certs�s���n�n�S�4�4�5������)�)�+�R�0��!�!�(�+�����)�)�+�R�0��!�!�-�0�����)�)�+��D��4��5��d�%�'M��E����
�
	��-�
 �
 �A��&�&�(�C�!��&�&�s�+������)�)�$�/�#��7�!�
 �s�D'�'D7	�0D7	c��[O[O2oUO2[O[O2oUO[OO
2UO2[O[O2oUO[OO2[O[O2oUO[UOP2UO[UOQ2P!)Nr)	rrVrK�load_default_certsr
rrr�r�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�R�[O[O2o[O29^tt^2o[
UQ$[UQ$UO2UOUO2Q]Q]Q]-2PPP2P!)%fhP!9h)r�r�r�r�r#)
rrVrKrr�r�rr�r�r-)r�r?r�s&  r!�test_load_default_certs_env�(ContextTests.test_load_default_certs_env�s}���n�n�S�4�4�5��
�
*�
*�
,�
,��"(�C���#+�C�� ��"�"�$����S�1�1�3�e�Q���9�VW�5X�Y�	-�
,�
,�
,�s�A	B�B&	�B&	r�z3Debug build does not share environment between CRTsc��[O[O2oUO2UO	2o[O[O2o[
O29^tt^2o[UQ$[UQ$UO2UQ99*]*
tt$UOUO	2U2PPP2P!)%fhP!9h)r�r�r�)
rrVrKr�r-rr�r�rr�)r�r?�statsr�s&   r!�#test_load_default_certs_env_windows�0ContextTests.test_load_default_certs_env_windows�s����n�n�S�4�4�5����� ��$�$�&���n�n�S�4�4�5��
�
*�
*�
,�
,��"(�C���#+�C�� ��"�"�$��&�M�Q��M����S�1�1�3�U�;�-�
,�
,�
,�s�AC'�'C8	�0C8	c���UOUO[O*[O2[]6wc,UOUO[*[2[
]6wc,UOUO[
*[
2[]6wc,UOUO[*[2[]6wc,UOUO[*[2SOUO[O*[%c	]2P![O2P!rv)
r�r�rr�r+r,r-r.�OP_LEGACY_SERVER_CONNECTrTrms&&r!�_assert_context_options�$ContextTests._assert_context_options�s���������s���6����H���!����S�[�[�+<�<�.�
0��q� ����S�[�[�+;�;�-�
/���"����S�[�[�+=�=�/�
1�&�!�+����S�[�[�+F�F�8�
:�������s�'C�'C�C�.�.��	R�47�4P�4P�	Rr#c���[O2oUOUO[O2UOUO
[O2UOUO[O*[O2UOUO[O*[O2UOUO2UOU2[[29^tt^2oUO2oPPP2[O[[ WQ5oUOUO[O2UOUO
[O2UOU2[O[O"O$2oUOUO[O&2UOUO
[O(2UOU2P!)%fhCK*9h)N)r�r%r%)rr�r�rNrKr�r�r��VERIFY_X509_PARTIAL_CHAINr�r�r�r�r3r�r4r�r
rrJr�)r�r?r6r%s&   r!�test_create_default_context�(ContextTests.test_create_default_context�s����(�(�*��������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�I.	�&I.	c��[O2oUOUO[O2UOUO
[O2UOUO2UOU2[Q2%c�[O29^tt^2[O[O2oPPP2UOUO[O2UOUO
[O2UOU2[Q2%c�[O29^tt^2[O[O[OP	Q5oPPP2UOUO[O2UOUO
[O2UO!UO2UOU2[O[O"O$Q5oUOUO[O&2UOUO
[O2UOU2P!)%fhCK�9h)%fhCK:9h)r�r�)r�r���purpose)r�_create_stdlib_contextr�rNrKr�r�r�r�r�rOr	rsr�r�r�r�r
rrJrms& r!�test__create_stdlib_context�(ContextTests.test__create_stdlib_context�s����(�(�*��������s�'>�'>�?�������#�-�-�8�����+�+�,��$�$�S�)��,�-�-� �/�/�1�1��0�0��1C�1C�D��2����S�\�\�3�+=�+=�>����S�_�_�c�m�m�<��(�(��-��.�/�/� �/�/�1�1��0�0��(�(�!�/�/�#'�1���2�
���S�\�\�3�+?�+?�@����S�_�_�c�.?�.?�@��O�O�C�.�.�/��(�(��-��(�(����1H�1H�(�I��������s�'>�'>�?�������#�-�-�8��$�$�S�)�+2�1�1��2�1�1�s$�$K�5K)�K&	�K&	�)K:	�2K:	c���[O29^tt^2[O[O2oPPP2UOWO2UOUO[O2P	UmUOUO2UOUO[O2P
Um[OUmUOUO2UOUO[O2P
Um[OUmP
UmUOUO2UOUO[O2P	UmUOUO2UOUO[O2P
Um[OUmP
UmUOUO2UOUO[O2P	UmUOUO2UOUO[O2UO[29^tt^2[OUmPPP2P
UmUOUO2[OUmUOUO[O2P!)%fhCK	9h)%fhK�9hrB)r	rsrrVrIr�r�r�r�r�r�r�r�r�r�rms& r!�test_check_hostname� ContextTests.test_check_hostnamesD��
�
+�
+�
-�
-��.�.��!1�!1�2�C�.�����+�+�,�������#�-�-�8�"�������*�*�+�������#�*;�*;�<�"����+�+�������+�+�,�������#�*;�*;�<�#����-�-���"�������+�+�,�������#�-�-�8�!�������*�*�+�������#�*;�*;�<�"����+�+���"�������+�+�,�������#�*;�*;�<�!�������*�*�+�������#�*;�*;�<��
�
�z�
*�
*�!�m�m�C�O�+�"�������+�+�,��-�-���������#�-�-�8�S.�
-�
-��H+�
*�s#�$M�M�M	�M	�M'	� M'	c��[O[O2oUOUO2UOUO[O2[O[O2oUOUO2UOUO[O2P!rB)rrVrKr�r�r�r�r�rJr�r�rms& r!�test_context_client_server�'ContextTests.test_context_client_serverJs����n�n�S�4�4�5������*�*�+�������#�*;�*;�<��n�n�S�4�4�5������+�+�,�������#�-�-�8r#c��QQ[O2oQQ[O2o[O[O2oVmV#mUO[O2P	Q59^tt^2oUOVA2PPP2UO[O2[O2P	Q5oUOVR2P!)%fhK[9h)c��\sQsQsQsP!)�;ContextTests.test_context_custom_class.<locals>.MySSLSocketiVrC�r�rUrVrWr]rCr#r!�MySSLSocketr�V���r#r�c��\sQsQsQsP!)�;ContextTests.test_context_custom_class.<locals>.MySSLObjectiYrCr�rCr#r!�MySSLObjectr�Yr�r#r�rf)rr��	SSLObjectrVrJ�sslsocket_class�sslobject_classr�r�r�rhr�)r�r�r�r?r�rs&     r!�test_context_custom_class�&ContextTests.test_context_custom_classUs���	�#�-�-�	�	�#�-�-�	��n�n�S�4�4�5��)��)��
�_�_�V�]�]�_�$�_�
?�
?�4��!�!�$�4�@��l�l�3�=�=�?�C�M�M�O��l�N�����c�/�@�
?�s�C6�6D	�?D	c��[O[O2oUOUO]2]UmUOUO]2]UmUOUO]2UO[29^tt^2PUmPPP2UO[29^tt^2PUmPPP2[O[O2oUOUO]2UO[29^tt^2]UmPPP2P!)%fhK�9h)%fhK�9h)%fhP!9h)r4)	rrVrJr��num_ticketsr�r�r�rKrms& r!�test_num_tickest�ContextTests.test_num_tickestes���n�n�S�4�4�5��������!�,����������!�,����������!�,�
�
�
�z�
*�
*� �C�O�+�
�
�
�y�
)�
)�"�C�O�*��n�n�S�4�4�5��������!�,�
�
�
�z�
*�
*��C�O�+�
*�+�
*��
)�
)��
+�
*�
*�s6�$E�E"�=E5�E	�E	�"E2	�+E2	�5F	�>F	c�6�[2oQU-QkoV!mP!)rc��P!rBrC�rr_r�s$*,r!�msg_callback�=ContextTests.test_refcycle_msg_callback.<locals>.msg_callbackzs��#r#)r��
_msg_callback)r�r?r�s&  r!�test_refcycle_msg_callback�'ContextTests.test_refcycle_msg_callbackvs�� �!��5�#�5�(�r#c���UO[O[O2[	2oQQ[
2oU[O2UmVOmP!)c��\sQsQsQsP!)�BContextTests.test_refcycle_keylog_filename.<locals>.KeylogFilenamei�rCr�rCr#r!�KeylogFilenamer��s��3r#r�)r�r�unlink�TESTFNr�rGrr)r�r?r�s&  r!�test_refcycle_keylog_filename�*ContextTests.test_refcycle_keylog_filename}sM��	
���	�(�(�)�*:�*:�;��!��&�S�&�,�Y�-=�-=�>��� #���r#zrequires TLS-PSKc�L�[2oQU-QkoUOU2P!)rc��P!rBrCr�s$*,r!�psk_client_callback�KContextTests.test_refcycle_psk_client_callback.<locals>.psk_client_callback����r#)r��set_psk_client_callback)r�r?r�s&  r!�!test_refcycle_psk_client_callback�.ContextTests.test_refcycle_psk_client_callback�s#�� �!��<��<��#�#�$7�8r#c�P�[P	Q5oQU-QkoUOU2P!)Trfrc��P!rBrCr�s$*,r!�psk_server_callback�KContextTests.test_refcycle_psk_server_callback.<locals>.psk_server_callback�r�r#)r��set_psk_server_callback)r�r?r�s&  r!�!test_refcycle_psk_server_callback�.ContextTests.test_refcycle_psk_server_callback�s%�� �D�1��<��<��#�#�$7�8r#rC)Hr�rUrVrWrfrnr]rYrryr�r�� CAN_GET_AVAILABLE_OPENSSL_GROUPSr��!CAN_GET_AVAILABLE_OPENSSL_SIGALGSr��CAN_SET_CLIENT_SIGALGSr��CAN_SET_SERVER_SIGALGSr�r�r�r��ignore_deprecationr�r:rrVr�r�rr�requires_working_threadingrr r4r=rKrOr�rVr`rzr�r�skip_if_sanitizerr�r�r�r��skipIfrmr[r��Py_DEBUGr�r�r�r�r�r�r�r�rXr��requires_keylog_setterr��HAS_PSKr�r�r]r^r_s@r!rbrb�sO����
:�0����/�1�4�F�H�	+�H�	+�
�&	<����9�I�K�E�K�E����:�F�H�@�H�@����/�M�O�
R�O�
R����/�M�O�
R�O�
R�  �D,�07��R;��R;�h������� 0�1�#��
@�	�
@�$�(\B�|�0�0�2�,�3�,�$L�&?@�B)�"�"'�������'L�M�B�N�B�3�)@�V
"�
��� +�37�9��0�0�2�/S�3�9�/S�b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�  �"
���)��)�
����$���$�
���
������&8�9�9�:��9�
���
������&8�9�9�:��9r#rbc�:`�\sQsQsnQsQsQsQsQsUs	P!)�
SSLErrorTestsi�c�<�[O]Q2oUO[U2Q2UOUO]2[O]Q2oUO[U2Q2UOUO]2P!)rzrS)rr�r�rGrD�SSLZeroReturnError)r��es& r!�test_str�SSLErrorTests.test_str�st���L�L��E�"������Q���'�������!�$��"�"�1�e�,������Q���'�������!�$r#c�D�[O[O2oUO[O29^tt^2oUO[2PPP2UOWOOQ2QoUOUOOU2[UO2oUO!QU2P!)%fhK�9h[c [%cSOQ2gh9h)Nr7�PEMz+(NO_START_LINE|UNSUPPORTED_PUBLIC_KEY_TYPE)�
NO_START_LINE)rrVrKr�r�r8rr:r;r=r�rn�library�assertRegex�reasonrGr�)r�r?r�r
r�s&    r!�test_lib_reason�SSLErrorTests.test_lib_reason�s����n�n�S�4�4�5��	��"�"�3�<�<�0�0�B��"�"�8�,�1�	
������-�-�u�5�=��������,�,�e�4��������
�
�o�q�)�1�0���	��~��
�
�B�C��	�s;�'C5�
C"�#C5�"C2	�+C2	�-C5�2C5�5	D�?D�Dc�2�[O[O2oP
Um[OUm[OQ29^tt^2o[OUO22oUOP
2UOUP
P
Q59^tt^2oUO[O29^tt^2oUO2PPP2[WO 2oUO#UQ2UO%UO O&[O(2PPP2PPP2P!)%fhK}9h)%fhK-9h)%fhP!9h)Fr�z%The operation did not complete (read)r�)rrVrKr�r�r�r�r��create_connectionr��setblockingr�r�r�r�rGrnr`r�rD�SSL_ERROR_WANT_READ)r�r?r�r�r�s&    r!�
test_subclass�SSLErrorTests.test_subclass�s���n�n�S�4�4�5��"����-�-���
�
!�
!�"2�
3�
3�q��(�(�����9�A�
�M�M�%� �����E�5��I�I�Q��&�&�s�';�';�<�<���N�N�$�=�����%���%�%�a�)P�Q�� � ����!3�!3�S�5L�5L�M�
J�4�
3�=�<��J�I��4�
3�
3�sP�AF�1(E2	�E
�*A#E2	�
F�E/�(E/�*E2	�2F
�;F
�=F�F	�F	c���[O2oUO[29^tt^2UO	[O2[O2PQ5PPP2UO[29^tt^2UO	[O2[O2QQ5PPP2UO[29^tt^2UO	[O2[O2QQ5PPP2P!)%fhK�9h)%fhK�9h)%fhP!9h)ror�z.example.orgzexample.orgevil.com)rr�r�r�rhr�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�*�
)�
+�
*��+�
*��*�
)�
)�s5�9D2�9E�/9E�2E	�;E	�E	�E	�E)	�!E)	rC)
r�rUrVrWr	rrrr]r^r_s@r!rr�s!����%�*�"N�$
D�
Dr#rc�@`�\sQsQsnQsQsQsQsQsQs	Us
P!)�MemoryBIOTestsi�c�~�[O2oUOQ2UOUO	2Q2UOUO	2Q2UOQ2UOQ2UOUO	2Q2UOUO	2Q2UOQ2UOUO	]2Q2UOUO	]2Q2UOUO	]2Q2P!)rTr#�barsfoobar�bazsba�z)rr�rqr�r4�r��bios& r!�test_read_write�MemoryBIOTests.test_read_write�s����m�m�o���	�	�&���������V�,��������S�)��	�	�&���	�	�&���������Y�/��������S�)��	�	�&��������!��e�,�������!��d�+�������!��c�*r#c���[O2oUOUO2UO	UO2Q2UOUO2UO
Q2UOUO2UO2UOUO2UO	UO]2Q2UOUO2UO	UO]2Q2UOUO2UO	UO2Q2UOUO2P!)r#rTsfo�o)	rr�r��eofr�r4rq�	write_eofr�r"s& r!�test_eof�MemoryBIOTests.test_eof�s����m�m�o��������!��������S�)�������!��	�	�&��������!��
�
��������!�������!��e�,�������!�������!��d�+������� ��������S�)������� r#c�D�[O2oUOUO]2UO	Q2UOUO]2[]2FD>oUO
]2UOUO]U*
]*
2J@	[]2FD7oUO	Q2UOUOU]*2J9	UO
2UOUO]2P!)rrTr{)rr�r�r�rqrr4)r�r#r
s&  r!�test_pending�MemoryBIOTests.test_pending�s����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�b�[O2oUOQ2UOUO	2Q2UO[Q22UOUO	2Q2UO[
Q22UOUO	2Q2[
[Q22oUPPQ/*oUO[29^tt^2UO[
U22PPP2P!)%fhP!9h)rTrr s	noncontig���)	rr�rqr�r4r��
memoryviewr��BufferError)r�r#�m�noncontig_writables&   r!�test_buffer_types� MemoryBIOTests.test_buffer_typess����m�m�o���	�	�&���������V�,��	�	�)�F�#�$��������V�,��	�	�*�V�$�%��������V�,��y��.�/���t��t�W��
�
�
�{�
+�
+��I�I�j�!3�4�5�,�
+�
+�
+�s�8D�D.	�&D.	c�8�[O2oUO[UOQ2UO[UOP2UO[UOP	2UO[UO]2P!�rS)rr�r�r�rqr"s& r!�test_error_types�MemoryBIOTests.test_error_typesse���m�m�o�����)�S�Y�Y��6����)�S�Y�Y��5����)�S�Y�Y��5����)�S�Y�Y��2r#rC)r�rUrVrWr$r*r-r5r9r]r^r_s@r!rr�s#����+�!� )�6�3�3r#rc�.`�\sQsQsnQsQsQsUsP!)�SSLObjectTestsic���[O2oUO[Q29^tt^2[O	V2PPP2P!)%fhP!9hr�)rr�r�r�r�r"s& r!r�� SSLObjectTests.test_private_inits=���m�m�o��
�
#�
#�I�/C�
D�
D��M�M�#�#�E�
D�
D�
D�s�A�A%	�A%	c�R�[2vqo[O2o[O2o[O2o[O2oUOVEUQ5oUOVgP	Q5o	[	]2FD�o
UO2UO%c UOUO22U	O2UO%fJjUOUO22J�	UO2U	O2UO[O29^tt^2UO2PPP2UOUO22U	O2UOUO22UO2P![OcCKQh9h[OcCK+h9h)%fhK�9hr�)r�rr�rhrr�r�r�rqr4r��unwrap)r�r�r�r�r�rsr�rwrtrIrs&          r!�test_unwrap�SSLObjectTests.test_unwraps���+:�+<�(�
���}�}����
�
����}�}����
�
����$�$�T�(�$�K���$�$�T�d�$�C���q��A�
��#�#�%��}�}�}��
�
�5�:�:�<�(�
��#�#�%��}�}�}��
�
�5�:�:�<�(��	���������
�
�s�3�3�
4�
4��M�M�O�5�
	
�
�
�5�:�:�<� ��
�
��	
�
�
�5�:�:�<� ��
�
���7�'�'�
��
���'�'�
��
��5�
4�sB�G�G:�%H�G7�2G7�6G7�:H�H�H�H&	�H&	rC)r�rUrVrWr�rAr]r^r_s@r!r<r<s����$�
(�(r#r<c��`�\sQsQsnQsQsQsQsQsQs	Qs
Q	sQ
s\
O\O Q6HQ2Q
2sQsQsQsQsQsQsQsQsQsQsQsQsQsUsP!)�SimpleBackgroundTestsiGc��[O[O2UmUOO	[
2[
UOQ5oUOU2[UO1Um
P!)rP)rrVrJr�r�r�rQ�enterContextrCrJ�server_addr)r�rIs& r!�setUp�SimpleBackgroundTests.setUpJs\��!�n�n�S�-D�-D�E������+�+�O�<�#�D�,?�,?�@�����&�!� �&�+�+�.��r#c���[[O[O2[OQ59^tt^2oUOUO2UO-UO22UOUO2PPP2[[O[O2[O[Q59^tt^2oUOUO2UOUO22UOUO2PPP2P!)%fhK�9h)%fhP!9h)r�r�r�)r�r�rprr�r�rGr��getpeercertr�rr�r�r�r�s& r!�test_connect�"SimpleBackgroundTests.test_connectQs���
�f�m�m�F�N�N�;�&)�m�m�5�5�89�
�I�I�d�&�&�'����R�����1����Q�]�]�+�	5��f�m�m�F�N�N�;�&)�&7�&7�%/�1�1�45�
�I�I�d�&�&�'��O�O�A�M�M�O�,����Q�]�]�+�1�1�5�5��1�1�1�s&�AE�0AE#�E 	�E 	�#E4	�,E4	c�n�[[O[O2[OQ5oUOUO2[OQ[O2oUO[OUUOUO2P!)r�|(
            certificate verify failed   # OpenSSL
            |
            CERTIFICATE_VERIFY_FAILED   # AWS-LC
        ))r�r�rprr�r�r�rrrr�r�r�rG)r�r�r
s&  r!�test_connect_fail�'SimpleBackgroundTests.test_connect_fail`sy��
�V�]�]�6�>�>�:�&)�&7�&7�
9�������� ��
�
�
��d�d�	��
	
���s�|�|�U� �y�y�$�*:�*:�	<r#c�V�[[O[O2[O[
Q5oUO
UO2UO]UOUO22UOUO22P!)rK)
r�r�rprr�r�r�r�r�rBrGr�rLr�s& r!�test_connect_ex�%SimpleBackgroundTests.test_connect_expsj���V�]�]�6�>�>�:�&)�&7�&7�%/�
1��	
������ �����A�L�L��)9�)9�:�;�����
�
��(r#c���[[O[O2[O[
P
Q5oUO
UO2UOP
2UOUO2oUOU][O[O12[O,U,,Q2UO!2UO'UO)22P![O"c[OS,,,Q2Jf[O$c[O,S,,Q2J�h9h)F)r�r�r�r�)r�r�rprr�r�r�r�rrBrGr�rD�EINPROGRESSrH�selectr�r��SSLWantWriteErrorr�rL�r�r�rKs&  r!�test_non_blocking_connect_ex�2SimpleBackgroundTests.test_non_blocking_connect_exys	��
�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/�E/�=E/�E/�.E/c��[O[O2oP
Um[OUmUO
[O[O229^tt^2oUOUO2UO-UO22PPP2UO
[O[O2QQ59^tt^2oUOUO2PPP2[OUmUO[2UO
[O[O229^tt^2oUOUO2UO2oUO!U2PPP2P!)%fhCK9h)%fhK�9h)%fhP!9h)F�dummyr�)rrVrKr�r�r�r�r�rpr�rGr�rLr�r�r�r��r�r?r�r�s&   r!�test_connect_with_context�/SimpleBackgroundTests.test_connect_with_context�sG���n�n�S�4�4�5��"����-�-���
�_�_�V�]�]�6�>�>�:�
;�
;�q�
�I�I�d�&�&�'����R�����1�<��_�_�V�]�]�6�>�>�:�,3��5�5�89�
�I�I�d�&�&�'�5��+�+����!�!�*�-�
�_�_�V�]�]�6�>�>�:�
;�
;�q�
�I�I�d�&�&�'��=�=�?�D��O�O�D�!�<�
;�<�
;�
;��5�5��<�
;�
;�s6�<<G
�=G!�=G4�
G	�G	�!G1	�*G1	�4H	�=H	c��[O[O2oUO[O[O
2[Q5oUOUO2[OQ[O2oUO[OUUOUO2P!)r�rP)rrVrKr�r�rpr�r�r�rrrr�r�r�rG)r�r?r�r
s&   r!�test_connect_with_context_fail�4SimpleBackgroundTests.test_connect_with_context_fail�s����n�n�S�4�4�5���O�O��M�M�&�.�.�)�4�
�
��	
������ ��
�
�
��d�d�	��
	
���s�|�|�U� !�	�	�4�+;�+;�	=r#c�R�[O[O2oUO[Q5UO[O[O2[Q59^tt^2oUOUO2UO2oUOU2PPP2[O[O2oUO[Q5UO[O[O2[Q59^tt^2oUOUO2UO2oUOU2PPP2P!)%fhK�9h)%fhP!9h)rr�)rrVrKr�r�r�r�rpr�r�rGrLr�rr_s&   r!�test_connect_capath�)SimpleBackgroundTests.test_connect_capath�s.���n�n�S�4�4�5���!�!��!�0�
�_�_�V�]�]�6�>�>�:�-E��G�G�JK�
�I�I�d�&�&�'��=�=�?�D��O�O�D�!�	G��n�n�S�4�4�5���!�!��!�6�
�_�_�V�]�]�6�>�>�:�-E��G�G�JK�
�I�I�d�&�&�'��=�=�?�D��O�O�D�!�	G�G�G�G��G�G�G�s$�<=F�;=F�F	�F	�F&	�F&	c���[[29^tt^2oUO2oPPP2[O	W2o[O[O2oUOUQ5UO[O[O2[Q59^tt^2oUOUO2UO2oUOU2PPP2[O[O2oUOUQ5UO[O[O2[Q59^tt^2oUOUO2UO2oUOU2PPP2P!)%fhCK�9h)%fhK�9h)%fhP!9h)Nr$r�)r3r�r4rrIrVrKr�r�r�rpr�r�rGrLr�)r�r6rOr�r?r�r�s&      r!�test_connect_cadata�)SimpleBackgroundTests.test_connect_cadata�se��
�*�
�
���&�&�(�C���&�&�s�+���n�n�S�4�4�5���!�!��!�-�
�_�_�V�]�]�6�>�>�:�-E��G�G�JK�
�I�I�d�&�&�'��=�=�?�D��O�O�D�!�	G��n�n�S�4�4�5���!�!��!�-�
�_�_�V�]�]�6�>�>�:�-E��G�G�JK�
�I�I�d�&�&�'��=�=�?�D��O�O�D�!�	G�G��
�
��
G�G��G�G�G�s5�F?�==G�8=G&�?G	�G	�G#	�G#	�&G7	�/G7	rz*Can't use a socket as a file under Windowsc�x�[[O[O22oUOUO2UO2oUO
2oUO2[OU]2UO2[O2UO[29^tt^2o[OU]2PPP2UOWOO [ O"2P!)%fhKF9hrv)r�r�rpr�rG�fileno�makefiler�rr4rmrnr�r|r�rnrD�EBADF)r�ru�fdr6rs&    r!�test_makefile_close�)SimpleBackgroundTests.test_makefile_close�s���
�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)�)D9	�2D9	c��[O[O2oUOUO2UO	P
2[U[OP
Q5oUOUO2]oU]*
oUO2[O%c)[ O"O%QU*2P!P![Oc[OS,,,2J�[Oc[O,S,,2J�h9h)F�r�r�z9
Needed %d calls to do_handshake() to establish session.
)r�rpr�rGrr�rr�r�r�r�r�rXrYrrormrprq)r�r��counts&  r!�test_non_blocking_handshake�1SimpleBackgroundTests.test_non_blocking_handshake�s����M�M�&�.�.�)��	�	�	�$�"�"�#�	�
�
�e���Q�&)�m�m�49�
;��	
������ ����
+���
����� ��
�?�?�?��J�J���Z�]b�b�c���	�'�'�
+��
�
�q�c�2�r�*��(�(�
+��
�
�b�1�#�r�*�
+�s$�
C'�'E	�;E	�E	�+E	�E	c�D�[U,UON3Q[-P!)r�)�_test_get_server_certificaterGr�r�s&r!�test_get_server_certificate�1SimpleBackgroundTests.test_get_server_certificate	s��$�T�N�D�,<�,<�N�:�Nr#c	�`�UOvq,nU1QkoUOOU2[O	V12oU%fUOQU8QU8Q02[O	V1[Q5oU%fUOQU8QU8Q02[O%c-[OOQU8QU8QU8Q02UORV,2P!)c�,:�ROU2P!rB)r�)�ssl_sock�server_name�initial_context�server_namess&&&�r!�
servername_cb�LSimpleBackgroundTests.test_get_server_certificate_sni.<locals>.servername_cb	s�������,r#�No server certificate on �:�!�r��
Verified certificate for � is
r)
rGr�r_r�get_server_certificaterLr�rrormrprqr�)r��hostrJr�rOr�s&    @r!�test_get_server_certificate_sni�5SimpleBackgroundTests.test_get_server_certificate_sni	s�����%�%�
����	-����3�3�M�B��(�(�$��6����I�I�4��F�G��(�(�$��
�(�K����I�I�4��F�G��?�?�?��J�J���D�RV�X[�\�]������|�4r#c�8�[U,UON3P!rB)�!_test_get_server_certificate_failrGr�s&r!� test_get_server_certificate_fail�6SimpleBackgroundTests.test_get_server_certificate_fail&	s��	*�$�B��1A�1A�Br#c��QoUOOU2UO[O29^tt^2[
O
UO[QQ5PPP2P!)%fhP!9h)c�4�[OQ2P!)皙�����?)rw�sleep�r}r~rs&&&r!r��PSimpleBackgroundTests.test_get_server_certificate_timeout.<locals>.servername_cb,	s
���J�J�s�Or#r�)r�r�)	r�r_r�r�r�rr�rGr�)r�r�s& r!�#test_get_server_certificate_timeout�9SimpleBackgroundTests.test_get_server_certificate_timeout+	s_��	����3�3�M�B�
�
�
�v�~�~�
.�
.��&�&�t�'7�'7�*�/2�
'�
4�/�
.�
.�
.�s�'A8�8B		�B		c
��[[O[O2[OQQ59^tt^2oUOUO2PPP2[[O[O2[OQQ59^tt^2oUOUO2PPP2UO[OQ29^tt^2[O[O29^tt^2o[U[OQQ5oUOUO2PPP2PPP2P!)%fhCK9h)%fhK�9h)%fhKA9h)%fhP!9h)ri)r�r�rjrkrl)	r�r�rprr�r�rGr�r�)r�r�r�s&  r!rn�"SimpleBackgroundTests.test_ciphers4	s$��
�f�m�m�F�N�N�;�'*�}�}�e�E�E�HI�
�I�I�d�&�&�'�E��f�m�m�F�N�N�;�'*�}�}�i�I�I�LM�
�I�I�d�&�&�'�I��
#�
#�C�L�L�2M�
N�
N����v�~�~�.�.�$�$�T�.1�m�m�EW�Y���	�	�$�*�*�+�/�O�
N�E�E�E��I�I��
/�.��O�
N�
N�sT�E5�2F	�>-F/�+8F	�#F/�5F	�>F	�	F	�F	�F,
�%F,
�'F/�/G	�8G	c�6�[O[O2oUO[Q5UOUO
2,2UO[O[O2QQ59^tt^2oUOUO2UO2oUOU2PPP2UO[UO
22]2P!)%fhK;9h�rr&r�)rrVrKr�r�r�r�r�r�rpr�rGrLr�rMr_s&   r!�test_get_ca_certs_capath�.SimpleBackgroundTests.test_get_ca_certs_capathB	s����n�n�S�4�4�5���!�!��!�0�����)�)�+�R�0�
�_�_�V�]�]�6�>�>�:�-8��:�:�=>�
�I�I�d�&�&�'��=�=�?�D��O�O�D�!�	:�
	
����S�-�-�/�0�!�4�:�:�s�=D�D	�D	c���[O[O2oUO[Q5[O[O2oUO[Q5[
O
[
O2oUOUQQ59^tt^2oUOUO2UOUOU2UOUOOU2V$mUOUOU2UOUOOU2PPP2P!)%fhP!9hr�)
rrVrKr�r�r�rpr�r�rGr�r�rk)r��ctx1�ctx2r�rus&    r!�test_context_setget�)SimpleBackgroundTests.test_context_setgetN	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�3B&E#�#E4	�,E4	c���UOQ[O2o]o[OU2FD�o	Po
U]*
oUUoUO2o
UOU
2U
eLWU
[O6XfJUUOQ2o
U
%cUOU
2J�UO2J�	[O%c2[O OQV�O"1*2W![O
cHoSO[O[O17cgSOo
Po=CKPo=hh9h)r�i�z"Needed %d calls to complete %s().
)�getr�
SHORT_TIMEOUT�
busy_retryrr�rDr�SSL_ERROR_WANT_WRITEr4�sendallr}rqr)rormrpr�)r�r��incomingr�rar_r�r�rtrrD�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�E5�-E5�..E0�
E0�0E5c��[O[O2oUOUO2UO	UO
2[O2o[O2o[O[O2oUOUO2UOUO[O2UO[ 2UO#V#P
[$2oUO'UO(O*U2UO-UO/22UO-UO122UO-UO322UO5[6UO82Q[O:7c6UO12Q6wc!UO-UO=Q22UO?VV5O@2UOUO/22UO-UO322UOCUO122UOUO922Q[O:7c6UO12Q6wc!UOUO=Q22UO?VV5OD2UO5[OHUOJQ2P![OFcKDh9h)Fr��TLSv1.3rT)&r�rpr�r�r�rGrr�rVrKr�r�r�r�r�r�r�rhr�r�rk�ownerr��cipherrY�shared_ciphersr�r�rLrZr�r�r��assertIsNotNoner@�SSLSyscallErrorr�rq)r�r�r�r�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�(L1�1M	�M	�M	c��[O[O2oUOUO2UO	UO
2[O2o[O2o[O[O2oP
Um
[OUmUOV#P
2oUOVV5O2QoUOVV5O U2UOVV5O"Q2oUO%UQ2UOVV5O&2P!)F�FOO
�sfoo
)r�rpr�r�r�rGrr�rVrKr�r�r�rhr�r�rqr4r�r@)r�r�r�r�r?r��reqr�s&       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��[2vqo[O[O29^tt^2oUOUO2[
O
2o[
O
2oUOVVUQ5oUOVEVgO2UO2UO[
OUO2PPP2P!)%fhP!9h)r�)r�r�rpr�rGrr�rhr�r�r)r��SSLEOFErrorr4)r�r�r�r�r�r�r�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-C2�2D	�;D	)rGr�) r�rUrVrWrHrMrQrTr[r`rcrfrir]rrr rpruryr�r�r�rnr�r�r�r�r�r�r]r^r_s@r!rDrDGs�����/�
,�<� )�)�4"�(=�&"�."�*�_�_�R�W�W��_�&R�S�9�T�9�$d�*O�5�*C�
4�,�
5�
4� �D">�HB�"<�<r#rDr�zTLS 1.3 is not availablec�:`�\sQsQsnQsQsQsQsQsUs	P!)�SimpleBackgroundTestsTLS_1_3i�	c��[O[O2oUO2Tt,tFDoUQ*Q6XfJUQ*MJ	ooU%fUO	Q2U]*UmUP*UmUOUO
2UO[2[UQ5oUOU2[UO1UmP!ttoh)rNr�r zNo cipher supports TLSv1.3rP)rrVrJrvr=�matching_cipher�mismatched_cipherr�r�r�rQrFrCrJrG)r�r�r�r�rIs&    r!rH�"SimpleBackgroundTestsTLS_1_3.setUp�	s����^�^�C�$;�$;�<�
�0:�0F�0F�0H�7�0H�f��Z�(�I�5�"�6�&�>�>�0H��7���M�M�6�7�&�q�z���")������#�#�D�$8�$8�9��"�"�?�3�#�J�7�����&�!� �&�+�+�.����7s�C7�

C7c�.�[O[O29^tt^2oUO[OQ29^tt^2[U[OQ[OOQ5PPP2PPP2[[O[O2[OUO[OOQ59^tt^2oUOUO2UOUO2]*UO2PPP2P!)%fhK�9h)%fhK�9h)%fhP!9h)zNo cipher suite can be selected�XXX�r�r�r�)r�rpr�rr�r�r�rr�r�r�rGr�r�)r�r�r�s&  r!�test_ciphersuites�.SimpleBackgroundTestsTLS_1_3.test_ciphersuites�	s��
�M�M�&�.�.�)�)�T��"�"�3�<�<�#D�
F�
F�
�T�S�]�]�*/�),���)?�)?�
A�
F�
*��f�m�m�F�N�N�;�(+�
�
�+/�+?�+?�*-�.�.�*@�*@�B�B�FG�
�I�I�d�&�&�'����Q�X�X�Z��]�D�,@�,@�A�B�B�
F�
F��
*�)��B�B�B�sB�)E0�6E	�
E0�A
F�E-
�&E-
�(E0�0F	�9F	�F	�F	c���[[O[O2[OUO
[OO[OOQ59^tt^2oUOUO2UOUO2]*Q2PPP2P!)%fhP!9h))r�r�r�r��TLSv1.2)r�r�rprr�r�rrUr�rGr�r�r�s& r!�test_ciphersuite_downgrade�7SimpleBackgroundTestsTLS_1_3.test_ciphersuite_downgrade�	s���
�f�m�m�F�N�N�;�(+�
�
�+/�+?�+?�*-�.�.�*@�*@�*-�.�.�*@�*@�	B�B�FG�
�I�I�d�&�&�'����Q�X�X�Z��]�I�6�
B�B�B�B�s�AC�C"	�C"	c���UOUO6XcUOQ2[[O[O
2[OUO[OOQ59^tt^2oUO[OUOUO2PPP2P!)%fhP!9h)z*Multiple TLS 1.3 ciphers are not availabler�)r�r�r=r�r�rprr�rr�r�r�r�rGr�s& r!�test_ciphersuite_mismatch�6SimpleBackgroundTestsTLS_1_3.test_ciphersuite_mismatch�	s������4�#9�#9�9��M�M�F�G�
�f�m�m�F�N�N�;�(+�
�
�+/�+A�+A�*-�.�.�*@�*@�B�B�FG����c�l�l�A�I�I�t�7G�7G�H�	B�B�B�B�s�6C�C(	� C(	)r�r�rG)
r�rUrVrWrHr�r�r�r]r^r_s@r!r�r��	s!����/�&B�&7�I�Ir#r��networkc�`�\sQsQsnQs\O\OQ2\	OQ2Q22sQsUs
P!)�NetworkedTestsi
c�f�[O[29^tt^2[[O[O
2[OP
Q5oUOUO2UOQ2UO[Q12oU]6XcUOQ2L&U[O6XcUOQ2UOU[O [O"12PPP2P!)%fhP!9h)FrsgH�����z>�z!REMOTE_HOST responded too quicklyzNetwork unreachable.)r�transient_internet�REMOTE_HOSTr�r�rprr�r�r�r�rBr=rD�ENETUNREACHr��EAGAINrHrZs&  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�BD�-&D�AD�D0	�(D0	z
Needs IPv6�walltimec��[OQ29^tt^2[UQQ2[UQQ2PPP2P!)%fhP!9h)zipv6.google.comr�)rr�rxr�r�s&r!� test_get_server_certificate_ipv6�/NetworkedTests.test_get_server_certificate_ipv6
s@���
-�
-�.?�
@�
@�(��/@�#�F�-�d�4E�s�K�A�
@�
@�
@�s�A�A	�A	rC)r�rUrVrWr�r]rYr�IPV6_ENABLEDr�requires_resourcer�r]r^r_s@r!r�r�
sH����A� ����3�3�\�B����z�*�L�+�C�Lr#r�c	�t�[OV12oU%fUOQU8QU8Q02[OV1UQ5oU%fUOQU8QU8Q02[O%c/[
OOQU8QU8QU8Q02P!P!)r�r�r�r�r�r�r)rr�rLrrormrprq)�testr�rJr�rOs&&&& r!rxrx
s{��

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

�
$�
$�d�\�D�
$�
A�C���	�	�t�T�B�C������
�
����d�TW�X�Y�r#c��[OU29^tt^2[OV1[Q5oUOQU8QU8QU8Q02PPP2P![OcGo[O%c'[OOQS*2Po=K`Po=hh9h)%fhP!9h)r�zGot server certificate z for r�r�z%s
)r	�check_no_resource_warningrr�rrLr�rrormrprq)r�r�rJrO�xs&&&  r!r�r�'
s���	�	2�	2�4�	8�	8�	R��,�,�d�\�H�,�M�C�
�I�I��T�4�P�Q�
9�	8���|�|�	-������
�
� � ��!��,���	-��
9�	8�	8�sE�C�A&�C�&C�:C�;B<�&B<�7C�<C�C�C	�
C	)�make_https_serverc�~`�\sQsQsnQQ\O
2sQQksQsQs	Q
Qks
QsQ	sQ
s
QsUsP!)rQi5
c�F`�\sQsQsnQsQsQsQsQsQs	Qs
UsP!)	�$ThreadedEchoServer.ConnectionHandleri7
c���VmP
UmV mV0mUOO	P	2PUm[OOU2P	Um	P!�F)
rI�runningr��addrr�sslconnrr�__init__�daemon)r�rI�connsockr�s&&&&r!r��-ThreadedEchoServer.ConnectionHandler.__init__=
sL�� �K� �D�L� �I��I��I�I�!�!�$�'��D�L����%�%�d�+��D�Kr#c�V�UOOOUOP	Q5UmUOO
O
UOO22UOOO
UOO22UOOO[O6XCc+UOO2o[O%c^UOO%cB[ O"O%Q[&O(U2*Q*2UOOP	2o[O%cmUOO%cQUe![ O"O%Q2L,[ O"O%Q[+U2Q02UOO-2o[O%cSUOO%c7[ O"O%Q[/U2*Q*2P	![0[2[41c�oSOO6O
[/S22SOO%c-[9Q[;SO<2*Q	*2P
SmSOA2Po=P
!Po=h[OB[D1c�oSOO6O
[/S22SOO%c-[9Q[;SO<2*Q	*2SOF[FOH6wc-[ OJQ
6wcP
SmSOA2Po=P
!Po=hh9h)Trfz 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:
�darwin)&rIr�r�r�r��selected_alpn_protocolsr��selected_alpn_protocolr�r�rr�rLrro�chattyrmrprqrrrMr�rG�ConnectionResetError�BrokenPipeError�ConnectionAbortedError�conn_errorsrtr�r�r�r�r�r|rD�
EPROTOTYPEr[)r�r��cert_binaryr�rs&    r!�	wrap_conn�.ThreadedEchoServer.ConnectionHandler.wrap_connG
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�'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���+
�sL�A3J�P(�*P(�+A	L>�5AL>�>P(�P(�A	P#�&A
P#�1P#�P#�#P(c��UO%cUOO2!UOOQ2!)r�)r�r4r�r}r�s&r!r4�)ThreadedEchoServer.ConnectionHandler.read�
s1���|�|�|��|�|�(�(�*�*��y�y�~�~�d�+�+r#c��UO%cUOOU2!UOOU2!rB)r�rqr�r�)r�r�s&&r!rq�*ThreadedEchoServer.ConnectionHandler.write�
s3���|�|�|��|�|�)�)�%�0�0��y�y�~�~�e�,�,r#c��UO%cUOO2P!UOO2P!rB)r�r�r�r�s&r!r��*ThreadedEchoServer.ConnectionHandler.close�
s)���|�|�|����"�"�$��	�	���!r#c��P	UmUOO%fUO2%fP!UO%Cc�UO	2oUO2oU%fAP
UmUOO2UmPUmUO2J|UQ6Xcd[O%c<UOO%c [OO!Q2UO2P!UOO%c�UQ6Xc~[O%c<UOO%c [OO!Q2UO!Q2UO2%fP!CJ�UOO%c�UO%c�UQ6Xc�[O%c<UOO%c [OO!Q2UO!Q2UOO2UmPUm[O%cBUOO%c#[OO!Q2CJ�CJ�CJ�UQ	6Xc�[O%c<UOO%c [OO!Q
2UOO#Q2oUO![%U2O'Q2Q
*2CJCUQ6Xc�[O%c<UOO%c [OO!Q2UOO)2UO!Q2CJ�UQ6XcEUOO/2dUO!Q2CJUO!Q2CJUQ6XcNUOO/2oUO![%U2O'Q2Q
*2CJiUQ6XcYUOO0O32oUO![5U2O7]Q2Q
*2CJ�UQ6XcYUOO0O92oUO![5U2O7]Q2Q
*2CJ'[O%c{UOO%c_UO9%cQ9%fQo[OO!QU8QU8QUO;28QU8Q0	2UO!UO;22CJ�P![cCKh9h[*O,c=oSO![%S2O'Q2Q
*2Po=CJ9Po=hh9h[Cco[=S[>2%chSOO@%c/[O%c[CQSOD02SO2P
SmPo=P!SOO@%c"[O%c[GQ2SO!Q2L[cLh9hSO2P
SmPo=CJIPo=hh9h) Tsoverz" 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
VERIFIEDCHAIN�bigsUNVERIFIEDCHAIN�	encrypted�unencryptedz server: read z (z), sending back z)...
z Connection reset by peer: zTest server failure:
sERROR
)$r�rI�starttls_serverrr4�stripr�r@r�r|r�rro�connectionchattyrmrprqr�r�r��verify_client_post_handshakerr�rLrk�get_verified_chainrM�to_bytes�get_unverified_chainr<rF�ConnectionErrorr��printr�rt)r��msg�strippedr�rr��certs�ctypes&       r!�run�(ThreadedEchoServer.ConnectionHandler.run�
s����D�L��;�;�.�.�.��~�~�'�'���,�,�,�[)��)�)�+�C�"�y�y�{�H�#�',���0�(,���(;�(;�(=�D�I�,0�D�L��
�
��!�W�,�"�?�?�?�t�{�{�/K�/K�/K��J�J�,�,�-R�S��
�
����+�+�5�5�5�"�k�1�"�?�?�?�t�{�{�/K�/K�/K��J�J�,�,�-b�c��
�
�7�+�#�~�~�/�/�"� 0��+�+�5�5�5�$�,�,�,�&�)�3�"�?�?�?�t�{�{�/K�/K�/K��J�J�,�,�-`�a��
�
�7�+�$(�L�L�$7�$7�$9��	�'+���"�?�?�?�t�{�{�/K�/K�/K��J�J�,�,�-Z�[�0L�?�!�%5�5�"�?�?�?�t�{�{�/K�/K�/K��J�J�,�,�-p�q�#�|�|�?�?��M���
�
�4��:�#4�#4�Z�#@�5�#H�I�!�V�+�"�?�?�?�t�{�{�/K�/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�O� �K�K�8�8�8�%)�\�\�%A�%A�k�$S�$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�o�$�%=�>���
�
�:�.��"������J�J�L�#(�D�L�L��')�s��'Y>�9Y>�X� Y>�9Y>�Y>�Y>�2/Y>�#Y>�?Y>�Y>�Y>�8AY>�Y>�Y>�1Y>�8Y>�Y>�*A+Y>�Y>�2Y>�Y>�!Y>�7Y>�A*Y>�Y>�Y>�Y>�9Y>�X*�3Y>�Y>�Y>�*Y>�>Y>�Y>�A
Y>�&Y>�-AY>�Y>�AY>�$Y>�:Y>�Y>�)	Y>�3A Y>�	X'�"X'�#Y>�&X'�'Y>�*Y;�>Y;�?0Y6�/Y>�6Y;�;Y>�>
^�	^�
^� ^�<^�/^�^�#^�9^�]�^�	]%�!]%�"^�$]%�%^�^)r�r�r�rIr�r�)r�rUrVrWr�rr4rqr�r&r]r^r_s@r!�ConnectionHandlerr�7
s+����	�;	�z	,�	-�	"�a	)�a	)r#r(c�&�U
%cV�mL�[OUdSL[O2UmUdSL[OUOmU%cUOO
U2U%cUOOU2U%cUOOU2U	%cUOOU	2VPm
V`mVpm[O2Um[O UO2UmPUmP
Um,Um,Um,Um[.O0O3U2P	UmP
UmP!rB)r�rrVrJr�r�r�r��set_alpn_protocolsr=r�rrr�r�rrArJ�flag�activer�r�rrrr�r��_in_context)r��certificate�ssl_version�certreqs�cacertsr�rr�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���UO%c[Q2gP	UmUO[O22UO
O
2U!)z&Re-entering ThreadedEchoServer context)r-r��startr�Eventr+�waitr�s&r!�	__enter__�ThreadedEchoServer.__enter__sH�������E�F�F�����
�
�9�?�?�$�%��	�	�����r#c�V�P
UmUO2UO2P!r�)r-�stopr�r�r_s&*r!�__exit__�ThreadedEchoServer.__exit__$s�� ����	�	���	�	�r#c��UO%f[Q2gVm[OOU2P!)�4ThreadedEchoServer must be used as a context manager)r-r�r+rrr5�r�r+s&&r!r5�ThreadedEchoServer.start*s9�������F�H�
H��	������t�$r#c��UO%f[Q2gUOOQ2UOO	]2P	UmUO%cUOO2UO
%c�UOO2vq[O%cIUO%c7[OOQ[U2*Q*2UO!VU2oUO#2UO%2J�UO/2P![&cNo[O%c,[OOQS8Q02Po=CJPo=CJ&Po=h[(cSO+2CJH[,cyo[O%cWSO%c>[OOQ[S2*Q*2Po=CJ�Po=CJ�Po=CJ�Po=hh9h)r@g�?z server:  new connection from rz connection timeout z connection handling failed: )r-r�r�r��listenr,r+r�rCrror�rmrprqr�r(r5r�TimeoutError�KeyboardInterruptr;�
BaseExceptionr�)r��newconn�connaddr�handlerrs&    r!r&�ThreadedEchoServer.run1s��������F�H�
H��	�	���S�!��	�	���������9�9�9��I�I�M�M�O��k�k�k�
J�$(�I�I�$4�$4�$6�!���?�?�?�t�{�{�{��J�J�$�$�%E�'+�H�~�&6�8<�&=�>��0�0���I���
�
������	
�
�
��� �
E��?�?�?��J�J�$�$�';�A�5��%C�D�D�#��$�
��	�	��� �
J��?�?�?�t�{�{�{��J�J�$�$�7�$�q�'�A�D�H�J�J�(3�?��
J�s[�1E�
E�A(E�	I�%I�&F.�<$F.�.I�;I�I�I�I
�0I
�6I
�
Ic�j�UOd$UOO2PUmP!P!rB)r�r�r�s&r!r��ThreadedEchoServer.closePs&���9�9� ��I�I�O�O���D�I�!r#c��P
UmP!r�)r,r�s&r!r;�ThreadedEchoServer.stopUs	����r#)
r-r,r�rrr�r�r+rJr�r�r�r)
NNNNTFFNNNrB)r�rUrVrWrrr(r�r8r=r5r&r�r;r]r^r_s@r!rQrQ5
sC����@)�I�,�,�@)�D!!�F��%��>�
�r#rQc�:``�\sQsQsnU1QksQsQsUsU9s!)�
TestEOFServeriXc�h:�[RU_2[O2UmPUmP!rB)�superr�rr6�	listening�address�r�r�s&�r!r��TestEOFServer.__init__Ys#���
����"���*�����r#c	�|�[O[OO2oUO	[
2[O[O[O2oS9^tt^2UO[O2UO[]12UO]2UO2UmUO"O%2UO'2vq4UO)UP	Q5oS9^tt^2QoUO+Q29o%cVg*
oQU7fJ*UO-Q2UO/[O02PPP2PPP2P!)%fhK9h)%fhP!9h)rrfr#r�r�server
)rr�r
rr�rr�rp�SOCK_STREAMr�rr��bindrCrDr�rUrTr�rCr�r}r��shutdown�SHUT_WR)r�r��server_sockr�r�r��request�chunks&       r!r&�TestEOFServer.run^s.���,�,�S�[�[�-D�-D�E������)��m�m�F�N�N�F�4F�4F�G��
�[��"�"�7�#8�#8�9����d�A�Y�'����q�!�&�2�2�4�D�L��N�N��� �$�+�+�-�J�D��)�)�$�D�)�A�G�����&�|�|�D�1�1�e�1��$�G���~������,�� � ����0���[�����[�[�s=�B&F*�'F	�F	�1F	�F*�F'
� F'
�"F*�*F;	�3F;	)rUrT)	r�rUrVrWr�r&r]r^�
__classcell__�r�r`s@@r!rQrQXs�����
1�1r#rQc�z`�\sQsQsnQQ\O
2sQsQsQs	Qs
QQksQ	sQ
s
QsUsP!)
�AsyncoreEchoServerivc�^`�\sQsQsnQQ\O
2sQsQsQs	Qs
UsP!)�AsyncoreEchoServer.EchoServerizc�F`�\sQsQsnQsQsQsQsQsQs	Qs
UsP!)	�/AsyncoreEchoServer.EchoServer.ConnectionHandleri|c��[UP	UP
Q5Um[OO	VO2P	UmUO
2P!)T)rr�r�)r�r�r
�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��[UO[O2%c2UOO	2]6�cUO2J1P	!rv)rFr�rr�r��handle_read_eventr�s&r!�readable�8AsyncoreEchoServer.EchoServer.ConnectionHandler.readable�s;���d�k�k�3�=�=�9�9��+�+�-�-�/�!�3��.�.�0�r#c��UOO2P
UmP![O[O
1cP![OcSO2t![Ocg[cGoSO]*[O6XcSO2tPo=!Po=P!Po=hh9hr�)
r�r�rlrr�rYr��handle_closer�r|r_rD�ECONNABORTED�r��errs& r!rm�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�sE�&�#C�
C�C�!C�4C�
C�C�%C�9C�C�Cc�n�UO%cUO2P!UOQ2o[O%c0[
OOQ[U2*2U%fUO2P!UOUO22P!)r�z server:  read %s from client
)rlrmr}rrormrprqr�r�r�r<)r�r�s& r!�handle_read�;AsyncoreEchoServer.EchoServer.ConnectionHandler.handle_read�sk���&�&�&��*�*�,��9�9�T�?�D������
�
�(�(�)J�T�RV�Z�)W�X���
�
���	�	�$�*�*�,�/r#c��UO2[O%c3[OOQUO*2P!P!)z server:  closed connection %s
)r�rrormrprqr�r�s&r!ru�<AsyncoreEchoServer.EchoServer.ConnectionHandler.handle_close�s5���
�
���?�?�?��J�J�$�$�%G�$�+�+�%U�V�#r#c��grBrCr�s&r!rt�<AsyncoreEchoServer.EchoServer.ConnectionHandler.handle_error�s��r#)rlr�)r�rUrVrWr�rrrmr{rurtr]r^r_s@r!r(ri|s)����
)�
�

0�

0�
W�

�
r#r(c��Vm[O[O[O2o[O
UP2Um[OOV2UO]2P!rn)r�r�rprZrrArJr
�
dispatcherr�rDr�s&& r!r��&AsyncoreEchoServer.EchoServer.__init__�sT��$�M��=�=�����1C�1C�D�D�%�/�/��b�9�D�I����(�(��4��K�K��Nr#c��[O%c'[OO	QU*2UOVO2P!)z$ server:  new connection from %s:%s
)rrormrprqr(r�)r��sock_objr�s&&&r!�handle_accepted�-AsyncoreEchoServer.EchoServer.handle_accepted�s5�������
�
� � �!H�$�!N�O��"�"�8�]�]�;r#c��grBrCr�s&r!rt�*AsyncoreEchoServer.EchoServer.handle_error�s��r#)r�rJ)r�rUrVrWr
rkr(r�r�rtr]r^r_s@r!�
EchoServerrgzs,����1	�� =� =�1	�f	�	<�
	�	r#r�c���PUmP
UmUOU2UmUOOUm[
OOU2P	UmP!rB)	r+r,r�rIrJrrr�r�)r�r�s&&r!r��AsyncoreEchoServer.__init__�sL����	�����o�o�h�/����K�K�$�$��	����!�!�$�'���r#c�V�QUOO8QUO8Q0!)�<rj�>)r�r�rIr�s&r!�__str__�AsyncoreEchoServer.__str__�s�� �N�N�3�3�T�[�[�A�Ar#c��UO[O22UOO	2U!rB)r5rr6r+r7r�s&r!r8�AsyncoreEchoServer.__enter__�s(���
�
�9�?�?�$�%��	�	�����r#c��[O%c [OO	Q2UO2[O%c [OO	Q2UO
2[O%c [OO	Q2[OP	Q5P!)z cleanup: stopping server.
z! cleanup: joining server thread.
z cleanup: successfully joined.
)�
ignore_all)	rrormrprqr;rr
�	close_allr<s&*r!r=�AsyncoreEchoServer.__exit__�sv���?�?�?��J�J���;�<��	�	���?�?�?��J�J���A�B��	�	���?�?�?��J�J���?�@����d�+r#c�R�Vm[OOU2P!rB)r+rrr5rAs&&r!r5�AsyncoreEchoServer.start�s���	������t�$r#c���P	UmUO%cUOO2UO%c[O]2J+P!J29hr�)r,r+r�r
�loopr�s&r!r&�AsyncoreEchoServer.run�sH������9�9�9��I�I�M�M�O��k�k�k�
��
�
�a� ���
��s�A"�"A'c�J�P
UmUOO2P!r�)r,rIr�r�s&r!r;�AsyncoreEchoServer.stop�s����������r#)r,r�r+rJrIrB)r�rUrVrWr
r�r�r�r�r8r=r5r&r;r]r^r_s@r!rerevsC����B�h�)�)�B�H�B��

,�%���r#rec�n�-o[UUP
Q5oS9^tt^2UO[O2VVQ59^tt^2o	U	O[UO
12U[
U2[U21FCDo
U%c=[O%c'[OOQU*2U	OU
2U	O2oU%c=[O%c'[OOQU*2V�O26wfJ�[QUQ*[!U2UQ*O2[!U21*2g	U	OQ2U%c6[O%c [OOQ2UO#Q	U	O%2Q
U	O'2QU	O)2QU	O+2Q
U	O-2QU	O.QU	O0-2[2%c"UO#QU	O52-2[6%cCUO#QU	O92-2UO#QU	O;2-2U	O=2PPP2UO>UQ$UO@UQ$PPP2U!)%fhK89h)%fhS!9h)F�r�r�r)r��session� client:  sending %r...
� client:  read %r
�4bad data <<%r>> (%d) received; expected <<%r>> (%d)
�N�N�over
� client:  closing connection.
�compressionr��peercert�client_alpn_protocolrY�session_reusedr��group�
client_sigalg�
server_sigalg�server_alpn_protocols�server_shared_ciphers)!rQr�r�r�rCrJr�r1rrormrprqr4r<�AssertionErrorrMr�r�r�rLr�rYr�r��CAN_GET_SELECTED_OPENSSL_GROUPr��CAN_GET_SELECTED_OPENSSL_SIGALGr�r�r�r�r�)r�r��indatar�r�sni_namer�r�rIr��arg�outdatas&&&&&&&     r!�server_params_testr��sb��
�E�
��'-�16�8�F�
��
�
'�
'��
�
�� (�(�;�;�>?�
�I�I�t�V�[�[�)�*��	�&� 1�:�f�3E�F��#������
�
�(�(�7�&�@�B�������&�&�(��#������
�
�(�(�)>��)H�I��l�l�n�,�(�O�"�3�<��W��!�#�;�,�,�.��F��=�=�>�>�G�
�G�G�I����?�?�?��J�J�$�$�%F�G��L�L��q�}�}���!�(�(�*��A�M�M�O�&��(@�(@�(B��1�9�9�;� �!�"2�"2��1�9�9��
�.�-����g�q�w�w�y�1�2�.�.����o�q���/@�A�B����o�q���/@�A�B�
�G�G�I�I;�J*0�)G�)G��%�&�)/�)>�)>��%�&�O
�P�L�O;�;��
��P�L�sj�/L#�AL	�L	�'AL	�6L	�7L	�AL	�'L	�=B#L	�!,L	�AL	� &L#�L 
�L 
�L#�#L4	�,L4	c��Ue[Oo[OQ[OQ[OQ-U*o[O
%cfS9%cQ9%fQo[OOU[OU2[OU2U1*2[O29^tt^2[OU2oU9OU*tm
[OU2o	U	9OU*tm
PPP2[OUP2o
U
de[!W	Q2%cSU[O"6Xc>U	O$U
6�c-[O29^tt^2V�mPPP2WO&[O"6XcUO)Q2[+W	U2V�1FD3oV;mUO/[02UO3[42J5	[7V�P
P
Q5oU%f;[9Q	[OU28Q
[OU28Q02gUP	Ic*V,Q*6wc[9Q
U8QUQ*802gP!P!)%fhCK�9h)%fhCK9h[O:cS%cgP![<c4o
S%f S
O>[>O@6wcgPo
=
P!Po
=
hh9h)Nr�r�r�z %s->%s %s
z
 {%s->%s} %s
r9ri)r�rzClient protocol z  succeeded with server protocol r�rYzversion mismatch: expected z, got )!rr�r�r�rrormrprq�get_protocol_namer	rsrVr��PROTOCOL_TO_TLS_VERSIONr�r:rIr9rNr=r@r�r�r�r�r�r�r�r�r|rD�
ECONNRESET)�server_protocol�client_protocol�expect_success�	certsreqs�server_options�client_options�certtype�	formatstrr�r�r�r?r�rs&&&&&&        r!�try_protocol_combor�!s������M�M�	��
�
�{����?����?���	�H�
����#�6�6��K�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���sa�'AK�;K�K+�K	�K	�K(	� K(	�+M	�?M	�M	�M	�M	�M�M�=M�M	c�z�UO2FD$oSFDoQU0UQ*7fJP	!	J&	P
!)zKx=�description)rv)r?�aliasesr��aliass&&  r!�supports_kx_aliasr�os8���/�/�#���E��U�G�}��}� 5�5���$�r#c�
`�\sQsQsn\O
Q2Q2s\O\OQ2Q2s
QsQsQs
\O\OQ	2Q
2sQs\O\Q2Q
2sQsQ[QksQs\Q2Q2sQsQsQs\Q2Q2s\Q2Q2s\Q2Q2s\Q2Q2sQs Qs!Q s"Q!s#Q"s$Q#s%Q$s&Q%s'Q&s(Q's)Q(s*Q)s+Q*s,\Q2Q+2s-\Q2\Q2\.Q,222s/\Q2\.Q-22s0\Q2\Q2\.Q.222s1\Q2Q/2s2Q0s3\OQ1\Oh7Q22Q32s5Q4s6\O\7\Q52Q62Q72s8Q8s9Q9s:Q:s;Q;s<Q<s=\O\>Q=2Q>2s?\O\>Q=2Q?2s@\O\AQ@2QA2sB\O\AQ@2QB2sCQCsDQDsEQEsFQFsGQGsHQHsIQIsJQJsKQKsLQLsMQMsNQNsOQOsPQPsQQQsR\Q2\O\O�QR2QS22sT\Q2\O\O�QR2\O\O�QT2QU222sV\O�QVP	QW5QX2sXQYsYQZsZUs[P!)\�
ThreadedTestsiwr�c�*�[O%c [OO	Q2[2vqoUO
[O[OQ59^tt^2[UUP	P	UQ5PPP2P
UmUO
[O[OQ59^tt^2UO[O29^tt^2o[UUP	P	UQ5PPP2UOQ[WO 22PPP2UO
[O[OQ59^tt^2UO[O29^tt^2o[UUP	P	Q5PPP2UOQ[WO 22PPP2UO
[O[OQ59^tt^2UO[O29^tt^2o[UUP	P	Q5PPP2UOQ[WO 22PPP2P!)%fhCK9h)%fhCK�9h)%fhCK�9h)%fhCK 9h)%fhCK9h)%fhK�9h)%fhP!9h)r)rtrI)r�r�r�rr�z@Cannot create a client socket with a PROTOCOL_TLS_SERVER context)r�r�r�r)rrormrprqr�r�rrKrJr�r�r�r�r�rGrn)r�r�r�r�rs&    r!�	test_echo�ThreadedTests.test_echoys!���?�?�?��J�J���T�"�3B�3D�0���
�\�\��!8�!8��AX�AX�\�
Y�
Y��n�.<�&*�T�(0�
2�Z�).��%�
�\�\��!8�!8��AX�AX�\�
Y�
Y��"�"�3�<�<�0�0�A�"�.�2@�*.��,4�6�1�

�M�M�R��A�K�K� �
�
Z��\�\��!8�!8��AX�AX�\�
Y�
Y��"�"�3�<�<�0�0�A�"�.�2@�*.��G�1�
�M�M�R��A�K�K� �
�Z��\�\��!8�!8��AX�AX�\�
Y�
Y��"�"�3�<�<�0�0�A�"�.�2@�*.��G�1�
�M�M�R��A�K�K� �
"�Z�
Y�9Z�
Y�
Y��1�0�0��Z�
Y�
Y��1�0�0��Z�
Y�
Y��1�0��Z�
Y�
Y�s��;J
�(J2�:J	�-J2�7(K�K	�/-K�(L�K.	�-L�
J	�J	�J/
�'J/
�)	J2�2K	�;K	�K
�K
�	K�K+	�#K+	�.K>
�7K>
�9L�L	�
L	z*test is only useful if the GIL is disabledc�<�,o[OOoP	rUOUO
UOUO[OUOUQ5UOUO1FDTo[]2FDAoUOV4Q59^tt^2UO[!UQ52PPP2JC	JV	["O$29^tt^2oSFD6oUOUQ59^tt^2UO'2PPP2J8	SFD6oUOUQ59^tt^2UO)2PPP2J8	UO*d7[-UO*[.O02%f
UO*gPPP2P
rP!)%fhCJC9h)%fhJ�9h)%fhJ�9h)%fhKQ9hP
rh9h)T)�warnings_filters)ra�numrr�)rm�flags�context_aware_warningsr�r��test_alpn_protocols�test_getpeercert�test_crl_checkrd�partial�test_check_hostname_idn�test_wrong_cert_tls12�test_wrong_cert_tls13rr�r�rrrr5rrrFr]r^)r�rr�rar�r�r�s&      r!�test_ssl_in_multiple_threads�*ThreadedTests.test_ssl_in_multiple_threads�s������9�9�;�;�� $�� 	*�����(�(��%�%��#�#��!�!��0�0�%5���*�*��*�*���!��8�C����4��9�9����v�T�':�;�:�9�$��$"�;�;�=�=��%�F����V��4�4�����5�4�&�&�F����V��4�4����
�5�4�&��<�<�+�%�b�l�l�H�4E�4E�F�F� �l�l�*�>�%*�!�!:�9�9��
5�4�4��5�4�4��
>�=��%*�!�s��BH�3G
�-H�<!H�G
�.,H�G0
�+H�)H�/H�;H�G�G�
H�G-�%G-�'	H�0H�9H�;	H�H	�
H	�H�Hc�n�[O%c [OO	Q2[2vqo[
UP
Q5oS9^tt^2UO[O2P
UQ59^tt^2oUO[UO12UO[29^tt^2UO2PPP2UO2UO2oUO!UQ2UO#2o[O%cq[OO	[$O&U2Q*2[OO	Q[)U2*Q*2QU7c-UO+Q[$O&U2*2QUQ*7cUO+Q2UO-Q	U2UO-Q
U2[.O1UQ	*2o[.O1UQ
*2o	UO3V�2PPP2PPP2P!)%fhCK�9h)%fhK.9h)%fhP!9h)r�r�r�)r�r��Can't get peer certificate.zConnection cipher is z.
rz$No subject field in certificate: %s.zkMissing or invalid 'organizationName' field in certificate subject; should be 'Python Software Foundation'.rrr*)rrormrprqr�rQr�r�r�rCrJr�r�rLr�r�r�rrrGrLr�rrr^)
r�r�r�r�rIr�r�r��before�afters
&         r!r��ThreadedTests.test_getpeercert�s����?�?�?��J�J���T�"�3B�3D�0���#�N�5�I��
�V��+�+�F�M�M�O�DI�<D�,�F�F�IJ��	�	�4����-�.��&�&�z�2�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�2��
F�F���V�V�sc�0J#�?J	�
I<
�AJ	�;A6J	�29J	�,A>J	�*J#�<J
�J
�	J	�J 
�J 
�J#�#J4	�,J4	c��[O%c [OO	Q2[2vqo[
[Q]2oUOUO[OU*2[UP	Q5oS9^tt^2UO[O2UQ59^tt^2oUO[UO 12UO#2oUO%UQ2PPP2PPP2U9O[O&*tm	[UP	Q5o[(O*Q[(O,2oS9^tt^2UO[O2UQ59^tt^2oUO/[O0U29^tt^2UO[UO 12PPP2PPP2PPP2UO3[42[UP	Q5oS9^tt^2UO[O2UQ59^tt^2oUO[UO 12UO#2oUO%UQ2PPP2PPP2P!)%fhCK�9h)%fhCK�9h)%fhK�9h)%fhCK9h)%fhCK9h)%fhK}9h)%fhP!9h)rr�r�r�r�rP)rrormrprqr�rHrr�r�r�rQr�r�r�rCrJrLr�r�rrrr�r�r��CRLFILE)	r�r�r�r�r�rIr�r�r
s	&        r!r��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��
�V��+�+�F�M�M�O�<D�,�F�F�IJ��	�	�4����-�.��}�}�������&C�D�	F��	�#�#�s�'@�'@�@�#�#�N�4�H���
�
�
��d�d�	��
�V��+�+�F�M�M�O�<D�,�F�F�IJ��+�+�C�L�L�%�@�@��I�I�t�V�[�[�1�2�A�F��	�,�,�W�5�#�N�4�H��
�V��+�+�F�M�M�O�<D�,�F�F�IJ��	�	�4����-�.��}�}�������&C�D�	F��V�5F�F�F���V�V��(A�@��F�F�F���V�V��F�F���V�V�s��/K�AK	�K�/L�2)L	�"K.
�=L	�L�/L<�0AL)	�4L<�K
�K
�	K�K+	�#K+	�.K>�7K>�9L	�L
�
L
�	L�L&	�L&	�)L9
�2L9
�4L<�<M
	�M
	c��[O%c [OO	Q2[2vqo[
UP	Q5oS9^tt^2UO[O2UQ59^tt^2oUO[UO12UO2oUOUQ2PPP2PPP2[
UP	Q5o[OQ[O 2oS9^tt^2UO[O2QQ59^tt^2oUO#[$O&U29^tt^2UO[UO12PPP2PPP2PPP2[
UP	Q5oS9^tt^2[O29^tt^2oUO#[(Q29^tt^2UOU2PPP2PPP2PPP2P!)%fhCKg9h)%fhCKs9h)%fhK�9h)%fhK�9h)%fhK�9h)%fhK�9h)%fhK�9h)%fhP!9h)rr�r�r�rP�invalidz'check_hostname requires server_hostname)rrormrprqr�rQr�r�r�rCrJrLr�rrrr�r�CertificateErrorr�)r�r�r�r�rIr�r�r
s&       r!r��!ThreadedTests.test_check_hostname!
s����?�?�?��J�J���T�"�3B�3D�0���$�N�4�H��
�V��+�+�F�M�M�O�<D�,�F�F�IJ��	�	�4����-�.��}�}�������&C�D�	F��$�N�4�H���
�
�
��d�d�	��
�V��+�+�F�M�M�O�<E�,�G�G�JK��+�+�C�,@�,@�%�H�H��I�I�t�V�[�[�1�2�I�G��$�N�4�H��
�V������A��+�+�J�,U�W�W�"�.�.�q�1�W�!��V�-F�F�F���V�V��$I�H��G�G���V��W�W��!����V�V�s��/I�
AH,	�I�/I:�	)I'	�2"I
�I'	�I:�J3�!J 	�J

�J 	�J3�,H=
�5H=
�7	I�I	�	I	�I$�I$�I'	�'I7
�0I7
�2I:�:J
	�J
	�
J�J�J 	� J0
�)J0
�+J3�3K	�<K	z)test requires hostname_checks_common_namec�b�[2vqoP
Um[UP	Q5oS9^tt^2UO[O2UQ59^tt^2oUO[UO12PPP2PPP2[[2vqoP
Um[UP	Q5oS9^tt^2UO[O2UQ59^tt^2oUO[O29^tt^2UO[UO12PPP2PPP2PPP2P!)%fhK�9h)%fhK�9h)%fhKH9h)%fhKS9h)%fhP!9h)Fr�r�)r�r�rQr�r�r�rCrJr�r�r�SSLCertVerificationErrorrRs&     r!r��.ThreadedTests.test_hostname_checks_common_nameF
s=��4C�3D�0���5:��2�$�N�4�H��
�V��+�+�F�M�M�O�<D�,�F�F�IJ��	�	�4����-�.�F��
4C�9�3M�0���5:��2�#�N�4�H��
�V��+�+�F�M�M�O�<D�,�F�F�IJ��&�&�s�'C�'C�D�D��I�I�t�V�[�[�1�2�E�F��V�F�F���V��E�D��F�F���V�V�s}�/E$�"E	�>E$�>/F�-(F
	�"E7
�7F
	�?F�E!
�E!
�E$�$E4	�-E4	�7F�F�F
	�
F
�F
�F�F.	�&F.	c	��[O[O2oUO[2UOQ2[o[O[O2oUO[2[UP	Q5oS9^tt^2UO[O2UQ59^tt^2oUO[UO12UO!2oUO#UQ2UO%2]*O'Q2oUO#UQ*Q2PPP2PPP2P!)%fhK9h)%fhP!9h�zECDHE:ECDSA:!NULL:!aRSAr�r�r��-:Nr4N)�ECDHE�ECDSA)rrVrKr�r�r=�SIGNED_CERTFILE_ECC_HOSTNAMErJr��SIGNED_CERTFILE_ECCrQr�r�r�rCrJrLr�r��split�r�r�r�r�rIr�r�r�s&       r!�
test_ecc_cert�ThreadedTests.test_ecc_cert^
s������(?�(?�@���,�,�Z�8��"�"�#<�=�/������(?�(?�@���&�&�':�;�$�N�4�H��
�V��+�+�F�M�M�O�<D�,�F�F�IJ��	�	�4����-�.��}�}�������&C�D�����A��,�,�S�1������r�
�,>�?�
F��V�F�F���V�V�s1� /E7�BE$	�E7�$E4
�-E4
�/E7�7F	�F	z2test requires RFC 5280 check added in OpenSSL 3.0+c�6�[O2oUO[2[o[O[
OQ5oUO[2[UP	Q5oS9^tt^2UO[O2UQ59^tt^2oUO[O29^tt^2UO[UO 12PPP2PPP2PPP2[O2oUO[2U9O"[O$&*tm[O[
OQ5oUO[2[UP	Q5oS9^tt^2UO[O2UQ59^tt^2oUO[UO 12UO'2oUO)UQ2PPP2PPP2P!)%fhCKG9h)%fhCKS9h)%fhCK_9h)%fhKV9h)%fhP!9h)r�r�r�r�)rr�r��LEAF_MISSING_AKI_CA�"LEAF_MISSING_AKI_CERTFILE_HOSTNAMEr
rr��LEAF_MISSING_AKI_CERTFILErQr�r�r�r�r�rCrJr�r�rLr�)r�r�r�r�rIr�r�s&      r!�test_verify_strict� ThreadedTests.test_verify_stricts
s����3�3�5���,�,�-@�A�5���3�3�G�<O�<O�3�P���&�&�'@�A�#�N�4�H��
�V��+�+�F�M�M�O�<D�,�F�F�IJ��&�&�s�|�|�4�4��I�I�t�V�[�[�1�2�5�F���3�3�5���,�,�-@�A��#�#��(>�(>�'>�>�#��3�3�G�<O�<O�3�P���&�&�'@�A�#�N�4�H��
�V��+�+�F�M�M�O�<D�,�F�F�IJ��	�	�4����-�.��}�}�������&C�D�	F��V�5�4�4��F�F�F���V�V��F�F���V�V�s�/I �0(I	�"H8
�:I	�I �3/J�"AI4	�&J�8I	�I	�	I	�I
�I
�	I � I1	�)I1	�4J
�=J
�?J�J	�J	c	�~�[O[O2oUO[2[O
OUmUOQ2[o[O[O2oUO[2UO[2[UP	Q5oS9^tt^2UO[ O 2UQ59^tt^2oUO#[$UO&12UO)2oUO+UQ2UO-2]*O/Q2oUO+UQ*Q2PPP2PPP2P!)%fhK9h)%fhP!9hr�)rrVrKr�r�rrUrRr=r�rJr�r�r�rQr�r�r�rCrJrLr�r�r�r�s&       r!�test_dual_rsa_ecc�ThreadedTests.test_dual_rsa_ecc�
s8������(?�(?�@���,�,�Z�8�*-���)?�)?��&��"�"�#<�=�/������(?�(?�@���&�&�':�;��&�&��7�$�N�4�H��
�V��+�+�F�M�M�O�<D�,�F�F�IJ��	�	�4����-�.��}�}�������&C�D�����A��,�,�S�1������r�
�,>�?�
F��V�F�F���V�V�s1�/F+�BF	�F+�F(
�!F(
�#F+�+F<	�4F<	c���[O%c [OO	Q2[
O
[
O2oUO[2[
O
[
O2o[
OUmP	Um
UO[2,QNoSFD�vqV[!UP	Q5oS9^tt^2UO#[$O$2UQ59^tt^2oUO'UO(U2UO+[,UO.12UO12o	UO'UO(U2UO3U	Q2PPP2PPP2J�	[!UP	Q5oS9^tt^2UO#[$O$2QQ59^tt^2oUO5[
O629^tt^2UO+[,UO.12PPP2PPP2PPP2[!UP	Q59^tt^2oU%c[8O:U2L	[=29^tt^2UO5[>29^tt^2UO#[$O$2QQ5PPP2PPP2PPP2[!UP	Q59^tt^2oU%c[8O:U2L	[=29^tt^2UO5[@29^tt^2UO#[$O$2QQ5PPP2PPP2PPP2P!)%fhCK
9h)%fhCJ�9h)%fhCK�9h)%fhCK�9h)%fhCK�9h)%fhCK+9h)%fhCK79h)%fhCKC9h)%fhK�9h)%fhK�9h)%fhP!9h)rr�r�r�zpython.example.orgz.pythontest.netsk�nig.idn.pythontest.net))ukönig.idn.pythontest.net�xn--knig-5qa.idn.pythontest.net)rr)sxn--knig-5qa.idn.pythontest.netr)u(königsgäßchen.idna2003.pythontest.net�.xn--knigsgsschen-lcb0w.idna2003.pythontest.net)rr)s.xn--knigsgsschen-lcb0w.idna2003.pythontest.netr)�.xn--knigsgchen-b4a3dun.idna2008.pythontest.netr)s.xn--knigsgchen-b4a3dun.idna2008.pythontest.netr)!rrormrprqrrVrJr��IDNSANSFILErKr�r�r�r�r�rQr�r�r�r�r�rCrJrLr�r�r�r	r�r�UnicodeError�UnicodeDecodeError)
r�r�r�r��
idn_hostnamesr��expected_hostnamerIr�r�s
&&        r!r��%ThreadedTests.test_check_hostname_idn�
s&���?�?�?��J�J���T�"�����(?�(?�@���&�&�{�3��.�.��!8�!8�9��!�/�/���!%����%�%�j�1�
�
�.3@�.�O�'��t�L�F����(�(�����9H�)�J�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��$�$�V�]�]�_�5I�%�K�K�NO��&�&�s�';�';�<�<��I�I�t�V�[�[�1�2�=�K��
�~�d�C�C�v�$� �9�9�$�?� �]�#�#�
���l�+�+�����
�
��AR��S�
,�	#�
D�
�~�d�C�C�v�$� �9�9�$�?� �]�#�#�
���0�1�1�����
�
�� >�
 �
�
2�	#�
D�C�7J�J�J������=�<�<��K�K�K���V�V��
,�+�+��	#�#�#��
D�C�C��"
2�1��	#�#��
D�C�C�s'�&/N)	�A<N
�N)	�</O&�+(O	�"N>
�5O	�=O&�"P"�+(P"�P	�1'O:
�P	� P"�Q�(Q�6Q		�'P6
�;Q		�Q�N&�N&� 	N)	�)N;
�2N;
�>O�O�		O	�O#
�O#
�	O&�&O7	�/O7	�:P�P�	P	�P
�P
�	P"�"P3	�+P3	�6Q�?Q�Q		�	Q
�Q
�Q�Q-	�%Q-	c	��[2vqoUO[2[OUm[OOUm[UP	P	Q5oS9^tt^2UO[O2UQ59^tt^2oUO[UO12UOQ2PPP2PPP2P![O cGo["O$%c'[&O(O+QS*2Po=KhPo=h[,cgoSO.[.O06wcg["O$%c'[&O(O+QS*2Po=K�Po=hh9h)%fhK�9h)%fhP!9h)Tr�r�z'Use of invalid cert should have failed!z
SSLError is %r
z
socket.error is %r
)r�r�rrr�r�rrUrRrQr�r�r�rCrJrLr�rrormrprqr|rDr��r�r�r�r�rIr�rs&      r!r��#ThreadedTests.test_wrong_cert_tls12�
sJ��4C�3D�0����&�&�x�0�%(�%6�%6��"�),���)?�)?��&�#�"�4�$�
���V��*�*�6�=�=�?�;C�+�E�E�HI�
E��	�	�4����-�.��	�	�C�D�!E��V���<�<�
?��?�?�?��J�J�$�$�%9�A�%=�>����
C��7�7�e�.�.�.���?�?�?��J�J�$�$�%=��%A�B���	
C��E�E���V�V�s��0/G�F2	�!!C%�F2	�G�%F/�9F/�:D;�&D;�6F2	�;F/�F/�	F*�(F*�?&F*�%F2	�*F/�/F2	�2G
�;G
�=G�G	�G	r�c�0�[2vqoUO[2[OUm[OOUm[OOUm[UP	P	Q5oS9^tt^2UO[O2UP
Q59^tt^2oUO[UO12UO[ Q29^tt^2UO#Q2UO%Q2UO#Q2UO%Q2PPP2PPP2PPP2P!)%fhK"9h)%fhK-9h)%fhP!9h)Tr��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�r9rQr�r�r�rCrJr�r|rqr4rRs&     r!r��#ThreadedTests.test_wrong_cert_tls13"s'��3B�3D�0����&�&�x�0�%(�%6�%6��"�),���)?�)?��&�),���)?�)?��&�#�"�4�$�
���V�
�
'�
'��
�
��8@�=B�(�D�D�GH�
�I�I�t�V�[�[�)�*��'�'��������� ����t�����5�6����t���	D��V�
���	D�D���V�V�sP�0F�?AE1	�?AE
�E1	�F�E.�'E.�)E1	�1F
�:F
�<F�F	�
F	c�`````�[O2n[O2n[O2n[OR[
2nUUU1QkoUUUU1Qko[OUQ5oUO2U2UO2P!SO2h9h)c��:�RO2RO2RO2vqUO2RO2RO2P!rB)rDr�rCr�)�newsockr��
listener_gone�listener_readyr�s  ���r!�listener�2ThreadedTests.test_rude_shutdown.<locals>.listenerMsC���
�H�H�J���� ��H�H�J�M�G��M�M�O�
�G�G�I����r#c�H:�RO2[O29^tt^2oUO[R12RO2[	U2oROQ2PPP2P![cKh9h)%fhP!9h)z2connecting to closed SSL socket should have failed)r7r�r�rCr�rLr|)r�r}rrrJr�s  ����r!�	connector�3ThreadedTests.test_rude_shutdown.<locals>.connectorUs|������!������A��	�	�4��,�'��"�"�$�T�/��2�H��I�I�R�S�!���
�����!���s;�(B�A?�$B�?	B
�	B
�
B�B
�
B�B!	�B!	r)	rr6r�rrArCrr5r)r�rrrcrrrJr�sf   @@@@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�B3�3Cc
�L�[O%c [OO	Q2[
O
[
O2oUO[2[
O
[
O2o[UP	Q5oS9^tt^2UO[O2[Q59^tt^2oUO[ UO"12UO%Q2PPP2PPP2P![
O&c�oQoSO)S[
O*2SO-SO.]2SO-SO0S2QSQ0oSO3[5S2S2[6O8Q[6O:2oSO3[5S2S2Po=K�Po=hh9h)%fhK�9h)%fhP!9h)rr�r�zExpected connection failurez&unable to get local issuer certificate�(z|CERTIFICATE_VERIFY_FAILED)z�(
                        certificate verify failed   # OpenSSL
                        |
                        CERTIFICATE_VERIFY_FAILED   # AWS-LC
                    ))rrormrprqrrVrJr�r�rKrQr�r�r�r�rCrJrLr�r�r�r��verify_code�verify_messagerr�rrr)r�r�r�rIr�rr"r
s&       r!�test_ssl_cert_verify_error�(ThreadedTests.test_ssl_cert_verify_errorhs����?�?�?��J�J���T�"�����(?�(?�@���&�&��7��.�.��!8�!8�9��#�N�4�H��
�V��$�$�V�]�]�_�5M�%�O�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�V�s[�)3H�G?	�2D"�H�"G<�6G<�7B;G7�2G?	�7G<�<G?	�?H
�H
�
H�H#	�H#	c��[O%c [OO	Q2[Q2%c*[
[O[OP
2[
[O[OP	2[Q2%c*[
[O[OQ2[Q2%c9[
[O[OP
[O2[
[O[OP	[O2[Q2%c9[
[O[OQ[O2[Q2%c9[
[O[OP
[O2[
[O[OP	[O2[Q2%c9[
[O[OQ[O2[Q2%c:[
[O[OP
[OQ5[
[O[OP	[O[O*Q5[Q2%c<[
[O[OP
[OQ5P!P!)rr�r�)r�)rrormrprqrLr�rrI�PROTOCOL_SSLv3r�r�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#r�c�h�[O%c [OO	Q2[[O[OQ2[[O[OQ[O2[[O[OQ[O2[[O[OP
[OQ5[[O[OP
2P!)rr��r�)
rrormrprqr�rr(r�r�rIr�r�r�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#r�c��[O%c [OO	Q2[[O[OQ2[[O[OQ[O2[[O[OQ[O2[Q2%c*[[O[OP
2[[O[OP
[OQ5P!)rr�r�r,)rrormrprqr�rr�r�r�rLr(rIr�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#r;c��[O%c [OO	Q2[[O[OQ2[Q2%c*[[O[OP
2[[O[OP
[OQ5[[O[OQ2[[O[OP
2[[O[OP
2P!)r�TLSv1.1r�r,)
rrormrprqr�rr�rLr(rIr�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#rUc��[O%c [OO	Q2[[O[OQ[O[O*[O[O*Q5[Q2%c*[[O[OP
2[[O[OP
[OQ5[[O[OQ2[Q2%cS[[O[OP
2[[O[OP
2[Q2%cU[[O[O P
2[[O [OP
2P!P!)rr�)r�r�r�r,r�r�)rrormrprqr�rr�r�r�rLr(rIr�rOr�r�r�s&r!�test_protocol_tlsv1_2�#ThreadedTests.test_protocol_tlsv1_2�s9���?�?�?��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��,�-�-��s�3�3�S�5G�5G��O��s�1�1�3�3G�3G��O��.�/�/��s�3�3�S�5I�5I�5�Q��s�3�3�S�5I�5I�5�Q�0r#c�"�Q
o[[P	P	P	Q5oP
oS9^tt^2[O2oUOP	2UO	[
UO12[O%c [OOQ2SFCD�o[O%c'[OOQU*2U%c#WOU2UO2oL"UOU2UOQ2oUO2O!2oUQ6XcdUO#Q2%cM[O%c'[OOQU*2[%U2oP	oCJUQ6XciUO#Q2%cR[O%c'[OOQ	U*2WO'2oP
oCJ�[O%fCJ�[OOQ
U*2CJ�	[O%c [OOQ2U%cWOQ2LUOQ2U%cWO)2LUO)2PPP2P!)%fhP!9h)�msg 1rr)rr�rrr�r�sokz/ client:  read %r from server, starting TLS...
z- client:  read %r from server, ending TLS...
z client:  read %r from server
r�r�)r:sMSG 2rsMSG 3smsg 4rsmsg 5smsg 6)rQrr�rr�rCrJrrormrprqr4r�r}rr<r�r�r@r�)	r��msgsrI�wrappedr�r�rnr�r"s	&        r!�
test_starttls�ThreadedTests.test_starttls�s���c��#�H�48�+/�59�;����
�V��
�
��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�V�sc�AK=�;K=�=-K=�+A(K=�K=�+K=�<K=�>K=�K=�+AK=�?AK=�&K=�'*K=�!K=�=L	�L	c�V�[U[Q5o[O%c [O
O
Q2[[Q29^tt^2oUO2oPPP2PoQUOQ0o[O[Q5o[OO!VVQ5oUO#2O%Q2oU%cr['U2]6�cbUO['U22o[O%c2[O
O
Q[)U2U1*2UO+2UO-WU2P!)%fhCK9hSO+2h9h)	r�r�rbzhttps://localhost:z/test_ssl.py�r�rPzcontent-lengthz/ client: read %d bytes from remote server '%s'
)r�r�rrormrprqr3rr4rJrr�r��urllibr_�urlopen�infor�r\rMr�r�)r�rIr6rPrR�urlr��dlens&       r!�test_socketserver�ThreadedTests.test_socketserver s$��"�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�s0� F�&F�-F�=/F�-1F�F	�F	�F(c�\�[O%c [OO	Q2Qo[[2oS9^tt^2[[O22oUOQUO12[O%c'[OO	QU*2UO	U2UO2o[O%c'[OO	QU*2VAO26wcKUOQUQ*[U2UQ*O2[U21*2UO	Q2[O%c [OO	Q2UO2[O%c [OO	Q	2PPP2P!)%fhP!9h)
rr�rBr�r�r�r�r�r�z client:  connection closed.
)rrormrprqrerr�r�r�rJr4r<rLrMr�)r�r�rIr�r�s&    r!�test_asyncore_server�"ThreadedTests.test_asyncore_server:sS���?�?�?��J�J���T�"���#�H�-��
�V� �����1�A�
�I�I�{�F�K�K�0�1������
�
� � �/�&�8�:�
�G�G�F�O��f�f�h�G������
�
� � �!6��!@�A��,�,�.�(��	�	�K��s�|�S��\��c�{�(�(�*�C��K�9�9�:�
�G�G�I�������
�
� � �!B�C�
�G�G�I������
�
� � �!A�B�)�V�V�V�s4�AH�$AH�9H�;A0H�,AH�1H�H+	�#H+	c�D`�[O%c [OO	Q2[[[O[O[P	P
Q5oS9^tt^2[[O2P
[[[OQ5nRO[UO12U1QkoU1QkoQROP	,[ 1QRO"P
Q,[ 1QRO$P	,Q	1,oQ
RO&P	,1QRO(P
Q,1QUP	,1Q
UP
,1,oQoSFD�vqxq�oVg*O+Q2oUU,U
N3o
QO-U2oUO/V�U2UQ5RO12oV�O326wcGUO5QO-VQ*[!U2UQ*[!U2Q52J�J�	SFD�vooq�Vg*O+Q2oROU2UU
oV�O326wcGUO5QO-VQ*[!U2UQ*[!U2Q52J�J�	QoROU2[=[!U22oUO/RO1PU2[!U22UO/UU2[>dc[>O@[!U2*oUOCU2oRO%U2UO/RO12U2UOE[FROH2UOE[FROJQ,2UOE[FROL]d2UOE[FRON[=]d2,2RO	Q2UOE[6RO&P2UOE[6RO0P2ROQ2PPP2P![6coS	%c"SO5QO-SQ52[9S2O;S2%f*SO5QO-SSQ52Po=CJ�Po=CJ�Po=hh9h[6c�oS	%c"SO5QO-SQ52[9S2O;S2%f#SO5QO-SSQ52RO12Po=CJwPo=hh9h)%fhP!9h)r�r0r/r1r�r�rr�r�r�c�H:�[Q2oROU2oUPU!��sd)r�r~)�brtr�s  �r!�
_recv_into�0ThreadedTests.test_recv_send.<locals>._recv_intojs&����i�(�����A�����%�y� r#c�L:�[Q2oROU2vqUPU!rP)r�r�)rRrtr�r�s   �r!�_recvfrom_into�4ThreadedTests.test_recv_send.<locals>._recvfrom_intoos)����i�(���o�o�a�0�����%�y� r#r�r�zsome.addressr�c��P!rBrC)r�s&r!r��.ThreadedTests.test_recv_send.<locals>.<lambda>xs��4r#r}rr~r��PREFIX_�asciizsending with {}�r"zpWhile sending with <<{name:s}>> bad data <<{outdata:r}>> ({nout:d}) received; expected <<{indata:r}>> ({nin:d})
r�)r r��noutr��ninz>Failed to send with method <<{name:s}>>; expected to succeed.
rzFMethod <<{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.
rr�))rrormrprqrQrrr�rJr�r�r�rCrJr�rMr�r�r}rr��formatr�r4r<rLr�rGr�r��ctypes�c_ubyte�from_buffer_copyr�r�r�r�r�r�r�)r�rIrSrV�send_methods�recv_methods�data_prefix�	meth_name�	send_methr�r_�ret_val_methr�r�r"r�r�	recv_methr��buffer�ubyte�	bytesliker�s&                     @r!�test_recv_send�ThreadedTests.test_recv_sendWs�����?�?�?��J�J���T�"�#�H�-0�]�]�03�0G�0G�,4�+/�5:�<���V� �����,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�{��F��CI�C��1�&2�>?K�:�	�9�n�%�1�9�9�'�B����F�F�6�N�'��.�G��,�,�.�0��	�	�B�BH�&�%.���%(��\�'-�c�{��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�V�s��7C1V�)AQ-�AQ-�'V�.+S9�AS9�A1V�EV�-	S6�7S6�8S1�AS1�"S1�#V�1S6�6V�9	V�V�V�AV�
2V�?V�V�V�V	�V	c��[[2oUOU2[O[
UO12oUOUO2[UP
Q5oUOUO2UOQ2UOUO]2Q2UOUO]2Q2UOUO2Q2UOP
2UOUO]2Q2UOUO[!22]2P!)F�rrr#)rQrrFr�rrCrJr�r�r�r�r�r}r4rr~r�)r�rIr�s&  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��[[2oUOU2[O[
UO12oUOUO2[UP
Q5oUOUO2UOQ2[OQ]],2oUOUOU2]2UO[U2Q*Q2QQ[2oUOQ2U]2oUOUOU2]2UO[U2Q2P!)Frqr�I:Nr6Nc�(`�\sQsQsnQsQsUsP!)�;ThreadedTests.test_recv_into_buffer_protocol_len.<locals>.Bi�c��]]*P!�rzrCr�s&r!�__len__�CThreadedTests.test_recv_into_buffer_protocol_len.<locals>.B.__len__s���!��r#rC)r�rUrVrWrzr]r^r_s@r!�Brw�s����
�
r#r|sdata)rQrrFr�rrCrJr�r�r�r��arrayr�r~r�r�)r�rIr�r�r|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���1�	�	�	�	
���w����d��������S�)�1�-�����s��[�1r#c
�```�[[[O[O[P	P
Q5oU9^tt^2[[O2P
[[[OQ5nRO[UO12ROP
2[Q2nUU1QkoUO[O[O1U2ROP	2RO2PPP2P!)%fhP!9h)TrMrNi c�.:�ROR2Jr�)r�)r�r�s��r!�fill_buffer�8ThreadedTests.test_nonblocking_send.<locals>.fill_buffers�����F�F�3�Kr#)rQrrr�rJr�r�r�rCrJrr�r�rYr�r�)r�rIr�r�r�s&  @@r!�test_nonblocking_send�#ThreadedTests.test_nonblocking_sends����#�H�-0�]�]�03�0G�0G�,4�+/�5:�<���V� �����,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�V�s�CD�D-	�%D-	c��```�[O[O2nQo[OR2o[O
2nP
nUUU1Qko[OUQ5oUO2RO2[O[O2oUOQ2UOV12UO[Q[U2UO2[O[O2o[U2oUOQ2UO[QUOV12UO2P	nUO2RO2P!WO2h9hSO2h9hP	nSO2RO2h9h)rBc�.:�RO2RO2,oR%fO[OR,,,Q2vqoRU7fJ.UORO	2]*2JVSFDoUO2J	P!)r�)rDr�rXr�rCr�)�connsrG�wrr��finishrI�starteds     ���r!�serve�3ThreadedTests.test_handshake_timeout.<locals>.serve,sj����M�M�O��K�K�M��E�� �-�-���"�b�#�>���a��Q�;��L�L������!3�4����
�
��r#rr�z	timed out)r�rprrArr6rr5r7r�r�r�rEr�r�r)	r�r�rJr�rcr�r�rIr�s	&     @@@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%�<G�
A#F:�0G�%F7�7G�:G�G�$G3c�f`
```
�[2vqo[O[O2n
Qo[OR
2oUOR
P	Q5n
UO
R
O2[O2n
PnPnU
UUU
1Qko[OUQ5oUO2R
O2UO[O2UQ5oUOV512UOQ2UO2UO!2o	UO#2UO%2RO#2R
O#2UO'R[(O*2UO-RU	2P!)rBrfc�:�RO2RO2RO2vnnRORO	]22P!)r6)rDr�rCr�r})�evt�peer�remoterIs����r!r��/ThreadedTests.test_server_accept.<locals>.servebs8����M�M�O��G�G�I�!�=�=�?�L�F�D��K�K����A��'r#rr�r)r�r�rprrAr�r�rrr6rr5r7r�r�r}r�r�rr�rr�r�)r�r�r�r�r�rJr�rcrt�client_addrr�r�r�rIs&         @@@@r!�test_server_accept� ThreadedTests.test_server_acceptUs@���,;�+<�(�
�����v�~�~�.�����&�&�v�.���'�'��D�'�A������*�*�+��o�o�������	(�	(�
���E�*��	���	����
��'�'��M�M�O�X�(�
��	����'�(����G�����
��(�(�*������	���������������f�c�m�m�4�����{�+r#c	���[O[O2oP
UmUO	[
O
229^tt^2oUO
[29^tt^2oUO2PPP2UOWOO[O2PPP2P!)%fhKN9h)%fhP!9hr�)
rrVrKr�r�r�r�r|rLr�rnrD�ENOTCONN�r�r�r�r�s&   r!�test_getpeercert_enotconn�'ThreadedTests.test_getpeercert_enotconn}s����.�.��!8�!8�9��!&���
�
 �
 �����
1�
1�T��"�"�7�+�+�r�� � �"�,����R�\�\�/�/����@�2�
1�+�+��2�
1�
1��0�C �6C
	�<C �
C
�C
�C � C1	�)C1	c	���[O[O2oP
UmUO	[
O
229^tt^2oUO
[29^tt^2oUO2PPP2UOWOO[O2PPP2P!)%fhKN9h)%fhP!9hr�)
rrVrKr�r�r�r�r|r�r�rnrDr�r�s&   r!�test_do_handshake_enotconn�(ThreadedTests.test_do_handshake_enotconn�s����.�.��!8�!8�9��!&���
�
 �
 �����
1�
1�T��"�"�7�+�+�r��!�!�#�,����R�\�\�/�/����@�2�
1�+�+��2�
1�
1�r�c��[2vqo[OOUmUOQ2UOQ2[
UQ59^tt^2oUO[O2UQ59^tt^2oUO[29^tt^2UO[UO12PPP2PPP2PPP2UOQWO]*2UO!WO#22UO!UO%22P!)%fhK�9h)%fhK�9h)%fhK�9h)�AES128�AES256rPr��NO_SHARED_CIPHER)r�rrrUrRr=rQr�r�r�r|r�rCrJr�rr�r�r�rRs&     r!�test_no_shared_ciphers�$ThreadedTests.test_no_shared_ciphers�s��3B�3D�0���),���)?�)?��&��"�"�8�,��"�"�8�,�
��
7�
7�6��+�+�F�M�M�O�<D�,�F�F�IJ��&�&�w�/�/��I�I�t�V�[�[�1�2�0�F�8�
	
�
�
�(�&�*<�*<�Q�*?�@����!�(�(�*�%����!�'�'�)�$�	0�/��F�F��8�
7�sN�$/E4�E!	�1"E
�E!	�E4�E�E�E!	�!E1
�*E1
�,E4�4F	�=F	c	��[O[O2oP
Um[OUm[
[[OP
Q59^tt^2oUO[O229^tt^2oUOUO2P2UOUOP2UO[UO 12UO#UO2Q2PPP2UOWOP2UOUO2P2PPP2P!)%fhKV9h)%fhP!9h)F)r/r�r�)rrVrKr�r�r�rQrrJr�r�r�rYrkr�rCrJr�)r�r�rIr�s&   r!�test_version_basic� ThreadedTests.test_version_basic�s��
�.�.��!8�!8�9��!&���!�m�m���
��,/�,C�,C�',�.�.�17��$�$�V�]�]�_�5�5���
�
�a�i�i�k�4�0��
�
�a�i�i��.��	�	�4����-�.�� � �����i�8�	6�

�M�M�!�)�)�T�*��M�M�!�)�)�+�t�,�.�.�6�5��.�.�.�s2�)-E5�A>E"	�AE5�"E2
�+E2
�-E5�5F	�>F	c	�*�[2vqo[OOUm[UQ59^tt^2oUO
[O2UQ59^tt^2oUO[UO12UOUO2]*.Ql2UOUO2Q2PPP2PPP2P!)%fhK9h)%fhP!9h)rPr�r�>�TLS_AES_128_GCM_SHA256�TLS_AES_256_GCM_SHA384�TLS_CHACHA20_POLY1305_SHA256)r�rrr�r9rQr�r�r�rCrJr�r�r�rYrRs&     r!�test_tls1_3�ThreadedTests.test_tls1_3�s���3B�3D�0���),���)?�)?��&�
��
7�
7�6��+�+�F�M�M�O�<D�,�F�F�IJ��	�	�4����-�.��
�
�a�h�h�j��m�.��
� � �����i�8�F�8�
7�F�F��8�
7�
7�s1�/D�1A+C.	�D�.C>
�7C>
�9D�D	�
D	c	��[2vqo[OOUm[OO
Um[OO
Um[OO
Um[UQ59^tt^2oUO[O2UQ59^tt^2oUO[UO12UOUO2Q2PPP2PPP2P!)%fhK9h)%fhP!9h)rPr�r�)r�rrr�r9rUrRrQr�r�r�rCrJr�rYrRs&     r!�test_min_max_version_tlsv1_2�*ThreadedTests.test_min_max_version_tlsv1_2�s���4C�3D�0���),���)=�)=��&�),���)?�)?��&�),���)?�)?��&�),���)?�)?��&�
��
7�
7�6��+�+�F�M�M�O�<D�,�F�F�IJ��	�	�4����-�.�� � �����i�8�F�8�
7�F�F��8�
7�
7�s1�/D5�AD"	�D5�"D2
�+D2
�-D5�5E	�>E	c	��[2vqo[OOUm[OO
Um[OOUm[OOUm[V2[UQ59^tt^2oUO[O2UQ59^tt^2oUO[UO12UOUO!2Q2PPP2PPP2P!)%fhK9h)%fhP!9h)rPr�r3)r�rrr�r9rUrRr;r@rQr�r�r�rCrJr�rYrRs&     r!�test_min_max_version_tlsv1_1�*ThreadedTests.test_min_max_version_tlsv1_1�s���4C�3D�0���),���)=�)=��&�),���)?�)?��&�),���)=�)=��&�),���)?�)?��&��N�;�
��
7�
7�6��+�+�F�M�M�O�<D�,�F�F�IJ��	�	�4����-�.�� � �����i�8�F�8�
7�F�F��8�
7�
7�s1�*/E�AD-	�E�-D=
�6D=
�8E�E	�	E	c�8�[2vqo[OOUm[OOUm[OOUm[OOUm[V2[UQ59^tt^2oUO[O2UQ59^tt^2oUO[O29^tt^2oUO[UO12PPP2UO![#WO$2Q2PPP2PPP2P!)%fhKG9h)%fhK-9h)%fhP!9h)rPr�z
(alert|ALERT))r�rrrUrRr9r�r@rQr�r�r�r�r�rCrJrrGrnrs&      r!�test_min_max_version_mismatch�+ThreadedTests.test_min_max_version_mismatch�s��4C�3D�0���),���)?�)?��&�),���)?�)?��&�),���)=�)=��&�),���)=�)=��&��N�;�
��
7�
7�6��+�+�F�M�M�O�<D�,�F�F�IJ��&�&�s�|�|�4�4���I�I�t�V�[�[�1�2�5�� � ��Q�[�[�!1�?�C�	F�8�
7�5�4��F�F��8�
7�
7�sN�*/F�(E5	�"E"
�#-E5	�F�"E2�+E2�-E5	�5F
�>F
�F�F	�F	c	�j�[2vqo[OOUm[OOUm[OOUm[
V2[UQ59^tt^2oUO[O2UQ59^tt^2oUO[UO12UOUO2Q2PPP2PPP2P!)%fhK9h)%fhP!9h)rPr�r�)r�rrr�r9rRr@rQr�r�r�rCrJr�rYrRs&     r!�test_min_max_version_sslv3�(ThreadedTests.test_min_max_version_sslv3�s���3B�3D�0���),���)=�)=��&�),���)=�)=��&�),���)=�)=��&��N�;�
��
7�
7�6��+�+�F�M�M�O�<D�,�F�F�IJ��	�	�4����-�.�� � �����g�6�F�8�
7�F�F��8�
7�
7�s1�/D!�:AD	�<D!�D
�D
�D!�!D2	�*D2	c	���[2vqo[OOUm[UQ59^tt^2oUO
[O2UQ59^tt^2oUO[UO12UOQUO2]*2PPP2PPP2P!)%fhK9h)%fhP!9h)rPr��ECDH)
r�rrrUrRrQr�r�r�rCrJr�r�rRs&     r!�test_default_ecdh_curve�%ThreadedTests.test_default_ecdh_curves���4C�3D�0���*-���)?�)?��&�
 ��
7�
7�6��+�+�F�M�M�O�<D�,�F�F�IJ��	�	�4����-�.��
�
�f�a�h�h�j��m�4�F�8�
7�F�F��8�
7�
7�s1�/C�1A	C	�:C�C
�C
�C�C0	�(C0	r�r�c
�2�[O%c [OO	Q2[2vqo[OOUm	[UP	P
Q5oS9^tt^2UO[O2UQ59^tt^2oUO[UO12UO!Q2o[O%c/[OO	QO#U22UO%U2UO'2Q6XcUO)[+U2]02LUO)[+U2]2UO	Q2UO-2O/2oUO)U[1U2O3Q22PPP2UO[O2UQ59^tt^2oUO[UO12UO!Q2o[O%c/[OO	QO#U22UO5WU2UO%U2UO'2Q6XcUO)[+U2]02LUO)[+U2]2UO	Q2UO-2O/2oUO)U[1U2O3Q22PPP2PPP2P!)%fhCK�9h)%fhK.9h)%fhP!9h)	rr�r�r�z! got channel binding data: {0!r}
r�sCB tls-unique
rz(got another channel binding data: {0!r}
)rrormrprqr�rrrUrRrQr�r�r�rCrJr�r`r�rYr�rMr4rr�r��assertNotEqual)	r�r�r�r�rIr��cb_data�peer_data_repr�new_cb_datas	&        r!r��-ThreadedTests.test_tls_unique_channel_bindings����?�?�?��J�J���T�"�3B�3D�0���*-���)?�)?��&�#�N�+/�5:�<���V��+�+��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�V�sl�;/N�*AM	�3AM	�BM	�6N�
AM2	�A%M2	�<BM2	�N�M/
�'M/
�)	N�2N
�;N
�=N�N	�N	c��[2vqo[VP	P	UQ5o[O%c6[O
O
QOUQ*22UOUQ*.Ql2P!)T�r�rr�z got compression: {!r}
r�>N�RLE�ZLIB)	r�r�rrormrprqr`r��r�r�r�r�r�s&    r!�test_compression�ThreadedTests.test_compressionTse��3B�3D�0���"�>�*.��,4�6���?�?�?��J�J���7�>�>�u�]�?S�T�U��
�
�e�M�*�,C�Dr#r+z*ssl.OP_NO_COMPRESSION needed for this testc��[2vqoU9O[O*tmU9O[O*tm[	VP	P	UQ5oUOUQ*P2P!)Tr�r�)r�r�rr+r�r�r�s&    r!�test_compression_disabled�'ThreadedTests.test_compression_disabled]si��4C�3D�0������#�"7�"7�7�����#�"7�"7�7��"�>�*.��,4�6��	
�
�
�e�M�*�D�1r#c��[2vqoU9O[O*tm[	VP	P	UQ5P!�Tr��r�r�rr�r��r�r�r�r�s&   r!�test_legacy_server_connect�(ThreadedTests.test_legacy_server_connecths8��3B�3D�0������#�">�">�>���>�*.��,4�	6r#c��[2vqoU9O[O&*tm[	VP	P	UQ5P!r�r�r�s&   r!�test_no_legacy_server_connect�+ThreadedTests.test_no_legacy_server_connectos;��3B�3D�0������3�#?�#?�"?�?���>�*.��,4�	6r#c��[2vqo.Qlo[V2%c[V$2%fUOQ2[OO
UmUO[2UOQ2[OO
Um[VP	P	UQ5oUQ*]*oUOQ2oUOU2%f"UOQU]**2P!P![c [%cSOQ2gh9h)	�ADHz#libssl doesn't support ephemeral DHr7�kEDHr�r�r�zNon-DH key exchange: >r��DHE�EDH)r�r�r=rrrUrRr8r9r:r;r=r�r�r�rL)r�r�r�r��dhe_aliasesr�r��partss&       r!�test_dh_params�ThreadedTests.test_dh_paramsvs��4C�3D�0���+��!�.�>�>�%�n�B�B��M�M�?�@�),���)?�)?��&�	��)�)�&�1�
	�"�"�6�*�),���)?�)?��&�"�>�*.��,4�6���x���#�����S�!���'�'��.�.��I�I�-��q�	�9�:�/���	��~��
�
�B�C��	�s�&D�	D?�D?�,D?c
���[2vqoUOQ2UOQ2[OO
Um[VP	P	UQ5o[2vqoUOQ2UOQ2[OO
Um[VP	P	UQ5o[2vqoUOQ2UOQ2UOQ2[OO
UmUO[O29^tt^2[VP	P	UQ5PPP2P!)%fhP!9h)�	secp384r1zECDHE:!eNULL:!aNULLr�rR)
r�rUr=rrrUr9r�r�r�r�s&    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�E�E-	�%E-	c
��[2vqoUOQ2[OOUm[
VP	P	UQ5o[%cUOUQ*Q2[2vqoUOQ2[OOUm[
VP	P	UQ5o[%cUOUQ*Q2[2vqoUOQ2UOQ2[OOUmUO[O29^tt^2[
VP	P	UQ5PPP2P!)%fhP!9h)r�r�r�rR)r�r�rrr�r9r�r�r�r�r�r�s&    r!�test_groups�ThreadedTests.test_groups�s3��3B�3D�0����!�!�+�.�),���)?�)?��&�"�>�*.��,4�6��*�)����U�7�^�[�9�4C�3D�0����!�!�+�.�),���)?�)?��&�"�>�*.��,4�6��*�)����U�7�^�[�9�4C�3D�0����!�!�,�/��!�!�+�.�),���)?�)?��&�
�
�
�s�|�|�
,�
,��~�&*�T�(0�
2�-�
,�
,�
,�s�E3�3F	�<F	r�c�@�[2vqo[VP	P	UQ5o[%cUOUQ*2Qo[[Q5vqoUOU2[VP	P	UQ5o[%cUO
UQ*U2P!P!)Tr�r��rsa_pss_rsae_sha384�r�)r�r�r�r�r�r�r�)r�r�r�r�r��sigalgs&     r!�test_client_sigalgs�!ThreadedTests.test_client_sigalgs�s���4C�3D�0���"�>�*.��,4�6��+�*����e�O�4�5�'����8�	1����)�)�&�1�"�>�*.��,4�6��+�*����U�?�3�V�<�+r#c
�.�[[Q5vqoUOQ2UOQ2UO[O
[[129^tt^2[VP	P	UQ5PPP2P!)%fhP!9h)r�r�r�r�)	r�r�r�r�rr�r�r�r�r�s&   r!�test_client_sigalgs_mismatch�*ThreadedTests.test_client_sigalgs_mismatch�s���
��8�	1����)�)�*?�@��)�)�*?�@�
�
�
��L�L� �
�
 
���
�~�&*�T�(0�
2�����s�)B�B	�B	r�c�X�Qo[2vq#oUOU2[V#P	P	UQ5o[%cUO	UQ*U2[2vq#oUOU2[V#P	P	UQ5o[%cUO	UQ*U2P!P!)r�r�r�)r�r�r�r�r�)r�r�r�r�r�r�s&     r!�test_server_sigalgs�!ThreadedTests.test_server_sigalgs�s���'��3B�3D�0����)�)�&�1�"�>�*.��,4�6��+�*����U�?�3�V�<�4C�3D�0����)�)�&�1�"�>�*.��,4�6��+�*����U�?�3�V�<�+r#c
��[2vqoUOQ2UOQ2UO[O29^tt^2[VP	P	UQ5PPP2P!)%fhP!9h)r�r�r�)r�r�r�rr�r�r�s&   r!�test_server_sigalgs_mismatch�*ThreadedTests.test_server_sigalgs_mismatchsf��4C�3D�0����)�)�*?�@��)�)�*?�@�
�
�
�s�|�|�
,�
,��~�&*�T�(0�
2�-�
,�
,�
,�s�A2�2B	�;B	c�r�[2vqo[VP	P	UQ5oUOUQ*P2P!)Tr�r�)r�r�r�r�s&    r!�test_selected_alpn_protocol�)ThreadedTests.test_selected_alpn_protocols9��3B�3D�0���"�>�*.��,4�6��	
�
�
�e�2�3�T�:r#c��[2vqoUOQQ,2[VP	P	UQ5oUOUQ*P2P!)rS�barr�r�)r�r*r�r�r�s&    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
�<�,QNoQQ,Q1QQ,Q1Q,Q1QQ,P1,oSFD�vq4[2vqVoUOU2UOU2[UUP	P	UQ5oQ[U28Q[U28Q[U28Q	0o
UQ
*oUO
V�V�Q1*2[UQ*2%cUQ*P*LQ
oUO
V�V�Q1*2J�	P![Oc
o	S	oPo	=	K�Po	=	hh9h)rSr��	milkshakezhttp/3.0zhttp/4.0r�zfailed trying z	 (s) and z (c).
was expecting z, but got %s from the %sr�rtr��nothingrI)rSr�r)r�r*r�rr�rGr�rM)
r��server_protocols�protocol_tests�client_protocolsrr�r�r�r�rr"�
client_result�
server_results
&            r!r��!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:�:D�D�D�Dc��P!rBrCr�s&r!�test_npn_protocols� ThreadedTests.test_npn_protocolsMs�r#c�\�[O[O2oUO[2[O[O2oUO[
2[O[O2oUO[2VU1!rB)	rrVrJr�r�r�rKr�r�)r�r��
other_contextr�s&   r!�sni_contexts�ThreadedTests.sni_contextsPst������(?�(?�@���&�&��7����s�'>�'>�?�
��%�%�&6�7�����(?�(?�@���,�,�Z�8��n�<�<r#c�R�UQ*oUOQU11UQ*2P!)r�rr)r�)r�r�r r�s&&& r!�check_common_name�ThreadedTests.check_common_nameYs&���Z� ���
�
��d�+�-�t�I��?r#c��``�,nUO2vonoP
UmUU1QkoUOU2[V!P	QQ5oUO	RQU1,2UOUQ2,n[V!P	PQ5oUO	RPU1,2UOU[2,nUOP2[V!P	QQ5oUOU[2UO	R,2P!)Fc�H:�ROV12Ud
RUmP!P!rB)r�r�)r}r~r�callsr
s&&&��r!r��6ThreadedTests.test_sni_callback.<locals>.servername_cbcs%����L�L�+�7�8��&�#0�� �'r#�supermessage�r�r�r'�notfunny)rr�r_r�r�rr�)r�r�r�r�r�rr
s&    @@r!r`�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	�D�UO2vqoQoUOU2UO[O29^tt^2o[V1P
QQ5oPPP2UO
WOOQ2P!)%fhK89h)c�$�[O!rB)r�ALERT_DESCRIPTION_ACCESS_DENIEDr�s&&&r!�cb_returning_alert�AThreadedTests.test_sni_callback_alert.<locals>.cb_returning_alert�s���6�6�6r#rr�TLSV1_ALERT_ACCESS_DENIED)	rr_r�rr�r�r�rnr)r�r�r
r�rr�r�s&      r!�test_sni_callback_alert�%ThreadedTests.test_sni_callback_alert�s~��8<�8I�8I�8K�5��~�	7��.�.�/A�B�
�
�
�s�|�|�
,�
,��&�~�.3�0>�@�E�-�	
������,�,�.I�J�	-�
,�s�B�B	�B	c��UO2vqoQoUOU2[O29^tt^2oUO	[
O29^tt^2o[V1P
QQ5oPPP2QoUOWOOU2UOUOO[2PPP2P!)%fhKl9h)%fhP!9h)c��]]*P!ryrCr�s&&&r!�
cb_raising�;ThreadedTests.test_sni_callback_raising.<locals>.cb_raising�s��
�a�C�Cr#rrzL(TLS_ALERT_HANDSHAKE_FAILURE|SSLV3_ALERT_HANDSHAKE_FAILURE|NO_PRIVATE_VALUE))rr_r�catch_unraisable_exceptionr�rr�r�rrnrr��
unraisable�exc_type�ZeroDivisionError)	r�r�r
r�r%�catchr�r�r
s	&        r!�test_sni_callback_raising�'ThreadedTests.test_sni_callback_raising�s���8<�8I�8I�8K�5��~�	��.�.�z�:�
�
/�
/�
1�
1�U��"�"�3�<�<�0�0�B�*�>�27�4B�D��1�*�E�
���R�\�\�0�0�%�8����U�-�-�6�6�8I�J�2�
1�0�0��2�
1�
1�s1�(C4�.C!	�=AC4�!C1
�*C1
�,C4�4D	�=D	c��UO2vqoQoUOU2[O29^tt^2oUO	[
O29^tt^2o[V1P
QQ5oPPP2UOWOOQ2UOUOO[2PPP2P!)%fhKj9h)%fhP!9h)c��Q!r8rCr�s&&&r!�cb_wrong_return_type�OThreadedTests.test_sni_callback_wrong_return_type.<locals>.cb_wrong_return_type�s��r#rr�TLSV1_ALERT_INTERNAL_ERROR)rr_rr'r�rr�r�r�rnrr(r)r�)r�r�r
r�r0r+r�r�s&       r!�#test_sni_callback_wrong_return_type�1ThreadedTests.test_sni_callback_wrong_return_type�s���9=�8I�8I�8K�5��~�	��.�.�/C�D�
�
/�
/�
1�
1�U��"�"�3�<�<�0�0�B�*�>�27�4B�D��1�
���R�\�\�0�0�2N�O����U�-�-�6�6�	�B�2�
1�0�0��2�
1�
1�s1�(C2�.C	�=AC2�C/
�(C/
�*C2�2D	�;D	c�`	�[2vqoUOQ2UOQ2,QNo[VUQ5oUQ*]*oUO[	U2]2SFDXvn	qx[
9PIcU	1QkU2D%fJP	L	P
LU	1QkU22%cJGUO
R	2JZ	P!)z
AES128:AES256zAES256:eNULL�r�r�c3�8:�SF �D
pR7w�	J	P!3hrBrC)r~�algr s& �r!r�4ThreadedTests.test_shared_ciphers.<locals>.<genexpr>�s��m���m�s�d�{�m�s�)r�zAES-256�TLS_CHACHA20�TLS_AES)r�r=r��
assertGreaterrM�anyrL)
r�r�r�r��
expected_algsr�r��tls_version�bitsr s
&        @r!�test_shared_ciphers�!ThreadedTests.test_shared_ciphers�s����3B�3D�0����"�"�?�3��"�"�>�2�
�
�#�>�,4�6���/�0��3�����3�w�<��+�'.�#�D�+��3�<�m�<�3�3�3�<�m�<�<�<��	�	�$��(/r#c��[2vqo[UP
Q5oU9^tt^2UO[O2UQ5oUO	[
UO12UO2UO[UOQ2UO[UOQ2PPP2P!)%fhP!9h)Fr�r�r�shello)r�rQr�r�r�rCrJr�r�r�r4rqrRs&     r!�,test_read_write_after_close_raises_valuerror�:ThreadedTests.test_read_write_after_close_raises_valuerror�s���3B�3D�0���#�N�5�I��
�V��*�*�6�=�=�?�;C�+�E�A�
�I�I�t�V�[�[�)�*�
�G�G�I����j�!�&�&�$�7����j�!�'�'�8�<��V�V�V�s�BC
�
C	�C	c
�F�Q
o[[OQ29^tt^2oUOU2PPP2UO	[O
[O2[
2vq4oU9O[[Q]2*tm[UP
Q5oS9^tt^2[O[UO129^tt^2oUOVuQ59^tt^2o[ O"%c1UO$O'2o	[)QU	%cQLQ2[[OQ29^tt^2o
UO+U
2PPP2UO-UO/Q	2U2PPP2PPP2PPP2P!)%fhCK�9h)%fhK_9h)%fhKI9h)%fhKT9h)%fhP!9h)r{�wb�OP_ENABLE_KTLSr�r�zkTLS is�	available�unavailabler@r�sxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx)r3rr�rqr�r�r�r�rHrrQr�rrCrJr�rrork�uses_ktls_for_sendr!�sendfiler�r})r��	TEST_DATAr6r�r�r�rIr��ssock�	ktls_used�files&          r!�
test_sendfile�ThreadedTests.test_sendfile�si���	�
�)�"�"�D�
)�
)�Q�
�G�G�I��*����	�(�(�)�*:�*:�;�3B�3D�0������'�#�/?��"C�C��#�N�5�I���V�V�-�-�t�V�[�[�.A�B�B�d��+�+��,�����?�?�?� %�
�
� @� @� B�I��!�'0��m���)�*�*�D�1�1�T��N�N�4�(�2�� � ����D�!1�9�=��C�V�V�*�
)�
)��&2�1�����C�B��V�V�V�s��G�:/H�)G<	�G)
�'G)
�*G)
�-G�?)G)
�(G<	�0H�G	�G	�G&�G&�!G)
�)G9�2G9�4G<	�<H
�H
�H�H 	�H 	c��[2vqo[OOUm[VUQ5oUQ*oUO
UO2UOUO]2UOUO]2UO
UO2UOUO]2UOUQ*2UO2oUOUQ*]2UOUQ*]2[VVSQ5oUO2oUOUQ*]2UOUQ*]2UO
UQ*2UQ*oUOUOUO2UOVu2UO!Vu2UO#UOUO2UO#UOUO2[VUQ5oUOUQ*2UQ*oUO%UOUO2UO%V�2UO2oUOUQ*]2UOUQ*]2[VVSQ5oUO
UQ*2UQ*o	UOU	OUO2UOV�2UO#U	OUO2UO#U	OUO2UO2oUOUQ*]2UOUQ*]2P!)r6r�r�rCrF)r�r�)r�rrrUrRr�r��idr<rwr��
has_ticket�ticket_lifetime_hintr�rJr��assertIsNotr�r�)
r�r�r�r�r�r��	sess_stat�session2�session3�session4s
&         r!�test_session�ThreadedTests.test_session�s���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�r�[2vqo[2voo[OOUm[OOUm[UP
Q5oS9^tt^2UO
[O2UQ59^tt^2oUOUOP2UOUOP2UO[UO12UOoUOU2UO[ 29^tt^2o	["Um	PPP2UO[%W	O&2Q2PPP2UO
[O2UQ59^tt^2oUO[UO12UO[(29^tt^2o	WUm	PPP2UO[%W	O&2Q2PPP2UO
[O2UQ59^tt^2oWUm	UO[UO12UOUOO*UO*2UOUOU2UOUOP	2PPP2UO
[O2UQ59^tt^2oUO[(29^tt^2o	WUm	UO[UO12PPP2UO[%W	O&2Q2PPP2PPP2P!)%fhCKc9h)%fhCKJ9h)%fhCK�9h)%fhCK�9h)%fhCK9h)%fhK�9h)%fhK�9h)%fhP!9h)Fr�r�zValue is not a SSLSession.z#Cannot set session after handshake.z)Session refers to a different SSLContext.)r�rrrUrRrQr�r�r�r�r�r�rCrJr�r�r�r.rGrnr�rT)
r�r�r�r��client_context2rrIr�r�rs
&         r!�test_session_handling�#ThreadedTests.test_session_handling,s"��3B�3D�0��� /� 1����A�*-���)?�)?��&�*-�.�.�*@�*@��'�#�N�5�I��
�V��+�+�F�M�M�O�<D�,�F�F�IJ�� � ����D�1�� � ��!1�!1�4�8��	�	�4����-�.��)�)������(��&�&�y�1�1�Q� &�A�I�2�� � ��Q�[�[�!1�3O�P�F� �+�+�F�M�M�O�<D�,�F�F�IJ��	�	�4����-�.��&�&�z�2�2�a� '�A�I�3�� � ��Q�[�[�!1�!F�H�
F� �+�+�F�M�M�O�<D�,�F�F�IJ�$��	��	�	�4����-�.�� � ������w�z�z�:�� � ����G�4�� � ��!1�!1�4�8�F�!�,�,�V�]�]�_�=E�-�G�G�JK��&�&�z�2�2�a� '�A�I��I�I�t�V�[�[�1�2�3�� � ��Q�[�[�!1�!L�N�
G�A�V�2�1�1��F�F�F�� 3�2�2��	F�F�F��F�F�F��3�2��G�G��A�V�V�s��2/P%�!BN/	�5N
�-N/	�.6P%�$?O	�#O
�+-O	�6P%�BO+	�6P%�P	�3)O?
�-P	�	P%�N,�$N,�&	N/	�/O
�8O
�:	P%�O�O�	O	�O(
� O(
�"	P%�+O<
�4O<
�6	P%�?P�P�
P	�P"
�P"
�P%�%P6	�.P6	z&TLS-PSK disabled on this OpenSSL buildc��	````	`
�[OQ2n
[O[O2oP
Um[OUm[OOUm
UOQ2UOU
1Qk2[O[O2o[OOUm
UOQ2UOU
1Qk2[UQ5oS9^tt^2UO!["O"229^tt^2oUO%[&UO(12PPP2PPP2[OQ2n	UOU	1Qk2[UQ5oS9^tt^2UO!["O"229^tt^2oRO+[O,29^tt^2UO%[&UO(12PPP2PPP2PPP2QnQnUUU
U1Q	koUU
U1Q
koUOU2UOUR2[UQ5oS9^tt^2UO!["O"229^tt^2oUO%[&UO(12PPP2PPP2RO/[O,Q29^tt^2UOUR2PPP2RO/[O,Q29^tt^2UOU2PPP2Q
nQnUOU2UOUR2[UQ5oS9^tt^2UO!["O"229^tt^2oUO%[&UO(12PPP2PPP2P!)%fhCK�9h)%fhCK�9h)%fhCK9h)%fhCK%9h)%fhCK19h)%fhCK�9h)%fhCK�9h)%fhCK}9h)%fhCKO9h)%fhK�9h)%fhP!9h)�deadbeefrqc�:�PR1!rBrC)�hint�psks&�r!r��(ThreadedTests.test_psk.<locals>.<lambda>hs	���T�3�Kr#c�
:�R!rBrC)�identityrfs&�r!r�rgms���r#rP�cafebabec�:�PR1!rBrC)re�
incorrect_psks&�r!r�rgws
���T�=�<Qr#�
identity-hint�client-identityc�2:�ROUR2RR1!rB�r�)re�client_identity�
identity_hintrfr�s&����r!�client_callback�/ThreadedTests.test_psk.<locals>.client_callback�s������T�=�1�"�C�'�'r#c�.:�ROUR2R!rBrp�rirqrfr�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rVrKr�r�r�rrUrRr=r�rJr�rQr�r�r�rCrJr�r�r�)r�r�r�rIr�rsrwrqrrrlrfsf      @@@@r!�test_psk�ThreadedTests.test_psk^s@����m�m�J�'������(?�(?�@��(-��%�%(�]�]��"�),���)?�)?��&��"�"�5�)��.�.�/G�H�����(?�(?�@��),���)?�)?��&��"�"�5�)��.�.�/C�D�$�N�;��
�V��+�+�F�M�M�O�<�<���	�	�4����-�.�=��
�
�
�j�1�
��.�.�/Q�R�#�N�;��
�V��+�+�F�M�M�O�<�<���&�&�s�|�|�4�4��I�I�t�V�[�[�1�2�5�=��(�
�+��	(�	(�	�	�.�.��?��.�.��
�N�#�N�;��
�V��+�+�F�M�M�O�<�<���	�	�4����-�.�=��
�
#�
#�C�L�L�2R�
S�
S��2�2�?�M�R�T�
�
#�
#�C�L�L�2R�
S�
S��2�2�?�C�T�'�
�(���.�.��?��.�.��
�N�#�N�;��
�V��+�+�F�M�M�O�<�<���	�	�4����-�.�=��V�Y=�<�<���V�V��5�4�4��=�<�<���V�V��*=�<�<���V�V��
T�
S�
S��
S�
S�
S��=�<���V�V�s�-P0�"P	�-P0�=-Q,�*(Q	�"Q
�4Q	�<Q,�-R�"R	�)R�!R(�$R<�;-S#�("S	�
S#�P-
�%P-
�'	P0�0Q	�9Q	�Q�
Q�	Q	�Q)
�!Q)
�#	Q,�,Q=	�5Q=	�R
�	R
�	R�R%	�R%	�(R9	�1R9	�<S
	�S
	�S 
�S 
�S#�#S4	�,S4	z*TLS 1.3 PSK disabled on this OpenSSL buildc	�````	�[OQ2n	QoQnUU	U1QkoUU	U1Qko[O[O2oP
Um[OUm[OOUm
UOQ2UOU2[O[O2o[OOUm
UOQ2UOV12[UQ5oS9^tt^2UO!["O"229^tt^2oUO%[&UO(12PPP2PPP2P!)%fhK9h)%fhP!9h)rcrmrnc�0:�ROU2RR1!rB)r�)rerqrfr�s&���r!rs�6ThreadedTests.test_psk_tls1_3.<locals>.client_callback�s������d�#�"�C�'�'r#c�.:�ROUR2R!rBrprvs&���r!rw�6ThreadedTests.test_psk_tls1_3.<locals>.server_callback�ryr#rqrP)r�rzrrVrKr�r�r�rr�r9r=r�rJr�rQr�r�r�rCrJ)
r�rrrsrwr�r�rIr�rqrfs
f       @@r!�test_psk_tls1_3�ThreadedTests.test_psk_tls1_3�s����m�m�J�'��'�
�+��	(�
	�����(?�(?�@��(-��%�%(�]�]��"�),���)?�)?��&��"�"�5�)��.�.��?�����(?�(?�@��),���)?�)?��&��"�"�5�)��.�.��N�#�N�;��
�V��+�+�F�M�M�O�<�<���	�	�4����-�.�=��V�<�<���V�V�s0�(-F�"F		�7F�	F
�F
�F�F-	�%F-	z`gh-150191: OpenSSL races on SSL->rwstate and the socket BIO flags with concurrent read and writer�c�``	`
�Qn	[O2n
U	U
U1Qko[2vq#o[UQ5oS9^tt^2UO	[
O
2UQ59^tt^2oUO
[UO12UO]2UO]2UOQ2ROUO]2Q2[O29^tt^2o[O UU1P	Q5oUO#2R
O%2UOR	2UO'2UO(d
UO(gPPP2PPP2PPP2P!)%fhK"9h)%fhK-9h)%fhP!9h)�1c�:�RO2UO[R22oROUR2P!rB)r�r}rMr�)r��receivedr��eventr�s& ���r!�
background�JThreadedTests.test_thread_recv_while_main_thread_sends.<locals>.background�s.����I�I�K��y�y��T��+�H����X�t�,r#rPr�s123)rr_r�s1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111)rr6r�rQr�r�r�rCrJr�rr�r�r}rrrr5r7rr)r�r�r�r�r�rIr�r�r�r�r�sf        @@r!�(test_thread_recv_while_main_thread_sends�6ThreadedTests.test_thread_recv_while_main_thread_sends�sT��������!��	-�
4C�3D�0���#�N�;��
�V��+�+�F�M�M�O�<D�,�F�F�IM����d�F�K�K�0�1�����"�� � ��#����V�$�� � ����1��v�6�%�?�?�A�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�V�sV�/G�6BF-	�	A)F
�3F
�F-	�G�F*�#F*�%F-	�-F=
�6F=
�8G�G	�	G	c��[2oUO2UOO[O
2%f[
Q2gUOUO2[O[Q5o[O[O[O2oUO[O
2UO!UO"2UO%UQQ5oS9^tt^2UO'Q2UO(oUO+Q2oUO-UQ2UO/[O029^tt^2UO+Q2PPP2UO/[O029^tt^2UO+Q2PPP2[3UQ2%cs[5[6Q29^tt^2oUO/[O029^tt^2UO9UO;2]]2PPP2PPP2UO/[O029^tt^2UO=Q	2PPP2UO/[O029^tt^2UO?2PPP2UO-UOA2]2PPP2P!)%fhCK�9h)%fhCKT9h)%fhK�9h)%fhK�9h)%fhK�9h)%fhK�9h)%fhP!9h)
zserver took too longrAr&r�sclient
r�rYrLr@sclient2
)!rQr5rTr7rr�r:r�rrr�rr�rprZr�r�rUr�r�rkr4r�r�r�r:r3rrLrlrqr�r�)r�rIr�r��sslsockr�r��fps&       r!�test_got_eof�ThreadedTests.test_got_eof�s@������������$�$�W�%:�%:�;�;��5�6�6�������$��,�,�H�,�=���}�}�V�^�^�V�-?�-?�@������-�-�.����V�^�^�$��%�%�d�K�%�H��
�W��O�O�K�(��_�_�F��;�;�t�$�D����T�;�/��"�"�3�?�?�3�3����D�!�4�
�"�"�3�?�?�3�3����D�!�4��v�z�*�*��(�D�)�)�R��*�*�3�?�?�;�;�����	�	��Q��:�<�*��"�"�3�?�?�3�3����\�*�4��"�"�3�?�?�3�3��$�$�&�4�
���W�_�_�.��2�7�W�4�3�3��
4�3�3��<�;��*�)��4�3��3�3��1�W�W�s��A(M;�=L	�/M;�>L	�M;�*M;�(M	�*"L/
�M	�/M;�M	�/M;�M(	�(M;�L
�L
�	M;�L,
�$L,
�&	M;�/L?�8L?�:M	�M
�M
�
M;�M%
�M%
� M;�(M8
�1M8
�3M;�;N	�N	rCr�)\r�rUrVrWrr�r�r]rY�Py_GIL_DISABLEDr�r�r�r�rr�r�r�rTr�rr�r�rhr�rr%r)r-r0r4r7r=rGrJrnrrr~r�r�r�r�r�r�r�r�r�r�r�r�r�r�rZr�r�r:r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r
rrr`r!r,r3rArDrQr\r`rr{�
HAS_PSK_TLS13r�r�r�r�r]r^r_s@r!r�r�ws��������z�*�*"�+�*"�X����0�0�2^�_�'*�`�'*�R"/�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�%� -�&�)�$�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�>2�@���/�M�O�=�O�=�(���/�M�O�2�O�2�$���/�M�O�=�O�=�(���/�M�O�2�O�2�;�;� >�D�=�@�&$�PK�K�*C�& �$=�>�47/�r0N�d�)�$�
������&N�O�@/�P�%�@/�D�)�$�
������&N�O�
����*�*�,X�Y�/�Z�P�%�/�>
��� +�37�9�"+�9�"+�H*3�*3r#r�zTest needs TLS 1.3 PHAc�j`�\sQsQsnQsQsQsQsQsQs	Qs
Q	sQ
sQs
QsQ
sQsUsP!)�TestPostHandshakeAuthic��[O[O,oSFCDbo[OU2oUO	UO
P
2P	UmUO	UO
P	2[OUmUO	UO[O2UO	UO
P	2P
UmUO	UO[O2UO	UO
P
2[OUmP	UmUO	UO[O2UO	UO
P	2CJe	P!r�)	rrJrKrVr��post_handshake_authr�r�r�)r�r�rNr?s&   r!�test_pha_setter�%TestPostHandshakeAuth.test_pha_setters"���#�#�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	���[2vqoP	Um[OUmP	UmUO[2[UP
Q5oS9^tt^2UO[O2UQ59^tt^2oUO[UO12UOQ2UOUOQ2Q2UOQ2UOUOQ2Q2UOQ2UOUOQ2Q2UOQ2UOUOQ2Q2UOQ	2UOQ
2O!Q2oUO#QU2PPP2PPP2P!)%fhK9h)%fhP!9h)
Tr�r�rr�rrr
rrirzPython Software Foundation CA)r�r�rr�r�r�r�rQr�r�r�rCrJrqr�r}�decoder�)r�r�r�r�rIr��	cert_texts&      r!�test_pha_required�'TestPostHandshakeAuth.test_pha_required3sn��3B�3D�0���-1��*�%(�%6�%6��"�-1��*��&�&��7�#�N�5�I��
�V��+�+�F�M�M�O�<D�,�F�F�IJ��	�	�4����-�.����
�#�� � ������z�:������� � ������w�7����
�#�� � ������y�9������� � ������w�7����
�#��F�F�4�L�/�/�
�;�	��
�
�=�y�I�F��V�F�F���V�V�s1�/G�
D-G	�:G�G
�G
�G�G0	�(G0	c���[2vqoP	Um[OUmP	UmQoVBmVAm[
UP	Q5oS9^tt^2UO[O2UP
Q59^tt^2oUO[UO12UOQ2UO[Q29^tt^2UOQ2oUO!UQ2UOQ2UOQ2PPP2PPP2PPP2P!)%fhK"9h)%fhK-9h)%fhP!9h)	Tc��[O%cCU[O6Xc,VV#VE1o[O
O
QU8Q02P!P!P!)zTLS: r)rror�ALERTrmrprq)rn�	directionrY�content_type�msg_typer�rDs&&&&&& r!�msg_cb�>TestPostHandshakeAuth.test_pha_required_nocert.<locals>.msg_cbRsG������<�?�3H�3H�#H����O���
�
� � �5����!3�4�$I�r#r�rrz`certificate required|EOF occurred|closed by the remote host|Connection reset by peer|Broken piper�r
r)r�r�rr�r�r�rQr�r�r�rCrJrqr�r|r}r�)r�r�r�r�r�rIr�r�s&       r!�test_pha_required_nocert�.TestPostHandshakeAuth.test_pha_required_nocertLs'��3B�3D�0���-1��*�%(�%6�%6��"�-1��*�	5�
(.�$�'-�$�#�N�4�H��
�V��+�+�F�M�M�O�<D�AF�,�H�H�KL��	�	�4����-�.�������+�+��$����6�6�$�<�D��$�$�T�7�3��G�G�J�'��F�F�4�L�!�H��V����H�H���V�V�sP�0E�AE	�AD9
�E	�'E�9E	�E	�E	�E
�E
�E�E0	�(E0	c	��[O%c [OO	Q2[2vqoP	Um[OUm	P	UmUO[2[OUm	[UP
Q5oS9^tt^2UO[O2UQ59^tt^2oUO!["UO$12UO	Q2UO'UO)Q2Q2UO	Q2UO'UO)Q2Q2UO	Q2UO'UO)Q2Q2PPP2PPP2P!)%fhK9h)%fhP!9h)	rr�r�rr�rrr
r)rrormrprqr�r�rr�r�r�r�r�rQr�r�r�rCrJr�r}rRs&     r!�test_pha_optional�'TestPostHandshakeAuth.test_pha_optionalusC���?�?�?��J�J���T�"�3B�3D�0���-1��*�%(�%6�%6��"�-1��*��&�&��7�&)�%6�%6��"�#�N�5�I��
�V��+�+�F�M�M�O�<D�,�F�F�IJ��	�	�4����-�.����
�#�� � ������z�:������� � ������w�7����
�#�� � ������y�9�F��V�F�F���V�V�s1�(/F4�B8F!	�F4�!F1
�*F1
�,F4�4G	�=G	c	�<�[O%c [OO	Q2[2vqoP	Um[OUm	P	Um[UP
Q5oS9^tt^2UO[O2UQ59^tt^2oUO[UO12UO	Q2UO!UO#Q2Q2UO	Q2UO!UO#Q2Q2UO	Q2UO!UO#Q2Q2PPP2PPP2P!)%fhK9h)%fhP!9h)rr�r�rr�rrr
)rrormrprqr�r�rr�r�rQr�r�r�rCrJr�r}rRs&     r!�test_pha_optional_nocert�.TestPostHandshakeAuth.test_pha_optional_nocert�s%���?�?�?��J�J���T�"�3B�3D�0���-1��*�%(�%6�%6��"�-1��*�#�N�5�I��
�V��+�+�F�M�M�O�<D�,�F�F�IJ��	�	�4����-�.����
�#�� � ������z�:������� � ������w�7����
�#�� � ������z�:�F��V�F�F���V�V�s1�>/F
�-B8E7	�%F
�7F
�F
�F
�
F	�F	c���[2vqoP	Um[OUmUO[2[UP
Q5oS9^tt^2UO[O2UQ59^tt^2oUO[UO12UO[OQ29^tt^2UO2PPP2UO!Q2UO#QUO%Q22PPP2PPP2P!)%fhKT9h)%fhK-9h)%fhP!9h)Tr�r�z
not serverrsextension not receivedr�)r�r�rr�r�r�r�rQr�r�r�rCrJr�r�rrqr�r}rRs&     r!�test_pha_no_pha_client�,TestPostHandshakeAuth.test_pha_no_pha_client�s���3B�3D�0���-1��*�%(�%6�%6��"��&�&��7�#�N�5�I��
�V��+�+�F�M�M�O�<D�,�F�F�IJ��	�	�4����-�.��+�+�C�L�L�,�G�G��2�2�4�H�������
�
�7������F�
F��V�H�G��F�F���V�V�sO�/E�A
E	�D-
�!:E	�E�-D=�6D=�8E	�E
�	E
�E�E$	�E$	c	���[2vqo[OUmP	UmUO[2[UP
Q5oS9^tt^2UO[O2UQ59^tt^2oUO[UO12UOQ2UOUOQ2Q2UOQ2UOUOQ2Q2UOQ2UOUOQ2Q2PPP2PPP2P!)%fhK9h)%fhP!9h)Tr�r�rr�rrr
)r�rr�r�r�r�r�rQr�r�r�rCrJrqr�r}rRs&     r!�test_pha_no_pha_server�,TestPostHandshakeAuth.test_pha_no_pha_server�s��3B�3D�0���%(�%6�%6��"�-1��*��&�&��7�#�N�5�I��
�V��+�+�F�M�M�O�<D�,�F�F�IJ��	�	�4����-�.����
�#�� � ������y�9������� � ������w�7����
�#�� � ������y�9�F��V�F�F���V�V�s1�/E#�B8E	�>E#�E 
�E 
�E#�#E4	�,E4	c
�d�[2vqo[OUm[OO
UmP	UmUO[2[UP
Q5oS9^tt^2UO[O2UQ59^tt^2oUO[UO12UO!Q2UO#QUO%Q22PPP2PPP2P!)%fhK9h)%fhP!9h)Tr�r�rsWRONG_SSL_VERSIONr�)r�rr�r�rrUrRr�r�r�rQr�r�r�rCrJrqr�r}rRs&     r!�test_pha_not_tls13�(TestPostHandshakeAuth.test_pha_not_tls13�s���3B�3D�0���%(�%6�%6��"�),���)?�)?��&�-1��*��&�&��7�#�N�5�I��
�V��+�+�F�M�M�O�<D�,�F�F�IJ��	�	�4����-�.�������
�
�2�A�F�F�4�L�A�F��V�F�F���V�V�s1�6/D�%AD	�9D�D
�D
�D�D/	�'D/	c	�F�[o[O[O2oP	UmUO[2P
Um[OUm	[O[O2oUO[2UO[2P	Um[OUm	[UP
Q5oS9^tt^2UO[ O 2UQ59^tt^2oUO#[$UO&12UO)Q2UO+UO-Q2Q2UO)Q2UO+UO-Q2Q2UO)Q2UO+UO-Q2Q2UO+UO/2-2PPP2PPP2P!)%fhK9h)%fhP!9h)	Tr�r�rr�rrr
r)r�rrVrKr�r�r�r�r�r�rJr�r�r�rQr�r�r�rCrJrqr�r}rL)r�r�r�r�rIr�s&     r!�test_bpo37428_pha_cert_none�1TestPostHandshakeAuth.test_bpo37428_pha_cert_none�s���,������(?�(?�@��-1��*��&�&��7�(-��%�%(�]�]��"�����(?�(?�@���&�&��7��,�,�Z�8�-1��*�%(�%6�%6��"�#�N�5�I��
�V��+�+�F�M�M�O�<D�,�F�F�IJ��	�	�4����-�.����
�#�� � ������z�:������� � ������w�7����
�#�� � ������y�9�� � �����"�5�F��V�F�F���V�V�s1�#/H�CG<	�*H�<H
�H
�H�H 	�H 	c���[P
Q5vqo[UP
Q5oS9^tt^2UO[O2UQ59^tt^2oUO	[
UO12UOO2oUO[U2]2UvqxUOO2o	UO[U	2]2UOVy]*2UO[U2[U	]*22UO[U2[U	]*22UOVx2UO[U2[U22UO[U2[U22UOUO2UO22UO!Q[U22UO!Q[U22UO#[$O&2o
UO#[$O(2oUO+U
[,2UO!QU
2UO+U[.2UO[0O3U
2U2PPP2PPP2P!)%fhK9h)%fhP!9h)F�r�r�r�zCN=localhostzCN=our-ca-serverz-----BEGIN CERTIFICATE-----)r�rQr�r�r�rCrJrkrr�rMr�hashr�r��get_infor��public_bytesr��ENCODING_PEM�ENCODING_DERr�rGr�rrI)r�r�r�r�rIr��vc�ee�ca�uvcrOr�s&           r!�test_internal_chain_client�0TestPostHandshakeAuth.test_internal_chain_client�s��3B��4
�0���$�N�5�I��
�V��+�+��
�
�� (�,�����	�	�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�V�s0�/K�IK	�3K�K
�K
�K�K)	�!K)	c	��[P
Q5vqo[UP
Q5o[[29^tt^2o[OUO
22oPPP2[[29^tt^2o[OUO
22oPPP2S9^tt^2UO[O2UQ59^tt^2oUO[UO12UO2o	UO[U	2]2U	vq�UO!U
["2UO!U["2UOWU2UOWU
2UO%2oUO[U2]2UO!U]*["2UOV�]*2UO'V�2PPP2PPP2P!)%fhCK�9h)%fhCK�9h)%fhKB9h)%fhP!9h)Fr�r�r�)r�rQr3r�rrIr4�SINGED_CERTFILE_ONLYr�r�r�rCrJrr�rMr�r�rr�)
r�r�r�r�rIr6�expected_ca_cert�expected_ee_certr�r�r�r�r�s
&            r!�test_certificate_chain�,TestPostHandshakeAuth.test_certificate_chains���3B��4
�0���$�N�5�I��
�*�
�
��"�7�7�����A����&�
'�
'�1�"�7�7�����A��(��V��+�+��
�
�� (�,�����	�	�4����-�.��)�)�+��� � ��R��!�,�����%�%�b�%�0��%�%�b�%�0�� � �!1�2�6�� � �!1�2�6��,�,�.��� � ��S��1�-��%�%�c�!�f�e�4�� � ���V�,��#�#�B�+�'��V�
�
�
��(�
'�
'������V�V�sT�$H�8$H�./H<�DH)	�/H<�H	�
H	�H&	�H&	�)H9
�2H9
�4H<�<I
	�I
	c	���[2vqoUO[2[OUm[OOUm[UP
Q5oS9^tt^2UO[O2UQ59^tt^2oUO[UO12UOQ2UO!Q2oUO#UQ2UOQ2UO!Q2oUO#UQ2PPP2PPP2P!)%fhK9h)%fhP!9h)Fr�r�sVERIFIEDCHAIN
r�s
sUNVERIFIEDCHAIN
)r�r�r�rr�r�rrUrRrQr�r�r�rCrJrqr}r�)r�r�r�r�rIr��ress&      r!�test_internal_chain_server�0TestPostHandshakeAuth.test_internal_chain_server>s��3B�3D�0����&�&��7�%(�%6�%6��"�),���)?�)?��&�#�N�5�I��
�V��+�+��
�
�� (�,�����	�	�4����-�.����*�+��f�f�T�l��� � ��i�0����,�-��f�f�T�l��� � ��i�0���V�����V�V�s1�//E
�B
D:	�(E
�:E

�E

�E
�
E	�E	rC)r�rUrVrWr�r�r�r�r�r�r�r�r�r�r�r�r]r^r_s@r!r�r�sL����<�0J�2'!�R:�0;�,G� :�(B�"6�>#�J ,�D1�1r#r�c��`�\sQsQsn\O
1Qks\Q2s\Q2s	\\
O\OOQ2Q22sQsQsQ	sQ
sQsUsP!)�TestSSLDebugiSc��[U29^tt^2o[[U22ttPPP2!)%fhP!9hrB)r3rMr�)r��fnamer6s&& r!�keylog_lines�TestSSLDebug.keylog_linesUs$��
�%�[�[�A��t�A�w�<��[�[�[�s�4�A	�A	c���UO[O[O2[O[O2oUOUOP2UO[OO[O22[OUmUOUO[O2UO![OO[O22UOUO#2]2PUmUOUOP2UO%[&[(129^tt^2[OO+[OO-[O22UmPPP2UO%[.29^tt^2]UmPPP2P![c [%cSOQ2gh9h)%fhKl9h)%fhP!9h)Nr7)r�rr�r�rrVrKr�rr�rr�isfiler:r;r=r�r�r��IsADirectoryError�PermissionErrorr�abspathr�rms& r!�test_keylog_defaults�!TestSSLDebug.test_keylog_defaultsYs������	�(�(�)�*:�*:�;��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�
D�"$�'�'�/�/������	� 0� 0�1�#3�C��E�
�
�
�y�
)�
)�"#�C��*�
)��!�	��~��
�
�B�C��	��E�
D��
*�
)�
)�s=�,H�
AI�I�	H>�H>�+H>�I	�
I	�I%	�I%	c	�(�UO[O[O2[	2vqo[OUm[UP
Q5oS9^tt^2UO[O2UQ59^tt^2oUO[UO12PPP2PPP2UOUO!2]2PUm[OUm[UP
Q5oS9^tt^2UO[O2UQ59^tt^2oUO[UO12PPP2PPP2UO#UO!2]2[OUm[OUm[UP
Q5oS9^tt^2UO[O2UQ59^tt^2oUO[UO12PPP2PPP2UO#UO!2]2PUmPUmP![c [%cSOQ2gh9h)%fhCK�9h)%fhCK�9h)%fhCK`9h)%fhCKl9h)%fhK�9h)%fhK�9h)r7r�r�)r�rr�r�r�rr:r;r=rQr�r�r�rCrJr�r�r�rRs&     r!�test_keylog_filename�!TestSSLDebug.test_keylog_filenameusR�����	�(�(�)�*:�*:�;�3B�3D�0���	�-6�-=�-=�N�*�$�N�5�I��
�V��+�+�F�M�M�O�<D�,�F�F�IJ��	�	�4����-�.�F��
	
����*�*�,�a�0�)-��&�)2�)9�)9��&�#�N�5�I��
�V��+�+�F�M�M�O�<D�,�F�F�IJ��	�	�4����-�.�F��	
���� 1� 1� 3�R�8�)2�)9�)9��&�)2�)9�)9��&�#�N�5�I��
�V��+�+�F�M�M�O�<D�,�F�F�IJ��	�	�4����-�.�F��	
���� 1� 1� 3�R�8�)-��&�)-��&��A�	��~��
�
�B�C��	��F�F�F���V�V��F�F�F���V�V��F�F���V�s��I1�*/J2�"J	�;J2�/K�
"K	�/K� /L�"K.	�1L�1	J�;J�J�J/
�'J/
�)	J2�2K	�;K	�K
�K
�	K�K+	�#K+	�.K>
�7K>
�9L�L	�
L	z.test is not compatible with ignore_environmentc��UO[O[O2[O
OO[O29^tt^2[O[OQ$UO[OQ*[O2[O[O2oUOUOP2[O2oUOUO[O2[O'2oUOUO[O2PPP2P![ c ["%cSO%Q2gh9h)%fhP!9h)�
SSLKEYLOGFILEr7)r�rr�r�r]rirg�dictr�environr�rrVrKrr�r:r;r=r�rms& r!�test_keylog_env�TestSSLDebug.test_keylog_env�s/��	
���	�(�(�)�*:�*:�;�
�]�]�
 �
 �
%�
%�b�j�j�
1�
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�
1�s8�/BF9�F�A(F9�	F6�F6�#F6�6F9�9G
	�G
	c�6�[2vqoQoUOUOP2VAmUOUOU2UO[29^tt^2[2UmPPP2P!)%fhP!9h)c��P!rBrC�rnr�rYr�r�r�s&&&&&&r!r��.TestSSLDebug.test_msg_callback.<locals>.msg_cb�r^r#)r�r�r�r�r�r.)r�r�r�r�r�s&    r!�test_msg_callback�TestSSLDebug.test_msg_callback�sn��3B�3D�0���	�	
�
�
�n�2�2�D�9�'-�$��
�
�n�2�2�F�;�
�
�
�y�
)�
)�+1�8�N�(�*�
)�
)�
)�s�-B�B	�B	c���[2vqoQoVAm[UP
Q5oS9^tt^2UO[O2UQ59^tt^2oUO[Q29^tt^2UO[UO12PPP2PPP2PPP2P!)%fhK"9h)%fhK-9h)%fhP!9h)c��[Q2g)�msg_cb exception)r:r�s&&&&&&r!r��8TestSSLDebug.test_msg_callback_exception.<locals>.msg_cb�s���1�2�2r#r�r�r�)
r�r�rQr�r�r�r:r�rCrJ)r�r�r�r�r�rIr�s&      r!�test_msg_callback_exception�(TestSSLDebug.test_msg_callback_exception�s���3B�3D�0���	3�(.�$�#�N�5�I��
�V��+�+�F�M�M�O�<D�,�F�F�IJ��+�+�L�:L�M�M��I�I�t�V�[�[�1�2�N�F��V�N�M��F�F���V�V�sM�/C�C	�="B9
�C	�'C�9C	�C	�C	�C
�C
�C�C0	�(C0	c	�``�[2vqo[OOUm,nUU1QkoVAm[
UP
Q5oS9^tt^2UO[O2UQ59^tt^2oUO[UO12PPP2PPP2ROQ[O[O[O 1R2ROQ[O[O"[O"1R2P!)%fhK�9h)%fhK�9h)c��:�ROU[O2ROU[2RO	UQQ.2ROVV412P!)r4rq)r�rr�r�r�r�)rnr�rYr�r�r�r"r�s&&&&&&��r!r��4TestSSLDebug.test_msg_callback_tls12.<locals>.msg_cb�sK����!�!�$��
�
�6��!�!�$��.��M�M�)�f�g�%6�7��J�J�	�L�C�Dr#r�r�r4rq)r�rrrUrRr�rQr�r�r�rCrJr�r�	HANDSHAKEr�SERVER_KEY_EXCHANGE�CHANGE_CIPHER_SPEC)r�r�r�r�r�rIr�r"sf      @r!�test_msg_callback_tls12�$TestSSLDebug.test_msg_callback_tls12�s���3B�3D�0���),���)?�)?��&���	E�(.�$�#�N�5�I��
�V��+�+�F�M�M�O�<D�,�F�F�IJ��	�	�4����-�.�F��
	
�
�
�
�Z�'�'��)B�)B�
�
0�
0�
2��	
�
	
�
�
�
�j�(�(�/�*L�*L�
�
/�
/�
1��	
�F�F���V�s0�/E�"D9	�'E�9E	
�E	
�E�E	�E	c	�`�[2vqo[2]*nQoU1QkoVBmVRm[UP
Q5oS9^tt^2UO	[
O
2UQ59^tt^2oUO
[UO12PPP2UO	[
O
2UQ59^tt^2oUO
[UO12PPP2PPP2P!)%fhKr9h)%fhK-9h)%fhP!9h)rzc��P!rBrCr�s&&&&&&r!r��@TestSSLDebug.test_msg_callback_deadlock_bpo43577.<locals>.msg_cb�r^r#c�:�RUmP!rBrP)r�r[r?�server_context2s&&&�r!�sni_cb�@TestSSLDebug.test_msg_callback_deadlock_bpo43577.<locals>.sni_cb�s
���*�D�Lr#r�r�)	r�r�rdrQr�r�r�rCrJ)	r�r�r�r�r�rrIr�rs	&       @r!�#test_msg_callback_deadlock_bpo43577�0TestSSLDebug.test_msg_callback_deadlock_bpo43577�s����3B�3D�0���)�+�A�.��	�	+�(.�$�&,�#�#�N�5�I��
�V��+�+�F�M�M�O�<D�,�F�F�IJ��	�	�4����-�.�F� �+�+�F�M�M�O�<D�,�F�F�IJ��	�	�4����-�.�F�	�V�F�F��F�F��	�V�V�sN�
/D.�<"D	�6D.�"D	�6D.�D
�D
�D.�D+
�$D+
�&D.�.D?	�7D?	rC)r�rUrVrWrr�r��requires_keylogr�r�r]rrmr��ignore_environmentr�r�r�r�rr]r^r_s@r!r�r�Ss�����!*�!1�!1� ��$��$�6�&.��&.�P�
�_�_�S�Y�Y�1�1�E�G�D�G��D�(
4�3�
�>/�/r#r�c	��UO[O[O[O
Q]]22P!)�ii)�
setsockoptr��
SOL_SOCKET�	SO_LINGER�struct�pack�r�s&r!�)set_socket_so_linger_on_with_zero_timeoutrs+���O�O�F�%�%�v�'7�'7����T�1�a�9P�Qr#c�d`�\sQsQsnQQ\O
2sQsQsQs	Qs
QsUsP!)	�TestPreHandshakeClosei	c�Z``�\sQsQsnQP-U1QkksQsQsU1QksQsQs	Us
U9s!)	�6TestPreHandshakeClose.SingleConnectionTestServerThreadi
r�c�:�V mQUmPUmPUmPUmUe[
OUmLV0m[RU_%UQ5P!)r#r)
�call_after_accept�
received_data�
wrap_errorrrJrr�r�rSr�)r�r rr�r�s&$$$�r!r��?TestPreHandshakeClose.SingleConnectionTestServerThread.__init__sM���%6�"�!$�D��"�D�O� �D�M��D�I���&�4�4���&���G��$��'r#c�(�UO2U!rB)r5r�s&r!r8�@TestPreHandshakeClose.SingleConnectionTestServerThread.__enter__s���J�J�L��Kr#c��UO%cUOO2UO2PUmP![cK&h9hrB)rr�r|rrr<s&*r!r=�?TestPreHandshakeClose.SingleConnectionTestServerThread.__exit__sF��
��=�=�=��M�M�'�'�)�
�I�I�K�"�D�O���
��
�s�A�A�	A�A�Ac�P:�[O[OO2Um[O
UOmUOO[Q5UOO[[Q5[O2Um[OUO2UmUOO!UO"2UOO%]2[&RU_Q2P!)rAr�)rr�r
r�ssl_ctxr�r�r�rr�rr�rrrArJr�r�rDrSr5rVs&�r!r5�<TestPreHandshakeClose.SingleConnectionTestServerThread.start(s�����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�h�UOO2vqUOO2S9^tt^2UO	U2%cPPP2P!UO
O
UP	Q5oUOQ2UmPPP2P![cSOO2P!h9hSOO2h9h[cKbh9h[coX@m
Po=K|Po=hh9h)%fhP!9h)Nrf�)rrCrEr�rrr�r}rr|r)r�rnrU�
tls_socketrxs&    r!r&�:TestPreHandshakeClose.SingleConnectionTestServerThread.run3s���
&� $�
�
� 4� 4� 6�
��g�
�
�
�#�#�%����)�)�$�/�/�����!%���!9�!9�$�D�!9�!Q�J��-7�_�_�S�-A��*����
 �
���
�
�#�#�%�	
���
�
�#�#�%��#������*�&)�O�O��*�����s��B&�D �D �(D�C1�&	C�0C�1C�C�C�C.�1	C?�;C?�<D �>C?�?D �	D�D�
D�D �D�D � D1	�)D1	)rrrJrrr�r)r�rUrVrWr�r8r=r5r&r]r^rbrcs@@r!� SingleConnectionTestServerThreadr
s*����
	(�t�
	(�	�	#�		�	�	r#r$c
��[OQ7cP![U[2%fv[U[2%c UO
[
O6XfA[OQ[[UQP22[O2%c,UOQ[OQU802PoP!P!Poh9h)�linuxz6wrong.version.number|record.layer.failure|http.requestrz!Could not recreate conditions on z: err=)r&�android)
rmr[rFr�r|rD�EINVALr�searchrGrH�
IGNORECASEr=rws&&r!�"non_linux_skip_if_other_okay_error�8TestPreHandshakeClose.non_linux_skip_if_other_okay_errorIs����<�<�/�/���s�0�1�1�
��W�
%�
%�#�)�)�u�|�|�*C��I�I�
J��G�C��2�.�/��
�
�
�
�*
��
�
� A�#�,�,��P'�"%��)�*���5
��4��s�%&C�Cc�\``�[O2n[O2nUU1QkoUOUQQ5oUOU2[O29^tt^2oUOUOO22[U2UOP
2RO2UOQ2UO2PPP2RO2UO2UOoPUmUO!QUO"2UO%U[&2UO)U2UO%U[*O,2UO/QUO0]*2UO/QUO22UO5]UO0]*2UO7UO8QQ5PoPoP!)%fhCK-9hPoPoh9h)c�:�RO2RO[O2%f[	Q2gP
!)z+wrap_socket event never set, test may fail.)r�r7rr�r:)�unused�ready_for_server_wrap_socket�server_accept_calleds&��r!r�PTestPreHandshakeClose.test_preauth_data_to_tls_server.<locals>.call_after_acceptrs5��� �$�$�&�/�4�4�W�5J�5J�K�K�"�#P�Q�Q�r#�preauth_data_to_tls_server�rr sDELETE /data HTTP/1.0

r#�before TLS handshake with data�attr must existr\)rr6r$rFr�r�rr�rrr7r�r�r�rrr�rr�r|r+rr�r�r_rr�r�r)r�rrIrtrr0r1s&    @@r!�test_preauth_data_to_tls_server�5TestPreHandshakeClose.test_preauth_data_to_tls_serverns����(���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 �6A7H�)C"H%�H"	�H"	�%H+c	��`	`
�[O2n
[O2n	U	U
1QkoUOUQQ5oUOU2[	UO
2[O29^tt^2oUOUO
O22R
O2R	O[O2%fUOQ2[O2oUO!UQQ5oPoUO#Q2oUO%2PPP2UO)2UO+QW2UO-W[&2UO/U2UO-U[O02UO3QUO4]*2UO3QUO62UO9]UO4]*2UO;UO<Q	Q
5[>O@U29^tt^2PoPPP2PoP![&coSoQoPo=CK3Po=hh9h)%fhCKD9h)%fhKE9h[>O@S29^tt^2PoPPP2Poh)%fhPoh9h9h)c��:�RO[O2%f[Q2[	U2UOQ2UO
2RO2P	!)z ERROR: test client took too longsWHTTP/1.0 307 Temporary Redirect
Location: https://example.com/someone-elses-server

)r7rr�r!rr�r�r�)�conn_to_client�$client_can_continue_with_wrap_socket�$server_can_continue_with_wrap_sockets&��r!r�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_clientr4ztest server took too longr&r�r!r#r5r6r\)!rr6r$rFrrr�r�r�r�r7rr�rLrr�r�r}r�r|rr�r�r+r�r�r_rr�r�rr	r�)r�rrIrtr�
tls_clientrrrxr<r=s&        @@r!�test_preauth_data_to_tls_client�5TestPreHandshakeClose.test_preauth_data_to_tls_client�s8���/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�s��AJ�*%J�I$�##J�CJ(�J�$	I>�.I>�/I9�3J�9I>�>J�J	�
J	�J%	�J%	�(K*�K	�
K*�K'
�K'
� 
K*c
��`�[O2nU1QkQ[OO2oU1QkoQoUOUQUQ5oUO
U2[UO2UUOO2]*UO[O2UQ5o[OU29^tt^2UO[ 29^tt^2UO#QQQ	Q
-Q5UO%2oPPP2PPP2UO'2P!)%fhK*9h)%fhK59h)c�0:`�\sQsQsnU1QksQsUsP!)�eTestPreHandshakeClose.test_https_client_non_tls_response_ignored.<locals>.SynchronizedHTTPSConnectioni�c�|:�[OOOU2RO	[
O2%f6[
O%c [OOQ2UOOUOUOQ5Um
P!)z"server_responding event never set.r�)�httprt�HTTPConnectionr�r7rr�rormrprq�_contextr�r�r�)r��server_respondings&�r!r��mTestPreHandshakeClose.test_https_client_non_tls_response_ignored.<locals>.SynchronizedHTTPSConnection.connect�sy������*�*�2�2�4�8�)�-�-�g�.C�.C�D�D������J�J�$�$�%I�J� �M�M�5�5��	�	�4�9�9�6�>��	r#r)r�rUrVrWr�r]r^)r`rJs@�r!�SynchronizedHTTPSConnectionrE�s����	
>�	
>r#rLc�:�[U2UOQ2UO2RO2P	!)s!HTTP/1.0 402 Payment Required

)rr�r�r�)r;rJs&�r!r�[TestPreHandshakeClose.test_https_client_non_tls_response_ignored.<locals>.call_after_accept�s;���5�n�E�����
�
� � �"��!�!�#�r#g@�non_tls_http_RST_responder)rr r�)rJr�r��HEADz/test�Hostr&)�headers)rr6rGrt�HTTPSConnectionr$rFrrr�rJrr�r	r�r�r|r_�getresponser)r�rLrr�rI�
connection�responserJs&      @r!�*test_https_client_non_tls_response_ignored�@TestPreHandshakeClose.test_https_client_non_tls_response_ignored�s���%�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�+�=�
	���
�	+�*��=�
<�s0�%E�'E	�*E�E
�E
�E�E/	�(E/	rC)
r�rUrVrWrrr$r+r7rArWr]r^r_s@r!rr	s4����:�9�+;�+;�:�x�J*�X9�v3�3r#rc�^`�\sQsQsnQsQsQsQsQsQs	Qs
Q	sQ
sQs
QsUsP!)
�TestEnumerationsic�p�QQ[O2o[OU[2P!)c��\sQsQs\O
s\Os\Os
\Os\Os\Os\O"sQsP!)�;TestEnumerations.test_tlsversion.<locals>.CheckedTLSVersionirC)r�rUrVrWr��PROTO_MINIMUM_SUPPORTEDrW�PROTO_SSLv3r��PROTO_TLSv1r��
PROTO_TLSv1_1r;�
PROTO_TLSv1_2rU�
PROTO_TLSv1_3r��PROTO_MAXIMUM_SUPPORTEDrXr]rCr#r!�CheckedTLSVersionr]sQ�� $� <� <���$�$�E��$�$�E��(�(�G��(�(�G��(�(�G� $� <� <�r#re)�enum�IntEnum�_test_simple_enumr)r�res& r!�test_tlsversion� TestEnumerations.test_tlsversion
s%��	=����	=�	
���0�*�=r#c�p�QQ[O2o[OU[2P!)c�0�\sQsQs]s]s]s]sQsQs	Qs
P!)�DTestEnumerations.test_tlscontenttype.<locals>.Checked_TLSContentTypeirV�rC)r�rUrVrWr�r�r��APPLICATION_DATA�HEADER�INNER_CONTENT_TYPEr]rCr#r!�Checked_TLSContentTyperms%��
"$���E��I�!���F�!&�r#rr)rfrgrhr)r�rrs& r!�test_tlscontenttype�$TestEnumerations.test_tlscontenttypes%��	'�T�\�\�	'�	
���5��Gr#c�p�QQ[O2o[OU[2P!)c��\sQsQs]s]
s]s]s]s]s	](s
])s]*s]+s
],s]-s].s]/s]0s]1s]2s]3s]<s]Fs]Gs]Ps]Vs]Zs]ds]ms]ns]os]ps ]qs!]rs"]ss#]ts$]xs%Qs&P!)�@TestEnumerations.test_tlsalerttype.<locals>.Checked_TLSAlertTypei(rC)'r�rUrVrW�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]rCr#r!�Checked_TLSAlertTyperw(s���
�L�!#���N� "�� �O�$&�!� "���N� �O�&(�#�"$��"$��"$�� "���J��M��L��M�!#��!��$&�!��N�%'�"��M�"�� #��$'�!�'*�$� #��.1�+�),�&�#&� �#&� �&)�#r#r�)rfrgrhr)r�r�s& r!�test_tlsalerttype�"TestEnumerations.test_tlsalerttype's&��&	*�4�<�<�&	*�N	
���3�]�Cr#c�p�QQ[O2o[OU[2P!)c�p�\sQsQs]s]s]s]s]s]s	]s
]s]s]s
]
s]s]s]s]s]s]s]s]s]Cs]�sQsQsP!)�DTestEnumerations.test_tlsmessagetype.<locals>.Checked_TLSMessageTypeiRrnrC)r�rUrVrW�
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]rCr#r!�Checked_TLSMessageTyper�Rs~��
�M��L��L�#$� � !�� !��"#��#$� ��K�"$��"$���K�!#��"$���H� �O�!#�� "���J��J��L�!'�r#r�)rfrgrhr)r�r�s& r!�test_tlsmessagetype�$TestEnumerations.test_tlsmessagetypeQs%��	(�T�\�\�	(�6	
���5��Gr#c���[O[OQQQ[OQ5oUO
Um[OU[O2P!)�
_SSLMethodrc�@�UOQ29%cUQ6g!)rEr��r�rs&r!r��1TestEnumerations.test_sslmethod.<locals>.<lambda>rs��T�_�_�[�9�W�W�d�FW�>W�Wr#��source)	rf�
_old_convert_rgrr�rIr�rhr�)r��Checked_SSLMethods& r!�test_sslmethod�TestEnumerations.test_sslmethodosN�� �.�.����l�E�W��x�x���->�,J�,J��)����0�#�.�.�Ar#c���[O[OQQQ[OQ5o[O
U[O2P!)�Optionsrc�&�UOQ2!)r�r�rs&r!r��/TestEnumerations.test_options.<locals>.<lambda>|s
��T�_�_�U�3r#r�)rfr��IntFlagrr�rhr�)r��CheckedOptionss& r!r��TestEnumerations.test_optionsys=���+�+����i��3��x�x���
	
���~�s�{�{�;r#c���[O[OQQQ[OQ5o[O
U[O2P!)�AlertDescriptionrc�&�UOQ2!)�ALERT_DESCRIPTION_r�rs&r!r��8TestEnumerations.test_alertdescription.<locals>.<lambda>�s��T�_�_�-A�Br#r�)rfr�rgrr�rhr�)r��CheckedAlertDescriptions& r!�test_alertdescription�&TestEnumerations.test_alertdescription�sB��"&�"4�"4����0�%�B��x�x�#��
	
���6��8L�8L�Mr#c���[O[OQQQ[OQ5o[O
U[O2P!)�SSLErrorNumberrc�&�UOQ2!)�
SSL_ERROR_r�rs&r!r��6TestEnumerations.test_sslerrornumber.<locals>.<lambda>�s
��T�_�_�\�:r#r�)rfr�rgrr�rhr�)r��Checked_SSLErrorNumbers& r!�test_sslerrornumber�$TestEnumerations.test_sslerrornumber�sB��!%�!3�!3����.��:��x�x�"��
	
���5�s�7I�7I�Jr#c���[O[OQQQ[OQ5o[O
U[O2P!)�VerifyFlagsrc�&�UOQ2!)�VERIFY_r�rs&r!r��3TestEnumerations.test_verifyflags.<locals>.<lambda>�s
��T�_�_�Y�7r#r�)rfr�r�rr�rhr�)r��CheckedVerifyFlagss& r!�test_verifyflags�!TestEnumerations.test_verifyflags�s?��!�/�/����m�U�7��x�x���
	
���1�3�?�?�Cr#c���[O[OQQQ[OQ5o[O
U[O2P!)�
VerifyModerc�&�UOQ2!)�CERT_r�rs&r!r��2TestEnumerations.test_verifymode.<locals>.<lambda>�s
��T�_�_�W�5r#r�)rfr�rgrr�rhr�)r��CheckedVerifyModes& r!�test_verifymode� TestEnumerations.test_verifymode�s?�� �.�.����l�E�5��x�x���
	
���0�#�.�.�Ar#rC)r�rUrVrWrirsr�r�r�r�r�r�r�r�r]r^r_s@r!rZrZsF����	>�
H�(D�TH�<B�<�N�K�D�B�Br#rZc�0�[O%Cc)Q[OQ[O-oUO2FD1vqU2oU%fJU]*%fJ'U8QU80oL 	[
[O22o[Q[O8Q[O802[QU*2[Q[O*2[Q[O*2[Q[O*2[[ ["[$[&[([*[,[.[0[2[41FDEo[6O8O;U2%cJ*[O<QU*2g	[>O@2o[BOD[>OF,UN3P![cK�h9h)	�Mac�Windowsrjztest_ssl: testing with z          under %sz          HAS_SNI = %rz          OP_ALL = 0x%8xz          OP_NO_TLSv1_1 = 0x%8xzCan't read certificate file %r)$rror[�mac_ver�	win32_ver�itemsr�r!rr[rZr�r�r�r�rrrrrrr�r�r�r��BADKEYrrr�exists�
TestFailedr�threading_setupr]�addModuleCleanup�threading_cleanup)�platsr ra�platr��thread_infos      r!�setUpModuler��sp�������8�#�#��x�)�)�
�� �+�+�-�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�! H�	H�H�H�__main__)r5rr)r5r4)r5r5)r5r7)r5r6))r(r�)r�r�)r�r;)�rB)r�TFNN)Nrr)�r�rmr]�
unittest.mock�astrrrr�r�test.supportrrrrr	r
r}rr�rXrrwrfrm�http.clientrGrrDr�urllib.requestrBrkrqr[�	sysconfigrdrra�ImportError�
import_modulerr�r
rrrrrr;r��_PROTOCOL_NAMESrerCr[ro�IS_LIBRESSLrZrTr�r�r�r�r�r�r�r��get_config_varrr:rV�
HAS_KEYLOGrYrr �CAN_SET_KEYLOGrr�r��verrHr�r"r�fsencoderrrrrrr	r�r�rr,rHr3rPr4rr�r�r�r�r
r�r�r�r�r�r�r�r�rCrr�r�r�rr�r�r�r�rr7r!r9r<r+r,r-r.r/r7r@rO�	lru_cacherLrhrtr}�ignore_warningsr�r�r�r�r�r�r�r�r��TestCaser�rbrrr<rDr�r�r�rxr��test.ssl_serversr�rQrQrer�r�r�r��HAS_PHAr�r�rrrZr�r��mainrCr#r!�<module>r	s'���
������&�"�&�)�(�!��	�
�
�
���	��	��
��������"���
�!�!�%�(���T�T��!�!�=�=�c�l�l�g�&=���3�&�&�'�	�������+�+�+�	��C�/�/�/���+�+�y�8��!$�!9�!9�V�!C��$'�$<�$<��$F�!�#&�#;�#;�v�#E� �$'�$<�$<��$F�!�&��:�:�{�?��(���%(�%=�%=��%G�"�"%�":�":�f�"D��"�1�1�2J�K��
�S�^�^�%6�
7�
��%�%��B�D���/�/����4���!�,�,��-������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�
�	�)�+�
,�-�-�� �����-�M�.��$�
%���N�+�� ��-��&��	�)�,�
-�.�.�$�'��	�	��4��/��^�,��*��� 0�1��.��
&�&D�E��%2�"�� 9�:���x��
.�
�
�}�
%�
��
�&���k�"�	���*���n�%�	�
�M�
"���0�1���2�3��	�<�	 ���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�	&�
�&�
!�&�
+/�&�
�
&� $�
&��&�#'�&�RH��H��	H�
�m�m�H��
H�!�
H�+/�
H�
�H� $�H��H�#'�H�0���
� /�$4��$4� $�$4�N�M	1�x�(�(�M	1�`p9�8�$�$�p9�f9D�H�%�%�9D�x@3�X�&�&�@3�F.�X�&�&�.�`y<�H�-�-�y<�x
���_�Y�/�1K�L�:I�8�#4�#4�:I�M�:I�z	���9�%�L�X�&�&�L�&�L�4	Z�	R�/�a��)�)�a�F	1�I�$�$�1�<t��)�)�t�l3�jKG�\�^3�H�%�%�^3�B=
���_�Y�/�?�?�C�K�K�-�/�v1�H�-�-�v1�/�v1�r	o/�8�$�$�o/�dR��H�-�-��DTB�x�(�(�TB�n P�F�z���M�M�O���|��
�F���\�����4.�-�-��/�.�.�sT�[
�[�"[,�1\�
[�[�[�[)�#[)�([)�,[=	�5[=	�\	�	\	

Youez - 2016 - github.com/yon3zu
LinuXploit