python (3.11.7)

(root)/
lib/
python3.11/
test/
__pycache__/
test_ssl.cpython-311.opt-2.pyc

em|	ddlZddlZddlZddlmZddlmZddlmZddlmZddlm	Z	ddlm
Z
ddlZddlZddl
Z
ddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZ	ddl Z n
#e!$rdZ YnwxYwe
j"dZ#ej$d	Z%ddl&Z&dd
l%m'Z'm(Z(m)Z)m*Z*e+edZ,e,o
ejdkZ-e.e%j/Z0ej1Z1e%j2d
kZ3ej4dZ5iZ6dD]4\Z7Z8	e9e%e7Z7e9e%j'e8Z8n#e:$rY+wxYwe8e6e7<5dZ;e;dZ<ej=e<Z>e;dZ?e;dZ@ej=e?ZAej=e@ZBe;dZCe;dZDdZEe;dZFej=eFZGe;ddZHe;ddZIdddddddd ZJe;d!ZKe;d"ZLd#ZMd$d%d&d'd(d)d*dddd+
ZNe;d,ZOd-ZPe;d.ZQd/ZRe;dd0ZSe;d1ZTe;d2ZUe;d3ZVd#ZWd4ZXe;d5ZYe;d6ZZe;d7Z[e;d8Z\e;d9Z]e;d:Z^e;d;Z_e;d<Z`ej=e`Zae9e%d=dZbe9e%d>dZce9e%d?dZde9e%d@dZee9e%dAdZfdBZgegrdCZhndDZhdEZiejjdFZkdGZldHZmdIZne
joepJZqe%jrdddddKdLZseLfdMdNdOZtGdPdQejuZvGdRdSejuZwGdTdUejuZxGdVdWejuZyGdXdYejuZzGdZd[ejuZ{ej|d\Gd]d^ejuZ}d{d_Z~d`ZddalmZGdbdcejZGdddeejZ			d|dhZ	d}diZGdjdkejuZejekdldmGdndoejuZe+e%jdpZejedqZGdrdsejuZdtZGdudvejuZGdwdxejuZdyZedzkrejdSdS)~N)support)
import_helper)	os_helper)
socket_helper)threading_helper)warnings_helperasyncoressl)
TLSVersion_TLSContentType_TLSMessageType
_TLSAlertTypegettotalrefcountwin32)rrPY_SSL_DEFAULT_CIPHERS))PROTOCOL_SSLv23SSLv3)PROTOCOL_TLSv1TLSv1)PROTOCOL_TLSv1_1TLSv1_1cvtjjtjtdg|RS)Ncertdata)ospathjoindirname__file__names A/BuggyBox/python/3.11.7/bootstrap/lib/python3.11/test/test_ssl.py	data_filer#Bs,
7<11:EEEEEzkeycert.pemzssl_cert.pemzssl_key.pemzkeycert.passwd.pemzssl_key.passwd.pemsomepasscapathz
4e1295a3.0z
5ed36f99.0))countryNameXY)localityNamezCastle Anthrax)organizationNamezPython Software Foundation))
commonName	localhostzAug 26 14:23:15 2028 GMTzAug 29 14:23:15 2018 GMT98A7CF88C74A32ED))DNSr/rissuernotAfter	notBeforeserialNumbersubjectsubjectAltNameversionzrevocation.crlzkeycert3.pemr/)z)http://testca.pythontest.net/testca/ocsp/)z0http://testca.pythontest.net/testca/pycacert.cer)z2http://testca.pythontest.net/testca/revocation.crl)r'))r-Python Software Foundation CA))r.z
our-ca-serverzOct 28 14:23:16 2037 GMTzAug 29 14:23:16 2018 GMTCB2D80995A69525C)
OCSP	caIssuerscrlDistributionPointsr3r4r5r6r7r8r9zkeycert4.pemfakehostnamezkeycertecc.pemz
localhost-eccz
ceff1710.0zallsans.pemzidnsans.pemz	nosan.pemzself-signed.pythontest.netnullcert.pembadcert.pemzXXXnonexisting.pem
badkey.pemz	nokia.pemznullbytecert.pemztalos-2019-0758.pemzffdh3072.pemOP_NO_COMPRESSIONOP_SINGLE_DH_USEOP_SINGLE_ECDH_USEOP_CIPHER_SERVER_PREFERENCEOP_ENABLE_MIDDLEBOX_COMPATc	tdd5}d|vcdddS#1swxYwYdS#t$rYdSwxYw)Nz/etc/os-releasezutf-8)encodingubuntuF)openreadFileNotFoundError)fs r"	is_ubunturOs#g
6
6
6	(!qvvxx'	(	(	(	(	(	(	(	(	(	(	(	(	(	(	(	(	(	(uus,A6A:A:A
AAc	|D]A}t|dr/|jtjjkr|dBdS)Nminimum_versionz@SECLEVEL=1:ALL)hasattrrQr
rrset_ciphers)ctxsctxs  r"seclevel_workaroundrVsXN	3	3C.//
3#s~'=== 1222	3	3r$cdSN)rTs r"rVrVsr$c	t|trtt|d}|dS|tjtjtjhvrdS|j}t|tddS)NFT	PROTOCOL_)

isinstancestrgetattrr
PROTOCOL_TLSPROTOCOL_TLS_SERVERPROTOCOL_TLS_CLIENTr!has_tls_versionlen)protocolr!s  r"has_tls_protocolres
(C  3$//5#1
t=D4K 0 0 1 12333r$c	|dkrdSt|trtjj|}ttd|jsdStr|tjjkrdSt	tj
}t|dr'|jtjj
kr
||jkrdSt|dr'|jtjjkr
||jkrdSdS)NSSLv2FHAS_rQmaximum_versionT)r\r]r
r__members__r^r!IS_OPENSSL_3_0_0TLSv1_2
SSLContextrarRrQMINIMUM_SUPPORTEDriMAXIMUM_SUPPORTED)r9rUs  r"rbrbs
'u'36.,W53-w|--..uGcn&<<<u..0
1
1CC*++3>#CCCc)))u&''s~???#%%%u4r$c	fd}|S)NcJtjfd}|S)Nc`tstjd|i|S)Nz is not available.)rbunittestSkipTest)argskwfuncr9s  r"wrapperz8requires_tls_version.<locals>.decorator.<locals>.wrappersB"7++
)'7(F(F(FGGGtT(R(((r$)	functoolswraps)rwrxr9s` r"	decoratorz'requires_tls_version.<locals>.decorators>				)	)	)	)	)
		)
r$rY)r9r{s` r"requires_tls_versionr|s)
r$cdtjtj}t
jr$tj||zdSdS)N )	r	tracebackformat_exceptionsysexc_inforverbosestdoutwrite)prefix
exc_formats  r"handle_errorr
sV)4clnnEFFJ.
*,-----..r$ctjr)tjjdkr
tjStjSNr)timedaylight	localtimetm_isdstaltzonetimezonerYr$r"
utc_offsetrs5}))2Q66}M>r$)category)	cert_reqsca_certscipherscertfilekeyfilec|ds/t|d<ttj}n$ttj}||tjkrd|_||_||	||||
||||||j|fi|S)Nserver_sideserver_hostnameF)
getSIGNED_CERTFILE_HOSTNAMEr
rmrar`	CERT_NONEcheck_hostnameverify_modeload_verify_locationsload_cert_chainrSwrap_socket)sockrrrrrkwargscontexts        r"test_wrap_socketrs::m$$:$< !..!899..!899
%%%*G"'%%h///w2'222G$$$7t..v...r$Tserver_chainc	|tkrt}n5|tkrt}n"|tkrt
}nt
|ttj	}|
tttj}|
||r|
t|||fSrX)SIGNED_CERTFILErSIGNED_CERTFILE2SIGNED_CERTFILE2_HOSTNAME	NOSANFILENOSAN_HOSTNAME
ValueErrorr
rmrar
SIGNING_CAr`r)server_certrhostnameclient_contextserver_contexts     r"testing_contextr2so%%+	(	(	(,			!	!!%%%^^C$;<<N((444^^C$;<<N"";///9,,Z888>833r$cTeZdZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdZ
ejdZd
ZdZdZedZdZdZdZdZedZdZdZejdej vddZ!dZ"dZ#eje$j%dkddZ&eje$j%dkdd Z'd!Z(d"Z)d#Z*d$Z+d%Z,eje-d&d'Z.d(Z/ej0d)d*d+Z1d,Z2d-Z3d.S)/BasicSocketTestsctjtjtjtjtjtjtj|tj	d|tj
d|tjd|tjdtj
tjtjtjtjtj|tjtjdS)NT)r
r
CERT_OPTIONAL
CERT_REQUIREDrFrDrErCassertEqualHAS_SNIHAS_ECDHHAS_TLSv1_2HAS_TLSv1_3OP_NO_SSLv2OP_NO_SSLv3OP_NO_TLSv1
OP_NO_TLSv1_3
OP_NO_TLSv1_1
OP_NO_TLSv1_2r_rselfs r"test_constantszBasicSocketTests.test_constantsMs

''d+++t,,,$///$///)3+>?????r$ctjtjtjtjtjtjg}|D]j}||5|td5d|_
dddn#1swxYwYdddn#1swxYwYktj|tjdS)N)ssl_typezimmutable type)
_ssl_SSLContext
_SSLSocket	MemoryBIOCertificate
SSLSessionSSLErrorsubTestassertRaisesRegex	TypeErrorvaluercheck_disallow_instantiation)r	ssl_typesrs   r"test_ssl_typeszBasicSocketTests.test_ssl_typesas5ONOM

	"	*	*Hx00
*
*++I7GHH**%)HN***************
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*	,T43CDDDDDs6B&;BB&BB&BB&&B*	-B*	c|td5tj5}t|dddn#1swxYwYddddS#1swxYwYdSNzpublic constructor)rrsocketr
	SSLSocketrss  r"test_private_initz"BasicSocketTests.test_private_initps

#
#I/C
D
D	!	!
!A

a   
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!	!	!	!	!	!	!	!	!	!	!	!	!	!	!	!	!	!	!s4A/AA/A	A/A	A//A36A3cHtj}|t|d|jz|t|t|jt|}||j|dS)Nz$<_SSLMethod.PROTOCOL_TLS_CLIENT: %r>)	r
rarreprrr]rmassertIsrdrprotorUs   r"test_str_for_enumsz#BasicSocketTests.test_str_for_enumsus'e&Lu{&Z[[[US%5%5666nnU##

clE*****r$c*t}tjr(tjd||rdpdfztj5t	d\}}dddn#1swxYwY|
t|d|
||dk|r>td}|
t|dn+|
tjtjd|
ttjdtj5|
ttj	ddddn#1swxYwYtddtd	dtt#d
ddS)Nz
 RAND_status is %d (%s)
zsufficient randomnesszinsufficient randomnesszthis is a random stringgR@sthis is a random bytes objects!this is a random bytearray object)r
RAND_statusrrrrrrcheck_warningsRAND_pseudo_bytesrrc
RAND_bytesassertRaisesrrRAND_add	bytearray)rvdatais_cryptographics    r"test_randomzBasicSocketTests.test_random~s[OO?	<J: !A$A*A$: 9 ;;
<
<
<
+
-
-	?	?%(%:%:2%>%>"D"	?	?	?	?	?	?	?	?	?	?	?	?	?	?	?TB''')16222	@>>"%%DSYY++++clCNB???	
*cnb999

+
-
-	E	Ej#*?DDD	E	E	E	E	E	E	E	E	E	E	E	E	E	E	E	.5555t<<<YCDDdKKKKKs$!BBB7'F**F.1F.c|tjtt
|tjtttjt}tj
r7tj
dtj|zdz||dd||dd||dd||dd	dS)
N
r8))r1zprojects.developer.nokia.com)r1zprojects.forum.nokia.comr<)zhttp://ocsp.verisign.comr=)z0http://SVRIntl-G3-aia.verisign.com/SVRIntlG3.cerr>)z0http://SVRIntl-G3-crl.verisign.com/SVRIntlG3.crl)rr
r_test_decode_certCERTFILE
CERTFILE_INFOrSIGNED_CERTFILE_INFO	NOKIACERTrrrrrpprintpformatrps  r"test_parse_certz BasicSocketTests.test_parse_certsE	
H&&x00	
	
	
	
H&&77 	
	
	

H&&y11?	>JTFN1$5$55<===+,?			
	
6$ABBB;N	P	P	P23N	P	P	P	P	Pr$ctjt}tjr7tjdtj
|zdz||dddddddd	dS)
Nr))r(UK))r.zcody-cazJun 14 18:00:58 2028 GMTzJun 18 18:00:58 2018 GMT02)r))r.#codenomicon-vm-2.test.lal.cisco.com))r1rrr2)r
rrTALOS_INVALID_CRLDPrrrrrrrrrs  r"test_parse_cert_CVE_2019_5010z.BasicSocketTests.test_parse_cert_CVE_2019_5010sH&&':;;?	>JTFN1$5$55<===
L67 $H#E

	
	
	
	
	
r$ctjt}tjr7tjdtj
|zdzd}||d|||d|tjdkrd}nd}||d|dS)	Nr))r(US))stateOrProvinceNameOregon))r+	Beavertonr,))organizationalUnitNamezPython Core Development)r.null.python.orgexample.org))emailAddresszpython-dev@python.orgr7r3)r	)r1zaltnull.python.orgexample.comemailz null@python.orguser@example.orgURIz)http://null.python.orghttp://example.org
IP Addressz	192.0.2.1)rz2001:DB8:0:0:0:0:0:1)rrrr)rz	<invalid>r8)
r
rrNULLBYTECERTrrrrrrrr_OPENSSL_API_VERSION)rrr7sans    r"test_parse_cert_CVE_2013_4238z.BasicSocketTests.test_parse_cert_CVE_2013_4238sH&&|44?	>JTFN1$5$55<===A	
9w///8g...#y00;CC0C	
+,c22222r$ctjt}||dddS)Nr8)
)r1allsans	othername
<unsupported>r!)rzuser@example.org)r1zwww.example.org)DirName)r'r*r,))r.zdirname example)rzhttps://www.python.org/r	127.0.0.1)rz0:0:0:0:0:0:0:1)z
Registered IDz	1.2.3.4.5)r
rr
ALLSANFILErrs  r"test_parse_all_sansz$BasicSocketTests.test_parse_all_sanssFH&&z22+,
	
	
	
	
	
r$cBttd5}|}dddn#1swxYwYt|}t|}t|}||||tjdzs|	d|z|
dtjzdzs|	d|zdSdS)Nrrz-DER-to-PEM didn't include correct header:
%r
z-DER-to-PEM didn't include correct footer:
%r
)rK
CAFILE_CACERTrLr
PEM_cert_to_DER_certDER_cert_to_PEM_certr
startswith
PEM_HEADERfailendswith
PEM_FOOTER)rrNpemd1p2d2s      r"test_DER_to_PEMz BasicSocketTests.test_DER_to_PEMs?
-
%
%	&&((C															

%
%c
*
*

%
%b
)
)

%
%b
)
)R   }}S^d233	NIIG"LMMM{{4#.04788	NIIG"LMMMMM	N	Ns7;;ctj}tj}tj}||t
||t||t||d|	|d|\}}}}}||d|	|d||d|	|d||d|	|d||d|
|d||d|
|dd	|d
}	|dkrd|d
d
|d
d
|d
}
nd|d
d
|d
d
|d
}
|||
|	f||t|fdS)Nii@rr?z	LibreSSL drzOpenSSL .)r
OPENSSL_VERSION_NUMBEROPENSSL_VERSION_INFOOPENSSL_VERSIONassertIsInstanceinttupler]assertGreaterEqual
assertLessassertLessEqual
assertTruer.hex)rntrmajorminorfixpatchstatuslibressl_veropenssl_vers           r"test_openssl_versionz%BasicSocketTests.test_openssl_versions&$a%%%a'''a%%%	
:...:&&&+,(uc5&q)))q!!!q)))s###Q'''S!!!q)))UB'''***VR(((,5,,,A::BUBBBuBBBBBBKK@U@@@u@@@@@@K
LL+|455
3q66N	
	
	
	
	
r$c,tjtj}t|}tj|}tjdtf5~dddn#1swxYwY||ddS)N)	rAF_INETrweakrefrefrrResourceWarningr)rrsswrs    r"
test_refcyclezBasicSocketTests.test_refcycle+s
M&.))
a
 
 
[__

+R,A
B
B																	t$$$$$sA++A/2A/c	tjtj}t|5}|t|jd|t|jtd|t|jd|t|j	tdd|t|j
d|t|jdd|t|j
|t|jdgddd|t|jd|t|jtdgddddS#1swxYwYdS)Nrx)z0.0.0.0rrYrd)rrVrrOSErrorrecv	recv_intorrecvfrom
recvfrom_intosendsendtoNotImplementedErrordupsendmsgrecvmsgrecvmsg_intorrrZs   r"test_wrapped_unconnectedz)BasicSocketTests.test_wrapped_unconnected6s
M&.))
a
 
 	0Bgrw222gr|Yt__EEEgr{A666gr'74!LLLgrw555gry$GGG126:::12:#fb!^
=
=
=12:sCCC12?(~~.
0
0
0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0sE8F33F7:F7cdD]}tjtj}||t|5}|||dddn#1swxYwYdS)N)Ng@)rrV
settimeoutrr
gettimeout)rtimeoutrrZs    r"test_timeoutzBasicSocketTests.test_timeoutHs(	;	;G
fn--A
LL!!!!!$$
;  "--//:::
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;	;	;s)A<<B	B	ctjtjtjtjg}tjtjtjtjg}tj	j
tj	jtj	jg}|D]}|
|5ttj}|t"5}|xj|zc_dddn#1swxYwY|dt)|jdddn#1swxYwY|D]}t-|s|
|5|t"5}t|dddn#1swxYwY|d|jdt)|jdddn#1swxYwY|D]}t1|s|
|5ttj}|t"5}||_dddn#1swxYwY|jjd|j}	|d|	dt)|jdddn#1swxYwYdS)N)optionz4ssl.OP_NO_SSL*/ssl.OP_NO_TLS* options are deprecated)rdzssl.z is deprecated)r9r>)r
rrrrrrPROTOCOL_TLSv1_2r_rrrrrrmraassertWarnsDeprecationWarningoptionsrr]warningrer!rbrQ	__class____name__)
rry	protocolsversionsrurUcmrdr9version_texts
          r"test_openssl111_deprecationsz-BasicSocketTests.test_openssl111_deprecationsQs.O	

  	
	
N N N"
		FV,,

nnS%<==%%&899*RKK6)KK***************  J
OO	














"				H#H--
x00

%%&899-RNN8,,,---------------  88=888
OO














 		G"7++
g..

nnS%<==%%&8992R*1C'222222222222222*1*;*D*D*DgllS  7<777
OO














		s)?E(D9ED		ED	
+EE	E	:HF<0H<GHG4HH	H	:?K&9J
K&
JK&JAK&&K*	-K*	ctj}|tdtj|t
|tdtj|d|tdtj|ddt|dt
5}|td|jtd	fdddn#1swxYwY|t5}tj5}t|t
dddn#1swxYwYdddn#1swxYwY||jj
tj|t5}tj5}t|t
tdddn#1swxYwYdddn#1swxYwY||jj
tj|t5}tj5}t|ttdddn#1swxYwYdddn#1swxYwY||jj
tjdS)Nzcertfile must be specifiedrz5certfile must be specified for server-side operationsTrrUrrz!can't connect in server-side modeirrr)rrrr
rrconnectHOSTrr`NONEXISTINGCERTr	exceptionerrnoENOENT)rrrrs    r"test_errors_sslwrapz$BasicSocketTests.test_errors_sslwraps}z4x		A	A	A	
zO4		A	A	A	
zO$D2		O	O	O__Tth_
G
G	>1"":/R%&Yt
>
>
>	>	>	>	>	>	>	>	>	>	>	>	>	>	>	>

w
'
'	@2
@D???
@
@
@
@
@
@
@
@
@
@
@
@
@
@
@	@	@	@	@	@	@	@	@	@	@	@	@	@	@	@	
+U\:::


w
'
'	@2
@D% @@@
@
@
@
@
@
@
@
@
@
@
@
@
@
@
@	@	@	@	@	@	@	@	@	@	@	@	@	@	@	@	
+U\:::


w
'
'	G2
GD,o GGG
G
G
G
G
G
G
G
G
G
G
G
G
G
G
G	G	G	G	G	G	G	G	G	G	G	G	G	G	G	G	
+U\:::::s7*C--C14C1E+&"EE+E	E+E	E++E/2E/:H(H6HH	H	H	
HH H(K<(J0$K0J4	4K7J4	8KKKc	tjtjtptjd|}t
j}||j|	tj5t||ddddS#1swxYwYdS)Nrr)
rrrrrcurdirr
addCleanupcloserr
rrrrrs   r"
bad_cert_testzBasicSocketTests.bad_cert_testsI7<< 9 9 FRY *H66}
###


