
    mj                        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     W/root/.hermes/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                   |d d }|dd  }|s|S |s.t        |      dz  dk7  rt        dt               t        |d      }t	        j
                  | j                  t        j                  |      }	 |j                  |      }	 t        |d      S # t        $ r}t        |      d }~ww xY w# t        $ r2}|rt        |      t        dt        |       |d |d     cY d }~S d }~ww xY w)Nr-   r   zAdding missing padding.)sourcez%Ignoring padding error: %(exception)s)r6   	exception)lenr	   r#   r   r   r0   r   r1   r!   
ValueErrorr
   r   )r   r   r   r2   r4   r3   r7   s          r   r!   zCryptAES.decrypt>   s    #2YBCyK#d)b.A-4XFtR=Dggdhhb1	,++d+K
	3b))  	, ++	,  	3$Y//B8_hi1+b/!122		3s6   /B B) 	B&B!!B&)	C$2'CC$C$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=   Y       ??3''--r   c                 J    t        j                  |       j                  |      S r   )r   r   r!   r<   s     r   rc4_decryptr@   ]   r>   r   c                 h    t        j                  | t         j                        j                  |      S r   )r   r0   MODE_ECBr   r<   s     r   aes_ecb_encryptrC   a   "    773%--d33r   c                 h    t        j                  | t         j                        j                  |      S r   )r   r0   rB   r!   r<   s     r   aes_ecb_decryptrF   e   rD   r   r2   c                 j    t        j                  | t         j                  |      j                  |      S r   )r   r0   r1   r   r   r2   r   s      r   aes_cbc_encryptrI   i   $    773b)11$77r   c                 j    t        j                  | t         j                  |      j                  |      S r   )r   r0   r1   r!   rH   s      r   aes_cbc_decryptrL   m   rJ   r   )r.   Cryptor   Crypto.Cipherr   r   Crypto.Util.Paddingr   r   pypdf._crypt_providers._baser   pypdf._utilsr	   pypdf.errorsr
   crypt_providerr   r*   r&   r=   r@   rC   rF   rI   rL   r(   r   r   <module>rT      s   8   # * 2 ' ' +.7y 7"3y "3J.U .% .E ..U .% .E .4 4e 4 44 4e 4 48 8E 8 85 88 8E 8 85 8r   