Ë
    ±Œj  ã                  ó  — d dl mZ d dlZd dlZd dlZd dlZd dlZd dlmZ d dl	m
Z
 d dlmZ d dlmZmZ d dlmZmZmZ d dlmZ  G d	„ d
e«      ZdZ ej2                  d«      Z ej6                  «       Z G d„ d«      Z G d„ d«      Zy)é    )ÚannotationsN)ÚIterable)Úutils)ÚInvalidSignature)ÚhashesÚpadding)ÚCipherÚ
algorithmsÚmodes)ÚHMACc                  ó   — e Zd Zy)ÚInvalidTokenN)Ú__name__Ú
__module__Ú__qualname__© ó    ú]/var/www/html/Fitness-lenito-AI-main/venv/lib/python3.12/site-packages/cryptography/fernet.pyr   r      s   „ Ør   r   é<   é€   c                  ó¸   — e Zd Z	 d	 	 	 	 	 dd„Zedd„«       Zdd„Zdd„Z	 	 	 	 	 	 	 	 dd„Zddd„Z		 	 	 	 	 	 	 	 dd„Z
dd	„Zedd
„«       Zdd„Z	 	 	 	 	 	 	 	 dd„Zy)ÚFernetNc                ó   — 	 t        j                  |«      }t        |«      dk7  rt	        d«      ‚|d d | _        |dd  | _        t        j                  | j                  «      | _
        y # t        j                  $ r}t	        d«      |‚d }~ww xY w)Nz4Fernet key must be 32 url-safe base64-encoded bytes.é    é   )Úbase64Úurlsafe_b64decodeÚbinasciiÚErrorÚ
ValueErrorÚlenÚ_signing_keyÚ_encryption_keyr
   ÚAESÚ_aes)ÚselfÚkeyÚbackendÚexcs       r   Ú__init__zFernet.__init__!   s‘   € ð
	Ü×*Ñ*¨3Ó/ˆCô
 ˆs‹8�rŠ>ÜØFóð ð    ˜HˆÔØ" 2 3˜xˆÔÜ—N‘N 4×#7Ñ#7Ó8ˆ�	øô �~‰~ò 	ÜØFóàðûð	ús   ‚A) Á)BÁ<BÂBc                óR   — t        j                  t        j                  d«      «      S )Nr   )r   Úurlsafe_b64encodeÚosÚurandom)Úclss    r   Úgenerate_keyzFernet.generate_key5   s   € ä×'Ñ'¬¯
©
°2«Ó7Ð7r   c                ó\   — | j                  |t        t        j                  «       «      «      S ©N©Úencrypt_at_timeÚintÚtime)r&   Údatas     r   ÚencryptzFernet.encrypt9   s    € Ø×#Ñ# D¬#¬d¯i©i«kÓ*:Ó;Ð;r   c                óR   — t        j                  d«      }| j                  |||«      S )Nr   )r-   r.   Ú_encrypt_from_parts)r&   r7   Úcurrent_timeÚivs       r   r4   zFernet.encrypt_at_time<   s$   € Ü�Z‰Z˜‹^ˆØ×'Ñ'¨¨l¸BÓ?Ð?r   c                ó*  — t        j                  d|«       t        j                  «       }|j	                  |«      |j                  «       z   }t        | j                  t        j                  |«      «      j                  «       }|j	                  |«      |j                  «       z   }d|j                  dd¬«      z   |z   |z   }t        | j                  t        «      }	|	j	                  |«       |	j                  «       }
t        j                   ||
z   «      S )Nr7   ó   €é   Úbig)ÚlengthÚ	byteorder)r   Ú_check_bytesÚ
_PKCS7_128ÚpadderÚupdateÚfinalizer	   r%   r   ÚCBCÚ	encryptorÚto_bytesr   r"   Ú_SHA256r   r,   )r&   r7   r;   r<   rE   Úpadded_datarI   Ú
ciphertextÚbasic_partsÚhÚhmacs              r   r:   zFernet._encrypt_from_parts@   sð   € ô 	×Ñ˜6 4Ô(ä×"Ñ"Ó$ˆØ—m‘m DÓ)¨F¯O©OÓ,=Ñ=ˆÜ˜4Ÿ9™9¤e§i¡i°£mÓ4×>Ñ>Ó@ˆ	Ø×%Ñ% kÓ2°Y×5GÑ5GÓ5IÑIˆ
ð Ø×#Ñ#¨1¸Ð#Ó>ñ?àñð ñð 	ô �×"Ñ"¤GÓ,ˆØ	�‰�ÔØ�z‰z‹|ˆÜ×'Ñ'¨°dÑ(:Ó;Ð;r   c                ó    — t         j                  |«      \  }}|€d }n|t        t        j                  «       «      f}| j	                  |||«      S r2   )r   Ú_get_unverified_token_datar5   r6   Ú_decrypt_data)r&   ÚtokenÚttlÚ	timestampr7   Ú	time_infos         r   ÚdecryptzFernet.decryptV   sJ   € Ü ×;Ñ;¸EÓB‰ˆ	�4Øˆ;Ø‰Iàœc¤$§)¡)£+Ó.Ð/ˆIØ×!Ñ! $¨	°9Ó=Ð=r   c                óv   — |€t        d«      ‚t        j                  |«      \  }}| j                  ||||f«      S ©Nz6decrypt_at_time() can only be used with a non-None ttl)r    r   rR   rS   )r&   rT   rU   r;   rV   r7   s         r   Údecrypt_at_timezFernet.decrypt_at_time^   sI   € ð ˆ;ÜØHóð ô !×;Ñ;¸EÓB‰ˆ	�4Ø×!Ñ! $¨	°C¸Ð3FÓGÐGr   c                óX   — t         j                  |«      \  }}| j                  |«       |S r2   )r   rR   Ú_verify_signature)r&   rT   rV   r7   s       r   Úextract_timestampzFernet.extract_timestamph   s*   € Ü ×;Ñ;¸EÓB‰ˆ	�4à×Ñ˜tÔ$ØÐr   c                ó:  — t        | t        t        f«      st        d«      ‚	 t	        j
                  | «      }|r|d   dk7  rt        ‚t        |«      dk  rt        ‚t        j                  |dd d¬«      }||fS # t        t        j                  f$ r t        ‚w xY w)Nztoken must be bytes or strr   r   é	   é   r@   )rB   )Ú
