Ë
    åÞËjK2  ã                  ó&  — d dl m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	m
Z
 d dlmZmZmZ ddlmZ dd	lmZmZmZmZmZmZmZ dd
lmZ erddlmZmZ ddlmZ  G d„ d«      Z e«       Z e jB                  Z!e jD                  Z"e jF                  Z#y)é    )ÚannotationsN)Útimegm)ÚIterable)ÚdatetimeÚ	timedeltaÚtimezone)ÚTYPE_CHECKINGÚAnyÚListé   )Úapi_jws)ÚDecodeErrorÚExpiredSignatureErrorÚImmatureSignatureErrorÚInvalidAudienceErrorÚInvalidIssuedAtErrorÚInvalidIssuerErrorÚMissingRequiredClaimError)ÚRemovedInPyjwt3Warning)ÚAllowedPrivateKeysÚAllowedPublicKeys)ÚPyJWKc                  óž  — e Zd Zddd„Zedd„«       Z	 	 	 	 d	 	 	 	 	 	 	 	 	 	 	 	 	 dd„Z	 	 d	 	 	 	 	 	 	 dd„Z	 	 	 	 	 	 	 	 d	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dd„Zdd„Z		 	 	 	 	 	 	 	 d	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dd„Z
	 	 	 d	 	 	 	 	 	 	 dd	„Z	 	 	 	 	 	 dd
„Z	 	 	 	 	 	 	 	 d d„Z	 	 	 	 	 	 	 	 d d„Z	 	 	 	 	 	 	 	 d d„Zddœ	 	 	 	 	 	 	 d!d„Zd"d„Zy)#ÚPyJWTNc                ó>   — |€i }i | j                  «       ¥|¥| _        y ©N)Ú_get_default_optionsÚoptions)Úselfr   s     úH/var/www/photos/backend/venv/lib/python3.12/site-packages/jwt/api_jwt.pyÚ__init__zPyJWT.__init__   s&   € Øˆ?ØˆGØ'Q¨$×*CÑ*CÓ*EÐ'QÈÐ'Qˆ�ó    c                 ó   — ddddddg dœS )NT)Úverify_signatureÚ
verify_expÚ
verify_nbfÚ
verify_iatÚ
verify_audÚ
verify_issÚrequire© r+   r"   r    r   zPyJWT._get_default_options!   s#   € ð !%ØØØØØØñ
ð 	
r"   c                óB  — t        |t        «      st        d«      ‚|j                  «       }dD ]A  }t        |j	                  |«      t
        «      sŒ#t        ||   j                  «       «      ||<   ŒC | j                  |||¬«      }t        j                  ||||||¬«      S )NzGExpecting a dict object, as JWT only supports JSON objects as payloads.)ÚexpÚiatÚnbf)ÚheadersÚjson_encoder)Úsort_headers)Ú
isinstanceÚdictÚ	TypeErrorÚcopyÚgetr   r   ÚutctimetupleÚ_encode_payloadr   Úencode)	r   ÚpayloadÚkeyÚ	algorithmr0   r1   r2   Ú
time_claimÚjson_payloads	            r    r:   zPyJWT.encode-   s³   € ô ˜'¤4Ô(Üð,óð ð —,‘,“.ˆØ/ò 	QˆJä˜'Ÿ+™+ jÓ1´8Õ<Ü&,¨W°ZÑ-@×-MÑ-MÓ-OÓ&P�˜
Ò#ð	Qð
 ×+Ñ+ØØØ%ð ,ó 
ˆô �~‰~ØØØØØØ%ô
ð 	
r"   c                óP   — t        j                  |d|¬«      j                  d«      S )zÚ
        Encode a given payload to the bytes to be signed.

        This method is intended to be overridden by subclasses that need to
        encode the payload in a different way, e.g. compress the payload.
        )ú,ú:)Ú
separatorsÚclszutf-8)ÚjsonÚdumpsr:   )r   r;   r0   r1   s       r    r9   zPyJWT._encode_payloadS   s)   € ô �z‰zØØ!Øô
÷ ‰&�‹/ð		r"   c
                óŒ  — |
