§
    pïg:T  ã                   óò  — d dl Z d dlZd dlmZmZmZ d dlmZ d dlm	Z	m
Z
 d dlmZ d dlmZmZmZmZmZmZmZmZmZ d dlmZmZmZmZ ej        rd dlmZ d	d
dedej         eef         de	j!        de"f
d„Z#d	d
dej         d         de$dede$f
d„Z%d	d
dej         d         de$de"dede$fd„Z&d	d
dej         d         dedej'        e	j!                 de"f
d„Z(d	d
dedej'        e	j!                 dej         d         dej)        ej*        ge"f         f
d„Z+d	d
dede	j!        ddde$de$fd„Z,d	d
dede	j!        ddd e$de$ddfd!„Z-d	d
dedej'        e	j!                 ddd e$de$fd"„Z. G d#„ de¦  «        Z/ G d$„ de¦  «        Z0dS )%é    N)ÚInvalidSignatureÚUnsupportedAlgorithmÚ_Reasons)Ú_calculate_digest_and_algorithm)ÚhashesÚserialization)Úutils)	ÚAsymmetricPaddingÚMGF1ÚOAEPÚPKCS1v15ÚPSSÚ_AutoÚ_DigestLengthÚ
_MaxLengthÚcalculate_max_pss_salt_length)ÚRSAPrivateKeyÚRSAPrivateNumbersÚRSAPublicKeyÚRSAPublicNumbers)ÚBackendÚbackendr   ÚpssÚkeyÚhash_algorithmÚreturnc                 ó   — |j         }t          |t          ¦  «        rt          ||¦  «        S t          |t          ¦  «        r|j        S t          |t          ¦  «        r0t          |t          ¦  «        rt          d¦  «        ‚| j	        j
        S |S )Nz6PSS salt length can only be set to AUTO when verifying)Ú_salt_lengthÚ
isinstancer   r   r   Údigest_sizer   r   Ú
ValueErrorÚ_libÚRSA_PSS_SALTLEN_AUTO)r   r   r   r   Úsalts        úJ/usr/lib/python3/dist-packages/cryptography/hazmat/backends/openssl/rsa.pyÚ_get_rsa_pss_salt_lengthr&   +   s”   € ð Ô€Då�$�
Ñ#Ô#ð Ý,¨S°.ÑAÔAÐAÝ	�D�-Ñ	(Ô	(ð 	ØÔ)Ð)Ý	�D�%Ñ	 Ô	 ð Ý�c�=Ñ)Ô)ð 	ÝØHñô ð ð Œ|Ô0Ð0àˆó    )Ú_RSAPrivateKeyÚ_RSAPublicKeyÚdataÚpaddingc                 ó"  — t          |t          ¦  «        st          d¦  «        ‚t          |t          ¦  «        r| j        j        }n·t          |t          ¦  «        rp| j        j        }t          |j        t          ¦  «        st          dt          j        ¦  «        ‚|                      |¦  «        st          dt          j        ¦  «        ‚n2t          d                     |j        ¦  «        t          j        ¦  «        ‚t#          | ||||¦  «        S )Nz1Padding must be an instance of AsymmetricPadding.ú'Only MGF1 is supported by this backend.zPThis combination of padding and hash algorithm is not supported by this backend.ú${} is not supported by this backend.)r   r
   Ú	TypeErrorr   r"   ÚRSA_PKCS1_PADDINGr   ÚRSA_PKCS1_OAEP_PADDINGÚ_mgfr   r   r   ÚUNSUPPORTED_MGFÚrsa_padding_supportedÚUNSUPPORTED_PADDINGÚformatÚnameÚ_enc_dec_rsa_pkey_ctx)r   r   r*   r+   Úpadding_enums        r%   Ú_enc_dec_rsar:   A   s  € õ �gÕ0Ñ1Ô1ð MÝÐKÑLÔLÐLå�'�8Ñ$Ô$ð 
Ø”|Ô5ˆˆÝ	�G�TÑ	"Ô	"ð 
Ø”|Ô:ˆå˜'œ,­Ñ-Ô-ð 	Ý&Ø9ÝÔ(ñô ð ð
 ×,Ò,¨WÑ5Ô5ð 	Ý&ð-åÔ,ñô ð ð	õ #Ø2×9Ò9¸'¼,ÑGÔGÝÔ(ñ
ô 
ð 	
õ
 ! ¨#¨t°\À7ÑKÔKÐKr'   r9   c           	      óL  — t          |t          ¦  «        r| j        j        }| j        j        }n| j        j        }| j        j        }| j                             |j        | j	        j
        ¦  «        }|                      || j	        j
        k    ¦  «         | j	                             || j        j        ¦  «        } ||¦  «        }|                      |dk    ¦  «         | j                             ||¦  «        }|                      |dk    ¦  «         | j                             |j        ¦  «        }	|                      |	dk    ¦  «         t          |t           ¦  «        r¡|                      |j        j        ¦  «        }
