
    kfw                        d Z 	 ddlZddlZddlmZmZ ddlmZ ddlm	Z	 ddl
mZmZ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ZddlmZ n# e$ r dZY nw xY wd ZdZdZej        ZdZdZ dZ!dZ"dZ#dZ$dZ% e&dd          D ]
Z'e%de'z  z  Z%ej(        rda)dZ*d Z+nej,        Z+ G d d          Z- G d de          Z.dZ/d Z0d Z1 ed2                    d e/3                                4                                D                                 Z5d  Z6d5d!Z7d" Z8e5ddfd#Z9d$ Z:d5d%Z;d& Z<d' Z=	 	 	 d6d)Z> G d* d+e-e          Z?	 	 	 d6d,Z@	 	 	 d6d-ZA	 	 	 d6d.ZBd/ ZCd0 ZDeEd1k    rUd2 ejF        D             ZGeGr!d3 ejF        D             e_F         eHeG          Zd4ejF        v r e=             dS  eD             dS dS )7z3.3.0    N)hexlify	unhexlify)md5)BytesIO)asBytesint2ByterawBytesasNative)Canvas)	PDFObject)Flowable)	rl_config)sha256c                 J      dk    r|S t           fd|D                       S )z9xor's each byte of the key with the number, which is <256r   c              3   "   K   | ]	}|z  V  
d S N ).0knums     X/var/www/html/nettyfy-visnx/env/lib/python3.11/site-packages/reportlab/lib/pdfencrypt.py	<genexpr>zxorKey.<locals>.<genexpr>   s'      $$1Q$$$$$$    )bytes)r   keys   ` r   xorKeyr      s3    
Avvcz$$$$$$$$$$r                            s   ܫovp\CB~Eg8fSj'yGY-QL>iĴ'kpͪ| Ǘ;,\H}܅>|ŗTT!+E#Oj"ˌHBB~71.ש2}m3/WK;?#`W입#zO(zi!	|w,I_D`A}+r-%F(@\cL2(BMUGc                 p    d t          |           D             }t          |          }t          | z   dz  a|S )Nc                 >    g | ]}t           |t          z   d z           S )   )_os_random_b_os_random_x)r   is     r   
<listcomp>zos_urandom.<locals>.<listcomp>2   s&    BBBA\1\>3./BBBr   r'   )ranger   r)   )nbs     r   
os_urandomr/   0   s:    BBqBBB!HH$q(C/r   c                   @    e Zd ZdZddZd Zd Zd ZddZd	 Z	d
 Z
dS )StandardEncryptionr   Nr   c                    || _         |r|| _        n|| _        |t          j        }|dk    rd| _        nQ|dk    rd| _        nC|dk    rt
          st          d          d| _        nt          d	t          |          z            || _        || _	        || _
        || _        dx| _        x| _        x| _        x| _        x| _        x| _        | _        dS )
a*  
        This class defines the encryption properties to be used while creating a pdf document.
        Once initiated, a StandardEncryption object can be applied to a Canvas or a BaseDocTemplate.
        The userPassword parameter sets the user password on the encrypted pdf.
        The ownerPassword parameter sets the owner password on the encrypted pdf.
        The boolean flags canPrint, canModify, canCopy, canAnnotate determine wether a user can
        perform the corresponding actions on the pdf when only a user password has been supplied.
        If the user supplies the owner password while opening the pdf, all actions can be performed regardless
        of the flags.
        Note that the security provided by these encryption settings (and even more so for the flags) is very weak.
        N(   r         r'   Astrength==256 is not supported as package pyaes is not importable   Unknown encryption strength=%s)userPasswordownerPasswordr   encryptionStrengthrevisionpyaes
ValueErrorreprcanPrint	canModifycanCopycanAnnotateOUPr   OEUEPerms)selfr9   r:   r@   rA   rB   rC   strengths           r   __init__zStandardEncryption.__init__<   s     ) 	.!.D!-D 3Hr>>DMM__DMM__ f !deeeDMM=XNOOO "&PTTTT$&T48TdgT$***r   c                 >    |x| _         x| _        x| _        | _        d S r   )r@   rA   rB   rC   )rJ   values     r   setAllPermissionsz$StandardEncryption.setAllPermissions^   s0     !	! 	!	!r   c                     d}| j         r
|t          z  }| j        r
|t          z  }| j        r
|t
          z  }| j        r
