+
    ïHÐj�;  ã                  óˆ  € ^ RI Ht ^ RIt^ RIt^ RIt^ RIHt ^ RIHtH	t	 ^RI
HtHtHtHt ^RIHt ^RIHtHtHtHt ^RIHtHt ^R	IHt ]'       d	   ^R
I
HtHt  ! R R4      t]! 4       t]P<                  t]P>                  t]P@                  t ]PB                  t!]PD                  t"]PF                  t#]PH                  t$R# )é    )ÚannotationsN)ÚSequence)ÚTYPE_CHECKINGÚAny)Ú	AlgorithmÚget_default_algorithmsÚ
has_cryptoÚrequires_cryptography)ÚPyJWK)ÚDecodeErrorÚInvalidAlgorithmErrorÚInvalidSignatureErrorÚInvalidTokenError)Úbase64url_decodeÚbase64url_encode)ÚRemovedInPyjwt3Warning)ÚAllowedPrivateKeysÚAllowedPublicKeysc                  ó  € ] tR t^t$ RtR'R R llt]R R l4       tR R ltR	 R
 lt	R R lt
R R ltR(R R lltR)R R lltR)R R lltR R ltR R ltR*R R lltR0tR]R&   RR/R  R! lltR" R# ltR$ R% ltR&tR# )+ÚPyJWSÚJWTNc               ó$   € V ^8„  d   QhRRRRRR/# )é   Ú
algorithmsúSequence[str] | NoneÚoptionsúdict[str, Any] | NoneÚreturnÚNone© )Úformats   "Ú-/usr/lib/python3/dist-packages/jwt/api_jws.pyÚ__annotate__ÚPyJWS.__annotate__    s-   € ÷ Bñ Bà(ðBð 'ðBð 
ñ	Bó    c                	óF  € \        4       V n        Ve   \        V4      M\        V P                  4      V n        \	        V P                  P                  4       4       F"  pW0P                  9  g   K  V P                  V K$  	  Vf   / p/ V P                  4       CVCV n        R # )N)r   Ú_algorithmsÚsetÚ_valid_algsÚlistÚkeysÚ_get_default_optionsr   )Úselfr   r   Úkeys   &&& r"   Ú__init__ÚPyJWS.__init__    s�   € ô
 2Ó3ˆÔà)Ò5ŒC�
ŒO¼3¸t×?OÑ?OÓ;Pð 	Ôô
 ˜×(Ñ(×-Ñ-Ó/Ö0ˆCØ×*Ñ*Ö*Ø×$Ñ$ SÒ)ñ 1ð Š?ØˆGØA˜$×3Ñ3Ó5ÐA¸ÐAˆŽr%   c               ó   € V ^8„  d   QhRR/# )r   r   zdict[str, bool]r    )r!   s   "r"   r#   r$   4   s   € ÷ *ñ * /ñ *r%   c                 	ó
   € R R/# )Úverify_signatureTr    r    r%   r"   r,   ÚPyJWS._get_default_options3   s   € à" DÐ)Ð)r%   c               ó$   € V ^8„  d   QhRRRRRR/# )r   Úalg_idÚstrÚalg_objr   r   r   r    )r!   s   "r"   r#   r$   7   s!   € ÷ %ñ %¨ð %°yð %ÀTñ %r%   c                óÐ   € WP                   9   d   \        R4      h\        V\        4      '       g   \	        R4      hW P                   V&   V P
                  P                  V4       R# )zG
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-   r6   r8   s   &&&r"   Úregister_algorithmÚPyJWS.register_algorithm7   sW   € ð ×%Ñ%Ô%ÜÐ?Ó@Ð@ä˜'¤9×-Ò-ÜÐ?Ó@Ð@à#*×Ñ˜Ñ Ø×Ñ×Ñ˜VÖ$r%   c               ó    € V ^8„  d   QhRRRR/# )r   r6   r7   r   r   r    )r!   s   "r"   r#   r$   D   s   € ÷ (ñ (¨3ð (°4ñ (r%   c                óŒ   € WP                   9  d   \        R4      hV P                   V V P                  P                  V4       R# )zu
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)r'   ÚKeyErrorr)   Úremove)r-   r6   s   &&r"   Úunregister_algorithmÚPyJWS.unregister_algorithmD   sF   € ð
 ×)Ñ)Ô)Üð1óð ð
 ×Ñ˜VÐ$Ø×Ñ×Ñ Ö'r%   c               ó   € V ^8„  d   QhRR/# )r   r   z	list[str]r    )r!   s   "r"   r#   r$   R   s   € ÷ &ñ & 	ñ &r%   c                ó,   € \        V P                  4      # )z=
