Ë
    ±éäg  ã                  óÂ   — 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mZ d dlmZmZmZ d dlmZ  G d„ d	e«      Zd
Z G d„ d«      Z G d„ d«      Zy)é    )ÚannotationsN)Úutils)ÚInvalidSignature)ÚhashesÚpadding)ÚCipherÚ
algorithmsÚmodes)ÚHMACc                  ó   — e Zd Zy)ÚInvalidTokenN)Ú__name__Ú
__module__Ú__qualname__© ó    úQ/var/www/skyplay_api_hub/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  | _        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_key)ÚselfÚkeyÚbackendÚexcs       r   Ú__init__zFernet.__init__   s{   € ð
	Ü×*Ñ*¨3Ó/ˆCô
 ˆs‹8�rŠ>ÜØFóð ð    ˜HˆÔØ" 2 3˜xˆÕøô �~‰~ò 	ÜØFóàðûð	ús   ‚A ÁA)ÁA$Á$A)c                óR   — t        j                  t        j                  d«      «      S )Nr   )r   Úurlsafe_b64encodeÚosÚurandom)Úclss    r   Úgenerate_keyzFernet.generate_key/   s   € ä×'Ñ'¬¯
©
°2«Ó7Ð7r   c                ó\   — | j                  |t        t        j                  «       «      «      S ©N©Úencrypt_at_timeÚintÚtime)r"   Údatas     r   ÚencryptzFernet.encrypt3   s    € Ø×#Ñ# D¬#¬d¯i©i«kÓ*:Ó;Ð;r   c                óR   — t        j                  d«      }| j                  |||«      S )Nr   )r)   r*   Ú_encrypt_from_parts)r"   r3   Úcurrent_timeÚivs       r   r0   zFernet.encrypt_at_time6   s$   € Ü�Z‰Z˜‹^ˆØ×'Ñ'¨¨l¸BÓ?Ð?r   c                óº  — t        j                  d|«       t        j                  t        j
                  j                  «      j                  «       }|j                  |«      |j                  «       z   }t        t	        j
                  | j                  «      t        j                  |«      «      j                  «       }|j                  |«      |j                  «       z   }d|j                  dd¬«      z   |z   |z   }t!        | j"                  t%        j&                  «       «      }	|	j                  |«       |	j                  «       }
t)        j*                  ||
z   «      S )Nr3   ó   €é   Úbig)ÚlengthÚ	byteorder)r   Ú_check_bytesr   ÚPKCS7r	   ÚAESÚ
block_sizeÚpadderÚupdateÚfinalizer   r!   r
   ÚCBCÚ	encryptorÚto_bytesr   r    r   ÚSHA256r   r(   )r"   r3   r7   r8   rC   Úpadded_datarG   Ú
ciphertextÚbasic_partsÚhÚhmacs              r   r6   zFernet._encrypt_from_parts:   s  € ô 	×Ñ˜6 4Ô(ä—‘œzŸ~™~×8Ñ8Ó9×@Ñ@ÓBˆØ—m‘m DÓ)¨F¯O©OÓ,=Ñ=ˆÜÜ�N‰N˜4×/Ñ/Ó0Ü�I‰I�b‹Mó
÷ ‰)‹+ð 	ð ×%Ñ% kÓ2°Y×5GÑ5GÓ5IÑIˆ
ð Ø×#Ñ#¨1¸Ð#Ó>ñ?àñð ñð 	ô �×"Ñ"¤F§M¡M£OÓ4ˆØ	�‰�ÔØ�z‰z‹|ˆÜ×'Ñ'¨°dÑ(:Ó;Ð;r   c                ó    — t         j                  |«      \  }}|€d }n|t        t        j                  «       «      f}| j	                  |||«      S r.   )r   Ú_get_unverified_token_datar1   r2   Ú_decrypt_data)r"   ÚtokenÚttlÚ	timestampr3   Ú	time_infos         r   ÚdecryptzFernet.decryptS   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   rP   rQ   )r"   rR   rS   r7   rT   r3   s         r   Údecrypt_at_timezFernet.decrypt_at_time[   sI   € ð ˆ;ÜØHóð ô !×;Ñ;¸EÓB‰ˆ	�4Ø×!Ñ! $¨	°C¸Ð3FÓGÐGr   c                óX   — t         j                  |«      \  }}| j                  |«       |S r.   )r   rP   Ú_verify_signature)r"   rR   rT   r3   s       r   Úextract_timestampzFernet.extract_timestampe   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>   )Ú
isinstanceÚstrÚbytesÚ	TypeErrorr   r   r   r   r   r   r1   Ú
from_bytes)rR   r3   rT   s      r   rP   z!Fernet._get_unverified_token_datak   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                  «       «      }|j	                  |d d «       	 |j                  |dd  «       y # t        $ r t        ‚w xY w)Néàÿÿÿ)r   r    r   rI   rD   Úverifyr   r   )r"   r3   rM   s      r   rZ   zFernet._verify_signature~   sX   € Ü�×"Ñ"¤F§M¡M£OÓ4ˆØ	�‰��d�s�Ôð	Ø�H‰H�T˜#˜$�ZÕ øÜò 	ÜÐð	ús   ¾A ÁA#c                ót  — |�%|\  }}||z   |k  rt         ‚|t        z   |k  rt         ‚| j                  |«       |dd }|dd }t        t	        j
                  | j                  «      t        j                  |«      «      j                  «       }|j                  |«      }		 |	|j                  «       z  }	t        j                  t        j
                  j                  «      j!                  «       }