| j                             ||
¦  «        }|                      |dk    ¦  «         |                      |j        ¦  «        }| j                             ||¦  «        }|                      |dk    ¦  «         t          |t           ¦  «        rè|j        �át/          |j        ¦  «        dk    rÉ| j                             t/          |j        ¦  «        ¦  «        }|                      || j	        j
        k    ¦  «         | j	                             ||j        t/          |j        ¦  «        ¦  «         | j                             ||t/          |j        ¦  «        ¦  «        }|                      |dk    ¦  «         | j	                             d|	¦  «        }| j	                             d|	¦  «        } |||||t/          |¦  «        ¦  «        }| j	                             |¦  «        d |d         …         }| j                             ¦   «          |dk    rt=          d¦  «        ‚|S )Né   r   úsize_t *úunsigned char[]zEncryption/decryption failed.)r   r)   r"   ÚEVP_PKEY_encrypt_initÚEVP_PKEY_encryptÚEVP_PKEY_decrypt_initÚEVP_PKEY_decryptÚEVP_PKEY_CTX_newÚ	_evp_pkeyÚ_ffiÚNULLÚopenssl_assertÚgcÚEVP_PKEY_CTX_freeÚEVP_PKEY_CTX_set_rsa_paddingÚEVP_PKEY_sizer   Ú_evp_md_non_null_from_algorithmr2   Ú
