ó
    Vœ‘hò-  ã                  ó„  • S SK Jr  S SK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Jr  SSKJr  SSKJrJrJrJr  SS	KJrJr  SS
KJr  \(       a  SSK
JrJr   " S S5      r\" 5       r\R<                  r\R>                  r\R@                  r \RB                  r!\RD                  r"\RF                  r#\RH                  r$g)é    )Ú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                  óN  • \ rS rSrSr  S     SS jjr\SS j5       rSS jrSS jr	SS jr
SS	 j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 jr  S!           S"S jjrS#S jrS$S jrSrg)%ÚPyJWSé   ÚJWTNc                ó>  • [        5       U l        Ub  [        U5      O[        U R                  5      U l        [	        U R                  R                  5       5       H!  nX0R                  ;  d  M  U R                  U	 M#     Uc  0 n0 U R                  5       EUEU l        g )N)r	   Ú_algorithmsÚsetÚ_valid_algsÚlistÚkeysÚ_get_default_optionsÚoptions)ÚselfÚ
algorithmsr!   Úkeys       ÚOC:\Users\psant\Downloads\Noiseback\school\venv\Lib\site-packages\jwt/api_jws.pyÚ__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ˆ�ó    c                 ó
   • SS0$ )NÚverify_signatureT© r+   r(   r%   r    ÚPyJWS._get_default_options3   s   € à" DÐ)Ð)r(   c                óÊ   • XR                   ;   a  [        S5      e[        U[        5      (       d  [	        S5      eX R                   U'   U R
                  R                  U5        g)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"   Úalg_idÚalg_objs      r%   Úregister_algorithmÚPyJWS.register_algorithm7   sW   € ð ×%Ñ%Ó%ÜÐ?Ó@Ð@ä˜'¤9×-Ñ-ÜÐ?Ó@Ð@à#*×Ñ˜Ñ Ø×Ñ×Ñ˜VÕ$r(   c                óˆ   • XR                   ;  a  [        S5      eU R                   U	 U R                  R                  U5        g)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"   r2   s     r%   Úunregister_algorithmÚPyJWS.unregister_algorithmD   sF   € ð
 ×)Ñ)Ó)Üð1óð ð
 ×Ñ˜VÐ$Ø×Ñ×Ñ Õ'r(   c                ó,   • [        U R                  5      $ )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                ó¨   •  U R                   U   $ ! [         a6  n[        (       d  U[        ;   a  [	        SU S35      Ue[	        S5      UeSnAff = f)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   r7   r
   r   ÚNotImplementedError)r"   Úalg_nameÚes      r%   Úget_algorithm_by_nameÚPyJWS.get_algorithm_by_nameX   se   € ð	HØ×#Ñ# HÑ-Ð-øÜó 	Hß’: (Ô.CÓ"CÜ)Ø! ( Ð+dÐeóàðô &Ð&?Ó@ÀaÐGûð	Hús   ‚ ‘
A›1AÁAc                óª  • / nUc%  [        U[        5      (       a  UR                  n	OSn	OUn	U(       a5  UR                  S5      n
U
(       a  US   n	UR                  S5      nUSL a  SnU R                  U	S.nU(       a"  U R                  U5        UR                  U5        US   (       d  US	 U(       a  SUS'   O	SU;   a  US	 [        R                  " USXWS	9R                  5       nUR                  [        U5      5        U(       a  UnO[        U5      nUR                  U5        S
R                  U5      nU R                  U	5      n[        U[        5      (       a  UR                  nUR                  U5      nUR!                  Xò5      nUR                  [        U5      5        U(       a  SUS'   S
R                  U5      nUR#                  S5      $ )NÚHS256ÚalgÚb64FT)ÚtyprG   rI   )Ú,Ú:)Ú
separatorsÚclsÚ	sort_keysó   .r(   r   úutf-8)r/   r   Úalgorithm_nameÚgetÚ
header_typÚ_validate_headersÚupdateÚjsonÚdumpsÚencodeÚappendr   ÚjoinrC   r$   Úprepare_keyÚsignÚdecode)r"   Úpayloadr$   Ú	algorithmÚheadersÚjson_encoderÚis_payload_detachedÚsort_headersÚsegmentsÚ
algorithm_Úheaders_algÚheaders_b64ÚheaderÚjson_headerÚmsg_payloadÚsigning_inputr3   Ú	signatureÚencoded_strings                      r%   rX   ÚPyJWS.encodei   s§  € ð ˆð ÑÜ˜#œu×%Ñ%Ø ×/Ñ/‘
à$‘
à"ˆJö Ø!Ÿ+™+ eÓ,ˆKÞØ$ U™^�
à!Ÿ+™+ eÓ,ˆKØ˜eÒ#Ø&*Ð#ð *.¯©ÀÑ!LˆæØ×"Ñ" 7Ô+Ø�M‰M˜'Ô"à�e�}Ø�u�æØ!ˆF�5ŠMØ�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                ó  • U(       a4  [         R                  " S[        UR                  5       5       3[        SS9  Uc  0 n0 U R
                  EUEnUS   nU(       a'  U(       d   [        U[        5      (       d  [        S5      eU R                  U5      u  pšp¼UR                  SS5      SL a6  Uc  [        S	5      eUn	S
R                  U
R                  S
S5      S   U	/5      n
U(       a  U R                  X«XÂU5        U	UUS.$ )Nzypassing additional kwargs to decode_complete() is deprecated and will be removed in pyjwt version 3. Unsupported kwargs: é   ©Ú
stacklevelr*   z\It is required that you pass in a value for the "algorithms" argument when calling decode().rH   TFzƒ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.rO   r   r   )r^   rh   rl   )ÚwarningsÚwarnÚtupler   r   r!   r/   r   r   Ú_loadrR   rZ   ÚrsplitÚ_verify_signature)r"   Újwtr$   r#   r!   Údetached_payloadÚkwargsÚmerged_optionsr*   r^   rk   rh   rl   s                r%   Údecode_completeÚPyJWS.decode_complete¶   s  € ö Ü�MŠMð'ä',¨V¯[©[«]Ó';Ð&<ð>ô 'Øòð ‰?ØˆGØ4˜DŸL™LÐ4¨GÐ4ˆØ)Ð*<Ñ=Ðæ¦J´zÀ#Äu×7MÑ7MÜØnóð ð 59·J±J¸s³OÑ1ˆ à�:‰:�e˜TÓ" eÒ+ØÑ'Ü!ð Zóð ð 'ˆGØ ŸI™I }×';Ñ';¸DÀ!Ó'DÀQÑ'GÈÐ&QÓRˆMæØ×"Ñ" =¸)È*ÔUð ØØ"ñ
ð 	
r(   c                ó¤   • U(       a4  [         R                  " S[        UR                  5       5       3[        SS9  U R                  XX4US9nUS   $ )Nzppassing additional kwargs to decode() is deprecated and will be removed in pyjwt version 3. Unsupported kwargs: rp   rq   )rz   r^   )rs   rt   ru   r   r   r}   )r"   ry   r$   r#   r!   rz   r{   Údecodeds           r%   r]   ÚPyJWS.decodeä   sb   € ö Ü�MŠMð'ä',¨V¯[©[«]Ó';Ð&<ð>ô 'Øòð ×&Ñ&Ø�jÐ<Lð 'ð 
ˆð �yÑ!Ð!r(   c                óP   • U R                  U5      S   nU R                  U5        U$ )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
rp   )rv   rT   )r"   ry   r`   s      r%   Úget_unverified_headerÚPyJWS.get_unverified_headerú   s)   € ð —*‘*˜S“/ !Ñ$ˆØ×Ñ˜wÔ'àˆr(   c                ó>  • [        U[        5      (       a  UR                  S5      n[        U[        5      (       d  [	        S[         35      e UR                  SS5      u  p#UR                  SS5      u  pE [        U5      n [        R                  " U5      n[        U[        5      (       d  [	        S5      e [        U5      n
 [        U5      nX¢X‹4$ ! [         a  n[	        S5      UeS nAff = f! [        [        R                  4 a  n[	        S5      UeS nAff = f! [         a  n	[	        SU	 35      U	eS n	A	ff = f! [        [        R                  4 a  n[	        S	5      UeS nAff = f! [        [        R                  4 a  n[	        S
5      UeS nAff = f)NrP   z$Invalid token type. Token must be a rO   r   zNot enough segmentszInvalid header paddingzInvalid header string: z,Invalid header string: must be a json objectzInvalid payload paddingzInvalid crypto padding)r/   ÚstrrX   Úbytesr   rw   Úsplitr.   r   r0   ÚbinasciiÚErrorrV   ÚloadsÚdict)r"   ry   rk   Úcrypto_segmentÚheader_segmentÚpayload_segmentÚerrÚheader_datarh   rB   r^   rl   s               r%   rv   Ú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ð	BÜ& Ó7ˆGð	AÜ(¨Ó8ˆIð ¨Ð:Ð:øô5 ó 	>ÜÐ3Ó4¸#Ð=ûð	>ûô
 œ8Ÿ>™>Ð*ó 	AÜÐ6Ó7¸SÐ@ûð	Aûô
 ó 	DÜÐ 7¸°sÐ;Ó<À!ÐCûð	Dûô œ8Ÿ>™>Ð*ó 	BÜÐ7Ó8¸cÐAûð	Bûô
 œ8Ÿ>™>Ð*ó 	AÜÐ6Ó7¸SÐ@ûð	Aúsx   Á(C Á8C4 ÂD" Â;E ÃE1 Ã
C1Ã C,Ã,C1Ã4DÄDÄDÄ"
E Ä,D;Ä;E ÅE.ÅE)Å)E.Å1FÆFÆFc                óä  • Uc"  [        U[        5      (       a  UR                  /n US   nU(       a  Ub  Xe;  a  [	        S5      e[        U[        5      (       a  UR
                  nUR                  nO# U R                  U5      nUR                  U5      nUR                  XU5      (       d  [        S5      eg ! [         a    [	        S5      S ef = f! [         a  n	[	        S5      U	eS n	A	ff = f)NrG   zAlgorithm not specifiedz&The specified alg value is not allowedr?   zSignature verification failed)r/   r   rQ   r7   r   r   r$   rC   r@   r[   Úverifyr   )
r"   rk   rh   rl   r$   r#   rG   r3   Úprepared_keyrB   s
             r%   rx   ÚPyJWS._verify_signature+  sú   € ð Ñ¤*¨S´%×"8Ñ"8Ø×,Ñ,Ð-ˆJð	MØ˜‘-ˆCö �zÑ-°#Ó2GÜ'Ð(PÓQÐQä�cœ5×!Ñ!Ø—m‘mˆGØŸ7™7‰LðNØ×4Ñ4°SÓ9�ð #×.Ñ.¨sÓ3ˆLà�~‰~˜m¸9×EÑEÜ'Ð(GÓHÐHð Føô! ó 	MÜ'Ð(AÓBÈÐLð	Mûô 'ó NÜ+Ð,EÓFÈAÐMûðNús#   §B: Á5C Â:CÃ
C/ÃC*Ã*C/c                ó:   • SU;   a  U R                  US   5        g g )NÚkid)Ú_validate_kid)r"   r`   s     r%   rT   ÚPyJWS._validate_headersJ  s!   € Ø�GÓØ×Ñ˜w u™~Õ.ð r(   c                óD   • [        U[        5      (       d  [        S5      eg )Nz(Key ID header parameter must be a string)r/   r†   r   )r"   r˜   s     r%   r™   ÚPyJWS._validate_kidN  s    € Ü˜#œs×#Ñ#Ü#Ð$NÓOÐOð $r(   )r   r   r!   )NN)r#   úSequence[str] | Noner!   údict[str, Any] | NoneÚreturnÚNone)rŸ   zdict[str, bool])r2   r†   r3   r   rŸ   r    )r2   r†   rŸ   r    )rŸ   z	list[str])rA   r†   rŸ   r   )NNNFT)r^   r‡   r$   z(AllowedPrivateKeys | PyJWK | str | bytesr_   z
str | Noner`   rž   ra   ztype[json.JSONEncoder] | Nonerb   Úboolrc   r¡   rŸ   r†   )Ú NNN)ry   ústr | bytesr$   ú'AllowedPublicKeys | PyJWK | str | bytesr#   r�   r!   rž   rz   úbytes | NonerŸ   údict[str, Any])ry   r£   r$   r¤   r#   r�   r!   rž   rz   r¥   rŸ   r   )ry   r£   rŸ   r¦   )ry   r£   rŸ   z*tuple[bytes, bytes, dict[str, Any], bytes])r¢   N)rk   r‡   rh   r¦   rl   r‡   r$   r¤   r#   r�   rŸ   r    )r`   r¦   rŸ   r    )r˜   r   rŸ   r    )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__rS   r&   Ústaticmethodr    r4   r9   r<   rC   rX   r}   r]   rƒ   rv   rx   rT   r™   Ú__static_attributes__r+   r(   r%   r   r      sÊ  † Ø€Jð ,0Ø)-ðBà(ðBð 'ðBð 
õ	Bð& ó*ó ð*ô%ô(ô&ôHð* !%Ø)-Ø6:Ø$)Ø!ðK.àðK.ð 6ðK.ð ð	K.ð
 'ðK.ð 4ðK.ð "ðK.ð ðK.ð 
õK.ð` 8:Ø+/Ø)-Ø)-ð,
àð,
ð 5ð,
ð )ð	,
ð
 'ð,
ð 'ð,
ð 
õ,
ðb 8:Ø+/Ø)-Ø)-ð"àð"ð 5ð"ð )ð	"ð
 'ð"ð 'ð"ð 
õ"ô,	ô$;ðV 8:Ø+/ðIàðIð ðIð ð	Ið
 5ðIð )ðIð 
õIô>/÷Pr(   r   )%Ú
__future__r   r‰   rV   rs   Úcollections.abcr   Útypingr   r   r#   r   r	   r
   r   Úapi_jwkr   Ú
exceptionsr   r   r   r   Úutilsr   r   r   r   r   r   Ú_jws_global_objrX   r}   r]   r4   r9   rC   rƒ   r+   r(   r%   Ú<module>r´      s§   ðÝ "ã Û Û Ý $ß %÷ó õ ÷ó ÷ 6Ý ,æßA÷sPñ sPñl	 “'€Ø	×	Ñ	€Ø!×1Ñ1€Ø	×	Ñ	€Ø$×7Ñ7Ð Ø&×;Ñ;Ð Ø'×=Ñ=Ð Ø'×=Ñ=Ñ r(   