§
    ó˜PcK'  ã                  ó  — d dl mZ d dlZd dl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mZmZ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  G d„ d¦  «        Z e¦   «         Zej         Z ej!        Z!ej"        Z"dS )é    )ÚannotationsN)Útimegm)ÚIterableÚMapping)ÚdatetimeÚ	timedeltaÚtimezone)ÚAnyÚDictÚListÚOptionalÚTypeÚUnioné   )Úapi_jws)ÚDecodeErrorÚExpiredSignatureErrorÚImmatureSignatureErrorÚInvalidAudienceErrorÚInvalidIssuedAtErrorÚInvalidIssuerErrorÚMissingRequiredClaimError)ÚRemovedInPyjwt3Warningc                  óž   — e Zd Zd*d„Zed+d„¦   «         Z	 	 	 d,d-d„Z	 	 	 	 	 	 	 	 d.d/d!„Z	 	 	 	 	 	 	 	 d.d/d"„Zd0d#„Z	d$„ Z
d%„ Zd&„ Zd'„ Zd(„ Zd)„ ZdS )1ÚPyJWTNc                óH   — |€i }i |                       ¦   «         ¥|¥| _        d S ©N)Ú_get_default_optionsÚoptions)Úselfr   s     ú-/usr/lib/python3/dist-packages/jwt/api_jwt.pyÚ__init__zPyJWT.__init__   s-   € Øˆ?ØˆGØA˜$×3Ò3Ñ5Ô5ÐA¸ÐAˆŒˆˆó    Úreturnú!Dict[str, Union[bool, List[str]]]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#   ÚHS256ÚpayloadúDict[str, Any]ÚkeyÚstrÚ	algorithmúOptional[str]ÚheadersúOptional[Dict[str, Any]]Újson_encoderú Optional[Type[json.JSONEncoder]]c                ó¤  — t          |t          ¦  «        st          d¦  «        ‚|                     ¦   «         }dD ]T}t          |                     |¦  «        t
          ¦  «        r*t          ||                              ¦   «         ¦  «        ||<   ŒUt          j	        |d|¬¦  «         
                    d¦  «        }t          j
        |||||¦  «        S )NzJExpecting a mapping object, as JWT only supports JSON objects as payloads.)ÚexpÚiatÚnbf)ú,ú:)Ú
separatorsÚclszutf-8)Ú
isinstancer   Ú	TypeErrorÚcopyÚgetr   r   ÚutctimetupleÚjsonÚdumpsÚencoder   )r    r0   r2   r4   r6   r8   Ú
time_claimÚjson_payloads           r!   rI   zPyJWT.encode)   sÕ   € õ ˜'¥7Ñ+Ô+ð 	Ýð,ñô ð ð —,’,‘.”.ˆØ/ð 	Qð 	QˆJå˜'Ÿ+š+ jÑ1Ô1µ8Ñ<Ô<ð QÝ&,¨W°ZÔ-@×-MÒ-MÑ-OÔ-OÑ&PÔ&P�˜
Ñ#øå”zØ 
°ð
ñ 
ô 
ç
Š&�‰/Œ/ð 	õ Œ~˜l¨C°¸GÀ\ÑRÔRÐRr#   Ú r   ÚjwtÚ
algorithmsúOptional[List[str]]r   ÚverifyúOptional[bool]Údetached_payloadúOptional[bytes]Úaudienceú#Optional[Union[str, Iterable[str]]]ÚissuerÚleewayúUnion[int, float, timedelta]c
                óŽ  — |
r<t          j        dt          |
                     ¦   «         ¦  «        › �t          ¦  «         t          |pi ¦  «        }|                     dd¦  «         |�'||d         k    rt          j        dt          ¬¦  «         |d         sn|                     dd¦  «         |                     dd¦  «         |                     d	d¦  «         |                     d