s|
,
,	0	0T&.
0
0
0
0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0sB<<CCc2	|ddS)Nr@rrs r"test_empty_certz BasicSocketTests.test_empty_certs.>*****r$c2	|ddS)NrArrs r"test_malformed_certz$BasicSocketTests.test_malformed_certsH=)))))r$c2	|ddS)NrBrrs r"test_malformed_keyz#BasicSocketTests.test_malformed_keys@<(((((r$ct
d}fd}ddi}||d||d||d||d||d	||d
ddi}||d||d
||d||d||dddi}||d||d||d||d||dddi}||d||d	||dddi}||d
||d||d||dddi}||d||d||dddd}dd |fffi}|||dd!i}|||dd"i}|||d#dd}dd |fffi}||d$dd||d%dd||d&dd||d'ddd(d)d*d+}||d,||d-||d.||d/d0d1d2}||d3||d4||d5dd6d7}||d8||d9||d:||d;||d<||d=||d>tjrMdd?d7}||d@||dA||dB||dC||dD||d>d0dEd2}||d3dFdGdHd+}||d3dFdEdHd+}||dIt
tjddt
tjidddJi}tj	dK5t|dLdddn#1swxYwYddMi}tj	dN5t|dOdddn#1swxYwYddPi}tj	dQ5t|dRdddn#1swxYwYddSi}tj	dT5t|dUdddn#1swxYwYddVi}tj	dW5t|dXdddn#1swxYwYdYD]N}t
5t
|dddn#1swxYwYOdZD]/}t
|0tjr2d[D]1}t
|0dSdS)\Nc<t||dSrX)r
match_hostname)certrs  r"okz0BasicSocketTests.test_match_hostname.<locals>.okstX.....r$c`tjtj||dSrX)rr
CertificateErrorr)rrrs  r"r0z2BasicSocketTests.test_match_hostname.<locals>.fails9c2!0$
B
B
B
B
Br$r7)))r.example.comrzExAmple.cOmzwww.example.comz.example.comzexample.orgexampleXcom)))r.z*.a.comz	foo.a.comz
bar.foo.a.comza.comzXa.comz.a.com)))r.zf*.comzfoo.comzf.comzbar.comzbar.foo.com)rrznull.python.org)))r.z	*.*.a.com)))r.za.*.comz	a.foo.comza..comupüthon.python.orgidnaasciir.)))r.z
x*.python.org)))r.zxn--p*.python.orguwww*.pythön.orguwww.pythön.orguwww1.pythön.orguftp.pythön.orgupythön.orgzJun 26 21:41:46 2011 GMT)))r.linuxfrz.org))r1linuxfr.org)r1linuxfr.comr!)r4r7r8rrr#rzDec 18 23:59:59 2011 GMT)r	)r
California)r+z
Mountain View)r-z
Google Inc)r.mail.google.com)r4r7rz	gmail.comr)r1r)r10.11.12.13)r14.15.16.17r%)r7r8rrz127.1z14.15.16.17 z14.15.16.17 extra dataz14.15.16.18zexample.net)r)rz2001:0:0:0:0:0:0:CAFE
)rz2003:0:0:0:0:0:0:BABA
z
2001::cafez
2003::babaz2003::baba z2003::baba extra dataz
2003::bebe)r	rrrzDec 18 23:59:59 2099 GMT)r	rrr))r"blablaz
google.com)))r.za*b.example.comz5partial wildcards in leftmost label are not supportedzaxxb.example.com)))r.zwww.*.example.comz2wildcard can only be present in the leftmost labelzwww.sub.example.com)))r.za*b*.example.comztoo many wildcardszaxxbxxc.example.com)))r.*z7sole wildcard without additional labels are not supporthost)))r.z*.comz%hostname 'com' doesn't match '\*.com'com)1rUz1.2.3z	256.0.0.1z127.0.0.1/24)r&z192.168.0.1)z::1z2001:db8:85a3::8a2e:370:7334)encodedecoderIPV6_ENABLEDrrr
rrr_inet_patonrH)rrr0rrinvalidipaddrs`      r"test_match_hostnamez$BasicSocketTests.test_match_hostnames
	/	/	/	B	B	B	B	B>?
4
4T$%%%T>"""T=!!!T=!!!:;
4T?###T7T8T89:T9T7T9T;T=!!!DE
41222T=!!!T$%%%<=T?###T7T8T8:;T;T8T7$**62299'BBlD1356
4@AT4DET4"((0077@@lD1356T$++F33::7CCDDDT%,,V44;;GDDEEET$++F33::7CCDDDT=''//66w??@@@7?#CDD
	4
4T?###T>"""7BCC	4"###T;T<   ?#@AA
	4
4T7T>"""T+,,,T=!!!T=!!!%	&B'CDDD

Bt\"""Bt\"""D}%%%D.///D|$$$D}%%%
7CDD
	
T$%%%7B#>??	4"###7C#=>>	
T<   	
*c&8$
NNN*c&8"mLLLBC

#
#$GII	9	9
t%7888	9	9	9	9	9	9	9	9	9	9	9	9	9	9	9
DE

#
#$DFF	<	<
t%:;;;	<	<	<	<	<	<	<	<	<	<	<	<	<	<	<
CD

#
#$$&&	<	<
t%:;;;	<	<	<	<	<	<	<	<	<	<	<	<	<	<	<
45

#
#$IKK	-	-
tV,,,	-	-	-	-	-	-	-	-	-	-	-	-	-	-	-
89

#
#$8::	,	,
tU+++	,	,	,	,	,	,	,	,	,	,	,	,	,	,	,G	)	)G"":..
)
)(((
)
)
)
)
)
)
)
)
)
)
)
)
)
)
)2	5	5FOOCOOF334444%	9A
9
9 7 78888	9	9
9
9sl&RRR=S%%S),S)T<<UU+VVVW**W.1W.X::X>	X>	cttj}tj5}|t
|j|ddddddS#1swxYwYdS)NTz
some.hostnamer)r
rmr`rrrr)rrUrs   r"test_server_sidez!BasicSocketTests.test_server_sidesnnS455
]__	?j#/4.=

?
?
?	?	?	?	?	?	?	?	?	?	?	?	?	?	?	?	?	?	?s%A**A.1A.ctjd}tjtj}||t|d5}|t5|ddddn#1swxYwYdddn#1swxYwY|	dS)Nr&rFdo_handshake_on_connectzunknown-type)
r
create_serverrVrgetsocknamerrrget_channel_bindingr)rrcrZs    r"test_unknown_channel_bindingz-BasicSocketTests.test_unknown_channel_bindings3 !122M&.))			!--//"""
a
?
?
?	72"":..
7
7&&~666
7
7
7
7
7
7
7
7
7
7
7
7
7
7
7	7	7	7	7	7	7	7	7	7	7	7	7	7	7	7	
					s6+B?B(B?(B,	,B?/B,	0B??CC
tls-unique*'tls-unique' channel binding not availablectjtj}t|5}||ddddn#1swxYwYtjtj}t|dt
5}||dddddS#1swxYwYdS)NrTr)rrVrassertIsNonerrrls   r"test_tls_unique_channel_bindingz0BasicSocketTests.test_tls_unique_channel_bindingse
M&.))
a
 
 	DBb44\BBCCC	D	D	D	D	D	D	D	D	D	D	D	D	D	D	D
M&.))
aTH
E
E
E	Db44\BBCCC	D	D	D	D	D	D	D	D	D	D	D	D	D	D	D	D	D	Ds#)A##A'*A'#)CC Ccnttjtj}t|}|t
5}d}t
jdddn#1swxYwY||t|j
jddSr)rrrVrrwrYr
gc_collectassertInr]rzru)rrZr*rs    r"test_dealloc_warnz"BasicSocketTests.test_dealloc_warns
fmFN;;
<
<HH


o
.
.	!"B   	!	!	!	!	!	!	!	!	!	!	!	!	!	!	!	


aRZ_Q/0011111sA77A;>A;ct}|t|d||tjt
j5}t|d<t|d<t}||j
t||jtddddS#1swxYwYdS)NSSL_CERT_DIR
SSL_CERT_FILE)r
get_default_verify_pathsrrcrBDefaultVerifyPathsrEnvironmentVarGuardCAPATHrcafiler&)rpathsenvs   r"test_get_default_verify_pathsz.BasicSocketTests.test_get_default_verify_pathss
,,..UQ'''eS%;<<<

*
,
,	3"(C#+C 0022EU\8444U\6222	3	3	3	3	3	3	3	3	3	3	3	3	3	3	3	3	3	3s0A.C++C/2C/rWindows specificc|td|td|ttj|t
tjdt
}dD]
}t|}||t|D]}||t|
t|d|\}}}||t|
|ddh||tttft!|ttfr||Ӑd}|
||dS)	NCAROOTrU)rrrx509_asn
pkcs_7_asn1.3.6.1.5.5.7.3.1)rHr
enum_certificatesrrWindowsErrorsetrBlistrDrrcbytesr	frozensetboolr\update)	r
trust_oids	storenamestoreelementrenctrust
serverAuths	         r"test_enum_certificatesz'BasicSocketTests.test_enum_certificatess--d33444--f55666)S%:;;;,(=rBBBUU
'	-	-I)))44E!!%... 
-
-%%gu555  Wq111#* c5%%dE222

cJ#=>>>%%eid-CDDDei%566-%%e,,,
-)


j*-----r$cd|td|ttj|t
tjdtd}||t|D]}||t|	t|d||dt||dddhdS)NrrUrrrr)
rHr
	enum_crlsrrrrBrrDrrcrr)rcrlsrs   r"test_enum_crlszBasicSocketTests.test_enum_crlss

d++,,,)S]333,
r:::}}T""dD)))	B	BG!!'5111S\\1---!!'!*e444MM'!*z<&@AAAA		B	Br$c0d}td}|||||jd||jd||jd||jd||tj|ttjdtj
d}|||||tj|ttjj
d|td5tj
ddddn#1swxYwYtd	D]}	tj
|}||jt||jt||jt||jttdf#t$rYwxYwtjd}|||||tj|tjd||tjd||td
5tjdddddS#1swxYwYdS)N)rTLS Web Server Authenticationrrrrrzunknown NID 100000izunknown object 'serverauth'
serverauth)r
_ASN1Objectrnid	shortnamelongnameoidrBrrfromnidrrangerCr]typefromname)rexpectedvaliobjs     r"test_asn1objectz BasicSocketTests.test_asn1objects)oo122h'''#&&&555'FGGG"5666c3?333*co|DDDo%%c**h'''c3?333*co&=rBBB

#
#J0D
E
E	,	,O##F+++	,	,	,	,	,	,	,	,	,	,	,	,	,	,	,t		B		BA
Bo--a00%%cgs333%%cmS999%%clC888%%cgT$ZZ/@AAAA




o&&'FGGh'''c3?33311,??JJJ112EFF!	#	#	#

#
#J0M
N
N	3	3O$$\222	3	3	3	3	3	3	3	3	3	3	3	3	3	3	3	3	3	3s6 F,,F03F0	I88
JJ NNNctd}|tjjtj|tjj||tjjjd|tjjjd|tjjjdtd}|tjj	tj|tjj	||tjj	jd|tjj	jd|tjj	jddS)Nrrrz1.3.6.1.5.5.7.3.2
clientAuth)
r
rrBPurposeSERVER_AUTHrrrrCLIENT_AUTH)rrs  r"test_purpose_enumz"BasicSocketTests.test_purpose_enumsdoo122ck5sGGG0#66604c:::0:LIII041	3	3	3oo122ck5sGGG0#66604c:::0:LIII041	3	3	3	3	3r$ctjtjtj}||j|t5}t|tj	dddn#1swxYwY|
t|jdt
tj}|t5}||dddn#1swxYwY|
t|jddS)Nrz!only stream sockets are supported)rrV
SOCK_DGRAMrrrrgrr
rrr]rrmrar)rrcxrUs    r"test_unsupported_dtlsz&BasicSocketTests.test_unsupported_dtlss}M&.&*;<<   


2
3
3	9rQ#-8888	9	9	9	9	9	9	9	9	9	9	9	9	9	9	9R\**,OPPPnnS455


2
3
3	rOOA															R\**,OPPPPPs$BB

B
7DD Dcb|t||dSrX)rr
cert_time_to_seconds)r
timestring	timestamps   r"cert_time_okzBasicSocketTests.cert_time_oks,11*==yIIIIIr$c|t5t|ddddS#1swxYwYdSrX)rrr
r)rrs  r"cert_time_failzBasicSocketTests.cert_time_fail s


z
*
*	1	1$$Z000	1	1	1	1	1	1	1	1	1	1	1	1	1	1	1	1	1	1sAA
Az)local time needs to be different from UTCc^|dd|dddS)NzMay  9 00:00:00 2007 GMTgCAJan  5 09:34:43 2018 GMTѓA)r rs r""test_cert_time_to_seconds_timezonez3BasicSocketTests.test_cert_time_to_seconds_timezone$s8
	
4lCCC4lCCCCCr$cLd}d}||||t|||d||d||d|d|d|d	|d
|d|dd
}|d||d||dd|dd|dd|d|dddS)Nr$r%)	cert_timezJan 05 09:34:43 2018 GMTzJaN  5 09:34:43 2018 GmTzJan  5 09:34 2018 GMTzJan  5 09:34:43 2018zJan  5 09:34:43 2018 UTCzJan 35 09:34:43 2018 GMTzJon  5 09:34:43 2018 GMTzJan  5 24:00:00 2018 GMTzJan  5 09:60:43 2018 GMTgWAzDec 31 23:59:60 2008 GMTzJan  1 00:00:00 2009 GMTzJan  5 09:34:59 2018 GMTiFOZzJan  5 09:34:60 2018 GMTiFOZzJan  5 09:34:61 2018 GMTiFOZzJan  5 09:34:62 2018 GMTzDec 31 23:59:59 9999 GMTg MB)r rr
rr")rrts
newyear_tss    r"test_cert_time_to_secondsz*BasicSocketTests.test_cert_time_to_seconds,s/

*b)))11J1GGLLL4b9994b9993444233367776777677767776777!
4jAAA4jAAA4jAAA4jAAA4jAAA6777	
4nEEEEEr$LC_ALLrUcd}|dkr|d|dd||dzdS)Nc,tjddS)Nz%b)	rrrr9rrrr)rstrftimerYr$r"local_february_namezNBasicSocketTests.test_cert_time_to_seconds_locale.<locals>.local_february_nameSs='BCCCr$febz>locale-specific month name needs to be different from C localezFeb  9 00:00:00 2007 GMTg`rAz  9 00:00:00 2007 GMT)lowerskipTestr r")rr1s  r" test_cert_time_to_seconds_localez1BasicSocketTests.test_cert_time_to_seconds_localeOs	D	D	D  &&((E11MM4
5
5
5	
4lCCC//114KKLLLLLr$ctjtj}||jt	j|}t
tjtjtj}||j|	t|f}tjtj
tjtjf}|||dS)Nr)rrVrrr	bind_portrr
r
connect_exrrECONNREFUSEDEHOSTUNREACH	ETIMEDOUTEWOULDBLOCKr)rserverportrrcerrorss      r"test_connect_ex_errorz&BasicSocketTests.test_connect_ex_error^sv~..%%%&v..V]6>::&)&7
9
9
9   
\\4,
'
'
 2EO
	


b&!!!!!r$ct\}}}t|}|5|tj|5}|t
|jf||dd||	dddddn#1swxYwYddddS#1swxYwYdS)Nrrrr$)
rThreadedEchoServerrrrrr>rrarerrrrr=rs      r"test_read_write_zeroz%BasicSocketTests.test_read_write_zeronsb3B3D3D0#N;;;
	1	1++FMOO<D,FF
1IJ		4-...  C000  a000	
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1	1	1	1	1	1	1	1	1	1	1	1	1	1	1	1	1	1	1s6)C&A4CC&C	C&C	C&&C*-C*N)4r|
__module____qualname__rrrrrrrrr(r7rSrcpython_onlyr\rmrsrignore_deprecationrrrrrrrrrs
skipUnlessr
CHANNEL_BINDING_TYPESrrrrplatformrrrrrr r"rr&r+run_with_localer5rArFrYr$r"rrKsf@@@(
E
E
E!!!
+++LLL4PPP:


*333:


*
N
N
N!
!
!
F
%%%000$;;;333j;;;:000+++***)))D9D9D9L???X)BBEGGDDGGD222
3
3
3X02DEE..FE.0X02DEEBBFEB%3%3%3N333"	Q	Q	QJJJ111XDFFDDFFD!F!F!FFWXr**MM+*M""" 	1	1	1	1	1r$rceZdZdZdZejedkddZdZ	dZ
dZd	Ze
d
Zejeejddd
ZdZdZdZdZejeddZdZdZejejddZdZdZdZ dZ!dZ"eje#j$dkddZ%eje#j$dkd ejee#d!d"d#Z&d$Z'd%Z(d&Z)d'Z*d(Z+d)Z,d*Z-d+S),ContextTestscbtD]q}t|r`tj5t|}dddn#1swxYwY||j|rtj5t}dddn#1swxYwY||jtj|	ttjd|	ttjddS)Nr*)	PROTOCOLSrerrr
rmrrdr_rr)rrdrUs   r"test_constructorzContextTests.test_constructor|sw!	9	9H))
9$35533..22C333333333333333  x888

+
-
-	#	#..""C	#	#	#	#	#	#	#	#	#	#	#	#	#	#	#s'7888*cnb999*cnb99999s#AA	A	
B33B7:B7c>ttj}|d|d|tjd5|dddddS#1swxYwYdS)NALLDEFAULTNo cipher can be selected^$:,;?*'dorothyx)r
rmrarSrrrrUs  r"test_cipherszContextTests.test_cipherssnnS455	"""

#
#CL2M
N
N	0	0OO.///	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0s/BBBrz+Test applies only to Python default ciphersclttj}|}|D]x}|d}|d||d||d||d||d|ydS)Nr!PSKSRPMD5RC43DES)r
rmraget_ciphersassertNotIn)rrUrsuiter!s     r"test_python_ciphersz ContextTests.test_python_cipherssnnS455//##	+	+E=DUD)))UD)))UD)))UD)))VT****
	+	+r$c
ttj}|dt	d|D}hd}||}|t|ddt|dt|dS)NAESGCMc3&K|]}|dV
dS)r!NrY).0r=s  r"	<genexpr>z0ContextTests.test_get_ciphers.<locals>.<genexpr>s&99!AfI999999r$>AES128-GCM-SHA256AES256-GCM-SHA384DHE-RSA-AES128-GCM-SHA256DHE-RSA-AES256-GCM-SHA384ECDHE-RSA-AES128-GCM-SHA256ECDHE-RSA-AES256-GCM-SHA384ECDHE-ECDSA-AES128-GCM-SHA256ECDHE-ECDSA-AES256-GCM-SHA384rz
got: z
expected: )
r
rmrarSrrbintersectionrErcsorted)rrUnamesrrss     r"test_get_cipherszContextTests.test_get_cipherssnnS455!!!99s'8'899999	
	
	
))(33q"YF5MM"Y"YvhGWGW"Y"Y	
	
	
	
	
r$cttj}tjtjztjz}|ttztztztzz}|||jtj5|xjtjzc_dddn#1swxYwY||tjz|jtj5|jtjz|_dddn#1swxYwY|||jd|_|d|jtjzdSr)r
rmraOP_ALLrrrCrFrDrErGrryrrr)rrUdefaults   r"test_optionszContextTests.test_optionssnnS455:/#/A%(CC$%'9:./	0	
#+...

+
-
-	+	+KK3?*KK	+	+	+	+	+	+	+	+	+	+	+	+	+	+	+3?2CK@@@

+
-
-	;	;;#/)99CK	;	;	;	;	;	;	;	;	;	;	;	;	;	;	;#+...CK3?*::;;;;;s$#C

CCD77D;>D;ctj5ttj}dddn#1swxYwY||jtjtj|_||jtjtj	|_||jtj	tj|_||jtj|
t5d|_dddn#1swxYwY|
t5d|_dddn#1swxYwYttj
}||jtj||jttj}||jtj	||jdSNrR)rrr
rmr_rrrrrrrrr`assertFalserrarHrZs  r"test_verify_mode_protocolz&ContextTests.test_verify_mode_protocolst

+
-
-	3	3..!122C	3	3	3	3	3	3	3	3	3	3	3	3	3	3	3	
#-888+#*;<<<+#*;<<<-#-888


y
)
)	#	#"CO	#	#	#	#	#	#	#	#	#	#	#	#	#	#	#


z
*
*	!	! CO	!	!	!	!	!	!	!	!	!	!	!	!	!	!	!nnS455#-888+,,,nnS455#*;<<<*+++++s5%AA	A	1EE	E	*E>>FFcttj}||jtjred|_||jd|_||jd|_||jdS|t5d|_ddddS#1swxYwYdSNTF)	r
rmrarHhostname_checks_common_nameHAS_NEVER_CHECK_COMMON_NAMEr}rAttributeErrorrZs  r" test_hostname_checks_common_namez-ContextTests.test_hostname_checks_common_namesnnS4557888*		7.2C+OOC;<<<.3C+S<===.2C+OOC;<<<<<"">22
7
726/
7
7
7
7
7
7
7
7
7
7
7
7
7
7
7
7
7
7s
CC#&C#cttj}tjjtjjtjjh}tjjtjjh}|	|j
||	|j|tjj|_
tjj|_|
|j
tjj|
|jtjjtjj|_
tjj|_|
|j
tjj|
|jtjjtjj|_|
|jtjjtjj|_|	|jtjjtjjtjjhtjj|_
|	|j
tjjtjjh|t 5d|_
dddn#1swxYwYt#tjrttj}|	|j
||
|jtjj|t 5tjj|_
dddn#1swxYwY|t 5tjj|_ddddS#1swxYwYdSdSr|)r
rmr`rrnrrlroTLSv1_3rrQrirrrrrrer)rrU
minimum_range
maximum_ranges    r"test_min_max_versionz!ContextTests.test_min_max_versionsnnS455

N,N N"



N,N"	

	


	
	
	
	


	
	
	
"n4!n4!7	
	
	
	
!7	
	
	
"n>!n2!A	
	
	
	
!5	
	
	
"n>!A	
	
	
"n>


^
!3>#93>;OP	
	
	

"n>


^
#S^%;<	
	
	



z
*
*	%	%"$C	%	%	%	%	%	%	%	%	%	%	%	%	%	%	%C011	;..!566CMM#]



#S^%E


"":..
G
G&)n&F#
G
G
G
G
G
G
G
G
G
G
G
G
G
G
G"":..
;
;&)n&:#
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;	;	;s6;KKK6NN N>O""O&)O&security_levelzrequires OpenSSL >= 1.1.0cttj}hd}||j|dS)N>rrrrr9r/)r
rmrarr)rrUsecurity_level_ranges   r"test_security_levelz ContextTests.test_security_level7sJ
nnS455 
 
 
	


