o
    Vh
                     @   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de	de
fdd	Ze	ed
ZG dd d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   j/var/www/html/construction_image-detection-poc/venv/lib/python3.10/site-packages/secretstorage/dhcrypto.pyint_to_bytes    s   rk   rd   c                   @   s(   e Zd ZdddZdeddfddZdS )	Sessionrc   Nc                 C   s:   d | _ d | _d| _ttdd| _td| jt	| _
d S )NTr   rd   r   )object_pathaes_key	encryptedint
from_bytesosurandommy_private_keypowDH_PRIME_1024my_public_key)selfri   ri   rj   __init__(   s
   zSession.__init__server_public_keyc                 C   sd   t || jt}t|}ddt|  | }d}t||t }t|dt }|d d | _	d S )N    r   s                                          )
ru   rt   rv   rk   lenhmacnewr   digestrn   )rx   rz   common_secret_intcommon_secretsaltpseudo_random_keyoutput_blockri   ri   rj   set_server_public_key0   s   zSession.set_server_public_key)rc   N)__name__
__module____qualname__ry   rp   r   ri   ri   ri   rj   rl   '   s    
rl   )__doc__r   rf   rr   hashlibr   typingr   DH_PRIME_1024_BYTESrp   bytesrk   rq   rv   rl   ri   ri   ri   rj   <module>   s   