
    %h)                     ~   S r SSKrSSKJr  SSKJrJr  SSKJrJ	r	J
r
  SSKJr   SSKJr  S	r SS
\S\S   S\S\S\S\S\S\4S jjrS\S\S\S   S\S\4
S jrS
\S\S   S\S\4S jrS
\S\S\S\S\\\4   4
S jrS
\S\S   S\S\S\S\S\S\\\4   4S jrS\\\4   S\S\4S jrg! \ a	    SSKJr   Nf = f)z,Anything related to encryption / decryption.    N)md5)TupleUnion   )b_ord_str_)ByteStringObject)Literals    (N^NuAd NV.. h>/dSizpasswordrev)         keylenowner_entryp_entry	id1_entrymetadata_encryptreturnc                    [        [        U 5      [        [        5      -   SS 5      n[        U5      nUR	                  UR
                  5        [        R                  " SU5      n	UR	                  U	5        UR	                  UR
                  5        US:  a  U(       d  UR	                  S5        UR                  5       n
US:  a.  [        S5       H  n[        U
SU 5      R                  5       n
M!     U
SU $ )zt
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               H/var/www/auris/envauris/lib/python3.13/site-packages/PyPDF2/_security.py_alg32r'   6   s    & h$/B*CCSbIJN 	NA HH[''( KKg.MHH] HHY%%& ax(	$%xxzH axrA8GV,-446H  GV    owner_passworduser_passwordc                    [        XU5      n[        U[        [        5      -   SS 5      n[	        XE5      nUS:  aC  [        SS5       H3  nSnU H  n	U[        [        U	5      U-  5      -  nM     [	        X5      nM5     U$ )zo
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     >
/C md3F.GG"MN c
/C axq"AG3tH~122  g+C	  Jr(   c                     [        U [        [        5      -   SS 5      n[        U5      nUR	                  5       nUS:  a+  [        S5       H  n[        U5      R	                  5       nM     USU nU$ )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.      ss    
 D)<$==sCDN 	NA xxzH
axrA8}++-H  7F
CJr(   c                 J    SnSn[        XXQX#5      n[        U[        5      nXv4$ )t
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=      s4     CF
W
HC 	C,-A 6Mr(   c           
      l   [        XX#XE5      n[        5       nUR                  [        5        UR                  UR                  5        UR                  5       n	[        Xy5      n
[        SS5       H<  nSnU H&  nU[        [        [        U5      U-  5      5      -  nM(     [        X5      n
M>     U
S-   U4$ )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      W
HC 	AHH !
 HHY%%&xxzH c
$C 1b\Ar#d1gk*++G ''	  ,$$r(   r1   	plaintextc           
         [        [        S5      5      nSn[        S5       H4  nX2U   -   [        X[        U 5      -     5      -   S-  nX#   X$   sX$'   X#'   M6     Su  pC/ nU H`  nUS-   S-  nX2U   -   S-  nX#   X$   sX$'   X#'   X"U   X#   -   S-     nUR	                  [        [        [        U5      U-  5      5      5        Mb     SR                  U5      $ )N   r   )r   r   r   r(   )listr    r   lenappendr   r0   join)r1   rA   Sjr4   retvalplaintext_charts           r&   r/   r/      s    U3ZA	A3Z1XSSX.//36T14
ad  DAF#UcM1XT14
adtad{c!"bT.1A5678 $ 88F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U3:& 5 U K  * **s   B- -B<;B<