_algorithmÚEVP_PKEY_CTX_set_rsa_mgf1_mdÚEVP_PKEY_CTX_set_rsa_oaep_mdÚ_labelÚlenÚOPENSSL_mallocÚmemmoveÚ EVP_PKEY_CTX_set0_rsa_oaep_labelÚnewÚbufferÚERR_clear_errorr!   )r   r   r*   r9   r+   ÚinitÚcryptÚpkey_ctxÚresÚbuf_sizeÚmgf1_mdÚoaep_mdÚlabelptrÚoutlenÚbufÚresbufs                   r%   r8   r8   e   s7  € õ �#•}Ñ%Ô%ð .ØŒ|Ô1ˆØ”Ô-ˆˆàŒ|Ô1ˆØ”Ô-ˆàŒ|×,Ò,¨S¬]¸G¼LÔ<MÑNÔN€HØ×Ò˜8 w¤|Ô'8Ò8Ñ9Ô9Ð9ØŒ|�Š˜x¨¬Ô)GÑHÔH€HØ
ˆ$ˆx‰.Œ.€CØ×Ò˜3 !š8Ñ$Ô$Ð$Ø
Œ,×
3Ò
3°H¸lÑ
KÔ
K€CØ×Ò˜3 š7Ñ#Ô#Ð#ØŒ|×)Ò)¨#¬-Ñ8Ô8€HØ×Ò˜8 aš<Ñ(Ô(Ð(Ý�'�4Ñ Ô ð (Ø×9Ò9ØŒLÔ#ñ
ô 
ˆð Œl×7Ò7¸À'ÑJÔJˆØ×Ò˜s QšwÑ'Ô'Ð'Ø×9Ò9¸'Ô:LÑMÔMˆØŒl×7Ò7¸À'ÑJÔJˆØ×Ò˜s QšwÑ'Ô'Ð'õ 	�7�DÑ!Ô!ð)àŒNÐ&Ý�”ÑÔ !Ò#Ð#ð ”<×.Ò.­s°7´>Ñ/BÔ/BÑCÔCˆØ×Ò˜x¨7¬<Ô+<Ò<Ñ=Ô=Ð=ØŒ×Ò˜X w¤~µs¸7¼>Ñ7JÔ7JÑKÔKÐKØŒl×;Ò;Ø�h¥ G¤NÑ 3Ô 3ñ
ô 
ˆð 	×Ò˜s ašxÑ(Ô(Ð(àŒ\×Ò˜j¨(Ñ3Ô3€FØ
Œ,×
Ò
Ð,¨hÑ
7Ô
7€Cð ˆ%�˜#˜v t­S°©Y¬YÑ
7Ô
7€CØŒ\× Ò  Ñ%Ô% k¨¨q¬	 kÔ2€FØ„L× Ò Ñ"Ô"Ð"Ø
ˆa‚x€xÝÐ8Ñ9Ô9Ð9Ø€Mr'   Ú	algorithmc                 ó¤  — t          |t          ¦  «        st          d¦  «        ‚| j                             |j        ¦  «        }|                      |dk    ¦  «         t          |t          ¦  «        r| j        j        }nÑt          |t          ¦  «        rŠt          |j
        t          ¦  «        st          dt          j        ¦  «        ‚t          |t          j        ¦  «        st          d¦  «        ‚||j        z
  dz
  dk     rt%          d¦  «        ‚| j        j        }n2t          d                     |j        ¦  «        t          j        ¦  «        ‚|S )Nz'Expected provider of AsymmetricPadding.r   r-   z*Expected instance of hashes.HashAlgorithm.é   zDDigest too large for key size. Use a larger key or different digest.r.   )r   r
   r/   r"   rK   rD   rG   r   r0   r   r2   r   r   r   r3   r   ÚHashAlgorithmr    r!   ÚRSA_PKCS1_PSS_PADDINGr6   r7   r5   )r   r   r+   rc   Ú	pkey_sizer9   s         r%   Ú_rsa_sig_determine_paddingri   ¨   sN  € õ �gÕ0Ñ1Ô1ð CÝÐAÑBÔBÐBà”×*Ò*¨3¬=Ñ9Ô9€IØ×Ò˜9 qš=Ñ)Ô)Ð)å�'�8Ñ$Ô$ð 
à”|Ô5ˆˆÝ	�G�SÑ	!Ô	!ð 
Ý˜'œ,­Ñ-Ô-ð 	Ý&Ø9ÝÔ(ñô ð õ ˜)¥VÔ%9Ñ:Ô:ð 	JÝÐHÑIÔIÐIð �yÔ,Ñ,¨qÑ0°1Ò4Ð4Ýð+ñô ð ð
 ”|Ô9ˆˆå"Ø2×9Ò9¸'¼,ÑGÔGÝÔ(ñ
ô 
ð 	
ð
 Ðr'   )r)   r(   Ú	init_funcc           	      óÒ  — t          | |||¦  «        }| j                             |j        | j        j        ¦  «        }|                      || j        j        k    ¦  «         | j                             || j        j        ¦  «        } ||¦  «        }|dk    r$|  	                    ¦   «         }t          d|¦  «        ‚|�||                      |¦  «        }	| j                             ||	¦  «        }|dk    rF|  	                    ¦   «          t          d                     |j        ¦  «        t           j        ¦  «        ‚| j                             ||¦  «        }|dk    rF|  	                    ¦   «          t          d                     |j        ¦  «        t           j        ¦  «        ‚t)          |t*          ¦  «        r³t)          |t,          j        ¦  «        sJ ‚| j                             |t3          | |||¦  «        ¦  «        }|                      |dk    ¦  «         |                      |j        j        ¦  «        }
| j                             ||
¦  «        }|                      |dk    ¦  «         |S )Nr<   z#Unable to sign/verify with this keyr   z4{} is not supported by this backend for RSA signing.z4{} is not supported for the RSA signature operation.)ri   r"   rC   rD   rE   rF   rG   rH   rI   Ú_consume_errorsr!   rL   ÚEVP_PKEY_CTX_set_signature_mdr   r6   r7   r   ÚUNSUPPORTED_HASHrJ   r5   r   r   r   rf   Ú EVP_PKEY_CTX_set_rsa_pss_saltlenr&   r2   rM   rN   )r   r+   rc   r   rj   r9   rZ   r[   ÚerrorsÚevp_mdr]   s              r%   Ú_rsa_sig_setuprr   Ø   sO  € õ .¨g°s¸GÀYÑOÔO€LØŒ|×,Ò,¨S¬]¸G¼LÔ<MÑNÔN€HØ×Ò˜8 w¤|Ô'8Ò8Ñ9Ô9Ð9ØŒ|�Š˜x¨¬Ô)GÑHÔH€HØ
ˆ)�HÑ
Ô
€CØ
ˆa‚x€xØ×(Ò(Ñ*Ô*ˆÝÐ>ÀÑGÔGÐGàÐØ×8Ò8¸ÑCÔCˆØŒl×8Ò8¸À6ÑJÔJˆØ�!Š8ˆ8Ø×#Ò#Ñ%Ô%Ð%Ý&ØF×MÒMØ”Nñô õ Ô)ñ	ô ð ð Œ,×
3Ò
3°H¸lÑ
KÔ
K€CØ
ˆa‚x€xØ×ÒÑ!Ô!Ð!Ý"ØB×IÒIØ”ñô õ Ô(ñ	
ô 
ð 	
õ �'�3ÑÔð (Ý˜)¥VÔ%9Ñ:Ô:Ð:Ð:Ð:ØŒl×;Ò;ØÝ$ W¨g°s¸IÑFÔFñ
ô 
ˆð 	×Ò˜s QšwÑ'Ô'Ð'à×9Ò9ØŒLÔ#ñ
ô 
ˆð Œl×7Ò7¸À'ÑJÔJˆØ×Ò˜s QšwÑ'Ô'Ð'à€Or'   Úprivate_keyr(   c           	      ó<  — t          | |||| j        j        ¦  «        }| j                             d¦  «        }| j                             || j        j        ||t          |¦  «        ¦  «        }|                      |dk    ¦  «         | j                             d|d         ¦  «        }| j                             ||||t          |¦  «        ¦  «        }|dk    r$|  	                    ¦   «         }	t          d|	¦  «        ‚| j                             |¦  «        d d …         S )Nr=   r<   r>   r   zuDigest or salt length too long for key size. Use a larger key or shorter salt length if you are specifying a PSS salt)rr   r"   ÚEVP_PKEY_sign_initrE   rU   ÚEVP_PKEY_signrF   rQ   rG   Ú_consume_errors_with_textr!   rV   )
r   r+   rc   rs   r*   rZ   Úbuflenr[   ra   rp   s
             r%   Ú_rsa_sig_signry     s  € õ ØØØØØŒÔ'ñô €Hð Œ\×Ò˜jÑ)Ô)€FØ
Œ,×
$Ò
$Ø�'”,Ô# V¨Tµ3°t±9´9ñô €Cð ×Ò˜3 !š8Ñ$Ô$Ð$Ø
Œ,×
Ò
Ð,¨f°Q¬iÑ
8Ô
8€CØ
Œ,×
$Ò
$ X¨s°F¸DÅ#ÀdÁ)Ä)Ñ
LÔ
L€CØ
ˆa‚x€xØ×2Ò2Ñ4Ô4ˆÝðFàñ
ô 
ð 	
ð Œ<×Ò˜sÑ#Ô# A A AÔ&Ð&r'   Ú
public_keyr)   Ú	signaturec           	      ó$  — t          | |||| j        j        ¦  «        }| j                             ||t	          |¦  «        |t	          |¦  «        ¦  «        }|                      |dk    ¦  «         |dk    r|                      ¦   «          t          ‚d S )Nr   )rr   r"   ÚEVP_PKEY_verify_initÚEVP_PKEY_verifyrQ   rG   rl   r   )r   r+   rc   rz   r{   r*   rZ   r[   s           r%   Ú_rsa_sig_verifyr   -  s™   € õ ØØØØØŒÔ)ñô €Hð Œ,×
&Ò
&Ø�)�S ™^œ^¨Tµ3°t±9´9ñô €Cð ×Ò˜3 !š8Ñ$Ô$Ð$Ø
ˆa‚x€xØ×ÒÑ!Ô!Ð!ÝÐð €xr'   c           	      ó  — t          | |||| j        j        ¦  «        }| j                             |j        ¦  «        }|                      |dk    ¦  «         | j                             d|¦  «        }| j                             d|¦  «        }| j                             ||||t          |¦  «        ¦  «        }	| j         
                    |¦  «        d |d         …         }