r4t        j                  dt        |
j                  «       «      › �t        «       t        |xs i «      }|j                  dd«       |�#||d   k7  rt        j                  dt        ¬«       |d   sZ|j                  dd«       |j                  dd«       |j                  d	d«       |j                  d
d«       |j                  dd«       |d   r|st        d«      ‚t        j                  |||||¬«      }| j                  |«      }i | j                  ¥|¥}| j                  |||||	¬«       ||d<   |S )Nzypassing additional kwargs to decode_complete() is deprecated and will be removed in pyjwt version 3. Unsupported kwargs: r$   TzàThe `verify` argument to `decode` does nothing in PyJWT 2.0 and newer. The equivalent is setting `verify_signature` to False in the `options` dictionary. This invocation has a mismatch between the kwarg and the option entry.)Úcategoryr%   Fr&   r'   r(   r)   z\It is required that you pass in a value for the "algorithms" argument when calling decode().)r<   Ú
algorithmsr   Údetached_payload)ÚaudienceÚissuerÚleewayr;   )ÚwarningsÚwarnÚtupleÚkeysr   r4   Ú
setdefaultÚDeprecationWarningr   r   Údecode_completeÚ_decode_payloadr   Ú_validate_claims)r   Újwtr<   rI   r   ÚverifyrJ   rK   rL   rM   ÚkwargsÚdecodedr;   Úmerged_optionss                 r    rT   zPyJWT.decode_completee   sk  € ñ$ Ü�M‰Mð'ä',¨V¯[©[«]Ó';Ð&<ð>ô 'ô	ô �w’} "Ó%ˆØ×ÑÐ-¨tÔ4ð
 Ð &¨GÐ4FÑ,GÒ"GÜ�M‰MðYô ,õ	ð Ð)Ò*Ø×Ñ˜|¨UÔ3Ø×Ñ˜|¨UÔ3Ø×Ñ˜|¨UÔ3Ø×Ñ˜|¨UÔ3Ø×Ñ˜|¨UÔ3àÐ%Ò&©zÜØnóð ô ×)Ñ)ØØØ!ØØ-ô
ˆð ×&Ñ& wÓ/ˆà4˜DŸL™LÐ4¨GÐ4ˆØ×ÑØ�^¨h¸vÈfð 	ô 	
ð %ˆ�	ÑØˆr"   c                ó¬   — 	 t        j                  |d   «      }t	        |t
        «      st        d«      ‚|S # t        $ r}t        d|› �«      ‚d}~ww xY w)a  
        Decode the payload from a JWS dictionary (payload, signature, header).

        This method is intended to be overridden by subclasses that need to
        decode the payload in a different way, e.g. decompress compressed
        payloads.
        r;   zInvalid payload string: Nz-Invalid payload string: must be a json object)rE   ÚloadsÚ
ValueErrorr   r3   r4   )r   rZ   r;   Úes       r    rU   zPyJWT._decode_payloadª   s\   € ð	>Ü—j‘j ¨Ñ!3Ó4ˆGô ˜'¤4Ô(ÜÐMÓNÐNØˆøô	 ò 	>ÜÐ 8¸¸Ð<Ó=Ð=ûð	>ús   ‚7 ·	AÁ AÁAc
                ó¬   — |