c(*>?????r$cttj}ttdd}||jtj|ztj|_||jtjtj|_||jtjtj|_||jtjtj	|_||jtj	tjtj
z|_||jtjtj
z|t5d|_ddddS#1swxYwYdS)NVERIFY_X509_TRUSTED_FIRSTr)
r
rmr`r^rverify_flagsVERIFY_DEFAULTVERIFY_CRL_CHECK_LEAFVERIFY_CRL_CHECK_CHAINVERIFY_ALLOW_PROXY_CERTSVERIFY_X509_STRICTrr)rrUtfs   r"test_verify_flagszContextTests.test_verify_flagsJsnnS455
S5q
9
9)3+=+BCCC4)3+DEEE5)3+EFFF-)3+=>>>7)3+GHHH4s7MM)2S5KK	M	M	M


y
)
)	$	$#C	$	$	$	$	$	$	$	$	$	$	$	$	$	$	$	$	$	$s%F::F>F>cttj}|td|tt|t|jt|t5}|tdddn#1swxYwY|	|j
jtj|
tjd5|tdddn#1swxYwY|
tjd5|t dddn#1swxYwYttj}|t"t$|t"t$|t&t(|
tjd5|t"dddn#1swxYwY|
tjd5|t$dddn#1swxYwY|
tjd5|t$t"dddn#1swxYwYttj}|
tjd5|t*t$dddn#1swxYwY|t,t.|t,t.|t,t3t.|t"t4t.|t"t4t.|t"t4t3t.|
td5|t,ddddn#1swxYwY|tj5|t,ddddn#1swxYwY|
t6d	5|t,d
dzdddn#1swxYwYd}d
}d}d}d}d}d}	Gdd}
|t,||t,||t,||t,|
|t,|
j|tj5|t,|dddn#1swxYwY|
t6d	5|t,|dddn#1swxYwY|
td5|t,|dddn#1swxYwY|
t:d5|t,|	dddn#1swxYwY|t|	dS)NrPEM librzkey values mismatch)passwordzshould be a stringTbadpasszcannot be longeraictSrXKEY_PASSWORDrYr$r"getpass_unicodez:ContextTests.test_load_cert_chain.<locals>.getpass_unicodesr$c4tSrX)rrrYr$r"
getpass_bytesz8ContextTests.test_load_cert_chain.<locals>.getpass_bytess&&(((r$cNttSrX)rrrrYr$r"getpass_bytearrayz<ContextTests.test_load_cert_chain.<locals>.getpass_bytearrays\0022333r$cdS)NrrYrYr$r"getpass_badpassz:ContextTests.test_load_cert_chain.<locals>.getpass_badpasss9r$cddzS)NrirYrYr$r"getpass_hugez7ContextTests.test_load_cert_chain.<locals>.getpass_huges
;''r$cdS)NrrYrYr$r"getpass_bad_typez;ContextTests.test_load_cert_chain.<locals>.getpass_bad_types1r$c td)N
getpass error)	ExceptionrYr$r"getpass_exceptionz<ContextTests.test_load_cert_chain.<locals>.getpass_exceptionsO,,,r$ceZdZdZdZdS):ContextTests.test_load_cert_chain.<locals>.GetPassCallablectSrXrrs r"__call__zCContextTests.test_load_cert_chain.<locals>.GetPassCallable.__call__##r$ctSrXrrs r"getpasszBContextTests.test_load_cert_chain.<locals>.GetPassCallable.getpassrr$N)r|rGrHrrrYr$r"GetPassCallablers2
$
$
$
$
$
$
$
$r$rzmust return a stringr)r
rmr`rrrrr`rrrrrrrBADCERT	EMPTYCERTONLYCERTONLYKEYBYTES_ONLYCERT
BYTES_ONLYKEYr+CERTFILE_PROTECTEDrrrONLYKEY_PROTECTEDrrr)rrUrrrrrrrrrs           r"test_load_cert_chainz!ContextTests.test_load_cert_chain^s
nnS455Hd333Hh777)S%8(KKK


w
'
'	12000	1	1	1	1	1	1	1	1	1	1	1	1	1	1	1+U\:::

#
#CL)
<
<	)	)(((	)	)	)	)	)	)	)	)	)	)	)	)	)	)	)

#
#CL)
<
<	+	+	***	+	+	+	+	+	+	+	+	+	+	+	+	+	+	+nnS455Hg...Xw???^]KKK

#
#CL)
<
<	*	*)))	*	*	*	*	*	*	*	*	*	*	*	*	*	*	*

#
#CL)
<
<	)	)(((	)	)	)	)	)	)	)	)	)	)	)	)	)	)	)

#
#CL)
<
<	D	D(CCC	D	D	D	D	D	D	D	D	D	D	D	D	D	D	DnnS455

#
#CL2G
H
H	8	8
w777	8	8	8	8	8	8	8	8	8	8	8	8	8	8	8	.FFF.9L9L9N9NOOO.%.|/B/B/D/D%E%E		G	G	GH&7FFFH&79L9L9N9NOOOH&7%l&9&9&;&;<<	>	>	>

#
#I/C
D
D	C	C 2TBBB	C	C	C	C	C	C	C	C	C	C	C	C	C	C	C


s|
,
,	H	H 2YGGG	H	H	H	H	H	H	H	H	H	H	H	H	H	H	H

#
#J0B
C
C	L	L
 2TF]KKK		L	L	L	L	L	L	L	L	L	L	L	L	L	L	L	 	 	 	)	)	)	4	4	4				(	(	(				-	-	-	$	$	$	$	$	$	$	$
	.III.GGG.9JKKK.9J9JKKK.%4_%6%6%>		@	@	@


s|
,
,	N	N 2_MMM	N	N	N	N	N	N	N	N	N	N	N	N	N	N	N

#
#J0B
C
C	K	K 2\JJJ	K	K	K	K	K	K	K	K	K	K	K	K	K	K	K

#
#I/E
F
F	O	O 2=MNNN	O	O	O	O	O	O	O	O	O	O	O	O	O	O	O

#
#I
?
?	P	P 2=NOOO	P	P	P	P	P	P	P	P	P	P	P	P	P	P	P	H/@AAAAAs#C

CCEE

E
1FFF	I00I47I4KK	K-"LL"L*!NNN4TT!$T!U00U47U4 WW	W/[[[>\''\+.\+
]66]:=]:__	_	cttj}|t|td|t
|t
d|t|j|t|jddd|t5}|tdddn#1swxYwY|
|jjtj
|tjd5|t dddn#1swxYwY|tt"|tt$|t|jdddS)N)rr&rr&T)r
rmr`rrBYTES_CERTFILErrr`rrrrrrrrrBYTES_CAPATHrrUrs   r"test_load_verify_locationsz'ContextTests.test_load_verify_locationssnnS455!!(+++!!$!???!!.111!!!EEE)S%>???)S%>dDQQQ


w
'
'	72%%o666	7	7	7	7	7	7	7	7	7	7	7	7	7	7	7+U\:::

#
#CL)
<
<	/	/%%g...	/	/	/	/	/	/	/	/	/	/	/	/	/	/	/!!(F333!!(<!@@@	
)S%>dKKKKKs$.DDD*FFFc
tt5}|}dddn#1swxYwYt|}tt
5}|}dddn#1swxYwYt|}ttj}||	dd|
|||	dd|
|||	dd|
|||	ddttj}d||f}|
|||	ddttj}d|d|d	|d
g}|
d|||	ddttj}|
||
|||	dd|
|||	ddttj}d||f}|
|||	ddttj}|t|j
t|tjd5|
d
dddn#1swxYwY|tjd5|
dddddS#1swxYwYdS)Nx509_carcadatarrrheadotheragaintailr$z4no start line: cadata does not contain a certificatebrokenz6not enough data: cadata does not contain a certificatesbroken)rKr+rLr
r,CAFILE_NEURONIOrmrarcert_store_statsrrrrobjectrr)rrN
cacert_pem
cacert_derneuronio_pemneuronio_derrUcombineds        r"test_load_verify_cadataz$ContextTests.test_load_verify_cadatasJ
-
 
 	"AJ	"	"	"	"	"	"	"	"	"	"	"	"	"	"	"--j99

/
"
"	$a6688L	$	$	$	$	$	$	$	$	$	$	$	$	$	$	$//==nnS455--//	:A>>>!!!444--//	:A>>>!!!666--//	:A>>>!!!666--//	:A>>>nnS45599j,788!!!222--//	:A>>>nnS455Jw &*!!8)<)<!===--//	:A>>>nnS455!!!444!!!666--//	:A>>>!!!444--//	:A>>>nnS45588Z677!!!222--//	:A>>>nnS455)S%>vNNN

#
#LB

	7	7
%%X%666		7	7	7	7	7	7	7	7	7	7	7	7	7	7	7

#
#LD

	8	8
%%Y%777		8	8	8	8	8	8	8	8	8	8	8	8	8	8	8	8	8	8sB6::/BBBR%%R),R)S44S8;S8)Avoid mixing debug/release CRT on Windowscttj}|tt
jdkr|t|t|j|t|jd|t5}|tdddn#1swxYwY||j
jtj|tj5}|t"ddddS#1swxYwYdS)Nnt)r
rmr`load_dh_paramsDHFILErr!BYTES_DHFILErrrMrrrrrrrrs   r"test_load_dh_paramsz ContextTests.test_load_dh_paramssnnS4556"""
7d??|,,,)S%7888)S%7>>>


0
1
1	0R///	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0+U\:::


s|
,
,	)x(((	)	)	)	)	)	)	)	)	)	)	)	)	)	)	)	)	)	)s$C++C/2C/?E''E+.E+ctjtjhD]P}t|}||ddddddddddddQdS)Nr)numberrconnect_goodconnect_renegotiateacceptaccept_goodaccept_renegotiatehitsmissestimeouts
cache_full)r
rar`rmr
session_statsrs   r"test_session_statszContextTests.test_session_statss-s/FG		E..''CS..00 !'( &'33



		r$cvttj}|dSrX)r
rmraset_default_verify_pathsrZs  r"test_set_default_verify_pathsz*ContextTests.test_set_default_verify_paths"s0nnS455$$&&&&&r$z#ECDH disabled on this OpenSSL buildcttj}|d|d|t
|j|t
|jd|t|jd|t|jddS)N
prime256v1s
prime256v1foofoo)r
rmr`set_ecdh_curverrrrZs  r"test_set_ecdh_curvez ContextTests.test_set_ecdh_curve(snnS455<(((=))))S%7888)S%7>>>*c&8%@@@*c&8&AAAAAr$cttj}|t|j|t|jd|t|jd|t|j|d}|d||dS)Nr9rUcdSrXrY)r
servernamerUs   r"
dummycallbackz5ContextTests.test_sni_callback.<locals>.dummycallback;Dr$)r
rmr`rrset_servername_callback)rrUrs   r"test_sni_callbackzContextTests.test_sni_callback2snnS455	
)S%@AAA)S%@!DDD)S%@"EEE)S%@#FFF			##D)))##M22222r$cttj}|fd}||t	j|}~~t
j||ddS)NcdSrXrY)rrrUcycles    r"rz>ContextTests.test_sni_callback_refcycle.<locals>.dummycallbackDrr$)	r
rmr`rrWrXgccollectr)rrUrr[s    r"test_sni_callback_refcyclez'ContextTests.test_sni_callback_refcycle@snnS4557:				##M222
[





bbddD!!!!!r$cJttj}||dddd|t||dddd|t||dddd|t||dddddS)Nr)rcrlx509rr)	r
rmrarrrrrr+rZs  r"test_cert_store_statsz"ContextTests.test_cert_store_statsLs(nnS455--//!Q//	1	1	1H%%%--//!Q//	1	1	1!!(+++--//!Q//	1	1	1!!-000--//!Q//	1	1	1	1	1r$cttj}||g|t||g|t||ddddddddgtt5}|	}dddn#1swxYwYt
|}||d|gdS)	N)))r-zRoot CA))rzhttp://www.cacert.org))r.zCA Cert Signing Authority))rzsupport@cacert.orgzMar 29 12:29:49 2033 GMTzMar 30 12:29:49 2003 GMT00)z!https://www.cacert.org/revoke.crlr)r3r4r5r6r>r7r9T)r
rmrarget_ca_certsrrr+rKrLr,)rrUrNr3ders     r"test_get_ca_certszContextTests.test_get_ca_certsZsnnS455))++R000!!(+++))++R000!!-000))++D55"'ME

	
	
	-
 
 	A&&((C															&&s++))$//#77777s.DDDcttj}|ttj}|tjj|ttj}|tjjttj}|t|jd|t|jddS)Nr)	r
rmraload_default_certsrrrrrrZs  r"test_load_default_certsz$ContextTests.test_load_default_certsvsnnS455   nnS455s{6777   nnS455s{6777nnS455)S%;TBBB)S%;]KKKKKr$rznot-Windows specificcNttj}tj5}t
|d<t|d<|||	ddddddddS#1swxYwYdS)Nrrrr)rrr)
r
rmrarrrrrrr)rrUrs   r"test_load_default_certs_envz(ContextTests.test_load_default_certs_envsnnS455

*
,
,	Z"(C#+C ""$$$S1133QVW5X5XYYY		Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	Z	ZsABB!Brrz3Debug build does not share environment between CRTscttj}||}ttj}tj5}t|d<t|d<||dxxdz
cc<|	||ddddS#1swxYwYdS)Nrrrr)
r
rmrarrrrrrr)rrUstatsrs    r"#test_load_default_certs_env_windowsz0ContextTests.test_load_default_certs_env_windowssnnS455   $$&&nnS455

*
,
,	<"(C#+C ""$$$&MMMQMMMS1133U;;;	<	<	<	<	<	<	<	<	<	<	<	<	<	<	<	<	<	<sA!C22C69C6c||jtjztjtdkr(||jtztt
dkr(||jt
zt
tdkr(||jtzttdkr*||jtztdSdSr)rryr
rrCrDrErFrZs  r"_assert_context_optionsz$ContextTests._assert_context_optionsss6HHH!!S[+<<.
0
0
0q  S[+;;-
/
/
/""S[+==/
1
1
1&!++S[+FF8
:
:
:
:
:,+r$ct}||jtj||jtj||j|	|tt5}|}dddn#1swxYwYttt|}||jtj||jtj|	|ttjj}||jtj||jtj|	|dS)N)rr&r)r
create_default_contextrrdrarrrHrrrKrrLrrrr`r)rrUrNrs    r"test_create_default_contextz(ContextTests.test_create_default_contexts((**s'>???#*;<<<*+++$$S)))
*

	VVXXF															((
606)88s'>???#*;<<<$$S)))(()@AAs'>???#-888$$S)))))s'CCCctt}||jtj||jtj||j|	|ttjrtj
5ttj}dddn#1swxYwY||jtj||jtj|	|tj
5ttjtjd}dddn#1swxYwY||jtj||jtj||j|	|ttjj}||jtj||jtj|	|dS)NT)rr)purpose)r
_create_stdlib_contextrrdrarrr}rrrerrrrvrrHrrr`rZs  r"test__create_stdlib_contextz(ContextTests.test__create_stdlib_contexts((**s'>???#-888+,,,$$S)))C.//	. /11
E
E001CDD
E
E
E
E
E
E
E
E
E
E
E
E
E
E
ES\3+=>>>S_cm<<<((---

+
-
-		,,$+#-C																
s';<<<#*;<<<*+++$$S)))((1H(IIs'>???#-888$$S)))))s$?%C00C47C4-2F++F/2F/c tj5ttj}dddn#1swxYwY||j||jtj	d|_|
|j||jtjd|_tj|_||j||jtjd|_tj	|_d|_||j||jtj	d|_|
|j||jtjd|_tj|_d|_||j||jtjd|_|
|j||jtj|
t5tj	|_dddn#1swxYwYd|_||jtj	|_||jtj	dSr)rrr
rmr_r}rrrrrHrrrrrZs  r"test_check_hostnamez ContextTests.test_check_hostnames

+
-
-	3	3..!122C	3	3	3	3	3	3	3	3	3	3	3	3	3	3	3+,,,#-888"*+++#*;<<<"++,,,#*;<<<#-"+,,,#-888!*+++#*;<<<"+"+,,,#*;<<<!*+++#*;<<<

z
*
*	,	,!mCO	,	,	,	,	,	,	,	,	,	,	,	,	,	,	,"+,,,-#-88888s#%AA	A	J,,J03J0cttj}||j||jtjttj}|	|j||jtj
dSrX)r
rmrarHrrrrr`r}rrZs  r"test_context_client_serverz'ContextTests.test_context_client_serversnnS455*+++#*;<<<nnS455+,,,#-88888r$c.Gddtj}Gddtj}ttj}||_||_|tjd5}|	||dddn#1swxYwY|
ttd}|	||dS)NceZdZdS);ContextTests.test_context_custom_class.<locals>.MySSLSocketNr|rGrHrYr$r"MySSLSocketr"Dr$r$ceZdZdS);ContextTests.test_context_custom_class.<locals>.MySSLObjectNr#rYr$r"MySSLObjectr'r%r$r(Tr)r
r	SSLObjectrmr`sslsocket_classsslobject_classrrrBwrap_bior)rr$r(rUrrs      r"test_context_custom_classz&ContextTests.test_context_custom_classsG					#-								#-			nnS455))
__V]__$_
?
?	54!!$444	5	5	5	5	5	5	5	5	5	5	5	5	5	5	5ll3==??CMMOOlNNc;/////sB..B25B2cttj}||jdd|_||jdd|_||jd|t5d|_dddn#1swxYwY|t5d|_dddn#1swxYwYttj}||jd|t5d|_ddddS#1swxYwYdS)Nrrrr)	r
rmr`rnum_ticketsrrrrarZs  r"test_num_tickestzContextTests.test_num_tickest&snnS455!,,,!,,,!,,,


z
*
*	!	! CO	!	!	!	!	!	!	!	!	!	!	!	!	!	!	!


y
)
)	#	#"CO	#	#	#	#	#	#	#	#	#	#	#	#	#	#	#nnS455!,,,


z
*
*	 	 CO	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 s6B22B69B6C++C/2C/E$$E(+E(N).r|rGrHrTr[rsrKrrervrzr~rrJrrRr
rmrrrrrskipIfPy_DEBUG_WIN32rrrrrrrrr
r
rrMrrrrrrrr-r0rYr$r"rPrPzs
:
:
:000X/14FHH	+	+HH	+


&<<<&,,,0777L;L;L;\X 011#
@
@	
@$$$(QBQBQBfLLL&=8=8=8~X_^%PQQ))RQ)"'''X'LMMBBNMB333
"
"
"1118888
L
L
LX_S\W,.DEEZZFEZX02DEEX_WWS"4557lmm<<nmFE<
:
:
:*******<*9*9*9X	9	9	9000      r$rPcTeZdZdZejeddZdZdZ	dS)
SSLErrorTestscjtdd}|t|d||jdtdd}|t|d||jddS)Nrr)r
rrr]rSSLZeroReturnError)res  r"test_strzSSLErrorTests.test_str:sLLE""Q'''!$$$""1e,,Q'''!$$$$$r$rcttj}|tj5}|tdddn#1swxYwY||jj	d||jj
dt|j}||
d|dS)NPEM
NO_START_LINEz"[PEM: NO_START_LINE] no start line)r
rmrarrrrrrlibraryreasonr]rHr.)rrUrrs    r"test_lib_reasonzSSLErrorTests.test_lib_reasonDsnnS455


s|
,
,	)x(((	)	)	)	)	)	)	)	)	)	)	)	)	)	)	)-u555,o>>>%IJJANNNNNsA++A/2A/cttj}d|_tj|_t
jd5}t
j|	}|
d||dd5}|tj
5}|dddn#1swxYwYt|j}||d|||jjtjdddn#1swxYwYddddS#1swxYwYdS)NFrrz%The operation did not complete (read))r
rmrarrrrrcreate_connectionrsetblockingrrSSLWantReadErrordo_handshaker]rrHr.rrSSL_ERROR_WANT_READ)rrUrrrs     r"
test_subclasszSSLErrorTests.test_subclassOsnnS455"-

!"2
3
3		Nq(99A
MM%   E5II
NQ&&s';<<%NN$$$%%%%%%%%%%%%%%%%%-T U UWXYYY  !3S5LMMM

N
N
N
N
N
N
N
N
N
N
N
N
N
N
N		N		N		N		N		N		N		N		N		N		N		N		N		N		N		N		N		N		Ns\AE<% E$C&E$&C**E$-C*.A*E$E<$E(	(E<+E(	,E<<FFc
t}|t5|ttddddn#1swxYwY|t5|ttddddn#1swxYwY|t5|ttdddddS#1swxYwYdS)NrUrz.example.orgzexample.orgevil.com)r
rrrr,rrrZs  r"test_bad_server_hostnamez&SSLErrorTests.test_bad_server_hostnameas((**


z
*
*	-	-LL#--//)+

-
-
-	-	-	-	-	-	-	-	-	-	-	-	-	-	-	-

z
*
*	9	9LL#--//)7

9
9
9	9	9	9	9	9	9	9	9	9	9	9	9	9	9	9

y
)
)	D	DLL#--//)B

D
D
D	D	D	D	D	D	D	D	D	D	D	D	D	D	D	D	D	D	Ds8ABBB,AC??DD$AE88E<?E<N)
r|rGrHr8rsr1r2r>rErGrYr$r"r4r48sx%%%X_^%PQQOORQONNN$
D
D
D
D
Dr$r4c,eZdZdZdZdZdZdZdS)MemoryBIOTestsct}|d||d||d|d|d||d||d|d||dd||dd	||dddS)
Nrr$barsfoobarbazrsbarz)r
rrrrLrbios  r"test_read_writezMemoryBIOTests.test_read_writeps5mmoo		&V,,,S)))		&		&Y///S)))		&!e,,,!d+++!c*****r$c:t}||j||d||j|d||j|||j||dd||j||dd||j||d||jdS)Nr$rrsforo)	r
rr}eofrrLr	write_eofrHrNs  r"test_eofzMemoryBIOTests.test_eof~sFmmoo!!!S)))!!!		&!!!

!!!!e,,,!!!!d+++   S)))     r$cFt}||jd|d||jdtdD]8}|d||jd|z
dz
9tdD]5}|d||j|dz6|||jddS)Nrrrrr^)r
rrpendingrrrL)rrOr
s   r"test_pendingzMemoryBIOTests.test_pendingsmmooa(((		&a(((q	1	1AHHQKKKS[!A#a%0000q	/	/AIIdOOOS[!A#....


a(((((r$ct}|d||d|td||d|t
d||dt
td}|ddd}|t5|t
|ddddS#1swxYwYdS)NrrKrLs	noncontig)	r
rrrrLr
memoryviewrBufferError)rrOmnoncontig_writables    r"test_buffer_typesz MemoryBIOTests.test_buffer_typessgmmoo		&V,,,		)F##$$$V,,,		*V$$%%%V,,,y..//tttW


{
+
+	6	6IIj!344555	6	6	6	6	6	6	6	6	6	6	6	6	6	6	6	6	6	6s,#EE #E c@t}|t|jd|t|jd|t|jd|t|jddS)NrTr)r
rrrrrNs  r"test_error_typeszMemoryBIOTests.test_error_typess}mmoo)SY666)SY555)SY555)SY22222r$N)r|rGrHrPrUrXr_rarYr$r"rIrIns_+++!!! )))66633333r$rIceZdZdZdZdS)SSLObjectTestsct}|td5t||ddddS#1swxYwYdSr)r
rrrr)rNs  r"rz SSLObjectTests.test_private_initsmmoo

#
#I/C
D
D	$	$MM#s###	$	$	$	$	$	$	$	$	$	$	$	$	$	$	$	$	$	$sAA"%A"ct\}}}t}t}t}t}||||}|||d}	t	dD]}
	|n#tj$rYnwxYw|jr'||		|	n#tj$rYnwxYw|jr'||	||	|
tj5|dddn#1swxYwY||	|	||	|dS)NrTrr/)rr
rr,rrCrBrWrrLrunwrap)r
client_ctx
server_ctxrc_inc_outs_ins_outclientr=_s           r"test_unwrapzSSLObjectTests.test_unwrapsK+:+<+<(
J}}

}}

$$T5($KK$$T5d$CCq	)	)A
##%%%%'



}
)

5::<<(((
##%%%%'



}
)

5::<<(((

s3
4
4		MMOOO															
	

5::<<   

	

5::<<   

s69CC C D''D98D92GGGN)r|rGrHrrorYr$r"rcrcs2$$$
(((((r$rcceZdZ	dZdZdZdZdZdZdZ	dZ
d	Zej
ejd
kddZd
ZdZdZdZdZdZdZdZdZdZdZdZdS)SimpleBackgroundTestscttj|_|jt
t
|j}||t|j	f|_
dS)NrC)r
rmr`rrrrDenterContextrr>server_addr)rr=s  r"setUpzSimpleBackgroundTests.setUpsl!nnS-DEE++O<<<#D,?@@@&!!! &+.r$cttjtjtj5}||j|i||	|j
dddn#1swxYwYttjtjtjt5}||j|
||	|j
ddddS#1swxYwYdS)Nrrr)rrrVr
rrrtrgetpeercertr}rrrrHrs  r"test_connectz"SimpleBackgroundTests.test_connects
fmFN;;&)m555	,89
IId&'''R111Q]+++		,	,	,	,	,	,	,	,	,	,	,	,	,	,	,fmFN;;&)&7%/111	,45
IId&'''OOAMMOO,,,Q]+++	,	,	,	,	,	,	,	,	,	,	,	,	,	,	,	,	,	,s%AB!!B%(B%)AEEEcttjtjtj}||j|tjd|j	|j
dS)Nrcertificate verify failed)rrrVr
rrrrrrrtrs  r"test_connect_failz'SimpleBackgroundTests.test_connect_failss
V]6>::&)&7
9
9
9   s|-H y$*:	<	<	<	<	<r$c^ttjtjtjt
}||j|d|	|j
||dS)Nrwr)
rrrVr
rrrrrr8rtrHrxrs  r"test_connect_exz%SimpleBackgroundTests.test_connect_exsV]6>::&)&7%/
1
1
1	
   ALL)9::;;;

