
    Z?iT                        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
e
      Z G d de
      ZdededefdZdededefdZdededefdZdededefdZdedededefdZdedededefdZy)    N)__version__)AESARC4)padunpad)	CryptBase)logger_warning)PdfStreamErrorpycryptodomec                   F    e Zd ZdeddfdZdedefdZddded	edefd
Zy)CryptRC4keyreturnNc                     || _         y Nr   selfr   s     Z/var/www/html/qr/venv/lib/python3.12/site-packages/pypdf/_crypt_providers/_pycryptodome.py__init__zCryptRC4.__init__*   	        datac                 ^    t        j                  | j                        j                  |      S r   )r   
ARC4Cipherr   encrypt)r   r   s     r   r   zCryptRC4.encrypt-        txx(0066r   Tstrictr   c                ^    t        j                  | j                        j                  |      S r   )r   r   r   decrypt)r   r   r   s      r   r!   zCryptRC4.decrypt0   r   r   __name__
__module____qualname__bytesr   r   boolr!    r   r   r   r   )   sG    E d 7E 7e 7 6: 7E 7d 7e 7r   r   c                   F    e Zd ZdeddfdZdedefdZddded	edefd
Zy)CryptAESr   r   Nc                     || _         y r   r   r   s     r   r   zCryptAES.__init__5   r   r   r   c                     t        j                  d      }t        |d      }t        j                  | j
                  t        j                  |      }||j                  |      z   S )N   )secretstoken_bytesr   r   newr   MODE_CBCr   )r   r   ivpadded_dataaess        r   r   zCryptAES.encrypt8   sK      $$mggdhhb1CKK,,,r   Tr   r   c                8   |d d }|dd  }|s|S t        j                  | j                  t         j                  |      }|j	                  |      }	 t        |d      S # t        $ r4}|rt        |      t        d| t               |d |d     cY d }~S d }~ww xY w)Nr-   zIgnoring padding error: )src)
r   r0   r   r1   r!   r   
ValueErrorr
   r	   r#   )r   r   r   r2   r4   r3   	exceptions          r   r!   zCryptAES.decrypt>   s    #2YBCyKggdhhb1kk$'	3b)) 	3$Y//5i[AxP1+b/!122		3s   A 	B%)BBBr"   r(   r   r   r*   r*   4   sG    E d -E -e - 6: 3E 3d 3e 3r   r*   r   r   r   c                 J    t        j                  |       j                  |      S r   )r   r   r   r   r   s     r   rc4_encryptr<   P       ??3''--r   c                 J    t        j                  |       j                  |      S r   )r   r   r!   r;   s     r   rc4_decryptr?   T   r=   r   c                 h    t        j                  | t         j                        j                  |      S r   )r   r0   MODE_ECBr   r;   s     r   aes_ecb_encryptrB   X   "    773%--d33r   c                 h    t        j                  | t         j                        j                  |      S r   )r   r0   rA   r!   r;   s     r   aes_ecb_decryptrE   \   rC   r   r2   c                 j    t        j                  | t         j                  |      j                  |      S r   )r   r0   r1   r   r   r2   r   s      r   aes_cbc_encryptrH   `   $    773b)11$77r   c                 j    t        j                  | t         j                  |      j                  |      S r   )r   r0   r1   r!   rG   s      r   aes_cbc_decryptrK   d   rI   r   )r.   Cryptor   Crypto.Cipherr   r   Crypto.Util.Paddingr   r   pypdf._crypt_providers._baser   pypdf._utilsr	   pypdf.errorsr
   crypt_providerr   r*   r&   r<   r?   rB   rE   rH   rK   r(   r   r   <module>rS      s   8   # * 2 ' ' +.7y 73y 38.U .% .E ..U .% .E .4 4e 4 44 4e 4 48 8E 8 85 88 8E 8 85 8r   