+
     Bi                        ^ RI t ^ RIt^ RIHt ^ RIHtHtH	t
 ^ RIHt ^ RIt^ RIHtHtHt ^ RIHtHtHt ^ RIHtHtHtHtHtHtHt ^ RIHtHt ^ R	IHtHtH t   ^ R
IH!t! ^ RIH#t#H$t$H%t%H&t&H't'H(t(H)t)H*t*H+t+H,t,H-t-H.t. ^ RIH/t/H0t0 ]Pb                  ! R]2R ]R7       ]
Pb                  ! R]2R ]R7       ]Pb                  ! R]2R ]R7       ]Pb                  ! R]2R ]R7       ]
Pb                  ! R]2R ]R7       ]Pb                  ! R]2R ]R7       ]3Ph                  ;t5]3n5        ]3Pl                  Po                  4        U Uu/ uF  w  rWbK	  	  upp t8]9! ]3RR4      t:]! ]4       ! R R4      4       t;]! ]4       ! R R4      4       t<]! ]4       ! R R 4      4       t=]! ]4       ! R! R"4      4       t>] P~                  R#8X  d	   ^ R$IH@t@HAtA ^ R%IBHBtBHCtCHDtD ^ R&IBHEtEHFtFHGtG ^ RIBtH^ RIItI^ RIJtJ^ RIKtK]LtMR'.tN]O! ]R(4      tP]/tQ]tRR) tSR* tTR+ tU]! R,R-4      tVR. tW ! R/ R0]! R0R14      4      tX ! R2 R3]X]4      tY ! R4 R5]4      tZ]YP                  3R6RR7RR8R/R9 llt\RMR:]]R;R<R=]YP                  R>RR?RR6RR7RR8R/R@ llt^]\t_]^t` ! RA RB4      taRC tb ! RD RE]B4      tc]c]Znd        ]a]Zne        RF tfRGtgRHthRI tiRJ tj]kR]G3RK ltlRL tmR#   ]" d     ELai ; iu upp i )N    N)
namedtuple)EnumIntEnumIntFlag)_simple_enum)OPENSSL_VERSION_NUMBEROPENSSL_VERSION_INFOOPENSSL_VERSION)_SSLContext	MemoryBIO
SSLSession)SSLErrorSSLZeroReturnErrorSSLWantReadErrorSSLWantWriteErrorSSLSyscallErrorSSLEOFErrorSSLCertVerificationError)txt2objnid2obj)RAND_statusRAND_add
RAND_bytes)RAND_egd)HAS_SNIHAS_ECDHHAS_NPNHAS_ALPN	HAS_SSLv2	HAS_SSLv3	HAS_TLSv1HAS_TLSv1_1HAS_TLSv1_2HAS_TLSv1_3HAS_PSKHAS_PHA)_DEFAULT_CIPHERS_OPENSSL_API_VERSION
_SSLMethodc                 >    V P                  R 4      ;'       d    V R8g  # )	PROTOCOL_PROTOCOL_SSLv23
startswithnames   &/usr/lib/python3.14/ssl.py<lambda>r2   }   s    -KK$:K2KK    )sourceOptionsc                 $    V P                  R 4      # )OP_r-   r/   s   &r1   r2   r2      s    'r3   AlertDescriptionc                 $    V P                  R 4      # )ALERT_DESCRIPTION_r-   r/   s   &r1   r2   r2      s    !56r3   SSLErrorNumberc                 $    V P                  R 4      # )
SSL_ERROR_r-   r/   s   &r1   r2   r2      s    .r3   VerifyFlagsc                 $    V P                  R 4      # )VERIFY_r-   r/   s   &r1   r2   r2      s    +r3   
VerifyModec                 $    V P                  R 4      # )CERT_r-   r/   s   &r1   r2   r2      s    )r3   PROTOCOL_SSLv2c                       ] tR t^t]P
                  t]P                  t]P                  t
]P                  t]P                  t]P                  t]P"                  tRtR# )
TLSVersion N)__name__
__module____qualname____firstlineno___sslPROTO_MINIMUM_SUPPORTEDMINIMUM_SUPPORTEDPROTO_SSLv3SSLv3PROTO_TLSv1TLSv1PROTO_TLSv1_1TLSv1_1PROTO_TLSv1_2TLSv1_2PROTO_TLSv1_3TLSv1_3PROTO_MAXIMUM_SUPPORTEDMAXIMUM_SUPPORTED__static_attributes__rG   r3   r1   rF   rF      sQ    44EE  G  G  G44r3   rF   c                   .    ] tR t^t^t^t^t^tRtRt	Rt
R# )_TLSContentType     rG   N)rH   rI   rJ   rK   CHANGE_CIPHER_SPECALERT	HANDSHAKEAPPLICATION_DATAHEADERINNER_CONTENT_TYPEr[   rG   r3   r1   r]   r]      s%     EIFr3   r]   c                       ] tR t^t^ t^
t^t^t^t^t	^(t
^)t^*t^+t^,t^-t^.t^/t^0t^1t^2t^3t^<t^Ft^Gt^Pt^Vt^Zt^dt^mt^nt^ot^pt ^qt!^rt"^st#^tt$^xt%Rt&R# )_TLSAlertTyperG   N)'rH   rI   rJ   rK   CLOSE_NOTIFYUNEXPECTED_MESSAGEBAD_RECORD_MACDECRYPTION_FAILEDRECORD_OVERFLOWDECOMPRESSION_FAILUREHANDSHAKE_FAILURENO_CERTIFICATEBAD_CERTIFICATEUNSUPPORTED_CERTIFICATECERTIFICATE_REVOKEDCERTIFICATE_EXPIREDCERTIFICATE_UNKNOWNILLEGAL_PARAMETER
UNKNOWN_CAACCESS_DENIEDDECODE_ERRORDECRYPT_ERROREXPORT_RESTRICTIONPROTOCOL_VERSIONINSUFFICIENT_SECURITYINTERNAL_ERRORINAPPROPRIATE_FALLBACKUSER_CANCELEDNO_RENEGOTIATIONMISSING_EXTENSIONUNSUPPORTED_EXTENSIONCERTIFICATE_UNOBTAINABLEUNRECOGNIZED_NAMEBAD_CERTIFICATE_STATUS_RESPONSEBAD_CERTIFICATE_HASH_VALUEUNKNOWN_PSK_IDENTITYCERTIFICATE_REQUIREDNO_APPLICATION_PROTOCOLr[   rG   r3   r1   rg   rg      s     LNONO JMLMNM"&)#!$!r3   rg   c                   n    ] tR t^t^ t^t^t^t^t^t	^t
^t^t^t^t^t^t^t^t^t^t^t^t^Ct^tRtRtR# )_TLSMessageTyper_   rG   N)rH   rI   rJ   rK   HELLO_REQUESTCLIENT_HELLOSERVER_HELLOHELLO_VERIFY_REQUESTNEWSESSION_TICKETEND_OF_EARLY_DATAHELLO_RETRY_REQUESTENCRYPTED_EXTENSIONSCERTIFICATESERVER_KEY_EXCHANGECERTIFICATE_REQUESTSERVER_DONECERTIFICATE_VERIFYCLIENT_KEY_EXCHANGEFINISHEDCERTIFICATE_URLCERTIFICATE_STATUSSUPPLEMENTAL_DATA
KEY_UPDATE
NEXT_PROTOMESSAGE_HASHr`   r[   rG   r3   r1   r   r      s~     MLLKKHOJJLr3   r   win32)enum_certificates	enum_crls)socketSOCK_STREAMcreate_connection)
SOL_SOCKETSO_TYPE_GLOBAL_DEFAULT_TIMEOUT
tls-uniqueHOSTFLAG_NEVER_CHECK_SUBJECTc                 J   V '       g   R # V P                  R4      pV'       g"   V P                  4       VP                  4       8H  # V^8  d   \        RP                  V 4      4      hV P	                  R4      w  r4pRV9   d   \        RP                  V 4      4      hV'       g   \        RP                  V 4      4      hVR8w  d   \        RP                  V 4      4      hVP	                  R4      w  rdpV'       d	   V'       g   R # VP                  4       VP                  4       8H  # )F*z1too 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}.)countlowerCertificateErrorformat	partition)dnhostname	wildcardsdn_leftmostsepdn_remainderhostname_leftmosthostname_remainders   &&      r1   _dnsname_matchr     s    IxxzX^^---1}?FFrJL 	L &(\\#%6"Kl
lF2J  	  F2J  	  cF2J  	  2:1C1CC1H..C#5#;#;#===r3   c                     \         P                  ! V 4      p\         P                  ! V4      V 8X  d   V# \        R P	                  V 4      4      h  \
         d     Mi ; i \         P                  ! \         P                  T 4      #   \
         d    \        RP	                  T 4      4      h\         d     Mi ; i\        RP	                  T 4      4      h)z'{!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
ValueErrorr   OSError	inet_ptonAF_INET6AttributeError)ipnameaddrs   & r1   _inet_patonr   I  s      (
 T"f,K 9@@H     !1!16:: 4 $$*F6N4 	4  3::6B
CCs)   A AA!$B -B84B87B8c                 <    \        V P                  4       4      pW!8H  # N)r   rstrip)cert_ipaddresshost_ipips   && r1   _ipaddress_matchr   l  s     
^**,	-B=r3   DefaultVerifyPathszQcafile capath openssl_cafile_env openssl_cafile openssl_capath_env openssl_capathc                     \         P                  ! 4       p \        P                  P	                  V ^ ,          V ^,          4      p\        P                  P	                  V ^,          V ^,          4      p\        \        P                  P                  V4      '       d   TMR\        P                  P                  V4      '       d   TMR.V O5!  # r   N)	rL   get_default_verify_pathsosenvirongetr   pathisfileisdir)partscafilecapaths      r1   r   r   |  s     ))+E ZZ^^E!HeAh/FZZ^^E!HeAh/Fv(>(>fD(*f(=(=f4&$& &r3   c                   b   a a ] tR tRt oRtV 3R lt]V 3R l4       t]V 3R l4       tRt	Vt
V ;t# )_ASN1Objecti  c                >   < \         SV `  ! V .\        VR R7      O5!  # )Fr/   super__new___txt2obj)clsoid	__class__s   &&r1   r   _ASN1Object.__new__  s    ws?Xc%>??r3   c                :   < \         SV `  ! V .\        V4      O5!  # r   )r   r   _nid2obj)r   nidr   s   &&r1   fromnid_ASN1Object.fromnid  s     ws3Xc]33r3   c                >   < \         SV `  ! V .\        VR R7      O5!  # )Tr/   r   )r   r0   r   s   &&r1   fromname_ASN1Object.fromname  s      ws?Xd%>??r3   rG   )rH   rI   rJ   rK   	__slots__r   classmethodr   r   r[   __classdictcell____classcell__r   __classdict__s   @@r1   r   r     sB      I@ 4 4
 @ @ @r3   r   znid shortname longname oidc                       ] tR tRtRtRtRtR# )Purposei  z1.3.6.1.5.5.7.3.1z1.3.6.1.5.5.7.3.2rG   N)rH   rI   rJ   rK   SERVER_AUTHCLIENT_AUTHr[   rG   r3   r1   r   r     s     &K%Kr3   r   c                     a a ] tR tRt oRtRtRtR R ltR tR!R lt	R"R lt