|t          z  }|t          z  }|S )Nr   )	r@   	printablerA   
modifiablerB   copypastablerC   annotatable
higherbits)rJ   ps     r   permissionBitsz!StandardEncryption.permissionBitsc   sW    =+a)m!>-q:~1<-Q-0[Q
Nr   c                     | j         st          d          | j        t          d          t          | j        | j        | j        || j                  S )zencode a string, stream, textencryption not prepared!Nznot registered in PDF objectr<   )preparedr>   objnum	encodePDFr   versionr<   )rJ   ts     r   encodezStandardEncryption.encodek   sS    } 	97888;;<<<4;a$-XXXXr   c                 d   t           rt          d| j        z             | j        rt	          d          |r|}n6|                                }|j                                        }t          rd}t           r@t          d| j	        z             t          d| j
        z             t          d|z             t          |                                 dz
            | _        t          rd| _        t           r$t          d	t          | j                  z             | j        d
k    ryd}t!          d          }t!          d          }t#          t!          d                    | _        t           rbt          dt'          |          z             t          dt'          |          z             t          dt'          | j                  z             t)          t#          | j	        d d                   |z             }|                                |z   |z   | _        t           r$t          dt'          | j                  z             t)          t#          | j	        d d                   |z             }t-          j        t-          j        |                                |                    }	|	                    | j                  | _        | xj        |	                                z  c_        t           r$t          dt'          | j                  z             t!          d          }
t!          d          }t)          t#          | j
        d d                   |
z   | j        z             }|                                |
z   |z   | _        t           r$t          dt'          | j                  z             t)          t#          | j
        d d                   |z   | j        z             }t-          j        t-          j        |                                |                    }	|	                    | j                  | _        | xj        |	                                z  c_        t           r$t          dt'          | j                  z             | j        dz  | j        dz	  dz  | j        dz	  dz  | j        dz	  dz  ddddt;          d          t;          d          t;          d          t;          d          ddddg}t-          j        t-          j        | j        |                    }	|	                    t=          |                    | _        | xj        |	                                z  c_        t           r$t          dt'          | j                  z             n| j        d v rtA          | j	        | j
        | j                  | _        t           r$t          d!t'          | j                  z             tC          | j	        | j        | j        || j        "          | _        t           r$t          dt'          | j                  z             tE          | j        | j        |#          | _        t           r$t          d$t'          | j                  z             d x| _#        | _$        d| _        d S )%Nz-StandardEncryption.prepare(...) - revision %dzencryption already prepared!xxxxxxxxxxxxxxxxzuserPassword    = %rzownerPassword   = %rzinternalID      = %rl        izself.P          = %sr7   s                   r    r"   zuvs      (hex)  = %szuks      (hex)  = %szself.key (hex)  = %s   zself.U (hex)  = %sivzself.UE (hex)  = %szself.O (hex)  = %szself.OE (hex)  = %s   r!      Tadr.   r   zself.Perms (hex)  = %sr   r5   zself.O (as hex) = %srZ   )r<   
