o
    ¥Àvhj  ã                   @   st   d dl Z d dlmZmZmZ d dlmZ d dlmZm	Z	m
Z
 dd„ Zddd	„Zdd
d„Zdd„ Zdd„ Zdd„ ZdS )é    N)ÚARC4ÚRC2Ú	TripleDES)Úpadding)ÚCipherÚ
algorithmsÚmodesc                C   s4   |rt | ƒdkrt d¡ ¡ }| | ¡| ¡  S | S )Nr   é€   )Úlenr   ÚPKCS7ÚunpadderÚupdateÚfinalize)Ú	plaintextÚuse_paddingr   © r   ú[/var/www/html/hyperkenya/venv/lib/python3.10/site-packages/pyhanko/pdf_utils/crypt/_util.pyÚ_maybe_unpad   s   r   Tc                 C   s<   t t | ¡t |¡ƒ}| ¡ }| |¡| ¡  }t||dS )N©r   )	r   r   ÚAESr   ÚCBCÚ	decryptorr   r   r   )ÚkeyÚdataÚivr   Úcipherr   r   r   r   r   Úaes_cbc_decrypt   ó   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   ó<   t t| ƒt |¡d}| ¡ }| |¡| ¡  }t|ddS ©N©ÚmodeTr   )r   r   r   r   r   r   r   r   ©r   r   r   r   r   r   r   r   r   Útripledes_decrypt#   r   r)   c                 C   r$   r%   )r   r   r   r   r   r   r   r   r(   r   r   r   Úrc2_decrypt*   r   r*   c                 C   s*   t t| ƒd d}| ¡ }| |¡| ¡  S )Nr&   )r   r   r!   r   r   )r   r   r   r!   r   r   r   Úrc4_encrypt1   s   r+   )T)r   Ú/cryptography.hazmat.decrepit.ciphers.algorithmsr   r   r   Úcryptography.hazmat.primitivesr   Ú&cryptography.hazmat.primitives.ciphersr   r   r   r   r   r#   r)   r*   r+   r   r   r   r   Ú<module>   s    
	
