From da6c49cbea9c80ad057a5fc3b698ce14ad9a7415 Mon Sep 17 00:00:00 2001
From: tkellner <tkellner@8a26b1a7-26f0-462f-b9ef-d0e30c41f5a4>
Date: Fri, 13 Dec 2013 01:57:31 +0000
Subject: Add DigestMethod to STAL SignRequest, check digest value in secure
 viewer

NOTE: This currently disables viewing signature data which uses the
      ExcludeByteRange feature, e.g. PAdES signatures.

git-svn-id: https://joinup.ec.europa.eu/svn/mocca/trunk@1263 8a26b1a7-26f0-462f-b9ef-d0e30c41f5a4
---
 .../stal/service/translator/STALTranslator.java    |  2 ++
 .../egiz/stal/service/types/SignRequestType.java   | 30 +++++++++++++++++++++-
 .../service/translator/STALTranslatorTest.java     |  3 +++
 3 files changed, 34 insertions(+), 1 deletion(-)

(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 28d60ed6..5ddadbe7 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
@@ -224,6 +224,7 @@ public class STALTranslator {
         signedInfo.setIsCMSSignedAttributes(((SignRequest) request).getSignedInfo().isIsCMSSignedAttributes());
         req.setSignedInfo(signedInfo);
         req.setSignatureMethod(((SignRequest) request).getSignatureMethod());
+        req.setDigestMethod(((SignRequest) request).getDigestMethod());
         //TODO add hashdatainput (refactor signRequestType)
         return of.createGetNextRequestResponseTypeSignRequest(req);
       } else if (request instanceof InfoboxReadRequest) {
@@ -255,6 +256,7 @@ public class STALTranslator {
         signedInfo.setIsCMSSignedAttributes(((SignRequestType) request).getSignedInfo().isIsCMSSignedAttributes());
         stalReq.setSignedInfo(signedInfo);
         stalReq.setSignatureMethod(((SignRequestType) request).getSignatureMethod());
+        stalReq.setDigestMethod(((SignRequestType) request).getDigestMethod());
         return stalReq;
       } else if (request instanceof QuitRequestType) {
         return new QuitRequest();
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 50a00406..67755d69 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
@@ -61,6 +61,7 @@ import javax.xml.bind.annotation.XmlValue;
  *           &lt;/complexType>
  *         &lt;/element>
  *         &lt;element name="SignatureMethod" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
+ *         &lt;element name="DigestMethod" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
  *       &lt;/sequence>
  *     &lt;/extension>
  *   &lt;/complexContent>
@@ -73,7 +74,8 @@ import javax.xml.bind.annotation.XmlValue;
 @XmlType(name = "SignRequestType", propOrder = {
     "keyIdentifier",
     "signedInfo",
-    "signatureMethod"
+    "signatureMethod",
+    "digestMethod"
 })
 public class SignRequestType
     extends RequestType
@@ -85,6 +87,8 @@ public class SignRequestType
     protected SignRequestType.SignedInfo signedInfo;
     @XmlElement(name = "SignatureMethod")
     protected String signatureMethod;
+    @XmlElement(name = "DigestMethod")
+    protected String digestMethod;
 
     /**
      * Gets the value of the keyIdentifier property.
@@ -158,6 +162,30 @@ public class SignRequestType
         this.signatureMethod = value;
     }
 
+    /**
+     * Gets the value of the digestMethod property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getDigestMethod() {
+        return digestMethod;
+    }
+
+    /**
+     * Sets the value of the digestMethod property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setDigestMethod(String value) {
+        this.digestMethod = value;
+    }
+
 
     /**
      * <p>Java class for anonymous complex type.
diff --git a/STALService/src/test/java/at/gv/egiz/stal/service/translator/STALTranslatorTest.java b/STALService/src/test/java/at/gv/egiz/stal/service/translator/STALTranslatorTest.java
index 98d301a7..a82006fc 100644
--- a/STALService/src/test/java/at/gv/egiz/stal/service/translator/STALTranslatorTest.java
+++ b/STALService/src/test/java/at/gv/egiz/stal/service/translator/STALTranslatorTest.java
@@ -106,6 +106,7 @@ public class STALTranslatorTest {
     assertEquals(request.getSignedInfo().getValue(), resultT.getSignedInfo().getValue());
     assertEquals(request.getSignedInfo().isIsCMSSignedAttributes(), resultT.getSignedInfo().isIsCMSSignedAttributes());
     assertEquals(request.getSignatureMethod(), resultT.getSignatureMethod());
+    assertEquals(request.getDigestMethod(), resultT.getDigestMethod());
   }
 
   /**
@@ -120,6 +121,7 @@ public class STALTranslatorTest {
     signedInfo.setValue("signedinfo".getBytes());
     req.setSignedInfo(signedInfo);
     req.setSignatureMethod("signatureMethod");
+    req.setDigestMethod("digestMethod");
     JAXBElement<? extends RequestType> request = of.createGetNextRequestResponseTypeSignRequest(req);
     STALTranslator instance = new STALTranslator();
     STALRequest result = instance.translateWSRequest(request);
@@ -128,6 +130,7 @@ public class STALTranslatorTest {
     assertEquals(req.getSignedInfo().getValue(), ((SignRequest) result).getSignedInfo().getValue());
     assertEquals(req.getSignedInfo().isIsCMSSignedAttributes(), ((SignRequest) result).getSignedInfo().isIsCMSSignedAttributes());
     assertEquals(req.getSignatureMethod(), ((SignRequest) result).getSignatureMethod());
+    assertEquals(req.getDigestMethod(), ((SignRequest) result).getDigestMethod());
   }
 
   @Test(expected=RuntimeException.class)
-- 
cgit v1.2.3