R tR tR	 tR
 t]P                   3R lt]! ]R4      '       dA   ]V 3R l4       t]P,                  V 3R l4       t]V 3R l4       t]P,                  V 3R l4       t]V 3R l4       t]P,                  V 3R l4       t]! ]R4      '       d   ]R 4       t]P,                  R 4       tM]R 4       t]V 3R l4       t]P,                  V 3R l4       t]V 3R l4       t]V 3R l4       t]P,                  V 3R l4       t]V 3R l4       t]P,                  V 3R l4       tRtVt V ;t!# )#
SSLContexti  Nc                    Vf$   \         P                  ! R\        ^R7       \        p\        P
                  ! W4      pV# )Nz9ssl.SSLContext() without protocol argument is deprecated.)category
stacklevel)warningswarnDeprecationWarningPROTOCOL_TLSr   r   )r   protocolargskwargsselfs   &&*, r1   r   SSLContext.__new__  s9    MMK+
 $H""31r3   c                    Vf   R # \        V\        4      '       d!   VP                  R4      P                  R4      # VP                  R4      # )Nidnaascii)
isinstancestrencodedecode)r  r   s   &&r1   _encode_hostnameSSLContext._encode_hostname  sA    #&&??6*11'::??7++r3   c           
     F    V P                   P                  VVVVVV VR 7      # ))sockserver_sidedo_handshake_on_connectsuppress_ragged_eofsserver_hostnamecontextsession)sslsocket_class_create)r  r  r  r  r  r  r  s   &&&&&&&r1   wrap_socketSSLContext.wrap_socket  s7     ##++#$;!5+ , 
 	
