
    #	h8                    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     =/var/www/html/env/lib/python3.13/site-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18<<&,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)     zz!
 &/		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  XS'   U$ )Nzypassing additional kwargs to decode_complete() is deprecated and will be removed in pyjwt version 3. Unsupported kwargs:    
stacklevelr(   TzThe `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   & MM'',V[[]';&<> ' w}"%-t4
 &4F,G"GMMY , )*|U3|U3|U3|U3|U3|U3|U3))!-
 &&w/4DLL4G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jj!34G '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    & MM'',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;    fi(())+F
8c8_(M(MIJJ&&w8llhll+557G 5wV4G 5wV4G 5wV4< w/< '++lE*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    	gen%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gen%C ,()KLL    	VJKQU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    	gen%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     >Xc/)Xs   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#75> ''9::wu~ ,E22!%. h,,*+FGG os33*+STT?**+LMMos++./O/400&'FGG????&'FGGh$$ zH>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fc""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&   