From 7fdb06e32c43e99ec3599639348a3d758b9914a7 Mon Sep 17 00:00:00 2001 From: Andreas Fitzek Date: Thu, 28 Nov 2013 11:22:12 +0100 Subject: + PKCS7 Signature fixed + BKU SL Wrapper fixed + Working with MOCCA --- .../src/main/java/at/gv/egiz/sl/util/BaseSLConnector.java | 11 +++++++---- .../java/at/gv/egiz/sl/util/ISignatureConnectorSLWrapper.java | 10 ++++++++++ 2 files changed, 17 insertions(+), 4 deletions(-) (limited to 'pdf-as-lib') diff --git a/pdf-as-lib/src/main/java/at/gv/egiz/sl/util/BaseSLConnector.java b/pdf-as-lib/src/main/java/at/gv/egiz/sl/util/BaseSLConnector.java index 5a03bbef..c32a4c32 100644 --- a/pdf-as-lib/src/main/java/at/gv/egiz/sl/util/BaseSLConnector.java +++ b/pdf-as-lib/src/main/java/at/gv/egiz/sl/util/BaseSLConnector.java @@ -1,11 +1,13 @@ package at.gv.egiz.sl.util; import java.math.BigInteger; +import java.security.MessageDigest; import java.util.Arrays; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import at.gv.egiz.pdfas.common.utils.StringUtils; import at.gv.egiz.sl.Base64OptRefContentType; import at.gv.egiz.sl.CMSDataObjectRequiredMetaType; import at.gv.egiz.sl.CreateCMSSignatureRequestType; @@ -69,10 +71,11 @@ public abstract class BaseSLConnector implements ISLConnector { currentdataOff++; } if(i + 2 < byteRange.length) { - exclude_range[i] = offset + size; // exclude offset - exclude_range[i+1] = byteRange[i+2]; // exclude size + exclude_range[i] = offset + size; // exclude start + exclude_range[i+1] = byteRange[i+2] - 1; // exclude end } } + logger.info("Exclude Byte Range: " + exclude_range[0] + " " + exclude_range[1]); // == MetaInfoType MetaInfoType metaInfoType = new MetaInfoType(); @@ -89,8 +92,8 @@ public abstract class BaseSLConnector implements ISLConnector { cmsDataObjectRequiredMetaType.setContent(base64OptRefContentType); if(byteRange.length > 0) { ExcludedByteRangeType excludeByteRange = new ExcludedByteRangeType(); - excludeByteRange.setFrom(new BigInteger(String.valueOf(byteRange[0]))); - excludeByteRange.setTo(new BigInteger(String.valueOf(byteRange[0]+byteRange[1]))); + excludeByteRange.setFrom(new BigInteger(String.valueOf(exclude_range[0]))); + excludeByteRange.setTo(new BigInteger(String.valueOf(exclude_range[1]))); cmsDataObjectRequiredMetaType.setExcludedByteRange(excludeByteRange); } diff --git a/pdf-as-lib/src/main/java/at/gv/egiz/sl/util/ISignatureConnectorSLWrapper.java b/pdf-as-lib/src/main/java/at/gv/egiz/sl/util/ISignatureConnectorSLWrapper.java index 3a998816..6781f898 100644 --- a/pdf-as-lib/src/main/java/at/gv/egiz/sl/util/ISignatureConnectorSLWrapper.java +++ b/pdf-as-lib/src/main/java/at/gv/egiz/sl/util/ISignatureConnectorSLWrapper.java @@ -1,6 +1,7 @@ package at.gv.egiz.sl.util; import java.io.ByteArrayInputStream; +import java.security.MessageDigest; import java.security.SignatureException; import java.security.cert.CertificateException; import java.util.Iterator; @@ -12,6 +13,7 @@ import iaik.cms.SignedData; import iaik.cms.SignerInfo; import iaik.x509.X509Certificate; import at.gv.egiz.pdfas.common.exceptions.PdfAsException; +import at.gv.egiz.pdfas.common.utils.StringUtils; import at.gv.egiz.pdfas.lib.api.sign.IPlainSigner; import at.gv.egiz.pdfas.lib.impl.verify.VerifyResultImpl; import at.gv.egiz.sl.CreateCMSSignatureRequestType; @@ -58,6 +60,14 @@ public class ISignatureConnectorSLWrapper implements ISignatureConnector { } public byte[] sign(byte[] input, int[] byteRange) throws PdfAsException { + try { + MessageDigest md = MessageDigest.getInstance("SHA256", "IAIK"); + md.update(input); + byte[] sha256 = md.digest(); + logger.info("Message digest should be: " + StringUtils.bytesToHexString(sha256) + " Size: " + input.length); + } catch (Exception e) { + e.printStackTrace(); + } CreateCMSSignatureRequestType request = connector.createCMSRequest( input, byteRange); CreateCMSSignatureResponseType response = connector -- cgit v1.2.3