aboutsummaryrefslogtreecommitdiff
path: root/pdf-as-lib/src/main/java/at/gv/egiz/sl/util/BaseSLConnector.java
diff options
context:
space:
mode:
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.java120
1 files changed, 120 insertions, 0 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
new file mode 100644
index 00000000..51b63f51
--- /dev/null
+++ b/pdf-as-lib/src/main/java/at/gv/egiz/sl/util/BaseSLConnector.java
@@ -0,0 +1,120 @@
+package at.gv.egiz.sl.util;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.nio.Buffer;
+import java.util.Arrays;
+
+import javax.xml.bind.JAXBElement;
+import javax.xml.bind.JAXBException;
+
+import org.apache.http.HttpResponse;
+import org.apache.http.client.ClientProtocolException;
+import org.apache.http.client.HttpClient;
+import org.apache.http.client.methods.HttpPost;
+import org.apache.http.entity.ContentType;
+import org.apache.http.entity.mime.HttpMultipartMode;
+import org.apache.http.entity.mime.MultipartEntity;
+import org.apache.http.entity.mime.MultipartEntityBuilder;
+import org.apache.http.entity.mime.content.StringBody;
+import org.apache.http.impl.client.DefaultHttpClient;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import at.gv.egiz.pdfas.common.exceptions.PDFIOException;
+import at.gv.egiz.pdfas.common.exceptions.PdfAsException;
+import at.gv.egiz.pdfas.common.exceptions.SLPdfAsException;
+import at.gv.egiz.pdfas.lib.impl.signing.pdfbox.PADESPDFBOXSigner;
+import at.gv.egiz.sl.Base64OptRefContentType;
+import at.gv.egiz.sl.CMSDataObjectRequiredMetaType;
+import at.gv.egiz.sl.CreateCMSSignatureRequestType;
+import at.gv.egiz.sl.CreateCMSSignatureResponseType;
+import at.gv.egiz.sl.ErrorResponseType;
+import at.gv.egiz.sl.InfoboxReadParamsAssocArrayType;
+import at.gv.egiz.sl.InfoboxReadRequestType;
+import at.gv.egiz.sl.InfoboxReadResponseType;
+import at.gv.egiz.sl.MetaInfoType;
+import at.gv.egiz.sl.InfoboxReadParamsAssocArrayType.ReadValue;
+import at.gv.egiz.sl.ObjectFactory;
+
+public abstract class BaseSLConnector implements ISLConnector {
+
+ private static final Logger logger = LoggerFactory.getLogger(BaseSLConnector.class);
+
+ public static final String SecureSignatureKeypair = "SecureSignatureKeypair";
+
+ public static final String PDF_MIME_TYPE = "application/pdf";
+ public static final String PDF_MIME_TYPE_DESC = "Adobe PDF-Dateien";
+
+ public static final String DETACHED = "detached";
+
+ public static final String XMLREQUEST = "XMLRequest";
+
+ protected ObjectFactory of = new ObjectFactory();
+
+ public InfoboxReadRequestType createInfoboxReadRequest() {
+ InfoboxReadRequestType request = new InfoboxReadRequestType();
+ request.setInfoboxIdentifier("Certificates");
+ InfoboxReadParamsAssocArrayType readData = new InfoboxReadParamsAssocArrayType();
+
+ ReadValue readValue = new ReadValue();
+ readValue.setKey(SecureSignatureKeypair);
+
+ readData.setReadValue(readValue);
+ request.setAssocArrayParameters(readData);
+ 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)0);
+
+ 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++;
+ }
+
+ }
+
+ // == MetaInfoType
+ MetaInfoType metaInfoType = new MetaInfoType();
+ metaInfoType.setMimeType(PDF_MIME_TYPE);
+ metaInfoType.setDescription(PDF_MIME_TYPE_DESC);
+
+ // == Base64OptRefContentType
+ Base64OptRefContentType base64OptRefContentType = new Base64OptRefContentType();
+ base64OptRefContentType.setBase64Content(data);
+
+ // == CMSDataObjectRequiredMetaType
+ CMSDataObjectRequiredMetaType cmsDataObjectRequiredMetaType = new CMSDataObjectRequiredMetaType();
+ cmsDataObjectRequiredMetaType.setMetaInfo(metaInfoType);
+ cmsDataObjectRequiredMetaType.setContent(base64OptRefContentType);
+ // cmsDataObjectRequiredMetaType.setExcludedByteRange()
+
+ // == CreateCMSSignatureRequestType
+ CreateCMSSignatureRequestType request = new CreateCMSSignatureRequestType();
+ request.setKeyboxIdentifier(SecureSignatureKeypair);
+ request.setDataObject(cmsDataObjectRequiredMetaType);
+ request.setStructure(DETACHED);
+
+ return request;
+ }
+
+}