r3   c           	     ^    V P                   P                  WVV P                  V4      WPR 7      # ))r  r  r  r  )sslobject_classr  r  )r  incomingoutgoingr  r  r  s   &&&&&&r1   wrap_bioSSLContext.wrap_bio  s8     ##++K 11/B , 
 	
r3   c                L   \         P                  ! R \        ^R7       \        4       pV Fe  p\	        VR4      p\        V4      ^ 8X  g   \        V4      ^8  d   \        R4      hVP                  \        V4      4       VP                  V4       Kg  	  V P                  V4       R# )'ssl NPN is deprecated, use ALPN insteadr   r
  z(NPN protocols must be 1 to 255 in lengthN)
r   r   r  	bytearraybyteslenr   appendextend_set_npn_protocols)r  npn_protocolsprotosr  bs   &&   r1   set_npn_protocolsSSLContext.set_npn_protocols  s    5	

 %Hh(A1v{c!fslIJJMM#a&!MM! & 	'r3   c                x   a a Sf
   R S n         R # \        S4      '       g   \        R4      hV V3R lpVS n         R # )Nznot a callable objectc                 8   < SP                  V4      pS! WV4      # r   )r  )sslobj
servernamesslctxr  server_name_callbacks   &&&r1   shim_cb3SSLContext.set_servername_callback.<locals>.shim_cb  s     !22:>
+FGGr3   )sni_callbackcallable	TypeError)r  r6  r7  s   ff r1   set_servername_callback"SSLContext.set_servername_callback  s9    ' $D011 788H !(Dr3   c                   \        4       pV Fe  p\        VR 4      p\        V4      ^ 8X  g   \        V4      ^8  d   \        R4      hVP	                  \        V4      4       VP                  V4       Kg  	  V P                  V4       R# )r
  z)ALPN protocols must be 1 to 255 in lengthN)r&  r'  r(  r   r)  r*  _set_alpn_protocols)r  alpn_protocolsr-  r  r.  s   &&   r1   set_alpn_protocolsSSLContext.set_alpn_protocols  sl    &Hh(A1v{c!fslJKKMM#a&!MM! ' 	  (r3   c                R    \        V4       F;  w  r4pVR 8X  g   K  VRJ g   VP                  V9   g   K(   V P                  VR7       K=  	  R#   \         d&   p\        P
                  ! RT: 24        Rp?Kl  Rp?ii ; i  \         d    \        P
                  ! R4        R# i ; i)x509_asnT)cadataz.Bad certificate in Windows certificate store: Nz-unable to enumerate Windows certificate store)r   r   load_verify_locationsr   r   r   PermissionError)r  	storenamepurposecertencodingtrustexcs   &&&    r1   _load_windows_store_certs$SSLContext._load_windows_store_certs  s    
	K):9)E%z)}u(<d 66d6C *F  ( d$MM,Z[^Za*bccd 	KMMIJ	Ks?   B B AB A>A93B 9A>>B !B&%B&c                    \        V\        4      '       g   \        V4      h\        P                  R 8X  d%   V P
                   F  pV P                  W!4       K  	  V P                  4        R# )r   N)r  r   r;  sysplatform_windows_cert_storesrN  set_default_verify_paths)r  rI  rH  s   && r1   load_default_certsSSLContext.load_default_certs  sP    ';//G$$<<7"!66	..yB 7%%'r3   minimum_versionc                *   < \        \        SV `  4      # r   )rF   r   rW  r  r   s   &r1   rW  SSLContext.minimum_version      eg566r3   c                   < V\         P                  8X  d)   V ;P                  \        P                  ( ,          un        \
        \        \        `  P                  W4       R # r   )	rF   rP   optionsr5   OP_NO_SSLv3r   r   rW  __set__r  valuer   s   &&r1   rW  rZ    s=    
(((!4!4 44*j9AA$Nr3   c                *   < \        \        SV `  4      # r   )rF   r   maximum_versionrY  s   &r1   rc  SSLContext.maximum_version#  r[  r3   c                J   < \         \        \        `
  P                  W4       R # r   )r   r   rc  r_  r`  s   &&r1   rc  rd  '  s    *j9AA$Nr3   c                *   < \        \        SV `  4      # r   )r5   r   r]  rY  s   &r1   r]  SSLContext.options+  s    uw''r3   c                J   < \         \        \        `
  P                  W4       R # r   )r   r   r]  r_  r`  s   &&r1   r]  rg  /  s    j*-55dBr3   r   c                j    V P                   \        P                  ,          pV\        P                  8g  # r   _host_flagsrL   r   )r  ncss   & r1   hostname_checks_common_name&SSLContext.hostname_checks_common_name4  s)    ""T%F%FFC$;;;;r3   c                    V'       d+   V ;P                   \        P                  ( ,          un         R # V ;P                   \        P                  ,          un         R # r   rj  )r  ra  s   &&r1   rm  rn  9  s6      T%F%F$FF   D$E$EE r3   c                    R # TrG   r  s   &r1   rm  rn  @  s    r3   c                <   < \         SV `  pVe   VP                  # R # r   )r   _msg_callbackuser_function)r  innerr   s   & r1   rt  SSLContext._msg_callbackD  s%    B %&&&r3   c                   <a Sf%   \         \        \        `
  P                  V R 4       R # \	        SR4      '       g   \        S R24      hV3R lpSVn        \         \        \        `
  P                  W4       R # )N__call__z is not callable.c                 >  <  \        V4      p \        V4      pV\        P                  8X  d   \        pM"V\        P                  8X  d   \
        pM\        p V! V4      pS! WVW4V4      #   \         d     Lki ; i  \         d     Lpi ; i  \         d     L:i ; ir   )rF   r   r]   rd   ra   rg   r   )conn	directionversioncontent_typemsg_typedatamsg_enumcallbacks   &&&&&& r1   rv  'SSLContext._msg_callback.<locals>.innert  s    $W-.|< 555*!6!66(*#H- DW(D: :'  
    s4   A, A= B ,A:9A:=B
BBB)r   r   rt  r_  hasattrr;  ru  )r  r  rv  r   s   &f r1   rt  rw  k  sg    *j7??dKx,,xj(9:;;	:2 'j*3;;DHr3   c                *   < \        \        SV `  4      # r   )r)   r   r  rY  s   &r1   r  SSLContext.protocol  s    %'*++r3   c                *   < \        \        SV `  4      # r   )r>   r   verify_flagsrY  s   &r1   r  SSLContext.verify_flags  s    57/00r3   c                J   < \         \        \        `
  P                  W4       R # r   )r   r   r  r_  r`  s   &&r1   r  r    s    j*2::4Gr3   c                V   < \         SV `  p \        V4      #   \         d    Tu # i ; ir   )r   verify_moderA   r   r`  s   & r1   r  SSLContext.verify_mode  s1    #	e$$ 	L	s   
 ((c                J   < \         \        \        `
  P                  W4       R # r   )r   r   r  r_  r`  s   &&r1   r  r    s    j*199$Fr3   )r9  )CAROOTr   )FTTNN)FNN)"rH   rI   rJ   rK   rS  r  r  r   r  r  r!  r/  r<  rA  rN  r   r   rU  r  r   propertyrW  setterrc  r]  rL   rm  rt  r  r  r  r[   r   r   r   s   @@r1   r   r     s     *OO	,
 
