From f3476576c50efd922593c82656efda7aec5ae97f Mon Sep 17 00:00:00 2001 From: Andreas Fitzek Date: Wed, 27 Nov 2013 10:05:17 +0100 Subject: MOA integration sign/verification (not finished yet ...) Lots of PDF-AS Web implementation --- .../java/at/gv/egiz/pdfas/lib/impl/PdfAsImpl.java | 37 ++++++++++++---------- 1 file changed, 21 insertions(+), 16 deletions(-) (limited to 'pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/impl/PdfAsImpl.java') 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 75408567..4a8e41c3 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 @@ -86,7 +86,7 @@ public class PdfAsImpl implements PdfAs, IConfigurationConstants { status); status.setRequestedSignature(requestedSignature); - + requestedSignature.setCertificate(status.getSignParamter() .getPlainSigner().getCertificate()); @@ -256,10 +256,13 @@ public class PdfAsImpl implements PdfAs, IConfigurationConstants { dict.getNameAsString("Filter"), dict.getNameAsString("SubFilter")); - List results = verifyFilter.verify( - contentData.toByteArray(), content.getBytes()); - - result.addAll(results); + if (verifyFilter != null) { + List results = verifyFilter.verify( + contentData.toByteArray(), content.getBytes()); + if(results != null && !results.isEmpty()) { + result.addAll(results); + } + } } } return result; @@ -338,22 +341,23 @@ public class PdfAsImpl implements PdfAs, IConfigurationConstants { SignatureDataExtractor signatureDataExtractor = new SignatureDataExtractor( request.getCertificate(), pdfFilter, pdfSubFilter, status.getSigningDate()); - + IPdfSigner signer = PdfSignerFactory.createPdfSigner(); signer.signPDF(status.getPdfObject(), status.getRequestedSignature(), signatureDataExtractor); - + StringBuilder sb = new StringBuilder(); - - int[] byteRange = PDFUtils.extractSignatureByteRange(signatureDataExtractor - .getSignatureData()); - - for(int i = 0; i < byteRange.length; i++) { + + int[] byteRange = PDFUtils + .extractSignatureByteRange(signatureDataExtractor + .getSignatureData()); + + for (int i = 0; i < byteRange.length; i++) { sb.append(" " + byteRange[i]); } - + logger.info("ByteRange: " + sb.toString()); - + request.setSignatureData(signatureDataExtractor .getSignatureData()); request.setByteRange(byteRange); @@ -368,9 +372,10 @@ public class PdfAsImpl implements PdfAs, IConfigurationConstants { // Inject signature byte[] into signedDocument int offset = request.getSignatureDataByteRange()[1] + 1; - String signature = new COSString(request.getSignature()).getHexString(); + String signature = new COSString(request.getSignature()) + .getHexString(); byte[] pdfSignature = signature.getBytes(); - + for (int i = 0; i < pdfSignature.length; i++) { status.getPdfObject().getSignedDocument()[offset + i] = pdfSignature[i]; } -- cgit v1.2.3