
    !<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  G d de          Zd ZdS )    )default_backend)rsa)RSAPrivateKeyWithSerialization)RSAPrivateNumbers)RSAPublicKey)RSAPublicNumbers)rsa_crt_dmp1)rsa_crt_dmq1)rsa_crt_iqmp)rsa_recover_prime_factors)base64_to_int)int_to_base64   )AsymmetricKeyc                       e Zd ZdZdZeZeZddgZ	g dZ
ddgZdZd Zd Zd	 Zd
 Zeddd            Zedd            ZdS )RSAKeyz"Key class of the ``RSA`` key type.RSAen)ddpdqr   r   pqqis   ssh-rsac           
      ~   | j                                         }t          |j        j                  t          |j        j                  t          |j                  t          |j                  t          |j                  t          |j	                  t          |j
                  t          |j                  dS )N)r   r   r   r   r   r   r   r   )private_keyprivate_numbersr   public_numbersr   r   r   r   r   dmp1dmq1iqmpselfnumberss     /Users/kimhansen/Desktop/03 Workspace/ceo-agents/chl-effectiveness/mcp-servers/whoop/.venv/lib/python3.11/site-packages/authlib/jose/rfc7518/rsa_key.pydumps_private_keyzRSAKey.dumps_private_key   s    "2244w5788w5788wy))wy))wy))------	
 	
 		
    c                     | j                                         }t          |j                  t          |j                  dS )N)r   r   )
public_keyr   r   r   r   r#   s     r&   dumps_public_keyzRSAKey.dumps_public_key+   s7    /0022"79--M')4L4LMMMr(   c                    | j         }d|v rt          d          t          t          |d                   t          |d                             }t	          |          rt          t          |d                   t          |d                   t          |d                   t          |d                   t          |d	                   t          |d
                   |          }nst          |d                   }t          |j        ||j                  \  }}t          |||t          ||          t          ||          t          ||          |          }|                    t                                S )Nothz"oth" is not supported yetr   r   r   r   r   r   r   r   )r   r   r   r    r!   r"   r   )
_dict_data
ValueErrorr   r   has_all_prime_factorsr   r   r   r   r	   r
   r   r   r   )r$   objr   r%   r   r   r   s          r&   load_private_keyzRSAKey.load_private_key/   sc   oC<<9:::)#c(##]3s8%<%<
 
 !%% 	'C))C))C))"3t9--"3t9--"3t9---  GG c#h''A,^-=q.BRSSDAq'!!Q''!!Q''!!Q''-  G ""?#4#4555r(   c                     t          t          | j        d                   t          | j        d                             }|                    t	                                S )Nr   r   )r   r   r.   r*   r   r#   s     r&   load_public_keyzRSAKey.load_public_keyS   sP    "$/#.//ts?S1T1T
 
 !!/"3"3444r(      NFreturnc                     |dk     rt          d          |dz  dk    rt          d          t          j        d|t                                }|s|                                }|                     ||          S )	Ni   z"key_size must not be less than 512   r   zInvalid key_size for RSAKeyi  )public_exponentkey_sizebackendoptions)r/   r   generate_private_keyr   r*   
import_key)clsr:   r=   
is_privateraw_keys        r&   generate_keyzRSAKey.generate_keyY   s    c>>ABBBa<1:;;;*!#%%
 
 

  	+((**G~~gw~777r(   c                     |                      |            | |          }||_        d|v r7t          |          s(|                                 |                                 |S )Nr<   r   )check_required_fieldsr.   r0   load_raw_keyload_dict_key)r@   rawr=   keys       r&   import_dict_keyzRSAKey.import_dict_keyh   sn    !!#&&&c'"""#::3C88:
r(   )r5   NF)r6   r   )N)__name__
__module____qualname____doc__ktyr   PUBLIC_KEY_CLSr   PRIVATE_KEY_CLSPUBLIC_KEY_FIELDSPRIVATE_KEY_FIELDSREQUIRED_JSON_FIELDSSSH_PUBLIC_PREFIXr'   r+   r2   r4   classmethodrC   rJ    r(   r&   r   r      s        ,,
C!N4Oc
DDD:"
 
 
N N N"6 "6 "6H5 5 5 8 8 8 8 [8    [  r(   r   c                      g d} fd|D             }t          |          rdS t          |          rt          d          dS )N)r   r   r   r   r   c                     g | ]}|v S rW   rW   ).0propr1   s     r&   
<listcomp>z)has_all_prime_factors.<locals>.<listcomp>v   s    111443;111r(   Tz@RSA key must include all parameters if any are present besides dF)allanyr/   )r1   propsprops_founds   `  r&   r0   r0   t   sh    (((E11115111K
; t
; 
N
 
 	
 5r(   N)cryptography.hazmat.backendsr   )cryptography.hazmat.primitives.asymmetricr   -cryptography.hazmat.primitives.asymmetric.rsar   r   r   r   r	   r
   r   r   authlib.common.encodingr   r   rfc7517r   r   r0   rW   r(   r&   <module>rf      s;   8 8 8 8 8 8 9 9 9 9 9 9 X X X X X X K K K K K K F F F F F F J J J J J J F F F F F F F F F F F F F F F F F F S S S S S S 1 1 1 1 1 1 1 1 1 1 1 1 # # # # # #_ _ _ _ _] _ _ _D    r(   