
    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\5      rS rg)    )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                       \ rS rSrSrSr\r\r	SS/r
/ SQrSS/rSrS rS	 rS
 rS r\SSS jj5       r\SS j5       rSrg)RSAKey   z"Key class of the ``RSA`` key type.RSAen)ddpdqr   r   pqqis   ssh-rsac           
         U R                   R                  5       n[        UR                  R                  5      [        UR                  R
                  5      [        UR                  5      [        UR                  5      [        UR                  5      [        UR                  5      [        UR                  5      [        UR                  5      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     V/home/james-whalen/.local/lib/python3.13/site-packages/authlib/jose/rfc7518/rsa_key.pydumps_private_keyRSAKey.dumps_private_key   s    ""224w55778w55778wyy)wyy)wyy)---	
 		
    c                     U R                   R                  5       n[        UR                  5      [        UR                  5      S.$ )N)r   r   )
public_keyr    r   r   r   r$   s     r'   dumps_public_keyRSAKey.dumps_public_key+   s1    //002"799-M'))4LMMr*   c                 :   U R                   nSU;   a  [        S5      e[        [        US   5      [        US   5      5      n[	        U5      (       aX  [        [        US   5      [        US   5      [        US   5      [        US   5      [        US	   5      [        US
   5      US9nOZ[        US   5      n[        UR                  XBR                  5      u  pV[        UUU[        XE5      [        XF5      [        XV5      US9nUR                  [        5       5      $ )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_keyRSAKey.load_private_key/   s   ooC<9::)#c(#]3s8%<
 !%%'C)C)C)"3t9-"3t9-"3t9--G c#h'A,^-=-=qBRBRSDA'!!'!!'!!'-G ""?#455r*   c                     [        [        U R                  S   5      [        U R                  S   5      5      nUR                  [	        5       5      $ )Nr   r   )r   r   r1   r,   r   r$   s     r'   load_public_keyRSAKey.load_public_keyS   sC    "$//#./ts?S1T
 !!/"344r*   Nc                     US:  a  [        S5      eUS-  S:w  a  [        S5      e[        R                  " SU[        5       S9nU(       d  UR	                  5       nU R                  XBS9$ )	Ni   z"key_size must not be less than 512   r   zInvalid key_size for RSAKeyi  )public_exponentkey_sizebackendoptions)r2   r   generate_private_keyr   r,   
import_key)clsr=   r@   
is_privateraw_keys        r'   generate_keyRSAKey.generate_keyY   sm    c>ABBa<1:;;**!#%

 ((*G~~g~77r*   c                     U R                  U5        U " US9nXl        SU;   a0  [        U5      (       d   UR                  5         UR	                  5         U$ )Nr?   r   )check_required_fieldsr1   r3   load_raw_keyload_dict_key)rC   rawr@   keys       r'   import_dict_keyRSAKey.import_dict_keyh   sN    !!#&'"#:3C88
r*    )i   NF)returnr   )N)__name__
__module____qualname____firstlineno____doc__ktyr   PUBLIC_KEY_CLSr   PRIVATE_KEY_CLSPUBLIC_KEY_FIELDSPRIVATE_KEY_FIELDSREQUIRED_JSON_FIELDSSSH_PUBLIC_PREFIXr(   r-   r5   r8   classmethodrF   rN   __static_attributes__rP   r*   r'   r   r      sr    ,
C!N4Oc
D:"
N"6H5 8 8  r*   r   c                     / SQnU Vs/ s H  o"U ;   PM	     nn[        U5      (       a  g[        U5      (       a  [        S5      egs  snf )N)r   r   r   r   r   Tz@RSA key must include all parameters if any are present besides dF)allanyr2   )r4   propspropprops_founds       r'   r3   r3   t   sP    (E+01543;5K1
;
;N
 	
  2s   A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   r3   rP   r*   r'   <module>rk      s@    8 9 X K F J F F F S 1 1 #_] _Dr*   