documentIdzself.U (as hex) = %s)%DEBUGprintr<   r[   r>   ID	signaturedigest	CLOBBERIDr9   r:   intrW   rF   CLOBBERPERMISSIONSr?   r/   r   r   hexTextr   rE   r=   	EncrypterAESModeOfOperationCBCfeedrH   rD   rG   ordr   rI   computeOencryptionkeycomputeUr\   r^   )rJ   document
overrideID
internalID
externalIDre   uvsuksmd	encrypterovsokspermsarrs                r   preparezStandardEncryption.preparer   s   X%G$-WXXX= 	=;<<<  	0#JJ!J!+2244J 0/
 	7(4+<<===(4+==>>>(:5666T((**U233+tv 	9(4<<7888=A B Q--CQ--C z"~~..DH B,ws||;<<<,ws||;<<<,wtx/@/@@AAA  1$3$ 7883>??BYY[[3&,DF >*WTV__<===  1$3$ 7883>??B(CBIIKKTV(W(W(WXXInnTX..DGGGy~~'''GG @+gdg.>.>>??? Q--CQ--C  24C4 899C?$&HJJBYY[[3&,DF >*WTV__<===  24C4 899C?$&HIIB(CBIIKKTV(W(W(WXXInnTX..DGGGy~~'''GG @+gdg.>.>>??? t#!t#"t#"t#CCCC!H( (CDHQS(T(T(TUUI"h88DJJJ)..***JJ F.1D1DDEEE]f$$d/1CT]SSDF @,wtv>??? %T%6
]a]jkkkDH B,wtx/@/@@AAAdh:VVVDF @,wtv>???%))dlr   c                 N    | j         st          d          || _        || _        d S )NrY   )r[   r>   r\   r^   )rJ   r\   r^   s      r   registerzStandardEncryption.register   s-    } 	97888r   c           	          | j         st          d          t          | j        | j        | j        | j        | j        | j        | j	                  S )NrY   rD   rG   rE   rH   rF   rI   r<   )
r[   r>   StandardEncryptionDictionaryrD   rG   rE   rH   rF   rI   r<   rJ   s    r   infozStandardEncryption.info   s`    } 	97888+dfDFtwZ^Z`hlhr  ~B  ~K  L  L  L  	Lr   )Nr   r   r   r   Nr   )__name__
__module____qualname__r[   rL   rO   rW   r`   r   r   r   r   r   r   r1   r1   :   s        H!U !U !U !UD! ! !
  Y Y Y{ { { {x  L L L L Lr   r1   c                       e Zd ZdZd Zd ZdS )r   r   c                 n    ||||||f\  | _         | _        | _        | _        | _        | _        || _        d S r   r   )rJ   rD   rG   rE   rH   rF   rI   r<   s           r   rL   z%StandardEncryptionDictionary.__init__   s9    @A2q"aQV@V=$&$'464: r   c                    ddl m}m}m}  |            } |d          t	          | j                  t	          | j                  | j        d}| j        dk    rd|d<   d|d<   d|d	<   t	          | j                  |d
<   t	          | j                  |d<   t	          | j	                  |d<   t	          | j
                  |d<   t	          | j                  |d<    |d          |d<    |d          |d<   d |d           |d          d}d ||          i} ||          |d<   n%| j        dk    rd|d<   d|d<   d|d	<   n
d|d<   d|d	<    ||          }	|	                    |          S )Nr   )DummyDocPDFDictionaryPDFNameStandard)FilterrD   rE   rF   r7   r'   LengthRVrD   rE   rG   rH   rI   StdCFStrFStmFr"   DocOpenAESV3)r   	AuthEventCFMCFr5   r4   r   r   )reportlab.pdfbase.pdfdocr   r   r   ru   rD   rE   rF   r<   rG   rH   rI   format)
rJ   r}   r   r   r   dummydictstdcfcfpdfdicts
             r   r   z#StandardEncryptionDictionary.format   s   MMMMMMMMMM

!'*--TV__TV__V  =A DNDIDIDIDI ))DJ ))DJ#DJ//DM"77++DL"77++DL$WY//ww'' E u--B 'r**DJJ]a DNDIDIIDIDI-%%~~e$$$r   N)r   r   r   __RefOnly__rL   r   r   r   r   r   r      s7        K! ! !&% &% &% &% &%r   r   za
28 BF 4E 5E 4E 75 8A 41 64 00 4E 56 FF FA 01 08
2E 2E 00 B6 D0 68 3E 80 2F 0C A9 FE 64 53 69 7A
c                 ~    dt          t          t          |                                                               z  S )z'a legitimate way to show strings in PDFz<%s>)r
   r   r	   upper)texts    r   ru   ru   -  s/    HWXd^^4455;;====r   c                     t          | d         dd           t          | d         dd           t          | dd                   S )Nr   <zbad hex text>r   )equalityCheckr   )ru   s    r   	unHexTextr   1  sD    '!*c>222'"+sN333WQrT]###r    c              #   P   K   | ]!}t          t          |d                     V  "dS )r!   N)chrrs   )r   cs     r   r   r   6  s0      NNSQ__NNNNNNr   c                     | \t           j        }|dk    rd} nG|dk    rd} n>|dk    rt          st          d          d} nt          dt	          |          z            | S )	Nr3   r   r4   r5   r'   r6   r7   r8   )r   r;   r=   r>   r?   )r<   rK   s     r   checkRevisionr   8  sw    /r>>HH__HH__ f !deeeHH=XNOOOOr   c                    t          |          }t          |           t          z   } | d d         } |}d}t          d          D ]!}|dz  }|dz	  }|t	          |dz            z  }"t          t          |                     }	|	                    t          |                     |	                    t          |                     |	                    t          |                     |	                                }
|dk    r|
d d         }nC|d	k    r=t          d
          D ]#}t          |
                                          }
$|
d d         }t          r/t          dt          d | |||||fD                       z             |S )Nr"   r   r   rf   r    r'   r   r7   r5   2   r!   z"encryptionkey(%s,%s,%s,%s,%s)==>%sc                 F    g | ]}t          t          |                    S r   ru   strr   xs     r   r+   z!encryptionkey.<locals>.<listcomp>e  s=      BV  BV  BVVW'#a&&//  BV  BV  BVr   )r   r   	PadStringr,   r   r   updaterq   rm   rn   tuple)passwordOwnerKeyPermissionsFileId1r<   rV   permissionsStringr*   bytehash	md5outputr   r   s                r   r{   r{   G  s   X&&H
 x  9,H}HA1XX 2 2DqDXdSj111wx  !!DKK!!"""KK)**+++KK  !!!I{{m	1r 	0 	0AI--//IIn  Xe85  BV  BV\dfnp{  ~E  GO  QT  \U  BV  BV  BV  <W  <W  W  X  X  XJr   c                    ddl m} |dv sJ d|z              |s| }t          |          t          z   }|dd         }t          |           t          z   }|d d         }t	          |                                          }t          rgt          dt          t                    dt          |          dt          |          d	t          |          d
t          |          d|           |dk    r' ||d d                   	                    |          }n|dk    rt          d          D ]#}	t	          |                                          }$|d d         }|}t          d          D ]0}	t          |	|          }
 ||
          	                    |          }1t          r-t          dt          d | |||fD                       z             |S )Nr   ArcIVrk   zUnknown algorithm revision %sr"   z
PadString=z

ownerPad=z

password=z	
userPad=z
digest=z

revision=r   r7   r5   r   r!      zcomputeO(%s,%s,%s)==>%sc                 F    g | ]}t          t          |                    S r   r   r   s     r   r+   zcomputeO.<locals>.<listcomp>  s$    6z6z6z1ws1vv6z6z6zr   )reportlab.lib.arcivr   r   r   r   rq   rm   rn   asciir`   r,   r   r   )r9   r:   r<   r   ownerPadr   userPadrq   rD   r*   thisKeys              r   rz   rz   h  sz   ))))))u=H %$}%%	1H"~H|$$y0HssmG]]!!##F  }eedijsdtdtdtdtuz  |D  vE  vE  vE  vE  FK  LT  FU  FU  FU  FU  V[  \c  Vd  Vd  Vd  Vd  ej  kq  er  er  er  er  s{  s{  |  }  }  }1}}E&!*$$W--	Qr 	* 	*A[[''))FFr 	) 	)AQ''Gg%%a((AA|e-6z6zQ]_lnvwxPy6z6z6z0{0{{|||Hr   c                    t          |          }ddlm} |dk    r ||                               |          }n|dk    r|
J d            t	          t
                    }|                    t          |                     |                                } ||                               |          }t          dd          D ]0}t          ||           }	 ||	                              |          }1t          |          dk     r|d	z  }t          |          dk     |}t          r.t          d
