ó
    tÇði°8  ã                  ó8  • S SK Jr  S SKrS SKrS SKJr  S SKJrJr  S SK	J	r	J
r
Jr  S SKJrJr  SSKJr  SS	KJrJrJrJrJrJrJrJrJr  SS
KJr  \(       a  SSKJrJr  SSKJ r    " S S5      r!\!" 5       r"\"RF                  r#\"RH                  r$\"RJ                  r%g)é    )ÚannotationsN)Útimegm)ÚIterableÚSequence)ÚdatetimeÚ	timedeltaÚtimezone)ÚTYPE_CHECKINGÚAnyé   )Úapi_jws)	ÚDecodeErrorÚExpiredSignatureErrorÚImmatureSignatureErrorÚInvalidAudienceErrorÚInvalidIssuedAtErrorÚInvalidIssuerErrorÚInvalidJTIErrorÚInvalidSubjectErrorÚMissingRequiredClaimError)ÚRemovedInPyjwt3Warning)ÚAllowedPrivateKeysÚAllowedPublicKeys)ÚPyJWKc                  óú  • \ rS rSrSSS jjr\SS j5       r    S             SS jjr  S       SS jjr         S                       SS jjr	SS jr
         S                       S S	 jjr    S!         S"S
 jjr      S#S jrSS$S jjrS$S jr        S%S jr        S%S jr        S%S jrSS.       S&S jjrS'S jrSrg)(ÚPyJWTé   Nc                ó@   • Uc  0 n0 U R                  5       EUEU l        g ©N)Ú_get_default_optionsÚoptions)Úselfr!   s     Ú-/usr/lib/python3/dist-packages/jwt/api_jwt.pyÚ__init__ÚPyJWT.__init__   s&   € Ø‰?ØˆGØ'Q¨$×*CÑ*CÓ*EÐ'QÈÐ'Qˆ�ó    c            
     ó   • SSSSSSSS/ S.	$ )NT)	Úverify_signatureÚ
verify_expÚ
verify_nbfÚ
verify_iatÚ
verify_audÚ
verify_issÚ
verify_subÚ
verify_jtiÚrequire© r1   r&   r#   r    ÚPyJWT._get_default_options#   s)   € ð !%ØØØØØØØØñ

ð 
	