| j                             ¦   «          |	dk    rt          ‚|
S )Nr   r>   r=   r<   )rr   r"   ÚEVP_PKEY_verify_recover_initrK   rD   rG   rE   rU   ÚEVP_PKEY_verify_recoverrQ   rV   rW   r   )r   r+   rc   rz   r{   rZ   Úmaxlenra   rx   r[   rb   s              r%   Ú_rsa_sig_recoverr„   H  sþ   € õ ØØØØØŒÔ1ñô €Hð Œ\×'Ò'¨
Ô(<Ñ=Ô=€FØ×Ò˜6 Aš:Ñ&Ô&Ð&Ø
Œ,×
Ò
Ð,¨fÑ
5Ô
5€CØŒ\×Ò˜j¨&Ñ1Ô1€FØ
Œ,×
.Ò
.Ø�#�v˜y­#¨i©.¬.ñô €Cð Œ\× Ò  Ñ%Ô% k¨¨q¬	 kÔ2€FØ„L× Ò Ñ"Ô"Ð"ð ˆa‚x€xÝÐØ€Mr'   c                   ó  — e Zd ZU eed<   eed<   eed<   dddefd„Zdd
„Zdd„Z	e
defd„¦   «         Zdededefd„Zdefd„Zdefd„Zdej        dej        dej        defd„Zdededej        ej        ej        f         defd„Zd	S )r(   rD   Ú
_rsa_cdataÚ	_key_sizer   r   Ú_skip_check_keyc                 ó¢  — |�sV|j                              |¦  «        }|dk    r$|                     ¦   «         }t          d|¦  «        ‚|j                             d¦  «        }|j                             d¦  «        }|j                              |||¦  «         |                     |d         |j        j        k    ¦  «         |                     |d         |j        j        k    ¦  «         |j          	                    |d         ¦  «        }	|j          	                    |d         ¦  «        }
|	dk    s|
dk    r$|                     ¦   «         }t          d|¦  «        ‚|| _
        || _        || _        d| _        t          j        ¦   «         | _        | j
        j                             d¦  «        }| j
        j                              | j        || j
        j        j        | j
        j        j        ¦  «         | j
                             |d         | j
        j        j        k    ¦  «         | j
        j                              |d         ¦  «        | _        d S )Nr<   zInvalid private keyú	BIGNUM **r   F)r"   ÚRSA_check_keyrw   r!   rE   rU   ÚRSA_get0_factorsrG   rF   Ú	BN_is_oddÚ_backendr†   rD   Ú_blindedÚ	threadingÚLockÚ_blinding_lockÚRSA_get0_keyÚBN_num_bitsr‡   )Úselfr   Ú	rsa_cdataÚevp_pkeyrˆ   r[   rp   ÚpÚqÚp_oddÚq_oddÚns               r%   Ú__init__z_RSAPrivateKey.__init__q  s  € ð ñ 	@Ø”,×,Ò,¨YÑ7Ô7ˆCØ�aŠxˆxØ ×:Ò:Ñ<Ô<�Ý Ð!6¸Ñ?Ô?Ð?ð ”× Ò  Ñ-Ô-ˆAØ”× Ò  Ñ-Ô-ˆAØŒL×)Ò)¨)°Q¸Ñ:Ô:Ð:Ø×"Ò" 1 Q¤4¨7¬<Ô+<Ò#<Ñ=Ô=Ð=Ø×"Ò" 1 Q¤4¨7¬<Ô+<Ò#<Ñ=Ô=Ð=Ø”L×*Ò*¨1¨Q¬4Ñ0Ô0ˆEØ”L×*Ò*¨1¨Q¬4Ñ0Ô0ˆEØ˜Šzˆz˜U ašZ˜ZØ ×:Ò:Ñ<Ô<�Ý Ð!6¸Ñ?Ô?Ð?àˆŒØ#ˆŒØ!ˆŒàˆŒÝ'œnÑ.Ô.ˆÔàŒMÔ×"Ò" ;Ñ/Ô/ˆØŒÔ×'Ò'ØŒOØØŒMÔÔ#ØŒMÔÔ#ñ		
