PcK'ddlmZddlZddlZddlmZddlmZmZddl m Z m Z m Z ddl m Z mZmZmZmZmZddlmZdd lmZmZmZmZmZmZmZdd lmZGd d ZeZej Z ej!Z!ej"Z"dS) ) annotationsN)timegm)IterableMapping)datetime timedeltatimezone)AnyDictListOptionalTypeUnion)api_jws) DecodeErrorExpiredSignatureErrorImmatureSignatureErrorInvalidAudienceErrorInvalidIssuedAtErrorInvalidIssuerErrorMissingRequiredClaimError)RemovedInPyjwt3WarningceZdZd*dZed+dZ d,d-dZ d.d/d!Z d.d/d"Zd0d#Z d$Z d%Z d&Z d'Z d(Zd)ZdS)1PyJWTNcH|i}i|||_dSN)_get_default_optionsoptions)selfrs -/usr/lib/python3/dist-packages/jwt/api_jwt.py__init__zPyJWT.__init__s- ?GA$3355AA return!Dict[str, Union[bool, List[str]]]cddddddgdS)NT)verify_signature verify_exp verify_nbf verify_iat verify_aud verify_issrequirer.r#r!rzPyJWT._get_default_optionss(!%   r#HS256payloadDict[str, Any]keystr algorithm Optional[str]headersOptional[Dict[str, Any]] json_encoder Optional[Type[json.JSONEncoder]]ct|tstd|}dD]T}t||t r*t ||||<Utj |d| d}tj |||||S)NzJExpecting a mapping object, as JWT only supports JSON objects as payloads.)expiatnbf),:) separatorsclszutf-8) isinstancer TypeErrorcopygetrr utctimetuplejsondumpsencoder)r r0r2r4r6r8 time_claim json_payloads r!rIz PyJWT.encode)s'7++ ,  ,,../ Q QJ'++j118<< Q&,WZ-@-M-M-O-O&P&P #z     &// ~lCG\RRRr#rjwt algorithmsOptional[List[str]]rverifyOptional[bool]detached_payloadOptional[bytes]audience#Optional[Union[str, Iterable[str]]]issuerleewayUnion[int, float, timedelta]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 ) !-     >j!344GG > > ><<<== = >'4(( OMNN N4DL4G4  ^hvf    % s8E E4E//E4c | r',V[[]]';';>>'     &&    -'   y!!r#ct|tr|}|+t|ttfst d|||ttj tj  }d|vr|dr| |||d|vr|dr||||d|vr|dr|||||d r||||d r|||dSdS) Nz+audience must be a string, iterable or None)tzr<r*r=r)r;r(r,r+)rBr total_secondsr3rrC_validate_required_claimsrrnowr utcrF _validate_iat _validate_nbf _validate_exp _validate_iss _validate_aud)r r0rrTrVrWrps r!rezPyJWT._validate_claimssh fi ( ( ,))++F   8c8_(M(M IJJ J &&w888X\X\222??AABB G   5    wV 4 4 4 G   5    wV 4 4 4 G   5    wV 4 4 4 <  0   w / / / <  2   w 1 1 1 1 1 2 2r#cd|dD]&}||t|'dS)Nr-)rEr)r r0rclaims r!rozPyJWT._validate_required_claimssEY' 7 7E{{5!!)/666* 7 7r#c|d} t|n#t$rtdwxYw|||zkrtddS)Nr<z)Issued At claim (iat) must be an integer.z The token is not yet valid (iat))intrdrr)r r0rprWr<s r!rrzPyJWT._validate_iatsren T HHHH T T T&'RSS S T #,  ()KLL L s4c t|d}n#t$rtdwxYw|||zkrtddS)Nr=z*Not Before claim (nbf) must be an integer.z The token is not yet valid (nbf))rzrdrr)r r0rprWr=s r!rszPyJWT._validate_nbfsq Lgen%%CC L L LJKK K L #,  ()KLL L 2c t|d}n#t$rtdwxYw|||z krtddS)Nr;z/Expiration Time claim (exp) must be an integer.zSignature has expired)rzrdrr)r r0rprWr;s r!rtzPyJWT._validate_expsq Tgen%%CC T T TRSS S T 3< '(?@@ @ ! r|c|d|vs|dsdStdd|vs|dstd|dttrgttstdt dDrtdt|tr|g}t fd|DrtddS)NaudzInvalid audiencezInvalid claim format in tokenc3BK|]}t|t VdSr)rBr3).0cs r! z&PyJWT._validate_aud..s/??!:a%%%??????r#c3 K|]}|vV dSrr.)rraudience_claimss r!rz&PyJWT._validate_aud..s(>>cs/)>>>>>>r#)rrrBr3listanyall)r r0rTrs @r!rvzPyJWT._validate_auds"  G##75>#''9:: :   wu~ ,E22 2!%. os + + 0./O/400 H&'FGG G ????? ? ? H&'FGG G h $ $ " zH >>>>X>>> > > ;&'9:: : ; ;r#cj|dSd|vrtd|d|krtddS)NisszInvalid issuer)rr)r r0rVs r!ruzPyJWT._validate_iss sK > F   +E22 2 5>V # #$%566 6 $ #r#r)r$r%)r/NN) r0r1r2r3r4r5r6r7r8r9r$r3)rLNNNNNNr)rMr3r2r3rNrOrr7rPrQrRrSrTrUrVr5rWrXr$r1)NNr)__name__ __module__ __qualname__r" staticmethodrrIrbrkrerorrrsrtrvrur.r#r!rrs]BBBB     \  $+,09= SSSSS>*.,0!%,09= $/0HHHHHZ*.,0!%,09= $/0$"$"$"$"$"L22224777 MMMMMMAAA;;;877777r#r)# __future__rrGr[calendarrcollections.abcrrrrr typingr r r r rrrLr exceptionsrrrrrrrrr_jwt_global_objrIrbrkr.r#r!rs{"""""" --------22222222229999999999999999-,,,,,|7|7|7|7|7|7|7|7~%''  !1  r#