
    9i                     n    S SK r S SKJr  S SKJr  S SKJr  S SKJr  S SK	J
r
JrJr  S rS rS	 rS
 rS rg)    N)AES)SHA512)_bcrypt_hash)strxor)tostrbchrbordc                 |    [        U 5      S:  a  [        S5      e[        R                  " SU S S 5      S   nXSS  4$ )N   zInsufficient data>Ir   )len
ValueErrorstructunpack)datavalues     Y/var/www/html/land-doc-ocr/venv/lib/python3.13/site-packages/Crypto/PublicKey/_openssh.py	read_int4r   (   sB    
4y1},--MM$Ra)!,Eqr(?    c                 b    [        U 5      u  p[        U 5      U:  a  [        S5      eU S U XS  4$ )NzInsufficient data (V))r   r   r   )r   sizes     r   
read_bytesr   /   s:    4JD
4y4011;U##r   c                 6    [        U 5      u  p[        U5      U4$ )N)r   r   )r   sds      r   read_stringr   6   s    dDA8Q;r   c                 l    [        U 5       H%  u  p[        U5      US-   S-  :w  d  M  [        S5      e   g )N      zIncorrect padding)	enumerater	   r   )padvxs      r   check_paddingr$   ;   s2    #7A~&011 r   c           
      ^   U R                  S5      (       d  [        S5      eU SS  n [        U 5      u  p [        U 5      u  p0[        U 5      u  p@[	        U 5      u  pPUS:w  a  [        S5      e[        U 5      u  p`[        U 5      u  ppU (       a  [        S5      e[        U5      S-  S:w  a  [        S	5      eUS
:X  a  UnGO+X#4S:w  a  [        SU< SU< 35      e[        U5      u  p[	        U5      u  p[        U	5      S:w  a  [        S5      eU(       a  [        S5      e[        R                  " U5      R                  5       n/ nSn[        SS5       GH  n[        R                  " U	[        R                  " SU5      -   5      R                  5       n[        USXS5      n[        R                  " S/[        R                  " SU5      Q76 n[        U5      n[        SU
5       Hk  n[        US[        R                  " U5      R                  5       US5      n[        R                  " S/[        R                  " SU5      Q76 n[        UUUS9  Mm     UR!                  US S 5        GM     SR#                  [%        U6  VVs/ s H  u  nn['        U5      ['        U5      -   PM     snn5      n[(        R                  " US S [(        R*                  SUSS S9nUR-                  U5      n[	        U5      u  nn[	        U5      u  nnUU:w  a  [        S5      e[        U5      u  nnUU4$ s  snnf )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10119D"4(J%MG!$'J$T?N9::$GA &OI))
9~Q344 V	 $<<jRYZ[[%j1!*:!6
t9?455:;;ZZ)002
61a[E **TFKKe,D%DELLNK!*aNF++kOFMM+v,NOCC.C1j)%j!VZZ_5K5K5MxY^_kk+Sk60RSsC, * NN3s8$ ! gGv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   