r4t        j                  dt        |
j                  «       «      › �t        «       | j                  |||||||||	¬«	      }|d   S )Nzppassing additional kwargs to decode() is deprecated and will be removed in pyjwt version 3. Unsupported kwargs: )rX   rJ   rK   rL   rM   r;   )rN   rO   rP   rQ   r   rT   )r   rW   r<   rI   r   rX   rJ   rK   rL   rM   rY   rZ   s               r    ÚdecodezPyJWT.decodeº   sr   € ñ$ Ü�M‰Mð'ä',¨V¯[©[«]Ó';Ð&<ð>ô 'ô	ð ×&Ñ&ØØØØØØ-ØØØð 'ó 

ˆð �yÑ!Ð!r"   c                ó<  — t        |t        «      r|j                  «       }|�!t        |t        t        f«      st        d«      ‚| j                  ||«       t        j                  t        j                  ¬«      j                  «       }d|v r|d   r| j                  |||«       d|v r|d   r| j                  |||«       d|v r|d   r| j                  |||«       |d	   r| j                  ||«       |d
   r%| j!                  |||j#                  dd«      ¬«       y y )Nz+audience must be a string, iterable or None)Útzr.   r'   r/   r&   r-   r%   r)   r(   Ú
strict_audF©Ústrict)r3   r   Útotal_secondsÚstrr   r5   Ú_validate_required_claimsr   Únowr   ÚutcÚ	timestampÚ_validate_iatÚ_validate_nbfÚ_validate_expÚ_validate_issÚ_validate_audr7   )r   r;   r   rK   rL   rM   rj   s          r    rV   zPyJWT._validate_claimsà   s  € ô �fœiÔ(Ø×)Ñ)Ó+ˆFàÐ¬
°8¼cÄ8¸_Ô(MÜÐIÓJÐJà×&Ñ& w°Ô8ä�l‰lœhŸl™lÔ+×5Ñ5Ó7ˆà�GÑ ¨Ò 5Ø×Ñ˜w¨¨VÔ4à�GÑ ¨Ò 5Ø×Ñ˜w¨¨VÔ4à�GÑ ¨Ò 5Ø×Ñ˜w¨¨VÔ4à�<Ò Ø×Ñ˜w¨Ô/à�<Ò Ø×ÑØ˜¨'¯+©+°lÀEÓ*Jð õ ð !r"   c                óP   — |d   D ]  }|j                  |«      �Œt        |«      ‚ y )Nr*   )r7   r   )r   r;   r   Úclaims       r    ri   zPyJWT._validate_required_claims  s2   € ð
 ˜YÑ'ò 	7ˆEØ�{‰{˜5Ó!Ñ)Ü/°Ó6Ð6ñ	7r"   c                óx   — 	 t        |d   «      }|||z   kD  rt        d«      ‚y # t        $ r t        d«      ‚w xY w)Nr.   z)Issued At claim (iat) must be an integer.z The token is not yet valid (iat))Úintr^   r   r   )r   r;   rj   rM   r.   s        r    rm   zPyJWT._validate_iat  sT   € ð	TÜ�g˜e‘nÓ%ˆCð �#˜‘,ÒÜ(Ð)KÓLÐLð  øô ò 	TÜ&Ð'RÓSÐSð	Túó   ‚$ ¤9c                óx   — 	 t        |d   «      }|||z   kD  rt        d«      ‚y # t        $ r t        d«      ‚w xY w)Nr/   z*Not Before claim (nbf) must be an integer.z The token is not yet valid (nbf))ru   r^   r   r   )r   r;   rj   rM   r/   s        r    rn   zPyJWT._validate_nbf  sT   € ð	LÜ�g˜e‘nÓ%ˆCð �#˜‘,ÒÜ(Ð)KÓLÐLð  øô ò 	LÜÐJÓKÐKð	Lúrv   c                óx   — 	 t        |d   «      }|||z
  k  rt        d«      ‚y # t        $ r t        d«      ‚w xY w)Nr-   z/Expiration Time claim (exp) must be an integer.zSignature has expired)ru   r^   r   r   )r   r;   rj   rM   r-   s        r    ro   zPyJWT._validate_exp'  sT   € ð	QÜ�g˜e‘nÓ%ˆCð �3˜‘<Ò Ü'Ð(?Ó@Ð@ð !øô ò 	QÜÐOÓPÐPð	Qúrv   Fre   c               óò  ‡— |€d|vs|d   sy t        d«      ‚d|vs|d   st        d«      ‚|d   Š|rGt        |t        «      st        d«      ‚t        ‰t        «      st        d«      ‚|‰k7  rt        d«      ‚y t        ‰t        «      r‰gŠt        ‰t        «      st        d«      ‚t        d„ ‰D «       «      rt        d«      ‚t        |t        «      r|g}t        ˆfd„|D «       «      rt        d	«      ‚y )
NÚaudzInvalid audiencezInvalid audience (strict)z&Invalid claim format in token (strict)zAudience doesn't match (strict)zInvalid claim format in tokenc              3  ó>   K  — | ]  }t        |t        «       –— Œ y ­wr   )r3   rh   )Ú.0Úcs     r    ú	<genexpr>z&PyJWT._validate_aud.<locals>.<genexpr>^  s   è ø€ Ò?¨!”:˜a¤Ó%Ô%Ñ?ùs   ‚c              3  ó&   •K  — | ]  }|‰v–— Œ
 y ­wr   r+   )r|   rz   Úaudience_claimss     €r    r~   z&PyJWT._validate_aud.<locals>.<genexpr>d  s   øè ø€ Ò>¨cˆs˜/Ô)Ñ>ùs   ƒzAudience doesn't match)r   r   r3   rh   ÚlistÚanyÚall)r   r;   rK   rf   r€   s       @r    rq   zPyJWT._validate_aud5  s
  ø€ ð ÐØ˜GÑ#¨7°5ª>Øô 'Ð'9Ó:Ð:à˜Ñ w¨u¢~ô ,¨EÓ2Ð2à! %™.ˆñ ä˜h¬Ô,Ü*Ð+FÓGÐGô ˜o¬sÔ3Ü*Ð+SÓTÐTà˜?Ò*Ü*Ð+LÓMÐMàä�o¤sÔ+Ø.Ð/ˆOÜ˜/¬4Ô0Ü&Ð'FÓGÐGÜÑ?¨Ô?Ô?Ü&Ð'FÓGÐGä�h¤Ô$Ø �zˆHäÓ>°XÔ>Ô>Ü&Ð'?Ó@Ð@ð ?r"   c                ó”   — |€y d|vrt        d«      ‚t        |t        «      r|d   |vrt        d«      ‚y |d   |k7  rt        d«      ‚y )NÚisszInvalid issuer)r   r3   r�   r   )r   r;   rL   s      r    rp   zPyJWT._validate_issg  sc   € Øˆ>Øà˜ÑÜ+¨EÓ2Ð2ä�fœdÔ#Ø�u‰~ VÑ+Ü(Ð)9Ó:Ð:ð ,ð �u‰~ Ò'Ü(Ð)9Ó:Ð:ð (r"   r   )r   údict[str, Any] | NoneÚreturnÚNone)r‡   zdict[str, bool | list[str]])ÚHS256NNT)r;   údict[str, Any]r<   z AllowedPrivateKeys | str | bytesr=   z