|
j                  |	«      }	 ||
j                  «       z  }|S # t        $ r t         ‚w xY w# t        $ r t         ‚w xY w)Nr^   é   rf   )r   Ú_MAX_CLOCK_SKEWrZ   r   r	   rA   r!   r
   rF   Ú	decryptorrD   rE   r   r   r@   rB   Úunpadder)r"   r3   rT   rU   rS   r7   r8   rK   rk   Úplaintext_paddedrl   Úunpaddeds               r   rQ   zFernet._decrypt_data†   s7  € ð Ð Ø )ÑˆC�Ø˜3‰ Ò-Ü"Ð"àœoÑ-°	Ò9Ü"Ð"à×Ñ˜tÔ$à�!�BˆZˆØ˜"˜S�\ˆ
ÜÜ�N‰N˜4×/Ñ/Ó0´%·)±)¸B³-ó
ç
‰)‹+ð 	ð %×+Ñ+¨JÓ7Ðð	Ø 	× 2Ñ 2Ó 4Ñ4Ðô —=‘=¤§¡×!:Ñ!:Ó;×DÑDÓFˆà—?‘?Ð#3Ó4ˆð	Ø˜×)Ñ)Ó+Ñ+ˆHð ˆøô ò 	ÜÐð	ûô ò 	ÜÐð	ús   ÂD Ã?D' ÄD$Ä'D7r.   )r#   úbytes | strr$   z
typing.AnyÚreturnÚNone)rp   rb   )r3   rb   rp   rb   )r3   rb   r7   r1   rp   rb   )r3   rb   r7   r1   r8   rb   rp   rb   )rR   ro   rS   ú
int | Nonerp   rb   )rR   ro   rS   r1   r7   r1   rp   rb   )rR   ro   rp   r1   )rR   ro   rp   ztuple[int, bytes])r3   rb   rp   rq   )r3   rb   rT   r1   rU   ztuple[int, int] | Nonerp   rb   )r   r   r   r&   Úclassmethodr,   r4   r0   r6   rV   rX   r[   ÚstaticmethodrP   rZ   rQ   r   r   r   r   r      sä   „ ð #ð(àð(ð ð(ð 
ó	(ð& ò8ó ð8ó<ó@ð<Øð<Ø),ð<Ø27ð<à	ó<ô2>ð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 r.   r/   )r"   Úmsgs     r   r4   zMultiFernet.encrypt³   s    € Ø×#Ñ# C¬¬T¯Y©Y«[Ó)9Ó:Ð:r   c                ó@   — | j                   d   j                  ||«      S )Nr   )ry   r0   )r"   r|   r7   s      r   r0   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   rP   ry   rQ   r   r)   r*   r6   )r"   r|   rT   r3   ÚfÚpr8   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                óv   — | j                   D ]  }	 |j                  ||«      c S  t        ‚# t        $ r Y Œ*w xY wr.   )ry   rV   r   )r"   r|   rS   r   s       r   rV   zMultiFernet.decryptÇ   sG   € Ø—‘ò 	ˆAðØ—y‘y  cÓ*Ò*ð	ô
 Ðøô  ò Ùðús   ‘,¬	8·8c                óx   — | j                   D ]  }	 |j                  |||«      c S  t        ‚# t        $ r Y Œ+w xY wr.   )ry   rX   r   )r"   r|   rS   r7   r   s        r   rX   zMultiFernet.decrypt_at_timeÏ   sM   € ð —‘ò 	ˆAðØ×(Ñ(¨¨c°<Ó@Ò@ð	ô
 Ðøô  ò Ùðús   ‘-­	9¸9c                ót   — | j                   D ]  }	 |j                  |«      c S  t        ‚# t        $ r Y Œ)w xY wr.   )ry   r[   r   )r"   r|   r   s      r   r[   zMultiFernet.extract_timestampÙ   sG   € Ø—‘ò 	ˆAðØ×*Ñ*¨3Ó/Ò/ð	ô
 Ðøô  ò Ùðús   ‘+«	7¶7)rz   ztyping.Iterable[Fernet])r|   rb   rp   rb   )r|   rb   r7   r1   rp   rb   )r|   ro   rp   rb   r.   )r|   ro   rS   rr   rp   rb   )r|   ro   rS   r1   r7   r1   rp   rb   )r|   ro   rp   r1   )
r   r   r   r&   r4   r0   r�   rV   rX   r[   r   r   r   rv   rv   ª   sG   „ ó ó;óCóFôðØðØ%(ðØ8;ðà	óôr   rv   )Ú
__future__r   r   r   r)   r2   ÚtypingÚcryptographyr   Úcryptography.exceptionsr   Úcryptography.hazmat.primitivesr   r   Ú&cryptography.hazmat.primitives.ciphersr   r	   r
   Ú#cryptography.hazmat.primitives.hmacr   Ú	Exceptionr   rj   r   rv   r   r   r   ú<module>r�      sU   ðõ
 #ã Û Û 	Û Û å Ý 4ß :ß LÑ LÝ 4ô	�9ô 	ð €÷Lñ L÷^5ò 5r   