U vù¾fz ã @ sx d Z ddlmZmZ ddlmZ ddlmZmZ ddl m Z mZ ddlm Z ddlmZ ddlmZ G d d „ d eƒZdS )z RSA keys. é )ÚInvalidSignatureÚUnsupportedAlgorithm)Údefault_backend)ÚhashesÚ serialization)ÚrsaÚpadding)ÚMessage)ÚPKey)ÚSSHExceptionc @ sà e Zd ZdZdZejejejejejejdœZ d)dd„Z edd„ ƒZe d d „ ƒZe dd„ ƒZd d„ Zdd„ Ze dd„ ƒZdd„ Zdd„ Zdd„ Zd*dd„Zdd„ Zd+dd„Zd,dd „Zed-d!d"„ƒZd#d$„ Zd%d&„ Zd'd(„ ZdS ).ÚRSAKeyzZ Representation of an RSA key which can be used to sign and verify SSH2 data. ússh-rsa)r ússh-rsa-cert-v01@openssh.comzrsa-sha2-256z!rsa-sha2-256-cert-v01@openssh.comzrsa-sha2-512z!rsa-sha2-512-cert-v01@openssh.comNc C sš d | _ d | _|d k r$| ||¡ d S |d k r<| ||¡ d S |d krT|d k rTt|ƒ}|d k rd|| _ n2| j|| jdd tj| ¡ | ¡ d tƒ ¡| _ d S )Nr )ÚmsgZkey_typeZ cert_type©ÚeÚn)ÚkeyZpublic_blobÚ_from_private_keyÚ_from_private_key_filer Z_check_type_and_load_certÚnamer ÚRSAPublicNumbersZ get_mpintÚ public_keyr )Úselfr ÚdataÚfilenameÚpasswordr Úfile_obj© r ú@/opt/alt/python38/lib/python3.8/site-packages/paramiko/rsakey.pyÚ__init__1 s. û ÿþzRSAKey.__init__c C s t | j ¡ ƒS ©N)ÚlistÚHASHESÚkeys)Úclsr r r ÚidentifiersR s zRSAKey.identifiersc C s | j jS r! )r Úkey_size©r r r r ÚsizeV s zRSAKey.sizec C s( t | jtjƒr| j ¡ jS | j ¡ S d S r! )Ú isinstancer r Ú RSAPrivateKeyZprivate_numbersÚpublic_numbersr( r r r r, Z s zRSAKey.public_numbersc C s6 t ƒ }| | j¡ | | jj¡ | | jj¡ | ¡ S r! )r Ú add_stringr Z add_mpintr, r r Úasbytes)r Úmr r r r. a s zRSAKey.asbytesc C s | ¡ jdddS )NÚutf8Úignore)Úerrors)r. Údecoder( r r r Ú__str__h s zRSAKey.__str__c C s | ¡ | jj| jjfS r! )Úget_namer, r r r( r r r Ú_fieldsm s zRSAKey._fieldsc C s | j S r! )r r( r r r r5 q s zRSAKey.get_namec C s | j S r! )r) r( r r r Úget_bitst s zRSAKey.get_bitsc C s t | jtjƒS r! )r* r r r+ r( r r r Úcan_signw s zRSAKey.can_signc C sR |d kr| j }| jj|t ¡ | j| ƒ d}tƒ }| | dd¡¡ | |¡ |S )N)r Ú algorithmz-cert-v01@openssh.comÚ ) r r Úsignr ÚPKCS1v15r# r r- Úreplace)r r r9 Úsigr/ r r r Ú sign_ssh_dataz s û zRSAKey.sign_ssh_datac C s¦ | ¡ }|| jkrdS | j}t|tjƒr0| ¡ }| ¡ }|jt |ƒd }|dkrfd|d d | }z | ||t ¡ | j| ƒ ¡ W n t k rœ Y dS X dS d S )NFé r ó é T)Zget_textr# r r* r r+ r Z get_binaryr' ÚlenÚverifyr r<