d¦  «         |                     dd¦  «         |d         r|st          d¦  «        ‚t          j
        |||||¬¦  «        }	 t          j        |d         ¦  «        }n$# t          $ r}t          d|› �¦  «        ‚d }~ww xY wt          |t
          ¦  «        st          d¦  «        ‚i | 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().)r2   rN   r   rR   r0   zInvalid payload string: z-Invalid payload string: must be a json object)rT   rV   rW   )ÚwarningsÚwarnÚtupleÚkeysr   ÚdictÚ
setdefaultÚDeprecationWarningr   r   Údecode_completerG   ÚloadsÚ
ValueErrorrB   r   Ú_validate_claims)r    rM   r2   rN   r   rP   rR   rT   rV   rW   ÚkwargsÚdecodedr0   ÚeÚmerged_optionss                  r!   rb   zPyJWT.decode_completeE   s:  € ð$ ð 	ÝŒMð>å',¨V¯[ª[©]¬]Ñ';Ô';ð>ð >õ 'ñ	ô ð õ �w�} "Ñ%Ô%ˆØ×ÒÐ-¨tÑ4Ô4Ð4ð
 Ð &¨GÐ4FÔ,GÒ"GÐ"GÝŒMðYõ ,ð	ñ ô ð ð Ð)Ô*ð 	4Ø×Ò˜|¨UÑ3Ô3Ð3Ø×Ò˜|¨UÑ3Ô3Ð3Ø×Ò˜|¨UÑ3Ô3Ð3Ø×Ò˜|¨UÑ3Ô3Ð3Ø×Ò˜|¨UÑ3Ô3Ð3àÐ%Ô&ð 	¨zð 	ÝØnñô ð õ Ô)ØØØ!ØØ-ð
ñ 
ô 
ˆð	>Ý”j ¨Ô!3Ñ4Ô4ˆGˆGøÝð 	>ð 	>ð 	>ÝÐ<¸Ð<Ð<Ñ=Ô=Ð=øøøøð	>øøøå˜'¥4Ñ(Ô(ð 	OÝÐMÑNÔNÐNà4˜DœLÐ4¨GÐ4ˆØ×ÒØ�^¨h¸vÈfð 	ñ 	
ô 	
ð 	
ð %ˆ�	ÑØˆs   Ä8E Å
E4ÅE/Å/E4c
                óÊ   — |
r<t          j        dt          |
                     ¦   «         ¦  «        › �t          ¦  «         |                      |||||||||	¬¦	  «	        }|d         S )Nzppassing additional kwargs to decode() is deprecated and will be removed in pyjwt version 3. Unsupported kwargs: )rP   rR   rT   rV   rW   r0   )r[   r\   r]   r^   r   rb   )r    rM   r2   rN   r   rP   rR   rT   rV   rW   rf   rg   s               r!   ÚdecodezPyJWT.decode�   s‹   € ð$ ð 	ÝŒMð>å',¨V¯[ª[©]¬]Ñ';Ô';ð>ð >õ 'ñ	ô ð ð ×&Ò&ØØØØØØ-ØØØð 'ñ 

ô 

ˆð �yÔ!Ð!r#   c                ó¨  — t          |t          ¦  «        r|                     ¦   «         }|�+t          |t          t          f¦  «        st          d¦  «        ‚|                      ||¦  «         t          t          j	        t          j        ¬¦  «                             ¦   «         ¦  «        }d|v r|d         r|                      |||¦  «         d|v r|d         r|                      |||¦  «         d|v r|d         r|                      |||¦  «         |d	         r|                      ||¦  «         |d
         r|                      ||¦  «         d S d S )Nz+audience must be a string, iterable or None)Útzr<   r*   r=   r)   r;   r(   r,   r+   )rB   r   Útotal_secondsr3   r   rC   Ú_validate_required_claimsr   r   Únowr	   ÚutcrF   Ú_validate_iatÚ_validate_nbfÚ_validate_expÚ_validate_issÚ_validate_aud)r    r0   r   rT   rV   rW   rp   s          r!   re   zPyJWT._validate_claimsµ   sh  € Ý�f�iÑ(Ô(ð 	,Ø×)Ò)Ñ+Ô+ˆFàÐ­