Returns a list of supported values for the 'alg' parameter.
)r*   r)   )r-   s   &r"   Úget_algorithmsÚPyJWS.get_algorithmsR   s   € ô �D×$Ñ$Ó%Ð%r%   c               ó    € V ^8„  d   QhRRRR/# )r   Úalg_namer7   r   r   r    )r!   s   "r"   r#   r$   X   s   € ÷ Hñ H¨cð H°iñ Hr%   c                ó¶   €  V P                   V,          #   \         d9   p\        '       g   T\        9   d   \	        RT R24      Th\	        R4      ThRp?ii ; i)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)r'   rB   r	   r
   ÚNotImplementedError)r-   rK   Úes   && r"   Úget_algorithm_by_nameÚPyJWS.get_algorithm_by_nameX   se   € ð	HØ×#Ñ# HÕ-Ð-øÜô 	Hß“: (Ô.CÔ"CÜ)Ø! ( Ð+dÐeóàðô &Ð&?Ó@ÀaÐGûð	Hús   ‚ •A 3AÁAFc               ó8   € V ^8„  d   QhRRRRRRRRR	R
RRRRRR/# )r   ÚpayloadÚbytesr.   z(AllowedPrivateKeys | PyJWK | str | bytesÚ	algorithmz
str | NoneÚheadersr   Újson_encoderztype[json.JSONEncoder] | NoneÚis_payload_detachedÚboolÚsort_headersr   r7   r    )r!   s   "r"   r#   r$   i   sd   € ÷ V.ñ V.àðV.ð 6ðV.ð ð	V.ð
 'ðV.ð 4ðV.ð "ðV.ð ðV.ð 
ñV.r%   c                	óf  € . pVf'   \        V\        4      '       d   VP                  p	MRp	MTp	V'       d<   VP                  R4      p
V
'       d
   VR,          p	VP                  R4      pVRJ d   RpRV P                  RV	/pV'       d%   V P                  VRR7       VP                  V4       VR,          '       g   VR V'       dJ   RVR&   VP                  R. 4      p\        V\        4      '       g   \        R	4      hRV9  d
   . VORNVR&   M
RV9   d   VR \        P                  ! VRWWR
7      P                  4       pVP                  \        V4      4       V'       d   TpM\        V4      pVP                  V4       RP                  V4      pV P                  V	4      p\        V\        4      '       d   VP                   pVP#                  V4      pVP%                  VV4      pVP                  \        V4      4       V'       d   RV^&   RP                  V4      pVP'                  R4      # )NÚHS256ÚalgÚb64FTÚtyp)ÚencodingÚcritz%Invalid 'crit' header: must be a list)Ú
separatorsÚclsÚ	sort_keysó   .r%   úutf-8)Ú,Ú:)r;   r   Úalgorithm_nameÚgetÚ
header_typÚ_validate_headersÚupdater*   r   ÚjsonÚdumpsÚencodeÚappendr   ÚjoinrP   r.   Úprepare_keyÚsignÚdecode)r-   rS   r.   rU   rV   rW   rX   rZ   ÚsegmentsÚ
algorithm_Úheaders_algÚheaders_b64ÚheaderÚexisting_critÚjson_headerÚmsg_payloadÚsigning_inputr8   Ú	signatureÚencoded_strings   &&&&&&&&            r"   rp   ÚPyJWS.encodei   s  € ð ˆð ÒÜ˜#œu×%Ò%Ø ×/Ñ/‘
à$‘
à"ˆJ÷ Ø!Ÿ+™+ eÓ,ˆKßØ$ U�^�
à!Ÿ+™+ eÓ,ˆKØ˜eÓ#Ø&*Ð#ð #(¨¯©¸%ÀÐ!LˆçØ×"Ñ" 7°TÐ"Ô:Ø�M‰M˜'Ô"à�e�}Œ}Ø�u�çØ!ˆF�5‰Mð
 #ŸJ™J v¨rÓ2ˆMÜ˜m¬T×2Ò2Ü'Ø;óð ð ˜MÔ)Ø!8 =Ð!8°%Ð!8��v‘øØ�fŒ_à�u�ä—j’jØ˜z¨|ô
