ó
    öÞ j A  ã                  ó¦  • 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Jr  SS	KJrJr  SS
KJrJr  \(       a  SSK
JrJr  SSKJr  \ " 5       r! " S S5      r"\"" 5       r#\#RH                  r$\#RJ                  r%\#RL                  r&\#RN                  r'\#RP                  r(\#RR                  r)\#RT                  r*g)é    )ÚannotationsN)ÚSequence)ÚTYPE_CHECKINGÚAnyé   )Ú	AlgorithmÚget_default_algorithmsÚ
has_cryptoÚrequires_cryptography)ÚPyJWK)ÚDecodeErrorÚInvalidAlgorithmErrorÚInvalidKeyErrorÚInvalidSignatureErrorÚInvalidTokenError)Úbase64url_decodeÚbase64url_encode)ÚInsecureKeyLengthWarningÚRemovedInPyjwt3Warning)ÚAllowedPrivateKeysÚAllowedPublicKeys)Ú
SigOptionsc                  óŠ  • \ 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
S4               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1rS\S'   S
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 R                  5       U l        Ub  0 U R                  EUEU l        g g )N)r	   Ú_algorithmsÚsetÚ_valid_algsÚlistÚkeysÚ_get_default_optionsÚoptions)ÚselfÚ
algorithmsr$   Úkeys       ÚE/var/www/html/gaurav/venv/lib/python3.13/site-packages/jwt/api_jws.pyÚ__init__ÚPyJWS.__init__$   sœ   € ô
 2Ó3ˆÔà)Ñ5ŒC�
ŒO¼3¸t×?OÑ?OÓ;Pð 	Ôô
 ˜×(Ñ(×-Ñ-Ó/Ö0ˆCØ×*Ñ*Õ*Ø×$Ñ$ SÒ)ñ 1ð $(×#<Ñ#<Ó#>ˆŒØÑØ6˜dŸl™lÐ6¨gÐ6ˆD�Lð ó    c                 ó   • SSS.$ )NTF)Úverify_signatureÚenforce_minimum_key_length© r/   r+   r(   r#   ÚPyJWS._get_default_options7   s   € à$(ÈÑNÐNr+   c                óÊ   • XR                   ;   a  [        S5      e[        U[        5      (       d  [	        S5      eX R                   U'   U R
                  R                  U5        g)z±
Registers a new Algorithm for use when creating and verifying tokens.

:param str alg_id: the ID of the Algorithm
:param alg_obj: the Algorithm object
:type alg_obj: Algorithm
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_algorithm;   sW   € ð ×%Ñ%Ó%ÜÐ?Ó@Ð@ä˜'¤9×-Ñ-ÜÐ?Ó@Ð@à#*×Ñ˜Ñ Ø×Ñ×Ñ˜VÕ$r+   c                óˆ   • XR                   ;  a  [        S5      eU R                   U	 U R                  R                  U5        g)z¢
Unregisters an Algorithm for use when creating and verifying tokens
:param str alg_id: the ID of the Algorithm
:raises 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_algorithmL   sF   € ð ×)Ñ)Ó)Üð1óð ð
 ×Ñ˜VÐ$Ø×Ñ×Ñ Õ'r+   c                ó,   • [        U R                  5      $ )zP
Returns a list of supported values for the `alg` parameter.