( (	)K *1)<)< ( {-..		7 
	7 
			O 
 	O
 
	7 
	7 
			O 
 	O ( ( ^^C C t344		< 
	< 
%	+	+	F 
,	F 
	 
	 $ $L #I #IJ , , 1 1 H H   G G Gr3   r   r   r   rE  c                   \        V \        4      '       g   \        V 4      hV \        P                  8X  d#   \        \        4      p\        Vn        R Vn	        M0V \        P                  8X  d   \        \        4      pM\        V 4      hV;P                  \        P                  \        P                   ,          ,          un        V'       g   V'       g	   V'       d   VP#                  WV4       M&VP                  \$        8w  d   VP'                  V 4       \)        VR4      '       dN   \*        P,                  P/                  R4      pV'       d'   \0        P2                  P4                  '       g   WTn        V# )Tkeylog_filenameSSLKEYLOGFILE)r  r   r;  r   r   r   PROTOCOL_TLS_CLIENTCERT_REQUIREDr  check_hostnamer   PROTOCOL_TLS_SERVERr   r  rL   VERIFY_X509_PARTIAL_CHAINVERIFY_X509_STRICTrF  	CERT_NONErU  r  r   r   r   rQ  flagsignore_environmentr  )rI  r   r   rE  r  
keylogfiles   &$$$  r1   create_default_contextr    s    g{++  
 '%%%01+!%	G''	'01!! T;;!445 6 6%%ff=					) 	""7+w)**ZZ^^O4
cii:::&0#Nr3   	cert_reqsr  FrI  certfilekeyfilec                
   \        V\        4      '       g   \        V4      hV\        P                  8X  d   V f   \
        p M+V\        P                  8X  d   V f   \        p M\        V4      h\        V 4      p	W)n
        Ve   Wn        V'       d   RV	n
        V'       d   V'       g   \        R4      hV'       g	   V'       d   V	P                  WE4       V'       g   V'       g	   V'       d   V	P                  WgV4       M&V	P                  \        8w  d   V	P                  V4       \!        V	R4      '       dN   \"        P$                  P'                  R4      p
V
'       d'   \(        P*                  P,                  '       g   Wn        V	# )NTzcertfile must be specifiedr  r  )r  r   r;  r   r   r  r   r  r   r   r  r  load_cert_chainrF  r  rU  r  r   r   r   rQ  r  r  r  )r  r  r  rI  r  r  r   r   rE  r  r  s   &$$$$$$$$  r1   _create_unverified_contextr    s    g{++  
 '%%%*H	G''	'*H!!"G+'!%x56672 6%%ff=					) 	""7+w)**ZZ^^O4
cii:::&0#Nr3   c                   >  a  ] tR tRt o R t]RR l4       t]R 4       t]P                  R 4       t]R 4       t
]
P                  R 4       t
]R	 4       t]R
 4       t]R 4       tRR ltR tRR ltR tR tR tR tR tR tR tR tR tR tR R ltR tR tRtV tR# )!	SSLObjecti  c                F    \        V P                  P                   R 24      h)zU does not have a public constructor. Instances are returned by SSLContext.wrap_bio().r;  r   rH   r  r  r  s   &*,r1   __init__SSLObject.__init__'  s+    ~~&&' (L M
 	