ô 	
ð 	
ð 	Œ×$Ò$ Q q¤T¨T¬]Ô-?Ô-DÒ%DÑEÔEÐEØœÔ+×7Ò7¸¸!¼Ñ=Ô=ˆŒˆˆr'   r   Nc                 ó€   — | j         s6| j        5  |                      ¦   «          d d d ¦  «         d S # 1 swxY w Y   d S d S ©N)r�   r’   Ú_non_threadsafe_enable_blinding©r•   s    r%   Ú_enable_blindingz_RSAPrivateKey._enable_blinding�  s—   € ð Œ}ð 	7ØÔ$ð 7ð 7Ø×4Ò4Ñ6Ô6Ð6ð7ð 7ð 7ñ 7ô 7ð 7ð 7ð 7ð 7ð 7ð 7ð 7øøøð 7ð 7ð 7ð 7ð 7ð 7ð	7ð 	7s   �1±5¸5c                 óÊ   — | j         s[| j        j                             | j        | j        j        j        ¦  «        }| j                             |dk    ¦  «         d| _         d S d S )Nr<   T)r�   rŽ   r"   ÚRSA_blinding_onr†   rE   rF   rG   )r•   r[   s     r%   r    z._RSAPrivateKey._non_threadsafe_enable_blinding¤  sh   € ð
 Œ}ð 	!Ø”-Ô$×4Ò4Ø” ¤Ô!3Ô!8ñô ˆCð ŒM×(Ò(¨°ªÑ2Ô2Ð2Ø ˆDŒMˆMˆMð	!ð 	!r'   c                 ó   — | j         S rŸ   ©r‡   r¡   s    r%   Úkey_sizez_RSAPrivateKey.key_size°  ó
   € àŒ~Ðr'   Ú
ciphertextr+   c                 ó¶   — |                       ¦   «          | j        dz   dz  }|t          |¦  «        k    rt          d¦  «        ‚t	          | j        | ||¦  «        S )Né   é   z,Ciphertext length must be equal to key size.)r¢   r§   rQ   r!   r:   rŽ   )r•   r©   r+   Úkey_size_bytess       r%   Údecryptz_RSAPrivateKey.decrypt´  s[   € Ø×ÒÑÔÐØœ-¨!Ñ+°Ñ1ˆØ�S ™_œ_Ò,Ð,ÝÐKÑLÔLÐLå˜DœM¨4°¸WÑEÔEÐEr'   c                 ób  — | j         j                             | j        ¦  «        }| j                              || j         j        j        k    ¦  «         | j         j                             || j         j        j        ¦  «        }| j          	                    |¦  «        }t          | j         ||¦  «        S rŸ   )rŽ   r"   ÚRSAPublicKey_dupr†   rG   rE   rF   rH   ÚRSA_freeÚ_rsa_cdata_to_evp_pkeyr)   )r•   Úctxr—   s      r%   rz   z_RSAPrivateKey.public_key¼  sŠ   € ØŒmÔ ×1Ò1°$´/ÑBÔBˆØŒ×$Ò$ S¨D¬MÔ,>Ô,CÒ%CÑDÔDÐDØŒmÔ ×#Ò# C¨¬Ô);Ô)DÑEÔEˆØ”=×7Ò7¸Ñ<Ô<ˆÝ˜Tœ]¨C°Ñ:Ô:Ð:r'   c                 ó4  — | j         j                             d¦  «        }| j         j                             d¦  «        }| j         j                             d¦  «        }| j         j                             d¦  «        }| j         j                             d¦  «        }| j         j                             d¦  «        }| j         j                             d¦  «        }| j         j                             d¦  «        }| j         j                             | j        |||¦  «         | j                              |d         | j         j        j        k    ¦  «         | j                              |d         | j         j        j        k    ¦  «         | j                              |d         | j         j        j        k    ¦  «         | j         j                             | j        ||¦  «         | j                              |d         | j         j        j        k    ¦  «         | j                              |d         | j         j        j        k    ¦  «         | j         j         	                    | j        |||¦  «         | j                              |d         | j         j        j        k    ¦  «         | j                              |d         | j         j        j        k    ¦  «         | j                              |d         | j         j        j        k    ¦  «         t          | j                              |d         ¦  «        | j                              |d         ¦  «        | j                              |d         ¦  «        | j                              |d         ¦  «        | j                              |d         ¦  «        | j                              |d         ¦  «        t          | j                              |d         ¦  «        | j                              |d         ¦  «        ¬¦  «        ¬¦  «        S )NrŠ   r   ©Úerœ   )r˜   r™   ÚdÚdmp1Údmq1ÚiqmpÚpublic_numbers)rŽ   rE   rU   r"   r“   r†   rG   rF   rŒ   ÚRSA_get0_crt_paramsr   Ú
_bn_to_intr   )	r•   rœ   r¶   r·   r˜   r™   r¸   r¹   rº   s	            r%   Úprivate_numbersz_RSAPrivateKey.private_numbersÃ  sE  € ØŒMÔ×"Ò" ;Ñ/Ô/ˆØŒMÔ×"Ò" ;Ñ/Ô/ˆØŒMÔ×"Ò" ;Ñ/Ô/ˆØŒMÔ×"Ò" ;Ñ/Ô/ˆØŒMÔ×"Ò" ;Ñ/Ô/ˆØŒ}Ô!×%Ò% kÑ2Ô2ˆØŒ}Ô!×%Ò% kÑ2Ô2ˆØŒ}Ô!×%Ò% kÑ2Ô2ˆØŒÔ×'Ò'¨¬¸¸A¸qÑAÔAÐAØŒ×$Ò$ Q q¤T¨T¬]Ô-?Ô-DÒ%DÑEÔEÐEØŒ×$Ò$ Q q¤T¨T¬]Ô-?Ô-DÒ%DÑEÔEÐEØŒ×$Ò$ Q q¤T¨T¬]Ô-?Ô-DÒ%DÑEÔEÐEØŒÔ×+Ò+¨D¬O¸QÀÑBÔBÐBØŒ×$Ò$ Q q¤T¨T¬]Ô-?Ô-DÒ%DÑEÔEÐEØŒ×$Ò$ Q q¤T¨T¬]Ô-?Ô-DÒ%DÑEÔEÐEØŒÔ×.Ò.ØŒO˜T 4¨ñ	
ô 	
ð 	
ð 	Œ×$Ò$ T¨!¤W°´Ô0BÔ0GÒ%GÑHÔHÐHØŒ×$Ò$ T¨!¤W°´Ô0BÔ0GÒ%GÑHÔHÐHØŒ×$Ò$ T¨!¤W°´Ô0BÔ0GÒ%GÑHÔHÐHÝ ØŒm×&Ò& q¨¤tÑ,Ô,ØŒm×&Ò& q¨¤tÑ,Ô,ØŒm×&Ò& q¨¤tÑ,Ô,Ø”×)Ò)¨$¨q¬'Ñ2Ô2Ø”×)Ò)¨$¨q¬'Ñ2Ô2Ø”×)Ò)¨$¨q¬'Ñ2Ô2Ý+Ø”-×*Ò*¨1¨Q¬4Ñ0Ô0Ø”-×*Ò*¨1¨Q¬4Ñ0Ô0ðñ ô ð
ñ 
ô 
ð 	
r'   Úencodingr6   Úencryption_algorithmc                 óT   — | j                              |||| | j        | j        ¦  «        S rŸ   )rŽ   Ú_private_key_bytesrD   r†   )r•   r¿   r6   rÀ   s       r%   Úprivate_bytesz_RSAPrivateKey.private_bytesæ  s4   € ð Œ}×/Ò/ØØØ ØØŒNØŒOñ
ô 
ð 	
r'   r*   rc   c                 ó€   — |                       ¦   «          t          ||¦  «        \  }}t          | j        ||| |¦  «        S rŸ   )r¢   r   ry   rŽ   )r•   r*   r+   rc   s       r%   Úsignz_RSAPrivateKey.signõ  sA   € ð 	×ÒÑÔÐÝ9¸$À	ÑJÔJ‰ˆˆiÝ˜Tœ]¨G°YÀÀdÑKÔKÐKr'   )r   N)Ú__name__Ú
__module__Ú__qualname__ÚobjectÚ__annotations__ÚintÚboolr�   r¢   r    Úpropertyr§   Úbytesr
   r®   r   rz   r   r¾   r   ÚEncodingÚPrivateFormatÚKeySerializationEncryptionrÃ   ÚtypingÚUnionÚ
