From 7b2e2b640b0f392183f7927f692936950d3fabfc Mon Sep 17 00:00:00 2001
From: Andreas Fitzek <andreas.fitzek@iaik.tugraz.at>
Date: Tue, 12 Nov 2013 12:26:10 +0100
Subject: SecurityLayer commands included

---
 .../gv/egiz/pdfas/lib/api/sign/IPlainSigner.java   |   6 +-
 .../java/at/gv/egiz/pdfas/lib/impl/PdfAsImpl.java  |  34 +-
 .../lib/impl/signing/pdfbox/PADESPDFBOXSigner.java |   5 +-
 .../impl/signing/pdfbox/PdfboxSignerWrapper.java   |  55 +--
 .../java/at/gv/egiz/sl/AllSignatoriesType.java     |  55 +++
 .../main/java/at/gv/egiz/sl/AnyChildrenType.java   |  78 ++++
 .../java/at/gv/egiz/sl/AnyMixedChildrenType.java   |  85 ++++
 .../main/java/at/gv/egiz/sl/Base64ContentType.java |  71 ++++
 .../at/gv/egiz/sl/Base64OptRefContentType.java     |  69 ++++
 .../java/at/gv/egiz/sl/Base64XMLContentType.java   |  99 +++++
 .../src/main/java/at/gv/egiz/sl/BindingType.java   |  72 ++++
 .../gv/egiz/sl/CMSDataObjectOptionalMetaType.java  | 129 ++++++
 .../gv/egiz/sl/CMSDataObjectRequiredMetaType.java  |  44 +++
 .../gv/egiz/sl/CreateCMSSignatureRequestType.java  | 137 +++++++
 .../gv/egiz/sl/CreateCMSSignatureResponseType.java |  67 ++++
 .../main/java/at/gv/egiz/sl/ErrorResponseType.java |  89 +++++
 .../java/at/gv/egiz/sl/ExcludedByteRangeType.java  | 101 +++++
 .../java/at/gv/egiz/sl/GetPropertiesRequest.java   |  41 ++
 .../at/gv/egiz/sl/GetPropertiesRequestType.java    |  41 ++
 .../at/gv/egiz/sl/GetPropertiesResponseType.java   | 249 ++++++++++++
 .../java/at/gv/egiz/sl/GetStatusRequestType.java   | 100 +++++
 .../java/at/gv/egiz/sl/GetStatusResponseType.java  |  69 ++++
 .../at/gv/egiz/sl/InfoboxAssocArrayPairType.java   |  67 ++++
 .../gv/egiz/sl/InfoboxReadDataAssocArrayType.java  | 116 ++++++
 .../egiz/sl/InfoboxReadParamsAssocArrayType.java   | 434 +++++++++++++++++++++
 .../egiz/sl/InfoboxReadParamsBinaryFileType.java   |  69 ++++
 .../java/at/gv/egiz/sl/InfoboxReadRequestType.java | 160 ++++++++
 .../at/gv/egiz/sl/InfoboxReadResponseType.java     |  99 +++++
 .../src/main/java/at/gv/egiz/sl/MetaInfoType.java  | 136 +++++++
 .../at/gv/egiz/sl/NullOperationRequestType.java    |  37 ++
 .../at/gv/egiz/sl/NullOperationResponseType.java   |  37 ++
 .../src/main/java/at/gv/egiz/sl/ObjectFactory.java | 368 +++++++++++++++++
 .../at/gv/egiz/sl/QualifiedBoxIdentifierType.java  | 108 +++++
 .../main/java/at/gv/egiz/sl/TokenStatusType.java   |  58 +++
 .../gv/egiz/sl/VerifyCMSSignatureRequestType.java  | 161 ++++++++
 .../main/java/at/gv/egiz/sl/XMLContentType.java    |  70 ++++
 .../src/main/java/at/gv/egiz/sl/package-info.java  |   9 +
 .../java/at/gv/egiz/sl/util/BKUSLConnector.java    | 165 ++++++++
 .../java/at/gv/egiz/sl/util/BaseSLConnector.java   | 120 ++++++
 .../main/java/at/gv/egiz/sl/util/ISLConnector.java |  15 +
 .../java/at/gv/egiz/sl/util/SLMarschaller.java     |  49 +++
 .../main/java/at/gv/egiz/sl/util/package-info.java |   8 +
 42 files changed, 3947 insertions(+), 35 deletions(-)
 create mode 100644 pdf-as-lib/src/main/java/at/gv/egiz/sl/AllSignatoriesType.java
 create mode 100644 pdf-as-lib/src/main/java/at/gv/egiz/sl/AnyChildrenType.java
 create mode 100644 pdf-as-lib/src/main/java/at/gv/egiz/sl/AnyMixedChildrenType.java
 create mode 100644 pdf-as-lib/src/main/java/at/gv/egiz/sl/Base64ContentType.java
 create mode 100644 pdf-as-lib/src/main/java/at/gv/egiz/sl/Base64OptRefContentType.java
 create mode 100644 pdf-as-lib/src/main/java/at/gv/egiz/sl/Base64XMLContentType.java
 create mode 100644 pdf-as-lib/src/main/java/at/gv/egiz/sl/BindingType.java
 create mode 100644 pdf-as-lib/src/main/java/at/gv/egiz/sl/CMSDataObjectOptionalMetaType.java
 create mode 100644 pdf-as-lib/src/main/java/at/gv/egiz/sl/CMSDataObjectRequiredMetaType.java
 create mode 100644 pdf-as-lib/src/main/java/at/gv/egiz/sl/CreateCMSSignatureRequestType.java
 create mode 100644 pdf-as-lib/src/main/java/at/gv/egiz/sl/CreateCMSSignatureResponseType.java
 create mode 100644 pdf-as-lib/src/main/java/at/gv/egiz/sl/ErrorResponseType.java
 create mode 100644 pdf-as-lib/src/main/java/at/gv/egiz/sl/ExcludedByteRangeType.java
 create mode 100644 pdf-as-lib/src/main/java/at/gv/egiz/sl/GetPropertiesRequest.java
 create mode 100644 pdf-as-lib/src/main/java/at/gv/egiz/sl/GetPropertiesRequestType.java
 create mode 100644 pdf-as-lib/src/main/java/at/gv/egiz/sl/GetPropertiesResponseType.java
 create mode 100644 pdf-as-lib/src/main/java/at/gv/egiz/sl/GetStatusRequestType.java
 create mode 100644 pdf-as-lib/src/main/java/at/gv/egiz/sl/GetStatusResponseType.java
 create mode 100644 pdf-as-lib/src/main/java/at/gv/egiz/sl/InfoboxAssocArrayPairType.java
 create mode 100644 pdf-as-lib/src/main/java/at/gv/egiz/sl/InfoboxReadDataAssocArrayType.java
 create mode 100644 pdf-as-lib/src/main/java/at/gv/egiz/sl/InfoboxReadParamsAssocArrayType.java
 create mode 100644 pdf-as-lib/src/main/java/at/gv/egiz/sl/InfoboxReadParamsBinaryFileType.java
 create mode 100644 pdf-as-lib/src/main/java/at/gv/egiz/sl/InfoboxReadRequestType.java
 create mode 100644 pdf-as-lib/src/main/java/at/gv/egiz/sl/InfoboxReadResponseType.java
 create mode 100644 pdf-as-lib/src/main/java/at/gv/egiz/sl/MetaInfoType.java
 create mode 100644 pdf-as-lib/src/main/java/at/gv/egiz/sl/NullOperationRequestType.java
 create mode 100644 pdf-as-lib/src/main/java/at/gv/egiz/sl/NullOperationResponseType.java
 create mode 100644 pdf-as-lib/src/main/java/at/gv/egiz/sl/ObjectFactory.java
 create mode 100644 pdf-as-lib/src/main/java/at/gv/egiz/sl/QualifiedBoxIdentifierType.java
 create mode 100644 pdf-as-lib/src/main/java/at/gv/egiz/sl/TokenStatusType.java
 create mode 100644 pdf-as-lib/src/main/java/at/gv/egiz/sl/VerifyCMSSignatureRequestType.java
 create mode 100644 pdf-as-lib/src/main/java/at/gv/egiz/sl/XMLContentType.java
 create mode 100644 pdf-as-lib/src/main/java/at/gv/egiz/sl/package-info.java
 create mode 100644 pdf-as-lib/src/main/java/at/gv/egiz/sl/util/BKUSLConnector.java
 create mode 100644 pdf-as-lib/src/main/java/at/gv/egiz/sl/util/BaseSLConnector.java
 create mode 100644 pdf-as-lib/src/main/java/at/gv/egiz/sl/util/ISLConnector.java
 create mode 100644 pdf-as-lib/src/main/java/at/gv/egiz/sl/util/SLMarschaller.java
 create mode 100644 pdf-as-lib/src/main/java/at/gv/egiz/sl/util/package-info.java

(limited to 'pdf-as-lib/src')

diff --git a/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/api/sign/IPlainSigner.java b/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/api/sign/IPlainSigner.java
index 6155a245..0ad40cc4 100644
--- a/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/api/sign/IPlainSigner.java
+++ b/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/api/sign/IPlainSigner.java
@@ -7,9 +7,11 @@ import java.io.IOException;
 import org.apache.pdfbox.cos.COSName;
 import org.apache.pdfbox.exceptions.SignatureException;
 
+import at.gv.egiz.pdfas.common.exceptions.PdfAsException;
+
 public interface IPlainSigner {
-	public X509Certificate getCertificate();
-    public byte[] sign(byte[] input) throws SignatureException, IOException;
+	public X509Certificate getCertificate() throws PdfAsException;
+    public byte[] sign(byte[] input, int[] byteRange) throws PdfAsException;
     public String getPDFSubFilter();
     public String getPDFFilter();
 }
diff --git a/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/impl/PdfAsImpl.java b/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/impl/PdfAsImpl.java
index 6f74303c..75408567 100644
--- a/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/impl/PdfAsImpl.java
+++ b/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/impl/PdfAsImpl.java
@@ -23,6 +23,7 @@ import at.gv.egiz.pdfas.common.exceptions.PdfAsSettingsException;
 import at.gv.egiz.pdfas.common.settings.ISettings;
 import at.gv.egiz.pdfas.common.settings.Settings;
 import at.gv.egiz.pdfas.common.settings.SignatureProfileSettings;
+import at.gv.egiz.pdfas.common.utils.PDFUtils;
 import at.gv.egiz.pdfas.lib.api.Configuration;
 import at.gv.egiz.pdfas.lib.api.IConfigurationConstants;
 import at.gv.egiz.pdfas.lib.api.PdfAs;
@@ -47,6 +48,7 @@ import at.gv.egiz.pdfas.lib.impl.status.OperationStatus;
 import at.gv.egiz.pdfas.lib.impl.status.RequestedSignature;
 import at.gv.egiz.pdfas.lib.impl.verify.IVerifyFilter;
 import at.gv.egiz.pdfas.lib.impl.verify.VerifierDispatcher;
+import at.knowcenter.wag.egov.egiz.pdf.PDFUtilities;
 import at.knowcenter.wag.egov.egiz.pdf.PositioningInstruction;
 import at.knowcenter.wag.egov.egiz.pdf.TablePos;
 import at.knowcenter.wag.egov.egiz.table.Table;
