o
    †€!`q	  ã                   @   sj   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eƒZdS )zŠThis 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   ú8/usr/lib/python3/dist-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_key+   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   Úobjectrl   ri   ri   ri   rj   Ú<module>   s   