python (3.12.0)

(root)/
lib/
python3.12/
__pycache__/
ssl.cpython-312.opt-2.pyc

ˑeA
n	ddlZddlZddlmZddlmZmZm	Z
ddlmZddlZddlm
Z
mZmZddlmZmZmZddlmZmZmZmZmZmZmZddlmZmZdd	lmZmZm Z 	dd
lm!Z!ddlm#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,ddlm-Z-m.Z.ej^d
e0dee
j^de0deej^de0deej^de0dee
j^de0deej^de0dee1jdxZ3e1_3e1jhjkDcic]\}}||
c}}Z6e7e1ddZ8eeGddZ9eeGddZ:eeGdd Z;eeGd!d"Z<ejzd#k(rdd$lm>Z>m?Z?dd%l@m@Z@mAZAmBZBdd&l@mCZCmDZDmEZEddl@ZFddlGZGddlHZHddlIZIeJZKd'gZLeMed(ZNe-ZOeZPd)ZQd*ZRd+ZSed,d-ZTd.ZUGd/d0ed0d1ZVGd2d3eVeZWGd4d5eZXeWjfdddd6d7ZZdGe[d8eWjdddddd9d:Z\eZZ]e\Z^Gd;d<Z_d=Z`Gd>d?e@ZaeaeX_be_eX_cd@ZddAZedBZfdCZgdDZheideEfdEZjdFZky#e"$rYJwxYwcc}}w)HN)
namedtuple)EnumIntEnumIntFlag)_simple_enum)OPENSSL_VERSION_NUMBEROPENSSL_VERSION_INFOOPENSSL_VERSION)_SSLContext	MemoryBIO
SSLSession)SSLErrorSSLZeroReturnErrorSSLWantReadErrorSSLWantWriteErrorSSLSyscallErrorSSLEOFErrorSSLCertVerificationError)txt2objnid2obj)RAND_statusRAND_add
RAND_bytes)RAND_egd)
HAS_SNIHAS_ECDHHAS_NPNHAS_ALPN	HAS_SSLv2	HAS_SSLv3	HAS_TLSv1HAS_TLSv1_1HAS_TLSv1_2HAS_TLSv1_3)_DEFAULT_CIPHERS_OPENSSL_API_VERSION
_SSLMethodc2|jdxr|dk7S)N	PROTOCOL_PROTOCOL_SSLv23
startswithnames 7/BuggyBox/python/3.12.0/bootstrap/lib/python3.12/ssl.py<lambda>r0}s-K$:K2K)sourceOptionsc$|jdS)NOP_r+r-s r/r0r0s'r1AlertDescriptionc$|jdS)NALERT_DESCRIPTION_r+r-s r/r0r0s!56r1SSLErrorNumberc$|jdS)N
SSL_ERROR_r+r-s r/r0r0s.r1VerifyFlagsc$|jdS)NVERIFY_r+r-s r/r0r0s+r1
VerifyModec$|jdS)NCERT_r+r-s r/r0r0s)r1PROTOCOL_SSLv2ceZdZejZejZejZ	ejZejZ
ejZej Zy)
TLSVersionN)__name__
__module____qualname___sslPROTO_MINIMUM_SUPPORTEDMINIMUM_SUPPORTEDPROTO_SSLv3SSLv3PROTO_TLSv1TLSv1
PROTO_TLSv1_1TLSv1_1
PROTO_TLSv1_2TLSv1_2
PROTO_TLSv1_3TLSv1_3PROTO_MAXIMUM_SUPPORTEDMAXIMUM_SUPPORTEDr1r/rDrDsQ44EE  G  G  G44r1rDc&eZdZ	dZdZdZdZdZdZy)_TLSContentTypeN)	rErFrGCHANGE_CIPHER_SPECALERT	HANDSHAKEAPPLICATION_DATAHEADERINNER_CONTENT_TYPErWr1r/rYrYs*EI
Fr1rYceZdZ	dZdZdZdZdZdZdZ	dZ
d	Zd
ZdZ
dZd
ZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZ dZ!d Z"d!Z#d"Z$y#)$
_TLSAlertTyper
rZr[r\()*+,-./0123<FGPVZdmnopqrstxN)%rErFrG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_PROTOCOLrWr1r/rgrgsLNONO JMLMNM"&)#!$!r1rgcfeZdZ	dZdZdZdZdZdZdZ	dZ
d	Zd
ZdZ
dZd
ZdZdZdZdZdZdZdZdZdZy)_TLSMessageTyper
rZr[r\r]Cr_N)rErFrG
HELLO_REQUESTCLIENT_HELLOSERVER_HELLOHELLO_VERIFY_REQUESTNEWSESSION_TICKETEND_OF_EARLY_DATAHELLO_RETRY_REQUESTENCRYPTED_EXTENSIONSCERTIFICATESERVER_KEY_EXCHANGECERTIFICATE_REQUESTSERVER_DONECERTIFICATE_VERIFYCLIENT_KEY_EXCHANGEFINISHEDCERTIFICATE_URLCERTIFICATE_STATUSSUPPLEMENTAL_DATA
KEY_UPDATE
NEXT_PROTOMESSAGE_HASHr`rWr1r/rrsMLLKKHOJJLr1rwin32)enum_certificates	enum_crls)socketSOCK_STREAMcreate_connection)
SOL_SOCKETSO_TYPE_GLOBAL_DEFAULT_TIMEOUT
tls-uniqueHOSTFLAG_NEVER_CHECK_SUBJECTc	|sy|jd}|s!|j|jk(S|dkDrtdj||j	d\}}}d|vrtdj||stdj||dk7rtdj||j	d\}}}|r|sy|j|jk(S)	NF*rz1too many wildcards in certificate DNS name: {!r}..z9wildcard can only be present in the leftmost label: {!r}.z>sole wildcard without additional labels are not support: {!r}.z<partial wildcards in leftmost label are not supported: {!r}.)countlowerCertificateErrorformat	partition)dnhostname	wildcardsdn_leftmostsepdn_remainderhostname_leftmosthostname_remainders        r/_dnsname_matchrs
IxxzX^^---1}?FFrJL	L&(\\#%6"Kl
l
F2J 	 
F2J 	 c
F2J 	 2:1C1CC1H.s.C#5#;#;#===r1c		tj|}tj||k(r|Stdj	|#t
$rYnwxYw	tjtj|S#t
$rtdj	|t$rYnwxYwtdj	|)Nz'{!r} is not a quad-dotted IPv4 address.z+{!r} is neither an IPv4 nor an IP6 address.z{!r} is not an IPv4 address.)	_socket	inet_aton	inet_ntoa
ValueErrorrOSError	inet_ptonAF_INET6AttributeError)ipnameaddrs  r/_inet_patonrIs
  (
T"f,K9@@H



  !1!16::4$$*F6N4	4

3::6B
CCs#A	AA#B+B.-B.c@	t|j}||k(SN)rrstrip)cert_ipaddresshost_ipips   r/_ipaddress_matchrls&
^**,	-B
=r1DefaultVerifyPathszQcafile capath openssl_cafile_env openssl_cafile openssl_capath_env openssl_capathcb	tj}tjj	|d|d}tjj	|d|d}ttjj|r|ndtjj|r|ndg|S)Nrrrr)	rHget_default_verify_pathsosenvirongetrpathisfileisdir)partscafilecapaths   r/rr|s))+EZZ^^E!HeAh
/F
ZZ^^E!HeAh
/Fv(>fD(*

f(=f4&$&&r1cLeZdZ	dZfdZefdZefdZxZS)_ASN1ObjectrWc:t||gt|dS)NFr-super__new___txt2obj)clsoid	__class__s  r/rz_ASN1Object.__new__sws?Xc%>??r1c8	t||gt|Sr)rr_nid2obj)rnidrs  r/fromnidz_ASN1Object.fromnids 	ws3Xc]33r1c<	t||gt|dS)NTr-r
)rr.rs  r/fromnamez_ASN1Object.fromnames#	ws?Xd%>??r1)	rErFrG	__slots__rclassmethodrr
__classcell__rs@r/rrs=I@44
@@r1rznid shortname longname oidceZdZ	dZdZy)Purposez1.3.6.1.5.5.7.3.1z1.3.6.1.5.5.7.3.2N)rErFrGSERVER_AUTHCLIENT_AUTHrWr1r/rrs%K%Kr1rcheZdZ	dZdZdZddZdZ				ddZ		d dZ	dZ
dZd	Zd
Z
ejfdZeedr<efd
Zej*fdZefdZej*fdZefdZej*fdZeedredZej*dZnedZefdZej*fdZefdZefdZej*fdZefdZej*fdZxZS)!
SSLContext)CAROOTNcz|"tjdtdt}t	j
||}|S)Nz9ssl.SSLContext() without protocol argument is deprecated.r)category
stacklevel)warningswarnDeprecationWarningPROTOCOL_TLSrr)rprotocolargskwargsselfs     r/rzSSLContext.__new__s;MMK+

$H""31r1c|yt|tr |jdjdS|jdS)Nidnaascii)
isinstancestrencodedecode)r0rs  r/_encode_hostnamezSSLContext._encode_hostnames>
#
&??6*11'::??7++r1c	F|jj|||||||S)N)sockserver_sidedo_handshake_on_connectsuppress_ragged_eofsserver_hostnamecontextsession)sslsocket_class_create)r0r:r;r<r=r>r@s       r/wrap_socketzSSLContext.wrap_sockets7##++#$;!5+,
	
r1cb|jj||||j|||S)N)r;r>r@r?)sslobject_classrBr8)r0incomingoutgoingr;r>r@s      r/wrap_biozSSLContext.wrap_bios<##++hK 11/BT,
	
r1c<tjdtdt}|D]`}t	|d}t|dk(st|dkDrt
d|jt||j|b|j|y)N'ssl NPN is deprecated, use ALPN insteadrr(r3rz(NPN protocols must be 1 to 255 in length)
r)r*r+	bytearraybyteslenrappendextend_set_npn_protocols)r0
npn_protocolsprotosr-bs     r/set_npn_protocolszSSLContext.set_npn_protocolss

