+
    i3  c                  s    ^ 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                  s    ] tR t^tRtR# )InvalidToken N)__name__
__module____qualname____firstlineno____static_attributes__r       :/usr/lib64/python3.14/site-packages/cryptography/fernet.pyr   r      s    r   r   c                  s    ] 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   Zformat   "r   __annotate__Fernet.__annotate__   s(     ( (( ( 
	(r   c                	s     \         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   Zexc   &&& r   __init__Z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   r   r   r   r   1   s     8 8U 8r   c                	sV    \         P                  ! \        P                  ! ^ 4      4      # )i    )r!   urlsafe_b64encodeosurandom)Zclss   &r   generate_keyZFernet.generate_key0   s    ''

277r   c                    V ^8  d   QhRRRR/# )r   datar-   r   r   r   r   r   r   r   4   s     < <E <e <r   c                	^    V P                  V\        \        P                  ! 4       4      4      # Nencrypt_at_timeinttime)r)   r3      &&r   encryptZFernet.encrypt4   s     ##D#diik*:;;r   c               $    V ^8  d   QhRRRRRR/# )r   r3   r-   current_timer8   r   r   r   r   r   r   r   7   s&     @ @E @ @ @r   c                	sR    \         P                  ! ^4      pV P                  WV4      # )r    )r/   r0   _encrypt_from_parts)r)   r3   r=   ivr*   r   r7   ZFernet.encrypt_at_time7   s"    ZZ^''B??r   c               s(    V ^8  d   QhRRRRRRRR/# )r   r3   r-   r=   r8   r?   r   r   r   r   r   r   r   ;   s,     < <<),<27<	<r   c                	s   \         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      # )r3   s   big)Zlength	byteorder)r   Z_check_bytesr   PKCS7r   AES
block_sizepadderupdatefinalizer   r(   r	   CBC	encryptorZto_bytesr
   r'   r   SHA256r!   r.   )r)   r3   r=   r?   rE   Zpadded_datarI   
ciphertextZbasic_partshZhmacs   &&&&       r   r>   Z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               r   )r   tokenr   ttl
int | Noner   r-   r   r   r   r   r   r   T   s!     > >[ >z >U >r   c                	s    \         P                  V4      w  r4Vf   R pM V\        \        P                  ! 4       4      3pV P	                  WCV4      # r5   )r   _get_unverified_token_datar8   r9   _decrypt_data)r)   rM   rN   	timestampr3   	time_infos   &&&   r   decryptZ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   rM   r   rN   r8   r=   r   r-   r   r   r   r   r   r   \   s2     H H H'*H:=H	Hr   c                	st    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   rP   rQ   )r)   rM   rN   r=   rR   r3   s   &&&&  r   decrypt_at_timeZFernet.decrypt_at_time\   sC     ;H  !;;EB	!!$C3FGGr   c                    V ^8  d   QhRRRR/# )r   rM   r   r   r8   r   r   r   r   r   r   f   s      { s r   c                	sV    \         P                  V4      w  r#V P                  V4       V# r5   )r   rP   _verify_signature)r)   rM   rR   r3   s   &&  r   extract_timestampZFernet.extract_timestampf   s(     ;;EB	t$r   c               rW   )r   rM   r   r   ztuple[int, bytes]r   r   r   r   r   r   m   s      + :K r   c                	sn   \        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:i   	   Nr@   )rA   )Z
isinstanceZstrr-   Z	TypeErrorr!   r"   r#   r$   r   r&   r8   Z
from_bytes)rM   r3   rR   s   &  r   rP   Z!Fernet._get_unverified_token_datal   s    %#u..899	++E2D tAw$t9q=NN49N>	 8>>* 		s   B "B4c               rW   )r   r3   r-   r   r   r   r   r   r   r   r      s      e  r   c                	s    \        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   rJ   rF   Zverifyr   r   )r)   r3   rL      && r   rX   ZFernet._verify_signature   sX    ""FMMO4	ds	HHT#$Z  		s   A A'c               s(    V ^8  d   QhRRRRRRRR/# )r   r3   r-   rR   r8   rS   ztuple[int, int] | Noner   r   r   r   r   r   r      s2     ! !! ! *	!
 
!r   c                	s   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:rZ   i   Nr[   )r   _MAX_CLOCK_SKEWrX   r   r   rC   r(   r	   rH   	decryptorrF   rG   r%   r   rB   rD   unpadder)r)   r3   rR   rS   rN   r=   r?   rK   r^   Zplaintext_paddedr_   Zunpaddeds   &&&&        r   rQ   Z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'   r5   )r   r   r   r   r+   Zclassmethodr1   r;   r7   r>   rT   rV   rY   ZstaticmethodrP   rX   rQ   r   r   r   r   r   r      s^    (& 8 8<@<2>H  $! !r   r   c                  sn    ] 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               r,   )r   fernetszIterable[Fernet]r   r   r   r   r   MultiFernet.__annotate__   s         0  r   c                	sN    \        V4      pV'       g   \        R 4      hWn        R# )z1MultiFernet requires at least one Fernet instanceN)Zlistr%   _fernets)r)   ra   r:   r   r+   ZMultiFernet.__init__   s%    w-C   r   c               r2   )r   msgr-   r   r   r   r   r   r   rb      s     ; ;5 ;U ;r   c                	r4   r5   r6   )r)   rd   r:   r   r;   ZMultiFernet.encrypt   s     ##CTYY[)9::r   c               r<   )r   rd   r-   r=   r8   r   r   r   r   r   r   rb      s&     C C5 C C Cr   c                	sF    V P                   ^ ,          P                  W4      # )r    )rc   r7   )r)   rd   r=   s   &&&r   r7   ZMultiFernet.encrypt_at_time   s    }}Q//BBr   c               rW   )r   rd   r   r   r-   r   r   r   r   r   rb      s     F F+ F% Fr   c                	s   \         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r5   )r   rP   rc   rQ   r   r/   r0   r>   )r)   rd   rR   r3   fZpr?   s   &&     r   rotateZMultiFernet.rotate   s     ;;C@	AOODT:  ZZ^}}Q33A"EE   s   A==BBNc               r   )r   rd   r   rN   rO   r   r-   r   r   r   r   r   rb      s!      ; Z 5 r   c                	s|    V P                    F  p VP                  W4      u # 	  \        h  \         d     K-  i ; ir5   )rc   rT   r   )r)   rd   rN   re   r*   r   rT   ZMultiFernet.decrypt   s@    Ayy** 
       ,;;c               rU   )r   rd   r   rN   r8   r=   r   r-   r   r   r   r   r   rb      s,      %(8;	r   c                	s~    V P                    F  p VP                  WV4      u # 	  \        h  \         d     K.  i ; ir5   )rc   rV   r   )r)   rd   rN   r=   re   s   &&&& r   rV   ZMultiFernet.decrypt_at_time   sF     A((<@@ 
    s   -<<c               rW   )r   rd   r   r   r8   r   r   r   r   r   rb      s      [ S r   c                	s|    V P                    F  p VP                  V4      u # 	  \        h  \         d     K-  i ; ir5   )rc   rY   r   )r)   rd   re   r\   r   rY   ZMultiFernet.extract_timestamp   sB    A**3// 
    rg   )rc   r5   )r   r   r   r   r+   r;   r7   rf   rT   rV   rY   r   r   r   r   r`   r`      s,     ;CF r   r`   )Z
__future__r   r!   r#   r/   r9   ZtypingZcollections.abcr   Zcryptographyr   Zcryptography.exceptionsr   Zcryptography.hazmat.primitivesr   r   Z&cryptography.hazmat.primitives.ciphersr   r   r	   Z#cryptography.hazmat.primitives.hmacr
   Z	Exceptionr   r]   r   r`   r   r   r   <module>rh      sX   
 #   	   $  4 : L L 4	9 	 L L^5 5r   