diff options
| author | Andreas Fitzek <andreas.fitzek@iaik.tugraz.at> | 2015-11-17 14:35:49 +0100 | 
|---|---|---|
| committer | Andreas Fitzek <andreas.fitzek@iaik.tugraz.at> | 2015-11-19 09:03:36 +0100 | 
| commit | 95ae6ca046fe56c033a92a4342cb230b1c811221 (patch) | |
| tree | 9db3957ac8126e190121534d2e6494648a96ea72 /pdf-as-pdfbox | |
| parent | fff11de5c0866caba532dd1a78fee943f837dd51 (diff) | |
| download | pdf-as-4-95ae6ca046fe56c033a92a4342cb230b1c811221.tar.gz pdf-as-4-95ae6ca046fe56c033a92a4342cb230b1c811221.tar.bz2 pdf-as-4-95ae6ca046fe56c033a92a4342cb230b1c811221.zip | |
synchronized verifier
Diffstat (limited to 'pdf-as-pdfbox')
| -rw-r--r-- | pdf-as-pdfbox/src/main/java/at/gv/egiz/pdfas/lib/impl/verify/pdfbox/PDFBOXVerifier.java | 56 | ||||
| -rw-r--r-- | pdf-as-pdfbox/src/main/java/at/knowcenter/wag/egov/egiz/pdf/PDFPage.java | 5 | 
2 files changed, 24 insertions, 37 deletions
| diff --git a/pdf-as-pdfbox/src/main/java/at/gv/egiz/pdfas/lib/impl/verify/pdfbox/PDFBOXVerifier.java b/pdf-as-pdfbox/src/main/java/at/gv/egiz/pdfas/lib/impl/verify/pdfbox/PDFBOXVerifier.java index 4d0c3cbb..a44986f5 100644 --- a/pdf-as-pdfbox/src/main/java/at/gv/egiz/pdfas/lib/impl/verify/pdfbox/PDFBOXVerifier.java +++ b/pdf-as-pdfbox/src/main/java/at/gv/egiz/pdfas/lib/impl/verify/pdfbox/PDFBOXVerifier.java @@ -28,11 +28,10 @@ import at.gv.egiz.pdfas.lib.impl.verify.VerifyBackend;  public class PDFBOXVerifier implements VerifyBackend { -	private static final Logger logger = LoggerFactory -			.getLogger(PDFBOXVerifier.class); +	private static final Logger logger = LoggerFactory.getLogger(PDFBOXVerifier.class); +  	@Override -	public List<VerifyResult> verify(VerifyParameter parameter) -			throws PDFASError { +	public List<VerifyResult> verify(VerifyParameter parameter) throws PDFASError {  		int signatureToVerify = parameter.getWhichSignature();  		int currentSignature = 0;  		PDDocument doc = null; @@ -47,20 +46,17 @@ public class PDFBOXVerifier implements VerifyBackend {  				// No signatures ...  				return result;  			} -			COSDictionary root = (COSDictionary) trailer -					.getDictionaryObject(COSName.ROOT); +			COSDictionary root = (COSDictionary) trailer.getDictionaryObject(COSName.ROOT);  			if (root == null) {  				// No signatures ...  				return result;  			} -			COSDictionary acroForm = (COSDictionary) root -					.getDictionaryObject(COSName.ACRO_FORM); +			COSDictionary acroForm = (COSDictionary) root.getDictionaryObject(COSName.ACRO_FORM);  			if (acroForm == null) {  				// No signatures ...  				return result;  			} -			COSArray fields = (COSArray) acroForm -					.getDictionaryObject(COSName.FIELDS); +			COSArray fields = (COSArray) acroForm.getDictionaryObject(COSName.FIELDS);  			if (fields == null) {  				// No signatures ...  				return result; @@ -75,8 +71,7 @@ public class PDFBOXVerifier implements VerifyBackend {  				}  			} -			byte[] inputData = IOUtils.toByteArray(parameter.getDataSource() -					.getInputStream()); +			byte[] inputData = IOUtils.toByteArray(parameter.getDataSource().getInputStream());  			for (int i = 0; i < fields.size(); i++) {  				COSDictionary field = (COSDictionary) fields.getObject(i); @@ -99,13 +94,10 @@ public class PDFBOXVerifier implements VerifyBackend {  						COSDictionary dict = (COSDictionary) base;  						logger.debug("Signer: " + dict.getNameAsString("Name")); -						logger.debug("SubFilter: " -								+ dict.getNameAsString("SubFilter")); -						logger.debug("Filter: " -								+ dict.getNameAsString("Filter")); +						logger.debug("SubFilter: " + dict.getNameAsString("SubFilter")); +						logger.debug("Filter: " + dict.getNameAsString("Filter"));  						logger.debug("Modified: " + dict.getNameAsString("M")); -						COSArray byteRange = (COSArray) dict -								.getDictionaryObject("ByteRange"); +						COSArray byteRange = (COSArray) dict.getDictionaryObject("ByteRange");  						StringBuilder sb = new StringBuilder();  						int[] bytes = new int[byteRange.size()]; @@ -116,8 +108,7 @@ public class PDFBOXVerifier implements VerifyBackend {  						logger.debug("ByteRange" + sb.toString()); -						COSString content = (COSString) dict -								.getDictionaryObject("Contents"); +						COSString content = (COSString) dict.getDictionaryObject("Contents");  						ByteArrayOutputStream contentData = new ByteArrayOutputStream();  						for (int j = 0; j < bytes.length; j = j + 2) { @@ -128,23 +119,18 @@ public class PDFBOXVerifier implements VerifyBackend {  						}  						contentData.close(); -						IVerifyFilter verifyFilter = verifier.getVerifier( -								dict.getNameAsString("Filter"), +						IVerifyFilter verifyFilter = verifier.getVerifier(dict.getNameAsString("Filter"),  								dict.getNameAsString("SubFilter")); -						IVerifier lvlVerifier = verifier -								.getVerifierByLevel(parameter -										.getSignatureVerificationLevel()); -						lvlVerifier.setConfiguration(parameter -								.getConfiguration()); -						if (verifyFilter != null) { -							List<VerifyResult> results = verifyFilter.verify( -									contentData.toByteArray(), -									content.getBytes(), -									parameter.getVerificationTime(), bytes, -									lvlVerifier); -							if (results != null && !results.isEmpty()) { -								result.addAll(results); +						IVerifier lvlVerifier = verifier.getVerifierByLevel(parameter.getSignatureVerificationLevel()); +						synchronized (lvlVerifier) { +							lvlVerifier.setConfiguration(parameter.getConfiguration()); +							if (verifyFilter != null) { +								List<VerifyResult> results = verifyFilter.verify(contentData.toByteArray(), +										content.getBytes(), parameter.getVerificationTime(), bytes, lvlVerifier); +								if (results != null && !results.isEmpty()) { +									result.addAll(results); +								}  							}  						}  					} diff --git a/pdf-as-pdfbox/src/main/java/at/knowcenter/wag/egov/egiz/pdf/PDFPage.java b/pdf-as-pdfbox/src/main/java/at/knowcenter/wag/egov/egiz/pdf/PDFPage.java index 48e6d3d2..dfe31ef8 100644 --- a/pdf-as-pdfbox/src/main/java/at/knowcenter/wag/egov/egiz/pdf/PDFPage.java +++ b/pdf-as-pdfbox/src/main/java/at/knowcenter/wag/egov/egiz/pdf/PDFPage.java @@ -386,14 +386,15 @@ public class PDFPage extends PDFTextStripper {  			fontObj = getCurrentPage().getResources().getCOSDictionary()  					.getDictionaryObject(COSName.FONT);  		} +		  		Map<String, PDFont> fontMap = getCurrentPage().findResources()  				.getFonts(); - +		  		if (fontObj != null) {  			getCurrentPage().getResources().getCOSDictionary()  					.setItem(COSName.FONT, fontObj);  		} - +		  		return fontMap;  	} | 
