aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/at/knowcenter/wag/egov/egiz/framework
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/at/knowcenter/wag/egov/egiz/framework')
-rw-r--r--src/main/java/at/knowcenter/wag/egov/egiz/framework/Signator.java3
-rw-r--r--src/main/java/at/knowcenter/wag/egov/egiz/framework/SignatorFactory.java2
-rw-r--r--src/main/java/at/knowcenter/wag/egov/egiz/framework/VerificationFilter.java58
-rw-r--r--src/main/java/at/knowcenter/wag/egov/egiz/framework/Verificator.java2
-rw-r--r--src/main/java/at/knowcenter/wag/egov/egiz/framework/signators/BinarySignator_1_0_0.java78
-rw-r--r--src/main/java/at/knowcenter/wag/egov/egiz/framework/signators/BinarySignator_1_1_0.java11
-rw-r--r--src/main/java/at/knowcenter/wag/egov/egiz/framework/signators/DetachedSignator_1_0_0.java20
-rw-r--r--src/main/java/at/knowcenter/wag/egov/egiz/framework/signators/DetachedfTextualSignator_1_0_0.java20
-rw-r--r--src/main/java/at/knowcenter/wag/egov/egiz/framework/signators/TextualSignator_1_0_0.java23
-rw-r--r--src/main/java/at/knowcenter/wag/egov/egiz/framework/verificators/BinaryVerificator_1_0_0.java50
-rw-r--r--src/main/java/at/knowcenter/wag/egov/egiz/framework/verificators/BinaryVerificator_1_1_0.java24
-rw-r--r--src/main/java/at/knowcenter/wag/egov/egiz/framework/verificators/TextualVerificator_1_0_0.java7
-rw-r--r--src/main/java/at/knowcenter/wag/egov/egiz/framework/verificators/TextualVerificator_pdfasold.java3
13 files changed, 199 insertions, 102 deletions
diff --git a/src/main/java/at/knowcenter/wag/egov/egiz/framework/Signator.java b/src/main/java/at/knowcenter/wag/egov/egiz/framework/Signator.java
index 8d1688c..2d90005 100644
--- a/src/main/java/at/knowcenter/wag/egov/egiz/framework/Signator.java
+++ b/src/main/java/at/knowcenter/wag/egov/egiz/framework/Signator.java
@@ -17,6 +17,7 @@
*/
package at.knowcenter.wag.egov.egiz.framework;
+import at.gv.egiz.pdfas.framework.input.PdfDataSource;
import at.knowcenter.wag.egov.egiz.PdfASID;
import at.knowcenter.wag.egov.egiz.exceptions.PDFDocumentException;
import at.knowcenter.wag.egov.egiz.exceptions.PresentableException;
@@ -64,7 +65,7 @@ public interface Signator
* @throws PresentableException
* Forwarded exception.
*/
- public IncrementalUpdateInformation prepareSign(byte[] pdf,
+ public IncrementalUpdateInformation prepareSign(PdfDataSource pdfDataSource,
String signature_type, TablePos pos, boolean has_SIG_ID) throws PresentableException;
/**
diff --git a/src/main/java/at/knowcenter/wag/egov/egiz/framework/SignatorFactory.java b/src/main/java/at/knowcenter/wag/egov/egiz/framework/SignatorFactory.java
index c26055f..01155a8 100644
--- a/src/main/java/at/knowcenter/wag/egov/egiz/framework/SignatorFactory.java
+++ b/src/main/java/at/knowcenter/wag/egov/egiz/framework/SignatorFactory.java
@@ -82,7 +82,7 @@ public abstract class SignatorFactory
/**
* The most recent test algorithm this application provides.
*/
- public static final PdfASID MOST_RECENT_DETACHED_SIGNATOR_ID = DetachedSignator_1_0_0.MY_ID;
+ public static final PdfASID MOST_RECENT_DETACHED_SIGNATOR_ID = DetachedfTextualSignator_1_0_0.MY_ID;
/**
* The most recent test algorithm this application provides.
diff --git a/src/main/java/at/knowcenter/wag/egov/egiz/framework/VerificationFilter.java b/src/main/java/at/knowcenter/wag/egov/egiz/framework/VerificationFilter.java
index da5a8dc..2631028 100644
--- a/src/main/java/at/knowcenter/wag/egov/egiz/framework/VerificationFilter.java
+++ b/src/main/java/at/knowcenter/wag/egov/egiz/framework/VerificationFilter.java
@@ -17,6 +17,7 @@
*/
package at.knowcenter.wag.egov.egiz.framework;
+import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
@@ -24,6 +25,8 @@ import java.io.PrintStream;
import java.util.ArrayList;
import java.util.List;
+import at.gv.egiz.pdfas.exceptions.ErrorCode;
+
import org.apache.log4j.Logger;
import at.knowcenter.wag.egov.egiz.PdfAS;
@@ -43,6 +46,7 @@ import at.knowcenter.wag.egov.egiz.pdf.BinarySignature;
import at.knowcenter.wag.egov.egiz.pdf.Placeholder;
import at.knowcenter.wag.egov.egiz.pdf.SignatureHolder;
import at.knowcenter.wag.egov.egiz.pdf.StringInfo;
+import at.knowcenter.wag.egov.egiz.pdf.TextualSignatureHolder;
import at.knowcenter.wag.exactparser.ParseDocument;
import at.knowcenter.wag.exactparser.parsing.IndirectObjectReference;
import at.knowcenter.wag.exactparser.parsing.PDFUtils;
@@ -64,6 +68,8 @@ import at.knowcenter.wag.exactparser.parsing.results.ObjectParseResult;
* in the document.
* </p>
*
+ * @deprecated use the new at.gv.egiz.framework instead
+ *
* @author wprinz
* @author amavriqi
*/
@@ -105,6 +111,7 @@ public class VerificationFilter
return extractSignaturesFromPdf(pdf, false);
}
+ //@deprecated
public List extractSignaturesFromPdf(final byte[] pdf, boolean ignorePostSignModificationsRestriction) throws PresentableException
{
@@ -178,7 +185,7 @@ public class VerificationFilter
}
else
{
- // FIXME make better
+ // TODO: make better - already deprecated
//amavriqi: skip checking for old sigs becouse of performance issues
String old_text_sigs = SettingsReader.getInstance().getSetting("check_old_textual_sigs", "false");
@@ -201,7 +208,7 @@ public class VerificationFilter
current_block_contains_signature = true;
}
- // FIXME make better
+ // TODO: make better - already deprecated
//amavriqi: only if old textual signatures are checked for
if(old_text_sigs.equalsIgnoreCase("true")){
if (prev_end == 0)
@@ -209,7 +216,7 @@ public class VerificationFilter
String rest_text = null;
if (!text_holders.isEmpty())
{
- SignatureHolder first_holder = (SignatureHolder) text_holders.get(0);
+ TextualSignatureHolder first_holder = (TextualSignatureHolder) text_holders.get(0);
rest_text = first_holder.getSignedText();
}
else
@@ -218,7 +225,7 @@ public class VerificationFilter
logger_.debug("Incemental block" + prev_end + " and there are " + text_holders.size() + " text holders");
logger_.debug("Checking for older textual Signatures");
logger_.debug("Extracting text to " + bpr.next_index);
- rest_text = PdfAS.extractNormalizedTextTextual(pdf, bpr.next_index);
+ rest_text = PdfAS.extractNormalizedTextTextual(new ByteArrayInputStream(pdf), bpr.next_index);
}
List old_holders = PdfAS.extractSignatureHoldersTextual(rest_text, true);
@@ -371,7 +378,7 @@ public class VerificationFilter
String rest_text = normalized_text;
if (!text_holders.isEmpty())
{
- SignatureHolder holder = (SignatureHolder) text_holders.get(0);
+ TextualSignatureHolder holder = (TextualSignatureHolder) text_holders.get(0);
rest_text = holder.getSignedText();
}
@@ -492,7 +499,7 @@ public class VerificationFilter
}
catch (IOException e1)
{
- throw new PDFDocumentException(201);
+ throw new PDFDocumentException(ErrorCode.DOCUMENT_CANNOT_BE_READ, e1);
}
}
@@ -530,23 +537,24 @@ public class VerificationFilter
}
- public static void main(String[] args) throws IOException, PresentableException
- {
- SettingsReader.initializeForCommandLine();
-
- File in = new File(args[0]);
- FileInputStream fis = new FileInputStream(in);
- byte[] pdf = new byte[(int) in.length()];
- fis.read(pdf);
- fis.close();
-
- String text = PdfAS.extractNormalizedTextTextual(pdf, pdf.length);;
-
- VerificationFilter vf = new VerificationFilter();
- //List found = vf.extractSignaturesFromPdf(pdf);
-
- List found = vf.extractSignaturesFromPlainText(text);
-
- printFoundHolders("Final Holders", found, System.out);
- }
+ // TODO old code - remove
+// public static void main(String[] args) throws IOException, PresentableException
+// {
+// SettingsReader.initializeForCommandLine();
+//
+// File in = new File(args[0]);
+// FileInputStream fis = new FileInputStream(in);
+// byte[] pdf = new byte[(int) in.length()];
+// fis.read(pdf);
+// fis.close();
+//
+// String text = PdfAS.extractNormalizedTextTextual(pdf, pdf.length);;
+//
+// VerificationFilter vf = new VerificationFilter();
+// //List found = vf.extractSignaturesFromPdf(pdf);
+//
+// List found = vf.extractSignaturesFromPlainText(text);
+//
+// printFoundHolders("Final Holders", found, System.out);
+// }
}
diff --git a/src/main/java/at/knowcenter/wag/egov/egiz/framework/Verificator.java b/src/main/java/at/knowcenter/wag/egov/egiz/framework/Verificator.java
index b17fc79..e70c44a 100644
--- a/src/main/java/at/knowcenter/wag/egov/egiz/framework/Verificator.java
+++ b/src/main/java/at/knowcenter/wag/egov/egiz/framework/Verificator.java
@@ -28,6 +28,8 @@ import at.knowcenter.wag.exactparser.parsing.results.FooterParseResult;
* extracts all Signatures of its type and returns them as valitatable
* SignatureHolders.
*
+ * @deprecated replaced by the one in framework
+ *
* @author wprinz
*/
public interface Verificator
diff --git a/src/main/java/at/knowcenter/wag/egov/egiz/framework/signators/BinarySignator_1_0_0.java b/src/main/java/at/knowcenter/wag/egov/egiz/framework/signators/BinarySignator_1_0_0.java
index 2c5ecf5..0ecff57 100644
--- a/src/main/java/at/knowcenter/wag/egov/egiz/framework/signators/BinarySignator_1_0_0.java
+++ b/src/main/java/at/knowcenter/wag/egov/egiz/framework/signators/BinarySignator_1_0_0.java
@@ -17,11 +17,17 @@
*/
package at.knowcenter.wag.egov.egiz.framework.signators;
+import java.io.IOException;
+import java.io.InputStream;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
+import at.gv.egiz.pdfas.impl.input.CompoundPdfDataSourceImpl;
+import at.gv.egiz.pdfas.impl.signator.IncrementalUpdateHelper;
+import at.gv.egiz.pdfas.framework.input.DataSource;
+import at.gv.egiz.pdfas.framework.input.PdfDataSource;
import at.knowcenter.wag.egov.egiz.PdfAS;
import at.knowcenter.wag.egov.egiz.PdfASID;
import at.knowcenter.wag.egov.egiz.exceptions.PDFDocumentException;
@@ -60,6 +66,8 @@ import com.lowagie.text.pdf.PdfPTable;
* values according to the encoding.
* </p>
*
+ * @deprecated movet to nc-framework
+ *
* @author wprinz
*/
public class BinarySignator_1_0_0 implements Signator
@@ -89,8 +97,7 @@ public class BinarySignator_1_0_0 implements Signator
* @see at.knowcenter.wag.egov.egiz.framework.Signator#prepareSign(byte[],
* String, TablePos, boolean)
*/
- public IncrementalUpdateInformation prepareSign(byte[] pdf,
- String signature_type, TablePos pos, boolean has_SIG_ID) throws PresentableException
+ public IncrementalUpdateInformation prepareSign(PdfDataSource pdf, String signature_type, TablePos pos, boolean has_SIG_ID) throws PresentableException
{
try
{
@@ -117,13 +124,12 @@ public class BinarySignator_1_0_0 implements Signator
variable_field_definitions.add(sfd);
}
}
- IncrementalUpdateInformation iui = BinarySignature.writeIncrementalUpdate(pdf, pdf_table, pi, variable_field_definitions, all_field_definitions);
+ IncrementalUpdateInformation iui = IncrementalUpdateHelper.writeIncrementalUpdate(pdf, pdf_table, pi, variable_field_definitions, all_field_definitions);
String temp_string = iui.temp_ir_number + " " + iui.temp_ir_generation + " obj"; //$NON-NLS-1$//$NON-NLS-2$
byte[] temp_bytes = temp_string.getBytes("US-ASCII"); //$NON-NLS-1$
int temp_start = ByteArrayUtils.lastIndexOf(iui.signed_pdf, temp_bytes);
- byte[] stream_bytes = new byte[] { '>', '>', 's', 't', 'r', 'e', 'a',
- 'm', 0x0A };
+ byte[] stream_bytes = new byte[] { '>', '>', 's', 't', 'r', 'e', 'a', 'm', 0x0A };
int stream_start = ByteArrayUtils.indexOf(iui.signed_pdf, temp_start, stream_bytes);
iui.content_stream_start = stream_start + stream_bytes.length;
@@ -153,6 +159,8 @@ public class BinarySignator_1_0_0 implements Signator
// byte [] old_signed_pdf = iui.signed_pdf;
iui.signed_pdf = BinarySignature.prepareDataToSign(iui.signed_pdf, iui.byte_ranges);
+ reduceToIUBlock(iui);
+
iui.signature_data = formSignatureData(iui);
return iui;
@@ -170,8 +178,11 @@ public class BinarySignator_1_0_0 implements Signator
*/
public SignResult finishSign(IncrementalUpdateInformation iui) throws PresentableException
{
+ restoreSignedPdf(iui);
+
// PdfAS.prefixID(iui.signed_signature_object, PdfAS.BINARY_ID);
fillReplacesWithValues(iui);
+
BinarySignature.replaceCertificate(iui);
BinarySignature.replacePlaceholders(iui);
@@ -192,11 +203,38 @@ public class BinarySignator_1_0_0 implements Signator
while (it.hasNext())
{
ReplaceInfo ri = (ReplaceInfo) it.next();
-
+
ri.value = SignSignatureObjectHelper.retrieveStringValueFromSignatureObject(iui.signed_signature_object, ri.sfd.field_name);
}
}
+ protected void reduceToIUBlock(IncrementalUpdateInformation iui)
+ {
+ byte[] iu_block = new byte[iui.signed_pdf.length - iui.original_document.getLength()];
+ System.arraycopy(iui.signed_pdf, iui.original_document.getLength(), iu_block, 0, iu_block.length);
+
+ iui.signed_pdf = null;
+ iui.sign_iui_block = iu_block;
+ }
+
+ protected void restoreSignedPdf(IncrementalUpdateInformation iui)
+ {
+ iui.signed_pdf = new byte[iui.original_document.getLength() + iui.sign_iui_block.length];
+
+ try
+ {
+ InputStream is = iui.original_document.createInputStream();
+ is.read(iui.signed_pdf, 0, iui.original_document.getLength());
+ is.close();
+ }
+ catch (IOException e)
+ {
+ throw new RuntimeException(e);
+ }
+
+ System.arraycopy(iui.sign_iui_block, 0, iui.signed_pdf, iui.original_document.getLength(), iui.sign_iui_block.length);
+ }
+
/**
* Forms the SignatureData to be used for signing.
*
@@ -206,18 +244,22 @@ public class BinarySignator_1_0_0 implements Signator
*/
protected SignatureData formSignatureData(IncrementalUpdateInformation iui)
{
- String document_text = BinarySignature.retrieveSignableTextFromData(iui.signed_pdf, iui.signed_pdf.length); // signed_pdf.length);
-
- byte[] data;
- try
- {
- data = document_text.getBytes("UTF-8"); //$NON-NLS-1$
- }
- catch (UnsupportedEncodingException e)
- {
- throw new RuntimeException("Very strange: UTF-8 character encoding not supported.", e); //$NON-NLS-1$
- }
- SignatureData signature_data = new SignatureDataImpl(data, PdfAS.PDF_MIME_TYPE);
+ // String document_text =
+ // BinarySignature.retrieveSignableTextFromData(iui.signed_pdf,
+ // iui.signed_pdf.length); // signed_pdf.length);
+ //
+ // byte[] data;
+ // try
+ // {
+ // data = document_text.getBytes("UTF-8"); //$NON-NLS-1$
+ // }
+ // catch (UnsupportedEncodingException e)
+ // {
+ // throw new RuntimeException("Very strange: UTF-8 character encoding not
+ // supported.", e); //$NON-NLS-1$
+ // }
+ DataSource ds = new CompoundPdfDataSourceImpl(iui.original_document, iui.sign_iui_block);
+ SignatureData signature_data = new SignatureDataImpl(ds, PdfAS.PDF_MIME_TYPE);
return signature_data;
}
diff --git a/src/main/java/at/knowcenter/wag/egov/egiz/framework/signators/BinarySignator_1_1_0.java b/src/main/java/at/knowcenter/wag/egov/egiz/framework/signators/BinarySignator_1_1_0.java
index 174f0b6..b6e18ed 100644
--- a/src/main/java/at/knowcenter/wag/egov/egiz/framework/signators/BinarySignator_1_1_0.java
+++ b/src/main/java/at/knowcenter/wag/egov/egiz/framework/signators/BinarySignator_1_1_0.java
@@ -17,6 +17,12 @@
*/
package at.knowcenter.wag.egov.egiz.framework.signators;
+import java.io.ByteArrayInputStream;
+
+import at.gv.egiz.pdfas.impl.input.ByteArrayPdfDataSourceImpl;
+import at.gv.egiz.pdfas.impl.input.CompoundPdfDataSourceImpl;
+import at.gv.egiz.pdfas.framework.input.DataSource;
+
import at.knowcenter.wag.egov.egiz.PdfAS;
import at.knowcenter.wag.egov.egiz.PdfASID;
import at.knowcenter.wag.egov.egiz.framework.SignatorFactory;
@@ -34,6 +40,8 @@ import at.knowcenter.wag.egov.egiz.sig.SignatureDataImpl;
*
* @see BinarySignator_1_0_0
*
+ * @deprecated moved to nc-framework
+ *
* @author wprinz
*/
public class BinarySignator_1_1_0 extends BinarySignator_1_0_0
@@ -59,7 +67,8 @@ public class BinarySignator_1_1_0 extends BinarySignator_1_0_0
*/
protected SignatureData formSignatureData(IncrementalUpdateInformation iui)
{
- SignatureData signature_data = new SignatureDataImpl(iui.signed_pdf, PdfAS.PDF_MIME_TYPE);
+ DataSource ds = new CompoundPdfDataSourceImpl(iui.original_document, iui.sign_iui_block);
+ SignatureData signature_data = new SignatureDataImpl(ds, PdfAS.PDF_MIME_TYPE);
return signature_data;
}
diff --git a/src/main/java/at/knowcenter/wag/egov/egiz/framework/signators/DetachedSignator_1_0_0.java b/src/main/java/at/knowcenter/wag/egov/egiz/framework/signators/DetachedSignator_1_0_0.java
index 5d0fd65..4ef1e15 100644
--- a/src/main/java/at/knowcenter/wag/egov/egiz/framework/signators/DetachedSignator_1_0_0.java
+++ b/src/main/java/at/knowcenter/wag/egov/egiz/framework/signators/DetachedSignator_1_0_0.java
@@ -17,8 +17,14 @@
*/
package at.knowcenter.wag.egov.egiz.framework.signators;
+import java.io.ByteArrayInputStream;
import java.io.UnsupportedEncodingException;
+import at.gv.egiz.pdfas.impl.input.TextDataSourceImpl;
+import at.gv.egiz.pdfas.impl.input.helper.DataSourceHelper;
+import at.gv.egiz.pdfas.framework.input.DataSource;
+import at.gv.egiz.pdfas.framework.input.PdfDataSource;
+
import at.knowcenter.wag.egov.egiz.PdfAS;
import at.knowcenter.wag.egov.egiz.PdfASID;
import at.knowcenter.wag.egov.egiz.exceptions.PDFDocumentException;
@@ -73,7 +79,7 @@ public class DetachedSignator_1_0_0 implements Signator
* @see at.knowcenter.wag.egov.egiz.framework.Signator#prepareSign(byte[],
* String, TablePos, boolean)
*/
- public IncrementalUpdateInformation prepareSign(byte[] pdf,
+ public IncrementalUpdateInformation prepareSign(PdfDataSource pdf,
String signature_type, TablePos pos, boolean has_SIG_ID) throws PresentableException
{
IncrementalUpdateInformation iui = new IncrementalUpdateInformation();
@@ -81,17 +87,11 @@ public class DetachedSignator_1_0_0 implements Signator
iui.signature_type = signature_type;
iui.pos = pos;
- String document_text = PdfAS.extractNormalizedTextTextual(pdf);
+ String document_text = PdfAS.extractNormalizedTextTextual(pdf.createInputStream());
// logger_.debug("signed_text = " + document_text);
- try
- {
- iui.signature_data = new SignatureDataImpl(document_text.getBytes("UTF-8"), MIME_TYPE, "UTF-8"); //$NON-NLS-1$ //$NON-NLS-2$
- }
- catch (UnsupportedEncodingException e)
- {
- throw new RuntimeException("Very strange: UTF-8 character encoding not supported???"); //$NON-NLS-1$
- }
+ DataSource ds = new TextDataSourceImpl(document_text);
+ iui.signature_data = new SignatureDataImpl(ds, MIME_TYPE, "UTF-8"); //$NON-NLS-1$ //$NON-NLS-2$
return iui;
}
diff --git a/src/main/java/at/knowcenter/wag/egov/egiz/framework/signators/DetachedfTextualSignator_1_0_0.java b/src/main/java/at/knowcenter/wag/egov/egiz/framework/signators/DetachedfTextualSignator_1_0_0.java
index 93f10ff..d7c79ea 100644
--- a/src/main/java/at/knowcenter/wag/egov/egiz/framework/signators/DetachedfTextualSignator_1_0_0.java
+++ b/src/main/java/at/knowcenter/wag/egov/egiz/framework/signators/DetachedfTextualSignator_1_0_0.java
@@ -17,8 +17,14 @@
*/
package at.knowcenter.wag.egov.egiz.framework.signators;
+import java.io.ByteArrayInputStream;
import java.io.UnsupportedEncodingException;
+import at.gv.egiz.pdfas.impl.input.TextDataSourceImpl;
+import at.gv.egiz.pdfas.impl.input.helper.DataSourceHelper;
+import at.gv.egiz.pdfas.framework.input.DataSource;
+import at.gv.egiz.pdfas.framework.input.PdfDataSource;
+
import at.knowcenter.wag.egov.egiz.PdfAS;
import at.knowcenter.wag.egov.egiz.PdfASID;
import at.knowcenter.wag.egov.egiz.exceptions.PDFDocumentException;
@@ -81,7 +87,7 @@ public class DetachedfTextualSignator_1_0_0 implements Signator
* @see at.knowcenter.wag.egov.egiz.framework.Signator#prepareSign(byte[],
* String, TablePos, boolean)
*/
- public IncrementalUpdateInformation prepareSign(byte[] pdf,
+ public IncrementalUpdateInformation prepareSign(PdfDataSource pdf,
String signature_type, TablePos pos, boolean has_SIG_ID) throws PresentableException
{
IncrementalUpdateInformation iui = new IncrementalUpdateInformation();
@@ -89,17 +95,11 @@ public class DetachedfTextualSignator_1_0_0 implements Signator
iui.signature_type = signature_type;
iui.pos = pos;
- String document_text = PdfAS.extractNormalizedTextTextual(pdf);
+ String document_text = PdfAS.extractNormalizedTextTextual(pdf.createInputStream());
// logger_.debug("signed_text = " + document_text);
- try
- {
- iui.signature_data = new SignatureDataImpl(document_text.getBytes("UTF-8"), MIME_TYPE, "UTF-8"); //$NON-NLS-1$ //$NON-NLS-2$
- }
- catch (UnsupportedEncodingException e)
- {
- throw new RuntimeException("Very strange: UTF-8 character encoding not supported???"); //$NON-NLS-1$
- }
+ DataSource ds = new TextDataSourceImpl(document_text);
+ iui.signature_data = new SignatureDataImpl(ds, MIME_TYPE, "UTF-8"); //$NON-NLS-1$ //$NON-NLS-2$
return iui;
}
diff --git a/src/main/java/at/knowcenter/wag/egov/egiz/framework/signators/TextualSignator_1_0_0.java b/src/main/java/at/knowcenter/wag/egov/egiz/framework/signators/TextualSignator_1_0_0.java
index 7fe9e4f..33de15e 100644
--- a/src/main/java/at/knowcenter/wag/egov/egiz/framework/signators/TextualSignator_1_0_0.java
+++ b/src/main/java/at/knowcenter/wag/egov/egiz/framework/signators/TextualSignator_1_0_0.java
@@ -17,15 +17,16 @@
*/
package at.knowcenter.wag.egov.egiz.framework.signators;
-import java.io.UnsupportedEncodingException;
-
+import at.gv.egiz.pdfas.framework.input.DataSource;
+import at.gv.egiz.pdfas.framework.input.PdfDataSource;
+import at.gv.egiz.pdfas.impl.input.TextDataSourceImpl;
+import at.gv.egiz.pdfas.impl.signator.IncrementalUpdateHelper;
import at.knowcenter.wag.egov.egiz.PdfAS;
import at.knowcenter.wag.egov.egiz.PdfASID;
import at.knowcenter.wag.egov.egiz.exceptions.PresentableException;
import at.knowcenter.wag.egov.egiz.framework.SignResult;
import at.knowcenter.wag.egov.egiz.framework.Signator;
import at.knowcenter.wag.egov.egiz.framework.SignatorFactory;
-import at.knowcenter.wag.egov.egiz.pdf.BinarySignature;
import at.knowcenter.wag.egov.egiz.pdf.IncrementalUpdateInformation;
import at.knowcenter.wag.egov.egiz.pdf.PositioningInstruction;
import at.knowcenter.wag.egov.egiz.pdf.TablePos;
@@ -80,7 +81,7 @@ public class TextualSignator_1_0_0 implements Signator
* @see at.knowcenter.wag.egov.egiz.framework.Signator#prepareSign(byte[],
* String, TablePos, boolean)
*/
- public IncrementalUpdateInformation prepareSign(byte[] pdf,
+ public IncrementalUpdateInformation prepareSign(PdfDataSource pdf,
String signature_type, TablePos pos, boolean has_SIG_ID) throws PresentableException
{
IncrementalUpdateInformation iui = new IncrementalUpdateInformation();
@@ -88,17 +89,11 @@ public class TextualSignator_1_0_0 implements Signator
iui.signature_type = signature_type;
iui.pos = pos;
- String document_text = PdfAS.extractNormalizedTextTextual(pdf);
+ String document_text = PdfAS.extractNormalizedTextTextual(pdf.createInputStream());
// logger_.debug("signed_text = " + document_text);
- try
- {
- iui.signature_data = new SignatureDataImpl(document_text.getBytes("UTF-8"), "text/plain", "UTF-8");
- }
- catch (UnsupportedEncodingException e)
- {
- throw new RuntimeException("Very strange: UTF-8 character encoding not supported???"); //$NON-NLS-1$
- }
+ DataSource ds = new TextDataSourceImpl(document_text);
+ iui.signature_data = new SignatureDataImpl(ds, "text/plain", "UTF-8");
return iui;
}
@@ -118,7 +113,7 @@ public class TextualSignator_1_0_0 implements Signator
PositioningInstruction pi = PdfAS.determineTablePositioning(iui.pos, iui.signature_type, iui.original_document, pdf_table);
- IncrementalUpdateInformation signed_iui = BinarySignature.writeIncrementalUpdate(iui.original_document, pdf_table, pi, null, null);
+ IncrementalUpdateInformation signed_iui = IncrementalUpdateHelper.writeIncrementalUpdate(iui.original_document, pdf_table, pi, null, null);
SignResult sign_result = new SignResult(PdfAS.PDF_MIME_TYPE, signed_iui.signed_pdf);
return sign_result;
diff --git a/src/main/java/at/knowcenter/wag/egov/egiz/framework/verificators/BinaryVerificator_1_0_0.java b/src/main/java/at/knowcenter/wag/egov/egiz/framework/verificators/BinaryVerificator_1_0_0.java
index 469fcee..b389a25 100644
--- a/src/main/java/at/knowcenter/wag/egov/egiz/framework/verificators/BinaryVerificator_1_0_0.java
+++ b/src/main/java/at/knowcenter/wag/egov/egiz/framework/verificators/BinaryVerificator_1_0_0.java
@@ -22,6 +22,10 @@ import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
+import at.gv.egiz.pdfas.exceptions.ErrorCode;
+import at.gv.egiz.pdfas.framework.input.PdfDataSource;
+import at.gv.egiz.pdfas.impl.input.ByteArrayPdfDataSourceImpl;
+
import org.apache.log4j.Logger;
import at.knowcenter.wag.egov.egiz.PdfASID;
@@ -52,11 +56,12 @@ import at.knowcenter.wag.exactparser.parsing.results.NumberParseResult;
import at.knowcenter.wag.exactparser.parsing.results.ObjectParseResult;
import at.knowcenter.wag.exactparser.parsing.results.ParseResult;
-
/**
* The BinaryVerificator parses the EGIT Dictionary and extracts the signature
* holder from it.
*
+ * @deprecated moved to the new framework
+ *
* @author wprinz
*/
public class BinaryVerificator_1_0_0 implements Verificator
@@ -67,6 +72,16 @@ public class BinaryVerificator_1_0_0 implements Verificator
public static final PdfASID MY_ID = new PdfASID(SignatorFactory.VENDOR, SignatorFactory.TYPE_BINARY, SignatorFactory.VERSION_1_0_0);
/**
+ * Use this to override the MY_ID field.
+ *
+ * @return Returns the Id of this Verificator.
+ */
+ protected PdfASID getMyId()
+ {
+ return MY_ID;
+ }
+
+ /**
* The /ODS key in the EGIZ Dict.
*/
public static final byte[] EGIZ_ODS_NAME = new byte[] { 'O', 'D', 'S' };
@@ -79,20 +94,17 @@ public class BinaryVerificator_1_0_0 implements Verificator
/**
* The /ByteRange key in the EGIZ Dict.
*/
- public static final byte[] EGIZ_BYTE_RANGE_NAME = new byte[] { 'B', 'y', 't',
- 'e', 'R', 'a', 'n', 'g', 'e' };
+ public static final byte[] EGIZ_BYTE_RANGE_NAME = new byte[] { 'B', 'y', 't', 'e', 'R', 'a', 'n', 'g', 'e' };
/**
* The /replaces key in the EGIZ Dict.
*/
- public static final byte[] EGIZ_REPLACES_NAME = new byte[] { 'r', 'e', 'p',
- 'l', 'a', 'c', 'e', 's' };
+ public static final byte[] EGIZ_REPLACES_NAME = new byte[] { 'r', 'e', 'p', 'l', 'a', 'c', 'e', 's' };
/**
* The /encodings key in the EGIZ Dict.
*/
- public static final byte[] EGIZ_ENCODINGS_NAME = new byte[] { 'e', 'n', 'c',
- 'o', 'd', 'i', 'n', 'g', 's' };
+ public static final byte[] EGIZ_ENCODINGS_NAME = new byte[] { 'e', 'n', 'c', 'o', 'd', 'i', 'n', 'g', 's' };
/**
* The /Cert key in the EGIZ Dict.
@@ -116,13 +128,12 @@ public class BinaryVerificator_1_0_0 implements Verificator
* @see at.knowcenter.wag.egov.egiz.framework.Verificator#parseBlock(byte[],
* at.knowcenter.wag.exactparser.parsing.results.FooterParseResult, int)
*/
- public List parseBlock(byte[] pdf, FooterParseResult block,
- int start_of_whole_block) throws PresentableException
+ public List parseBlock(byte[] pdf, FooterParseResult block, int start_of_whole_block) throws PresentableException
{
int egiz_index = PDFUtils.indexOfName(pdf, block.tpr.dpr.names, VerificationFilter.EGIZ_DICT_NAME);
if (egiz_index < 0)
{
- throw new PDFDocumentException(301, "egiz_index = " + egiz_index);
+ throw new PDFDocumentException(ErrorCode.COULDNT_VERIFY, "egiz_index = " + egiz_index);
}
IndirectObjectReferenceParseResult egiz_dict_iorpr = (IndirectObjectReferenceParseResult) block.tpr.dpr.values.get(egiz_index);
@@ -140,7 +151,7 @@ public class BinaryVerificator_1_0_0 implements Verificator
PdfASID kz = null;
String kz_string = VerificationFilter.restoreKZ(pdf, kz_apr);
kz = new PdfASID(kz_string);
- if (!kz_string.equals(MY_ID.toString()))
+ if (!kz_string.equals(getMyId().toString()))
{
logger_.warn("Warning: Kennzeichnung not recognized:" + kz_string);
}
@@ -223,7 +234,9 @@ public class BinaryVerificator_1_0_0 implements Verificator
// bbi);
byte[] signed_pdf = BinarySignature.prepareDataToSign(pdf, byte_ranges);
- //String signed_text = BinarySignature.retrieveSignableTextFromData(signed_pdf, signed_pdf.length); // has been moved into the BinarySignatureHolder
+ // String signed_text =
+ // BinarySignature.retrieveSignableTextFromData(signed_pdf,
+ // signed_pdf.length); // has been moved into the BinarySignatureHolder
SignatureObject signature_object = new SignatureObject();
String default_type = SettingsReader.getInstance().getValueFromKey(SignatureTypes.DEFAULT_TYPE);
@@ -300,8 +313,9 @@ public class BinaryVerificator_1_0_0 implements Verificator
}
}
- // FIXME make better
- BinarySignatureHolder signature_holder = new BinarySignatureHolder(signed_pdf, signed_pdf.length, signature_object);
+ // FIXME This blows up the session !!!!!
+ PdfDataSource ds = new ByteArrayPdfDataSourceImpl(signed_pdf, signed_pdf.length);
+ BinarySignatureHolder signature_holder = new BinarySignatureHolder(ds, signature_object);
List holders = new ArrayList();
holders.add(signature_holder);
@@ -322,8 +336,7 @@ public class BinaryVerificator_1_0_0 implements Verificator
* @throws PDFDocumentException
* Thrown, if the key doesn't exist in the dictionary.
*/
- protected ParseResult getRequiredValueOfKey(byte[] pdf,
- DictionaryParseResult egiz_dict, byte[] name) throws PDFDocumentException
+ protected ParseResult getRequiredValueOfKey(byte[] pdf, DictionaryParseResult egiz_dict, byte[] name) throws PDFDocumentException
{
final int index = PDFUtils.indexOfName(pdf, egiz_dict.names, name);
checkIndex(index);
@@ -343,7 +356,7 @@ public class BinaryVerificator_1_0_0 implements Verificator
{
if (name_index < 0)
{
- throw new PDFDocumentException(301, "The name wasn't found in the egiz dict.");
+ throw new PDFDocumentException(ErrorCode.COULDNT_VERIFY, "The name wasn't found in the egiz dict.");
}
}
@@ -359,8 +372,7 @@ public class BinaryVerificator_1_0_0 implements Verificator
* @return Returns the key's value, or null if the dictionary didn't contain
* that key.
*/
- protected ParseResult getValueOfKey(byte[] pdf,
- DictionaryParseResult egiz_dict, byte[] name)
+ protected ParseResult getValueOfKey(byte[] pdf, DictionaryParseResult egiz_dict, byte[] name)
{
final int index = PDFUtils.indexOfName(pdf, egiz_dict.names, name);
if (index < 0)
diff --git a/src/main/java/at/knowcenter/wag/egov/egiz/framework/verificators/BinaryVerificator_1_1_0.java b/src/main/java/at/knowcenter/wag/egov/egiz/framework/verificators/BinaryVerificator_1_1_0.java
new file mode 100644
index 0000000..efbc4f8
--- /dev/null
+++ b/src/main/java/at/knowcenter/wag/egov/egiz/framework/verificators/BinaryVerificator_1_1_0.java
@@ -0,0 +1,24 @@
+/**
+ *
+ */
+package at.knowcenter.wag.egov.egiz.framework.verificators;
+
+import at.knowcenter.wag.egov.egiz.PdfASID;
+import at.knowcenter.wag.egov.egiz.framework.SignatorFactory;
+
+/**
+ * @author wprinz
+ *
+ */
+public class BinaryVerificator_1_1_0 extends BinaryVerificator_1_0_0
+{
+ public static final PdfASID MY_ID = new PdfASID(SignatorFactory.VENDOR, SignatorFactory.TYPE_BINARY, SignatorFactory.VERSION_1_1_0);
+
+ /**
+ * @see at.knowcenter.wag.egov.egiz.framework.verificators.BinaryVerificator_1_0_0#getMyId()
+ */
+ protected PdfASID getMyId()
+ {
+ return MY_ID;
+ }
+}
diff --git a/src/main/java/at/knowcenter/wag/egov/egiz/framework/verificators/TextualVerificator_1_0_0.java b/src/main/java/at/knowcenter/wag/egov/egiz/framework/verificators/TextualVerificator_1_0_0.java
index fccdfd0..176c0f0 100644
--- a/src/main/java/at/knowcenter/wag/egov/egiz/framework/verificators/TextualVerificator_1_0_0.java
+++ b/src/main/java/at/knowcenter/wag/egov/egiz/framework/verificators/TextualVerificator_1_0_0.java
@@ -17,6 +17,7 @@
*/
package at.knowcenter.wag.egov.egiz.framework.verificators;
+import java.io.ByteArrayInputStream;
import java.util.ArrayList;
import java.util.List;
@@ -49,6 +50,8 @@ import at.knowcenter.wag.exactparser.parsing.results.FooterParseResult;
* Note that it will not find old style blocks as they don't have the SIG_KZ.
* </p>
*
+ * @deprecated moved to the new framework
+ *
* @author wprinz
*/
public class TextualVerificator_1_0_0 implements Verificator
@@ -78,7 +81,7 @@ public class TextualVerificator_1_0_0 implements Verificator
public List parseBlock(byte[] pdf, FooterParseResult block,
int start_of_whole_block) throws PresentableException
{
- String block_text = PdfAS.extractNormalizedTextTextual(pdf, block.next_index);
+ String block_text = PdfAS.extractNormalizedTextTextual(new ByteArrayInputStream(pdf), block.next_index);
logger_.debug("Scanning block:");
//List signature_holders = PdfAS.extractSignatureHoldersTextual(block_text, false);
@@ -97,7 +100,7 @@ public class TextualVerificator_1_0_0 implements Verificator
{
text_holder_candidates = new ArrayList();
- String prev_text = PdfAS.extractNormalizedTextTextual(pdf, start_of_whole_block);
+ String prev_text = PdfAS.extractNormalizedTextTextual(new ByteArrayInputStream(pdf), start_of_whole_block);
logger_.debug("Scanning prev block:");
//List prev_signature_holders = PdfAS.extractSignatureHoldersTextual(prev_text, false);
diff --git a/src/main/java/at/knowcenter/wag/egov/egiz/framework/verificators/TextualVerificator_pdfasold.java b/src/main/java/at/knowcenter/wag/egov/egiz/framework/verificators/TextualVerificator_pdfasold.java
index 5008ed3..ea84e7e 100644
--- a/src/main/java/at/knowcenter/wag/egov/egiz/framework/verificators/TextualVerificator_pdfasold.java
+++ b/src/main/java/at/knowcenter/wag/egov/egiz/framework/verificators/TextualVerificator_pdfasold.java
@@ -17,6 +17,7 @@
*/
package at.knowcenter.wag.egov.egiz.framework.verificators;
+import java.io.ByteArrayInputStream;
import java.util.List;
import org.apache.log4j.Logger;
@@ -60,7 +61,7 @@ public class TextualVerificator_pdfasold implements Verificator
throw new PDFDocumentException(201, "The PDF-AS-old Verificator can only be applied on original documents.");
}
- String normalized_text = PdfAS.extractNormalizedTextTextual(pdf, block.next_index);
+ String normalized_text = PdfAS.extractNormalizedTextTextual(new ByteArrayInputStream(pdf), block.next_index);
logger_.debug("Scanning block:");
List signature_holders = PdfAS.extractSignatureHoldersTextual(normalized_text, true);