Ë
    ”Âi  ã                   óh   — 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	  G d	„ d
«      Z
y)é    N)ÚOrderedDict)Ú
json_dumps)Úto_bytes)Ú
to_unicode)Úurlsafe_b64encodeé   )ÚInvalidUseErrorc                   ó¼   — e Zd ZdZdZg d¢Zg d¢Zg d¢Zg Zdd„Z	e
d„ «       Ze
d	„ «       Zd
„ Zd„ Ze
d„ «       Zd„ Zd„ Zd„ Zdd„Zdd„Zd„ Zed„ «       Zed„ «       Zy)ÚKeyz*This is the base class for a JSON Web Key.Ú_)ÚuseÚkey_opsÚalgÚkidÚx5uÚx5cÚx5tzx5t#S256)ÚsignÚdecryptÚ	unwrapKey)ÚverifyÚencryptÚwrapKeyNc                 ó(   — |xs i | _         i | _        y ©N)ÚoptionsÚ
_dict_data)Úselfr   s     úU/var/www/timesheet/venv/lib/python3.12/site-packages/authlib/jose/rfc7517/base_key.pyÚ__init__zKey.__init__    s   € Ø’} "ˆŒØˆ�ó    c                 óô   — | j                   s| j                  «        t        | j                   «      }| j                  |d<   | j                  D ](  }||vsŒ|| j
                  v sŒ| j
                  |   ||<   Œ* |S )NÚkty)r   Úload_dict_keyÚdictr#   ÚALLOWED_PARAMSr   )r   ÚrvÚks      r   Útokensz
Key.tokens$   so   € à�ŠØ×ÑÔ ä�$—/‘/Ó"ˆØ—H‘Hˆˆ5‰	Ø×$Ñ$ò 	(ˆAØ˜Š{˜q D§L¡LÒ0ØŸ™ Q™��1’ð	(ð ˆ	r!   c                 ó8   — | j                   j                  d«      S )Nr   )r)   Úget©r   s    r   r   zKey.kid0   s   € à�{‰{�‰˜uÓ%Ð%r!   c                 ó6   — | j                   j                  «       S r   )r)   Úkeysr,   s    r   r.   zKey.keys4   s   € Ø�{‰{×ÑÓ!Ð!r!   c                 ó    — | j                   |   S r   )r)   )r   Úitems     r   Ú__getitem__zKey.__getitem__7   s   € Ø�{‰{˜4Ñ Ð r!   c                 ó   — t        «       ‚r   ©ÚNotImplementedErrorr,   s    r   Úpublic_onlyzKey.public_only:   ó   € ä!Ó#Ð#r!   c                 ó   — t        «       ‚r   r3   r,   s    r   Úload_raw_keyzKey.load_raw_key>   ó   € Ü!Ó#Ð#r!   c                 ó   — t        «       ‚r   r3   r,   s    r   r$   zKey.load_dict_keyA   r9   r!   c                 óB  — | j                   j                  d«      }|�||vrt        d|› d�«      ‚|| j                  v r| j                  rt        d|› d�«      ‚| j                   j                  d«      }|r)|dv r|d	k7  r
t        «       ‚y|d
v r|dk7  r
t        «       ‚yyy)z¢Check if the given key_op is supported by this key.

        :param operation: key operation value, such as "sign", "encrypt".
        :raise: ValueError
        r   NzUnsupported key_op "ú"zInvalid key_op "z" for public keyr   )r   r   Úsig)r   r   r   r   Úenc)r)   r+   Ú
ValueErrorÚPRIVATE_KEY_OPSr5   r	   )r   Ú	operationr   r   s       r   Úcheck_key_opzKey.check_key_opD   sÀ   € ð —+‘+—/‘/ )Ó,ˆØÐ 9°GÑ#;ÜÐ3°I°;¸aÐ@ÓAÐAà˜×,Ñ,Ñ,°×1AÒ1AÜÐ/°	¨{Ð:JÐKÓLÐLà�k‰k�o‰o˜eÓ$ˆÙØÐ.Ñ.Ø˜%’<Ü)Ó+Ð+ð  àÐLÑLØ˜%’<Ü)Ó+Ð+ð  ð Mð	 r!   c                 ó   — t        «       ‚r   r3   )r   Ú
is_privateÚparamss      r   Úas_dictzKey.as_dictZ   r9   r!   c                 ó>   —  | j                   |fi |¤Ž}t        |«      S )z$Represent this key as a JSON string.)rF   r   )r   rD   rE   Úobjs       r   Úas_jsonzKey.as_json]   s!   € àˆd�l‰l˜:Ñ0¨Ñ0ˆÜ˜#‹Ðr!   c                 óJ  — t        | j                  «      }|j                  d«       |j                  «        t	        «       }|D ]  }| j
                  |   ||<   Œ t        |«      }t        j                  t        |«      «      j                  «       }t        t        |«      «      S )z8Implementation of RFC7638 JSON Web Key (JWK) Thumbprint.r#   )ÚlistÚREQUIRED_JSON_FIELDSÚappendÚsortr   r)   r   ÚhashlibÚsha256r   Údigestr   r   )r   ÚfieldsÚdatar(   Ú	json_dataÚdigest_datas         r   Ú
thumbprintzKey.thumbprintb   s‡   € ä�d×/Ñ/Ó0ˆØ�‰�eÔØ�‰ŒÜ‹}ˆàò 	%ˆAØ—k‘k !‘nˆD�ŠGð	%ô ˜tÓ$ˆ	Ü—n‘n¤X¨iÓ%8Ó9×@Ñ@ÓBˆÜÔ+¨KÓ8Ó9Ð9r!   c                 óL   — | j                   D ]  }||vsŒt        d|› d�«      ‚ y )NzMissing required field: "r<   )rL   r?   )ÚclsrS   r(   s      r   Úcheck_required_fieldszKey.check_required_fieldsp   s5   € à×)Ñ)ò 	CˆAØ˜Š}Ü Ð#<¸Q¸C¸qÐ!AÓBÐBñ	Cr!   c                 ó   — t        «       ‚r   r3   )rX   Úkeys     r   Úvalidate_raw_keyzKey.validate_raw_keyv   r6   r!   r   )F)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r#   r&   r@   ÚPUBLIC_KEY_OPSrL   r    Úpropertyr)   r   r.   r1   r5   r8   r$   rB   rF   rI   rV   ÚclassmethodrY   r\   © r!   r   r   r      s¸   „ Ù4à
€CâV€Nò€Oò
€Nð Ðóð ñ	ó ð	ð ñ&ó ð&ò"ò!ð ñ$ó ð$ò$ò$ò,ó,$óò
:ð ñCó ðCð
 ñ$ó ñ$r!   r   )rO   Úcollectionsr   Úauthlib.common.encodingr   r   r   r   Úerrorsr	   r   rd   r!   r   ú<module>rh      s&   ðÛ Ý #å .Ý ,Ý .Ý 5å $÷l$ò l$r!   