File manager - Edit - /usr/lib/python3/dist-packages/cryptography/hazmat/primitives/serialization/__pycache__/ssh.cpython-310.pyc
Back
o �)%aW � @ s. d dl Z d dlZd dlZd dlZd dlZd dlmZ d dlm Z d dl mZ d dlm Z d dlmZmZmZmZ d dlmZmZmZ d dlmZmZmZmZ z d d lmZ d ZW n e yv dZ d[de!d e!de"de"de#de!fdd�ZY nw dZ$dZ%dZ&dZ'dZ(dZ)dZ*e�+d�Z,dZ-dZ.dZ/dZ0d Z1d!Z2d"Z3d#Z4e�+e.d$ e/ ej5�Z6e7e8e9d%d&���Z:ej;d'ej<d"fej;d'ej=d"fd(�Z>e'e(e)d)�Z?e�@d*�ZAe�@d+�ZBd,d-� ZCe.d. e/d. fd/d0�ZDd1d2� ZEd3d4� ZFd5d6� ZGd7d8� ZHd9d:� ZId;d<� ZJd=d>� ZKd?d@� ZLG dAdB� dBeM�ZNG dCdD� dDeM�ZOG dEdF� dFeM�ZPG dGdH� dHeM�ZQG dIdJ� dJeM�ZRe%eO� e&eP� e$eR� e'eQdKe�S� �e(eQdLe�T� �e)eQdMe�U� �iZVdNdO� ZWejXejYejZej[ej\f Z] d\dPe!dej^e! de]fdQdR�Z_ d\dSe]dej^e! fdTdU�Z`ejXejaejbejcejdf Zed\dPe!deefdVdW�ZfdXeede!fdYdZ�ZgdS )]� N)�encodebytes)�utils��UnsupportedAlgorithm)�_get_backend)�dsa�ec�ed25519�rsa)�Cipher� algorithms�modes)�Encoding�NoEncryption� PrivateFormat�PublicFormat)�kdfTF�password�salt�desired_key_bytes�rounds�ignore_few_rounds�returnc C s t d��)NzNeed bcrypt moduler )r r r r r � r �R/usr/lib/python3/dist-packages/cryptography/hazmat/primitives/serialization/ssh.py�_bcrypt_kdf s r s ssh-ed25519s ssh-rsas ssh-dsss ecdsa-sha2-nistp256s ecdsa-sha2-nistp384s ecdsa-sha2-nistp521s -cert-v01@openssh.coms \A(\S+)[ \t]+(\S+)s openssh-key-v1 s# -----BEGIN OPENSSH PRIVATE KEY-----s! -----END OPENSSH PRIVATE KEY-----s bcrypts none� aes256-ctr� �H s (.*?)� � � )r s aes256-cbc)� secp256r1� secp384r1� secp521r1s >Is >Qc C s( | j }|jtvrtd|j ��t|j S )z3Return SSH key_type and curve_name for private key.z)Unsupported curve for ssh private key: %r)�curve�name�_ECDSA_KEY_TYPE� ValueError)� public_keyr% r r r �_ecdsa_key_typeS s � r* � c C s d� |t| �|g�S )N� )�join�_base64_encode)�data�prefix�suffixr r r �_ssh_pem_encode] s r2 c C s | r t | �| dkrtd��dS )zRequire data to be full blocksr zCorrupt data: missing paddingN)�lenr( )r/ � block_lenr r r �_check_block_sizea s �r5 c C s | rt d��dS )z!All data should have been parsed.zCorrupt data: unparsed dataN)r( �r/ r r r �_check_emptyg s �r7 c C sT |st d��t| \}}}}t|||| |d�} t|| d|� �|| |d� �|�S )z$Generate key + iv and return cipher.zKey is password-protected.TN)r( �_SSH_CIPHERSr r ) � ciphernamer r r �backend�algo�key_len�mode�iv_len�seedr r r �_init_cipherm s $r@ c C �6 t | �dk r td��t�| dd� �d | dd� fS )�Uint32� �Invalid dataNr )r3 r( �_U32�unpackr6 r r r �_get_u32w � "rG c C rA )�Uint64� rD Nr )r3 r( �_U64rF r6 r r r �_get_u64~ rH rL c C s8 t | �\}} |t| �krtd��| d|� | |d� fS )zBytes with u32 length prefixrD N)rG r3 r( )r/ �nr r r �_get_sshstr� s rN c C s4 t | �\}} |r|d dkrtd��t�|d�| fS )zBig integer.r � rD �big)rN r( �int� from_bytes)r/ �valr r r � _get_mpint� s rT c C s4 | dk rt d��| sdS | �� d d }t�| |�S )z!Storage format for signed bigint.r znegative mpint not allowedr, rJ )r( � bit_lengthr �int_to_bytes)rS �nbytesr r r � _to_mpint� s rX c @ sT e Zd ZdZddd�Zdd� Zdd� Zd d � Zdd� Zd d� Z ddd�Z dd� ZdS )� _FragListz,Build recursive structure without data copy.Nc C s g | _ |r | j �|� d S d S �N)�flist�extend)�self�initr r r �__init__� s �z_FragList.__init__c C s | j �|� dS )zAdd plain bytesN)r[ �append�r] rS r r r �put_raw� � z_FragList.put_rawc C s | j �t�|�� dS )zBig-endian uint32N)r[ r` rE �packra r r r �put_u32� s z_FragList.put_u32c C sN t |tttf�r| �t|�� | j�|� dS | �|�� � | j� |j� dS )zBytes prefixed with u32 lengthN) � isinstance�bytes� memoryview� bytearrayre r3 r[ r` �sizer\ ra r r r � put_sshstr� s z_FragList.put_sshstrc C s | � t|�� dS )z*Big-endian bigint prefixed with u32 lengthN)rk rX ra r r r � put_mpint� s z_FragList.put_mpintc C s t tt| j��S )zCurrent number of bytes)�sum�mapr3 r[ )r] r r r rj � rc z_FragList.sizer c C s2 | j D ]}t|�}||| }}||||�<