isinstanceÚstrÚbytesÚ	TypeErrorr   r   r   r   r   r!   r5   Ú
from_bytes)rT   r7   rV   s      r   rR   z!Fernet._get_unverified_token_datan   s™   € ä˜%¤#¤u Ô.ÜÐ8Ó9Ð9ð	Ü×+Ñ+¨EÓ2ˆDñ �t˜A‘w $’ÜÐäˆt‹9�qŠ=ÜÐä—N‘N 4¨¨! 9¸�NÓ>ˆ	Ø˜$ˆÐøô œ8Ÿ>™>Ð*ò 	ÜÐð	ús   £A: Á: Bc                óÂ   — t        | j                  t        «      }|j                  t	        |«      d d «       	 |j                  |dd  «       y # t        $ r t        ‚w xY w)Néàÿÿÿ)r   r"   rK   rF   Ú
memoryviewÚverifyr   r   )r&   r7   rO   s      r   r]   zFernet._verify_signature�   sX   € Ü�×"Ñ"¤GÓ,ˆØ	�‰”˜DÓ! $ 3Ð'Ô(ð	Ø�H‰H�T˜#˜$�ZÕ øÜò 	ÜÐð	ús   ¹A ÁAc                ó  — |�%|\  }}||z   |k  rt         ‚|t        z   |k  rt         ‚| j                  |«       t        |«      }|dd }|dd }t	        | j
                  t        j                  |«      «      j                  «       }	|	j                  |«      }
	 |
|	j                  «       z  }
t        j                  «       }|j                  |
«      }	 ||j                  «       z  }|S # t        $ r t         ‚w xY w# t        $ r t         ‚w xY w)Nr`   é   rh   )r   Ú_MAX_CLOCK_SKEWr]   ri   r	   r%   r   rH   Ú	decryptorrF   rG   r    rD   Úunpadder)r&   r7   rV   rW   rU   r;   Úmvr<   rM   rn   Úplaintext_paddedro   Úunpaddeds                r   rS   zFernet._decrypt_data‰   s  € ð Ð Ø )ÑˆC�Ø˜3‰ Ò-Ü"Ð"àœoÑ-°	Ò9Ü"Ð"à×Ñ˜tÔ$ä˜ÓˆØ�!�BˆZˆØ˜˜3�Zˆ
Ü˜4Ÿ9™9¤e§i¡i°£mÓ4×>Ñ>Ó@ˆ	Ø$×+Ñ+¨JÓ7Ðð	Ø 	× 2Ñ 2Ó 4Ñ4Ðô ×&Ñ&Ó(ˆà—?‘?Ð#3Ó4ˆð	Ø˜×)Ñ)Ó+Ñ+ˆHð ˆøô ò 	ÜÐð	ûô ò 	ÜÐð	ús   ÂC% ÃC8 Ã%C5Ã8Dr2   )r'   úbytes | strr(   z
typing.AnyÚreturnÚNone)rt   rd   )r7   rd   rt   rd   )r7   rd   r;   r5   rt   rd   )r7   rd   r;   r5   r<   rd   rt   rd   )rT   rs   rU   ú
int | Nonert   rd   )rT   rs   rU   r5   r;   r5   rt   rd   )rT   rs   rt   r5   )rT   rs   rt   ztuple[int, bytes])r7   rd   rt   ru   )r7   rd   rV   r5   rW   ztuple[int, int] | Nonert   rd   )r   r   r   r*   Úclassmethodr0   r8   r4   r:   rX   r[   r^   ÚstaticmethodrR   r]   rS   r   r   r   r   r       sä   „ ð #ð9àð9ð ð9ð 
ó	9ð( ò8ó ð8ó<ó@ð<Øð<Ø),ð<Ø27ð<à	ó<ô,>ðHØ ðHØ'*ðHØ:=ðHà	óHóð òó ðó$ð àð ð ð ð *ð	 ð
 
