bg^1ddlmZddlZddlZddlmZddlmZddlmZm Z m Z ddl m Z m Z ddlmZdd lmZmZmZmZmZmZmZdd lmZe rdd lmZmZGd d ZeZejZejZej Z dS)) annotationsN)timegm)Iterable)datetime timedeltatimezone) TYPE_CHECKINGAny)api_jws) DecodeErrorExpiredSignatureErrorImmatureSignatureErrorInvalidAudienceErrorInvalidIssuedAtErrorInvalidIssuerErrorMissingRequiredClaimError)RemovedInPyjwt3Warning)AllowedPrivateKeysAllowedPublicKeysceZdZddZ d?d@dZ dAdBdZ dCdDd,ZdEd.Z dCdFd/Z dGdHd0Z dId1Z dJd4Z dJd5ZdJd6Zd7d8dKd:ZdLd;ZdS)MPyJWTNoptionsdict[str, Any] | NonereturnNonecH|i}i|||_dSN)_get_default_optionsr)selfrs B/opt/cloudlinux/venv/lib64/python3.11/site-packages/jwt/api_jwt.py__init__zPyJWT.__init__s- ?G'Q$*C*C*E*E'Q'Q dict[str, bool | list[str]]cddddddgdS)NT)verify_signature verify_exp verify_nbf verify_iat verify_aud verify_issrequirer-r#r!rzPyJWT._get_default_options s(!%   r#HS256Tpayloaddict[str, Any]key AllowedPrivateKeys | str | bytes algorithm str | Noneheaders json_encodertype[json.JSONEncoder] | None sort_headersboolstrct|tstd|}dD]T}t||t r*t ||||<U||||}tj ||||||S)NzGExpecting a dict object, as JWT only supports JSON objects as payloads.)expiatnbf)r5r6)r8) isinstancedict TypeErrorcopygetrr utctimetuple_encode_payloadr encode) r r/r1r3r5r6r8 time_claim json_payloads r!rFz PyJWT.encode,s'4(( ,  ,,../ Q QJ'++j118<< Q&,WZ-@-M-M-O-O&P&P #++ %,  ~     %     r#bytescVtj|d|dS)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. ),:) separatorsclszutf-8)jsondumpsrF)r r/r5r6s r!rEzPyJWT._encode_payloadRs3z !    &//  r#rjwt str | bytesAllowedPublicKeys | str | bytes algorithmslist[str] | Noneverify bool | Nonedetached_payload bytes | Noneaudiencestr | Iterable[str] | Noneissuerleewayfloat | timedeltakwargsr c  | r',V[[]]';';>>'     w}"%%-t444  &G4F,G"G"G MY,     )* 4   |U 3 3 3   |U 3 3 3   |U 3 3 3   |U 3 3 3   |U 3 3 3 % & z n ) !-    &&w//4DL4G4  ^hvf    % r#rlc tj|d}n$#t$r}td|d}~wwxYwt |t std|S)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/zInvalid payload string: Nz-Invalid payload string: must be a json object)rOloads ValueErrorr r?r@)r rlr/es r!rjzPyJWT._decode_payloadsz >j!344GG > > ><<<== = >'4(( OMNN Ns >9>c | r',V[[]]';';>>'     &&    -'   y!!r#ct|tr|}|+t|ttfst d|||tjtj  }d|vr|dr| |||d|vr|dr| |||d|vr|dr|||||d r||||d r.||||d d  dSdS)Nz+audience must be a string, iterable or None)tzr=r)r>r(r<r'r+r* strict_audFstrict)r?r total_secondsr:rrA_validate_required_claimsrnowrutc timestamp _validate_iat _validate_nbf _validate_exp _validate_iss _validate_audrC)r r/rr[r]r^r{s r!rkzPyJWT._validate_claimss fi ( ( ,))++F   8c8_(M(M IJJ J &&w888lhl+++5577 G   5    wV 4 4 4 G   5    wV 4 4 4 G   5    wV 4 4 4 <  0   w / / / <     '++lE*J*J        r#cd|dD]&}||t|'dS)Nr,)rCr)r r/rclaims r!rzzPyJWT._validate_required_claimssG Y' 7 7E{{5!!)/666* 7 7r#r{floatc t|d}n#t$rtdwxYw|||zkrtddS)Nr=z)Issued At claim (iat) must be an integer.z The token is not yet valid (iat))intrprr)r r/r{r^r=s r!r~zPyJWT._validate_iat so  Tgen%%CC T T T&'RSS S T #,  ()KLL L 2c t|d}n#t$rtdwxYw|||zkrtddS)Nr>z*Not Before claim (nbf) must be an integer.z The token is not yet valid (nbf))rrpr r)r r/r{r^r>s r!rzPyJWT._validate_nbfsq  Lgen%%CC L L LJKK K L #,  ()KLL L rc t|d}n#t$rtdwxYw|||z krtddS)Nr<z/Expiration Time claim (exp) must be an integer.zSignature has expired)rrpr r)r r/r{r^r<s r!rzPyJWT._validate_exp&sq  Tgen%%CC T T TRSS S T 3< '(?@@ @ ! rFrwrxc|d|vs|dsdStdd|vs|dstd|d|r_t|tstdttstd|krtddSttrgttstdt dDrtdt|tr|g}t fd|Drtd dS) NaudzInvalid audiencezInvalid audience (strict)z&Invalid claim format in token (strict)zAudience doesn't match (strict)zInvalid claim format in tokenc3BK|]}t|t VdSr)r?r:).0cs r! z&PyJWT._validate_aud..]s/??!:a%%%??????r#c3 K|]}|vV dSrr-)rraudience_claimss r!rz&PyJWT._validate_aud..cs(>>cs/)>>>>>>r#zAudience doesn't match)rrr?r:listanyall)r r/r[rxrs @r!rzPyJWT._validate_aud4s  G##75>#''9:: :   wu~ ,E22 2!%.  h,, H*+FGGGos33 U*+STTT?***+LMMM F os + + 0./O/400 H&'FGG G ????? ? ? H&'FGG G h $ $ " zH >>>>X>>> > > A&'?@@ @ A Ar#cj|dSd|vrtd|d|krtddS)NisszInvalid issuer)rr)r r/r]s r!rzPyJWT._validate_issfsK > F   +E22 2 5>V # #$%566 6 $ #r#r)rrrr)rr$)r.NNT)r/r0r1r2r3r4r5rr6r7r8r9rr:)NN)r/r0r5rr6r7rrI)rQNNNNNNr)rRrSr1rTrUrVrrrWrXrYrZr[r\r]r4r^r_r`r rr0)rlr0rr )rRrSr1rTrUrVrrrWrXrYrZr[r\r]r4r^r_r`r rr )NNr)r/r0rr0r^r_rr)r/r0rr0rr)r/r0r{rr^rrr)r/r0r[r\rxr9rr)r/r0r]r rr)__name__ __module__ __qualname__r" staticmethodrrFrErirjrsrkrzr~rrrrr-r#r!rrsRRRRR     \  !()-6:!$ $ $ $ $ R*.6: *02'+)-")-04!$%CCCCCJ&02'+)-")-04!$%$"$"$"$"$"T$% !!!!!F7777 M M M M M M M M A A A A& 0A0A0A0A0A0Ad777777r#r)! __future__rrOrccalendarrcollections.abcrrrrtypingr r rQr exceptionsr rrrrrrrrUrrr_jwt_global_objrFrirsr-r#r!rs~"""""" $$$$$$2222222222%%%%%%%%-,,,,,BAAAAAAAAT7T7T7T7T7T7T7T7n %''  !1  r#