o
     ªZh5  ã                   @   sô   d dl Z d dlmZ d dlmZmZ d dlmZ d dlm	Z	 defZ
G dd„ de	ƒZG d	d
„ d
e	ƒZdededefdd„Zdededefdd„Zdededefdd„Zdededefdd„Zdedededefdd„Zdedededefdd„ZdS )é    N)Ú__version__)ÚAESÚARC4)Úpad)Ú	CryptBaseZpycryptodomec                   @   óB   e Zd Zdeddfdd„Zdedefdd„Zdedefd	d
„ZdS )ÚCryptRC4ÚkeyÚreturnNc                 C   ó
   || _ d S ©N©r	   ©Úselfr	   © r   ú[/var/www/html/lang_env/lib/python3.10/site-packages/pypdf/_crypt_providers/_pycryptodome.pyÚ__init__(   ó   
zCryptRC4.__init__Údatac                 C   ó   t  | j¡ |¡S r   )r   Ú
ARC4Cipherr	   Úencrypt©r   r   r   r   r   r   +   ó   zCryptRC4.encryptc                 C   r   r   )r   r   r	   Údecryptr   r   r   r   r   .   r   zCryptRC4.decrypt©Ú__name__Ú
__module__Ú__qualname__Úbytesr   r   r   r   r   r   r   r   '   s    r   c                   @   r   )ÚCryptAESr	   r
   Nc                 C   r   r   r   r   r   r   r   r   3   r   zCryptAES.__init__r   c                 C   s4   t  d¡}t|dƒ}t | jtj|¡}|| |¡ S )Né   )ÚsecretsZtoken_bytesr   r   Únewr	   ÚMODE_CBCr   )r   r   ÚivÚaesr   r   r   r   6   s   

zCryptAES.encryptc                 C   sh   |d d… }|dd … }|s|S t |ƒd dkrt|dƒ}t | jtj|¡}| |¡}|d |d  … S )Nr!   r   éÿÿÿÿ)Úlenr   r   r#   r	   r$   r   )r   r   r%   r&   Údr   r   r   r   <   s   

zCryptAES.decryptr   r   r   r   r   r    2   s    r    r	   r   r
   c                 C   ó   t  | ¡ |¡S r   )r   r   r   ©r	   r   r   r   r   Úrc4_encryptL   ó   r,   c                 C   r*   r   )r   r   r   r+   r   r   r   Úrc4_decryptP   r-   r.   c                 C   ó   t  | t j¡ |¡S r   )r   r#   ÚMODE_ECBr   r+   r   r   r   Úaes_ecb_encryptT   ó   r1   c                 C   r/   r   )r   r#   r0   r   r+   r   r   r   Úaes_ecb_decryptX   r2   r3   r%   c                 C   ó   t  | t j|¡ |¡S r   )r   r#   r$   r   ©r	   r%   r   r   r   r   Úaes_cbc_encrypt\   ó   r6   c                 C   r4   r   )r   r#   r$   r   r5   r   r   r   Úaes_cbc_decrypt`   r7   r8   )r"   ZCryptor   ZCrypto.Cipherr   r   ZCrypto.Util.Paddingr   Zpypdf._crypt_providers._baser   Zcrypt_providerr   r    r   r,   r.   r1   r3   r6   r8   r   r   r   r   Ú<module>   s   