str | Noner0   r†   r1   útype[json.JSONEncoder] | Noner2   Úboolr‡   rh   )NN)r;   rŠ   r0   r†   r1   r‹   r‡   Úbytes)Ú NNNNNNr   )rW   ústr | bytesr<   ú'AllowedPublicKeys | PyJWK | str | bytesrI   úlist[str] | Noner   r†   rX   úbool | NonerJ   úbytes | NonerK   ústr | Iterable[str] | NonerL   ústr | List[str] | NonerM   úfloat | timedeltarY   r
   r‡   rŠ   )rZ   rŠ   r‡   r
   )rW   r�   r<   r�   rI   r‘   r   r†   rX   r’   rJ   r“   rK   r”   rL   r•   rM   r–   rY   r
   r‡   r
   )NNr   )r;   rŠ   r   rŠ   rM   r–   r‡   rˆ   )r;   rŠ   r   rŠ   r‡   rˆ   )r;   rŠ   rj   ÚfloatrM   r—   r‡   rˆ   )r;   rŠ   rK   r”   rf   rŒ   r‡   rˆ   )r;   rŠ   rL   r
   r‡   rˆ   )Ú__name__Ú
__module__Ú__qualname__r!   Ústaticmethodr   r:   r9   rT   rU   ra   rV   ri   rm   rn   ro   rq   rp   r+   r"   r    r   r      s÷  „ ôRð
 ò	
ó ð	
ð !(Ø)-Ø6:Ø!ð$
àð$
ð .ð$
ð ð	$
ð
 'ð$
ð 4ð$
ð ð$
ð 
ó$
ðR *.Ø6:ð	àðð 'ðð 4ð	ð
 
óð* 8:Ø'+Ø)-à"à)-ð 04Ø)-Ø$%ðCàðCð 5ðCð %ð	Cð
 'ðCð ðCð 'ðCð -ðCð 'ðCð "ðCð  ð!Cð" 
ó#CóJð& 8:Ø'+Ø)-à"à)-ð 04Ø)-Ø$%ð$"àð$"ð 5ð$"ð %ð	$"ð
 'ð$"ð ð$"ð 'ð$"ð -ð$"ð 'ð$"ð "ð$"ð  ð!$"ð" 
ó#$"ðT ØØ$%ð!àð!ð  ð!ð "ð!ð 
ó!ðF7àð7ð  ð7ð 
ó	7ðMàðMð ðMð ð	Mð
 
óMðMàðMð ðMð ð	Mð
 
óMðAàðAð ðAð ð	Að
 
óAð& ñ0Aàð0Að -ð0Að
 ð0Að 
ó0Aôd;r"   r   )$Ú
__future__r   rE   rN   Úcalendarr   Úcollections.abcr   r   r   r   Útypingr	   r
   r   rŽ   r   Ú
exceptionsr   r   r   r   r   r   r   r   rI   r   r   Úapi_jwkr   r   Ú_jwt_global_objr:   rT   ra   r+   r"   r    ú<module>r£      sw   ðÝ "ã Û Ý Ý $ß 2Ñ 2ß +Ñ +å ÷÷ ñ õ -áßAÝ÷X;ñ X;ñv
 “'€Ø	×	Ñ	€Ø!×1Ñ1€Ø	×	Ñ	�r"   