+
    i  c                   s   ^ 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                 s>    V P                  R 4      ;'       d    V R8g  # )Z	PROTOCOL_PROTOCOL_SSLv23
startswithname   &/usr/lib64/python3.14/ssl.py<lambda>r/   }   s    -KK$:K2KK    )ZsourceOptionsc                 $    V P                  R 4      # )ZOP_r)   r+   r-   r.   r/   r/      s    'r0   ZAlertDescriptionc                 r2   )ZALERT_DESCRIPTION_r)   r+   r-   r.   r/   r/      s    !56r0   ZSSLErrorNumberc                 r2   )Z
SSL_ERROR_r)   r+   r-   r.   r/   r/      s    .r0   VerifyFlagsc                 r2   )ZVERIFY_r)   r+   r-   r.   r/   r/      s    +r0   
VerifyModec                 r2   )ZCERT_r)   r+   r-   r.   r/   r/      s    )r0   ZPROTOCOL_SSLv2c                   s    ] 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___sslZPROTO_MINIMUM_SUPPORTEDZMINIMUM_SUPPORTEDZPROTO_SSLv3SSLv3ZPROTO_TLSv1ZTLSv1ZPROTO_TLSv1_1ZTLSv1_1ZPROTO_TLSv1_2ZTLSv1_2ZPROTO_TLSv1_3ZTLSv1_3ZPROTO_MAXIMUM_SUPPORTEDZMAXIMUM_SUPPORTED__static_attributes__r6   r0   r.   r5   r5      sQ    44EE  G  G  G44r0   r5   c                   s.    ] tR t^t^t^t^t^tRtRt	Rt
R# )_TLSContentTypei     r6   N)r7   r8   r9   r:   CHANGE_CIPHER_SPECALERTZ	HANDSHAKEZAPPLICATION_DATAHEADERZINNER_CONTENT_TYPEr=   r6   r0   r.   r>   r>      s%     EIFr0   r>   c                   s    ] 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# )_TLSAlertTyper6   N)'r7   r8   r9   r:   ZCLOSE_NOTIFYZUNEXPECTED_MESSAGEZBAD_RECORD_MACZDECRYPTION_FAILEDZRECORD_OVERFLOWZDECOMPRESSION_FAILUREZHANDSHAKE_FAILUREZNO_CERTIFICATEZBAD_CERTIFICATEZUNSUPPORTED_CERTIFICATEZCERTIFICATE_REVOKEDZCERTIFICATE_EXPIREDZCERTIFICATE_UNKNOWNZILLEGAL_PARAMETERZ
UNKNOWN_CAZACCESS_DENIEDZDECODE_ERRORZDECRYPT_ERRORZEXPORT_RESTRICTIONZPROTOCOL_VERSIONZINSUFFICIENT_SECURITYZINTERNAL_ERRORZINAPPROPRIATE_FALLBACKZUSER_CANCELEDZNO_RENEGOTIATIONZMISSING_EXTENSIONZUNSUPPORTED_EXTENSIONZCERTIFICATE_UNOBTAINABLEZUNRECOGNIZED_NAMEZBAD_CERTIFICATE_STATUS_RESPONSEZBAD_CERTIFICATE_HASH_VALUEZUNKNOWN_PSK_IDENTITYZCERTIFICATE_REQUIREDZNO_APPLICATION_PROTOCOLr=   r6   r0   r.   rC   rC      s     LNONO JMLMNM"&)#!$!r0   rC   c                   sn    ] 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?   r6   N)r7   r8   r9   r:   ZHELLO_REQUESTZCLIENT_HELLOZSERVER_HELLOZHELLO_VERIFY_REQUESTZNEWSESSION_TICKETZEND_OF_EARLY_DATAZHELLO_RETRY_REQUESTZENCRYPTED_EXTENSIONSZCERTIFICATEZSERVER_KEY_EXCHANGEZCERTIFICATE_REQUESTZSERVER_DONEZCERTIFICATE_VERIFYZCLIENT_KEY_EXCHANGEZFINISHEDZCERTIFICATE_URLZCERTIFICATE_STATUSZSUPPLEMENTAL_DATAZ
KEY_UPDATEZ
NEXT_PROTOZMESSAGE_HASHr@   r=   r6   r0   r.   rD   rD      s~     MLLKKHOJJLr0   rD   win32)enum_certificates	enum_crls)socketSOCK_STREAMcreate_connection)
SOL_SOCKETSO_TYPE_GLOBAL_DEFAULT_TIMEOUT
tls-uniqueHOSTFLAG_NEVER_CHECK_SUBJECTc                 sJ   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  # )FZ*z1too many wildcards in certificate DNS name: {!r}.Z.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}.)countZlowerCertificateErrorformatZ	partition)ZdnhostnameZ	wildcardsZdn_leftmostZsepZdn_remainderZhostname_leftmostZhostname_remainders   &&      r.   _dnsname_matchrT     s    IxxzX^^---1}?FFrJL 	L &(\\#%6"Kl
lF2J  	  F2J  	  cF2J  	  2:1C1CC1H..C#5#;#;#===r0   c                 s    \         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.)	_socketZ	inet_atonZ	inet_ntoa
ValueErrorrR   OSErrorZ	inet_ptonZAF_INET6ZAttributeError)Zipnameaddr   & r.   _inet_patonrZ   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                 s<    \        V P                  4       4      pW!8H  # N)rZ   Zrstrip)Zcert_ipaddressZhost_ipZip   && r.   _ipaddress_matchr]   l  s     
^**,	-B=r0   DefaultVerifyPathszQcafile capath openssl_cafile_env openssl_cafile openssl_capath_env openssl_capathc                  s   \         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)	r;   get_default_verify_pathsosenvirongetr^   ZpathZisfileZisdir)Zpartscafilecapaths      r.   r`   r`   |  s     ))+E ZZ^^E!HeAh/FZZ^^E!HeAh/Fv(>(>fD(*f(=(=f4&$& &r0   c                   sb   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__   &&r.   rj   Z_ASN1Object.__new__  s    ws?Xc%>??r0   c                s:   < \         SV `  ! V .\        V4      O5!  # r[   )ri   rj   _nid2obj)rl   Znidrn   ro   r.   fromnidZ_ASN1Object.fromnid  s     ws3Xc]33r0   c                rg   )Tr+   rh   )rl   r,   rn   ro   r.   fromnameZ_ASN1Object.fromname  s      ws?Xd%>??r0   r6   )r7   r8   r9   r:   Z	__slots__rj   classmethodrq   rr   r=   __classdictcell____classcell__rn   __classdict__   @@r.   rf   rf     sB      I@ 4 4
 @ @ @r0   rf   znid shortname longname oidc                   s    ] 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.2r6   N)r7   r8   r9   r:   SERVER_AUTHCLIENT_AUTHr=   r6   r0   r.   ry   ry     s     &K%Kr0   ry   c                   s  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                s    Vf$   \         P                  ! R\        ^R7       \        p\        P
                  ! W4      pV# )Nz9ssl.SSLContext() without protocol argument is deprecated.)Zcategory
stacklevel)warningswarnDeprecationWarningPROTOCOL_TLSr	   rj   )rl   protocolargskwargsselfs   &&*, r.   rj   ZSSLContext.__new__  s9    MMK+
 $H""31r0   c                s    Vf   R # \        V\        4      '       d!   VP                  R4      P                  R4      # VP                  R4      # )NZidnaascii)
isinstancestrencodeZdecode)r   rS      &&r.   _encode_hostnameZSSLContext._encode_hostname  sA    #&&??6*11'::??7++r0   c           
     sF    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   &&&&&&&r.   wrap_socketZSSLContext.wrap_socket  s7     ##++#$;!5+ , 
 	
r0   c           	     s^    V P                   P                  WVV P                  V4      WPR 7      # ))r   r   r   r   )sslobject_classr   r   )r   incomingoutgoingr   r   r   s   &&&&&&r.   wrap_bioZSSLContext.wrap_bio  s8     ##++K 11/B , 
 	
r0   c                sL   \         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extendZ_set_npn_protocols)r   Znpn_protocolsprotosr   b   &&   r.   set_npn_protocolsZSSLContext.set_npn_protocols  s    5	

 %Hh(A1v{c!fslIJJMM#a&!MM! & 	'r0   c                sx   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                 s8   < SP                  V4      pS! WV4      # r[   )r   )sslobjZ
servernameZsslctxr   server_name_callbacks   &&&r.   shim_cbZ3SSLContext.set_servername_callback.<locals>.shim_cb  s     !22:>
+FGGr0   )sni_callbackZcallable	TypeError)r   r   r   s   ff r.   set_servername_callbackZ"SSLContext.set_servername_callback  s9    ' $D011 788H !(Dr0   c                s   \        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   Z_set_alpn_protocols)r   Zalpn_protocolsr   r   r   r   r.   set_alpn_protocolsZSSLContext.set_alpn_protocols  sl    &Hh(A1v{c!fslJKKMM#a&!MM! ' 	  (r0   c                sR    \        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)Zx509_asnT)cadataz.Bad certificate in Windows certificate store: Nz-unable to enumerate Windows certificate store)rF   rm   load_verify_locationsr   r~   r   ZPermissionError)r   	storenamepurposecertZencodingZtrustZexcs   &&&    r.   _load_windows_store_certsZ$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                s    \        V\        4      '       g   \        V4      h\        P                  R 8X  d%   V P
                   F  pV P                  W!4       K  	  V P                  4        R# )rE   N)r   rf   r   sysplatform_windows_cert_storesr   Zset_default_verify_paths)r   r   r   r\   r.   load_default_certsZSSLContext.load_default_certs  sP    ';//G$$<<7"!66	..yB 7%%'r0   minimum_versionc                *   < \        \        SV `  4      # r[   )r5   ri   r   r   rn      &r.   r   SSLContext.minimum_version      eg566r0   c                s   < V\         P                  8X  d)   V ;P                  \        P                  ( ,          un        \
        \        \        `  P                  W4       R # r[   )	r5   r<   optionsr1   ZOP_NO_SSLv3ri   r|   r   __set__r   valuern   ro   r.   r   r     s=    
(((!4!4 44*j9AA$Nr0   c                r   r[   )r5   ri   maximum_versionr   r   r.   r   SSLContext.maximum_version#  r   r0   c                J   < \         \        \        `
  P                  W4       R # r[   )ri   r|   r   r   r   ro   r.   r   r   '  s    *j9AA$Nr0   c                r   r[   )r1   ri   r   r   r   r.   r   SSLContext.options+  s    uw''r0   c                r   r[   )ri   r|   r   r   r   ro   r.   r   r   /  s    j*-55dBr0   rO   c                sj    V P                   \        P                  ,          pV\        P                  8g  # r[   Z_host_flagsr;   rO   )r   ZncsrY   r.   hostname_checks_common_name&SSLContext.hostname_checks_common_name4  s)    ""T%F%FFC$;;;;r0   c                s    V'       d+   V ;P                   \        P                  ( ,          un         R # V ;P                   \        P                  ,          un         R # r[   r   )r   r   r   r.   r   r   9  s6      T%F%F$FF   D$E$EE r0   c                    R # Tr6   r   r-   r.   r   r   @  s    r0   c                s<   < \         SV `  pVe   VP                  # R # r[   )ri   _msg_callbackuser_function)r   innerrn      & r.   r   SSLContext._msg_callbackD  s%    B %&&&r0   c                s   <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 # )NZ__call__z is not callable.c                 s>  <  \        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[   )r5   rV   r>   rB   rA   rC   rD   )ZconnZ	directionversionZcontent_typeZmsg_typedataZmsg_enumcallbacks   &&&&&& r.   r   Z'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)ri   r|   r   r   hasattrr   r   )r   r   r   rn   s   &f r.   r   r   k  sg    *j7??dKx,,xj(9:;;	:2 'j*3;;DHr0   c                r   r[   )r'   ri   r   r   r   r.   r   ZSSLContext.protocol  s    %'*++r0   c                r   r[   )r3   ri   verify_flagsr   r   r.   r   SSLContext.verify_flags  s    57/00r0   c                r   r[   )ri   r|   r   r   r   ro   r.   r   r     s    j*2::4Gr0   c                sV   < \         SV `  p \        V4      #   \         d    Tu # i ; ir[   )ri   verify_moder4   rV   r   r   r.   r   SSLContext.verify_mode  s1    #	e$$ 	L	s   
 ((c                r   r[   )ri   r|   r   r   r   ro   r.   r   r     s    j*199$Fr0   )r   )ZCAZROOTr[   )FTTNN)FNN)"r7   r8   r9   r:   r   r   r   rj   r   r   r   r   r   r   r   ry   rz   r   r   r	   propertyr   setterr   r   r;   r   r   r   r   r   r=   rt   ru   rv   rx   r.   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r0   r|   rd   re   r   c                s   \        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   rf   r   ry   rz   r|   PROTOCOL_TLS_CLIENTCERT_REQUIREDr   check_hostnamer{   PROTOCOL_TLS_SERVERrV   r   r;   ZVERIFY_X509_PARTIAL_CHAINZVERIFY_X509_STRICTr   	CERT_NONEr   r   ra   rb   rc   r   flagsignore_environmentr   )r   rd   re   r   r   
keylogfiles   &$$$  r.   create_default_contextr     s    g{++  
 '%%%01+!%	G''	'01!! T;;!445 6 6%%ff=					) 	""7+w)**ZZ^^O4
cii:::&0#Nr0   	cert_reqsr   Fr   certfilekeyfilec                s
   \        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   rf   r   ry   rz   r   r{   r   rV   r|   r   r   Zload_cert_chainr   r   r   r   ra   rb   rc   r   r   r   r   )r   r   r   r   r   r   rd   re   r   r   r   s   &$$$$$$$$  r.   _create_unverified_contextr     s    g{++  
 '%%%*H	G''	'*H!!"G+'!%x56672 6%%ff=					) 	""7+w)**ZZ^^O4
cii:::&0#Nr0   c                   s>  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   rn   r7   r   r   r      &*,r.   __init__ZSSLObject.__init__'  s+    ~~&&' (L M
 	
r0   Nc           	     s^    V P                  V 4      pVP                  WVVWuR 7      pWn        V# ))r   r   ownerr   )rj   Z	_wrap_bio_sslobj)	rl   r   r   r   r   r   r   r   r   s	   &&&&&&&  r.   r   ZSSLObject._create-  s>     {{3""K+ # 

 r0   c                .    V P                   P                  # r[   r   r   r   r-   r.   r   SSLObject.context9       ||###r0   c                &    WP                   n        R # r[   r   r   Zctxr   r.   r   r   >  s    "r0   c                r   r[   r   r   r   r-   r.   r   SSLObject.sessionB  r   r0   c                r   r[   r   r   r   r   r.   r   r   G  s    &r0   c                r   r[   r   session_reusedr   r-   r.   r   ZSSLObject.session_reusedK  s     ||***r0   c                r   r[   )r   r   r   r-   r.   r   ZSSLObject.server_sideP  s     ||'''r0   c                r   r[   )r   r   r   r-   r.   r   ZSSLObject.server_hostnameU  s     ||+++r0   c                s~    Ve   V P                   P                  W4      pV# V P                   P                  V4      pV# r[   )r   read)r   r   bufferv   &&& r.   r   ZSSLObject.read[  s@     !!#.A  !!#&Ar0   c                8    V P                   P                  V4      # r[   )r   writer   r   r   r.   r   ZSSLObject.writeg  s     ||!!$''r0   c                r   r[   )r   getpeercertr   Zbinary_formr   r.   r  ZSSLObject.getpeercerto  s     ||''44r0   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_bytesr;   ENCODING_DERr   Zchainr      &  r.   r  ZSSLObject.get_verified_chainx  sG     //1=IAFG!!$"3"34GGG   'Ac                r  r[   r   get_unverified_chainr  r;   r  r	  r
  r.   r  ZSSLObject.get_unverified_chain  sG     113=IAFG!!$"3"34GGGr  c                s@    \         P                  ! R \        ^R7       R# r   r   N)r~   r   r   r   r-   r.   selected_npn_protocolZSSLObject.selected_npn_protocol  s     	5	
r0   c                6    V P                   P                  4       # r[   )r   selected_alpn_protocolr   r-   r.   r  Z SSLObject.selected_alpn_protocol  s     ||2244r0   c                r  r[   )r   cipherr   r-   r.   r  ZSSLObject.cipher  s     ||""$$r0   c                r  r[   )r   shared_ciphersr   r-   r.   r  ZSSLObject.shared_ciphers  s     ||**,,r0   c                r  r[   )r   compressionr   r-   r.   r  ZSSLObject.compression  s     ||''))r0   c                r  r[   )r   pendingr   r-   r.   r  ZSSLObject.pending  s    ||##%%r0   c                s:    V P                   P                  4        R # r[   )r   do_handshaker   r-   r.   r  ZSSLObject.do_handshake  s    !!#r0   c                r  r[   )r   shutdownr   r-   r.   unwrapZSSLObject.unwrap  s    ||$$&&r0   c                r   r[   )r   get_channel_bindingr   Zcb_typer   r.   r  ZSSLObject.get_channel_binding  s     ||//88r0   c                r  r[   r   r   r   r-   r.   r   ZSSLObject.version  s     ||##%%r0   c                r  r[   )r   verify_client_post_handshaker   r-   r.   r  Z&SSLObject.verify_client_post_handshake  s    ||88::r0   )r   )FNNN   NFrN   ) r7   r8   r9   r:   r   rs   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=   rt   )rw   s   @r.   r   r     s	    
 	 	 $ $ ^^# # $ $ ^^' ' + + ( ( , ,

(5H	H
5%
-*
&$'9&
; ;r0   r   c                 sX    \        \        V P                  4      P                  V n        V # r[   )getattrr   r7   Z__doc__)Zfuncr-   r.   _sslcopydocr"    s    9dmm4<<DLKr0   c                   s  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                r   )zX does not have a public constructor. Instances are returned by SSLContext.wrap_socket().r   r   r   r.   r   ZSSLSocket.__init__  s)    ~~&&' (( )
 	
r0   c                s&  < 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filenoFTr0   z5Closed before TLS handshake with data in recv buffer.r   r           zHdo_handshake_on_connect should not be specified for non-blocking socketsr6   )+Z
getsockoptrK   rL   rI   NotImplementedErrorrV   r   
gettimeoutZdictr$  r%  r&  r'  rj   ri   r#  r   Zdetach_context_session_closedr   r   r   r   r   r   getpeernamerW   errnoZENOTCONNZgetblockingZsetblockingrecvZEINVALr   reasonZlibrary
settimeout
_connected_wrap_socketr  Zclose)rl   r   r   r   r   r   r   r   Zsock_timeoutr   r   Z	connectedZeZblockingZnotconn_pre_handshake_datar2  Z notconn_pre_handshake_data_errortimeoutrn   s   &&&&&&&&          r.   r   Z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                s    V P                   # r[   )r,  r   r-   r.   r   SSLSocket.context=  s     }}r0   c                s2    Wn         WP                  n        R # r[   )r,  r   r   r   r   r.   r   r7  B  s    "r0   c                N    V P                   e   V P                   P                  # R # r[   r   r   r-   r.   r   SSLSocket.sessionG  s#     <<#<<''' $r0   c                sR    Wn         V P                  e   WP                  n        R # R # r[   )r-  r   r   r   r   r.   r   r9  M  s     <<##*LL  $r0   c                r8  r[   r   r   r-   r.   r   ZSSLSocket.session_reusedS  s#     <<#<<... $r0   c                sN    \        R V P                  P                  ,          4      h)zCan't dup() %s instances)r*  rn   r7   r   r-   r.   dupZSSLSocket.dupY  s$    !"<"&.."9"9#: ; 	;r0   c                r   r[   r6   )r   Zmsgr   r.   _checkClosedZSSLSocket._checkClosed]  s    r0   c                sN    V P                   '       g   V P                  4        R # R # r[   )r4  r/  r   r-   r.   _check_connectedZSSLSocket._check_connecteda  s    
  r0   c                sn   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.r0   )r;  r   rV   r   r   r   ZSSL_ERROR_EOFr   )r   r   r   Zxr   r.   r   ZSSLSocket.readi  s     	<<FGG	!||((55||((-- 	vvayM)d.G.G.G%	s)   A% 
A% %B40-B/B/.B//B4c                s    V P                  4        V P                  f   \        R4      hV P                  P                  V4      # )Nz(Write on closed or unwrapped SSL socket.)r;  r   rV   r   r  r   r.   r   ZSSLSocket.write~  s;     	<<GHH||!!$''r0   c                sx    V P                  4        V P                  4        V P                  P                  V4      # r[   )r;  r<  r   r  r  r   r.   r  ZSSLSocket.getpeercert  s/    ||''44r0   c                r  r[   r  r	  r
  r.   r  ZSSLSocket.get_verified_chain  sE    //1=IAFG!!$"3"34GGGr  c                r  r[   r  r	  r
  r.   r  ZSSLSocket.get_unverified_chain  sE    113=IAFG!!$"3"34GGGr  c                s`    V P                  4        \        P                  ! R \        ^R7       R# r  )r;  r~   r   r   r   r-   r.   r  ZSSLSocket.selected_npn_protocol  s(    5	

 r0   c                s    V P                  4        V P                  e   \        P                  '       g   R # V P                  P	                  4       # r[   )r;  r   r;   r   r  r   r-   r.   r  Z SSLSocket.selected_alpn_protocol  s6    <<t}}}<<6688r0   c                v    V P                  4        V P                  f   R # V P                  P                  4       # r[   )r;  r   r  r   r-   r.   r  ZSSLSocket.cipher  s.    <<<<&&((r0   c                r=  r[   )r;  r   r  r   r-   r.   r  ZSSLSocket.shared_ciphers  s.    <<<<..00r0   c                r=  r[   )r;  r   r  r   r-   r.   r  ZSSLSocket.compression  s.    <<<<++--r0   c                s   < 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)r;  r   rV   rn   r   ri   send)r   r   r   rn      &&&r.   r>  ZSSLSocket.send  sb    <<#z INN#$ $ <<%%d++7<,,r0   c                s   < 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)r;  r   rV   rn   ri   sendto)r   r   Zflags_or_addrrX   rn      &&&&r.   r@  ZSSLSocket.sendto  sZ    <<#D!^^, - -\7>$667>$t<<r0   c                :    \        R V P                  ,          4      h)z&sendmsg not allowed on instances of %sr*  rn   r   r   r.   sendmsgZSSLSocket.sendmsg  s      ""J"&..#1 2 	2r0   c           	     s  < 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 %sZB)
r;  r   rV   rn   
memoryviewZcastr   r>  ri   sendall)	r   r   r   rP   viewZ	byte_viewZamountr   rn   s	   &&&     r.   rF  Z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                sd   < V P                   e   V P                  WV4      # \        SV `  WV4      # r[   )r   Z_sendfile_use_sendri   sendfile)r   ZfileZoffsetrP   rn   rA  r.   rH  ZSSLSocket.sendfile  s6     <<#**4?? 7#D%88r0   c                s   < 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)r;  r   rV   rn   r   ri   r1  r   Zbuflenr   rn   r?  r.   r1  ZSSLSocket.recv  s\    <<#z INN#$ $ 99V$$7<..r0   c                sh  < 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)	r;  rE  nbytesr   rV   rn   r   ri   	recv_into)r   r   rJ  r   rG  rn   s   &&&& r.   rK  ZSSLSocket.recv_into	  s    >!''4![[F (!F<<#z L..!" " 99V,,7$VU;; ('s   B!!B1	c                s   < V P                  4        V P                  e   \        RV P                  ,          4      h\        SV `  W4      # )Nz'recvfrom not allowed on instances of %s)r;  r   rV   rn   ri   recvfromrI  r?  r.   rL  ZSSLSocket.recvfrom  sG    <<#F!^^, - - 7#F22r0   c                s   < 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)r;  r   rV   rn   ri   recvfrom_into)r   r   rJ  r   rn   rA  r.   rM  ZSSLSocket.recvfrom_into$  sI    <<#K!^^, - - 7(??r0   c                rB  )z&recvmsg not allowed on instances of %srC  r   r   r.   recvmsgZSSLSocket.recvmsg,  s    !"J"&..#1 2 	2r0   c                rB  )z+recvmsg_into not allowed on instances of %srC  r   r   r.   recvmsg_intoZSSLSocket.recvmsg_into0  s     ! #')-#8 9 	9r0   c                sv    V P                  4        V P                  e   V P                  P                  4       # ^ # r[   )r;  r   r  r   r-   r.   r  ZSSLSocket.pending4  s.    <<#<<''))r0   c                sT   < V P                  4        R V n        \        SV `  V4       R # r[   )r;  r   ri   r  )r   Zhowrn   ro   r.   r  ZSSLSocket.shutdown<  s#    r0   c                s    V P                   '       d$   V P                   P                  4       pR V n         V# \        R\        V 4      ,           4      h)NNo SSL wrapper around )r   r  rV   r   )r   ZsrY   r.   r  ZSSLSocket.unwrapA  s>    <<<%%'ADLH5D	ABBr0   c                s    V P                   '       d   V P                   P                  4       # \        R \        V 4      ,           4      h)rP  )r   r  rV   r   r   r-   r.   r  Z&SSLSocket.verify_client_post_handshakeJ  s3    <<<<<<<>>5D	ABBr0   c                s2   < R V n         \        SV `	  4        R # r[   )r   ri   _real_closer   r   r.   rQ  ZSSLSocket._real_closeQ  s    r0   c                s
   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)r<  r+  r3  r   r  )r   Zblockr6  r\   r.   r  ZSSLSocket.do_handshakeU  s]    //#	%#~%%LL%%'OOG$DOOG$s   A/ +A/ /Bc                s  < 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   rV   r4  r   r   r5  r   r-  ri   