(((((r$cttjtjtjt
d}||j|d|	|j
}||dtj
tjftjg|ggd		|nV#tj$rtj|gggdYn,tj$rtjg|ggdYnwxYwl||dS)NF)rrrrro)rrrVr
rrrrrAr8rtrrEINPROGRESSr<selectrCrBSSLWantWriteErrorrHrxrrr?s   r"test_non_blocking_connect_exz2SimpleBackgroundTests.test_non_blocking_connect_ex
sZ
V]6>::&)&7%/49
;
;
;	
   	

e
\\$*
+
+

b1e/1BCDDD
b1#r3'''	0
0   '
0
0
0
qc2r3/////(
0
0
0
b1#r3/////
0
	0	


(((((sC$$'D6
&D65D6cttj}d|_tj|_|tjtj5}|	|j
|i|dddn#1swxYwY|tjtjd5}|	|j
dddn#1swxYwYtj
|_|t|tjtj5}|	|j
|}||ddddS#1swxYwYdS)NFdummyr)r
rmrarrrrrrVrrtrrxrrrrHrrUrrs    r"test_connect_with_contextz/SimpleBackgroundTests.test_connect_with_context's1nnS455"-
__V]6>::
;
;	2q
IId&'''R111	2	2	2	2	2	2	2	2	2	2	2	2	2	2	2__V]6>::,355	(89
IId&'''	(	(	(	(	(	(	(	(	(	(	(	(	(	(	(+!!*---
__V]6>::
;
;	"q
IId&'''==??DOOD!!!	"	"	"	"	"	"	"	"	"	"	"	"	"	"	"	"	"	"s8.AB==CC;D""D&)D&	AGG!GcJttj}|t	jtjt}||j|	tj
d|j|jdS)Nrr{)
r
rmrarrrVrrrrrrrt)rrUrs   r"test_connect_with_context_failz4SimpleBackgroundTests.test_connect_with_context_fail;snnS455OOM&.))4


	
   s|-H !	4+;	=	=	=	=	=r$cPttj}|t|t
jtjt5}|	|j
|}||dddn#1swxYwYttj}|t|t
jtjt5}|	|j
|}||ddddS#1swxYwYdS)Nrr)r
rmrarrrrrVrrrtrxrHrrs    r"test_connect_capathz)SimpleBackgroundTests.test_connect_capathHsnnS455!!!000
__V]6>::-EGG	"JK
IId&'''==??DOOD!!!		"	"	"	"	"	"	"	"	"	"	"	"	"	"	"nnS455!!!666
__V]6>::-EGG	"JK
IId&'''==??DOOD!!!		"	"	"	"	"	"	"	"	"	"	"	"	"	"	"	"	"	"s&8ACCC
AFF"Fctt5}|}dddn#1swxYwYt|}ttj}|||tj	tj
t5}||j
|}||dddn#1swxYwYttj}|||tj	tj
t5}||j
|}||ddddS#1swxYwYdS)Nrr)rKrrLr
r,rmrarrrrVrrrtrxrH)rrNr3r	rUrrs       r"test_connect_cadataz)SimpleBackgroundTests.test_connect_cadata_sO
*

	&&((C															&&s++nnS455!!!---
__V]6>::-EGG	"JK
IId&'''==??DOOD!!!		"	"	"	"	"	"	"	"	"	"	"	"	"	"	"nnS455!!!---
__V]6>::-EGG	"JK
IId&'''==??DOOD!!!		"	"	"	"	"	"	"	"	"	"	"	"	"	"	"	"	"	"s26::
ADD!$D!AG++G/2G/rz*Can't use a socket as a file under Windowscbttjtj}||j|}|}|tj	|d|tj|t5}tj	|ddddn#1swxYwY||jjt jdSr)rrrVrrtfilenomakefilerrrLrrrr`rrrEBADF)rrZfdrNr7s     r"test_makefile_closez)SimpleBackgroundTests.test_makefile_closets
fmFN;;
<
<


4#$$$
YY[[KKMM				
A








w
'
'	1GBNNN															*EK88888sC::C>C>cPtjtj}||j|dt|tjd}||j	d}		|dz
}|
nT#tj$rtj|gggYn+tj
$rtjg|ggYnwxYwotjr$t jd|zdSdS)NFrrrTrz9
Needed %d calls to do_handshake() to establish session.
)rrVrrtrArr
rrrrCrBrrrrrrr)rrcounts   r"test_non_blocking_handshakez1SimpleBackgroundTests.test_non_blocking_handshakesEM&.))			$"###	

eQ&)m49
;
;
;	
   	+
+
   '
+
+
+
qc2r*****(
+
+
+
b1#r*****
+	+?	dJZ]bbccccc	d	dsB""&C2
%C21C2c:t|g|jRdtidS)Nr)_test_get_server_certificatertrrs r"test_get_server_certificatez1SimpleBackgroundTests.test_get_server_certificates)$TND,<NNN:NNNNNr$c	|j\}}gfd}|j|t||f}|s|d|d|dt||ft}|s|d|d|dtjr)tj
d|d|d|d|||gdS)	Nc2|dSrX)append)ssl_sockserver_nameinitial_contextserver_namess   r"
servername_cbzLSimpleBackgroundTests.test_get_server_certificate_sni.<locals>.servername_cbs,,,,,r$No server certificate on :!r
Verified certificate for  is
r)
rtrrr
get_server_certificater0rrrrrrr)rrr>rr3rs     @r"test_get_server_certificate_sniz5SimpleBackgroundTests.test_get_server_certificate_snis(%
d	-	-	-	-	-33MBBB(($66	HIII444FGGG(($
(KK	HIII444FGGG?	^JDDDRVRVRVX[X[X[\]]]d|44444r$c*t|g|jRdSrX)!_test_get_server_certificate_failrtrs r" test_get_server_certificate_failz6SimpleBackgroundTests.test_get_server_certificate_fails#	*$B1ABBBBBBr$cd}|j||tj5t
|jtdddddS#1swxYwYdS)Nc.tjddS)N皙?)rsleeprrrs   r"rzPSimpleBackgroundTests.test_get_server_certificate_timeout.<locals>.servername_cbsJsOOOOOr$皙?)rrr)	rrrrrrr
rrtr)rrs  r"#test_get_server_certificate_timeoutz9SimpleBackgroundTests.test_get_server_certificate_timeouts			33MBBB


v~
.
.	4	4&&t'7*/2
'
4
4
4	4	4	4	4	4	4	4	4	4	4	4	4	4	4	4	4	4	4s(A22A69A6cttjtjtjd5}||jdddn#1swxYwYttjtjtjd5}||jdddn#1swxYwY|tjd5tjtj5}t|tjd}||jdddn#1swxYwYddddS#1swxYwYdS)NrV)rrrWrXrY)	rrrVr
rrrtrr)rrrs   r"r[z"SimpleBackgroundTests.test_cipherssG
fmFN;;'*}eEEE	(HI
IId&'''	(	(	(	(	(	(	(	(	(	(	(	(	(	(	(fmFN;;'*}iIII	(LM
IId&'''	(	(	(	(	(	(	(	(	(	(	(	(	(	(	(
#
#CL2M
N
N	,	,v~..
,$$T.1mEWYYY		$*+++
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,	,	,	,	,	,	,	,	,	,	,	,	,	,	,	,	,	,	,sYA  A$'A$#C

CC5E/7EE/E	E/E	E//E36E3cZttj}|t||g|tjtj	d5}|
|j|}|
|dddn#1swxYwY|t|ddS)Nrr/rr)r
rmrarrrrrrrVrrtrxrHrcrs    r"test_get_ca_certs_capathz.SimpleBackgroundTests.test_get_ca_certs_capaths2nnS455!!!000))++R000
__V]6>::-8::	"=>
IId&'''==??DOOD!!!		"	"	"	"	"	"	"	"	"	"	"	"	"	"	"
	
S--//00!44444sAC++C/2C/cttj}|tttj}|ttjt
j}||d5}||j	|
|j||
|jj|||_|
|j||
|jj|ddddS#1swxYwYdS)Nrr/r)
r
rmrarrrrVrrrtrr_sslobj)rctx1ctx2rrZs     r"test_context_setgetz)SimpleBackgroundTests.test_context_setgets]~~c566""&"111~~c566""&"111M&.))


a

=
=	4JJt'(((MM"*d+++MM"*,d333BJMM"*d+++MM"*,d333
	4	4	4	4	4	4	4	4	4	4	4	4	4	4	4	4	4	4s4BEE Ec|dtj}d}tj|D]}	d}
|dz
}	||}nC#tj$r1}|jtjtjfvr|j}
Yd}~nd}~wwxYw|	}
|
|
|
nR|
tjkrA|d}
|
r||
|
tjr)tjd||jfz|S)Nrrrriz"Needed %d calls to complete %s().
)rr
SHORT_TIMEOUT
busy_retryr
rrrDSSL_ERROR_WANT_WRITErLsendallrarrTrrrr|)rrincomingoutgoingrwrurrrrrnrretr7bufs              r"ssl_io_loopz!SimpleBackgroundTests.ssl_io_loopsd**Y(=>>#G,,	)	)AEQJE
 dDk<
 
 
 73#:#&#;#===	
 --//CLL}#111ii&&)NN3''''&&(((?	7JB %t}56
7
7
7
sAB'BBctjtj}||j||jt}t}ttj	}|
|j||j
tj|t |||dt$}||jj||||||||t6|jdtjvr(||d|||||j |
||||!||
|dtjvr(|
|d	|||||j"n#tj#$rYnwxYw|tj$|j%ddS)NFrr)&rrVrrrrtr
rrmrarHrrrrrrr,rrrownerrcipherr9shared_ciphersrrrxrLrrrCassertIsNotNonerfSSLSyscallErrorrr)rrrrrUsslobjs      r"test_bio_handshakez(SimpleBackgroundTests.test_bio_handshake
	s}V^,,
###T%&&&==??==??nnS455*+++#*;<<<!!*---h%688

fn*F333&--//***&..**+++&//11222*f&89993444f88FFGGGx63FGGG

(((&//11222V^^--...**,,---3444OOF66|DDEEE	T8Xv}EEEE"			
D		
#,f=====s:LL*)L*ctjtj}||j||jt}t}ttj	}d|_
tj|_|
||d}|||||jd}|||||j||||||jd}||d|||||jdS)NFFOO
sfoo
)rrVrrrrtr
rrmrarrrr,rrCrrLrrf)rrrrrUrreqrs        r"test_bio_read_write_dataz.SimpleBackgroundTests.test_bio_read_write_data/	s%}V^,,
###T%&&&==??==??nnS455"-h%88x63FGGGx6<EEEtXxdKKh'''x6=AAAAAr$ct\}}}tjtj5}||jt
}t
}||||}|||||j	|
|t
j|j
ddddS#1swxYwYdS)Nr)rrrVrrtr
rr,rrCrTrSSLEOFErrorrL)rrrrrrrrs        r"test_transport_eofz(SimpleBackgroundTests.test_transport_eof@	s$3B3D3D0
]6>
*
*
	<dLL)***}}H}}H#,,Xx=E-GGFT8Xv7JKKK
   cov{;;;
	<
	<
	<
	<
	<
	<
	<
	<
	<
	<
	<
	<
	<
	<
	<
	<
	<
	<sB;C99C=C=N)r|rGrHruryr|r~rrrrrrsr1rr!rrrrrrr[rrrrrrrYr$r"rqrqsI///
,
,
,<<<))))))4"""(==="""."""*X_RW_&RSS99TS9$ddd*OOO555*CCC
444,,,
5
5
5
4
4
4   D > > >DBBB"<<<<<r$rqnetworkc~eZdZdZejejdej	ddZ
dS)NetworkedTestscJtjt5tt	jtjtjd}||j	|
d|tdf}|dkr|dn%|tjkr|d||tjtjfddddS#1swxYwYdS)NFrgHz>rz!REMOTE_HOST responded too quicklyzNetwork unreachable.)rtransient_internetREMOTE_HOSTrrrVr
rrrrpr8r4rENETUNREACHrEAGAINr<rs   r"test_timeout_connect_exz&NetworkedTests.test_timeout_connect_exR	sT
-k
:
:	A	A v~!>!>*-*;8=???A
OOAG$$$
LL###{C011BQww

ABBBBu(((

4555MM"u|U->?@@@	A	A	A	A	A	A	A	A	A	A	A	A	A	A	A	A	A	AsC1DDDz
Needs IPv6walltimectjd5t|ddt|ddddddS#1swxYwYdS)Nzipv6.google.comr)rrrrrs r" test_get_server_certificate_ipv6z/NetworkedTests.test_get_server_certificate_ipv6b	s
-.?
@
@	L	L(/@#FFF-d4EsKKK	L	L	L	L	L	L	L	L	L	L	L	L	L	L	L	L	L	Ls#AA	A	N)r|rGrHrrsrKrrrrequires_resourcerrYr$r"rrO	srAAA X3\BBWz**LL+*CBLLLr$rc	`t||f}|s|d|d|dt||f|}|s|d|d|dtjr+t
jd|d|d|ddSdS)Nrrrrrrr)r
rr0rrrrr)testrr>rr3s     r"rrj	s

$
$dD\
2
2CD			tttTTTBCCC

$
$dD\D
$
A
ACD			tttTTTBCCCZ
dddTWTWTWXYYYYYZZr$c	.	t||ft}|d|d|d|ddS#tj$r?}t
jr(tj	d|zYd}~dSYd}~dSd}~wwxYw)NrzGot server certificate z for rrz%s
)
r
rrr0rrrrrr)rrr>r3xs     r"rru	sN(($(II	
			CCCtttLMMMMM<)))?	)JVaZ(((((((((	)	)	)	)	)	))s#AB.BB)make_https_servercleZdZGddejZ					d
dZdZdZdd	Z	d
Z
dZdZdS)rDc4eZdZ	dZdZdZdZdZdZdS)$ThreadedEchoServer.ConnectionHandlerc||_d|_||_||_|jdd|_tj|d|_	dSNFT)
r=runningraddrrAsslconn	threadingThread__init__daemon)rr=connsockrs    r"rz-ThreadedEchoServer.ConnectionHandler.__init__	s] DK DL DIDII!!$'''DL%%d+++DKKKr$c	|jj|jd|_|jj|j|jj|j|jjj	tjkr|j}tjrC|jjr7t jdt'j|zdz|jd}tjr^|jjrR| t jdn0t jdt+|d|j}tjr>|jjr2t jdt/|zdzdS#t0t2t4f$r}|jjt/||jjr't9d	t;|jzd
zd|_| Yd}~dSd}~wtj!tDf$r}|jjt/||jjr't9d	t;|jzd
z|j#tFj$krDt j%dkr4d|_|j&| Yd}~dSd}~wwxYw)
NTrz 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:
Fdarwin)'r=rrrrselected_alpn_protocolsrselected_alpn_protocolrrr
rrxrrchattyrrrrrrcrr]ConnectionResetErrorBrokenPipeErrorConnectionAbortedErrorconn_errorsrrrrrrr`r
EPROTOTYPErMstop)rrcert_binaryrr7s     r"	wrap_connz.ThreadedEchoServer.ConnectionHandler.wrap_conn	s;
#{2>>I4 ? 1 13::4<;^;^;`;`aaaT*11$,2M2M2O2OPPP;&2c6GGG<3355D[4;+=[
(();fnT>R>R)RUY)YZZZ"&,":":4"@"@KW4;+=W&.J,,-OPPPPJ,,-UK@P@P-U-U-UVVV,,..?`t{'9`J$$%ICPVKK%WZ^%^___to)/;QR


'..s1vv666;%g !KdSWS\oo!]`e!efff$

uuuuuL'*


'..s1vv666;%g !KdSWS\oo!]`e!efff
7e...3<83K3K#(DLK$$&&&JJLLLuuuuu-
s&A!H		M< A:J  M<9B8M77M<cv|jr|jS|jdS)Nr)rrLrrars r"rLz)ThreadedEchoServer.ConnectionHandler.read	s4|
,|((***y~~d+++r$cx|jr|j|S|j|SrX)rrrre)rrs  r"rz*ThreadedEchoServer.ConnectionHandler.write	s6|
-|))%000y~~e,,,r$c||jr|jdS|jdSrX)rrrrs r"rz*ThreadedEchoServer.ConnectionHandler.close	s>|
"""$$$$$	!!!!!r$cd|_|jjs|sdS|jr	|}|}|sTd|_	|j|_d|_n#t$rYnwxYw|
n|dkrMtjr+|jj
rtjd|
dS|jjrj|dkrdtjr+|jj
rtjd|d|sdSn|jjr|jr|dkrtjr+|jj
rtjd	|d|j|_d|_tjr+|jj
rtjd
n>|dkrtjr+|jj
rtjd|jd
}|t%|ddzn|dkrtjr+|jj
rtjd	|j|dn?#t*j$rC}|t%|ddzYd}~nd}~wwxYw|dkrG|j|dn|dn|dkrS|j}|t%|ddznD|dkrX|jj}|t5|dddzn|dkrX|jj}|t5|dddzntjrU|jj
rI|jrdpd}tjd|d|d|d|d	||n#t$r}|jjrHtjr<t?|t@rtCd |j"ntGd!	|d"n#t$rYnwxYw|
d|_|j$Yd}~nd}~wwxYw|jdSdS)#NTFsoverz" server: client closed connection
STARTTLSz2 server: read STARTTLS from client, sending OK...
OK
ENDTLSz0 server: read ENDTLS from client, sending OK...
z* server: connection is now unencrypted...
s
CB tls-uniquez@ server: read CB tls-unique from client, sending our CB data...
rus-ascii
PHAz( server: initiating post handshake auth
HASCERTTRUE
FALSE
GETCERTs
VERIFIEDCHAINrbigsUNVERIFIEDCHAIN	encryptedunencryptedz server: read z (z), sending back z)...
z Connection reset by peer: zTest server failure:
sERROR
)%rr=starttls_serverrrLstriprrfrr`rrrconnectionchattyrrrrrrverify_client_post_handshaker
rrxrget_verified_chainrcto_bytesget_unverified_chainr3rr\ConnectionErrorprintrrr)rmsgstrippedrr7rcertsctypes        r"runz(ThreadedEchoServer.ConnectionHandler.run	sYDL;.
~~''F,^
']'))++C"yy{{H#D0',0(,(;(;(=(=DI,0DLL
 '!!!!D	!

!W,,"?Tt{/KTJ,,-RSSS

+520"k11"?dt{/KdJ,,-bccc

7+++#~~//#"F#+5+0$,+0&)33"?bt{/KbJ,,-`aaa

7+++$(L$7$7$9$9	'+"?\t{/K\J,,-Z[[[!%555"?rt{/KrJ,,-pqqq#|??MM

4::#4#4Z#@#@5#HIIII!V++"?Zt{/KZJ,,-XYYY0 LEEGGG!JJw//// #|KKK JJtAww~~j'A'AE'IJJJJJJJJK"Z//<3355A JJy1111 JJz2222!Z//#|7799

4::#4#4Z#@#@5#HIIII!%555 $ 4 G G I I

3u::#6#6q%#@#@5#HIIII!%777 $ 4 I I K K

3u::#6#6q%#@#@5#HIIII#OQ K8Q%)\%Ak$SmEJ,,,03UUUCIIKKKK.PQQQ

399;;///'''{)	Cgo	C%a99C" Idi I I))ABBB

:...."JJLLL#(DLK$$&&&&&&&&+'S,^
'^
'^
'^
'^
's1U<%BU<
BU<BA*U<A2U<8FU<L<%U<<N8N	U<	NG-U<<
X?AX:W10X:1
W>;X:=W>>7X::X?N)	r|rGrHrrrLrrr#rYr$r"ConnectionHandlerr	sy	8			<	<	<	|	,	,	,	-	-	-	"	"	"c	'c	'c	'c	'c	'r$r$NTFc|
r|
|_nt||ntj|_||ntj|j_|r|j||r|j||r|j||	r|j	|	||_
||_||_tj
|_tj|j|_d|_d|_g|_g|_g|_t.j|d|_dSr)rr
rmr`rrrrset_alpn_protocolsrSrrrrrrr7r>flagactiverrrrrrr)rcertificatessl_versioncertreqscacertsrrralpn_protocolsrrs           r"rzThreadedEchoServer.__init__I
sS
	2"DLL>>-8-D+6+/2/FHHDL5=4H-0]
L$
<227;;;
:,,[999
@//???
2((111 0.MOO	!+DI66		')$ !!$'''r$c|tj|j|SrXstartrEventr'waitrs r"	__enter__zThreadedEchoServer.__enter__k
3

9?$$%%%	r$cV||dSrX)rrrrus  r"__exit__zThreadedEchoServer.__exit__p
s 				r$cR||_tj|dSrXr'rrr0rr's  r"r0zThreadedEchoServer.startt
&	t$$$$$r$c|jd|jdd|_|jr|j|jrf	|j\}}tjr9|j	r2tjdt|zdz||||}||n#t"$r9}tjr#tjd|dYd}~n~d}~wt$$r|Yn[t($rO}tjr9|j	r2tjdt|zdzYd}~nd}~wwxYw|jf|dS)Ng?r/Tz server:  new connection from rz connection timeout z connection handling failed: )rrplistenr(r'rrrrrrrrrr$r0rTimeoutErrorKeyboardInterruptr
BaseExceptionr)rnewconnconnaddrhandlerr7s     r"r#zThreadedEchoServer.runx
s	S!!!	9	IMMOOOk	J
J$(I$4$4$6$6!?>t{>J$$%E'+H~~&68<&=>>>00wII


E
E
E?EJ$$%CA%C%C%CDDD$


		 
J
J
J?Jt{JJ$$7$q''ADHJJJ
Jk	J&	

s,%B D
F?/E!F?'	F?0AF::F?cX|j"|jd|_dSdSrX)rrrs r"rzThreadedEchoServer.close
s/9 IOODIII! r$cd|_dSNF)r(rs r"rzThreadedEchoServer.stop
s
r$)
NNNNTFFNNNrX)
r|rGrHrrr$rr3r7r0r#rrrYr$r"rDrD	sC'C'C'C'C'I,C'C'C'J6:(,FK $'+	    D
%%%%8
r$rDc`eZdZGddejZdZdZdZdZ	ddZ
d	Zd
ZdS)AsyncoreEchoServercFeZdZGddejZdZdZdZdS)AsyncoreEchoServer.EchoServerc2eZdZdZdZdZdZdZdZdS)/AsyncoreEchoServer.EchoServer.ConnectionHandlerct|d|d|_tj||jd|_|dS)NTF)rrr)rrr	dispatcher_with_sendr_ssl_accepting_do_ssl_handshake)rconnrs   r"rz8AsyncoreEchoServer.EchoServer.ConnectionHandler.__init__
sb.t7?FKMMM-66tT[III&*#&&(((((r$ct|jtjrN|jdkr1||jdk1dS)NrT)r\rr
rrWhandle_read_eventrs r"readablez8AsyncoreEchoServer.EchoServer.ConnectionHandler.readable
scdk3=991+--//!33..000+--//!33tr$c	|jd|_dS#tjtjf$rYdStj$r|cYStj$rt$r?}|j
dtjkr|cYd}~SYd}~dSd}~wwxYw)NFr)
rrCrOr
rBrrhandle_closerr`rurECONNABORTEDrerrs  r"rPzAAsyncoreEchoServer.EchoServer.ConnectionHandler._do_ssl_handshake
s0K,,...+0D''',c.CDFF///,,.....|333x{e&888#00222222229888883s'$B="B=&B=>.B8,B=8B=c^|jr|dS|d}tjr/t
jdt|z|s|	dS|
|dS)Nrz server:  read %s from client
)rOrPrarrrrrrrrer3)rrs  r"handle_readz;AsyncoreEchoServer.EchoServer.ConnectionHandler.handle_read
s&	0**,,,,,99T??DY
(()JTRVZZ)WXXX0

		$**,,/////r$c|tjr)tjd|jzdSdS)Nz server:  closed connection %s
)rrrrrrrrs r"rVz<AsyncoreEchoServer.EchoServer.ConnectionHandler.handle_close
sJ

?WJ$$%G$+%UVVVVVWWr$crXrYrs r"rz<AsyncoreEchoServer.EchoServer.ConnectionHandler.handle_error
sr$N)	r|rGrHrrTrPr[rVrrYr$r"r$rL
sq
)
)
)




0

0

0

0

0

0
W
W
W





r$r$c||_tjtjtj}t	j|d|_tj	|||
ddS)NrUr/)rrrVSOCK_STREAMrr7r>r	
dispatcherrr=rs   r"rz&AsyncoreEchoServer.EchoServer.__init__
s_$DM=1CDDD%/b99DI((t444KKNNNNNr$ctjr"tjd|z|||jdS)Nz$ server:  new connection from %s:%s
)rrrrrr$r)rsock_objrs   r"handle_acceptedz-AsyncoreEchoServer.EchoServer.handle_accepted
sG
P
  !H$!NOOO""8T];;;;;r$crXrYrs r"rz*AsyncoreEchoServer.EchoServer.handle_error
sr$N)	r|rGrHr	rNr$rrcrrYr$r"
EchoServerrJ
so1	1	1	1	1	 =1	1	1	f				<	<	<
					r$recd|_d|_|||_|jj|_t
j|d|_dSr)	r'r(rer=r>rrrr)rrs  r"rzAsyncoreEchoServer.__init__
sQ	ooh//K$	!!$'''r$c2d|jjd|jdS)N<r~>)r{r|r=rs r"__str__zAsyncoreEchoServer.__str__
s  N333T[[[AAr$c|tj|j|SrXr/rs r"r3zAsyncoreEchoServer.__enter__
r4r$ctjrtjd|tjrtjd|tjrtjdtddS)Nz cleanup: stopping server.
z! cleanup: joining server thread.
z cleanup: successfully joined.
T)
ignore_all)	rrrrrrrr		close_allr6s  r"r7zAsyncoreEchoServer.__exit__
s?	=J;<<<		?	CJABBB		?	AJ?@@@d+++++r$NcR||_tj|dSrXr9r:s  r"r0zAsyncoreEchoServer.startr;r$cd|_|jr|j|jr,	tdn#YnxYw|j*dSdS)NTr)r(r'rr	looprs r"r#zAsyncoreEchoServer.runst9	IMMOOOk	


a    
	k					sAAcFd|_|jdSrF)r(r=rrs r"rzAsyncoreEchoServer.stops#r$rX)
r|rGrHr	r`rerrjr3r7r0r#rrYr$r"rHrH
sBBBBBh)BBBHBBB

