
    1hC/                    >   S SK Jr  S SKrS SKrS SKrS SKJr  S SKJr  S SK	J
r
JrJrJrJr  SSKJrJrJrJr  SSKJrJr  SS	KJrJrJrJr  \" S
5      r\\\\4   S4   r\\S4   r " S S\5      r \" SS9 " S S\5      5       r!\" SS9 " S S\\!   5      5       r"g)    )annotationsN)	dataclass)wraps)AnyCallableMappingTupleTypeVar   )BrokenResourceErrorEndOfStreamaclose_forcefullyget_cancelled_exc_class)TypedAttributeSettyped_attribute)AnyByteStream
ByteStreamListener	TaskGroupT_Retval.c                  
   \ rS rSr% Sr\" 5       rS\S'   \" 5       rS\S'   \" 5       r	S\S'   \" 5       r
S	\S
'   \" 5       rS\S'   \" 5       rS\S'   \" 5       rS\S'   \" 5       rS\S'   \" 5       rS\S'   \" 5       rS\S'   Srg)TLSAttribute   z5Contains Transport Layer Security related attributes.
str | Nonealpn_protocolbyteschannel_binding_tls_uniqueztuple[str, str, int]cipherz*dict[str, str | _PCTRTTT | _PCTRTT] | Nonepeer_certificatezbytes | Nonepeer_certificate_binaryboolserver_sidez!list[tuple[str, str, int]] | Noneshared_ciphersssl.SSLObject
ssl_objectstandard_compatiblestrtls_version N)__name__
__module____qualname____firstlineno____doc__r   r   __annotations__r   r   r   r    r"   r#   r%   r&   r(   __static_attributes__r)       I/var/www/auris/envauris/lib/python3.13/site-packages/anyio/streams/tls.pyr   r      s    ? !0 1M:1(7(99#2#4F 4 DSCT@T,;,=\=')K) 9H8IN5I / 1J1 !0 11&(K(r1   r   F)eqc                      \ rS rSr% SrS\S'   S\S'   S\S'   S	\S
'   S	\S'   \SSSSS.           SS jj5       r      SS jrSS jr	SS jr
SSS jjrSS jrSS jr\SS j5       rSrg) 	TLSStream4   a  
A stream wrapper that encrypts all sent data and decrypts received data.

This class has no public initializer; use :meth:`wrap` instead.
All extra attributes from :class:`~TLSAttribute` are supported.

:var AnyByteStream transport_stream: the wrapped stream

