Current File : //lib/python2.7/site-packages/paramiko/rsakey.pyo
�
=OXc@s�dZddlmZddlmZddlmZmZddlm	Z	m
Z
ddlmZddl
mZddlmZd	efd
��YZdS(s
RSA keys.
i����(tInvalidSignature(tdefault_backend(thashest
serialization(trsatpadding(tMessage(tPKey(tSSHExceptiontRSAKeycBs�eZdZddddddd�Zed��Zed��Zd�Zd�Z	d�Z
d�Zd�Zd	�Z
d
�Zd�Zdd�Zdd
�Zedd��Zd�Zd�Zd�ZRS(sZ
    Representation of an RSA key which can be used to sign and verify SSH2
    data.
    cCs�d|_|dk	r)|j||�dS|dk	rI|j||�dS|dkrp|dk	rpt|�}n|dk	r�||_no|dkr�td��n|j�dkr�td��ntjd|j	�d|j	��j
t��|_dS(NsKey object may not be emptysssh-rsasInvalid keytetn(tNonetkeyt_from_private_keyt_from_private_key_fileRRtget_textRtRSAPublicNumberst	get_mpintt
public_keyR(tselftmsgtdatatfilenametpasswordR
tfile_obj((s3/usr/lib/python2.7/site-packages/paramiko/rsakey.pyt__init__'s$		cCs
|jjS(N(R
tkey_size(R((s3/usr/lib/python2.7/site-packages/paramiko/rsakey.pytsize<scCs6t|jtj�r%|jj�jS|jj�SdS(N(t
isinstanceR
Rt
RSAPrivateKeytprivate_numberstpublic_numbers(R((s3/usr/lib/python2.7/site-packages/paramiko/rsakey.pyR @scCsFt�}|jd�|j|jj�|j|jj�|j�S(Nsssh-rsa(Rt
add_stringt	add_mpintR R
Rtasbytes(Rtm((s3/usr/lib/python2.7/site-packages/paramiko/rsakey.pyR#Gs
	
cCs
|j�S(N(R#(R((s3/usr/lib/python2.7/site-packages/paramiko/rsakey.pyt__str__NscCsPt|j��}|dt|jj�}|dt|jj�}t|�S(Ni%(thashtget_nameR R
R(Rth((s3/usr/lib/python2.7/site-packages/paramiko/rsakey.pyt__hash__QscCsdS(Nsssh-rsa((R((s3/usr/lib/python2.7/site-packages/paramiko/rsakey.pyR'WscCs|jS(N(R(R((s3/usr/lib/python2.7/site-packages/paramiko/rsakey.pytget_bitsZscCst|jtj�S(N(RR
RR(R((s3/usr/lib/python2.7/site-packages/paramiko/rsakey.pytcan_sign]scCsg|jjdtj�dtj��}|j|�|j�}t�}|j	d�|j	|�|S(NRt	algorithmsssh-rsa(
R
tsignerRtPKCS1v15RtSHA1tupdatetfinalizeRR!(RRR-tsigR$((s3/usr/lib/python2.7/site-packages/paramiko/rsakey.pyt
sign_ssh_data`s
	

cCs�|j�dkrtS|j}t|tj�r@|j�}n|jd|j�dt	j
�dtj��}|j
|�y|j�Wntk
r�tSXtSdS(Nsssh-rsat	signatureRR,(RtFalseR
RRRRtverifiert
get_binaryRR.RR/R0tverifyRtTrue(RRRR
R6((s3/usr/lib/python2.7/site-packages/paramiko/rsakey.pytverify_ssh_sigms		

cCs&|j||jtjjd|�dS(NR(t_write_private_key_fileR
Rt
PrivateFormattTraditionalOpenSSL(RRR((s3/usr/lib/python2.7/site-packages/paramiko/rsakey.pytwrite_private_key_file�s
cCs&|j||jtjjd|�dS(NR(t_write_private_keyR
RR<R=(RRR((s3/usr/lib/python2.7/site-packages/paramiko/rsakey.pytwrite_private_key�s
cCs.tjddd|dt��}td|�S(s-
        Generate a new private RSA key.  This factory function can be used to
        generate a new host key or authentication key.

        :param int bits: number of bits the generated key should be.
        :param function progress_func: Unused
        :return: new `.RSAKey` private key
        tpublic_exponentiRtbackendR
(Rtgenerate_private_keyRR	(tbitst
progress_funcR
((s3/usr/lib/python2.7/site-packages/paramiko/rsakey.pytgenerate�s
	cCs&|jd||�}|j|�dS(NtRSA(t_read_private_key_filet_decode_key(RRRR((s3/usr/lib/python2.7/site-packages/paramiko/rsakey.pyR�scCs&|jd||�}|j|�dS(NRG(t_read_private_keyRI(RRRR((s3/usr/lib/python2.7/site-packages/paramiko/rsakey.pyR�scCsWy"tj|dddt��}Wn%tk
rI}tt|���nX||_dS(NRRB(Rtload_der_private_keyRRt
ValueErrorRtstrR
(RRR
R
((s3/usr/lib/python2.7/site-packages/paramiko/rsakey.pyRI�sN(t__name__t
__module__t__doc__RRtpropertyRR R#R%R)R'R*R+R3R:R>R@tstaticmethodRFRRRI(((s3/usr/lib/python2.7/site-packages/paramiko/rsakey.pyR	!s&							
			N(RPtcryptography.exceptionsRtcryptography.hazmat.backendsRtcryptography.hazmat.primitivesRRt)cryptography.hazmat.primitives.asymmetricRRtparamiko.messageRt
paramiko.pkeyRtparamiko.ssh_exceptionRR	(((s3/usr/lib/python2.7/site-packages/paramiko/rsakey.pyt<module>s