r3   Nc           	     ^    V P                  V 4      pVP                  WVVWuR 7      pWn        V# ))r  r  ownerr  )r   	_wrap_bio_sslobj)	r   r  r   r  r  r  r  r  r3  s	   &&&&&&&  r1   r  SSLObject._create-  s>     {{3""K+ # 

 r3   c                .    V P                   P                  # r   r  r  rr  s   &r1   r  SSLObject.context9       ||###r3   c                &    WP                   n        R # r   r  r  ctxs   &&r1   r  r  >  s    "r3   c                .    V P                   P                  # r   r  r  rr  s   &r1   r  SSLObject.sessionB  r  r3   c                &    WP                   n        R # r   r  r  r  s   &&r1   r  r  G  s    &r3   c                .    V P                   P                  # r   r  session_reusedrr  s   &r1   r  SSLObject.session_reusedK  s     ||***r3   c                .    V P                   P                  # r   )r  r  rr  s   &r1   r  SSLObject.server_sideP  s     ||'''r3   c                .    V P                   P                  # r   )r  r  rr  s   &r1   r  SSLObject.server_hostnameU  s     ||+++r3   c                ~    Ve   V P                   P                  W4      pV# V P                   P                  V4      pV# r   )r  read)r  r(  buffervs   &&& r1   r  SSLObject.read[  s@     !!#.A  !!#&Ar3   c                8    V P                   P                  V4      # r   )r  writer  r  s   &&r1   r  SSLObject.writeg  s     ||!!$''r3   c                8    V P                   P                  V4      # r   )r  getpeercertr  binary_forms   &&r1   r  SSLObject.getpeercerto  s     ||''44r3   c                    V P                   P                  4       pVf   . # V Uu. uF!  q"P                  \        P                  4      NK#  	  up# u upi r   r  get_verified_chainpublic_bytesrL   ENCODING_DERr  chainrJ  s   &  r1   r  SSLObject.get_verified_chainx  sG     //1=IAFG!!$"3"34GGG   'Ac                    V P                   P                  4       pVf   . # V Uu. uF!  q"P                  \        P                  4      NK#  	  up# u upi r   r  get_unverified_chainr  rL   r  r  s   &  r1   r  SSLObject.get_unverified_chain  sG     113=IAFG!!$"3"34GGGr  c                @    \         P                  ! R \        ^R7       R# r$  r%  N)r   r   r  rr  s   &r1   selected_npn_protocolSSLObject.selected_npn_protocol  s     	5	
r3   c                6    V P                   P                  4       # r   )r  selected_alpn_protocolrr  s   &r1   r   SSLObject.selected_alpn_protocol  s     ||2244r3   c                6    V P                   P                  4       # r   )r  cipherrr  s   &r1   r  SSLObject.cipher  s     ||""$$r3   c                6    V P                   P                  4       # r   )r  shared_ciphersrr  s   &r1   r  SSLObject.shared_ciphers  s     ||**,,r3   c                6    V P                   P                  4       # r   )r  compressionrr  s   &r1   r  SSLObject.compression  s     ||''))r3   c                6    V P                   P                  4       # r   )r  pendingrr  s   &r1   r  SSLObject.pending  s    ||##%%r3   c                :    V P                   P                  4        R # r   )r  do_handshakerr  s   &r1   r  SSLObject.do_handshake  s    !!#r3   c                6    V P                   P                  4       # r   )r  shutdownrr  s   &r1   unwrapSSLObject.unwrap  s    ||$$&&r3   c                8    V P                   P                  V4      # r   )r  get_channel_bindingr  cb_types   &&r1   r  SSLObject.get_channel_binding  s     ||//88r3   c                6    V P                   P                  4       # r   r  r}  rr  s   &r1   r}  SSLObject.version  s     ||##%%r3   c                6    V P                   P                  4       # r   )r  verify_client_post_handshakerr  s   &r1   r  &SSLObject.verify_client_post_handshake  s    ||88::r3   )r  )FNNN   NFr   ) rH   rI   rJ   rK   r  r   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r}  r  r[   r   )r   s   @r1   r  r    s	    
 	 	 $ $ ^^# # $ $ ^^' ' + + ( ( , ,

(5H	H
5%
-*
&$'9&
; ;r3   r  c                 X    \        \        V P                  4      P                  V n        V # r   )getattrr  rH   __doc__)funcs   &r1   _sslcopydocr    s    9dmm4<<DLKr3   c                     a a ] tR tRt oR t]R.V 3R ll4       t]]R 4       4       t	]	P                  R 4       t	]]R 4       4       t]P                  R 4       t]]R 4       4       tR	 tR/R
 ltR tR0R ltR t]R1R l4       t]R 4       t]R 4       t]R 4       t]R 4       t]R 4       t]R 4       t]R 4       tR2V 3R lltR/V 3R lltR tR2V 3R lltR3V 3R lltR4V 3R lltR5V 3R llt R4V 3R llt!R5V 3R llt"R t#R  t$]R! 4       t%V 3R" lt&]R# 4       t']R$ 4       t(V 3R% lt)]R1R& l4       t*V 3R' lt+R( t,R) t-V 3R* lt.]R6R+ l4       t/]R, 4       t0R-t1Vt2V ;t3# )7	SSLSocketi  c                F    \        V P                  P                   R 24      h)zX does not have a public constructor. Instances are returned by SSLContext.wrap_socket().r  r  s   &*,r1   r  SSLSocket.__init__  s)    ~~&&' (( )
 	
