Ë
    ”Â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y)é    )Ú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                   óv   — 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y)ÚRSAKeyz"Key class of the ``RSA`` key type.ÚRSAÚeÚn)ÚdÚdpÚdqr   r   ÚpÚqÚqis   ssh-rsac           
      ó¤  — | j                   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     úT/var/www/timesheet/venv/lib/python3.12/site-packages/authlib/jose/rfc7518/rsa_key.pyÚdumps_private_keyzRSAKey.dumps_private_key   s�   € Ø×"Ñ"×2Ñ2Ó4ˆä˜w×5Ñ5×7Ñ7Ó8Ü˜w×5Ñ5×7Ñ7Ó8Ü˜wŸy™yÓ)Ü˜wŸy™yÓ)Ü˜wŸy™yÓ)Ü §¡Ó-Ü §¡Ó-Ü §¡Ó-ñ	
ð 		
ó    c                 óŒ   — | j                   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+   s1   € Ø—/‘/×0Ñ0Ó2ˆÜ" 7§9¡9Ó-´MÀ'Ç)Á)Ó4LÑMÐMr(   c                 óB  — | j                   }d|v rt        d«      ‚t        t        |d   «      t        |d   «      «      }t	        |«      r[t        t        |d   «      t        |d   «      t        |d   «      t        |d   «      t        |d	   «      t        |d
   «      |¬«      }nbt        |d   «      }t        |j                  ||j                  «      \  }}t        |||t        ||«      t        ||«      t        ||«      |¬«      }|j                  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/   s  € Ø�o‰oˆà�C‰<äÐ9Ó:Ð:ä)Ü˜#˜c™(Ó#¤]°3°s±8Ó%<ó
ˆô ! Ô%Ü'Ü  C¡Ó)Ü  C¡Ó)Ü  C¡Ó)Ü" 3 t¡9Ó-Ü" 3 t¡9Ó-Ü" 3 t¡9Ó-Ø-ô‰Gô ˜c #™hÓ'ˆAÜ,¨^×-=Ñ-=¸qÀ.×BRÑBRÓS‰DˆAˆqÜ'ØØØÜ! ! QÓ'Ü! ! QÓ'Ü! ! QÓ'Ø-ôˆGð ×"Ñ"¤?Ó#4Ó5Ð5r(   c                 ó¤   — t        t        | j                  d   «      t        | j                  d   «      «      }|j                  t	        «       «      S )Nr   r   )r   r   r.   r*   r   r#   s     r&   Úload_public_keyzRSAKey.load_public_keyS   sC   € Ü"Ü˜$Ÿ/™/¨#Ñ.Ó/´¸t¿¹ÈsÑ?SÓ1Tó
ˆð ×!Ñ!¤/Ó"3Ó4Ð4r(   Nc                 óÒ   — |dk  rt        d«      ‚|dz  dk7  rt        d«      ‚t        j                  d|t        «       ¬«      }|s|j	                  «       }| j                  ||¬«      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)Úclsr8   r;   Ú
is_privateÚraw_keys        r&   Úgenerate_keyzRSAKey.generate_keyY   so   € à�cŠ>ÜÐAÓBÐBØ�a‰<˜1ÒÜÐ:Ó;Ð;Ü×*Ñ*Ø!ØÜ#Ó%ô
ˆñ
 Ø×(Ñ(Ó*ˆGØ�~‰~˜g¨wˆ~Ó7Ð7r(   c                 ó¦   — | j                  |«        | |¬«      }||_        d|v r+t        |«      s |j                  «        |j	                  «        |S )Nr:   r   )Úcheck_required_fieldsr.   r0   Úload_raw_keyÚload_dict_key)r>   Úrawr;   Úkeys       r&   Úimport_dict_keyzRSAKey.import_dict_keyh   sM   € à×!Ñ! #Ô&Ù˜'Ô"ˆØˆŒØ�#‰:Ô3°CÔ8à×ÑÔØ×ÑÔØˆ
r(   )i   NF)Úreturnr   )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   ÚclassmethodrA   rH   © r(   r&   r   r      sr   „ Ù,à
€CØ!€NØ4€Oà˜c˜
ÐÚDÐØ ˜:ÐØ"Ðò
òNò"6òH5ð ó8ó ð8ð òó ñr(   r   c                 ó|   — g d¢}|D �cg c]  }|| v ‘Œ }}t        |«      ryt        |«      rt        d«      ‚yc c}w )N)r   r   r   r   r   Tz@RSA key must include all parameters if any are present besides dF)ÚallÚanyr/   )r1   ÚpropsÚpropÚprops_founds       r&   r0   r0   t   sK   € Ú(€EØ+0Ö1 4�4˜3’;Ð1€KÐ1Ü
ˆ;ÔØä
ˆ;ÔÜØNó
ð 	
ð ùò 2s   ‰9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   rV   r(   r&   ú<module>rb      s@   ðÝ 8Ý 9Ý XÝ KÝ FÝ JÝ FÝ FÝ FÝ Så 1Ý 1å #ô_ˆ]ô _óDr(   