:rtype: list[str]
)r!   r    )r%   s    r(   Úget_algorithmsÚPyJWS.get_algorithms[   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 = PyJWS()
>>> jws_obj.get_algorithm_by_name("RS256")

:param alg_name: The name of the algorithm to retrieve
:type alg_name: str
:rtype: Algorithm
zAlgorithm 'z9' could not be found. Do you have cryptography installed?úAlgorithm not supportedN)r   r;   r
   r   ÚNotImplementedError)r%   Úalg_nameÚes      r(   Úget_algorithm_by_nameÚPyJWS.get_algorithm_by_namec   se   € ð	HØ×#Ñ# HÑ-Ð-øÜó 	Hß’: (Ô.CÓ"CÜ)Ø! ( Ð+dÐeóàðô &Ð&?Ó@ÀaÐGûð	Hús   ‚ ‘
A›1AÁAFTc                óD  • / nU[         L a%  [        U[        5      (       a  UR                  n	O-Sn	O*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SS9  UR                  U5        US	   (       d  US		 U(       aG  SUS'   UR	                  S
/ 5      n[        U[        5      (       d  [        S5      eSU;  a	  / UQSP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'                  U5      nU(       aF  U R(                  R	                  SS5      (       a  [+        U5      e[,        R.                  " U[0        SS9  UR3                  UU5      nUR                  [        U5      5        U(       a  SUS'   SR                  U5      nUR5                  S5      $ )NÚHS256ÚnoneÚalgÚb64FT)ÚtyprL   ©ÚencodingrN   Úcritz%Invalid 'crit' header: must be a list)Ú,Ú:)Ú
separatorsÚclsÚ	sort_keysó   .r.   é   ©Ú
stacklevelr+   r   úutf-8)Ú_ALGORITHM_UNSETr3   r   Úalgorithm_nameÚgetÚ
header_typÚ_validate_headersÚupdater!   r   ÚjsonÚdumpsÚencodeÚappendr   ÚjoinrG   r'   Úprepare_keyÚcheck_key_lengthr$   r   ÚwarningsÚwarnr   ÚsignÚdecode)r%   Úpayloadr'   Ú	algorithmÚheadersÚjson_encoderÚis_payload_detachedÚsort_headersÚsegmentsÚ
algorithm_Úheaders_algÚheaders_b64ÚheaderÚexisting_critÚjson_headerÚmsg_payloadÚsigning_inputr7   Úkey_length_msgÚ	signatureÚencoded_strings                        r(   rd   ÚPyJWS.encodex   sc  € ð !#ˆð Ô(Ò(Ü˜#œu×%Ñ%Ø ×/Ñ/‘
à$‘
ØÑÜ˜#œ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Ü'Ð(OÓPÐPØ˜MÓ)Ø!8 =Ð!8°%Ð!8��v‘øØ�f‹_à�u�ä—j’jØ˜z¨|ñ
ç
‰&‹(ð 	ð 	�‰Ô(¨Ó5Ô6æØ!‰Kä*¨7Ó3ˆKØ�‰˜Ô$ð Ÿ	™	 (Ó+ˆà×,Ñ,¨ZÓ8ˆÜ�cœ5×!Ñ!Ø—'‘'ˆCØ×!Ñ! #Ó&ˆà ×1Ñ1°#Ó6ˆÞØ�|‰|×ÑÐ <¸e×DÑDÜ% nÓ5Ð5ä—’˜nÔ.FÐSTÒUà—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  U R
                  nO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                  U5        UR                  SS5      SL av  UR                  S	5      =(       d    / n[        U[        5      (       a  SU;  a  [        S
5      eUc  [        S5      eUn	SR                  U
R                  SS5      S   U	/5      n
U(       a  U R!                  U
UUUUUS9  U	UUS.$ )Nzypassing additional kwargs to decode_complete() is deprecated and will be removed in pyjwt version 3. Unsupported kwargs: rX   rY   r-   z\It is required that you pass in a value for the "algorithms" argument when calling decode().rM   TFrQ   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.rW   r   r   )r$   )rm   rw   r}   )ri   rj   Útupler"   r   r$   r3   r   r   Ú_loadr`   r^   r!   r   rf   ÚrsplitÚ_verify_signature)r%   Újwtr'   r&   r$   Údetached_payloadÚkwargsÚmerged_optionsr-   rm   r{   rw   r}   rQ   s                 r(   Údecode_completeÚPyJWS.decode_completeÛ   sx  € ö Ü�MŠMð'ä',¨V¯[©[«]Ó';Ð&<ð>ô 'Øòð ‰?Ø!Ÿ\™\‰Nà8 §¡Ð8°Ð8ˆNà)Ð*<Ñ=Ðæ¦J´zÀ#Äu×7MÑ7MÜØnóð ð 59·J±J¸s³OÑ1ˆ à×Ñ˜vÔ&à�:‰:�e˜TÓ" eÒ+ð —:‘:˜fÓ%×+¨ˆDÜ˜d¤D×)Ñ)¨U¸$Ó->Ü'ØWóð ð  Ñ'Ü!ð Zóð ð 'ˆGØ ŸI™I }×';Ñ';¸DÀ!Ó'DÀQÑ'GÈÐ&QÓRˆMæØ×"Ñ"ØØØØØØ&ð #ñ ð ØØ"ñ
ð 	
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: rX   rY   )r†   rm   )ri   rj   r�   r"   r   r‰   )r%   r…   r'   r&   r$   r†   r‡   Údecodeds           r(   rl   Ú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
rX   )r‚   r`   )r%   r…   ro   s      r(   Úget_unverified_headerÚPyJWS.get_unverified_header3  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R                  S	S
5      SL a  U(       a  [	        S5      eSn
O [        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)Nr[   z$Invalid token type. Token must be a rW   r   zNot enough segmentszInvalid header paddingzInvalid header string: z,Invalid header string: must be a json objectrM   TFz2Payload segment must be empty when 'b64' is false.r+   zInvalid payload paddingzInvalid crypto padding)r3   Ústrrd   Úbytesr   rƒ   Úsplitr2   r   r4   ÚbinasciiÚErrorrb   ÚloadsÚdictr^   )r%   r…   r{   Úcrypto_segmentÚheader_segmentÚpayload_segmentÚerrÚheader_datarw   rF   rm   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Ò+ö Ü!Ð"VÓWÐWØ‰GðFÜ*¨?Ó;�ð	AÜ(¨Ó8ˆIð ¨Ð:Ð:øôM ó 	>ÜÐ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  Á8D ÂE Ã%E- Ã1F Ä 
DÄ
DÄDÄE	Ä8EÅE	Å
E*ÅE%Å%E*Å-FÆFÆFÆGÆ5GÇGc                ó  • Ub  UOU R                   nUc"  [        U[        5      (       a  UR                  /n US   nU(       a  Ub  X…;  a  [        S5      e[        U[        5      (       aE  X„R                  :w  a  [        SU< SUR                  < 35      eUR                  n	UR                  n
O# U R                  U5      n	U	R                  U5      n
U	R                  U
5      nU(       a<  UR                  SS5      (       a  [        U5      e[        R                  " U[         S	S
9  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)NrL   zAlgorithm not specifiedz&The specified alg value is not allowedzToken algorithm z$ does not match the key's algorithm rC   r.   Fé   rY   zSignature verification failed)r$   r3   r   r]   r;   r   r   r'   rG   rD   rg   rh   r^   r   ri   rj   r   Úverifyr   )r%   r{   rw   r}   r'   r&   r$   Úeffective_optionsrL   r7   Úprepared_keyrF   r|   s                r(   r„   ÚPyJWS._verify_signaturep  sŠ  € ð (/Ñ':™GÀÇÁÐàÑ¤*¨S´%×"8Ñ"8Ø×,Ñ,Ð-ˆJð	MØ˜‘-ˆCö �zÑ-°#Ó2GÜ'Ð(PÓQÐQä�cœ5×!Ñ!ð ×(Ñ(Ó(Ü+Ø& s¡gð .!Ø!$×!3Ñ!3Ñ 6ð8óð ð —m‘mˆGØŸ7™7‰LðNØ×4Ñ4°SÓ9�ð #×.Ñ.¨sÓ3ˆLà ×1Ñ1°,Ó?ˆÞØ ×$Ñ$Ð%AÀ5×IÑIÜ% nÓ5Ð5ä—’˜nÔ.FÐSTÒUà�~‰~˜m¸9×EÑEÜ'Ð(GÓHÐHð FøôC ó 	MÜ'Ð(AÓBÈÐLð	Mûô, 'ó NÜ+Ð,EÓFÈAÐMûðNús#   ¸E Â2E% ÅE"Å%
F Å/E;Å;F rM   zset[str]Ú_supported_critrO   c               óx   • SU;   a  U R                  US   5        U(       d  SU;   a  U R                  U5        g g g )NÚkidrQ   )Ú_validate_kidÚ_validate_crit)r%   ro   rP   s      r(   r`   ÚPyJWS._validate_headers¦  s=   € ð �GÓØ×Ñ˜w u™~Ô.Þ˜F gÓ-Ø×Ñ Õ(ð .ˆxr+   c                óD   • [        U[        5      (       d  [        S5      eg )Nz(Key ID header parameter must be a string)r3   r’   r   )r%   r§   s     r(   r¨   ÚPyJWS._validate_kid®  s    € Ü˜#œs×#Ñ#Ü#Ð$NÓOÐOð $r+   c                ó   • US   n[        U[        5      (       a  [        U5      S:X  a  [        S5      eU HT  n[        U[        5      (       d  [        S5      eX0R
                  ;  a  [        SU 35      eX1;  d  MG  [        SU S35      e   g )NrQ   r   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 headers)r3   r!   Úlenr   r’   r¥   )r%   ro   rQ   Ú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)r&   úSequence[str] | Noner$   úSigOptions | NoneÚreturnÚNone)r³   r   )r6   r’   r7   r   r³   r´   )r6   r’   r³   r´   )r³   z	list[str])rE   r’   r³   r   )rm   r“   r'   z(AllowedPrivateKeys | PyJWK | str | bytesrn   z
str | Nonero   zdict[str, Any] | Nonerp   ztype[json.JSONEncoder] | Nonerq   Úboolrr   rµ   r³   r’   )Ú NNN)r…   ústr | bytesr'   ú'AllowedPublicKeys | PyJWK | str | bytesr&   r±   r$   r²   r†   úbytes | Noner‡   údict[str, Any]r³   rº   )r…   r·   r'   r¸   r&   r±   r$   r²   r†   r¹   r‡   rº   r³   r   )r…   r·   r³   rº   )r…   r·   r³   z*tuple[bytes, bytes, dict[str, Any], bytes])r¶   NN)r{   r“   rw   rº   r}   r“   r'   r¸   r&   r±   r$   r²   r³   r´   )ro   rº   rP   rµ   r³   r´   )r§   r   r³   r´   )ro   rº   r³   r´   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r_   r)   Ústaticmethodr#   r8   r=   r@   rG   r\   rd   r‰   rl   r�   r‚   r„   r¥   Ú__annotations__r`   r¨   r©   Ú__static_attributes__r/   r+   r(   r   r   !   s$  ‡ Ø€Jð ,0Ø%)ð7à(ð7ð #ð7ð 
õ	7ð& óOó ðOô%ô"(ô&ôHð2 !1Ø)-Ø6:Ø$)Ø!ða.àða.ð 6ða.ð ð	a.ð
 'ða.ð 4ða.ð "ða.ð ða.ð 
