+
    i3                        ^ RI Ht ^ RIt^ RIt^ RIt^ RIt^ RIt^ RIHt ^ RI	H
t
 ^ RIHt ^ RIHtHt ^ RIHtHtHt ^ RIHt  ! R	 R
]4      t^<t ! R R4      t ! R R4      tR# )    )annotationsN)Iterable)utils)InvalidSignature)hashespadding)Cipher
algorithmsmodes)HMACc                      ] tR t^tRtR# )InvalidToken N)__name__
__module____qualname____firstlineno____static_attributes__r       Z/home/wkmabra/.openclaw/workspace/venv/lib/python3.14/site-packages/cryptography/fernet.pyr   r      s    r   r   c                      ] tR t^tRR R llt]R R l4       tR R ltR R	 ltR
 R lt	RR R llt
R R ltR R lt]R R l4       tR R ltR R ltRtR# )FernetNc               $    V ^8  d   QhRRRRRR/# )   keybytes | strbackendz
typing.AnyreturnNoner   )formats   "r   __annotate__Fernet.__annotate__   s(     ( (( ( 
	(r   c                	     \         P                  ! V4      p\        T4      ^ 8w  d   \	        R 4      hTR,          T n        TR,          T n        R#   \        P                   d   p\	        R 4      ThRp?ii ; i)z4Fernet key must be 32 url-safe base64-encoded bytes.N:N   N:r$   NN)base64urlsafe_b64decodebinasciiError
ValueErrorlen_signing_key_encryption_key)selfr   r   excs   &&& r   __init__Fernet.__init__   sw    
	**3/C
 s8r>F   H"3x ~~ 	F	s   A A7&A22A7c                   V ^8  d   QhRR/# )r   r   bytesr   )r    s   "r   r!   r"   1   s     8 8U 8r   c                	V    \         P                  ! \        P                  ! ^ 4      4      # )    )r%   urlsafe_b64encodeosurandom)clss   &r   generate_keyFernet.generate_key0   s    ''

277r   c                    V ^8  d   QhRRRR/# )r   datar2   r   r   )r    s   "r   r!   r"   4   s     < <E <e <r   c                	^    V P                  V\        \        P                  ! 4       4      4      # Nencrypt_at_timeinttime)r-   r<   s   &&r   encryptFernet.encrypt4   s     ##D#diik*:;;r   c               $    V ^8  d   QhRRRRRR/# )r   r<   r2   current_timerA   r   r   )r    s   "r   r!   r"   7   s&     @ @E @ @ @r   c                	R    \         P                  ! ^4      pV P                  WV4      # )r$   )r6   r7   _encrypt_from_parts)r-   r<   rF   ivs   &&& r   r@   Fernet.encrypt_at_time7   s"    ZZ^''B??r   c               (    V ^8  d   QhRRRRRRRR/# )r   r<   r2   rF   rA   rI   r   r   )r    s   "r   r!   r"   ;   s,     < <<),<27<	<r   c                	   \         P                  ! R V4       \        P                  ! \        P
                  P                  4      P                  4       pVP                  V4      VP                  4       ,           p\        \        P
                  ! V P                  4      \        P                  ! V4      4      P                  4       pVP                  V4      VP                  4       ,           pRVP                  ^RR7      ,           V,           V,           p\!        V P"                  \$        P&                  ! 4       4      p	V	P                  V4       V	P                  4       p
\(        P*                  ! W,           4      # )r<      big)length	byteorder)r   _check_bytesr   PKCS7r
   AES
block_sizepadderupdatefinalizer	   r,   r   CBC	encryptorto_bytesr   r+   r   SHA256r%   r5   )r-   r<   rF   rI   rU   padded_datarY   
ciphertextbasic_partshhmacs   &&&&       r   rH   Fernet._encrypt_from_parts;   s    	64(z~~889@@BmmD)FOO,==NN4//0IIbM
 )+ 	 %%k2Y5G5G5II
 ##1#>?  	 ""FMMO4	zz|''(:;;r   c               $    V ^8  d   QhRRRRRR/# )r   tokenr   ttl
