U
    ʹh|                     @   sZ   d dl Z ddlmZ ddlmZmZ dZdZdZdd	 Z	G d
d dZ
dd Zdd ZdS )    N   )der)compat26_strint_to_bytess   ssh-ed25519s   openssh-key-v1 s   nonec                 C   s   | dkrt S tdd S )NZEd25519zUnsupported key type)_SSH_ED25519
ValueError)name r	   /./venv/lib/python3.8/site-packages/ecdsa/ssh.py_get_key_type
   s    r   c                   @   sN   e Zd Zdd Zdd Zdd Zdd Zdd
dZdd Zdd Z	dd Z
dS )_Serializerc                 C   s
   d| _ d S )N    bytesselfr	   r	   r
   __init__   s    z_Serializer.__init__c                 C   s   |  j |7  _ d S Nr   r   valr	   r	   r
   put_raw   s    z_Serializer.put_rawc                 C   s   |  j t|ddd7  _ d S )N   Zbig)length	byteorder)r   r   r   r	   r	   r
   put_u32   s    z_Serializer.put_u32c                 C   s    |  t| |  j|7  _d S r   )r   lenr   r   r	   r	   r
   put_str   s    z_Serializer.put_str   c                 C   s.   |t | j|  }| ttdd|  d S )Nr   )r   r   r   	bytearrayrange)r   ZblklenZpadlenr	   r	   r
   put_pad   s    z_Serializer.put_padc                 C   s   t t| jS r   )binasciiZ
b2a_base64r   r   r   r	   r	   r
   encode#   s    z_Serializer.encodec                 C   s   | j S r   r   r   r	   r	   r
   tobytes&   s    z_Serializer.tobytesc                 C   s   t | jdS )NzOPENSSH PRIVATE KEY)r   topemr   r   r	   r	   r
   r$   )   s    z_Serializer.topemN)r   )__name__
__module____qualname__r   r   r   r   r    r"   r#   r$   r	   r	   r	   r
   r      s   
r   c                 C   s4   t  }t| }|| || d|| gS )N    )r   r   r   joinr"   )r   pubserialktyper	   r	   r
   serialize_public-   s
    

r-   c                 C   s   t  }t| }|| || t  }d}|| || ||  |||  d}|| |  t  }|t t }	}
||	 ||
 d}|| d}|| ||  ||  |	 S )Nr   r   r   )
r   r   r   r   r   r#   r    	_SK_MAGIC_NONEr$   )r   r*   ZprivZspubr,   ZsprivZchecksumZcommentmainZ
ciphernameZkdfnameZnokdfZnkeysr	   r	   r
   serialize_private5   s2    









r1   )r!    r   Z_compatr   r   r   r.   r/   r   r   r-   r1   r	   r	   r	   r
   <module>   s   