diff options
Diffstat (limited to 'pdf-as-lib/src/main/java/at/gv/egiz/sl/util/BaseSLConnector.java')
-rw-r--r-- | pdf-as-lib/src/main/java/at/gv/egiz/sl/util/BaseSLConnector.java | 35 |
1 files changed, 6 insertions, 29 deletions
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 59e5d7cf..8772239c 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 @@ -6,6 +6,8 @@ import java.util.Arrays; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import at.gv.egiz.pdfas.common.exceptions.PDFIOException; +import at.gv.egiz.pdfas.common.utils.PDFUtils; import at.gv.egiz.sl.Base64OptRefContentType; import at.gv.egiz.sl.CMSDataObjectRequiredMetaType; import at.gv.egiz.sl.CreateCMSSignatureRequestType; @@ -44,35 +46,10 @@ public abstract class BaseSLConnector implements ISLConnector { return request; } - public CreateCMSSignatureRequestType createCMSRequest(byte[] signatureData, int[] byteRange) { - // TODO build byte[] from signatureData and fill 0 bytes in byteRanged - if(byteRange.length % 2 != 0) { - // TODO: error - } - - int lastOffset = byteRange[byteRange.length - 2]; - int lastSize = byteRange[byteRange.length - 1]; - - int dataSize = lastOffset + lastSize; - - byte[] data = new byte[dataSize]; - int currentdataOff = 0; - - Arrays.fill(data, (byte)0x0); - int[] exclude_range = new int[byteRange.length-2]; - for(int i = 0; i < byteRange.length; i = i + 2) { - int offset = byteRange[i]; - int size = byteRange[i+1]; - - for(int j = 0; j < size; j++) { - data[offset + j] = signatureData[currentdataOff]; - currentdataOff++; - } - if(i + 2 < byteRange.length) { - exclude_range[i] = offset + size; // exclude start - exclude_range[i+1] = byteRange[i+2] - 1; // exclude end - } - } + public CreateCMSSignatureRequestType createCMSRequest(byte[] signatureData, int[] byteRange) throws PDFIOException { + byte[] data = PDFUtils.blackOutSignature(signatureData, byteRange); + + int[] exclude_range = PDFUtils.buildExcludeRange(byteRange); logger.info("Exclude Byte Range: " + exclude_range[0] + " " + exclude_range[1]); // == MetaInfoType |