List of usage examples for org.apache.pdfbox.pdmodel PDDocument saveIncrementalForExternalSigning
public ExternalSigningSupport saveIncrementalForExternalSigning(OutputStream output) throws IOException
From source file:com.ackpdfbox.app.CreateSignature.java
License:Apache License
public void signDetached(PDDocument document, OutputStream output, TSAClient tsaClient) throws IOException { setTsaClient(tsaClient);/*from ww w. j av a 2s . co m*/ // create signature dictionary PDSignature signature = new PDSignature(); signature.setFilter(PDSignature.FILTER_ADOBE_PPKLITE); signature.setSubFilter(PDSignature.SUBFILTER_ADBE_PKCS7_DETACHED); signature.setName("Example User"); signature.setLocation("Los Angeles, CA"); signature.setReason("Testing"); // TODO extract the above details from the signing certificate? Reason as a parameter? // the signing date, needed for valid signature signature.setSignDate(Calendar.getInstance()); if (isExternalSigning()) { System.out.println("Sign externally..."); document.addSignature(signature); ExternalSigningSupport externalSigning = document.saveIncrementalForExternalSigning(output); // invoke external signature service byte[] cmsSignature = sign(externalSigning.getContent()); // set signature bytes received from the service externalSigning.setSignature(cmsSignature); } else { // register signature dictionary and sign interface document.addSignature(signature, this); // write incremental (only for signing purpose) document.saveIncremental(output); } }
From source file:fixture.pdfboxeg.CreateSignature.java
License:Apache License
public void signDetached(PDDocument document, OutputStream output, TSAClient tsaClient, boolean certify) throws IOException { setTsaClient(tsaClient);/*from ww w .j av a 2 s.c o m*/ int accessPermissions = getMDPPermission(document); if (accessPermissions == 1) { throw new IllegalStateException( "No changes to the document are permitted due to DocMDP transform parameters dictionary"); } // create signature dictionary PDSignature signature = new PDSignature(); signature.setFilter(PDSignature.FILTER_ADOBE_PPKLITE); signature.setSubFilter(PDSignature.SUBFILTER_ADBE_PKCS7_DETACHED); signature.setName("Example User"); signature.setLocation("Los Angeles, CA"); signature.setReason("Testing"); // TODO extract the above details from the signing certificate? Reason as a parameter? // the signing date, needed for valid signature signature.setSignDate(Calendar.getInstance()); // Optional: certify if (certify && accessPermissions == 0) { setMDPPermission(document, signature, 2); } if (isExternalSigning()) { //System.out.println("Sign externally..."); document.addSignature(signature); ExternalSigningSupport externalSigning = document.saveIncrementalForExternalSigning(output); // invoke external signature service byte[] cmsSignature = sign(externalSigning.getContent()); // set signature bytes received from the service externalSigning.setSignature(cmsSignature); } else { // register signature dictionary and sign interface document.addSignature(signature, this); // write incremental (only for signing purpose) document.saveIncremental(output); } }