5	

%	Hh(A1v{c!fslIJJMM#a&!MM!		
'r1cbd_ytstdfd}|_y)Nznot a callable objectc:j|}|||Sr)r8)sslobj
servernamesslctxr0server_name_callbacks   r/shim_cbz3SSLContext.set_servername_callback.<locals>.shim_cbs"!22:>
+FJGGr1)sni_callbackcallable	TypeError)r0r\r]s`` r/set_servername_callbackz"SSLContext.set_servername_callbacks6' $D01 788
H!(Dr1ct}|D]`}t|d}t|dk(st|dkDrtd|j	t||j|b|j
|y)Nr3rrLz)ALPN protocols must be 1 to 255 in length)rMrNrOrrPrQ_set_alpn_protocols)r0alpn_protocolsrTr-rUs     r/set_alpn_protocolszSSLContext.set_alpn_protocolssq&	Hh(A1v{c!fslJKKMM#a&!MM!		
  (r1c
t}	t|D]0\}}}|dk(s
|dus|j|vs |j|2	|r|j||S#t$rtjdY6wxYw)Nx509_asnTz-unable to enumerate Windows certificate store)cadata)rMrrrQPermissionErrorr)r*load_verify_locations)r0	storenamepurposecertscertencodingtrusts       r/_load_windows_store_certsz$SSLContext._load_windows_store_certss	K):9)E
+%hz)}u(<T*	
+&&e&4		KMMIJ	KsA!A!A!!BBct|tst|tjdk(r#|j
D]}|j
|||jy)Nr)r4rr`sysplatform_windows_cert_storesrqset_default_verify_paths)r0rlrks   r/load_default_certszSSLContext.load_default_certssV';/G$$<<7"!66
C	..y'B
C%%'r1minimum_versionc*tt|Sr)rDrrxr0rs r/rxzSSLContext.minimum_versioneg566r1c|tjk(r$|xjtjzc_t
ttj||yr)	rDrLoptionsr3OP_NO_SSLv3rr#rx__set__r0valuers  r/rxzSSLContext.minimum_versions?
(((!4!4 44*j9AA$Nr1c*tt|Sr)rDrmaximum_versionrzs r/rzSSLContext.maximum_version$r{r1cJttt
j||yr)rr#rrrs  r/rzSSLContext.maximum_version(s*j9AA$Nr1c*tt|Sr)r3rr}rzs r/r}zSSLContext.options,suw''r1cJttt
j||yr)rr#r}rrs  r/r}zSSLContext.options0s
j*-55dEBr1rcb|jtjz}|tjk7Sr_host_flagsrHr)r0ncss  r/hostname_checks_common_namez&SSLContext.hostname_checks_common_name5s)""T%F%FFC$;;;;r1c|r%|xjtjzc_y|xjtjzc_yrr)r0rs  r/rz&SSLContext.hostname_checks_common_name:s6  T%F%F$FF   D$E$EE r1cyNTrWr0s r/rz&SSLContext.hostname_checks_common_nameAsr1c8	t|}||jSyr)r
_msg_callback
user_function)r0innerrs  r/rzSSLContext._msg_callbackEs)	>%&&&r1c#ttt
j|dyt	dstdfd}|_ttt
j||y)N__call__z is not callable.c.	t|}	t|}|tjk(rt}n |tjk(rt
}nt}	||}||||||S#t$rYgwxYw#t$rYjwxYw#t$rY6wxYwr)rDrrYrdrargr)conn	directionversioncontent_typemsg_typedatamsg_enumcallbacks       r/rz'SSLContext._msg_callback.<locals>.innerus
$W-
.|<555*!6!66(*
#H-D)W((D:
:'






s4A*A9B*	A65A69	BB	BB)rr#rrhasattrr`r)r0rrrs ` r/rzSSLContext._msg_callbacklsf*j7??dKx,xj(9:;;	:2'
j*3;;D%Hr1c*tt|Sr)r'rr-rzs r/r-zSSLContext.protocols%'*++r1c*tt|Sr)r<rverify_flagsrzs r/rzSSLContext.verify_flagss57/00r1cJttt
j||yr)rr#rrrs  r/rzSSLContext.verify_flagss
j*2::4Gr1cRt|}	t|S#t$r|cYSwxYwr)rverify_moder?rrs  r/rzSSLContext.verify_modes1#	e$$	L	s
&&cJttt
j||yr)rr#rrrs  r/rzSSLContext.verify_modes
j*199$Fr1r)FTTNN)FNN)rErFrGrurArErr8rCrHrVrarerqrr rwrrpropertyrxsetterrr}rHrrr-rrrrs@r/r#r#s>)OO	,-2,0)-26
 8=/3
