o
    j                     @   s  d dl Z d dlmZ d dlmZmZ d dlmZmZ d dl	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unpad)	CryptBase)logger_warning)PdfStreamErrorpycryptodomec                   @   L   e Zd ZdeddfddZdedefddZd	d
dededefddZdS )CryptRC4keyreturnNc                 C   
   || _ d S Nr   selfr    r   j/var/www/html/fyndo/pharma/fyndo/venv/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.encryptTstrictr   c                C   r   r   )r   r   r   decrypt)r   r   r   r   r   r   r   0   r   zCryptRC4.decrypt__name__
__module____qualname__bytesr   r   boolr   r   r   r   r   r   )   s     r   c                   @   r   )CryptAESr   r   Nc                 C   r   r   r   r   r   r   r   r   5   r   zCryptAES.__init__r   c                 C   s4   t d}t|d}t| jtj|}||| S )N   )secretstoken_bytesr   r   newr   MODE_CBCr   )r   r   ivpadded_dataaesr   r   r   r   8   s   

zCryptAES.encryptTr   r   c             
   C   s   |d d }|dd  }|s|S |s%t |d dkr%tdtd t|d}t| jtj|}z||}W n t	yE } zt
|d }~ww zt|dW S  t	yv } z|rZt
|td| td |d |d   W  Y d }~S d }~ww )Nr'   r   zAdding missing padding.)srczIgnoring padding error: )lenr   r!   r   r   r*   r   r+   r   
ValueErrorr	   r   )r   r   r   r,   r.   r-   	exceptionr   r   r   r   >   s.   
zCryptAES.decryptr    r   r   r   r   r&   4   s     r&   r   r   r   c                 C      t | |S r   )r   r   r   r   r   r   r   r   rc4_encryptY      r6   c                 C   r4   r   )r   r   r   r5   r   r   r   rc4_decrypt]   r7   r8   c                 C      t | t j|S r   )r   r*   MODE_ECBr   r5   r   r   r   aes_ecb_encrypta      r;   c                 C   r9   r   )r   r*   r:   r   r5   r   r   r   aes_ecb_decrypte   r<   r=   r,   c                 C      t | t j||S r   )r   r*   r+   r   r   r,   r   r   r   r   aes_cbc_encrypti      r@   c                 C   r>   r   )r   r*   r+   r   r?   r   r   r   aes_cbc_decryptm   rA   rB   )r(   Cryptor   Crypto.Cipherr   r   Crypto.Util.Paddingr   r   pypdf._crypt_providers._baser   pypdf._utilsr   pypdf.errorsr	   crypt_providerr   r&   r$   r6   r8   r;   r=   r@   rB   r   r   r   r   <module>   s    %