Ë
    æï7ie  ã                   ó  — 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	m
Z
 d dlZd dlmZ d dlmZmZmZmZ dd	lmZmZ dd
lmZ ddlmZ 	 d dlmZmZ dZh d£j=                  ej>                  «      Z  G d„ d«      Z!y# e$ r dZY Œ1w xY w)é    N)ÚIterable)Ú	timedelta)Úcached_property)ÚAnyÚOptionalÚUnion)Úgettext_lazy)ÚExpiredSignatureErrorÚInvalidAlgorithmErrorÚInvalidTokenErrorÚ
algorithmsé   )ÚTokenBackendErrorÚTokenBackendExpiredToken)ÚToken)Úformat_lazy)ÚPyJWKClientÚPyJWKClientErrorTF>	   ÚES256ÚES384ÚES512ÚHS256ÚHS384ÚHS512ÚRS256ÚRS384ÚRS512c                   ó<  — e Zd Z	 	 	 	 	 	 	 ddedee   dedeeedf   dee   dee   deeee	df   d	ee
ej                        d
dfd„Zed
efd„«       Zed
efd„«       Zdee   d
efd„Zded
dfd„Zd
e	fd„Zded
efd„Zdeeef   d
efd„Zddeded
eeef   fd„Zy)ÚTokenBackendNÚ	algorithmÚsigning_keyÚverifying_keyÚaudienceÚissuerÚjwk_urlÚleewayÚjson_encoderÚreturnc	                 óÌ   — | j                  |«       || _        || _        || _        || _        || _        t        r|rt        |«      nd | _        nd | _        || _	        || _
        y ©N)Ú_validate_algorithmr    r!   r"   r#   r$   ÚJWK_CLIENT_AVAILABLEr   Újwks_clientr&   r'   )	Úselfr    r!   r"   r#   r$   r%   r&   r'   s	            út/home/cursorai/projects/telegram-earn/backend/venv/lib/python3.12/site-packages/rest_framework_simplejwt/backends.pyÚ__init__zTokenBackend.__init__)   sb   € ð 	× Ñ  Ô+à"ˆŒØ&ˆÔØ*ˆÔØ ˆŒØˆŒåÙ7>œ{¨7Ô3ÀDˆDÕà#ˆDÔàˆŒØ(ˆÕó    c                 ó8   — | j                  | j                  «      S r*   )Ú_prepare_keyr!   ©r.   s    r/   Úprepared_signing_keyz!TokenBackend.prepared_signing_keyD   s   € à× Ñ  ×!1Ñ!1Ó2Ð2r1   c                 ó8   — | j                  | j                  «      S r*   )r3   r"   r4   s    r/   Úprepared_verifying_keyz#TokenBackend.prepared_verifying_keyH   s   € à× Ñ  ×!3Ñ!3Ó4Ð4r1   Úkeyc                 ó¼   — |�t        t        j                  dd «      s|S t        j                  «       j                  | j                  «      }|j                  |«      S )NÚget_algorithm_by_name)ÚgetattrÚjwtÚPyJWSr:   r    Úprepare_key)r.   r8   Újws_algs      r/   r3   zTokenBackend._prepare_keyL   sG   € àˆ;œg¤c§i¡iÐ1HÈ$ÔOØˆJÜ—)‘)“+×3Ñ3°D·N±NÓCˆØ×"Ñ" 3Ó'Ð'r1   c                 óÒ   — |t         vrt        t        t        d«      |«      «      ‚|t        j
                  v r/t        j                  st        t        t        d«      |«      «      ‚yy)z”
        Ensure that the nominated algorithm is recognized, and that cryptography is installed for those
        algorithms that require it
        z Unrecognized algorithm type '{}'z/You must have cryptography installed to use {}.N)ÚALLOWED_ALGORITHMSr   r   Ú_r   Úrequires_cryptographyÚ
has_crypto)r.   r    s     r/   r+   z TokenBackend._validate_algorithmS   sl   € ð
 Ô.Ñ.Ü#ÜœAÐ@ÓAÀ9ÓMóð ð œ