@@ -83,6 +85,8 @@ public class PdfAsImpl implements PdfAs, IConfigurationConstants {
 			RequestedSignature requestedSignature = new RequestedSignature(
 					status);
 
+			status.setRequestedSignature(requestedSignature);
+			
 			requestedSignature.setCertificate(status.getSignParamter()
 					.getPlainSigner().getCertificate());
 
@@ -334,13 +338,25 @@ public class PdfAsImpl implements PdfAs, IConfigurationConstants {
 				SignatureDataExtractor signatureDataExtractor = new SignatureDataExtractor(
 						request.getCertificate(), pdfFilter, pdfSubFilter,
 						status.getSigningDate());
-
+				
 				IPdfSigner signer = PdfSignerFactory.createPdfSigner();
 				signer.signPDF(status.getPdfObject(),
 						status.getRequestedSignature(), signatureDataExtractor);
+				
+				StringBuilder sb = new StringBuilder();
+				
+				int[] byteRange = PDFUtils.extractSignatureByteRange(signatureDataExtractor
+						.getSignatureData());
+				
+				for(int i = 0; i < byteRange.length; i++) {
+					sb.append(" " + byteRange[i]);
+				}
+				
+				logger.info("ByteRange: " + sb.toString());
+				
 				request.setSignatureData(signatureDataExtractor
 						.getSignatureData());
-				request.setByteRange(signatureDataExtractor.getByteRange());
+				request.setByteRange(byteRange);
 				request.setNeedSignature(true);
 
 			} catch (Throwable e) {
@@ -349,12 +365,14 @@ public class PdfAsImpl implements PdfAs, IConfigurationConstants {
 			}
 		} else if (request.needSignature()) {
 			request.setNeedSignature(false);
-			// TODO: Inject signature byte[] into signedDocument
-			int offset = request.getSignatureData().length;
-
-			for (int i = 0; i < request.getSignature().length; i++) {
-				status.getPdfObject().getSignedDocument()[offset + i] = request
-						.getSignature()[i];
+			// Inject signature byte[] into signedDocument
+			int offset = request.getSignatureDataByteRange()[1] + 1;
+
+			String signature = new COSString(request.getSignature()).getHexString();
+			byte[] pdfSignature = signature.getBytes();
+			
+			for (int i = 0; i < pdfSignature.length; i++) {
+				status.getPdfObject().getSignedDocument()[offset + i] = pdfSignature[i];
 			}
 			/*
 			 * 
diff --git a/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/impl/signing/pdfbox/PADESPDFBOXSigner.java b/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/impl/signing/pdfbox/PADESPDFBOXSigner.java
index 3f566f06..2e5dc62b 100644
--- a/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/impl/signing/pdfbox/PADESPDFBOXSigner.java
+++ b/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/impl/signing/pdfbox/PADESPDFBOXSigner.java
@@ -22,7 +22,6 @@ import at.gv.egiz.pdfas.common.messages.MessageResolver;
 import at.gv.egiz.pdfas.common.settings.SignatureProfileSettings;
 import at.gv.egiz.pdfas.common.utils.StreamUtils;
 import at.gv.egiz.pdfas.common.utils.TempFileHelper;
-import at.gv.egiz.pdfas.lib.api.sign.IPlainSigner;
 import at.gv.egiz.pdfas.lib.impl.signing.IPdfSigner;
 import at.gv.egiz.pdfas.lib.impl.signing.sig_interface.PDFASSignatureInterface;
 import at.gv.egiz.pdfas.lib.impl.stamping.TableFactory;
@@ -109,7 +108,7 @@ public class PADESPDFBOXSigner implements IPdfSigner {
         }
     }
 
-
+/*
     public void signPDF(String src, String dst, SignatureInterface signer) throws Exception {
         //ByteArrayOutputStream os = new ByteArrayOutputStream();
         FileInputStream fis = new FileInputStream(new File(src));
@@ -144,5 +143,5 @@ public class PADESPDFBOXSigner implements IPdfSigner {
         fos.close();
        // FileUtils.writeByteArrayToFile(new File(dst), os.toByteArray());
     }
-
+*/
 }
diff --git a/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/impl/signing/pdfbox/PdfboxSignerWrapper.java b/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/impl/signing/pdfbox/PdfboxSignerWrapper.java
index 91734312..6ded2d8a 100644
--- a/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/impl/signing/pdfbox/PdfboxSignerWrapper.java
+++ b/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/impl/signing/pdfbox/PdfboxSignerWrapper.java
@@ -10,6 +10,9 @@ import org.apache.pdfbox.pdmodel.interactive.digitalsignature.PDSignature;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import at.gv.egiz.pdfas.common.exceptions.PdfAsException;
+import at.gv.egiz.pdfas.common.exceptions.PdfAsWrappedIOException;
+import at.gv.egiz.pdfas.common.utils.PDFUtils;
 import at.gv.egiz.pdfas.common.utils.StreamUtils;
 import at.gv.egiz.pdfas.common.utils.StringUtils;
 import at.gv.egiz.pdfas.lib.api.sign.IPlainSigner;
@@ -17,27 +20,35 @@ import at.gv.egiz.pdfas.lib.impl.signing.sig_interface.PDFASSignatureInterface;
 
 public class PdfboxSignerWrapper implements PDFASSignatureInterface {
 
-    private static final Logger logger = LoggerFactory.getLogger(PdfboxSignerWrapper.class);
-
-    private IPlainSigner signer;
-    private PDSignature signature;
-    private int[] byteRange;
-    private Calendar date;
-    
-    public PdfboxSignerWrapper(IPlainSigner signer) {
-        this.signer = signer;
-        this.date = Calendar.getInstance();
-    }
-
-    public byte[] sign(InputStream inputStream) throws SignatureException, IOException {
-    	byteRange = this.signature.getByteRange();
-    	byte[] signature =  signer.sign(StreamUtils.inputStreamToByteArray(inputStream));
-        logger.debug("Signature Data: " + StringUtils.bytesToHexString(signature));
-        FileOutputStream fos = new FileOutputStream("/tmp/fos.bin");
-        fos.write(signature);
-        fos.close();
-        return signature;
-    }
+	private static final Logger logger = LoggerFactory
+			.getLogger(PdfboxSignerWrapper.class);
+
+	private IPlainSigner signer;
+	private PDSignature signature;
+	private int[] byteRange;
+	private Calendar date;
+
+	public PdfboxSignerWrapper(IPlainSigner signer) {
+		this.signer = signer;
+		this.date = Calendar.getInstance();
+	}
+
+	public byte[] sign(InputStream inputStream) throws SignatureException,
+			IOException {
+		byte[] data = StreamUtils.inputStreamToByteArray(inputStream);
+		byteRange = PDFUtils.extractSignatureByteRange(data);
+		try {
+			byte[] signature = signer.sign(data, byteRange);
+			logger.debug("Signature Data: "
+					+ StringUtils.bytesToHexString(signature));
+			FileOutputStream fos = new FileOutputStream("/tmp/fos.bin");
+			fos.write(signature);
+			fos.close();
+			return signature;
+		} catch (PdfAsException e) {
+			throw new PdfAsWrappedIOException(e);
+		}
+	}
 
 	public int[] getByteRange() {
 		return byteRange;
@@ -52,7 +63,7 @@ public class PdfboxSignerWrapper implements PDFASSignatureInterface {
 	}
 
 	public void setPDSignature(PDSignature signature) {
-        this.signature = signature;
+		this.signature = signature;
 	}
 
 	public Calendar getSigningDate() {
diff --git a/pdf-as-lib/src/main/java/at/gv/egiz/sl/AllSignatoriesType.java b/pdf-as-lib/src/main/java/at/gv/egiz/sl/AllSignatoriesType.java
new file mode 100644
index 00000000..6951073c
--- /dev/null
+++ b/pdf-as-lib/src/main/java/at/gv/egiz/sl/AllSignatoriesType.java
@@ -0,0 +1,55 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.4-2 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2013.11.05 at 04:21:33 PM CET 
+//
+
+
+package at.gv.egiz.sl;
+
+import javax.xml.bind.annotation.XmlEnum;
+import javax.xml.bind.annotation.XmlEnumValue;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for AllSignatoriesType.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * <p>
+ * <pre>
+ * &lt;simpleType name="AllSignatoriesType">
+ *   &lt;restriction base="{http://www.w3.org/2001/XMLSchema}string">
+ *     &lt;enumeration value="all"/>
+ *   &lt;/restriction>
+ * &lt;/simpleType>
+ * </pre>
+ * 
+ */
+@XmlType(name = "AllSignatoriesType")
+@XmlEnum
+public enum AllSignatoriesType {
+
+    @XmlEnumValue("all")
+    ALL("all");
+    private final String value;
+
+    AllSignatoriesType(String v) {
+        value = v;
+    }
+
+    public String value() {
+        return value;
+    }
+
+    public static AllSignatoriesType fromValue(String v) {
+        for (AllSignatoriesType c: AllSignatoriesType.values()) {
+            if (c.value.equals(v)) {
+                return c;
+            }
+        }
+        throw new IllegalArgumentException(v);
+    }
+
+}
diff --git a/pdf-as-lib/src/main/java/at/gv/egiz/sl/AnyChildrenType.java b/pdf-as-lib/src/main/java/at/gv/egiz/sl/AnyChildrenType.java
new file mode 100644
index 00000000..cebf21ae
--- /dev/null
+++ b/pdf-as-lib/src/main/java/at/gv/egiz/sl/AnyChildrenType.java
@@ -0,0 +1,78 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.4-2 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2013.11.05 at 04:21:33 PM CET 
+//
+
+
+package at.gv.egiz.sl;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAnyElement;
+import javax.xml.bind.annotation.XmlType;
+import org.w3c.dom.Element;
+
+
+/**
+ * <p>Java class for AnyChildrenType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="AnyChildrenType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;sequence maxOccurs="unbounded" minOccurs="0">
+ *         &lt;any processContents='lax'/>
+ *       &lt;/sequence>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "AnyChildrenType", propOrder = {
+    "any"
+})
+public class AnyChildrenType {
+
+    @XmlAnyElement(lax = true)
+    protected List<Object> any;
+
+    /**
+     * Gets the value of the any property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the any property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getAny().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link Element }
+     * {@link Object }
+     * 
+     * 
+     */
+    public List<Object> getAny() {
+        if (any == null) {
+            any = new ArrayList<Object>();
+        }
+        return this.any;
+    }
+
+}
diff --git a/pdf-as-lib/src/main/java/at/gv/egiz/sl/AnyMixedChildrenType.java b/pdf-as-lib/src/main/java/at/gv/egiz/sl/AnyMixedChildrenType.java
new file mode 100644
index 00000000..03afc871
--- /dev/null
+++ b/pdf-as-lib/src/main/java/at/gv/egiz/sl/AnyMixedChildrenType.java
@@ -0,0 +1,85 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.4-2 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2013.11.05 at 04:21:33 PM CET 
+//
+
+
+package at.gv.egiz.sl;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAnyElement;
+import javax.xml.bind.annotation.XmlMixed;
+import javax.xml.bind.annotation.XmlSeeAlso;
+import javax.xml.bind.annotation.XmlType;
+import org.w3c.dom.Element;
+
+
+/**
+ * <p>Java class for AnyMixedChildrenType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="AnyMixedChildrenType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;sequence maxOccurs="unbounded" minOccurs="0">
+ *         &lt;any processContents='lax'/>
+ *       &lt;/sequence>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "AnyMixedChildrenType", propOrder = {
+    "content"
+})
+@XmlSeeAlso({
+    XMLContentType.class
+})
+public class AnyMixedChildrenType {
+
+    @XmlMixed
+    @XmlAnyElement(lax = true)
+    protected List<Object> content;
+
+    /**
+     * Gets the value of the content property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the content property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getContent().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link Element }
+     * {@link String }
+     * {@link Object }
+     * 
+     * 
+     */
+    public List<Object> getContent() {
+        if (content == null) {
+            content = new ArrayList<Object>();
+        }
+        return this.content;
+    }
+
+}
diff --git a/pdf-as-lib/src/main/java/at/gv/egiz/sl/Base64ContentType.java b/pdf-as-lib/src/main/java/at/gv/egiz/sl/Base64ContentType.java
new file mode 100644
index 00000000..7bbb4448
--- /dev/null
+++ b/pdf-as-lib/src/main/java/at/gv/egiz/sl/Base64ContentType.java
@@ -0,0 +1,71 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.4-2 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2013.11.05 at 04:21:33 PM CET 
+//
+
+
+package at.gv.egiz.sl;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlSeeAlso;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for Base64ContentType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="Base64ContentType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;choice minOccurs="0">
+ *         &lt;element name="Base64Content" type="{http://www.w3.org/2001/XMLSchema}base64Binary"/>
+ *       &lt;/choice>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "Base64ContentType", propOrder = {
+    "base64Content"
+})
+@XmlSeeAlso({
+    Base64OptRefContentType.class
+})
+public class Base64ContentType {
+
+    @XmlElement(name = "Base64Content")
+    protected byte[] base64Content;
+
+    /**
+     * Gets the value of the base64Content property.
+     * 
+     * @return
+     *     possible object is
+     *     byte[]
+     */
+    public byte[] getBase64Content() {
+        return base64Content;
+    }
+
+    /**
+     * Sets the value of the base64Content property.
+     * 
+     * @param value
+     *     allowed object is
+     *     byte[]
+     */
+    public void setBase64Content(byte[] value) {
+        this.base64Content = value;
+    }
+
+}
diff --git a/pdf-as-lib/src/main/java/at/gv/egiz/sl/Base64OptRefContentType.java b/pdf-as-lib/src/main/java/at/gv/egiz/sl/Base64OptRefContentType.java
new file mode 100644
index 00000000..44094a72
--- /dev/null
+++ b/pdf-as-lib/src/main/java/at/gv/egiz/sl/Base64OptRefContentType.java
@@ -0,0 +1,69 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.4-2 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2013.11.05 at 04:21:33 PM CET 
+//
+
+
+package at.gv.egiz.sl;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for Base64OptRefContentType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="Base64OptRefContentType">
+ *   &lt;complexContent>
+ *     &lt;extension base="{http://www.buergerkarte.at/namespaces/securitylayer/1.2#}Base64ContentType">
+ *       &lt;attribute name="Reference" type="{http://www.w3.org/2001/XMLSchema}anyURI" />
+ *     &lt;/extension>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "Base64OptRefContentType")
+public class Base64OptRefContentType
+    extends Base64ContentType
+{
+
+    @XmlAttribute(name = "Reference")
+    @XmlSchemaType(name = "anyURI")
+    protected String reference;
+
+    /**
+     * Gets the value of the reference property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getReference() {
+        return reference;
+    }
+
+    /**
+     * Sets the value of the reference property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setReference(String value) {
+        this.reference = value;
+    }
+
+}
diff --git a/pdf-as-lib/src/main/java/at/gv/egiz/sl/Base64XMLContentType.java b/pdf-as-lib/src/main/java/at/gv/egiz/sl/Base64XMLContentType.java
new file mode 100644
index 00000000..dd0055a6
--- /dev/null
+++ b/pdf-as-lib/src/main/java/at/gv/egiz/sl/Base64XMLContentType.java
@@ -0,0 +1,99 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.4-2 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2013.11.05 at 04:21:33 PM CET 
+//
+
+
+package at.gv.egiz.sl;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlSeeAlso;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for Base64XMLContentType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="Base64XMLContentType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;choice minOccurs="0">
+ *         &lt;element name="Base64Content" type="{http://www.w3.org/2001/XMLSchema}base64Binary"/>
+ *         &lt;element name="XMLContent" type="{http://www.buergerkarte.at/namespaces/securitylayer/1.2#}XMLContentType"/>
+ *       &lt;/choice>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "Base64XMLContentType", propOrder = {
+    "base64Content",
+    "xmlContent"
+})
+@XmlSeeAlso({
+    InfoboxAssocArrayPairType.class
+})
+public class Base64XMLContentType {
+
+    @XmlElement(name = "Base64Content")
+    protected byte[] base64Content;
+    @XmlElement(name = "XMLContent")
+    protected XMLContentType xmlContent;
+
+    /**
+     * Gets the value of the base64Content property.
+     * 
+     * @return
+     *     possible object is
+     *     byte[]
+     */
+    public byte[] getBase64Content() {
+        return base64Content;
+    }
+
+    /**
+     * Sets the value of the base64Content property.
+     * 
+     * @param value
+     *     allowed object is
+     *     byte[]
+     */
+    public void setBase64Content(byte[] value) {
+        this.base64Content = value;
+    }
+
+    /**
+     * Gets the value of the xmlContent property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link XMLContentType }
+     *     
+     */
+    public XMLContentType getXMLContent() {
+        return xmlContent;
+    }
+
+    /**
+     * Sets the value of the xmlContent property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link XMLContentType }
+     *     
+     */
+    public void setXMLContent(XMLContentType value) {
+        this.xmlContent = value;
+    }
+
+}
diff --git a/pdf-as-lib/src/main/java/at/gv/egiz/sl/BindingType.java b/pdf-as-lib/src/main/java/at/gv/egiz/sl/BindingType.java
new file mode 100644
index 00000000..55baaa94
--- /dev/null
+++ b/pdf-as-lib/src/main/java/at/gv/egiz/sl/BindingType.java
@@ -0,0 +1,72 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.4-2 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2013.11.05 at 12:58:46 PM CET 
+//
+
+
+package at.gv.egiz.sl;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+
+
+/**
+ * <p>Java class for BindingType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="BindingType">
+ *   &lt;complexContent>
+ *     &lt;extension base="{http://www.buergerkarte.at/namespaces/securitylayer/1.2#}AnyChildrenType">
+ *       &lt;attribute name="Identifier" use="required" type="{http://www.w3.org/2001/XMLSchema}token" />
+ *     &lt;/extension>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "BindingType")
+public class BindingType
+    extends AnyChildrenType
+{
+
+    @XmlAttribute(name = "Identifier", required = true)
+    @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+    @XmlSchemaType(name = "token")
+    protected String identifier;
+
+    /**
+     * Gets the value of the identifier property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getIdentifier() {
+        return identifier;
+    }
+
+    /**
+     * Sets the value of the identifier property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setIdentifier(String value) {
+        this.identifier = value;
+    }
+
+}
diff --git a/pdf-as-lib/src/main/java/at/gv/egiz/sl/CMSDataObjectOptionalMetaType.java b/pdf-as-lib/src/main/java/at/gv/egiz/sl/CMSDataObjectOptionalMetaType.java
new file mode 100644
index 00000000..36ae9398
--- /dev/null
+++ b/pdf-as-lib/src/main/java/at/gv/egiz/sl/CMSDataObjectOptionalMetaType.java
@@ -0,0 +1,129 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.4-2 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2013.11.05 at 04:21:33 PM CET 
+//
+
+
+package at.gv.egiz.sl;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlSeeAlso;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for CMSDataObjectOptionalMetaType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="CMSDataObjectOptionalMetaType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;sequence>
+ *         &lt;element name="MetaInfo" type="{http://www.buergerkarte.at/namespaces/securitylayer/1.2#}MetaInfoType" minOccurs="0"/>
+ *         &lt;element name="Content" type="{http://www.buergerkarte.at/namespaces/securitylayer/1.2#}Base64OptRefContentType"/>
+ *         &lt;element name="ExcludedByteRange" type="{http://www.buergerkarte.at/namespaces/securitylayer/1.2#}ExcludedByteRangeType" minOccurs="0"/>
+ *       &lt;/sequence>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "CMSDataObjectOptionalMetaType", propOrder = {
+    "metaInfo",
+    "content",
+    "excludedByteRange"
+})
+@XmlSeeAlso({
+    CMSDataObjectRequiredMetaType.class
+})
+public class CMSDataObjectOptionalMetaType {
+
+    @XmlElement(name = "MetaInfo")
+    protected MetaInfoType metaInfo;
+    @XmlElement(name = "Content", required = true)
+    protected Base64OptRefContentType content;
+    @XmlElement(name = "ExcludedByteRange")
+    protected ExcludedByteRangeType excludedByteRange;
+
+    /**
+     * Gets the value of the metaInfo property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link MetaInfoType }
+     *     
+     */
+    public MetaInfoType getMetaInfo() {
+        return metaInfo;
+    }
+
+    /**
+     * Sets the value of the metaInfo property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link MetaInfoType }
+     *     
+     */
+    public void setMetaInfo(MetaInfoType value) {
+        this.metaInfo = value;
+    }
+
+    /**
+     * Gets the value of the content property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link Base64OptRefContentType }
+     *     
+     */
+    public Base64OptRefContentType getContent() {
+        return content;
+    }
+
+    /**
+     * Sets the value of the content property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link Base64OptRefContentType }
+     *     
+     */
+    public void setContent(Base64OptRefContentType value) {
+        this.content = value;
+    }
+
+    /**
+     * Gets the value of the excludedByteRange property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link ExcludedByteRangeType }
+     *     
+     */
+    public ExcludedByteRangeType getExcludedByteRange() {
+        return excludedByteRange;
+    }
+
+    /**
+     * Sets the value of the excludedByteRange property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link ExcludedByteRangeType }
+     *     
+     */
+    public void setExcludedByteRange(ExcludedByteRangeType value) {
+        this.excludedByteRange = value;
+    }
+
+}
diff --git a/pdf-as-lib/src/main/java/at/gv/egiz/sl/CMSDataObjectRequiredMetaType.java b/pdf-as-lib/src/main/java/at/gv/egiz/sl/CMSDataObjectRequiredMetaType.java
new file mode 100644
index 00000000..87440ef3
--- /dev/null
+++ b/pdf-as-lib/src/main/java/at/gv/egiz/sl/CMSDataObjectRequiredMetaType.java
@@ -0,0 +1,44 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.4-2 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2013.11.05 at 04:21:33 PM CET 
+//
+
+
+package at.gv.egiz.sl;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for CMSDataObjectRequiredMetaType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="CMSDataObjectRequiredMetaType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.buergerkarte.at/namespaces/securitylayer/1.2#}CMSDataObjectOptionalMetaType">
+ *       &lt;sequence>
+ *         &lt;element name="MetaInfo" type="{http://www.buergerkarte.at/namespaces/securitylayer/1.2#}MetaInfoType"/>
+ *         &lt;element name="Content" type="{http://www.buergerkarte.at/namespaces/securitylayer/1.2#}Base64OptRefContentType"/>
+ *         &lt;element name="ExcludedByteRange" type="{http://www.buergerkarte.at/namespaces/securitylayer/1.2#}ExcludedByteRangeType" minOccurs="0"/>
+ *       &lt;/sequence>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "CMSDataObjectRequiredMetaType")
+public class CMSDataObjectRequiredMetaType
+    extends CMSDataObjectOptionalMetaType
+{
+
+
+}
diff --git a/pdf-as-lib/src/main/java/at/gv/egiz/sl/CreateCMSSignatureRequestType.java b/pdf-as-lib/src/main/java/at/gv/egiz/sl/CreateCMSSignatureRequestType.java
new file mode 100644
index 00000000..8d5599e6
--- /dev/null
+++ b/pdf-as-lib/src/main/java/at/gv/egiz/sl/CreateCMSSignatureRequestType.java
@@ -0,0 +1,137 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.4-2 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2013.11.05 at 04:21:33 PM CET 
+//
+
+
+package at.gv.egiz.sl;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+
+
+/**
+ * <p>Java class for CreateCMSSignatureRequestType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="CreateCMSSignatureRequestType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;sequence>
+ *         &lt;element name="KeyboxIdentifier" type="{http://www.buergerkarte.at/namespaces/securitylayer/1.2#}BoxIdentifierType"/>
+ *         &lt;element name="DataObject" type="{http://www.buergerkarte.at/namespaces/securitylayer/1.2#}CMSDataObjectRequiredMetaType"/>
+ *       &lt;/sequence>
+ *       &lt;attribute name="Structure" use="required">
+ *         &lt;simpleType>
+ *           &lt;restriction base="{http://www.w3.org/2001/XMLSchema}string">
+ *             &lt;enumeration value="detached"/>
+ *             &lt;enumeration value="enveloping"/>
+ *           &lt;/restriction>
+ *         &lt;/simpleType>
+ *       &lt;/attribute>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "CreateCMSSignatureRequestType", propOrder = {
+    "keyboxIdentifier",
+    "dataObject"
+})
+@XmlRootElement
+public class CreateCMSSignatureRequestType {
+
+    @XmlElement(name = "KeyboxIdentifier", required = true)
+    @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+    protected String keyboxIdentifier;
+    @XmlElement(name = "DataObject", required = true)
+    protected CMSDataObjectRequiredMetaType dataObject;
+    @XmlAttribute(name = "Structure", required = true)
+    protected String structure;
+
+    /**
+     * Gets the value of the keyboxIdentifier property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getKeyboxIdentifier() {
+        return keyboxIdentifier;
+    }
+
+    /**
+     * Sets the value of the keyboxIdentifier property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setKeyboxIdentifier(String value) {
+        this.keyboxIdentifier = value;
+    }
+
+    /**
+     * Gets the value of the dataObject property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link CMSDataObjectRequiredMetaType }
+     *     
+     */
+    public CMSDataObjectRequiredMetaType getDataObject() {
+        return dataObject;
+    }
+
+    /**
+     * Sets the value of the dataObject property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link CMSDataObjectRequiredMetaType }
+     *     
+     */
+    public void setDataObject(CMSDataObjectRequiredMetaType value) {
+        this.dataObject = value;
+    }
+
+    /**
+     * Gets the value of the structure property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getStructure() {
+        return structure;
+    }
+
+    /**
+     * Sets the value of the structure property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setStructure(String value) {
+        this.structure = value;
+    }
+
+}
diff --git a/pdf-as-lib/src/main/java/at/gv/egiz/sl/CreateCMSSignatureResponseType.java b/pdf-as-lib/src/main/java/at/gv/egiz/sl/CreateCMSSignatureResponseType.java
new file mode 100644
index 00000000..d5a68de8
--- /dev/null
+++ b/pdf-as-lib/src/main/java/at/gv/egiz/sl/CreateCMSSignatureResponseType.java
@@ -0,0 +1,67 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.4-2 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2013.11.05 at 04:21:33 PM CET 
+//
+
+
+package at.gv.egiz.sl;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for CreateCMSSignatureResponseType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="CreateCMSSignatureResponseType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;sequence>
+ *         &lt;element name="CMSSignature" type="{http://www.w3.org/2001/XMLSchema}base64Binary"/>
+ *       &lt;/sequence>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "CreateCMSSignatureResponseType", propOrder = {
+    "cmsSignature"
+})
+public class CreateCMSSignatureResponseType {
+
+    @XmlElement(name = "CMSSignature", required = true)
+    protected byte[] cmsSignature;
+
+    /**
+     * Gets the value of the cmsSignature property.
+     * 
+     * @return
+     *     possible object is
+     *     byte[]
+     */
+    public byte[] getCMSSignature() {
+        return cmsSignature;
+    }
+
+    /**
+     * Sets the value of the cmsSignature property.
+     * 
+     * @param value
+     *     allowed object is
+     *     byte[]
+     */
+    public void setCMSSignature(byte[] value) {
+        this.cmsSignature = value;
+    }
+
+}
diff --git a/pdf-as-lib/src/main/java/at/gv/egiz/sl/ErrorResponseType.java b/pdf-as-lib/src/main/java/at/gv/egiz/sl/ErrorResponseType.java
new file mode 100644
index 00000000..2a30b430
--- /dev/null
+++ b/pdf-as-lib/src/main/java/at/gv/egiz/sl/ErrorResponseType.java
@@ -0,0 +1,89 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.4-2 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2013.11.05 at 04:21:33 PM CET 
+//
+
+
+package at.gv.egiz.sl;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for ErrorResponseType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="ErrorResponseType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;sequence>
+ *         &lt;element name="ErrorCode" type="{http://www.buergerkarte.at/namespaces/securitylayer/1.2#}ErrorCodeType"/>
+ *         &lt;element name="Info" type="{http://www.w3.org/2001/XMLSchema}string"/>
+ *       &lt;/sequence>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "ErrorResponseType", propOrder = {
+    "errorCode",
+    "info"
+})
+public class ErrorResponseType {
+
+    @XmlElement(name = "ErrorCode")
+    protected int errorCode;
+    @XmlElement(name = "Info", required = true)
+    protected String info;
+
+    /**
+     * Gets the value of the errorCode property.
+     * 
+     */
+    public int getErrorCode() {
+        return errorCode;
+    }
+
+    /**
+     * Sets the value of the errorCode property.
+     * 
+     */
+    public void setErrorCode(int value) {
+        this.errorCode = value;
+    }
+
+    /**
+     * Gets the value of the info property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getInfo() {
+        return info;
+    }
+
+    /**
+     * Sets the value of the info property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setInfo(String value) {
+        this.info = value;
+    }
+
+}
diff --git a/pdf-as-lib/src/main/java/at/gv/egiz/sl/ExcludedByteRangeType.java b/pdf-as-lib/src/main/java/at/gv/egiz/sl/ExcludedByteRangeType.java
new file mode 100644
index 00000000..bc1bc303
--- /dev/null
+++ b/pdf-as-lib/src/main/java/at/gv/egiz/sl/ExcludedByteRangeType.java
@@ -0,0 +1,101 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.4-2 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2013.11.05 at 04:21:33 PM CET 
+//
+
+
+package at.gv.egiz.sl;
+
+import java.math.BigInteger;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for ExcludedByteRangeType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="ExcludedByteRangeType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;sequence>
+ *         &lt;element name="From" type="{http://www.w3.org/2001/XMLSchema}unsignedLong"/>
+ *         &lt;element name="To" type="{http://www.w3.org/2001/XMLSchema}unsignedLong"/>
+ *       &lt;/sequence>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "ExcludedByteRangeType", propOrder = {
+    "from",
+    "to"
+})
+public class ExcludedByteRangeType {
+
+    @XmlElement(name = "From", required = true)
+    @XmlSchemaType(name = "unsignedLong")
+    protected BigInteger from;
+    @XmlElement(name = "To", required = true)
+    @XmlSchemaType(name = "unsignedLong")
+    protected BigInteger to;
+
+    /**
+     * Gets the value of the from property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link BigInteger }
+     *     
+     */
+    public BigInteger getFrom() {
+        return from;
+    }
+
+    /**
+     * Sets the value of the from property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link BigInteger }
+     *     
+     */
+    public void setFrom(BigInteger value) {
+        this.from = value;
+    }
+
+    /**
+     * Gets the value of the to property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link BigInteger }
+     *     
+     */
+    public BigInteger getTo() {
+        return to;
+    }
+
+    /**
+     * Sets the value of the to property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link BigInteger }
+     *     
+     */
+    public void setTo(BigInteger value) {
+        this.to = value;
+    }
+
+}
diff --git a/pdf-as-lib/src/main/java/at/gv/egiz/sl/GetPropertiesRequest.java b/pdf-as-lib/src/main/java/at/gv/egiz/sl/GetPropertiesRequest.java
new file mode 100644
index 00000000..448a45d5
--- /dev/null
+++ b/pdf-as-lib/src/main/java/at/gv/egiz/sl/GetPropertiesRequest.java
@@ -0,0 +1,41 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.4-2 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2013.11.05 at 12:58:46 PM CET 
+//
+
+
+package at.gv.egiz.sl;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for anonymous complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType>
+ *   &lt;complexContent>
+ *     &lt;extension base="{http://www.buergerkarte.at/namespaces/securitylayer/1.2#}GetPropertiesRequestType">
+ *     &lt;/extension>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "")
+@XmlRootElement(name = "GetPropertiesRequest")
+public class GetPropertiesRequest
+    extends GetPropertiesRequestType
+{
+
+
+}
diff --git a/pdf-as-lib/src/main/java/at/gv/egiz/sl/GetPropertiesRequestType.java b/pdf-as-lib/src/main/java/at/gv/egiz/sl/GetPropertiesRequestType.java
new file mode 100644
index 00000000..5a455ab0
--- /dev/null
+++ b/pdf-as-lib/src/main/java/at/gv/egiz/sl/GetPropertiesRequestType.java
@@ -0,0 +1,41 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.4-2 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2013.11.05 at 12:58:46 PM CET 
+//
+
+
+package at.gv.egiz.sl;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlSeeAlso;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for GetPropertiesRequestType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="GetPropertiesRequestType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "GetPropertiesRequestType")
+@XmlSeeAlso({
+    GetPropertiesRequest.class
+})
+public class GetPropertiesRequestType {
+
+
+}
diff --git a/pdf-as-lib/src/main/java/at/gv/egiz/sl/GetPropertiesResponseType.java b/pdf-as-lib/src/main/java/at/gv/egiz/sl/GetPropertiesResponseType.java
new file mode 100644
index 00000000..4fa8a9c4
--- /dev/null
+++ b/pdf-as-lib/src/main/java/at/gv/egiz/sl/GetPropertiesResponseType.java
@@ -0,0 +1,249 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.4-2 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2013.11.05 at 12:58:46 PM CET 
+//
+
+
+package at.gv.egiz.sl;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAnyElement;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+
+
+/**
+ * <p>Java class for GetPropertiesResponseType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="GetPropertiesResponseType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;sequence>
+ *         &lt;element name="ViewerMediaType" type="{http://www.buergerkarte.at/namespaces/securitylayer/1.2#}MimeTypeType" maxOccurs="unbounded"/>
+ *         &lt;element name="XMLSignatureTransform" type="{http://www.w3.org/2001/XMLSchema}anyURI" maxOccurs="unbounded"/>
+ *         &lt;element name="KeyboxIdentifier" type="{http://www.buergerkarte.at/namespaces/securitylayer/1.2#}QualifiedBoxIdentifierType" maxOccurs="unbounded" minOccurs="0"/>
+ *         &lt;element name="Binding" type="{http://www.buergerkarte.at/namespaces/securitylayer/1.2#}BindingType" maxOccurs="unbounded"/>
+ *         &lt;element name="ProtocolVersion" type="{http://www.w3.org/2001/XMLSchema}token" maxOccurs="unbounded"/>
+ *         &lt;any namespace='##other' maxOccurs="unbounded" minOccurs="0"/>
+ *       &lt;/sequence>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "GetPropertiesResponseType", propOrder = {
+    "viewerMediaType",
+    "xmlSignatureTransform",
+    "keyboxIdentifier",
+    "binding",
+    "protocolVersion",
+    "any"
+})
+public class GetPropertiesResponseType {
+
+    @XmlElement(name = "ViewerMediaType", required = true)
+    @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+    protected List<String> viewerMediaType;
+    @XmlElement(name = "XMLSignatureTransform", required = true)
+    @XmlSchemaType(name = "anyURI")
+    protected List<String> xmlSignatureTransform;
+    @XmlElement(name = "KeyboxIdentifier")
+    protected List<QualifiedBoxIdentifierType> keyboxIdentifier;
+    @XmlElement(name = "Binding", required = true)
+    protected List<BindingType> binding;
+    @XmlElement(name = "ProtocolVersion", required = true)
+    @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+    @XmlSchemaType(name = "token")
+    protected List<String> protocolVersion;
+    @XmlAnyElement(lax = true)
+    protected List<Object> any;
+
+    /**
+     * Gets the value of the viewerMediaType property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the viewerMediaType property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getViewerMediaType().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link String }
+     * 
+     * 
+     */
+    public List<String> getViewerMediaType() {
+        if (viewerMediaType == null) {
+            viewerMediaType = new ArrayList<String>();
+        }
+        return this.viewerMediaType;
+    }
+
+    /**
+     * Gets the value of the xmlSignatureTransform property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the xmlSignatureTransform property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getXMLSignatureTransform().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link String }
+     * 
+     * 
+     */
+    public List<String> getXMLSignatureTransform() {
+        if (xmlSignatureTransform == null) {
+            xmlSignatureTransform = new ArrayList<String>();
+        }
+        return this.xmlSignatureTransform;
+    }
+
+    /**
+     * Gets the value of the keyboxIdentifier property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the keyboxIdentifier property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getKeyboxIdentifier().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link QualifiedBoxIdentifierType }
+     * 
+     * 
+     */
+    public List<QualifiedBoxIdentifierType> getKeyboxIdentifier() {
+        if (keyboxIdentifier == null) {
+            keyboxIdentifier = new ArrayList<QualifiedBoxIdentifierType>();
+        }
+        return this.keyboxIdentifier;
+    }
+
+    /**
+     * Gets the value of the binding property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the binding property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getBinding().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link BindingType }
+     * 
+     * 
+     */
+    public List<BindingType> getBinding() {
+        if (binding == null) {
+            binding = new ArrayList<BindingType>();
+        }
+        return this.binding;
+    }
+
+    /**
+     * Gets the value of the protocolVersion property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the protocolVersion property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getProtocolVersion().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link String }
+     * 
+     * 
+     */
+    public List<String> getProtocolVersion() {
+        if (protocolVersion == null) {
+            protocolVersion = new ArrayList<String>();
+        }
+        return this.protocolVersion;
+    }
+
+    /**
+     * Gets the value of the any property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the any property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getAny().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link Object }
+     * 
+     * 
+     */
+    public List<Object> getAny() {
+        if (any == null) {
+            any = new ArrayList<Object>();
+        }
+        return this.any;
+    }
+
+}
diff --git a/pdf-as-lib/src/main/java/at/gv/egiz/sl/GetStatusRequestType.java b/pdf-as-lib/src/main/java/at/gv/egiz/sl/GetStatusRequestType.java
new file mode 100644
index 00000000..78a6d941
--- /dev/null
+++ b/pdf-as-lib/src/main/java/at/gv/egiz/sl/GetStatusRequestType.java
@@ -0,0 +1,100 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.4-2 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2013.11.05 at 04:21:33 PM CET 
+//
+
+
+package at.gv.egiz.sl;
+
+import java.math.BigInteger;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for GetStatusRequestType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="GetStatusRequestType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;sequence minOccurs="0">
+ *         &lt;element name="TokenStatus" type="{http://www.buergerkarte.at/namespaces/securitylayer/1.2#}TokenStatusType"/>
+ *         &lt;element name="MaxDelay" type="{http://www.w3.org/2001/XMLSchema}nonNegativeInteger"/>
+ *       &lt;/sequence>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "GetStatusRequestType", propOrder = {
+    "tokenStatus",
+    "maxDelay"
+})
+public class GetStatusRequestType {
+
+    @XmlElement(name = "TokenStatus")
+    protected TokenStatusType tokenStatus;
+    @XmlElement(name = "MaxDelay")
+    @XmlSchemaType(name = "nonNegativeInteger")
+    protected BigInteger maxDelay;
+
+    /**
+     * Gets the value of the tokenStatus property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link TokenStatusType }
+     *     
+     */
+    public TokenStatusType getTokenStatus() {
+        return tokenStatus;
+    }
+
+    /**
+     * Sets the value of the tokenStatus property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link TokenStatusType }
+     *     
+     */
+    public void setTokenStatus(TokenStatusType value) {
+        this.tokenStatus = value;
+    }
+
+    /**
+     * Gets the value of the maxDelay property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link BigInteger }
+     *     
+     */
+    public BigInteger getMaxDelay() {
+        return maxDelay;
+    }
+
+    /**
+     * Sets the value of the maxDelay property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link BigInteger }
+     *     
+     */
+    public void setMaxDelay(BigInteger value) {
+        this.maxDelay = value;
+    }
+
+}
diff --git a/pdf-as-lib/src/main/java/at/gv/egiz/sl/GetStatusResponseType.java b/pdf-as-lib/src/main/java/at/gv/egiz/sl/GetStatusResponseType.java
new file mode 100644
index 00000000..5c4fa9e4
--- /dev/null
+++ b/pdf-as-lib/src/main/java/at/gv/egiz/sl/GetStatusResponseType.java
@@ -0,0 +1,69 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.4-2 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2013.11.05 at 04:21:33 PM CET 
+//
+
+
+package at.gv.egiz.sl;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for GetStatusResponseType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="GetStatusResponseType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;sequence>
+ *         &lt;element name="TokenStatus" type="{http://www.buergerkarte.at/namespaces/securitylayer/1.2#}TokenStatusType"/>
+ *       &lt;/sequence>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "GetStatusResponseType", propOrder = {
+    "tokenStatus"
+})
+public class GetStatusResponseType {
+
+    @XmlElement(name = "TokenStatus", required = true)
+    protected TokenStatusType tokenStatus;
+
+    /**
+     * Gets the value of the tokenStatus property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link TokenStatusType }
+     *     
+     */
+    public TokenStatusType getTokenStatus() {
+        return tokenStatus;
+    }
+
+    /**
+     * Sets the value of the tokenStatus property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link TokenStatusType }
+     *     
+     */
+    public void setTokenStatus(TokenStatusType value) {
+        this.tokenStatus = value;
+    }
+
+}
diff --git a/pdf-as-lib/src/main/java/at/gv/egiz/sl/InfoboxAssocArrayPairType.java b/pdf-as-lib/src/main/java/at/gv/egiz/sl/InfoboxAssocArrayPairType.java
new file mode 100644
index 00000000..4745f0df
--- /dev/null
+++ b/pdf-as-lib/src/main/java/at/gv/egiz/sl/InfoboxAssocArrayPairType.java
@@ -0,0 +1,67 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.4-2 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2013.11.05 at 04:21:33 PM CET 
+//
+
+
+package at.gv.egiz.sl;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for InfoboxAssocArrayPairType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="InfoboxAssocArrayPairType">
+ *   &lt;complexContent>
+ *     &lt;extension base="{http://www.buergerkarte.at/namespaces/securitylayer/1.2#}Base64XMLContentType">
+ *       &lt;attribute name="Key" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *     &lt;/extension>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "InfoboxAssocArrayPairType")
+public class InfoboxAssocArrayPairType
+    extends Base64XMLContentType
+{
+
+    @XmlAttribute(name = "Key", required = true)
+    protected String key;
+
+    /**
+     * Gets the value of the key property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getKey() {
+        return key;
+    }
+
+    /**
+     * Sets the value of the key property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setKey(String value) {
+        this.key = value;
+    }
+
+}
diff --git a/pdf-as-lib/src/main/java/at/gv/egiz/sl/InfoboxReadDataAssocArrayType.java b/pdf-as-lib/src/main/java/at/gv/egiz/sl/InfoboxReadDataAssocArrayType.java
new file mode 100644
index 00000000..489c9656
--- /dev/null
+++ b/pdf-as-lib/src/main/java/at/gv/egiz/sl/InfoboxReadDataAssocArrayType.java
@@ -0,0 +1,116 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.4-2 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2013.11.05 at 04:21:33 PM CET 
+//
+
+
+package at.gv.egiz.sl;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+
+
+/**
+ * <p>Java class for InfoboxReadDataAssocArrayType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="InfoboxReadDataAssocArrayType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;choice>
+ *         &lt;sequence maxOccurs="unbounded" minOccurs="0">
+ *           &lt;element name="Key" type="{http://www.buergerkarte.at/namespaces/securitylayer/1.2#}BoxIdentifierType"/>
+ *         &lt;/sequence>
+ *         &lt;sequence maxOccurs="unbounded" minOccurs="0">
+ *           &lt;element name="Pair" type="{http://www.buergerkarte.at/namespaces/securitylayer/1.2#}InfoboxAssocArrayPairType"/>
+ *         &lt;/sequence>
+ *       &lt;/choice>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "InfoboxReadDataAssocArrayType", propOrder = {
+    "key",
+    "pair"
+})
+public class InfoboxReadDataAssocArrayType {
+
+    @XmlElement(name = "Key")
+    @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+    protected List<String> key;
+    @XmlElement(name = "Pair")
+    protected List<InfoboxAssocArrayPairType> pair;
+
+    /**
+     * Gets the value of the key property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the key property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getKey().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link String }
+     * 
+     * 
+     */
+    public List<String> getKey() {
+        if (key == null) {
+            key = new ArrayList<String>();
+        }
+        return this.key;
+    }
+
+    /**
+     * Gets the value of the pair property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the pair property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getPair().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link InfoboxAssocArrayPairType }
+     * 
+     * 
+     */
+    public List<InfoboxAssocArrayPairType> getPair() {
+        if (pair == null) {
+            pair = new ArrayList<InfoboxAssocArrayPairType>();
+        }
+        return this.pair;
+    }
+
+}
diff --git a/pdf-as-lib/src/main/java/at/gv/egiz/sl/InfoboxReadParamsAssocArrayType.java b/pdf-as-lib/src/main/java/at/gv/egiz/sl/InfoboxReadParamsAssocArrayType.java
new file mode 100644
index 00000000..fd238971
--- /dev/null
+++ b/pdf-as-lib/src/main/java/at/gv/egiz/sl/InfoboxReadParamsAssocArrayType.java
@@ -0,0 +1,434 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.4-2 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2013.11.05 at 04:21:33 PM CET 
+//
+
+
+package at.gv.egiz.sl;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+
+
+/**
+ * <p>Java class for InfoboxReadParamsAssocArrayType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="InfoboxReadParamsAssocArrayType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;choice>
+ *         &lt;element name="ReadKeys">
+ *           &lt;complexType>
+ *             &lt;complexContent>
+ *               &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *                 &lt;attribute name="SearchString" use="required" type="{http://www.buergerkarte.at/namespaces/securitylayer/1.2#}WildCardSearchStringType" />
+ *                 &lt;attribute name="UserMakesUnique" type="{http://www.w3.org/2001/XMLSchema}boolean" default="false" />
+ *               &lt;/restriction>
+ *             &lt;/complexContent>
+ *           &lt;/complexType>
+ *         &lt;/element>
+ *         &lt;element name="ReadPairs">
+ *           &lt;complexType>
+ *             &lt;complexContent>
+ *               &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *                 &lt;attribute name="SearchString" use="required" type="{http://www.buergerkarte.at/namespaces/securitylayer/1.2#}WildCardSearchStringType" />
+ *                 &lt;attribute name="UserMakesUnique" type="{http://www.w3.org/2001/XMLSchema}boolean" default="false" />
+ *                 &lt;attribute name="ValuesAreXMLEntities" type="{http://www.w3.org/2001/XMLSchema}boolean" default="false" />
+ *               &lt;/restriction>
+ *             &lt;/complexContent>
+ *           &lt;/complexType>
+ *         &lt;/element>
+ *         &lt;element name="ReadValue">
+ *           &lt;complexType>
+ *             &lt;complexContent>
+ *               &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *                 &lt;attribute name="Key" use="required" type="{http://www.buergerkarte.at/namespaces/securitylayer/1.2#}BoxIdentifierType" />
+ *                 &lt;attribute name="ValueIsXMLEntity" type="{http://www.w3.org/2001/XMLSchema}boolean" default="false" />
+ *               &lt;/restriction>
+ *             &lt;/complexContent>
+ *           &lt;/complexType>
+ *         &lt;/element>
+ *       &lt;/choice>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "InfoboxReadParamsAssocArrayType", propOrder = {
+    "readKeys",
+    "readPairs",
+    "readValue"
+})
+public class InfoboxReadParamsAssocArrayType {
+
+    @XmlElement(name = "ReadKeys")
+    protected InfoboxReadParamsAssocArrayType.ReadKeys readKeys;
+    @XmlElement(name = "ReadPairs")
+    protected InfoboxReadParamsAssocArrayType.ReadPairs readPairs;
+    @XmlElement(name = "ReadValue")
+    protected InfoboxReadParamsAssocArrayType.ReadValue readValue;
+
+    /**
+     * Gets the value of the readKeys property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link InfoboxReadParamsAssocArrayType.ReadKeys }
+     *     
+     */
+    public InfoboxReadParamsAssocArrayType.ReadKeys getReadKeys() {
+        return readKeys;
+    }
+
+    /**
+     * Sets the value of the readKeys property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link InfoboxReadParamsAssocArrayType.ReadKeys }
+     *     
+     */
+    public void setReadKeys(InfoboxReadParamsAssocArrayType.ReadKeys value) {
+        this.readKeys = value;
+    }
+
+    /**
+     * Gets the value of the readPairs property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link InfoboxReadParamsAssocArrayType.ReadPairs }
+     *     
+     */
+    public InfoboxReadParamsAssocArrayType.ReadPairs getReadPairs() {
+        return readPairs;
+    }
+
+    /**
+     * Sets the value of the readPairs property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link InfoboxReadParamsAssocArrayType.ReadPairs }
+     *     
+     */
+    public void setReadPairs(InfoboxReadParamsAssocArrayType.ReadPairs value) {
+        this.readPairs = value;
+    }
+
+    /**
+     * Gets the value of the readValue property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link InfoboxReadParamsAssocArrayType.ReadValue }
+     *     
+     */
+    public InfoboxReadParamsAssocArrayType.ReadValue getReadValue() {
+        return readValue;
+    }
+
+    /**
+     * Sets the value of the readValue property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link InfoboxReadParamsAssocArrayType.ReadValue }
+     *     
+     */
+    public void setReadValue(InfoboxReadParamsAssocArrayType.ReadValue value) {
+        this.readValue = value;
+    }
+
+
+    /**
+     * <p>Java class for anonymous complex type.
+     * 
+     * <p>The following schema fragment specifies the expected content contained within this class.
+     * 
+     * <pre>
+     * &lt;complexType>
+     *   &lt;complexContent>
+     *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+     *       &lt;attribute name="SearchString" use="required" type="{http://www.buergerkarte.at/namespaces/securitylayer/1.2#}WildCardSearchStringType" />
+     *       &lt;attribute name="UserMakesUnique" type="{http://www.w3.org/2001/XMLSchema}boolean" default="false" />
+     *     &lt;/restriction>
+     *   &lt;/complexContent>
+     * &lt;/complexType>
+     * </pre>
+     * 
+     * 
+     */
+    @XmlAccessorType(XmlAccessType.FIELD)
+    @XmlType(name = "")
+    public static class ReadKeys {
+
+        @XmlAttribute(name = "SearchString", required = true)
+        protected String searchString;
+        @XmlAttribute(name = "UserMakesUnique")
+        protected Boolean userMakesUnique;
+
+        /**
+         * Gets the value of the searchString property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link String }
+         *     
+         */
+        public String getSearchString() {
+            return searchString;
+        }
+
+        /**
+         * Sets the value of the searchString property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link String }
+         *     
+         */
+        public void setSearchString(String value) {
+            this.searchString = value;
+        }
+
+        /**
+         * Gets the value of the userMakesUnique property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link Boolean }
+         *     
+         */
+        public boolean isUserMakesUnique() {
+            if (userMakesUnique == null) {
+                return false;
+            } else {
+                return userMakesUnique;
+            }
+        }
+
+        /**
+         * Sets the value of the userMakesUnique property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link Boolean }
+         *     
+         */
+        public void setUserMakesUnique(Boolean value) {
+            this.userMakesUnique = value;
+        }
+
+    }
+
+
+    /**
+     * <p>Java class for anonymous complex type.
+     * 
+     * <p>The following schema fragment specifies the expected content contained within this class.
+     * 
+     * <pre>
+     * &lt;complexType>
+     *   &lt;complexContent>
+     *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+     *       &lt;attribute name="SearchString" use="required" type="{http://www.buergerkarte.at/namespaces/securitylayer/1.2#}WildCardSearchStringType" />
+     *       &lt;attribute name="UserMakesUnique" type="{http://www.w3.org/2001/XMLSchema}boolean" default="false" />
+     *       &lt;attribute name="ValuesAreXMLEntities" type="{http://www.w3.org/2001/XMLSchema}boolean" default="false" />
+     *     &lt;/restriction>
+     *   &lt;/complexContent>
+     * &lt;/complexType>
+     * </pre>
+     * 
+     * 
+     */
+    @XmlAccessorType(XmlAccessType.FIELD)
+    @XmlType(name = "")
+    public static class ReadPairs {
+
+        @XmlAttribute(name = "SearchString", required = true)
+        protected String searchString;
+        @XmlAttribute(name = "UserMakesUnique")
+        protected Boolean userMakesUnique;
+        @XmlAttribute(name = "ValuesAreXMLEntities")
+        protected Boolean valuesAreXMLEntities;
+
+        /**
+         * Gets the value of the searchString property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link String }
+         *     
+         */
+        public String getSearchString() {
+            return searchString;
+        }
+
+        /**
+         * Sets the value of the searchString property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link String }
+         *     
+         */
+        public void setSearchString(String value) {
+            this.searchString = value;
+        }
+
+        /**
+         * Gets the value of the userMakesUnique property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link Boolean }
+         *     
+         */
+        public boolean isUserMakesUnique() {
+            if (userMakesUnique == null) {
+                return false;
+            } else {
+                return userMakesUnique;
+            }
+        }
+
+        /**
+         * Sets the value of the userMakesUnique property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link Boolean }
+         *     
+         */
+        public void setUserMakesUnique(Boolean value) {
+            this.userMakesUnique = value;
+        }
+
+        /**
+         * Gets the value of the valuesAreXMLEntities property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link Boolean }
+         *     
+         */
+        public boolean isValuesAreXMLEntities() {
+            if (valuesAreXMLEntities == null) {
+                return false;
+            } else {
+                return valuesAreXMLEntities;
+            }
+        }
+
+        /**
+         * Sets the value of the valuesAreXMLEntities property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link Boolean }
+         *     
+         */
+        public void setValuesAreXMLEntities(Boolean value) {
+            this.valuesAreXMLEntities = value;
+        }
+
+    }
+
+
+    /**
+     * <p>Java class for anonymous complex type.
+     * 
+     * <p>The following schema fragment specifies the expected content contained within this class.
+     * 
+     * <pre>
+     * &lt;complexType>
+     *   &lt;complexContent>
+     *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+     *       &lt;attribute name="Key" use="required" type="{http://www.buergerkarte.at/namespaces/securitylayer/1.2#}BoxIdentifierType" />
+     *       &lt;attribute name="ValueIsXMLEntity" type="{http://www.w3.org/2001/XMLSchema}boolean" default="false" />
+     *     &lt;/restriction>
+     *   &lt;/complexContent>
+     * &lt;/complexType>
+     * </pre>
+     * 
+     * 
+     */
+    @XmlAccessorType(XmlAccessType.FIELD)
+    @XmlType(name = "")
+    public static class ReadValue {
+
+        @XmlAttribute(name = "Key", required = true)
+        @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+        protected String key;
+        @XmlAttribute(name = "ValueIsXMLEntity")
+        protected Boolean valueIsXMLEntity;
+
+        /**
+         * Gets the value of the key property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link String }
+         *     
+         */
+        public String getKey() {
+            return key;
+        }
+
+        /**
+         * Sets the value of the key property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link String }
+         *     
+         */
+        public void setKey(String value) {
+            this.key = value;
+        }
+
+        /**
+         * Gets the value of the valueIsXMLEntity property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link Boolean }
+         *     
+         */
+        public boolean isValueIsXMLEntity() {
+            if (valueIsXMLEntity == null) {
+                return false;
+            } else {
+                return valueIsXMLEntity;
+            }
+        }
+
+        /**
+         * Sets the value of the valueIsXMLEntity property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link Boolean }
+         *     
+         */
+        public void setValueIsXMLEntity(Boolean value) {
+            this.valueIsXMLEntity = value;
+        }
+
+    }
+
+}
diff --git a/pdf-as-lib/src/main/java/at/gv/egiz/sl/InfoboxReadParamsBinaryFileType.java b/pdf-as-lib/src/main/java/at/gv/egiz/sl/InfoboxReadParamsBinaryFileType.java
new file mode 100644
index 00000000..18e25614
--- /dev/null
+++ b/pdf-as-lib/src/main/java/at/gv/egiz/sl/InfoboxReadParamsBinaryFileType.java
@@ -0,0 +1,69 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.4-2 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2013.11.05 at 04:21:33 PM CET 
+//
+
+
+package at.gv.egiz.sl;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for InfoboxReadParamsBinaryFileType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="InfoboxReadParamsBinaryFileType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;attribute name="ContentIsXMLEntity" type="{http://www.w3.org/2001/XMLSchema}boolean" default="false" />
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "InfoboxReadParamsBinaryFileType")
+public class InfoboxReadParamsBinaryFileType {
+
+    @XmlAttribute(name = "ContentIsXMLEntity")
+    protected Boolean contentIsXMLEntity;
+
+    /**
+     * Gets the value of the contentIsXMLEntity property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link Boolean }
+     *     
+     */
+    public boolean isContentIsXMLEntity() {
+        if (contentIsXMLEntity == null) {
+            return false;
+        } else {
+            return contentIsXMLEntity;
+        }
+    }
+
+    /**
+     * Sets the value of the contentIsXMLEntity property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link Boolean }
+     *     
+     */
+    public void setContentIsXMLEntity(Boolean value) {
+        this.contentIsXMLEntity = value;
+    }
+
+}
diff --git a/pdf-as-lib/src/main/java/at/gv/egiz/sl/InfoboxReadRequestType.java b/pdf-as-lib/src/main/java/at/gv/egiz/sl/InfoboxReadRequestType.java
new file mode 100644
index 00000000..b39dcb2f
--- /dev/null
+++ b/pdf-as-lib/src/main/java/at/gv/egiz/sl/InfoboxReadRequestType.java
@@ -0,0 +1,160 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.4-2 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2013.11.05 at 04:21:33 PM CET 
+//
+
+
+package at.gv.egiz.sl;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+
+
+/**
+ * <p>Java class for InfoboxReadRequestType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="InfoboxReadRequestType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;sequence>
+ *         &lt;element name="InfoboxIdentifier" type="{http://www.buergerkarte.at/namespaces/securitylayer/1.2#}BoxIdentifierType"/>
+ *         &lt;choice>
+ *           &lt;element name="BinaryFileParameters" type="{http://www.buergerkarte.at/namespaces/securitylayer/1.2#}InfoboxReadParamsBinaryFileType"/>
+ *           &lt;element name="AssocArrayParameters" type="{http://www.buergerkarte.at/namespaces/securitylayer/1.2#}InfoboxReadParamsAssocArrayType"/>
+ *         &lt;/choice>
+ *         &lt;element name="BoxSpecificParameters" type="{http://www.buergerkarte.at/namespaces/securitylayer/1.2#}AnyChildrenType" minOccurs="0"/>
+ *       &lt;/sequence>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "InfoboxReadRequestType", propOrder = {
+    "infoboxIdentifier",
+    "binaryFileParameters",
+    "assocArrayParameters",
+    "boxSpecificParameters"
+})
+@XmlRootElement
+public class InfoboxReadRequestType {
+
+    @XmlElement(name = "InfoboxIdentifier", required = true)
+    @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+    protected String infoboxIdentifier;
+    @XmlElement(name = "BinaryFileParameters")
+    protected InfoboxReadParamsBinaryFileType binaryFileParameters;
+    @XmlElement(name = "AssocArrayParameters")
+    protected InfoboxReadParamsAssocArrayType assocArrayParameters;
+    @XmlElement(name = "BoxSpecificParameters")
+    protected AnyChildrenType boxSpecificParameters;
+
+    /**
+     * Gets the value of the infoboxIdentifier property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getInfoboxIdentifier() {
+        return infoboxIdentifier;
+    }
+
+    /**
+     * Sets the value of the infoboxIdentifier property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setInfoboxIdentifier(String value) {
+        this.infoboxIdentifier = value;
+    }
+
+    /**
+     * Gets the value of the binaryFileParameters property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link InfoboxReadParamsBinaryFileType }
+     *     
+     */
+    public InfoboxReadParamsBinaryFileType getBinaryFileParameters() {
+        return binaryFileParameters;
+    }
+
+    /**
+     * Sets the value of the binaryFileParameters property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link InfoboxReadParamsBinaryFileType }
+     *     
+     */
+    public void setBinaryFileParameters(InfoboxReadParamsBinaryFileType value) {
+        this.binaryFileParameters = value;
+    }
+
+    /**
+     * Gets the value of the assocArrayParameters property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link InfoboxReadParamsAssocArrayType }
+     *     
+     */
+    public InfoboxReadParamsAssocArrayType getAssocArrayParameters() {
+        return assocArrayParameters;
+    }
+
+    /**
+     * Sets the value of the assocArrayParameters property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link InfoboxReadParamsAssocArrayType }
+     *     
+     */
+    public void setAssocArrayParameters(InfoboxReadParamsAssocArrayType value) {
+        this.assocArrayParameters = value;
+    }
+
+    /**
+     * Gets the value of the boxSpecificParameters property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link AnyChildrenType }
+     *     
+     */
+    public AnyChildrenType getBoxSpecificParameters() {
+        return boxSpecificParameters;
+    }
+
+    /**
+     * Sets the value of the boxSpecificParameters property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link AnyChildrenType }
+     *     
+     */
+    public void setBoxSpecificParameters(AnyChildrenType value) {
+        this.boxSpecificParameters = value;
+    }
+
+}
diff --git a/pdf-as-lib/src/main/java/at/gv/egiz/sl/InfoboxReadResponseType.java b/pdf-as-lib/src/main/java/at/gv/egiz/sl/InfoboxReadResponseType.java
new file mode 100644
index 00000000..fe8a6db4
--- /dev/null
+++ b/pdf-as-lib/src/main/java/at/gv/egiz/sl/InfoboxReadResponseType.java
@@ -0,0 +1,99 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.4-2 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2013.11.05 at 04:21:33 PM CET 
+//
+
+
+package at.gv.egiz.sl;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for InfoboxReadResponseType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="InfoboxReadResponseType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;choice>
+ *         &lt;element name="BinaryFileData" type="{http://www.buergerkarte.at/namespaces/securitylayer/1.2#}Base64XMLContentType"/>
+ *         &lt;element name="AssocArrayData" type="{http://www.buergerkarte.at/namespaces/securitylayer/1.2#}InfoboxReadDataAssocArrayType"/>
+ *       &lt;/choice>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "InfoboxReadResponseType", propOrder = {
+    "binaryFileData",
+    "assocArrayData"
+})
+@XmlRootElement
+public class InfoboxReadResponseType {
+
+    @XmlElement(name = "BinaryFileData")
+    protected Base64XMLContentType binaryFileData;
+    @XmlElement(name = "AssocArrayData")
+    protected InfoboxReadDataAssocArrayType assocArrayData;
+
+    /**
+     * Gets the value of the binaryFileData property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link Base64XMLContentType }
+     *     
+     */
+    public Base64XMLContentType getBinaryFileData() {
+        return binaryFileData;
+    }
+
+    /**
+     * Sets the value of the binaryFileData property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link Base64XMLContentType }
+     *     
+     */
+    public void setBinaryFileData(Base64XMLContentType value) {
+        this.binaryFileData = value;
+    }
+
+    /**
+     * Gets the value of the assocArrayData property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link InfoboxReadDataAssocArrayType }
+     *     
+     */
+    public InfoboxReadDataAssocArrayType getAssocArrayData() {
+        return assocArrayData;
+    }
+
+    /**
+     * Sets the value of the assocArrayData property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link InfoboxReadDataAssocArrayType }
+     *     
+     */
+    public void setAssocArrayData(InfoboxReadDataAssocArrayType value) {
+        this.assocArrayData = value;
+    }
+
+}
diff --git a/pdf-as-lib/src/main/java/at/gv/egiz/sl/MetaInfoType.java b/pdf-as-lib/src/main/java/at/gv/egiz/sl/MetaInfoType.java
new file mode 100644
index 00000000..72080288
--- /dev/null
+++ b/pdf-as-lib/src/main/java/at/gv/egiz/sl/MetaInfoType.java
@@ -0,0 +1,136 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.4-2 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2013.11.05 at 04:21:33 PM CET 
+//
+
+
+package at.gv.egiz.sl;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAnyElement;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+
+
+/**
+ * <p>Java class for MetaInfoType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="MetaInfoType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;sequence>
+ *         &lt;element name="MimeType" type="{http://www.buergerkarte.at/namespaces/securitylayer/1.2#}MimeTypeType"/>
+ *         &lt;element name="Description" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
+ *         &lt;any namespace='##other' maxOccurs="unbounded" minOccurs="0"/>
+ *       &lt;/sequence>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "MetaInfoType", propOrder = {
+    "mimeType",
+    "description",
+    "any"
+})
+public class MetaInfoType {
+
+    @XmlElement(name = "MimeType", required = true)
+    @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+    protected String mimeType;
+    @XmlElement(name = "Description")
+    protected String description;
+    @XmlAnyElement(lax = true)
+    protected List<Object> any;
+
+    /**
+     * Gets the value of the mimeType property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getMimeType() {
+        return mimeType;
+    }
+
+    /**
+     * Sets the value of the mimeType property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setMimeType(String value) {
+        this.mimeType = value;
+    }
+
+    /**
+     * Gets the value of the description property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getDescription() {
+        return description;
+    }
+
+    /**
+     * Sets the value of the description property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setDescription(String value) {
+        this.description = value;
+    }
+
+    /**
+     * Gets the value of the any property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the any property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getAny().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link Object }
+     * 
+     * 
+     */
+    public List<Object> getAny() {
+        if (any == null) {
+            any = new ArrayList<Object>();
+        }
+        return this.any;
+    }
+
+}
diff --git a/pdf-as-lib/src/main/java/at/gv/egiz/sl/NullOperationRequestType.java b/pdf-as-lib/src/main/java/at/gv/egiz/sl/NullOperationRequestType.java
new file mode 100644
index 00000000..69b2f060
--- /dev/null
+++ b/pdf-as-lib/src/main/java/at/gv/egiz/sl/NullOperationRequestType.java
@@ -0,0 +1,37 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.4-2 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2013.11.05 at 04:21:33 PM CET 
+//
+
+
+package at.gv.egiz.sl;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for NullOperationRequestType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="NullOperationRequestType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "NullOperationRequestType")
+public class NullOperationRequestType {
+
+
+}
diff --git a/pdf-as-lib/src/main/java/at/gv/egiz/sl/NullOperationResponseType.java b/pdf-as-lib/src/main/java/at/gv/egiz/sl/NullOperationResponseType.java
new file mode 100644
index 00000000..c7d3132e
--- /dev/null
+++ b/pdf-as-lib/src/main/java/at/gv/egiz/sl/NullOperationResponseType.java
@@ -0,0 +1,37 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.4-2 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2013.11.05 at 04:21:33 PM CET 
+//
+
+
+package at.gv.egiz.sl;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for NullOperationResponseType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="NullOperationResponseType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "NullOperationResponseType")
+public class NullOperationResponseType {
+
+
+}
diff --git a/pdf-as-lib/src/main/java/at/gv/egiz/sl/ObjectFactory.java b/pdf-as-lib/src/main/java/at/gv/egiz/sl/ObjectFactory.java
new file mode 100644
index 00000000..3e9ca0d3
--- /dev/null
+++ b/pdf-as-lib/src/main/java/at/gv/egiz/sl/ObjectFactory.java
@@ -0,0 +1,368 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.4-2 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2013.11.05 at 04:21:33 PM CET 
+//
+
+
+package at.gv.egiz.sl;
+
+import javax.xml.bind.JAXBElement;
+import javax.xml.bind.annotation.XmlElementDecl;
+import javax.xml.bind.annotation.XmlRegistry;
+import javax.xml.namespace.QName;
+
+
+/**
+ * This object contains factory methods for each 
+ * Java content interface and Java element interface 
+ * generated in the at.gv.egiz.sl package. 
+ * <p>An ObjectFactory allows you to programatically 
+ * construct new instances of the Java representation 
+ * for XML content. The Java representation of XML 
+ * content can consist of schema derived interfaces 
+ * and classes representing the binding of schema 
+ * type definitions, element declarations and model 
+ * groups.  Factory methods for each of these are 
+ * provided in this class.
+ * 
+ */
+@XmlRegistry
+public class ObjectFactory {
+
+    private final static QName _NullOperationRequest_QNAME = new QName("http://www.buergerkarte.at/namespaces/securitylayer/1.2#", "NullOperationRequest");
+    private final static QName _CreateCMSSignatureRequest_QNAME = new QName("http://www.buergerkarte.at/namespaces/securitylayer/1.2#", "CreateCMSSignatureRequest");
+    private final static QName _InfoboxReadRequest_QNAME = new QName("http://www.buergerkarte.at/namespaces/securitylayer/1.2#", "InfoboxReadRequest");
+    private final static QName _GetStatusResponse_QNAME = new QName("http://www.buergerkarte.at/namespaces/securitylayer/1.2#", "GetStatusResponse");
+    private final static QName _CreateCMSSignatureResponse_QNAME = new QName("http://www.buergerkarte.at/namespaces/securitylayer/1.2#", "CreateCMSSignatureResponse");
+    private final static QName _GetStatusRequest_QNAME = new QName("http://www.buergerkarte.at/namespaces/securitylayer/1.2#", "GetStatusRequest");
+    private final static QName _ErrorResponse_QNAME = new QName("http://www.buergerkarte.at/namespaces/securitylayer/1.2#", "ErrorResponse");
+    private final static QName _IdentityLinkDomainIdentifier_QNAME = new QName("http://www.buergerkarte.at/namespaces/securitylayer/1.2#", "IdentityLinkDomainIdentifier");
+    private final static QName _VerifyCMSSignatureRequest_QNAME = new QName("http://www.buergerkarte.at/namespaces/securitylayer/1.2#", "VerifyCMSSignatureRequest");
+    private final static QName _InfoboxReadResponse_QNAME = new QName("http://www.buergerkarte.at/namespaces/securitylayer/1.2#", "InfoboxReadResponse");
+    private final static QName _NullOperationResponse_QNAME = new QName("http://www.buergerkarte.at/namespaces/securitylayer/1.2#", "NullOperationResponse");
+
+    /**
+     * Create a new ObjectFactory that can be used to create new instances of schema derived classes for package: at.gv.egiz.sl
+     * 
+     */
+    public ObjectFactory() {
+    }
+
+    /**
+     * Create an instance of {@link InfoboxReadParamsAssocArrayType }
+     * 
+     */
+    public InfoboxReadParamsAssocArrayType createInfoboxReadParamsAssocArrayType() {
+        return new InfoboxReadParamsAssocArrayType();
+    }
+
+    /**
+     * Create an instance of {@link NullOperationResponseType }
+     * 
+     */
+    public NullOperationResponseType createNullOperationResponseType() {
+        return new NullOperationResponseType();
+    }
+
+    /**
+     * Create an instance of {@link InfoboxReadResponseType }
+     * 
+     */
+    public InfoboxReadResponseType createInfoboxReadResponseType() {
+        return new InfoboxReadResponseType();
+    }
+
+    /**
+     * Create an instance of {@link VerifyCMSSignatureRequestType }
+     * 
+     */
+    public VerifyCMSSignatureRequestType createVerifyCMSSignatureRequestType() {
+        return new VerifyCMSSignatureRequestType();
+    }
+
+    /**
+     * Create an instance of {@link GetStatusResponseType }
+     * 
+     */
+    public GetStatusResponseType createGetStatusResponseType() {
+        return new GetStatusResponseType();
+    }
+
+    /**
+     * Create an instance of {@link InfoboxReadRequestType }
+     * 
+     */
+    public InfoboxReadRequestType createInfoboxReadRequestType() {
+        return new InfoboxReadRequestType();
+    }
+
+    /**
+     * Create an instance of {@link CreateCMSSignatureRequestType }
+     * 
+     */
+    public CreateCMSSignatureRequestType createCreateCMSSignatureRequestType() {
+        return new CreateCMSSignatureRequestType();
+    }
+
+    /**
+     * Create an instance of {@link NullOperationRequestType }
+     * 
+     */
+    public NullOperationRequestType createNullOperationRequestType() {
+        return new NullOperationRequestType();
+    }
+
+    /**
+     * Create an instance of {@link ErrorResponseType }
+     * 
+     */
+    public ErrorResponseType createErrorResponseType() {
+        return new ErrorResponseType();
+    }
+
+    /**
+     * Create an instance of {@link GetStatusRequestType }
+     * 
+     */
+    public GetStatusRequestType createGetStatusRequestType() {
+        return new GetStatusRequestType();
+    }
+
+    /**
+     * Create an instance of {@link CreateCMSSignatureResponseType }
+     * 
+     */
+    public CreateCMSSignatureResponseType createCreateCMSSignatureResponseType() {
+        return new CreateCMSSignatureResponseType();
+    }
+
+    /**
+     * Create an instance of {@link InfoboxReadParamsBinaryFileType }
+     * 
+     */
+    public InfoboxReadParamsBinaryFileType createInfoboxReadParamsBinaryFileType() {
+        return new InfoboxReadParamsBinaryFileType();
+    }
+
+    /**
+     * Create an instance of {@link ExcludedByteRangeType }
+     * 
+     */
+    public ExcludedByteRangeType createExcludedByteRangeType() {
+        return new ExcludedByteRangeType();
+    }
+
+    /**
+     * Create an instance of {@link Base64OptRefContentType }
+     * 
+     */
+    public Base64OptRefContentType createBase64OptRefContentType() {
+        return new Base64OptRefContentType();
+    }
+
+    /**
+     * Create an instance of {@link InfoboxReadDataAssocArrayType }
+     * 
+     */
+    public InfoboxReadDataAssocArrayType createInfoboxReadDataAssocArrayType() {
+        return new InfoboxReadDataAssocArrayType();
+    }
+
+    /**
+     * Create an instance of {@link CMSDataObjectOptionalMetaType }
+     * 
+     */
+    public CMSDataObjectOptionalMetaType createCMSDataObjectOptionalMetaType() {
+        return new CMSDataObjectOptionalMetaType();
+    }
+
+    /**
+     * Create an instance of {@link Base64XMLContentType }
+     * 
+     */
+    public Base64XMLContentType createBase64XMLContentType() {
+        return new Base64XMLContentType();
+    }
+
+    /**
+     * Create an instance of {@link CMSDataObjectRequiredMetaType }
+     * 
+     */
+    public CMSDataObjectRequiredMetaType createCMSDataObjectRequiredMetaType() {
+        return new CMSDataObjectRequiredMetaType();
+    }
+
+    /**
+     * Create an instance of {@link XMLContentType }
+     * 
+     */
+    public XMLContentType createXMLContentType() {
+        return new XMLContentType();
+    }
+
+    /**
+     * Create an instance of {@link MetaInfoType }
+     * 
+     */
+    public MetaInfoType createMetaInfoType() {
+        return new MetaInfoType();
+    }
+
+    /**
+     * Create an instance of {@link Base64ContentType }
+     * 
+     */
+    public Base64ContentType createBase64ContentType() {
+        return new Base64ContentType();
+    }
+
+    /**
+     * Create an instance of {@link InfoboxAssocArrayPairType }
+     * 
+     */
+    public InfoboxAssocArrayPairType createInfoboxAssocArrayPairType() {
+        return new InfoboxAssocArrayPairType();
+    }
+
+    /**
+     * Create an instance of {@link AnyMixedChildrenType }
+     * 
+     */
+    public AnyMixedChildrenType createAnyMixedChildrenType() {
+        return new AnyMixedChildrenType();
+    }
+
+    /**
+     * Create an instance of {@link AnyChildrenType }
+     * 
+     */
+    public AnyChildrenType createAnyChildrenType() {
+        return new AnyChildrenType();
+    }
+
+    /**
+     * Create an instance of {@link InfoboxReadParamsAssocArrayType.ReadKeys }
+     * 
+     */
+    public InfoboxReadParamsAssocArrayType.ReadKeys createInfoboxReadParamsAssocArrayTypeReadKeys() {
+        return new InfoboxReadParamsAssocArrayType.ReadKeys();
+    }
+
+    /**
+     * Create an instance of {@link InfoboxReadParamsAssocArrayType.ReadPairs }
+     * 
+     */
+    public InfoboxReadParamsAssocArrayType.ReadPairs createInfoboxReadParamsAssocArrayTypeReadPairs() {
+        return new InfoboxReadParamsAssocArrayType.ReadPairs();
+    }
+
+    /**
+     * Create an instance of {@link InfoboxReadParamsAssocArrayType.ReadValue }
+     * 
+     */
+    public InfoboxReadParamsAssocArrayType.ReadValue createInfoboxReadParamsAssocArrayTypeReadValue() {
+        return new InfoboxReadParamsAssocArrayType.ReadValue();
+    }
+
+    /**
+     * Create an instance of {@link JAXBElement }{@code <}{@link NullOperationRequestType }{@code >}}
+     * 
+     */
+    @XmlElementDecl(namespace = "http://www.buergerkarte.at/namespaces/securitylayer/1.2#", name = "NullOperationRequest")
+    public JAXBElement<NullOperationRequestType> createNullOperationRequest(NullOperationRequestType value) {
+        return new JAXBElement<NullOperationRequestType>(_NullOperationRequest_QNAME, NullOperationRequestType.class, null, value);
+    }
+
+    /**
+     * Create an instance of {@link JAXBElement }{@code <}{@link CreateCMSSignatureRequestType }{@code >}}
+     * 
+     */
+    @XmlElementDecl(namespace = "http://www.buergerkarte.at/namespaces/securitylayer/1.2#", name = "CreateCMSSignatureRequest")
+    public JAXBElement<CreateCMSSignatureRequestType> createCreateCMSSignatureRequest(CreateCMSSignatureRequestType value) {
+        return new JAXBElement<CreateCMSSignatureRequestType>(_CreateCMSSignatureRequest_QNAME, CreateCMSSignatureRequestType.class, null, value);
+    }
+
+    /**
+     * Create an instance of {@link JAXBElement }{@code <}{@link InfoboxReadRequestType }{@code >}}
+     * 
+     */
+    @XmlElementDecl(namespace = "http://www.buergerkarte.at/namespaces/securitylayer/1.2#", name = "InfoboxReadRequest")
+    public JAXBElement<InfoboxReadRequestType> createInfoboxReadRequest(InfoboxReadRequestType value) {
+        return new JAXBElement<InfoboxReadRequestType>(_InfoboxReadRequest_QNAME, InfoboxReadRequestType.class, null, value);
+    }
+
+    /**
+     * Create an instance of {@link JAXBElement }{@code <}{@link GetStatusResponseType }{@code >}}
+     * 
+     */
+    @XmlElementDecl(namespace = "http://www.buergerkarte.at/namespaces/securitylayer/1.2#", name = "GetStatusResponse")
+    public JAXBElement<GetStatusResponseType> createGetStatusResponse(GetStatusResponseType value) {
+        return new JAXBElement<GetStatusResponseType>(_GetStatusResponse_QNAME, GetStatusResponseType.class, null, value);
+    }
+
+    /**
+     * Create an instance of {@link JAXBElement }{@code <}{@link CreateCMSSignatureResponseType }{@code >}}
+     * 
+     */
+    @XmlElementDecl(namespace = "http://www.buergerkarte.at/namespaces/securitylayer/1.2#", name = "CreateCMSSignatureResponse")
+    public JAXBElement<CreateCMSSignatureResponseType> createCreateCMSSignatureResponse(CreateCMSSignatureResponseType value) {
+        return new JAXBElement<CreateCMSSignatureResponseType>(_CreateCMSSignatureResponse_QNAME, CreateCMSSignatureResponseType.class, null, value);
+    }
+
+    /**
+     * Create an instance of {@link JAXBElement }{@code <}{@link GetStatusRequestType }{@code >}}
+     * 
+     */
+    @XmlElementDecl(namespace = "http://www.buergerkarte.at/namespaces/securitylayer/1.2#", name = "GetStatusRequest")
+    public JAXBElement<GetStatusRequestType> createGetStatusRequest(GetStatusRequestType value) {
+        return new JAXBElement<GetStatusRequestType>(_GetStatusRequest_QNAME, GetStatusRequestType.class, null, value);
+    }
+
+    /**
+     * Create an instance of {@link JAXBElement }{@code <}{@link ErrorResponseType }{@code >}}
+     * 
+     */
+    @XmlElementDecl(namespace = "http://www.buergerkarte.at/namespaces/securitylayer/1.2#", name = "ErrorResponse")
+    public JAXBElement<ErrorResponseType> createErrorResponse(ErrorResponseType value) {
+        return new JAXBElement<ErrorResponseType>(_ErrorResponse_QNAME, ErrorResponseType.class, null, value);
+    }
+
+    /**
+     * Create an instance of {@link JAXBElement }{@code <}{@link String }{@code >}}
+     * 
+     */
+    @XmlElementDecl(namespace = "http://www.buergerkarte.at/namespaces/securitylayer/1.2#", name = "IdentityLinkDomainIdentifier")
+    public JAXBElement<String> createIdentityLinkDomainIdentifier(String value) {
+        return new JAXBElement<String>(_IdentityLinkDomainIdentifier_QNAME, String.class, null, value);
+    }
+
+    /**
+     * Create an instance of {@link JAXBElement }{@code <}{@link VerifyCMSSignatureRequestType }{@code >}}
+     * 
+     */
+    @XmlElementDecl(namespace = "http://www.buergerkarte.at/namespaces/securitylayer/1.2#", name = "VerifyCMSSignatureRequest")
+    public JAXBElement<VerifyCMSSignatureRequestType> createVerifyCMSSignatureRequest(VerifyCMSSignatureRequestType value) {
+        return new JAXBElement<VerifyCMSSignatureRequestType>(_VerifyCMSSignatureRequest_QNAME, VerifyCMSSignatureRequestType.class, null, value);
+    }
+
+    /**
+     * Create an instance of {@link JAXBElement }{@code <}{@link InfoboxReadResponseType }{@code >}}
+     * 
+     */
+    @XmlElementDecl(namespace = "http://www.buergerkarte.at/namespaces/securitylayer/1.2#", name = "InfoboxReadResponse")
+    public JAXBElement<InfoboxReadResponseType> createInfoboxReadResponse(InfoboxReadResponseType value) {
+        return new JAXBElement<InfoboxReadResponseType>(_InfoboxReadResponse_QNAME, InfoboxReadResponseType.class, null, value);
+    }
+
+    /**
+     * Create an instance of {@link JAXBElement }{@code <}{@link NullOperationResponseType }{@code >}}
+     * 
+     */
+    @XmlElementDecl(namespace = "http://www.buergerkarte.at/namespaces/securitylayer/1.2#", name = "NullOperationResponse")
+    public JAXBElement<NullOperationResponseType> createNullOperationResponse(NullOperationResponseType value) {
+        return new JAXBElement<NullOperationResponseType>(_NullOperationResponse_QNAME, NullOperationResponseType.class, null, value);
+    }
+
+}
diff --git a/pdf-as-lib/src/main/java/at/gv/egiz/sl/QualifiedBoxIdentifierType.java b/pdf-as-lib/src/main/java/at/gv/egiz/sl/QualifiedBoxIdentifierType.java
new file mode 100644
index 00000000..97908a88
--- /dev/null
+++ b/pdf-as-lib/src/main/java/at/gv/egiz/sl/QualifiedBoxIdentifierType.java
@@ -0,0 +1,108 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.4-2 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2013.11.05 at 12:58:46 PM CET 
+//
+
+
+package at.gv.egiz.sl;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.XmlValue;
+import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+
+
+/**
+ * <p>Java class for QualifiedBoxIdentifierType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="QualifiedBoxIdentifierType">
+ *   &lt;simpleContent>
+ *     &lt;extension base="&lt;http://www.buergerkarte.at/namespaces/securitylayer/1.2#>BoxIdentifierType">
+ *       &lt;attribute name="Signature" use="required" type="{http://www.w3.org/2001/XMLSchema}boolean" />
+ *       &lt;attribute name="Encryption" use="required" type="{http://www.w3.org/2001/XMLSchema}boolean" />
+ *     &lt;/extension>
+ *   &lt;/simpleContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "QualifiedBoxIdentifierType", propOrder = {
+    "value"
+})
+public class QualifiedBoxIdentifierType {
+
+    @XmlValue
+    @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+    protected String value;
+    @XmlAttribute(name = "Signature", required = true)
+    protected boolean signature;
+    @XmlAttribute(name = "Encryption", required = true)
+    protected boolean encryption;
+
+    /**
+     * Gets the value of the value property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getValue() {
+        return value;
+    }
+
+    /**
+     * Sets the value of the value property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setValue(String value) {
+        this.value = value;
+    }
+
+    /**
+     * Gets the value of the signature property.
+     * 
+     */
+    public boolean isSignature() {
+        return signature;
+    }
+
+    /**
+     * Sets the value of the signature property.
+     * 
+     */
+    public void setSignature(boolean value) {
+        this.signature = value;
+    }
+
+    /**
+     * Gets the value of the encryption property.
+     * 
+     */
+    public boolean isEncryption() {
+        return encryption;
+    }
+
+    /**
+     * Sets the value of the encryption property.
+     * 
+     */
+    public void setEncryption(boolean value) {
+        this.encryption = value;
+    }
+
+}
diff --git a/pdf-as-lib/src/main/java/at/gv/egiz/sl/TokenStatusType.java b/pdf-as-lib/src/main/java/at/gv/egiz/sl/TokenStatusType.java
new file mode 100644
index 00000000..a9f5e513
--- /dev/null
+++ b/pdf-as-lib/src/main/java/at/gv/egiz/sl/TokenStatusType.java
@@ -0,0 +1,58 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.4-2 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2013.11.05 at 04:21:33 PM CET 
+//
+
+
+package at.gv.egiz.sl;
+
+import javax.xml.bind.annotation.XmlEnum;
+import javax.xml.bind.annotation.XmlEnumValue;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for TokenStatusType.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * <p>
+ * <pre>
+ * &lt;simpleType name="TokenStatusType">
+ *   &lt;restriction base="{http://www.w3.org/2001/XMLSchema}string">
+ *     &lt;enumeration value="ready"/>
+ *     &lt;enumeration value="removed"/>
+ *   &lt;/restriction>
+ * &lt;/simpleType>
+ * </pre>
+ * 
+ */
+@XmlType(name = "TokenStatusType")
+@XmlEnum
+public enum TokenStatusType {
+
+    @XmlEnumValue("ready")
+    READY("ready"),
+    @XmlEnumValue("removed")
+    REMOVED("removed");
+    private final String value;
+
+    TokenStatusType(String v) {
+        value = v;
+    }
+
+    public String value() {
+        return value;
+    }
+
+    public static TokenStatusType fromValue(String v) {
+        for (TokenStatusType c: TokenStatusType.values()) {
+            if (c.value.equals(v)) {
+                return c;
+            }
+        }
+        throw new IllegalArgumentException(v);
+    }
+
+}
diff --git a/pdf-as-lib/src/main/java/at/gv/egiz/sl/VerifyCMSSignatureRequestType.java b/pdf-as-lib/src/main/java/at/gv/egiz/sl/VerifyCMSSignatureRequestType.java
new file mode 100644
index 00000000..8ed1bc03
--- /dev/null
+++ b/pdf-as-lib/src/main/java/at/gv/egiz/sl/VerifyCMSSignatureRequestType.java
@@ -0,0 +1,161 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.4-2 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2013.11.05 at 04:21:33 PM CET 
+//
+
+
+package at.gv.egiz.sl;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.datatype.XMLGregorianCalendar;
+
+
+/**
+ * <p>Java class for VerifyCMSSignatureRequestType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="VerifyCMSSignatureRequestType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;sequence>
+ *         &lt;element name="DateTime" type="{http://www.w3.org/2001/XMLSchema}dateTime" minOccurs="0"/>
+ *         &lt;element name="CMSSignature" type="{http://www.w3.org/2001/XMLSchema}base64Binary"/>
+ *         &lt;element name="DataObject" type="{http://www.buergerkarte.at/namespaces/securitylayer/1.2#}CMSDataObjectOptionalMetaType" minOccurs="0"/>
+ *       &lt;/sequence>
+ *       &lt;attribute name="Signatories" type="{http://www.buergerkarte.at/namespaces/securitylayer/1.2#}SignatoriesType" default="1" />
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "VerifyCMSSignatureRequestType", propOrder = {
+    "dateTime",
+    "cmsSignature",
+    "dataObject"
+})
+public class VerifyCMSSignatureRequestType {
+
+    @XmlElement(name = "DateTime")
+    @XmlSchemaType(name = "dateTime")
+    protected XMLGregorianCalendar dateTime;
+    @XmlElement(name = "CMSSignature", required = true)
+    protected byte[] cmsSignature;
+    @XmlElement(name = "DataObject")
+    protected CMSDataObjectOptionalMetaType dataObject;
+    @XmlAttribute(name = "Signatories")
+    protected List<String> signatories;
+
+    /**
+     * Gets the value of the dateTime property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link XMLGregorianCalendar }
+     *     
+     */
+    public XMLGregorianCalendar getDateTime() {
+        return dateTime;
+    }
+
+    /**
+     * Sets the value of the dateTime property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link XMLGregorianCalendar }
+     *     
+     */
+    public void setDateTime(XMLGregorianCalendar value) {
+        this.dateTime = value;
+    }
+
+    /**
+     * Gets the value of the cmsSignature property.
+     * 
+     * @return
+     *     possible object is
+     *     byte[]
+     */
+    public byte[] getCMSSignature() {
+        return cmsSignature;
+    }
+
+    /**
+     * Sets the value of the cmsSignature property.
+     * 
+     * @param value
+     *     allowed object is
+     *     byte[]
+     */
+    public void setCMSSignature(byte[] value) {
+        this.cmsSignature = value;
+    }
+
+    /**
+     * Gets the value of the dataObject property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link CMSDataObjectOptionalMetaType }
+     *     
+     */
+    public CMSDataObjectOptionalMetaType getDataObject() {
+        return dataObject;
+    }
+
+    /**
+     * Sets the value of the dataObject property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link CMSDataObjectOptionalMetaType }
+     *     
+     */
+    public void setDataObject(CMSDataObjectOptionalMetaType value) {
+        this.dataObject = value;
+    }
+
+    /**
+     * Gets the value of the signatories property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the signatories property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getSignatories().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link String }
+     * 
+     * 
+     */
+    public List<String> getSignatories() {
+        if (signatories == null) {
+            signatories = new ArrayList<String>();
+        }
+        return this.signatories;
+    }
+
+}
diff --git a/pdf-as-lib/src/main/java/at/gv/egiz/sl/XMLContentType.java b/pdf-as-lib/src/main/java/at/gv/egiz/sl/XMLContentType.java
new file mode 100644
index 00000000..6d1342fc
--- /dev/null
+++ b/pdf-as-lib/src/main/java/at/gv/egiz/sl/XMLContentType.java
@@ -0,0 +1,70 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.4-2 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2013.11.05 at 04:21:33 PM CET 
+//
+
+
+package at.gv.egiz.sl;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+
+
+/**
+ * <p>Java class for XMLContentType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="XMLContentType">
+ *   &lt;complexContent>
+ *     &lt;extension base="{http://www.buergerkarte.at/namespaces/securitylayer/1.2#}AnyMixedChildrenType">
+ *       &lt;attribute ref="{http://www.w3.org/XML/1998/namespace}space"/>
+ *     &lt;/extension>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "XMLContentType")
+public class XMLContentType
+    extends AnyMixedChildrenType
+{
+
+    @XmlAttribute(name = "space", namespace = "http://www.w3.org/XML/1998/namespace")
+    @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+    protected String space;
+
+    /**
+     * Gets the value of the space property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getSpace() {
+        return space;
+    }
+
+    /**
+     * Sets the value of the space property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setSpace(String value) {
+        this.space = value;
+    }
+
+}
diff --git a/pdf-as-lib/src/main/java/at/gv/egiz/sl/package-info.java b/pdf-as-lib/src/main/java/at/gv/egiz/sl/package-info.java
new file mode 100644
index 00000000..6e4f6072
--- /dev/null
+++ b/pdf-as-lib/src/main/java/at/gv/egiz/sl/package-info.java
@@ -0,0 +1,9 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.4-2 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2013.11.05 at 04:21:33 PM CET 
+//
+
+@javax.xml.bind.annotation.XmlSchema(namespace = "http://www.buergerkarte.at/namespaces/securitylayer/1.2#", elementFormDefault = javax.xml.bind.annotation.XmlNsForm.QUALIFIED)
+package at.gv.egiz.sl;
diff --git a/pdf-as-lib/src/main/java/at/gv/egiz/sl/util/BKUSLConnector.java b/pdf-as-lib/src/main/java/at/gv/egiz/sl/util/BKUSLConnector.java
new file mode 100644
index 00000000..3381dca5
--- /dev/null
+++ b/pdf-as-lib/src/main/java/at/gv/egiz/sl/util/BKUSLConnector.java
@@ -0,0 +1,165 @@
+package at.gv.egiz.sl.util;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+
+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.MultipartEntityBuilder;
+import org.apache.http.impl.client.CloseableHttpClient;
+import org.apache.http.impl.client.DefaultHttpClient;
+import org.apache.http.impl.client.HttpClientBuilder;
+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.api.Configuration;
+import at.gv.egiz.sl.CreateCMSSignatureRequestType;
+import at.gv.egiz.sl.CreateCMSSignatureResponseType;
+import at.gv.egiz.sl.ErrorResponseType;
+import at.gv.egiz.sl.InfoboxReadRequestType;
+import at.gv.egiz.sl.InfoboxReadResponseType;
+
+public class BKUSLConnector extends BaseSLConnector {
+
+	private static final Logger logger = LoggerFactory
+			.getLogger(BKUSLConnector.class);
+
+	public static final String CONFIG_BKU_URL = "bku.sign.url";
+
+	private String bkuUrl;
+
+	public BKUSLConnector(Configuration config) {
+		this.bkuUrl = config.getValue(CONFIG_BKU_URL);
+	}
+
+	private CloseableHttpClient buildHttpClient() {
+		HttpClientBuilder builder = HttpClientBuilder.create();
+		return builder.build();
+	}
+
+	private String performHttpRequestToBKU(String xmlRequest)
+			throws ClientProtocolException, IOException, IllegalStateException {
+		CloseableHttpClient client = null;
+		try {
+			client = buildHttpClient();
+			HttpPost post = new HttpPost(this.bkuUrl);
+
+			MultipartEntityBuilder entityBuilder = MultipartEntityBuilder
+					.create();
+			entityBuilder.addTextBody(XMLREQUEST, xmlRequest,
+					ContentType.TEXT_XML);
+
+			post.setEntity(entityBuilder.build());
+
+			HttpResponse response = client.execute(post);
+			logger.debug("Response Code : "
+					+ response.getStatusLine().getStatusCode());
+
+			BufferedReader rd = new BufferedReader(new InputStreamReader(
+					response.getEntity().getContent()));
+
+			StringBuffer result = new StringBuffer();
+			String line = "";
+			while ((line = rd.readLine()) != null) {
+				result.append(line);
+			}
+
+			logger.trace(result.toString());
+			return result.toString();
+		} finally {
+			if(client != null) {
+				client.close();
+			}
+		}
+	}
+
+	@SuppressWarnings("rawtypes")
+	public InfoboxReadResponseType sendInfoboxReadRequest(
+			InfoboxReadRequestType request) throws PdfAsException {
+		JAXBElement element = null;
+		String slRequest;
+		try {
+			slRequest = SLMarschaller.marshalToString(of
+					.createInfoboxReadRequest(request));
+			logger.trace(slRequest);
+
+			String slResponse = performHttpRequestToBKU(slRequest);
+
+			element = (JAXBElement) SLMarschaller
+					.unmarshalFromString(slResponse);
+
+		} catch (JAXBException e) {
+			throw new PDFIOException("SL_COM", e);
+		} catch (ClientProtocolException e) {
+			throw new PDFIOException("SL_COM", e);
+		} catch (IOException e) {
+			throw new PDFIOException("SL_COM", e);
+		}
+
+		if (element == null) {
+			throw new PDFIOException("SL ELEMENT NOT AVAILABLE");
+		}
+
+		if (element.getValue() instanceof InfoboxReadResponseType) {
+			InfoboxReadResponseType infoboxReadResponseType = (InfoboxReadResponseType) element
+					.getValue();
+			return infoboxReadResponseType;
+		} else if (element.getValue() instanceof ErrorResponseType) {
+			ErrorResponseType errorResponseType = (ErrorResponseType) element
+					.getValue();
+			throw new SLPdfAsException(errorResponseType.getErrorCode(),
+					errorResponseType.getInfo());
+		}
+		throw new PdfAsException("Invalid SL Repsonse");
+	}
+
+	public CreateCMSSignatureResponseType sendCMSRequest(
+			CreateCMSSignatureRequestType request) throws PdfAsException {
+		JAXBElement element = null;
+		String slRequest;
+		try {
+			slRequest = SLMarschaller.marshalToString(of
+					.createCreateCMSSignatureRequest(request));
+			logger.trace(slRequest);
+
+			String slResponse = performHttpRequestToBKU(slRequest);
+
+			element = (JAXBElement) SLMarschaller
+					.unmarshalFromString(slResponse);
+		} catch (JAXBException e) {
+			throw new PDFIOException("SL_COM", e);
+		} catch (ClientProtocolException e) {
+			throw new PDFIOException("SL_COM", e);
+		} catch (IOException e) {
+			throw new PDFIOException("SL_COM", e);
+		}
+
+		if (element == null) {
+			throw new PDFIOException("SL ELEMENT NOT AVAILABLE");
+		}
+
+		if (element.getValue() instanceof CreateCMSSignatureResponseType) {
+			CreateCMSSignatureResponseType createCMSSignatureResponseType = (CreateCMSSignatureResponseType) element
+					.getValue();
+			logger.debug(createCMSSignatureResponseType.toString());
+			return createCMSSignatureResponseType;
+		} else if (element.getValue() instanceof ErrorResponseType) {
+			ErrorResponseType errorResponseType = (ErrorResponseType) element
+					.getValue();
+			throw new SLPdfAsException(errorResponseType.getErrorCode(),
+					errorResponseType.getInfo());
+		}
+		throw new PdfAsException("Invalid SL Repsonse");
+
+	}
+}
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;
+	}
+
+}
diff --git a/pdf-as-lib/src/main/java/at/gv/egiz/sl/util/ISLConnector.java b/pdf-as-lib/src/main/java/at/gv/egiz/sl/util/ISLConnector.java
new file mode 100644
index 00000000..82571720
--- /dev/null
+++ b/pdf-as-lib/src/main/java/at/gv/egiz/sl/util/ISLConnector.java
@@ -0,0 +1,15 @@
+package at.gv.egiz.sl.util;
+
+import at.gv.egiz.pdfas.common.exceptions.PdfAsException;
+import at.gv.egiz.sl.CreateCMSSignatureRequestType;
+import at.gv.egiz.sl.CreateCMSSignatureResponseType;
+import at.gv.egiz.sl.InfoboxReadRequestType;
+import at.gv.egiz.sl.InfoboxReadResponseType;
+
+public interface ISLConnector {
+
+	public InfoboxReadRequestType createInfoboxReadRequest();
+	public InfoboxReadResponseType sendInfoboxReadRequest(InfoboxReadRequestType request)  throws PdfAsException;
+	public CreateCMSSignatureRequestType createCMSRequest(byte[] signatureData, int[] byteRange);
+	public CreateCMSSignatureResponseType sendCMSRequest(CreateCMSSignatureRequestType request) throws PdfAsException;
+}
diff --git a/pdf-as-lib/src/main/java/at/gv/egiz/sl/util/SLMarschaller.java b/pdf-as-lib/src/main/java/at/gv/egiz/sl/util/SLMarschaller.java
new file mode 100644
index 00000000..8f1b3cc5
--- /dev/null
+++ b/pdf-as-lib/src/main/java/at/gv/egiz/sl/util/SLMarschaller.java
@@ -0,0 +1,49 @@
+package at.gv.egiz.sl.util;
+
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.io.StringReader;
+import java.io.StringWriter;
+
+import javax.xml.bind.JAXBContext;
+import javax.xml.bind.JAXBException;
+import javax.xml.bind.Marshaller;
+import javax.xml.bind.Unmarshaller;
+
+public class SLMarschaller {
+	private static Marshaller marshaller = null;
+	private static Unmarshaller unmarshaller = null;
+
+	static {
+		try {
+			JAXBContext context = JAXBContext.newInstance("at.gv.egiz.sl");
+			marshaller = context.createMarshaller();
+			marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
+			marshaller.setProperty(Marshaller.JAXB_ENCODING, "UTF-8");
+
+			unmarshaller = context.createUnmarshaller();
+		} catch (JAXBException e) {
+			throw new RuntimeException(
+					"There was a problem creating a JAXBContext object for formatting the object to XML.");
+		}
+	}
+
+	public static void marshal(Object obj, OutputStream os) throws JAXBException {
+		marshaller.marshal(obj, os);
+	}
+
+	public static String marshalToString(Object obj) throws JAXBException {
+		StringWriter sw = new StringWriter();
+		marshaller.marshal(obj, sw);
+		return sw.toString();
+	}
+	
+	public static Object unmarshal(InputStream is) throws JAXBException {
+		return unmarshaller.unmarshal(is);
+	}
+	
+	public static Object unmarshalFromString(String message) throws JAXBException {
+		StringReader sr = new StringReader(message);
+		return unmarshaller.unmarshal(sr);
+	}
+}
diff --git a/pdf-as-lib/src/main/java/at/gv/egiz/sl/util/package-info.java b/pdf-as-lib/src/main/java/at/gv/egiz/sl/util/package-info.java
new file mode 100644
index 00000000..f370e34d
--- /dev/null
+++ b/pdf-as-lib/src/main/java/at/gv/egiz/sl/util/package-info.java
@@ -0,0 +1,8 @@
+/**
+ * 
+ */
+/**
+ * @author afitzek
+ *
+ */
+package at.gv.egiz.sl.util;
\ No newline at end of file
-- 
cgit v1.2.3