§
    3xÅj¿  ã                   óð   — d Z ddlZddlmZ ddlmZ ddlmZmZm	Z	m
Z
 ddlmZ ddlmZ  edd	¦  «        \  ZZd
„  edd	¦  «        D ¦   «         \  ZZ ed¦  «        e	dz  z   Ze
dz  Z G d„ d¦  «        ZdS )z�
Standard SSH key exchange ("kex" if you wanna sound cool).  Diffie-Hellman of
1024 bit key halves, using a known "p" prime and "g" generator.
é    N)Úsha256)Úutil)Úbyte_chrÚ	byte_maskÚmax_byteÚ	zero_byte)ÚMessage)ÚSSHExceptioné   é    c                 ó,   — g | ]}t          |¦  «        ‘ŒS © )r   )Ú.0Úcs     úEC:\Projects\Historical\venv\Lib\site-packages\paramiko/kex_group14.pyú
<listcomp>r   "   s   € Ð&JÐ&JÐ&J°q¥x°¡{¤{Ð&JÐ&JÐ&Jó    é   é   é   c                   óB   — e Zd ZdZdZdZeZd„ Zd„ Z	d„ Z
d„ Zd„ Zd	„ Zd
S )ÚKexGroup14SHA256l‰   ÿÿÿÿ�&•U¢G9
tcb0]Q\-¥:¾$•90.`U´_¼b;YS7x]EkŠ`:xds€!,w<Gï8¶qbdR_ÊØhÅÀd«d©ÃY6K–pRT{ÜUÄj¼K­#¹Gt|õL¤ê‹4šS«8Ø ÒFYpw,(.> Â=¶H³G2C’düc_Ÿ.K?&jÚ_†c½}­z[\Vµ_1M.D‰^±/1v5I	ŽjÖV&|ÓŠ/òmVÀlRÓ<6#å{n4ó(EY91ÇTï:Ìg8	H	ÍAp¢cb4BÑBˆj~Hüÿÿÿÿ é   zdiffie-hellman-group14-sha256c                 ó>   — || _         d| _        d| _        d| _        d S )Nr   )Ú	transportÚxÚeÚf)Úselfr   s     r   Ú__init__zKexGroup14SHA256.__init__0   s"   € Ø"ˆŒØˆŒØˆŒØˆŒˆˆr   c                 ó  — |                       ¦   «          | j        j        rFt          | j        | j        | j        ¦  «        | _        | j                             t          ¦  «         d S t          | j        | j        | j        ¦  «        | _
        t          ¦   «         }|                     t          ¦  «         |                     | j
        ¦  «         | j                             |¦  «         | j                             t           ¦  «         d S )N)Ú_generate_xr   Úserver_modeÚpowÚGr   ÚPr   Ú_expect_packetÚ_MSG_KEXDH_INITr   r	   Úadd_byteÚc_MSG_KEXDH_INITÚ	add_mpintÚ_send_messageÚ_MSG_KEXDH_REPLY)r   Úms     r   Ú	start_kexzKexGroup14SHA256.start_kex6   sÑ   € Ø×ÒÑÔÐØŒ>Ô%ð 	å˜œ ¤¨¬Ñ0Ô0ˆDŒFØŒN×)Ò)­/Ñ:Ô:Ð:ØˆFå�T”V˜TœV T¤VÑ,Ô,ˆŒÝ‰IŒIˆØ	�
Š
Õ#Ñ$Ô$Ð$Ø	�Š�D”FÑÔÐØŒ×$Ò$ QÑ'Ô'Ð'ØŒ×%Ò%Õ&6Ñ7Ô7Ð7Ð7Ð7r   c                 óú   — | j         j        r |t          k    r|                      |¦  «        S | j         j        s |t          k    r|                      |¦  «        S d}t          |                     |¦  «        ¦  «        ‚)Nz1KexGroup14SHA256 asked to handle packet type {:d})r   r#   r(   Ú_parse_kexdh_initr-   Ú_parse_kexdh_replyr
   Úformat)r   Úptyper.   Úmsgs       r   Ú
parse_nextzKexGroup14SHA256.parse_nextE   sx   € ØŒ>Ô%ð 	.¨5µOÒ+CÐ+CØ×)Ò)¨!Ñ,Ô,Ð,Ø”Ô+ð 	.°Õ:JÒ1JÐ1JØ×*Ò*¨1Ñ-Ô-Ð-ØAˆÝ˜3Ÿ:š: eÑ,Ô,Ñ-Ô-Ð-r   c                 óô   — 	 t          j        d¦  «        }t          |d         d¦  «        |dd …         z   }|d d…         t          k    r|d d…         t          k    rnŒ]t          j        |¦  «        | _        d S )Né   é€   r   r   r   )ÚosÚurandomr   Úb7fffffffffffffffÚb0000000000000000r   Úinflate_longr   )r   Úx_bytess     r   r"   zKexGroup14SHA256._generate_xO   s|   € ð	Ý”j ‘o”oˆGÝ ¨¤
¨DÑ1Ô1°G¸A¸B¸B´KÑ?ˆGà˜˜˜”Õ0Ò0Ð0Ø˜B˜Q˜B”KÕ#4Ò4Ð4àð	õ Ô" 7Ñ+Ô+ˆŒˆˆr   c                 ó†  — |                      ¦   «         }|                     ¦   «         | _        | j        dk     s| j        | j        dz
  k    rt	          d¦  «        ‚|                     ¦   «         }t          | j        | j        | j        ¦  «        }t          ¦   «         }| 	                    | j
        j        | j
        j        | j
        j        | j
        j        ¦  «         |                     |¦  «         |                     | j        ¦  «         |                     | j        ¦  «         |                     |¦  «         | j
                             ||                      |                     ¦   «         ¦  «                             ¦   «         ¦  «         | j
                             ||¦  «         | j
                             ¦   «          d S )Nr8   zServer kex "f" is out of range)Ú