t          d | ||||fD                       z             |S )Nr   r   r   r5   z+Revision 3 algorithm needs the document ID!r   r   r"       zcomputeU(%s,%s,%s,%s)==>%sc                 F    g | ]}t          t          |                    S r   r   r   s     r   r+   zcomputeU.<locals>.<listcomp>  s6      :M  :M  :Ma'#a&&//  :M  :M  :Mr   )r   r   r   r`   r   r   r   r	   rq   r,   r   lenrm   rn   r   )
r{   encodestringr<   rl   r   resulthtmpr-   r   s
             r   r|   r|     s   X&&H))))))1}}}%%,,\::	Q%%'T%%%	NN	*%%&&&hhjjeM""))#..q 	- 	-AQ..G%..'',,CC#hhmm5LC #hhmm  Oe05  :M  :MTacopx  zD  EK  TL  :M  :M  :M  4N  4N  N  O  O  OMr   c                     t          | |          }|t          k    rCt          |          t          t                    k    rt          d          t          d          d S )Nz&lengths don't match! (password failed)z;decode of U doesn't match fixed padstring (password failed))r|   r   r   r>   )r{   rE   decodeds      r   checkUr     sY    }a((G	w<<Y''EFFFVWWW r   c                    t          |          }|dv r| }|}t          d          D ]}|t          |dz            z  }|dz	  }|}t          d          D ]}|t          |dz            z  }|dz	  }t          |                                          }|dk    r|dd         } n|dk    r|} dd	lm}	  |	|                               |          }
