
    k7iQ                         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\5      rg)    )default_backend)ec)	SECP256K1)	SECP256R1)	SECP384R1)	SECP521R1)(EllipticCurvePrivateKeyWithSerialization)EllipticCurvePrivateNumbers)EllipticCurvePublicKey)EllipticCurvePublicNumbers)base64_to_int)int_to_base64   )AsymmetricKeyc                       \ rS rSrSrSr\\\\	S.r
\R                  S\R                  S\R                  S\	R                  S0r/ S	Qr\r/ S
Qr\r\rSrS r\S 5       rS rS rS rS r\SSS jj5       rSrg)ECKey   z!Key class of the ``EC`` key type.EC)P-256P-384P-521	secp256k1r   r   r   r   crvxy)r   dr   r   s   ecdsa-sha2-c                     U R                  5       nU(       a%  UR                  [        R                  " 5       U5      $ [	        S5      e)Nz%Invalid key for exchanging shared key)get_private_keyexchanger   ECDH
ValueError)selfpubkeyprivate_keys      U/home/james-whalen/.local/lib/python3.13/site-packages/authlib/jose/rfc7518/ec_key.pyexchange_shared_keyECKey.exchange_shared_key.   s8    **,''	6::@AA    c                 t    U R                  5       nU(       d  U R                  nUR                  R                  $ )N)r   
public_keycurvekey_size)r#   raw_keys     r&   curve_key_sizeECKey.curve_key_size5   s,    &&(ooG}}%%%r)   c                 ,   U R                   U R                  S      " 5       n[        [        U R                  S   5      [        U R                  S   5      U5      n[	        [        U R
                  S   5      U5      nUR                  [        5       5      $ )Nr   r   r   r   )
DSS_CURVES
_dict_datar   r   r
   tokensr%   r   )r#   r,   public_numbersprivate_numberss       r&   load_private_keyECKey.load_private_key<   s     6793$//#./$//#./

 6$++c*+^
 **?+<==r)   c                     U R                   U R                  S      " 5       n[        [        U R                  S   5      [        U R                  S   5      U5      nUR	                  [        5       5      $ )Nr   r   r   )r2   r3   r   r   r+   r   )r#   r,   r5   s      r&   load_public_keyECKey.load_public_keyH   sa     6793$//#./$//#./

 (():;;r)   c                 4   U R                   R                  5       nU R                  U R                   R                  R                     [        UR                  R                  5      [        UR                  R                  5      [        UR                  5      S.$ )N)r   r   r   r   )
r%   r6   
CURVES_DSSr,   namer   r5   r   r   private_valuer#   numberss     r&   dumps_private_keyECKey.dumps_private_keyQ   st    ""224??4#3#3#9#9#>#>?w55778w55778w445	
 	
r)   c                     U R                   R                  5       nU R                  UR                  R                     [        UR                  5      [        UR                  5      S.$ )Nr   )r+   r5   r=   r,   r>   r   r   r   r@   s     r&   dumps_public_keyECKey.dumps_public_keyZ   sL    //002??7==#5#56wyy)wyy)
 	
r)   Nc                     XR                   ;  a  [        SU S35      e[        R                  " U R                   U   " 5       [	        5       S9nU(       d  UR                  5       nU R                  XBS9$ )NzInvalid crv value: "")r,   backend)options)r2   r"   r   generate_private_keyr   r+   
import_key)clsr   rJ   
is_privater.   s        r&   generate_keyECKey.generate_keyb   sj    nn$3C5:;;))..%'#%
 ((*G~~g~77r)    )r   NF)returnr   )__name__
__module____qualname____firstlineno____doc__ktyr   r   r   r   r2   r>   r=   REQUIRED_JSON_FIELDSPUBLIC_KEY_FIELDSPRIVATE_KEY_FIELDSr   PUBLIC_KEY_CLSr	   PRIVATE_KEY_CLSSSH_PUBLIC_PREFIXr'   propertyr/   r7   r:   rB   rE   classmethodrO   __static_attributes__rQ   r)   r&   r   r      s    +
CJ 		J -,/+N>O&B & &
><

 	8 	8r)   r   N)cryptography.hazmat.backendsr   )cryptography.hazmat.primitives.asymmetricr   ,cryptography.hazmat.primitives.asymmetric.ecr   r   r   r   r	   r
   r   r   authlib.common.encodingr   r   rfc7517r   r   rQ   r)   r&   <module>rg      s?    8 8 B B B B U O S 1 1 #X8M X8r)   