õa.ðL 8:Ø+/Ø%)Ø)-ð@
àð@
ð 5ð@
ð )ð	@
ð
 #ð@
ð 'ð@
ð !ð@
ð 
õ@
ðJ 8:Ø+/Ø%)Ø)-ð"àð"ð 5ð"ð )ð	"ð
 #ð"ð 'ð"ð !ð"ð 
õ"ô,	ô0;ðn 8:Ø+/Ø%)ð1Iàð1Ið ð1Ið ð	1Ið
 5ð1Ið )ð1Ið #ð1Ið 
õ1Iðh "' €O�XÓ'ð <Añ)Ø%ð)Ø48ð)à	õ)ôP÷r+   r   )+Ú
__future__r   r•   rb   ri   Úcollections.abcr   Útypingr   r   r&   r   r	   r
   r   Úapi_jwkr   Ú
exceptionsr   r   r   r   r   Úutilsr   r   r   r   r   r   Útypesr   Úobjectr\   r   Ú_jws_global_objrd   r‰   rl   r8   r=   rG   r�   r/   r+   r(   Ú<module>rË      s°   ðÝ "ã Û Û Ý $ß %÷ó õ ÷õ ÷ 6ß FæßAÝ!á“8Ð ÷]ñ ]ñ@ “'€Ø	×	Ñ	€Ø!×1Ñ1€Ø	×	Ñ	€Ø$×7Ñ7Ð Ø&×;Ñ;Ð Ø'×=Ñ=Ð Ø'×=Ñ=Ñ r+   