n|d
k    rt          d          }t          j
        t          j        | |                    }t          |          }d}|dk    rd|dz  z
  nd|z
  }|dk    rt          |          |z  }t          |t                    r||z                       d          }n|t!          |          z  }||                    |          z   }
|
|                                z  }
t$          r/t'          dt)          d | |||||
fD                       z             |
S )zEncodes a string or streamrk   r5   rf   r    r   N
   r   r   r7   r!   rd   r   zutf-8zencodePDF(%s,%s,%s,%s,%s)==>%sc                 F    g | ]}t          t          |                    S r   r   r   s     r   r+   zencodePDF.<locals>.<listcomp>  s7      >Z  >Z  >ZRSgc!ffoo  >Z  >Z  >Zr   )r   r,   r   r   rq   r   r   r`   r/   r=   rv   rw   r   r   
isinstancer   r   rx   rm   rn   r   )r   objectNumbergenerationNumberstringr<   newkeyr-   r*   r   r   	encryptedre   r   
string_lenpaddingpadding_lens                   r   r]   r]     sg   X&&H 5q 	 	Ahq4x(((F1AAq 	 	Ahq4x(((F1AAKK&&((	q==CRC.CC]]C------E#JJ%%f--			Q^^OE$?$K$K$KLL	 [[
2<r//rZ"_--Z??+&&4Gfc"" 	'w&..w77FFgg&&&F///	Y^^%%%	  \e4u  >Z  >ZX[]ik{  ~D  FN  OX  XY  >Z  >Z  >Z  8[  8[  [  \  \  \r   c                 6    | |k    sJ |d|d|             d S )Nz
 expected=z
 observed=r   )observedexpectedlabels      r   r   r     s4    X%%%QYQYZr   c                  f   t          ddd          } |                     d d           d}d}d	}t          t          | j                  |d
           t          t          | j                  |d           t          t          | j                  |d           t          ddd          } |                     d d           d}d}d}t          t          | j                  |d           t          t          | j                  |d           t          t          | j                  |d           d S )NUserOwnerr3   rK   rb   )r~   zB<FA7F558FACF8205D25A7F1ABFA02629F707AE7B0211A2BB26F5DF4C30F684301>zB<09F26CF46190AF8F93B304AD50C16B615DC43C228C9B2D2EA34951A80617B2B1>z<BB2C00EB3D>z40 bit O valuez40 bit U valuez40 bit key valueuserpass	ownerpassr4   zB<68E5704AC779A5F0CD89704406587A52F25BF61CADC56A0F8DB6C4DB0052534D>zB<A9AE45CDE827FE0B7D6536267948836A00000000000000000000000000000000>z"<13DDE7585D9BE366C976DDD56AF541D1>z128 bit O valuez128 bit U valuez128 key value)r1   r   r   ru   rD   rE   r   )enc	expectedO	expectedUexpectedKeys       r   testr     s#   
VGb
9
9
9CKK!3K444TITI K'#%..,<==='#%..,<==='#'"";0BCCC Zc
B
B
BCKK#5K666TITI6K'#%..)->???'#%..)->???'#'""KAAAAAr   r3   c           	      J    t          |||||||          }|| j        _        dS )z2Applies encryption to the document being generatedr   N)r1   _docencrypt)	canvasr9   r:   r@   rA   rB   rC   rK   r   s	            r   encryptCanvasr    s:     \=%y';&.0 0 0C FKr   c                       e Zd ZdZd Zd ZdS )EncryptionFlowablezDrop this in your Platypus story and it will set up the encryption options.

    If you do it multiple times, the last one before saving will win.c                     dS )N)r   r   r   )rJ   
availWidthavailHeights      r   wrapzEncryptionFlowable.wrap  s    ur   c           	      v    t          | j        | j        | j        | j        | j        | j        | j                   d S r   )r  canvr9   r:   r@   rA   rB   rC   r   s    r   drawzEncryptionFlowable.draw	  sC    di'(mnl&	( 	( 	( 	( 	(r   N)r   r   r   __doc__r	  r  r   r   r   r  r    s>        I I  ( ( ( ( (r   r  c                      t          d          )z*For use in Platypus.  Call before build().zNot implemented yet)	Exception)dtr9   r:   r@   rA   rB   rC   rK   s           r   encryptDocTemplater    s    
 )
*
**r   c           
      p   	 ddl m}m}	 n# t          $ r t          d          w xY w || dd          \  }
}t	          |
                                          }|
d         dd         }t                      }t          ||	          }t          rd
|j	        _
         |	||          }|D ]N}|                    |
|         dd                    |                    |           |                                 Ot          ||||||||           |                                 |                                S )a  accepts a PDF file 'as a byte array in memory'; return encrypted one.

    This is a high level convenience and does not touch the hard disk in any way.
    If you are encrypting the same file over and over again, it's better to use
    pageCatcher and cache the results.r   )storeFormsInMemoryrestoreFormsInMemoryz~reportlab.lib.pdfencrypt.encryptPdfInMemory failed because rlextra cannot be imported.
See https://www.reportlab.com/downloadsr   )allBBoxes
PageForms0r   N)pagesizez&[(xxxxxxxxxxxxxxxx)(xxxxxxxxxxxxxxxx)]r   )rlextra.pageCatcher.pageCatcherr  r  ImportErrorlistkeysr   r   rr   r   _IDsetPageSizedoFormshowPager  savegetvalue)inputPDFr9   r:   r@   rA   rB   rC   rK   r  r  bboxInfopickledFormsnamesfirstPageSizebufr  	formNamesformNames                     r   encryptPdfInMemoryr+    sv   ,\\\\\\\\\ , , , + , , 	,,  21(!LLLX|!!E\*122.M ))C#...D  A@	$$\488I  (+ABB/000H$Iw#% % % % 	IIKKK<<>>s    %c	           
          t          | d                                          }	t          |	|||||||          }
t          |d                              |
           t	          |
          S )z>Creates encrypted file OUTPUTFILENAME.  Returns size in bytes.rbr   wb)openreadr+  writer   )inputFileNameoutputFileNamer9   r:   r@   rA   rB   rC   rK   r#  	outputPDFs              r   encryptPdfOnDiskr5  E  sr     M4((--//H"8Iw,46 6 6I 	$$Y///y>>r   c                  h	   t           j        d d          } d}g d}d}d}d}d}d}d}d}	| d         }
t          |           dd          }t          |          dk    rG|d         dk    s|d         dk    rt	          |           d S t          |          d	k     rt          d
          |d         |vrD|d         }|dd          }t          j                            |          st          d|z            nt          d          d}dD ]%\  }}|D ]}||v r|}|	                    |           &d|v sd|v rd|v r|
                    d          }d}nd|v r|
                    d          }d}	 t          ||dz                      }n	#  d}Y nxY w|	                    ||dz                       |	                    |           nddlm} dd|dfdd|dfdd|dfdd|dfdd|dfdd|dfdd|d fd!d|d fd"d#|d$fd%d#|d$fd&d'|d(fd)d'|d(fd*d+|	d,fd-d+|	d,ff}d.}|D ],}|d         |v r|
                    |d                   }|d         |v r%||dz            d/vrt          d0|d         z            	 ||dz            |vr|d         |v r&t          |d         d1z   t                                 n%t          |d         d2z   t                                 |r$t	          |d3         d4||dz            d5           |	                    ||dz                       |	                    |d                    #  d6|d3         z  xY w.|d7k    rt	          d8|           t	          d9|           t	          d:|	           t	          d;|           t	          d<|           t	          d=|           t	          d>|           t	          d?|           t	          d@|           t	          d:|	           t	          dA|           |	dk    r.|dBd          dCk    s|dBd          dDk    r|d dB         }n|}|dEz   }	t!          ||	|||||||F	  	        }|rt	          dG|	dH|dI|dJ|dK	           t          |          dk    r*t          dLt#          |          ddM         dN|          d S t	          |           d S )ONan  PDFENCRYPT USAGE:

PdfEncrypt encrypts your PDF files.

Line mode usage:

% pdfencrypt.exe pdffile [-o ownerpassword] | [owner ownerpassword],
	[-u userpassword] | [user userpassword],
	[-p 1|0] | [printable 1|0],
	[-m 1|0] | [modifiable 1|0],
	[-c 1|0] | [copypastable 1|0],
	[-a 1|0] | [annotatable 1|0],
	[-s savefilename] | [savefile savefilename],
	[-v 1|0] | [verbose 1|0],
	[-e128], [encrypt128],
	[-h] | [help]

-o or owner set the owner password.
-u or user set the user password.
-p or printable set the printable attribute (must be 1 or 0).
-m or modifiable sets the modifiable attribute (must be 1 or 0).
-c or copypastable sets the copypastable attribute (must be 1 or 0).
-a or annotatable sets the annotatable attribute (must be 1 or 0).
-s or savefile sets the name for the output PDF file
-v or verbose prints useful output to the screen.
      (this defaults to 'pdffile_encrypted.pdf').
'-e128' or 'encrypt128' allows you to use 128 bit encryption (in beta).
'-e256' or 'encrypt256' allows you to use 256 bit encryption (in beta AES).

-h or help prints this message.

See PdfEncryptIntro.pdf for more information.
)-oowner-uuser-prQ   -mrR   -crS   -arT   -ssavefile-vverbose-hhelp-e128
encrypt128-e256
encryptAESr   r   zencrypted.pdfr   rC  rD  r   z2Must include a filename and one or more arguments!zCan't open input file '%s'!z2First argument must be name of the PDF input file!r3   ))r4   )rE  rF  )r'   )rG  
encrypt256rA  rB  )rB  r7  OWNERzOwner passwordr8  r9  USERzUser passwordr:  r;  	PRINTABLEz'Printable'rQ   r<  
MODIFIABLEz'Modifiable'rR   r=  COPYPASTABLEz'Copypastable'rS   r>  ANNOTATABLEz'Annotatable'rT   r?  SAVEFILEzOutput filer@  )r;  rQ   r<  rR   rS   r=  rT   r>  )10z#%s value must be either '1' or '0'!z = int(argv[pos+1])z = argv[pos+1]r5   z
 set to: 'z'.zUnable to set %s.r   z
infile:z	STRENGTH:z	SAVEFILE:zUSER:zOWNER:z
PRINTABLE:zMODIFIABLE:zCOPYPASTABLE:zANNOTATABLE:zVERBOSE:z.pdfz.PDFz_encrypted.pdfr   zwrote output file 'z'(z bytes)
  owner password is 'z'
  user password is ''z
Unrecognised arguments : r   z
known arguments are:
)sysargvr  r   rn   r>   ospathisfileremoveindexrs   reportlab.rl_configrB  execvarsr5  r   )sys_argvusageknown_modesrJ  rK  rL  rM  rN  rO  rP  callerrV  infileSTRENGTHs_ari   posargrB  arglistbinaryrequiredthisargtinfilefilesizes                            r   scriptInterprn  T  sD   x{H ED  K EDIJLK"H a[F>>!""D
4yy{{7d??d1g//%LLLFt99Q;;QRRR7+%%!WF8D7>>&)) I !>!GHHHI QRRR Q 	# 	#FQr # #99 HKKNNN#
 DLLi4//t||jj&&d""jj++d3q5k**KKSU$$$KK333333 '5*:;We-=>&$8FD/:+y-@iG,
NC ,^L.,8HI"NLBRS-oF!=+O*h>
HmD  l 	; 	;GqzT!!jj,,1://CE{*44()NQXYZQ[)[\\\;CE{+55"1:77 -B!B466JJJJ -=!=dffEEE" R!


DQKKK"PQQQDQK000GAJ///;-
::! "$ 199+v&&&+x(((+x((('4   (E""",	***-,,,/<000.+...+x(((*g&&& &&bcc{f$$rssv(=(= "+ //H#FHdEZ{-57 7 7  	MEksksksu}u}u}  @E  @E  @E  GK  GK  GK  L  M  M  Mt99Q;;*Z]^bZcZcdefhdhZiZiZikvkvwxxx ; 	es   .F F/CL22L?c                  "    t                       d S r   )rn  r   r   r   mainrp    s    NNNNNr   __main__c                 .    g | ]}|d d         dk    |S N   z--debugr   r   s     r   r+   r+     s*    111q"1"y 0 0 0 0 0r   c                 .    g | ]}|d d         dk    |S rs  r   r   s     r   r+   r+     s*    <<<!1RaR5)+;+;A+;+;+;r   z--testr   )Nr   r   r   r   r3   )I__version__rU  rW  binasciir   r   hashlibr   ior   reportlab.lib.utilsr   r   r	   r
   reportlab.pdfgen.canvasr   r   r   reportlab.platypus.flowablesr   	reportlabr   r=   r   r  r   rr   rt   debugrm   	reserved1	reserved2rQ   rR   rS   rT   rU   r,   r*   	invariantr)   r(   r/   urandomr1   r   r   ru   r   joinstripsplitr   r   r{   rz   r|   r   r]   r   r   r  r  r  r+  r5  rn  rp  r   rV  ri   r   r   r   r   <module>r     sf    +  ' ' ' ' ' ' ' '             E E E E E E E E E E E E * * * * * * . . . . . . 1 1 1 1 1 1      LLL   EEE% % % 	  			

	q % %Aq!t$JJ 
L |L    J~L ~L ~L ~L ~L ~L ~L ~L@+% +% +% +% +%9 +% +% +%\
> > >$ $ $
 HRWWNNgmmoo6K6K6M6MNNNNNOO	     B  8 *3DD    (X X X, , , ,\[ [ [B B B@ /3BC	 	 	 	( ( ( ( (+X ( ( (( /3BC "+ + + + /3BC "' ' ' 'T /3BC    i i iV   Z11CH111A <<sx<<<A38TTVVVVV
$&&&&& s   
A AA