ç
‰&‹(ð 	ð 	�‰Ô(¨Ó5Ô6çØ!‰Kä*¨7Ó3ˆKØ�‰˜Ô$ð Ÿ	™	 (Ó+ˆà×,Ñ,¨ZÓ8ˆÜ�cœ5×!Ò!Ø—'‘'ˆCØ×!Ñ! #Ó&ˆØ—L‘L °Ó4ˆ	à�‰Ô(¨Ó3Ô4÷ ØˆH�Q‰KØŸ™ 8Ó,ˆà×$Ñ$ WÓ-Ð-r%   c               ó0   € V ^8„  d   QhRRRRRRRRR	R
RR/# )r   Újwtústr | bytesr.   ú'AllowedPublicKeys | PyJWK | str | bytesr   r   r   r   Údetached_payloadúbytes | Noner   údict[str, Any]r    )r!   s   "r"   r#   r$   Á   sF   € ÷ =
ñ =
àð=
ð 5ð=
ð )ð	=
ð
 'ð=
ð 'ð=
ð 
ñ=
r%   c                	óÜ  € V'       d8   \         P                  ! R \        VP                  4       4       2\        ^R7       Vf   / p/ V P
                  CVCpVR,          pV'       d*   V'       g"   \        V\        4      '       g   \        R4      hV P                  V4      w  ršr¼V P                  V4       VP                  RR4      RJ d   VP                  R4      ;'       g    . p\        V\        4      '       d   RV9  d   \        R4      hVf   \        R	4      hTp	R
P                  V
P                  R
^4      ^ ,          V	.4      p
V'       d   V P!                  V
VVVV4       RV	RVRV/# )zypassing additional kwargs to decode_complete() is deprecated and will be removed in pyjwt version 3. Unsupported kwargs: ©Ú
stacklevelr3   z\It is required that you pass in a value for the "algorithms" argument when calling decode().r^   TFra   zAThe 'b64' header parameter requires 'b64' to be listed in 'crit'.zƒIt is required that you pass in a value for the "detached_payload" argument to decode a message having the b64 header set to false.re   rS   rz   r   )ÚwarningsÚwarnÚtupler+   r   r   r;   r   r   Ú_loadrl   rj   r*   r   rr   ÚrsplitÚ_verify_signature)r-   rƒ   r.   r   r   r†   ÚkwargsÚmerged_optionsr3   rS   r~   rz   r   ra   s   &&&&&&,       r"   Údecode_completeÚPyJWS.decode_completeÁ   sw  € ÷ Ü�MŠMð'ä',¨V¯[©[«]Ó';Ð&<ð>ô 'Øõð Š?ØˆGØ4˜DŸL™LÐ4¨GÐ4ˆØ)Ð*<Õ=Ðç§J´zÀ#Äu×7MÒ7MÜØnóð ð 59·J±J¸s³OÑ1ˆ à×Ñ˜vÔ&à�:‰:�e˜TÓ" eÓ+ð —:‘:˜fÓ%×+Ð+¨ˆDÜ˜d¤D×)Ò)¨U¸$Ô->Ü'ð(óð ð  Ò'Ü!ð Zóð ð 'ˆGØ ŸI™I }×';Ñ';¸DÀ!Ó'DÀQÕ'GÈÐ&QÓRˆMçØ×"Ñ"ØØØØØôð �wØ�fØ˜ð
ð 	
r%   c               ó0   € V ^8„  d   QhRRRRRRRRR	R
RR/# )r   rƒ   r„   r.   r…   r   r   r   r   r†   r‡   r   r   r    )r!   s   "r"   r#   r$      sF   € ÷ "ñ "àð"ð 5ð"ð )ð	"ð
 'ð"ð 'ð"ð 
