diff options
Diffstat (limited to 'src/main/java/demo')
| -rw-r--r-- | src/main/java/demo/ExtractNonTextualObjectsDemo.java | 60 | ||||
| -rw-r--r-- | src/main/java/demo/SignatureCreationDemo.java | 87 | ||||
| -rw-r--r-- | src/main/java/demo/SignatureVerificationDemo.java | 115 | 
3 files changed, 262 insertions, 0 deletions
| diff --git a/src/main/java/demo/ExtractNonTextualObjectsDemo.java b/src/main/java/demo/ExtractNonTextualObjectsDemo.java new file mode 100644 index 0000000..d7c651f --- /dev/null +++ b/src/main/java/demo/ExtractNonTextualObjectsDemo.java @@ -0,0 +1,60 @@ +package demo;
 +
 +import java.io.File;
 +import java.io.IOException;
 +import java.util.Iterator;
 +import java.util.List;
 +
 +import at.gv.egiz.pdfas.api.analyze.NonTextObjectInfo;
 +import at.gv.egiz.pdfas.api.io.DataSource;
 +import at.gv.egiz.pdfas.impl.api.commons.PdfDataSourceAdapter;
 +import at.gv.egiz.pdfas.io.FileBasedDataSource;
 +import at.knowcenter.wag.egov.egiz.PdfAS;
 +
 +public class ExtractNonTextualObjectsDemo {
 +
 +   /**
 +    * Disable instantiation.
 +    */
 +   private ExtractNonTextualObjectsDemo() {
 +   }
 +
 +   /**
 +    * Starts a demo that extracts non-textual elements from a document.
 +    * 
 +    * @param args
 +    *           The parameter(s).
 +    */
 +   public static void main(String[] args) {
 +
 +      if (args == null || args.length == 0) {
 +         System.err.println("Please provide path of file to be signed.");
 +         System.exit(1);
 +      }
 +      
 +      File testFile = new File(args[0]);
 +
 +      try {
 +         
 +         // set source
 +         DataSource dataSource = new FileBasedDataSource(testFile, "application/pdf");
 +
 +         List nonTextualObjects = PdfAS.extractNonTextualObjects(new PdfDataSourceAdapter(dataSource));
 +         if (nonTextualObjects != null && !nonTextualObjects.isEmpty()) {
 +            System.out.println("Non-textual objects found.");
 +            Iterator noit = nonTextualObjects.iterator();
 +            while (noit.hasNext()) {
 +               NonTextObjectInfo info = (NonTextObjectInfo) noit.next();
 +               System.out.println("  -> " + info.toString());
 +            }
 +         } else {
 +            System.out.println("No non-textual objects found.");
 +         }
 +         
 +      } catch (IOException e) {
 +         e.printStackTrace();
 +      }
 +
 +   }
 +
 +}
 diff --git a/src/main/java/demo/SignatureCreationDemo.java b/src/main/java/demo/SignatureCreationDemo.java new file mode 100644 index 0000000..c43b45e --- /dev/null +++ b/src/main/java/demo/SignatureCreationDemo.java @@ -0,0 +1,87 @@ +package demo;
 +
 +import java.io.File;
 +import java.io.IOException;
 +import java.util.Iterator;
 +
 +import at.gv.egiz.pdfas.PdfAsFactory;
 +import at.gv.egiz.pdfas.api.PdfAs;
 +import at.gv.egiz.pdfas.api.analyze.NonTextObjectInfo;
 +import at.gv.egiz.pdfas.api.commons.Constants;
 +import at.gv.egiz.pdfas.api.exceptions.PdfAsException;
 +import at.gv.egiz.pdfas.api.io.DataSource;
 +import at.gv.egiz.pdfas.api.sign.SignParameters;
 +import at.gv.egiz.pdfas.api.sign.SignResult;
 +import at.gv.egiz.pdfas.io.FileBasedDataSink;
 +import at.gv.egiz.pdfas.io.FileBasedDataSource;
 +
 +public class SignatureCreationDemo {
 +
 +   /**
 +    * Disable instantiation.
 +    */
 +   private SignatureCreationDemo() {
 +   }
 +
 +   /**
 +    * Starts a demo that signs a document.
 +    * 
 +    * @param args
 +    *           The parameter(s).
 +    */
 +   public static void main(String[] args) {
 +
 +      if (args == null || args.length == 0) {
 +         System.err.println("Please provide path of file to be signed.");
 +         System.exit(1);
 +      }
 +      
 +      File configdir = new File("./work");
 +      File unsignedFile = new File(args[0]);
 +      File signedFile = new File(args[0] + "_signed.pdf");
 +
 +      try {
 +         
 +         // instantiate api
 +         PdfAs pdfasAPI = PdfAsFactory.createPdfAs(configdir);
 +
 +         // set source
 +         DataSource dataSource = new FileBasedDataSource(unsignedFile, "application/pdf");
 +
 +         // set output
 +         FileBasedDataSink dataSink = new FileBasedDataSink(signedFile);
 +
 +         // configure signature
 +         SignParameters signParameters = new SignParameters();
 +         signParameters.setDocument(dataSource);
 +         signParameters.setOutput(dataSink);
 +         signParameters.setSignatureType(Constants.SIGNATURE_TYPE_BINARY);
 +         signParameters.setSignatureDevice(Constants.SIGNATURE_DEVICE_MOA);
 +         signParameters.setSignatureProfileId("SIGNATURBLOCK_DE");
 +         signParameters.setSignaturePositioning(null);
 +
 +         // sign
 +         System.out.println("Signing...");
 +         SignResult signResult = pdfasAPI.sign(signParameters);
 +         System.out.println("Successfully signed.");
 +         
 +         // check if non textual elements have been detected
 +         if (signResult.hasNonTextualObjects()) {
 +            System.out.println("\nWARNING: Non textual objects detected.");
 +            Iterator noit = signResult.getNonTextualObjects().iterator();
 +            while (noit.hasNext()) {
 +               NonTextObjectInfo info = (NonTextObjectInfo) noit.next();
 +               System.out.println("  -> " + info.toString());
 +            }
 +            System.out.println();
 +         }
 +         
 +      } catch (PdfAsException e) {
 +         e.printStackTrace();
 +      } catch (IOException e) {
 +         e.printStackTrace();
 +      }
 +
 +   }
 +   
 +}
 diff --git a/src/main/java/demo/SignatureVerificationDemo.java b/src/main/java/demo/SignatureVerificationDemo.java new file mode 100644 index 0000000..498849d --- /dev/null +++ b/src/main/java/demo/SignatureVerificationDemo.java @@ -0,0 +1,115 @@ +package demo;
 +
 +import java.io.File;
 +import java.io.IOException;
 +import java.io.PrintWriter;
 +import java.util.Iterator;
 +import java.util.List;
 +
 +import at.gv.egiz.pdfas.PdfAsFactory;
 +import at.gv.egiz.pdfas.api.PdfAs;
 +import at.gv.egiz.pdfas.api.analyze.AnalyzeParameters;
 +import at.gv.egiz.pdfas.api.analyze.AnalyzeResult;
 +import at.gv.egiz.pdfas.api.analyze.NonTextObjectInfo;
 +import at.gv.egiz.pdfas.api.commons.Constants;
 +import at.gv.egiz.pdfas.api.exceptions.PdfAsException;
 +import at.gv.egiz.pdfas.api.io.DataSource;
 +import at.gv.egiz.pdfas.api.verify.VerifyAfterAnalysisParameters;
 +import at.gv.egiz.pdfas.api.verify.VerifyResult;
 +import at.gv.egiz.pdfas.api.verify.VerifyResults;
 +import at.gv.egiz.pdfas.commandline.Main;
 +import at.gv.egiz.pdfas.framework.config.SettingsHelper;
 +import at.gv.egiz.pdfas.framework.vfilter.VerificationFilterParameters;
 +import at.gv.egiz.pdfas.io.FileBasedDataSource;
 +
 +public class SignatureVerificationDemo {
 +
 +   /**
 +    * Starts a demo that verifies a document.
 +    * 
 +    * @param args
 +    *           The parameter(s).
 +    */
 +   public static void main(String[] args) {
 +
 +      if (args == null || args.length == 0) {
 +         System.err.println("Please provide path of file to be verified.");
 +         System.exit(1);
 +      }
 +      
 +      File configdir = new File("./work");
 +      File signedFile = new File(args[0]);
 +
 +      try {
 +
 +         // instantiate api
 +         PdfAs pdfasAPI = PdfAsFactory.createPdfAs(configdir);
 +
 +         // set source
 +         DataSource dataSource = new FileBasedDataSource(signedFile, "application/pdf");
 +
 +         // evaluate settings
 +         VerificationFilterParameters parameters = SettingsHelper.readVerificationFilterParametersFromSettings();
 +         String verifyMode = Constants.VERIFY_MODE_FULL_CONSERVATIVE;
 +
 +         if (parameters.extractBinarySignaturesOnly()) {
 +            verifyMode = Constants.VERIFY_MODE_BINARY_ONLY;
 +         } else if (parameters.assumeOnlySignatureUpdateBlocks()) {
 +            verifyMode = Constants.VERIFY_MODE_SEMI_CONSERVATIVE;
 +         } else {
 +            verifyMode = Constants.VERIFY_MODE_FULL_CONSERVATIVE;
 +         }
 +
 +         // configure analyze parameters
 +         AnalyzeParameters analyzeParameters = new AnalyzeParameters();
 +         analyzeParameters.setDocument(dataSource);
 +         analyzeParameters.setVerifyMode(verifyMode);
 +         analyzeParameters.setReturnNonTextualObjects(true);
 +
 +         // analyze
 +         System.out.println("Analyzing...");
 +         AnalyzeResult analyzeResult = pdfasAPI.analyze(analyzeParameters);
 +         System.out.println("Successfully analyzed.");
 +         
 +         // setup verification
 +         VerifyAfterAnalysisParameters vaap = new VerifyAfterAnalysisParameters();
 +         vaap.setAnalyzeResult(analyzeResult);
 +         vaap.setReturnHashInputData(true);
 +         vaap.setSignatureDevice(Constants.SIGNATURE_DEVICE_MOA);
 +         vaap.setVerificationTime(null);
 +
 +         // invoke verification
 +         System.out.println("Verifying...");
 +         VerifyResults verifyResults = pdfasAPI.verify(vaap);
 +         List verifyResultList = verifyResults.getResults();
 +         System.out.println("Verification complete.");
 +
 +         // iterate over results
 +         PrintWriter out = new PrintWriter(System.out);
 +         Iterator it = verifyResultList.iterator();
 +         while (it.hasNext()) {
 +            VerifyResult result = (VerifyResult) it.next();
 +            Main.formatVerifyResult(result, out);
 +         }
 +         out.flush();
 +         
 +         // check if non textual elements have been detected
 +         if (analyzeResult.hasNonTextualObjects()) {
 +            System.out.println("\nWARNING: Non textual objects detected.");
 +            Iterator noit = analyzeResult.getNonTextualObjects().iterator();
 +            while (noit.hasNext()) {
 +               NonTextObjectInfo info = (NonTextObjectInfo) noit.next();
 +               System.out.println("  -> " + info.toString());
 +            }
 +            System.out.println();
 +         }
 +         
 +      } catch (PdfAsException e) {
 +         e.printStackTrace();
 +      } catch (IOException e) {
 +         e.printStackTrace();
 +      }
 +
 +   }
 +
 +}
 | 
