Ë
    ”Âi)  ã                   óÔ   — d dl Z d dlZd dlZd dlZd dlmZ d dlmZ d dlmZ d dlmZ ddl	m
Z
 ddl	mZ dd	lmZ dd
lmZ ddlmZ ddlmZ ddlmZ  G d„ d«      Zd„ Zd„ Zd„ Zd„ Zy)é    N)Ú
json_dumps)Ú
json_loads)Úto_bytes)Ú
to_unicodeé   )ÚDecodeError)ÚInsecureClaimError)ÚJsonWebSignature)ÚJsonWebEncryption)ÚKey)ÚKeySeté   )Ú	JWTClaimsc                   óŠ   — e Zd ZdZ ej
                  dj                  g d¢«      ej                  «      Zd	d„Z	d„ Z
d
d„Zdd„Zy)ÚJsonWebToken)ÚpasswordÚtokenÚsecretÚ
secret_keyú|)z1\b(?:3[47]\d|(?:4\d|5[1-5]|65)\d{2}|6011)\d{12}\bzB-----BEGIN[A-Z ]+PRIVATE KEY-----.+-----END[A-Z ]+PRIVATE KEY-----z3^\b(?!(000|666|9))\d{3}-(?!00)\d{2}-(?!0000)\d{4}\bNc                 óL   — t        ||¬«      | _        t        ||¬«      | _        y )N)Úprivate_headers)r
   Ú_jwsr   Ú_jwe)ÚselfÚ
algorithmsr   s      úP/var/www/timesheet/venv/lib/python3.12/site-packages/authlib/jose/rfc7519/jwt.pyÚ__init__zJsonWebToken.__init__%   s   € Ü$ ZÀÔQˆŒ	Ü% jÀ/ÔRˆ�	ó    c                 ó¼   — |D ]W  }|| j                   v rt        |«      ‚||   }t        |t        «      sŒ2| j                  j                  |«      sŒNt        |«      ‚ y)z0Check if payload contains sensitive information.N)ÚSENSITIVE_NAMESr	   Ú
isinstanceÚstrÚSENSITIVE_VALUESÚsearch)r   ÚpayloadÚkÚvs       r   Úcheck_sensitive_dataz!JsonWebToken.check_sensitive_data)   s]   € àò 	,ˆAà�D×(Ñ(Ñ(Ü(¨Ó+Ð+ð ˜‘
ˆAÜ˜!œSÕ! d×&;Ñ&;×&BÑ&BÀ1Õ&EÜ(¨Ó+Ð+ñ	,r   c                 óº  — |j                  dd«       dD ]T  }|j                  |«      }t        |t        j                  «      sŒ/t	        j
                  |j                  «       «      ||<   ŒV |r| j                  |«       t        ||«      }t        t        |«      «      }d|v r| j                  j                  |||«      S | j                  j                  |||«      S )a  Encode a JWT with the given header, payload and key.

        :param header: A dict of JWS header
        :param payload: A dict to be encoded
        :param key: key used to sign the signature
        :param check: check if sensitive data in payload
        :return: bytes
        ÚtypÚJWT)ÚexpÚiatÚnbfÚenc)Ú
setdefaultÚgetr"   ÚdatetimeÚcalendarÚtimegmÚutctimetupler)   Úfind_encode_keyr   r   r   Úserialize_compactr   )r   Úheaderr&   ÚkeyÚcheckr'   ÚclaimÚtexts           r   ÚencodezJsonWebToken.encode5   sÄ   € ð 	×Ñ˜% Ô'à&ò 	CˆAà—K‘K “NˆEÜ˜%¤×!2Ñ!2Õ3Ü%Ÿ_™_¨U×-?Ñ-?Ó-AÓB�˜’
ð		Cñ Ø×%Ñ% gÔ.ä˜c 6Ó*ˆÜœ
 7Ó+Ó,ˆØ�F‰?Ø—9‘9×.Ñ.¨v°t¸SÓAÐAà—9‘9×.Ñ.¨v°t¸SÓAÐAr   c                 ód  — |€t         }t        |«      r|}nt        t        |«      «      }t	        |«      }|j                  d«      }|dk(  r"| j                  j                  ||t        «      }n2|dk(  r"| j                  j                  ||t        «      }nt        d«      ‚ ||d   |d   ||¬«      S )a  Decode the JWT with the given key. This is similar with
        :meth:`verify`, except that it will raise BadSignatureError when
        signature doesn't match.

        :param s: text of JWT
        :param key: key used to verify the signature
        :param claims_cls: class to be used for JWT claims
        :param claims_options: `options` parameters for claims_cls
        :param claims_params: `params` parameters for claims_cls
        :return: claims_cls instance
        :raise: BadSignatureError
        ó   .r   é   zInvalid input segments lengthr&   r9   )ÚoptionsÚparams)r   ÚcallableÚcreate_load_keyÚprepare_raw_keyr   Úcountr   Údeserialize_compactÚdecode_payloadr   r   )	r   Úsr:   Ú
