
    k7i                        S SK Jr  S SK Jr  S SKJr  S SKJr  S SKJr  S SKJr  S SK	J
r
  S SK	Jr  S S	KJr  S S
KJr  S SKJr  S SKJr  S SKJr  S SKJr  S SKJr  S SKJr  SSKJr  \\\\S.r\\\
\S.r " S S\5      rg)    )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                       \ rS rSrSrSrSS/r\rSS/r\	" \
R                  5       5      r\	" \R                  5       5      rSrS r\S	 5       rS
 rS rS rSS jr\SSS jj5       rSrg)OKPKey#   z"Key class of the ``OKP`` key type.OKPcrvxds   ssh-ed25519c                     U R                  5       nU(       a,  [        U[        [        45      (       a  UR	                  U5      $ [        S5      e)Nz%Invalid key for exchanging shared key)get_private_key
isinstancer	   r   exchange
ValueError)selfpubkeyprivate_keys      V/home/james-whalen/.local/lib/python3.13/site-packages/authlib/jose/rfc8037/okp_key.pyexchange_shared_keyOKPKey.exchange_shared_key.   sB    **,:k4Dn3UVV''//@AA    c                     [        U [        [        45      (       a  g[        U [        [        45      (       a  g[        U [
        [        45      (       a  g[        U [        [        45      (       a  gg )Nr   r   r   r   )	r"   r   r   r   r   r
   r	   r   r   )keys    r(   get_key_curveOKPKey.get_key_curve5   s^    c,.?@AAno>??o/?@AAm^<== >r+   c                     [         U R                  S      n[        [        U R                  S   5      5      nUR	                  U5      $ )Nr   r   )PRIVATE_KEYS_MAP
_dict_datar   r   from_private_bytes)r%   crv_keyd_bytess      r(   load_private_keyOKPKey.load_private_key@   s>    "4??5#9:#HT__S-A$BC))'22r+   c                     [         U R                  S      n[        [        U R                  S   5      5      nUR	                  U5      $ )Nr   r   )PUBLIC_KEYS_MAPr2   r   r   from_public_bytes)r%   r4   x_bytess      r(   load_public_keyOKPKey.load_public_keyE   s>    !$//%"89#HT__S-A$BC((11r+   c                    U R                  U R                  R                  5       5      nU R                  R                  [        R
                  [        R
                  [        5       5      n[        [        U5      5      US'   U$ )Nr   )
dumps_public_keyr'   
public_keyprivate_bytesr   Rawr   r   r   r   )r%   objr5   s      r(   dumps_private_keyOKPKey.dumps_private_keyJ   se    ##D$4$4$?$?$AB""00LL-++\^
 /89C
r+   Nc                     Uc  U R                   nUR                  [        R                  [        R                  5      nU R                  U5      [        [        U5      5      S.$ )N)r   r   )r@   public_bytesr   rB   r   r.   r   r   )r%   r@   r;   s      r(   r?   OKPKey.dumps_public_keyR   sS    J))(,,8H8HI%%j1-g67
 	
r+   c                     U[         ;  a  [        SU S35      e[         U   nUR                  5       nU(       d  UR                  5       nU R	                  XRS9$ )NzInvalid crv value: "")options)r1   r$   generater@   
import_key)clsr   rK   
is_privateprivate_key_clsraw_keys         r(   generate_keyOKPKey.generate_key[   sZ    &&3C5:;;*3/!**,((*G~~g~77r+    )N)r   NF)returnr   )__name__
__module____qualname____firstlineno____doc__ktyREQUIRED_JSON_FIELDSPUBLIC_KEY_FIELDSPRIVATE_KEY_FIELDStupler9   valuesPUBLIC_KEY_CLSr1   PRIVATE_KEY_CLSSSH_PUBLIC_PREFIXr)   staticmethodr.   r6   r<   rD   r?   classmethodrR   __static_attributes__rT   r+   r(   r   r   #   s    ,
C!3<,?1134N,3356O&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   r9   r1   r   rT   r+   r(   <module>rn      sq    K J O N I H M L A E F E , . 5 5 #  	 !	 @8] @8r+   