r   transport_streamr!   r&   r$   _ssl_objectzssl.MemoryBIO	_read_bio
_write_bioNT)r"   hostnamessl_contextr&   c                 #    Uc  U(       + nU(       d  U(       a  [         R                  R                  O[         R                  R                  n[         R                  " U5      n[        [         S5      (       a$  U=R                  [         R                  ) -  sl        [         R                  " 5       n[         R                  " 5       nUR                  XxX#S9n	U " UUU	UUS9n
U
R                  U	R                  5      I Sh  vN   U
$  N7f)aX  
Wrap an existing stream with Transport Layer Security.

This performs a TLS handshake with the peer.

:param transport_stream: a bytes-transporting stream to wrap
:param server_side: ``True`` if this is the server side of the connection,
    ``False`` if this is the client side (if omitted, will be set to ``False``
    if ``hostname`` has been provided, ``False`` otherwise). Used only to create
    a default context when an explicit context has not been provided.
:param hostname: host name of the peer (if host name checking is desired)
:param ssl_context: the SSLContext object to use (if not provided, a secure
    default will be created)
:param standard_compatible: if ``False``, skip the closing handshake when closing the
    connection, and don't raise an exception if the peer does the same
:raises ~ssl.SSLError: if the TLS handshake fails

NOP_IGNORE_UNEXPECTED_EOF)r"   server_hostname)r7   r&   r8   r9   r:   )sslPurposeCLIENT_AUTHSERVER_AUTHcreate_default_contexthasattroptionsr>   	MemoryBIOwrap_bio_call_sslobject_methoddo_handshake)clsr7   r"   r;   r<   r&   purposebio_inbio_outr%   wrappers              r2   wrapTLSStream.wrapF   s     8 &,K+6''CKK<S<S  44W=K s677##(D(D'DD#--/ )) * 

 - 3"
 ,,Z-D-DEEE 	Fs   C>D	 DD	c                  #      U" U6 nU R                   R                  (       a;  U R                  R                  U R                   R	                  5       5      I S h  vN   U$  N! [
        R                   Ga     U R                   R                  (       a<  U R                  R                  U R                   R	                  5       5      I S h  vN    U R                  R                  5       I S h  vN  nU R                  R                  U5         GO! [         a    U R                  R                  5           GO[         a@  nU R                  R                  5         U R                   R                  5         [        UeS nAff = f[
        R                   a?    U R                  R                  U R                   R	                  5       5      I S h  vN     O[
        R                   a@  nU R                  R                  5         U R                   R                  5         [        UeS nAf[
        R                    a  nU R                  R                  5         U R                   R                  5         [#        U[
        R$                  5      (       d  SUR&                  ;   a  U R(                  (       a  [        Ue[        S ee S nAff = fGM  7f)NUNEXPECTED_EOF_WHILE_READING)r:   pendingr7   sendreadr@   SSLWantReadErrorreceiver9   writer   	write_eofOSErrorr   SSLWantWriteErrorSSLSyscallErrorSSLError
isinstanceSSLEOFErrorstrerrorr&   )selffuncargsresultdataexcs         r2   rI    TLSStream._call_sslobject_method~   s     )tJ ??**//44T__5I5I5KLLL MK '' //.."33889M9M9OPPP!%!6!6!>!>!@@@D NN((. # /NN,,.. 7NN,,.OO--/-367 (( I++001E1E1GHHH&& 3((*))+)s2<< ((*))+sCOO445E//1s:)t31 s   K
A$ AK
A"K
$K:ADC"D.C1/D4KK
$F6K7K
:	F;E>>FAKGKK
K*;H%%K<BJ??KK
c                  #    U R                  U R                  R                  5      I Sh  vN   U R                  R	                  5         U R
                  R	                  5         U R                  U R                  R                  5       4$  N^7f)zl
Does the TLS closing handshake.

:return: a tuple of (wrapped byte stream, bytes left in the read buffer)

N)rI   r8   unwrapr9   rZ   r:   r7   rV   rb   s    r2   rj   TLSStream.unwrap   sk      ))$*:*:*A*ABBB  "!!#$$dnn&9&9&;;; 	Cs   )BB
ABc                  #    U R                   (       a   U R                  5       I S h  vN   U R                  R                  5       I S h  vN   g  N'! [         a     [        U R                  5      I S h  vN    e f = f N47fN)r&   rj   BaseExceptionr   r7   acloserk   s    r2   rp   TLSStream.aclose   sl     ##kkm##
 ##**,,, $  '(=(=>>> 	-sC   BA AA B
A?BA "A<4A75A<<Bc                   #    U R                  U R                  R                  U5      I S h  vN nU(       d  [        eU$  N7frn   )rI   r8   rV   r   )rb   	max_bytesrf   s      r2   rX   TLSStream.receive   s:     001A1A1F1F	RR	 Ss   *AA Ac                l   #    U R                  U R                  R                  U5      I S h  vN   g  N7frn   )rI   r8   rY   )rb   items     r2   rU   TLSStream.send   s'     ))$*:*:*@*@$GGGs   *424c                <  #    U R                  [        R                  5      n[        R                  " SU5      nU(       aQ  [        UR                  S5      5      [        UR                  S5      =(       d    S5      pCX44S:  a  [        SU 35      e[        S5      e7f)NzTLSv(\d+)(?:\.(\d+))?   r   r   )ry      z;send_eof() requires at least TLSv1.3; current session uses z7send_eof() has not yet been implemented for TLS streams)extrar   r(   rematchintgroupNotImplementedError)rb   r(   r}   majorminors        r2   send_eofTLSStream.send_eof   s     jj!9!9:1;?u{{1~.EKKN4Ga0H5~&)$$/=2 
 "E
 	
s   BBc                H  ^  0 T R                   R                  E[        R                  T R                  R
                  [        R                  T R                  R                  [        R                  T R                  R                  [        R                  U 4S j[        R                  U 4S j[        R                  U 4S j[        R                  U 4S j[        R                  U 4S j[        R                  U 4S j[        R                  T R                  R                   0
E$ )Nc                 :   > T R                   R                  S5      $ )NFr8   getpeercertrk   s   r2   <lambda>,TLSStream.extra_attributes.<locals>.<lambda>   s    43C3C3O3OPU3Vr1   c                 :   > T R                   R                  S5      $ )NTr   rk   s   r2   r   r      s    $:J:J:V:V;r1   c                 0   > T R                   R                  $ rn   )r8   r"   rk   s   r2   r   r      s    d.>.>.J.Jr1   c                 r   > T R                   R                  (       a  T R                   R                  5       $ S $ rn   )r8   r"   r#   rk   s   r2   r   r      s3    ++ 261A1A1P1P1R 22r1   c                    > T R                   $ rn   r&   rk   s   r2   r   r          d6N6Nr1   c                    > T R                   $ rn   )r8   rk   s   r2   r   r      s    T-=-=r1   )r7   extra_attributesr   r   r8   selected_alpn_protocolr   get_channel_bindingr   r   r    r"   r#   r&   r%   r(   versionrk   s   `r2   r   TLSStream.extra_attributes   s    
##44
&&(8(8(O(O33T5E5E5Y5Y!1!1!8!8))+V00 3 $$&J'' * ,,.N##%=$$d&6&6&>&>
 	
r1   r)   )r7   r   r"   zbool | Noner;   r   r<   zssl.SSLContext | Noner&   r!   returnr5   )rc   zCallable[..., T_Retval]rd   objectr   r   )r   ztuple[AnyByteStream, bytes]r   None)i   )rs   r~   r   r   )rv   r   r   r   r   zMapping[Any, Callable[[], Any]])r*   r+   r,   r-   r.   r/   classmethodrP   rI   rj   rp   rX   rU   r   propertyr   r0   r)   r1   r2   r5   r5   4   s     $#
 $(#-1$(5'5 !	5
 5 +5 "5 
5 5n-+-4:-	-^
<-H
 
 
r1   r5   c                      \ rS rSr% SrS\S'   S\S'   SrS\S	'   S
rS\S'   \SS j5       r	 S     SS jjr
SS jr\SS j5       rSrg)TLSListener   aj  
A convenience listener that wraps another listener and auto-negotiates a TLS session on every
accepted connection.

If the TLS handshake times out or raises an exception, :meth:`handle_handshake_error` is
called to do whatever post-mortem processing is deemed necessary.

Supports only the :attr:`~TLSAttribute.standard_compatible` extra attribute.

:param Listener listener: the listener to wrap
:param ssl_context: the SSL context object
:param standard_compatible: a flag passed through to :meth:`TLSStream.wrap`
:param handshake_timeout: time limit for the TLS handshake
    (passed to :func:`~anyio.fail_after`)
zListener[Any]listenerzssl.SSLContextr<   Tr!   r&      floathandshake_timeoutc                  #    [        U5      I Sh  vN   [        U [        5       5      (       d)  [        R                  " [
        5      R                  S5        [        U [        5      (       a  [        U [        5       5      (       a  e g Nv7f)au  
Handle an exception raised during the TLS handshake.

This method does 3 things:

#. Forcefully closes the original stream
#. Logs the exception (unless it was a cancellation exception) using the
   ``anyio.streams.tls`` logger
#. Reraises the exception if it was a base exception or a cancellation exception

:param exc: the exception
:param stream: the original stream

NzError during TLS handshake)r   r_   r   logging	getLoggerr*   	exception	Exception)rg   streams     r2   handle_handshake_error"TLSListener.handle_handshake_error  so        ''' #6899h'112NO #y))Z=T=V-W-W .X 	(s   B
BA7B
Nc                   ^ ^#    [        T5      SUU 4S jj5       nT R                  R                  X25      I S h  vN   g  N7f)Nc                `  >#    SSK Jn   U" TR                  5         [        R	                  U TR
                  TR                  S9I S h  vN nS S S 5        T" W5      I S h  vN   g  N! , (       d  f       N!= f N! [         a$  nTR                  X05      I S h  vN     S nAg S nAff = f7f)Nr   )
fail_after)r<   r&   )	 r   r   r5   rP   r<   r&   ro   r   )r   r   wrapped_streamrg   handlerrb   s       r2   handler_wrapper*TLSListener.serve.<locals>.handler_wrapper'  s     %
. 6 67+4>>$($4$4,0,D,D ,: , &N 8 n---& 87 . ! ?11#>>>?su   B.A= -A*
A(A*A= B."A;#B.(A**
A84A= ;B.=
B+B&BB&!B.&B++B.)r   r   r   r   )r   r   serve)rb   r   
task_groupr   s   ``  r2   r   TLSListener.serve"  s8     
 
w	. 
	. mm!!/>>>s   6AA Ac                T   #    U R                   R                  5       I S h  vN   g  N7frn   )r   rp   rk   s    r2   rp   TLSListener.aclose9  s     mm""$$$s   (&(c                0   ^  [         R                  U 4S j0$ )Nc                    > T R                   $ rn   r   rk   s   r2   r   .TLSListener.extra_attributes.<locals>.<lambda>?  r   r1   )r   r&   rk   s   `r2   r   TLSListener.extra_attributes<  s     ,,.N
 	
r1   r)   )rg   ro   r   r   r   r   rn   )r   zCallable[[TLSStream], Any]r   zTaskGroup | Noner   r   r   r   )r*   r+   r,   r-   r.   r/   r&   r   staticmethodr   r   rp   r   r   r0   r)   r1   r2   r   r      s|       $$!u! 8 (,?+? %? 
	?.% 
 
r1   r   )#
__future__r   r   r|   r@   dataclassesr   	functoolsr   typingr   r   r   r	   r
   r   r   r   r   r   _core._typedattrr   r   abcr   r   r   r   r   r'   _PCTRTT_PCTRTTTr   r5   r   r)   r1   r2   <module>r      s    "  	 
 !  9 9  B @ @:
c3h$
%#)$ )8 ey

 y
 y
x eN
(9% N
 N
r1   