
    ([f`                         d dl mZ d dlmZmZmZmZmZmZm	Z	m
Z
 d dlmZ d dlmZmZ ddlmZ  G d de          Zd	 Zd
S )    )rsa)RSAPublicKeyRSAPrivateKeyWithSerializationRSAPrivateNumbersRSAPublicNumbersrsa_recover_prime_factorsrsa_crt_dmp1rsa_crt_dmq1rsa_crt_iqmp)default_backend)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     P/var/www/piapp/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%   s>    /0022wy))wy))
 
 	
r(   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,   sh   oC<<9:::)#c(##]3s8%<%<> > !%% 	/'C))C))C))"3t9--"3t9--"3t9---/ / /GG c#h''A, !^%57 7DAq'!!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_keyN   sQ    "$/#.//$/#.//
 
 !!/"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_keyU   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_keyd   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:"
 
 

 
 
 6  6  6D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>r   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   p   sj    (((E11115111K
; t
; ,+, , 	, 5r(   N))cryptography.hazmat.primitives.asymmetricr   -cryptography.hazmat.primitives.asymmetric.rsar   r   r   r   r   r	   r
   r   cryptography.hazmat.backendsr   authlib.common.encodingr   r   rfc7517r   r   r0   rW   r(   r&   <module>rf      s   9 9 9 9 9 9                   
 9 8 8 8 8 8 @ @ @ @ @ @ @ @ # # # # # #a a a a a] a a aH    r(   