Ë
    *Rði„)  ã                   ón  — d Z ddlZddlmZ ddlmZmZ ddlmZm	Z	m
Z
 ddlmZ 	 ddlmZ d	Z	 dd
eded   dedededededefd„Zdededed   dedef
d„Zd
eded   dedefd„Zd
ededededeeef   f
d„Zd
eded   dedededededeeef   fd„Zdeeef   dedefd„Zy# e$ r	 ddlmZ Y Œ‡w xY w)z,Anything related to encryption / decryption.é    N)Úmd5)ÚTupleÚUnioné   )Úb_Úord_Ústr_)ÚByteStringObject)ÚLiterals    (¿N^NuŠAd NVÿú.. ¶Ðh>€/©þdSizÚpasswordÚrev)é   é   é   ÚkeylenÚowner_entryÚp_entryÚ	id1_entryÚmetadata_encryptÚreturnc                 óÜ  — t        t        | «      t        t        «      z   dd «      }t        |«      }|j	                  |j
                  «       t        j                  d|«      }	|j	                  |	«       |j	                  |j
                  «       |dk\  r|s|j	                  d«       |j                  «       }
|dk\  r,t        d«      D ]  }t        |
d| «      j                  «       }
Œ  |
d| S )z€
    Implementation of algorithm 3.2 of the PDF standard security handler.

    See section 3.5.2 of the PDF 1.6 reference.
    Né    z<ir   s   ÿÿÿÿé2   )
r   r	   Ú_encryption_paddingr   ÚupdateÚoriginal_bytesÚstructÚpackÚdigestÚrange)r   r   r   r   r   r   r   Úpassword_bytesÚmÚp_entry_bytesÚmd5_hashÚ_s               úK/var/www/html/Extract/venv/lib/python3.12/site-packages/PyPDF2/_security.pyÚ_alg32r'   6   sß   € ô& œ˜h›¬$Ô/BÓ*CÑCÀSÀbÐIÓJ€Nô 	ˆNÓ€Að ‡H�Hˆ[×'Ñ'Ô(ô —K‘K  gÓ.€MØ‡H�Hˆ]Ôð ‡H�HˆY×%Ñ%Ô&ð ˆa‚xÑ(Ø	�‰Ð$Ô%à�x‰x‹z€Hð ˆa‚xÜ�r“ò 	7ˆAÜ˜8 G VÐ,Ó-×4Ñ4Ó6‰Hð	7ð �G�VÐÐó    Úowner_passwordÚuser_passwordc                 óþ   — t        | ||«      }t        |t        t        «      z   dd «      }t	        ||«      }|dk\  r@t        dd«      D ]1  }d}|D ]  }	|t        t        |	«      |z  «      z  }Œ t	        ||«      }Œ3 |S )z{
    Implementation of algorithm 3.3 of the PDF standard security handler,
    section 3.5.2 of the PDF 1.6 reference.
    Nr   r   r   é   Ú )Ú_alg33_1r   r	   r   ÚRC4_encryptr    Úchrr   )
r)   r*   r   r   ÚkeyÚuser_password_bytesÚvalÚiÚnew_keyÚkey_chars
             r&   Ú_alg33r7   l   s�   € ô �> 3¨Ó
/€Cô ˜m¬dÔ3FÓ.GÑGÈÈ"ÐMÓNÐô �cÐ.Ó
/€Cð ˆa‚xÜ�q˜"“ò 	,ˆAØˆGØò 3�Øœ3œt H›~°Ñ1Ó2Ñ2‘ð3ä˜g sÓ+‰Cð		,ð €Jr(   c                 óÞ   — t        | t        t        «      z   dd «      }t        |«      }|j	                  «       }|dk\  r)t        d«      D ]  }t        |«      j	                  «       }Œ |d| }|S )zSteps 1-4 of algorithm 3.3Nr   r   r   )r   r	   r   r   r   r    )r   r   r   r!   r"   r$   r%   r1   s           r&   r.   r.   Œ   sx   € ô
 ˜¤DÔ)<Ó$=Ñ=¸sÀÐCÓD€Nô 	ˆNÓ€Að �x‰x‹z€HØ
