o
    DZœc#  ã                   @   s^   d dl Z d dlZd dlmZ d dlmZmZmZ defdd„Z	ddd	„Z
dd
d„Zdd„ ZdS )é    N)Úpadding)ÚCipherÚ
algorithmsÚmodesÚvalc                 C   s   t  dt  d| d@ ¡¡d S )Nz<iz<Il   ÿÿ r   )ÚstructÚunpackÚpack)r   © r
   úS/var/www/chikooza/env/lib/python3.10/site-packages/pyhanko/pdf_utils/crypt/_util.pyÚ	as_signed   s   r   Tc                 C   sX   t t | ¡t |¡ƒ}| ¡ }| |¡| ¡  }|r*t 	d¡ 
¡ }| |¡| ¡  S |S )Né€   )r   r   ÚAESr   ÚCBCÚ	decryptorÚupdateÚfinalizer   ÚPKCS7Úunpadder)ÚkeyÚdataÚivÚuse_paddingÚcipherr   Ú	plaintextr   r
   r
   r   Úaes_cbc_decrypt   s   r   c                 C   sj   |d u r	t  d¡}tt | ¡t |¡ƒ}| ¡ }|r*t 	d¡ 
¡ }| |¡| ¡  }|| |¡| ¡  fS )Né   r   )ÚsecretsÚtoken_bytesr   r   r   r   r   Ú	encryptorr   r   Úpadderr   r   )r   r   r   r   r   r   r    r
   r
   r   Úaes_cbc_encrypt   s   
r!   c                 C   s,   t t | ¡d d}| ¡ }| |¡| ¡  S )N)Úmode)r   r   ÚARC4r   r   r   )r   r   r   r   r
   r
   r   Úrc4_encrypt$   s   r$   )T)r   r   Úcryptography.hazmat.primitivesr   Ú&cryptography.hazmat.primitives.ciphersr   r   r   Úintr   r   r!   r$   r
   r
   r
   r   Ú<module>   s    

