List of usage examples for org.apache.pdfbox.pdmodel.interactive.digitalsignature PDSignature SUBFILTER_ADBE_PKCS7_DETACHED
COSName SUBFILTER_ADBE_PKCS7_DETACHED
To view the source code for org.apache.pdfbox.pdmodel.interactive.digitalsignature PDSignature SUBFILTER_ADBE_PKCS7_DETACHED.
Click Source Link
From source file:CreateSignature.java
License:Apache License
public void signDetached(PDDocument document, OutputStream output, TSAClient tsaClient) throws IOException { setTsaClient(tsaClient);// www.j a v a 2 s .c om // 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()); // register signature dictionary and sign interface document.addSignature(signature, this); // write incremental (only for signing purpose) document.saveIncremental(output); }
From source file:CreateVisibleSignature.java
License:Apache License
/** * Sign pdf file and create new file that ends with "_signed.pdf". * * @param inputFile The source pdf document file. * @param signedFile The file to be signed. * @throws IOException/*from w w w .j a v a2 s .co m*/ */ public void signPDF(File inputFile, File signedFile) throws IOException { if (inputFile == null || !inputFile.exists()) { throw new IOException("Document for signing does not exist"); } // creating output document and prepare the IO streams. FileOutputStream fos = new FileOutputStream(signedFile); // load document PDDocument doc = PDDocument.load(inputFile); // create signature dictionary PDSignature signature = new PDSignature(); signature.setFilter(PDSignature.FILTER_ADOBE_PPKLITE); // default filter // subfilter for basic and PAdES Part 2 signatures signature.setSubFilter(PDSignature.SUBFILTER_ADBE_PKCS7_DETACHED); signature.setName("signer name"); signature.setLocation("signer location"); signature.setReason("reason for signature"); // the signing date, needed for valid signature signature.setSignDate(Calendar.getInstance()); // register signature dictionary and sign interface if (visibleSignatureProperties != null && visibleSignatureProperties.isVisualSignEnabled()) { options = new SignatureOptions(); options.setVisualSignature(visibleSignatureProperties); options.setPage(visibleSignatureProperties.getPage() - 1); doc.addSignature(signature, this, options); } else { doc.addSignature(signature, this); } // write incremental (only for signing purpose) doc.saveIncremental(fos); doc.close(); // do not close options before saving, because some COSStream objects within options // are transferred to the signed document. IOUtils.closeQuietly(options); }
From source file:com.aaasec.sigserv.csspsupport.pdfbox.CreateSignature.java
License:EUPL
/** * Signs the given pdf file./*from www . j a v a2 s . com*/ */ public File signPDF() throws IOException, COSVisitorException, SignatureException { byte[] buffer = new byte[8 * 1024]; File document = new File(model.getOriginalLoc()); if (document == null || !document.exists()) { throw new RuntimeException("Document for signing does not exist"); } File outputDocument = new File(model.getSignedLoc()); FileInputStream fis = new FileInputStream(document); FileOutputStream fos = new FileOutputStream(outputDocument); int c; while ((c = fis.read(buffer)) != -1) { fos.write(buffer, 0, c); } fis.close(); fis = new FileInputStream(outputDocument); // load document PDDocument doc = PDDocument.load(document); // create signature dictionary PDSignature signature = new PDSignature(); signature.setFilter(PDSignature.FILTER_ADOBE_PPKLITE); // default filter // subfilter for basic and PAdES Part 2 signatures signature.setSubFilter(PDSignature.SUBFILTER_ADBE_PKCS7_DETACHED); if (model.getSignerName() != null) { signature.setName(model.getSignerName()); } if (model.getSignerLocation() != null) { signature.setLocation(model.getSignerLocation()); } if (model.getReasonForSigning() != null) { signature.setReason(model.getReasonForSigning()); } // the signing date, needed for valid signature Calendar sigDate = Calendar.getInstance(); sigDate.setTime(new Date(model.getSigningAndIdTime())); signature.setSignDate(sigDate); // register signature dictionary and sign interface if (model.getOptions() == null) { doc.addSignature(signature, this); } else { doc.addSignature(signature, this, model.getOptions()); } // write incremental (only for signing purpose) PdfBoxSigUtil.saveIncremental(doc, fis, fos, model.getSigningAndIdTime()); return outputDocument; }
From source file:com.aaasec.sigserv.csspsupport.pdfbox.ReplaceSignature.java
License:EUPL
public File resignPDF() throws IOException, COSVisitorException, SignatureException { File document = new File(model.getOriginalLoc()); byte[] buffer = new byte[8 * 1024]; if (document == null || !document.exists()) { throw new RuntimeException("Document for signing does not exist"); }// ww w . jav a 2s . c o m // creating output document and prepare the IO streams. String name = document.getName(); String substring = name.substring(0, name.lastIndexOf(".")); File outputDocument = new File(model.getSignedLoc()); FileInputStream fis = new FileInputStream(document); FileOutputStream fos = new FileOutputStream(outputDocument); int c; while ((c = fis.read(buffer)) != -1) { fos.write(buffer, 0, c); } fis.close(); fis = new FileInputStream(outputDocument); // load document doc = PDDocument.load(document); // create signature dictionary PDSignature signature = new PDSignature(); signature.setFilter(PDSignature.FILTER_ADOBE_PPKLITE); // default filter // subfilter for basic and PAdES Part 2 signatures signature.setSubFilter(PDSignature.SUBFILTER_ADBE_PKCS7_DETACHED); if (model.getSignerName() != null) { signature.setName(model.getSignerName()); } if (model.getSignerLocation() != null) { signature.setLocation(model.getSignerLocation()); } if (model.getReasonForSigning() != null) { signature.setReason(model.getReasonForSigning()); } // the signing date, needed for valid signature Calendar sigDate = Calendar.getInstance(); sigDate.setTime(new Date(model.getSigningAndIdTime())); signature.setSignDate(sigDate); // register signature dictionary and sign interface if (model.getOptions() == null) { doc.addSignature(signature, this); } else { doc.addSignature(signature, this, model.getOptions()); } // write incremental (only for signing purpose) PdfBoxSigUtil.saveIncremental(doc, fis, fos, model.getSigningAndIdTime()); return outputDocument; }
From source file:com.ackpdfbox.app.CreateSignature.java
License:Apache License
public void signDetached(PDDocument document, OutputStream output, TSAClient tsaClient) throws IOException { setTsaClient(tsaClient);//w ww . jav a2s .com // 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:com.formkiq.core.service.generator.pdfbox.PdfEditorServiceImpl.java
License:Apache License
/** * Sets value of {@link PDSignatureField}. * @param doc {@link PDDocument}/*from ww w. j a v a 2 s . com*/ * @param field {@link PDSignatureField} * @param signatureInputStream {@link InputStream} * @return {@link SignatureOptions} * @throws IOException IOException */ private SignatureOptions setValue(final PDDocument doc, final PDSignatureField field, final InputStream signatureInputStream) throws IOException { int accessPermissions = SigUtils.getMDPPermission(doc); if (accessPermissions == 1) { throw new IllegalStateException("No changes to the document are " + "permitted due to DocMDP transform parameters " + "dictionary"); } // retrieve signature dictionary PDSignature signature = field.getSignature(); if (signature == null) { signature = new PDSignature(); // after solving PDFBOX-3524 - signatureField.setValue(signature) // until then: field.getCOSObject().setItem(COSName.V, signature); } else { throw new IllegalStateException( "The signature field " + field.getFullyQualifiedName() + " is already signed."); } // Optional: certify // can be done only if version is at least 1.5 and if not already set // doing this on a PDF/A-1b file fails validation by Adobe // preflight (PDFBOX-3821) // PDF/A-1b requires PDF version 1.4 max, so don't increase the version // on such files. final float version = 1.5f; if (doc.getVersion() >= version && accessPermissions == 0) { SigUtils.setMDPPermission(doc, signature, 2); } PDAcroForm acroForm = doc.getDocumentCatalog().getAcroForm(); if (acroForm != null && acroForm.getNeedAppearances()) { // PDFBOX-3738 NeedAppearances true results in visible signature // becoming invisible // with Adobe Reader if (acroForm.getFields().isEmpty()) { // we can safely delete it if there are no fields acroForm.getCOSObject().removeItem(COSName.NEED_APPEARANCES); // note that if you've set MDP permissions, the removal of this // item // may result in Adobe Reader claiming that the document has // been changed. // and/or that field content won't be displayed properly. // ==> decide what you prefer and adjust your code accordingly. } } // default filter signature.setFilter(PDSignature.FILTER_ADOBE_PPKLITE); // subfilter for basic and PAdES Part 2 signatures signature.setSubFilter(PDSignature.SUBFILTER_ADBE_PKCS7_DETACHED); PDVisibleSignDesigner visibleSignDesigner = new PDVisibleSignDesigner(signatureInputStream); PDVisibleSigProperties visibleSigProps = new PDVisibleSigProperties(); visibleSigProps // .signerName(name) // TODO add.. // .signerLocation(location) // TODO add. // .signatureReason(reason) // .preferredSize(preferredSize) // .page(0) // TODO fix .visualSignEnabled(true).setPdVisibleSignature(visibleSignDesigner); visibleSigProps.buildSignature(); signature.setName(visibleSigProps.getSignerName()); signature.setLocation(visibleSigProps.getSignerLocation()); signature.setReason(visibleSigProps.getSignatureReason()); // the signing date, needed for valid signature signature.setSignDate(Calendar.getInstance()); SignatureOptions sigOptions = new SignatureOptions(); sigOptions.setVisualSignature(visibleSigProps.getVisibleSignature()); sigOptions.setPage(visibleSigProps.getPage() - 1); doc.addSignature(signature, this, sigOptions); return sigOptions; }
From source file:com.itdhq.poc.ocrsign.CreateSignature.java
License:Apache License
public void signDetached(PDDocument document, OutputStream output, TSAClient tsaClient) throws IOException { setTsaClient(tsaClient);//from ww w . jav a2 s . c o 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()); // register signature dictionary and sign interface // FIXME //document.addSignature(signature, this); // write incremental (only for signing purpose) // FIXME //document.saveIncremental(output); }
From source file:com.itdhq.poc.ocrsign.CreateVisibleSignature.java
License:Apache License
/** * Sign pdf file and create new file that ends with "_signed.pdf". * * @param inputFile The source pdf document file. * @param signedFile The file to be signed. * @throws IOException/*from www . j ava 2s . c o m*/ */ public void signPDF(File inputFile, File signedFile) throws IOException { if (inputFile == null || !inputFile.exists()) { throw new IOException("Document for signing does not exist"); } // creating output document and prepare the IO streams. FileOutputStream fos = new FileOutputStream(signedFile); // load document PDDocument doc = PDDocument.load(inputFile); // create signature dictionary PDSignature signature = new PDSignature(); signature.setFilter(PDSignature.FILTER_ADOBE_PPKLITE); // default filter // subfilter for basic and PAdES Part 2 signatures signature.setSubFilter(PDSignature.SUBFILTER_ADBE_PKCS7_DETACHED); signature.setName("signer name"); signature.setLocation("signer location"); signature.setReason("reason for signature"); // the signing date, needed for valid signature signature.setSignDate(Calendar.getInstance()); // register signature dictionary and sign interface if (visibleSignatureProperties != null && visibleSignatureProperties.isVisualSignEnabled()) { options = new SignatureOptions(); options.setVisualSignature(visibleSignatureProperties); options.setPage(visibleSignatureProperties.getPage() - 1); // FIXME //doc.addSignature(signature, this, options); } else { // FIXME //doc.addSignature(signature, this); } // write incremental (only for signing purpose) // FIXME //doc.saveIncremental(fos); doc.close(); // do not close options before saving, because some COSStream objects within options // are transferred to the signed document. // FIXME //IOUtils.closeQuietly(options); }
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 w w w .java2 s .com*/ 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); } }