
    Wwg
                     $   d dl Z d dlZd dlmZ d dlmZ d dlmZ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 d d
lmZ ddgZ ej,                  dd       ej.                  de       ej.                  d ej0                  dd             ej2                  ddde       ej2                  dddd ej0                  dd            d                                    Z ej8                  dd      d        Z ej2                  d d!dedd"      Zej-                  d#d$       ej.                  de       ej.                  d ej0                  dd             ej2                  dd%de      ed&                                    Z ej-                  d'd(       ej.                  de       ej.                  d ej0                  dd             ej2                  d)edd*+       ej2                  d,d-ed.       ej2                  d/d ejB                  d0      d1d23       ej2                  d4d5eddd6      ed7                                                         Z"d8ejF                  fd9Z$ej-                  d:d;       ej.                  de       ej.                  d ej0                  dd             ej.                  d<e       ej2                  d/d ejB                  d=      d>d23      ed?                                           Z%y)@    N)cli_root)pyhanko_exception_manager)_warn_empty_passphrasereadable_file)load_certs_from_pemder)crypt)StandardSecurityHandler)PubKeyPermissions)PdfFileReader)copy_into_new_writerdecryptencrypt_filez encrypt PDF files (AES-256 only)encrypt)helpnameinfile)typeoutfileTF)writabledir_okayz
--passwordz!password to encrypt the file with)r   requiredr   z--recipientzIcertificate(s) corresponding to entities that can decrypt the output file)readabler   )r   multipler   r   c                    |r|rt        j                  d      |s|st        j                  d      }d }|rt        t	        |            }t               5  t        | d      5 }t        |      }t        |      }|r|j                  |       n|j                  |       t        |d      5 }|j                  |       d d d        d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   y xY w)Nz2Specify either a password or a list of recipients.zOutput file password: prompt)
cert_filesrb)
owner_passwb)clickClickExceptiongetpasslistr   r   openr   r   encrypt_pubkeyr   write)	r   r   password	recipientrecipient_certsinfrwoutfs	            Q/var/www/horilla/myenv/lib/python3.12/site-packages/pyhanko/cli/commands/crypt.pyr   r      s    $ I""@
 	
 i??*BCO5KL	"	$ &$ 
	3c"A$Q'A  1		X	.gt$ 
	  
	 
	 s=   C0$A	C$-C?C$C0C!C$$C-	)C00C9z6decrypt PDF files (any standard PDF encryption scheme)c                       y )N r1       r/   r   r   =   s    
 	r2   z--forcez1ignore access restrictions (use at your own risk))r   r   r   is_flagdefaultzdecrypt using passwordr(   z!password to decrypt the file withc                    t               5  t        | d      5 }t        |      }|j                  t	        j
                  d      t        |j                  t              st	        j
                  d      |st        j                  d      }|j                  |      }|j                  t        j                  j                  k(  r|st	        j
                  d      |j                  t        j                  j                  k(  rt	        j
                  d      t        |      }t        |d      5 }|j!                  |       d d d        d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   y xY w)	Nr   File is not encrypted.zIFile is not encrypted with the standard (password-based) security handlerzFile password: r   zjPassword specified was the user password, not the owner password. Pass --force to decrypt the file anyway.zPassword didn't match.r    )r   r%   r   security_handlerr!   r"   
isinstancer	   r#   r   statusr   
AuthStatusUSERFAILEDr   r'   )	r   r   r(   forcer+   r,   auth_resultr-   r.   s	            r/   decrypt_with_passwordr?   O   sN    
#	$ &$ 	3c"A!!)**+CDD 2 24KL**_  "??2CD))H-K!!U%5%5%:%::5**# 
 ##u'7'7'>'>>**+CDD$Q'Agt$ )	 * )	 	 s;   E1DE%.E E%E1E"E%%E.	*E11E:z#decrypt using private key (PEM/DER)pemderz--keyz5file containing the recipient's private key (PEM/DER))r   r   r   z--certz5file containing the recipient's certificate (PEM/DER))r   r   r   z
--passfiler   z2file containing the passphrase for the private keystdin)r   r   r   show_defaultz	--no-passz*assume the private key file is unencrypted)r   r   r3   r4   rB   c                    |!|j                         }|j                          n8|s4t        j                  d      j                  d      }|st	                d }nd }t
        j                  j                  |||      }t        || ||       y )NKey passphrase: r   utf-8)key_passphrase)	readcloser#   encoder   r   SimpleEnvelopeKeyDecrypterload_decrypt_pubkey)	r   r   keycertpassfiler=   no_pass
passphrasesedks	            r/   decrypt_with_pemderrS   s   s    @ ]]_
__,>?FFwO
"$J
++00T* 1 D D&'51r2   rR   c                 .   t               5  t        |d      5 }t        |      }|j                  t	        j
                  d      t        |j                  t        j                        st	        j
                  d      |j                  |       }|j                  t        j                  j                  k(  r?|sy|j                  rmt        j                  |j                  vrQt	        j
                  d      |j                  t        j                  j                   k(  rt	        j
                  d      t#        |      }t        |d      5 }|j%                  |       d d d        d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   y xY w)Nr   r6   z:File was not encrypted with a public-key security handler.zhChange of encryption is typically not allowed with user access. Pass --force to decrypt the file anyway.zFailed to decrypt the file.r    )r   r%   r   r7   r!   r"   r8   r   PubKeySecurityHandlerdecrypt_pubkeyr9   r:   r;   permission_flagsr
   ALLOW_ENCRYPTION_CHANGEr<   r   r'   )	rR   r   r   r=   r+   r,   r>   r-   r.   s	            r/   rL   rL      sg    
#	$ &$ 	3c"A!!)**+CDDa00%2M2MN**P  **40K!!U%5%5%:%::#44)AA&778  ..P  ##u'7'7'>'>>**+HII$Q'Agt$ 3	 4 3	 	 s;   FD0E?E3E?"F3E<8E??F	FFz#decrypt using private key (PKCS#12)pkcs12pfxr,   z3file containing the passphrase for the PKCS#12 filec                 ,   |&t        j                   d      j                  d      }n=|j                         j                         j                  d      }|j	                          t
        j                  j                  ||      }t        || ||       y )NrD   r   rE   )rQ   )	r#   rI   readlinestriprH   r   rJ   load_pkcs12rL   )r   r   rZ   rO   r=   rQ   rR   s          r/   decrypt_with_pkcs12r_      s     __,>?FFwO
&&(..077@
++77
 8 D D&'51r2   )&r#   r!   pyhanko.cli._rootr   pyhanko.cli.runtimer   pyhanko.cli.utilsr   r   pyhanko.keysr   pyhanko.pdf_utilsr   pyhanko.pdf_utils.cryptr	   #pyhanko.pdf_utils.crypt.permissionsr
   pyhanko.pdf_utils.readerr   pyhanko.pdf_utils.writerr   __all__commandargumentPathoptionstrr   groupr   booldecrypt_force_flagr?   FilerS   rJ   rL   r_   r1   r2   r/   <module>rs      sb     & 9 C / # ; A 2 9n
% 9	J}-	


D5 IJ	,		 
"	TE	2 K . K"4 	A				 "U\\	<	  	.Z@}-	


D5 IJ	,		   K . A4 	;(K}-	


D5 IJ		A	 	A		 	D		= 	5	 2  K . L>2&

*
*B 	;(K}-	


D5 IJM*	C	> 
2  + K . L
2r2   