a
    _Émg|  ã                   @   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	   ú@/var/www/html/idle/venv/lib/python3.9/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é   Ú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blklenÚpadlenr	   r	   r
   Úput_pad   s    z_Serializer.put_padc                 C   s   t  t| jƒ¡S r   )ÚbinasciiÚ
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
    

r0   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checksumÚcommentÚmainZ
ciphernameZkdfnameZnokdfZnkeysr	   r	   r
   Úserialize_private5   s2    









r5   )r#   Ú r   Z_compatr   r   r   r1   r2   r   r   r0   r5   r	   r	   r	   r
   Ú<module>   s   