int | Noner   r2   r   )r    s   "r   r!   r"   T   s!     > >[ >z >U >r   c                	    \         P                  V4      w  r4Vf   R pM V\        \        P                  ! 4       4      3pV P	                  WCV4      # r>   )r   _get_unverified_token_datarA   rB   _decrypt_data)r-   rc   rd   	timestampr<   	time_infos   &&&   r   decryptFernet.decryptT   sF     ;;EB	;Ic$))+./I!!$9==r   c               (    V ^8  d   QhRRRRRRRR/# )r   rc   r   rd   rA   rF   r   r2   r   )r    s   "r   r!   r"   \   s2     H H H'*H:=H	Hr   c                	t    Vf   \        R4      h\        P                  V4      w  rEV P                  WTW#34      # )Nz6decrypt_at_time() can only be used with a non-None ttl)r)   r   rg   rh   )r-   rc   rd   rF   ri   r<   s   &&&&  r   decrypt_at_timeFernet.decrypt_at_time\   sC     ;H  !;;EB	!!$C3FGGr   c                    V ^8  d   QhRRRR/# )r   rc   r   r   rA   r   )r    s   "r   r!   r"   f   s      { s r   c                	V    \         P                  V4      w  r#V P                  V4       V# r>   )r   rg   _verify_signature)r-   rc   ri   r<   s   &&  r   extract_timestampFernet.extract_timestampf   s(     ;;EB	t$r   c                    V ^8  d   QhRRRR/# )r   rc   r   r   ztuple[int, bytes]r   )r    s   "r   r!   r"   m   s      + :K r   c                	n   \        V \        \        34      '       g   \        R 4      h \        P
                  ! V 4      pT'       d   T^ ,          ^8w  d   \        h\        T4      ^	8  d   \        h\        P                  TR,          RR7      pY!3#   \        \        P                  3 d    \        hi ; i)ztoken must be bytes or str:   	   NrN   )rP   )
isinstancestrr2   	TypeErrorr%   r&   r'   r(   r   r*   rA   
from_bytes)rc   r<   ri   s   &  r   rg   !Fernet._get_unverified_token_datal   s    %#u..899	++E2D tAw$t9q=NN49N>	 8>>* 		s   B "B4c                    V ^8  d   QhRRRR/# )r   r<   r2   r   r   r   )r    s   "r   r!   r"      s      e  r   c                	    \        V P                  \        P                  ! 4       4      pVP	                  VR R 4        VP                  VRR  4       R #   \         d    \        hi ; i)N)r   r+   r   r[   rV   verifyr   r   )r-   r<   r_   s   && r   rs   Fernet._verify_signature   sX    ""FMMO4	ds	HHT#$Z  		s   A A'c               (    V ^8  d   QhRRRRRRRR/# )r   r<   r2   ri   rA   rj   ztuple[int, int] | Noner   r   )r    s   "r   r!   r"      s2     ! !! ! *	!
 
!r   c                	   Ve0   Vw  rEW$,           V8  d   \         hV\        ,           V8  d   \         hV P                  V4       VR,          pV^R p\        \        P
                  ! V P                  4      \        P                  ! V4      4      P                  4       pVP                  V4      p	 WP                  4       ,          p	\        P                  ! \        P
                  P                  4      P!                  4       p
T
P                  T	4      p YP                  4       ,          pT#   \         d    \         hi ; i  \         d    \         hi ; i)N:ry      Nr   )r   _MAX_CLOCK_SKEWrs   r	   r
   rS   r,   r   rX   	decryptorrV   rW   r)   r   rR   rT   unpadder)r-   r<   ri   rj   rd   rF   rI   r]   r   plaintext_paddedr   unpaddeds   &&&&        r   rh   Fernet._decrypt_data   s-      )C-""o-	9""t$$Z"S\
NN4//0%))B-

)+ 	 %++J7	 2 2 44 ==!:!:;DDF??#34	))++H   		  		s   1D- E -D?E)r,   r+   r>   )r   r   r   r   r/   classmethodr9   rC   r@   rH   rk   ro   rt   staticmethodrg   rs   rh   r   r   r   r   r   r      s^    (& 8 8<@<2>H  $! !r   r   c                  n    ] tR t^tR R ltR R ltR R ltR R ltRR
 R lltR R lt	R R lt