claims_clsÚclaims_optionsÚclaims_paramsÚload_keyÚ	dot_countÚdatas	            r   ÚdecodezJsonWebToken.decodeP   s«   € ð ÐÜ"ˆJä�CŒ=Ø‰Hä&¤°sÓ';Ó<ˆHä�Q‹KˆØ—G‘G˜D“Mˆ	Ø˜Š>Ø—9‘9×0Ñ0°°H¼nÓM‰DØ˜!Š^Ø—9‘9×0Ñ0°°H¼nÓM‰DäÐ=Ó>Ð>ÙØ�‰OØ�‰NØ"Ø ô	
ð 	
r   )N)T)NNN)Ú__name__Ú
__module__Ú__qualname__r!   ÚreÚcompileÚjoinÚDOTALLr$   r   r)   r>   rQ   © r   r   r   r      sH   „ ØC€Oà!�r—z‘zØ�	‰	òó		
ð 	�	‰	óÐóSò
,óBô6"
r   r   c                 ó    — 	 t        t        | «      «      }t	        |t
        «      st        d«      ‚|S # t        $ r}t        d«      |‚d }~ww xY w)NzInvalid payload valuezInvalid payload type)r   r   Ú
ValueErrorr   r"   Údict)Úbytes_payloadr&   Úexcs      r   rI   rI   u   sS   € ð<ÜœZ¨Ó6Ó7ˆô �gœtÔ$ÜÐ0Ó1Ð1Ø€Nøô	 ò <ÜÐ1Ó2¸Ð;ûð<ús   ‚3 ³	A¼AÁAc                 óÜ   — t        | t        «      r| S t        | t        «      r/| j                  d«      r| j	                  d«      rt        | «      } | S t        | t        t        f«      rd| i} | S )Nú{ú}Úkeys)r"   r   r#   Ú
startswithÚendswithr   ÚtupleÚlist)Úraws    r   rF   rF      s_   € Ü�#”vÔØˆ
ä�#”sÔ §¡¨sÔ 3¸¿¹ÀSÔ8IÜ˜‹oˆð €Jô 
�Cœ%¤˜Ô	'Ø�sˆmˆØ€Jr   c                 óJ  — t        | t        «      rT|j                  d«      }|r| j                  |«      S t	        j
                  | j                  «      }|j                  |d<   |S t        | t        «      red| v ra| d   }|j                  d«      }|D ]  }|j                  d«      |k(  sŒ|c S  |st	        j
                  |«      }|d   |d<   |S t        d«      ‚t        | t        «      rd| v r
| d   |d<   | S t        | t        «      r| j                  r| j                  |d<   | S )NÚkidrb   úInvalid JSON Web Key Set)r"   r   r2   Úfind_by_kidÚrandomÚchoicerb   ri   r\   r[   r   )r:   r9   ri   Úrvrb   r'   s         r   r7   r7   Š   s  € Ü�#”vÔØ�j‰j˜ÓˆÙØ—?‘? 3Ó'Ð'ä�]‰]˜3Ÿ8™8Ó$ˆàŸ™ˆˆu‰Øˆ	ä�#”tÔ ¨3¡Ø�6‰{ˆØ�j‰j˜ÓˆØò 	ˆAØ�u‰u�U‹|˜sÓ"Ø’ð	ñ Ü—‘˜tÓ$ˆBØ˜u™IˆF�5‰MØˆIÜÐ3Ó4Ð4ô �#”tÔ ¨#¡Ø˜E™
ˆˆu‰ð €Jô 
�CœÔ	 #§'¢'ØŸ™ˆˆu‰Ø€Jr   c                 ó   ‡ — ˆ fd„}|S )Nc                 óP  •— t        ‰t        «      r ‰j                  | j                  d«      «      S t        ‰t        «      rdd‰v r`‰d   }| j                  d«      }|�*|D ]  }|j                  d«      |k(  sŒ|c S  t        d«      ‚t        |«      dk(  r|d   S t        d«      ‚‰S )Nri   rb   r   r   rj   )r"   r   rk   r2   r\   Úlenr[   )r9   r&   rb   ri   r'   r:   s        €r   rN   z!create_load_key.<locals>.load_key«   sª   ø€ Ü�cœ6Ô"Ø—?‘? 6§:¡:¨eÓ#4Ó5Ð5ä�cœ4Ô  V¨s¡]Ø�v‘;ˆDØ—*‘*˜UÓ#ˆCàˆàò !�AØ—u‘u˜U“| sÓ*Ø šð!ô Ð7Ó8Ð8ô �t“9 ’>Ø ™7�NÜÐ7Ó8Ð8Øˆ
r   rY   )r:   rN   s   ` r   rE   rE   ª   s   ø€ ôð( €Or   )r4   r3   rl   rU   Úauthlib.common.encodingr   r   r   r   Úerrorsr   r	   Úrfc7515r
   Úrfc7516r   Úrfc7517r   r   Úclaimsr   r   rI   rF   r7   rE   rY   r   r   ú<module>rx      sT   ðÛ Û Û Û 	å .Ý .Ý ,Ý .å  Ý 'Ý &Ý 'Ý Ý Ý ÷^
ñ ^
òBòòó@r   