connect_exconnectr   r  rW   )r   rX   rR  Zrcrn   s   &&& r.   _real_connectZSSLSocket._real_connect`  s    @AA ???dll6NOO||00%-- 1 
	W'-%"&///%%'I$ 	DL	s   0C 4C C C9c                s*    V P                  VR 4       R# )FNrT  r   rX   r   r.   rS  ZSSLSocket.connectz  s     	4'r0   c                s&    V P                  VR 4      # r   rU  rV  r   r.   rR  ZSSLSocket.connect_ex  s     !!$--r0   c                s   < \         SV `  4       w  rV P                  P                  VV P                  V P
                  R R7      pW3# )T)r   r   r   )ri   acceptr   r   r   r   )r   ZnewsockrX   rn   s   &  r.   rW  ZSSLSocket.accept  sM    
 (,,**7,0,H,H)-)B)B $ + & }r0   c                s    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_TYPESrV   rR   r  r   r.   r  ZSSLSocket.get_channel_binding  sJ    <<#<<33G<<33 >EEgN  r0   c                sV    V P                   e   V P                   P                  4       # R # r[   r  r   r-   r.   r   ZSSLSocket.version  s"    <<#<<''))r0   )	r.  r4  r,  r-  r   r   r   r   r   )FTTNNNr[   r  r  )r    r_   )r  r    )Nr    r   )4r7   r8   r9   r:   r   rs   r   r   r"  r   r   r   r   r:  r;  r<  r   r   r  r  r  r  r  r  r  r  r>  r@  rD  rF  rH  r1  rK  rL  rM  rN  rO  r  r  r  r  rQ  r  rT  rS  rR  rW  r  r   r=   rt   ru   rv   rx   r.   r#  r#    s9    

 \ \|    ^^# # (  ( ^^+ +
 /  /;*( 5 5
 H H H H   9 9 ) ) 1 1 . .	-=20 9	/<&3@29  
 C C C C % %4(
.

     r0   r#  c                 s"   ^ 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:i   i   Nz
time data z does not match format "%bZ")ZJanZFebZMarZAprZMayZJunZJulZAugZSepZOctZNovZDec)ZtimerY  ZcalendarrZ  ZindexZtitlerV   )Z	cert_timerY  rZ  ZmonthsZtime_formatZmonth_numberZtts   &      r.   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                 s    \        \        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strictZ
)	r   base64Zstandard_b64encode
PEM_HEADERZranger   r   
PEM_FOOTERZjoin)Zder_cert_bytesZfZssZis   &   r.   DER_cert_to_PEM_certrb    sv     	F%%n5wIA
BeAs1vr2
32Qt92
33BIIj4 99R= 4s   Bc                 s   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`  rV   ZstripZendswithra  r   r_  Zdecodebytesr   )Zpem_cert_stringZdrY   r.   PEM_cert_to_DER_certrc    s     %%j11C%& ' 	'  "++J77A%& ' 	'JZ0@AAahhw9::r0   c           	      sL   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   rd   )r6  )r   T)r   r   _create_stdlib_contextrJ   r   r  rb  )rX   Zssl_versionZca_certsr6  ZhostZportr   r   r   ZsslsockZdercerts   &&&&       r.   get_server_certificatere    s     JD!		$[/8,46G 
4	1	1T   <<))$/G = 
2  (( =< 
2	1s#   BB 	%B BBB#	c                 s.    \         P                  V R 4      # )z	<unknown>)_PROTOCOL_NAMESrc   )Zprotocol_coder-   r.   get_protocol_namerg    s    }k::r0   r[   )nr   ra   Zcollectionsr   Zenumr   Z_Enumr   Z_IntEnumr   Z_IntFlagr   r;   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   rk   r   rp   r   r   r   r   ZImportErrorr   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   Z	_convert_r7   r'   r   r(   Z__members__Zitemsrf  r!  Z_SSLv2_IF_EXISTSr5   r>   rC   rD   r   rF   rG   rH   rI   rJ   rK   rL   rM   rU   r_  r0  r~   rW   Zsocket_errorrX  r   ZHAS_NEVER_CHECK_COMMON_NAMEZ_RESTRICTED_SERVER_CIPHERSrQ   rT   rZ   r]   r^   r`   rf   ry   r|   rz   r   r   r   Z_create_default_https_contextrd  r   r"  r#  r   r   r\  r`  ra  rb  rc  r   re  rg  )r,   r   s   00r.   <module>rh     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