,
,
,%%%%r$rHrFc(	i}t||d}|5|tj||5}	|	t|jf|t
|t|fD]}
|r.tj	r"tjd|z|	|
|	
}|r.tj	r"tjd|z||krRtd|ddt!||ddt!|fz|	d|r+tj	rtjd	||	|	|	|	|	|	j|	jd
|	dddn#1swxYwY|j|d<|j|d<dddn#1swxYwY|S)
NFrrr)rsession client:  sending %r...
 client:  read %r
4bad data <<%r>> (%d) received; expected <<%r>> (%d)
over
 client:  closing connection.
)compressionrpeercertclient_alpn_protocolr9session_reusedruserver_alpn_protocolsserver_shared_ciphers)rDrrrrr>rr[rrrrrrLr3AssertionErrorrcrr|rrxrr9rrurrr)rrindatarrsni_namerurr=rargoutdatas            r"server_params_testrs
E
'-16888F
"?"?

'
'
 ('(;;	>?
IItV[)***	& 1 1:f3E3EF
>
>#BB
((7&@BBB&&((#JJ
(()>)HIIIfllnn,,(O"3B3<W!#2#;,,..F==>>>-

GGI
H?HJ$$%FGGGLL }}((**MMOO()(@(@(B(B99;;"#"29



GGIII?															@*0)G%&)/)>%&E"?"?"?"?"?"?"?"?"?"?"?"?"?"?"?FLs6*JHIJI 	 J#I 	$JJJc	|tj}tjdtjdtjdi|}tjr[|rdpd}tj|t	|t	||fztj5t|}|xj
|zc_
t|}	|	xj
|zc_
dddn#1swxYwYt|d}
|
]t!|	drM|tjkr=|	j|
kr2tj5|
|	_dddn#1swxYwY|jtjkr|dt+|	|||	fD]=}||_|t0|t4>	t7||	dd	}|sFt9d
t	|dt	|d|d
ur'||dkrt9d|d|ddSdS#tj$r|rYdSt<$r#}
|s|
jt>j krYd}
~
dSd}
~
wwxYw)Nrrrz %s->%s %s
z
 {%s->%s} %s
rQrVF)rrzClient protocol z  succeeded with server protocol rTr9zversion mismatch: expected z, got )!r
rrrrrrrrget_protocol_namerrrmryPROTOCOL_TO_TLS_VERSIONrrRr_rQrdrSrVrrrrrrrrr`r
ECONNRESET)server_protocolclient_protocolexpect_success	certsreqsserver_optionsclient_optionscerttype	formatstrrrmin_versionrUrr7s              r"try_protocol_comborBsM	
{??	H
%#6K;K	
//@@//@@"$$	%	%	%

	'	)	)1188.088.0111111111111111*--otDDK
N$566	 
s///*[88
+
-
-	9	9-8N*	9	9	9	9	9	9	9	9	9	9	9	9	9	9	9#"222""5)))777/..#O,,,!!*----G">>*/%III	G .((9999((9999;<<
<D(( E)$444 .$2NNE)4D4D"FGG
G)(44<					QW(888988888sC6ADDD=FFFJ##K$8	K$KK$c^eZdZejddZdZdZdZe	j
ejddZ
dZd	Zd
ZdZedd
ZdZdZeddZdZeddZeddZeddZeddZdZdZdZdZdZ d Z!d!Z"d"Z#d#Z$d$Z%d%Z&d&Z'd'Z(edd(Z)edede*d)Z+ede*d*Z,edede*d+Z-edd,Z.d-Z/e	j
d.ej0vd/d0Z1d1Z2e	j
e3ed2d3d4Z4e	j5e6d5d6Z7d7Z8d8Z9d9Z:d:Z;d;Z<d<Z=d=Z>d>Z?d?Z@d@ZAdAZBdBZCdCZDdDZEdEZFdFZGdGS)H
ThreadedTestsrc		tjrtjdt\}}}|tjtj	5t||dd|dddn#1swxYwYd|_|tj	tj5|tj
5}t||dd|dddn#1swxYwY|dt|jdddn#1swxYwY|tj	tj	5|tj
5}t||dddddn#1swxYwY|dt|jdddn#1swxYwY|tjtj5|tj
5}t||dddddn#1swxYwY|dt|jddddS#1swxYwYdS)Nr)rmr=T)rrrrrFz@Cannot create a client socket with a PROTOCOL_TLS_SERVER context)rrrr)rrrrrrrr
rar`rrrrrr]r)rrrrr7s     r"	test_echozThreadedTests.test_echosz@?	#JT"""3B3D3D0
\\!8AX\
Y
Y	2	2n.<&*T(0
2
2
2
2	2	2	2	2	2	2	2	2	2	2	2	2	2	2	2).%
\\!8AX\
Y
Y				""3<00
6A".2@*.,46666
6
6
6
6
6
6
6
6
6
6
6
6
6
6
6

MMRAK  



																														\\!8AX\
Y
Y		""3<00
GA".2@*.GGGG
G
G
G
G
G
G
G
G
G
G
G
G
G
G
G
MMRAK  


															\\!8AX\
Y
Y	"	"""3<00
GA".2@*.GGGG
G
G
G
G
G
G
G
G
G
G
G
G
G
G
G
MMRAK  
"
"
"	"	"	"	"	"	"	"	"	"	"	"	"	"	"	"	"	"	"s*BBB E(D	=E	D
	
ED
	+EEE> G=F>2G=>G	G=G	+G==HH3 J3I3'J33I7	7J3:I7	;+J33J7:J7cNtjrtjdt\}}}t
|d}|5|tjd|5}|	t|jf|t5|dddn#1swxYwY||}||d|}tjrftjt%j|dztjdt)|zdzd|vr*|d	t%j|zd
|dvr|d|d||d
|t.|d}t.|d
}	|||	dddn#1swxYwYddddS#1swxYwYdS)NrFrr)rrCan't get peer certificate.zConnection cipher is z.
r7z$No subject field in certificate: %s.r,zkMissing or invalid 'organizationName' field in certificate subject; should be 'Python Software Foundation'.r5r4)rrrrrrrDrrrrr>rrrxrCrHrrrr]r0rr
rrF)
rrrrr=rrrbeforeafters
          r"test_getpeercertzThreadedTests.test_getpeercerts,?	#JT"""3B3D3D0#N5III
	/	/++FMOODI<D,FF
/IJ		4-...&&z22$$MMOOO$$$$$$$$$$$$$$$   }}&CDDD?TJ$$V^D%9%9D%@AAAJ$$%<s6{{%JU%RSSSD((IID$nT223444I	?++IIBCCC

k4000

j$///11${2CDD00j1ABB...7
/
/
/
/
/
/
/
/
/
/
/
/
/
/
/	/	/	/	/	/	/	/	/	/	/	/	/	/	/	/	/	/	/s[*J;<J7CJCJC FJ6JJ	J	J	
JJ!Jctjrtjdt\}}}t
tdd}||j	tj
|zt|d}|5|tj
|5}|t|jf|}||ddddn#1swxYwYdddn#1swxYwY|xj	tjzc_	t|d}|5|tj
|5}|tjd5|t|jfdddn#1swxYwYdddn#1swxYwYdddn#1swxYwY|t.t|d}|5|tj
|5}|t|jf|}||ddddn#1swxYwYddddS#1swxYwYdS)	NrrrTrrrr{)rrrrrrr^r
rrrrDrrrrr>rxrHrrrrCRLFILE)rrrrrr=rrs        r"test_crl_checkzThreadedTests.test_crl_checks?	#JT"""3B3D3D0
S5q
9
94c6H26MNNN$N4HHH
	E	E++FMOO<D,FF
EIJ		4-...}}&CDDD	
E
E
E
E
E
E
E
E
E
E
E
E
E
E
E	E	E	E	E	E	E	E	E	E	E	E	E	E	E	E	##s'@@###N4HHH
	3	3++FMOO<D,FF
3IJ++CL,GII33IItV[1222333333333333333
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3	3	3	3	3	3	3	3	3	3	3	3	3	3	3	3	,,W555#N4HHH
	E	E++FMOO<D,FF
EIJ		4-...}}&CDDD	
E
E
E
E
E
E
E
E
E
E
E
E
E
E
E	E	E	E	E	E	E	E	E	E	E	E	E	E	E	E	E	E	Es)D'8ADD'D	D'D	D''D+.D+)H!G.)"GG.GG.GG."H.G2	2H5G2	6HH	H	=)K&AJ>2K>K	KK	KKKctjrtjdt\}}}t
|d}|5|tj|5}|	t|jf|}|
|ddddn#1swxYwYdddn#1swxYwYt
|d}|5|tjd5}|tjd5|	t|jfdddn#1swxYwYdddn#1swxYwYdddn#1swxYwYt
|d}|5tj5}|t"d5||dddn#1swxYwYdddn#1swxYwYddddS#1swxYwYdS)	NrTrrrrz:Hostname mismatch, certificate is not valid for 'invalid'.z'check_hostname requires server_hostname)rrrrrrrDrrrrr>rxrHrr
rr)rrrrr=rrs       r"rz!ThreadedTests.test_check_hostnamesW?	#JT"""3B3D3D0$N4HHH
	E	E++FMOO<D,FF
EIJ		4-...}}&CDDD	
E
E
E
E
E
E
E
E
E
E
E
E
E
E
E	E	E	E	E	E	E	E	E	E	E	E	E	E	E	E$N4HHH
	3	3++FMOO<E,GG
3JK++,TVV33IItV[1222333333333333333
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3	3	3	3	3	3	3	3	3	3	3	3	3	3	3	3$N4HHH
	2	2
2A++J,UWW22"..q111222222222222222
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2	2	2	2	2	2	2	2	2	2	2	2	2	2	2	2	2	2	2s)C):ACC)C	C)C	C))C-0C-)F-0!F"E?3F?FFFF
F-F	F-F	F--F14F1IH4;HH4H!!H4$H!%H4(I4H8	8I;H8	<IIIz)test requires hostname_checks_common_namect\}}}d|_t|d}|5|t	j|5}|t|jfdddn#1swxYwYdddn#1swxYwYtt\}}}d|_t|d}|5|t	j|5}|	tj5|t|jfdddn#1swxYwYdddn#1swxYwYddddS#1swxYwYdS)NFTrr)rrrDrrrrr>rrr
SSLCertVerificationErrorrEs      r"rz.ThreadedTests.test_hostname_checks_common_name,s4C3D3D05:2$N4HHH
	/	/++FMOO<D,FF
/IJ		4-...
/
/
/
/
/
/
/
/
/
/
/
/
/
/
/	/	/	/	/	/	/	/	/	/	/	/	/	/	/	/
4C93M3M05:2#N4HHH
	3	3++FMOO<D,FF
3IJ&&s'CDD33IItV[1222333333333333333
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3	3	3	3	3	3	3	3	3	3	3	3	3	3	3	3	3	3	3s)B"B8BB	BB	BB"B)E> E&!"EE&EE&EE&E>&E*	*E>-E*	.E>>FFc:ttj}|t|dt}ttj}|tt|d}|5|tj|5}|
t|jf|}||d|dd}||ddd	dddn#1swxYwYddddS#1swxYwYdS
NzECDHE:ECDSA:!NULL:!aRSATrrrr-r)ECDHEECDSA)r
rmrarrrSSIGNED_CERTFILE_ECC_HOSTNAMEr`rSIGNED_CERTFILE_ECCrDrrrrr>rxrHrsplitrrrrr=rrrs        r"
test_ecc_certzThreadedTests.test_ecc_certDs(?@@,,Z888""#<===/(?@@&&':;;;$N4HHH
	@	@++FMOO<D,FF
@IJ		4-...}}&CDDDA,,S11rr
,>???

@
@
@
@
@
@
@
@
@
@
@
@
@
@
@	@	@	@	@	@	@	@	@	@	@	@	@	@	@	@	@	@	@s7,)FBE8,F8E<	<F?E<	FFFcttj}|ttjj|_|dt}ttj
}|t|tt|d}|5|t!j|5}|t$|jf|}||d|dd}||ddd	dddn#1swxYwYddddS#1swxYwYdSr)r
rmrarrrrlrirSrr`rrrrDrrrrr>rxrHrrrs        r"test_dual_rsa_ecczThreadedTests.test_dual_rsa_eccYs$(?@@,,Z888*-)?&""#<===/(?@@&&':;;;&&777$N4HHH
	@	@++FMOO<D,FF
@IJ		4-...}}&CDDDA,,S11rr
,>???

@
@
@
@
@
@
@
@
@
@
@
@
@
@
@	@	@	@	@	@	@	@	@	@	@	@	@	@	@	@	@	@	@s7)GBF(G(F,	,G/F,	0GGGctjrtjdt
t
j}|tt
t
j
}t
j|_d|_
|tgd}|D]\}}t!|d}|5|t%j|5}||j||t,|jf|}||j|||ddddn#1swxYwYdddn#1swxYwYt!|d}|5|t%jd5}|t
j5|t,|jfdddn#1swxYwYdddn#1swxYwYddddS#1swxYwYdS)NrT))ukönig.idn.pythontest.netxn--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.netrrrrzpython.example.org)rrrrrr
rmr`rIDNSANSFILErarrrrrrDrrrrrrr>rxrHrr)	rrr
idn_hostnamesrexpected_hostnamer=rrs	         r"test_check_hostname_idnz%ThreadedTests.test_check_hostname_idnss?	#JT"""(?@@&&{333..!899!/!%%%j111



.3@		I		I.O.'tLLLF
I
I((9H)JJIMN$$Q%68IJJJIItV[1222==??D$$Q%68IJJJOOD*GHHH
IIIIIIIIIIIIIII
I
I
I
I
I
I
I
I
I
I
I
I
I
I
I$N4HHH
	3	3$$V]__5I%KK
3NO&&s';<<33IItV[1222333333333333333
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3	3	3	3	3	3	3	3	3	3	3	3	3	3	3	3	3	3	3s)F,BF	F,FF,FF,,F0	3F0	)I14 I"I6III	I
I
I1I	I1 I	!I11I58I5c8	t\}}}|ttj|_tjj|_t|dd}|5|
tj|5}	|t|jf|dn#tj$r8}t"jr"t&jd|zYd}~n^d}~wt,$rN}|jt.jkrt"jr"t&jd|zYd}~nd}~wwxYwdddn#1swxYwYddddS#1swxYwYdS)NTrtrz'Use of invalid cert should have failed!z
SSLError is %r
z
socket.error is %r
)rrrr
rrrrlrirDrrrrr>r0rrrrrrr`rrrrrrr=rr7s       r"test_wrong_cert_tls12z#ThreadedTests.test_wrong_cert_tls12sN	
4C3D3D0&&x000%(%6"),)?&#"4$


	E	E**6=??;C+EE	EHI
E		4-...		CDDDD<
?
?
???J$$%9A%=>>>
C
C
C7e...?CJ$$%=%ABBB	
C	E	E	E	E	E	E	E	E	E	E	E	E	E	E	E	E	E	E	E	E	E	E	E	E	E	E	E	E	E	E	E	E	Ess))FE7!C5E7E(.D
E7

E(AE#E7#E((E7+F7E;	;F>E;	?FFFrct\}}}|ttj|_tjj|_tjj|_t|dd}|5|
tj|d5}|t|jf|tjd5|d|d|d|ddddn#1swxYwYdddn#1swxYwYddddS#1swxYwYdS)	NTrtFrsuppress_ragged_eofszalert unknown ca|EOF occurreddatarsshould have failed already)rrrr
rrrrrQrDrrrrr>rrrrLrEs      r"test_wrong_cert_tls13z#ThreadedTests.test_wrong_cert_tls13s'3B3D3D0&&x000%(%6"),)?&),)?&#"4$



	
	