r3   c                &  < VP                  \        \        4      \        8w  d   \	        R 4      hV'       d#   V'       d   \        R4      hVe   \        R4      hVP                  '       d   V'       g   \        R4      hVP                  4       p\        VP                  VP                  VP                  VP                  4       R7      p	V P                  ! V 3/ V	B p
\        \        V
`B  ! R/ V	B  VP#                  4         Wjn        Wzn        RV
n        RV
n        W*n        VP/                  V4      V
n        W:n        WJn         V
P7                  4        RpT
PM                  T4       Yn'        T'       dr   T
P$                  PQ                  YT
P0                  YP&                  R
7      T
n        T'       d3   T
P                  4       pTR8X  d   \        R4      hT
PS                  4        T
#   \8         d   pTP:                  \:        P<                  8w  d   h RpT
P?                  4       pT
PA                  R4        T
PC                  ^4      pMJ  \8         d=   pTP:                  \:        P<                  \:        PD                  39  d   h Rp Rp?MRp?ii ; iT
PA                  T4       T'       d1   R	p\G        XP:                  T4      pTTn$        RTn%         Th  Rpi ; i Rp?ELRp?ii ; i    T
PU                  4        h   \8         d     h i ; i; i)z!only stream sockets are supportedz4server_hostname can only be specified in client modeNz,session can only be specified in client modez'check_hostname requires server_hostname)familytypeprotofilenoFTr3   z5Closed before TLS handshake with data in recv buffer.r  r          zHdo_handshake_on_connect should not be specified for non-blocking socketsrG   )+
getsockoptr   r   r   NotImplementedErrorr   r  
gettimeoutdictr  r  r  r  r   r   r  r  detach_context_session_closedr  r  r  r  r  r  getpeernamer   errnoENOTCONNgetblockingsetblockingrecvEINVALr   reasonlibrary
settimeout
_connected_wrap_socketr  close)r   r  r  r  r  r  r  r  sock_timeoutr  r  	connectedeblockingnotconn_pre_handshake_datar*   notconn_pre_handshake_data_errortimeoutr   s   &&&&&&&&          r1   r  SSLSocket._create  s    ??:w/;>%&IJJ  "2 3 3"  "/ 0 0!!!/FGG(;;TYYdjj;;=
 {{3)&)i'1&1C	#M#M DLDL*#*#;#;O#LD +B((<%#!  "D !	OOL)'O#}}99t';';  :   +"oo/G#~()stt%%' o  @77enn,!	++-  '
5
 261. 5wwu~~u||&DD14.	5
   *- UF7?7P4>D4;?C4<@>> <@8 .%@b	

   s   AK+ G) BK+ )K(4AK#8I
	K#
J2JK#JK#-&K#KKK#K+ #K((K+ +L.K?>L?L
LLLc                    V P                   # r   )r   rr  s   &r1   r  SSLSocket.context=  s     }}r3   c                2    Wn         WP                  n        R # r   )r   r  r  r  s   &&r1   r  r9  B  s    "r3   c                N    V P                   e   V P                   P                  # R # r   r  rr  s   &r1   r  SSLSocket.sessionG  s#     <<#<<''' $r3   c                R    Wn         V P                  e   WP                  n        R # R # r   )r!  r  r  r  s   &&r1   r  r<  M  s     <<##*LL  $r3   c                N    V P                   e   V P                   P                  # R # r   r  rr  s   &r1   r  SSLSocket.session_reusedS  s#     <<#<<... $r3   c                N    \        R V P                  P                  ,          4      h)zCan't dup() %s instances)r  r   rH   rr  s   &r1   dupSSLSocket.dupY  s$    !"<"&.."9"9#: ; 	;r3   c                    R # r   rG   )r  msgs   &&r1   _checkClosedSSLSocket._checkClosed]  s    r3   c                N    V P                   '       g   V P                  4        R # R # r   )r-  r#  rr  s   &r1   _check_connectedSSLSocket._check_connecteda  s    
  r3   c                n   V P                  4        V P                  f   \        R4      h Ve   V P                  P                  W4      # V P                  P                  V4      #   \         dE   pTP
                  ^ ,          \        8X  d#   T P                  '       d   Te    R p?^ #  R p?R# h R p?ii ; i)Nz'Read on closed or unwrapped SSL socket.r3   )rE  r  r   r  r   r  SSL_ERROR_EOFr  )r  r(  r  xs   &&& r1   r  SSLSocket.readi  s     	<<FGG	!||((55||((-- 	vvayM)d.G.G.G%	s)   A% 
A% %B40-B/B/.B//B4c                    V P                  4        V P                  f   \        R4      hV P                  P                  V4      # )Nz(Write on closed or unwrapped SSL socket.)rE  r  r   r  r  s   &&r1   r  SSLSocket.write~  s;     	<<GHH||!!$''r3   c                x    V P                  4        V P                  4        V P                  P                  V4      # r   )rE  rH  r  r  r  s   &&r1   r  SSLSocket.getpeercert  s/    ||''44r3   c                    V P                   P                  4       pVf   . # V Uu. uF!  q"P                  \        P                  4      NK#  	  up# u upi r   r  r  s   &  r1   r  SSLSocket.get_verified_chain  sE    //1=IAFG!!$"3"34GGGr  c                    V P                   P                  4       pVf   . # V Uu. uF!  q"P                  \        P                  4      NK#  	  up# u upi r   r  r  s   &  r1   r  SSLSocket.get_unverified_chain  sE    113=IAFG!!$"3"34GGGr  c                `    V P                  4        \        P                  ! R \        ^R7       R# r  )rE  r   r   r  rr  s   &r1   r  SSLSocket.selected_npn_protocol  s(    5	

 r3   c                    V P                  4        V P                  e   \        P                  '       g   R # V P                  P	                  4       # r   )rE  r  rL   r   r  rr  s   &r1   r   SSLSocket.selected_alpn_protocol  s6    <<t}}}<<6688r3   c                v    V P                  4        V P                  f   R # V P                  P                  4       # r   )rE  r  r  rr  s   &r1   r  SSLSocket.cipher  s.    <<<<&&((r3   c                v    V P                  4        V P                  f   R # V P                  P                  4       # r   )rE  r  r  rr  s   &r1   r  SSLSocket.shared_ciphers  s.    <<<<..00r3   c                v    V P                  4        V P                  f   R # V P                  P                  4       # r   )rE  r  r  rr  s   &r1   r  SSLSocket.compression  s.    <<<<++--r3   c                   < V P                  4        V P                  e?   V^ 8w  d   \        RV P                  ,          4      hV P                  P	                  V4      # \
        SV `  W4      # )Nz3non-zero flags not allowed in calls to send() on %s)rE  r  r   r   r  r   send)r  r  r  r   s   &&&r1   ra  SSLSocket.send  sb    <<#z INN#$ $ <<%%d++7<,,r3   c                   < V P                  4        V P                  e   \        RV P                  ,          4      hVf   \        SV `  W4      # \        SV `  WV4      # )Nz%sendto not allowed on instances of %s)rE  r  r   r   r   sendto)r  r  flags_or_addrr   r   s   &&&&r1   rd  SSLSocket.sendto  sZ    <<#D!^^, - -\7>$667>$t<<r3   c                :    \        R V P                  ,          4      h)z&sendmsg not allowed on instances of %sr  r   r  s   &*,r1   sendmsgSSLSocket.sendmsg  s      ""J"&..#1 2 	2r3   c           	       < V P                  4        V P                  e   V^ 8w  d   \        RV P                  ,          4      h^ p\	        V4      ;_uu_ 4       qDP                  R4      ;_uu_ 4       p\        V4      pW68  d   V P                  WSR  4      pW7,          pK#   R R R 4       R R R 4       R # \        SV `%  W4      #   + '       g   i     L); i  + '       g   i     R # ; i)Nz6non-zero flags not allowed in calls to sendall() on %sB)
