U
    óN…f5  ã                   @   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eeedœdd„Zeeedœdd„Zeeedœdd„Zeeedœdd„Zeeeedœdd„Zeeeedœdd„ZdS )é    N)Ú__version__)ÚAESÚARC4)Úpad)Ú	CryptBaseZpycryptodomec                   @   s<   e Zd Zeddœdd„Zeedœdd„Zeedœdd	„ZdS )
ÚCryptRC4N©ÚkeyÚreturnc                 C   s
   || _ d S ©N©r	   ©Úselfr	   © r   úH/tmp/pip-unpacked-wheel-zevpxvmc/pypdf/_crypt_providers/_pycryptodome.pyÚ__init__(   s    zCryptRC4.__init__©Údatar
   c                 C   s   t  | j¡ |¡S r   )r   Ú
ARC4Cipherr	   Úencrypt©r   r   r   r   r   r   +   s    zCryptRC4.encryptc                 C   s   t  | j¡ |¡S r   )r   r   r	   Údecryptr   r   r   r   r   .   s    zCryptRC4.decrypt©Ú__name__Ú
__module__Ú__qualname__Úbytesr   r   r   r   r   r   r   r   '   s   r   c                   @   s<   e Zd Zeddœdd„Zeedœdd„Zeedœdd	„ZdS )
ÚCryptAESNr   c                 C   s
   || _ d S r   r   r   r   r   r   r   3   s    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   s   t  | ¡ |¡S r   )r   r   r   ©r	   r   r   r   r   Úrc4_encryptL   s    r(   c                 C   s   t  | ¡ |¡S r   )r   r   r   r'   r   r   r   Úrc4_decryptP   s    r)   c                 C   s   t  | t j¡ |¡S r   )r   r    ÚMODE_ECBr   r'   r   r   r   Úaes_ecb_encryptT   s    r+   c                 C   s   t  | t j¡ |¡S r   )r   r    r*   r   r'   r   r   r   Úaes_ecb_decryptX   s    r,   )r	   r"   r   r
   c                 C   s   t  | t j|¡ |¡S r   )r   r    r!   r   ©r	   r"   r   r   r   r   Úaes_cbc_encrypt\   s    r.   c                 C   s   t  | t j|¡ |¡S r   )r   r    r!   r   r-   r   r   r   Úaes_cbc_decrypt`   s    r/   )r   ZCryptor   ZCrypto.Cipherr   r   ZCrypto.Util.Paddingr   Zpypdf._crypt_providers._baser   Zcrypt_providerr   r   r   r(   r)   r+   r,   r.   r/   r   r   r   r   Ú<module>   s   