ˆa‚xÜ�r“ò 	.ˆAÜ˜8“}×+Ñ+Ó-‰Hð	.ð �7�FÐ
€CØ€Jr(   c                 óR   — d}d}t        | |||||«      }t        |t        «      }||fS )ú€
    Implementation of algorithm 3.4 of the PDF standard security handler.

    See section 3.5.2 of the PDF 1.6 reference.
    r   é   )r'   r/   r   )r   r   r   r   r   r   r1   ÚUs           r&   Ú_alg34r=   £   s<   € ð €CØ€FÜ
�˜3 ¨°W¸iÓ
H€Cô 	�CÔ,Ó-€Að ˆcˆ6€Mr(   c           
      ón  — t        | |||||«      }t        «       }|j                  t        «       |j                  |j                  «       |j                  «       }	t        ||	«      }
t        dd«      D ]:  }d}|D ]%  }|t        t        t        |«      |z  «      «      z  }Œ' t        ||
«      }
Œ< |
dz   |fS )r:   r   r,   r(   s                   )r'   r   r   r   r   r   r/   r    r   r0   r   )r   r   r   r   r   r   r   r1   r"   r$   r3   r4   r5   Úks                 r&   Ú_alg35r@   ¼   sÀ   € ô  �˜3 ¨°W¸iÓ
H€Cô 	‹€AØ‡H�HÔ Ô!ð
 ‡H�HˆY×%Ñ%Ô&Ø�x‰x‹z€Hô �c˜8Ó
$€Cô �1�b‹\ò (ˆØˆØò 	,ˆAØ”rœ#œd 1›g¨™kÓ*Ó+Ñ+‰Gð	,ä˜' 3Ó'‰ð	(ð �,Ñ Ð$Ð$r(   r1   Ú	plaintextc           
      óÂ  — t        t        d«      «      }d}t        d«      D ]9  }|||   z   t        | |t        | «      z     «      z   dz  }||   ||   c||<   ||<   Œ; d\  }}g }|D ]f  }|dz   dz  }|||   z   dz  }||   ||   c||<   ||<   |||   ||   z   dz     }|j	                  t        t        t        |«      |z  «      «      «       Œh dj                  |«      S )Né   r   )r   r   r   r(   )Úlistr    r   ÚlenÚappendr   r0   Újoin)r1   rA   ÚSÚjr4   ÚretvalÚplaintext_charÚts           r&   r/   r/   î   s  € ÜŒU�3‹ZÓ€AØ	€AÜ�3‹Zò  ˆØ��1‘‰Xœ˜S ¤S¨£X¡Ñ.Ó/Ñ/°3Ñ6ˆØ�q‘T˜1˜Q™4ˆ
ˆˆ!‰ˆa�Šdð ð �D€A€qØ€FØ#ò 9ˆØ�‰U�c‰MˆØ��1‘‰X˜ÑˆØ�q‘T˜1˜Q™4ˆ
ˆˆ!‰ˆa�‰dØˆq�‰t�a˜‘d‰{˜cÑ!Ñ"ˆØ�‰”bœœT .Ó1°AÑ5Ó6Ó7Õ8ð9ð �8‰8�FÓÐr(   )T)Ú__doc__r   Úhashlibr   Útypingr   r   Ú_utilsr   r   r	   Úgenericr
   r   ÚImportErrorÚtyping_extensionsr   ÚstrÚintÚboolÚbytesr'   r7   r.   r=   r@   r/   © r(   r&   ú<module>rY      s¹  ðñ< 3ã Ý ß ç "Ñ "Ý %ð*Ýð ð ð "ñ3Øð3à	�Ñ	ð3ð ð3ð "ð	3ð
 ð3ð  ð3ð ð3ð ó3ðlØðØ(+ðØ29¸'Ñ2BðØLOðà
óð@�sð  ¨Ñ!1ð ¸3ð À5ó ð.Øðà!ðð ðð  ð	ð
 ˆ5�%ˆ<Ñóð2/%Øð/%à	�Ñ	ð/%ð ð/%ð "ð	/%ð
 ð/%ð  ð/%ð ð/%ð ˆ5�%ˆ<Ñó/%ðd�U˜3 ˜:Ñ&ð °5ð ¸Uô øðK ò *÷ *ð*ús   ¦B& Â&B4Â3B4