rE  r  r   r   
memoryviewcastr(  ra  r   sendall)	r  r  r  r   view	byte_viewamountr  r   s	   &&&     r1   ro  SSLSocket.sendall  s    <<#z LNN#$ $ ED!!T99S>>YYn		)F"34AJE % ,:!! 7?4// ,:>!!!s$   C1/C	!CCCC&	c                d   < V P                   e   V P                  WV4      # \        SV `  WV4      # r   )r  _sendfile_use_sendr   sendfile)r  fileoffsetr   r   s   &&&&r1   rv  SSLSocket.sendfile  s6     <<#**4?? 7#D%88r3   c                   < V P                  4        V P                  e5   V^ 8w  d   \        RV P                  ,          4      hV P	                  V4      # \
        SV `  W4      # )Nz3non-zero flags not allowed in calls to recv() on %s)rE  r  r   r   r  r   r(  r  buflenr  r   s   &&&r1   r(  SSLSocket.recv  s\    <<#z INN#$ $ 99V$$7<..r3   c                h  < V P                  4        Vf:   Ve4   \        V4      ;_uu_ 4       pVP                  pR R R 4       V'       g   RpMRpV P                  e5   V^ 8w  d   \	        RV P
                  ,          4      hV P                  W!4      # \        SV `!  WV4      #   + '       g   i     Lo; i)Nr  z8non-zero flags not allowed in calls to recv_into() on %s)	rE  rm  nbytesr  r   r   r  r   	recv_into)r  r  r  r  rp  r   s   &&&& r1   r  SSLSocket.recv_into	  s    >!''4![[F (!F<<#z L..!" " 99V,,7$VU;; ('s   B!!B1	c                   < V P                  4        V P                  e   \        RV P                  ,          4      h\        SV `  W4      # )Nz'recvfrom not allowed on instances of %s)rE  r  r   r   r   recvfromr{  s   &&&r1   r  SSLSocket.recvfrom  sG    <<#F!^^, - - 7#F22r3   c                   < V P                  4        V P                  e   \        RV P                  ,          4      h\        SV `  WV4      # )Nz,recvfrom_into not allowed on instances of %s)rE  r  r   r   r   recvfrom_into)r  r  r  r  r   s   &&&&r1   r  SSLSocket.recvfrom_into$  sI    <<#K!^^, - - 7(??r3   c                :    \        R V P                  ,          4      h)z&recvmsg not allowed on instances of %srh  r  s   &*,r1   recvmsgSSLSocket.recvmsg,  s    !"J"&..#1 2 	2r3   c                :    \        R V P                  ,          4      h)z+recvmsg_into not allowed on instances of %srh  r  s   &*,r1   recvmsg_intoSSLSocket.recvmsg_into0  s     ! #')-#8 9 	9r3   c                v    V P                  4        V P                  e   V P                  P                  4       # ^ # r   )rE  r  r  rr  s   &r1   r  SSLSocket.pending4  s.    <<#<<''))r3   c                T   < V P                  4        R V n        \        SV `  V4       R # r   )rE  r  r   r  )r  howr   s   &&r1   r  SSLSocket.shutdown<  s#    r3   c                    V P                   '       d$   V P                   P                  4       pR V n         V# \        R\        V 4      ,           4      h)NNo SSL wrapper around )r  r  r   r  )r  ss   & r1   r  SSLSocket.unwrapA  s>    <<<%%'ADLH5D	ABBr3   c                    V P                   '       d   V P                   P                  4       # \        R \        V 4      ,           4      h)r  )r  r  r   r  rr  s   &r1   r  &SSLSocket.verify_client_post_handshakeJ  s3    <<<<<<<>>5D	ABBr3   c                2   < R V n         \        SV `	  4        R # r   )r  r   _real_closerY  s   &r1   r  SSLSocket._real_closeQ  s    r3   c                
   V P                  4        V P                  4       p VR 8X  d   V'       d   V P                  R4       V P                  P	                  4        V P                  V4       R#   T P                  T4       i ; i)r  N)rH  r  r,  r  r  )r  blockr6  s   && r1   r  SSLSocket.do_handshakeU  s]    //#	%#~%%LL%%'OOG$DOOG$s   A/ +A/ /Bc                  < V P                   '       d   \        R 4      hV P                  '       g   V P                  e   \        R4      hV P                  P                  V RV P                  W P                  R7      V n         V'       d   \        SV `%  V4      pMRp\        SV `)  V4       V'       g*   RV n        V P                  '       d   V P                  4        V#   \        \        3 d
    RT n        h i ; i)z!can't connect in server-side modeNz/attempt to connect already-connected SSLSocket!Fr  T)r  r   r-  r  r  r.  r  r!  r   