asym_utilsÚ	Prehashedr   rf   rÅ   © r'   r%   r(   r(   l  s­  € € € € € € ØÐÐÑØÐÐÑØ€N€N�Nð*>Ø ð*>ØHLð*>ð *>ð *>ð *>ðX7ð 7ð 7ð 7ð
!ð 
!ð 
!ð 
!ð ð˜#ð ð ð ñ „XððF %ð FÐ2Cð FÈð Fð Fð Fð Fð;˜Lð ;ð ;ð ;ð ;ð!
Ð!2ð !
ð !
ð !
ð !
ðF
àÔ(ð
ð Ô+ð
ð ,ÔFð	
ð
 
ð
ð 
ð 
ð 
ðLàðLð #ðLð ”< 
Ô 4°fÔ6JÐ JÔKð	Lð
 
ðLð Lð Lð Lð Lð Lr'   c            
       ó  — e Zd ZU eed<   eed<   eed<   dd„Zedefd„¦   «         Zd	e	d
e
de	fd„Zdefd„Zdej        dej        de	fd„Zde	de	d
e
dej        ej        ej        f         ddf
d„Zde	d
e
dej        ej                 de	fd„ZdS )r)   rD   r†   r‡   r   r   c                 ó²  — || _         || _        || _        | j         j                             d¦  «        }| j         j                             | j        || j         j        j        | j         j        j        ¦  «         | j                              |d         | j         j        j        k    ¦  «         | j         j         	                    |d         ¦  «        | _
        d S )NrŠ   r   )rŽ   r†   rD   rE   rU   r"   r“   rF   rG   r”   r‡   )r•   r   r–   r—   rœ   s        r%   r�   z_RSAPublicKey.__init__  sµ   € ØˆŒØ#ˆŒØ!ˆŒàŒMÔ×"Ò" ;Ñ/Ô/ˆØŒÔ×'Ò'ØŒOØØŒMÔÔ#ØŒMÔÔ#ñ		
