diff options
Diffstat (limited to 'pdf-as-lib/src/main')
13 files changed, 270 insertions, 36 deletions
diff --git a/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/api/ByteArrayDataSink.java b/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/api/ByteArrayDataSink.java index 6cc63338..a8931963 100644 --- a/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/api/ByteArrayDataSink.java +++ b/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/api/ByteArrayDataSink.java @@ -3,6 +3,9 @@ package at.gv.egiz.pdfas.lib.api; import java.io.ByteArrayOutputStream; import java.io.OutputStream; +/** + * A simple byte array data sink + */ public class ByteArrayDataSink implements DataSink { protected ByteArrayOutputStream bos = new ByteArrayOutputStream(); @@ -12,6 +15,10 @@ public class ByteArrayDataSink implements DataSink { return bos; } + /** + * Returns the output data + * @return the output data + */ public byte[] getData() { return bos.toByteArray(); } diff --git a/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/api/ByteArrayDataSource.java b/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/api/ByteArrayDataSource.java index cd670cea..6adfde51 100644 --- a/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/api/ByteArrayDataSource.java +++ b/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/api/ByteArrayDataSource.java @@ -1,5 +1,8 @@ package at.gv.egiz.pdfas.lib.api; +/** + * A simple byte array data source + */ public class ByteArrayDataSource implements DataSource { private byte[] byteData; diff --git a/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/api/Configuration.java b/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/api/Configuration.java index 89acc747..d2f00a59 100644 --- a/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/api/Configuration.java +++ b/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/api/Configuration.java @@ -1,7 +1,31 @@ package at.gv.egiz.pdfas.lib.api; +/** + * Configuration interface + * + * This interface is used to configure one PDF-AS run. It contains the configuration values + * from the configuration file. Use this interface to override properties during runtime. + */ public interface Configuration { + + /** + * Gets a specific Value + * @param key The configuration key + * @return The configured value + */ public String getValue(String key); + + /** + * Is the configuration key set + * @param key The configuration key + * @return true | false + */ public boolean hasValue(String key); + + /** + * Sets or overrides a configuration value + * @param key The configuration key + * @param value The configuration value + */ public void setValue(String key, String value); } diff --git a/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/api/DataSink.java b/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/api/DataSink.java index 4a3fb52c..258141b5 100644 --- a/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/api/DataSink.java +++ b/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/api/DataSink.java @@ -2,6 +2,13 @@ package at.gv.egiz.pdfas.lib.api; import java.io.OutputStream; +/** + * Data Sink interface. + */ public interface DataSink { + /** + * Creates an output stream to receive the data + * @return an output stream for the data + */ public OutputStream createOutputStream(); } diff --git a/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/api/DataSource.java b/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/api/DataSource.java index 73487c7b..093a3777 100644 --- a/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/api/DataSource.java +++ b/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/api/DataSource.java @@ -1,6 +1,22 @@ package at.gv.egiz.pdfas.lib.api; +/** + * Data Source interface + * + * All data sources in PDF-AS implement this interface. Also custom data sources have to + * implement this interface to allow PDF-AS to use them. + */ public interface DataSource { + + /** + * Gets the MIME Type of the contained data. + * @return MIME Type + */ public String getMIMEType(); + + /** + * Gets the contained data + * @return the contained data + */ public byte[] getByteData(); } diff --git a/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/api/PdfAs.java b/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/api/PdfAs.java index 2711afe2..3ae329cf 100644 --- a/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/api/PdfAs.java +++ b/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/api/PdfAs.java @@ -33,7 +33,32 @@ public interface PdfAs { */ public Configuration getConfiguration(); + /** + * Starts a signature process + * + * After the process has to be startet the status request has to be services by the user application + * + * @param parameter The sign parameter + * @return A status request + * @throws PdfAsException + */ public StatusRequest startSign(SignParameter parameter) throws PdfAsException; + + /** + * Continues an ongoing signature process + * + * @param statusRequest The current status + * @return A status request + * @throws PdfAsException + */ public StatusRequest process(StatusRequest statusRequest) throws PdfAsException; + + /** + * Finishes a signature process + * + * @param statusRequest The current status + * @return A signature result + * @throws PdfAsException + */ public SignResult finishSign(StatusRequest statusRequest) throws PdfAsException; } 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 3f5888fc..02d217c2 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 @@ -1,6 +1,5 @@ package at.gv.egiz.pdfas.lib.api; -import iaik.cms.IaikCCProvider; import iaik.security.ec.provider.ECCelerate; import iaik.security.provider.IAIK; @@ -38,6 +37,7 @@ public class PdfAsFactory { private static final String MAN_ATTRIBUTE = "JARMANIFEST"; private static final String PDF_AS_LIB = "PDF-AS-LIB"; private static final String IMPL_VERSION = "Implementation-Version"; + private static final String SCM_REVISION = "SCMREVISION"; static { @@ -50,6 +50,7 @@ public class PdfAsFactory { System.out.println("+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"); System.out.println("+ PDF-AS: " + getVersion()); + System.out.println("+ PDF-AS SCM Revision: " + getSCMRevision()); System.out.println("+ IAIK-JCE Version: " + IAIK.getVersionInfo()); System.out.println("+ ECCelerate Version: " + ECCelerate.getInstance().getVersion()); System.out.println("+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"); @@ -64,6 +65,11 @@ public class PdfAsFactory { } } + /** + * Create a new instance of PDF-AS + * @param configuration The PDF-AS configuration + * @return + */ public static PdfAs createPdfAs(File configuration) { if (!log_configured) { synchronized (log_mutex) { @@ -91,12 +97,24 @@ public class PdfAsFactory { return new PdfAsImpl(configuration); } + /** + * Creates a sign parameter + * @param configuration The configuration to be used + * @param dataSource The data source to be used + * @return + */ public static SignParameter createSignParameter( Configuration configuration, DataSource dataSource) { SignParameter param = new SignParameterImpl(configuration, dataSource); return param; } + /** + * Creates a verification parameter + * @param configuration The configuration to be used + * @param dataSource The data source to be used + * @return + */ public static VerifyParameter createVerifyParameter( Configuration configuration, DataSource dataSource) { VerifyParameter param = new VerifyParameterImpl(configuration, @@ -177,35 +195,22 @@ public class PdfAsFactory { } } } - + + /** + * Gets the PDF-AS SCM Revision + * @return + */ + public static String getSCMRevision() { + Package pack = PdfAsFactory.class.getPackage(); + return pack.getSpecificationVersion(); + } + + /** + * Gets the PDF-AS Version + * @return PDF-AS Verison string + */ public static String getVersion() { Package pack = PdfAsFactory.class.getPackage(); return pack.getImplementationVersion(); - /* - try { - - - Enumeration<URL> resources = PdfAsFactory.class.getClassLoader() - .getResources("META-INF/MANIFEST.MF"); - while (resources.hasMoreElements()) { - Manifest manifest = new Manifest(resources.nextElement() - .openStream()); - Attributes attributes = manifest.getAttributes(MAN_ATTRIBUTE); - if (attributes != null) { - if(attributes.isEmpty()) { - String value = attributes.getValue(new Attributes.Name(MAN_ATTRIBUTE)); - if(value != null && value.equals(PDF_AS_LIB)) { - // Got my manifest - return manifest.getAttributes(IMPL_VERSION).getValue(IMPL_VERSION); - } - } - } - } - } catch (Throwable e) { - e.printStackTrace(); - logger.error("Failed to read Version!"); - return "0.0.0"; - } - return "0.0.0";*/ } } diff --git a/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/api/PdfAsParameter.java b/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/api/PdfAsParameter.java index 8ab9a4be..0ef5f876 100644 --- a/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/api/PdfAsParameter.java +++ b/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/api/PdfAsParameter.java @@ -2,11 +2,27 @@ package at.gv.egiz.pdfas.lib.api; public interface PdfAsParameter { + /** + * Gets the configuration associated with the parameter + * @return + */ public Configuration getConfiguration() ; + /** + * Sets the configuration associated with the parameter + * @param configuration + */ public void setConfiguration(Configuration configuration); + /** + * Gets the data source of the parameter + * @return + */ public DataSource getDataSource(); + /** + * Sets the data source of the parameter + * @param dataSource + */ public void setDataSource(DataSource dataSource); } diff --git a/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/api/StatusRequest.java b/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/api/StatusRequest.java index fb6ceb44..2c283900 100644 --- a/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/api/StatusRequest.java +++ b/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/api/StatusRequest.java @@ -2,15 +2,58 @@ package at.gv.egiz.pdfas.lib.api; import java.security.cert.CertificateException; +/** + * Status of a signture process + */ public interface StatusRequest { + /** + * If true PDF-AS requires the signature certificate + * + * Retrieve the signing certificate and set it via setCertificate + * @return + */ public boolean needCertificate(); + + /** + * If true PDF-AS requires a the CAdES signature + * + * use getSignatureData() and getSignatureDataByteRange() to retrieve the + * data to be signed and set the signature via setSigature + * + * @return + */ public boolean needSignature(); + + /** + * If true finishSign in PdfAs can be called to retrieve the signed pdf + * @return + */ public boolean isReady(); + /** + * Gets the data to be signed + * @return + */ public byte[] getSignatureData(); + + /** + * Gets the byte range of the data to be signed + * @return + */ public int[] getSignatureDataByteRange(); + + /** + * Sets the signing certificate + * @param encodedCertificate + * @throws CertificateException + */ public void setCertificate(byte[] encodedCertificate) throws CertificateException; + + /** + * Sets the signature + * @param signatureValue + */ public void setSigature(byte[] signatureValue) ; } diff --git a/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/api/sign/IPlainSigner.java b/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/api/sign/IPlainSigner.java index 0ad40cc4..70945678 100644 --- a/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/api/sign/IPlainSigner.java +++ b/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/api/sign/IPlainSigner.java @@ -1,17 +1,41 @@ package at.gv.egiz.pdfas.lib.api.sign; import iaik.x509.X509Certificate; - -import java.io.IOException; - -import org.apache.pdfbox.cos.COSName; -import org.apache.pdfbox.exceptions.SignatureException; - import at.gv.egiz.pdfas.common.exceptions.PdfAsException; +/** + * Signer interface + * + * PDF-AS uses an IPlainSigner instance to create the signature. Also custom IPlainSigner + * may be used to sign PDF-AS documents. + */ public interface IPlainSigner { + + /** + * Gets the signing certificate + * @return + * @throws PdfAsException + */ public X509Certificate getCertificate() throws PdfAsException; + + /** + * Sign the document + * @param input + * @param byteRange + * @return + * @throws PdfAsException + */ public byte[] sign(byte[] input, int[] byteRange) throws PdfAsException; + + /** + * Gets the PDF Subfilter for this signer + * @return + */ public String getPDFSubFilter(); + + /** + * Gets the PDF Filter for this signer + * @return + */ public String getPDFFilter(); } 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 87ec4068..0b4fb389 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 @@ -5,19 +5,54 @@ import at.gv.egiz.pdfas.lib.api.PdfAsParameter; public interface SignParameter extends PdfAsParameter { + /** + * Gets the signature profile to use + * @return + */ public String getSignatureProfileId(); + /** + * Sets the signature profile to use + * + * @param signatureProfileId The signature profile + */ public void setSignatureProfileId(String signatureProfileId); + /** + * Gets the signature position + * @return + */ public String getSignaturePosition(); + /** + * Sets the signature position + * @param signaturePosition The signature position string + */ public void setSignaturePosition(String signaturePosition); + /** + * Sets the data sink for the signature process + * @param output + */ public void setOutput(DataSink output); + /** + * Gets the data sink for the signature process + * @return + */ public DataSink getOutput(); + /** + * Sets the signer to use + * + * + * @param signer + */ public void setPlainSigner(IPlainSigner signer); + /** + * Gets the signer to use. + * @return + */ public IPlainSigner getPlainSigner(); } diff --git a/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/api/verify/VerifyParameter.java b/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/api/verify/VerifyParameter.java index da777343..cd973146 100644 --- a/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/api/verify/VerifyParameter.java +++ b/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/api/verify/VerifyParameter.java @@ -5,12 +5,34 @@ import java.util.Date; import at.gv.egiz.pdfas.lib.api.PdfAsParameter; public interface VerifyParameter extends PdfAsParameter { - + + /** + * Gets which signature should be verified + * + * This is a 0 based index of the signatures + * @return + */ public int getWhichSignature(); + /** + * Sets which signature should be verified + * + * This is a 0 based index of the signatures + * + * @param which The index + */ public void setWhichSignature(int which); + /** + * Gets the verification time + * @return + */ public Date getVerificationTime(); + /** + * Sets the verification time. + * + * @param verificationTime + */ public void setVerificationTime(Date verificationTime); } diff --git a/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/api/verify/VerifyResult.java b/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/api/verify/VerifyResult.java index 436bfb25..7aa391b5 100644 --- a/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/api/verify/VerifyResult.java +++ b/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/api/verify/VerifyResult.java @@ -49,8 +49,15 @@ public interface VerifyResult { */ public boolean isQualifiedCertificate(); - + /** + * Gets the signer certificate + * @return + */ public X509Certificate getSignerCertificate(); + /** + * Gets the signed data for the signature + * @return + */ public byte[] getSignatureData(); } |