°8½cÅ8¸_Ñ(MÔ(MÐÝÐIÑJÔJÐJà×&Ò& w°Ñ8Ô8Ð8å•X”\¥X¤\Ð2Ñ2Ô2×?Ò?ÑAÔAÑBÔBˆà�GÐÐ ¨Ô 5ÐØ×Ò˜w¨¨VÑ4Ô4Ð4à�GÐÐ ¨Ô 5ÐØ×Ò˜w¨¨VÑ4Ô4Ð4à�GÐÐ ¨Ô 5ÐØ×Ò˜w¨¨VÑ4Ô4Ð4à�<Ô ð 	0Ø×Ò˜w¨Ñ/Ô/Ð/à�<Ô ð 	2Ø×Ò˜w¨Ñ1Ô1Ð1Ð1Ð1ð	2ð 	2r#   c                ód   — |d         D ]&}|                      |¦  «        €t          |¦  «        ‚Œ'd S )Nr-   )rE   r   )r    r0   r   Úclaims       r!   ro   zPyJWT._validate_required_claimsÏ   sE   € Ø˜YÔ'ð 	7ð 	7ˆEØ�{Š{˜5Ñ!Ô!Ð)Ý/°Ñ6Ô6Ð6ð *ð	7ð 	7r#   c                ó¢   — |d         }	 t          |¦  «         n# t          $ r t          d¦  «        ‚w xY w|||z   k    rt          d¦  «        ‚d S )Nr<   z)Issued At claim (iat) must be an integer.z The token is not yet valid (iat))Úintrd   r   r   )r    r0   rp   rW   r<   s        r!   rr   zPyJWT._validate_iatÔ   sr   € Ø�eŒnˆð	TÝ�‰HŒHˆHˆHøÝð 	Tð 	Tð 	TÝ&Ð'RÑSÔSÐSð	Tøøøà�#˜‘,ÒÐÝ(Ð)KÑLÔLÐLð  Ðs   Š š4c                óž   — 	 t          |d         ¦  «        }n# t          $ r t          d¦  «        ‚w xY w|||z   k    rt          d¦  «        ‚d S )Nr=   z*Not Before claim (nbf) must be an integer.z The token is not yet valid (nbf))rz   rd   r   r   )r    r0   rp   rW   r=   s        r!   rs   zPyJWT._validate_nbfÝ   sq   € ð	LÝ�g˜e”nÑ%Ô%ˆCˆCøÝð 	Lð 	Lð 	LÝÐJÑKÔKÐKð	Løøøð �#˜‘,ÒÐÝ(Ð)KÑLÔLÐLð  Ðó   ‚ ˜2c                óž   — 	 t          |d         ¦  «        }n# t          $ r t          d¦  «        ‚w xY w|||z
  k    rt          d¦  «        ‚d S )Nr;   z/Expiration Time claim (exp) must be an integer.zSignature has expired)rz   rd   r   r   )r    r0   rp   rW   r;   s        r!   rt   zPyJWT._validate_expæ   sq   € ð	TÝ�g˜e”nÑ%Ô%ˆCˆCøÝð 	Tð 	Tð 	TÝÐRÑSÔSÐSð	Tøøøð �3˜‘<Ò Ð Ý'Ð(?Ñ@Ô@Ð@ð !Ð r|   c                óØ  ‡— |€d|vs|d         sd S t          d¦  «        ‚d|vs|d         st          d¦  «        ‚|d         Š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¦  «        ‚d S )NÚaudzInvalid audiencezInvalid claim format in tokenc              3  óB   K  — | ]}t          |t          ¦  «         V — Œd S r   )rB   r3   )Ú.0Úcs     r!   ú	<genexpr>z&PyJWT._validate_aud.<locals>.<genexpr>  s/   è è € Ð?Ð?¨!•:˜a¥Ñ%Ô%Ð%Ð?Ð?Ð?Ð?Ð?Ð?r#   c              3  ó    •K  — | ]}|‰vV — Œ	d S r   r.   )r�   r   Úaudience_claimss     €r!   rƒ   z&PyJWT._validate_aud.<locals>.<genexpr>  s(   øè è € Ð>Ð>¨cˆs˜/Ð)Ð>Ð>Ð>Ð>Ð>Ð>r#   )r   r   rB   r3   ÚlistÚanyÚall)r    r0   rT   r…   s      @r!   rv   zPyJWT._validate_audï   s"  ø€ ØÐØ˜GÐ#Ð#¨7°5¬>Ð#Ø�õ 'Ð'9Ñ:Ô:Ð:à˜ÐÐ w¨u¤~Ðõ ,¨EÑ2Ô2Ð2à! %œ.ˆå�o¥sÑ+Ô+ð 	0Ø.Ð/ˆOÝ˜/­4Ñ0Ô0ð 	HÝ&Ð'FÑGÔGÐGÝÐ?Ð?¨Ð?Ñ?Ô?Ñ?Ô?ð 	HÝ&Ð'FÑGÔGÐGå�h¥Ñ$Ô$ð 	"Ø �zˆHåÐ>Ð>Ð>Ð>°XÐ>Ñ>Ô>Ñ>Ô>ð 	;Ý&Ð'9Ñ:Ô:Ð:ð	;ð 	;r#   c                ój   — |€d S d|vrt          d¦  «        ‚|d         |k    rt          d¦  «        ‚d S )NÚisszInvalid issuer)r   r   )r    r0   rV   s      r!   ru   zPyJWT._validate_iss  sK   € Øˆ>ØˆFà˜ÐÐÝ+¨EÑ2Ô2Ð2à�5Œ>˜VÒ#Ð#Ý$Ð%5Ñ6Ô6Ð6ð $Ð#r#   r   )r$   r%   )r/   NN)r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r$   r3   )rL   NNNNNNr   )rM   r3   r2   r3   rN   rO   r   r7   rP   rQ   rR   rS   rT   rU   rV   r5   rW   rX   r$   r1   )NNr   )Ú__name__Ú