ô 	
ð 	
ð 	Œ×$Ò$ Q q¤T¨T¬]Ô-?Ô-DÒ%DÑEÔEÐEØœÔ+×7Ò7¸¸!¼Ñ=Ô=ˆŒˆˆr'   r   c                 ó   — | j         S rŸ   r¦   r¡   s    r%   r§   z_RSAPublicKey.key_size  r¨   r'   Ú	plaintextr+   c                 ó0   — t          | j        | ||¦  «        S rŸ   )r:   rŽ   )r•   rÚ   r+   s      r%   Úencryptz_RSAPublicKey.encrypt  s   € Ý˜DœM¨4°¸GÑDÔDÐDr'   c                 óP  — | j         j                             d¦  «        }| j         j                             d¦  «        }| j         j                             | j        ||| j         j        j        ¦  «         | j                              |d         | j         j        j        k    ¦  «         | j                              |d         | j         j        j        k    ¦  «         t          | j          	                    |d         ¦  «        | j          	                    |d         ¦  «        ¬¦  «        S )NrŠ   r   rµ   )
rŽ   rE   rU   r"   r“   r†   rF   rG   r   r½   )r•   rœ   r¶   s      r%   r»   z_RSAPublicKey.public_numbers  s÷   € ØŒMÔ×"Ò" ;Ñ/Ô/ˆØŒMÔ×"Ò" ;Ñ/Ô/ˆØŒÔ×'Ò'ØŒO˜Q  4¤=Ô#5Ô#:ñ	
ô 	
ð 	
ð 	Œ×$Ò$ Q q¤T¨T¬]Ô-?Ô-DÒ%DÑEÔEÐEØŒ×$Ò$ Q q¤T¨T¬]Ô-?Ô-DÒ%DÑEÔEÐEÝØŒm×&Ò& q¨¤tÑ,Ô,ØŒm×&Ò& q¨¤tÑ,Ô,ð
ñ 
ô 
ð 	
r'   r¿   r6   c                 óR   — | j                              ||| | j        | j        ¦  «        S rŸ   )rŽ   Ú_public_key_bytesrD   r†   )r•   r¿   r6   s      r%   Úpublic_bytesz_RSAPublicKey.public_bytes(  s-   € ð
 Œ}×.Ò.Ø�f˜d D¤N°D´Oñ