'
'
8@=B(DD
	HI
IItV[)***''/


   t5666t















	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	s\>*E:(AE"*AE?E"EE"EE"E:"E&	&E:)E&	*E::E>E>c	tjtjtjtjt
fd}fd}tj|}|	||dS#|wxYw)Nc\}}|dSrX)r=rrr)newsockr
listener_gonelistener_readyrs  r"listenerz2ThreadedTests.test_rude_shutdown.<locals>.listenerse
HHJJJ   HHJJMGTMMOOO
GGIIIr$cTtj5}|tf	t	|}dn#t$rYnwxYwddddS#1swxYwYdS)Nz2connecting to closed SSL socket should have failed)r2rrrrr0r`)rrrrr>rs  r"	connectorz3ThreadedTests.test_rude_shutdown.<locals>.connector
s
!!!
TA		4,'''""$$$T/22HIIRSSSSD
T
T
T
T
T
T
T
T
T
T
T
T
T
T
T
T
T
Ts51BB*B
B

BB

BB!$B!target)	rr1rrr7rrr0r)rrrrKrrr>rs`   @@@@r"test_rude_shutdownz ThreadedTests.test_rude_shutdowns	#**!))
MOO&q$//	 	 	 	 	 	 	 
	T
	T
	T
	T
	T
	T
	T
	T
H---					IKKK
FFHHHHHAFFHHHHs
B33C	c	tjrtjdt
t
j}|tt
t
j
}t|d}|5|tj
t5}	|t |jfn#t
j$r}d}||t
j||jd||j|||t3||dt3|Yd}~nd}~wwxYwdddn#1swxYwYddddS#1swxYwYdS)NrTrrz&unable to get local issuer certificateryr{)rrrrrr
rmr`rrrarDrrrrrr>rrBrrverify_codeverify_messagerr)rrrr=rr7rs       r"test_ssl_cert_verify_errorz(ThreadedTests.test_ssl_cert_verify_error
sS?	#JT"""(?@@&&777..!899#N4HHH
	H	H$$V]__5M%OO

HRSHIItV[12222|HHHBC))!S-IJJJ$$Q]B777$$Q%5s;;;MM#tAww///MM"=tAwwGGGGGGGG
H	

H

H

H

H

H

H

H

H

H

H

H

H

H

H

H	H	H	H	H	H	H	H	H	H	H	H	H	H	H	H	H	H	Hsa!.GF9!C32F93F*BF% F9%F**F9-G9F=	=GF=	GGGrgc(	tjrtjdttjtjdttjtjdtjttjtjdtj	ttjtj
dtdr%ttjtjdttjtj
dttjtj
dtjttjtj
dtjdS)NrTFrr)rrrrrrr
PROTOCOL_SSLv2rrr_rbPROTOCOL_SSLv3rrrrs r"test_protocol_sslv2z!ThreadedTests.test_protocol_sslv2+
s*G?	#JT"""3-s/A4HHH3-s/A4IZ[[[3-s/A4IZ[[[3-s/?GGG7##	Ns133EuMMM3-s/A5III3-s/?*-/	;	;	;	;3-s/?*-/	;	;	;	;	;	;r$c	tjrtjdtdry	t
tjtj	dnR#t$rE}tjr/tjdt|zYd}~nd}~wwxYwtdr%t
tjtjdt
tjtjdtdr%t
tjtj
dtdr0t
tjtjdtjt
tjtjdtjtdr0t
tjtj
dtjtdr0t
tjtjdtjt
tjtjdtjtdr0t
tjtj
dtjtdr1t
tjtjdtjt
tjtjdtjtjztdr3t
tjtj
dtjdSdS)	NrrgTz; SSL2 client to SSL23 server test unexpectedly failed:
 %s
rFr)r)rrrrrrbrr
r_rr`r]rrrrrrr)rrs  r"test_PROTOCOL_TLSzThreadedTests.test_PROTOCOL_TLS=
sH?	#JT"""7##	"
""3#3S5GNNNN
"
"
"?"J$$Wa&&!"""
"7##	Ls/1CUKKK3+S-=tDDD7##	Ns/1CWMMM7##	_s/1CUCL]^^^3+S-=tSEVWWW7##	as/1CWcN_```7##	_s/1CUCL]^^^3+S-=tSEVWWW7##	as/1CWcN_```7##	;s/1CU*-/
;
;
;
;	3+S-=t*-/CO*K	M	M	M	M7##	?s/1CU.1o
?
?
?
?
?
?	?	?s%A##
B2-;B--B2rc|	tjrtjdttjtjdttjtjdtjttjtjdtj	tdr%ttjtjdttjtjdtj
ttjtjddS)NrrrgFr)rrrrrrr
rrrrbrr_rrrs r"test_protocol_sslv3z!ThreadedTests.test_protocol_sslv3g
sG?	#JT"""3-s/A7KKK3-s/A7CL]^^^3-s/A7CL]^^^7##	Ns133EuMMM3-s/?*-/	;	;	;	;3-s/A5IIIIIr$rc	tjrtjdttjtjdttjtjdtjttjtjdtj	tdr%ttjtjdtdr%ttjtjdttjtj
dtjdS)NrrrgFrr)rrrrrrr
rrrrbrrr_rrs r"test_protocol_tlsv1z!ThreadedTests.test_protocol_tlsv1u
sF?	#JT"""3-s/A7KKK3-s/A7CL]^^^3-s/A7CL]^^^7##	Ns133EuMMM7##	Ns133EuMMM3-s/?*-/	;	;	;	;	;	;r$rc	tjrtjdttjtjdtdr%ttjtj	dtdr%ttjtj
dttjtjdtjttjtjdttjtj
dttj
tjddS)NrTLSv1.1rgFrr)rrrrrrr
rrbrrr_rrvrs r"test_protocol_tlsv1_1z#ThreadedTests.test_protocol_tlsv1_1
s
	2?	#JT"""3/1EyQQQ7##	Ps3S5GOOO7##	Ps3S5GOOO3/1A5*-*;	=	=	=	=	3+S-A9MMM3/1EuMMM3/1EuMMMMMr$rlc	tjrtjdttjtjdtjtj	ztjtj	ztdr%ttjtjdtdr%ttjtjdttjtj
dtjttj
tjdttjrJttjtjdttjtjdttjrLttjtjdttjtjddSdS)NrTLSv1.2)rrrgFrr)rrrrrrr
rvrrrbrrr_rrerrrs r"test_protocol_tlsv1_2z#ThreadedTests.test_protocol_tlsv1_2
s	2?	#JT"""3/1Ey*-/#/*I*-/#/*I	L	L	L	L7##	Ps3S5GOOO7##	Ps3S5GOOO3/1A5*-*;	=	=	=	=	3+S-A9MMMC.//	Ps3S5GOOOs133GOOOC011	Rs3S5I5QQQs3S5I5QQQQQ	R	Rr$c	d}ttddd}d}|5tj}|d|t
|jftjrtj
d|D]}tjr"tj
d|z|r*|||}n*|
||d}|}|dkrV|d	rAtjr"tj
d
|zt%|}d}	|dkr[|d	rFtjr"tj
d|z|}d}jtjr"tj
d
|ztjrtj
d|r|dn|
d|r|n|ddddS#1swxYwYdS)N)smsg 1sMSG 2r	sMSG 3smsg 4rsmsg 5smsg 6T)rrrFrrvrr	sokz/ client:  read %r from server, starting TLS...
rz- client:  read %r from server, ending TLS...
z client:  read %r from server
r{rz)rDrrrArrr>rrrrrrLrerarr3r.rrfr)	rmsgsr=wrappedrrrQrrs	         r"
test_starttlszThreadedTests.test_starttls
sDc#H48+/59;;;
.	.	
A
MM$
IItV[)***
'
  &&&
E
E?>J$$3f<>>>+JJv&&&"iikkGGFF6NNNffTllGmmoo++--[((S^^E-B-B(#
((N!"###,A..D"GGy((S^^E-B-B(#
((L!"###

A#GGE
((=CEEE
D
  !BCCC
"

9%%%%y!!!


			].	.	.	.	.	.	.	.	.	.	.	.	.	.	.	.	.	.	sJKKKch	t|t}tjrtjdttd5}|	}dddn#1swxYwYd}d|j
d}tt}tj||}	|d	}|rrt'|d
kr_|	t'|}tjr1tjdt)||fz|n#|wxYw|||dS)NrrrbrUzhttps://localhost:z/test_ssl.pyrrCzcontent-lengthrz/ client: read %d bytes from remote server '%s'
)rrrrrrrrKrrLr>r
rrurllibrequesturlopeninforrCrcrr)rr=rNr4r6urlrdlens        r"test_socketserverzThreadedTests.test_socketserver
sF"4/BBB?	#JT"""
(D
!
!	QB															
<6;<<<,,J,??N""3"88		6688<< 011D
-TQVVCII&&?-J$$Jr77F+,---
GGIIIIAGGIIIIR     sA99A=A=BFFc
 	tjrtjdd}tt}|5ttj}|	d|j
ftjr"tjd|z|||}tjr"tjd|z||krX|
d|ddt||ddt|fz|dtjrtjd	|tjrtjd
ddddS#1swxYwYdS)Nrrr&rvrwrxryrzr{z client:  connection closed.
)rrrrrrHrrrrr>rLr3r0rcr)rrr=rrs     r"test_asyncore_serverz"ThreadedTests.test_asyncore_servers5?	#JT"""#H--
	C	C 11A
II{FK0111
:
  /&8:::
GGFOOOffhhG
B
  !6!@AAA&,,..((		Kss|S\\crc{((**CKK99:::
GGI
D
  !BCCC
GGIII
C
  !ABBB)	C	C	C	C	C	C	C	C	C	C	C	C	C	C	C	C	C	CsF1HH
Hc
	tjrtjdtttjtj	tdd}|5ttjdtttjt|jffd}fd}djdgt fd	jdd
gt fdjdgdfg}d
jdgfdjdd
gfd|dgfd|dgfg}d}|D]r\}}}	}
}||zd}	||g|
R}
d|}||
|||}||krW|d||ddt!||ddt!|#t6$r}|	r)|d|t9||s*|d||Yd}~ld}~wwxYw|D]L\}}}	}
||zd}	|||
}||krW|d||ddt!||ddt!|#t6$r}|	r)|d|t9||s*|d||Yd}~Fd}~wwxYwd}|t=t!|}|d|t!||||t>nt>j t!|z}|!|}||||"tFj$|"tFj%dg|"tFj&d |"tFj't=d gd!|"t6jd|"t6jd(ddddS#1swxYwYdS)"NrTFr+r*r,rrrrrrc`td}|}|d|SNsd)rrb)brrs  r"
_recv_intoz0ThreadedTests.test_recv_send.<locals>._recv_into1s-i((A%y r$cftd}|\}}|d|Sr)rrd)rrrrs   r"_recvfrom_intoz4ThreadedTests.test_recv_send.<locals>._recvfrom_into6s3i((ooa00t%y r$rerfzsome.addressrcdSrXrY)rs r"<lambda>z.ThreadedTests.test_recv_send.<locals>.<lambda>?s4r$rarcrbrdPREFIX_rzsending with {}rzpWhile sending with <<{name:s}>> bad data <<{outdata:r}>> ({nout:d}) received; expected <<{indata:r}>> ({nin:d})
ry)r!rnoutrninz>Failed to send with method <<{name:s}>>; expected to succeed.
r zFMethod <<{name:s}>> failed with unexpected exception message: {exp:s}
)r!expzrWhile receiving with <<{name:s}>> bad data <<{outdata:r}>> ({nout:d}) received; expected <<{indata:r}>> ({nin:d})
zAFailed to receive with method <<{name:s}>>; expected to succeed.
rrr_rz))rrrrrrDrr
rr`rrrrr>rercrfrrarcrformatrrLr3r0rr]r.rctypesc_ubytefrom_buffer_copyrrgrhrirjrkr)rr=rrsend_methodsrecv_methodsdata_prefix	meth_name	send_methrruret_val_methrrrrr7	recv_methrbufferubyte	byteslikers                      @r"test_recv_sendzThreadedTests.test_recv_sends.?	#JT"""#H-0]030G,4+/5:<<<{	{	 ,1)1)1*--	999A

IItV[)***
!
!
!
!
!

!
!
!
!
!r3/18U^,<cBAItR@Lr*QZ0@Aj$3 .%<	L$K&2

"I~t %	199'BB#)F2T222C+229==C$$S,,v*>*>C$HHHffhhG&,,..00		BBH&%.%(\\'-crc{FCICC"%		55;VV5K5Kq66,,Y77		;;A6%.A<B<<?K

:	9nd%	199'BBFF6NNN'i.G&,,..00		BBH&%.%(\\'-crc{FCICC"%		55;VV5K5Kq66,,Y77		;;A6%.A<B<<FFHHHHHHHH"D
FF4LLLs4yy))FQVVB//T;;;VT***!T2!22488			)$$$  4000

115999119wiHHH119cBBB1ny~~.>
@
@
@
GGIj!&"555j!&"555
GGIIIw{	{	{	{	{	{	{	{	{	{	{	{	{	{	{	{	{	{	sl#CW>CHW
J
A7JWJ

%W3B	L=<W=
OBOWOG5WW#&W#c&tt}||tjt
|jf}||jt|d}||j|
d||dd||
dd||
d|d||dd||t!ddS)NFrrrr$)rDrrsrr@rr>rrrrerrarLrArbr)rr=rs   r"test_recv_zerozThreadedTests.test_recv_zerosC#H--&!!!$dFK%899   QU;;;   	
wC(((C(((7+++	


eC(((Y[[11155555r$c tt}||tjt
|jf}||jt|d}||j|
dtjdddg}||
|d|t|dddGddt}|
d|d	}||
|d|t|d
dS)NFrrIrr9ceZdZdZdS);ThreadedTests.test_recv_into_buffer_protocol_len.<locals>.BcddzdSNrrrYrs r"__len__zCThreadedTests.test_recv_into_buffer_protocol_len.<locals>.B.__len__s!r$N)r|rGrHrrYr$r"Brs#




r$rrsdata)rDrrsrr@rr>rrrrearrayrrbrr)rr=rrrs     r""test_recv_into_buffer_protocol_lenz0ThreadedTests.test_recv_into_buffer_protocol_lensj#H--&!!!$dFK%899   QU;;;   	wk#1v&&S))1---sBQB111										
waddS))1---s[11111r$cXtttjtjtdd}|5tt
jdtttjt|j	f
dtdfd}|tj
tjf|
dddddS#1swxYwYdS)NTFrri c2	rX)re)rrsr"fill_bufferz8ThreadedTests.test_nonblocking_send.<locals>.fill_buffers FF3KKK r$)rDrr
rr`rrrrr>rArrrrBr)rr=r rrs   @@r"test_nonblocking_sendz#ThreadedTests.test_nonblocking_sendsm#H-0]030G,4+/5:<<<		 ,1)1)1*--	999A

IItV[)***
MM%   D//C
 
 
 
 
 
 
s4"356A
C
C
C
MM$
GGIII)																		sCDD#&D#c<tjtjd}tj}t	jdfd}t	j|}|		tjtj}|	d|
||f|tdt||n#|wxYw	tjtj}t|}|	d|td|j
||f|n#|wxYw	d|dS#d|wxYw)Nr&Fc0g}sOtjgggd\}}}|vr-|dO|D]}|dS)Nrr)r=rrrrr)connsr*wr7rfinishr=starteds     r"servez3ThreadedTests.test_handshake_timeout.<locals>.servesMMOOOKKMMME
5 -"b#>>1aQ;;LL!3444
5





r$rrz	timed outT)rrVrr7rr1rr0r2rprrr>rrr)	rrr>r(rKrr&r=r's	      @@@r"test_handshake_timeoutz$ThreadedTests.test_handshake_timeoutsv~..&v../##							
E***					
M&.11S!!!		4,'''&&|['7<<<								
M&.11$Q''S!!!&&|['(y4,@@@									F
FFHHHLLNNNNNF
FFHHHLLNNNNs8A,D?G/D**G/.A&F)G/)F??G//,Hc

t\}}}tjtj
d}tj
}|
d
|
jtj	
dd

fd}tj
|}|
|tj|}|
||f|d||}	||
|t(j||	dS)Nr&Trc\ddS)Nr9)r=rrrera)evtpeerremoter=sr"r(z/ThreadedTests.test_server_accept.<locals>.serve)sPMMOOOGGIII!==??LFDKKA'''''r$rrr)rrrVrr7rrHrrr1rr0r2rrerarrrrBr
rr)rrgrhrrr>r(rKrmclient_addrr,r-r.r=s          @@@@r"test_server_acceptz ThreadedTests.test_server_accepts,;+<+<(
Jv~..&v..''D'AA*+++o	(	(	(	(	(	(	(	(
E***				


''MOOX(

	$'(((G


((**	fcm444{+++++r$cttj}d|_|tj5}|t5}|dddn#1swxYwY|	|j
jtjddddS#1swxYwYdSrF)
r
rmrarrrrr`rxrrrENOTCONNrrrrs    r"test_getpeercert_enotconnz'ThreadedTests.test_getpeercert_enotconnDsA..!899!&

 
 
1
1	AT""7++
#r  """
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#R\/@@@	A	A	A	A	A	A	A	A	A	A	A	A	A	A	A	A	A	A6C-BCB	CB	-CCCcttj}d|_|tj5}|t5}|dddn#1swxYwY|	|j
jtjddddS#1swxYwYdSrF)
r
rmrarrrrr`rCrrrr2r3s    r"test_do_handshake_enotconnz(ThreadedTests.test_do_handshake_enotconnLsA..!899!&

 
 
1
1	AT""7++
$r!!###
$
$
$
$
$
$
$
$
$
$
$
$
$
$
$R\/@@@	A	A	A	A	A	A	A	A	A	A	A	A	A	A	A	A	A	Ar5cbt\}}}tjj|_|d|dt
|5}|tj|5}|	t5|t|j
fdddn#1swxYwYdddn#1swxYwYdddn#1swxYwY|d|jddS)NAES128AES256rCrzno shared cipherr)rr
rrlrirSrDrrrr`rrr>rrrEs      r"test_no_shared_ciphersz$ThreadedTests.test_no_shared_ciphersTs3B3D3D0),)?&""8,,,""8,,,

7
7
7	36++FMOO<D,FF
3IJ&&w//33IItV[1222333333333333333
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3	3	3	3	3	3	3	3	3	3	3	3	3	3	3	3
	


(&*<Q*?@@@@@sZ#)DC,'"C	C,CC,CC, D,C0	0D3C0	4DD
Dc	ttj}d|_tj|_t
ttjd5}|	tj
5}||d||j
d|t|jf||ddddn#1swxYwY||j
d||dddddS#1swxYwYdS)NF)r*rTLSv1.3)r
rmrarrrrDrr`rrrr9rrrr>r)rrr=rs    r"test_version_basicz ThreadedTests.test_version_basicbs	..!899!&!m
,/,C',...		-17$$V]__55
9

aiikk4000

ai...		4-...  i888	
9
9
9
9
9
9
9
9
9
9
9
9
9
9
9

MM!)T***MM!))++t,,,		-		-		-		-		-		-		-		-		-		-		-		-		-		-		-		-		-		-s8'E:B
DE:D#	#E:&D#	'AE::E>E>ct\}}}tjj|_t|5}|tj|5}|t|j
f||dhd|
|ddddn#1swxYwYddddS#1swxYwYdS)NrCrr>TLS_AES_128_GCM_SHA256TLS_AES_256_GCM_SHA384TLS_CHACHA20_POLY1305_SHA256r=)rr
rrrQrDrrrrr>rrrr9rEs      r"test_tls1_3zThreadedTests.test_tls1_3usz3B3D3D0),)?&

7
7
7		96++FMOO<D,FF
9IJ		4-...

ahhjjm...
  i888
9
9
9
9
9
9
9
9
9
9
9
9
9
9
9		9		9		9		9		9		9		9		9		9		9		9		9		9		9		9		9		9		9s6)D"A:C(D(C,	,D/C,	0DDDc>t\}}}tjj|_tjj|_tjj|_tjj|_t|5}|tj	|5}|
t|jf|
|ddddn#1swxYwYddddS#1swxYwYdS)NrCrr)rr
rrrQrlrirDrrrrr>rr9rEs      r"test_min_max_version_tlsv1_2z*ThreadedTests.test_min_max_version_tlsv1_2so4C3D3D0),)=&),)?&),)?&),)?&

7
7
7	96++FMOO<D,FF
9IJ		4-...  i888
9
9
9
9
9
9
9
9
9
9
9
9
9
9
9	9	9	9	9	9	9	9	9	9	9	9	9	9	9	9	9	9	9s7;)D$A
C:.D:C>	>DC>	DDDc^t\}}}tjj|_tjj|_tjj|_tjj|_t||t|5}|
tj|5}|t|jf||ddddn#1swxYwYddddS#1swxYwYdS)NrCrr)rr
rrrQrlrirrVrDrrrrr>rr9rEs      r"test_min_max_version_tlsv1_1z*ThreadedTests.test_min_max_version_tlsv1_1s4C3D3D0),)=&),)?&),)=&),)?&NN;;;

7
7
7	96++FMOO<D,FF
9IJ		4-...  i888
9
9
9
9
9
9
9
9
9
9
9
9
9
9
9	9	9	9	9	9	9	9	9	9	9	9	9	9	9	9	9	9	9s7)D"4A
D
>D"
D	D"D	D""D&)D&ct\}}}tjj|_tjj|_tjj|_tjj|_t||t|5}|	tj
|5}|tj5}|
t|jfdddn#1swxYwY|dt#|jdddn#1swxYwYddddS#1swxYwYdS)NrCralert)rr
rrlrirQrrVrDrrrrrrr>rr]rrs       r"test_min_max_version_mismatchz+ThreadedTests.test_min_max_version_mismatchs4C3D3D0),)?&),)?&),)=&),)=&NN;;;

7
7
7	96++FMOO<D,FF
9IJ&&s|443IItV[1222333333333333333

gs1;'7'7888	
9
9
9
9
9
9
9
9
9
9
9
9
9
9
9	9	9	9	9	9	9	9	9	9	9	9	9	9	9	9	9	9	9sZ)E4 E"D6EDE	D
+E5EE	EE		EE Ec2t\}}}tjj|_tjj|_tjj|_t
||t|5}|tj	|5}|
t|jf|
|ddddn#1swxYwYddddS#1swxYwYdS)NrCrr)rr
rrrQrirVrDrrrrr>rr9rEs      r"test_min_max_version_sslv3z(ThreadedTests.test_min_max_version_sslv3so3B3D3D0),)=&),)=&),)=&NN;;;

7
7
7	76++FMOO<D,FF
7IJ		4-...  g666
7
7
7
7
7
7
7
7
7
7
7
7
7
7
7	7	7	7	7	7	7	7	7	7	7	7	7	7	7	7	7	7	7s75)DA
C4(D4C8	8D;C8	<DDDct\}}}tjj|_t|5}|tj|5}|t|j
f|d|ddddn#1swxYwYddddS#1swxYwYdS)NrCrECDHr)
rr
rrlrirDrrrrr>rrrEs      r"test_default_ecdh_curvez%ThreadedTests.test_default_ecdh_curvesN4C3D3D0*-)?&
 
7
7
7	56++FMOO<D,FF
5IJ		4-...

fahhjjm444
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5	5	5	5	5	5	5	5	5	5	5	5	5	5	5	5	5	5	5s6)C"AB>2C>C	CC	CCCrrcl	tjrtjdt\}}}t
|dd}|5|tj|5}|	t|jf|d}tjr2tjd
||||dkr$|t#|d	n#|t#|d
|d|}||t)|ddddn#1swxYwY|tj|5}|	t|jf|d}tjr2tjd

|||||||dkr$|t#|d	n#|t#|d
|d|}||t)|ddddn#1swxYwYddddS#1swxYwYdS)NrTFrtrrz! got channel binding data: {0!r}
r=0sCB tls-unique
rz(got another channel binding data: {0!r}
)rrrrrrrDrrrrr>rrrr9rrcrLrrrassertNotEqual)	rrrrr=rcb_datapeer_data_reprnew_cb_datas	         r"rz-ThreadedTests.test_tls_unique_channel_bindingsT	/?	#JT"""3B3D3D0#N+/5:<<<-	G-	G++MOO$,,..
C12		4-...//==?NJ$$<CCGLLNNN$$W---99;;)++$$S\\26666$$S\\2666*+++!"!1!1  !%g!5!5j!A!ACCC)
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C0 ++MOO$,,..
G12		4-...33LAA?J$$CJJ'))
##G[999$$W---99;;)++$$S\\26666$$S\\2666*+++!"!1!1  !%k!2!2!9!9*!E!EGGG'
G
G
G
G
G
G
G
G
G
G
G
G
G
G
G3-	G-	G-	G-	G-	G-	G-	G-	G-	G-	G-	G-	G-	G-	G-	G-	G-	G-	Gs\)N)<EG"N)"G&	&N))G&	*+N)E0NN)N	N)N	N))N-0N-ct\}}}t||dd|}tjr8tjd|d||dhddS)NTrrrz got compression: {!r}
r|>NRLEZLIB)	rrrrrrrrrrrrrrs     r"test_compressionzThreadedTests.test_compressions3B3D3D0">>*.,4666?	VJ7>>u]?STTUUU

eM*,C,C,CDDDDDr$rCz*ssl.OP_NO_COMPRESSION needed for this testct\}}}|xjtjzc_|xjtjzc_t	||dd|}||dddS)NTrXr|)rryr
rCrrr[s     r"test_compression_disabledz'ThreadedTests.test_compression_disableds4C3D3D0#"77#"77">>*.,4666	


eM*D11111r$rct\}}}tjj|_|t|dtjj|_t||dd|}|dd}|	d}d|vr(d|vr&d	|vr$|
d
|dzdSdSdSdS)NkEDHTrXrrrADHEDHDHEzNon-DH cipher: )rr
rrlrirrrSrrr0)rrrrrrpartss       r"test_dh_paramszThreadedTests.test_dh_params)s4C3D3D0),)?&%%f---""6***),)?&">>*.,4666x#S!!%u"4"4e9K9KII'&)344444"4"49K9Kr$ct\}}}|d|dtjj|_t||dd|}t\}}}|d|dtjj|_t||dd|}t\}}}|d|d|dtjj|_|tj	5t||dd|ddddS#1swxYwYdS)N	secp384r1zECDHE:!eNULL:!aNULLTrXr)
rrrSr
rrlrQrrrr[s     r"test_ecdh_curvezThreadedTests.test_ecdh_curve:s3B3D3D0%%k222""#8999),)?&">>*.,4666
4C3D3D0%%k222""#8999),)?&">>*.,4666
4C3D3D0%%l333%%k222""#8999),)?&


s|
,
,	2	2~~&*T(0
2
2
2
2	2	2	2	2	2	2	2	2	2	2	2	2	2	2	2	2	2	2sE55E9<E9ct\}}}t||dd|}||dddS)NTrXr~)rrrr[s     r"test_selected_alpn_protocolz)ThreadedTests.test_selected_alpn_protocolYsV3B3D3D0">>*.,4666	


e23T:::::r$ct\}}}|ddgt||dd|}||dddS)NrbarTrXr~)rr&rrr[s     r"/test_selected_alpn_protocol_if_server_uses_alpnz=ThreadedTests.test_selected_alpn_protocol_if_server_uses_alpnasn3B3D3D0))5%.999">>*.,4666	


e23T:::::r$c	\gd}ddgdfddgdfdgdfddgdfg}|D]\}}t\}}}||||	t||dd|}n#tj$r}	|	}Yd}	~	nd}	~	wwxYwd	t|d
t|dt|d}
|d
}||||
|dfzt|dr|ddnd}||||
|dfzdS)N)rrl	milkshakerrlrozhttp/3.0zhttp/4.0TrXzfailed trying z	 (s) and z (c).
was expecting z, but got %s from the %sr~rmrrnothingr=)rr&rr
rr]rrc)
rserver_protocolsprotocol_testsclient_protocolsrrrrrr7r
client_result
server_results
             r"test_alpn_protocolsz!ThreadedTests.test_alpn_protocolsjs666U^U#U^U#]K(*