( (	)*1)<)<({-.		7
	7
			O
 	O

	7
	7
			O
 	O((
^^CCt34		<
	<
%	+	+	F
,	F
	
	$$L#I#IJ,,11HHGGr1r#)rr	rhc	t|tst||tjk(r"tt}t|_d|_	n.|tjk(rtt}nt||s|s|r|j|||n$|jtk7r|j|t!|drBt"j$j'd}|r!t(j*j,s||_|S)NTkeylog_filename
SSLKEYLOGFILE)r4rr`rr r#PROTOCOL_TLS_CLIENT
CERT_REQUIREDrcheck_hostnamer!PROTOCOL_TLS_SERVERrrj	CERT_NONErwrrrrrsflagsignore_environmentr)rlrr	rhr?
keylogfiles      r/create_default_contextrsg{+  
'%%%01+!%	G''	'01!!
6%%fff=					)	""7+w)*ZZ^^O4
cii::&0G#Nr1F)	cert_reqsrrlcertfilekeyfilerr	rhcn	t|tst||tjk(r	|.t
}n'|tjk(r	|t}nt|t|}	||	_
|||	_|rd|	_
|r
|std|s|r|	j|||s|s|r|	j|||n$|	jtk7r|	j|t!|	drBt"j$j'd}
|
r!t(j*j,s|
|	_|	S)NTzcertfile must be specifiedrr)r4rr`rr rr!rrr#rrload_cert_chainrjrrwrrrrrsrrr)r-rrrlrrrr	rhr?rs           r/_create_unverified_contextrs g{+  
'%%%*H	G''	'*H!!"G+G'!%x5667'26%%fff=					)	""7+w)*ZZ^^O4
cii::&0G#Nr1ceZdZ	dZe		ddZedZejdZedZ	e	jdZ	edZ
ed	Zed
ZddZ
dZdd
ZdZdZdZdZdZdZdZdZddZdZdZy)	SSLObjectcFt|jjd)NzU does not have a public constructor. Instances are returned by SSLContext.wrap_bio().r`rrEr0r.r/s   r/__init__zSSLObject.__init__s+~~&&'(L
M
	
r1Ncd|j|}|j||||||}||_|S)N)r;r>ownerr@)r	_wrap_bio_sslobj)	rrFrGr;r>r@r?r0rYs	         r/rBzSSLObject._create$sD{{3""hK+#

r1c0	|jjSrrr?rs r/r?zSSLObject.context0s6||###r1c&||j_yrrr0ctxs  r/r?zSSLObject.context5s"r1c0	|jjSrrr@rs r/r@zSSLObject.session9s/||###r1c&||j_yrrr0r@s  r/r@zSSLObject.session>s&r1c0	|jjSrrsession_reusedrs r/rzSSLObject.session_reusedBs<||***r1c0	|jjSr)rr;rs r/r;zSSLObject.server_sideGs3||'''r1c0	|jjSr)rr>rs r/r>zSSLObject.server_hostnameLs	#||+++r1c~	||jj||}|S|jj|}|Sr)rread)r0rObuffervs    r/rzSSLObject.readRsG	
!!#v.A!!#&Ar1c:	|jj|Sr)rwriter0rs  r/rzSSLObject.write^s	
||!!$''r1c:	|jj|Sr)rgetpeercertr0binary_forms  r/rzSSLObject.getpeercertfs	||''44r1c>	tjdtdyNrJrrK)r)r*r+rs r/selected_npn_protocolzSSLObject.selected_npn_protocolos		

5	
r1c8	|jjSr)rselected_alpn_protocolrs r/rz SSLObject.selected_alpn_protocolys	||2244r1c8	|jjSr)rcipherrs r/rzSSLObject.ciphers	(||""$$r1c8	|jjSr)rshared_ciphersrs r/rzSSLObject.shared_cipherss	||**,,r1c8	|jjSr)rcompressionrs r/rzSSLObject.compressions	P||''))r1c8	|jjSr)rpendingrs r/rzSSLObject.pendingsF||##%%r1c:	|jjyr)rdo_handshakers r/rzSSLObject.do_handshakes*!!#r1c8	|jjSr)rshutdownrs r/unwrapzSSLObject.unwraps/||$$&&r1c:	|jj|Sr)rget_channel_bindingr0cb_types  r/rzSSLObject.get_channel_bindings	M||//88r1c8	|jjSrrrrs r/rzSSLObject.versions	!||##%%r1c6|jjSr)rverify_client_post_handshakers r/rz&SSLObject.verify_client_post_handshakes||88::r1)FNNNNFr)rErFrGrrrBrr?rr@rr;r>rrrrrrrrrrrrrrrWr1r/rrs

5:=A		$$
^^##$$
^^''++((,,

(5
5%
-*
&$'9&
;r1rcZ	tt|jj|_|Sr)getattrrrE__doc__)funcs r/_sslcopydocrs"49dmm4<<DLKr1c\eZdZ	dZe			d*fd	ZeedZejdZeedZ
e
jdZ
eedZdZd+d	Z
d
Zd,dZdZed-d
ZedZedZedZedZedZd.fd	Zd+fd	ZdZd.fd	Zd/fd	Zd0fd	Zd1fd	Zd0fd	Zd1fd	ZdZ dZ!edZ"fdZ#ed Z$ed!Z%fd"Z&ed-d#Z'fd$Z(d%Z)d&Z*fd'Z+ed2d(Z,ed)Z-xZ.S)3	SSLSocketcFt|jjd)NzX does not have a public constructor. Instances are returned by SSLContext.wrap_socket().rrs   r/rzSSLSocket.__init__s)~~&&'((
)
	
r1c|jtttk7rt	d|r|rtd|td|jr
|stdt|j|j|j|j}|j|fi|}	tt|	>di||j!}
|j#||	_||	_d|	_d|	_||	_|j/||	_||	_||	_	|	j7d}|	jO|
||	_(|rn	|	j$jS|	||	j0|	|	j&|	_|r0|	j!}|dk(rtd
|	jU|	S|	S#t8$r}|j:t:j<k7rd}|	j?}
|	jAd	|	jCd}nE#t8$r9}|j:t:j<t:jDfvrd	}Yd}~nd}~wwxYw|	jA|
|rQd
}tGj:|}||_$d|_%	|	jMn#t8$rYnwxYw	|#d}wxYwYd}~d}~wwxYw#t8t
f$r|	jMwxYw)Nz!only stream sockets are supportedz4server_hostname can only be specified in client modez,session can only be specified in client modez'check_hostname requires server_hostname)familytypeprotofilenoFTrr1z5Closed before TLS handshake with data in recv buffer.rr@zHdo_handshake_on_connect should not be specified for non-blocking socketsrW)+
getsockoptrrrNotImplementedErrorrrdictrrrrrrrr
gettimeoutdetach_context_session_closedrr;r8r>r<r=getpeernamererrnoENOTCONNgetblockingsetblockingrecvEINVALrreasonlibraryclose
settimeout
_connected_wrap_socketr)rr:r;r<r=r>r?r@r/r0sock_timeout	connectedeblockingnotconn_pre_handshake_datar notconn_pre_handshake_data_errortimeoutrs                  r/rBzSSLSocket._creates??:w/;>%&IJJ "233" "/00!!/FGG;;TYYdjj;;=
s{{3)&)
i'1&1(


&&77H'>$$8!'	LI%#

#}}99+t';';

 : +"oo/G#~()stt%%'ts#	<ww%..(I'')HU#

1
.2YYq\*
1775>>5<<"@@-0*	
1

X&)Q3;AGGV3L0:@07;?08JJL<::8<4#*%#	<lZ(



s,GA+K
KAKH&%K&	I(//I#K#I((<K%J65K6	K?KKKKKKK!K>c|jSr)rrs r/r?zSSLSocket.contexts}}r1c4||_||j_yr)rrr?rs  r/r?zSSLSocket.context!s
"r1cH|j|jjSyrrrs r/r@zSSLSocket.session&s#<<#<<'''$r1cN||_|j||j_yyr)rrr@rs  r/r@zSSLSocket.session,s$
<<##*DLL $r1cH|j|jjSyrrrs r/rzSSLSocket.session_reused2s#<<#<<...$r1cFtd|jjz)NzCan't dup() %s instances)rrrErs r/dupz
SSLSocket.dup8s$!"<"&.."9"9#:;	;r1cyrrW)r0msgs  r/_checkClosedzSSLSocket._checkClosed<sr1c>|js|jyyr)rrrs r/_check_connectedzSSLSocket._check_connected@s

r1cF	|j|jtd	||jj||S|jj|S#t$r4}|j
dtk(r|jr|Yd}~yYd}~yd}~wwxYw)Nz'Read on closed or unwrapped SSL socket.rr1)r0rrrrr.
SSL_ERROR_EOFr=)r0rOrxs    r/rzSSLSocket.readHs	-	
<<FGG	!||((f55||((--	vvayM)d.G.G%	s#A#A##	B ,$BBB c	|j|jtd|jj|S)Nz(Write on closed or unwrapped SSL socket.)r0rrrrs  r/rzSSLSocket.write]s@	9	
<<GHH||!!$''r1cx|j|j|jj|Sr)r0r2rrrs  r/rzSSLSocket.getpeercertfs/||''44r1c\|jtjdtdyr)r0r)r*r+rs r/rzSSLSocket.selected_npn_protocolls(

5	

r1c|j|jtjsy|jj	Sr)r0rrHrrrs r/rz SSLSocket.selected_alpn_protocolvs4<<t}}<<6688r1cp|j|jy|jjSr)r0rrrs r/rzSSLSocket.cipher~s.<<<<&&((r1cp|j|jy|jjSr)r0rrrs r/rzSSLSocket.shared_cipherss.<<<<..00r1cp|j|jy|jjSr)r0rrrs r/rzSSLSocket.compressions.<<<<++--r1c|j|j8|dk7rtd|jz|jj	|St
|||S)Nrz3non-zero flags not allowed in calls to send() on %s)r0rrrrrsend)r0rrrs   r/r>zSSLSocket.sendsd<<#z INN#$$<<%%d++7<e,,r1c|j|jtd|jz|t|||St||||S)Nz%sendto not allowed on instances of %s)r0rrrrsendto)r0r
flags_or_addrrrs    r/r@zSSLSocket.sendtos^<<#D!^^,-
-
\7>$
667>$
t<<r1c2td|jz)Nz&sendmsg not allowed on instances of %srrrs   r/sendmsgzSSLSocket.sendmsgs ""J"&..#12	2r1c|j|j}|dk7rtd|jzd}t	|5}|jd5}t
|}||kr|j||d}||z
}||krddddddyt|%||S#1swY"xYw#1swYyxYw)Nrz6non-zero flags not allowed in calls to sendall() on %sB)
r0rrr
memoryviewcastrOr>rsendall)	r0rrrview	byte_viewamountrrs	        r/rIzSSLSocket.sendalls<<#z LNN#$$ED!
T499S>
YYfn		)EF"34AQJEfn


7?4//




s$B7/B+
B7+B4	0B77Ccf	|j|j|||St|
|||Sr)r_sendfile_use_sendrsendfile)r0fileoffsetrrs    r/rOzSSLSocket.sendfiles?	<<#**4??7#D&%88r1c|j|j.|dk7rtd|jz|j	|St
|||S)Nrz3non-zero flags not allowed in calls to recv() on %s)r0rrrrrrr0buflenrrs   r/rzSSLSocket.recvs^<<#z INN#$$99V$$7<..r1c|j|r|t|}n|d}|j/|dk7rtd|jz|j||St||||S)Nrrz8non-zero flags not allowed in calls to recv_into() on %s)r0rOrrrrr	recv_intor0rnbytesrrs    r/rVzSSLSocket.recv_intos}v~[F
^F<<#z L..!""99VV,,7$VVU;;r1c|j|jtd|jzt|||S)Nz'recvfrom not allowed on instances of %s)r0rrrrrecvfromrSs   r/rZzSSLSocket.recvfromsI<<#F!^^,-
-7#FE22r1c|j|jtd|jzt||||S)Nz,recvfrom_into not allowed on instances of %s)r0rrrr
recvfrom_intorWs    r/r\zSSLSocket.recvfrom_intosK<<#K!^^,-
-7(??r1c2td|jz)Nz&recvmsg not allowed on instances of %srCrs   r/recvmsgzSSLSocket.recvmsgs!"J"&..#12	2r1c2td|jz)Nz+recvmsg_into not allowed on instances of %srCrs   r/recvmsg_intozSSLSocket.recvmsg_intos !#')-#89	9r1cp|j|j|jjSyNr)r0rrrs r/rzSSLSocket.pendings.<<#<<''))r1cR|jd|_t|
|yr)r0rrr)r0howrs  r/rzSSLSocket.shutdowns#
r1c|jr#|jj}d|_|Stdt|zNzNo SSL wrapper around )rrrr5)r0ss  r/rzSSLSocket.unwrap
s<<<%%'ADLH5D	ABBr1c||jr|jjStdt|zrf)rrrr5rs r/rz&SSLSocket.verify_client_post_handshakes1<<<<<<>>5D	ABBr1c0d|_t|	yr)rr_real_closerzs r/rjzSSLSocket._real_closes
r1c|j|j}	|dk(r|r|jd|jj	|j|y#|j|wxYw)Nr
)r2rrrr)r0blockr&s   r/rzSSLSocket.do_handshakes]//#	%#~%%LL%%'OOG$DOOG$s2A&&A9c|jrtd|js|jtd|jj|d|j||j|_	|rt|%|}nd}t|)||s#d|_|jr|j|S#ttf$r	d|_wxYw)Nz!can't connect in server-side modez/attempt to connect already-connected SSLSocket!Fr	T)r;rrrr?rr>rr
connect_exconnectr<rr)r0rrnrcrs    r/
_real_connectzSSLSocket._real_connect)s@AA??dll6NOO||00%--

1

	W'-%"&//%%'I$	DL	s
6A	CCc*	|j|dy)NFrqr0rs  r/rozSSLSocket.connectCs	4'r1c(	|j|dSrrsrts  r/rnzSSLSocket.connect_exHs	!!$--r1c	t|\}}|jj||j|j
d}||fS)NT)r<r=r;)racceptr?rCr<r=)r0newsockrrs   r/rwzSSLSocket.acceptMsV	>(
,,**7,0,H,H)-)B)B $+&}r1c|j|jj|S|tvrtdj	|y)Nz({0} channel binding type not implemented)rrCHANNEL_BINDING_TYPESrrrs  r/rzSSLSocket.get_channel_bindingYsJ<<#<<33G<<33 >EEgNr1cP|j|jjSyrrrs r/rzSSLSocket.versionds"<<#<<''))r1)FTTNNNrrr)r)rN)rrrbr)/rErFrGrrrBrrr?rr@rr-r0r2rrrrrrrrr>r@rDrIrOrrVrZr\r^r`rrrrrjrrqrornrwrrrrs@r/rrs;
FJ;?&*]]~
^^##((
^^++
//;
*(55
99))11..	-=20 9	/
<3@29
CCCC%%4(
.

r1rc	ddlm}ddlm}d}d}	|j	|ddjdz}||dd|}||d|f|dd	zS#t$rt
d
|d|dwxYw)
Nr)strptime)timegm)JanFebMarAprMayJunJulAugSepOctNovDecz %d %H:%M:%S %Y GMTrrrrz
time data z does not match format "%b")timer}calendarr~indextitler)	cert_timer}r~monthstime_formatmonth_numbertts       r/cert_time_to_secondsrssF(K
7||IbqM$7$7$9:Q>im[
1r!ul+b1g566F-6EF	FFs%AA3z-----BEGIN CERTIFICATE-----z-----END CERTIFICATE-----c	ttj|dd}tg}|t	dt|dDcgc]
}|||dzc}z
}|j
tdzdj|Scc}w)NASCIIstrictr@
)	r5base64standard_b64encode
PEM_HEADERrangerOrP
PEM_FOOTERjoin)der_cert_bytesfssis    r/DER_cert_to_PEM_certrsy&	F%%n5wIA
BeAs1vr2
31Qqt9
33BIIj4 99R=4sA?cb	|jtstdtz|jj	t
stdt
z|jt
tt
t
}tj|jddS)Nz(Invalid PEM encoding; must start with %sz&Invalid PEM encoding; must end with %srr)
r,rrstripendswithrrOrdecodebytesr6)pem_cert_stringds  r/PEM_cert_to_DER_certrs4%%j1C%&'	'  "++J7A%&'	'JZ0@AAahhw9::r1c(	|\}}|t}nt}t|||}t||5}|j	||5}	|	jd}
ddddddt

