o
    jw                     @   sT  d dl Z d dlmZ d dlmZ d dlmZ d dlmZ d dl	m
Z
 zd dlmZ W n ey9   d dlmZ Y nw d dlmZ d d	lmZ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)PKCS7)logger_warning)PdfStreamError)ARC4)Cipher)CBCECB)	CryptBasecryptographyc                   @   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   s   t t|d d| _d S N)mode)r   r   cipherselfr    r   j/var/www/html/fyndo/pharma/fyndo/venv/lib/python3.10/site-packages/pypdf/_crypt_providers/_cryptography.py__init__3   s   zCryptRC4.__init__datac                 C   s   | j  }|||  S N)r   	encryptorupdatefinalize)r   r   r   r   r   r   encrypt6      
zCryptRC4.encryptTstrictr!   c                C   s   | j  }|||  S r   )r   	decryptorr   r   )r   r   r!   r"   r   r   r   decrypt:   r   zCryptRC4.decrypt__name__
__module____qualname__bytesr   r   boolr#   r   r   r   r   r   2   s     r   c                   @   r   )CryptAESr   r   Nc                 C   s   t || _d S r   )r   algr   r   r   r   r   @   s   zCryptAES.__init__r   c                 C   sV   t d}td }|||  }t| jt|}|	 }||| |  S )N      )
secretstoken_bytesr   padderr   r   r   r+   r	   r   )r   r   ivr0   padded_datar   r   r   r   r   r   C   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	|}|
 }z|||  }W n tyV } zt|d }~ww td }	z
|	||	  W S  ty } z|rut|td| td |d |d   W  Y d }~S d }~ww )Nr,   r   zAdding missing padding.)srcr-   zIgnoring padding error: )lenr   r%   r   r0   r   r   r   r+   r	   r"   
ValueErrorr   unpadder)
r   r   r!   r1   r0   r   r"   r2   	exceptionr7   r   r   r   r#   L   s4   zCryptAES.decryptr$   r   r   r   r   r*   ?   s     	r*   r   r   r   c                 C   &   t t| d d }|||  S r   )r   r   r   r   r   r   r   r   r   r   r   rc4_encryptj      r;   c                 C   r9   r   )r   r   r"   r   r   r   r   r"   r   r   r   rc4_decrypto   r<   r>   c                 C   (   t t| t d }|||  S r   )r   r   r
   r   r   r   r:   r   r   r   aes_ecb_encryptt      r@   c                 C   r?   r   )r   r   r
   r"   r   r   r=   r   r   r   aes_ecb_decrypty   rA   rB   r1   c                 C   *   t t| t|d }|||  S r   )r   r   r	   r   r   r   )r   r1   r   r   r   r   r   aes_cbc_encrypt~      rD   c                 C   rC   r   )r   r   r	   r"   r   r   )r   r1   r   r"   r   r   r   aes_cbc_decrypt   rE   rF   )r.   r   r   1cryptography.hazmat.primitives.ciphers.algorithmsr   &cryptography.hazmat.primitives.paddingr   pypdf._utilsr   pypdf.errorsr   /cryptography.hazmat.decrepit.ciphers.algorithmsr   ImportError+cryptography.hazmat.primitives.ciphers.baser   ,cryptography.hazmat.primitives.ciphers.modesr	   r
   pypdf._crypt_providers._baser   crypt_providerr   r*   r(   r;   r>   r@   rB   rD   rF   r   r   r   r   <module>   s.   +