
    є jw                     d   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
 	 d dlmZ n# e$ r	 d dlmZ Y nw xY 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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dS )    N)__version__)AES)PKCS7)logger_warning)PdfStreamError)ARC4)Cipher)CBCECB)	CryptBasecryptographyc                   H    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dS )CryptRC4keyreturnNc                 L    t          t          |          d           | _        d S N)mode)r	   r   cipherselfr   s     xC:\Users\Terasoftware\OneDrive\Desktop\faahhh\fyndo\fyndo\venv\Lib\site-packages\pypdf/_crypt_providers/_cryptography.py__init__zCryptRC4.__init__3   s     T#YYT222    datac                     | j                                         }|                    |          |                                z   S N)r   	encryptorupdatefinalize)r   r   r   s      r   encryptzCryptRC4.encrypt6   :    K))++	%%	(:(:(<(<<<r   Tstrictr$   c                    | j                                         }|                    |          |                                z   S r   )r   	decryptorr   r    )r   r   r$   r&   s       r   decryptzCryptRC4.decrypt:   r"   r   __name__
__module____qualname__bytesr   r!   boolr'    r   r   r   r   2   s        3E 3d 3 3 3 3=E =e = = = = 6: = = =E =d =e = = = = = =r   r   c                   H    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dS )CryptAESr   r   Nc                 .    t          |          | _        d S r   )r   algr   s     r   r   zCryptAES.__init__@   s    s88r   r   c                    t          j        d          }t          d                                          }|                    |          |                                z   }t          | j        t          |                    }|	                                }||                    |          z   |                                z   S )N      )
secretstoken_bytesr   padderr   r    r	   r2   r
   r   )r   r   ivr8   padded_datar   r   s          r   r!   zCryptAES.encryptC   s     $$s""$$mmD))FOO,=,==#b''**$$&&	I$$[111I4F4F4H4HHHr   Tr#   r$   c                f   |d d         }|dd          }|s|S |swt          |          dz  dk    rat          dt                     t          d                                          }|                    |          |                                z   }t          | j        t          |                    }|
                                }	 |                    |          |                                z   }n!# t          $ r}t          |          d }~ww xY wt          d                                          }		 |	                    |          |	                                z   S # t          $ rE}|rt          |          t          d| t                     |d |d                   cY d }~S d }~ww xY w)Nr4   r   zAdding missing padding.)srcr5   zIgnoring padding error: )lenr   r)   r   r8   r   r    r	   r2   r
   r&   
ValueErrorr   unpadder)
r   r   r$   r9   r8   r   r&   r:   	exceptionr@   s
             r   r'   zCryptAES.decryptL   s   #2#YBCCy 	K 	;#d))b.A- 	;4(CCCC3ZZ&&((F==&&):)::D#b''**$$&&		,#**40093E3E3G3GGKK 	, 	, 	, +++	, ::&&((	3??;//(2C2C2E2EEE 	3 	3 	3 0$Y///AiAAxPPPP1+b/!112222222		3s6   	*C4 4
D>DD7)E! !
F0+:F+%F0+F0r(   r.   r   r   r0   r0   ?   s        E d    IE Ie I I I I 6: 3 3 3E 3d 3e 3 3 3 3 3 3r   r0   r   r   r   c                     t          t          |           d                                           }|                    |          |                                z   S r   )r	   r   r   r   r    r   r   r   s      r   rc4_encryptrD   j   K    tCyyt,,,6688ID!!I$6$6$8$888r   c                     t          t          |           d                                           }|                    |          |                                z   S r   )r	   r   r&   r   r    r   r   r&   s      r   rc4_decryptrH   o   rE   r   c                     t          t          |           t                                                                }|                    |          |                                z   S r   )r	   r   r   r   r   r    rC   s      r   aes_ecb_encryptrJ   t   O    s3xxcee,,,6688ID!!I$6$6$8$888r   c                     t          t          |           t                                                                }|                    |          |                                z   S r   )r	   r   r   r&   r   r    rG   s      r   aes_ecb_decryptrM   y   rK   r   r9   c                     t          t          |           t          |                                                    }|                    |          |                                z   S r   )r	   r   r
   r   r   r    )r   r9   r   r   s       r   aes_cbc_encryptrO   ~   Q    s3xxc"gg...88::ID!!I$6$6$8$888r   c                     t          t          |           t          |                                                    }|                    |          |                                z   S r   )r	   r   r
   r&   r   r    )r   r9   r   r&   s       r   aes_cbc_decryptrR      rP   r   )r6   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   r0   r,   rD   rH   rJ   rM   rO   rR   r.   r   r   <module>r]      se  8  $ $ $ $ $ $ A A A A A A 8 8 8 8 8 8 ' ' ' ' ' ' ' ' ' ' ' 'GDDDDDDD G G GFFFFFFFFG > > > > > > A A A A A A A A 2 2 2 2 2 2 +.
= 
= 
= 
= 
=y 
= 
= 
=(3 (3 (3 (3 (3y (3 (3 (3V9U 9% 9E 9 9 9 9
9U 9% 9E 9 9 9 9
9 9e 9 9 9 9 9
9 9e 9 9 9 9 9
9 9E 9 95 9 9 9 9
9 9E 9 95 9 9 9 9 9 9s   + 99