
    b
                         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Ze	j                  ed	      Z G d
 d      Zy)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   r6   r6   r%   r   E            v   r   ^   ~   r      L   B      r    r:      k   r   r   \      rE         rI      8   rJ      Z               rT   $      |   K         I   (   f   r%      r\   S      r   r   r   r   r   r   r   r   numberreturnc                 n    | j                  t        j                  | j                         dz        d      S )Nr   big)to_bytesmathceil
bit_length)rc   s    8/usr/lib/python3/dist-packages/secretstorage/dhcrypto.pyint_to_bytesrl       s*    ??499V%6%6%81%<=uEE    rf   c                   $    e Zd ZddZdeddfdZy)Sessionrd   Nc                     d | _         d | _        d| _        t        j	                  t        j                  d      d      | _        t        d| j                  t              | _
        y )NTr   rf   r   )object_pathaes_key	encryptedint
from_bytesosurandommy_private_keypowDH_PRIME_1024my_public_key)selfs    rk   __init__zSession.__init__(   sK    !nnRZZ-=uE D$7$7Grm   server_public_keyc                 4   t        || j                  t              }t        |      }ddt	        |      z
  z  |z   }d}t        j                  ||t              j                         }t        j                  |dt              j                         }|d d | _	        y )N    r   s                                          )
ry   rx   rz   rl   lenhmacnewr   digestrr   )r|   r~   common_secret_intcommon_secretsaltpseudo_random_keyoutput_blocks          rk   set_server_public_keyzSession.set_server_public_key0   s     143F3F -/$%674#m*<#<=M HHT=&AHHJxx 17FCJJL#ET*rm   )rd   N)__name__
__module____qualname__r}   rt   r    rm   rk   ro   ro   '   s    H+s +t +rm   ro   )__doc__r   rh   rv   hashlibr   typingr   DH_PRIME_1024_BYTESrt   bytesrl   ru   rz   ro   r   rm   rk   <module>r      sV      	   F F F 2E:+ +rm   