
    ,h                     n    d dl Z d dlmZ d dlmZ d dlmZ d dlmZ d dl	m
Z
mZmZ d Zd Zd	 Zd
 Zd Zy)    N)AES)SHA512)_bcrypt_hash)strxor)tostrbchrbordc                 z    t        |       dk  rt        d      t        j                  d| d d       d   }|| dd  fS )N   zInsufficient data>Ir   )len
ValueErrorstructunpack)datavalues     [/var/www/html/Resume-Scraper/venv/lib/python3.12/site-packages/Crypto/PublicKey/_openssh.py	read_int4r   (   sD    
4y1},--MM$Ra)!,E$qr(?    c                 d    t        |       \  }} t        |       |k  rt        d      | d | | |d  fS )NzInsufficient data (V))r   r   r   )r   sizes     r   
read_bytesr   /   s>    4JD$
4y4011;TU##r   c                 8    t        |       \  }}t        |      |fS )N)r   r   )r   sds      r   read_stringr   6   s    dDAq8Q;r   c                 h    t        |       D ]$  \  }}t        |      |dz   dz  k7  st        d       y )N      zIncorrect padding)	enumerater	   r   )padvxs      r   check_paddingr$   ;   s9    # 217A~&0112r   c           
      0   | j                  d      st        d      | dd  } t        |       \  }} t        |       \  }} t        |       \  }} t	        |       \  }} |dk7  rt        d      t        |       \  }} t        |       \  }} | rt        d      t        |      dz  dk7  rt        d	      |d
k(  r|}n||fdk7  rt        d|d|      t        |      \  }	}t	        |      \  }
}t        |	      dk7  rt        d      |rt        d      t        j                  |      j                         }g }d}t        dd      D ]  }t        j                  |	t        j                  d|      z         j                         }t        |d||d      }t        j                  dgt        j                  d|       }t        |      }t        d|
      D ]j  }t        |dt        j                  |      j                         |d      }t        j                  dgt        j                  d|       }t        |||       l |j!                  |d d         dj#                  t%        | D cg c]  \  }}t'        |      t'        |      z    c}}      }t)        j                  |d d t(        j*                  d|dd       }|j-                  |      }t	        |      \  }}t	        |      \  }}||k7  rt        d      t        |      \  }}||fS c c}}w )Ns   openssh-key-v1 zIncorrect magic value   r   zWe only handle 1 key at a timezToo much data   r   zIncorrect payload lengthnone)z
aes256-ctrbcryptzUnsupported encryption scheme /   zIncorrect salt lengthzToo much data in kdfoptionss    OxychromaticBlowfishSwatDynamite   r      Fz	<IIIIIIIIz	>IIIIIIII)output   r       0   )nonceinitial_valuezIncorrect checksum)
startswithr   r   r   r   r   r   newdigestranger   packr   r   	bytearrayr   appendjoinzipr   r   MODE_CTRdecrypt)r   password
ciphernamekdfname
kdfoptionsnumber_of_keys_	encrypted	decryptedsalt
iterations
pwd_sha512stripesconstantcountsalt_sha512out_leoutaccabresultcipher	checkint1	checkint2ssh_names                             r   import_openssh_private_genericrX   A   s    ??010119D"4(J%MGT!$'J$T?ND9::$GAt &OIt))
9~Q344 V	 $<<jRYZ[[%j1j!*:!6
Jt9?455:;;ZZ)002
61a[ 		%E **TFKKe,D%DELLNK!*ahNF++kOFMM+v,NOCC.C1j) -%j!VZZ_5K5K5MxY^_kk+Sk60RSsC,- NN3s8$		% gGv14747?GH"'-b'79 NN9-	$Y/Iy$Y/IyI-..%i0HiY Hs   -!L
)r   Crypto.Cipherr   Crypto.Hashr   Crypto.Protocol.KDFr   Crypto.Util.strxorr   Crypto.Util.py3compatr   r   r	   r   r   r   r$   rX    r   r   <module>r_      s6   >    , % 3 3$
2Fr   