get_stringÚ	get_mpintr   r&   r
   Ú
get_binaryr$   r   r	   Úaddr   Úlocal_versionÚremote_versionÚlocal_kex_initÚremote_kex_initÚ
add_stringr+   r   Ú_set_K_HÚ	hash_algoÚasbytesÚdigestÚ_verify_keyÚ_activate_outbound)r   r.   Úhost_keyÚsigÚKÚhms         r   r2   z#KexGroup14SHA256._parse_kexdh_reply`   sd  € à—<’<‘>”>ˆØ—’‘”ˆŒØŒF�QŠJˆJ˜DœF T¤V¨a¡ZÒ/Ð/ÝÐ?Ñ@Ô@Ð@Ø�lŠl‰nŒnˆÝ�”˜œ ¤Ñ'Ô'ˆõ ‰YŒYˆØ
�ŠØŒNÔ(ØŒNÔ)ØŒNÔ)ØŒNÔ*ñ		
ô 	
ð 	
ð 	�Š�hÑÔÐØ
�Š�T”VÑÔÐØ
�Š�T”VÑÔÐØ
�Š�Q‰ŒˆØŒ×Ò  4§>¢>°"·*²*±,´,Ñ#?Ô#?×#FÒ#FÑ#HÔ#HÑIÔIÐIØŒ×"Ò" 8¨SÑ1Ô1Ð1ØŒ×)Ò)Ñ+Ô+Ð+Ð+Ð+r   c                 óÔ  — |                      ¦   «         | _        | j        dk     s| j        | j        dz
  k    rt          d¦  «        ‚t	          | j        | j        | j        ¦  «        }| j                             ¦   «                              ¦   «         }t          ¦   «         }| 
                    | j        j        | j        j        | j        j        | j        j        ¦  «         |                     |¦  «         |                     | j        ¦  «         |                     | j        ¦  «         |                     |¦  «         |                      |                     ¦   «         ¦  «                             ¦   «         }| j                             ||¦  «         | j                             ¦   «                              || j        j        ¦  «        }t          ¦   «         }|                     t0          ¦  «         |                     |¦  «         |                     | j        ¦  «         |                     |¦  «         | j                             |¦  «         | j                             ¦   «          d S )Nr8   zClient kex "e" is out of range)rB   r   r&   r
   r$   r   r   Úget_server_keyrL   r	   rD   rF   rE   rH   rG   rI   r+   r   rK   rM   rJ   Úsign_ssh_dataÚhost_key_typer)   Úc_MSG_KEXDH_REPLYr,   rO   )r   r.   rR   ÚkeyrS   ÚHrQ   s          r   r1   z"KexGroup14SHA256._parse_kexdh_inity   sï  € à—’‘”ˆŒØŒF�QŠJˆJ˜DœF T¤V¨a¡ZÒ/Ð/ÝÐ?Ñ@Ô@Ð@Ý�”˜œ ¤Ñ'Ô'ˆØŒn×+Ò+Ñ-Ô-×5Ò5Ñ7Ô7ˆõ ‰YŒYˆØ
�ŠØŒNÔ)ØŒNÔ(ØŒNÔ*ØŒNÔ)ñ		
ô 	
ð 	
ð 	�Š�cÑÔÐØ
�Š�T”VÑÔÐØ
�Š�T”VÑÔÐØ
�Š�Q‰ŒˆØ�NŠN˜2Ÿ:š:™<œ<Ñ(Ô(×/Ò/Ñ1Ô1ˆØŒ×Ò  1Ñ%Ô%Ð%àŒn×+Ò+Ñ-Ô-×;Ò;ØˆtŒ~Ô+ñ
ô 
ˆõ ‰IŒIˆØ	�
Š
Õ$Ñ%Ô%Ð%Ø	�Š�SÑÔÐØ	�Š�D”FÑÔÐØ	�Š�SÑÔÐØŒ×$Ò$ QÑ'Ô'Ð'ØŒ×)Ò)Ñ+Ô+Ð+Ð+Ð+r   N)Ú__name__Ú
__module__Ú__qualname__r&   r%   Únamer   rK   r    r/   r6   r"   r2   r1   r   r   r   r   r   (   s…   € € € € € ð 	K€AØ	€Aà*€DØ€Iðð ð ð8ð 8ð 8ð.ð .ð .ð,ð ,ð ,ð",ð ,ð ,ð2!,ð !,ð !,ð !,ð !,r   r   )Ú__doc__r:   Úhashlibr   Úparamikor   Úparamiko.commonr   r   r   r   Úparamiko.messager	   Úparamiko.ssh_exceptionr
   Úranger(   r-   r*   rX   r<   r=   r   r   r   r   ú<module>rf      s  ðð(ð ð
 
€	€	€	Ø Ð Ð Ð Ð Ð à Ð Ð Ð Ð Ð Ø DÐ DÐ DÐ DÐ DÐ DÐ DÐ DÐ DÐ DÐ DÐ DØ $Ð $Ð $Ð $Ð $Ð $Ø /Ð /Ð /Ð /Ð /Ð /à$) E¨"¨b¡M¤MÑ !€Ð!Ø&JÐ&J¸E¸EÀ"Àb¹M¼MÐ&JÑ&JÔ&JÑ #Ð Ð#à�H˜T‘N”N X°¡\Ñ1Ð Ø ‘MÐ ðr,ð r,ð r,ð r,ð r,ñ r,ô r,ð r,ð r,ð r,r   