ô 
ð 	
r'   r{   r*   rc   Nc                 ó^   — t          ||¦  «        \  }}t          | j        ||| ||¦  «         d S rŸ   )r   r   rŽ   )r•   r{   r*   r+   rc   s        r%   Úverifyz_RSAPublicKey.verify1  sB   € õ :¸$À	ÑJÔJ‰ˆˆiÝØŒM˜7 I¨t°YÀñ	
ô 	
ð 	
ð 	
ð 	
r'   c                 ó„   — t          |t          j        ¦  «        rt          d¦  «        ‚t	          | j        ||| |¦  «        S )NzoPrehashed is only supported in the sign and verify methods. It cannot be used with recover_data_from_signature.)r   rÔ   rÕ   r/   r„   rŽ   )r•   r{   r+   rc   s       r%   Úrecover_data_from_signaturez)_RSAPublicKey.recover_data_from_signature=  sR   € õ �i¥Ô!5Ñ6Ô6ð 	ÝðFñô ð õ  ØŒM˜7 I¨t°Yñ
ô 
ð 	
r'   )r   r   )rÆ   rÇ   rÈ   rÉ   rÊ   rË   r�   rÍ   r§   rÎ   r
   rÜ   r   r»   r   rÏ   ÚPublicFormatrà   rÒ   rÓ   rÔ   rÕ   r   rf   râ   ÚOptionalrä   rÖ   r'   r%   r)   r)      s�  € € € € € € ØÐÐÑØÐÐÑØ€N€N�Nð>ð >ð >ð >ð ð˜#ð ð ð ñ „XððE ð EÐ1Bð EÀuð Eð Eð Eð Eð
Ð 0ð 
ð 
ð 
ð 
ð
àÔ(ð
ð Ô*ð
ð 
ð	
ð 
ð 
ð 
ð

àð

ð ð

ð #ð	

ð
 ”< 
Ô 4°fÔ6JÐ JÔKð

ð 
ð

ð 

ð 

ð 

ð
àð
ð #ð
ð ”? 6Ô#7Ô8ð	
ð
 
ð
ð 
ð 
ð 
ð 
ð 
r'   )1r�   rÒ   Úcryptography.exceptionsr   r   r   Ú*cryptography.hazmat.backends.openssl.utilsr   Úcryptography.hazmat.primitivesr   r   Ú)cryptography.hazmat.primitives.asymmetricr	   rÔ   Ú1cryptography.hazmat.primitives.asymmetric.paddingr
   r   r   r   r   r   r   r   r   Ú-cryptography.hazmat.primitives.asymmetric.rsar   r   r   r   ÚTYPE_CHECKINGÚ,cryptography.hazmat.backends.openssl.backendr   rÓ   rf   rË   r&   rÎ   r:   r8   ræ   ri   ÚCallableÚAnyrr   ry   r   r„   r(   r)   rÖ   r'   r%   ú<module>rñ      s¦  ðð
 Ð Ð Ð Ø €€€ðð ð ð ð ð ð ð ð ð ð
ð ð ð ð ð ð AÐ @Ð @Ð @Ð @Ð @Ð @Ð @ðð ð ð ð ð ð
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ðð ð ð ð ð ð ð ð ð ð ð ð 
Ôð EØDÐDÐDÐDÐDÐDðØðà	ðð 
Œ�m \Ð1Ô	2ðð Ô(ð	ð
 	ðð ð ð ð,!LØð!Là	ŒÐ7Ô	8ð!Lð ð!Lð ð	!Lð
 ð!Lð !Lð !Lð !LðH@Øð@à	ŒÐ7Ô	8ð@ð ð@ð ð	@ð
 ð@ð ð@ð @ð @ð @ðF)Øð)à	ŒÐ7Ô	8ð)ð ð)ð Œ˜vÔ3Ô4ð	)ð
 	ð)ð )ð )ð )ð`2Øð2àð2ð Œ˜vÔ3Ô4ð2ð 
ŒÐ7Ô	8ð	2ð
 Œ ¤
˜|¨SÐ0Ô1ð2ð 2ð 2ð 2ðj'Øð'àð'ð Ô#ð'ð "ð	'ð
 ð'ð ð'ð 'ð 'ð 'ð@Øðàðð Ô#ðð  ð	ð
 ðð ðð 
ðð ð ð ð6!Øð!àð!ð Œ˜vÔ3Ô4ð!ð  ð	!ð
 ð!ð ð!ð !ð !ð !ðHQLð QLð QLð QLð QL�]ñ QLô QLð QLðhJ
ð J
ð J
ð J
ð J
�Lñ J
ô J
ð J
ð J
ð J
r'   