Ë
    ”Âi›  ã                   ó  — 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 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 eeeedœZeee
edœZ G d„ de«      Zy)é    )ÚEd448PrivateKey)ÚEd448PublicKey)ÚEd25519PrivateKey)ÚEd25519PublicKey)ÚX448PrivateKey)ÚX448PublicKey)ÚX25519PrivateKey)ÚX25519PublicKey)ÚEncoding)ÚNoEncryption)ÚPrivateFormat)ÚPublicFormat)Úto_bytes)Ú
to_unicode)Úurlsafe_b64decode)Úurlsafe_b64encodeé   )ÚAsymmetricKey)ÚEd25519ÚEd448ÚX25519ÚX448c                   óÈ   — e Zd ZdZdZddgZeZddgZ ee	j                  «       «      Z eej                  «       «      ZdZd„ Zed„ «       Zd	„ Zd
„ Zd„ Zdd„Zeddd„«       Zy)ÚOKPKeyz"Key class of the ``OKP`` key type.ÚOKPÚcrvÚxÚds   ssh-ed25519c                 óŠ   — | j                  «       }|r't        |t        t        f«      r|j	                  |«      S t        d«      ‚)Nz%Invalid key for exchanging shared key)Úget_private_keyÚ
isinstancer	   r   ÚexchangeÚ
ValueError)ÚselfÚpubkeyÚprivate_keys      úT/var/www/timesheet/venv/lib/python3.12/site-packages/authlib/jose/rfc8037/okp_key.pyÚexchange_shared_keyzOKPKey.exchange_shared_key.   s?   € à×*Ñ*Ó,ˆÙœ: kÔ4DÄnÐ3UÔVØ×'Ñ'¨Ó/Ð/ÜÐ@ÓAÐAó    c                 ó¼   — t        | t        t        f«      ryt        | t        t        f«      ryt        | t
        t        f«      ryt        | t        t        f«      ryy )Nr   r   r   r   )	r!   r   r   r   r   r
   r	   r   r   )Úkeys    r'   Úget_key_curvezOKPKey.get_key_curve5   sR   € ä�cÔ,Ô.?Ð@ÔAØÜ˜œn¬oÐ>Ô?ØÜ˜œoÔ/?Ð@ÔAØÜ˜œm¬^Ð<Ô=Øð >r)   c                 ó’   — t         | j                  d      }t        t        | j                  d   «      «      }|j	                  |«      S )Nr   r   )ÚPRIVATE_KEYS_MAPÚ
_dict_datar   r   Úfrom_private_bytes)r$   Úcrv_keyÚd_bytess      r'   Úload_private_keyzOKPKey.load_private_key@   s>   € Ü" 4§?¡?°5Ñ#9Ñ:ˆÜ#¤H¨T¯_©_¸SÑ-AÓ$BÓCˆØ×)Ñ)¨'Ó2Ð2r)   c                 ó’   — t         | j                  d      }t        t        | j                  d   «      «      }|j	                  |«      S )Nr   r   )ÚPUBLIC_KEYS_MAPr/   r   r   Úfrom_public_bytes)r$   r1   Úx_bytess      r'   Úload_public_keyzOKPKey.load_public_keyE   s>   € Ü! $§/¡/°%Ñ"8Ñ9ˆÜ#¤H¨T¯_©_¸SÑ-AÓ$BÓCˆØ×(Ñ(¨Ó1Ð1r)   c                 ó  — | j                  | j                  j                  «       «      }| j                  j                  t        j
                  t        j
                  t        «       «      }t        t        |«      «      |d<   |S )Nr   )
Údumps_public_keyr&   Ú
public_keyÚprivate_bytesr   ÚRawr   r   r   r   )r$   Úobjr2   s      r'   Údumps_private_keyzOKPKey.dumps_private_keyJ   se   € Ø×#Ñ# D×$4Ñ$4×$?Ñ$?Ó$AÓBˆØ×"Ñ"×0Ñ0Ü�L‰Lœ-×+Ñ+¬\«^ó
ˆô Ô/°Ó8Ó9ˆˆC‰Øˆ
r)   Nc                 óÆ   — |€| j                   }|j                  t        j                  t        j                  «      }| j                  |«      t        t        |«      «      dœS )N)r   r   )r;   Úpublic_bytesr   r=   r   r,   r   r   )r$   r;   r7   s      r'   r:   zOKPKey.dumps_public_keyR   sS   € ØÐØŸ™ˆJØ×)Ñ)¬(¯,©,¼×8HÑ8HÓIˆà×%Ñ% jÓ1ÜÔ-¨gÓ6Ó7ñ
ð 	
r)   c                 ó¬   — |t         vrt        d|› d�«      ‚t         |   }|j                  «       }|s|j                  «       }| j	                  ||¬«      S )NzInvalid crv value: "ú")Úoptions)r.   r#   Úgenerater;   Ú
import_key)Úclsr   rD   Ú
is_privateÚprivate_key_clsÚraw_keys         r'   Úgenerate_keyzOKPKey.generate_key[   s\   € àÔ&Ñ&ÜÐ3°C°5¸Ð:Ó;Ð;Ü*¨3Ñ/ˆØ!×*Ñ*Ó,ˆÙØ×(Ñ(Ó*ˆGØ�~‰~˜g¨wˆ~Ó7Ð7r)   )N)r   NF)Úreturnr   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚktyÚREQUIRED_JSON_FIELDSÚPUBLIC_KEY_FIELDSÚPRIVATE_KEY_FIELDSÚtupler5   ÚvaluesÚPUBLIC_KEY_CLSr.   ÚPRIVATE_KEY_CLSÚSSH_PUBLIC_PREFIXr(   Ústaticmethodr,   r3   r8   r?   r:   ÚclassmethodrK   © r)   r'   r   r   #   s“   „ Ù,à
€CØ! 3˜<ÐØ,ÐØ ˜ÐÙ˜?×1Ñ1Ó3Ó4€NÙÐ,×3Ñ3Ó5Ó6€OØ&ÐòBð ñó ðò3ò
2ò
ó
ð ó8ó ñ8r)   r   N)Ú/cryptography.hazmat.primitives.asymmetric.ed448r   r   Ú1cryptography.hazmat.primitives.asymmetric.ed25519r   r   Ú.cryptography.hazmat.primitives.asymmetric.x448r   r   Ú0cryptography.hazmat.primitives.asymmetric.x25519r	   r
   Ú,cryptography.hazmat.primitives.serializationr   r   r   r   Úauthlib.common.encodingr   r   r   r   Úrfc7517r   r5   r.   r   r\   r)   r'   ú<module>rd      sq   ðÝ KÝ JÝ OÝ NÝ IÝ HÝ MÝ LÝ AÝ EÝ FÝ Eå ,Ý .Ý 5Ý 5å #ð  ØØØñ	€ð !ØØØñ	Ð ô@8ˆ]õ @8r)   