ñ"r%   c                	óº   € V'       d8   \         P                  ! R \        VP                  4       4       2\        ^R7       V P                  WW4VR7      pVR,          # )zppassing additional kwargs to decode() is deprecated and will be removed in pyjwt version 3. Unsupported kwargs: rŠ   )r†   rS   )rŒ   r�   rŽ   r+   r   r”   )r-   rƒ   r.   r   r   r†   r’   Údecodeds   &&&&&&, r"   ru   ÚPyJWS.decode   sb   € ÷ Ü�MŠMð'ä',¨V¯[©[«]Ó';Ð&<ð>ô 'Øõð ×&Ñ&Ø�jÐ<Lð 'ó 
ˆð �yÕ!Ð!r%   c               ó    € V ^8„  d   QhRRRR/# )r   rƒ   r„   r   rˆ   r    )r!   s   "r"   r#   r$     s   € ÷ 	ñ 	¨ð 	¸ñ 	r%   c                óX   € V P                  V4      ^,          pV P                  V4       V# )z¶Returns back the JWT header parameters as a dict()

Note: The signature is not verified so the header parameters
should not be fully trusted until signature verification is complete
)r�   rl   )r-   rƒ   rV   s   && r"   Úget_unverified_headerÚPyJWS.get_unverified_header  s)   € ð —*‘*˜S“/ !Õ$ˆØ×Ñ˜wÔ'àˆr%   c               ó    € V ^8„  d   QhRRRR/# )r   rƒ   r„   r   z*tuple[bytes, bytes, dict[str, Any], bytes]r    )r!   s   "r"   r#   r$   !  s   € ÷ 2;ñ 2;˜ð 2;Ð)Sñ 2;r%   c                	ó¦  € \        V\        4      '       d   VP                  R 4      p\        V\        4      '       g   \	        R\         24      h VP                  R^4      w  r#VP                  R^4      w  rE \        T4      p \        P                  ! T4      p\        T\        4      '       g   \	        R4      hTP                  RR	4      R
J d   T'       d   \	        R4      hRp
M \        T4      p
 \        T4      pY¢Y‹3#   \         d   p\	        R4      ThRp?ii ; i  \        \        P                  3 d   p\	        R4      ThRp?ii ; i  \         d   p	\	        RT	 24      T	hRp	?	ii ; i  \        \        P                  3 d   p\	        R4      ThRp?ii ; i  \        \        P                  3 d   p\	        R4      ThRp?ii ; i)rf   z$Invalid token type. Token must be a re   zNot enough segmentsNzInvalid header paddingzInvalid header string: z,Invalid header string: must be a json objectr^   TFz2Payload segment must be empty when 'b64' is false.r%   zInvalid payload paddingzInvalid crypto padding)r;   r7   rp   rT   r   r�   Úsplitr:   r   r<   ÚbinasciiÚErrorrn   ÚloadsÚdictrj   )r-   rƒ   r~   Úcrypto_segmentÚheader_segmentÚpayload_segmentÚerrÚheader_datarz   rO   rS   r   s   &&          r"   r�   ÚPyJWS._load!  sÌ  € Ü�cœ3×ÒØ—*‘*˜WÓ%ˆCä˜#œu×%Ò%ÜÐ DÄUÀGÐLÓMÐMð	>Ø,/¯J©J°t¸QÓ,?Ñ)ˆMØ.;×.AÑ.AÀ$ÈÓ.JÑ+ˆNð	AÜ*¨>Ó:ˆKð	DÜ—Z’Z Ó,ˆFô ˜&¤$×'Ò'ÜÐLÓMÐMà�:‰:�e˜TÓ" eÓ+÷ Ü!ØHóð ð ‰GðFÜ*¨?Ó;�ð	AÜ(¨Ó8ˆIð ¨Ð:Ð:øôQ ô 	>ÜÐ3Ó4¸#Ð=ûð	>ûô
 œ8Ÿ>™>Ð*ô 	AÜÐ6Ó7¸SÐ@ûð	Aûô
 ô 	DÜÐ 7¸°sÐ;Ó<À!ÐCûð	Dûô, œxŸ~™~Ð.ô FÜ!Ð";Ó<À#ÐEûðFûô
 œ8Ÿ>™>Ð*ô 	AÜÐ6Ó7¸SÐ@ûð	Aúsx   Á(D Á:D$ ÂE Ã*E5 Ã6F$ ÄD!ÄDÄD!Ä$EÄ?EÅEÅE2ÅE-Å-E2Å5F!ÆFÆF!Æ$GÆ?GÇGc               ó0   € V ^8„  d   QhRRRRRRRRRR	R
R/# )r   r~   rT   rz   rˆ   r   r.   r…   r   r   r   r   r    )r!   s   "r"   r#   r$   U  sN   € ÷ 'Iñ 'Iàð'Ið ð'Ið ð	'Ið
 5ð'Ið )ð'Ið 
ñ'Ir%   c                	óx  € Vf$   \        V\        4      '       d   VP                  .p VR,          pT'       d   Te   Ye9  d   \	        R4      h\        T\        4      '       dV   YdP                  8w  d   \	        RT: RTP                  : 24      hTP
                  pTP                  TP                  4      pM# T P                  T4      pTP                  T4      pTP                  YT4      '       g   \        R4      hR #   \         d    \	        R4      R hi ; i  \         d   p	\	        R4      T	hR p	?	ii ; i)Nr]   zAlgorithm not specifiedz&The specified alg value is not allowedzToken algorithm z$ does not match the key's algorithm rM   zSignature verification failed)r;   r   ri   rB   r   r   rs   r.   rP   rN   Úverifyr   )
r-   r~   rz   r   r.   r   r]   r8   Úprepared_keyrO   s
   &&&&&&    r"   r‘   ÚPyJWS._verify_signatureU  s?  € ð Ò¤*¨S´%×"8Ò"8Ø×,Ñ,Ð-ˆJð	MØ˜•-ˆC÷ �zÒ-°#Ô2GÜ'Ð(PÓQÐQä�cœ5×!Ò!ð ×(Ñ(Ô(Ü+Ø& s¡gð .!Ø!$×!3Ñ!3Ñ 6ð8óð ð —m‘mˆGØ"×.Ñ.¨s¯w©wÓ7‰LðNØ×4Ñ4°SÓ9�ð #×.Ñ.¨sÓ3ˆLà�~‰~˜m¸9×EÒEÜ'Ð(GÓHÐHñ Føô5 ô 	MÜ'Ð(AÓBÈÐLð	Mûô, 'ô NÜ+Ð,EÓFÈAÐMûðNús#   ©	D Â;D ÄDÄD9Ä(D4Ä4D9r^   zset[str]Ú_supported_critr`   c               ó$   € V ^8„  d   QhRRRRRR/# )r   rV   rˆ   r`   rY   r   r   r    )r!   s   "r"   r#   r$   �  s$   € ÷ )ñ )Ø%ð)Ø48ð)à	ñ)r%   c               	óŒ   € R V9   d   V P                  VR ,          4       V'       g   RV9   d   V P                  V4       R# R# R# )Úkidra   N)Ú_validate_kidÚ_validate_crit)r-   rV   r`   s   &&$r"   rl   ÚPyJWS._validate_headers�  s=   € ð �GÔØ×Ñ˜w u�~Ô.ß˜F gÔ-Ø×Ñ Ö(ñ .‰xr%   c               ó    € V ^8„  d   QhRRRR/# )r   r³   r   r   r   r    )r!   s   "r"   r#   r$   ‰  s   € ÷ Pñ P ð P¨ñ Pr%   c                	óH   € \        V\        4      '       g   \        R 4      hR# )z(Key ID header parameter must be a stringN)r;   r7   r   )r-   r³   s   &&r"   r´   ÚPyJWS._validate_kid‰  s    € Ü˜#œs×#Ò#Ü#Ð$NÓOÐOñ $r%   c               ó    € V ^8„  d   QhRRRR/# )r   rV   rˆ   r   r   r    )r!   s   "r"   r#   r$   �  s   € ÷ ñ  nð ¸ñ r%   c                	ó4  € VR ,          p\        V\        4      '       d   \        V4      ^ 8X  d   \        R4      hV FW  p\        V\        4      '       g   \        R4      hW0P
                  9  d   \        RV 24      hW19  g   KJ  \        RV R24      h	  R# )ra   z/Invalid 'crit' header: must be a non-empty listz-Invalid 'crit' header: values must be stringsz Unsupported critical extension: zCritical extension 'z' is missing from headersN)r;   r*   Úlenr   r7   r°   )r-   rV   ra   Úexts   &&  r"   rµ   ÚPyJWS._validate_crit�  s�   € Ø�v�ˆÜ˜$¤×%Ò%¬¨T«°a¬Ü#Ð$UÓVÐVÛˆCÜ˜c¤3×'Ò'Ü'Ð(WÓXÐXØ×.Ñ.Ô.Ü'Ð*JÈ3È%Ð(PÓQÐQØÖ!Ü'Ø*¨3¨%Ð/HÐIóð ó r%   )r'   r)   r   )NN)NNNFT)Ú NNN)r¿   N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__rk   r/   Ústaticmethodr,   r>   rD   rH   rP   rp   r”   ru   rœ   r�   r‘   r°   Ú__annotations__rl   r´   rµ   Ú__static_attributes__r    r%   r"   r   r      s…   ‡ Ø€J÷Bð& ô*ó ð*õ%õ(õ&õH÷"V.÷p=
÷~"õ,	õ2;÷h'IðT "' €O�XÓ'ð)Ø;@÷)õP÷ñ r%   r   )%Ú
__future__r   r¡   rn   rŒ   Úcollections.abcr   Útypingr   r   r   r   r   r	   r
   Úapi_jwkr   Ú
exceptionsr   r   r   r   Úutilsr   r   r   r   r   r   Ú_jws_global_objrp   r”   ru   r>   rD   rP   rœ   r    r%   r"   Ú<module>rÎ      s¥   ðÝ "ã Û Û Ý $ß %÷ó õ ÷ó ÷ 6Ý ,çßA÷|ñ |ñ~ “'€Ø	×	Ñ	€Ø!×1Ñ1€Ø	×	Ñ	€Ø$×7Ñ7Ð Ø&×;Ñ;Ð Ø'×=Ñ=Ð Ø'×=Ñ=Ò r%   