U
    [eq	                     @   sh   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ddZ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)Optional)   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   )numberreturnc                 C   s   |  t|  d dS )Nr   big)to_bytesmathceil
bit_length)rb    ri   X/var/www/html/services/stratfitenv/lib/python3.8/site-packages/secretstorage/dhcrypto.pyint_to_bytes   s    rk   rd   c                   @   s*   e Zd ZddddZeddddZdS )SessionN)rc   c                 C   s:   d | _ d | _d| _ttdd| _td| jt	| _
d S )NTr   rd   r   )Zobject_pathaes_keyZ	encryptedint
from_bytesosurandommy_private_keypowDH_PRIME_1024Zmy_public_key)selfri   ri   rj   __init__#   s
    zSession.__init__)server_public_keyrc   c                 C   sd   t || jt}t|}ddt|  | }d}t||t }t|dt }|d d | _	d S )N    r   s                                          )
rs   rr   rt   rk   lenhmacnewr   digestrm   )ru   rw   Zcommon_secret_intZcommon_secretsaltZpseudo_random_keyZoutput_blockri   ri   rj   set_server_public_key+   s    zSession.set_server_public_key)__name__
__module____qualname__rv   rn   r   ri   ri   ri   rj   rl   "   s   rl   )__doc__r|   rf   rp   hashlibr   typingr   ZDH_PRIME_1024_BYTESrn   bytesrk   ro   rt   objectrl   ri   ri   ri   rj   <module>   s   