From e1535be7c97e86e40e04258cbdaf47f60e6292bf Mon Sep 17 00:00:00 2001 From: Thomas Lenz Date: Mon, 7 Aug 2017 16:30:58 +0200 Subject: add PAdES conformity flag to CAdES SOAP interface. Info: additional work is required when IAIK-MOA is updated --- .../at/gv/egovernment/moaspss/util/Constants.java | 2 +- .../resources/resources/schemas/MOA-SPSS-3.1.0.xsd | 814 +++++++++++++++++++++ moaSig/handbook/handbook/usage/usage.html | 4 +- .../gv/egovernment/moa/spss/api/SPSSFactory.java | 3 +- .../moa/spss/api/cmssign/SingleSignatureInfo.java | 8 + .../moa/spss/api/impl/SPSSFactoryImpl.java | 3 +- .../spss/api/impl/SingleSignatureInfoCMSImpl.java | 9 +- .../xmlbind/CreateCMSSignatureRequestParser.java | 9 +- .../server/invoke/CMSSignatureCreationInvoker.java | 64 +- .../resources/resources/wsdl/MOA-SPSS-2.0.0.wsdl | 2 +- .../resources/resources/wsdl/MOA-SPSS-3.1.0.xsd | 814 +++++++++++++++++++++ .../resources/schemas/MOA-SPSS-2.0.0.wsdl | 2 +- .../src/main/webapp/schemas/MOA-SPSS-3.1.0.xsd | 814 +++++++++++++++++++++ 13 files changed, 2498 insertions(+), 50 deletions(-) create mode 100644 moaSig/common/src/main/resources/resources/schemas/MOA-SPSS-3.1.0.xsd create mode 100644 moaSig/moa-sig-lib/src/main/resources/resources/wsdl/MOA-SPSS-3.1.0.xsd create mode 100644 moaSig/moa-sig/src/main/webapp/schemas/MOA-SPSS-3.1.0.xsd diff --git a/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/Constants.java b/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/Constants.java index 549f8e3..4640a90 100644 --- a/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/Constants.java +++ b/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/Constants.java @@ -83,7 +83,7 @@ public interface Constants { /** Local location of the MOA XML schema definition. */ public static final String MOA_SCHEMA_LOCATION = - SCHEMA_ROOT + "MOA-SPSS-3.0.0.xsd"; + SCHEMA_ROOT + "MOA-SPSS-3.1.0.xsd"; /** URI of the MOA configuration XML namespace. */ public static final String MOA_CONFIG_NS_URI = diff --git a/moaSig/common/src/main/resources/resources/schemas/MOA-SPSS-3.1.0.xsd b/moaSig/common/src/main/resources/resources/schemas/MOA-SPSS-3.1.0.xsd new file mode 100644 index 0000000..9a2836e --- /dev/null +++ b/moaSig/common/src/main/resources/resources/schemas/MOA-SPSS-3.1.0.xsd @@ -0,0 +1,814 @@ + + + + + + + + + + + + + + + + + + + + Ermöglichung der Stapelsignatur durch + wiederholte Angabe dieses Elements + + + + + + + + + + + + + + + + + + + + + + + Kardinalität 1..oo erlaubt die Antwort auf eine + Stapelsignatur-Anfrage + + + + Resultat, falls die Signaturerstellung + erfolgreich war + + + + + + + + + + + + + + + + + + + + Ermöglichung der Stapelsignatur durch + wiederholte Angabe dieses Elements + + + + + + + + + + + + + + + + + + + Auswahl: Entweder explizite Angabe des + Signaturorts sowie ggf. sinnvoller Supplements im Zshg. mit + der Signaturumgebung, oder Verweis auf ein benanntes Profil + + + + + + + + + + + + + + + + + + + Kardinalität 1..oo erlaubt die Antwort auf eine + Stapelsignatur-Anfrage + + + + Resultat, falls die Signaturerstellung + erfolgreich war + + + + + + + + + + + + + + + + + + + + + + + + + + Ermöglichung der Stapelsignatur durch + wiederholte Angabe dieses Elements + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + mit diesem Profil wird eine Menge von + vertrauenswürdigen Wurzelzertifikaten spezifiziert + + + + + + + + + + + + only ds:X509Data and RetrievalMethod is + supported; QualifiedCertificate is included as + X509Data/any;publicAuthority is included as X509Data/any; + SecureSignatureCreationDevice is included as X509Data/any, + IssuingCountry is included as X509Data/any + + + + + + + + + + + + + only ds:X509Data and RetrievalMethod is + supported; QualifiedCertificate is included as + X509Data/any;publicAuthority is included as X509Data/any; + SecureSignatureCreationDevice is included as X509Data/any, + IssuingCountry is included as X509Data/any, + TSLInformation is included as X509Data/any + + + + + + + + + + + + + + + + + + + + + + + + + + + + mit diesem Profil wird eine Menge von + vertrauenswürdigen Wurzelzertifikaten spezifiziert + + + + + + + + + + + + + + + + + + + + + + asics or asice + + + + + mit diesem Profil wird eine Menge von + vertrauenswürdigen Wurzelzertifikaten spezifiziert + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + only ds:X509Data and RetrievalMethod is + supported; QualifiedCertificate is included as + X509Data/any;publicAuthority is included as X509Data/any; + SecureSignatureCreationDevice is included as X509Data/any, + IssuingCountry is included as X509Data/any + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Pro dsig:Reference-Element in der zu + überprüfenden XML-Signatur muss hier ein + ReferenceInfo-Element erscheinen. Die Reihenfolge der einzelnen + ReferenceInfo Elemente entspricht jener der dsig:Reference + Elemente in der XML-Signatur. + + + + + + + + + + mit diesem Profil wird eine Menge von + vertrauenswürdigen Wurzelzertifikaten spezifiziert + + + + + + + + + + + + only ds:X509Data and ds:RetrievalMethod is + supported; QualifiedCertificate is included as X509Data/any; + PublicAuthority is included as X509Data/any; + SecureSignatureCreationDevice is included as X509Data/any, + IssuingCountry is included as X509Data/any + + + + + + + + + + + + + + + + + only ds:X509Data and ds:RetrievalMethod is + supported; QualifiedCertificate is included as X509Data/any; + PublicAuthority is included as X509Data/any; + SecureSignatureCreationDevice is included as X509Data/any, + IssuingCountry is included as X509Data/any + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Auswahl: Entweder explizite Angabe EINER + Transformationskette inklusive ggf. sinnvoller Supplements oder + Verweis auf ein benanntes Profil + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Resultat, falls die Signaturerstellung + erfolgreich war + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Resultat, falls die Signaturerstellung gescheitert + ist + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Ein oder mehrere Transformationswege können von + der Applikation an MOA mitgeteilt werden. Die zu prüfende Signatur + hat zumindest einem dieser Transformationswege zu entsprechen. Die + Angabe kann explizit oder als Profilbezeichner erfolgen. + + + + + + Profilbezeichner für einen Transformationsweg + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Die Angabe des Transformationsparameters + (explizit oder als Hashwert) kann unterlassen werden, wenn die + Applikation von der Unveränderlichkeit des Inhalts der in + "Transformationsparamter", Attribut "URI" angegebenen URI ausgehen + kann. + + + + Der Transformationsparameter explizit angegeben. + + + + + + Der Hashwert des Transformationsparameters. + + + + + + + + + + + + + + + + + + + + + + + Explizite Angabe des Transformationswegs + + + + + + + + Alle impliziten Transformationsparameter, die + zum Durchlaufen der oben angeführten Transformationskette + bekannt sein müssen, müssen hier angeführt werden. Das + Attribut "URI" bezeichnet den Transformationsparameter in exakt + jener Weise, wie er in der zu überprüfenden Signatur gebraucht + wird. + + + + + + + + + + + + + + + + diff --git a/moaSig/handbook/handbook/usage/usage.html b/moaSig/handbook/handbook/usage/usage.html index df8caea..6e42d4a 100644 --- a/moaSig/handbook/handbook/usage/usage.html +++ b/moaSig/handbook/handbook/usage/usage.html @@ -98,8 +98,8 @@

CreateCMSSignatureRequest.Base64Content.xml ist ein einfacher XML-Request zur Erzeugung einer CAdES-Signatur. Sein Aufbau wird nachfolgend analysiert:

  <KeyIdentifier>KG_allgemein</KeyIdentifier> 

KG_allgemein bezeichnet eine Schlüsselgruppe, aus der SS einen Signaturschlüssel selektieren soll und muss einer in der SP/SS-Konfigurationsdatei definierten Schlüsselgruppe entsprechen.

-
  <SingleSignatureInfo SecurityLayerConformity="true">
-

Für jedes SingleSignatureInfoElement wird eine eigene CMS/CAdES-Signatur erzeugt. Wird das Attribut SecurityLayerConformity auf true gesetzt, dann wird eine CAdES-Signatur gemäß Security-Layer Spezifikation erzeugt; d.h. es werden signierte Properties (Zeitpunkt der Signaturerstellung, das für die Signaturüberprüfung zu verwendende Zertifikat, Metainformationen zu den signierten Datenobjekten).

+
  <SingleSignatureInfo SecurityLayerConformity="true" PAdESConformity="true">
+

Für jedes SingleSignatureInfoElement wird eine eigene CMS/CAdES-Signatur erzeugt. Wird das Attribut SecurityLayerConformity auf true gesetzt, dann wird eine CAdES-Signatur gemäß Security-Layer Spezifikation erzeugt; d.h. es werden signierte Properties (Zeitpunkt der Signaturerstellung, das für die Signaturüberprüfung zu verwendende Zertifikat, Metainformationen zu den signierten Datenobjekten). Wird das Attribut PAdESConformity auf true gesetzt, dann wird eine CAdES-Signature entsprechend dem PAdES Standard erzeugt (die CAdES Signatur enthält in diesem Fall keinen Signaturzeitpunkt und keinen MimeType da diese Informationen im PDF eingebettet sind oder durch das PDF vorgegeben werden).

  <DataObjectInfo Structure="enveloping">
 	  <DataObject>
 	    <MetaInfo>
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/SPSSFactory.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/SPSSFactory.java
index aadaefb..a39edf4 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/SPSSFactory.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/SPSSFactory.java
@@ -190,13 +190,14 @@ public abstract class SPSSFactory {
    * @param dataObjectInfo The data object that will be signed.
    * @param securityLayerConform If true, a Security Layer conform
    * signature manifest is created, otherwise not.
+ * @param isPAdESSignature 
    * @return The SingleSignatureInfo containing the above data.
    * 
    * @post return != null
    */
   public abstract at.gv.egovernment.moa.spss.api.cmssign.SingleSignatureInfo createSingleSignatureInfoCMS(	
     at.gv.egovernment.moa.spss.api.cmssign.DataObjectInfo dataObjectInfo,
-    boolean securityLayerConform);
+    boolean securityLayerConform, boolean isPAdESSignature);
   
 
   
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/cmssign/SingleSignatureInfo.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/cmssign/SingleSignatureInfo.java
index 1f87a50..4d56cf3 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/cmssign/SingleSignatureInfo.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/cmssign/SingleSignatureInfo.java
@@ -48,4 +48,12 @@ public interface SingleSignatureInfo {
    * will be created, false otherwise.
    */
   public boolean isSecurityLayerConform();
+  
+  /**
+   * Check whether a PAdES conform CAdES signature will be created 
+   * 
+   * @return true, if a PAdES conform CAdES signature 
+   * will be created, false otherwise.
+   */
+  public boolean isPAdESConform();
 }
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/SPSSFactoryImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/SPSSFactoryImpl.java
index ea8d295..b9fad4f 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/SPSSFactoryImpl.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/SPSSFactoryImpl.java
@@ -124,10 +124,11 @@ public class SPSSFactoryImpl extends SPSSFactory {
 	}
 
 	public at.gv.egovernment.moa.spss.api.cmssign.SingleSignatureInfo createSingleSignatureInfoCMS(
-			at.gv.egovernment.moa.spss.api.cmssign.DataObjectInfo dataObjectInfo, boolean securityLayerConform) {
+			at.gv.egovernment.moa.spss.api.cmssign.DataObjectInfo dataObjectInfo, boolean securityLayerConform, boolean isPAdESConform) {
 		SingleSignatureInfoCMSImpl singleSignatureInfo = new SingleSignatureInfoCMSImpl();
 		singleSignatureInfo.setDataObjectInfo(dataObjectInfo);
 		singleSignatureInfo.setSecurityLayerConform(securityLayerConform);
+		singleSignatureInfo.setPAdESConform(isPAdESConform);
 		return singleSignatureInfo;
 	}
 
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/SingleSignatureInfoCMSImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/SingleSignatureInfoCMSImpl.java
index cb36515..c8558dc 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/SingleSignatureInfoCMSImpl.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/SingleSignatureInfoCMSImpl.java
@@ -40,6 +40,7 @@ public class SingleSignatureInfoCMSImpl implements SingleSignatureInfo {
 
 
   private boolean securityLayerConform = true;
+  private boolean padesConform = false;
 
   public void setDataObjectInfo(DataObjectInfo dataObjectInfo) {
     this.dataObjectInfo = dataObjectInfo;
@@ -49,9 +50,15 @@ public class SingleSignatureInfoCMSImpl implements SingleSignatureInfo {
     return dataObjectInfo;
   }
 
+  public boolean isPAdESConform() {
+	return padesConform;
+  }
 
+  public void setPAdESConform(boolean padesConform) {
+	this.padesConform = padesConform;
+  }
 
-  public void setSecurityLayerConform(boolean securityLayerConform) {
+public void setSecurityLayerConform(boolean securityLayerConform) {
     this.securityLayerConform = securityLayerConform;
   }
 
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlbind/CreateCMSSignatureRequestParser.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlbind/CreateCMSSignatureRequestParser.java
index 3550c27..a4c4d29 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlbind/CreateCMSSignatureRequestParser.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlbind/CreateCMSSignatureRequestParser.java
@@ -67,6 +67,7 @@ public class CreateCMSSignatureRequestParser {
   private static final String DATA_OBJECT_XPATH = MOA + "DataObject";
   
   private static final String SL_CONFORM_ATTR_NAME = "SecurityLayerConformity";
+  private static final String IS_PADES_SIGNATURE_ATTR_NAME = "PAdESConformity";
 
   private static final String META_INFO_XPATH = MOA + "MetaInfo";
   private static final String CONTENT_XPATH = MOA + "Content";
@@ -149,6 +150,7 @@ public class CreateCMSSignatureRequestParser {
 
     DataObjectInfo dataObjectInfo = parseDataObjectInfo(sigInfoElem);
     boolean securityLayerConform;
+    boolean isPAdESSignature = false;
 
     if (sigInfoElem.hasAttribute(SL_CONFORM_ATTR_NAME)) {
       securityLayerConform =
@@ -157,9 +159,14 @@ public class CreateCMSSignatureRequestParser {
       securityLayerConform = true;
     }
 
+    if (sigInfoElem.hasAttribute(IS_PADES_SIGNATURE_ATTR_NAME)) {
+    	isPAdESSignature = BoolUtils.valueOf(sigInfoElem.getAttribute(IS_PADES_SIGNATURE_ATTR_NAME));
+    }
+    
     return factory.createSingleSignatureInfoCMS(
       dataObjectInfo,
-      securityLayerConform);
+      securityLayerConform,
+      isPAdESSignature);
   }
 
   /**
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/CMSSignatureCreationInvoker.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/CMSSignatureCreationInvoker.java
index 8e9380e..753d769 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/CMSSignatureCreationInvoker.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/CMSSignatureCreationInvoker.java
@@ -154,6 +154,7 @@ public class CMSSignatureCreationInvoker {
 	  CreateCMSSignatureResponse response = new CreateCMSSignatureResponseImpl();
 
 	  boolean isSecurityLayerConform = false;
+	  boolean isPAdESConformRequired = false;
 	  String structure = null;
 	  String mimetype = null;
 	  
@@ -164,6 +165,14 @@ public class CMSSignatureCreationInvoker {
 	  while (singleSignatureInfoIter.hasNext()) {
 		  SingleSignatureInfo singleSignatureInfo = (SingleSignatureInfo) singleSignatureInfoIter.next();
 		  isSecurityLayerConform = singleSignatureInfo.isSecurityLayerConform();
+		  isPAdESConformRequired = singleSignatureInfo.isPAdESConform();
+		  
+		  //PAdES conformity always requires SecurityLayer conformity, because certificates must be included
+		  if (isPAdESConformRequired && !isSecurityLayerConform) {
+			  isSecurityLayerConform = isPAdESConformRequired;
+			  Logger.debug("Set SecurityLayerConformity to 'true' because PAdES conformity is requested");
+			  
+		  }
 		  
 		  
 		  DataObjectInfo dataObjectInfo = singleSignatureInfo.getDataObjectInfo();
@@ -171,7 +180,17 @@ public class CMSSignatureCreationInvoker {
 		  
 		  CMSDataObject dataobject = dataObjectInfo.getDataObject();
 		  MetaInfo metainfo = dataobject.getMetaInfo();
-		  mimetype = metainfo.getMimeType();
+		  
+		  /*TODO: does not set SigningTime in IAIK-MOA request or any other
+		   * API method/parameter when IAIK-MOA API is updated.
+		   * Maybe also update mimetype solution below
+		   */
+		  //does not set mimetype if PAdES conformity is requested
+		  if (!isPAdESConformRequired) {
+			  mimetype = metainfo.getMimeType();
+			  
+		  } else
+			  Logger.debug("PAdES conformity requested. Does not set mimetype into CAdES signature");
 			  
 		  CMSContent content = dataobject.getContent();
 		  InputStream contentIs = null;
@@ -218,7 +237,7 @@ public class CMSSignatureCreationInvoker {
 			    
 		  // get digest algorithm
 		  String digestAlgorithm = getDigestAlgorithm(config, keyGroupID);
-			    
+	  
 		  // create CMSSignatureCreation profile:			    
 		  CMSSignatureCreationProfile profile = new CMSSignatureCreationProfileImpl(
 				  keySet,
@@ -239,39 +258,7 @@ public class CMSSignatureCreationInvoker {
 			  boolean base64 = true;
 			  OutputStream  signedDataStream = signature.getSignature(out, base64);
 					 
-			  // now write the data to be signed to the signedDataStream
-			  
-			  // 
-			  int byteRead;
-			  /*
-			  BigDecimal counter = new BigDecimal("0");
-			  BigDecimal one = new BigDecimal("1");
-			  
-			  ByteArrayOutputStream filteredStream = new ByteArrayOutputStream();
-			  
-			  while ((byteRead=contentIs.read()) >= 0) {
-				  //System.out.println("counterXX: " + counter);
-				  
-				  // Wrong behaviour < 3
-				  // excluded bytes should not be part of the signature as 0 bytes
-				  // they should be not part of the signature at all!
-				  
-//				  if (inRange(counter, dataobject))
-//					  filteredStream.write(0);
-//				  else
-//					  filteredStream.write(byteRead);
-//				  
-				  
-				  // correct behaviour
-				  if (!inRange(counter, dataobject)) {
-					  filteredStream.write(byteRead);
-				  }
-
-				  counter = counter.add(one);
-			  }
-			  byte[] data = filteredStream.toByteArray();
-			  signedDataStream.write(data, 0, data.length);
-			  */
+			  // now write the data to be signed to the signedDataStream			  
 			  // Stream based, this should have a better performance
 			  FilteredOutputStream filteredOuputStream = new FilteredOutputStream(
 					  signedDataStream, 4096, dataobject.getExcludeByteRangeFrom(),
@@ -279,12 +266,7 @@ public class CMSSignatureCreationInvoker {
 			  
 			  IOUtils.copyLarge(contentIs, filteredOuputStream);
 			  filteredOuputStream.flush();
-//			  byte[] buf = new byte[4096];
-//			  int bytesRead;
-//			  while ((bytesRead = contentIs.read(buf)) >= 0) {
-//				  signedDataStream.write(buf, 0, bytesRead);
-//			  } 
-//					 
+ 
 			  // finish SignedData processing by closing signedDataStream
 			  signedDataStream.close();
 			  String base64value = out.toString();
diff --git a/moaSig/moa-sig-lib/src/main/resources/resources/wsdl/MOA-SPSS-2.0.0.wsdl b/moaSig/moa-sig-lib/src/main/resources/resources/wsdl/MOA-SPSS-2.0.0.wsdl
index f11c669..338282e 100644
--- a/moaSig/moa-sig-lib/src/main/resources/resources/wsdl/MOA-SPSS-2.0.0.wsdl
+++ b/moaSig/moa-sig-lib/src/main/resources/resources/wsdl/MOA-SPSS-2.0.0.wsdl
@@ -3,7 +3,7 @@
   Web Service Description for MOA SP/SS 1.4
 -->
 
-	
+	
 	
 		
 	
diff --git a/moaSig/moa-sig-lib/src/main/resources/resources/wsdl/MOA-SPSS-3.1.0.xsd b/moaSig/moa-sig-lib/src/main/resources/resources/wsdl/MOA-SPSS-3.1.0.xsd
new file mode 100644
index 0000000..15f8a2c
--- /dev/null
+++ b/moaSig/moa-sig-lib/src/main/resources/resources/wsdl/MOA-SPSS-3.1.0.xsd
@@ -0,0 +1,814 @@
+
+
+
+	
+	
+	
+	
+	
+		
+			
+				
+			
+		
+	
+	
+		
+			
+			
+				
+					Ermöglichung der Stapelsignatur durch
+						wiederholte Angabe dieses Elements
+				
+				
+					
+						
+							
+								
+									
+								
+							
+						
+					
+					
+					
+				
+			
+		
+	
+	
+	
+	
+		
+			
+				Kardinalität 1..oo erlaubt die Antwort auf eine
+					Stapelsignatur-Anfrage
+			
+			
+				
+					Resultat, falls die Signaturerstellung
+						erfolgreich war
+				
+			
+			
+		
+	
+	
+	
+	
+		
+			
+				
+			
+		
+	
+	
+		
+			
+			
+				
+					Ermöglichung der Stapelsignatur durch
+						wiederholte Angabe dieses Elements
+				
+				
+					
+						
+							
+								
+									
+										
+									
+								
+							
+						
+						
+							
+								
+									
+									
+										
+											Auswahl: Entweder explizite Angabe des
+												Signaturorts sowie ggf. sinnvoller Supplements im Zshg. mit
+												der Signaturumgebung, oder Verweis auf ein benanntes Profil
+											
+										
+										
+										
+									
+								
+							
+						
+					
+					
+				
+			
+		
+	
+	
+	
+		
+			
+				Kardinalität 1..oo erlaubt die Antwort auf eine
+					Stapelsignatur-Anfrage
+			
+			
+				
+					Resultat, falls die Signaturerstellung
+						erfolgreich war
+				
+				
+					
+						
+					
+				
+			
+			
+		
+	
+	
+	
+	
+	
+		
+			
+				
+			
+		
+	
+	
+		
+			
+			
+				
+					Ermöglichung der Stapelsignatur durch
+						wiederholte Angabe dieses Elements
+				
+				
+					
+						
+						
+						
+						
+					
+				
+			
+		
+	
+	
+	
+	
+		
+			
+		
+	
+	
+	
+	
+		
+			
+				
+					
+				
+			
+		
+	
+	
+		
+			
+			
+			
+			
+			
+				
+					mit diesem Profil wird eine Menge von
+						vertrauenswürdigen Wurzelzertifikaten spezifiziert
+					
+				
+			
+		
+	
+	
+	
+	
+		
+			
+				
+					only ds:X509Data and RetrievalMethod is
+						supported; QualifiedCertificate is included as
+						X509Data/any;publicAuthority is included as X509Data/any;
+						SecureSignatureCreationDevice is included as X509Data/any,
+						IssuingCountry is included as X509Data/any
+				
+			
+			
+			
+			
+			
+		
+	
+	
+		
+			
+				
+					only ds:X509Data and RetrievalMethod is
+						supported; QualifiedCertificate is included as
+						X509Data/any;publicAuthority is included as X509Data/any;
+						SecureSignatureCreationDevice is included as X509Data/any,
+						IssuingCountry is included as X509Data/any,
+						TSLInformation is included as X509Data/any
+				
+			
+			
+			
+			
+			
+			
+		
+	
+	
+	
+	
+		
+			
+				
+					
+				
+			
+		
+	
+	
+		
+			
+			
+			
+			
+				
+					mit diesem Profil wird eine Menge von
+						vertrauenswürdigen Wurzelzertifikaten spezifiziert
+					
+				
+			
+		
+	
+	
+	
+	
+		
+			
+				
+			
+		
+	
+	
+		
+			
+			
+			
+			
+				
+					asics or asice
+				
+			
+			
+				
+					mit diesem Profil wird eine Menge von
+						vertrauenswürdigen Wurzelzertifikaten spezifiziert
+					
+				
+			
+		
+	
+	
+	
+	
+		
+			
+		
+	
+	
+		
+			
+			
+			
+		
+	
+	
+	
+	
+		
+			
+		
+	
+	
+		
+			
+				
+					only ds:X509Data and RetrievalMethod is
+						supported; QualifiedCertificate is included as
+						X509Data/any;publicAuthority is included as X509Data/any;
+						SecureSignatureCreationDevice is included as X509Data/any,
+						IssuingCountry is included as X509Data/any
+				
+			
+			
+			
+			
+			
+			
+		
+	
+	
+	
+	
+	
+		
+			
+			
+			
+				
+					
+						
+						
+					
+				
+			
+			
+				
+				
+			
+			
+				
+					
+						
+							
+								Pro dsig:Reference-Element in der zu
+									überprüfenden XML-Signatur muss hier ein
+									ReferenceInfo-Element erscheinen. Die Reihenfolge der einzelnen
+									ReferenceInfo Elemente entspricht jener der dsig:Reference
+									Elemente in der XML-Signatur.
+							
+						
+					
+					
+				
+			
+			
+			
+				
+					mit diesem Profil wird eine Menge von
+						vertrauenswürdigen Wurzelzertifikaten spezifiziert
+					
+				
+			
+		
+	
+	
+	
+	
+		
+			
+				
+					only ds:X509Data and ds:RetrievalMethod is
+						supported; QualifiedCertificate is included as X509Data/any;
+						PublicAuthority is included as X509Data/any;
+						SecureSignatureCreationDevice is included as X509Data/any,
+						IssuingCountry is included as X509Data/any
+				
+			
+			
+			
+			
+			
+			
+			
+			
+			
+		
+	
+	
+		
+			
+				
+					only ds:X509Data and ds:RetrievalMethod is
+						supported; QualifiedCertificate is included as X509Data/any;
+						PublicAuthority is included as X509Data/any;
+						SecureSignatureCreationDevice is included as X509Data/any,
+						IssuingCountry is included as X509Data/any
+				
+			
+			
+			
+			
+			
+			
+			
+			
+			
+			
+		
+	
+	
+		
+	
+	
+		
+			
+				
+					
+						
+							
+							
+						
+					
+				
+				
+			
+		
+	
+	
+		
+			
+			
+			
+		
+	
+	
+		
+			
+				
+					
+				
+			
+		
+	
+	
+		
+			
+				
+					
+						
+					
+				
+			
+			
+				
+					Auswahl: Entweder explizite Angabe EINER
+						Transformationskette inklusive ggf. sinnvoller Supplements oder
+						Verweis auf ein benanntes Profil
+				
+				
+				
+			
+		
+		
+			
+				
+					
+					
+				
+			
+		
+	
+	
+		
+			
+				
+					
+						
+					
+				
+			
+		
+		
+			
+				
+					
+					
+				
+			
+		
+	
+	
+		
+			
+			
+		
+	
+	
+		
+			
+			
+		
+	
+	
+		
+			
+			
+				
+					
+						Resultat, falls die Signaturerstellung
+							erfolgreich war
+					
+				
+				
+			
+		
+	
+	
+		
+			
+			
+		
+	
+	
+		
+			
+			
+		
+	
+	
+		
+			
+				
+					
+				
+			
+		
+	
+	
+		
+			
+			
+		
+	
+	
+		
+			
+			
+		
+	
+	
+		
+			
+			
+		
+	
+	
+		
+			
+			
+		
+	
+	
+		
+			
+				
+					
+					
+				
+			
+		
+	
+	
+		
+			
+				
+					
+					
+				
+			
+		
+	
+	
+		
+			
+				
+					
+					
+				
+			
+		
+	
+	
+		
+			
+				
+					
+					
+					
+				
+			
+		
+	
+	
+	
+		
+			Resultat, falls die Signaturerstellung gescheitert
+				ist
+		
+	
+	
+		
+			
+			
+		
+	
+	
+	
+		
+	
+	
+		
+			
+			
+		
+	
+	
+		
+	
+	
+		
+			
+		
+	
+	
+		
+			
+				
+			
+		
+	
+	
+		
+			
+			
+			
+		
+	
+	
+		
+			
+				
+					
+					
+				
+			
+		
+	
+	
+		
+			
+				
+			
+		
+	
+	
+		
+			
+				
+					
+					
+					
+				
+				
+			
+		
+	
+	
+		
+			
+				Ein oder mehrere Transformationswege können von
+					der Applikation an MOA mitgeteilt werden. Die zu prüfende Signatur
+					hat zumindest einem dieser Transformationswege zu entsprechen. Die
+					Angabe kann explizit oder als Profilbezeichner erfolgen.
+				
+			
+			
+			
+				
+					Profilbezeichner für einen Transformationsweg
+					
+				
+			
+		
+	
+	
+		
+			
+				
+					
+						
+						
+					
+				
+			
+		
+	
+	
+		
+			
+				
+					
+						
+						
+					
+				
+			
+		
+	
+	
+	
+	
+		
+			
+		
+	
+	
+		
+			
+				
+			
+		
+	
+	
+		
+			
+		
+	
+	
+		
+			
+				
+			
+		
+	
+	
+		
+			
+				Die Angabe des Transformationsparameters
+					(explizit oder als Hashwert) kann unterlassen werden, wenn die
+					Applikation von der Unveränderlichkeit des Inhalts der in
+					"Transformationsparamter", Attribut "URI" angegebenen URI ausgehen
+					kann.
+			
+			
+				
+					Der Transformationsparameter explizit angegeben.
+					
+				
+			
+			
+				
+					Der Hashwert des Transformationsparameters.
+					
+				
+				
+					
+						
+						
+					
+				
+			
+		
+		
+	
+	
+		
+			
+				
+				
+			
+		
+	
+	
+		
+			Explizite Angabe des Transformationswegs
+			
+		
+		
+			
+				
+				
+					
+						Alle impliziten Transformationsparameter, die
+							zum Durchlaufen der oben angeführten Transformationskette
+							bekannt sein müssen, müssen hier angeführt werden. Das
+							Attribut "URI" bezeichnet den Transformationsparameter in exakt
+							jener Weise, wie er in der zu überprüfenden Signatur gebraucht
+							wird.
+					
+				
+			
+		
+	
+	
+	
+	
+		
+			
+				
+				
+			
+		
+	
+
diff --git a/moaSig/moa-sig/src/main/resources/resources/schemas/MOA-SPSS-2.0.0.wsdl b/moaSig/moa-sig/src/main/resources/resources/schemas/MOA-SPSS-2.0.0.wsdl
index f822a52..6e91a2d 100644
--- a/moaSig/moa-sig/src/main/resources/resources/schemas/MOA-SPSS-2.0.0.wsdl
+++ b/moaSig/moa-sig/src/main/resources/resources/schemas/MOA-SPSS-2.0.0.wsdl
@@ -1,7 +1,7 @@
 
 
 
-	
+	
 	
 		
 	
diff --git a/moaSig/moa-sig/src/main/webapp/schemas/MOA-SPSS-3.1.0.xsd b/moaSig/moa-sig/src/main/webapp/schemas/MOA-SPSS-3.1.0.xsd
new file mode 100644
index 0000000..15f8a2c
--- /dev/null
+++ b/moaSig/moa-sig/src/main/webapp/schemas/MOA-SPSS-3.1.0.xsd
@@ -0,0 +1,814 @@
+
+
+
+	
+	
+	
+	
+	
+		
+			
+				
+			
+		
+	
+	
+		
+			
+			
+				
+					Ermöglichung der Stapelsignatur durch
+						wiederholte Angabe dieses Elements
+				
+				
+					
+						
+							
+								
+									
+								
+							
+						
+					
+					
+					
+				
+			
+		
+	
+	
+	
+	
+		
+			
+				Kardinalität 1..oo erlaubt die Antwort auf eine
+					Stapelsignatur-Anfrage
+			
+			
+				
+					Resultat, falls die Signaturerstellung
+						erfolgreich war
+				
+			
+			
+		
+	
+	
+	
+	
+		
+			
+				
+			
+		
+	
+	
+		
+			
+			
+				
+					Ermöglichung der Stapelsignatur durch
+						wiederholte Angabe dieses Elements
+				
+				
+					
+						
+							
+								
+									
+										
+									
+								
+							
+						
+						
+							
+								
+									
+									
+										
+											Auswahl: Entweder explizite Angabe des
+												Signaturorts sowie ggf. sinnvoller Supplements im Zshg. mit
+												der Signaturumgebung, oder Verweis auf ein benanntes Profil
+											
+										
+										
+										
+									
+								
+							
+						
+					
+					
+				
+			
+		
+	
+	
+	
+		
+			
+				Kardinalität 1..oo erlaubt die Antwort auf eine
+					Stapelsignatur-Anfrage
+			
+			
+				
+					Resultat, falls die Signaturerstellung
+						erfolgreich war
+				
+				
+					
+						
+					
+				
+			
+			
+		
+	
+	
+	
+	
+	
+		
+			
+				
+			
+		
+	
+	
+		
+			
+			
+				
+					Ermöglichung der Stapelsignatur durch
+						wiederholte Angabe dieses Elements
+				
+				
+					
+						
+						
+						
+						
+					
+				
+			
+		
+	
+	
+	
+	
+		
+			
+		
+	
+	
+	
+	
+		
+			
+				
+					
+				
+			
+		
+	
+	
+		
+			
+			
+			
+			
+			
+				
+					mit diesem Profil wird eine Menge von
+						vertrauenswürdigen Wurzelzertifikaten spezifiziert
+					
+				
+			
+		
+	
+	
+	
+	
+		
+			
+				
+					only ds:X509Data and RetrievalMethod is
+						supported; QualifiedCertificate is included as
+						X509Data/any;publicAuthority is included as X509Data/any;
+						SecureSignatureCreationDevice is included as X509Data/any,
+						IssuingCountry is included as X509Data/any
+				
+			
+			
+			
+			
+			
+		
+	
+	
+		
+			
+				
+					only ds:X509Data and RetrievalMethod is
+						supported; QualifiedCertificate is included as
+						X509Data/any;publicAuthority is included as X509Data/any;
+						SecureSignatureCreationDevice is included as X509Data/any,
+						IssuingCountry is included as X509Data/any,
+						TSLInformation is included as X509Data/any
+				
+			
+			
+			
+			
+			
+			
+		
+	
+	
+	
+	
+		
+			
+				
+					
+				
+			
+		
+	
+	
+		
+			
+			
+			
+			
+				
+					mit diesem Profil wird eine Menge von
+						vertrauenswürdigen Wurzelzertifikaten spezifiziert
+					
+				
+			
+		
+	
+	
+	
+	
+		
+			
+				
+			
+		
+	
+	
+		
+			
+			
+			
+			
+				
+					asics or asice
+				
+			
+			
+				
+					mit diesem Profil wird eine Menge von
+						vertrauenswürdigen Wurzelzertifikaten spezifiziert
+					
+				
+			
+		
+	
+	
+	
+	
+		
+			
+		
+	
+	
+		
+			
+			
+			
+		
+	
+	
+	
+	
+		
+			
+		
+	
+	
+		
+			
+				
+					only ds:X509Data and RetrievalMethod is
+						supported; QualifiedCertificate is included as
+						X509Data/any;publicAuthority is included as X509Data/any;
+						SecureSignatureCreationDevice is included as X509Data/any,
+						IssuingCountry is included as X509Data/any
+				
+			
+			
+			
+			
+			
+			
+		
+	
+	
+	
+	
+	
+		
+			
+			
+			
+				
+					
+						
+						
+					
+				
+			
+			
+				
+				
+			
+			
+				
+					
+						
+							
+								Pro dsig:Reference-Element in der zu
+									überprüfenden XML-Signatur muss hier ein
+									ReferenceInfo-Element erscheinen. Die Reihenfolge der einzelnen
+									ReferenceInfo Elemente entspricht jener der dsig:Reference
+									Elemente in der XML-Signatur.
+							
+						
+					
+					
+				
+			
+			
+			
+				
+					mit diesem Profil wird eine Menge von
+						vertrauenswürdigen Wurzelzertifikaten spezifiziert
+					
+				
+			
+		
+	
+	
+	
+	
+		
+			
+				
+					only ds:X509Data and ds:RetrievalMethod is
+						supported; QualifiedCertificate is included as X509Data/any;
+						PublicAuthority is included as X509Data/any;
+						SecureSignatureCreationDevice is included as X509Data/any,
+						IssuingCountry is included as X509Data/any
+				
+			
+			
+			
+			
+			
+			
+			
+			
+			
+		
+	
+	
+		
+			
+				
+					only ds:X509Data and ds:RetrievalMethod is
+						supported; QualifiedCertificate is included as X509Data/any;
+						PublicAuthority is included as X509Data/any;
+						SecureSignatureCreationDevice is included as X509Data/any,
+						IssuingCountry is included as X509Data/any
+				
+			
+			
+			
+			
+			
+			
+			
+			
+			
+			
+		
+	
+	
+		
+	
+	
+		
+			
+				
+					
+						
+							
+							
+						
+					
+				
+				
+			
+		
+	
+	
+		
+			
+			
+			
+		
+	
+	
+		
+			
+				
+					
+				
+			
+		
+	
+	
+		
+			
+				
+					
+						
+					
+				
+			
+			
+				
+					Auswahl: Entweder explizite Angabe EINER
+						Transformationskette inklusive ggf. sinnvoller Supplements oder
+						Verweis auf ein benanntes Profil
+				
+				
+				
+			
+		
+		
+			
+				
+					
+					
+				
+			
+		
+	
+	
+		
+			
+				
+					
+						
+					
+				
+			
+		
+		
+			
+				
+					
+					
+				
+			
+		
+	
+	
+		
+			
+			
+		
+	
+	
+		
+			
+			
+		
+	
+	
+		
+			
+			
+				
+					
+						Resultat, falls die Signaturerstellung
+							erfolgreich war
+					
+				
+				
+			
+		
+	
+	
+		
+			
+			
+		
+	
+	
+		
+			
+			
+		
+	
+	
+		
+			
+				
+					
+				
+			
+		
+	
+	
+		
+			
+			
+		
+	
+	
+		
+			
+			
+		
+	
+	
+		
+			
+			
+		
+	
+	
+		
+			
+			
+		
+	
+	
+		
+			
+				
+					
+					
+				
+			
+		
+	
+	
+		
+			
+				
+					
+					
+				
+			
+		
+	
+	
+		
+			
+				
+					
+					
+				
+			
+		
+	
+	
+		
+			
+				
+					
+					
+					
+				
+			
+		
+	
+	
+	
+		
+			Resultat, falls die Signaturerstellung gescheitert
+				ist
+		
+	
+	
+		
+			
+			
+		
+	
+	
+	
+		
+	
+	
+		
+			
+			
+		
+	
+	
+		
+	
+	
+		
+			
+		
+	
+	
+		
+			
+				
+			
+		
+	
+	
+		
+			
+			
+			
+		
+	
+	
+		
+			
+				
+					
+					
+				
+			
+		
+	
+	
+		
+			
+				
+			
+		
+	
+	
+		
+			
+				
+					
+					
+					
+				
+				
+			
+		
+	
+	
+		
+			
+				Ein oder mehrere Transformationswege können von
+					der Applikation an MOA mitgeteilt werden. Die zu prüfende Signatur
+					hat zumindest einem dieser Transformationswege zu entsprechen. Die
+					Angabe kann explizit oder als Profilbezeichner erfolgen.
+				
+			
+			
+			
+				
+					Profilbezeichner für einen Transformationsweg
+					
+				
+			
+		
+	
+	
+		
+			
+				
+					
+						
+						
+					
+				
+			
+		
+	
+	
+		
+			
+				
+					
+						
+						
+					
+				
+			
+		
+	
+	
+	
+	
+		
+			
+		
+	
+	
+		
+			
+				
+			
+		
+	
+	
+		
+			
+		
+	
+	
+		
+			
+				
+			
+		
+	
+	
+		
+			
+				Die Angabe des Transformationsparameters
+					(explizit oder als Hashwert) kann unterlassen werden, wenn die
+					Applikation von der Unveränderlichkeit des Inhalts der in
+					"Transformationsparamter", Attribut "URI" angegebenen URI ausgehen
+					kann.
+			
+			
+				
+					Der Transformationsparameter explizit angegeben.
+					
+				
+			
+			
+				
+					Der Hashwert des Transformationsparameters.
+					
+				
+				
+					
+						
+						
+					
+				
+			
+		
+		
+	
+	
+		
+			
+				
+				
+			
+		
+	
+	
+		
+			Explizite Angabe des Transformationswegs
+			
+		
+		
+			
+				
+				
+					
+						Alle impliziten Transformationsparameter, die
+							zum Durchlaufen der oben angeführten Transformationskette
+							bekannt sein müssen, müssen hier angeführt werden. Das
+							Attribut "URI" bezeichnet den Transformationsparameter in exakt
+							jener Weise, wie er in der zu überprüfenden Signatur gebraucht
+							wird.
+					
+				
+			
+		
+	
+	
+	
+	
+		
+			
+				
+				
+			
+		
+	
+
-- 
cgit v1.2.3