__module__Ú__qualname__r"   Ústaticmethodr   rI   rb   rk   re   ro   rr   rs   rt   rv   ru   r.   r#   r!   r   r      s]  € € € € € ðBð Bð Bð Bð
 ð	
ð 	
ð 	
ñ „\ð	
ð $+Ø,0Ø9=ðSð Sð Sð Sð Sð> Ø*.Ø,0à!%à,0ð 9=Ø $Ø/0ðHð Hð Hð Hð HðZ Ø*.Ø,0à!%à,0ð 9=Ø $Ø/0ð$"ð $"ð $"ð $"ð $"ðL2ð 2ð 2ð 2ð47ð 7ð 7ð
Mð Mð MðMð Mð MðAð Að Að;ð ;ð ;ð87ð 7ð 7ð 7ð 7r#   r   )#Ú
__future__r   rG   r[   Úcalendarr   Úcollections.abcr   r   r   r   r	   Útypingr
   r   r   r   r   r   rL   r   Ú
exceptionsr   r   r   r   r   r   r   r   r   Ú_jwt_global_objrI   rb   rk   r.   r#   r!   ú<module>r•      s{  ðØ "Ð "Ð "Ð "Ð "Ð "à €€€Ø €€€Ø Ð Ð Ð Ð Ð Ø -Ð -Ð -Ð -Ð -Ð -Ð -Ð -Ø 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2Ø 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9à Ð Ð Ð Ð Ð ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð -Ð ,Ð ,Ð ,Ð ,Ð ,ð|7ð |7ð |7ð |7ð |7ñ |7ô |7ð |7ð~ �%‘'”'€Ø	Ô	€Ø!Ô1€Ø	Ô	€€€r#   