U
    VWz	                     @   sz   d Z ddlZddlZddlZddlmZ ddlmZ dZe	e
drLdd Zndd	lmZ eeed
ZG dd deZdS )zThis module contains needed classes, functions and constants
to implement dh-ietf1024-sha256-aes128-cbc-pkcs7 secret encryption
algorithm.    N)sha256)int_from_bytes)   r   r   r   r   r   r   r               !   h      4         b                  )      N         g      t   r            ;         "   Q   J   r   y      r                        :   C      0   +   
   m      _      7   O      5   r5   r5   r$   r   E            v   r   ^   ~   r      L   B      r   r9      k   r   r   \      rD         rH      8   rI      Z               rS   $      |   K         I   (   f   r$      r[   S      r   r   r   r   r   r   r   r   to_bytesc                 C   s   t | t|  d dS )Nr   big)intrb   mathZceil
bit_length)Znumber rg   8/usr/lib/python3/dist-packages/secretstorage/dhcrypto.pyint_to_bytes   s     ri   )ri   rc   c                   @   s   e Zd Zdd Zdd ZdS )Sessionc                 C   s>   d | _ d | _d | _d| _ttdd| _td| jt	| _
d S )NTr   rc   r   )Zobject_pathserver_public_keyaes_keyZ	encryptedr   osurandommy_private_keypowDH_PRIME_1024Zmy_public_key)selfrg   rg   rh   __init__'   s    zSession.__init__c                 C   sd   t || jt}t|}ddt|  | }d}t||t }t|dt }|d d | _	d S )N    r   s                                          )
rp   ro   rq   ri   lenhmacnewr   Zdigestrl   )rr   rk   Zcommon_secretZsaltZpseudo_random_keyZoutput_blockrg   rg   rh   set_server_public_key0   s    zSession.set_server_public_keyN)__name__
__module____qualname__rs   rz   rg   rg   rg   rh   rj   &   s   	rj   )__doc__rx   re   rm   Zhashlibr   Zcryptography.utilsr   ZDH_PRIME_1024_BYTEShasattrrd   ri   	bytearrayrq   objectrj   rg   rg   rg   rh   <module>   s   