RtR	# )MultiFernetc                   V ^8  d   QhRR/# )r   fernetszIterable[Fernet]r   )r    s   "r   r!   MultiFernet.__annotate__   s         0  r   c                	N    \        V4      pV'       g   \        R 4      hWn        R# )z1MultiFernet requires at least one Fernet instanceN)listr)   _fernets)r-   r   s   &&r   r/   MultiFernet.__init__   s%    w-C   r   c                    V ^8  d   QhRRRR/# )r   msgr2   r   r   )r    s   "r   r!   r      s     ; ;5 ;U ;r   c                	^    V P                  V\        \        P                  ! 4       4      4      # r>   r?   )r-   r   s   &&r   rC   MultiFernet.encrypt   s     ##CTYY[)9::r   c               $    V ^8  d   QhRRRRRR/# )r   r   r2   rF   rA   r   r   )r    s   "r   r!   r      s&     C C5 C C Cr   c                	F    V P                   ^ ,          P                  W4      # )r   )r   r@   )r-   r   rF   s   &&&r   r@   MultiFernet.encrypt_at_time   s    }}Q//BBr   c                    V ^8  d   QhRRRR/# )r   r   r   r   r2   r   )r    s   "r   r!   r      s     F F+ F% Fr   c                	   \         P                  V4      w  r#V P                   F  p VP                  W2R 4      p M	  \        h\
        P                  ! ^4      pV P                  ^ ,          P                  WRV4      #   \         d     Kg  i ; ir>   )r   rg   r   rh   r   r6   r7   rH   )r-   r   ri   r<   fprI   s   &&     r   rotateMultiFernet.rotate   s     ;;C@	AOODT:  ZZ^}}Q33A"EE   s   A==BBNc               $    V ^8  d   QhRRRRRR/# )r   r   r   rd   re   r   r2   r   )r    s   "r   r!   r      s!      ; Z 5 r   c                	|    V P                    F  p VP                  W4      u # 	  \        h  \         d     K-  i ; ir>   )r   rk   r   )r-   r   rd   r   s   &&& r   rk   MultiFernet.decrypt   s@    Ayy** 
       ,;;c               (    V ^8  d   QhRRRRRRRR/# )r   r   r   rd   rA   rF   r   r2   r   )r    s   "r   r!   r      s,      %(8;	r   c                	~    V P                    F  p VP                  WV4      u # 	  \        h  \         d     K.  i ; ir>   )r   ro   r   )r-   r   rd   rF   r   s   &&&& r   ro   MultiFernet.decrypt_at_time   sF     A((<@@ 
    s   -<<c                    V ^8  d   QhRRRR/# )r   r   r   r   rA   r   )r    s   "r   r!   r      s      [ S r   c                	|    V P                    F  p VP                  V4      u # 	  \        h  \         d     K-  i ; ir>   )r   rt   r   )r-   r   r   s   && r   rt   MultiFernet.extract_timestamp   sB    A**3// 
    r   )r   r>   )r   r   r   r   r/   rC   r@   r   rk   ro   rt   r   r   r   r   r   r      s,     ;CF r   r   )
__future__r   r%   r'   r6   rB   typingcollections.abcr   cryptographyr   cryptography.exceptionsr   cryptography.hazmat.primitivesr   r   &cryptography.hazmat.primitives.ciphersr	   r
   r   #cryptography.hazmat.primitives.hmacr   	Exceptionr   r   r   r   r   r   r   <module>r      sX   
 #   	   $  4 : L L 4	9 	 L L^5 5r   