%t,	
+9	>	>&h7F7H7H4NNH--.>???--.>???
*>+926<@4<	>>>
<




+,,,,c2B.C.C.C.CH



'C""89M]H M8#<<
>
>
>u4566FE"9:2>><E
]H M8#<<
>
>
>
>/	>	>sA44BB

BcdSrXrYrs r"test_npn_protocolsz ThreadedTests.test_npn_protocolssr$cttj}|tttj}|t
ttj}|t|||fSrX)	r
rmr`rrrrarr)rr
other_contextrs    r"sni_contextszThreadedTests.sni_contextss(?@@&&777s'>??
%%&6777(?@@,,Z888}n<<r$cT|d}|d|ff|ddS)Nr}r.r7)r)rrr!rs    r"check_common_namezThreadedTests.check_common_names2Z 

d+-tI?????r$cNg|\}}d|_fd}||t||dd}|d|fg||dgt||dd}|d|fg||tg|dt||dd}||t|gdS)NFcL||f|	|_dSdSrX)rr)rrrcallsrzs   r"rz6ThreadedTests.test_sni_callback.<locals>.servername_cbs6LL+7888&#0   '&r$Tsupermessagerrr?notfunny)r{rrrrr}r)rrrrrrrzs     @@r"rzThreadedTests.test_sni_callbacksy8<8I8I8K8K5
~(-%	1	1	1	1	1	1	..}===">>*.,:<<<
	
..!A BCCCun555">>*.,0222	
$!7 8999u&>???..t444">>*.,6888	
u&>???#####r$c:|\}}}d}|||tj5}t||dd}dddn#1swxYwY||jjddS)NctjSrX)r
ALERT_DESCRIPTION_ACCESS_DENIEDrs   r"cb_returning_alertzAThreadedTests.test_sni_callback_alert.<locals>.cb_returning_alerts66r$FrrTLSV1_ALERT_ACCESS_DENIED)	r{rrr
rrrrr=)rrrzrrrrs       r"test_sni_callback_alertz%ThreadedTests.test_sni_callback_alerts8<8I8I8K8K5
~	7	7	7../ABBB


s|
,
,	@&~~.30>@@@E	@	@	@	@	@	@	@	@	@	@	@	@	@	@	@	
,.IJJJJJsA00A47A4c|\}}}d}||tj5}|t
j5}t||dd}dddn#1swxYwY||j	j
d||jjtddddS#1swxYwYdS)NcddzdSrrYrs   r"
cb_raisingz;ThreadedTests.test_sni_callback_raising.<locals>.cb_raisings
aCCCCr$FrrSSLV3_ALERT_HANDSHAKE_FAILURE)r{rrcatch_unraisable_exceptionrr
rrrrr=
unraisableexc_typeZeroDivisionError)rrrzrrcatchrrs        r"test_sni_callback_raisingz'ThreadedTests.test_sni_callback_raisings8<8I8I8K8K5
~			..z:::

/
1
1	KU""3<00
DB*>>274BDDD
D
D
D
D
D
D
D
D
D
D
D
D
D
D
D

R\0<
>
>
>U-68IJJJ	K	K	K	K	K	K	K	K	K	K	K	K	K	K	K	K	K	K7 C!$B8C!B	C!B	AC!!C%(C%c|\}}}d}||tj5}|t
j5}t||dd}dddn#1swxYwY||j	j
d||jjtddddS#1swxYwYdS)NcdS)NrrYrs   r"cb_wrong_return_typezOThreadedTests.test_sni_callback_wrong_return_type.<locals>.cb_wrong_return_types5r$FrrTLSV1_ALERT_INTERNAL_ERROR)r{rrrrr
rrrrr=rrr)rrrzrrrrrs        r"#test_sni_callback_wrong_return_typez1ThreadedTests.test_sni_callback_wrong_return_types9=8I8I8K8K5
~			../CDDD

/
1
1	CU""3<00
DB*>>274BDDD
D
D
D
D
D
D
D
D
D
D
D
D
D
D
D
R\02NOOOU-6	BBB	C	C	C	C	C	C	C	C	C	C	C	C	C	C	C	C	C	Crc	t\}}}|d|dgd}t|||}|dd}|t	|d|D]6\	}}t	fd|Ds|	7dS)Nz
AES128:AES256zAES256:eNULL)r:zAES-256TLS_CHACHA20TLS_AESrrrc3 K|]}|vV	dSrXrY)rialgr!s  r"rjz4ThreadedTests.test_shared_ciphers.<locals>.<genexpr>s'<<ssd{<<<<<<r$)rrSr
assertGreaterrcanyr0)
rrrr
expected_algsrrtls_versionbitsr!s
         @r"test_shared_ciphersz!ThreadedTests.test_shared_cipherss3B3D3D0""?333"">222



#>>,4666/033w<<+++'.	 	 #D+t<<<<m<<<<<
 		$	 	 r$ct\}}}t|d}|5|tj|}|t
|jf||t|j
d|t|jdddddS#1swxYwYdS)NFrrrshello)rrDrrrrr>rrrrLrrEs      r",test_read_write_after_close_raises_valuerrorz:ThreadedTests.test_read_write_after_close_raises_valuerrors3B3D3D0#N5III
	=	=**6=??;C+EEA
IItV[)***
GGIIIj!&$777j!'8<<<	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=sB CCCc
d}ttjd5}||dddn#1swxYwY|tjtjt
\}}}t|d}|5|tj	|5}|
t|jfttjd5}|
|||d|dddn#1swxYwYdddn#1swxYwYddddS#1swxYwYdS)NsxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxwbFrrrr)rKrTESTFNrrunlinkrrDrrrrr>sendfilerra)	r	TEST_DATArNrrrr=rfiles	         r"
test_sendfilezThreadedTests.test_sendfilesQ	
)"D
)
)	Q
GGI																()*:;;;3B3D3D0#N5III
	>	>++FMOO<D,FF
>IJ		4-...)*D11>TJJt$$$$$QVVD\\9===>>>>>>>>>>>>>>>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>	>	>	>	>	>	>	>	>	>	>	>	>	>	>	>	>	>	>si?AA)E8<E >?E	=E 	E

E E
E E8 E$	$E8'E$	(E88E<?E<ct\}}}tjj|_t|||}|d}||j||j	d||j
d||j||jd|
|d|}||dd||ddt||||}|}||dd	||dd||d|d}||j|j||||||||j	|j	||j
|j
t|||}|
|d|d}||j|j||||}||dd
||ddt||||}||d|d}	||	j|j||	|||	j	|j	||	j
|j
|}||dd||dd	dS)Nrrurrrrr)rurrrr9)rr
rrlrirrHidrrrr
has_ticketticket_lifetime_hintr}rrassertIsNotrErS)
rrrrrru	sess_statsession2session3session4s
          r"test_sessionzThreadedTests.test_session$s3B3D3D0),)?&#>>,4666	"
###7<+++7?A...*+++77;;;/0111"0022	8,a0006*A...#>>+2XGGG"0022	8,a0006*A..../000#gj1117+++7+++
w|<<< 0'/BBB#>>,4666/0111#HK444Hg..."0022	8,a0006*A...#>>+2XGGG./000#gj1117+++
w|<<< 0'/BBB"0022	8,a0006*A.....r$ct\}}}t\}}}tjj|_tjj|_t|d}|5|tj|5}||j	d||j
d|t|j
f|j	}|||t 5}	t"|_	dddn#1swxYwY|t%|	jddddn#1swxYwY|tj|5}|t|j
f|t(5}	||_	dddn#1swxYwY|t%|	jddddn#1swxYwY|tj|5}||_	|t|j
f||j	j|j||j	|||j
ddddn#1swxYwY|tj|5}|t(5}	||_	|t|j
fdddn#1swxYwY|t%|	jddddn#1swxYwYddddS#1swxYwYdS)NFrrzValue is not a SSLSession.z#Cannot set session after handshake.Tz)Session refers to a different SSLContext.)rr
rrlrirDrrrrurrrr>rHrrrr]rrr)
rrrrclient_context2rnr=rrur7s
          r"test_session_handlingz#ThreadedTests.test_session_handling]s3B3D3D0 / 1 1A*-)?&*-.*@'#N5III
'	N'	N++FMOO<D,FF

QIJ  D111  !14888		4-...)(((&&y11'Q &AI'''''''''''''''  Q[!1!13OPPP

Q

Q

Q

Q

Q

Q

Q

Q

Q

Q

Q

Q

Q

Q

Q ++FMOO<D,FF
HIJ		4-...&&z22(a 'AI(((((((((((((((  Q[!1!1!FHHH

H
H
H
H
H
H
H
H
H
H
H
H
H
H
H ++FMOO<D,FF
9IJ$			4-...  wz:::  G444  !14888
9
9
9
9
9
9
9
9
9
9
9
9
9
9
9!,,V]__=E-GG
NJK&&z223a 'AIIItV[1222333333333333333  Q[!1!1!LNNN

N
N
N
N
N
N
N
N
N
N
N
N
N
N
NA'	N'	N'	N'	N'	N'	N'	N'	N'	N'	N'	N'	N'	N'	N'	N'	N'	N'	Ns$)O
BE3
D4(E34D88E3;D8<+E3'O3E7	7O:E7	;+O&<H5"G6*H56G::H5=G:>+H5)O5H9	9O<H9	=+O(BK8,O8K<	<O?K<	+O+N:)M;/N:;M??N:M?+N:.O:N>	>ON>	OOON)Hr|rGrHrrrrrrrsrKr
rrrrrrr|rrrrrrrrrrrrrrrr!r)r0r4r7r;r>rCrJrErGrJrLrOrLrr\rRr^r1r2rerhrjrmrvrxr{r}rrrrrrrrrrYr$r"rrsWz***"*"+**"X"/"/"/H&E&E&EP222BX')T333*@@@*@@@4636363p#E#E#EJ)$$%$4'''RHHH.'"";;#";"(?(?(?T'""JJ#"J'"";;#";)$$NN%$N")$$RR%$R.777r!!!4CCC:FFFP666&222*:///b&,&,&,PAAAAAAAAA---&)$$99%$9)$$'""
9
9#"%$
9)$$
9
9%$
9)$$'""99#"%$9 '""77#"7555"X)BBEGG8G8GGG8GtEEEX&9::EGG22GG2X_^%PQQ55RQ5 222>;;;;;; > > >D===@@@&$&$&$PKKKKKK$CCC&   $===
>
>
>7/7/7/r0N0N0N0N0Nr$rrzTest needs TLS 1.3cPeZdZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdZ
dS)
TestPostHandshakeAuthctjtjg}|D]J}t|}||jdd|_||jdtj|_||jtj||jdd|_||jtj||jdtj|_d|_||jtj||jdLdSr)	r
r`rarmrpost_handshake_authrrr)rr}rdrUs    r"test_pha_setterz%TestPostHandshakeAuth.test_pha_setters=#S%<
	"	<	<H..**CS4e<<<&*C#S4d;;;!/COS_c.?@@@S4d;;;&+C#S_c.?@@@S4e<<<!/CO&*C#S_c.?@@@S4d;;;;%	<	<r$cLt\}}}d|_tj|_d|_|tt|d}|5|tj	|5}|
t|jf|
d||dd|
d||dd	|
d||dd
|
d||dd	|
d|dd
}|d|dddn#1swxYwYddddS#1swxYwYdS)NTFrrrrrrr
rrirr:)rrr
rrrrrDrrrrr>rrrarr)rrrrr=r	cert_texts       r"test_pha_requiredz'TestPostHandshakeAuth.test_pha_requireds}3B3D3D0-1*%(%6"-1*&&777#N5III
	J	J++FMOO<D,FF
JIJ		4-...
###  z:::  w777
###  y999  w777
###FF4LL//
;;	

=yIII
J
J
J
J
J
J
J
J
J
J
J
J
J
J
J	J	J	J	J	J	J	J	J	J	J	J	J	J	J	J	J	J	Js7)HE-H5HH	HH		HH Hct\}}}d|_tj|_d|_d}||_||_t
|d}|5|tj|d5}|	t|jf|d|
tjd5|d}||d	|d
|ddddn#1swxYwYdddn#1swxYwYddddS#1swxYwYdS)NTctjr=|tjkr/||||||f}tjd|ddSdSdS)NzTLS: r)rrrALERTrrr)rQ	directionr9content_typemsg_typerrs       r"msg_cbz>TestPostHandshakeAuth.test_pha_required_nocert.<locals>.msg_cbsc
5<?3H#H#Hi,$O
  !3!3!3!344444
5
5#H#Hr$rFrrz#(certificate required|EOF occurred)rr
r)rrr
rr
_msg_callbackrDrrrrr>rrrrar)rrrrrr=rrs        r"test_pha_required_nocertz.TestPostHandshakeAuth.test_pha_required_nocerts33B3D3D0-1*%(%6"-1*	5	5	5
(.$'-$#N4HHH
	!	!++FMOO<DAF,HH
!KL		4-...++L9!!
66$<<D$$T7333GGJ'''FF4LLL!!!!!!!!!!!!!!!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!	!	!	!	!	!	!	!	!	!	!	!	!	!	!	!	!	!	!s\*E(AEAD9-E9D==ED=EE(E	E(E	E((E,/E,ctjrtjdt\}}}d|_tj|_	d|_|
ttj|_	t|d}|5|tj|5}|t"|jf|d||dd|d	||dd
|d||dddddn#1swxYwYddddS#1swxYwYdS)NrTFrrrrrrr
r)rrrrrrrr
rrrrrrDrrrrr>rrarEs      r"test_pha_optionalz'TestPostHandshakeAuth.test_pha_optionals?	#JT"""3B3D3D0-1*%(%6"-1*&&777&)%6"#N5III
		:		:++FMOO<D,FF
:IJ		4-...
###  z:::  w777
###  y999
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:		:		:		:		:		:		:		:		:		:		:		:		:		:		:		:		:		:		:s7)GCF, G,F0	0G3F0	4GGGcLtjrtjdt\}}}d|_tj|_	d|_t|d}|5|tj|5}|
t|jf|d||dd|d	||dd
|d||dddddn#1swxYwYddddS#1swxYwYdS)NrTFrrrrrrr
)rrrrrrrr
rrrDrrrrr>rrarEs      r"test_pha_optional_nocertz.TestPostHandshakeAuth.test_pha_optional_nocerts?	#JT"""3B3D3D0-1*%(%6"-1*#N5III

	;
	;++FMOO<D,FF	
;IJ		4-...
###  z:::  w777
###  z:::	
;	
;	
;	
;	
;	
;	
;	
;	
;	
;	
;	
;	
;	
;	
;
	;
	;
	;
	;
	;
	;
	;
	;
	;
	;
	;
	;
	;
	;
	;
	;
	;
	;s70)FCF5FF	FF		FF Fct\}}}d|_tj|_|tt|d}|5|tj	|5}|
t|jf|
tjd5|dddn#1swxYwY|d|d|ddddn#1swxYwYddddS#1swxYwYdS)	NTFrrz
not serverrsextension not receivedr)rrr
rrrrrDrrrrr>rrrrrrarEs      r"test_pha_no_pha_clientz,TestPostHandshakeAuth.test_pha_no_pha_clients3B3D3D0-1*%(%6"&&777#N5III
	G	G++FMOO<D,FF
GIJ		4-...++CL,GG5522444555555555555555

7FFF

G
G
G
G
G
G
G
G
G
G
G
G
G
G
G	G	G	G	G	G	G	G	G	G	G	G	G	G	G	G	G	G	Gs\)EAD9C$D9$C((D9+C(,AD9-E9D=	=ED=	EEEct\}}}tj|_d|_|tt|d}|5|tj	|5}|
t|jf|
d||dd|
d||dd	|
d||dddddn#1swxYwYddddS#1swxYwYdS)
NTFrrrrrrr
)rr
rrrrrrDrrrrr>rrrarEs      r"test_pha_no_pha_serverz,TestPostHandshakeAuth.test_pha_no_pha_server&s3B3D3D0%(%6"-1*&&777#N5III

	:
	:++FMOO<D,FF	
:IJ		4-...
###  y999  w777
###  y999	
:	
:	
:	
:	
:	
:	
:	
:	
:	
:	
:	
:	
:	
:	
:
	:
	:
	:
	:
	:
	:
	:
	:
	:
	:
	:
	:
	:
	:
	:
	:
	:
	:s7)FCE)F)E-	-F0E-	1FFFcPt\}}}tj|_tjj|_d|_|tt|d}|5|tj|5}|
t|jf|d|d|ddddn#1swxYwYddddS#1swxYwYdS)NTFrrrsWRONG_SSL_VERSIONr)rr
rrrrlrirrrrDrrrrr>rrrarEs      r"test_pha_not_tls13z(TestPostHandshakeAuth.test_pha_not_tls13:s3B3D3D0%(%6"),)?&-1*&&777#N5III
	B	B++FMOO<D,FF
BIJ		4-...

2AFF4LLAAA
B
B
B
B
B
B
B
B
B
B
B
B
B
B
B	B	B	B	B	B	B	B	B	B	B	B	B	B	B	B	B	B	Bs7.)DA D7DD	D
D	DD"Dct}ttj}d|_|td|_tj|_	ttj
}|t|td|_tj
|_	t|d}|5|t!j|5}|t$|jf|d||dd|d||dd	|d||dd
||idddn#1swxYwYddddS#1swxYwYdS)NTFrrrrrrr
r)rr
rmrarrrrrrr`rrrrDrrrrr>rrrarx)rrrrr=rs      r"test_bpo37428_pha_cert_nonez1TestPostHandshakeAuth.test_bpo37428_pha_cert_noneKs[,(?@@-1*&&777(-%%(]"(?@@&&777,,Z888-1*%(%6"#N5III
	6	6++FMOO<D,FF

6IJ		4-...
###  z:::  w777
###  y999  "555

6

6

6

6

6

6

6

6

6

6

6

6

6

6

6	6	6	6	6	6	6	6	6	6	6	6	6	6	6	6	6	6	6s7()H9DH!H9!H%	%H9(H%	)H99H=H=c	td\}}}t|d}|5|tj|5}|t
|jf|j}|	t|d|\}}|j}	|	t|	d|	||	d|	t|t|	d|	t|t|	d||||t|t||t|t|||||dt||d	t||t$j}
|t$j}||
t,|d
|
||t.|	t0|
|dddn#1swxYwYddddS#1swxYwYdS)NFrrrrrrzCN=localhostzCN=our-ca-serverz-----BEGIN CERTIFICATE-----)rrDrrrrr>rrrrcrhashrrSget_inforpublic_bytesrENCODING_PEMENCODING_DERrBr]rr
r,)rrrrr=rvceecauvcr3r	s            r"test_internal_chain_clientz0TestPostHandshakeAuth.test_internal_chain_clientjsI3B4
4
4
0$N5III
		++
 (,
		4-...Y1133  R!,,,Bi4466  S1---  SV,,,  b4A<<888  b4A<<888##B+++##DHHd2hh777##DHHd2hh777##BKKMM2;;==AAA

nd2hh777

0$r((;;;ood&788ood&788%%c3///

;SAAA%%c5111  ,,S1137














																		s6)M
KL2&M
2L6	6M
9L6	:M

MMct\}}}|ttj|_tjj|_t|d}|5|
tj|5}|t|jf|d|d}||d|d|d}||ddddn#1swxYwYddddS#1swxYwYdS)NFrrsVERIFIEDCHAIN
rs
sUNVERIFIEDCHAIN
)rrrr
rrrrlrirDrrrrr>rrar)rrrrr=rress       r"test_internal_chain_serverz0TestPostHandshakeAuth.test_internal_chain_servers3B3D3D0&&777%(%6"),)?&#N5III
	1	1++
 (,

1		4-...*+++ffTll  i000,---ffTll  i000

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1	1	1	1	1	1	1	1	1	1	1	1	1	1	1	1	1	1	1s7')EB"D>2E>E	EE	EEEN)r|rGrHrrrrrrrrrrrrYr$r"rrs<<<0JJJ2#!#!#!J:::0;;;,GGG :::(BBB"666>###J11111r$rkeylog_filenamez0test requires OpenSSL 1.1.1 with keylog callbackcBeZdZejfdZeeje	ddZ
eeje	ddZeejej
jdeje	ddZdZdZd	Zd
S)TestSSLDebugct|5}tt|cdddS#1swxYwYdSrX)rKrcr)rfnamerNs   r"keylog_lineszTestSSLDebug.keylog_liness~
%[[	 AtAww<<	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 s
9==rcD|tjtjttj}||jd|	tjtjtj|_||jtj|
tjtj||dd|_||jd|t t"f5tjtjtj|_dddn#1swxYwY|t(5d|_ddddS#1swxYwYdS)Nr)rrrrr
rmrarrr}rrisfilerHrrIsADirectoryErrorPermissionErrorrabspathrrZs  r"test_keylog_defaultsz!TestSSLDebug.test_keylog_defaultss	
	()*:;;;nnS455,d333	(899:::'.,i.>???y'788999**,,a000",d333


 1?C
D
D	3	3"$'//	 011#3#3C	3	3	3	3	3	3	3	3	3	3	3	3	3	3	3


y
)
)	$	$"#C	$	$	$	$	$	$	$	$	$	$	$	$	$	$	$	$	$	$s%AGG"GHHHch|tjtjt	\}}}tj|_t
|d}|5|tj|5}|	t|jfdddn#1swxYwYdddn#1swxYwY||
dd|_tj|_t
|d}|5|tj|5}|	t|jfdddn#1swxYwYdddn#1swxYwY||
dtj|_tj|_t
|d}|5|tj|5}|	t|jfdddn#1swxYwYdddn#1swxYwY||
dd|_d|_dS)NFrrr)rrrrrrrDrrrrr>rrrErEs      r"test_keylog_filenamez!TestSSLDebug.test_keylog_filenames	
	()*:;;;3B3D3D0)2)9&#N5III
	/	/++FMOO<D,FF
/IJ		4-...
/
/
/
/
/
/
/
/
/
/
/
/
/
/
/	/	/	/	/	/	/	/	/	/	/	/	/	/	/	/
	
**,,a000)-&)2)9&#N5III
	/	/++FMOO<D,FF
/IJ		4-...
/
/
/
/
/
/
/
/
/
/
/
/
/
/
/	/	/	/	/	/	/	/	/	/	/	/	/	/	/	/	
 1 1 3 3R888)2)9&)2)9&#N5III
	/	/++FMOO<D,FF
/IJ		4-...
/
/
/
/
/
/
/
/
/
/
/
/
/
/
/	/	/	/	/	/	/	/	/	/	/	/	/	/	/	/	
 1 1 3 3R888)-&)-&&&s!)C
"B8,C8B<	<C?B<	CCC-)F"F8FF	FF	FF"F)I1,"II1I	I1!I	"I11I58I5z.test is not compatible with ignore_environmentc|tjtjtjjtj	5tjtj	d<|
tj	dtjttj
}|
|jdt}|
|jtjt}|
|jtjddddS#1swxYwYdS)N
SSLKEYLOGFILE)rrrrrsmockrOdictrenvironrr
rmrarrrrZs  r"test_keylog_envzTestSSLDebug.test_keylog_envsg
	
	()*:;;;
]
 
%
%bj
1
1	D	D*3*:BJ'RZ8):JKKK..!899CS0$777,,..CS0)2BCCC,,..CS0)2BCCC	D	D	D	D	D	D	D	D	D	D	D	D	D	D	D	D	D	DsDE++E/2E/c6t\}}}d}||jd||_||j||t5t|_ddddS#1swxYwYdS)NcdSrXrYrQrr9rrrs      r"rz.TestSSLDebug.test_msg_callback.<locals>.msg_cbrr$)rrrrrr)rrrrrs     r"test_msg_callbackzTestSSLDebug.test_msg_callbacks3B3D3D0				


n2D999'-$

n2F;;;


y
)
)	4	4+188N(	4	4	4	4	4	4	4	4	4	4	4	4	4	4	4	4	4	4s-BBBcpt\}}}tjj|_gfd}||_t
|d}|5|tj|5}|	t|jfdddn#1swxYwYdddn#1swxYwYdtjtjtjfdtjtjtjfdS)Nc|tj|t|ddh||||fdS)NrLr)rBr
rrrr)rQrr9rrrrrs      r"rz4TestSSLDebug.test_msg_callback_tls12.<locals>.msg_cbsk!!$
666!!$...MM)fg%6777JJ	7L(CDDDDDr$FrrrLr)rr
rrlrirrDrrrrr>rr	HANDSHAKEr
SERVER_KEY_EXCHANGECHANGE_CIPHER_SPEC)rrrrrr=rrs`      @r"test_msg_callback_tls12z$TestSSLDebug.test_msg_callback_tls12	s3B3D3D0),)?&	E	E	E	E	E	E(.$#N5III
	/	/++FMOO<D,FF
/IJ		4-...
/
/
/
/
/
/
/
/
/
/
/
/
/
/
/	/	/	/	/	/	/	/	/	/	/	/	/	/	/	/
	



Z')B

0
2	
	
	

	



j(/*L

/
1	
	
	
	
	
s6
)B;6"B$B;$B(	(B;+B(	,B;;B?B?c\t\}}}tdd}fd}||_||_t|d}|5|tj|5}|t|jfdddn#1swxYwY|tj|5}|t|jfdddn#1swxYwYddddS#1swxYwYdS)NrcdSrXrYrs      r"rz@TestSSLDebug.test_msg_callback_deadlock_bpo43577.<locals>.msg_cb,rr$c|_dSrXrC)rrrUserver_context2s   r"sni_cbz@TestSSLDebug.test_msg_callback_deadlock_bpo43577.<locals>.sni_cb/s*DLLLr$Frr)	rrsni_callbackrDrrrrr>)	rrrrrrr=rrs	        @r"#test_msg_callback_deadlock_bpo43577z0TestSSLDebug.test_msg_callback_deadlock_bpo43577(s3B3D3D0)++A.				+	+	+	+	+(.$&,##N5III
	/	/++FMOO<D,FF
/IJ		4-...
/
/
/
/
/
/
/
/
/
/
/
/
/
/
/ ++FMOO<D,FF
/IJ		4-...
/
/
/
/
/
/
/
/
/
/
/
/
/
/
/		/	/	/	/	/	/	/	/	/	/	/	/	/	/	/	/	/	/sZ)D!:"B(D!(B,	,D!/B,	0+D!"D	=D!	D
	
D!D
	D!!D%(D%N)r|rGrHrrrrequires_keylogrsr1r2rrrflagsignore_environmentrrrrrYr$r"rrs*!*!1    X_^%PQQ$$RQ_$,X_^%PQQ . .RQ_ .DX_SY1EGGX_^%PQQ
D
DRQGG_
D
4
4
4


>/////r$rc	|tjtjt	jddddS)Niirr)
setsockoptr
SOL_SOCKET	SO_LINGERstructpack)rs r")set_socket_so_linger_on_with_zero_timeoutr?s2OOF%v'7T1a9P9PQQQQQr$cNeZdZ	GddejZdZdZdZdZ	dS)TestPreHandshakeClosec@eZdZddfd
ZdZdZfdZdZxZS)6TestPreHandshakeClose.SingleConnectionTestServerThreadN)rrc||_d|_d|_d|_d|_|t
j|_n||_t	|dS)Nr$r )
call_after_accept
received_data
wrap_errorrr>rrrrsuperr)rr!rrrr{s    r"rz?TestPreHandshakeClose.SingleConnectionTestServerThread.__init__Isa%6D"!$D"DO DMDI&4&GG$'''''r$c.||SrX)r0rs r"r3z@TestPreHandshakeClose.SingleConnectionTestServerThread.__enter__UsJJLLLKr$c	|jr|jn#t$rYnwxYw|d|_dSrX)rrr`rr!r6s  r"r7z?TestPreHandshakeClose.SingleConnectionTestServerThread.__exit__Ys^
=*M'')))



