OpenOffice.org podporuje podepisování dokumentů, které jsou v jeho výchozím formátu (Open Document), ale nepodporuje digitální podpisy při exportu do PDF. Koumal jsem jak si s tím poradit a našel jsem možnost, udělat si utilitku v Javě pomocí knihovny iText. Nejlepší by asi bylo naimplementovat to přímo jako modul do OpenOffice.org, ale na to momentálně nemám čas. :-)
final KeyStore ks = KeyStore.getInstance("pkcs12"); ks.load( new FileInputStream( "exported_certificate.pfx"), "cert_password".toCharArray()); final String alias = (String) ks.aliases().nextElement(); final PrivateKey key = (PrivateKey) ks.getKey(alias, "cert_password".toCharArray()); final Certificate[] chain = ks.getCertificateChain(alias); final PdfReader reader = new PdfReader("original.pdf"); final FileOutputStream fout = new FileOutputStream("signed.pdf"); final PdfStamper stp = PdfStamper.createSignature(reader, fout, '\0'); final PdfSignatureAppearance sap = stp.getSignatureAppearance(); sap.setCrypto(key, chain, null, PdfSignatureAppearance.WINCER_SIGNED); sap.setReason("I'm paranoid."); sap.setLocation("Wien"); stp.close();
Komentáře