From b9ccb62d35a755efb505d426ce924d5a8fbe937a Mon Sep 17 00:00:00 2001
From: "Bonato, Martin" <martin.bonato@prime-sign.com>
Date: Thu, 8 Feb 2018 22:19:55 +0100
Subject: BulkSignature implementation

---
 .../stal/service/translator/STALTranslator.java    | 126 +++++++++++++++------
 .../stal/service/types/BulkSignRequestType.java    |  68 +++++++++++
 .../stal/service/types/BulkSignResponseType.java   |  69 +++++++++++
 .../stal/service/types/GetHashDataInputType.java   |  42 +++++--
 .../service/types/GetNextRequestResponseType.java  |  52 +++------
 .../stal/service/types/GetNextRequestType.java     |  58 ++++------
 .../gv/egiz/stal/service/types/ObjectFactory.java  |  40 +++++++
 .../at/gv/egiz/stal/service/types/RequestType.java |   3 +-
 .../gv/egiz/stal/service/types/ResponseType.java   |   3 +-
 .../egiz/stal/service/types/SignRequestType.java   |  87 +++++++++++---
 10 files changed, 414 insertions(+), 134 deletions(-)
 create mode 100644 STALService/src/main/java/at/gv/egiz/stal/service/types/BulkSignRequestType.java
 create mode 100644 STALService/src/main/java/at/gv/egiz/stal/service/types/BulkSignResponseType.java

(limited to 'STALService')

diff --git a/STALService/src/main/java/at/gv/egiz/stal/service/translator/STALTranslator.java b/STALService/src/main/java/at/gv/egiz/stal/service/translator/STALTranslator.java
index 3f3d52c0..2564f88d 100644
--- a/STALService/src/main/java/at/gv/egiz/stal/service/translator/STALTranslator.java
+++ b/STALService/src/main/java/at/gv/egiz/stal/service/translator/STALTranslator.java
@@ -34,6 +34,8 @@ import javax.xml.bind.JAXBElement;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import at.gv.egiz.stal.BulkSignRequest;
+import at.gv.egiz.stal.BulkSignResponse;
 import at.gv.egiz.stal.ErrorResponse;
 import at.gv.egiz.stal.InfoboxReadRequest;
 import at.gv.egiz.stal.InfoboxReadResponse;
@@ -46,6 +48,8 @@ import at.gv.egiz.stal.SignRequest.SignedInfo;
 import at.gv.egiz.stal.SignResponse;
 import at.gv.egiz.stal.StatusRequest;
 import at.gv.egiz.stal.StatusResponse;
+import at.gv.egiz.stal.service.types.BulkSignRequestType;
+import at.gv.egiz.stal.service.types.BulkSignResponseType;
 import at.gv.egiz.stal.service.types.ErrorResponseType;
 import at.gv.egiz.stal.service.types.InfoboxReadRequestType;
 import at.gv.egiz.stal.service.types.InfoboxReadResponseType;
