Proofed it. Corrected a few typos and added a link to the PDF Reference. In
a couple more days, I'll read over it again.

Pat

-----Original Message-----
From: J.Pietschmann [mailto:[EMAIL PROTECTED]
Sent: Thursday, March 06, 2003 3:44 PM
To: [EMAIL PROTECTED]
Subject: Re: Encryption


Patrick C. Lankswert wrote:
> If there is anything you need reworked, just let me know.
No problem apart from the surprise.
I wrote up something in pdfencryption.xml, checked in in HEAD (not
the maintenance branch). If you (or someone else) would proofread
it, in order to spare others the trouble...

Again, did anyone try the Mozilla JCE impl?
Any other OSS implementation (besides BouncyCastle) which
includes RC4?
What about commercial stuff?

Peter, Keiron: how is the web site updated? I thought there was a
cron job every few hours?

J.Pietschmann


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, email: [EMAIL PROTECTED]
<?xml version="1.0" standalone="no"?>
<!DOCTYPE document PUBLIC "-//APACHE//DTD Documentation V1.1//EN"
    "http://cvs.apache.org/viewcvs.cgi/*checkout*/xml-forrest/src/resources/schema/dtd/document-v11.dtd";>

<document>
  <header>
    <title>PDF encryption.</title>
  </header>
  <body>
    <section>
      <title>Overview</title>
      <p>
        FOP supports encryption of PDF output, thanks to Patrick
        C. Lankswert. This feature is commonly used to prevent unauthorized
        printing, editing and copying text from the document or to forbid
        annotations. It is also possible to ask the user for a password in order
        to view the contents. Note that there already exist third party
        applications which can decrypt an encrypted PDF without effort and allow
        the aforementioned operations, therefore the degree of protection is
        limited.
      </p>
      <p>
        For further information about features and restrictions regarrding PDFF
        encryption, look at the documentation coming with Adobe Acrobat or the
        technial documentation on the Adobe web site.
      </p>
    </section>
    <section>
      <title>Usage</title>
      <p>
        Encryption is enabled by supplying an owner password with the
        <code>-o</code> option. The owner password can be used to disregard
        any restriction imposed on the PDF document. If no owner password has
        been supplied but FOP was asked to apply some restrictions, a random
        password is used.
      </p>
      <p>
        A user password, supplied with the <code>-u</code> option, will
        cause the PDF display software to ask the reader for this password in
        order to view the contents of the document. If no user password was
        supplied, viewing the content is not restricted.
      </p>
      <p>
        Further restrictions can be imposed by using the
        <code>-noprint</code>, <code>-nocopy</code>,
        <code>-noedit</code> and <code>-noannotations</code> options,
        which disable printing, copy text, editing in Adobe Acrobat and making
        annotations, respectively.
      </p>
    </section>
    <section>
      <title>Environment</title>
      <p>
        In order to use PDF encryption, FOP has to be compiled with cryptography
        support. Currently, only <link
        href="http://java.sun.com/j2se/1.4/docs/guide/security/jce/JCERefGuide.html";>JCE</link>
        is supported. JCE is part of JDK 1.4. For earlier JDKs, it can be
        installed separately, however, the build process currently recognizes
        JCE from JDK 1.4.
      </p>
      <p>
        Cryptography support must also be present at run time. In particular, a
        provider for the RC4 cipher is needed. Unfortunately, the sample JCE
        provider in Sun's JDK 1.4 does <strong>not</strong> provide RC4. If you
        get a message saying
      </p>
      <source>"Cannot find any provider supporting RC4"</source>
      <p>
        you don't have the needed support.
      </p>
      <p>
        There are several commercial and a few Open Source packages which
        provide RC4. A pure Java implementation is produced by <link
        href="http://www.bouncycastle.org/";>The Legion of the Bouncy
        Castle</link>. <link
        href="http://www.mozilla.org/projects/security/pki/jss/";>Mozilla
        JSS</link> is an interface to a native implementation.
      </p>
    </section>
    <section>
      <title>Installing a crypto provider</title>
      <p>
        The pure Java implementation from <link
        href="http://www.bouncycastle.org/";>Bouncy Castle</link> is easy to
        install.
      </p>
      <ol>
        <li>
          Download the binary distribution for your JDK version. If you have JDK
          1.3 or earlier you must alos download a JCE from the same page.
        </li>
        <li>
          Unpack the distribution. Add the jar file to your classpath. A
          convenient way to use the jar on Linux is to simply drop it into the
          FOP lib directory, it will be automatically picked up by
          <code>fop.sh</code>.  If you have JDK 1.3 or earlier don't forget to
          install the JCE as well.
        </li>
        <li>
          Open the <code>java.security</code> file and add<br/>
          <code>security.provider.6=org.bouncycastle.jce.provider.BouncyCastleProvider</code>,<br/>
          preferably at the end of the block defining the other crypto
          providers. For JDK 1.4 this is detailed on <link href="http://java.sun.com/j2se/1.4/docs/guide/security/jce/JCERefGuide.html#InstallProvider";>Sun's web site</link>.
        </li>
      </ol>
    </section>
  </body>
</document>

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, email: [EMAIL PROTECTED]

Reply via email to