ô r   r   c                  óV   — e Zd Zd	d„Zd
d„Zdd„Zdd„Zddd„Z	 	 	 	 	 	 	 	 dd„Zdd„Z	y)ÚMultiFernetc                óB   — t        |«      }|st        d«      ‚|| _        y )Nz1MultiFernet requires at least one Fernet instance)Úlistr    Ú_fernets)r&   Úfernetss     r   r*   zMultiFernet.__init__­   s'   € Ü�w“-ˆÙÜØCóð ð  ˆ�r   c                ó\   — | j                  |t        t        j                  «       «      «      S r2   r3   )r&   Úmsgs     r   r8   zMultiFernet.encryptµ   s    € Ø×#Ñ# C¬¬T¯Y©Y«[Ó)9Ó:Ð:r   c                ó@   — | j                   d   j                  ||«      S )Nr   )r}   r4   )r&   r€   r;   s      r   r4   zMultiFernet.encrypt_at_time¸   s   € Ø�}‰}˜QÑ×/Ñ/°°\ÓBÐBr   c                ó  — t         j                  |«      \  }}| j                  D ]  }	 |j                  ||d «      } n t        ‚t        j                  d«      }| j                  d   j                  |||«      S # t        $ r Y Œ`w xY w)Nr   r   )r   rR   r}   rS   r   r-   r.   r:   )r&   r€   rV   r7   ÚfÚpr<   s          r   ÚrotatezMultiFernet.rotate»   s…   € Ü ×;Ñ;¸CÓ@‰ˆ	�4Ø—”ˆAðØ—O‘O D¨)°TÓ:�Ùð ô Ðä�Z‰Z˜‹^ˆØ�}‰}˜QÑ×3Ñ3°A°yÀ"ÓEÐEøô  ò Ùðús   ©A:Á:	BÂBNc                óð   — |€d }n|t        t        j                  «       «      f}t        j                  |«      \  }}| j                  D ]  }	 |j                  |||«      c S  t        ‚# t        $ r Y Œ+w xY wr2   )r5   r6   r   rR   r}   rS   r   )r&   r€   rU   rW   rV   r7   rƒ   s          r   rX   zMultiFernet.decryptÉ   sw   € Øˆ;Ø‰Iàœc¤$§)¡)£+Ó.Ð/ˆIä ×;Ñ;¸CÓ@‰ˆ	�4Ø—”ˆAðØ—‘ t¨Y¸	ÓBÒBð ô
 Ðøô  ò Ùðús   ÁA)Á)	A5Á4A5c                óÆ   — |€t        d«      ‚t        j                  |«      \  }}| j                  D ]  }	 |j	                  ||||f«      c S  t
        ‚# t
        $ r Y Œ-w xY wrZ   )r    r   rR   r}   rS   r   )r&   r€   rU   r;   rV   r7   rƒ   s          r   r[   zMultiFernet.decrypt_at_time×   sv   € ð ˆ;ÜØHóð ô !×;Ñ;¸CÓ@‰ˆ	�4Ø—”ˆAðØ—‘ t¨Y¸¸lÐ8KÓLÒLð ô
 Ðøô  ò Ùðús   ¶AÁ	A ÁA c                ó¨   — t         j                  |«      \  }}| j                  D ]  }	 |j                  |«       |c S  t        ‚# t        $ r Y Œ+w xY wr2   )r   rR   r}   r]   r   )r&   r€   rV   r7   rƒ   s        r   r^   zMultiFernet.extract_timestampç   sY   € ä ×;Ñ;¸CÓ@‰ˆ	�4Ø—”ˆAðØ×#Ñ# DÔ)Ø Ò ð ô Ðøô  ò Ùðús   ©AÁ	AÁA)r~   zIterable[Fernet])r€   rd   rt   rd   )r€   rd   r;   r5   rt   rd   )r€   rs   rt   rd   r2   )r€   rs   rU   rv   rt   rd   )r€   rs   rU   r5   r;   r5   rt   rd   )r€   rs   rt   r5   )
r   r   r   r*   r8   r4   r…   rX   r[   r^   r   r   r   rz   rz   ¬   sG   „ ó ó;óCóFôðØðØ%(ðØ8;ðà	óô 	r   rz   )Ú
__future__r   r   r   r-   r6   ÚtypingÚcollections.abcr   Úcryptographyr   Úcryptography.exceptionsr   Úcryptography.hazmat.primitivesr   r   Ú&cryptography.hazmat.primitives.ciphersr	   r
   r   Ú#cryptography.hazmat.primitives.hmacr   Ú	Exceptionr   rm   ÚPKCS7rD   ÚSHA256rK   r   rz   r   r   r   Ú<module>r”      sy   ðõ
 #ã Û Û 	Û Û Ý $å Ý 4ß :ß LÑ LÝ 4ô	�9ô 	ð €ð ˆW�]‰]˜3Ó€
Ø
ˆ&�-‰-‹/€÷Iñ I÷XDò Dr   