From d16a7c27a77399806d1e2c6ae082e98d456c3baf Mon Sep 17 00:00:00 2001 From: Andreas Fitzek Date: Tue, 21 Oct 2014 10:28:54 +0200 Subject: PDF API update to ouput signed documents via output stream --- .../java/at/gv/egiz/pdfas/lib/api/PdfAsFactory.java | 5 +++-- .../at/gv/egiz/pdfas/lib/api/sign/SignParameter.java | 8 ++++++++ .../at/gv/egiz/pdfas/lib/api/sign/SignResult.java | 7 ------- .../java/at/gv/egiz/pdfas/lib/impl/PdfAsImpl.java | 7 +++---- .../at/gv/egiz/pdfas/lib/impl/SignParameterImpl.java | 19 ++++++++++--------- .../at/gv/egiz/pdfas/lib/impl/SignResultImpl.java | 9 +-------- .../at/gv/egiz/pdfas/lib/test/mains/PDFToImage.java | 5 ++++- 7 files changed, 29 insertions(+), 31 deletions(-) (limited to 'pdf-as-lib/src') diff --git a/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/api/PdfAsFactory.java b/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/api/PdfAsFactory.java index 6570c419..acfb7ef5 100644 --- a/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/api/PdfAsFactory.java +++ b/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/api/PdfAsFactory.java @@ -31,6 +31,7 @@ import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; +import java.io.OutputStream; import java.security.Provider; import java.security.Security; import java.util.zip.ZipEntry; @@ -188,8 +189,8 @@ public class PdfAsFactory implements IConfigurationConstants { * @return */ public static SignParameter createSignParameter( - Configuration configuration, DataSource dataSource) { - SignParameter param = new SignParameterImpl(configuration, dataSource); + Configuration configuration, DataSource dataSource, OutputStream output) { + SignParameter param = new SignParameterImpl(configuration, dataSource, output); return param; } diff --git a/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/api/sign/SignParameter.java b/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/api/sign/SignParameter.java index c1bfe53f..6a7ccf24 100644 --- a/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/api/sign/SignParameter.java +++ b/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/api/sign/SignParameter.java @@ -23,6 +23,8 @@ ******************************************************************************/ package at.gv.egiz.pdfas.lib.api.sign; +import java.io.OutputStream; + import at.gv.egiz.pdfas.lib.api.PdfAsParameter; public interface SignParameter extends PdfAsParameter { @@ -65,4 +67,10 @@ public interface SignParameter extends PdfAsParameter { * @return */ public IPlainSigner getPlainSigner(); + + /** + * Gets the outputstream, where the signed document will be written to + * @return + */ + public OutputStream getSignatureResult(); } diff --git a/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/api/sign/SignResult.java b/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/api/sign/SignResult.java index 180792ea..8084f8f1 100644 --- a/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/api/sign/SignResult.java +++ b/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/api/sign/SignResult.java @@ -23,18 +23,11 @@ ******************************************************************************/ package at.gv.egiz.pdfas.lib.api.sign; -import java.io.InputStream; import java.security.cert.X509Certificate; import at.gv.egiz.pdfas.lib.api.SignaturePosition; public interface SignResult { - /** - * Returns the filled output data sink. - * - * @return Returns the filled output data sink. - */ - public InputStream getOutputDocument(); /** * Returns the certificate of the signer. diff --git a/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/impl/PdfAsImpl.java b/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/impl/PdfAsImpl.java index 387a6c31..4828bae3 100644 --- a/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/impl/PdfAsImpl.java +++ b/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/impl/PdfAsImpl.java @@ -26,7 +26,6 @@ package at.gv.egiz.pdfas.lib.impl; import iaik.x509.X509Certificate; import java.awt.Image; -import java.io.ByteArrayInputStream; import java.io.File; import java.io.IOException; import java.util.Calendar; @@ -450,9 +449,9 @@ public class PdfAsImpl implements PdfAs, IConfigurationConstants, throws IOException { // ================================================================ // Create SignResult - SignResultImpl result = new SignResultImpl(new ByteArrayInputStream( - status.getPdfObject().getSignedDocument())); - + SignResultImpl result = new SignResultImpl(); + status.getSignParamter().getSignatureResult().write(status.getPdfObject().getSignedDocument()); + status.getSignParamter().getSignatureResult().flush(); result.setSignerCertificate(status.getRequestedSignature() .getCertificate()); result.setSignaturePosition(status.getRequestedSignature() diff --git a/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/impl/SignParameterImpl.java b/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/impl/SignParameterImpl.java index f547b2b0..9584e1bf 100644 --- a/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/impl/SignParameterImpl.java +++ b/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/impl/SignParameterImpl.java @@ -23,6 +23,8 @@ ******************************************************************************/ package at.gv.egiz.pdfas.lib.impl; +import java.io.OutputStream; + import javax.activation.DataSource; import at.gv.egiz.pdfas.lib.api.Configuration; @@ -34,10 +36,12 @@ public class SignParameterImpl extends PdfAsParameterImpl implements SignParamet protected String signaturePosition = null; protected DataSource output = null; protected IPlainSigner signer = null; + protected OutputStream outputStream = null; public SignParameterImpl(Configuration configuration, - DataSource dataSource) { + DataSource dataSource, OutputStream outputStream) { super(configuration, dataSource); + this.outputStream = outputStream; } // ======================================================================== @@ -58,14 +62,6 @@ public class SignParameterImpl extends PdfAsParameterImpl implements SignParamet this.signaturePosition = signaturePosition; } - public void setOutput(DataSource output) { - this.output = output; - } - - public DataSource getOutput() { - return this.output; - } - public void setPlainSigner(IPlainSigner signer) { this.signer = signer; } @@ -73,5 +69,10 @@ public class SignParameterImpl extends PdfAsParameterImpl implements SignParamet public IPlainSigner getPlainSigner() { return this.signer; } + + @Override + public OutputStream getSignatureResult() { + return outputStream; + } } diff --git a/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/impl/SignResultImpl.java b/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/impl/SignResultImpl.java index 1a0e6490..f713eb6a 100644 --- a/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/impl/SignResultImpl.java +++ b/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/impl/SignResultImpl.java @@ -23,7 +23,6 @@ ******************************************************************************/ package at.gv.egiz.pdfas.lib.impl; -import java.io.InputStream; import java.security.cert.X509Certificate; import at.gv.egiz.pdfas.lib.api.SignaturePosition; @@ -31,16 +30,10 @@ import at.gv.egiz.pdfas.lib.api.sign.SignResult; public class SignResultImpl implements SignResult { - protected InputStream dataSink; protected X509Certificate certificate; protected SignaturePosition position; - public SignResultImpl(InputStream dataSink) { - this.dataSink = dataSink; - } - - public InputStream getOutputDocument() { - return this.dataSink; + public SignResultImpl() { } public X509Certificate getSignerCertificate() { diff --git a/pdf-as-lib/src/test/java/at/gv/egiz/pdfas/lib/test/mains/PDFToImage.java b/pdf-as-lib/src/test/java/at/gv/egiz/pdfas/lib/test/mains/PDFToImage.java index f78319c6..caf3472a 100644 --- a/pdf-as-lib/src/test/java/at/gv/egiz/pdfas/lib/test/mains/PDFToImage.java +++ b/pdf-as-lib/src/test/java/at/gv/egiz/pdfas/lib/test/mains/PDFToImage.java @@ -4,6 +4,7 @@ import iaik.x509.X509Certificate; import java.awt.Image; import java.awt.image.RenderedImage; +import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileInputStream; import java.util.ArrayList; @@ -59,8 +60,10 @@ public class PDFToImage { X509Certificate cert = new X509Certificate(new FileInputStream( "/home/afitzek/qualified.cer")); + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + SignParameter parameter = PdfAsFactory.createSignParameter( - config, null); + config, null, baos); parameter.setSignatureProfileId(profile); Image img = pdfas.generateVisibleSignaturePreview(parameter, cert, 128); -- cgit v1.2.3