
    Z?i6                         d dl mZ d dlmZ dZd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)    )	CryptBase)DependencyErrorz/cryptography>=3.1 is required for AES algorithm)local_crypt_fallbackz0.0.0c                   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                    t        t        d            | _        d}t        d      D ]b  }|| j                  |   z   ||t        |      z     z   dz  }| j                  |   | j                  |   c| j                  |<   | j                  |<   d y )N   r   )	bytearrayrangeslen)selfr   jis       V/var/www/html/qr/venv/lib/python3.12/site-packages/pypdf/_crypt_providers/_fallback.py__init__zCryptRC4.__init__&   s~    5:&s 	8ATVVAYQS\!22c9A#'66!9dffQi DFF1Itvvay	8    datac                 J   t        | j                        }t        t        |            D cg c]  }d }}d\  }}t        t        |            D ]B  }|dz   dz  }|||   z   dz  }||   ||   c||<   ||<   |||   ||   z   dz     }||   |z  ||<   D t	        |      S c c}w )Nr   )r   r      r   )r   r   r   r   bytes)	r   r   r   _outr   r   kxs	            r   encryptzCryptRC4.encrypt-   s    dffD	*+Qq++1s4y! 	!AQ#AQqTS A1qtJAaD!A$1Q4!A$;#%&A!Wq[CF	! Sz ,s   	B Tstrictr    c                $    | j                  |      S N)r   r   r   r    s      r   decryptzCryptRC4.decrypt9   s    ||D!!r   __name__
__module____qualname__r   r   r   boolr$    r   r   r   r   %   sG    8E 8d 8
E 
e 
 6: "E "d "e "r   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   r   s     r   r   zCryptAES.__init__>   s    r   r   c                      t        t              r"   r   _DEPENDENCY_ERROR_STR)r   r   s     r   r   zCryptAES.encryptA       344r   Tr   r    c                     t        t              r"   r/   r#   s      r   r$   zCryptAES.decryptD   r1   r   r%   r*   r   r   r,   r,   =   sG    E d 5E 5e 5 6: 5E 5d 5e 5r   r,   r   r   r	   c                 6    t        |       j                  |      S r"   )r   r   r   r   s     r   rc4_encryptr5   H       C=  &&r   c                 6    t        |       j                  |      S r"   )r   r$   r4   s     r   rc4_decryptr8   L   r6   r   c                      t        t              r"   r/   r4   s     r   aes_ecb_encryptr:   P       
/
00r   c                      t        t              r"   r/   r4   s     r   aes_ecb_decryptr=   T   r;   r   ivc                      t        t              r"   r/   r   r>   r   s      r   aes_cbc_encryptrA   X   r;   r   c                      t        t              r"   r/   r@   s      r   aes_cbc_decryptrC   \   r;   r   N)pypdf._crypt_providers._baser   pypdf.errorsr   r0   crypt_providerr   r,   r   r5   r8   r:   r=   rA   rC   r*   r   r   <module>rG      s   8 3 (I  3"y "05y 5'U '% 'E ''U '% 'E '1 1e 1 11 1e 1 11 1E 1 15 11 1E 1 15 1r   