×8Ñ8Ñ8Ä×AVÒAVÜ#ÜÜÐGÓHÈ)óóð ð BWÐ8r1   c                 óL  — | j                   €t        d¬«      S t        | j                   t        t        f«      rt        | j                   ¬«      S t        | j                   t        «      r| j                   S t        t        t        d«      t        | j                   «      «      «      ‚)Nr   )ÚsecondszIUnrecognized type '{}', 'leeway' must be of type int, float or timedelta.)	r&   r   Ú
isinstanceÚintÚfloatr   r   rB   Útyper4   s    r/   Ú
get_leewayzTokenBackend.get_leewayd   s~   € Ø�;‰;ÐÜ QÔ'Ð'Ü˜Ÿ™¤c¬5 \Ô2Ü T§[¡[Ô1Ð1Ü˜Ÿ™¤YÔ/Ø—;‘;Ðä#ÜÜØcóô ˜Ÿ™Ó%ó	óð r1   Útokenc                 ó  — | j                   j                  d«      r| j                  S | j                  r&	 | j                  j	                  |«      j
                  S | j                  S # t        $ r}t        t        d«      «      |‚d }~ww xY w)NÚHSúToken is invalid)
r    Ú
startswithr5   r-   Úget_signing_key_from_jwtr8   r   r   rB   r7   )r.   rL   Úes      r/   Úget_verifying_keyzTokenBackend.get_verifying_keyu   s�   € Ø�>‰>×$Ñ$ TÔ*Ø×,Ñ,Ð,à×ÒðFØ×'Ñ'×@Ñ@ÀÓG×KÑKÐKð ×*Ñ*Ð*øô $ò FÜ'¬Ð*<Ó(=Ó>ÀAÐEûðFús   µ$A& Á&	B	Á/BÂB	Úpayloadc                 óB  — |j                  «       }| j                  �| j                  |d<   | j                  �| j                  |d<   t        j                  || j
                  | j                  | j                  ¬«      }t        |t        «      r|j                  d«      S |S )zL
        Returns an encoded token for the given payload dictionary.
        ÚaudÚiss)r    r'   zutf-8)Úcopyr#   r$   r<   Úencoder5   r    r'   rG   ÚbytesÚdecode)r.   rT   Újwt_payloadrL   s       r/   rY   zTokenBackend.encode�   s‰   € ð —l‘l“nˆØ�=‰=Ð$Ø!%§¡ˆK˜ÑØ�;‰;Ð"Ø!%§¡ˆK˜Ñä—
‘
ØØ×%Ñ%Ø—n‘nØ×*Ñ*ô	
ˆô �eœUÔ#à—<‘< Ó(Ð(àˆr1   Úverifyc                 ó¢  — 	 t        j                  || j                  |«      | j                  g| j                  | j
                  | j                  «       | j                  du|dœ¬«      S # t        $ r}t        t        d«      «      |‚d}~wt        $ r}t        t        d«      «      |‚d}~wt        $ r}t        t        d«      «      |‚d}~ww xY w)zý
        Performs a validation of the given token and returns its payload
        dictionary.

        Raises a `TokenBackendError` if the token is malformed, if its
        signature check fails, or if its 'exp' claim indicates it has expired.
        N)Ú
verify_audÚverify_signature)r   r#   r$   r&   ÚoptionszInvalid algorithm specifiedzToken is expiredrO   )r<   r[   rS   r    r#   r$   rK   r   r   rB   r
   r   r   )r.   rL   r]   rR   s       r/   r[   zTokenBackend.decode—   sÁ   € ð	BÜ—:‘:ØØ×&Ñ& uÓ-Ø ŸN™NÐ+ØŸ™Ø—{‘{Ø—‘Ó(à"&§-¡-°tÐ";Ø(.ñôð øô %ò 	MÜ#¤AÐ&CÓ$DÓEÈ1ÐLûÜ$ò 	IÜ*¬1Ð-?Ó+@ÓAÀqÐHûÜ ò 	BÜ#¤AÐ&8Ó$9Ó:ÀÐAûð	Bús0   ‚A&A) Á)	CÁ2BÂCÂB(Â(CÂ4C	Ã	C)NÚ NNNNN)T)Ú__name__Ú
__module__Ú__qualname__Ústrr   r   r   rI   rH   r   rJ   ÚjsonÚJSONEncoderr0   r   r   r5   r7   r3   r+   rK   r   rS   ÚdictrY   Úboolr[   © r1   r/   r   r   (   sl  „ ð &*ØØ/3Ø $Ø!%Ø59Ø9=ñ)àð)ð ˜c‘]ð)ð ð	)ð
 ˜˜X tÐ+Ñ,ð)ð ˜‘ð)ð ˜#‘ð)ð �e˜S )¨TÐ1Ñ2ð)ð ˜t D×$4Ñ$4Ñ5Ñ6ð)ð 
ó)ð6 ð3 cò 3ó ð3ð ð5¨ò 5ó ð5ð( ¨¡ð (°#ó (ð¨Sð °Tó ð"˜Ió ð"
+ uð 
+°ó 
+ð˜d 3¨ 8™nð °ó ñ,B˜Eð B¨4ð B¸4ÀÀSÀ¹>ô Br1   r   )"rg   Úcollections.abcr   Údatetimer   Ú	functoolsr   Útypingr   r   r   r<   Údjango.utils.translationr	   rB   r
   r   r   r   Ú
exceptionsr   r   Útokensr   Úutilsr   r   r   r,   ÚImportErrorÚunionrC   rA   r   rk   r1   r/   Ú<module>rv      s‚   ðÛ Ý $Ý Ý %ß 'Ñ 'ã 
Ý 6÷ó ÷ DÝ Ý ð!ß1àÐò
÷ �%ˆ
×(Ñ(Ó)ð ÷IBò IBøð! ò !Ø Òð!ús   Á
A> Á>BÂB