@@ -197,18 +201,22 @@ public class STALTranslator {
     public List<Class<?>> getSupportedTypes() {
       return Arrays.asList(new Class<?>[]{InfoboxReadRequest.class,
                 SignRequest.class,
+                BulkSignRequest.class,
                 QuitRequest.class,
                 StatusRequest.class,
                 InfoboxReadRequestType.class,
                 SignRequestType.class,
+                BulkSignRequestType.class,
                 QuitRequestType.class,
                 StatusRequestType.class,
                 InfoboxReadResponse.class,
                 SignResponse.class,
+                BulkSignResponse.class,
                 ErrorResponse.class,
                 StatusResponse.class,
                 InfoboxReadResponseType.class,
                 SignResponseType.class,
+                BulkSignResponseType.class,
                 ErrorResponseType.class,
                 StatusResponseType.class
       });
@@ -218,22 +226,14 @@ public class STALTranslator {
     public JAXBElement<? extends RequestType> translate(STALRequest request) throws TranslationException {
       log.trace("translate " + request.getClass());
       if (request instanceof SignRequest) {
-        SignRequestType req = of.createSignRequestType();
-        req.setKeyIdentifier(((SignRequest) request).getKeyIdentifier());
-        SignRequestType.SignedInfo signedInfo = of.createSignRequestTypeSignedInfo();
-        signedInfo.setValue(((SignRequest) request).getSignedInfo().getValue());
-        signedInfo.setIsCMSSignedAttributes(((SignRequest) request).getSignedInfo().isIsCMSSignedAttributes());
-        req.setSignedInfo(signedInfo);
-        req.setSignatureMethod(((SignRequest) request).getSignatureMethod());
-        req.setDigestMethod(((SignRequest) request).getDigestMethod());
-        if (((SignRequest) request).getExcludedByteRange() != null) {
-          SignRequestType.ExcludedByteRange excludedByteRange = of.createSignRequestTypeExcludedByteRange();
-          excludedByteRange.setFrom(((SignRequest) request).getExcludedByteRange().getFrom());
-          excludedByteRange.setTo(((SignRequest) request).getExcludedByteRange().getTo());
-          req.setExcludedByteRange(excludedByteRange);
+          return translate((SignRequest) request);
+      } else if (request instanceof BulkSignRequest) {
+        BulkSignRequestType bulkReq = of.createBulkSignRequestType();
+        BulkSignRequest bulkSignRequest = (BulkSignRequest) request;
+        for (SignRequest signReq : bulkSignRequest.getSignRequests()) {
+          bulkReq.getSignRequests().add(translate(signReq).getValue());
         }
-        //TODO add hashdatainput (refactor signRequestType)
-        return of.createGetNextRequestResponseTypeSignRequest(req);
+        return of.createGetNextRequestResponseTypeBulkSignRequest(bulkReq);
       } else if (request instanceof InfoboxReadRequest) {
         InfoboxReadRequestType req = of.createInfoboxReadRequestType();
         req.setInfoboxIdentifier(((InfoboxReadRequest) request).getInfoboxIdentifier());
@@ -256,19 +256,12 @@ public class STALTranslator {
         stalReq.setInfoboxIdentifier(((InfoboxReadRequestType) request).getInfoboxIdentifier());
         return stalReq;
       } else if (request instanceof SignRequestType) {
-        SignRequest stalReq = new SignRequest();
-        stalReq.setKeyIdentifier(((SignRequestType) request).getKeyIdentifier());
-        SignedInfo signedInfo = new SignedInfo();
-        signedInfo.setValue(((SignRequestType) request).getSignedInfo().getValue());
-        signedInfo.setIsCMSSignedAttributes(((SignRequestType) request).getSignedInfo().isIsCMSSignedAttributes());
-        stalReq.setSignedInfo(signedInfo);
-        stalReq.setSignatureMethod(((SignRequestType) request).getSignatureMethod());
-        stalReq.setDigestMethod(((SignRequestType) request).getDigestMethod());
-        if (((SignRequestType) request).getExcludedByteRange() != null) {
-          ExcludedByteRange excludedByteRange = new ExcludedByteRange();
-          excludedByteRange.setFrom(((SignRequestType) request).getExcludedByteRange().getFrom());
-          excludedByteRange.setTo(((SignRequestType) request).getExcludedByteRange().getTo());
-          stalReq.setExcludedByteRange(excludedByteRange);
+        return translate((SignRequestType) request);
+      } else if (request instanceof BulkSignRequestType) {
+        BulkSignRequest stalReq = new BulkSignRequest();
+        BulkSignRequestType bulkSignRequestType = (BulkSignRequestType) request;
+        for (SignRequestType requestType : bulkSignRequestType.getSignRequests()) {
+          stalReq.getSignRequests().add(translate(requestType));
         }
         return stalReq;
       } else if (request instanceof QuitRequestType) {
@@ -286,9 +279,14 @@ public class STALTranslator {
         resp.setInfoboxValue(((InfoboxReadResponse) response).getInfoboxValue());
         return of.createGetNextRequestTypeInfoboxReadResponse(resp);
       } else if (response instanceof SignResponse) {
-        SignResponseType resp = of.createSignResponseType();
-        resp.setSignatureValue(((SignResponse) response).getSignatureValue());
-        return of.createGetNextRequestTypeSignResponse(resp);
+        return translate((SignResponse) response);
+      } else if (response instanceof BulkSignResponse) {
+        BulkSignResponseType resp = of.createBulkSignResponseType();
+        BulkSignResponse bulkSignResponse = (BulkSignResponse) response;
+        for (SignResponse signResponse : bulkSignResponse.getSignResponse()) {
+          resp.getSignResponse().add(translate(signResponse).getValue());
+        }
+        return of.createGetNextRequestTypeBulkSignResponse(resp);
       } else if (response instanceof ErrorResponse) {
         ErrorResponseType resp = of.createErrorResponseType();
         resp.setErrorCode(((ErrorResponse) response).getErrorCode());
@@ -309,8 +307,13 @@ public class STALTranslator {
         stalResp.setInfoboxValue(((InfoboxReadResponseType) response).getInfoboxValue());
         return stalResp;
       } else if (response instanceof SignResponseType) {
-        SignResponse stalResp = new SignResponse();
-        stalResp.setSignatureValue(((SignResponseType) response).getSignatureValue());
+        return translate((SignResponseType) response);
+      } else if (response instanceof BulkSignResponseType) {
+        BulkSignResponse stalResp = new BulkSignResponse();
+        BulkSignResponseType bulkSignResponseType = (BulkSignResponseType) response;
+        for (SignResponseType responseType : bulkSignResponseType.getSignResponse()) {
+          stalResp.getSignResponse().add(translate(responseType));
+        }
         return stalResp;
       } else if (response instanceof ErrorResponseType) {
         ErrorResponse stalResp = new ErrorResponse();
@@ -324,6 +327,63 @@ public class STALTranslator {
       }
       throw new TranslationException(response.getClass());
     }
+ 
+    private JAXBElement<SignRequestType> translate(SignRequest request) {
+
+      SignRequestType req = of.createSignRequestType();
+      req.setKeyIdentifier(((SignRequest) request).getKeyIdentifier());
+      SignRequestType.SignedInfo signedInfo = of.createSignRequestTypeSignedInfo();
+      signedInfo.setValue(((SignRequest) request).getSignedInfo().getValue());
+      signedInfo.setIsCMSSignedAttributes(((SignRequest) request).getSignedInfo().isIsCMSSignedAttributes());
+      req.setSignedInfo(signedInfo);
+      req.setSignatureMethod(((SignRequest) request).getSignatureMethod());
+      req.setDigestMethod(((SignRequest) request).getDigestMethod());
+      req.setMimeType(((SignRequest) request).getMimeType());
+      req.setDisplayName(((SignRequest) request).getDisplayName());
+      if (((SignRequest) request).getExcludedByteRange() != null) {
+        SignRequestType.ExcludedByteRange excludedByteRange = of.createSignRequestTypeExcludedByteRange();
+        excludedByteRange.setFrom(((SignRequest) request).getExcludedByteRange().getFrom());
+        excludedByteRange.setTo(((SignRequest) request).getExcludedByteRange().getTo());
+        req.setExcludedByteRange(excludedByteRange);
+      }
+      return of.createGetNextRequestResponseTypeSignRequest(req);
+    }
+    
+    private SignRequest translate(SignRequestType request) {
+
+      SignRequest stalReq = new SignRequest();
+      stalReq.setKeyIdentifier(request.getKeyIdentifier());
+      SignedInfo signedInfo = new SignedInfo();
+      signedInfo.setValue(request.getSignedInfo().getValue());
+      signedInfo.setIsCMSSignedAttributes(request.getSignedInfo().isIsCMSSignedAttributes());
+      stalReq.setSignedInfo(signedInfo);
+      stalReq.setSignatureMethod(request.getSignatureMethod());
+      stalReq.setDigestMethod(request.getDigestMethod());
+      stalReq.setDisplayName(request.getDisplayName());
+      stalReq.setMimeType(request.getMimeType());
+      if (request.getExcludedByteRange() != null) {
+        ExcludedByteRange excludedByteRange = new ExcludedByteRange();
+        excludedByteRange.setFrom(request.getExcludedByteRange().getFrom());
+        excludedByteRange.setTo(request.getExcludedByteRange().getTo());
+        stalReq.setExcludedByteRange(excludedByteRange);
+      }
+      return stalReq;
+
+    }
+    
+ 
+    private JAXBElement<SignResponseType> translate(SignResponse response) {
+      SignResponseType resp = of.createSignResponseType();
+      resp.setSignatureValue(response.getSignatureValue());
+      return of.createGetNextRequestTypeSignResponse(resp);
+    }
+
+    private SignResponse translate(SignResponseType response) {
+      SignResponse stalResp = new SignResponse();
+      stalResp.setSignatureValue(response.getSignatureValue());
+      return stalResp;
+    }
+
   }
 }
 
diff --git a/STALService/src/main/java/at/gv/egiz/stal/service/types/BulkSignRequestType.java b/STALService/src/main/java/at/gv/egiz/stal/service/types/BulkSignRequestType.java
new file mode 100644
index 00000000..4086e254
--- /dev/null
+++ b/STALService/src/main/java/at/gv/egiz/stal/service/types/BulkSignRequestType.java
@@ -0,0 +1,68 @@
+package at.gv.egiz.stal.service.types;
+
+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;
+
+
+/**
+ * <p>Java class for BulkSignRequestType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="BulkSignRequestType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;sequence maxOccurs="unbounded">
+ *         &lt;element name="SignRequests" type="{http://www.egiz.gv.at/stal}SignRequestType"/>
+ *       &lt;/sequence>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "BulkSignRequestType", propOrder = {
+    "signRequests"
+})
+public class BulkSignRequestType extends RequestType {
+
+    @XmlElement(name = "SignRequests", required = true)
+    protected List<SignRequestType> signRequests;
+
+    /**
+     * Gets the value of the signRequests 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 signRequests property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getSignRequests().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link SignRequestType }
+     * 
+     * 
+     */
+    public List<SignRequestType> getSignRequests() {
+        if (signRequests == null) {
+            signRequests = new ArrayList<SignRequestType>();
+        }
+        return this.signRequests;
+    }
+
+}
diff --git a/STALService/src/main/java/at/gv/egiz/stal/service/types/BulkSignResponseType.java b/STALService/src/main/java/at/gv/egiz/stal/service/types/BulkSignResponseType.java
new file mode 100644
index 00000000..fbdcbdc0
--- /dev/null
+++ b/STALService/src/main/java/at/gv/egiz/stal/service/types/BulkSignResponseType.java
@@ -0,0 +1,69 @@
+
+package at.gv.egiz.stal.service.types;
+
+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;
+
+
+/**
+ * <p>Java class for BulkSignResponseType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="BulkSignResponseType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;sequence maxOccurs="unbounded">
+ *         &lt;element name="SignResponse" type="{http://www.egiz.gv.at/stal}SignResponseType"/>
+ *       &lt;/sequence>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "BulkSignResponseType", propOrder = {
+    "signResponse"
+})
+public class BulkSignResponseType extends ResponseType {
+
+    @XmlElement(name = "SignResponse", required = true)
+    protected List<SignResponseType> signResponse;
+
+    /**
+     * Gets the value of the signResponse 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 signResponse property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>SignRequestType
+     *    getSignResponse().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link SignResponseType }
+     * 
+     * 
+     */
+    public List<SignResponseType> getSignResponse() {
+        if (signResponse == null) {
+            signResponse = new ArrayList<SignResponseType>();
+        }
+        return this.signResponse;
+    }
+
+}
diff --git a/STALService/src/main/java/at/gv/egiz/stal/service/types/GetHashDataInputType.java b/STALService/src/main/java/at/gv/egiz/stal/service/types/GetHashDataInputType.java
index 037e94eb..2a3a58bf 100644
--- a/STALService/src/main/java/at/gv/egiz/stal/service/types/GetHashDataInputType.java
+++ b/STALService/src/main/java/at/gv/egiz/stal/service/types/GetHashDataInputType.java
@@ -21,8 +21,6 @@
  * that you distribute must include a readable copy of the "NOTICE" text file.
  */
 
-
-
 package at.gv.egiz.stal.service.types;
 
 import java.util.ArrayList;
@@ -49,6 +47,7 @@ import javax.xml.bind.annotation.XmlType;
  *             &lt;complexContent&gt;
  *               &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType"&gt;
  *                 &lt;attribute name="ID" type="{http://www.w3.org/2001/XMLSchema}string" /&gt;
+ *                 &lt;attribute name="digest" type="{http://www.w3.org/2001/XMLSchema}base64Binary" //&gt;
  *               &lt;/restriction&gt;
  *             &lt;/complexContent&gt;
  *           &lt;/complexType&gt;
@@ -133,13 +132,14 @@ public class GetHashDataInputType {
      * <p>The following schema fragment specifies the expected content contained within this class.
      * 
      * <pre>
-     * &lt;complexType&gt;
-     *   &lt;complexContent&gt;
-     *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType"&gt;
-     *       &lt;attribute name="ID" type="{http://www.w3.org/2001/XMLSchema}string" /&gt;
-     *     &lt;/restriction&gt;
-     *   &lt;/complexContent&gt;
-     * &lt;/complexType&gt;
+     * &lt;complexType>
+     *   &lt;complexContent>
+     *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+     *       &lt;attribute name="ID" type="{http://www.w3.org/2001/XMLSchema}string" />
+     *       &lt;attribute name="digest" type="{http://www.w3.org/2001/XMLSchema}base64Binary" />
+     *     &lt;/restriction>
+     *   &lt;/complexContent>
+     * &lt;/complexType>
      * </pre>
      * 
      * 
@@ -150,6 +150,8 @@ public class GetHashDataInputType {
 
         @XmlAttribute(name = "ID")
         protected String id;
+        @XmlAttribute
+        protected byte[] digest;
 
         /**
          * Gets the value of the id property.
@@ -175,6 +177,28 @@ public class GetHashDataInputType {
             this.id = value;
         }
 
+        /**
+         * Gets the value of the digest property.
+         * 
+         * @return
+         *     possible object is
+         *     byte[]
+         */
+        public byte[] getDigest() {
+            return digest;
+        }
+
+        /**
+         * Sets the value of the digest property.
+         * 
+         * @param value
+         *     allowed object is
+         *     byte[]
+         */
+        public void setDigest(byte[] value) {
+            this.digest = ((byte[]) value);
+        }
+
     }
 
 }
diff --git a/STALService/src/main/java/at/gv/egiz/stal/service/types/GetNextRequestResponseType.java b/STALService/src/main/java/at/gv/egiz/stal/service/types/GetNextRequestResponseType.java
index 310190cc..9fcbe660 100644
--- a/STALService/src/main/java/at/gv/egiz/stal/service/types/GetNextRequestResponseType.java
+++ b/STALService/src/main/java/at/gv/egiz/stal/service/types/GetNextRequestResponseType.java
@@ -1,27 +1,3 @@
-/*
- * Copyright 2011 by Graz University of Technology, Austria
- * MOCCA has been developed by the E-Government Innovation Center EGIZ, a joint
- * initiative of the Federal Chancellery Austria and Graz University of Technology.
- *
- * Licensed under the EUPL, Version 1.1 or - as soon they will be approved by
- * the European Commission - subsequent versions of the EUPL (the "Licence");
- * You may not use this work except in compliance with the Licence.
- * You may obtain a copy of the Licence at:
- * http://www.osor.eu/eupl/
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the Licence is distributed on an "AS IS" basis,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the Licence for the specific language governing permissions and
- * limitations under the Licence.
- *
- * This product combines work with different licenses. See the "NOTICE" text
- * file for details on the various modules and licenses.
- * The "NOTICE" text file is part of the distribution. Any derivative works
- * that you distribute must include a readable copy of the "NOTICE" text file.
- */
-
-
 
 package at.gv.egiz.stal.service.types;
 
@@ -49,6 +25,7 @@ import javax.xml.bind.annotation.XmlType;
  *       &lt;choice maxOccurs="unbounded"&gt;
  *         &lt;element name="InfoboxReadRequest" type="{http://www.egiz.gv.at/stal}InfoboxReadRequestType"/&gt;
  *         &lt;element name="SignRequest" type="{http://www.egiz.gv.at/stal}SignRequestType"/&gt;
+ *         &lt;element name="BulkSignRequest" type="{http://www.egiz.gv.at/stal}BulkSignRequestType"/&gt;
  *         &lt;element name="QuitRequest" type="{http://www.egiz.gv.at/stal}QuitRequestType"/&gt;
  *         &lt;element name="StatusRequest" type="{http://www.egiz.gv.at/stal}StatusRequestType"/&gt;
  *         &lt;element ref="{http://www.egiz.gv.at/stal}OtherRequest"/&gt;
@@ -63,52 +40,55 @@ import javax.xml.bind.annotation.XmlType;
  */
 @XmlAccessorType(XmlAccessType.FIELD)
 @XmlType(name = "GetNextRequestResponseType", propOrder = {
-    "infoboxReadRequestOrSignRequestOrQuitRequest"
+    "infoboxReadRequestOrSignRequestOrBulkSignRequest"
 })
 public class GetNextRequestResponseType {
 
     @XmlElementRefs({
-        @XmlElementRef(name = "OtherRequest", namespace = "http://www.egiz.gv.at/stal", type = JAXBElement.class),
+        @XmlElementRef(name = "BulkSignRequest", namespace = "http://www.egiz.gv.at/stal", type = JAXBElement.class),
         @XmlElementRef(name = "QuitRequest", namespace = "http://www.egiz.gv.at/stal", type = JAXBElement.class),
         @XmlElementRef(name = "InfoboxReadRequest", namespace = "http://www.egiz.gv.at/stal", type = JAXBElement.class),
+        @XmlElementRef(name = "StatusRequest", namespace = "http://www.egiz.gv.at/stal", type = JAXBElement.class),
         @XmlElementRef(name = "SignRequest", namespace = "http://www.egiz.gv.at/stal", type = JAXBElement.class),
-        @XmlElementRef(name = "StatusRequest", namespace = "http://www.egiz.gv.at/stal", type = JAXBElement.class)
+        @XmlElementRef(name = "OtherRequest", namespace = "http://www.egiz.gv.at/stal", type = JAXBElement.class)
     })
-    protected List<JAXBElement<? extends RequestType>> infoboxReadRequestOrSignRequestOrQuitRequest;
+    protected List<JAXBElement<? extends RequestType>> infoboxReadRequestOrSignRequestOrBulkSignRequest;
     @XmlAttribute(name = "SessionId")
     protected String sessionId;
 
     /**
-     * Gets the value of the infoboxReadRequestOrSignRequestOrQuitRequest property.
+     * Gets the value of the infoboxReadRequestOrSignRequestOrBulkSignRequest 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 infoboxReadRequestOrSignRequestOrQuitRequest property.
+     * This is why there is not a <CODE>set</CODE> method for the infoboxReadRequestOrSignRequestOrBulkSignRequest property.
      * 
      * <p>
      * For example, to add a new item, do as follows:
      * <pre>
-     *    getInfoboxReadRequestOrSignRequestOrQuitRequest().add(newItem);
+     *    getInfoboxReadRequestOrSignRequestOrBulkSignRequest().add(newItem);
      * </pre>
      * 
      * 
      * <p>
      * Objects of the following type(s) are allowed in the list
-     * {@link JAXBElement }{@code <}{@link RequestType }{@code >}
+     * {@link JAXBElement }{@code <}{@link BulkSignRequestType }{@code >}
      * {@link JAXBElement }{@code <}{@link QuitRequestType }{@code >}
      * {@link JAXBElement }{@code <}{@link InfoboxReadRequestType }{@code >}
      * {@link JAXBElement }{@code <}{@link StatusRequestType }{@code >}
      * {@link JAXBElement }{@code <}{@link SignRequestType }{@code >}
+     * {@link JAXBElement }{@code <}{@link ScriptType }{@code >}
+     * {@link JAXBElement }{@code <}{@link RequestType }{@code >}
      * 
      * 
      */
-    public List<JAXBElement<? extends RequestType>> getInfoboxReadRequestOrSignRequestOrQuitRequest() {
-        if (infoboxReadRequestOrSignRequestOrQuitRequest == null) {
-            infoboxReadRequestOrSignRequestOrQuitRequest = new ArrayList<JAXBElement<? extends RequestType>>();
+    public List<JAXBElement<? extends RequestType>> getInfoboxReadRequestOrSignRequestOrBulkSignRequest() {
+        if (infoboxReadRequestOrSignRequestOrBulkSignRequest == null) {
+            infoboxReadRequestOrSignRequestOrBulkSignRequest = new ArrayList<JAXBElement<? extends RequestType>>();
         }
-        return this.infoboxReadRequestOrSignRequestOrQuitRequest;
+        return this.infoboxReadRequestOrSignRequestOrBulkSignRequest;
     }
 
     /**
diff --git a/STALService/src/main/java/at/gv/egiz/stal/service/types/GetNextRequestType.java b/STALService/src/main/java/at/gv/egiz/stal/service/types/GetNextRequestType.java
index 4b392aed..635c0a71 100644
--- a/STALService/src/main/java/at/gv/egiz/stal/service/types/GetNextRequestType.java
+++ b/STALService/src/main/java/at/gv/egiz/stal/service/types/GetNextRequestType.java
@@ -1,27 +1,3 @@
-/*
- * Copyright 2011 by Graz University of Technology, Austria
- * MOCCA has been developed by the E-Government Innovation Center EGIZ, a joint
- * initiative of the Federal Chancellery Austria and Graz University of Technology.
- *
- * Licensed under the EUPL, Version 1.1 or - as soon they will be approved by
- * the European Commission - subsequent versions of the EUPL (the "Licence");
- * You may not use this work except in compliance with the Licence.
- * You may obtain a copy of the Licence at:
- * http://www.osor.eu/eupl/
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the Licence is distributed on an "AS IS" basis,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the Licence for the specific language governing permissions and
- * limitations under the Licence.
- *
- * This product combines work with different licenses. See the "NOTICE" text
- * file for details on the various modules and licenses.
- * The "NOTICE" text file is part of the distribution. Any derivative works
- * that you distribute must include a readable copy of the "NOTICE" text file.
- */
-
-
 
 package at.gv.egiz.stal.service.types;
 
@@ -48,6 +24,7 @@ import javax.xml.bind.annotation.XmlType;
  *       &lt;choice maxOccurs="unbounded"&gt;
  *         &lt;element name="InfoboxReadResponse" type="{http://www.egiz.gv.at/stal}InfoboxReadResponseType"/&gt;
  *         &lt;element name="SignResponse" type="{http://www.egiz.gv.at/stal}SignResponseType"/&gt;
+ *         &lt;element name="BulkSignResponse" type="{http://www.egiz.gv.at/stal}BulkSignResponseType"/&gt;
  *         &lt;element name="ErrorResponse" type="{http://www.egiz.gv.at/stal}ErrorResponseType"/&gt;
  *         &lt;element name="StatusResponse" type="{http://www.egiz.gv.at/stal}StatusResponseType"/&gt;
  *         &lt;element ref="{http://www.egiz.gv.at/stal}OtherResponse"/&gt;
@@ -62,52 +39,55 @@ import javax.xml.bind.annotation.XmlType;
  */
 @XmlAccessorType(XmlAccessType.FIELD)
 @XmlType(name = "GetNextRequestType", propOrder = {
-    "infoboxReadResponseOrSignResponseOrErrorResponse"
+    "infoboxReadResponseOrSignResponseOrBulkSignResponse"
 })
 public class GetNextRequestType {
 
     @XmlElementRefs({
-        @XmlElementRef(name = "StatusResponse", namespace = "http://www.egiz.gv.at/stal", type = JAXBElement.class),
+        @XmlElementRef(name = "SignResponse", namespace = "http://www.egiz.gv.at/stal", type = JAXBElement.class),
         @XmlElementRef(name = "InfoboxReadResponse", namespace = "http://www.egiz.gv.at/stal", type = JAXBElement.class),
-        @XmlElementRef(name = "OtherResponse", namespace = "http://www.egiz.gv.at/stal", type = JAXBElement.class),
+        @XmlElementRef(name = "BulkSignResponse", namespace = "http://www.egiz.gv.at/stal", type = JAXBElement.class),
         @XmlElementRef(name = "ErrorResponse", namespace = "http://www.egiz.gv.at/stal", type = JAXBElement.class),
-        @XmlElementRef(name = "SignResponse", namespace = "http://www.egiz.gv.at/stal", type = JAXBElement.class)
+        @XmlElementRef(name = "StatusResponse", namespace = "http://www.egiz.gv.at/stal", type = JAXBElement.class),
+        @XmlElementRef(name = "OtherResponse", namespace = "http://www.egiz.gv.at/stal", type = JAXBElement.class)
     })
-    protected List<JAXBElement<? extends at.gv.egiz.stal.service.types.ResponseType>> infoboxReadResponseOrSignResponseOrErrorResponse;
+    protected List<JAXBElement<? extends at.gv.egiz.stal.service.types.ResponseType>> infoboxReadResponseOrSignResponseOrBulkSignResponse;
     @XmlAttribute(name = "SessionId")
     protected String sessionId;
 
     /**
-     * Gets the value of the infoboxReadResponseOrSignResponseOrErrorResponse property.
+     * Gets the value of the infoboxReadResponseOrSignResponseOrBulkSignResponse 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 infoboxReadResponseOrSignResponseOrErrorResponse property.
+     * This is why there is not a <CODE>set</CODE> method for the infoboxReadResponseOrSignResponseOrBulkSignResponse property.
      * 
      * <p>
      * For example, to add a new item, do as follows:
      * <pre>
-     *    getInfoboxReadResponseOrSignResponseOrErrorResponse().add(newItem);
+     *    getInfoboxReadResponseOrSignResponseOrBulkSignResponse().add(newItem);
      * </pre>
      * 
      * 
      * <p>
      * Objects of the following type(s) are allowed in the list
-     * {@link JAXBElement }{@code <}{@link StatusResponseType }{@code >}
-     * {@link JAXBElement }{@code <}{@link at.gv.egiz.stal.service.types.ResponseType }{@code >}
-     * {@link JAXBElement }{@code <}{@link ErrorResponseType }{@code >}
      * {@link JAXBElement }{@code <}{@link SignResponseType }{@code >}
      * {@link JAXBElement }{@code <}{@link InfoboxReadResponseType }{@code >}
+     * {@link JAXBElement }{@code <}{@link BulkSignResponseType }{@code >}
+     * {@link JAXBElement }{@code <}{@link ErrorResponseType }{@code >}
+     * {@link JAXBElement }{@code <}{@link StatusResponseType }{@code >}
+     * {@link JAXBElement }{@code <}{@link at.buergerkarte.namespaces.cardchannel.service.ResponseType }{@code >}
+     * {@link JAXBElement }{@code <}{@link at.gv.egiz.stal.service.types.ResponseType }{@code >}
      * 
      * 
      */
-    public List<JAXBElement<? extends at.gv.egiz.stal.service.types.ResponseType>> getInfoboxReadResponseOrSignResponseOrErrorResponse() {
-        if (infoboxReadResponseOrSignResponseOrErrorResponse == null) {
-            infoboxReadResponseOrSignResponseOrErrorResponse = new ArrayList<JAXBElement<? extends at.gv.egiz.stal.service.types.ResponseType>>();
+    public List<JAXBElement<? extends at.gv.egiz.stal.service.types.ResponseType>> getInfoboxReadResponseOrSignResponseOrBulkSignResponse() {
+        if (infoboxReadResponseOrSignResponseOrBulkSignResponse == null) {
+            infoboxReadResponseOrSignResponseOrBulkSignResponse = new ArrayList<JAXBElement<? extends at.gv.egiz.stal.service.types.ResponseType>>();
         }
-        return this.infoboxReadResponseOrSignResponseOrErrorResponse;
+        return this.infoboxReadResponseOrSignResponseOrBulkSignResponse;
     }
 
     /**
diff --git a/STALService/src/main/java/at/gv/egiz/stal/service/types/ObjectFactory.java b/STALService/src/main/java/at/gv/egiz/stal/service/types/ObjectFactory.java
index ea7ca837..e9b5ac92 100644
--- a/STALService/src/main/java/at/gv/egiz/stal/service/types/ObjectFactory.java
+++ b/STALService/src/main/java/at/gv/egiz/stal/service/types/ObjectFactory.java
@@ -64,6 +64,8 @@ public class ObjectFactory {
     private final static QName _GetNextRequestTypeInfoboxReadResponse_QNAME = new QName("http://www.egiz.gv.at/stal", "InfoboxReadResponse");
     private final static QName _GetNextRequestResponseTypeStatusRequest_QNAME = new QName("http://www.egiz.gv.at/stal", "StatusRequest");
     private final static QName _GetNextRequestTypeStatusResponse_QNAME = new QName("http://www.egiz.gv.at/stal", "StatusResponse");
+    private final static QName _GetNextRequestTypeBulkSignResponse_QNAME = new QName("http://www.egiz.gv.at/stal", "BulkSignResponse");
+    private final static QName _GetNextRequestResponseTypeBulkSignRequest_QNAME = new QName("http://www.egiz.gv.at/stal", "BulkSignRequest");
     
     /**
      * Create a new ObjectFactory that can be used to create new instances of schema derived classes for package: at.gv.egiz.stal.service.types
@@ -72,6 +74,15 @@ public class ObjectFactory {
     public ObjectFactory() {
     }
 
+    
+    /**
+     * Create an instance of {@link BulkSignResponseType }
+     * 
+     */
+    public BulkSignResponseType createBulkSignResponseType() {
+        return new BulkSignResponseType();
+    }
+    
     /**
      * Create an instance of {@link StatusResponseType }
      *
@@ -168,6 +179,15 @@ public class ObjectFactory {
         return new InfoboxReadResponseType();
     }
 
+    /**
+     * Create an instance of {@link BulkSignRequestType }
+     * 
+     */
+    public BulkSignRequestType createBulkSignRequestType() {
+        return new BulkSignRequestType();
+    }
+
+    
     /**
      * Create an instance of {@link InfoboxReadRequestType }
      * 
@@ -326,6 +346,15 @@ public class ObjectFactory {
         return new JAXBElement<SignRequestType>(_GetNextRequestResponseTypeSignRequest_QNAME, SignRequestType.class, GetNextRequestResponseType.class, value);
     }
 
+    /**
+     * Create an instance of {@link JAXBElement }{@code <}{@link BulkSignResponseType }{@code >}}
+     * 
+     */
+    @XmlElementDecl(namespace = "http://www.egiz.gv.at/stal", name = "BulkSignResponse", scope = GetNextRequestType.class)
+    public JAXBElement<BulkSignResponseType> createGetNextRequestTypeBulkSignResponse(BulkSignResponseType value) {
+        return new JAXBElement<BulkSignResponseType>(_GetNextRequestTypeBulkSignResponse_QNAME, BulkSignResponseType.class, GetNextRequestType.class, value);
+    }
+    
     /**
      * Create an instance of {@link JAXBElement }{@code <}{@link ErrorResponseType }{@code >}}
      * 
@@ -344,6 +373,17 @@ public class ObjectFactory {
         return new JAXBElement<SignResponseType>(_GetNextRequestTypeSignResponse_QNAME, SignResponseType.class, GetNextRequestType.class, value);
     }
 
+    
+    /**
+     * Create an instance of {@link JAXBElement }{@code <}{@link BulkSignRequestType }{@code >}}
+     * 
+     */
+    @XmlElementDecl(namespace = "http://www.egiz.gv.at/stal", name = "BulkSignRequest", scope = GetNextRequestResponseType.class)
+    public JAXBElement<BulkSignRequestType> createGetNextRequestResponseTypeBulkSignRequest(BulkSignRequestType value) {
+        return new JAXBElement<BulkSignRequestType>(_GetNextRequestResponseTypeBulkSignRequest_QNAME, BulkSignRequestType.class, GetNextRequestResponseType.class, value);
+    }
+    
+    
     /**
      * Create an instance of {@link JAXBElement }{@code <}{@link InfoboxReadResponseType }{@code >}}
      * 
diff --git a/STALService/src/main/java/at/gv/egiz/stal/service/types/RequestType.java b/STALService/src/main/java/at/gv/egiz/stal/service/types/RequestType.java
index 2cf88988..fcefbd09 100644
--- a/STALService/src/main/java/at/gv/egiz/stal/service/types/RequestType.java
+++ b/STALService/src/main/java/at/gv/egiz/stal/service/types/RequestType.java
@@ -55,7 +55,8 @@ import javax.xml.bind.annotation.XmlType;
     SignRequestType.class,
     InfoboxReadRequestType.class,
     QuitRequestType.class,
-    StatusRequestType.class
+    StatusRequestType.class,
+    BulkSignRequestType.class
 })
 public abstract class RequestType {
 
diff --git a/STALService/src/main/java/at/gv/egiz/stal/service/types/ResponseType.java b/STALService/src/main/java/at/gv/egiz/stal/service/types/ResponseType.java
index 02a91ef0..26c3de96 100644
--- a/STALService/src/main/java/at/gv/egiz/stal/service/types/ResponseType.java
+++ b/STALService/src/main/java/at/gv/egiz/stal/service/types/ResponseType.java
@@ -54,7 +54,8 @@ import javax.xml.bind.annotation.XmlType;
     ErrorResponseType.class,
     InfoboxReadResponseType.class,
     SignResponseType.class,
-    StatusResponseType.class
+    StatusResponseType.class,
+    BulkSignResponseType.class
 })
 public abstract class ResponseType {
 
diff --git a/STALService/src/main/java/at/gv/egiz/stal/service/types/SignRequestType.java b/STALService/src/main/java/at/gv/egiz/stal/service/types/SignRequestType.java
index 6688d720..b5920d0a 100644
--- a/STALService/src/main/java/at/gv/egiz/stal/service/types/SignRequestType.java
+++ b/STALService/src/main/java/at/gv/egiz/stal/service/types/SignRequestType.java
@@ -65,6 +65,8 @@ import javax.xml.bind.annotation.XmlValue;
  *         &lt;/element&gt;
  *         &lt;element name="SignatureMethod" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/&gt;
  *         &lt;element name="DigestMethod" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/&gt;
+ *         &lt;element name="displayName" type="{http://www.w3.org/2001/XMLSchema}string minOccurs="0"/&gt;
+ *         &lt;element name="mimeType" type="{http://www.w3.org/2001/XMLSchema}string minOccurs="0"/&gt;
  *         &lt;element name="ExcludedByteRange" minOccurs="0"&gt;
  *           &lt;complexType&gt;
  *             &lt;complexContent&gt;
@@ -89,6 +91,8 @@ import javax.xml.bind.annotation.XmlValue;
     "signedInfo",
     "signatureMethod",
     "digestMethod",
+    "displayName",
+    "mimeType",
     "excludedByteRange"
 })
 public class SignRequestType
@@ -103,6 +107,10 @@ public class SignRequestType
     protected String signatureMethod;
     @XmlElement(name = "DigestMethod")
     protected String digestMethod;
+    @XmlElement(name = "displayName", required = true)
+    protected String displayName;
+    @XmlElement(name = "mimeType", required = true)
+    protected String mimeType;
     @XmlElement(name = "ExcludedByteRange")
     protected SignRequestType.ExcludedByteRange excludedByteRange;
 
@@ -190,6 +198,55 @@ public class SignRequestType
         return digestMethod;
     }
 
+    /**
+     * Sets the value of the displayName property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setDisplayName(String value) {
+        this.displayName = value;
+    }
+    
+    /**
+     * Gets the value of the displayName property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getDisplayName() {
+        return displayName;
+    }
+    
+    /**
+     * 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;
+    }
+    
     /**
      * Sets the value of the digestMethod property.
      * 
@@ -233,14 +290,14 @@ public class SignRequestType
      * <p>The following schema fragment specifies the expected content contained within this class.
      * 
      * <pre>
-     * &lt;complexType&gt;
-     *   &lt;complexContent&gt;
-     *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType"&gt;
-     *       &lt;attribute name="from" use="required" type="{http://www.w3.org/2001/XMLSchema}unsignedLong" /&gt;
-     *       &lt;attribute name="to" use="required" type="{http://www.w3.org/2001/XMLSchema}unsignedLong" /&gt;
-     *     &lt;/restriction&gt;
-     *   &lt;/complexContent&gt;
-     * &lt;/complexType&gt;
+     * &lt;complexType>
+     *   &lt;complexContent>
+     *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+     *       &lt;attribute name="from" use="required" type="{http://www.w3.org/2001/XMLSchema}unsignedLong" />
+     *       &lt;attribute name="to" use="required" type="{http://www.w3.org/2001/XMLSchema}unsignedLong" />
+     *     &lt;/restriction>
+     *   &lt;/complexContent>
+     * &lt;/complexType>
      * </pre>
      * 
      * 
@@ -313,13 +370,13 @@ public class SignRequestType
      * <p>The following schema fragment specifies the expected content contained within this class.
      * 
      * <pre>
-     * &lt;complexType&gt;
-     *   &lt;simpleContent&gt;
-     *     &lt;extension base="&lt;http://www.w3.org/2001/XMLSchema&gt;base64Binary"&gt;
-     *       &lt;attribute name="IsCMSSignedAttributes" type="{http://www.w3.org/2001/XMLSchema}boolean" default="false" /&gt;
-     *     &lt;/extension&gt;
-     *   &lt;/simpleContent&gt;
-     * &lt;/complexType&gt;
+     * &lt;complexType>
+     *   &lt;simpleContent>
+     *     &lt;extension base="&lt;http://www.w3.org/2001/XMLSchema>base64Binary">
+     *       &lt;attribute name="IsCMSSignedAttributes" type="{http://www.w3.org/2001/XMLSchema}boolean" default="false" />
+     *     &lt;/extension>
+     *   &lt;/simpleContent>
+     * &lt;/complexType>
      * </pre>
      * 
      * 
-- 
cgit v1.2.3