bg[+*ddlmZddlZddlZddlZddlmZmZddlm Z m Z m Z m Z ddl mZmZmZmZddlmZmZddlmZerdd lmZmZGd d ZeZejZejZejZejZejZejZej Z dS) ) annotationsN) TYPE_CHECKINGAny) Algorithmget_default_algorithms has_cryptorequires_cryptography) DecodeErrorInvalidAlgorithmErrorInvalidSignatureErrorInvalidTokenError)base64url_decodebase64url_encode)RemovedInPyjwt3Warning)AllowedPrivateKeysAllowedPublicKeysceZdZdZ d:d;d ZeddZd?dZ d@dZ dAdBd%Z dCdDd-Z dCdEd/Z dFd0ZdGd2Z dHdId6ZdJd7ZdKd9ZdS)LPyJWSJWTN algorithmslist[str] | Noneoptionsdict[str, Any] | NonereturnNonec6t|_|t|nt|j|_t |jD]}||jvr|j|=|i}i|||_dS)N)r _algorithmsset _valid_algslistkeys_get_default_optionsr)selfrrkeys B/opt/cloudlinux/venv/lib64/python3.11/site-packages/jwt/api_jws.py__init__zPyJWS.__init__s 233)5C OOO3t?O;P;P  (--//00 * *C$***$S) ?GA$3355AA dict[str, bool]c ddiS)Nverify_signatureTr,r(r&r#zPyJWS._get_default_options1s "D))r(alg_idstralg_objrc||jvrtdt|tst d||j|<|j|dS)zW Registers a new Algorithm for use when creating and verifying tokens. z Algorithm already has a handler.z!Object is not of type `Algorithm`N)r ValueError isinstancer TypeErrorr add)r$r-r/s r&register_algorithmzPyJWS.register_algorithm5sm T% % %?@@ @'9-- A?@@ @#*  V$$$$$r(cz||jvrtd|j|=|j|dS)z Unregisters an Algorithm for use when creating and verifying tokens Throws KeyError if algorithm is not registered. zJThe specified algorithm could not be removed because it is not registered.N)rKeyErrorr remove)r$r-s r&unregister_algorithmzPyJWS.unregister_algorithmBsS ) ) )1   V $ '''''r( list[str]c*t|jS)zM Returns a list of supported values for the 'alg' parameter. )r!r )r$s r&get_algorithmszPyJWS.get_algorithmsPsD$%%%r(alg_namec |j|S#t$r9}ts|tvrt d|d|t d|d}~wwxYw)z For a given string name, return the matching Algorithm object. Example usage: >>> jws_obj.get_algorithm_by_name("RS256") z Algorithm 'z9' could not be found. Do you have cryptography installed?Algorithm not supportedN)rr7r r NotImplementedError)r$r=es r&get_algorithm_by_namezPyJWS.get_algorithm_by_nameVs H#H- - H H H (.C"C"C)e(eee&&?@@a G  Hs  A4A  AHS256FTpayloadbytesr% AllowedPrivateKeys | str | bytes algorithm str | Noneheaders json_encodertype[json.JSONEncoder] | Noneis_payload_detachedbool sort_headerscdg}||nd} |r:|d} | r|d} |d} | durd}|j| d} |r*||| || ds| d=|rd| d<nd| vr| d=t j| d|| } |t| |r|}nt|}||d |}| | }| |}| ||}|t||rd |d <d |}| d S)Nnonealgb64FT)typrQrS),:) separatorscls sort_keys.r(rutf-8)get header_typ_validate_headersupdatejsondumpsencodeappendrjoinrB prepare_keysigndecode)r$rDr%rGrIrJrLrNsegments algorithm_ headers_alg headers_b64header json_header msg_payload signing_inputr/ signatureencoded_strings r&raz PyJWS.encodegs(1'<))&   +!++e,,K ,$U^ !++e,,Ke##&*#*.!L!L  #  " "7 + + + MM' " " "e} u  !F5MM f__u j z||   &((  (55666  4!KK*733K $$$ (++ ,,Z88!!#&&LL44 (33444  HQK8,,$$W---r(jwt str | bytesAllowedPublicKeys | str | bytesdetached_payload bytes | Nonedict[str, Any]c |r',V[[]]';';>>'     ?G4DL4G4)*<=  J n 59JJsOO1 ::eT " "e + +'!Z'G II}';';D!'D'DQ'G&QRRM  V  " "=&)S* U U U"   r(rc |r',V[[]]';';>>'     && j',/JJtQ,?,? )M>.;.A.A$.J.J +NOO > > >344# = > A*>::KK8>* A A A677S @ A DZ ,,FF D D D;;;<* B B B788c A B A(88II8>* A A A677S @ A ::sx2B B*B%%B*.B>>C)C$$C)-D D$ DD$ EF2FF FG1GGrnrkrocj |d}n#t$rtdwxYw|r|||vrtd ||}n"#t$r}td|d}~wwxYw||} ||| |st ddS)NrQzAlgorithm not specifiedz&The specified alg value is not allowedr?zSignature verification failed)r7r rBr@rdverifyr ) r$rnrkror%rrQr/rA prepared_keys r&r~zPyJWS._verify_signatures C-CC C C C'(ABB B C Rz-#Z2G2G'(PQQ Q J0055GG" J J J'(ABB I J**3// ~~m\9EE I'(GHH H I Is  %A A5 A00A5cHd|vr||ddSdS)Nkid) _validate_kid)r$rIs r&r]zPyJWS._validate_headers8s3 G     wu~ . . . . .  r(rcNt|tstddS)Nz(Key ID header parameter must be a string)r2r.r)r$rs r&rzPyJWS._validate_kid<s0#s## P#$NOO O P Pr()NN)rrrrrr)rr))r-r.r/rrr)r-r.rr)rr:)r=r.rr)rCNNFT)rDrEr%rFrGrHrIrrJrKrLrMrNrMrr.)rqNNN) rrrsr%rtrrrrrurvrrw) rrrsr%rtrrrrrurvrr)rrrsrrw)rrrsrr)rqN) rnrErkrwrorEr%rtrrrr)rIrwrr)rrrr)__name__ __module__ __qualname__r\r' staticmethodr#r5r9r<rBrarrfrr|r~r]rr,r(r&rrsJ(,)-BBBBB&***\* % % % % ( ( ( (&&&& HHHH*!()-6:$)!C.C.C.C.C.P02'+)-)- + + + + + `02'+)-)- """""*    $;$;$;$;V02'+ IIIII2////PPPPPPr(r)! __future__rrr_rytypingrrrrrr r exceptionsr r r rutilsrrrrrr_jws_global_objrarrfr5r9rBrr,r(r&rs"""""" %%%%%%%%  65555555,,,,,,BAAAAAAAAcPcPcPcPcPcPcPcPL %''  !1  $7&;'='=r(