
    [g)                        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 n# e$ r	 ddlmZ Y nw xY w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dS )z,Anything related to encryption / decryption.    N)md5)TupleUnion   )b_ord_str_)ByteStringObject)Literals    (N^NuAd NV.. h>/dSizTpasswordrev)         keylenowner_entryp_entry	id1_entrymetadata_encryptreturnc                 F   t          t          |           t          t                    z   dd                   }t          |          }|                    |j                   t          j        d|          }	|                    |	           |                    |j                   |dk    r|s|                    d           |                                }
|dk    r;t          d          D ]+}t          |
d|                                                   }
,|
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/pdf_extract/myenv/lib/python3.11/site-packages/PyPDF2/_security.py_alg32r'   6   s   & h$/B*C*CCSbSIJJN 	NA HH['((( Kg..MHH] HHY%&&& axx(x	$%%%xxzzH axxr 	7 	7A8GVG,--4466HH
 GVG    owner_passworduser_passwordc                 D   t          | ||          }t          |t          t                    z   dd                   }t	          ||          }|dk    rLt          dd          D ];}d}|D ]$}	|t          t          |	          |z            z  }%t	          ||          }<|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 md3F.G.GG"MNN c.
/
/C axxq" 	, 	,AG 3 33tH~~1222gs++CC Jr(   c                 *   t          | t          t                    z   dd                   }t          |          }|                                }|dk    r3t          d          D ]#}t          |                                          }$|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.      s    
 D)<$=$==ssCDDN 	NA xxzzH
axxr 	. 	.A8}}++--HH
 7F7
CJr(   c                 d    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=      sB     CF
3Wi
H
HC 	C,--A c6Mr(   c           
         t          | |||||          }t                      }|                    t                     |                    |j                   |                                }	t          ||	          }
t          dd          D ]H}d}|D ]1}|t          t          t          |          |z                      z  }2t          ||
          }
I|
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Wi
H
HC 	AHH !!!
 HHY%&&&xxzzH c8
$
$C 1b\\ ( ( 	, 	,Ar#d1ggk**+++GG'3'' ,$$r(   r1   	plaintextc           
      F   t          t          d                    }d}t          d          D ]M}|||         z   t          | |t          |           z                     z   dz  }||         ||         c||<   ||<   Nd\  }}g }|D ]}|dz   dz  }|||         z   dz  }||         ||         c||<   ||<   |||         ||         z   dz           }|                    t          t          t          |          |z                                 d                    |          S )N   r   )r   r   r   r(   )listr    r   lenappendr   r0   join)r1   rA   Sjr4   retvalplaintext_charts           r&   r/   r/      s0   U3ZZA	A3ZZ    1XSSXX.///36qT1Q4
!addDAqF# 9 9UcM1XqT1Q4
!adqtad{c!"bT.11A56677888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 2                " " " " " " " " " " % % % % % %* * * * *)))))))*   "3 33		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      s   - ;;