IIKKK"DOOOs #
00c:ttjj|_tj|j_|jt|j	tttj|_tj|j|_|j|j|jdt'dS)Nrrr)r
rrrssl_ctxrrrrrrrrrr7r>rprrr=r"r0)rr{s r"r0z<TestPreHandshakeClose.SingleConnectionTestServerThread.startbs55ck6MNNDL'*'8DL$L..h.???L(((G(LLL"MOODM%/
>>DIM$$T\222M  ###GGMMOOOOOr$cR	|j\}}n*#t$rY|jdSwxYw	|jn#|jwxYw|5||r	ddddS	|j|d}	|d|_n.#t$rYn"wxYw#t$r}||_
Yd}~nd}~wwxYwddddS#1swxYwYdS)NTr)rrr>rrr&rrar r`r!)rrQaddress
tls_socketrYs     r"r#z:TestPreHandshakeClose.SingleConnectionTestServerThread.runms
& $
 4 4 6 6
gg



##%%%%%	


##%%%%
##%%%%

))$//







!%!9!9$D!9!Q!QJ-7__S-A-A**"***&)DOOOOOO*

















sA$
AA$AA$$A?D)C1C! D!
C.+D-C..D1
D;DDDDD #D )	r|rGrHrr3r7r0r#
__classcell__)r{s@r" SingleConnectionTestServerThreadrGs?C
	(
	(
	(
	(
	(
	(
	(				#	#	#																	r$r,chtjdkrdSt|tsYt|tr|jt
jks/tjdt|ddtj
r1	|dtjd|d}dS#d}wxYwdS)Nlinuxzwrong.version.numberr=rUz!Could not recreate conditions on z: err=)rrMr\rr`rEINVALresearchr^rr4rXs  r""non_linux_skip_if_other_okay_errorz8TestPreHandshakeClose.non_linux_skip_if_other_okay_errors<7""Fs011	
W
%
%	*-)u|*C*CI,gc8R.H.H"$OO+D


)#,))"%))***d



+D*Cs%B++B/cztjtjfd}||d}||t	j5}||jt||	d
|d|dddn#1swxYwY
||j}d|_	|d|j||t&||||t*j|d|jd|d|j|d	|jd	||jd
d}d}dS#d}d}wxYw)Nctjst	ddS)Nz+wrap_socket event never set, test may fail.F)rr2rrRuntimeError)unusedready_for_server_wrap_socketserver_accept_calleds r"rzPTestPreHandshakeClose.test_preauth_data_to_tls_server.<locals>.call_after_acceptsC $$&&&/44W5JKK
R"#PQQQ5r$preauth_data_to_tls_serverrr!FsDELETE /data HTTP/1.0

r$before TLS handshake with datarrattr must existr)rr1r,rsrrrrrrAr2rerrrr!rr rBr`r2r
rrrur=rSrr<)rrr=rmr!r7r8s     @@r"test_preauth_data_to_tls_serverz5TestPreHandshakeClose.test_preauth_data_to_tls_serversl(00'0'8'8$						66"31733	
&!!!
]__	NN6?66889995f===u%%% %%'''KK8999LLNNN																%((***


&
 	S&"6777!!*g66633J???!!*cl;;;MM:JOA<NOOOMM:J<MNNN:?1#5666j06GHHHJFFFJFMMMMs .BDDD
C$H44H:c	
tj
tj		
fd}||d}||t	|jt
j5}||j
		
tjs|
dt}	||d}d}|d}|n#t&$r}|}d}Yd}~nd}~wwxYwdddn#1swxYwY|	|d|||t&||||tj|d	|jd
|d	|j|d|jd||jd
d}d}dS#d}d}wxYw)Nctjstdt	||d|dS)Nz ERROR: test client took too longsWHTTP/1.0 307 Temporary Redirect
Location: https://example.com/someone-elses-server

T)r2rrrrrerr)conn_to_client$client_can_continue_with_wrap_socket$server_can_continue_with_wrap_sockets r"rzPTestPreHandshakeClose.test_preauth_data_to_tls_client.<locals>.call_after_accepts7<<W=RSS
:8999
6nEEE



  """0446664r$preauth_data_to_tls_clientr:ztest server took too longr/rr(r$r;rrr<r)rr1r,rsrrrrrrr2rrr0r
rrrarr`rrrBr2rrrur=rSrr<)rrr=rmr&
tls_clientr!r rYrArBs         @@r"test_preauth_data_to_tls_clientz5TestPreHandshakeClose.test_preauth_data_to_tls_clients/8/@/@,/8/@/@,						66"31733	
&!!!1&/BBB
]__	#NN6?66889990446667<<W=RSS
7		56660022G	
#$001==
"
 * 4 4
  """"

$
$
$ 
 #






$	#	#	#	#	#	#	#	#	#	#	#	#	#	#	#$	


	S-000!!*g66633J???!!*cl;;;MM:JOA<NOOOMM:J<MNNN:?1#5666j06GHHHJFFFJFMMMMsJBE;E(,E;
E,E'"E;'E,,E;;E?E?CJJcttjGfddtjj}fd}d}||d|}||t|j||j	d|j
t|}|
t5|d	d
ddi
|}dddn#1swxYwY|dS)NceZdZfdZdS)eTestPreHandshakeClose.test_https_client_non_tls_response_ignored.<locals>.SynchronizedHTTPSConnectionc:tjj|t
js+t
jrtj	
d|j|j
|j|_
dS)Nz"server_responding event never set.r)httprmHTTPConnectionrr2rrrrrr_contextrrr)rserver_respondings r"rzmTestPreHandshakeClose.test_https_client_non_tls_response_ignored.<locals>.SynchronizedHTTPSConnection.connects*224888)--g.CDDKKJ$$%IJJJ M55	496>>			r$N)r|rGrHr)rMsr"SynchronizedHTTPSConnectionrHs.	
>	
>	
>	
>	
>	
>	
>r$rNct||d|dS)Ns!HTTP/1.0 402 Payment Required

T)rrerr)r@rMs r"rz[TestPreHandshakeClose.test_https_client_non_tls_response_ignored.<locals>.call_after_acceptsY5nEEE



  """!!###4r$g@non_tls_http_RST_responder)rr!rrr)r>rrrHEADz/testHostr/)headers)rr1rJrmHTTPSConnectionr,rsrrrr>r
rrr`rgetresponser)rrNrrrr=
connectionresponserMs       @r"*test_https_client_non_tls_response_ignoredz@TestPreHandshakeClose.test_https_client_non_tls_response_ignoreds%O--
	>
	>
	>
	>
	>
	>
	>$+*E
	>
	>
	>					66"317!!	
&!!!1&/BBB00++--a0[2244	





w
'
'	0	0vw8MNNN!--//H	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	




s/DD DN)
r|rGrHrrr,r2r=rErXrYr$r"rrCs:::::9+;:::x2***X888t22222r$rcJeZdZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdS)TestEnumerationscjGddtj}tj|tdS)NcpeZdZejZejZejZ	ej
ZejZ
ejZejZdS);TestEnumerations.test_tlsversion.<locals>.CheckedTLSVersionN)r|rGrHrPROTO_MINIMUM_SUPPORTEDrnPROTO_SSLv3rPROTO_TLSv1r
PROTO_TLSv1_1r
PROTO_TLSv1_2rl
PROTO_TLSv1_3rPROTO_MAXIMUM_SUPPORTEDrorYr$r"CheckedTLSVersionr]:sJ $ <$E$E(G(G(G $ <r$re)enumIntEnum_test_simple_enumr)rres  r"test_tlsversionz TestEnumerations.test_tlsversion9sJ	=	=	=	=	=	=	=	=	
0*=====r$cjGddtj}tj|tdS)Nc(eZdZ	dZdZdZdZdZdZdS)DTestEnumerations.test_tlscontenttype.<locals>.Checked_TLSContentTyperyrr:N)	r|rGrHrrrAPPLICATION_DATAHEADERINNER_CONTENT_TYPErYr$r"Checked_TLSContentTyperlEs8
"$EI!F!&r$rs)rfrgrhr)rrss  r"test_tlscontenttypez$TestEnumerations.test_tlscontenttypeDsJ	'	'	'	'	'T\	'	'	'	
5GGGGGr$cjGddtj}tj|tdS)NceZdZ	dZdZdZdZdZdZdZ	dZ
d	Zd
ZdZ
dZd
ZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZ dZ!d Z"d!Z#d"Z$d#S)$@TestEnumerations.test_tlsalerttype.<locals>.Checked_TLSAlertTyper
ryrrm()rR+,-./rQ123<FGPVZr_mnopqrstxN)%r|rGrHCLOSE_NOTIFYUNEXPECTED_MESSAGEBAD_RECORD_MACDECRYPTION_FAILEDRECORD_OVERFLOWDECOMPRESSION_FAILUREHANDSHAKE_FAILURENO_CERTIFICATEBAD_CERTIFICATEUNSUPPORTED_CERTIFICATECERTIFICATE_REVOKEDCERTIFICATE_EXPIREDCERTIFICATE_UNKNOWNILLEGAL_PARAMETER
UNKNOWN_CA
ACCESS_DENIEDDECODE_ERROR
DECRYPT_ERROREXPORT_RESTRICTIONPROTOCOL_VERSIONINSUFFICIENT_SECURITYINTERNAL_ERRORINAPPROPRIATE_FALLBACK
USER_CANCELEDNO_RENEGOTIATIONMISSING_EXTENSIONUNSUPPORTED_EXTENSIONCERTIFICATE_UNOBTAINABLEUNRECOGNIZED_NAMEBAD_CERTIFICATE_STATUS_RESPONSEBAD_CERTIFICATE_HASH_VALUEUNKNOWN_PSK_IDENTITYCERTIFICATE_REQUIREDNO_APPLICATION_PROTOCOLrYr$r"Checked_TLSAlertTyperwTs
L!#N " O$&! "N O&(#"$"$"$ "JMLM!#!$&!N%'"M" #$'!'*$ #.1+),&#& #& &)###r$r)rfrgrhr)rrs  r"test_tlsalerttypez"TestEnumerations.test_tlsalerttypeSsK&	*&	*&	*&	*&	*4<&	*&	*&	*N	
3]CCCCCr$cjGddtj}tj|tdS)NcheZdZ	dZdZdZdZdZdZdZ	dZ
d	Zd
ZdZ
dZd
ZdZdZdZdZdZdZdZdZdZdS)DTestEnumerations.test_tlsmessagetype.<locals>.Checked_TLSMessageTyperrrrr9r/rrrrR
r<rryrrmrnCroN)r|rGrH
HELLO_REQUESTCLIENT_HELLOSERVER_HELLOHELLO_VERIFY_REQUESTNEWSESSION_TICKETEND_OF_EARLY_DATAHELLO_RETRY_REQUESTENCRYPTED_EXTENSIONSCERTIFICATErCERTIFICATE_REQUESTSERVER_DONECERTIFICATE_VERIFYCLIENT_KEY_EXCHANGEFINISHEDCERTIFICATE_URLCERTIFICATE_STATUSSUPPLEMENTAL_DATA
KEY_UPDATE
NEXT_PROTOMESSAGE_HASHrrYr$r"Checked_TLSMessageTyper~s
MLL#$  ! !"##$ K"$"$K!#"$H O!# "JJL!'r$r)rfrgrhr
)rrs  r"test_tlsmessagetypez$TestEnumerations.test_tlsmessagetype}sJ	(	(	(	(	(T\	(	(	(6	
5GGGGGr$ctjtjdddtj}|j|_tj|tjdS)N
_SSLMethodr
c8|do|dkS)Nr[rr.r s r"rz1TestEnumerations.test_sslmethod.<locals>.<lambda>sT__[99WdFW>Wr$source)	rf
_old_convert_rgr
rr_rrhr)rChecked_SSLMethods  r"test_sslmethodzTestEnumerations.test_sslmethodsX .lEWWx->,J)0#.AAAAAr$ctjtjdddtj}tj|tjdS)NOptionsr
c,|dS)NOP_rr s r"rz/TestEnumerations.test_options.<locals>.<lambda>sT__U33r$r)rfrIntFlagr
rrhr)rCheckedOptionss  r"rzzTestEnumerations.test_optionssJ+i33x
	
~s{;;;;;r$ctjtjdddtj}tj|tjdS)NAlertDescriptionr
c,|dS)NALERT_DESCRIPTION_rr s r"rz8TestEnumerations.test_alertdescription.<locals>.<lambda>sT__-ABBr$r)rfrrgr
rrhr)rCheckedAlertDescriptions  r"test_alertdescriptionz&TestEnumerations.test_alertdescriptionsN"&"40%BBx###
	
68LMMMMMr$ctjtjdddtj}tj|tjdS)NSSLErrorNumberr
c,|dS)N
SSL_ERROR_rr s r"rz6TestEnumerations.test_sslerrornumber.<locals>.<lambda>sT__\::r$r)rfrrgr
rrhr)rChecked_SSLErrorNumbers  r"test_sslerrornumberz$TestEnumerations.test_sslerrornumbersN!%!3.::x"""
	
5s7IJJJJJr$ctjtjdddtj}tj|tjdS)NVerifyFlagsr
c,|dS)NVERIFY_rr s r"rz3TestEnumerations.test_verifyflags.<locals>.<lambda>sT__Y77r$r)rfrrr
rrhr)rCheckedVerifyFlagss  r"test_verifyflagsz!TestEnumerations.test_verifyflagssL!/mU77x
	
13?CCCCCr$ctjtjdddtj}tj|tjdS)N
VerifyModer
c,|dS)NCERT_rr s r"rz2TestEnumerations.test_verifymode.<locals>.<lambda>sT__W55r$r)rfrrgr
rrhr)rCheckedVerifyModes  r"test_verifymodez TestEnumerations.test_verifymodesL .lE55x
	
0#.AAAAAr$N)
r|rGrHrirtrrrrzrrrrrYr$r"rZrZ7s	>	>	>
H
H
H(D(D(DTHHH<BBB<<<NNNKKKDDDBBBBBr$rZctjrtjtjd}|D]"\}}|}|r|dr	|d|}n!#t
tj}tdtj	dtj
td|ztdtjztdtjz	tdtj
zn#t$rYnwxYwtt t"t$t&t(t*t,t.t0t2t4fD]8}t6j|stjd	|z9t?j }tCj"t>j#g|RdS)
N)MacWindowsrr~ztest_ssl: testing with z          under %sz          HAS_SNI = %rz          OP_ALL = 0x%8xz          OP_NO_TLSv1_1 = 0x%8xzCan't read certificate file %r)$rrrMmac_ver	win32_veritemsrrr
rAr@rrxrrrrrrrrrrrrBADKEYrrrexists
TestFailedrthreading_setuprsaddModuleCleanupthreading_cleanup)platsr!rwplatfilenamethread_infos      r"setUpModulers#)

 ++--	-	-JD$466D
Q
"&$$-)++,,D


 
 
 #":":<	=	=	=
"T)***
&4555
(3:5666	3c6GGHHHH			D		.'>=):	$RR
w~~h''	R$%E%PQQQ	R#244K.@O;OOOOOOs2D
DD__main__rX)rTFNN)Nrr)rrs
unittest.mockrrtest.supportrrrrrrr0rrrrrfrhttp.clientrJrrrurllib.requestrrrrWrM	sysconfigryrImportErrorimport_deprecatedr	
import_moduler
rrrr
rrRPy_DEBUGr2rt_PROTOCOL_NAMESrSrr@rkget_config_varrrrverr^rr#rfsencoderrrrrrrrrrrr+rrrrrrrrrrr'rrrrrrrrrrrrrrCrDrErFrGrOrVre	lru_cacherbr|rrignore_warningsrxrJrrrTestCaserrPr4rIrcrqrrrrtest.ssl_serversrrrDrHrrrrKrrm
HAS_KEYLOGrrrrrZrr|mainrYr$r"<module>r!s



&&&&&&""""""&&&&&&))))))((((((				











								



MMMM
FFF-?,Z88"m!%((KKKKKKKKKKKK73*++5clg5F3&''	+y8112JKK
)
)JE3
U##gcnc**%(E""FFF9]##X&&9^$$
)M
"
"X&&G$$
Y344I233	8		r{6"")Hl33	(L11
/++&-.
")$
%
%)N++&
;FT0++&-.$9^,,*i 011.Yx
.
.

Y}
%
%
i
&&Ik""	*In%%	
)M
"
")011	<	 	 Ik""	y+,,i 566	>	"	"r{6""GC!4a8873 2A66WS"6::%gc+H!LL$WS*FJJ
9;;
3333


444*%%%P"...5_4
 #}t!D$/////,!04444442l1l1l1l1l1x(l1l1l1^{
 {
 {
 {
 {
 8${
 {
 {
 |3D3D3D3D3DH%3D3D3Dl@3@3@3@3@3X&@3@3@3F.....X&...`k<k<k<k<k<H-k<k<k<\9%%LLLLLX&LL&%L4	Z	Z	Z	ZNNN/.....XXXXX)XXXtttttt)tttl?GEI#....bIJKGKGKGKG\}N}N}N}N}NH%}N}N}N@0__Y//1EFFP1P1P1P1P1H-P1P1GFP1fWS^%6
7
7
%(%BDDT/T/T/T/T/8$T/T/T/nRRRqqqqqH-qqqhTBTBTBTBTBx(TBTBTBn P P PFzHMOOOOOs$>BB
B
D33D;:D;