r&   c           	     óN  • [        U[        5      (       d  [        S5      eUR                  5       nS HF  n[        UR	                  U5      [
        5      (       d  M)  [        X   R                  5       5      X'   MH     U R                  UUUS9n[        R                  " UUUUUUS9$ )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Ú	algorithmr7   r8   r9   Ú
time_claimÚjson_payloads	            r#   rA   ÚPyJWT.encode1   s®   € ô ˜'¤4×(Ñ(Üð,óð ð —,‘,“.ˆÛ/ˆJä˜'Ÿ+™+ jÓ1´8×<Ó<Ü&,¨WÑ-@×-MÑ-MÓ-OÓ&P�Ó#ñ 0ð
 ×+Ñ+ØØØ%ð ,ð 
ˆô �~Š~ØØØØØØ%ñ
ð 	
r&   c                óL   • [         R                  " USUS9R                  S5      $ )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ÚdumpsrA   )r"   rB   r7   r8   s       r#   r@   ÚPyJWT._encode_payloadW   s)   € ô �zŠzØØ!Øñ
÷ ‰&�‹/ð		r&   c           	     óÄ  • U(       a4  [         R                  " S[        UR                  5       5       3[        SS9  [        U=(       d    0 5      nUR                  SS5        Ub"  XTS   :w  a  [         R                  " S[        SS9  US   (       d~  UR                  SS	5        UR                  S
S	5        UR                  SS	5        UR                  SS	5        UR                  SS	5        UR                  SS	5        UR                  SS	5        [        R                  " UUUUUS9nU R                  U5      n0 U R                  EUEnU R                  UUUUU
U	S9  XÜS'   U$ )Nzypassing additional kwargs to decode_complete() is deprecated and will be removed in pyjwt version 3. Unsupported kwargs: é   ©Ú
stacklevelr(   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.)ÚcategoryrS   r)   Fr*   r+   r,   r-   r.   r/   )rC   Ú
algorithmsr!   Údetached_payload)ÚaudienceÚissuerÚleewayÚsubjectrB   )ÚwarningsÚwarnÚtupleÚkeysr   r;   Ú
setdefaultÚDeprecationWarningr   Údecode_completeÚ_decode_payloadr!   Ú_validate_claims)r"   ÚjwtrC   rU   r!   ÚverifyrV   rW   rX   rZ   rY   ÚkwargsÚdecodedrB   Úmerged_optionss                  r#   ra   ÚPyJWT.decode_completei   sw  € ö& Ü�MŠMð'ä',¨V¯[©[«]Ó';Ð&<ð>ô 'Øòô �w—} "Ó%ˆØ×ÑÐ-¨tÔ4ð
 Ñ &Ð4FÑ,GÓ"GÜ�MŠMðYô ,Øòð Ð)×*Ø×Ñ˜|¨UÔ3Ø×Ñ˜|¨UÔ3Ø×Ñ˜|¨UÔ3Ø×Ñ˜|¨UÔ3Ø×Ñ˜|¨UÔ3Ø×Ñ˜|¨UÔ3Ø×Ñ˜|¨UÔ3ä×)Ò)ØØØ!ØØ-ñ
ˆð ×&Ñ& wÓ/ˆà4˜DŸL™LÐ4¨GÐ4ˆØ×ÑØØØØØØð 	ñ 	
ð %�	ÑØˆr&   c                ó¼   •  [         R                  " US   5      n[	        U[
        5      (       d  [        S5      eU$ ! [         a  n[        SU 35      UeSnAff = f)zÙ
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.
rB   zInvalid payload string: Nz-Invalid payload string: must be a json object)rM   ÚloadsÚ
ValueErrorr   r:   r;   )r"   rg   rB   Úes       r#   rb   ÚPyJWT._decode_payload³   sd   € ð	EÜ—j’j ¨Ñ!3Ó4ˆGô ˜'¤4×(Ñ(ÜÐMÓNÐNØˆøô	 ó 	EÜÐ 8¸¸Ð<Ó=À1ÐDûð	Eús   ‚= ½
AÁAÁAc                ó²   • U(       a4  [         R                  " S[        UR                  5       5       3[        SS9  U R                  UUUUUUUUU	U
S9
nUS   $ )Nzppassing additional kwargs to decode() is deprecated and will be removed in pyjwt version 3. Unsupported kwargs: rQ   rR   )re   rV   rW   rZ   rX   rY   rB   )r[   r\   r]   r^   r   ra   )r"   rd   rC   rU   r!   re   rV   rW   rZ   rX   rY   rf   rg   s                r#   ÚdecodeÚPyJWT.decodeÃ   sx   € ö& Ü�MŠMð'ä',¨V¯[©[«]Ó';Ð&<ð>ô 'Øòð ×&Ñ&ØØØØØØ-ØØØØð 'ð 
ˆð �yÑ!Ð!r&   c                óæ  • [        U[        5      (       a  UR                  5       nUb&  [        U[        [        45      (       d  [        S5      eU R                  X5        [        R                  " [        R                  S9R                  5       nSU;   a  US   (       a  U R                  XU5        SU;   a  US   (       a  U R                  XU5        SU;   a  US   (       a  U R                  XU5        US	   (       a  U R                  X5        US
   (       a   U R!                  XUR#                  SS5      S9  US   (       a  U R%                  X5        US   (       a  U R'                  U5        g g )Nz+audience must be a string, iterable or None)Útzr5   r+   r6   r*   r4   r)   r-   r,   Ú
strict_audF©Ústrictr.   r/   )r:   r   Útotal_secondsÚstrr   r<   Ú_validate_required_claimsr   Únowr	   ÚutcÚ	timestampÚ_validate_iatÚ_validate_nbfÚ_validate_expÚ_validate_issÚ_validate_audr>   Ú_validate_subÚ_validate_jti)r"   rB   r!   rW   rX   rZ   rY   rz   s           r#   rc   ÚPyJWT._validate_claimsì   s;  € ô �fœi×(Ñ(Ø×)Ñ)Ó+ˆFàÑ¬
°8¼cÄ8¸_×(MÑ(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ð ñ ð �<× Ø×Ñ˜wÔ0à�<× Ø×Ñ˜wÕ'ð !r&   c                óV   • US    H   nUR                  U5      b  M  [        U5      e   g )Nr0   )r>   r   )r"   rB   r!   Úclaims       r#   ry   ÚPyJWT._validate_required_claims  s-   € ð
 ˜YÔ'ˆEØ�{‰{˜5Ó!Ó)Ü/°Ó6Ð6ò (r&   c                ó    • SU;  a  g[        US   [        5      (       d  [        S5      eUb!  UR                  S5      U:w  a  [        S5      egg)zÀ
Checks whether "sub" if in the payload is valid ot not.
This is an Optional claim

:param payload(dict): The payload which needs to be validated
:param subject(str): The subject of the token
ÚsubNzSubject must be a stringzInvalid subject)r:   rx   r   r>   )r"   rB   rZ   s      r#   r‚   ÚPyJWT._validate_sub  sY   € ð ˜ÓØä˜' %™.¬#×.Ñ.Ü%Ð&@ÓAÐAàÑØ�{‰{˜5Ó! WÓ,Ü)Ð*;Ó<Ð<ð -ð r&   c                óp   • SU;  a  g[        UR                  S5      [        5      (       d  [        S5      eg)z‘
Checks whether "jti" if in the payload is valid ot not
This is an Optional claim

:param payload(dict): The payload which needs to be validated
ÚjtiNzJWT ID must be a string)r:   r>   rx   r   )r"   rB   s     r#   rƒ   ÚPyJWT._validate_jti2  s6   € ð ˜ÓØä˜'Ÿ+™+ eÓ,¬c×2Ñ2Ü!Ð";Ó<Ð<ð 3r&   c                ó|   •  [        US   5      nXBU-   :”  a  [        S5      eg ! [         a    [        S5      S ef = f)Nr5   z)Issued At claim (iat) must be an integer.z The token is not yet valid (iat))Úintrl   r   r   )r"   rB   rz   rY   r5   s        r#   r}   ÚPyJWT._validate_iat@  sV   € ð	Ü�g˜e‘nÓ%ˆCð
 ˜‘,ÓÜ(Ð)KÓLÐLð  øô	 ó 	Ü&Ø;óàðð	úó   ‚$ ¤;c                ó|   •  [        US   5      nXBU-   :”  a  [        S5      eg ! [         a    [        S5      S ef = f)Nr6   z*Not Before claim (nbf) must be an integer.z The token is not yet valid (nbf))r�   rl   r   r   )r"   rB   rz   rY   r6   s        r#   r~   ÚPyJWT._validate_nbfO  sU   € ð	VÜ�g˜e‘nÓ%ˆCð ˜‘,ÓÜ(Ð)KÓLÐLð  øô ó 	VÜÐJÓKÐQUÐUð	Vúr‘   c                ó|   •  [        US   5      nXBU-
  ::  a  [        S5      eg ! [         a    [        S5      S ef = f)Nr4   z/Expiration Time claim (exp) must be an integer.zSignature has expired)r�   rl   r   r   )r"   rB   rz   rY   r4   s        r#   r   ÚPyJWT._validate_exp]  sV   € ð	Ü�g˜e‘nÓ%ˆCð ˜‘<Ó Ü'Ð(?Ó@Ð@ð !øô ó 	ÜØAóàðð	úr‘   Fru   c               ód  ^• Uc  SU;  d
  US   (       d  g [        S5      eSU;  d
  US   (       d  [        S5      eUS   mU(       aR  [        U[        5      (       d  [        S5      e[        T[        5      (       d  [        S5      eUT:w  a  [        S5      eg [        T[        5      (       a  T/m[        T[        5      (       d  [        S5      e[        S T 5       5      (       a  [        S5      e[        U[        5      (       a  U/n[        U4S jU 5       5      (       a  [        S	5      eg )
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  óL   #   • U  H  n[        U[        5      (       + v •  M     g 7fr   )r:   rx   )Ú.0Úcs     r#   Ú	<genexpr>Ú&PyJWT._validate_aud.<locals>.<genexpr>–  s   é € Ð?ª¨!”:˜a¤Ó%×%Ñ%ªùs   ‚"$c              3  ó,   >#   • U  H	  oT;  v •  M     g 7fr   r1   )r™   r—   Úaudience_claimss     €r#   r›   rœ   œ  s   øé € Ð>²X¨c˜/Ö)²Xùs   ƒzAudience doesn't match)r   r   r:   rx   ÚlistÚanyÚall)r"   rB   rW   rv   rž   s       @r#   r�   ÚPyJWT._validate_audm  s  ø€ ð ÑØ˜GÓ#¨7°5¯>Øô 'Ð'9Ó:Ð:à˜Ó w¨u§~ô ,¨EÓ2Ð2à! %™.ˆö ä˜h¬×,Ñ,Ü*Ð+FÓGÐGô ˜o¬s×3Ñ3Ü*Ð+SÓTÐTà˜?Ó*Ü*Ð+LÓMÐMàä�o¤s×+Ñ+Ø.Ð/ˆOÜ˜/¬4×0Ñ0Ü&Ð'FÓGÐGÜÑ?©Ó?×?Ñ?Ü&Ð'FÓGÐGä�h¤×$Ñ$Ø �zˆHäÔ>±XÓ>×>Ñ>Ü&Ð'?Ó@Ð@ð ?r&   c                óª   • Uc  g SU;  a  [        S5      e[        U[        5      (       a  US   U:w  a  [        S5      eg US   U;  a  [        S5      eg )NÚisszInvalid issuer)r   r:   rx   r   )r"   rB   rX   s      r#   r€   ÚPyJWT._validate_issŸ  sf   € Ø‰>Øà˜ÓÜ+¨EÓ2Ð2ä�fœc×"Ñ"Ø�u‰~ Ó'Ü(Ð)9Ó:Ð:ð (ð �u‰~ VÓ+Ü(Ð)9Ó:Ð:ð ,r&   )r!   r   )r!   údict[str, Any] | NoneÚreturnÚNone)r§   zdict[str, bool | list[str]])NNNT)rB   údict[str, Any]rC   z(AllowedPrivateKeys | PyJWK | str | bytesrD   ú
str | Noner7   r¦   r8   útype[json.JSONEncoder] | Noner9   Úboolr§   rx   )NN)rB   r©   r7   r¦   r8   r«   r§   Úbytes)	Ú NNNNNNNr   )rd   ústr | bytesrC   ú'AllowedPublicKeys | PyJWK | str | bytesrU   úSequence[str] | Noner!   r¦   re   úbool | NonerV   úbytes | NonerW   ústr | Iterable[str] | NonerX   ústr | Sequence[str] | NonerZ   rª   rY   úfloat | timedeltarf   r   r§   r©   )rg   r©   r§   r   )rd   r¯   rC   r°   rU   r±   r!   r¦   re   r²   rV   r³   rW   r´   rZ   rª   rX   rµ   rY   r¶   rf   r   r§   r   )NNNr   )
rB   r©   r!   r©   rZ   rª   rY   r¶   r§   r¨   )rB   r©   r!   r©   r§   r¨   )rB   r©   r§   r¨   )rB   r©   rz   ÚfloatrY   r·   r§   r¨   )rB   r©   rW   r´   rv   r¬   r§   r¨   )rB   r©   rX   r   r§   r¨   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r$   Ústaticmethodr    rA   r@   ra   rb   rp   rc   ry   r‚   rƒ   r}   r~   r   r�   r€   Ú__static_attributes__r1   r&   r#   r   r      s)  † öRð
 ó
ó ð
ð" !%Ø)-Ø6:Ø!ð$
àð$
ð 6ð$
ð ð	$
ð
 'ð$
ð 4ð$
ð ð$
ð 
õ$
ðR *.Ø6:ð	àðð 'ðð 4ð	ð
 
õð* 8:Ø+/Ø)-à"à)-ð 04Ø-1Ø"Ø$%ðHàðHð 5ðHð )ð	Hð
 'ðHð ðHð 'ðHð -ðHð +ðHð ðHð "ðHð" ð#Hð$ 
õ%HôTð& 8:Ø+/Ø)-à"à)-ð 04Ø"Ø-1Ø$%ð'"àð'"ð 5ð'"ð )ð	'"ð
 'ð'"ð ð'"ð 'ð'"ð -ð'"ð ð'"ð +ð'"ð "ð'"ð" ð#'"ð$ 
õ%'"ðZ ØØ"Ø$%ð((àð((ð  ð((ð ð((ð "ð((ð 
õ((ðT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   rM   r[   Úcalendarr   Úcollections.abcr   r   r   r   r	   Útypingr
   r   r®   r   Ú
exceptionsr   r   r   r   r   r   r   r   r   r   rU   r   r   Úapi_jwkr   r   Ú_jwt_global_objrA   ra   rp   r1   r&   r#   Ú<module>rÅ      st   ðÝ "ã Û Ý ß .ß 2Ñ 2ß %å ÷
÷ 
õ 
õ -æßAÝ÷N;ñ N;ñb “'€Ø	×	Ñ	€Ø!×1Ñ1€Ø	×	Ñ	�r&   