connect_exconnectr  r  r   )r  r   r  rcr   s   &&& r1   _real_connectSSLSocket._real_connect`  s    @AA ???dll6NOO||00%-- 1 
	W'-%"&///%%'I$ 	DL	s   0C 4C C C9c                *    V P                  VR 4       R# )FNr  r  r   s   &&r1   r  SSLSocket.connectz  s     	4'r3   c                &    V P                  VR 4      # rq  r  r  s   &&r1   r  SSLSocket.connect_ex  s     !!$--r3   c                   < \         SV `  4       w  rV P                  P                  VV P                  V P
                  R R7      pW3# )T)r  r  r  )r   acceptr  r  r  r  )r  newsockr   r   s   &  r1   r  SSLSocket.accept  sM    
 (,,**7,0,H,H)-)B)B $ + & }r3   c                    V P                   e   V P                   P                  V4      # V\        9  d   \        RP	                  V4      4      hR # )Nz({0} channel binding type not implemented)r  r  CHANNEL_BINDING_TYPESr   r   r  s   &&r1   r  SSLSocket.get_channel_binding  sJ    <<#<<33G<<33 >EEgN  r3   c                V    V P                   e   V P                   P                  4       # R # r   r  rr  s   &r1   r}  SSLSocket.version  s"    <<#<<''))r3   )	r"  r-  r   r!  r  r  r  r  r  )FTTNNNr   r  r	  )r   r   )r  r   )Nr   r
  )4rH   rI   rJ   rK   r  r   r  r  r  r  r  r  r  rA  rE  rH  r  r  r  r  r  r  r  r  r  r  ra  rd  ri  ro  rv  r(  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r}  r[   r   r   r   s   @@r1   r  r    s9    

 \ \|    ^^# # (  ( ^^+ +
 /  /;*( 5 5
 H H H H   9 9 ) ) 1 1 . .	-=20 9	/<&3@29  
 C C C C % %4(
.

     r3   r  c                 "   ^ RI Hp ^ RIHp R
pRp VP	                  V R,          P                  4       4      ^,           pV! V R,          V4      pV! V^ ,          V3VR,          ,           4      #   \         d    \        RT : RT: R	24      hi ; i)r   )strptime)timegmz %d %H:%M:%S %Y GMT:N   N:r  NN:      Nz
time data z does not match format "%b")JanFebMarAprMayJunJulAugSepOctNovDec)timer  calendarr  indextitler   )	cert_timer  r  monthstime_formatmonth_numbertts   &      r1   cert_time_to_secondsr    s     F (K
7||IbM$7$7$9:Q> im[1 r!ul+bg566  F-6E F 	FFs   -A. . Bz-----BEGIN CERTIFICATE-----z-----END CERTIFICATE-----c                     \        \        P                  ! V 4      R R4      p\        .pT\	        ^ \        V4      ^@4       Uu. uF  q1W3^@,            NK  	  up,          pVP                  \        R,           4       RP                  V4      # u upi )ASCIIstrict
)	r  base64standard_b64encode
PEM_HEADERranger(  r)  
PEM_FOOTERjoin)der_cert_bytesfssis   &   r1   DER_cert_to_PEM_certr    sv     	F%%n5wIA
BeAs1vr2
32Qt92
33BIIj4 99R= 4s   Bc                    V P                  \        4      '       g   \        R \        ,          4      hV P                  4       P	                  \
        4      '       g   \        R\
        ,          4      hV P                  4       \        \        4      \        \
        4      )  p\        P                  ! VP                  RR4      4      # )z(Invalid PEM encoding; must start with %sz&Invalid PEM encoding; must end with %sr  r  )
r.   r  r   stripendswithr  r(  r  decodebytesr  )pem_cert_stringds   & r1   PEM_cert_to_DER_certr    s     %%j11C%& ' 	'  "++J77A%& ' 	'JZ0@AAahhw9::r3   c           	      L   V w  rEVe   \         pM\        p\        VVVR7      p\        WR7      ;_uu_ 4       pVP	                  WR7      ;_uu_ 4       p	V	P                  R4      p
R R R 4       R R R 4       \        X
4      #   + '       g   i     L#; i  + '       g   i     L.; i)N)r  r   )r6  )r  T)r  r  _create_stdlib_contextr   r  r  r  )r   ssl_versionca_certsr6  hostportr  r  r  sslsockdercerts   &&&&       r1   get_server_certificater    s     JD!		$[/8,46G 
4	1	1T   <<))$/G = 
2  (( =< 
2	1s#   BB 	%B BBB#	c                 .    \         P                  V R 4      # )z	<unknown>)_PROTOCOL_NAMESr   )protocol_codes   &r1   get_protocol_namer    s    }k::r3   r   )nrQ  r   collectionsr   enumr   _Enumr   _IntEnumr   _IntFlagr   rL   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   ImportErrorr   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   	_convert_rH   r)   r  r,   __members__itemsr  r  _SSLv2_IF_EXISTSrF   r]   rg   r   rR  r   r   r   r   r   r   r   r   r   r  r$  r   r   socket_errorr  r  HAS_NEVER_CHECK_COMMON_NAME_RESTRICTED_SERVER_CIPHERSr   r   r   r   r   r   r   r   r   r   r  r  r  _create_default_https_contextr  r  r  r  r  r  r  r  r  r  r  r  r  r  )r0   ra  s   00r1   <module>r     s  |  	 " H H   N N 3 3   : 2 2	    8   (K
 	  x'
 	  6
 	  h.
 	  8+
 	  ()
 0:/F/F F*,2<2H2H2N2N2PQ2P;45;2PQ:'7>  h5 5 5 h   h&" &" &"R h     : <<71 9 9 ? ?     % %d,JK  . + .>b DF	   4 &@*],HI @*&k5 &AG AGH $+#6#6 .$ ."&./3.`49 4*/49@9L9L4$(4264 #'4 044 =A4n !7  4 q; q;hN Nd '
 &
 
7< +
(
; .A$(2I),;Q,  		T Rs   J9  K9KK