S#1swYxYw#1swYt

SxYw)N)rr)r&)r>T)rr_create_stdlib_contextrrCrr)rssl_versionca_certsr&hostportrr?r:sslsockdercerts           r/get_server_certificatersJD$!		$[/8,46G
4	10T

 
 t
 
<	0))$/G	00 ((	0	00 ((s#A>A2A>2A;	7A>>Bc.tj|dS)Nz	<unknown>)_PROTOCOL_NAMESr)
protocol_codes r/get_protocol_namers}k::r1r)lrsrcollectionsrenumr_Enumr_IntEnumr_IntFlagrrHrr	r
rrr
rrrrrrrrrrrrrrrImportErrorrrrrrr r!r"r#r$r%r&	_convert_rEr'r,r*__members__itemsrr_SSLv2_IF_EXISTSrDrYrgrrtrrrrrrrrrrrr)rsocket_errorrzrHAS_NEVER_CHECK_COMMON_NAME_RESTRICTED_SERVER_CIPHERSrrrrrrrrr#r rrr_create_default_https_contextrrrrrArErrrrrrrr)r.rs00r/<module>rs[Xt	"HHNN33:22	8(K

x'
6
h.
8+
()
0:/F/FF*,2<2H2H2N2N2PQ;45$;Q:'7>h555hh&"&"&"Rh   :<<7199??
%%d,JK.+.>b DF	  4&@*],HI@*&k5&BGBGJ$+#6#6$$"&t$L49*/9L9L$($"&tD4n!74X;X;vyyz
'
&

7<+

(
;.A$(2I),;c*		TRsJ%=
J1%J.-J.