diff options
Diffstat (limited to 'moaSig')
946 files changed, 30635 insertions, 30257 deletions
diff --git a/moaSig/build.gradle b/moaSig/build.gradle index 247bf08..3935b41 100644 --- a/moaSig/build.gradle +++ b/moaSig/build.gradle @@ -10,24 +10,61 @@ buildscript { } subprojects { - apply plugin: 'java' + apply plugin: 'java-library' apply plugin: 'eclipse' + apply plugin: 'maven-publish' repositories { mavenCentral() + + maven { + url "https://apps.egiz.gv.at/maven/" + mavenContent { + releasesOnly() + } + } + maven { + url "https://apps.egiz.gv.at/maven-snapshot/" + mavenContent { + snapshotsOnly() + } + } + } - + dependencies { - testCompile 'junit:junit:4.8.2' + testImplementation 'junit:junit:4.13.2' } - version = '3.1.0-RC5' + version = '3.1.4-RC1' jar { manifest.attributes provider: 'EGIZ', 'Specification-Version': getCheckedOutGitCommitHash(), 'Implementation-Version': project.version } -} -task wrapper(type: Wrapper) { - gradleVersion = '2.8' + compileJava { + sourceCompatibility = 1.8 + targetCompatibility = 1.8 + } + + tasks.withType(JavaCompile) { + options.compilerArgs << '-Xlint:-options' + } + + publishing { + publications { + mavenJava(MavenPublication) { + from components.java + // more goes in here + } + } + repositories { + maven { + // change to point to your repo, e.g. http://my.org/repo + url = "$buildDir/repo" + } + mavenLocal() + } + } + } def getCheckedOutGitCommitHash() { diff --git a/moaSig/common/build.gradle b/moaSig/common/build.gradle index 9b88188..5e9122b 100644 --- a/moaSig/common/build.gradle +++ b/moaSig/common/build.gradle @@ -1,10 +1,23 @@ dependencies { - compile files('../libs/iaik_jce_full.jar') + implementation files('../libs/iaik_jce_full-5.62_moa.jar') + api 'org.slf4j:slf4j-api:1.7.30' + api 'xerces:xercesImpl:2.12.0' + api 'xalan:xalan:2.7.1' + api group: 'xalan', name: 'serializer', version: '2.7.1' + api 'joda-time:joda-time:2.10.10' + api 'jaxen:jaxen:1.2.0' +} + +task testJar(type: Jar, dependsOn: testClasses) { + from sourceSets.test.output + classifier = 'tests' +} + +configurations { + tests +} - compile 'org.slf4j:slf4j-api:1.7.12' - compile 'xerces:xercesImpl:2.11.0' - compile 'xalan:xalan:2.7.1' - compile 'joda-time:joda-time:2.8.2' - compile 'jaxen:jaxen:1.1.6' +artifacts { + archives testJar } diff --git a/moaSig/common/src/main/java/at/gv/egovernment/moaspss/logging/LogMsg.java b/moaSig/common/src/main/java/at/gv/egovernment/moaspss/logging/LogMsg.java index 9eb84fa..54ab102 100644 --- a/moaSig/common/src/main/java/at/gv/egovernment/moaspss/logging/LogMsg.java +++ b/moaSig/common/src/main/java/at/gv/egovernment/moaspss/logging/LogMsg.java @@ -21,23 +21,22 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moaspss.logging; /** * A unified message type to log messages from inside the MOA subsystem. - * + * * @author Patrick Peck * @version $Id$ */ public class LogMsg { /** The message to log. */ - private Object message; + private final Object message; /** * Create a <code>LogMsg</code> object. - * - * @param message The actual message to log. May be <code>null</code>. + * + * @param message The actual message to log. May be <code>null</code>. */ public LogMsg(Object message) { this.message = message; @@ -45,16 +44,17 @@ public class LogMsg { /** * Convert this log message to a <code>String</code>. - * - * @return The <code>String</code> representation of this log message. + * + * @return The <code>String</code> representation of this log message. */ + @Override public String toString() { - StringBuffer msg = new StringBuffer(); - LoggingContext ctx = - LoggingContextManager.getInstance().getLoggingContext(); - String tid = ctx != null ? ctx.getTransactionID() : null; - String nodeId = ctx != null ? ctx.getNodeID() : null; - + final StringBuffer msg = new StringBuffer(); + final LoggingContext ctx = + LoggingContextManager.getInstance().getLoggingContext(); + final String tid = ctx != null ? ctx.getTransactionID() : null; + final String nodeId = ctx != null ? ctx.getNodeID() : null; + msg.append("TID="); msg.append(tid != null ? tid : "<null>"); msg.append(" NID="); diff --git a/moaSig/common/src/main/java/at/gv/egovernment/moaspss/logging/Logger.java b/moaSig/common/src/main/java/at/gv/egovernment/moaspss/logging/Logger.java index 532a8be..23908ab 100644 --- a/moaSig/common/src/main/java/at/gv/egovernment/moaspss/logging/Logger.java +++ b/moaSig/common/src/main/java/at/gv/egovernment/moaspss/logging/Logger.java @@ -21,7 +21,6 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moaspss.logging; import java.util.HashMap; @@ -29,28 +28,28 @@ import java.util.Map; /** * A utility class acting as a facade to the logging subsystem. - * + * * Configure the logging defaultHierarchy that the <code>Logger</code> uses by * calling <code>setHierarchy</code> once before calling any of the logging * output functions. - * + * * @author Patrick Peck * @version $Id$ */ public class Logger { - + /** * Set the default hierarchy to which the <code>Logger</code> should send its * logging output. + * * @param hierarchy The logging defaultHierarchy. */ public static void setHierarchy(String hierarchy) { - // there is no need for that anymore + // there is no need for that anymore } - /** The Constant instances. */ - private static final Map<String, org.slf4j.Logger> instances = new HashMap<String, org.slf4j.Logger>(); + private static final Map<String, org.slf4j.Logger> instances = new HashMap<>(); /** * Gets the logger. @@ -58,173 +57,177 @@ public class Logger { * @return the logger */ private static synchronized org.slf4j.Logger getLogger() { - StackTraceElement[] stacktrace = Thread.currentThread().getStackTrace(); - - int i; - for(i = 2; i < stacktrace.length; i++) - if(!stacktrace[i].getClassName().equals(Logger.class.getName())) - break; + final StackTraceElement[] stacktrace = Thread.currentThread().getStackTrace(); - String className = stacktrace[i].getClassName(); - - org.slf4j.Logger logger = instances.get(className); - if (logger != null) { - return logger; + int i; + for (i = 2; i < stacktrace.length; i++) { + if (!stacktrace[i].getClassName().equals(Logger.class.getName())) { + break; } + } - logger = org.slf4j.LoggerFactory.getLogger(className); - instances.put(className, logger); + final String className = stacktrace[i].getClassName(); + org.slf4j.Logger logger = instances.get(className); + if (logger != null) { return logger; + } + + logger = org.slf4j.LoggerFactory.getLogger(className); + instances.put(className, logger); + + return logger; } - + /** * Prepare the message for printing it as string. - * <p>Mainly introduce because the <code>message</code> might be <code>null</code>. + * <p> + * Mainly introduce because the <code>message</code> might be <code>null</code>. * * @param message the message * @return the string */ private static String prepareMessage(Object message) { - if(null == message) - return "no message given"; - return message.toString(); + if (null == message) { + return "no message given"; + } + return message.toString(); } - + /** * Test, if the trace log level is enabled. - * + * * @return boolean <code>true</code>, if tracing output is enabled - * <code>false</code> otherwise. + * <code>false</code> otherwise. */ public static boolean isTraceEnabled() { - org.slf4j.Logger logger = getLogger(); - return logger.isTraceEnabled(); + final org.slf4j.Logger logger = getLogger(); + return logger.isTraceEnabled(); } - + /** * Test, if the trace log level is enabled for a given hierarchy. - * + * * @param hierarchy requested log hierarchy * @return boolean <code>true</code>, if tracing output is enabled - * <code>false</code> otherwise. + * <code>false</code> otherwise. */ public static boolean isTraceEnabled(String hierarchy) { - org.slf4j.Logger logger = getLogger(); - return logger.isTraceEnabled(); + final org.slf4j.Logger logger = getLogger(); + return logger.isTraceEnabled(); } - + /** * Trace a message. - * + * * @param message The message to trace. */ public static void trace(Object message) { - org.slf4j.Logger logger = getLogger(); - logger.trace(prepareMessage(message)); + final org.slf4j.Logger logger = getLogger(); + logger.trace(prepareMessage(message)); } - + /** * Test, if the debug log level is enabled. - * + * * @return boolean <code>true</code>, if debug output is enabled - * <code>false</code> otherwise. + * <code>false</code> otherwise. */ public static boolean isDebugEnabled() { - org.slf4j.Logger logger = getLogger(); - return logger.isDebugEnabled(); + final org.slf4j.Logger logger = getLogger(); + return logger.isDebugEnabled(); } - + /** * Test, if the debug log level is enabled for a given hierarchy. - * + * * @param hierarchy requested log hierarchy * @return boolean <code>true</code>, if debug output is enabled - * <code>false</code> otherwise. + * <code>false</code> otherwise. */ public static boolean isDebugEnabled(String hierarchy) { - org.slf4j.Logger logger = getLogger(); - return logger.isDebugEnabled(); + final org.slf4j.Logger logger = getLogger(); + return logger.isDebugEnabled(); } - + /** * Log a debug message. - * + * * @param message The message to log. */ public static void debug(Object message) { - org.slf4j.Logger logger = getLogger(); - logger.debug(prepareMessage(message)); + final org.slf4j.Logger logger = getLogger(); + logger.debug(prepareMessage(message)); } -/** + /** * Log an info message. - * + * * @param message The message to log. */ public static void info(Object message) { - org.slf4j.Logger logger = getLogger(); - logger.info(prepareMessage(message)); + final org.slf4j.Logger logger = getLogger(); + logger.info(prepareMessage(message)); } - + /** * Log a warning message. - * + * * @param message The message to log. */ public static void warn(Object message) { - org.slf4j.Logger logger = getLogger(); - logger.warn(prepareMessage(message)); + final org.slf4j.Logger logger = getLogger(); + logger.warn(prepareMessage(message)); } /** * Log a warning message. - * + * * @param message The message to log. - * @param t An exception that may be the cause of the warning. + * @param t An exception that may be the cause of the warning. */ public static void warn(Object message, Throwable t) { - org.slf4j.Logger logger = getLogger(); - logger.warn(prepareMessage(message), t); + final org.slf4j.Logger logger = getLogger(); + logger.warn(prepareMessage(message), t); } - + /** * Log an error message. - * + * * @param message The message to log. */ public static void error(Object message) { - org.slf4j.Logger logger = getLogger(); - logger.error(prepareMessage(message)); + final org.slf4j.Logger logger = getLogger(); + logger.error(prepareMessage(message)); } /** * Log an error message. - * + * * @param message The message to log. - * @param t An exception that may be the cause of the error. + * @param t An exception that may be the cause of the error. */ public static void error(Object message, Throwable t) { - org.slf4j.Logger logger = getLogger(); - logger.error(prepareMessage(message), t); + final org.slf4j.Logger logger = getLogger(); + logger.error(prepareMessage(message), t); } - + /** * Log a fatal error message. - * + * * @param message The message to log. */ public static void fatal(Object message) { - error(message); + error(message); } /** * Log a fatal error message. - * + * * @param message The message to log. - * @param t An exception that may be the cause of the error. + * @param t An exception that may be the cause of the error. */ public static void fatal(Object message, Throwable t) { - error(message, t); + error(message, t); } } diff --git a/moaSig/common/src/main/java/at/gv/egovernment/moaspss/logging/LoggingContext.java b/moaSig/common/src/main/java/at/gv/egovernment/moaspss/logging/LoggingContext.java index 0fb0e7d..d8f03a6 100644 --- a/moaSig/common/src/main/java/at/gv/egovernment/moaspss/logging/LoggingContext.java +++ b/moaSig/common/src/main/java/at/gv/egovernment/moaspss/logging/LoggingContext.java @@ -21,47 +21,46 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moaspss.logging; /** * Encapsulates contextual information (i.e. per request information) for * logging purposes. - * + * * @author Patrick Peck * @version $Id$ */ public class LoggingContext { /** The name of the node ID system property. */ public static final String NODE_ID_PROPERTY = "moa.node-id"; - + /** The current transaction ID. */ - private String transactionID; + private final String transactionID; /** The node ID. */ - private String nodeID; - + private final String nodeID; + /** * Create a new <code>LoggingContext</code>. - * + * * @param transactionID The transaction ID. May be <code>null</code>. */ public LoggingContext(String transactionID) { this.transactionID = transactionID; this.nodeID = System.getProperty(NODE_ID_PROPERTY); } - + /** * Return the transaction ID. - * + * * @return The transaction ID. */ public String getTransactionID() { return transactionID; } - + /** * Return the node ID. - * + * * @return The node ID. */ public String getNodeID() { diff --git a/moaSig/common/src/main/java/at/gv/egovernment/moaspss/logging/LoggingContextManager.java b/moaSig/common/src/main/java/at/gv/egovernment/moaspss/logging/LoggingContextManager.java index b4cd294..aa4bfe8 100644 --- a/moaSig/common/src/main/java/at/gv/egovernment/moaspss/logging/LoggingContextManager.java +++ b/moaSig/common/src/main/java/at/gv/egovernment/moaspss/logging/LoggingContextManager.java @@ -21,25 +21,24 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moaspss.logging; /** * Provides each thread with a single instance of <code>LoggingContext</code>. - * + * * @author Patrick Peck * @version $Id$ */ public class LoggingContextManager { /** The single instance of this class. */ private static LoggingContextManager instance = null; - + /** The <code>LoggingContext</code> for each thread. */ - private ThreadLocal context; - + private final ThreadLocal context; + /** * Get the single instance of the <code>LoggingContextManager</code> class. - * + * * @return LoggingContextManager The single instance. */ public static synchronized LoggingContextManager getInstance() { @@ -48,30 +47,30 @@ public class LoggingContextManager { } return instance; } - + /** * Creates a new <code>LoggingContextManager</code>. - * + * * Protected to disallow direct instantiation. */ protected LoggingContextManager() { context = new ThreadLocal(); } - + /** * Set the <code>LoggingContext</code> context for the current thread. - * + * * @param ctx The <code>LoggingContext</code> for the current thread. */ public void setLoggingContext(LoggingContext ctx) { context.set(ctx); } - + /** * Return the <code>LoggingContext</code> for the current thread. - * + * * @return LoggingContext The <code>LoggingContext</code> for the current - * thread, or <code>null</code> if none has been set. + * thread, or <code>null</code> if none has been set. */ public LoggingContext getLoggingContext() { return (LoggingContext) context.get(); diff --git a/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/Base64Utils.java b/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/Base64Utils.java index 25a19bc..2c9b4c0 100644 --- a/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/Base64Utils.java +++ b/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/Base64Utils.java @@ -21,7 +21,6 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moaspss.util; import java.io.ByteArrayInputStream; @@ -35,81 +34,81 @@ import iaik.utils.Base64OutputStream; /** * Utitility functions for encoding/decoding Base64 strings. - * + * * @author Patrick Peck * @version $Id$ */ public class Base64Utils { /** - * Read the bytes encoded in a Base64 encoded <code>String</code>. - * - * @param base64String The <code>String</code> containing the Base64 encoded - * bytes. + * Read the bytes encoded in a Base64 encoded <code>String</code>. + * + * @param base64String The <code>String</code> containing the Base64 + * encoded bytes. * @param ignoreInvalidChars Whether to ignore invalid Base64 characters. * @return byte[] The raw bytes contained in the <code>base64String</code>. * @throws IOException Failed to read the Base64 data. */ public static byte[] decode(String base64String, boolean ignoreInvalidChars, String encoding) - throws IOException { - - Base64InputStream in = - new Base64InputStream( - new ByteArrayInputStream(base64String.getBytes(encoding)), - ignoreInvalidChars); - ByteArrayOutputStream out = new ByteArrayOutputStream(); - byte[] bytes = new byte[256]; + throws IOException { + + final Base64InputStream in = + new Base64InputStream( + new ByteArrayInputStream(base64String.getBytes(encoding)), + ignoreInvalidChars); + final ByteArrayOutputStream out = new ByteArrayOutputStream(); + final byte[] bytes = new byte[256]; int bytesRead; while ((bytesRead = in.read(bytes)) > 0) { out.write(bytes, 0, bytesRead); } in.close(); - + return out.toByteArray(); } public static byte[] decode(String base64String, boolean ignoreInvalidChars) throws IOException { - return decode(base64String, ignoreInvalidChars, "UTF-8"); + return decode(base64String, ignoreInvalidChars, "UTF-8"); } - + /** * Read the bytes encoded in a Base64 encoded <code>String</code> and provide * them via an <code>InputStream</code>. - * - * @param base64String The <code>String</code> containing the Base64 encoded - * bytes. + * + * @param base64String The <code>String</code> containing the Base64 + * encoded bytes. * @param ignoreInvalidChars Whether to ignore invalid Base64 characters. * @return The <code>InputStream</code> from which the binary content of the - * <code>base64String</code> can be read. + * <code>base64String</code> can be read. */ public static InputStream decodeToStream( - String base64String, - boolean ignoreInvalidChars, - String encoding) { + String base64String, + boolean ignoreInvalidChars, + String encoding) { try { - ByteArrayInputStream bin = - new ByteArrayInputStream(base64String.getBytes(encoding)); - Base64InputStream in = new Base64InputStream(bin, ignoreInvalidChars); - + final ByteArrayInputStream bin = + new ByteArrayInputStream(base64String.getBytes(encoding)); + final Base64InputStream in = new Base64InputStream(bin, ignoreInvalidChars); + return in; - } catch (UnsupportedEncodingException e) { + } catch (final UnsupportedEncodingException e) { // cannot occur, since UTF-8 is required to be supported by every JRE - return null; + return null; } } public static InputStream decodeToStream( - String base64String, - boolean ignoreInvalidChars) { - return decodeToStream(base64String, ignoreInvalidChars, "UTF-8"); - + String base64String, + boolean ignoreInvalidChars) { + return decodeToStream(base64String, ignoreInvalidChars, "UTF-8"); + } - + /** * Convert a byte array to a Base64 encoded <code>String</code>. - * + * * @param bytes The bytes to encode. * @return String The Base64 encoded representation of the <code>bytes</code>. * @throws IOException Failed to write the bytes as Base64 data. @@ -119,25 +118,26 @@ public class Base64Utils { } public static String encode(byte[] bytes, String encoding) throws IOException { - return encode(new ByteArrayInputStream(bytes), encoding); - } - + return encode(new ByteArrayInputStream(bytes), encoding); + } + public static String encode(InputStream inputStream) throws IOException { - return encode(inputStream, "UTF-8"); + return encode(inputStream, "UTF-8"); } + /** * Convert the data contained in the given stream to a Base64 encoded * <code>String</code>. - * + * * @param inputStream The stream containing the data to encode. - * @return The Base64 encoded data of <code>inputStream</code>, as a - * <code>String</code>. + * @return The Base64 encoded data of <code>inputStream</code>, as a + * <code>String</code>. * @throws IOException Failed to convert the data in the stream. */ public static String encode(InputStream inputStream, String encoding) throws IOException { - ByteArrayOutputStream byteStream = new ByteArrayOutputStream(); - Base64OutputStream base64Stream = new Base64OutputStream(byteStream, "\n".getBytes()); - byte[] bytes = new byte[256]; + final ByteArrayOutputStream byteStream = new ByteArrayOutputStream(); + final Base64OutputStream base64Stream = new Base64OutputStream(byteStream, "\n".getBytes()); + final byte[] bytes = new byte[256]; int bytesRead; while ((bytesRead = inputStream.read(bytes)) > 0) { diff --git a/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/BoolUtils.java b/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/BoolUtils.java index 56eab08..42f98bc 100644 --- a/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/BoolUtils.java +++ b/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/BoolUtils.java @@ -21,25 +21,24 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moaspss.util; /** * Utility class for parsing XML schema boolean values. - * + * * @author Patrick Peck * @version $Id$ */ public class BoolUtils { - + /** - * Return the boolean value of an <code>xsd:boolean</code> type of DOM + * Return the boolean value of an <code>xsd:boolean</code> type of DOM * element/attribute. - * + * * @param boolStr The value of the <code>xsd:boolean</code> element/attribute. - * @return <code>true</code>, if <code>boolStr</code> equals - * <code>"true"</code> or <code>"1;"</code>. Otherwise, - * <code>false</code> is returned. + * @return <code>true</code>, if <code>boolStr</code> equals + * <code>"true"</code> or <code>"1;"</code>. + * Otherwise, <code>false</code> is returned. */ public static boolean valueOf(String boolStr) { return "true".equals(boolStr) || "1".equals(boolStr); diff --git a/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/CollectionUtils.java b/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/CollectionUtils.java index 01a80ea..dcca377 100644 --- a/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/CollectionUtils.java +++ b/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/CollectionUtils.java @@ -21,40 +21,39 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moaspss.util; import java.util.Iterator; import java.util.List; /** - * Various utility methods for dealing with <code>java.util.Collection</code> - * classes. - * + * Various utility methods for dealing with <code>java.util.Collection</code> + * classes. + * * @author Patrick Peck * @version $Id$ */ public class CollectionUtils { - + /** - * Convert a <code>List</code> of <code>Number</code> objects to an + * Convert a <code>List</code> of <code>Number</code> objects to an * <code>int</code> array. - * - * @param nums The <code>List</code> containing the numbers whose integer - * value to put into the result. - * @return The <code>int</code> values of the <code>Number</code>s contained - * in <code>nums</code>. + * + * @param nums The <code>List</code> containing the numbers whose integer value + * to put into the result. + * @return The <code>int</code> values of the <code>Number</code>s contained in + * <code>nums</code>. */ public static int[] toIntArray(List nums) { - int[] result = new int[nums.size()]; + final int[] result = new int[nums.size()]; Iterator iter; int i; - + for (i = 0, iter = nums.iterator(); iter.hasNext(); i++) { - Number num = (Number) iter.next(); + final Number num = (Number) iter.next(); result[i] = num.intValue(); } - + return result; } } 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..1102975 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 @@ -21,506 +21,557 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moaspss.util; import java.util.HashMap; /** * Contains various constants used throughout the system. - * + * * @author Patrick Peck * @version $Id$ */ public interface Constants { /** Root location of the schema files. */ - public static final String SCHEMA_ROOT = "/resources/schemas/"; + String SCHEMA_ROOT = "/resources/schemas/"; /** URI of the Widerrufregister XML namespace. */ - public static final String WRR_NS_URI = - "http://reference.e-government.gv.at/namespace/moavv/20041223"; + String WRR_NS_URI = + "http://reference.e-government.gv.at/namespace/moavv/20041223"; /** Prefix used for the Widerrufregister XML namespace */ - public static final String WRR_PREFIX = "wrr"; + String WRR_PREFIX = "wrr"; /** URI of the StandardTextBlock XML namespace. */ - public static final String STB_NS_URI = - "http://reference.e-government.gv.at/namespace/standardtextblock/20041105#"; + String STB_NS_URI = + "http://reference.e-government.gv.at/namespace/standardtextblock/20041105#"; /** Prefix used for the standard text block XML namespace */ - public static final String STB_PREFIX = "stb"; + String STB_PREFIX = "stb"; /** URI of the MOA XML namespace. */ - public static final String MOA_NS_URI = - "http://reference.e-government.gv.at/namespace/moa/20020822#"; + String MOA_NS_URI = + "http://reference.e-government.gv.at/namespace/moa/20020822#"; /** Name of the mandates infobox */ - public static final String INFOBOXIDENTIFIER_MANDATES = "Mandates"; + String INFOBOXIDENTIFIER_MANDATES = "Mandates"; /** Prefix used for the Mandate XML namespace */ - public static final String MD_PREFIX = "md"; + String MD_PREFIX = "md"; /** URI of the Mandate XML namespace. */ - public static final String MD_NS_URI = - "http://reference.e-government.gv.at/namespace/mandates/20040701#"; + String MD_NS_URI = + "http://reference.e-government.gv.at/namespace/mandates/20040701#"; /** Prefix used for the Mandate XML namespace */ - public static final String MVV_PREFIX = "mvv"; + String MVV_PREFIX = "mvv"; /** URI of the Mandate XML namespace. */ - public static final String MVV_NS_URI = - "http://reference.e-government.gv.at/namespace/moavv/app2mvv/20041125"; + String MVV_NS_URI = + "http://reference.e-government.gv.at/namespace/moavv/app2mvv/20041125"; /** Prefix used for the MandateCheckProfile XML namespace */ - public static final String MDP_PREFIX = "mdp"; + String MDP_PREFIX = "mdp"; /** URI of the Mandate XML namespace. */ - public static final String MDP_NS_URI = - "http://reference.e-government.gv.at/namespace/mandateprofile/20041105#"; + String MDP_NS_URI = + "http://reference.e-government.gv.at/namespace/mandateprofile/20041105#"; /** Prefix used for the MOA XML namespace */ - public static final String MOA_PREFIX = "moa"; + String MOA_PREFIX = "moa"; /** Local location of the MOA XML schema definition. */ - public static final String MOA_SCHEMA_LOCATION = - SCHEMA_ROOT + "MOA-SPSS-3.0.0.xsd"; + String MOA_SCHEMA_LOCATION = + SCHEMA_ROOT + "MOA-SPSS-3.1.2.xsd"; /** URI of the MOA configuration XML namespace. */ - public static final String MOA_CONFIG_NS_URI = - "http://reference.e-government.gv.at/namespace/moaconfig/20021122#"; + String MOA_CONFIG_NS_URI = + "http://reference.e-government.gv.at/namespace/moaconfig/20021122#"; /** URI of the MOA ID configuration XML namespace. */ - public static final String MOA_ID_CONFIG_NS_URI = - "http://www.buergerkarte.at/namespaces/moaconfig#"; + String MOA_ID_CONFIG_NS_URI = + "http://www.buergerkarte.at/namespaces/moaconfig#"; /** Prefix used for the MOA configuration XML namespace */ - public static final String MOA_CONFIG_PREFIX = "conf"; + String MOA_CONFIG_PREFIX = "conf"; /** Prefix used for the MOA configuration XML namespace */ - public static final String MOA_ID_CONFIG_PREFIX = "confID"; + String MOA_ID_CONFIG_PREFIX = "confID"; /** Local location of the MOA configuration XML schema definition. */ - public static final String MOA_CONFIG_SCHEMA_LOCATION = - SCHEMA_ROOT + "MOA-SPSS-config-3.0.0.xsd"; + String MOA_CONFIG_SCHEMA_LOCATION = + SCHEMA_ROOT + "MOA-SPSS-config-3.0.0.xsd"; /** Local location of the MOA ID configuration XML schema definition. */ - public static final String MOA_ID_CONFIG_SCHEMA_LOCATION = - SCHEMA_ROOT + "MOA-ID-Configuration-1.5.2.xsd"; + String MOA_ID_CONFIG_SCHEMA_LOCATION = + SCHEMA_ROOT + "MOA-ID-Configuration-1.5.2.xsd"; /** URI of the Security Layer 1.0 namespace. */ - public static final String SL10_NS_URI = - "http://www.buergerkarte.at/namespaces/securitylayer/20020225#"; + String SL10_NS_URI = + "http://www.buergerkarte.at/namespaces/securitylayer/20020225#"; /** Prefix used for the Security Layer 1.0 XML namespace */ - public static final String SL10_PREFIX = "sl10"; + String SL10_PREFIX = "sl10"; /** Local location of the Security Layer 1.0 XML schema definition */ - public static final String SL10_SCHEMA_LOCATION = - SCHEMA_ROOT + "Core.20020225.xsd"; + String SL10_SCHEMA_LOCATION = + SCHEMA_ROOT + "Core.20020225.xsd"; /** URI of the Security Layer 1.1 XML namespace */ - public static final String SL11_NS_URI = - "http://www.buergerkarte.at/namespaces/securitylayer/20020831#"; + String SL11_NS_URI = + "http://www.buergerkarte.at/namespaces/securitylayer/20020831#"; /** Prefix used for the Security Layer 1.1 XML namespace */ - public static final String SL11_PREFIX = "sl11"; + String SL11_PREFIX = "sl11"; /** Local location of the Security Layer 1.1 XML schema definition */ - public static final String SL11_SCHEMA_LOCATION = - SCHEMA_ROOT + "Core.20020831.xsd"; - + String SL11_SCHEMA_LOCATION = + SCHEMA_ROOT + "Core.20020831.xsd"; + /** URI of the Security Layer 1.2 XML namespace */ - public static final String SL12_NS_URI = - "http://www.buergerkarte.at/namespaces/securitylayer/1.2#"; + String SL12_NS_URI = + "http://www.buergerkarte.at/namespaces/securitylayer/1.2#"; /** Prefix used for the Security Layer 1.2 XML namespace */ - public static final String SL12_PREFIX = "sl"; + String SL12_PREFIX = "sl"; /** Local location of the Security Layer 1.2 XML schema definition */ - public static final String SL12_SCHEMA_LOCATION = - SCHEMA_ROOT + "Core-1.2.xsd"; - + String SL12_SCHEMA_LOCATION = + SCHEMA_ROOT + "Core-1.2.xsd"; + /** URI of the ECDSA XML namespace */ - public static final String ECDSA_NS_URI = - "http://www.w3.org/2001/04/xmldsig-more#"; - + String ECDSA_NS_URI = + "http://www.w3.org/2001/04/xmldsig-more#"; + /** Prefix used for ECDSA namespace */ - public static final String ECDSA_PREFIX = "ecdsa"; + String ECDSA_PREFIX = "ecdsa"; /** Local location of ECDSA XML schema definition */ - public static final String ECDSA_SCHEMA_LOCATION = - SCHEMA_ROOT + "ECDSAKeyValue.xsd"; + String ECDSA_SCHEMA_LOCATION = + SCHEMA_ROOT + "ECDSAKeyValue.xsd"; /** URI of the PersonData XML namespace. */ - public static final String PD_NS_URI = - "http://reference.e-government.gv.at/namespace/persondata/20020228#"; + String PD_NS_URI = + "http://reference.e-government.gv.at/namespace/persondata/20020228#"; /** Prefix used for the PersonData XML namespace */ - public static final String PD_PREFIX = "pr"; + String PD_PREFIX = "pr"; // /** Local location of the PersonData XML schema definition */ // public static final String PD_SCHEMA_LOCATION = // SCHEMA_ROOT + "PersonData.xsd"; - + /** Local location of the PersonData XML schema definition */ - public static final String PD_SCHEMA_LOCATION = - SCHEMA_ROOT + "PersonData_20_en_moaWID.xsd"; + String PD_SCHEMA_LOCATION = + SCHEMA_ROOT + "PersonData_20_en_moaWID.xsd"; /** URI of the SAML namespace. */ - public static final String SAML_NS_URI = - "urn:oasis:names:tc:SAML:1.0:assertion"; + String SAML_NS_URI = + "urn:oasis:names:tc:SAML:1.0:assertion"; /** Prefix used for the SAML XML namespace */ - public static final String SAML_PREFIX = "saml"; + String SAML_PREFIX = "saml"; /** Local location of the SAML XML schema definition. */ - public static final String SAML_SCHEMA_LOCATION = - SCHEMA_ROOT + "cs-sstc-schema-assertion-01.xsd"; + String SAML_SCHEMA_LOCATION = + SCHEMA_ROOT + "cs-sstc-schema-assertion-01.xsd"; /** URI of the SAML request-response protocol namespace. */ - public static final String SAMLP_NS_URI = - "urn:oasis:names:tc:SAML:1.0:protocol"; + String SAMLP_NS_URI = + "urn:oasis:names:tc:SAML:1.0:protocol"; /** Prefix used for the SAML request-response protocol namespace */ - public static final String SAMLP_PREFIX = "samlp"; + String SAMLP_PREFIX = "samlp"; /** Local location of the SAML request-response protocol schema definition. */ - public static final String SAMLP_SCHEMA_LOCATION = - SCHEMA_ROOT + "cs-sstc-schema-protocol-01.xsd"; + String SAMLP_SCHEMA_LOCATION = + SCHEMA_ROOT + "cs-sstc-schema-protocol-01.xsd"; /** URI of the XML namespace. */ - public static final String XML_NS_URI = - "http://www.w3.org/XML/1998/namespace"; + String XML_NS_URI = + "http://www.w3.org/XML/1998/namespace"; /** Prefix used for the XML namespace */ - public static final String XML_PREFIX = "xml"; + String XML_PREFIX = "xml"; /** Local location of the XML schema definition. */ - public static final String XML_SCHEMA_LOCATION = SCHEMA_ROOT + "xml.xsd"; + String XML_SCHEMA_LOCATION = SCHEMA_ROOT + "xml.xsd"; /** URI of the XMLNS namespace */ - public static final String XMLNS_NS_URI = "http://www.w3.org/2000/xmlns/"; + String XMLNS_NS_URI = "http://www.w3.org/2000/xmlns/"; /** Prefix used for the XSI namespace */ - public static final String XSI_PREFIX = "xsi"; + String XSI_PREFIX = "xsi"; /** Local location of the XSI schema definition. */ - public static final String XSI_SCHEMA_LOCATION = - SCHEMA_ROOT + "XMLSchema-instance.xsd"; + String XSI_SCHEMA_LOCATION = + SCHEMA_ROOT + "XMLSchema-instance.xsd"; /** URI of the XSI XMLNS namespace */ - public static final String XSI_NS_URI = - "http://www.w3.org/2001/XMLSchema-instance"; + String XSI_NS_URI = + "http://www.w3.org/2001/XMLSchema-instance"; /** URI of the XSLT XML namespace */ - public static final String XSLT_NS_URI = - "http://www.w3.org/1999/XSL/Transform"; + String XSLT_NS_URI = + "http://www.w3.org/1999/XSL/Transform"; /** Prefix used for the XSLT XML namespace */ - public static final String XSLT_PREFIX = "xsl"; + String XSLT_PREFIX = "xsl"; /** URI of the XMLDSig XML namespace. */ - public static final String DSIG_NS_URI = "http://www.w3.org/2000/09/xmldsig#"; + String DSIG_NS_URI = "http://www.w3.org/2000/09/xmldsig#"; /** Prefix used for the XMLDSig XML namespace */ - public static final String DSIG_PREFIX = "dsig"; + String DSIG_PREFIX = "dsig"; /** Local location of the XMLDSig XML schema. */ - public static final String DSIG_SCHEMA_LOCATION = - SCHEMA_ROOT + "xmldsig-core-schema.xsd"; + String DSIG_SCHEMA_LOCATION = + SCHEMA_ROOT + "xmldsig-core-schema.xsd"; /** URI of the XMLDSig XPath Filter XML namespace. */ - public static final String DSIG_FILTER2_NS_URI = - "http://www.w3.org/2002/06/xmldsig-filter2"; + String DSIG_FILTER2_NS_URI = + "http://www.w3.org/2002/06/xmldsig-filter2"; /** Prefix used for the XMLDSig XPath Filter XML namespace */ - public static final String DSIG_FILTER2_PREFIX = "dsig-filter2"; + String DSIG_FILTER2_PREFIX = "dsig-filter2"; /** Local location of the XMLDSig XPath Filter XML schema definition. */ - public static final String DSIG_FILTER2_SCHEMA_LOCATION = - SCHEMA_ROOT + "xmldsig-filter2.xsd"; + String DSIG_FILTER2_SCHEMA_LOCATION = + SCHEMA_ROOT + "xmldsig-filter2.xsd"; /** URI of the Exclusive Canonicalization XML namespace */ - public static final String DSIG_EC_NS_URI = - "http://www.w3.org/2001/10/xml-exc-c14n#"; - + String DSIG_EC_NS_URI = + "http://www.w3.org/2001/10/xml-exc-c14n#"; + /** Prefix used for the Exclusive Canonicalization XML namespace */ - public static final String DSIG_EC_PREFIX = "ec"; + String DSIG_EC_PREFIX = "ec"; /** Local location of the Exclusive Canonicalizaion XML schema definition */ - public static final String DSIG_EC_SCHEMA_LOCATION = - SCHEMA_ROOT + "exclusive-canonicalization.xsd"; + String DSIG_EC_SCHEMA_LOCATION = + SCHEMA_ROOT + "exclusive-canonicalization.xsd"; - /** URI of the XMLLoginParameterResolver Configuration XML namespace */ - public static final String XMLLPR_NS_URI="http://reference.e-government.gv.at/namespace/moa/20020822#/xmllpr20030814"; + /** URI of the XMLLoginParameterResolver Configuration XML namespace */ + String XMLLPR_NS_URI = "http://reference.e-government.gv.at/namespace/moa/20020822#/xmllpr20030814"; - /** Local location of the XMLLoginParameterResolver Configuration XML schema definition */ - public static final String XMLLPR_SCHEMA_LOCATION = - SCHEMA_ROOT + "MOAIdentities.xsd"; - - /** Local location of the XAdES v1.1.1 schema definition */ - public static final String XADES_1_1_1_SCHEMA_LOCATION = - SCHEMA_ROOT + "XAdES-1.1.1.xsd"; + /** + * Local location of the XMLLoginParameterResolver Configuration XML schema + * definition + */ + String XMLLPR_SCHEMA_LOCATION = + SCHEMA_ROOT + "MOAIdentities.xsd"; + + /** Local location of the XAdES v1.1.1 schema definition */ + String XADES_1_1_1_SCHEMA_LOCATION = + SCHEMA_ROOT + "XAdES-1.1.1.xsd"; /** URI of the XAdES v1.1.1 namespace */ - public static final String XADES_1_1_1_NS_URI = "http://uri.etsi.org/01903/v1.1.1#"; - - public static final String XADES_1_1_1_NS_PREFIX = "xades111"; - - /** Local location of the XAdES v1.2.2 schema definition */ - public static final String XADES_1_2_2_SCHEMA_LOCATION = - SCHEMA_ROOT + "XAdES-1.2.2.xsd"; + String XADES_1_1_1_NS_URI = "http://uri.etsi.org/01903/v1.1.1#"; + + String XADES_1_1_1_NS_PREFIX = "xades111"; + + /** Local location of the XAdES v1.2.2 schema definition */ + String XADES_1_2_2_SCHEMA_LOCATION = + SCHEMA_ROOT + "XAdES-1.2.2.xsd"; /** URI of the XAdES v1.2.2 namespace */ - public static final String XADES_1_2_2_NS_URI = "http://uri.etsi.org/01903/v1.2.2#"; - - public static final String XADES_1_2_2_NS_PREFIX = "xades122"; + String XADES_1_2_2_NS_URI = "http://uri.etsi.org/01903/v1.2.2#"; + + String XADES_1_2_2_NS_PREFIX = "xades122"; - /** Local location of the XAdES v1.1.1 schema definition */ - public static final String XADES_1_3_2_SCHEMA_LOCATION = - SCHEMA_ROOT + "XAdES-1.3.2.xsd"; + /** Local location of the XAdES v1.1.1 schema definition */ + String XADES_1_3_2_SCHEMA_LOCATION = + SCHEMA_ROOT + "XAdES01903v132-201601.xsd"; /** URI of the XAdES v1.3.2 namespace */ - public static final String XADES_1_3_2_NS_URI = "http://uri.etsi.org/01903/v1.3.2#"; - - public static final String XADES_1_3_2_NS_PREFIX = "xades132"; + String XADES_1_3_2_NS_URI = "http://uri.etsi.org/01903/v1.3.2#"; + + String XADES_1_3_2_NS_PREFIX = "xades132"; - /** Local location of the XAdES v1.4.1 schema definition */ - public static final String XADES_1_4_1_SCHEMA_LOCATION = - SCHEMA_ROOT + "XAdES-1.4.1.xsd"; + /** Local location of the XAdES v1.4.1 schema definition */ + String XADES_1_4_1_SCHEMA_LOCATION = + SCHEMA_ROOT + "XAdES01903v141-201601.xsd"; /** URI of the XAdES v1.4.1 namespace */ - public static final String XADES_1_4_1_NS_URI = "http://uri.etsi.org/01903/v1.4.1#"; - - public static final String XADES_1_4_1_NS_PREFIX = "xades141"; + String XADES_1_4_1_NS_URI = "http://uri.etsi.org/01903/v1.4.1#"; + + String XADES_1_4_1_NS_PREFIX = "xades141"; /** URI of the SAML 2.0 namespace. */ - public static final String SAML2_NS_URI = - "urn:oasis:names:tc:SAML:2.0:assertion"; + String SAML2_NS_URI = + "urn:oasis:names:tc:SAML:2.0:assertion"; /** Prefix used for the SAML 2.0 XML namespace */ - public static final String SAML2_PREFIX = "saml2"; + String SAML2_PREFIX = "saml2"; /** Local location of the SAML 2.0 XML schema definition. */ - public static final String SAML2_SCHEMA_LOCATION = - SCHEMA_ROOT + "saml-schema-assertion-2.0.xsd"; - + String SAML2_SCHEMA_LOCATION = + SCHEMA_ROOT + "saml-schema-assertion-2.0.xsd"; + /** URI of the SAML 2.0 protocol namespace. */ - public static final String SAML2P_NS_URI = - "urn:oasis:names:tc:SAML:2.0:protocol"; + String SAML2P_NS_URI = + "urn:oasis:names:tc:SAML:2.0:protocol"; /** Prefix used for the SAML 2.0 protocol XML namespace */ - public static final String SAML2P_PREFIX = "saml2p"; + String SAML2P_PREFIX = "saml2p"; /** Local location of the SAML 2.0 protocol XML schema definition. */ - public static final String SAML2P_SCHEMA_LOCATION = - SCHEMA_ROOT + "saml-schema-protocol-2.0.xsd"; - + String SAML2P_SCHEMA_LOCATION = + SCHEMA_ROOT + "saml-schema-protocol-2.0.xsd"; + /** URI of the STORK namespace. */ - public static final String STORK_NS_URI = - "urn:eu:stork:names:tc:STORK:1.0:assertion"; + String STORK_NS_URI = + "urn:eu:stork:names:tc:STORK:1.0:assertion"; /** Prefix used for the STORK XML namespace */ - public static final String STORK_PREFIX = "stork"; + String STORK_PREFIX = "stork"; /** Local location of the STORK XML schema definition. */ - public static final String STORK_SCHEMA_LOCATION = - SCHEMA_ROOT + "stork-schema-assertion-1.0.xsd"; - + String STORK_SCHEMA_LOCATION = + SCHEMA_ROOT + "stork-schema-assertion-1.0.xsd"; + /** URI of the STORK protocol namespace. */ - public static final String STORKP_NS_URI = - "urn:eu:stork:names:tc:STORK:1.0:protocol"; + String STORKP_NS_URI = + "urn:eu:stork:names:tc:STORK:1.0:protocol"; /** Prefix used for the STORK protocol XML namespace */ - public static final String STORKP_PREFIX = "storkp"; + String STORKP_PREFIX = "storkp"; /** Local location of the STORK protocol XML schema definition. */ - public static final String STORKP_SCHEMA_LOCATION = - SCHEMA_ROOT + "stork-schema-protocol-1.0.xsd"; - + String STORKP_SCHEMA_LOCATION = + SCHEMA_ROOT + "stork-schema-protocol-1.0.xsd"; + /** URI of the TSL namespace. */ - public static final String TSL_NS_URI = - "http://uri.etsi.org/02231/v2#"; + String TSL_NS_URI = + "http://uri.etsi.org/02231/v2#"; /** Prefix used for the TSL namespace */ - public static final String TSL_PREFIX = "tsl1"; + String TSL_PREFIX = "tsl1"; /** Local location of the TSL schema definition. */ - public static final String TSL_SCHEMA_LOCATION = - SCHEMA_ROOT + "ts_119612v010201_xsd.xsd"; + String TSL_SCHEMA_LOCATION = + SCHEMA_ROOT + "ts_119612v010201_xsd.xsd"; /** URI of the TSL SIE namespace. */ - public static final String TSL_SIE_NS_URI = - "http://uri.etsi.org/TrstSvc/SvcInfoExt/eSigDir-1999-93-EC-TrustedList/#"; + String TSL_SIE_NS_URI = + "http://uri.etsi.org/TrstSvc/SvcInfoExt/eSigDir-1999-93-EC-TrustedList/#"; /** Prefix used for the TSL SIE namespace */ - public static final String TSL_SIE_PREFIX = "tslsie"; + String TSL_SIE_PREFIX = "tslsie"; /** Local location of the TSL SIE schema definition. */ - public static final String TSL_SIE_SCHEMA_LOCATION = - SCHEMA_ROOT + "ts_119612v010201_sie_xsd.xsd"; - + String TSL_SIE_SCHEMA_LOCATION = + SCHEMA_ROOT + "ts_119612v010201_sie_xsd.xsd"; + /** URI of the TSL additional types namespace. */ - public static final String TSL_ADDTYPES_NS_URI = - "http://uri.etsi.org/02231/v2/additionaltypes#"; + String TSL_ADDTYPES_NS_URI = + "http://uri.etsi.org/02231/v2/additionaltypes#"; /** Prefix used for the TSL additional types namespace */ - public static final String TSL_ADDTYPES_PREFIX = "tsltype"; + String TSL_ADDTYPES_PREFIX = "tsltype"; /** Local location of the TSL additional types schema definition. */ - public static final String TSL_ADDTYPES_SCHEMA_LOCATION = - SCHEMA_ROOT + "ts_ts_119612v010201_additionaltypes_xsd.xsd"; - + String TSL_ADDTYPES_SCHEMA_LOCATION = + SCHEMA_ROOT + "ts_ts_119612v010201_additionaltypes_xsd.xsd"; + /** URI of the XML Encryption namespace. */ - public static final String XENC_NS_URI = - "http://www.w3.org/2001/04/xmlenc#"; + String XENC_NS_URI = + "http://www.w3.org/2001/04/xmlenc#"; /** Prefix used for the XML Encryption XML namespace */ - public static final String XENC_PREFIX = "xenc"; + String XENC_PREFIX = "xenc"; /** Local location of the XML Encryption XML schema definition. */ - public static final String XENC_SCHEMA_LOCATION = - SCHEMA_ROOT + "xenc-schema.xsd"; + String XENC_SCHEMA_LOCATION = + SCHEMA_ROOT + "xenc-schema.xsd"; /* Prefix used for the XML Encryption XML namespace */ - public static final String SAML2_METADATA_PREFIX = "md"; - + String SAML2_METADATA_PREFIX = "md"; + /* Prefix used for the XML Encryption XML namespace */ - public static final String SAML2_METADATA_URI = "urn:oasis:names:tc:SAML:2.0:metadata"; + String SAML2_METADATA_URI = "urn:oasis:names:tc:SAML:2.0:metadata"; /* Local location of the XML Encryption XML schema definition. */ - public static final String SAML2_METADATA_SCHEMA_LOCATION = - SCHEMA_ROOT + "saml-schema-metadata-2.0.xsd"; + String SAML2_METADATA_SCHEMA_LOCATION = + SCHEMA_ROOT + "saml-schema-metadata-2.0.xsd"; /** Prefix used for the XML Encryption XML namespace */ - public static final String ASIC_PREFIX = "asic"; + String ASIC_PREFIX = "asic"; /* Prefix used for the XML Encryption XML namespace */ - public static final String ASIC_URI = "http://uri.etsi.org/02918/v1.2.1#"; + String ASIC_URI = "http://uri.etsi.org/02918/v1.2.1#"; /** Local location of the XML Encryption XML schema definition. */ - public static final String ASIC_SCHEMA_LOCATION = - SCHEMA_ROOT + "asic.xsd"; + String ASIC_SCHEMA_LOCATION = + SCHEMA_ROOT + "asic.xsd"; + + /* Prefix and Schema definition for eIDAS specific SAML2 extensions */ + String SAML2_eIDAS_EXTENSIONS_PREFIX = "eidas"; + String SAML2_eIDAS_EXTENSIONS = "http://eidas.europa.eu/saml-extensions"; + String SAML2_eIDAS_EXTENSIONS_SCHEMA_LOCATION = SCHEMA_ROOT + "eIDAS_saml_extensions.xsd"; + + String eDELIVERY20_PREFIX = "zu"; + String eDELIVERY20 = "http://reference.e-government.gv.at/namespace/zustellung/msg/phase2/20181206#"; + String eDELIVERY20_SCHEMA_LOCATION = SCHEMA_ROOT + "zuse_p2.xsd"; + + String eDELIVERY_PERSON_20_PREFIX = "zup"; + String eDELIVERY_PERSON_20 = "http://reference.e-government.gv.at/namespace/persondata/phase2/20181206#"; + String eDELIVERY_PERSON_20_SCHEMA_LOCATION = SCHEMA_ROOT + "zuse_mypersondata_en_p2.xsd"; + + String ONLY_MOASIG_SCHEMA_LOCATIONS = + MOA_NS_URI + " " + MOA_SCHEMA_LOCATION + " " + + MOA_CONFIG_NS_URI + " " + MOA_CONFIG_SCHEMA_LOCATION + " " + + MOA_ID_CONFIG_NS_URI + " " + MOA_ID_CONFIG_SCHEMA_LOCATION + " " + + SL10_NS_URI + " " + SL10_SCHEMA_LOCATION + " " + + SL11_NS_URI + " " + SL11_SCHEMA_LOCATION + " " + + SL12_NS_URI + " " + SL12_SCHEMA_LOCATION + " " + + ECDSA_NS_URI + " " + ECDSA_SCHEMA_LOCATION + " " + // + (PD_NS_URI + " " + PD_SCHEMA_LOCATION + " ") + + SAML_NS_URI + " " + SAML_SCHEMA_LOCATION + " " + + SAMLP_NS_URI + " " + SAMLP_SCHEMA_LOCATION + " " + + XML_NS_URI + " " + XML_SCHEMA_LOCATION + " " + + XSI_NS_URI + " " + XSI_SCHEMA_LOCATION + " " + + DSIG_NS_URI + " " + DSIG_SCHEMA_LOCATION + " " + + DSIG_FILTER2_NS_URI + " " + DSIG_FILTER2_SCHEMA_LOCATION + " " + + DSIG_EC_NS_URI + " " + DSIG_EC_SCHEMA_LOCATION + " " + + XMLLPR_NS_URI + " " + XMLLPR_SCHEMA_LOCATION + " " + + XADES_1_1_1_NS_URI + " " + XADES_1_1_1_SCHEMA_LOCATION + " " + + XADES_1_2_2_NS_URI + " " + XADES_1_2_2_SCHEMA_LOCATION + " " + + XADES_1_3_2_NS_URI + " " + XADES_1_3_2_SCHEMA_LOCATION + " " + + XADES_1_4_1_NS_URI + " " + XADES_1_4_1_SCHEMA_LOCATION + " " + + TSL_NS_URI + " " + TSL_SCHEMA_LOCATION + " " + + TSL_SIE_NS_URI + " " + TSL_SIE_SCHEMA_LOCATION + " " + + TSL_ADDTYPES_NS_URI + " " + TSL_ADDTYPES_SCHEMA_LOCATION + " " + + SAML2_NS_URI + " " + SAML2_SCHEMA_LOCATION + " " + + SAML2P_NS_URI + " " + SAML2P_SCHEMA_LOCATION + " " + + STORK_NS_URI + " " + STORK_SCHEMA_LOCATION + " " + + STORKP_NS_URI + " " + STORKP_SCHEMA_LOCATION + " " + + XENC_NS_URI + " " + XENC_SCHEMA_LOCATION + " " + + SAML2_METADATA_URI + " " + SAML2_METADATA_SCHEMA_LOCATION + " " + + ASIC_URI + " " + ASIC_SCHEMA_LOCATION + " " + + SAML2_eIDAS_EXTENSIONS + " " + SAML2_eIDAS_EXTENSIONS_SCHEMA_LOCATION; /** - * Contains all namespaces and local schema locations for XML schema - * definitions relevant for MOA. For use in validating XML parsers. + * Contains all namespaces and local schema locations for XML schema definitions + * relevant for MOA. For use in validating XML parsers. */ - public static final String ALL_SCHEMA_LOCATIONS = - (MOA_NS_URI + " " + MOA_SCHEMA_LOCATION + " ") - + (MOA_CONFIG_NS_URI + " " + MOA_CONFIG_SCHEMA_LOCATION + " ") - + (MOA_ID_CONFIG_NS_URI + " " + MOA_ID_CONFIG_SCHEMA_LOCATION + " ") - + (SL10_NS_URI + " " + SL10_SCHEMA_LOCATION + " ") - + (SL11_NS_URI + " " + SL11_SCHEMA_LOCATION + " ") - + (SL12_NS_URI + " " + SL12_SCHEMA_LOCATION + " ") - + (ECDSA_NS_URI + " " + ECDSA_SCHEMA_LOCATION + " ") - + (PD_NS_URI + " " + PD_SCHEMA_LOCATION + " ") - + (SAML_NS_URI + " " + SAML_SCHEMA_LOCATION + " ") - + (SAMLP_NS_URI + " " + SAMLP_SCHEMA_LOCATION + " ") - + (XML_NS_URI + " " + XML_SCHEMA_LOCATION + " ") - + (XSI_NS_URI + " " + XSI_SCHEMA_LOCATION + " ") - + (DSIG_NS_URI + " " + DSIG_SCHEMA_LOCATION + " ") - + (DSIG_FILTER2_NS_URI + " " + DSIG_FILTER2_SCHEMA_LOCATION + " ") - + (DSIG_EC_NS_URI + " " + DSIG_EC_SCHEMA_LOCATION + " ") - + (XMLLPR_NS_URI + " " + XMLLPR_SCHEMA_LOCATION + " ") - + (XADES_1_1_1_NS_URI + " " + XADES_1_1_1_SCHEMA_LOCATION + " ") - + (XADES_1_2_2_NS_URI + " " + XADES_1_2_2_SCHEMA_LOCATION + " ") - + (XADES_1_3_2_NS_URI + " " + XADES_1_3_2_SCHEMA_LOCATION + " ") - + (XADES_1_4_1_NS_URI + " " + XADES_1_4_1_SCHEMA_LOCATION + " ") - + (TSL_NS_URI + " " + TSL_SCHEMA_LOCATION + " ") - + (TSL_SIE_NS_URI + " " + TSL_SIE_SCHEMA_LOCATION + " ") - + (TSL_ADDTYPES_NS_URI + " " + TSL_ADDTYPES_SCHEMA_LOCATION + " ") - + (SAML2_NS_URI + " " + SAML2_SCHEMA_LOCATION + " ") - + (SAML2P_NS_URI + " " + SAML2P_SCHEMA_LOCATION + " ") - + (STORK_NS_URI + " " + STORK_SCHEMA_LOCATION + " ") - + (STORKP_NS_URI + " " + STORKP_SCHEMA_LOCATION + " ") - + (XENC_NS_URI + " " + XENC_SCHEMA_LOCATION + " ") - + (SAML2_METADATA_URI + " " + SAML2_METADATA_SCHEMA_LOCATION + " ") - + (ASIC_URI + " " + ASIC_SCHEMA_LOCATION); + String ALL_SCHEMA_LOCATIONS = + MOA_NS_URI + " " + MOA_SCHEMA_LOCATION + " " + + MOA_CONFIG_NS_URI + " " + MOA_CONFIG_SCHEMA_LOCATION + " " + + MOA_ID_CONFIG_NS_URI + " " + MOA_ID_CONFIG_SCHEMA_LOCATION + " " + + SL10_NS_URI + " " + SL10_SCHEMA_LOCATION + " " + + SL11_NS_URI + " " + SL11_SCHEMA_LOCATION + " " + + SL12_NS_URI + " " + SL12_SCHEMA_LOCATION + " " + + ECDSA_NS_URI + " " + ECDSA_SCHEMA_LOCATION + " " + + PD_NS_URI + " " + PD_SCHEMA_LOCATION + " " + + SAML_NS_URI + " " + SAML_SCHEMA_LOCATION + " " + + SAMLP_NS_URI + " " + SAMLP_SCHEMA_LOCATION + " " + + XML_NS_URI + " " + XML_SCHEMA_LOCATION + " " + + XSI_NS_URI + " " + XSI_SCHEMA_LOCATION + " " + + DSIG_NS_URI + " " + DSIG_SCHEMA_LOCATION + " " + + DSIG_FILTER2_NS_URI + " " + DSIG_FILTER2_SCHEMA_LOCATION + " " + + DSIG_EC_NS_URI + " " + DSIG_EC_SCHEMA_LOCATION + " " + + XMLLPR_NS_URI + " " + XMLLPR_SCHEMA_LOCATION + " " + + XADES_1_1_1_NS_URI + " " + XADES_1_1_1_SCHEMA_LOCATION + " " + + XADES_1_2_2_NS_URI + " " + XADES_1_2_2_SCHEMA_LOCATION + " " + + XADES_1_3_2_NS_URI + " " + XADES_1_3_2_SCHEMA_LOCATION + " " + + XADES_1_4_1_NS_URI + " " + XADES_1_4_1_SCHEMA_LOCATION + " " + + TSL_NS_URI + " " + TSL_SCHEMA_LOCATION + " " + + TSL_SIE_NS_URI + " " + TSL_SIE_SCHEMA_LOCATION + " " + + TSL_ADDTYPES_NS_URI + " " + TSL_ADDTYPES_SCHEMA_LOCATION + " " + + SAML2_NS_URI + " " + SAML2_SCHEMA_LOCATION + " " + + SAML2P_NS_URI + " " + SAML2P_SCHEMA_LOCATION + " " + + STORK_NS_URI + " " + STORK_SCHEMA_LOCATION + " " + + STORKP_NS_URI + " " + STORKP_SCHEMA_LOCATION + " " + + XENC_NS_URI + " " + XENC_SCHEMA_LOCATION + " " + + SAML2_METADATA_URI + " " + SAML2_METADATA_SCHEMA_LOCATION + " " + + ASIC_URI + " " + ASIC_SCHEMA_LOCATION + " " + + SAML2_eIDAS_EXTENSIONS + " " + SAML2_eIDAS_EXTENSIONS_SCHEMA_LOCATION + " " + + eDELIVERY20 + " " + eDELIVERY20_SCHEMA_LOCATION + " " + + eDELIVERY_PERSON_20 + " " + eDELIVERY_PERSON_20_SCHEMA_LOCATION; /** URN prefix for bPK and wbPK. */ - public static final String URN_PREFIX = "urn:publicid:gv.at"; - + String URN_PREFIX = "urn:publicid:gv.at"; + /** URN prefix for context dependent id. */ - public static final String URN_PREFIX_CDID = URN_PREFIX + ":cdid"; - + String URN_PREFIX_CDID = URN_PREFIX + ":cdid"; + /** URN prefix for context dependent id (bPK). */ - public static final String URN_PREFIX_BPK = URN_PREFIX_CDID + "+bpk"; + String URN_PREFIX_BPK = URN_PREFIX_CDID + "+bpk"; /** URN prefix for context dependent id (HPI). */ - public static final String URN_PREFIX_HPI = URN_PREFIX_CDID + "+EHSP"; - + String URN_PREFIX_HPI = URN_PREFIX_CDID + "+EHSP"; + /** URN prefix for context dependent id (wbPK). */ - public static final String URN_PREFIX_WBPK = URN_PREFIX + ":wbpk"; + String URN_PREFIX_WBPK = URN_PREFIX + ":wbpk"; /** URN prefix for context dependent id (stork). */ - public static final String URN_PREFIX_STORK = URN_PREFIX + ":storkid"; + String URN_PREFIX_STORK = URN_PREFIX + ":storkid"; /** URN prefix for context dependent id. */ - public static final String URN_PREFIX_BASEID = URN_PREFIX + ":baseid"; - + String URN_PREFIX_BASEID = URN_PREFIX + ":baseid"; + /** Security Layer manifest type URI. */ - public static final String SL_MANIFEST_TYPE_URI = - "http://www.buergerkarte.at/specifications/Security-Layer/20020225#SignatureManifest"; + String SL_MANIFEST_TYPE_URI = + "http://www.buergerkarte.at/specifications/Security-Layer/20020225#SignatureManifest"; /** URI of the SHA1 digest algorithm */ - public static final String SHA1_URI = - "http://www.w3.org/2000/09/xmldsig#sha1"; - + String SHA1_URI = + "http://www.w3.org/2000/09/xmldsig#sha1"; + /** URI of the SHA1 digest algorithm */ - public static final String SHA256_URI = - "http://www.w3.org/2000/09/xmldsig#sha256"; - + String SHA256_URI = + "http://www.w3.org/2000/09/xmldsig#sha256"; + /** URI of the SHA1 digest algorithm */ - public static final String SHA384_URI = - "http://www.w3.org/2000/09/xmldsig#sha384"; - + String SHA384_URI = + "http://www.w3.org/2000/09/xmldsig#sha384"; + /** URI of the SHA1 digest algorithm */ - public static final String SHA512_URI = - "http://www.w3.org/2000/09/xmldsig#sha512"; - + String SHA512_URI = + "http://www.w3.org/2000/09/xmldsig#sha512"; + /** URI of the Canonical XML algorithm */ - public static final String C14N_URI = - "http://www.w3.org/TR/2001/REC-xml-c14n-20010315"; + String C14N_URI = + "http://www.w3.org/TR/2001/REC-xml-c14n-20010315"; /** URI of the Canoncial XML with comments algorithm */ - public static final String C14N_WITH_COMMENTS_URI = - "http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithComments"; + String C14N_WITH_COMMENTS_URI = + "http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithComments"; /** URI of the Exclusive Canonical XML algorithm */ - public static final String EXC_C14N_URI = - "http://www.w3.org/2001/10/xml-exc-c14n#"; - + String EXC_C14N_URI = + "http://www.w3.org/2001/10/xml-exc-c14n#"; + /** URI of the Exclusive Canonical XML with commments algorithm */ - public static final String EXC_C14N_WITH_COMMENTS_URI = - "http://www.w3.org/2001/10/xml-exc-c14n#WithComments"; - + String EXC_C14N_WITH_COMMENTS_URI = + "http://www.w3.org/2001/10/xml-exc-c14n#WithComments"; + // // Local names for elements of the MOA SPSS schema // - - /** + + /** * Local name of request for creating an XML signature. */ - public static final String MOA_SPSS_CREATE_XML_REQUEST = "CreateXMLSignatureRequest"; - - /** + String MOA_SPSS_CREATE_XML_REQUEST = "CreateXMLSignatureRequest"; + + /** * Local name of request for creating a CMS signature. */ - public static final String MOA_SPSS_CREATE_CMS_REQUEST = "CreateCMSSignatureRequest"; - - /** + String MOA_SPSS_CREATE_CMS_REQUEST = "CreateCMSSignatureRequest"; + + /** * Local name of request for creating a CMS signature. */ - public static final String MOA_SPSS_CREATE_PDF_REQUEST = "CreatePDFSignatureRequest"; - - /** + String MOA_SPSS_CREATE_PDF_REQUEST = "CreatePDFSignatureRequest"; + + /** * Local name of request for verifying an XML signature. */ - public static final String MOA_SPSS_VERIFY_XML_REQUEST = "VerifiyXMLSignatureRequest"; - - /** - * A map used to map namespace prefixes to namespace URIs - */ - public static HashMap<String, String> nSMap = new HashMap<String, String>(5); - + String MOA_SPSS_VERIFY_XML_REQUEST = "VerifiyXMLSignatureRequest"; + + /** + * A map used to map namespace prefixes to namespace URIs + */ + HashMap<String, String> nSMap = new HashMap<>(5); + } diff --git a/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/DOMUtils.java b/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/DOMUtils.java index c5550ad..2f96196 100644 --- a/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/DOMUtils.java +++ b/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/DOMUtils.java @@ -21,7 +21,6 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moaspss.util; import java.io.ByteArrayInputStream; @@ -51,6 +50,7 @@ import javax.xml.transform.stream.StreamResult; import org.apache.xerces.parsers.DOMParser; import org.apache.xerces.parsers.SAXParser; import org.apache.xerces.parsers.XMLGrammarPreparser; +import org.apache.xerces.util.SecurityManager; import org.apache.xerces.util.SymbolTable; import org.apache.xerces.util.XMLGrammarPoolImpl; import org.apache.xerces.xni.grammars.XMLGrammarDescription; @@ -72,12 +72,12 @@ import at.gv.egovernment.moaspss.logging.Logger; /** * Various utility functions for handling XML DOM trees. - * + * * The parsing methods in this class make use of some features internal to the - * Xerces DOM parser, mainly for performance reasons. As soon as JAXP - * (currently at version 1.2) is better at schema handling, it should be used as - * the parser interface. - * + * Xerces DOM parser, mainly for performance reasons. As soon as JAXP (currently + * at version 1.2) is better at schema handling, it should be used as the parser + * interface. + * * @author Patrick Peck * @version $Id$ */ @@ -85,54 +85,61 @@ public class DOMUtils { /** Feature URI for namespace aware parsing. */ private static final String NAMESPACES_FEATURE = - "http://xml.org/sax/features/namespaces"; + "http://xml.org/sax/features/namespaces"; /** Feature URI for validating parsing. */ private static final String VALIDATION_FEATURE = - "http://xml.org/sax/features/validation"; + "http://xml.org/sax/features/validation"; /** Feature URI for schema validating parsing. */ private static final String SCHEMA_VALIDATION_FEATURE = - "http://apache.org/xml/features/validation/schema"; + "http://apache.org/xml/features/validation/schema"; /** Feature URI for normalization of element/attribute values. */ private static final String NORMALIZED_VALUE_FEATURE = - "http://apache.org/xml/features/validation/schema/normalized-value"; + "http://apache.org/xml/features/validation/schema/normalized-value"; /** Feature URI for parsing ignorable whitespace. */ private static final String INCLUDE_IGNORABLE_WHITESPACE_FEATURE = - "http://apache.org/xml/features/dom/include-ignorable-whitespace"; + "http://apache.org/xml/features/dom/include-ignorable-whitespace"; /** Feature URI for creating EntityReference nodes in the DOM tree. */ private static final String CREATE_ENTITY_REF_NODES_FEATURE = - "http://apache.org/xml/features/dom/create-entity-ref-nodes"; + "http://apache.org/xml/features/dom/create-entity-ref-nodes"; /** Property URI for providing external schema locations. */ private static final String EXTERNAL_SCHEMA_LOCATION_PROPERTY = - "http://apache.org/xml/properties/schema/external-schemaLocation"; - /** Property URI for providing the external schema location for elements - * without a namespace. */ + "http://apache.org/xml/properties/schema/external-schemaLocation"; + /** + * Property URI for providing the external schema location for elements without + * a namespace. + */ private static final String EXTERNAL_NO_NAMESPACE_SCHEMA_LOCATION_PROPERTY = - "http://apache.org/xml/properties/schema/external-noNamespaceSchemaLocation"; - + "http://apache.org/xml/properties/schema/external-noNamespaceSchemaLocation"; + private static final String EXTERNAL_GENERAL_ENTITIES_FEATURE = - "http://xml.org/sax/features/external-general-entities"; - + "http://xml.org/sax/features/external-general-entities"; + private static final String EXTERNAL_PARAMETER_ENTITIES_FEATURE = - "http://xml.org/sax/features/external-parameter-entities"; - + "http://xml.org/sax/features/external-parameter-entities"; + private static final String DISALLOW_DOCTYPE_FEATURE = - "http://apache.org/xml/features/disallow-doctype-decl"; - - - + "http://apache.org/xml/features/disallow-doctype-decl"; + + // Security Manager feature for XERCES XML parser + private static final String SECURITY_MANAGER = + org.apache.xerces.impl.Constants.XERCES_PROPERTY_PREFIX + + org.apache.xerces.impl.Constants.SECURITY_MANAGER_PROPERTY; + /** Property URI for the Xerces grammar pool. */ private static final String GRAMMAR_POOL = - org.apache.xerces.impl.Constants.XERCES_PROPERTY_PREFIX - + org.apache.xerces.impl.Constants.XMLGRAMMAR_POOL_PROPERTY; + org.apache.xerces.impl.Constants.XERCES_PROPERTY_PREFIX + + org.apache.xerces.impl.Constants.XMLGRAMMAR_POOL_PROPERTY; /** A prime number for initializing the symbol table. */ private static final int BIG_PRIME = 2039; /** Symbol table for the grammar pool. */ private static SymbolTable symbolTable = new SymbolTable(BIG_PRIME); /** Xerces schema grammar pool. */ private static XMLGrammarPool grammarPool = new XMLGrammarPoolImpl(); - /** Set holding the NamespaceURIs of the grammarPool, to prevent multiple - * entries of same grammars to the pool */ - private static Set grammarNamespaces; + /** + * Set holding the NamespaceURIs of the grammarPool, to prevent multiple entries + * of same grammars to the pool + */ + private static Set grammarNamespaces; static { grammarPool.lockPool(); @@ -140,38 +147,38 @@ public class DOMUtils { } /** - * Preparse a schema and add it to the schema pool. - * The method only adds the schema to the pool if a schema having the same - * <code>systemId</code> (namespace URI) is not already present in the pool. - * - * @param inputStream An <code>InputStream</code> providing the contents of - * the schema. - * @param systemId The systemId (namespace URI) to use for the schema. + * Preparse a schema and add it to the schema pool. The method only adds the + * schema to the pool if a schema having the same <code>systemId</code> + * (namespace URI) is not already present in the pool. + * + * @param inputStream An <code>InputStream</code> providing the contents of the + * schema. + * @param systemId The systemId (namespace URI) to use for the schema. * @throws IOException An error occurred reading the schema. */ public static void addSchemaToPool(InputStream inputStream, String systemId) - throws IOException { + throws IOException { XMLGrammarPreparser preparser; - if (!grammarNamespaces.contains(systemId)) { + if (!grammarNamespaces.contains(systemId)) { grammarNamespaces.add(systemId); - + // unlock the pool so that we can add another grammar grammarPool.unlockPool(); - + // prepare the preparser preparser = new XMLGrammarPreparser(symbolTable); preparser.registerPreparser(XMLGrammarDescription.XML_SCHEMA, null); preparser.setProperty(GRAMMAR_POOL, grammarPool); preparser.setFeature(NAMESPACES_FEATURE, true); preparser.setFeature(VALIDATION_FEATURE, true); - + // add the grammar to the pool preparser.preparseGrammar( - XMLGrammarDescription.XML_SCHEMA, - new XMLInputSource(null, systemId, null, inputStream, null)); - + XMLGrammarDescription.XML_SCHEMA, + new XMLInputSource(null, systemId, null, inputStream, null)); + // lock the pool again so that schemas are not added automatically grammarPool.lockPool(); } @@ -179,34 +186,43 @@ public class DOMUtils { /** * Parse an XML document from an <code>InputStream</code>. - * - * @param inputStream The <code>InputStream</code> containing the XML - * document. - * @param validating If <code>true</code>, parse validating. - * @param externalSchemaLocations A <code>String</code> containing namespace - * URI to schema location pairs, the same way it is accepted by the <code>xsi: - * schemaLocation</code> attribute. - * @param externalNoNamespaceSchemaLocation The schema location of the - * schema for elements without a namespace, the same way it is accepted by the - * <code>xsi:noNamespaceSchemaLocation</code> attribute. - * @param entityResolver An <code>EntityResolver</code> to resolve external - * entities (schemas and DTDs). If <code>null</code>, it will not be set. - * @param errorHandler An <code>ErrorHandler</code> to decide what to do - * with parsing errors. If <code>null</code>, it will not be set. + * + * @param inputStream The <code>InputStream</code> + * containing the XML document. + * @param validating If <code>true</code>, parse + * validating. + * @param externalSchemaLocations A <code>String</code> containing + * namespace URI to schema location + * pairs, the same way it is accepted + * by the <code>xsi: + * schemaLocation</code> attribute. + * @param externalNoNamespaceSchemaLocation The schema location of the schema + * for elements without a namespace, + * the same way it is accepted by the + * <code>xsi:noNamespaceSchemaLocation</code> + * attribute. + * @param entityResolver An <code>EntityResolver</code> to + * resolve external entities (schemas + * and DTDs). If <code>null</code>, it + * will not be set. + * @param errorHandler An <code>ErrorHandler</code> to + * decide what to do with parsing + * errors. If <code>null</code>, it + * will not be set. * @return The parsed XML document as a DOM tree. - * @throws SAXException An error occurred parsing the document. - * @throws IOException An error occurred reading the document. + * @throws SAXException An error occurred parsing the document. + * @throws IOException An error occurred reading the document. * @throws ParserConfigurationException An error occurred configuring the XML - * parser. + * parser. */ public static Document parseDocument( - InputStream inputStream, - boolean validating, - String externalSchemaLocations, - String externalNoNamespaceSchemaLocation, - EntityResolver entityResolver, - ErrorHandler errorHandler) - throws SAXException, IOException, ParserConfigurationException { + InputStream inputStream, + boolean validating, + String externalSchemaLocations, + String externalNoNamespaceSchemaLocation, + EntityResolver entityResolver, + ErrorHandler errorHandler) + throws SAXException, IOException, ParserConfigurationException { DOMParser parser; @@ -218,72 +234,77 @@ public class DOMUtils { // } // } + // if Debug is enabled make a copy of inputStream to enable debug output in case + // of SAXException + byte buffer[] = null; + ByteArrayInputStream baStream = null; + if (true == Logger.isDebugEnabled()) { + final int len = inputStream.available(); + buffer = new byte[len]; + inputStream.read(buffer); + baStream = new ByteArrayInputStream(buffer); + } - //if Debug is enabled make a copy of inputStream to enable debug output in case of SAXException - byte buffer [] = null; - ByteArrayInputStream baStream = null; - if(true == Logger.isDebugEnabled()) { - int len = inputStream.available(); - buffer = new byte[len]; - inputStream.read(buffer); - baStream = new ByteArrayInputStream(buffer); - } - // create the DOM parser if (symbolTable != null) { parser = new DOMParser(symbolTable, grammarPool); } else { parser = new DOMParser(); } - + // set parser features and properties try { - parser.setFeature(NAMESPACES_FEATURE, true); - parser.setFeature(VALIDATION_FEATURE, validating); - parser.setFeature(SCHEMA_VALIDATION_FEATURE, validating); - parser.setFeature(NORMALIZED_VALUE_FEATURE, false); - parser.setFeature(INCLUDE_IGNORABLE_WHITESPACE_FEATURE, true); - parser.setFeature(CREATE_ENTITY_REF_NODES_FEATURE, false); - parser.setFeature(EXTERNAL_GENERAL_ENTITIES_FEATURE, false); - parser.setFeature(EXTERNAL_PARAMETER_ENTITIES_FEATURE, false); - - //fix XXE problem - //parser.setFeature("http://apache.org/xml/features/disallow-doctype-decl", true); - - if (validating) { - if (externalSchemaLocations != null) { - parser.setProperty( - EXTERNAL_SCHEMA_LOCATION_PROPERTY, - externalSchemaLocations); - } - if (externalNoNamespaceSchemaLocation != null) { - parser.setProperty( - EXTERNAL_NO_NAMESPACE_SCHEMA_LOCATION_PROPERTY, - externalNoNamespaceSchemaLocation); - } - } - - // set entity resolver and error handler - if (entityResolver != null) { - parser.setEntityResolver(entityResolver); - } - if (errorHandler != null) { - parser.setErrorHandler(errorHandler); - } - - // parse the document and return it - // if debug is enabled: use copy of strem (baStream) else use orig stream - - if(null != baStream) - parser.parse(new InputSource(baStream)); - else - parser.parse(new InputSource(inputStream)); - } catch(SAXException e) { - if(true == Logger.isDebugEnabled() && null != buffer) { - String xmlContent = new String(buffer); - Logger.debug("SAXException in:\n" + xmlContent); - } - throw(e); + parser.setFeature(NAMESPACES_FEATURE, true); + parser.setFeature(VALIDATION_FEATURE, validating); + parser.setFeature(SCHEMA_VALIDATION_FEATURE, validating); + parser.setFeature(NORMALIZED_VALUE_FEATURE, false); + parser.setFeature(INCLUDE_IGNORABLE_WHITESPACE_FEATURE, true); + parser.setFeature(CREATE_ENTITY_REF_NODES_FEATURE, false); + parser.setFeature(EXTERNAL_GENERAL_ENTITIES_FEATURE, false); + parser.setFeature(EXTERNAL_PARAMETER_ENTITIES_FEATURE, false); + + final SecurityManager xmlParserSecManager = new org.apache.xerces.util.SecurityManager(); + parser.setProperty(SECURITY_MANAGER, xmlParserSecManager); + + // fix XXE problem + // parser.setFeature("http://apache.org/xml/features/disallow-doctype-decl", + // true); + + if (validating) { + if (externalSchemaLocations != null) { + parser.setProperty( + EXTERNAL_SCHEMA_LOCATION_PROPERTY, + externalSchemaLocations); + } + if (externalNoNamespaceSchemaLocation != null) { + parser.setProperty( + EXTERNAL_NO_NAMESPACE_SCHEMA_LOCATION_PROPERTY, + externalNoNamespaceSchemaLocation); + } + } + + // set entity resolver and error handler + if (entityResolver != null) { + parser.setEntityResolver(entityResolver); + } + if (errorHandler != null) { + parser.setErrorHandler(errorHandler); + } + + // parse the document and return it + // if debug is enabled: use copy of strem (baStream) else use orig stream + + if (null != baStream) { + parser.parse(new InputSource(baStream)); + } else { + parser.parse(new InputSource(inputStream)); + } + } catch (final SAXException e) { + if (true == Logger.isDebugEnabled() && null != buffer) { + final String xmlContent = new String(buffer); + Logger.debug("SAXException in:\n" + xmlContent); + } + throw e; } return parser.getDocument(); @@ -291,31 +312,40 @@ public class DOMUtils { /** * Parse an XML document from an <code>InputStream</code>. - * - * @param inputStream The <code>InputStream</code> containing the XML - * document. - * @param validating If <code>true</code>, parse validating. - * @param externalSchemaLocations A <code>String</code> containing namespace - * URI to schema location pairs, the same way it is accepted by the <code>xsi: - * schemaLocation</code> attribute. - * @param externalNoNamespaceSchemaLocation The schema location of the - * schema for elements without a namespace, the same way it is accepted by the - * <code>xsi:noNamespaceSchemaLocation</code> attribute. - * @param entityResolver An <code>EntityResolver</code> to resolve external - * entities (schemas and DTDs). If <code>null</code>, it will not be set. - * @param errorHandler An <code>ErrorHandler</code> to decide what to do - * with parsing errors. If <code>null</code>, it will not be set. + * + * @param inputStream The <code>InputStream</code> + * containing the XML document. + * @param validating If <code>true</code>, parse + * validating. + * @param externalSchemaLocations A <code>String</code> containing + * namespace URI to schema location + * pairs, the same way it is accepted + * by the <code>xsi: + * schemaLocation</code> attribute. + * @param externalNoNamespaceSchemaLocation The schema location of the schema + * for elements without a namespace, + * the same way it is accepted by the + * <code>xsi:noNamespaceSchemaLocation</code> + * attribute. + * @param entityResolver An <code>EntityResolver</code> to + * resolve external entities (schemas + * and DTDs). If <code>null</code>, it + * will not be set. + * @param errorHandler An <code>ErrorHandler</code> to + * decide what to do with parsing + * errors. If <code>null</code>, it + * will not be set. * @return The parsed XML document as a DOM tree. - * @throws SAXException An error occurred parsing the document. - * @throws IOException An error occurred reading the document. + * @throws SAXException An error occurred parsing the document. + * @throws IOException An error occurred reading the document. * @throws ParserConfigurationException An error occurred configuring the XML - * parser. + * parser. */ public static Document parseDocumentSimple(InputStream inputStream) - throws SAXException, IOException, ParserConfigurationException { + throws SAXException, IOException, ParserConfigurationException { DOMParser parser; - + parser = new DOMParser(); // set parser features and properties parser.setFeature(NAMESPACES_FEATURE, true); @@ -324,181 +354,200 @@ public class DOMUtils { parser.setFeature(NORMALIZED_VALUE_FEATURE, false); parser.setFeature(INCLUDE_IGNORABLE_WHITESPACE_FEATURE, true); parser.setFeature(CREATE_ENTITY_REF_NODES_FEATURE, false); - + + final SecurityManager xmlParserSecManager = new org.apache.xerces.util.SecurityManager(); + parser.setProperty(SECURITY_MANAGER, xmlParserSecManager); + parser.parse(new InputSource(inputStream)); - + return parser.getDocument(); } - /** * Parse an XML document from an <code>InputStream</code>. - * + * * It uses a <code>MOAEntityResolver</code> as the <code>EntityResolver</code> * and a <code>MOAErrorHandler</code> as the <code>ErrorHandler</code>. - * - * @param inputStream The <code>InputStream</code> containing the XML - * document. - * @param validating If <code>true</code>, parse validating. - * @param externalSchemaLocations A <code>String</code> containing namespace - * URI to schema location pairs, the same way it is accepted by the <code>xsi: - * schemaLocation</code> attribute. - * @param externalNoNamespaceSchemaLocation The schema location of the - * schema for elements without a namespace, the same way it is accepted by the - * <code>xsi:noNamespaceSchemaLocation</code> attribute. + * + * @param inputStream The <code>InputStream</code> + * containing the XML document. + * @param validating If <code>true</code>, parse + * validating. + * @param externalSchemaLocations A <code>String</code> containing + * namespace URI to schema location + * pairs, the same way it is accepted + * by the <code>xsi: + * schemaLocation</code> attribute. + * @param externalNoNamespaceSchemaLocation The schema location of the schema + * for elements without a namespace, + * the same way it is accepted by the + * <code>xsi:noNamespaceSchemaLocation</code> + * attribute. * @return The parsed XML document as a DOM tree. - * @throws SAXException An error occurred parsing the document. - * @throws IOException An error occurred reading the document. + * @throws SAXException An error occurred parsing the document. + * @throws IOException An error occurred reading the document. * @throws ParserConfigurationException An error occurred configuring the XML - * parser. + * parser. */ public static Document parseDocument( - InputStream inputStream, - boolean validating, - String externalSchemaLocations, - String externalNoNamespaceSchemaLocation) - throws SAXException, IOException, ParserConfigurationException { - - - + InputStream inputStream, + boolean validating, + String externalSchemaLocations, + String externalNoNamespaceSchemaLocation) + throws SAXException, IOException, ParserConfigurationException { + return parseDocument( - inputStream, - validating, - externalSchemaLocations, - externalNoNamespaceSchemaLocation, - new MOAEntityResolver(), - new MOAErrorHandler()); + inputStream, + validating, + externalSchemaLocations, + externalNoNamespaceSchemaLocation, + new MOAEntityResolver(), + new MOAErrorHandler()); } /** * Parse an XML document from a <code>String</code>. - * + * * It uses a <code>MOAEntityResolver</code> as the <code>EntityResolver</code> * and a <code>MOAErrorHandler</code> as the <code>ErrorHandler</code>. - * - * @param xmlString The <code>String</code> containing the XML document. - * @param encoding The encoding of the XML document. - * @param validating If <code>true</code>, parse validating. - * @param externalSchemaLocations A <code>String</code> containing namespace - * URI to schema location pairs, the same way it is accepted by the <code>xsi: - * schemaLocation</code> attribute. - * @param externalNoNamespaceSchemaLocation The schema location of the - * schema for elements without a namespace, the same way it is accepted by the - * <code>xsi:noNamespaceSchemaLocation</code> attribute. + * + * @param xmlString The <code>String</code> containing + * the XML document. + * @param encoding The encoding of the XML document. + * @param validating If <code>true</code>, parse + * validating. + * @param externalSchemaLocations A <code>String</code> containing + * namespace URI to schema location + * pairs, the same way it is accepted + * by the <code>xsi: + * schemaLocation</code> attribute. + * @param externalNoNamespaceSchemaLocation The schema location of the schema + * for elements without a namespace, + * the same way it is accepted by the + * <code>xsi:noNamespaceSchemaLocation</code> + * attribute. * @return The parsed XML document as a DOM tree. - * @throws SAXException An error occurred parsing the document. - * @throws IOException An error occurred reading the document. + * @throws SAXException An error occurred parsing the document. + * @throws IOException An error occurred reading the document. * @throws ParserConfigurationException An error occurred configuring the XML - * parser. + * parser. */ public static Document parseDocument( - String xmlString, - String encoding, - boolean validating, - String externalSchemaLocations, - String externalNoNamespaceSchemaLocation) - throws SAXException, IOException, ParserConfigurationException { - - InputStream in = new ByteArrayInputStream(xmlString.getBytes(encoding)); + String xmlString, + String encoding, + boolean validating, + String externalSchemaLocations, + String externalNoNamespaceSchemaLocation) + throws SAXException, IOException, ParserConfigurationException { + + final InputStream in = new ByteArrayInputStream(xmlString.getBytes(encoding)); return parseDocument( - in, - validating, - externalSchemaLocations, - externalNoNamespaceSchemaLocation); + in, + validating, + externalSchemaLocations, + externalNoNamespaceSchemaLocation); } /** * Parse an UTF-8 encoded XML document from a <code>String</code>. - * - * @param xmlString The <code>String</code> containing the XML document. - * @param validating If <code>true</code>, parse validating. - * @param externalSchemaLocations A <code>String</code> containing namespace - * URI to schema location pairs, the same way it is accepted by the <code>xsi: - * schemaLocation</code> attribute. - * @param externalNoNamespaceSchemaLocation The schema location of the - * schema for elements without a namespace, the same way it is accepted by the - * <code>xsi:noNamespaceSchemaLocation</code> attribute. + * + * @param xmlString The <code>String</code> containing + * the XML document. + * @param validating If <code>true</code>, parse + * validating. + * @param externalSchemaLocations A <code>String</code> containing + * namespace URI to schema location + * pairs, the same way it is accepted + * by the <code>xsi: + * schemaLocation</code> attribute. + * @param externalNoNamespaceSchemaLocation The schema location of the schema + * for elements without a namespace, + * the same way it is accepted by the + * <code>xsi:noNamespaceSchemaLocation</code> + * attribute. * @return The parsed XML document as a DOM tree. - * @throws SAXException An error occurred parsing the document. - * @throws IOException An error occurred reading the document. + * @throws SAXException An error occurred parsing the document. + * @throws IOException An error occurred reading the document. * @throws ParserConfigurationException An error occurred configuring the XML - * parser. + * parser. */ public static Document parseDocument( - String xmlString, - boolean validating, - String externalSchemaLocations, - String externalNoNamespaceSchemaLocation) - throws SAXException, IOException, ParserConfigurationException { + String xmlString, + boolean validating, + String externalSchemaLocations, + String externalNoNamespaceSchemaLocation) + throws SAXException, IOException, ParserConfigurationException { return parseDocument( - xmlString, - "UTF-8", - validating, - externalSchemaLocations, - externalNoNamespaceSchemaLocation); + xmlString, + "UTF-8", + validating, + externalSchemaLocations, + externalNoNamespaceSchemaLocation); } /** * A convenience method to parse an XML document validating. - * - * @param inputStream The <code>InputStream</code> containing the XML - * document. + * + * @param inputStream The <code>InputStream</code> containing the XML document. * @return The root element of the parsed XML document. - * @throws SAXException An error occurred parsing the document. - * @throws IOException An error occurred reading the document. + * @throws SAXException An error occurred parsing the document. + * @throws IOException An error occurred reading the document. * @throws ParserConfigurationException An error occurred configuring the XML - * parser. + * parser. */ public static Element parseXmlValidating(InputStream inputStream) - throws ParserConfigurationException, SAXException, IOException { + throws ParserConfigurationException, SAXException, IOException { return DOMUtils - .parseDocument(inputStream, true, Constants.ALL_SCHEMA_LOCATIONS, null) - .getDocumentElement(); + .parseDocument(inputStream, true, Constants.ALL_SCHEMA_LOCATIONS, null) + .getDocumentElement(); } - + /** * A convenience method to parse an XML document non validating. - * - * @param inputStream The <code>InputStream</code> containing the XML - * document. + * + * @param inputStream The <code>InputStream</code> containing the XML document. * @return The root element of the parsed XML document. - * @throws SAXException An error occurred parsing the document. - * @throws IOException An error occurred reading the document. + * @throws SAXException An error occurred parsing the document. + * @throws IOException An error occurred reading the document. * @throws ParserConfigurationException An error occurred configuring the XML - * parser. + * parser. */ public static Element parseXmlNonValidating(InputStream inputStream) - throws ParserConfigurationException, SAXException, IOException { + throws ParserConfigurationException, SAXException, IOException { return DOMUtils - .parseDocument(inputStream, false, Constants.ALL_SCHEMA_LOCATIONS, null) - .getDocumentElement(); + .parseDocument(inputStream, false, Constants.ALL_SCHEMA_LOCATIONS, null) + .getDocumentElement(); } /** * Schema validate a given DOM element. - * - * @param element The element to validate. - * @param externalSchemaLocations A <code>String</code> containing namespace - * URI to schema location pairs, the same way it is accepted by the <code>xsi: - * schemaLocation</code> attribute. - * @param externalNoNamespaceSchemaLocation The schema location of the - * schema for elements without a namespace, the same way it is accepted by the - * <code>xsi:noNamespaceSchemaLocation</code> attribute. - * @return <code>true</code>, if the <code>element</code> validates against - * the schemas declared in it. - * @throws SAXException An error occurred parsing the document. - * @throws IOException An error occurred reading the document from its - * serialized representation. + * + * @param element The element to validate. + * @param externalSchemaLocations A <code>String</code> containing + * namespace URI to schema location + * pairs, the same way it is accepted + * by the <code>xsi: + * schemaLocation</code> attribute. + * @param externalNoNamespaceSchemaLocation The schema location of the schema + * for elements without a namespace, + * the same way it is accepted by the + * <code>xsi:noNamespaceSchemaLocation</code> + * attribute. + * @return <code>true</code>, if the <code>element</code> validates against the + * schemas declared in it. + * @throws SAXException An error occurred parsing the document. + * @throws IOException An error occurred reading the document + * from its serialized representation. * @throws ParserConfigurationException An error occurred configuring the XML - * @throws TransformerException An error occurred serializing the element. + * @throws TransformerException An error occurred serializing the + * element. */ public static boolean validateElement( - Element element, - String externalSchemaLocations, - String externalNoNamespaceSchemaLocation) - throws - ParserConfigurationException, + Element element, + String externalSchemaLocations, + String externalNoNamespaceSchemaLocation) + throws ParserConfigurationException, IOException, SAXException, TransformerException { @@ -522,16 +571,16 @@ public class DOMUtils { parser.setFeature(SCHEMA_VALIDATION_FEATURE, true); parser.setFeature(EXTERNAL_GENERAL_ENTITIES_FEATURE, false); parser.setFeature(DISALLOW_DOCTYPE_FEATURE, true); - + if (externalSchemaLocations != null) { parser.setProperty( - EXTERNAL_SCHEMA_LOCATION_PROPERTY, - externalSchemaLocations); + EXTERNAL_SCHEMA_LOCATION_PROPERTY, + externalSchemaLocations); } if (externalNoNamespaceSchemaLocation != null) { parser.setProperty( - EXTERNAL_NO_NAMESPACE_SCHEMA_LOCATION_PROPERTY, - "externalNoNamespaceSchemaLocation"); + EXTERNAL_NO_NAMESPACE_SCHEMA_LOCATION_PROPERTY, + "externalNoNamespaceSchemaLocation"); } // set up entity resolver and error handler @@ -543,32 +592,35 @@ public class DOMUtils { return true; } - /** * Schema validate a given DOM element. - * - * @param element The element to validate. - * @param externalSchemaLocations A <code>String</code> containing namespace - * URI to schema location pairs, the same way it is accepted by the <code>xsi: - * schemaLocation</code> attribute. - * @param externalNoNamespaceSchemaLocation The schema location of the - * schema for elements without a namespace, the same way it is accepted by the - * <code>xsi:noNamespaceSchemaLocation</code> attribute. - * @return <code>true</code>, if the <code>element</code> validates against - * the schemas declared in it. - * @throws SAXException An error occurred parsing the document. - * @throws IOException An error occurred reading the document from its - * serialized representation. + * + * @param element The element to validate. + * @param externalSchemaLocations A <code>String</code> containing + * namespace URI to schema location + * pairs, the same way it is accepted + * by the <code>xsi: + * schemaLocation</code> attribute. + * @param externalNoNamespaceSchemaLocation The schema location of the schema + * for elements without a namespace, + * the same way it is accepted by the + * <code>xsi:noNamespaceSchemaLocation</code> + * attribute. + * @return <code>true</code>, if the <code>element</code> validates against the + * schemas declared in it. + * @throws SAXException An error occurred parsing the document. + * @throws IOException An error occurred reading the document + * from its serialized representation. * @throws ParserConfigurationException An error occurred configuring the XML - * @throws TransformerException An error occurred serializing the element. + * @throws TransformerException An error occurred serializing the + * element. */ public static boolean validateElement( - Element element, - String externalSchemaLocations, - String externalNoNamespaceSchemaLocation, - EntityResolver entityResolver) - throws - ParserConfigurationException, + Element element, + String externalSchemaLocations, + String externalNoNamespaceSchemaLocation, + EntityResolver entityResolver) + throws ParserConfigurationException, IOException, SAXException, TransformerException { @@ -590,16 +642,19 @@ public class DOMUtils { parser.setFeature(NAMESPACES_FEATURE, true); parser.setFeature(VALIDATION_FEATURE, true); parser.setFeature(SCHEMA_VALIDATION_FEATURE, true); - + + final SecurityManager xmlParserSecManager = new org.apache.xerces.util.SecurityManager(); + parser.setProperty(SECURITY_MANAGER, xmlParserSecManager); + if (externalSchemaLocations != null) { parser.setProperty( - EXTERNAL_SCHEMA_LOCATION_PROPERTY, - externalSchemaLocations); + EXTERNAL_SCHEMA_LOCATION_PROPERTY, + externalSchemaLocations); } if (externalNoNamespaceSchemaLocation != null) { parser.setProperty( - EXTERNAL_NO_NAMESPACE_SCHEMA_LOCATION_PROPERTY, - "externalNoNamespaceSchemaLocation"); + EXTERNAL_NO_NAMESPACE_SCHEMA_LOCATION_PROPERTY, + "externalNoNamespaceSchemaLocation"); } // set up entity resolver and error handler @@ -610,122 +665,127 @@ public class DOMUtils { parser.parse(new InputSource(new ByteArrayInputStream(docBytes))); return true; } - + /** * Serialize the given DOM node. - * + * * The node will be serialized using the UTF-8 encoding. - * + * * @param node The node to serialize. - * @return String The <code>String</code> representation of the given DOM - * node. - * @throws TransformerException An error occurred transforming the - * node to a <code>String</code>. - * @throws IOException An IO error occurred writing the node to a byte array. + * @return String The <code>String</code> representation of the given DOM node. + * @throws TransformerException An error occurred transforming the node to a + * <code>String</code>. + * @throws IOException An IO error occurred writing the node to a byte + * array. */ public static String serializeNode(Node node) - throws TransformerException, IOException { + throws TransformerException, IOException { return new String(serializeNode(node, "UTF-8", false), "UTF-8"); } - /** * Serialize the given DOM node. - * + * * The node will be serialized using the UTF-8 encoding. - * - * @param node The node to serialize. + * + * @param node The node to serialize. * @param omitXmlDeclaration The boolean value for omitting the XML Declaration. - * @return String The <code>String</code> representation of the given DOM - * node. - * @throws TransformerException An error occurred transforming the - * node to a <code>String</code>. - * @throws IOException An IO error occurred writing the node to a byte array. + * @return String The <code>String</code> representation of the given DOM node. + * @throws TransformerException An error occurred transforming the node to a + * <code>String</code>. + * @throws IOException An IO error occurred writing the node to a byte + * array. */ public static String serializeNode(Node node, boolean omitXmlDeclaration) - throws TransformerException, IOException { + throws TransformerException, IOException { return new String(serializeNode(node, "UTF-8", omitXmlDeclaration), "UTF-8"); } /** * Serialize the given DOM node. - * + * * The node will be serialized using the UTF-8 encoding. - * - * @param node The node to serialize. + * + * @param node The node to serialize. * @param omitXmlDeclaration The boolean value for omitting the XML Declaration. - * @param lineSeperator Sets the line seperator String of the parser - * @return String The <code>String</code> representation of the given DOM - * node. - * @throws TransformerException An error occurred transforming the - * node to a <code>String</code>. - * @throws IOException An IO error occurred writing the node to a byte array. + * @param lineSeperator Sets the line seperator String of the parser + * @return String The <code>String</code> representation of the given DOM node. + * @throws TransformerException An error occurred transforming the node to a + * <code>String</code>. + * @throws IOException An IO error occurred writing the node to a byte + * array. */ public static String serializeNode(Node node, boolean omitXmlDeclaration, String lineSeperator) - throws TransformerException, IOException { + throws TransformerException, IOException { return new String(serializeNode(node, "UTF-8", omitXmlDeclaration, lineSeperator), "UTF-8"); } - + /** * Serialize the given DOM node to a byte array. - * - * @param node The node to serialize. + * + * @param node The node to serialize. * @param xmlEncoding The XML encoding to use. * @return The serialized node, as a byte array. Using a compatible encoding - * this can easily be converted into a <code>String</code>. - * @throws TransformerException An error occurred transforming the node to a - * byte array. - * @throws IOException An IO error occurred writing the node to a byte array. + * this can easily be converted into a <code>String</code>. + * @throws TransformerException An error occurred transforming the node to a + * byte array. + * @throws IOException An IO error occurred writing the node to a byte + * array. */ public static byte[] serializeNode(Node node, String xmlEncoding) - throws TransformerException, IOException { + throws TransformerException, IOException { return serializeNode(node, xmlEncoding, false); } - + /** * Serialize the given DOM node to a byte array. - * - * @param node The node to serialize. - * @param xmlEncoding The XML encoding to use. + * + * @param node The node to serialize. + * @param xmlEncoding The XML encoding to use. * @param omitDeclaration The boolean value for omitting the XML Declaration. * @return The serialized node, as a byte array. Using a compatible encoding - * this can easily be converted into a <code>String</code>. - * @throws TransformerException An error occurred transforming the node to a - * byte array. - * @throws IOException An IO error occurred writing the node to a byte array. + * this can easily be converted into a <code>String</code>. + * @throws TransformerException An error occurred transforming the node to a + * byte array. + * @throws IOException An IO error occurred writing the node to a byte + * array. */ public static byte[] serializeNode(Node node, String xmlEncoding, boolean omitDeclaration) - throws TransformerException, IOException { + throws TransformerException, IOException { return serializeNode(node, xmlEncoding, omitDeclaration, null); } - /** * Serialize the given DOM node to a byte array. - * - * @param node The node to serialize. - * @param xmlEncoding The XML encoding to use. + * + * @param node The node to serialize. + * @param xmlEncoding The XML encoding to use. * @param omitDeclaration The boolean value for omitting the XML Declaration. - * @param lineSeperator Sets the line seperator String of the parser + * @param lineSeperator Sets the line seperator String of the parser * @return The serialized node, as a byte array. Using a compatible encoding - * this can easily be converted into a <code>String</code>. - * @throws TransformerException An error occurred transforming the node to a - * byte array. - * @throws IOException An IO error occurred writing the node to a byte array. + * this can easily be converted into a <code>String</code>. + * @throws TransformerException An error occurred transforming the node to a + * byte array. + * @throws IOException An IO error occurred writing the node to a byte + * array. */ - public static byte[] serializeNode(Node node, String xmlEncoding, boolean omitDeclaration, String lineSeperator) - throws TransformerException, IOException { + public static byte[] serializeNode(Node node, String xmlEncoding, boolean omitDeclaration, + String lineSeperator) + throws TransformerException, IOException { - TransformerFactory transformerFactory = TransformerFactory.newInstance(); - Transformer transformer = transformerFactory.newTransformer(); - ByteArrayOutputStream bos = new ByteArrayOutputStream(16384); + final TransformerFactory transformerFactory = TransformerFactory.newInstance(); + final Transformer transformer = transformerFactory.newTransformer(); + final ByteArrayOutputStream bos = new ByteArrayOutputStream(16384); transformer.setOutputProperty(OutputKeys.METHOD, "xml"); transformer.setOutputProperty(OutputKeys.ENCODING, xmlEncoding); - String omit = omitDeclaration ? "yes" : "no"; + final String omit = omitDeclaration ? "yes" : "no"; transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, omit); - if (null!=lineSeperator) { - transformer.setOutputProperty("{http://xml.apache.org/xalan}line-separator", lineSeperator);//does not work for xalan <= 2.5.1 + if (null != lineSeperator) { + transformer.setOutputProperty("{http://xml.apache.org/xalan}line-separator", lineSeperator);// does not + // work for + // xalan <= + // 2.5.1 } transformer.transform(new DOMSource(node), new StreamResult(bos)); @@ -736,30 +796,30 @@ public class DOMUtils { } /** - * Return the text that a node contains. - * - * This routine: - * <ul> - * <li>Ignores comments and processing instructions.</li> - * <li>Concatenates TEXT nodes, CDATA nodes, and the results recursively - * processing EntityRef nodes.</li> - * <li>Ignores any element nodes in the sublist. (Other possible options are - * to recurse into element sublists or throw an exception.)</li> - * </ul> - * - * @param node A DOM node from which to extract text. - * @return A String representing its contents. - */ + * Return the text that a node contains. + * + * This routine: + * <ul> + * <li>Ignores comments and processing instructions.</li> + * <li>Concatenates TEXT nodes, CDATA nodes, and the results recursively + * processing EntityRef nodes.</li> + * <li>Ignores any element nodes in the sublist. (Other possible options are to + * recurse into element sublists or throw an exception.)</li> + * </ul> + * + * @param node A DOM node from which to extract text. + * @return A String representing its contents. + */ public static String getText(Node node) { if (!node.hasChildNodes()) { return ""; } - StringBuffer result = new StringBuffer(); - NodeList list = node.getChildNodes(); + final StringBuffer result = new StringBuffer(); + final NodeList list = node.getChildNodes(); for (int i = 0; i < list.getLength(); i++) { - Node subnode = list.item(i); + final Node subnode = list.item(i); if (subnode.getNodeType() == Node.TEXT_NODE) { result.append(subnode.getNodeValue()); } else if (subnode.getNodeType() == Node.CDATA_SECTION_NODE) { @@ -776,28 +836,28 @@ public class DOMUtils { /** * Build the namespace prefix to namespace URL mapping in effect for a given * node. - * + * * @param node The context node for which build the map. - * @return The namespace prefix to namespace URL mapping ( - * a <code>String</code> value to <code>String</code> value mapping). + * @return The namespace prefix to namespace URL mapping ( a <code>String</code> + * value to <code>String</code> value mapping). */ public static Map getNamespaceDeclarations(Node node) { - Map nsDecls = new HashMap(); + final Map nsDecls = new HashMap(); int i; do { if (node.hasAttributes()) { - NamedNodeMap attrs = node.getAttributes(); + final NamedNodeMap attrs = node.getAttributes(); for (i = 0; i < attrs.getLength(); i++) { - Attr attr = (Attr) attrs.item(i); + final Attr attr = (Attr) attrs.item(i); // add prefix mapping if none exists if ("xmlns".equals(attr.getPrefix()) - || "xmlns".equals(attr.getName())) { + || "xmlns".equals(attr.getName())) { - String nsPrefix = - attr.getPrefix() != null ? attr.getLocalName() : ""; + final String nsPrefix = + attr.getPrefix() != null ? attr.getLocalName() : ""; if (nsDecls.get(nsPrefix) == null) { nsDecls.put(nsPrefix, attr.getValue()); @@ -811,26 +871,26 @@ public class DOMUtils { } /** - * Add all namespace declarations declared in the parent(s) of a given - * element and used in the subtree of the given element to the given element. - * + * Add all namespace declarations declared in the parent(s) of a given element + * and used in the subtree of the given element to the given element. + * * @param context The element to which to add the namespaces. */ public static void localizeNamespaceDeclarations(Element context) { - Node parent = context.getParentNode(); + final Node parent = context.getParentNode(); if (parent != null) { - Map namespaces = getNamespaceDeclarations(context.getParentNode()); - Set nsUris = collectNamespaceURIs(context); + final Map namespaces = getNamespaceDeclarations(context.getParentNode()); + final Set nsUris = collectNamespaceURIs(context); Iterator iter; for (iter = namespaces.entrySet().iterator(); iter.hasNext();) { - Map.Entry e = (Map.Entry) iter.next(); + final Map.Entry e = (Map.Entry) iter.next(); if (nsUris.contains(e.getValue())) { - String prefix = (String) e.getKey(); - String nsUri = (String) e.getValue(); - String nsAttrName = "".equals(prefix) ? "xmlns" : "xmlns:" + prefix; + final String prefix = (String) e.getKey(); + final String nsUri = (String) e.getValue(); + final String nsAttrName = "".equals(prefix) ? "xmlns" : "xmlns:" + prefix; context.setAttributeNS(Constants.XMLNS_NS_URI, nsAttrName, nsUri); } @@ -840,13 +900,13 @@ public class DOMUtils { /** * Collect all the namespace URIs used in the subtree of a given element. - * + * * @param context The element that should be searched for namespace URIs. * @return All namespace URIs used in the subtree of <code>context</code>, - * including the ones used in <code>context</code> itself. + * including the ones used in <code>context</code> itself. */ public static Set collectNamespaceURIs(Element context) { - Set result = new HashSet(); + final Set result = new HashSet(); collectNamespaceURIsImpl(context, result); return result; @@ -854,14 +914,14 @@ public class DOMUtils { /** * A recursive method to do the work of <code>collectNamespaceURIs</code>. - * + * * @param context The context element to evaluate. - * @param result The result, passed as a parameter to avoid unnecessary - * instantiations of <code>Set</code>. + * @param result The result, passed as a parameter to avoid unnecessary + * instantiations of <code>Set</code>. */ private static void collectNamespaceURIsImpl(Element context, Set result) { - NamedNodeMap attrs = context.getAttributes(); - NodeList childNodes = context.getChildNodes(); + final NamedNodeMap attrs = context.getAttributes(); + final NodeList childNodes = context.getChildNodes(); String nsUri; int i; @@ -881,7 +941,7 @@ public class DOMUtils { // add all namespaces from subelements for (i = 0; i < childNodes.getLength(); i++) { - Node node = childNodes.item(i); + final Node node = childNodes.item(i); if (node.getNodeType() == Node.ELEMENT_NODE) { collectNamespaceURIsImpl((Element) node, result); @@ -892,13 +952,13 @@ public class DOMUtils { /** * Check, that each attribute node in the given <code>NodeList</code> has its * parent in the <code>NodeList</code> as well. - * + * * @param nodes The <code>NodeList</code> to check. - * @return <code>true</code>, if each attribute node in <code>nodes</code> - * has its parent in <code>nodes</code> as well. + * @return <code>true</code>, if each attribute node in <code>nodes</code> has + * its parent in <code>nodes</code> as well. */ public static boolean checkAttributeParentsInNodeList(NodeList nodes) { - Set nodeSet = new HashSet(); + final Set nodeSet = new HashSet(); int i; // put the nodes into the nodeSet @@ -908,11 +968,11 @@ public class DOMUtils { // check that each attribute node's parent is in the node list for (i = 0; i < nodes.getLength(); i++) { - Node n = nodes.item(i); + final Node n = nodes.item(i); if (n.getNodeType() == Node.ATTRIBUTE_NODE) { - Attr attr = (Attr) n; - Element owner = attr.getOwnerElement(); + final Attr attr = (Attr) n; + final Element owner = attr.getOwnerElement(); if (owner == null) { if (!isNamespaceDeclaration(attr)) { @@ -930,29 +990,28 @@ public class DOMUtils { } /** - * Convert an unstructured <code>NodeList</code> into a + * Convert an unstructured <code>NodeList</code> into a * <code>DocumentFragment</code>. * - * @param nodeList Contains the node list to be converted into a DOM - * DocumentFragment. - * @return the resulting DocumentFragment. The DocumentFragment will be - * backed by a new DOM Document, i.e. all noded of the node list will be - * cloned. + * @param nodeList Contains the node list to be converted into a DOM + * DocumentFragment. + * @return the resulting DocumentFragment. The DocumentFragment will be backed + * by a new DOM Document, i.e. all noded of the node list will be + * cloned. * @throws ParserConfigurationException An error occurred creating the - * DocumentFragment. + * DocumentFragment. * @precondition The nodes in the node list appear in document order - * @precondition for each Attr node in the node list, the owning Element is - * in the node list as well. - * @precondition each Element or Attr node in the node list is namespace - * aware. + * @precondition for each Attr node in the node list, the owning Element is in + * the node list as well. + * @precondition each Element or Attr node in the node list is namespace aware. */ public static DocumentFragment nodeList2DocumentFragment(NodeList nodeList) - throws ParserConfigurationException { + throws ParserConfigurationException { - DocumentBuilder builder = - DocumentBuilderFactory.newInstance().newDocumentBuilder(); - Document doc = builder.newDocument(); - DocumentFragment result = doc.createDocumentFragment(); + final DocumentBuilder builder = + DocumentBuilderFactory.newInstance().newDocumentBuilder(); + final Document doc = builder.newDocument(); + final DocumentFragment result = doc.createDocumentFragment(); if (null == nodeList || nodeList.getLength() == 0) { return result; @@ -960,116 +1019,114 @@ public class DOMUtils { int currPos = 0; currPos = - nodeList2DocumentFragment(nodeList, currPos, result, null, null) + 1; + nodeList2DocumentFragment(nodeList, currPos, result, null, null) + 1; while (currPos < nodeList.getLength()) { currPos = - nodeList2DocumentFragment(nodeList, currPos, result, null, null) + 1; + nodeList2DocumentFragment(nodeList, currPos, result, null, null) + 1; } return result; } /** * Helper method for the <code>nodeList2DocumentFragment</code>. - * - * @param nodeList The <code>NodeList</code> to convert. - * @param currPos The current position in the <code>nodeList</code>. - * @param result The resulting <code>DocumentFragment</code>. - * @param currOrgElem The current original element. + * + * @param nodeList The <code>NodeList</code> to convert. + * @param currPos The current position in the <code>nodeList</code>. + * @param result The resulting <code>DocumentFragment</code>. + * @param currOrgElem The current original element. * @param currClonedElem The current cloned element. * @return The current position. */ private static int nodeList2DocumentFragment( - NodeList nodeList, - int currPos, - DocumentFragment result, - Element currOrgElem, - Element currClonedElem) { + NodeList nodeList, + int currPos, + DocumentFragment result, + Element currOrgElem, + Element currClonedElem) { while (currPos < nodeList.getLength()) { - Node currentNode = nodeList.item(currPos); + final Node currentNode = nodeList.item(currPos); switch (currentNode.getNodeType()) { - case Node.COMMENT_NODE : - case Node.PROCESSING_INSTRUCTION_NODE : - case Node.TEXT_NODE : - { - // Append current node either to resulting DocumentFragment or to - // current cloned Element - if (null == currClonedElem) { - result.appendChild( - result.getOwnerDocument().importNode(currentNode, false)); - } else { - // Stop processing if current Node is not a descendant of - // current Element - if (!isAncestor(currOrgElem, currentNode)) { - return --currPos; - } - - currClonedElem.appendChild( + case Node.COMMENT_NODE: + case Node.PROCESSING_INSTRUCTION_NODE: + case Node.TEXT_NODE: { + // Append current node either to resulting DocumentFragment or to + // current cloned Element + if (null == currClonedElem) { + result.appendChild( result.getOwnerDocument().importNode(currentNode, false)); + } else { + // Stop processing if current Node is not a descendant of + // current Element + if (!isAncestor(currOrgElem, currentNode)) { + return --currPos; } - break; + + currClonedElem.appendChild( + result.getOwnerDocument().importNode(currentNode, false)); } + break; + } - case Node.ELEMENT_NODE : - { - Element nextCurrOrgElem = (Element) currentNode; - Element nextCurrClonedElem = + case Node.ELEMENT_NODE: { + final Element nextCurrOrgElem = (Element) currentNode; + final Element nextCurrClonedElem = result.getOwnerDocument().createElementNS( - nextCurrOrgElem.getNamespaceURI(), - nextCurrOrgElem.getNodeName()); - - // Append current Node either to resulting DocumentFragment or to - // current cloned Element - if (null == currClonedElem) { - result.appendChild(nextCurrClonedElem); - currOrgElem = nextCurrOrgElem; - currClonedElem = nextCurrClonedElem; - } else { - // Stop processing if current Node is not a descendant of - // current Element - if (!isAncestor(currOrgElem, currentNode)) { - return --currPos; - } - - currClonedElem.appendChild(nextCurrClonedElem); + nextCurrOrgElem.getNamespaceURI(), + nextCurrOrgElem.getNodeName()); + + // Append current Node either to resulting DocumentFragment or to + // current cloned Element + if (null == currClonedElem) { + result.appendChild(nextCurrClonedElem); + currOrgElem = nextCurrOrgElem; + currClonedElem = nextCurrClonedElem; + } else { + // Stop processing if current Node is not a descendant of + // current Element + if (!isAncestor(currOrgElem, currentNode)) { + return --currPos; } - // Process current Node (of type Element) recursively - currPos = + currClonedElem.appendChild(nextCurrClonedElem); + } + + // Process current Node (of type Element) recursively + currPos = nodeList2DocumentFragment( - nodeList, - ++currPos, - result, - nextCurrOrgElem, - nextCurrClonedElem); + nodeList, + ++currPos, + result, + nextCurrOrgElem, + nextCurrClonedElem); - break; - } + break; + } - case Node.ATTRIBUTE_NODE : - { - Attr currAttr = (Attr) currentNode; + case Node.ATTRIBUTE_NODE: { + final Attr currAttr = (Attr) currentNode; - // GK 20030411: Hack to overcome problems with IAIK IXSIL - if (currAttr.getOwnerElement() == null) - break; - if (currClonedElem == null) - break; + // GK 20030411: Hack to overcome problems with IAIK IXSIL + if (currAttr.getOwnerElement() == null) { + break; + } + if (currClonedElem == null) { + break; + } - // currClonedElem must be the owner Element of currAttr if - // preconditions are met - currClonedElem.setAttributeNS( + // currClonedElem must be the owner Element of currAttr if + // preconditions are met + currClonedElem.setAttributeNS( currAttr.getNamespaceURI(), currAttr.getNodeName(), currAttr.getValue()); - break; - } + break; + } - default : - { - // All other nodes will be ignored - } + default: { + // All other nodes will be ignored + } } currPos++; @@ -1080,10 +1137,10 @@ public class DOMUtils { /** * Check, if the given attribute is a namespace declaration. - * + * * @param attr The attribute to check. * @return <code>true</code>, if the attribute is a namespace declaration, - * <code>false</code> otherwise. + * <code>false</code> otherwise. */ private static boolean isNamespaceDeclaration(Attr attr) { return Constants.XMLNS_NS_URI.equals(attr.getNamespaceURI()); @@ -1091,81 +1148,82 @@ public class DOMUtils { /** * Check, if a given DOM element is an ancestor of a given node. - * + * * @param candAnc The DOM element to check for being the ancestor. - * @param cand The node to check for being the child. - * @return <code>true</code>, if <code>candAnc</code> is an (indirect) - * ancestor of <code>cand</code>; <code>false</code> otherwise. + * @param cand The node to check for being the child. + * @return <code>true</code>, if <code>candAnc</code> is an (indirect) ancestor + * of <code>cand</code>; <code>false</code> otherwise. */ public static boolean isAncestor(Element candAnc, Node cand) { Node currPar = cand.getParentNode(); while (currPar != null) { - if (candAnc == currPar) + if (candAnc == currPar) { return true; + } currPar = currPar.getParentNode(); } return false; } - + /** * Selects the (first) element from a node list and returns it. - * - * @param nl The NodeList to get the element from. - * @return The (first) element included in the node list or <code>null</code> - * if the node list is <code>null</code> or empty or no element is - * included in the list. + * + * @param nl The NodeList to get the element from. + * @return The (first) element included in the node list or <code>null</code> if + * the node list is <code>null</code> or empty or no element is included + * in the list. */ - public static Element getElementFromNodeList (NodeList nl) { - if ((nl == null) || (nl.getLength() == 0)) { + public static Element getElementFromNodeList(NodeList nl) { + if (nl == null || nl.getLength() == 0) { return null; } - for (int i=0; i<nl.getLength(); i++) { - Node node = nl.item(i); - if (node.getNodeType() == Node.ELEMENT_NODE) { - return (Element)node; + for (int i = 0; i < nl.getLength(); i++) { + final Node node = nl.item(i); + if (node.getNodeType() == Node.ELEMENT_NODE) { + return (Element) node; } } return null; } - + /** * Returns all child elements of the given element. - * - * @param parent The element to get the child elements from. - * - * @return A list including all child elements of the given element. - * Maybe empty if the parent element has no child elements. + * + * @param parent The element to get the child elements from. + * + * @return A list including all child elements of the given element. Maybe empty + * if the parent element has no child elements. */ - public static List getChildElements (Element parent) { - Vector v = new Vector(); - NodeList nl = parent.getChildNodes(); - int length = nl.getLength(); - for (int i=0; i < length; i++) { - Node node = nl.item(i); + public static List getChildElements(Element parent) { + final Vector v = new Vector(); + final NodeList nl = parent.getChildNodes(); + final int length = nl.getLength(); + for (int i = 0; i < length; i++) { + final Node node = nl.item(i); if (node.getNodeType() == Node.ELEMENT_NODE) { - v.add((Element)node); + v.add(node); } } return v; } - + /** * Returns a byte array from given node. + * * @param node * @return * @throws TransformerException */ public static byte[] nodeToByteArray(Node node) throws TransformerException { - Source source = new DOMSource(node); - ByteArrayOutputStream out = new ByteArrayOutputStream(); - //StringWriter stringWriter = new StringWriter(); - Result result = new StreamResult(out); - TransformerFactory factory = TransformerFactory.newInstance(); - Transformer transformer = factory.newTransformer(); - transformer.transform(source, result); - return out.toByteArray(); + final Source source = new DOMSource(node); + final ByteArrayOutputStream out = new ByteArrayOutputStream(); + // StringWriter stringWriter = new StringWriter(); + final Result result = new StreamResult(out); + final TransformerFactory factory = TransformerFactory.newInstance(); + final Transformer transformer = factory.newTransformer(); + transformer.transform(source, result); + return out.toByteArray(); } - } diff --git a/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/DateTimeUtils.java b/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/DateTimeUtils.java index c199c29..a874bd5 100644 --- a/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/DateTimeUtils.java +++ b/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/DateTimeUtils.java @@ -21,7 +21,6 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moaspss.util; import java.io.StringWriter; @@ -38,9 +37,9 @@ import org.joda.time.format.DateTimeFormat; import org.joda.time.format.DateTimeFormatter; /** - * Utility for parsing and building XML type <code>dateTime</code>, - * according to ISO 8601. - * + * Utility for parsing and building XML type <code>dateTime</code>, according to + * ISO 8601. + * * @author Patrick Peck * @version $Id$ * @see <code>http://www.w3.org/2001/XMLSchema-datatypes"</code> @@ -55,7 +54,7 @@ public class DateTimeUtils { // * @return the <code>dateTime</code> value // */ // public static String buildDateTime(Calendar cal, boolean useUTC) { -// +// // if (useUTC) // return buildDateTimeUTC(cal); // else { @@ -92,41 +91,46 @@ public class DateTimeUtils { // return out.toString(); // } // } - + /** - * Builds a <code>dateTime</code> value in UTC from a <code>Calendar</code> value. + * Builds a <code>dateTime</code> value in UTC from a <code>Calendar</code> + * value. + * * @param cal the <code>Calendar</code> value * @return the <code>dateTime</code> value */ public static String buildDateTimeUTC(Calendar cal) { - - SimpleDateFormat f = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'"); - f.setTimeZone(TimeZone.getTimeZone("UTC")); - - return f.format(cal.getTime()); + + final SimpleDateFormat f = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'"); + f.setTimeZone(TimeZone.getTimeZone("UTC")); + + return f.format(cal.getTime()); } - + /** - * Builds a <code>dateTime</code> value in UTC from a <code>Calendar</code> value. + * Builds a <code>dateTime</code> value in UTC from a <code>Calendar</code> + * value. + * * @param cal the <code>Calendar</code> value * @return the <code>dateTime</code> value */ public static String buildDateTimeUTC(Date cal) { - - SimpleDateFormat f = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'"); - f.setTimeZone(TimeZone.getTimeZone("UTC")); - - return f.format(cal); - + + final SimpleDateFormat f = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'"); + f.setTimeZone(TimeZone.getTimeZone("UTC")); + + return f.format(cal); + } - + /** * Builds a <code>dateTime</code> value from a <code>Calendar</code> value. + * * @param cal the <code>Calendar</code> value * @return the <code>dateTime</code> value */ public static String buildDate(Calendar cal) { - StringWriter out = new StringWriter(); + final StringWriter out = new StringWriter(); out.write("" + cal.get(Calendar.YEAR)); out.write("-"); out.write(to2DigitString(cal.get(Calendar.MONTH) + 1)); @@ -134,43 +138,45 @@ public class DateTimeUtils { out.write(to2DigitString(cal.get(Calendar.DAY_OF_MONTH))); return out.toString(); } - + /** * Builds a <code>dateTime</code> value from a <code>Calendar</code> value. + * * @param cal the <code>Calendar</code> value * @return the <code>dateTime</code> value */ public static String buildTime(Calendar cal) { - StringWriter out = new StringWriter(); - out.write(to2DigitString(cal.get(Calendar.HOUR_OF_DAY))); - out.write(":"); - out.write(to2DigitString(cal.get(Calendar.MINUTE))); - out.write(":"); - out.write(to2DigitString(cal.get(Calendar.SECOND))); - - return out.toString(); + final StringWriter out = new StringWriter(); + out.write(to2DigitString(cal.get(Calendar.HOUR_OF_DAY))); + out.write(":"); + out.write(to2DigitString(cal.get(Calendar.MINUTE))); + out.write(":"); + out.write(to2DigitString(cal.get(Calendar.SECOND))); + + return out.toString(); } - + /** - * Converts month, day, hour, minute, or second value - * to a 2 digit String. + * Converts month, day, hour, minute, or second value to a 2 digit String. + * * @param number the month, day, hour, minute, or second value * @return 2 digit String */ private static String to2DigitString(int number) { - if (number < 10) + if (number < 10) { return "0" + number; - else + } else { return "" + number; + } } /** - * Parse a <code>String</code> containing a date and time instant, given in - * ISO 8601 format. - * + * Parse a <code>String</code> containing a date and time instant, given in ISO + * 8601 format. + * * @param dateTime The <code>String</code> to parse. * @return The <code>Date</code> representation of the contents of - * <code>dateTime</code>. + * <code>dateTime</code>. * @throws ParseException Parsing the <code>dateTime</code> failed. */ public static Date parseDateTime(String dateTime) throws ParseException { @@ -247,8 +253,7 @@ public class DateTimeUtils { curPos++; ensureDigits(dateTime, curPos, 1); fractStr = "0."; - fractStr - += dateTime.substring(curPos, curPos + countDigits(dateTime, curPos)); + fractStr += dateTime.substring(curPos, curPos + countDigits(dateTime, curPos)); fraction = Double.parseDouble(fractStr); curPos += countDigits(dateTime, curPos); } @@ -294,12 +299,12 @@ public class DateTimeUtils { calendar.set(Calendar.MILLISECOND, 0); time = calendar.getTime().getTime(); time += (long) (fraction * 1000.0); - time -= tzSign * ((tzHour * 60) + tzMinute) * 60 * 1000; + time -= tzSign * (tzHour * 60 + tzMinute) * 60 * 1000; if (localTime) { - time -= TimeZone.getDefault().getRawOffset(); + time -= TimeZone.getDefault().getRawOffset(); } return new Date(time); - } catch (IllegalArgumentException e) { + } catch (final IllegalArgumentException e) { throw new ParseException(msg.getMessage("datetime.00", null), curPos); } @@ -307,16 +312,16 @@ public class DateTimeUtils { /** * Parse an integer value. - * - * @param str The <code>String</code> containing the digits. + * + * @param str The <code>String</code> containing the digits. * @param curPos The starting position. * @param digits The number of digist making up the integer value. * @return int The integer representation of the digits contained in - * <code>str</code>. + * <code>str</code>. * @throws ParseException Parsing the integer value failed. */ private static int parseInt(String str, int curPos, int digits) - throws ParseException { + throws ParseException { ensureDigits(str, curPos, digits); return Integer.parseInt(str.substring(curPos, curPos + digits)); @@ -324,31 +329,33 @@ public class DateTimeUtils { /** * Count the number of digits following <code>curPos</code>. - * - * @param str The <code>String</code> in which to count digits. + * + * @param str The <code>String</code> in which to count digits. * @param curPos The starting position. * @return int The number of digits. */ private static int countDigits(String str, int curPos) { int i; - for (i = curPos; i < str.length() && Character.isDigit(str.charAt(i)); i++); + for (i = curPos; i < str.length() && Character.isDigit(str.charAt(i)); i++) { + ; + } return i - curPos; } /** * Ensure that a value falls in a given min/max range. - * - * @param value The value to check. - * @param min The minimum allowed value. - * @param max The maximum allowed value. + * + * @param value The value to check. + * @param min The minimum allowed value. + * @param max The maximum allowed value. * @param curPos To indicate the parsing position in the - * <code>ParseException</code>. + * <code>ParseException</code>. * @throws ParseException Thrown, if <code>value < min || value > * max</code> */ private static void ensureValue(int value, int min, int max, int curPos) - throws ParseException { + throws ParseException { if (value < min || value > max) { throw new ParseException(msg.getMessage("datetime.00", null), curPos); @@ -357,16 +364,16 @@ public class DateTimeUtils { /** * Ensure that the given <code>String</code> has a number of characters left. - * - * @param str The <code>String</code> to check for its length. + * + * @param str The <code>String</code> to check for its length. * @param curPos The starting position. - * @param count The minimum number of characters that <code>str</code> must - * contain, starting at from <code>curPos</code>. - * @throws ParseException Thrown, if - * <code>curPos + count > str.length()</code>. + * @param count The minimum number of characters that <code>str</code> must + * contain, starting at from <code>curPos</code>. + * @throws ParseException Thrown, if + * <code>curPos + count > str.length()</code>. */ private static void ensureChars(String str, int curPos, int count) - throws ParseException { + throws ParseException { if (curPos + count > str.length()) { throw new ParseException(msg.getMessage("datetime.00", null), curPos); } @@ -375,17 +382,17 @@ public class DateTimeUtils { /** * Ensure that a given <code>String</code> contains a certain character at a * certain position. - * - * @param str The <code>String</code> in which to look up the character. + * + * @param str The <code>String</code> in which to look up the character. * @param curPos The position in <code>str</code> that must contain the - * character. - * @param c The character value that must be contained at position - * <code>curPos</code>. + * character. + * @param c The character value that must be contained at position + * <code>curPos</code>. * @throws ParseException Thrown, if the characters do not match or - * <code>curPos</code> is out of range. + * <code>curPos</code> is out of range. */ private static void ensureChar(String str, int curPos, char c) - throws ParseException { + throws ParseException { ensureChars(str, curPos, 1); if (str.charAt(curPos) != c) { @@ -394,19 +401,19 @@ public class DateTimeUtils { } /** - * Ensure that a given <code>String</code> contains a number of digits, - * starting at a given position. - * - * @param str The <code>String</code> to scan for digits. + * Ensure that a given <code>String</code> contains a number of digits, starting + * at a given position. + * + * @param str The <code>String</code> to scan for digits. * @param curPos The starting postion. - * @param count The number of digits that must be contained in - * <code>str</code>, starting at <code>curPos</code>. - * @throws ParseException Thrown, if <code>str</code> is not long enough, or - * one of the characters following <code>curPos</code> in <code>str</code> is - * not a digit. + * @param count The number of digits that must be contained in + * <code>str</code>, starting at <code>curPos</code>. + * @throws ParseException Thrown, if <code>str</code> is not long enough, or one + * of the characters following <code>curPos</code> in + * <code>str</code> is not a digit. */ private static void ensureDigits(String str, int curPos, int count) - throws ParseException { + throws ParseException { ensureChars(str, curPos, count); for (int i = curPos; i < curPos + count; i++) { @@ -415,101 +422,108 @@ public class DateTimeUtils { } } } - + /** * Calculates the age if date of birth is given (for a calendar time stamp) + * * @param dateOfBirth Date of Birth - * @param now Calendar time stamp at which the age needs to be calculated for + * @param now Calendar time stamp at which the age needs to be + * calculated for * @return Age of a person */ public static int calcAge(Calendar dateOfBirth, Calendar now) { - int age = now.get(Calendar.YEAR) - dateOfBirth.get(Calendar.YEAR); - - int nowM = now.get(Calendar.MONTH); - int dobM = dateOfBirth.get(Calendar.MONTH); - int nowDOM = now.get(Calendar.DAY_OF_MONTH); - int dobDOM = dateOfBirth.get(Calendar.DAY_OF_MONTH); - - if ((nowM < dobM) || ((nowM == dobM) && (nowDOM < dobDOM))) { - age--; - } - - if (age < 0) { - throw new IllegalArgumentException("Calculated age results in negative value."); - } - return age; - } + int age = now.get(Calendar.YEAR) - dateOfBirth.get(Calendar.YEAR); + + final int nowM = now.get(Calendar.MONTH); + final int dobM = dateOfBirth.get(Calendar.MONTH); + final int nowDOM = now.get(Calendar.DAY_OF_MONTH); + final int dobDOM = dateOfBirth.get(Calendar.DAY_OF_MONTH); + + if (nowM < dobM || nowM == dobM && nowDOM < dobDOM) { + age--; + } + + if (age < 0) { + throw new IllegalArgumentException("Calculated age results in negative value."); + } + return age; + } /** * Calculates the age if date of birth is given as Calendar object + * * @param dateOfBirth Date of Birth as Calendar object * @return Age of a person */ - public static int calcAge(Calendar dateOfBirth) { - return calcAge(dateOfBirth, Calendar.getInstance()); - } - - /** - * Calculates the age if date of birth is given (for a date time stamp) - * @param dateOfBirth Date of Birth - * @param now Date time stamp at which the age needs to be calculated for - * @return Age of a person - */ - public static int calcAge(Date dateOfBirth, Date now) { - Calendar dob = Calendar.getInstance(); - dob.setTime(dateOfBirth); - Calendar nowCal = Calendar.getInstance(); - nowCal.setTime(now); - return calcAge(dob, nowCal); - } - - /** - * Calculates the age if date of birth is given as Date object - * @param dateOfBirth Date of Birth as Date object - * @return Age of a person - */ - public static int calcAge(Date dateOfBirth) { - return calcAge(dateOfBirth, new Date()); - } - - public static String formatPEPSDateToMOADate(String pepsDate) { - - if (StringUtils.isEmpty(pepsDate)) { - return null; - } - - DateTimeFormatter fmt = null; - - switch (pepsDate.length()) { - case 4: - fmt = DateTimeFormat.forPattern("yyyy"); - break; - case 6: - fmt = DateTimeFormat.forPattern("yyyyMM"); - break; - case 8: - fmt = DateTimeFormat.forPattern("yyyyMMdd"); - break; - default: - fmt = DateTimeFormat.forPattern("yyyy-MM-dd"); - break; - } - - DateTime dt = fmt.parseDateTime(pepsDate); - DateTimeFormatter fmt2 = DateTimeFormat.forPattern("yyyy-MM-dd"); - return fmt2.print(dt); - - } - - /** - * Returns a date as String using a provided format - * @param format Format the date/time should be returned - * @return Date/Time as String formatted according the provided format - */ - public static String getDateTimeWithFormat(String format) { - DateFormat dateFormat = new SimpleDateFormat(format); - Date date = new Date(); - return dateFormat.format(date); + public static int calcAge(Calendar dateOfBirth) { + return calcAge(dateOfBirth, Calendar.getInstance()); + } + + /** + * Calculates the age if date of birth is given (for a date time stamp) + * + * @param dateOfBirth Date of Birth + * @param now Date time stamp at which the age needs to be calculated + * for + * @return Age of a person + */ + public static int calcAge(Date dateOfBirth, Date now) { + final Calendar dob = Calendar.getInstance(); + dob.setTime(dateOfBirth); + final Calendar nowCal = Calendar.getInstance(); + nowCal.setTime(now); + return calcAge(dob, nowCal); + } + + /** + * Calculates the age if date of birth is given as Date object + * + * @param dateOfBirth Date of Birth as Date object + * @return Age of a person + */ + public static int calcAge(Date dateOfBirth) { + return calcAge(dateOfBirth, new Date()); + } + + public static String formatPEPSDateToMOADate(String pepsDate) { + + if (StringUtils.isEmpty(pepsDate)) { + return null; } + DateTimeFormatter fmt = null; + + switch (pepsDate.length()) { + case 4: + fmt = DateTimeFormat.forPattern("yyyy"); + break; + case 6: + fmt = DateTimeFormat.forPattern("yyyyMM"); + break; + case 8: + fmt = DateTimeFormat.forPattern("yyyyMMdd"); + break; + default: + fmt = DateTimeFormat.forPattern("yyyy-MM-dd"); + break; + } + + final DateTime dt = fmt.parseDateTime(pepsDate); + final DateTimeFormatter fmt2 = DateTimeFormat.forPattern("yyyy-MM-dd"); + return fmt2.print(dt); + + } + + /** + * Returns a date as String using a provided format + * + * @param format Format the date/time should be returned + * @return Date/Time as String formatted according the provided format + */ + public static String getDateTimeWithFormat(String format) { + final DateFormat dateFormat = new SimpleDateFormat(format); + final Date date = new Date(); + return dateFormat.format(date); + } + } diff --git a/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/Empty.java b/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/Empty.java index 9c678d4..8b16a97 100644 --- a/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/Empty.java +++ b/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/Empty.java @@ -1,13 +1,13 @@ /* * Copyright 2011 Federal Chancellery Austria and * Graz University of Technology - * + * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at - * + * * http://www.apache.org/licenses/LICENSE-2.0 - * + * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. @@ -21,11 +21,11 @@ package at.gv.egovernment.moaspss.util; */ public interface Empty { - /** - * Returns {@code true} if underlying object is empty. - * - * @return {@code true} if empty, {@code false} if not empty. - */ - boolean isEmpty(); + /** + * Returns {@code true} if underlying object is empty. + * + * @return {@code true} if empty, {@code false} if not empty. + */ + boolean isEmpty(); } diff --git a/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/EntityResolverChain.java b/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/EntityResolverChain.java index 487c6a4..6f61517 100644 --- a/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/EntityResolverChain.java +++ b/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/EntityResolverChain.java @@ -21,7 +21,6 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moaspss.util; import java.io.IOException; @@ -34,39 +33,41 @@ import org.xml.sax.InputSource; import org.xml.sax.SAXException; /** - * Implementation of the <code>org.xml.sax.EntityResolver</code>, - * for use by a <code>org.apache.xerces.parsers.DOMParser</code>. - * + * Implementation of the <code>org.xml.sax.EntityResolver</code>, for use by a + * <code>org.apache.xerces.parsers.DOMParser</code>. + * * @author Patrick Peck * @version $Id$ */ public class EntityResolverChain implements EntityResolver { /** The <code>EntityResolver</code>s in the chain. */ - private List resolvers = new ArrayList(); + private final List resolvers = new ArrayList(); /** - * @see org.xml.sax.EntityResolver#resolveEntity(java.lang.String, java.lang.String) + * @see org.xml.sax.EntityResolver#resolveEntity(java.lang.String, + * java.lang.String) */ + @Override public InputSource resolveEntity(String publicId, String systemId) - throws SAXException, IOException { - + throws SAXException, IOException { + Iterator iter; - - for (iter = resolvers.iterator(); iter.hasNext(); ) { - EntityResolver resolver = (EntityResolver) iter.next(); - InputSource is = resolver.resolveEntity(publicId, systemId); - + + for (iter = resolvers.iterator(); iter.hasNext();) { + final EntityResolver resolver = (EntityResolver) iter.next(); + final InputSource is = resolver.resolveEntity(publicId, systemId); + if (is != null) { return is; } } - + return null; } - + /** * Add an <code>EntityResolver</code> to the chain. - * + * * @param entityResolver The <code>EntityResolver</code> to add. */ public void addEntityResolver(EntityResolver entityResolver) { diff --git a/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/FileUtils.java b/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/FileUtils.java index 309e01a..d64cda0 100644 --- a/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/FileUtils.java +++ b/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/FileUtils.java @@ -21,7 +21,6 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moaspss.util; import java.io.BufferedInputStream; @@ -34,146 +33,167 @@ import java.io.OutputStream; import java.net.URL; /** - * Utility for accessing files on the file system, and for reading from input streams. + * Utility for accessing files on the file system, and for reading from input + * streams. + * * @author Paul Ivancsics * @version $Id$ */ public class FileUtils { - + /** * Reads a file, given by URL, into a byte array. + * * @param urlString file URL * @return file content * @throws IOException on any exception thrown */ - public static byte[] readURL(String urlString) throws IOException { - URL url = new URL(urlString); - InputStream in = new BufferedInputStream(url.openStream()); - byte[] content = StreamUtils.readStream(in); + public static byte[] readURL(String urlString) throws IOException { + final URL url = new URL(urlString); + final InputStream in = new BufferedInputStream(url.openStream()); + final byte[] content = StreamUtils.readStream(in); in.close(); return content; } + /** * Reads a file, given by URL, into a String. + * * @param urlString file URL - * @param encoding character encoding + * @param encoding character encoding * @return file content * @throws IOException on any exception thrown */ public static String readURL(String urlString, String encoding) throws IOException { - byte[] content = readURL(urlString); + final byte[] content = readURL(urlString); return new String(content, encoding); } + /** * Reads a file, given by filename, into a byte array. + * * @param filename filename * @return file content * @throws IOException on any exception thrown */ public static byte[] readFile(String filename) throws IOException { - BufferedInputStream in = new BufferedInputStream(new FileInputStream(filename)); - byte[] content = StreamUtils.readStream(in); + final BufferedInputStream in = new BufferedInputStream(new FileInputStream(filename)); + final byte[] content = StreamUtils.readStream(in); in.close(); return content; } + /** * Reads a file, given by filename, into a String. + * * @param filename filename * @param encoding character encoding * @return file content * @throws IOException on any exception thrown */ public static String readFile(String filename, String encoding) throws IOException { - byte[] content = readFile(filename); + final byte[] content = readFile(filename); return new String(content, encoding); } + /** * Reads a file from a resource. + * * @param name resource name * @return file content as a byte array * @throws IOException on any exception thrown */ public static byte[] readResource(String name) throws IOException { - ClassLoader cl = FileUtils.class.getClassLoader(); - BufferedInputStream in = new BufferedInputStream(cl.getResourceAsStream(name)); - byte[] content = StreamUtils.readStream(in); + final ClassLoader cl = FileUtils.class.getClassLoader(); + final BufferedInputStream in = new BufferedInputStream(cl.getResourceAsStream(name)); + final byte[] content = StreamUtils.readStream(in); in.close(); return content; } + /** * Reads a file from a resource. - * @param name filename + * + * @param name filename * @param encoding character encoding * @return file content * @throws IOException on any exception thrown */ public static String readResource(String name, String encoding) throws IOException { - byte[] content = readResource(name); + final byte[] content = readResource(name); return new String(content, encoding); } - - /** - * Returns the absolute URL of a given url which is relative to the parameter root - * @param url - * @param root - * @return String - */ - public static String makeAbsoluteURL(String url, String root) { - //if url is relative to rootConfigFileDirName make it absolute - + + /** + * Returns the absolute URL of a given url which is relative to the parameter + * root + * + * @param url + * @param root + * @return String + */ + public static String makeAbsoluteURL(String url, String root) { + // if url is relative to rootConfigFileDirName make it absolute + File keyFile; String newURL = url; - if(null == url) return null; - - if (url.startsWith("http:/") || url.startsWith("https:/") || url.startsWith("file:/") || url.startsWith("ftp:/")) { - return url; + if (null == url) { + return null; + } + + if (url.startsWith("http:/") || url.startsWith("https:/") || url.startsWith("file:/") || url.startsWith( + "ftp:/")) { + return url; } else { // check if absolute - if not make it absolute keyFile = new File(url); if (!keyFile.isAbsolute()) { keyFile = new File(root, url); - if (keyFile.toString().startsWith("file:")) - newURL = keyFile.toString(); - - else - newURL = keyFile.toURI().toString(); - + if (keyFile.toString().startsWith("file:")) { + newURL = keyFile.toString(); + } else { + newURL = keyFile.toURI().toString(); + } + } return newURL; } - } - - - private static void copy( InputStream fis, OutputStream fos ) - { - try - { - byte[] buffer = new byte[ 0xFFFF ]; - for ( int len; (len = fis.read(buffer)) != -1; ) - fos.write( buffer, 0, len ); - } - catch( IOException e ) { - System.err.println( e ); - } - finally { - if ( fis != null ) - try { fis.close(); } catch ( IOException e ) { e.printStackTrace(); } - if ( fos != null ) - try { fos.close(); } catch ( IOException e ) { e.printStackTrace(); } - } - } - - public static void copyFile(File src, File dest) - { - try - { - copy( new FileInputStream( src ), new FileOutputStream( dest ) ); - } - catch( IOException e ) { - e.printStackTrace(); - } - } - + } + + private static void copy(InputStream fis, OutputStream fos) { + try { + final byte[] buffer = new byte[0xFFFF]; + for (int len; (len = fis.read(buffer)) != -1;) { + fos.write(buffer, 0, len); + } + } catch (final IOException e) { + System.err.println(e); + } finally { + if (fis != null) { + try { + fis.close(); + } catch (final IOException e) { + e.printStackTrace(); + } + } + if (fos != null) { + try { + fos.close(); + } catch (final IOException e) { + e.printStackTrace(); + } + } + } + } + + public static void copyFile(File src, File dest) { + try { + copy(new FileInputStream(src), new FileOutputStream(dest)); + } catch (final IOException e) { + e.printStackTrace(); + } + } + } diff --git a/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/KeyStoreUtils.java b/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/KeyStoreUtils.java index b4d7b02..f62b82a 100644 --- a/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/KeyStoreUtils.java +++ b/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/KeyStoreUtils.java @@ -21,11 +21,8 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moaspss.util; -import iaik.x509.X509Certificate; - import java.io.BufferedInputStream; import java.io.File; import java.io.FileInputStream; @@ -38,116 +35,125 @@ import java.security.KeyStore; import java.security.KeyStoreException; import java.security.cert.Certificate; +import iaik.x509.X509Certificate; + /** * Utility for creating and loading key stores. - * + * * @author Paul Ivancsics * @version $Id$ */ public class KeyStoreUtils { - - /** - * JAVA KeyStore - */ - private static final String KEYSTORE_TYPE_JKS = "JKS"; - - /** - * PKCS12 KeyStore - */ - private static final String KEYSTORE_TYPE_PKCS12 = "PKCS12"; - - + + /** + * JAVA KeyStore + */ + private static final String KEYSTORE_TYPE_JKS = "JKS"; + + /** + * PKCS12 KeyStore + */ + private static final String KEYSTORE_TYPE_PKCS12 = "PKCS12"; /** * Loads a key store from file. - * + * * @param keystoreType key store type - * @param urlString URL of key store - * @param password password protecting the key store + * @param urlString URL of key store + * @param password password protecting the key store * @return key store loaded - * @throws IOException thrown while reading the key store from file + * @throws IOException thrown while reading the key store from file * @throws GeneralSecurityException thrown while creating the key store */ public static KeyStore loadKeyStore( - String keystoreType, - String urlString, - String password) - throws IOException, GeneralSecurityException { + String keystoreType, + String urlString, + String password) + throws IOException, GeneralSecurityException { - URL keystoreURL = new URL(urlString); - InputStream in = keystoreURL.openStream(); + final URL keystoreURL = new URL(urlString); + final InputStream in = keystoreURL.openStream(); return loadKeyStore(keystoreType, in, password); } + /** - * Loads a key store from an <code>InputStream</code>, and - * closes the <code>InputStream</code>. - * + * Loads a key store from an <code>InputStream</code>, and closes the + * <code>InputStream</code>. + * * @param keystoreType key store type - * @param in input stream - * @param password password protecting the key store + * @param in input stream + * @param password password protecting the key store * @return key store loaded - * @throws IOException thrown while reading the key store from the stream + * @throws IOException thrown while reading the key store from the + * stream * @throws GeneralSecurityException thrown while creating the key store */ public static KeyStore loadKeyStore( - String keystoreType, - InputStream in, - String password) - throws IOException, GeneralSecurityException { + String keystoreType, + InputStream in, + String password) + throws IOException, GeneralSecurityException { char[] chPassword = null; - if (password != null) + if (password != null) { chPassword = password.toCharArray(); - KeyStore ks = KeyStore.getInstance(keystoreType); + } + final KeyStore ks = KeyStore.getInstance(keystoreType); ks.load(in, chPassword); in.close(); return ks; } + /** - * Creates a key store from X509 certificate files, aliasing them with - * the index in the <code>String[]</code>, starting with <code>"0"</code>. - * - * @param keyStoreType key store type + * Creates a key store from X509 certificate files, aliasing them with the index + * in the <code>String[]</code>, starting with <code>"0"</code>. + * + * @param keyStoreType key store type * @param certFilenames certificate filenames * @return key store created - * @throws IOException thrown while reading the certificates from file + * @throws IOException thrown while reading the certificates from + * file * @throws GeneralSecurityException thrown while creating the key store */ public static KeyStore createKeyStore( - String keyStoreType, - String[] certFilenames) - throws IOException, GeneralSecurityException { + String keyStoreType, + String[] certFilenames) + throws IOException, GeneralSecurityException { - KeyStore ks = KeyStore.getInstance(keyStoreType); + final KeyStore ks = KeyStore.getInstance(keyStoreType); ks.load(null, null); for (int i = 0; i < certFilenames.length; i++) { - Certificate cert = loadCertificate(certFilenames[i]); + final Certificate cert = loadCertificate(certFilenames[i]); ks.setCertificateEntry("" + i, cert); } return ks; } + /** - * Creates a key store from a directory containg X509 certificate files, - * aliasing them with the index in the <code>String[]</code>, starting with <code>"0"</code>. - * All the files in the directory are considered to be certificates. - * - * @param keyStoreType key store type - * @param certDirURLString file URL of directory containing certificate filenames + * Creates a key store from a directory containg X509 certificate files, + * aliasing them with the index in the <code>String[]</code>, starting with + * <code>"0"</code>. All the files in the directory are considered to be + * certificates. + * + * @param keyStoreType key store type + * @param certDirURLString file URL of directory containing certificate + * filenames * @return key store created - * @throws IOException thrown while reading the certificates from file + * @throws IOException thrown while reading the certificates from + * file * @throws GeneralSecurityException thrown while creating the key store */ public static KeyStore createKeyStoreFromCertificateDirectory( - String keyStoreType, - String certDirURLString) - throws IOException, GeneralSecurityException { - - URL certDirURL = new URL(certDirURLString); - String certDirname = certDirURL.getFile(); - File certDir = new File(certDirname); - String[] certFilenames = certDir.list(); - String separator = - (certDirname.endsWith(File.separator) ? "" : File.separator); + String keyStoreType, + String certDirURLString) + throws IOException, GeneralSecurityException { + + final URL certDirURL = new URL(certDirURLString); + final String certDirname = certDirURL.getFile(); + final File certDir = new File(certDirname); + final String[] certFilenames = certDir.list(); + final String separator = + certDirname.endsWith(File.separator) ? "" : File.separator; for (int i = 0; i < certFilenames.length; i++) { certFilenames[i] = certDirname + separator + certFilenames[i]; } @@ -156,68 +162,69 @@ public class KeyStoreUtils { /** * Loads an X509 certificate from file. + * * @param certFilename filename * @return the certificate loaded - * @throws IOException thrown while reading the certificate from file + * @throws IOException thrown while reading the certificate from + * file * @throws GeneralSecurityException thrown while creating the certificate */ private static Certificate loadCertificate(String certFilename) - throws IOException, GeneralSecurityException { + throws IOException, GeneralSecurityException { - FileInputStream in = new FileInputStream(certFilename); - Certificate cert = new X509Certificate(in); + final FileInputStream in = new FileInputStream(certFilename); + final Certificate cert = new X509Certificate(in); in.close(); return cert; } - - - /** - * Loads a keyStore without knowing the keyStore type - * @param keyStorePath URL to the keyStore - * @param password Password protecting the keyStore - * @return keyStore loaded - * @throws KeyStoreException thrown if keyStore cannot be loaded - * @throws FileNotFoundException - * @throws IOException - */ - public static KeyStore loadKeyStore(String keyStorePath, String password) throws KeyStoreException, IOException{ - - //InputStream is = new FileInputStream(keyStorePath); - URL keystoreURL = new URL(keyStorePath); - InputStream in = keystoreURL.openStream(); - InputStream isBuffered = new BufferedInputStream(in); - return loadKeyStore(isBuffered, password); - - } - - /** - * Loads a keyStore without knowing the keyStore type - * @param in input stream - * @param password Password protecting the keyStore - * @return keyStore loaded - * @throws KeyStoreException thrown if keyStore cannot be loaded - * @throws FileNotFoundException - * @throws IOException - */ -public static KeyStore loadKeyStore(InputStream is, String password) throws KeyStoreException, IOException{ - is.mark(1024*1024); - KeyStore ks = null; - try { - try { - ks = loadKeyStore(KEYSTORE_TYPE_PKCS12, is, password); - } catch (IOException e2) { - is.reset(); - ks = loadKeyStore(KEYSTORE_TYPE_JKS, is, password); - } - } catch(Exception e) { - e.printStackTrace(); - //throw new KeyStoreException(e); - } - return ks; - - } - - + /** + * Loads a keyStore without knowing the keyStore type + * + * @param keyStorePath URL to the keyStore + * @param password Password protecting the keyStore + * @return keyStore loaded + * @throws KeyStoreException thrown if keyStore cannot be loaded + * @throws FileNotFoundException + * @throws IOException + */ + public static KeyStore loadKeyStore(String keyStorePath, String password) throws KeyStoreException, + IOException { + + // InputStream is = new FileInputStream(keyStorePath); + final URL keystoreURL = new URL(keyStorePath); + final InputStream in = keystoreURL.openStream(); + final InputStream isBuffered = new BufferedInputStream(in); + return loadKeyStore(isBuffered, password); + + } + + /** + * Loads a keyStore without knowing the keyStore type + * + * @param in input stream + * @param password Password protecting the keyStore + * @return keyStore loaded + * @throws KeyStoreException thrown if keyStore cannot be loaded + * @throws FileNotFoundException + * @throws IOException + */ + public static KeyStore loadKeyStore(InputStream is, String password) throws KeyStoreException, IOException { + is.mark(1024 * 1024); + KeyStore ks = null; + try { + try { + ks = loadKeyStore(KEYSTORE_TYPE_PKCS12, is, password); + } catch (final IOException e2) { + is.reset(); + ks = loadKeyStore(KEYSTORE_TYPE_JKS, is, password); + } + } catch (final Exception e) { + e.printStackTrace(); + // throw new KeyStoreException(e); + } + return ks; + + } } diff --git a/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/MOADefaultHandler.java b/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/MOADefaultHandler.java index 3dde827..9d1f01f 100644 --- a/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/MOADefaultHandler.java +++ b/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/MOADefaultHandler.java @@ -21,7 +21,6 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moaspss.util; import java.io.IOException; @@ -36,15 +35,15 @@ import org.xml.sax.helpers.DefaultHandler; /** * A <code>DefaultHandler</code> that uses a <code>MOAEntityResolver</code> and * a <code>MOAErrorHandler</code>. - * + * * @author Patrick Peck * @version $Id$ */ public class MOADefaultHandler extends DefaultHandler { /** The <code>EntityResolver</code> to use. */ - private EntityResolver entityResolver; + private final EntityResolver entityResolver; /** The <code>ErrorHandler</code> to use. */ - private ErrorHandler errorHandler; + private final ErrorHandler errorHandler; /** * Create a new <code>MOADefaultHandler</code>. @@ -56,28 +55,30 @@ public class MOADefaultHandler extends DefaultHandler { /** * Create a new <code>MOADefaultHandler</code>. - * + * * @param entityResolver The <code>EntityResolver</code> to use for resolving - * external entities. - * @param errorHandler The <code>ErrorHandler</code> to use for reporting - * parsing errors. + * external entities. + * @param errorHandler The <code>ErrorHandler</code> to use for reporting + * parsing errors. */ public MOADefaultHandler( - EntityResolver entityResolver, - ErrorHandler errorHandler) { + EntityResolver entityResolver, + ErrorHandler errorHandler) { this.entityResolver = entityResolver; this.errorHandler = errorHandler; } /** - * @see org.xml.sax.EntityResolver#resolveEntity(java.lang.String, java.lang.String) + * @see org.xml.sax.EntityResolver#resolveEntity(java.lang.String, + * java.lang.String) */ + @Override public InputSource resolveEntity(String publicId, String systemId) - throws SAXException { + throws SAXException { try { return entityResolver.resolveEntity(publicId, systemId); - } catch (IOException e) { + } catch (final IOException e) { return null; } } @@ -85,6 +86,7 @@ public class MOADefaultHandler extends DefaultHandler { /** * @see org.xml.sax.ErrorHandler#warning(org.xml.sax.SAXParseException) */ + @Override public void warning(SAXParseException exception) throws SAXException { errorHandler.warning(exception); } @@ -92,6 +94,7 @@ public class MOADefaultHandler extends DefaultHandler { /** * @see org.xml.sax.ErrorHandler#error(org.xml.sax.SAXParseException) */ + @Override public void error(SAXParseException exception) throws SAXException { errorHandler.error(exception); } @@ -99,6 +102,7 @@ public class MOADefaultHandler extends DefaultHandler { /** * @see org.xml.sax.ErrorHandler#fatalError(org.xml.sax.SAXParseException) */ + @Override public void fatalError(SAXParseException exception) throws SAXException { errorHandler.fatalError(exception); } diff --git a/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/MOAEntityResolver.java b/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/MOAEntityResolver.java index 7f529ca..d7c6a5b 100644 --- a/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/MOAEntityResolver.java +++ b/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/MOAEntityResolver.java @@ -21,7 +21,6 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moaspss.util; import java.io.InputStream; @@ -35,18 +34,20 @@ import at.gv.egovernment.moaspss.logging.LogMsg; import at.gv.egovernment.moaspss.logging.Logger; /** - * An <code>EntityResolver</code> that looks up entities stored as - * local resources. - * - * <p>The following DTDs are mapped to local resources: + * An <code>EntityResolver</code> that looks up entities stored as local + * resources. + * + * <p> + * The following DTDs are mapped to local resources: * <ul> * <li>The XMLSchema.dtd</li> * <li>The datatypes.dtd</li> * </ul> * </p> - * <p>For all other resources, an attempt is made to resolve them as resources, + * <p> + * For all other resources, an attempt is made to resolve them as resources, * either absolute or relative to <code>Constants.SCHEMA_ROOT</code>. - * + * * @author Patrick Peck * @author Sven Aigner */ @@ -54,56 +55,58 @@ public class MOAEntityResolver implements EntityResolver { /** * Resolve an entity. - * + * * The <code>systemId</code> parameter is used to perform the lookup of the - * entity as a resource, either by interpreting the <code>systemId</code> as - * an absolute resource path, or by appending the last path component of + * entity as a resource, either by interpreting the <code>systemId</code> as an + * absolute resource path, or by appending the last path component of * <code>systemId</code> to <code>Constants.SCHEMA_ROOT</code>. - * + * * @param publicId The public ID of the resource. * @param systemId The system ID of the resource. * @return An <code>InputSource</code> from which the entity can be read, or - * <code>null</code>, if the entity could not be found. - * @see org.xml.sax.EntityResolver#resolveEntity(java.lang.String, java.lang.String) + * <code>null</code>, if the entity could not be found. + * @see org.xml.sax.EntityResolver#resolveEntity(java.lang.String, + * java.lang.String) */ + @Override public InputSource resolveEntity(String publicId, String systemId) { InputStream stream; int slashPos; if (Logger.isDebugEnabled()) { Logger.debug( - new LogMsg("resolveEntity: p=" + publicId + " s=" + systemId)); + new LogMsg("resolveEntity: p=" + publicId + " s=" + systemId)); } if (publicId != null) { // check if we can resolve some standard dtd's if (publicId.equalsIgnoreCase("-//W3C//DTD XMLSchema 200102//EN")) { return new InputSource( - getClass().getResourceAsStream( - Constants.SCHEMA_ROOT + "XMLSchema.dtd")); + getClass().getResourceAsStream( + Constants.SCHEMA_ROOT + "XMLSchema.dtd")); } else if (publicId.equalsIgnoreCase("datatypes")) { return new InputSource( - getClass().getResourceAsStream( - Constants.SCHEMA_ROOT + "datatypes.dtd")); + getClass().getResourceAsStream( + Constants.SCHEMA_ROOT + "datatypes.dtd")); } } else if (systemId != null) { // get the URI path try { - URI uri = new URI(systemId); + final URI uri = new URI(systemId); systemId = uri.getPath(); - + if (!"file".equals(uri.getScheme()) || "".equals(systemId.trim())) { return null; } - - } catch (MalformedURIException e) { + + } catch (final MalformedURIException e) { return null; } - + // try to get the resource from the full path stream = getClass().getResourceAsStream(systemId); if (stream != null) { - InputSource source = new InputSource(stream); + final InputSource source = new InputSource(stream); source.setSystemId(systemId); return source; @@ -114,9 +117,9 @@ public class MOAEntityResolver implements EntityResolver { if (slashPos >= 0 && systemId.length() > slashPos) { systemId = systemId.substring(slashPos + 1, systemId.length()); stream = - getClass().getResourceAsStream(Constants.SCHEMA_ROOT + systemId); + getClass().getResourceAsStream(Constants.SCHEMA_ROOT + systemId); if (stream != null) { - InputSource source = new InputSource(stream); + final InputSource source = new InputSource(stream); source.setSystemId(systemId); return source; diff --git a/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/MOAErrorHandler.java b/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/MOAErrorHandler.java index 1842d03..f4acabf 100644 --- a/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/MOAErrorHandler.java +++ b/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/MOAErrorHandler.java @@ -21,7 +21,6 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moaspss.util; import org.apache.xml.utils.DefaultErrorHandler; @@ -35,42 +34,48 @@ import at.gv.egovernment.moaspss.logging.Logger; * An <code>ErrorHandler</code> that logs a message and throws a * <code>SAXException</code> upon <code>error</code> and <code>fatal</code> * parsing errors. - * + * * @author Patrick Peck * @author Sven Aigner */ public class MOAErrorHandler extends DefaultErrorHandler { - /** * Logs a warning message. - * + * * @see org.xml.sax.ErrorHandler#warning(SAXParseException) */ + @Override public void warning(SAXParseException exception) throws SAXException { warn("parser.00", messageParams(exception), null); } /** * Logs a warning and rethrows the <code>exception</code>. - * + * * @see org.xml.sax.ErrorHandler#error(SAXParseException) */ + @Override public void error(SAXParseException exception) throws SAXException { - warn("parser.01", messageParams(exception), null); - - // if Target attribute is missing in QualifyingProperties - don't throw exception (bug fix for old MOCCA signatures) - if (exception.getMessage().startsWith("cvc-complex-type.4: Attribute 'Target' must appear on element")) - warn("parser.04", new Object[] {"Attribute 'Target' must appear on element 'QualifyingProperties' - ignored for compatibility reasons."}, null); - else - throw exception; + warn("parser.01", messageParams(exception), null); + + // if Target attribute is missing in QualifyingProperties - don't throw + // exception (bug fix for old MOCCA signatures) + if (exception.getMessage().startsWith("cvc-complex-type.4: Attribute 'Target' must appear on element")) { + warn("parser.04", new Object[] { + "Attribute 'Target' must appear on element 'QualifyingProperties' - ignored for compatibility reasons." }, + null); + } else { + throw exception; + } } /** * Logs a warning and rethrows the <code>exception</code>. - * + * * @see org.xml.sax.ErrorHandler#fatalError(SAXParseException) */ + @Override public void fatalError(SAXParseException exception) throws SAXException { warn("parser.02", messageParams(exception), null); throw exception; @@ -78,38 +83,38 @@ public class MOAErrorHandler extends DefaultErrorHandler { /** * Log a warning message. - * - * @param messageId The message ID to log. + * + * @param messageId The message ID to log. * @param parameters Additional message parameters. - * @param t The <code>Throwable</code> to log; usually the cause of this - * warning. + * @param t The <code>Throwable</code> to log; usually the cause of + * this warning. */ private static void warn( - String messageId, - Object[] parameters, - Throwable t) { + String messageId, + Object[] parameters, + Throwable t) { - MessageProvider msg = MessageProvider.getInstance(); + final MessageProvider msg = MessageProvider.getInstance(); Logger.warn(new LogMsg(msg.getMessage(messageId, parameters)), t); } /** - * Put the system id, line and column number information from the exception - * into an <code>Object</code> array, to provide it as a - * <code>MessageFormat</code> parameter. - * - * @param e The <code>SAXParseException</code> containing the - * source system id and line/column numbers. - * @return An array containing the system id (a <code>String</code>) as well - * as line/column numbers (2 <code>Integer</code> objects) from the - * <code>SAXParseException</code>. + * Put the system id, line and column number information from the exception into + * an <code>Object</code> array, to provide it as a <code>MessageFormat</code> + * parameter. + * + * @param e The <code>SAXParseException</code> containing the source system id + * and line/column numbers. + * @return An array containing the system id (a <code>String</code>) as well as + * line/column numbers (2 <code>Integer</code> objects) from the + * <code>SAXParseException</code>. */ private static Object[] messageParams(SAXParseException e) { return new Object[] { - e.getMessage(), - e.getSystemId(), - new Integer(e.getLineNumber()), - new Integer(e.getColumnNumber())}; + e.getMessage(), + e.getSystemId(), + new Integer(e.getLineNumber()), + new Integer(e.getColumnNumber()) }; } }
\ No newline at end of file diff --git a/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/MOATimer.java b/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/MOATimer.java index 8542b58..591495a 100644 --- a/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/MOATimer.java +++ b/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/MOATimer.java @@ -21,7 +21,6 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moaspss.util; import java.util.Map; @@ -29,7 +28,7 @@ import java.util.WeakHashMap; /** * A timer utility for named timers. - * + * * @author Sven Aigner */ public class MOATimer { @@ -43,7 +42,7 @@ public class MOATimer { /** * Return the single instance of this class. - * + * * @return The single instance of this class. */ public static MOATimer getInstance() { @@ -55,7 +54,7 @@ public class MOATimer { /** * Create a new <code>MOATimer</code>. - * + * * Protected to disallow multiple instances. */ protected MOATimer() { @@ -64,10 +63,10 @@ public class MOATimer { /** * Start timing a certain action. - * + * * The timing belonging to the action ID is garbage collected as soon as there * exists no other reference to the action ID. - * + * * @param id The action ID. */ public void startTiming(Object id) { @@ -76,7 +75,7 @@ public class MOATimer { /** * Stop timing an action. - * + * * @param id The action ID. */ public void stopTiming(Object id) { @@ -85,50 +84,53 @@ public class MOATimer { /** * Get the duration of an action. - * + * * @param id The action ID for which to compute the duration. * @return long The duration in milliseconds between calls to - * <code>startTiming()</code> and <code>stopTiming()</code>. If - * only <code>startTiming()</code> has been called for the action, then - * current difference to the system time is returned. If no timing exists for - * the action, <code>- 1</code> is returned. + * <code>startTiming()</code> and <code>stopTiming()</code>. If only + * <code>startTiming()</code> has been called for the action, then + * current difference to the system time is returned. If no timing + * exists for the action, <code>- 1</code> is returned. */ public long duration(Object id) { if (timemapstart.containsKey(id)) { - long start = ((Long) timemapstart.get(id)).longValue(); + final long start = ((Long) timemapstart.get(id)).longValue(); if (timemapend.containsKey(id)) { - long end = ((Long) timemapend.get(id)).longValue(); + final long end = ((Long) timemapend.get(id)).longValue(); return end - start; } else { return System.currentTimeMillis() - start; } - } else + } else { return -1; + } } /** * Get the duration of an action, as a nicely formatted <code>String</code>. - * + * * @param id The action ID. * @return String The <code>duration()</code> as a <code>String</code>. */ public String durationAsString(Object id) { - long dur = duration(id); - long second = dur / 1000; - long mil = (dur) - (second * 1000); + final long dur = duration(id); + final long second = dur / 1000; + final long mil = dur - second * 1000; return "Duration: " + second + "." + mil + " seconds"; } /** * Remove a timing. - * + * * @param id The action ID. */ public void clearTiming(String id) { - if (timemapstart.containsKey(id)) + if (timemapstart.containsKey(id)) { timemapstart.remove(id); - if (timemapend.containsKey(id)) + } + if (timemapend.containsKey(id)) { timemapend.remove(id); + } } } diff --git a/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/MessageProvider.java b/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/MessageProvider.java index da97ea1..163e903 100644 --- a/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/MessageProvider.java +++ b/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/MessageProvider.java @@ -21,53 +21,52 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moaspss.util; import java.util.Locale; /** * A singleton wrapper around a <code>Message</code> object. - * + * * Provides the messages used in the common project. - * + * * @author Patrick Peck * @version $Id$ */ public class MessageProvider { /** The location of the default message resources. */ private static final String[] DEFAULT_MESSAGE_RESOURCES = - { "resources/properties/common_messages" }; + { "resources/properties/common_messages" }; /** The locale of the default message resources. */ private static final Locale[] DEFAULT_MESSAGE_LOCALES = - new Locale[] { new Locale("de", "AT") }; + new Locale[] { new Locale("de", "AT") }; /** The single instance of this class. */ private static MessageProvider instance; - + /** The messages provided by this <code>MessageProvider</code>. */ - private Messages messages; - + private final Messages messages; + /** * Return the single instance of the <code>MessageProvider</code>. - * + * * Intialilizes the <code>MessageProvider</code> with the default message * locations: <code>/resources/properties/common_messages</code>. - * + * * @return The single <code>MessageProvider</code>. */ public static synchronized MessageProvider getInstance() { if (instance == null) { instance = - new MessageProvider(DEFAULT_MESSAGE_RESOURCES, DEFAULT_MESSAGE_LOCALES); + new MessageProvider(DEFAULT_MESSAGE_RESOURCES, DEFAULT_MESSAGE_LOCALES); } return instance; } /** * Create a <code>MessageProvider</code>. - * + * * @param resourceNames The names of the resources containing the messages. - * @param locales The corresponding locales. + * @param locales The corresponding locales. */ protected MessageProvider(String[] resourceNames, Locale[] locales) { this.messages = new Messages(resourceNames, locales); @@ -76,9 +75,9 @@ public class MessageProvider { /** * Get the message corresponding to a given message ID. * - * @param messageId The ID of the message. + * @param messageId The ID of the message. * @param parameters The parameters to fill in into the message arguments. - * @return The formatted message. + * @return The formatted message. */ public String getMessage(String messageId, Object[] parameters) { return messages.getMessage(messageId, parameters); diff --git a/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/Messages.java b/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/Messages.java index 6e324b7..61d9b65 100644 --- a/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/Messages.java +++ b/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/Messages.java @@ -21,47 +21,46 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moaspss.util; import java.text.MessageFormat; import java.util.Locale; import java.util.MissingResourceException; -import java.util.PropertyResourceBundle; +import java.util.ResourceBundle; import at.gv.egovernment.moaspss.logging.Logger; /** * Provides access to the system messages resource used for exception handling * and logging messages. - * + * * Messages must be provided as a resource bundle at the path. - * + * * @author Patrick Peck * @version $Id$ */ public class Messages { /** Error message indicating that no messages are avaiable. */ private static final String ERROR_MESSAGES_UNAVAILABLE = - "Fehler in der Server-Konfiguration. " - + "Die Fehlertexte konnten nicht geladen werden."; + "Fehler in der Server-Konfiguration. " + + "Die Fehlertexte konnten nicht geladen werden."; /** Error message indicating that the message is not available. */ private static final String ERROR_NO_MESSAGE = - "No errormesseage for error with number.={0}"; + "No errormesseage for error with number.={0}"; /** The names of the resources containing the messages. */ - private String[] resourceNames; + private final String[] resourceNames; /** The corresponding <code>Locale</code>s of the resources. */ - private Locale[] locales; + private final Locale[] locales; /** The <code>ResourceBundle</code>s containing the messages. */ private ResourceBundleChain messages; /** - * Create a new <code>Message</code> object containing the messages - * in the given resources. - * + * Create a new <code>Message</code> object containing the messages in the given + * resources. + * * @param resourceNames The names of the resources containing the messages. - * @param locales The corresponding locales. + * @param locales The corresponding locales. */ public Messages(String[] resourceNames, Locale[] locales) { this.resourceNames = resourceNames; @@ -72,9 +71,9 @@ public class Messages { /** * Get the message corresponding to a given message ID. * - * @param messageId The ID of the message. + * @param messageId The ID of the message. * @param parameters The parameters to fill in into the message arguments. - * @return The formatted message. + * @return The formatted message. */ public String getMessage(String messageId, Object[] parameters) { // initialize messages @@ -87,20 +86,20 @@ public class Messages { return ERROR_MESSAGES_UNAVAILABLE; } else { try { - String rawMessage = messages.getString(messageId); + final String rawMessage = messages.getString(messageId); return MessageFormat.format(rawMessage, parameters); - } catch (MissingResourceException e2) { - // couldn't find any message -> set to default error message + } catch (final MissingResourceException e2) { + // couldn't find any message -> set to default error message return MessageFormat.format( - ERROR_NO_MESSAGE, - new Object[] { messageId }); + ERROR_NO_MESSAGE, + new Object[] { messageId }); } } } /** * Return the names of the resources containing the messages. - * + * * @return String[] The names of the resource bundles containing the messages. */ private String[] getResourceNames() { @@ -109,9 +108,9 @@ public class Messages { /** * Return the <code>Locale</code>s of the resources containing the messages. - * - * @return Locale[] The <code>Locale</code>s of the resource bundles - * containing the messages. + * + * @return Locale[] The <code>Locale</code>s of the resource bundles containing + * the messages. */ private Locale[] getLocales() { return locales; @@ -129,10 +128,10 @@ public class Messages { for (i = 0; i < resourceNames.length; i++) { try { messages.addResourceBundle( - PropertyResourceBundle.getBundle( - getResourceNames()[i], - getLocales()[i])); - } catch (MissingResourceException e) { + ResourceBundle.getBundle( + getResourceNames()[i], + getLocales()[i])); + } catch (final MissingResourceException e) { Logger.error(ERROR_MESSAGES_UNAVAILABLE, e); } } diff --git a/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/MiscUtil.java b/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/MiscUtil.java index 5510ac8..d2431e4 100644 --- a/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/MiscUtil.java +++ b/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/MiscUtil.java @@ -1,13 +1,13 @@ /* * Copyright 2011 Federal Chancellery Austria and * Graz University of Technology - * + * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at - * + * * http://www.apache.org/licenses/LICENSE-2.0 - * + * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. @@ -25,6 +25,7 @@ import java.security.cert.CertificateFactory; import java.security.cert.X509Certificate; import java.text.ParseException; import java.text.SimpleDateFormat; +import java.util.Calendar; import java.util.Collection; import java.util.Date; import java.util.GregorianCalendar; @@ -44,91 +45,89 @@ import javax.xml.transform.stream.StreamResult; import at.gv.egovernment.moaspss.logging.Logger; import at.gv.egovernment.moaspss.util.ex.EgovUtilException; - - /** * Class providing several utility methods. - * + * * @author <a href="mailto:Arne.Tauber@egiz.gv.at">Arne Tauber</a> - * + * */ public class MiscUtil { - public static final String DEFAULT_SLASH = "/"; - - private static final int IO_BUFFER_SIZE = 4 * 1024; - - public static void copyStream(InputStream is, OutputStream os) throws IOException { - byte[] b = new byte[IO_BUFFER_SIZE]; - int read; - while ((read = is.read(b)) != -1) { - os.write(b, 0, read); - } - } - - public static void assertNotNull(Object param, String name) { - if (param == null) { - throw new NullPointerException(name + " must not be null."); - } - } - - public static boolean areAllNull(Object... objects) { - for (Object o : objects) { - if (o != null) { - return false; - } - } - return true; - } - - public static String extractContentType(String contentTypeString) { - if (contentTypeString == null) { - return ""; - } - if (contentTypeString.indexOf(";") != -1) { - return contentTypeString.substring(0, contentTypeString.indexOf(";")); - } - return contentTypeString; - } - - public static XMLGregorianCalendar getXMLGregorianCalendar(Date date) - throws DatatypeConfigurationException { - GregorianCalendar cal = (GregorianCalendar) GregorianCalendar.getInstance(); - cal.setTime(date); - return DatatypeFactory.newInstance().newXMLGregorianCalendar(cal); - } - - public static XMLGregorianCalendar getXMLGregorianCalendar(String str) - throws DatatypeConfigurationException { - return DatatypeFactory.newInstance().newXMLGregorianCalendar(str); - } - - public static X509Certificate readCertificate(InputStream certStream) - throws CertificateException { - CertificateFactory cf = CertificateFactory.getInstance("X.509"); - return (X509Certificate) cf.generateCertificate(certStream); - } - - public static boolean isEmpty(String str) { - return str == null || "".equals(str); - } - - public static boolean isNotEmpty(String str) { - return str != null && !"".equals(str); - } - - public static byte[] sourceToByteArray(Source result) - throws TransformerException { - TransformerFactory factory = TransformerFactory.newInstance(); - Transformer transformer = factory.newTransformer(); - transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes"); - transformer.setOutputProperty(OutputKeys.METHOD, "xml"); - ByteArrayOutputStream out = new ByteArrayOutputStream(); - StreamResult streamResult = new StreamResult(); - streamResult.setOutputStream(out); - transformer.transform(result, streamResult); - return out.toByteArray(); - } + public static final String DEFAULT_SLASH = "/"; + + private static final int IO_BUFFER_SIZE = 4 * 1024; + + public static void copyStream(InputStream is, OutputStream os) throws IOException { + final byte[] b = new byte[IO_BUFFER_SIZE]; + int read; + while ((read = is.read(b)) != -1) { + os.write(b, 0, read); + } + } + + public static void assertNotNull(Object param, String name) { + if (param == null) { + throw new NullPointerException(name + " must not be null."); + } + } + + public static boolean areAllNull(Object... objects) { + for (final Object o : objects) { + if (o != null) { + return false; + } + } + return true; + } + + public static String extractContentType(String contentTypeString) { + if (contentTypeString == null) { + return ""; + } + if (contentTypeString.indexOf(";") != -1) { + return contentTypeString.substring(0, contentTypeString.indexOf(";")); + } + return contentTypeString; + } + + public static XMLGregorianCalendar getXMLGregorianCalendar(Date date) + throws DatatypeConfigurationException { + final GregorianCalendar cal = (GregorianCalendar) Calendar.getInstance(); + cal.setTime(date); + return DatatypeFactory.newInstance().newXMLGregorianCalendar(cal); + } + + public static XMLGregorianCalendar getXMLGregorianCalendar(String str) + throws DatatypeConfigurationException { + return DatatypeFactory.newInstance().newXMLGregorianCalendar(str); + } + + public static X509Certificate readCertificate(InputStream certStream) + throws CertificateException { + final CertificateFactory cf = CertificateFactory.getInstance("X.509"); + return (X509Certificate) cf.generateCertificate(certStream); + } + + public static boolean isEmpty(String str) { + return str == null || "".equals(str); + } + + public static boolean isNotEmpty(String str) { + return str != null && !"".equals(str); + } + + public static byte[] sourceToByteArray(Source result) + throws TransformerException { + final TransformerFactory factory = TransformerFactory.newInstance(); + final Transformer transformer = factory.newTransformer(); + transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes"); + transformer.setOutputProperty(OutputKeys.METHOD, "xml"); + final ByteArrayOutputStream out = new ByteArrayOutputStream(); + final StreamResult streamResult = new StreamResult(); + streamResult.setOutputStream(out); + transformer.transform(result, streamResult); + return out.toByteArray(); + } // public static Document parseDocument(InputStream inputStream) // throws IOException { @@ -145,159 +144,159 @@ public class MiscUtil { // } // } - public static String removePrecedingSlash(String path, String slash) { - assertNotEmpty(slash, "Shash"); - if (!isEmpty(path)) { - while (path.startsWith(slash)) { - path = path.substring(slash.length(), path.length()); - } - } - return path; - } - - public static String removePrecedingSlash(String path) { - return removePrecedingSlash(path, DEFAULT_SLASH); - } - - public static void assertNotEmpty(String param, String name) { - if (param == null) { - throw new NullPointerException(name + " must not be null."); - } - if (param.length() == 0) { - throw new IllegalArgumentException(name + " must not be empty."); - } - } - - @SuppressWarnings("rawtypes") + public static String removePrecedingSlash(String path, String slash) { + assertNotEmpty(slash, "Shash"); + if (!isEmpty(path)) { + while (path.startsWith(slash)) { + path = path.substring(slash.length(), path.length()); + } + } + return path; + } + + public static String removePrecedingSlash(String path) { + return removePrecedingSlash(path, DEFAULT_SLASH); + } + + public static void assertNotEmpty(String param, String name) { + if (param == null) { + throw new NullPointerException(name + " must not be null."); + } + if (param.length() == 0) { + throw new IllegalArgumentException(name + " must not be empty."); + } + } + + @SuppressWarnings("rawtypes") public static boolean isEmpty(Properties props) { - if (props == null || props.isEmpty()) { - return true; - } - Iterator it = props.values().iterator(); - while (it.hasNext()) { - if (MiscUtil.isNotEmpty((String) it.next())) { - return false; - } - } - return true; - } - - public static boolean isEmpty(Empty empty) { - return empty == null || empty.isEmpty(); - } - - public static boolean isNotEmpty(Empty empty) { - return !isEmpty(empty); - } - - public static boolean isEmpty(byte[] data) { - return data == null || data.length == 0; - } - - public static boolean isNotEmpty(byte[] data) { - return !isEmpty(data); - } - - public static <T> boolean isEmpty(Collection<T> c) { - return c == null || c.isEmpty(); - } - - public static <T> boolean isNotEmpty(Collection<T> c) { - return !isEmpty(c); - } - - public static boolean areAllEmpty(String... strings) { - for (String s : strings) { - if (s != null && s.trim().length() != 0) { - return false; - } - } - return true; - } - - public static boolean areAllEmpty(Empty... empties) { - if (empties != null) { - for (Empty e : empties) { - if (e != null && !e.isEmpty()) { - return false; - } - } - } - return true; - } - - public static <T> void assertNotEmpty(T[] param, String name) { - if (param == null) { - throw new NullPointerException(name + " must not be null."); - } - if (param.length == 0) { - throw new IllegalArgumentException(name + " must not be empty."); - } - } - - public static void assertNotEmpty(Empty empty, String name) { - if (empty == null) { - throw new NullPointerException(name + " must not be null."); - } - if (empty.isEmpty()) { - throw new IllegalArgumentException(name + " must not be empty."); - } - } - - public static void assertNotEmpty(byte[] param, String name) { - if (param == null) { - throw new NullPointerException(name + " must not be null."); - } - if (param.length == 0) { - throw new IllegalArgumentException(name + " must not be empty."); - } - } - - public static Date parseXMLDate(String xmlDate) throws EgovUtilException { - if (xmlDate == null) { - return null; - } - SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); - try { - return sdf.parse(xmlDate); - } catch (ParseException e) { - throw new EgovUtilException(e); - } - } - - public static <T> boolean isEmpty(T[] array) { - return array == null || array.length == 0; - } - - public static <T> boolean isNotEmpty(T[] array) { - return !isEmpty(array); - } - - public static String convertDateFromStandardToXML(String dateString) { - MiscUtil.assertNotNull(dateString, "dateString"); - Date date = parseDate(dateString); - return formatDate(date, "yyyy-MM-dd"); - } - - public static Date parseDate(String dateString) { - return parseDate(dateString, "dd.MM.yyyy"); - } - - public static Date parseDate(String dateString, String pattern) { - MiscUtil.assertNotNull(dateString, "dateString"); - MiscUtil.assertNotNull(pattern, "pattern"); - SimpleDateFormat sdf = new SimpleDateFormat(pattern); - try { - return sdf.parse(dateString); - } catch (ParseException e) { - Logger.warn("Error parsing date.", e); - return null; + if (props == null || props.isEmpty()) { + return true; } - } - - public static String formatDate(Date date, String format) { - SimpleDateFormat sdf = new SimpleDateFormat(format); - return sdf.format(date); - } - + final Iterator it = props.values().iterator(); + while (it.hasNext()) { + if (MiscUtil.isNotEmpty((String) it.next())) { + return false; + } + } + return true; + } + + public static boolean isEmpty(Empty empty) { + return empty == null || empty.isEmpty(); + } + + public static boolean isNotEmpty(Empty empty) { + return !isEmpty(empty); + } + + public static boolean isEmpty(byte[] data) { + return data == null || data.length == 0; + } + + public static boolean isNotEmpty(byte[] data) { + return !isEmpty(data); + } + + public static <T> boolean isEmpty(Collection<T> c) { + return c == null || c.isEmpty(); + } + + public static <T> boolean isNotEmpty(Collection<T> c) { + return !isEmpty(c); + } + + public static boolean areAllEmpty(String... strings) { + for (final String s : strings) { + if (s != null && s.trim().length() != 0) { + return false; + } + } + return true; + } + + public static boolean areAllEmpty(Empty... empties) { + if (empties != null) { + for (final Empty e : empties) { + if (e != null && !e.isEmpty()) { + return false; + } + } + } + return true; + } + + public static <T> void assertNotEmpty(T[] param, String name) { + if (param == null) { + throw new NullPointerException(name + " must not be null."); + } + if (param.length == 0) { + throw new IllegalArgumentException(name + " must not be empty."); + } + } + + public static void assertNotEmpty(Empty empty, String name) { + if (empty == null) { + throw new NullPointerException(name + " must not be null."); + } + if (empty.isEmpty()) { + throw new IllegalArgumentException(name + " must not be empty."); + } + } + + public static void assertNotEmpty(byte[] param, String name) { + if (param == null) { + throw new NullPointerException(name + " must not be null."); + } + if (param.length == 0) { + throw new IllegalArgumentException(name + " must not be empty."); + } + } + + public static Date parseXMLDate(String xmlDate) throws EgovUtilException { + if (xmlDate == null) { + return null; + } + final SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + try { + return sdf.parse(xmlDate); + } catch (final ParseException e) { + throw new EgovUtilException(e); + } + } + + public static <T> boolean isEmpty(T[] array) { + return array == null || array.length == 0; + } + + public static <T> boolean isNotEmpty(T[] array) { + return !isEmpty(array); + } + + public static String convertDateFromStandardToXML(String dateString) { + MiscUtil.assertNotNull(dateString, "dateString"); + final Date date = parseDate(dateString); + return formatDate(date, "yyyy-MM-dd"); + } + + public static Date parseDate(String dateString) { + return parseDate(dateString, "dd.MM.yyyy"); + } + + public static Date parseDate(String dateString, String pattern) { + MiscUtil.assertNotNull(dateString, "dateString"); + MiscUtil.assertNotNull(pattern, "pattern"); + final SimpleDateFormat sdf = new SimpleDateFormat(pattern); + try { + return sdf.parse(dateString); + } catch (final ParseException e) { + Logger.warn("Error parsing date.", e); + return null; + } + } + + public static String formatDate(Date date, String format) { + final SimpleDateFormat sdf = new SimpleDateFormat(format); + return sdf.format(date); + } + } diff --git a/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/NodeIteratorAdapter.java b/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/NodeIteratorAdapter.java index 998edb4..66907d2 100644 --- a/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/NodeIteratorAdapter.java +++ b/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/NodeIteratorAdapter.java @@ -21,7 +21,6 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moaspss.util; import java.util.ListIterator; @@ -34,20 +33,21 @@ import org.w3c.dom.traversal.NodeIterator; /** * A <code>NodeIterator</code> implementation based on a * <code>ListIterator</code>. - * + * * @see java.util.ListIterator * @see org.w3c.dom.traversal.NodeIterator - * + * * @author Patrick Peck * @version $Id$ */ public class NodeIteratorAdapter implements NodeIterator { /** The <code>ListIterator</code> to wrap. */ - private ListIterator nodeIterator; + private final ListIterator nodeIterator; /** * Create a new <code>NodeIteratorAdapter</code>. + * * @param nodeIterator The <code>ListIterator</code> to iterate over. */ public NodeIteratorAdapter(ListIterator nodeIterator) { @@ -57,6 +57,7 @@ public class NodeIteratorAdapter implements NodeIterator { /** * @see org.w3c.dom.traversal.NodeIterator#getRoot() */ + @Override public Node getRoot() { return null; } @@ -64,6 +65,7 @@ public class NodeIteratorAdapter implements NodeIterator { /** * @see org.w3c.dom.traversal.NodeIterator#getWhatToShow() */ + @Override public int getWhatToShow() { return NodeFilter.SHOW_ALL; } @@ -71,6 +73,7 @@ public class NodeIteratorAdapter implements NodeIterator { /** * @see org.w3c.dom.traversal.NodeIterator#getFilter() */ + @Override public NodeFilter getFilter() { return null; } @@ -78,6 +81,7 @@ public class NodeIteratorAdapter implements NodeIterator { /** * @see org.w3c.dom.traversal.NodeIterator#getExpandEntityReferences() */ + @Override public boolean getExpandEntityReferences() { return false; } @@ -85,6 +89,7 @@ public class NodeIteratorAdapter implements NodeIterator { /** * @see org.w3c.dom.traversal.NodeIterator#nextNode() */ + @Override public Node nextNode() throws DOMException { if (nodeIterator.hasNext()) { return (Node) nodeIterator.next(); @@ -95,6 +100,7 @@ public class NodeIteratorAdapter implements NodeIterator { /** * @see org.w3c.dom.traversal.NodeIterator#previousNode() */ + @Override public Node previousNode() throws DOMException { if (nodeIterator.hasPrevious()) { return (Node) nodeIterator.previous(); @@ -105,6 +111,7 @@ public class NodeIteratorAdapter implements NodeIterator { /** * @see org.w3c.dom.traversal.NodeIterator#detach() */ + @Override public void detach() { } diff --git a/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/NodeListAdapter.java b/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/NodeListAdapter.java index d88ef4b..d569516 100644 --- a/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/NodeListAdapter.java +++ b/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/NodeListAdapter.java @@ -21,7 +21,6 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moaspss.util; import java.util.List; @@ -31,21 +30,21 @@ import org.w3c.dom.NodeList; /** * A <code>NodeList</code> implementation based on a <code>List</code>. - * + * * @see java.util.List * @see org.w3c.dom.NodeList - * + * * @author Patrick Peck * @version $Id$ */ public class NodeListAdapter implements NodeList { /** The <code>List</code> to wrap. */ - private List nodeList; - + private final List nodeList; + /** * Create a new <code>NodeListAdapter</code>. - * - * @param nodeList The <code>List</code> containing the nodes. + * + * @param nodeList The <code>List</code> containing the nodes. */ public NodeListAdapter(List nodeList) { this.nodeList = nodeList; @@ -54,6 +53,7 @@ public class NodeListAdapter implements NodeList { /** * @see org.w3c.dom.NodeList#item(int) */ + @Override public Node item(int index) { return (Node) nodeList.get(index); } @@ -61,6 +61,7 @@ public class NodeListAdapter implements NodeList { /** * @see org.w3c.dom.NodeList#getLength() */ + @Override public int getLength() { return nodeList.size(); } diff --git a/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/OutputXML2File.java b/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/OutputXML2File.java index e4e6cc5..6ce951d 100644 --- a/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/OutputXML2File.java +++ b/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/OutputXML2File.java @@ -21,7 +21,6 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - /* * Created on 26.04.2004 * @@ -36,67 +35,70 @@ import at.gv.egovernment.moaspss.logging.Logger; /** * utility functions to write XML data to files + * * @author rschamberger * @version $Id$ */ public class OutputXML2File { - /** - * writes an XML structure to file if debug is enabled in hierarchy (Encoding: UTF-8) - * - * @param filename file name - * @param rootElem root element in DOM tree - * @param hierarchy of the Logger - */ - public static void debugOutputXML2File(String filename, Element rootElem, String hierarchy) { - if (Logger.isDebugEnabled(hierarchy)) { - outputXML2File(filename, rootElem); - } - } - - /** - * writes an XML structure to file if debug is enabled in hierarchy (Encoding: UTF-8) - * - * @param filename file name - * @param xmlString XML string - * @param hierarchy of the Logger - */ - public static void debugOutputXML2File(String filename, String xmlString, String hierarchy) { - if (Logger.isDebugEnabled(hierarchy)) { - outputXML2File(filename, xmlString); - } - } + /** + * writes an XML structure to file if debug is enabled in hierarchy (Encoding: + * UTF-8) + * + * @param filename file name + * @param rootElem root element in DOM tree + * @param hierarchy of the Logger + */ + public static void debugOutputXML2File(String filename, Element rootElem, String hierarchy) { + if (Logger.isDebugEnabled(hierarchy)) { + outputXML2File(filename, rootElem); + } + } + + /** + * writes an XML structure to file if debug is enabled in hierarchy (Encoding: + * UTF-8) + * + * @param filename file name + * @param xmlString XML string + * @param hierarchy of the Logger + */ + public static void debugOutputXML2File(String filename, String xmlString, String hierarchy) { + if (Logger.isDebugEnabled(hierarchy)) { + outputXML2File(filename, xmlString); + } + } + + /** + * writes an XML structure to file (Encoding: UTF-8) + * + * @param filename file name + * @param rootElem root element in DOM tree + */ + public static void outputXML2File(String filename, Element rootElem) { + try { + final String xmlString = new String(DOMUtils.serializeNode(rootElem)); + outputXML2File(filename, xmlString); + } catch (final Exception ex) { + ex.printStackTrace(); + } + } - /** - * writes an XML structure to file (Encoding: UTF-8) - * - * @param filename file name - * @param rootElem root element in DOM tree - */ - public static void outputXML2File(String filename, Element rootElem) { - try { - String xmlString = new String(DOMUtils.serializeNode(rootElem)); - outputXML2File(filename, xmlString); - } catch (Exception ex) { - ex.printStackTrace(); - } - } - - /** - * writes an XML structure to file (Encoding: UTF-8) - * - * @param filename file name - * @param xmlString XML string - */ - public static void outputXML2File(String filename, String xmlString) { - try { - java.io.OutputStream fout = new java.io.FileOutputStream(filename); - byte[] xmlData = xmlString.getBytes("UTF-8"); - fout.write(xmlData); - fout.close(); - } catch (Exception ex) { - ex.printStackTrace(); - } - } + /** + * writes an XML structure to file (Encoding: UTF-8) + * + * @param filename file name + * @param xmlString XML string + */ + public static void outputXML2File(String filename, String xmlString) { + try { + final java.io.OutputStream fout = new java.io.FileOutputStream(filename); + final byte[] xmlData = xmlString.getBytes("UTF-8"); + fout.write(xmlData); + fout.close(); + } catch (final Exception ex) { + ex.printStackTrace(); + } + } } diff --git a/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/ResourceBundleChain.java b/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/ResourceBundleChain.java index 1edad95..a5c7ecc 100644 --- a/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/ResourceBundleChain.java +++ b/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/ResourceBundleChain.java @@ -21,7 +21,6 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moaspss.util; import java.util.ArrayList; @@ -32,7 +31,7 @@ import java.util.ResourceBundle; /** * A class to chain <code>ResourceBundle</code>s. - * + * * @author Patrick Peck * @version $Id$ */ @@ -40,11 +39,11 @@ public class ResourceBundleChain { /** Error message indicating the resource is not available. */ private static final String ERROR_MISSING_RESOURCE = "Missing resource"; /** The <code>ResourceBundle</code>s contained in this chain. */ - private List resourceBundles = new ArrayList(); + private final List resourceBundles = new ArrayList(); /** * Add a <code>ResourceBundle</code> to the chain. - * + * * @param resourceBundle The <code>ResourceBundle</code> to add. */ public void addResourceBundle(ResourceBundle resourceBundle) { @@ -53,13 +52,13 @@ public class ResourceBundleChain { /** * Return the value of the resource. - * + * * @param key The key to access the <code>String</code> resource. * @return The resource value. All the registered <code>ResourceBundle</code>s - * are searched in the order in which they have previously been added to this - * <code>ResourceBundleChain</code>. + * are searched in the order in which they have previously been added to + * this <code>ResourceBundleChain</code>. * @throws MissingResourceException The resource coult not be found in any of - * the bundles. + * the bundles. */ public String getString(String key) throws MissingResourceException { MissingResourceException lastException = null; @@ -68,19 +67,19 @@ public class ResourceBundleChain { // handle case where no resource bundles have been added if (resourceBundles.size() == 0) { throw new MissingResourceException( - ERROR_MISSING_RESOURCE, - this.getClass().getName(), - key); + ERROR_MISSING_RESOURCE, + this.getClass().getName(), + key); } // try to find the resource in one of the bundles; if it cannot be found, // return the exception thrown by the last bundle in the list for (iter = resourceBundles.iterator(); iter.hasNext();) { - ResourceBundle resourceBundle = (ResourceBundle) iter.next(); + final ResourceBundle resourceBundle = (ResourceBundle) iter.next(); try { - String value = resourceBundle.getString(key); + final String value = resourceBundle.getString(key); return value; - } catch (MissingResourceException e) { + } catch (final MissingResourceException e) { lastException = e; } } diff --git a/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/SSLUtils.java b/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/SSLUtils.java index 5078f01..d2d63cb 100644 --- a/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/SSLUtils.java +++ b/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/SSLUtils.java @@ -21,7 +21,6 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moaspss.util; import java.io.IOException; @@ -38,207 +37,239 @@ import javax.net.ssl.TrustManagerFactory; /** * Utility for connecting to server applications via SSL. - * + * * @author Paul Ivancsics * @version $Id$ */ public class SSLUtils { - - /** - * Creates an <code>SSLSocketFactory</code> which utilizes the given trust store. - * - * @param trustStoreType key store type of trust store - * @param trustStoreInputStream input stream for reading JKS trust store containing - * trusted server certificates; if <code>null</code>, the default - * trust store will be utilized - * @param trustStorePassword if provided, it will be used to check - * the integrity of the trust store; if omitted, it will not be checked - * @return <code>SSLSocketFactory</code> to be used by an <code>HttpsURLConnection</code> - * @throws IOException thrown while reading from the input stream + + /** + * Creates an <code>SSLSocketFactory</code> which utilizes the given trust + * store. + * + * @param trustStoreType key store type of trust store + * @param trustStoreInputStream input stream for reading JKS trust store + * containing trusted server certificates; if + * <code>null</code>, the default trust store will + * be utilized + * @param trustStorePassword if provided, it will be used to check the + * integrity of the trust store; if omitted, it + * will not be checked + * @return <code>SSLSocketFactory</code> to be used by an + * <code>HttpsURLConnection</code> + * @throws IOException thrown while reading from the input stream * @throws GeneralSecurityException thrown while creating the socket factory - */ + */ public static SSLSocketFactory getSSLSocketFactory( - String trustStoreType, - InputStream trustStoreInputStream, - String trustStorePassword) - throws IOException, GeneralSecurityException { - - TrustManager[] tms = getTrustManagers(trustStoreType, trustStoreInputStream, trustStorePassword); - SSLContext ctx = SSLContext.getInstance("TLS"); - ctx.init(null, tms, null); - - SSLSocketFactory sf = ctx.getSocketFactory(); - return sf; + String trustStoreType, + InputStream trustStoreInputStream, + String trustStorePassword) + throws IOException, GeneralSecurityException { + + final TrustManager[] tms = getTrustManagers(trustStoreType, trustStoreInputStream, trustStorePassword); + final SSLContext ctx = SSLContext.getInstance("TLS"); + ctx.init(null, tms, null); + + final SSLSocketFactory sf = ctx.getSocketFactory(); + return sf; } - /** - * Creates an <code>SSLSocketFactory</code> which utilizes the - * given trust store and keystore. - * - * @param trustStore trust store containing trusted server certificates; - * if <code>null</code>, the default trust store will be utilized - * @param clientKeyStoreType key store type of <code>clientKeyStore</code> - * @param clientKeyStoreURL URL of key store containing keys to be used for - * client authentication; if <code>null</code>, the default key store will be utilized - * @param clientKeyStorePassword if provided, it will be used to check - * the integrity of the client key store; if omitted, it will not be checked - * @return <code>SSLSocketFactory</code> to be used by an <code>HttpsURLConnection</code> - * @throws IOException thrown while reading key store file + + /** + * Creates an <code>SSLSocketFactory</code> which utilizes the given trust store + * and keystore. + * + * @param trustStore trust store containing trusted server + * certificates; if <code>null</code>, the default + * trust store will be utilized + * @param clientKeyStoreType key store type of <code>clientKeyStore</code> + * @param clientKeyStoreURL URL of key store containing keys to be used for + * client authentication; if <code>null</code>, + * the default key store will be utilized + * @param clientKeyStorePassword if provided, it will be used to check the + * integrity of the client key store; if omitted, + * it will not be checked + * @return <code>SSLSocketFactory</code> to be used by an + * <code>HttpsURLConnection</code> + * @throws IOException thrown while reading key store file * @throws GeneralSecurityException thrown while creating the socket factory - */ + */ public static SSLSocketFactory getSSLSocketFactory( - KeyStore trustStore, - String clientKeyStoreType, - String clientKeyStoreURL, - String clientKeyStorePassword) - throws IOException, GeneralSecurityException { - - SSLContext ctx = getSSLContext( - trustStore, clientKeyStoreType, clientKeyStoreURL, clientKeyStorePassword); - SSLSocketFactory sf = ctx.getSocketFactory(); - return sf; + KeyStore trustStore, + String clientKeyStoreType, + String clientKeyStoreURL, + String clientKeyStorePassword) + throws IOException, GeneralSecurityException { + + final SSLContext ctx = getSSLContext( + trustStore, clientKeyStoreType, clientKeyStoreURL, clientKeyStorePassword); + final SSLSocketFactory sf = ctx.getSocketFactory(); + return sf; } - /** - * Creates an <code>SSLContext</code> initialized for the - * given trust store and keystore. - * - * @param trustStore trust store containing trusted server certificates; - * if <code>null</code>, the default trust store will be utilized - * @param clientKeyStoreType key store type of <code>clientKeyStore</code> - * @param clientKeyStoreURL URL of key store containing keys to be used for - * client authentication; if <code>null</code>, the default key store will be utilized - * @param clientKeyStorePassword if provided, it will be used to check - * the integrity of the client key store; if omitted, it will not be checked - * @return <code>SSLContext</code> to be used for creating an <code>SSLSocketFactory</code> - * @throws IOException thrown while reading key store file + + /** + * Creates an <code>SSLContext</code> initialized for the given trust store and + * keystore. + * + * @param trustStore trust store containing trusted server + * certificates; if <code>null</code>, the default + * trust store will be utilized + * @param clientKeyStoreType key store type of <code>clientKeyStore</code> + * @param clientKeyStoreURL URL of key store containing keys to be used for + * client authentication; if <code>null</code>, + * the default key store will be utilized + * @param clientKeyStorePassword if provided, it will be used to check the + * integrity of the client key store; if omitted, + * it will not be checked + * @return <code>SSLContext</code> to be used for creating an + * <code>SSLSocketFactory</code> + * @throws IOException thrown while reading key store file * @throws GeneralSecurityException thrown while creating the SSL context - */ + */ public static SSLContext getSSLContext( - KeyStore trustStore, - String clientKeyStoreType, - String clientKeyStoreURL, - String clientKeyStorePassword) - throws IOException, GeneralSecurityException { - - TrustManager[] tms = getTrustManagers(trustStore); - KeyManager[] kms = getKeyManagers(clientKeyStoreType, clientKeyStoreURL, clientKeyStorePassword); - SSLContext ctx = SSLContext.getInstance("TLS"); - ctx.init(kms, tms, null); - return ctx; + KeyStore trustStore, + String clientKeyStoreType, + String clientKeyStoreURL, + String clientKeyStorePassword) + throws IOException, GeneralSecurityException { + + final TrustManager[] tms = getTrustManagers(trustStore); + final KeyManager[] kms = getKeyManagers(clientKeyStoreType, clientKeyStoreURL, clientKeyStorePassword); + final SSLContext ctx = SSLContext.getInstance("TLS"); + ctx.init(kms, tms, null); + return ctx; } + /** - * Loads the trust store from an input stream and gets the + * Loads the trust store from an input stream and gets the * <code>TrustManager</code>s from a default <code>TrustManagerFactory</code>, - * initialized from the given trust store. - * @param trustStoreType key store type of trust store - * @param trustStoreInputStream input stream for reading JKS trust store containing - * trusted server certificates; if <code>null</code>, the default - * trust store will be utilized - * @param trustStorePassword if provided, it will be used to check - * the integrity of the trust store; if omitted, it will not be checked - * @return <code>TrustManager</code>s to be used for creating an - * <code>SSLSocketFactory</code> utilizing the given trust store - * @throws IOException thrown while reading from the input stream - * @throws GeneralSecurityException thrown while initializing the - * default <code>TrustManagerFactory</code> + * initialized from the given trust store. + * + * @param trustStoreType key store type of trust store + * @param trustStoreInputStream input stream for reading JKS trust store + * containing trusted server certificates; if + * <code>null</code>, the default trust store will + * be utilized + * @param trustStorePassword if provided, it will be used to check the + * integrity of the trust store; if omitted, it + * will not be checked + * @return <code>TrustManager</code>s to be used for creating an + * <code>SSLSocketFactory</code> utilizing the given trust store + * @throws IOException thrown while reading from the input stream + * @throws GeneralSecurityException thrown while initializing the default + * <code>TrustManagerFactory</code> */ - protected static TrustManager[] getTrustManagers( - String trustStoreType, - InputStream trustStoreInputStream, - String trustStorePassword) - throws IOException, GeneralSecurityException { - - if (trustStoreInputStream == null) - return null; - - // Set up the TrustStore to use. We need to load the file into - // a KeyStore instance. - KeyStore trustStore = KeyStoreUtils.loadKeyStore(trustStoreType, trustStoreInputStream, trustStorePassword); - return getTrustManagers(trustStore); - } - /** - * Gets the <code>TrustManager</code>s from a default <code>TrustManagerFactory</code>, - * initialized from the given trust store. - * - * @param trustStore the trust store to use - * @return <code>TrustManager</code>s to be used for creating an - * <code>SSLSocketFactory</code> utilizing the given trust store - * @throws GeneralSecurityException thrown while initializing the - * default <code>TrustManagerFactory</code> - */ - protected static TrustManager[] getTrustManagers(KeyStore trustStore) - throws GeneralSecurityException { - - if (trustStore == null) - return null; - - // Initialize the default TrustManagerFactory with this KeyStore - String alg=TrustManagerFactory.getDefaultAlgorithm(); - TrustManagerFactory tmFact=TrustManagerFactory.getInstance(alg); - tmFact.init(trustStore); - - // And now get the TrustManagers - TrustManager[] tms=tmFact.getTrustManagers(); - return tms; - } + protected static TrustManager[] getTrustManagers( + String trustStoreType, + InputStream trustStoreInputStream, + String trustStorePassword) + throws IOException, GeneralSecurityException { + + if (trustStoreInputStream == null) { + return null; + } + + // Set up the TrustStore to use. We need to load the file into + // a KeyStore instance. + final KeyStore trustStore = KeyStoreUtils.loadKeyStore(trustStoreType, trustStoreInputStream, + trustStorePassword); + return getTrustManagers(trustStore); + } + /** - * Loads the client key store from file and gets the - * <code>KeyManager</code>s from a default <code>KeyManagerFactory</code>, - * initialized from the given client key store. - * @param clientKeyStoreType key store type of <code>clientKeyStore</code> - * @param clientKeyStoreURL URL of key store containing keys to be used for - * client authentication; if <code>null</code>, the default key store will be utilized - * @param clientKeyStorePassword password used to check the integrity of the client key store; - * if <code>null</code>, it will not be checked - * @return <code>KeyManager</code>s to be used for creating an - * <code>SSLSocketFactory</code> utilizing the given client key store - * @throws IOException thrown while reading from the key store file - * @throws GeneralSecurityException thrown while initializing the - * default <code>KeyManagerFactory</code> + * Gets the <code>TrustManager</code>s from a default + * <code>TrustManagerFactory</code>, initialized from the given trust store. + * + * @param trustStore the trust store to use + * @return <code>TrustManager</code>s to be used for creating an + * <code>SSLSocketFactory</code> utilizing the given trust store + * @throws GeneralSecurityException thrown while initializing the default + * <code>TrustManagerFactory</code> */ - public static KeyManager[] getKeyManagers ( - String clientKeyStoreType, - String clientKeyStoreURL, - String clientKeyStorePassword) - throws IOException, GeneralSecurityException { - - if (clientKeyStoreURL == null) - return null; - - // Set up the KeyStore to use. We need to load the file into - // a KeyStore instance. - KeyStore clientKeyStore = KeyStoreUtils.loadKeyStore( - clientKeyStoreType, clientKeyStoreURL, clientKeyStorePassword); - return getKeyManagers(clientKeyStore, clientKeyStorePassword); - } + protected static TrustManager[] getTrustManagers(KeyStore trustStore) + throws GeneralSecurityException { + + if (trustStore == null) { + return null; + } + + // Initialize the default TrustManagerFactory with this KeyStore + final String alg = TrustManagerFactory.getDefaultAlgorithm(); + final TrustManagerFactory tmFact = TrustManagerFactory.getInstance(alg); + tmFact.init(trustStore); + + // And now get the TrustManagers + final TrustManager[] tms = tmFact.getTrustManagers(); + return tms; + } + /** - * Gets the <code>KeyManager</code>s from a default <code>KeyManagerFactory</code>, - * initialized from the given client key store. - * @param clientKeyStore client key store - * @param clientKeyStorePassword if provided, it will be used to check - * the integrity of the client key store; if omitted, it will not be checked - * @return <code>KeyManager</code>s to be used for creating an - * <code>SSLSocketFactory</code> utilizing the given client key store - * @throws GeneralSecurityException thrown while initializing the - * default <code>KeyManagerFactory</code> + * Loads the client key store from file and gets the <code>KeyManager</code>s + * from a default <code>KeyManagerFactory</code>, initialized from the given + * client key store. + * + * @param clientKeyStoreType key store type of <code>clientKeyStore</code> + * @param clientKeyStoreURL URL of key store containing keys to be used for + * client authentication; if <code>null</code>, + * the default key store will be utilized + * @param clientKeyStorePassword password used to check the integrity of the + * client key store; if <code>null</code>, it will + * not be checked + * @return <code>KeyManager</code>s to be used for creating an + * <code>SSLSocketFactory</code> utilizing the given client key store + * @throws IOException thrown while reading from the key store file + * @throws GeneralSecurityException thrown while initializing the default + * <code>KeyManagerFactory</code> */ - public static KeyManager[] getKeyManagers ( - KeyStore clientKeyStore, - String clientKeyStorePassword) - throws GeneralSecurityException { - - if (clientKeyStore == null) - return null; - - // Now we initialize the default KeyManagerFactory with this KeyStore - String alg=KeyManagerFactory.getDefaultAlgorithm(); - KeyManagerFactory kmFact=KeyManagerFactory.getInstance(alg); - char[] password = null; - if (clientKeyStorePassword != null) - password = clientKeyStorePassword.toCharArray(); - kmFact.init(clientKeyStore, password); - - // And now get the KeyManagers - KeyManager[] kms=kmFact.getKeyManagers(); - return kms; - } + public static KeyManager[] getKeyManagers( + String clientKeyStoreType, + String clientKeyStoreURL, + String clientKeyStorePassword) + throws IOException, GeneralSecurityException { + + if (clientKeyStoreURL == null) { + return null; + } + + // Set up the KeyStore to use. We need to load the file into + // a KeyStore instance. + final KeyStore clientKeyStore = KeyStoreUtils.loadKeyStore( + clientKeyStoreType, clientKeyStoreURL, clientKeyStorePassword); + return getKeyManagers(clientKeyStore, clientKeyStorePassword); + } + + /** + * Gets the <code>KeyManager</code>s from a default + * <code>KeyManagerFactory</code>, initialized from the given client key store. + * + * @param clientKeyStore client key store + * @param clientKeyStorePassword if provided, it will be used to check the + * integrity of the client key store; if omitted, + * it will not be checked + * @return <code>KeyManager</code>s to be used for creating an + * <code>SSLSocketFactory</code> utilizing the given client key store + * @throws GeneralSecurityException thrown while initializing the default + * <code>KeyManagerFactory</code> + */ + public static KeyManager[] getKeyManagers( + KeyStore clientKeyStore, + String clientKeyStorePassword) + throws GeneralSecurityException { + + if (clientKeyStore == null) { + return null; + } + + // Now we initialize the default KeyManagerFactory with this KeyStore + final String alg = KeyManagerFactory.getDefaultAlgorithm(); + final KeyManagerFactory kmFact = KeyManagerFactory.getInstance(alg); + char[] password = null; + if (clientKeyStorePassword != null) { + password = clientKeyStorePassword.toCharArray(); + } + kmFact.init(clientKeyStore, password); + + // And now get the KeyManagers + final KeyManager[] kms = kmFact.getKeyManagers(); + return kms; + } } diff --git a/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/StreamEntityResolver.java b/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/StreamEntityResolver.java index 5d328cf..06efdda 100644 --- a/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/StreamEntityResolver.java +++ b/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/StreamEntityResolver.java @@ -21,7 +21,6 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moaspss.util; import java.io.IOException; @@ -33,23 +32,26 @@ import org.xml.sax.InputSource; import org.xml.sax.SAXException; /** - * An <code>EntityResolver</code> that maps system IDs to + * An <code>EntityResolver</code> that maps system IDs to * <code>InputStream</code>s. - * + * * @author Patrick Peck * @version $Id$ */ public class StreamEntityResolver implements EntityResolver { - - /** A mapping from Public ID or System ID to an <code>InputStream</code> - * containing the entity. */ - private Map mappedEntities; - + + /** + * A mapping from Public ID or System ID to an <code>InputStream</code> + * containing the entity. + */ + private final Map mappedEntities; + /** * Create a <code>StreamEntityResolver</code>. - * - * @param mappedEntities A mapping from public or system IDs - * (<code>String</code> objects) to <code>InputStream</code>s. + * + * @param mappedEntities A mapping from public or system IDs + * (<code>String</code> objects) to + * <code>InputStream</code>s. */ public StreamEntityResolver(Map mappedEntities) { this.mappedEntities = mappedEntities; @@ -57,32 +59,33 @@ public class StreamEntityResolver implements EntityResolver { /** * Resolve an entity by looking it up in the mapped entities. - * + * * First, the public ID is looked up in the mapping, then the system ID. - * + * * @param publicId The public ID of the entity. * @param systemId The system ID of the entity. - * @return An <code>InputStream</code> containing the entity or - * <code>null</code> if no entity could be found. + * @return An <code>InputStream</code> containing the entity or + * <code>null</code> if no entity could be found. * @throws SAXException Signalling a parsing exception. - * @throws IOException Error reading the entity. + * @throws IOException Error reading the entity. */ - public InputSource resolveEntity(String publicId, String systemId) - throws SAXException, IOException { - + @Override + public InputSource resolveEntity(String publicId, String systemId) + throws SAXException, IOException { + InputSource src = null; - + if (publicId != null && mappedEntities.get(publicId) != null) { src = new InputSource((InputStream) mappedEntities.get(publicId)); } else if (systemId != null && mappedEntities.get(systemId) != null) { src = new InputSource((InputStream) mappedEntities.get(systemId)); } - + if (src != null) { src.setPublicId(publicId); src.setSystemId(systemId); } - + return src; } } diff --git a/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/StreamUtils.java b/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/StreamUtils.java index f3abe9c..41eae87 100644 --- a/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/StreamUtils.java +++ b/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/StreamUtils.java @@ -21,7 +21,6 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moaspss.util; import java.io.ByteArrayOutputStream; @@ -32,34 +31,34 @@ import java.io.PrintStream; /** * Utility methods for streams. - * + * * @author Patrick Peck * @version $Id$ */ public class StreamUtils { - + /** * Compare the contents of two <code>InputStream</code>s. - * + * * @param is1 The 1st <code>InputStream</code> to compare. * @param is2 The 2nd <code>InputStream</code> to compare. * @return boolean <code>true</code>, if both streams contain the exactly the - * same content, <code>false</code> otherwise. + * same content, <code>false</code> otherwise. * @throws IOException An error occurred reading one of the streams. */ - public static boolean compareStreams(InputStream is1, InputStream is2) - throws IOException { - - byte[] buf1 = new byte[256]; - byte[] buf2 = new byte[256]; + public static boolean compareStreams(InputStream is1, InputStream is2) + throws IOException { + + final byte[] buf1 = new byte[256]; + final byte[] buf2 = new byte[256]; int length1; int length2; - + try { while (true) { length1 = is1.read(buf1); length2 = is2.read(buf2); - + if (length1 != length2) { return false; } @@ -70,127 +69,128 @@ public class StreamUtils { return false; } } - } catch (IOException e) { + } catch (final IOException e) { throw e; } finally { // close both streams try { is1.close(); is2.close(); - } catch (IOException e) { + } catch (final IOException e) { // ignore this } } } - + /** * Compare two byte arrays, up to a given maximum length. - * - * @param b1 1st byte array to compare. - * @param b2 2nd byte array to compare. + * + * @param b1 1st byte array to compare. + * @param b2 2nd byte array to compare. * @param length The maximum number of bytes to compare. * @return <code>true</code>, if the byte arrays are equal, <code>false</code> - * otherwise. + * otherwise. */ private static boolean compareBytes(byte[] b1, byte[] b2, int length) { if (b1.length != b2.length) { return false; } - + for (int i = 0; i < b1.length && i < length; i++) { if (b1[i] != b2[i]) { return false; } } - + return true; } /** * Reads a byte array from a stream. + * * @param in The <code>InputStream</code> to read. * @return The bytes contained in the given <code>InputStream</code>. * @throws IOException on any exception thrown */ public static byte[] readStream(InputStream in) throws IOException { - ByteArrayOutputStream out = new ByteArrayOutputStream(); + final ByteArrayOutputStream out = new ByteArrayOutputStream(); copyStream(in, out, null); - - /* - ByteArrayOutputStream out = new ByteArrayOutputStream(); - int b; - while ((b = in.read()) >= 0) - out.write(b); - - */ + + /* + * ByteArrayOutputStream out = new ByteArrayOutputStream(); int b; while ((b = + * in.read()) >= 0) out.write(b); + * + */ in.close(); return out.toByteArray(); } /** * Reads a <code>String</code> from a stream, using given encoding. - * @param in The <code>InputStream</code> to read. - * @param encoding The character encoding to use for converting the bytes - * of the <code>InputStream</code> into a <code>String</code>. - * @return The content of the given <code>InputStream</code> converted into - * a <code>String</code>. + * + * @param in The <code>InputStream</code> to read. + * @param encoding The character encoding to use for converting the bytes of the + * <code>InputStream</code> into a <code>String</code>. + * @return The content of the given <code>InputStream</code> converted into a + * <code>String</code>. * @throws IOException on any exception thrown */ public static String readStream(InputStream in, String encoding) throws IOException { - ByteArrayOutputStream out = new ByteArrayOutputStream(); + final ByteArrayOutputStream out = new ByteArrayOutputStream(); copyStream(in, out, null); /* - ByteArrayOutputStream out = new ByteArrayOutputStream(); - int b; - while ((b = in.read()) >= 0) - out.write(b); - */ + * ByteArrayOutputStream out = new ByteArrayOutputStream(); int b; while ((b = + * in.read()) >= 0) out.write(b); + */ in.close(); return out.toString(encoding); } - + /** - * Reads all data (until EOF is reached) from the given source to the + * Reads all data (until EOF is reached) from the given source to the * destination stream. If the destination stream is null, all data is dropped. - * It uses the given buffer to read data and forward it. If the buffer is - * null, this method allocates a buffer. + * It uses the given buffer to read data and forward it. If the buffer is null, + * this method allocates a buffer. * - * @param source The stream providing the data. - * @param destination The stream that takes the data. If this is null, all - * data from source will be read and discarded. - * @param buffer The buffer to use for forwarding. If it is null, the method - * allocates a buffer. - * @exception IOException If reading from the source or writing to the + * @param source The stream providing the data. + * @param destination The stream that takes the data. If this is null, all data + * from source will be read and discarded. + * @param buffer The buffer to use for forwarding. If it is null, the + * method allocates a buffer. + * @exception IOException If reading from the source or writing to the * destination fails. */ - private static void copyStream(InputStream source, OutputStream destination, byte[] buffer) throws IOException { + private static void copyStream(InputStream source, OutputStream destination, byte[] buffer) + throws IOException { if (source == null) { throw new NullPointerException("Argument \"source\" must not be null."); } if (buffer == null) { buffer = new byte[8192]; } - + if (destination != null) { int bytesRead; while ((bytesRead = source.read(buffer)) >= 0) { destination.write(buffer, 0, bytesRead); } } else { - while (source.read(buffer) >= 0); - } + while (source.read(buffer) >= 0) { + ; + } + } } - + /** * Gets the stack trace of the <code>Throwable</code> passed in as a string. + * * @param t The <code>Throwable</code>. * @return a String representing the stack trace of the <code>Throwable</code>. */ - public static String getStackTraceAsString(Throwable t) - { - ByteArrayOutputStream stackTraceBIS = new ByteArrayOutputStream(); + public static String getStackTraceAsString(Throwable t) { + final ByteArrayOutputStream stackTraceBIS = new ByteArrayOutputStream(); t.printStackTrace(new PrintStream(stackTraceBIS)); return new String(stackTraceBIS.toByteArray()); } diff --git a/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/StringUtils.java b/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/StringUtils.java index 695be18..4c22340 100644 --- a/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/StringUtils.java +++ b/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/StringUtils.java @@ -21,59 +21,59 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moaspss.util; import java.util.StringTokenizer; /** * Utitility functions for string manipulations. - * + * * @author Harald Bratko */ public class StringUtils { /** * Removes all blanks and tabs from the given string. - * + * * @param s The string to remove all blanks and tabs from. - * @return The input string with all blanks and tabs removed from. + * @return The input string with all blanks and tabs removed from. */ public static String removeBlanks(String s) { - StringTokenizer st = new StringTokenizer(s); - StringBuffer sb = new StringBuffer(s.length()); + final StringTokenizer st = new StringTokenizer(s); + final StringBuffer sb = new StringBuffer(s.length()); while (st.hasMoreTokens()) { sb.append(st.nextToken()); } return sb.toString(); } - + /** * Removes all occurences of the specified token from the the given string. - * + * * @param s The string to remove all occurences of the specified token from. - * @return The input string with all occurences of the specified token removed from. + * @return The input string with all occurences of the specified token removed + * from. */ public static String removeToken(String s, String token) { - StringTokenizer st = new StringTokenizer(s, token); - StringBuffer sb = new StringBuffer(s.length()); + final StringTokenizer st = new StringTokenizer(s, token); + final StringBuffer sb = new StringBuffer(s.length()); while (st.hasMoreTokens()) { sb.append(st.nextToken()); } return sb.toString(); } - + /** * Removes all leading zeros from the input string. - * - * @param s The string remove the leading zeros from. - * @return The input string with the leading zeros removed from. + * + * @param s The string remove the leading zeros from. + * @return The input string with the leading zeros removed from. */ public static String deleteLeadingZeros(String s) { - StringBuffer sb = new StringBuffer(s); - int l = sb.length(); + final StringBuffer sb = new StringBuffer(s); + final int l = sb.length(); int j = 0; - for (int i=0; i<l; i++) { + for (int i = 0; i < l; i++) { if (sb.charAt(i) == '0') { j++; } else { @@ -82,97 +82,94 @@ public class StringUtils { } return sb.substring(j, l); } - + /** * Replaces each substring of string <code>s</code> that matches the given * <code>search</code> string by the given <code>replace</code> string. - * - * @param s The string where the replacement should take place. - * @param search The pattern that should be replaced. - * @param replace The string that should replace all each <code>search</code> - * string within <code>s</code>. - * @return A string where all occurrence of <code>search</code> are - * replaced with <code>replace</code>. + * + * @param s The string where the replacement should take place. + * @param search The pattern that should be replaced. + * @param replace The string that should replace all each <code>search</code> + * string within <code>s</code>. + * @return A string where all occurrence of <code>search</code> are replaced + * with <code>replace</code>. */ - public static String replaceAll (String s, String search, String replace) - { - StringBuffer sb = new StringBuffer(); - int i = 0, j = 0; - int len = search.length(); - while (j > -1) - { - j = s.indexOf(search, i); + public static String replaceAll(String s, String search, String replace) { + final StringBuffer sb = new StringBuffer(); + int i = 0, j = 0; + final int len = search.length(); + while (j > -1) { + j = s.indexOf(search, i); + + if (j > -1) { + sb.append(s.substring(i, j)); + sb.append(replace); + i = j + len; + } + } - if (j > -1) - { - sb.append(s.substring(i,j)); - sb.append(replace); - i = j + len; - } - } - - sb.append(s.substring(i, s.length())); + sb.append(s.substring(i, s.length())); - return sb.toString(); + return sb.toString(); } - + /** - * Changes the SecurityLayer version in the given string. - * This method usually takes as input an XML structure represented in a string - * format and changes the SecurityLayer namespaces prefixes and URIs from - * one SecurityLayer version to another. - * e.g.: code>sl10</code> to <code>sl</code> and - * <code>http://www.buergerkarte.at/namespaces/securitylayer/20020225#</code> - * to - * <code>http://www.buergerkarte.at/namespaces/securitylayer/1.2#</code> - * - * @param s The string (usally an XML structure) where the - * SecurityLayer version should be changed. - * @param slPrefixOld The SecurityLayer namespace prefix that should be - * replaced by the new one. - * @param slPrefixNew The new SecurityLayer namespace prefix that should - * replace the old one. - * @param slNSUriOld The SecurityLayer namespace URI that should be - * replaced by the new one. - * @param slNSUriNew The new SecurityLayer namespace URI that should - * replace the old one. - * @return A string where the SecurityLayer namespace prefixes - * and URIs are replaced by new ones. + * Changes the SecurityLayer version in the given string. This method usually + * takes as input an XML structure represented in a string format and changes + * the SecurityLayer namespaces prefixes and URIs from one SecurityLayer version + * to another. e.g.: code>sl10</code> to <code>sl</code> and + * <code>http://www.buergerkarte.at/namespaces/securitylayer/20020225#</code> to + * <code>http://www.buergerkarte.at/namespaces/securitylayer/1.2#</code> + * + * @param s The string (usally an XML structure) where the + * SecurityLayer version should be changed. + * @param slPrefixOld The SecurityLayer namespace prefix that should be replaced + * by the new one. + * @param slPrefixNew The new SecurityLayer namespace prefix that should replace + * the old one. + * @param slNSUriOld The SecurityLayer namespace URI that should be replaced by + * the new one. + * @param slNSUriNew The new SecurityLayer namespace URI that should replace + * the old one. + * @return A string where the SecurityLayer namespace prefixes and URIs are + * replaced by new ones. */ - public static String changeSLVersion(String s, String slPrefixOld, String slPrefixNew, String slNSUriOld, String slNSUriNew) { + public static String changeSLVersion(String s, String slPrefixOld, String slPrefixNew, String slNSUriOld, + String slNSUriNew) { String retString = replaceAll(s, slPrefixOld, slPrefixNew); retString = replaceAll(retString, slNSUriOld, slNSUriNew); - return retString ; + return retString; } - + /** * Removes the XML declaration from an XML expression. - * + * * @param xmlString XML expression as String - * + * * @return XML expression, XML declaration removed */ public static String removeXMLDeclaration(String xmlString) { - if (xmlString!=null && xmlString.startsWith("<?xml")) { - int firstElement = xmlString.indexOf("<", 1); + if (xmlString != null && xmlString.startsWith("<?xml")) { + final int firstElement = xmlString.indexOf("<", 1); return xmlString.substring(firstElement); } else { return xmlString; } } - + /** * Checks if String is empty + * * @param s String to be checked if empty * @return True if String is empty, false otherwise */ public static boolean isEmpty(String s) { - if (s == null || s.length() == 0) - return true; - else - return false; - + if (s == null || s.length() == 0) { + return true; + } else { + return false; + } + } - - + } diff --git a/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/URLDecoder.java b/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/URLDecoder.java index af71e2d..cfebbb2 100644 --- a/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/URLDecoder.java +++ b/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/URLDecoder.java @@ -21,7 +21,6 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moaspss.util; import java.io.ByteArrayOutputStream; @@ -30,55 +29,60 @@ import java.io.StringReader; import java.io.UnsupportedEncodingException; /** - * Decodes an URL encoded String using a specified character encoding. - * Provides a function missing in JDK 1.3. + * Decodes an URL encoded String using a specified character encoding. Provides + * a function missing in JDK 1.3. + * * @author Paul Ivancsics * @version $Id$ */ public class URLDecoder { /** - * Decodes an <code>application/x-www-form-urlencoded</code> string using a specific encoding scheme. - * @param s the string to decode + * Decodes an <code>application/x-www-form-urlencoded</code> string using a + * specific encoding scheme. + * + * @param s the string to decode * @param encoding name of character encoding * @return the newly decoded string * @throws UnsupportedEncodingException if the encoding is not supported */ public static String decode(String s, String encoding) throws UnsupportedEncodingException { - StringReader in = new StringReader(s); - ByteArrayOutputStream bout = new ByteArrayOutputStream(); - for (int b = read(in); b >= 0; b = read(in)) + final StringReader in = new StringReader(s); + final ByteArrayOutputStream bout = new ByteArrayOutputStream(); + for (int b = read(in); b >= 0; b = read(in)) { bout.write(b); + } return bout.toString(encoding); } + /** * Decodes the next byte from the string reader. + * * @param in string reader - * @return the next byte decoded; - * -1 upon end of string, on erroneous data, and on any exception caught + * @return the next byte decoded; -1 upon end of string, on erroneous data, and + * on any exception caught * @todo syntax check on string */ private static int read(StringReader in) { - try { - int b = in.read(); - if (b == '+') + try { + final int b = in.read(); + if (b == '+') { return ' '; + } if (b == '%') { - char[] hex = new char[2]; + final char[] hex = new char[2]; if (in.read(hex, 0, 2) >= 0) { - String hexString = new String(hex); + final String hexString = new String(hex); return Integer.valueOf(hexString, 16).intValue(); - } - else + } else { return -1; + } } return b; - } - catch (IOException ex) { - return -1; - } - catch (NumberFormatException ex) { - return -1; + } catch (final IOException ex) { + return -1; + } catch (final NumberFormatException ex) { + return -1; } } } diff --git a/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/URLEncoder.java b/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/URLEncoder.java index 2aa7e22..5eaece3 100644 --- a/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/URLEncoder.java +++ b/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/URLEncoder.java @@ -21,7 +21,6 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moaspss.util; import java.io.ByteArrayInputStream; @@ -29,60 +28,68 @@ import java.io.StringWriter; import java.io.UnsupportedEncodingException; /** - * Translates a string into mime format "x-www-form-urlencoded". - * Provides a function missing in JDK 1.3. + * Translates a string into mime format "x-www-form-urlencoded". Provides a + * function missing in JDK 1.3. + * * @author Paul Ivancsics * @version $Id$ */ public class URLEncoder { - + /** * Translates a string into x-www-form-urlencoded format. - * @param s the string to be translated + * + * @param s the string to be translated * @param encoding the encoding to use * @return the translated string - * @throws UnsupportedEncodingException when the desired encoding is not supported + * @throws UnsupportedEncodingException when the desired encoding is not + * supported */ public static String encode(String s, String encoding) throws UnsupportedEncodingException { // if (MiscUtil.isEmpty(s)) // return null; - byte[] barr = s.getBytes(encoding); - ByteArrayInputStream bin = new ByteArrayInputStream(barr); - StringWriter out = new StringWriter(); - for (int b = bin.read(); b >= 0; b = bin.read()) + final byte[] barr = s.getBytes(encoding); + final ByteArrayInputStream bin = new ByteArrayInputStream(barr); + final StringWriter out = new StringWriter(); + for (int b = bin.read(); b >= 0; b = bin.read()) { encode(b, out); + } return out.toString(); } - + /** * Encode a character. - * @param ch The character to encode. + * + * @param ch The character to encode. * @param out The <code>StringWriter</code> containing the result. */ private static void encode(int ch, StringWriter out) { - if ((ch >= 'a' && ch <= 'z') - || (ch >= 'A' && ch <= 'Z') - || (ch >= '0' && ch <= '9') - || ch == '.' || ch == '-' || ch == '*' || ch == '_') + if (ch >= 'a' && ch <= 'z' + || ch >= 'A' && ch <= 'Z' + || ch >= '0' && ch <= '9' + || ch == '.' || ch == '-' || ch == '*' || ch == '_') { out.write(ch); - else if (ch == ' ') + } else if (ch == ' ') { out.write('+'); - else + } else { encodeHex(ch, out); + } } - + /** - * Encode a character as an escaped hex value. - * @param ch The character to encode. + * Encode a character as an escaped hex value. + * + * @param ch The character to encode. * @param out The <code>StringWriter</code> containing the result. */ private static void encodeHex(int ch, StringWriter out) { out.write('%'); - String hex = Integer.toHexString(ch).toUpperCase(); - if (hex.length() < 2) + final String hex = Integer.toHexString(ch).toUpperCase(); + if (hex.length() < 2) { out.write('0'); - else + } else { out.write(hex.charAt(hex.length() - 2)); + } out.write(hex.charAt(hex.length() - 1)); } diff --git a/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/XPathException.java b/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/XPathException.java index cbf3e4e..9a60bd2 100644 --- a/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/XPathException.java +++ b/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/XPathException.java @@ -21,7 +21,6 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moaspss.util; import java.io.PrintStream; @@ -29,33 +28,33 @@ import java.io.PrintWriter; /** * An exception occurred evaluating an XPath. - * + * * @author Patrick Peck * @version $Id$ */ public class XPathException extends RuntimeException { /** - * - */ - private static final long serialVersionUID = 1736311265333034392L; -/** The wrapped exception. */ - private Throwable wrapped; - + * + */ + private static final long serialVersionUID = 1736311265333034392L; + /** The wrapped exception. */ + private final Throwable wrapped; + /** * Create a <code>XPathException</code>. - * + * * @param message The exception message. * @param wrapped The exception being the likely cause of this exception. */ public XPathException(String message, Throwable wrapped) { // TODO: remove wrapped from super cstr. again - super(message, wrapped); - this.wrapped = wrapped; + super(message, wrapped); + this.wrapped = wrapped; } - + /** * Return the wrapped exception. - * + * * @return The wrapped exception being the likely cause of this exception. */ public Throwable getWrapped() { @@ -65,6 +64,7 @@ public class XPathException extends RuntimeException { /** * @see java.lang.Throwable#printStackTrace(java.io.PrintStream) */ + @Override public void printStackTrace(PrintStream s) { super.printStackTrace(s); if (getWrapped() != null) { @@ -76,6 +76,7 @@ public class XPathException extends RuntimeException { /** * @see java.lang.Throwable#printStackTrace(java.io.PrintWriter) */ + @Override public void printStackTrace(PrintWriter s) { super.printStackTrace(s); if (getWrapped() != null) { @@ -83,5 +84,5 @@ public class XPathException extends RuntimeException { getWrapped().printStackTrace(s); } } - + } diff --git a/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/XPathUtils.java b/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/XPathUtils.java index 2604c20..3bc3bb9 100644 --- a/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/XPathUtils.java +++ b/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/XPathUtils.java @@ -21,28 +21,26 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moaspss.util; import java.util.List; import java.util.Map; -import org.w3c.dom.Attr; -import org.w3c.dom.Element; -import org.w3c.dom.Node; -import org.w3c.dom.NodeList; -import org.w3c.dom.traversal.NodeIterator; - import org.jaxen.JaxenException; import org.jaxen.NamespaceContext; import org.jaxen.Navigator; import org.jaxen.SimpleNamespaceContext; import org.jaxen.dom.DOMXPath; import org.jaxen.dom.DocumentNavigator; +import org.w3c.dom.Attr; +import org.w3c.dom.Element; +import org.w3c.dom.Node; +import org.w3c.dom.NodeList; +import org.w3c.dom.traversal.NodeIterator; /** * Utility methods to evaluate XPath expressions on DOM nodes. - * + * * @author Patrick Peck * @version $Id$ */ @@ -53,16 +51,16 @@ public class XPathUtils { * root node itself). */ public static final String ALL_NODES_XPATH = - "(.//. | .//@* | .//namespace::*)"; + "(.//. | .//@* | .//namespace::*)"; /** The <code>DocumentNavigator</code> to use for navigating the document. */ private static Navigator documentNavigator = - DocumentNavigator.getInstance(); + DocumentNavigator.getInstance(); /** The default namespace prefix to namespace URI mappings. */ private static NamespaceContext NS_CONTEXT; static { - SimpleNamespaceContext ctx = new SimpleNamespaceContext(); + final SimpleNamespaceContext ctx = new SimpleNamespaceContext(); ctx.addNamespace(Constants.MOA_PREFIX, Constants.MOA_NS_URI); ctx.addNamespace(Constants.MOA_CONFIG_PREFIX, Constants.MOA_CONFIG_NS_URI); ctx.addNamespace(Constants.MOA_ID_CONFIG_PREFIX, Constants.MOA_ID_CONFIG_NS_URI); @@ -95,18 +93,17 @@ public class XPathUtils { /** * Return a <code>NodeIterator</code> over the nodes matching the XPath * expression. - * + * * All namespace URIs and prefixes declared in the <code>Constants</code> * interface are used for resolving namespaces. - * - * @param contextNode The root node from which to evaluate the XPath - * expression. - * @param exp The XPath expression to evaluate. + * + * @param contextNode The root node from which to evaluate the XPath expression. + * @param exp The XPath expression to evaluate. * @return An iterator over the resulting nodes. * @throws XPathException An error occurred evaluating the XPath expression. */ public static NodeIterator selectNodeIterator(Node contextNode, String exp) - throws XPathException { + throws XPathException { return selectNodeIterator(contextNode, NS_CONTEXT, exp); } @@ -114,28 +111,28 @@ public class XPathUtils { /** * Return a <code>NodeIterator</code> over the nodes matching the XPath * expression. - * - * @param contextNode The root node from which to evaluate the XPath - * expression. - * @param namespaceElement An element from which to build the - * namespace mapping for evaluating the XPath expression - * @param exp The XPath expression to evaluate. + * + * @param contextNode The root node from which to evaluate the XPath + * expression. + * @param namespaceElement An element from which to build the namespace mapping + * for evaluating the XPath expression + * @param exp The XPath expression to evaluate. * @return An iterator over the resulting nodes. * @throws XPathException An error occurred evaluating the XPath expression. */ public static NodeIterator selectNodeIterator( - Node contextNode, - Element namespaceElement, - String exp) - throws XPathException { + Node contextNode, + Element namespaceElement, + String exp) + throws XPathException { try { - SimpleNamespaceContext ctx = new SimpleNamespaceContext(); + final SimpleNamespaceContext ctx = new SimpleNamespaceContext(); ctx.addElementNamespaces(documentNavigator, namespaceElement); return selectNodeIterator(contextNode, ctx, exp); - } catch (JaxenException e) { - MessageProvider msg = MessageProvider.getInstance(); - String message = msg.getMessage("xpath.00", new Object[] { exp }); + } catch (final JaxenException e) { + final MessageProvider msg = MessageProvider.getInstance(); + final String message = msg.getMessage("xpath.00", new Object[] { exp }); throw new XPathException(message, e); } } @@ -143,23 +140,23 @@ public class XPathUtils { /** * Return a <code>NodeIterator</code> over the nodes matching the XPath * expression. - * - * @param contextNode The root node from which to evaluate the XPath - * expression. + * + * @param contextNode The root node from which to evaluate the XPath + * expression. * @param namespaceMapping A namespace prefix to namespace URI mapping - * (<code>String</code> to <code>String</code>) for evaluating the XPath - * expression. - * @param exp The XPath expression to evaluate. + * (<code>String</code> to <code>String</code>) for + * evaluating the XPath expression. + * @param exp The XPath expression to evaluate. * @return An iterator over the resulting nodes. * @throws XPathException An error occurred evaluating the XPath expression. */ public static NodeIterator selectNodeIterator( - Node contextNode, - Map namespaceMapping, - String exp) - throws XPathException { + Node contextNode, + Map namespaceMapping, + String exp) + throws XPathException { - SimpleNamespaceContext ctx = new SimpleNamespaceContext(namespaceMapping); + final SimpleNamespaceContext ctx = new SimpleNamespaceContext(namespaceMapping); return selectNodeIterator(contextNode, ctx, exp); } @@ -167,31 +164,31 @@ public class XPathUtils { /** * Return a <code>NodeIterator</code> over the nodes matching the XPath * expression. - * - * @param contextNode The root node from which to evaluate the XPath - * expression. - * @param nsContext The <code>NamespaceContext</code> for resolving namespace - * prefixes to namespace URIs for evaluating the XPath expression. - * @param exp The XPath expression to evaluate. + * + * @param contextNode The root node from which to evaluate the XPath expression. + * @param nsContext The <code>NamespaceContext</code> for resolving namespace + * prefixes to namespace URIs for evaluating the XPath + * expression. + * @param exp The XPath expression to evaluate. * @return An iterator over the resulting nodes. * @throws XPathException An error occurred evaluating the XPath expression. */ private static NodeIterator selectNodeIterator( - Node contextNode, - NamespaceContext nsContext, - String exp) - throws XPathException { + Node contextNode, + NamespaceContext nsContext, + String exp) + throws XPathException { try { - DOMXPath xpath = new DOMXPath(exp); + final DOMXPath xpath = new DOMXPath(exp); List nodes; xpath.setNamespaceContext(nsContext); nodes = xpath.selectNodes(contextNode); return new NodeIteratorAdapter(nodes.listIterator()); - } catch (JaxenException e) { - MessageProvider msg = MessageProvider.getInstance(); - String message = msg.getMessage("xpath.00", new Object[] { exp }); + } catch (final JaxenException e) { + final MessageProvider msg = MessageProvider.getInstance(); + final String message = msg.getMessage("xpath.00", new Object[] { exp }); throw new XPathException(message, e); } } @@ -199,18 +196,17 @@ public class XPathUtils { /** * Return a <code>NodeList</code> of all the nodes matching the XPath * expression. - * + * * All namespace URIs and prefixes declared in the <code>Constants</code> * interface are used for resolving namespaces. - * - * @param contextNode The root node from which to evaluate the XPath - * expression. - * @param exp The XPath expression to evaluate. + * + * @param contextNode The root node from which to evaluate the XPath expression. + * @param exp The XPath expression to evaluate. * @return A <code>NodeList</code> containing the matching nodes. * @throws XPathException An error occurred evaluating the XPath expression. */ public static NodeList selectNodeList(Node contextNode, String exp) - throws XPathException { + throws XPathException { return selectNodeList(contextNode, NS_CONTEXT, exp); } @@ -218,29 +214,29 @@ public class XPathUtils { /** * Return a <code>NodeList</code> of all the nodes matching the XPath * expression. - * - * @param contextNode The root node from which to evaluate the XPath - * expression. - * @param namespaceElement An element from which to build the - * namespace mapping for evaluating the XPath expression - * @param exp The XPath expression to evaluate. + * + * @param contextNode The root node from which to evaluate the XPath + * expression. + * @param namespaceElement An element from which to build the namespace mapping + * for evaluating the XPath expression + * @param exp The XPath expression to evaluate. * @return A <code>NodeList</code> containing the matching nodes. * @throws XPathException An error occurred evaluating the XPath expression. */ public static NodeList selectNodeList( - Node contextNode, - Element namespaceElement, - String exp) - throws XPathException { + Node contextNode, + Element namespaceElement, + String exp) + throws XPathException { try { - SimpleNamespaceContext ctx = new SimpleNamespaceContext(); + final SimpleNamespaceContext ctx = new SimpleNamespaceContext(); ctx.addElementNamespaces(documentNavigator, namespaceElement); return selectNodeList(contextNode, ctx, exp); - } catch (JaxenException e) { - MessageProvider msg = MessageProvider.getInstance(); - String message = msg.getMessage("xpath.00", new Object[] { exp }); + } catch (final JaxenException e) { + final MessageProvider msg = MessageProvider.getInstance(); + final String message = msg.getMessage("xpath.00", new Object[] { exp }); throw new XPathException(message, e); } } @@ -248,23 +244,23 @@ public class XPathUtils { /** * Return a <code>NodeList</code> of all the nodes matching the XPath * expression. - * - * @param contextNode The root node from which to evaluate the XPath - * expression. + * + * @param contextNode The root node from which to evaluate the XPath + * expression. * @param namespaceMapping A namespace prefix to namespace URI mapping - * (<code>String</code> to <code>String</code>) for evaluating the XPath - * expression. - * @param exp The XPath expression to evaluate. + * (<code>String</code> to <code>String</code>) for + * evaluating the XPath expression. + * @param exp The XPath expression to evaluate. * @return A <code>NodeList</code> containing the matching nodes. * @throws XPathException An error occurred evaluating the XPath expression. */ public static NodeList selectNodeList( - Node contextNode, - Map namespaceMapping, - String exp) - throws XPathException { + Node contextNode, + Map namespaceMapping, + String exp) + throws XPathException { - SimpleNamespaceContext ctx = new SimpleNamespaceContext(namespaceMapping); + final SimpleNamespaceContext ctx = new SimpleNamespaceContext(namespaceMapping); return selectNodeList(contextNode, ctx, exp); } @@ -272,133 +268,132 @@ public class XPathUtils { /** * Return a <code>NodeList</code> of all the nodes matching the XPath * expression. - * - * @param contextNode The root node from which to evaluate the XPath - * expression. - * @param nsContext The <code>NamespaceContext</code> for resolving namespace - * prefixes to namespace URIs for evaluating the XPath expression. - * @param exp The XPath expression to evaluate. + * + * @param contextNode The root node from which to evaluate the XPath expression. + * @param nsContext The <code>NamespaceContext</code> for resolving namespace + * prefixes to namespace URIs for evaluating the XPath + * expression. + * @param exp The XPath expression to evaluate. * @return A <code>NodeList</code> containing the matching nodes. * @throws XPathException An error occurred evaluating the XPath expression. */ private static NodeList selectNodeList( - Node contextNode, - NamespaceContext nsContext, - String exp) - throws XPathException { + Node contextNode, + NamespaceContext nsContext, + String exp) + throws XPathException { try { - DOMXPath xpath = new DOMXPath(exp); + final DOMXPath xpath = new DOMXPath(exp); List nodes; xpath.setNamespaceContext(nsContext); nodes = xpath.selectNodes(contextNode); return new NodeListAdapter(nodes); - } catch (JaxenException e) { - MessageProvider msg = MessageProvider.getInstance(); - String message = msg.getMessage("xpath.00", new Object[] { exp }); + } catch (final JaxenException e) { + final MessageProvider msg = MessageProvider.getInstance(); + final String message = msg.getMessage("xpath.00", new Object[] { exp }); throw new XPathException(message, e); } } /** * Select the first node matching an XPath expression. - * + * * All namespace URIs and prefixes declared in the <code>Constants</code> * interface are used for resolving namespaces. - * - * @param contextNode The root node from which to evaluate the XPath - * expression. - * @param exp The XPath expression to evaluate. + * + * @param contextNode The root node from which to evaluate the XPath expression. + * @param exp The XPath expression to evaluate. * @return Node The first node matching the XPath expression, or - * <code>null</code>, if no node matched. + * <code>null</code>, if no node matched. * @throws XPathException An error occurred evaluating the XPath expression. */ public static Node selectSingleNode(Node contextNode, String exp) - throws XPathException { + throws XPathException { return selectSingleNode(contextNode, NS_CONTEXT, exp); } /** * Select the first node matching an XPath expression. - * - * @param contextNode The root node from which to evaluate the XPath - * expression. - * @param namespaceElement An element from which to build the - * namespace mapping for evaluating the XPath expression - * @param exp The XPath expression to evaluate. + * + * @param contextNode The root node from which to evaluate the XPath + * expression. + * @param namespaceElement An element from which to build the namespace mapping + * for evaluating the XPath expression + * @param exp The XPath expression to evaluate. * @return Node The first node matching the XPath expression, or - * <code>null</code>, if no node matched. + * <code>null</code>, if no node matched. * @throws XPathException An error occurred evaluating the XPath expression. */ public static Node selectSingleNode( - Node contextNode, - Element namespaceElement, - String exp) - throws XPathException { + Node contextNode, + Element namespaceElement, + String exp) + throws XPathException { try { - SimpleNamespaceContext ctx = new SimpleNamespaceContext(); + final SimpleNamespaceContext ctx = new SimpleNamespaceContext(); ctx.addElementNamespaces(documentNavigator, namespaceElement); return selectSingleNode(contextNode, ctx, exp); - } catch (JaxenException e) { - MessageProvider msg = MessageProvider.getInstance(); - String message = msg.getMessage("xpath.00", new Object[] { exp }); + } catch (final JaxenException e) { + final MessageProvider msg = MessageProvider.getInstance(); + final String message = msg.getMessage("xpath.00", new Object[] { exp }); throw new XPathException(message, e); } } /** * Select the first node matching an XPath expression. - * - * @param contextNode The root node from which to evaluate the XPath - * expression. + * + * @param contextNode The root node from which to evaluate the XPath + * expression. * @param namespaceMapping A namespace prefix to namespace URI mapping - * (<code>String</code> to <code>String</code>) for evaluating the XPath - * expression. - * @param exp The XPath expression to evaluate. + * (<code>String</code> to <code>String</code>) for + * evaluating the XPath expression. + * @param exp The XPath expression to evaluate. * @return Node The first node matching the XPath expression, or - * <code>null</code>, if no node matched. + * <code>null</code>, if no node matched. * @throws XPathException An error occurred evaluating the XPath expression. */ public static Node selectSingleNode( - Node contextNode, - Map namespaceMapping, - String exp) - throws XPathException { + Node contextNode, + Map namespaceMapping, + String exp) + throws XPathException { - SimpleNamespaceContext ctx = new SimpleNamespaceContext(namespaceMapping); + final SimpleNamespaceContext ctx = new SimpleNamespaceContext(namespaceMapping); return selectSingleNode(contextNode, ctx, exp); } /** * Select the first node matching an XPath expression. - * - * @param contextNode The root node from which to evaluate the XPath - * expression. - * @param nsContext The <code>NamespaceContext</code> for resolving namespace - * prefixes to namespace URIs for evaluating the XPath expression. - * @param exp The XPath expression to evaluate. + * + * @param contextNode The root node from which to evaluate the XPath expression. + * @param nsContext The <code>NamespaceContext</code> for resolving namespace + * prefixes to namespace URIs for evaluating the XPath + * expression. + * @param exp The XPath expression to evaluate. * @return Node The first node matching the XPath expression, or - * <code>null</code>, if no node matched. + * <code>null</code>, if no node matched. * @throws XPathException An error occurred evaluating the XPath expression. */ public static Node selectSingleNode( - Node contextNode, - NamespaceContext nsContext, - String exp) - throws XPathException { + Node contextNode, + NamespaceContext nsContext, + String exp) + throws XPathException { try { - DOMXPath xpath = new DOMXPath(exp); + final DOMXPath xpath = new DOMXPath(exp); xpath.setNamespaceContext(nsContext); return (Node) xpath.selectSingleNode(contextNode); - } catch (JaxenException e) { - MessageProvider msg = MessageProvider.getInstance(); - String message = msg.getMessage("xpath.00", new Object[] { exp }); + } catch (final JaxenException e) { + final MessageProvider msg = MessageProvider.getInstance(); + final String message = msg.getMessage("xpath.00", new Object[] { exp }); throw new XPathException(message, e); } } @@ -406,140 +401,137 @@ public class XPathUtils { /** * Return the value of a DOM element whose location is given by an XPath * expression. - * - * @param root The root element from which to evaluate the XPath. - * @param xpath The XPath expression pointing to the element whose value - * to return. - * @param def The default value to return, if no element can be found using - * the given <code>xpath</code>. - * @return The element value, if it can be located using the - * <code>xpath</code>. Otherwise, <code>def</code> is returned. + * + * @param root The root element from which to evaluate the XPath. + * @param xpath The XPath expression pointing to the element whose value to + * return. + * @param def The default value to return, if no element can be found using + * the given <code>xpath</code>. + * @return The element value, if it can be located using the <code>xpath</code>. + * Otherwise, <code>def</code> is returned. */ public static String getElementValue( - Element root, - String xpath, - String def) { + Element root, + String xpath, + String def) { - Element elem = (Element) XPathUtils.selectSingleNode(root, xpath); + final Element elem = (Element) XPathUtils.selectSingleNode(root, xpath); return elem != null ? DOMUtils.getText(elem) : def; } /** * Return the value of a DOM attribute whose location is given by an XPath * expression. - * - * @param root The root element from which to evaluate the XPath. + * + * @param root The root element from which to evaluate the XPath. * @param xpath The XPath expression pointing to the attribute whose value to - * return. - * @param def The default value to return, if no attribute can be found using - * the given <code>xpath</code>. - * @return The element value, if it can be located using the - * <code>xpath</code>. Otherwise, <code>def</code> is returned. + * return. + * @param def The default value to return, if no attribute can be found using + * the given <code>xpath</code>. + * @return The element value, if it can be located using the <code>xpath</code>. + * Otherwise, <code>def</code> is returned. */ public static String getAttributeValue( - Element root, - String xpath, - String def) { + Element root, + String xpath, + String def) { - Attr attr = (Attr) XPathUtils.selectSingleNode(root, xpath); + final Attr attr = (Attr) XPathUtils.selectSingleNode(root, xpath); return attr != null ? attr.getValue() : def; } - + /** - * Returns the namespace prefix used within <code>XPathUtils</code> for referring to - * the namespace of the specified (Security Layer command) element. + * Returns the namespace prefix used within <code>XPathUtils</code> for + * referring to the namespace of the specified (Security Layer command) element. + * + * This namespace prefix can be used in various XPath expression evaluation + * methods within <code> XPathUtils</code> without explicitely binding it to the + * particular namespace. + * + * @param contextElement The (Security Layer command) element. * - * This namespace prefix can be used in various XPath expression evaluation methods - * within <code> XPathUtils</code> without explicitely binding it to the particular - * namespace. - * - * @param contextElement The (Security Layer command) element. - * - * @return the namespace prefix used within <code>XPathUtils</code> for referring to - * the namespace of the specified (Security Layer command) element. - * - * throws XpathException If the specified element has a namespace other than the ones - * known by this implementation as valid Security Layer namespaces (cf. - * @link Constants#SL10_NS_URI, @link Constants#SL11_NS_URI, @link Constants#SL12_NS_URI). + * @return the namespace prefix used within <code>XPathUtils</code> for + * referring to the namespace of the specified (Security Layer command) + * element. + * + * throws XpathException If the specified element has a namespace other + * than the ones known by this implementation as valid Security Layer + * namespaces (cf. + * @link Constants#SL10_NS_URI, @link Constants#SL11_NS_URI, @link + * Constants#SL12_NS_URI). */ - public static String getSlPrefix (Element contextElement) throws XPathException - { - String sLNamespace = contextElement.getNamespaceURI(); + public static String getSlPrefix(Element contextElement) throws XPathException { + final String sLNamespace = contextElement.getNamespaceURI(); String sLPrefix = null; - if (sLNamespace.equals(Constants.SL10_NS_URI)) - { + if (sLNamespace.equals(Constants.SL10_NS_URI)) { sLPrefix = Constants.SL10_PREFIX; - } - else if (sLNamespace.equals(Constants.SL12_NS_URI)) - { + } else if (sLNamespace.equals(Constants.SL12_NS_URI)) { sLPrefix = Constants.SL12_PREFIX; - } - else if (sLNamespace.equals(Constants.SL11_NS_URI)) - { + } else if (sLNamespace.equals(Constants.SL11_NS_URI)) { sLPrefix = Constants.SL11_PREFIX; - } - else - { - MessageProvider msg = MessageProvider.getInstance(); - String message = msg.getMessage("xpath.00", new Object[] { "Ung�ltiger Security Layer Namespace: \"" + sLNamespace + "\"."}); + } else { + final MessageProvider msg = MessageProvider.getInstance(); + final String message = msg.getMessage("xpath.00", new Object[] { + "Ung�ltiger Security Layer Namespace: \"" + sLNamespace + "\"." }); throw new XPathException(message, null); } - + return sLPrefix; } - - + /** - * Return the SecurityLayer namespace prefix of the context element. - * If the context element is not the element that lies within the - * SecurityLayer namespace. The Securitylayer namespace is derived from - * the <code>xmlns:sl10</code>, <code>sl11</code> or <code>sl</code> - * attribute of the context element. - * + * Return the SecurityLayer namespace prefix of the context element. If the + * context element is not the element that lies within the SecurityLayer + * namespace. The Securitylayer namespace is derived from the + * <code>xmlns:sl10</code>, <code>sl11</code> or <code>sl</code> attribute of + * the context element. + * * The returned prefix is needed for evaluating XPATH expressions. + * + * @param contextElement The element to get a prefix for the Securitylayer + * namespace, that is used within the corresponding + * document. * - * @param contextElement The element to get a prefix for the Securitylayer namespace, - * that is used within the corresponding document. - * - * @return The string <code>sl10</code>, <code>sl11</code> or <code>sl</code>, - * depending on the SecurityLayer namespace of the contextElement. - * - * throws XPathException If no (vlalid) SecurityLayer namespace prefix or namespace - * is defined. + * @return The string <code>sl10</code>, <code>sl11</code> or <code>sl</code>, + * depending on the SecurityLayer namespace of the contextElement. + * + * throws XPathException If no (vlalid) SecurityLayer namespace prefix + * or namespace is defined. */ - public static String getSlPrefixFromNoRoot (Element contextElement) throws XPathException { - + public static String getSlPrefixFromNoRoot(Element contextElement) throws XPathException { + String slPrefix = checkSLnsDeclaration(contextElement, Constants.SL10_PREFIX, Constants.SL10_NS_URI); if (slPrefix == null) { slPrefix = checkSLnsDeclaration(contextElement, Constants.SL11_PREFIX, Constants.SL11_NS_URI); } if (slPrefix == null) { slPrefix = checkSLnsDeclaration(contextElement, Constants.SL12_PREFIX, Constants.SL12_NS_URI); - } - + } + return slPrefix; - + } - + /** - * Checks if the context element has an attribute <code>xmlns:slPrefix</code> and - * if the prefix of that attribute corresponds with a valid SecurityLayer namespace. + * Checks if the context element has an attribute <code>xmlns:slPrefix</code> + * and if the prefix of that attribute corresponds with a valid SecurityLayer + * namespace. + * + * @param contextElement The element to be checked. + * @param slPrefix The prefix which should be checked. Must be a valid + * SecurityLayer namespace prefix. + * @param slNameSpace The SecurityLayer namespace that corresponds to the + * specified prefix. * - * @param contextElement The element to be checked. - * @param slPrefix The prefix which should be checked. Must be a valid SecurityLayer - * namespace prefix. - * @param slNameSpace The SecurityLayer namespace that corresponds to the specified prefix. - * - * @return The valid SecurityLayer prefix or <code>null</code> if this prefix is - * not used. + * @return The valid SecurityLayer prefix or <code>null</code> if this prefix is + * not used. * @throws XPathException */ private static String checkSLnsDeclaration(Element contextElement, String slPrefix, String slNameSpace) - throws XPathException - { - String nsAtt = "xmlns:" + slPrefix; - String nameSpace = contextElement.getAttribute(nsAtt); + throws XPathException { + final String nsAtt = "xmlns:" + slPrefix; + final String nameSpace = contextElement.getAttribute(nsAtt); if (nameSpace == "") { return null; } else { @@ -547,8 +539,9 @@ public class XPathUtils { if (nameSpace.equals(slNameSpace)) { return slPrefix; } else { - MessageProvider msg = MessageProvider.getInstance(); - String message = msg.getMessage("xpath.00", new Object[] { "Ung�ltiger SecurityLayer Namespace: \"" + nameSpace + "\"."}); + final MessageProvider msg = MessageProvider.getInstance(); + final String message = msg.getMessage("xpath.00", new Object[] { + "Ung�ltiger SecurityLayer Namespace: \"" + nameSpace + "\"." }); throw new XPathException(message, null); } } diff --git a/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/ex/EgovUtilException.java b/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/ex/EgovUtilException.java index 27169b4..5960fce 100644 --- a/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/ex/EgovUtilException.java +++ b/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/ex/EgovUtilException.java @@ -1,13 +1,13 @@ /* * Copyright 2011 Federal Chancellery Austria and * Graz University of Technology - * + * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at - * + * * http://www.apache.org/licenses/LICENSE-2.0 - * + * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. @@ -18,24 +18,24 @@ package at.gv.egovernment.moaspss.util.ex; public class EgovUtilException extends Exception { - /** - * + /** + * */ private static final long serialVersionUID = 1L; - public EgovUtilException() { - } + public EgovUtilException() { + } - public EgovUtilException(String message) { - super(message); - } + public EgovUtilException(String message) { + super(message); + } - public EgovUtilException(Throwable cause) { - super(cause); - } + public EgovUtilException(Throwable cause) { + super(cause); + } - public EgovUtilException(String message, Throwable cause) { - super(message, cause); - } + public EgovUtilException(String message, Throwable cause) { + super(message, cause); + } } diff --git a/moaSig/handbook/handbook/spec/MOA-SPSS-2.0.0.xsd b/moaSig/common/src/main/resources/resources/schemas/MOA-SPSS-3.1.0.xsd index 739b124..9a2836e 100644 --- a/moaSig/handbook/handbook/spec/MOA-SPSS-2.0.0.xsd +++ b/moaSig/common/src/main/resources/resources/schemas/MOA-SPSS-3.1.0.xsd @@ -1,12 +1,10 @@ <?xml version="1.0" encoding="UTF-8"?> -<!-- - MOA SP/SS 1.5.2 Schema ---> +<!-- MOA SP/SS 2.0.0 Schema --> <xsd:schema xmlns:dsig="http://www.w3.org/2000/09/xmldsig#" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://reference.e-government.gv.at/namespace/moa/20020822#" targetNamespace="http://reference.e-government.gv.at/namespace/moa/20020822#" elementFormDefault="qualified" attributeFormDefault="unqualified" version="1.2"> <xsd:import namespace="http://www.w3.org/2000/09/xmldsig#" schemaLocation="http://www.w3.org/TR/xmldsig-core/xmldsig-core-schema.xsd"/> <xsd:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="http://www.w3.org/2001/xml.xsd"/> - <!--########## Create CMS Signature ###--> - <!--### Create CMS Signature Request ###--> + <!--########## Create CMS Signature ### --> + <!--### Create CMS Signature Request ### --> <xsd:element name="CreateCMSSignatureRequest"> <xsd:complexType> <xsd:complexContent> @@ -19,7 +17,8 @@ <xsd:element name="KeyIdentifier" type="KeyIdentifierType"/> <xsd:element name="SingleSignatureInfo" maxOccurs="unbounded"> <xsd:annotation> - <xsd:documentation>Ermöglichung der Stapelsignatur durch wiederholte Angabe dieses Elements</xsd:documentation> + <xsd:documentation>Ermöglichung der Stapelsignatur durch + wiederholte Angabe dieses Elements</xsd:documentation> </xsd:annotation> <xsd:complexType> <xsd:sequence> @@ -32,27 +31,30 @@ </xsd:element> </xsd:sequence> <xsd:attribute name="SecurityLayerConformity" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="PAdESConformity" type="xsd:boolean" use="optional" default="false"/> </xsd:complexType> </xsd:element> </xsd:sequence> </xsd:complexType> - <!--### Create CMS Signature Response ###--> + <!--### Create CMS Signature Response ### --> <xsd:element name="CreateCMSSignatureResponse" type="CreateCMSSignatureResponseType"/> <xsd:complexType name="CreateCMSSignatureResponseType"> <xsd:choice maxOccurs="unbounded"> <xsd:annotation> - <xsd:documentation>Kardinalität 1..oo erlaubt die Antwort auf eine Stapelsignatur-Anfrage</xsd:documentation> + <xsd:documentation>Kardinalität 1..oo erlaubt die Antwort auf eine + Stapelsignatur-Anfrage</xsd:documentation> </xsd:annotation> <xsd:element name="CMSSignature" type="xsd:base64Binary"> <xsd:annotation> - <xsd:documentation>Resultat, falls die Signaturerstellung erfolgreich war</xsd:documentation> + <xsd:documentation>Resultat, falls die Signaturerstellung + erfolgreich war</xsd:documentation> </xsd:annotation> </xsd:element> <xsd:element ref="ErrorResponse"/> </xsd:choice> </xsd:complexType> - <!--########## Create XML Signature ###--> - <!--### Create XML Signature Request ###--> + <!--########## Create XML Signature ### --> + <!--### Create XML Signature Request ### --> <xsd:element name="CreateXMLSignatureRequest"> <xsd:complexType> <xsd:complexContent> @@ -65,7 +67,8 @@ <xsd:element name="KeyIdentifier" type="KeyIdentifierType"/> <xsd:element name="SingleSignatureInfo" maxOccurs="unbounded"> <xsd:annotation> - <xsd:documentation>Ermöglichung der Stapelsignatur durch wiederholte Angabe dieses Elements</xsd:documentation> + <xsd:documentation>Ermöglichung der Stapelsignatur durch + wiederholte Angabe dieses Elements</xsd:documentation> </xsd:annotation> <xsd:complexType> <xsd:sequence> @@ -84,7 +87,10 @@ <xsd:element name="CreateSignatureEnvironment" type="ContentOptionalRefType"/> <xsd:choice> <xsd:annotation> - <xsd:documentation>Auswahl: Entweder explizite Angabe des Signaturorts sowie ggf. sinnvoller Supplements im Zshg. mit der Signaturumgebung, oder Verweis auf ein benanntes Profil</xsd:documentation> + <xsd:documentation>Auswahl: Entweder explizite Angabe des + Signaturorts sowie ggf. sinnvoller Supplements im Zshg. mit + der Signaturumgebung, oder Verweis auf ein benanntes Profil + </xsd:documentation> </xsd:annotation> <xsd:element ref="CreateSignatureEnvironmentProfile"/> <xsd:element name="CreateSignatureEnvironmentProfileID" type="ProfileIdentifierType"/> @@ -98,15 +104,17 @@ </xsd:element> </xsd:sequence> </xsd:complexType> - <!--### Create XML Signature Response ###--> + <!--### Create XML Signature Response ### --> <xsd:complexType name="CreateXMLSignatureResponseType"> <xsd:choice maxOccurs="unbounded"> <xsd:annotation> - <xsd:documentation>Kardinalität 1..oo erlaubt die Antwort auf eine Stapelsignatur-Anfrage</xsd:documentation> + <xsd:documentation>Kardinalität 1..oo erlaubt die Antwort auf eine + Stapelsignatur-Anfrage</xsd:documentation> </xsd:annotation> <xsd:element name="SignatureEnvironment"> <xsd:annotation> - <xsd:documentation>Resultat, falls die Signaturerstellung erfolgreich war</xsd:documentation> + <xsd:documentation>Resultat, falls die Signaturerstellung + erfolgreich war</xsd:documentation> </xsd:annotation> <xsd:complexType> <xsd:sequence> @@ -118,8 +126,43 @@ </xsd:choice> </xsd:complexType> <xsd:element name="CreateXMLSignatureResponse" type="CreateXMLSignatureResponseType"/> - <!--########## Verify CMS Signature ###--> - <!--### Verifiy CMS Signature Request ###--> + <!--########## Create PDF Signature ### --> + <!--### Create PDF Signature Request ### --> + <xsd:element name="CreatePDFSignatureRequest"> + <xsd:complexType> + <xsd:complexContent> + <xsd:extension base="CreatePDFSignatureRequestType"/> + </xsd:complexContent> + </xsd:complexType> + </xsd:element> + <xsd:complexType name="CreatePDFSignatureRequestType"> + <xsd:sequence> + <xsd:element name="KeyIdentifier" type="KeyIdentifierType"/> + <xsd:element name="SingleSignatureInfo" maxOccurs="unbounded"> + <xsd:annotation> + <xsd:documentation>Ermöglichung der Stapelsignatur durch + wiederholte Angabe dieses Elements</xsd:documentation> + </xsd:annotation> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="PDFDocument" type="xsd:base64Binary"/> + <xsd:element name="SignatureProfile" type="xsd:string" minOccurs="0" maxOccurs="1"/> + <xsd:element name="SignaturePosition" type="xsd:string" minOccurs="0" maxOccurs="1"/> + <xsd:element name="SignatureID" type="xsd:string" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + </xsd:element> + </xsd:sequence> + </xsd:complexType> + <!--### Create PDF Signature Response ### --> + <xsd:element name="CreatePDFSignatureResponse" type="CreatePDFSignatureResponseType"/> + <xsd:complexType name="CreatePDFSignatureResponseType"> + <xsd:sequence> + <xsd:element name="PDFSignature" type="PDFSignedRepsonse" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <!--########## Verify CMS Signature ### --> + <!--### Verifiy CMS Signature Request ### --> <xsd:element name="VerifyCMSSignatureRequest"> <xsd:complexType> <xsd:complexContent> @@ -132,34 +175,155 @@ <xsd:complexType name="VerifyCMSSignatureRequestType"> <xsd:sequence> <xsd:element name="DateTime" type="xsd:dateTime" minOccurs="0"/> + <xsd:element name="ExtendedValidation" type="xsd:boolean" default="false" minOccurs="0"/> <xsd:element name="CMSSignature" type="xsd:base64Binary"/> <xsd:element name="DataObject" type="CMSDataObjectOptionalMetaType" minOccurs="0"/> <xsd:element name="TrustProfileID" type="xsd:token"> <xsd:annotation> - <xsd:documentation>mit diesem Profil wird eine Menge von vertrauenswürdigen Wurzelzertifikaten spezifiziert</xsd:documentation> + <xsd:documentation>mit diesem Profil wird eine Menge von + vertrauenswürdigen Wurzelzertifikaten spezifiziert + </xsd:documentation> </xsd:annotation> </xsd:element> </xsd:sequence> </xsd:complexType> - <!--### Verify CMS Signature Response ###--> + <!--### Verify CMS Signature Response ### --> <xsd:element name="VerifyCMSSignatureResponse" type="VerifyCMSSignatureResponseType"/> <xsd:complexType name="VerifyCMSSignatureResponseType"> <xsd:sequence maxOccurs="unbounded"> <xsd:element name="SignerInfo" type="dsig:KeyInfoType"> <xsd:annotation> - <xsd:documentation>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</xsd:documentation> + <xsd:documentation>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</xsd:documentation> </xsd:annotation> </xsd:element> <xsd:element name="SignatureCheck" type="CheckResultType"/> <xsd:element name="CertificateCheck" type="CheckResultType"/> + <xsd:element name="FormCheckResult" type="FormResultType" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="ExtendedCertificateCheck" type="ExtendedCertificateCheckResultType" minOccurs="0" maxOccurs="1"/> </xsd:sequence> </xsd:complexType> - <!--########## Verify XML Signature ###--> - <!--### Verify XML Signature Request ###--> + <xsd:complexType name="VerifyASICCMSSignatureResponseType"> + <xsd:sequence maxOccurs="unbounded"> + <xsd:element name="SignerInfo" type="dsig:KeyInfoType"> + <xsd:annotation> + <xsd:documentation>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</xsd:documentation> + </xsd:annotation> + </xsd:element> + <xsd:element name="SigningTime" type="xsd:dateTime" minOccurs="0"/> + <xsd:element name="SignatureCheck" type="CheckResultType"/> + <xsd:element name="CertificateCheck" type="CheckResultType"/> + <xsd:element name="FormCheckResult" type="FormResultType" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="ExtendedCertificateCheck" type="ExtendedCertificateCheckResultType" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <!--########## Verify PDF Signature ### --> + <!--### Verifiy PDF Signature Request ### --> + <xsd:element name="VerifyPDFSignatureRequest"> + <xsd:complexType> + <xsd:complexContent> + <xsd:extension base="VerifyPDFSignatureRequestType"> + <xsd:attribute name="Signatories" type="SignatoriesType" use="optional" default="1"/> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + </xsd:element> + <xsd:complexType name="VerifyPDFSignatureRequestType"> + <xsd:sequence> + <xsd:element name="DateTime" type="xsd:dateTime" minOccurs="0"/> + <xsd:element name="ExtendedValidation" type="xsd:boolean" default="false" minOccurs="0"/> + <xsd:element name="PDFSignature" type="xsd:base64Binary"/> + <xsd:element name="TrustProfileID" type="xsd:token"> + <xsd:annotation> + <xsd:documentation>mit diesem Profil wird eine Menge von + vertrauenswürdigen Wurzelzertifikaten spezifiziert + </xsd:documentation> + </xsd:annotation> + </xsd:element> + </xsd:sequence> + </xsd:complexType> + <!--########## Verify PDF Signature ### --> + <!--### Verifiy ASIC Signature Request ### --> + <xsd:element name="VerifyASICSignatureRequest"> + <xsd:complexType> + <xsd:complexContent> + <xsd:extension base="VerifyASICSignatureRequestType"/> + </xsd:complexContent> + </xsd:complexType> + </xsd:element> + <xsd:complexType name="VerifyASICSignatureRequestType"> + <xsd:sequence> + <xsd:element name="DateTime" type="xsd:dateTime" minOccurs="0"/> + <xsd:element name="ExtendedValidation" type="xsd:boolean" default="false" minOccurs="0"/> + <xsd:element name="ASICSignature" type="xsd:base64Binary"/> + <xsd:element name="ASICExtension" type="xsd:string"> + <xsd:annotation> + <xsd:documentation>asics or asice</xsd:documentation> + </xsd:annotation> + </xsd:element> + <xsd:element name="TrustProfileID" type="xsd:token"> + <xsd:annotation> + <xsd:documentation>mit diesem Profil wird eine Menge von + vertrauenswürdigen Wurzelzertifikaten spezifiziert + </xsd:documentation> + </xsd:annotation> + </xsd:element> + </xsd:sequence> + </xsd:complexType> + <!--### Verify ASIC Signature Response ### --> + <xsd:element name="VerifyASICSignatureResponse" type="VerifyASICSignatureResponseType"/> + <xsd:complexType name="VerifyASICSignatureResponseType"> + <xsd:sequence> + <xsd:element name="ASiCSignatureResult" type="ASICResultType" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="ASICResultType"> + <xsd:sequence> + <xsd:element name="signedFiles" type="xsd:string" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="XMLSignatureResult" type="VerifyASICXMLSignatureResponseType" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="CMSSignatureResult" type="VerifyASICCMSSignatureResponseType" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <!--### Verify CMS Signature Response ### --> + <xsd:element name="VerifyPDFSignatureResponse" type="VerifyPDFSignatureResponseType"/> + <xsd:complexType name="VerifyPDFSignatureResponseType"> + <xsd:sequence maxOccurs="unbounded"> + <xsd:element name="SignatureResult" type="PDFSignatureResultType"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="PDFSignatureResultType"> + <xsd:sequence> + <xsd:element name="SignerInfo" type="dsig:KeyInfoType" minOccurs="0"> + <xsd:annotation> + <xsd:documentation>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</xsd:documentation> + </xsd:annotation> + </xsd:element> + <xsd:element name="SigningTime" type="xsd:dateTime" minOccurs="0"/> + <xsd:element name="SignatureCheck" type="CheckResultType"/> + <xsd:element name="CertificateCheck" type="CheckResultType"/> + <xsd:element name="FormCheckResult" type="FormResultType" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="ExtendedCertificateCheck" type="ExtendedCertificateCheckResultType" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <!--########## Verify XML Signature ### --> + <!--### Verify XML Signature Request ### --> <xsd:element name="VerifyXMLSignatureRequest" type="VerifyXMLSignatureRequestType"/> <xsd:complexType name="VerifyXMLSignatureRequestType"> <xsd:sequence> <xsd:element name="DateTime" type="xsd:dateTime" minOccurs="0"/> + <xsd:element name="ExtendedValidation" type="xsd:boolean" default="false" minOccurs="0"/> <xsd:element name="VerifySignatureInfo"> <xsd:complexType> <xsd:sequence> @@ -177,7 +341,11 @@ <xsd:sequence> <xsd:element name="ReferenceInfo" type="VerifyTransformsDataType" maxOccurs="unbounded"> <xsd:annotation> - <xsd:documentation>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.</xsd:documentation> + <xsd:documentation>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.</xsd:documentation> </xsd:annotation> </xsd:element> </xsd:sequence> @@ -187,26 +355,56 @@ <xsd:element name="ReturnHashInputData" minOccurs="0"/> <xsd:element name="TrustProfileID" type="xsd:token"> <xsd:annotation> - <xsd:documentation>mit diesem Profil wird eine Menge von vertrauenswürdigen Wurzelzertifikaten spezifiziert</xsd:documentation> + <xsd:documentation>mit diesem Profil wird eine Menge von + vertrauenswürdigen Wurzelzertifikaten spezifiziert + </xsd:documentation> </xsd:annotation> </xsd:element> </xsd:sequence> </xsd:complexType> - <!--### Verify XML Signature Response ###--> + <!--### Verify XML Signature Response ### --> <xsd:element name="VerifyXMLSignatureResponse" type="VerifyXMLSignatureResponseType"/> <xsd:complexType name="VerifyXMLSignatureResponseType"> <xsd:sequence> <xsd:element name="SignerInfo" type="dsig:KeyInfoType"> <xsd:annotation> - <xsd:documentation>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</xsd:documentation> + <xsd:documentation>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</xsd:documentation> + </xsd:annotation> + </xsd:element> + <xsd:element name="HashInputData" type="InputDataType" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="ReferenceInputData" type="InputDataType" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="SignatureCheck" type="ReferencesCheckResultType"/> + <xsd:element name="SignatureManifestCheck" type="ReferencesCheckResultType" minOccurs="0"/> + <xsd:element name="XMLDSIGManifestCheck" type="ManifestRefsCheckResultType" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="CertificateCheck" type="CheckResultType"/> + <xsd:element name="FormCheckResult" type="FormResultType" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="ExtendedCertificateCheck" type="ExtendedCertificateCheckResultType" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="VerifyASICXMLSignatureResponseType"> + <xsd:sequence> + <xsd:element name="SignerInfo" type="dsig:KeyInfoType"> + <xsd:annotation> + <xsd:documentation>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</xsd:documentation> </xsd:annotation> </xsd:element> + <xsd:element name="SigningTime" type="xsd:dateTime" minOccurs="0"/> <xsd:element name="HashInputData" type="InputDataType" minOccurs="0" maxOccurs="unbounded"/> <xsd:element name="ReferenceInputData" type="InputDataType" minOccurs="0" maxOccurs="unbounded"/> <xsd:element name="SignatureCheck" type="ReferencesCheckResultType"/> <xsd:element name="SignatureManifestCheck" type="ReferencesCheckResultType" minOccurs="0"/> <xsd:element name="XMLDSIGManifestCheck" type="ManifestRefsCheckResultType" minOccurs="0" maxOccurs="unbounded"/> <xsd:element name="CertificateCheck" type="CheckResultType"/> + <xsd:element name="FormCheckResult" type="FormResultType" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="ExtendedCertificateCheck" type="ExtendedCertificateCheckResultType" minOccurs="0" maxOccurs="1"/> </xsd:sequence> </xsd:complexType> <xsd:simpleType name="ProfileIdentifierType"> @@ -254,7 +452,9 @@ </xsd:element> <xsd:choice> <xsd:annotation> - <xsd:documentation>Auswahl: Entweder explizite Angabe EINER Transformationskette inklusive ggf. sinnvoller Supplements oder Verweis auf ein benanntes Profil</xsd:documentation> + <xsd:documentation>Auswahl: Entweder explizite Angabe EINER + Transformationskette inklusive ggf. sinnvoller Supplements oder + Verweis auf ein benanntes Profil</xsd:documentation> </xsd:annotation> <xsd:element ref="CreateTransformsInfoProfile"/> <xsd:element name="CreateTransformsInfoProfileID" type="ProfileIdentifierType"/> @@ -300,24 +500,30 @@ <xsd:element name="Content" type="ContentRequiredRefType"/> </xsd:sequence> </xsd:complexType> + <xsd:complexType name="PDFSignedRepsonse"> + <xsd:sequence> + <xsd:element name="SignatureID" type="xsd:string" minOccurs="0" maxOccurs="1"/> + <xsd:choice maxOccurs="1"> + <xsd:element name="PDFSignature" type="xsd:base64Binary"> + <xsd:annotation> + <xsd:documentation>Resultat, falls die Signaturerstellung + erfolgreich war</xsd:documentation> + </xsd:annotation> + </xsd:element> + <xsd:element ref="ErrorResponse"/> + </xsd:choice> + </xsd:sequence> + </xsd:complexType> <xsd:complexType name="CMSDataObjectOptionalMetaType"> <xsd:sequence> <xsd:element name="MetaInfo" type="MetaInfoType" minOccurs="0"/> <xsd:element name="Content" type="CMSContentBaseType"/> - <xsd:element name="ExcludedByteRange" type="ExcludedByteRangeType" minOccurs="0"/> </xsd:sequence> </xsd:complexType> <xsd:complexType name="CMSDataObjectRequiredMetaType"> <xsd:sequence> <xsd:element name="MetaInfo" type="MetaInfoType"/> <xsd:element name="Content" type="CMSContentBaseType"/> - <xsd:element name="ExcludedByteRange" type="ExcludedByteRangeType" minOccurs="0"/> - </xsd:sequence> - </xsd:complexType> - <xsd:complexType name="ExcludedByteRangeType"> - <xsd:sequence> - <xsd:element name="From" type="xsd:unsignedLong"/> - <xsd:element name="To" type="xsd:unsignedLong"/> </xsd:sequence> </xsd:complexType> <xsd:complexType name="CMSContentBaseType"> @@ -335,6 +541,24 @@ <xsd:element name="Info" type="AnyChildrenType" minOccurs="0"/> </xsd:sequence> </xsd:complexType> + <xsd:complexType name="FormResultType"> + <xsd:sequence> + <xsd:element name="Code" type="xsd:nonNegativeInteger" minOccurs="1" maxOccurs="1"/> + <xsd:element name="Name" type="xsd:string" minOccurs="1" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="IndicationResultType"> + <xsd:sequence> + <xsd:element name="Code" type="xsd:nonNegativeInteger" minOccurs="1" maxOccurs="1"/> + <xsd:element name="Name" type="xsd:string" minOccurs="1" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="ExtendedCertificateCheckResultType"> + <xsd:sequence> + <xsd:element name="Major" type="IndicationResultType" minOccurs="1" maxOccurs="1"/> + <xsd:element name="Minor" type="IndicationResultType" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> <xsd:complexType name="ReferencesCheckResultType"> <xsd:complexContent> <xsd:restriction base="CheckResultType"> @@ -376,10 +600,11 @@ </xsd:restriction> </xsd:complexContent> </xsd:complexType> - <!--########## Error Response ###--> + <!--########## Error Response ### --> <xsd:element name="ErrorResponse" type="ErrorResponseType"> <xsd:annotation> - <xsd:documentation>Resultat, falls die Signaturerstellung gescheitert ist</xsd:documentation> + <xsd:documentation>Resultat, falls die Signaturerstellung gescheitert + ist</xsd:documentation> </xsd:annotation> </xsd:element> <xsd:complexType name="ErrorResponseType"> @@ -388,7 +613,7 @@ <xsd:element name="Info" type="xsd:string"/> </xsd:sequence> </xsd:complexType> - <!--########## Auxiliary Types ###--> + <!--########## Auxiliary Types ### --> <xsd:simpleType name="KeyIdentifierType"> <xsd:restriction base="xsd:string"/> </xsd:simpleType> @@ -452,12 +677,17 @@ <xsd:complexType name="VerifyTransformsDataType"> <xsd:choice maxOccurs="unbounded"> <xsd:annotation> - <xsd:documentation>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.</xsd:documentation> + <xsd:documentation>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. + </xsd:documentation> </xsd:annotation> <xsd:element ref="VerifyTransformsInfoProfile"/> <xsd:element name="VerifyTransformsInfoProfileID" type="xsd:string"> <xsd:annotation> - <xsd:documentation>Profilbezeichner für einen Transformationsweg</xsd:documentation> + <xsd:documentation>Profilbezeichner für einen Transformationsweg + </xsd:documentation> </xsd:annotation> </xsd:element> </xsd:choice> @@ -515,16 +745,22 @@ <xsd:complexType name="TransformParameterType"> <xsd:choice minOccurs="0"> <xsd:annotation> - <xsd:documentation>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.</xsd:documentation> + <xsd:documentation>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.</xsd:documentation> </xsd:annotation> <xsd:element name="Base64Content" type="xsd:base64Binary"> <xsd:annotation> - <xsd:documentation>Der Transformationsparameter explizit angegeben.</xsd:documentation> + <xsd:documentation>Der Transformationsparameter explizit angegeben. + </xsd:documentation> </xsd:annotation> </xsd:element> <xsd:element name="Hash"> <xsd:annotation> - <xsd:documentation>Der Hashwert des Transformationsparameters.</xsd:documentation> + <xsd:documentation>Der Hashwert des Transformationsparameters. + </xsd:documentation> </xsd:annotation> <xsd:complexType> <xsd:sequence> @@ -546,14 +782,20 @@ </xsd:element> <xsd:element name="VerifyTransformsInfoProfile"> <xsd:annotation> - <xsd:documentation>Explizite Angabe des Transformationswegs</xsd:documentation> + <xsd:documentation>Explizite Angabe des Transformationswegs + </xsd:documentation> </xsd:annotation> <xsd:complexType> <xsd:sequence> <xsd:element ref="dsig:Transforms" minOccurs="0"/> <xsd:element name="TransformParameter" type="TransformParameterType" minOccurs="0" maxOccurs="unbounded"> <xsd:annotation> - <xsd:documentation>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.</xsd:documentation> + <xsd:documentation>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.</xsd:documentation> </xsd:annotation> </xsd:element> </xsd:sequence> diff --git a/moaSig/common/src/main/resources/resources/schemas/MOA-SPSS-3.1.2.xsd b/moaSig/common/src/main/resources/resources/schemas/MOA-SPSS-3.1.2.xsd new file mode 100644 index 0000000..69834b2 --- /dev/null +++ b/moaSig/common/src/main/resources/resources/schemas/MOA-SPSS-3.1.2.xsd @@ -0,0 +1,839 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- MOA SP/SS 2.0.0 Schema --> +<xsd:schema xmlns:dsig="http://www.w3.org/2000/09/xmldsig#" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://reference.e-government.gv.at/namespace/moa/20020822#" targetNamespace="http://reference.e-government.gv.at/namespace/moa/20020822#" elementFormDefault="qualified" attributeFormDefault="unqualified" version="1.2"> + <xsd:import namespace="http://www.w3.org/2000/09/xmldsig#" schemaLocation="http://www.w3.org/TR/xmldsig-core/xmldsig-core-schema.xsd"/> + <xsd:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="http://www.w3.org/2001/xml.xsd"/> + <!--########## Create CMS Signature ### --> + <!--### Create CMS Signature Request ### --> + <xsd:element name="CreateCMSSignatureRequest"> + <xsd:complexType> + <xsd:complexContent> + <xsd:extension base="CreateCMSSignatureRequestType"/> + </xsd:complexContent> + </xsd:complexType> + </xsd:element> + <xsd:complexType name="CreateCMSSignatureRequestType"> + <xsd:sequence> + <xsd:element name="KeyIdentifier" type="KeyIdentifierType"/> + <xsd:element name="SingleSignatureInfo" maxOccurs="unbounded"> + <xsd:annotation> + <xsd:documentation>Ermöglichung der Stapelsignatur durch + wiederholte Angabe dieses Elements</xsd:documentation> + </xsd:annotation> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="DataObjectInfo"> + <xsd:complexType> + <xsd:complexContent> + <xsd:extension base="CMSDataObjectInfoType"/> + </xsd:complexContent> + </xsd:complexType> + </xsd:element> + </xsd:sequence> + <xsd:attribute name="SecurityLayerConformity" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="PAdESConformity" type="xsd:boolean" use="optional" default="false"/> + </xsd:complexType> + </xsd:element> + </xsd:sequence> + </xsd:complexType> + <!--### Create CMS Signature Response ### --> + <xsd:element name="CreateCMSSignatureResponse" type="CreateCMSSignatureResponseType"/> + <xsd:complexType name="CreateCMSSignatureResponseType"> + <xsd:choice maxOccurs="unbounded"> + <xsd:annotation> + <xsd:documentation>Kardinalität 1..oo erlaubt die Antwort auf eine + Stapelsignatur-Anfrage</xsd:documentation> + </xsd:annotation> + <xsd:element name="CMSSignature" type="xsd:base64Binary"> + <xsd:annotation> + <xsd:documentation>Resultat, falls die Signaturerstellung + erfolgreich war</xsd:documentation> + </xsd:annotation> + </xsd:element> + <xsd:element ref="ErrorResponse"/> + </xsd:choice> + </xsd:complexType> + <!--########## Create XML Signature ### --> + <!--### Create XML Signature Request ### --> + <xsd:element name="CreateXMLSignatureRequest"> + <xsd:complexType> + <xsd:complexContent> + <xsd:extension base="CreateXMLSignatureRequestType"/> + </xsd:complexContent> + </xsd:complexType> + </xsd:element> + <xsd:complexType name="CreateXMLSignatureRequestType"> + <xsd:sequence> + <xsd:element name="KeyIdentifier" type="KeyIdentifierType"/> + <xsd:element name="SingleSignatureInfo" maxOccurs="unbounded"> + <xsd:annotation> + <xsd:documentation>Ermöglichung der Stapelsignatur durch + wiederholte Angabe dieses Elements</xsd:documentation> + </xsd:annotation> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="DataObjectInfo" maxOccurs="unbounded"> + <xsd:complexType> + <xsd:complexContent> + <xsd:extension base="DataObjectInfoType"> + <xsd:attribute name="ChildOfManifest" type="xsd:boolean" use="optional" default="false"/> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + </xsd:element> + <xsd:element name="CreateSignatureInfo" minOccurs="0"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="CreateSignatureEnvironment" type="ContentOptionalRefType"/> + <xsd:choice> + <xsd:annotation> + <xsd:documentation>Auswahl: Entweder explizite Angabe des + Signaturorts sowie ggf. sinnvoller Supplements im Zshg. mit + der Signaturumgebung, oder Verweis auf ein benanntes Profil + </xsd:documentation> + </xsd:annotation> + <xsd:element ref="CreateSignatureEnvironmentProfile"/> + <xsd:element name="CreateSignatureEnvironmentProfileID" type="ProfileIdentifierType"/> + </xsd:choice> + </xsd:sequence> + </xsd:complexType> + </xsd:element> + </xsd:sequence> + <xsd:attribute name="SecurityLayerConformity" type="xsd:boolean" use="optional" default="true"/> + </xsd:complexType> + </xsd:element> + </xsd:sequence> + </xsd:complexType> + <!--### Create XML Signature Response ### --> + <xsd:complexType name="CreateXMLSignatureResponseType"> + <xsd:choice maxOccurs="unbounded"> + <xsd:annotation> + <xsd:documentation>Kardinalität 1..oo erlaubt die Antwort auf eine + Stapelsignatur-Anfrage</xsd:documentation> + </xsd:annotation> + <xsd:element name="SignatureEnvironment"> + <xsd:annotation> + <xsd:documentation>Resultat, falls die Signaturerstellung + erfolgreich war</xsd:documentation> + </xsd:annotation> + <xsd:complexType> + <xsd:sequence> + <xsd:any namespace="##any" processContents="lax"/> + </xsd:sequence> + </xsd:complexType> + </xsd:element> + <xsd:element ref="ErrorResponse"/> + </xsd:choice> + </xsd:complexType> + <xsd:element name="CreateXMLSignatureResponse" type="CreateXMLSignatureResponseType"/> + <!--########## Create PDF Signature ### --> + <!--### Create PDF Signature Request ### --> + <xsd:element name="CreatePDFSignatureRequest"> + <xsd:complexType> + <xsd:complexContent> + <xsd:extension base="CreatePDFSignatureRequestType"/> + </xsd:complexContent> + </xsd:complexType> + </xsd:element> + <xsd:complexType name="CreatePDFSignatureRequestType"> + <xsd:sequence> + <xsd:element name="KeyIdentifier" type="KeyIdentifierType"/> + <xsd:element name="SingleSignatureInfo" maxOccurs="unbounded"> + <xsd:annotation> + <xsd:documentation>Ermöglichung der Stapelsignatur durch + wiederholte Angabe dieses Elements</xsd:documentation> + </xsd:annotation> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="PDFDocument" type="xsd:base64Binary"/> + <xsd:element name="SignatureProfile" type="xsd:string" minOccurs="0" maxOccurs="1"/> + <xsd:element name="SignaturePosition" type="xsd:string" minOccurs="0" maxOccurs="1"/> + <xsd:element name="SignatureID" type="xsd:string" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + </xsd:element> + </xsd:sequence> + </xsd:complexType> + <!--### Create PDF Signature Response ### --> + <xsd:element name="CreatePDFSignatureResponse" type="CreatePDFSignatureResponseType"/> + <xsd:complexType name="CreatePDFSignatureResponseType"> + <xsd:sequence> + <xsd:element name="PDFSignature" type="PDFSignedRepsonse" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <!--########## Verify CMS Signature ### --> + <!--### Verifiy CMS Signature Request ### --> + <xsd:element name="VerifyCMSSignatureRequest"> + <xsd:complexType> + <xsd:complexContent> + <xsd:extension base="VerifyCMSSignatureRequestType"> + <xsd:attribute name="Signatories" type="SignatoriesType" use="optional" default="1"/> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + </xsd:element> + <xsd:complexType name="VerifyCMSSignatureRequestType"> + <xsd:sequence> + <xsd:element name="DateTime" type="xsd:dateTime" minOccurs="0"/> + <xsd:element name="ExtendedValidation" type="xsd:boolean" default="false" minOccurs="0"/> + <xsd:element name="CMSSignature" type="xsd:base64Binary"/> + <xsd:element name="DataObject" type="CMSDataObjectOptionalMetaType" minOccurs="0"/> + <xsd:element name="TrustProfileID" type="xsd:token"> + <xsd:annotation> + <xsd:documentation>mit diesem Profil wird eine Menge von + vertrauenswürdigen Wurzelzertifikaten spezifiziert + </xsd:documentation> + </xsd:annotation> + </xsd:element> + </xsd:sequence> + </xsd:complexType> + <!--### Verify CMS Signature Response ### --> + <xsd:element name="VerifyCMSSignatureResponse" type="VerifyCMSSignatureResponseType"/> + <xsd:complexType name="VerifyCMSSignatureResponseType"> + <xsd:sequence maxOccurs="unbounded"> + <xsd:element name="SignerInfo" type="dsig:KeyInfoType"> + <xsd:annotation> + <xsd:documentation>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</xsd:documentation> + </xsd:annotation> + </xsd:element> + <xsd:element name="SignatureAlgorithm" type="xsd:string" minOccurs="0" maxOccurs="1"/> + <xsd:element name="SignatureCheck" type="CheckResultType"/> + <xsd:element name="CertificateCheck" type="CheckResultType"/> + <xsd:element name="FormCheckResult" type="FormResultType" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="ExtendedCertificateCheck" type="ExtendedCertificateCheckResultType" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="VerifyASICCMSSignatureResponseType"> + <xsd:sequence maxOccurs="unbounded"> + <xsd:element name="SignerInfo" type="dsig:KeyInfoType"> + <xsd:annotation> + <xsd:documentation>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</xsd:documentation> + </xsd:annotation> + </xsd:element> + <xsd:element name="SigningTime" type="xsd:dateTime" minOccurs="0"/> + <xsd:element name="SignatureCheck" type="CheckResultType"/> + <xsd:element name="CertificateCheck" type="CheckResultType"/> + <xsd:element name="FormCheckResult" type="FormResultType" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="ExtendedCertificateCheck" type="ExtendedCertificateCheckResultType" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <!--########## Verify PDF Signature ### --> + <!--### Verifiy PDF Signature Request ### --> + <xsd:element name="VerifyPDFSignatureRequest"> + <xsd:complexType> + <xsd:complexContent> + <xsd:extension base="VerifyPDFSignatureRequestType"> + <xsd:attribute name="Signatories" type="SignatoriesType" use="optional" default="1"/> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + </xsd:element> + <xsd:complexType name="VerifyPDFSignatureRequestType"> + <xsd:sequence> + <xsd:element name="DateTime" type="xsd:dateTime" minOccurs="0"/> + <xsd:element name="ExtendedValidation" type="xsd:boolean" default="false" minOccurs="0"/> + <xsd:element name="PDFSignature" type="xsd:base64Binary"/> + <xsd:element name="TrustProfileID" type="xsd:token"> + <xsd:annotation> + <xsd:documentation>mit diesem Profil wird eine Menge von + vertrauenswürdigen Wurzelzertifikaten spezifiziert + </xsd:documentation> + </xsd:annotation> + </xsd:element> + </xsd:sequence> + </xsd:complexType> + <!--########## Verify PDF Signature ### --> + <!--### Verifiy ASIC Signature Request ### --> + <xsd:element name="VerifyASICSignatureRequest"> + <xsd:complexType> + <xsd:complexContent> + <xsd:extension base="VerifyASICSignatureRequestType"/> + </xsd:complexContent> + </xsd:complexType> + </xsd:element> + <xsd:complexType name="VerifyASICSignatureRequestType"> + <xsd:sequence> + <xsd:element name="DateTime" type="xsd:dateTime" minOccurs="0"/> + <xsd:element name="ExtendedValidation" type="xsd:boolean" default="false" minOccurs="0"/> + <xsd:element name="ASICSignature" type="xsd:base64Binary"/> + <xsd:element name="ASICExtension" type="xsd:string"> + <xsd:annotation> + <xsd:documentation>asics or asice</xsd:documentation> + </xsd:annotation> + </xsd:element> + <xsd:element name="TrustProfileID" type="xsd:token"> + <xsd:annotation> + <xsd:documentation>mit diesem Profil wird eine Menge von + vertrauenswürdigen Wurzelzertifikaten spezifiziert + </xsd:documentation> + </xsd:annotation> + </xsd:element> + </xsd:sequence> + </xsd:complexType> + <!--### Verify ASIC Signature Response ### --> + <xsd:element name="VerifyASICSignatureResponse" type="VerifyASICSignatureResponseType"/> + <xsd:complexType name="VerifyASICSignatureResponseType"> + <xsd:sequence> + <xsd:element name="ASiCSignatureResult" type="ASICResultType" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <!--xsd:complexType name="signedFilesType"> + <xsd:sequence> + <xsd:element name="signedFiles" type="xsd:string"> + </xsd:sequence> + <xsd:attribute name="hashAlgorithm" type="xsd:string" use="optional"/> + </xsd:complexType--> + <xsd:complexType name="ASICResultType"> + <xsd:sequence> + <xsd:element name="signedFiles" minOccurs="0" maxOccurs="unbounded"> + <xsd:complexType> + <xsd:simpleContent> + <xsd:extension base="xsd:string"> + <xsd:attribute name="hashAlgorithm" type="xsd:string" use="optional"/> + </xsd:extension> + </xsd:simpleContent> + </xsd:complexType> + </xsd:element> + <xsd:element name="XMLSignatureResult" type="VerifyASICXMLSignatureResponseType" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="CMSSignatureResult" type="VerifyASICCMSSignatureResponseType" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <!--### Verify CMS Signature Response ### --> + <xsd:element name="VerifyPDFSignatureResponse" type="VerifyPDFSignatureResponseType"/> + <xsd:complexType name="VerifyPDFSignatureResponseType"> + <xsd:sequence maxOccurs="unbounded"> + <xsd:element name="SignatureResult" type="PDFSignatureResultType"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="PDFSignatureResultType"> + <xsd:sequence> + <xsd:element name="SignerInfo" type="dsig:KeyInfoType" minOccurs="0"> + <xsd:annotation> + <xsd:documentation>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</xsd:documentation> + </xsd:annotation> + </xsd:element> + <xsd:element name="SigningTime" type="xsd:dateTime" minOccurs="0"/> + <xsd:element name="SignatureAlgorithm" type="xsd:string" minOccurs="0" maxOccurs="1"/> + <xsd:element name="SignatureCheck" type="CheckResultType"/> + <xsd:element name="CertificateCheck" type="CheckResultType"/> + <xsd:element name="FormCheckResult" type="FormResultType" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="ExtendedCertificateCheck" type="ExtendedCertificateCheckResultType" minOccurs="0" maxOccurs="1"/> + <xsd:element name="SignatureProperties" type="PDFSignatureProperties" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="PDFSignatureProperties"> + <xsd:sequence> + <xsd:element name="SignatureCoversFullPDF" type="xsd:boolean" minOccurs="0" maxOccurs="1"/> + <xsd:element name="SignatureByteRange" type="xsd:string" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <!--########## Verify XML Signature ### --> + <!--### Verify XML Signature Request ### --> + <xsd:element name="VerifyXMLSignatureRequest" type="VerifyXMLSignatureRequestType"/> + <xsd:complexType name="VerifyXMLSignatureRequestType"> + <xsd:sequence> + <xsd:element name="DateTime" type="xsd:dateTime" minOccurs="0"/> + <xsd:element name="ExtendedValidation" type="xsd:boolean" default="false" minOccurs="0"/> + <xsd:element name="VerifySignatureInfo"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="VerifySignatureEnvironment" type="ContentOptionalRefType"/> + <xsd:element name="VerifySignatureLocation" type="xsd:token"/> + </xsd:sequence> + </xsd:complexType> + </xsd:element> + <xsd:choice minOccurs="0" maxOccurs="unbounded"> + <xsd:element ref="SupplementProfile"/> + <xsd:element name="SupplementProfileID" type="xsd:string"/> + </xsd:choice> + <xsd:element name="SignatureManifestCheckParams" minOccurs="0"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="ReferenceInfo" type="VerifyTransformsDataType" maxOccurs="unbounded"> + <xsd:annotation> + <xsd:documentation>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.</xsd:documentation> + </xsd:annotation> + </xsd:element> + </xsd:sequence> + <xsd:attribute name="ReturnReferenceInputData" type="xsd:boolean" use="optional" default="true"/> + </xsd:complexType> + </xsd:element> + <xsd:element name="ReturnHashInputData" minOccurs="0"/> + <xsd:element name="TrustProfileID" type="xsd:token"> + <xsd:annotation> + <xsd:documentation>mit diesem Profil wird eine Menge von + vertrauenswürdigen Wurzelzertifikaten spezifiziert + </xsd:documentation> + </xsd:annotation> + </xsd:element> + </xsd:sequence> + </xsd:complexType> + <!--### Verify XML Signature Response ### --> + <xsd:element name="VerifyXMLSignatureResponse" type="VerifyXMLSignatureResponseType"/> + <xsd:complexType name="VerifyXMLSignatureResponseType"> + <xsd:sequence> + <xsd:element name="SignerInfo" type="dsig:KeyInfoType"> + <xsd:annotation> + <xsd:documentation>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</xsd:documentation> + </xsd:annotation> + </xsd:element> + <xsd:element name="HashInputData" type="InputDataType" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="ReferenceInputData" type="InputDataType" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="SignatureAlgorithm" type="xsd:string" minOccurs="0" maxOccurs="1"/> + <xsd:element name="SignatureCheck" type="ReferencesCheckResultType"/> + <xsd:element name="SignatureManifestCheck" type="ReferencesCheckResultType" minOccurs="0"/> + <xsd:element name="XMLDSIGManifestCheck" type="ManifestRefsCheckResultType" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="CertificateCheck" type="CheckResultType"/> + <xsd:element name="FormCheckResult" type="FormResultType" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="ExtendedCertificateCheck" type="ExtendedCertificateCheckResultType" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="VerifyASICXMLSignatureResponseType"> + <xsd:sequence> + <xsd:element name="SignerInfo" type="dsig:KeyInfoType"> + <xsd:annotation> + <xsd:documentation>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</xsd:documentation> + </xsd:annotation> + </xsd:element> + <xsd:element name="SigningTime" type="xsd:dateTime" minOccurs="0"/> + <xsd:element name="HashInputData" type="InputDataType" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="ReferenceInputData" type="InputDataType" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="SignatureCheck" type="ReferencesCheckResultType"/> + <xsd:element name="SignatureManifestCheck" type="ReferencesCheckResultType" minOccurs="0"/> + <xsd:element name="XMLDSIGManifestCheck" type="ManifestRefsCheckResultType" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="CertificateCheck" type="CheckResultType"/> + <xsd:element name="FormCheckResult" type="FormResultType" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="ExtendedCertificateCheck" type="ExtendedCertificateCheckResultType" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:simpleType name="ProfileIdentifierType"> + <xsd:restriction base="xsd:token"/> + </xsd:simpleType> + <xsd:complexType name="InputDataType"> + <xsd:complexContent> + <xsd:extension base="ContentExLocRefBaseType"> + <xsd:attribute name="PartOf" use="optional" default="SignedInfo"> + <xsd:simpleType> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="SignedInfo"/> + <xsd:enumeration value="XMLDSIGManifest"/> + </xsd:restriction> + </xsd:simpleType> + </xsd:attribute> + <xsd:attribute name="ReferringSigReference" type="xsd:nonNegativeInteger" use="optional"/> + <xsd:attribute name="HashAlgorithm" type="xsd:string" use="optional"/> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + <xsd:complexType name="MetaInfoType"> + <xsd:sequence> + <xsd:element name="MimeType" type="MimeTypeType"/> + <xsd:element name="Description" type="xsd:anyURI" minOccurs="0"/> + <xsd:any namespace="##other" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="FinalDataMetaInfoType"> + <xsd:complexContent> + <xsd:extension base="MetaInfoType"> + <xsd:sequence> + <xsd:element name="Type" type="xsd:anyURI" minOccurs="0"/> + </xsd:sequence> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + <xsd:complexType name="DataObjectInfoType"> + <xsd:sequence> + <xsd:element name="DataObject"> + <xsd:complexType> + <xsd:complexContent> + <xsd:extension base="ContentOptionalRefType"/> + </xsd:complexContent> + </xsd:complexType> + </xsd:element> + <xsd:choice> + <xsd:annotation> + <xsd:documentation>Auswahl: Entweder explizite Angabe EINER + Transformationskette inklusive ggf. sinnvoller Supplements oder + Verweis auf ein benanntes Profil</xsd:documentation> + </xsd:annotation> + <xsd:element ref="CreateTransformsInfoProfile"/> + <xsd:element name="CreateTransformsInfoProfileID" type="ProfileIdentifierType"/> + </xsd:choice> + </xsd:sequence> + <xsd:attribute name="Structure" use="required"> + <xsd:simpleType> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="detached"/> + <xsd:enumeration value="enveloping"/> + </xsd:restriction> + </xsd:simpleType> + </xsd:attribute> + </xsd:complexType> + <xsd:complexType name="CMSDataObjectInfoType"> + <xsd:sequence> + <xsd:element name="DataObject"> + <xsd:complexType> + <xsd:complexContent> + <xsd:extension base="CMSDataObjectRequiredMetaType"/> + </xsd:complexContent> + </xsd:complexType> + </xsd:element> + </xsd:sequence> + <xsd:attribute name="Structure" use="required"> + <xsd:simpleType> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="detached"/> + <xsd:enumeration value="enveloping"/> + </xsd:restriction> + </xsd:simpleType> + </xsd:attribute> + </xsd:complexType> + <xsd:complexType name="TransformsInfoType"> + <xsd:sequence> + <xsd:element ref="dsig:Transforms" minOccurs="0"/> + <xsd:element name="FinalDataMetaInfo" type="FinalDataMetaInfoType"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="XMLDataObjectAssociationType"> + <xsd:sequence> + <xsd:element name="MetaInfo" type="MetaInfoType" minOccurs="0"/> + <xsd:element name="Content" type="ContentRequiredRefType"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="PDFSignedRepsonse"> + <xsd:sequence> + <xsd:element name="SignatureID" type="xsd:string" minOccurs="0" maxOccurs="1"/> + <xsd:choice maxOccurs="1"> + <xsd:element name="PDFSignature" type="xsd:base64Binary"> + <xsd:annotation> + <xsd:documentation>Resultat, falls die Signaturerstellung + erfolgreich war</xsd:documentation> + </xsd:annotation> + </xsd:element> + <xsd:element ref="ErrorResponse"/> + </xsd:choice> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CMSDataObjectOptionalMetaType"> + <xsd:sequence> + <xsd:element name="MetaInfo" type="MetaInfoType" minOccurs="0"/> + <xsd:element name="Content" type="CMSContentBaseType"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CMSDataObjectRequiredMetaType"> + <xsd:sequence> + <xsd:element name="MetaInfo" type="MetaInfoType"/> + <xsd:element name="Content" type="CMSContentBaseType"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CMSContentBaseType"> + <xsd:complexContent> + <xsd:restriction base="ContentOptionalRefType"> + <xsd:choice minOccurs="0"> + <xsd:element name="Base64Content" type="xsd:base64Binary"/> + </xsd:choice> + </xsd:restriction> + </xsd:complexContent> + </xsd:complexType> + <xsd:complexType name="CheckResultType"> + <xsd:sequence> + <xsd:element name="Code" type="xsd:nonNegativeInteger"/> + <xsd:element name="Info" type="AnyChildrenType" minOccurs="0"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="FormResultType"> + <xsd:sequence> + <xsd:element name="Code" type="xsd:nonNegativeInteger" minOccurs="1" maxOccurs="1"/> + <xsd:element name="Name" type="xsd:string" minOccurs="1" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="IndicationResultType"> + <xsd:sequence> + <xsd:element name="Code" type="xsd:nonNegativeInteger" minOccurs="1" maxOccurs="1"/> + <xsd:element name="Name" type="xsd:string" minOccurs="1" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="ExtendedCertificateCheckResultType"> + <xsd:sequence> + <xsd:element name="Major" type="IndicationResultType" minOccurs="1" maxOccurs="1"/> + <xsd:element name="Minor" type="IndicationResultType" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="ReferencesCheckResultType"> + <xsd:complexContent> + <xsd:restriction base="CheckResultType"> + <xsd:sequence> + <xsd:element name="Code" type="xsd:nonNegativeInteger"/> + <xsd:element name="Info" type="ReferencesCheckResultInfoType" minOccurs="0"/> + </xsd:sequence> + </xsd:restriction> + </xsd:complexContent> + </xsd:complexType> + <xsd:complexType name="ReferencesCheckResultInfoType" mixed="true"> + <xsd:complexContent> + <xsd:restriction base="AnyChildrenType"> + <xsd:sequence> + <xsd:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="FailedReference" type="xsd:positiveInteger" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:restriction> + </xsd:complexContent> + </xsd:complexType> + <xsd:complexType name="ManifestRefsCheckResultType"> + <xsd:complexContent> + <xsd:restriction base="CheckResultType"> + <xsd:sequence> + <xsd:element name="Code" type="xsd:nonNegativeInteger"/> + <xsd:element name="Info" type="ManifestRefsCheckResultInfoType"/> + </xsd:sequence> + </xsd:restriction> + </xsd:complexContent> + </xsd:complexType> + <xsd:complexType name="ManifestRefsCheckResultInfoType" mixed="true"> + <xsd:complexContent> + <xsd:restriction base="AnyChildrenType"> + <xsd:sequence> + <xsd:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="FailedReference" type="xsd:positiveInteger" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="ReferringSigReference" type="xsd:positiveInteger"/> + </xsd:sequence> + </xsd:restriction> + </xsd:complexContent> + </xsd:complexType> + <!--########## Error Response ### --> + <xsd:element name="ErrorResponse" type="ErrorResponseType"> + <xsd:annotation> + <xsd:documentation>Resultat, falls die Signaturerstellung gescheitert + ist</xsd:documentation> + </xsd:annotation> + </xsd:element> + <xsd:complexType name="ErrorResponseType"> + <xsd:sequence> + <xsd:element name="ErrorCode" type="xsd:integer"/> + <xsd:element name="Info" type="xsd:string"/> + </xsd:sequence> + </xsd:complexType> + <!--########## Auxiliary Types ### --> + <xsd:simpleType name="KeyIdentifierType"> + <xsd:restriction base="xsd:string"/> + </xsd:simpleType> + <xsd:simpleType name="KeyStorageType"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="Software"/> + <xsd:enumeration value="Hardware"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="MimeTypeType"> + <xsd:restriction base="xsd:token"/> + </xsd:simpleType> + <xsd:complexType name="AnyChildrenType" mixed="true"> + <xsd:sequence> + <xsd:any namespace="##any" processContents="lax" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="XMLContentType" mixed="true"> + <xsd:complexContent> + <xsd:extension base="AnyChildrenType"> + <xsd:attribute ref="xml:space" use="optional"/> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + <xsd:complexType name="ContentBaseType"> + <xsd:choice minOccurs="0"> + <xsd:element name="Base64Content" type="xsd:base64Binary"/> + <xsd:element name="XMLContent" type="XMLContentType"/> + <xsd:element name="LocRefContent" type="xsd:anyURI"/> + </xsd:choice> + </xsd:complexType> + <xsd:complexType name="ContentExLocRefBaseType"> + <xsd:complexContent> + <xsd:restriction base="ContentBaseType"> + <xsd:choice minOccurs="0"> + <xsd:element name="Base64Content" type="xsd:base64Binary"/> + <xsd:element name="XMLContent" type="XMLContentType"/> + </xsd:choice> + </xsd:restriction> + </xsd:complexContent> + </xsd:complexType> + <xsd:complexType name="ContentOptionalRefType"> + <xsd:complexContent> + <xsd:extension base="ContentBaseType"> + <xsd:attribute name="Reference" type="xsd:anyURI" use="optional"/> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + <xsd:complexType name="ContentRequiredRefType"> + <xsd:complexContent> + <xsd:restriction base="ContentOptionalRefType"> + <xsd:choice minOccurs="0"> + <xsd:element name="Base64Content" type="xsd:base64Binary"/> + <xsd:element name="XMLContent" type="XMLContentType"/> + <xsd:element name="LocRefContent" type="xsd:anyURI"/> + </xsd:choice> + <xsd:attribute name="Reference" type="xsd:anyURI" use="required"/> + </xsd:restriction> + </xsd:complexContent> + </xsd:complexType> + <xsd:complexType name="VerifyTransformsDataType"> + <xsd:choice maxOccurs="unbounded"> + <xsd:annotation> + <xsd:documentation>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. + </xsd:documentation> + </xsd:annotation> + <xsd:element ref="VerifyTransformsInfoProfile"/> + <xsd:element name="VerifyTransformsInfoProfileID" type="xsd:string"> + <xsd:annotation> + <xsd:documentation>Profilbezeichner für einen Transformationsweg + </xsd:documentation> + </xsd:annotation> + </xsd:element> + </xsd:choice> + </xsd:complexType> + <xsd:element name="QualifiedCertificate"> + <xsd:complexType> + <xsd:attribute name="source" use="optional"> + <xsd:simpleType> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="TSL"/> + <xsd:enumeration value="Certificate"/> + </xsd:restriction> + </xsd:simpleType> + </xsd:attribute> + </xsd:complexType> + </xsd:element> + <xsd:element name="SecureSignatureCreationDevice"> + <xsd:complexType> + <xsd:attribute name="source" use="optional"> + <xsd:simpleType> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="TSL"/> + <xsd:enumeration value="Certificate"/> + </xsd:restriction> + </xsd:simpleType> + </xsd:attribute> + </xsd:complexType> + </xsd:element> + <xsd:element name="IssuingCountry" type="xsd:token"/> + <xsd:element name="PublicAuthority" type="PublicAuthorityType"/> + <xsd:complexType name="PublicAuthorityType"> + <xsd:sequence> + <xsd:element name="Code" type="xsd:string" minOccurs="0"/> + </xsd:sequence> + </xsd:complexType> + <xsd:simpleType name="SignatoriesType"> + <xsd:union memberTypes="AllSignatoriesType"> + <xsd:simpleType> + <xsd:list itemType="xsd:positiveInteger"/> + </xsd:simpleType> + </xsd:union> + </xsd:simpleType> + <xsd:simpleType name="AllSignatoriesType"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="all"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CreateSignatureLocationType"> + <xsd:simpleContent> + <xsd:extension base="xsd:token"> + <xsd:attribute name="Index" type="xsd:integer" use="required"/> + </xsd:extension> + </xsd:simpleContent> + </xsd:complexType> + <xsd:complexType name="TransformParameterType"> + <xsd:choice minOccurs="0"> + <xsd:annotation> + <xsd:documentation>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.</xsd:documentation> + </xsd:annotation> + <xsd:element name="Base64Content" type="xsd:base64Binary"> + <xsd:annotation> + <xsd:documentation>Der Transformationsparameter explizit angegeben. + </xsd:documentation> + </xsd:annotation> + </xsd:element> + <xsd:element name="Hash"> + <xsd:annotation> + <xsd:documentation>Der Hashwert des Transformationsparameters. + </xsd:documentation> + </xsd:annotation> + <xsd:complexType> + <xsd:sequence> + <xsd:element ref="dsig:DigestMethod"/> + <xsd:element ref="dsig:DigestValue"/> + </xsd:sequence> + </xsd:complexType> + </xsd:element> + </xsd:choice> + <xsd:attribute name="URI" type="xsd:anyURI" use="required"/> + </xsd:complexType> + <xsd:element name="CreateSignatureEnvironmentProfile"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="CreateSignatureLocation" type="CreateSignatureLocationType"/> + <xsd:element name="Supplement" type="XMLDataObjectAssociationType" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + </xsd:element> + <xsd:element name="VerifyTransformsInfoProfile"> + <xsd:annotation> + <xsd:documentation>Explizite Angabe des Transformationswegs + </xsd:documentation> + </xsd:annotation> + <xsd:complexType> + <xsd:sequence> + <xsd:element ref="dsig:Transforms" minOccurs="0"/> + <xsd:element name="TransformParameter" type="TransformParameterType" minOccurs="0" maxOccurs="unbounded"> + <xsd:annotation> + <xsd:documentation>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.</xsd:documentation> + </xsd:annotation> + </xsd:element> + </xsd:sequence> + </xsd:complexType> + </xsd:element> + <xsd:element name="Supplement" type="XMLDataObjectAssociationType"/> + <xsd:element name="SupplementProfile" type="XMLDataObjectAssociationType"/> + <xsd:element name="CreateTransformsInfoProfile"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="CreateTransformsInfo" type="TransformsInfoType"/> + <xsd:element ref="Supplement" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + </xsd:element> +</xsd:schema> diff --git a/moaSig/common/src/main/resources/resources/schemas/MOA-SPSS-config-3.0.0.xsd b/moaSig/common/src/main/resources/resources/schemas/MOA-SPSS-config-3.0.0.xsd index 1a1b74b..c9739d3 100644 --- a/moaSig/common/src/main/resources/resources/schemas/MOA-SPSS-config-3.0.0.xsd +++ b/moaSig/common/src/main/resources/resources/schemas/MOA-SPSS-config-3.0.0.xsd @@ -145,6 +145,7 @@ <xs:complexType> <xs:sequence> <xs:element name="AutoAddCertificates" type="xs:boolean"/> + <xs:element name="AutoAddEECertificates" type="xs:boolean" minOccurs="0" maxOccurs="1"/> <xs:element name="UseAuthorityInformationAccess" type="xs:boolean"/> <xs:element name="CertificateStore"> <xs:complexType> diff --git a/moaSig/common/src/main/resources/resources/schemas/XAdES-1.3.2.xsd b/moaSig/common/src/main/resources/resources/schemas/XAdES01903v132-201601.xsd index 4aa67aa..e7a5f3a 100644 --- a/moaSig/common/src/main/resources/resources/schemas/XAdES-1.3.2.xsd +++ b/moaSig/common/src/main/resources/resources/schemas/XAdES01903v132-201601.xsd @@ -1,533 +1,533 @@ -<?xml version="1.0" encoding="UTF-8"?>
-<xsd:schema targetNamespace="http://uri.etsi.org/01903/v1.3.2#" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://uri.etsi.org/01903/v1.3.2#" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" elementFormDefault="qualified">
- <xsd:import namespace="http://www.w3.org/2000/09/xmldsig#" schemaLocation="xmldsig-core-schema.xsd"/>
- <!-- Start auxiliary types definitions: AnyType, ObjectIdentifierType,
-EncapsulatedPKIDataType and containers for time-stamp tokens -->
- <!-- Start AnyType -->
- <xsd:element name="Any" type="AnyType"/>
- <xsd:complexType name="AnyType" mixed="true">
- <xsd:sequence minOccurs="0" maxOccurs="unbounded">
- <xsd:any namespace="##any" processContents="lax"/>
- </xsd:sequence>
- <xsd:anyAttribute namespace="##any"/>
- </xsd:complexType>
- <!-- End AnyType -->
- <!-- Start ObjectIdentifierType-->
- <xsd:element name="ObjectIdentifier" type="ObjectIdentifierType"/>
- <xsd:complexType name="ObjectIdentifierType">
- <xsd:sequence>
- <xsd:element name="Identifier" type="IdentifierType"/>
- <xsd:element name="Description" type="xsd:string" minOccurs="0"/>
- <xsd:element name="DocumentationReferences" type="DocumentationReferencesType" minOccurs="0"/>
- </xsd:sequence>
- </xsd:complexType>
- <xsd:complexType name="IdentifierType">
- <xsd:simpleContent>
- <xsd:extension base="xsd:anyURI">
- <xsd:attribute name="Qualifier" type="QualifierType" use="optional"/>
- </xsd:extension>
- </xsd:simpleContent>
- </xsd:complexType>
- <xsd:simpleType name="QualifierType">
- <xsd:restriction base="xsd:string">
- <xsd:enumeration value="OIDAsURI"/>
- <xsd:enumeration value="OIDAsURN"/>
- </xsd:restriction>
- </xsd:simpleType>
- <xsd:complexType name="DocumentationReferencesType">
- <xsd:sequence maxOccurs="unbounded">
- <xsd:element name="DocumentationReference" type="xsd:anyURI"/>
- </xsd:sequence>
- </xsd:complexType>
- <!-- End ObjectIdentifierType-->
- <!-- Start EncapsulatedPKIDataType-->
- <xsd:element name="EncapsulatedPKIData" type="EncapsulatedPKIDataType"/>
- <xsd:complexType name="EncapsulatedPKIDataType">
- <xsd:simpleContent>
- <xsd:extension base="xsd:base64Binary">
- <xsd:attribute name="Id" type="xsd:ID" use="optional"/>
- <xsd:attribute name="Encoding" type="xsd:anyURI" use="optional"/>
- </xsd:extension>
- </xsd:simpleContent>
- </xsd:complexType>
- <!-- End EncapsulatedPKIDataType -->
- <!-- Start time-stamp containers types -->
- <!-- Start GenericTimeStampType -->
- <xsd:element name="Include" type="IncludeType"/>
- <xsd:complexType name="IncludeType">
- <xsd:attribute name="URI" type="xsd:anyURI" use="required"/>
- <xsd:attribute name="referencedData" type="xsd:boolean" use="optional"/>
- </xsd:complexType>
- <xsd:element name="ReferenceInfo" type="ReferenceInfoType"/>
- <xsd:complexType name="ReferenceInfoType">
- <xsd:sequence>
- <xsd:element ref="ds:DigestMethod"/>
- <xsd:element ref="ds:DigestValue"/>
- </xsd:sequence>
- <xsd:attribute name="Id" type="xsd:ID" use="optional"/>
- <xsd:attribute name="URI" type="xsd:anyURI" use="optional"/>
- </xsd:complexType>
- <xsd:complexType name="GenericTimeStampType" abstract="true">
- <xsd:sequence>
- <xsd:choice minOccurs="0">
- <xsd:element ref="Include" minOccurs="0" maxOccurs="unbounded"/>
- <xsd:element ref="ReferenceInfo" maxOccurs="unbounded"/>
- </xsd:choice>
- <xsd:element ref="ds:CanonicalizationMethod" minOccurs="0"/>
- <xsd:choice maxOccurs="unbounded">
- <xsd:element name="EncapsulatedTimeStamp" type="EncapsulatedPKIDataType"/>
- <xsd:element name="XMLTimeStamp" type="AnyType"/>
- </xsd:choice>
- </xsd:sequence>
- <xsd:attribute name="Id" type="xsd:ID" use="optional"/>
- </xsd:complexType>
- <!-- End GenericTimeStampType -->
- <!-- Start XAdESTimeStampType -->
- <xsd:element name="XAdESTimeStamp" type="XAdESTimeStampType"/>
- <xsd:complexType name="XAdESTimeStampType">
- <xsd:complexContent>
- <xsd:restriction base="GenericTimeStampType">
- <xsd:sequence>
- <xsd:element ref="Include" minOccurs="0" maxOccurs="unbounded"/>
- <xsd:element ref="ds:CanonicalizationMethod" minOccurs="0"/>
- <xsd:choice maxOccurs="unbounded">
- <xsd:element name="EncapsulatedTimeStamp" type="EncapsulatedPKIDataType"/>
- <xsd:element name="XMLTimeStamp" type="AnyType"/>
- </xsd:choice>
- </xsd:sequence>
- <xsd:attribute name="Id" type="xsd:ID" use="optional"/>
- </xsd:restriction>
- </xsd:complexContent>
- </xsd:complexType>
- <!-- End XAdESTimeStampType -->
- <!-- Start OtherTimeStampType -->
- <xsd:element name="OtherTimeStamp" type="OtherTimeStampType"/>
- <xsd:complexType name="OtherTimeStampType">
- <xsd:complexContent>
- <xsd:restriction base="GenericTimeStampType">
- <xsd:sequence>
- <xsd:element ref="ReferenceInfo" maxOccurs="unbounded"/>
- <xsd:element ref="ds:CanonicalizationMethod" minOccurs="0"/>
- <xsd:choice>
- <xsd:element name="EncapsulatedTimeStamp" type="EncapsulatedPKIDataType"/>
- <xsd:element name="XMLTimeStamp" type="AnyType"/>
- </xsd:choice>
- </xsd:sequence>
- <xsd:attribute name="Id" type="xsd:ID" use="optional"/>
- </xsd:restriction>
- </xsd:complexContent>
- </xsd:complexType>
- <!-- End OtherTimeStampType -->
- <!-- End time-stamp containers types -->
- <!-- End auxiliary types definitions-->
- <!-- Start container types -->
- <!-- Start QualifyingProperties -->
- <xsd:element name="QualifyingProperties" type="QualifyingPropertiesType"/>
- <xsd:complexType name="QualifyingPropertiesType">
- <xsd:sequence>
- <xsd:element ref="SignedProperties" minOccurs="0"/>
- <xsd:element ref="UnsignedProperties" minOccurs="0"/>
- </xsd:sequence>
- <xsd:attribute name="Target" type="xsd:anyURI" use="required"/>
- <xsd:attribute name="Id" type="xsd:ID" use="optional"/>
- </xsd:complexType>
- <!-- End QualifyingProperties -->
- <!-- Start SignedProperties-->
- <xsd:element name="SignedProperties" type="SignedPropertiesType"/>
- <xsd:complexType name="SignedPropertiesType">
- <xsd:sequence>
- <xsd:element ref="SignedSignatureProperties" minOccurs="0"/>
- <xsd:element ref="SignedDataObjectProperties" minOccurs="0"/>
- </xsd:sequence>
- <xsd:attribute name="Id" type="xsd:ID" use="optional"/>
- </xsd:complexType>
- <!-- End SignedProperties-->
- <!-- Start UnsignedProperties-->
- <xsd:element name="UnsignedProperties" type="UnsignedPropertiesType"/>
- <xsd:complexType name="UnsignedPropertiesType">
- <xsd:sequence>
- <xsd:element ref="UnsignedSignatureProperties" minOccurs="0"/>
- <xsd:element ref="UnsignedDataObjectProperties" minOccurs="0"/>
- </xsd:sequence>
- <xsd:attribute name="Id" type="xsd:ID" use="optional"/>
- </xsd:complexType>
- <!-- End UnsignedProperties-->
- <!-- Start SignedSignatureProperties-->
- <!-- Definition changed: added new optional children for EN -->
- <xsd:element name="SignedSignatureProperties" type="SignedSignaturePropertiesType"/>
- <xsd:complexType name="SignedSignaturePropertiesType">
- <xsd:sequence>
- <xsd:element ref="SigningTime" minOccurs="0"/>
- <xsd:element ref="SigningCertificate" minOccurs="0"/>
- <xsd:element ref="SigningCertificateV2" minOccurs="0"/>
- <xsd:element ref="SignaturePolicyIdentifier" minOccurs="0"/>
- <xsd:element ref="SignatureProductionPlace" minOccurs="0"/>
- <xsd:element ref="SignatureProductionPlaceV2" minOccurs="0"/>
- <xsd:element ref="SignerRole" minOccurs="0"/>
- <xsd:element ref="SignerRoleV2" minOccurs="0"/>
- <xsd:any namespace="##other" minOccurs="0" maxOccurs="unbounded"/>
- </xsd:sequence>
- <xsd:attribute name="Id" type="xsd:ID" use="optional"/>
- </xsd:complexType>
- <!-- End SignedSignatureProperties-->
- <!-- Start SignedDataObjectProperties-->
- <xsd:element name="SignedDataObjectProperties" type="SignedDataObjectPropertiesType"/>
- <xsd:complexType name="SignedDataObjectPropertiesType">
- <xsd:sequence>
- <xsd:element ref="DataObjectFormat" minOccurs="0" maxOccurs="unbounded"/>
- <xsd:element ref="CommitmentTypeIndication" minOccurs="0" maxOccurs="unbounded"/>
- <xsd:element ref="AllDataObjectsTimeStamp" minOccurs="0" maxOccurs="unbounded"/>
- <xsd:element ref="IndividualDataObjectsTimeStamp" minOccurs="0" maxOccurs="unbounded"/>
- <xsd:any namespace="##other" minOccurs="0" maxOccurs="unbounded"/>
- </xsd:sequence>
- <xsd:attribute name="Id" type="xsd:ID" use="optional"/>
- </xsd:complexType>
- <!-- End SignedDataObjectProperties-->
- <!-- Start UnsignedSignatureProperties-->
- <xsd:element name="UnsignedSignatureProperties" type="UnsignedSignaturePropertiesType"/>
- <xsd:complexType name="UnsignedSignaturePropertiesType">
- <xsd:choice maxOccurs="unbounded">
- <xsd:element ref="CounterSignature"/>
- <xsd:element ref="SignatureTimeStamp"/>
- <xsd:element ref="CompleteCertificateRefs"/>
- <xsd:element ref="CompleteRevocationRefs"/>
- <xsd:element ref="AttributeCertificateRefs"/>
- <xsd:element ref="AttributeRevocationRefs"/>
- <xsd:element ref="SigAndRefsTimeStamp"/>
- <xsd:element ref="RefsOnlyTimeStamp"/>
- <xsd:element ref="CertificateValues"/>
- <xsd:element ref="RevocationValues"/>
- <xsd:element ref="AttrAuthoritiesCertValues"/>
- <xsd:element ref="AttributeRevocationValues"/>
- <xsd:element ref="ArchiveTimeStamp"/>
- <xsd:any namespace="##other"/>
- </xsd:choice>
- <xsd:attribute name="Id" type="xsd:ID" use="optional"/>
- </xsd:complexType>
- <!-- End UnsignedSignatureProperties-->
- <!-- Start UnsignedDataObjectProperties-->
- <xsd:element name="UnsignedDataObjectProperties" type="UnsignedDataObjectPropertiesType"/>
- <xsd:complexType name="UnsignedDataObjectPropertiesType">
- <xsd:sequence>
- <xsd:element name="UnsignedDataObjectProperty" type="AnyType" maxOccurs="unbounded"/>
- </xsd:sequence>
- <xsd:attribute name="Id" type="xsd:ID" use="optional"/>
- </xsd:complexType>
- <!-- End UnsignedDataObjectProperties-->
- <!-- Start QualifyingPropertiesReference-->
- <xsd:element name="QualifyingPropertiesReference" type="QualifyingPropertiesReferenceType"/>
- <xsd:complexType name="QualifyingPropertiesReferenceType">
- <xsd:attribute name="URI" type="xsd:anyURI" use="required"/>
- <xsd:attribute name="Id" type="xsd:ID" use="optional"/>
- </xsd:complexType>
- <!-- End QualifyingPropertiesReference-->
- <!-- End container types -->
- <!-- Start SigningTime element -->
- <xsd:element name="SigningTime" type="xsd:dateTime"/>
- <!-- End SigningTime element -->
- <!-- Start SigningCertificate -->
- <xsd:element name="SigningCertificate" type="CertIDListType"/>
- <xsd:complexType name="CertIDListType">
- <xsd:sequence>
- <xsd:element name="Cert" type="CertIDType" maxOccurs="unbounded"/>
- </xsd:sequence>
- </xsd:complexType>
- <xsd:complexType name="CertIDType">
- <xsd:sequence>
- <xsd:element name="CertDigest" type="DigestAlgAndValueType"/>
- <xsd:element name="IssuerSerial" type="ds:X509IssuerSerialType"/>
- </xsd:sequence>
- <xsd:attribute name="URI" type="xsd:anyURI" use="optional"/>
- </xsd:complexType>
- <xsd:complexType name="DigestAlgAndValueType">
- <xsd:sequence>
- <xsd:element ref="ds:DigestMethod"/>
- <xsd:element ref="ds:DigestValue"/>
- </xsd:sequence>
- </xsd:complexType>
- <!-- End SigningCertificate -->
- <!-- Start SigningCertificateV2 and CertIDListV2Type -->
- <xsd:element name="SigningCertificateV2" type="CertIDListV2Type"/>
- <xsd:complexType name="CertIDListV2Type">
- <xsd:sequence>
- <xsd:element name="Cert" type="CertIDTypeV2" maxOccurs="unbounded"/>
- </xsd:sequence>
- </xsd:complexType>
- <xsd:complexType name="CertIDTypeV2">
- <xsd:sequence>
- <xsd:element name="CertDigest" type="DigestAlgAndValueType"/>
- <xsd:element name="IssuerSerialV2" type="xsd:base64Binary" minOccurs="0"/>
- </xsd:sequence>
- <xsd:attribute name="URI" type="xsd:anyURI" use="optional"/>
- </xsd:complexType>
- <!-- End SigningCertificateV2 and CertIDListV2Type -->
- <!-- Start SignaturePolicyIdentifier -->
- <xsd:element name="SignaturePolicyIdentifier" type="SignaturePolicyIdentifierType"/>
- <xsd:complexType name="SignaturePolicyIdentifierType">
- <xsd:choice>
- <xsd:element name="SignaturePolicyId" type="SignaturePolicyIdType"/>
- <xsd:element name="SignaturePolicyImplied"/>
- </xsd:choice>
- </xsd:complexType>
- <xsd:complexType name="SignaturePolicyIdType">
- <xsd:sequence>
- <xsd:element name="SigPolicyId" type="ObjectIdentifierType"/>
- <xsd:element ref="ds:Transforms" minOccurs="0"/>
- <xsd:element name="SigPolicyHash" type="DigestAlgAndValueType"/>
- <xsd:element name="SigPolicyQualifiers" type="SigPolicyQualifiersListType" minOccurs="0"/>
- </xsd:sequence>
- </xsd:complexType>
- <xsd:complexType name="SigPolicyQualifiersListType">
- <xsd:sequence>
- <xsd:element name="SigPolicyQualifier" type="AnyType" maxOccurs="unbounded"/>
- </xsd:sequence>
- </xsd:complexType>
- <xsd:element name="SPURI" type="xsd:anyURI"/>
- <xsd:element name="SPUserNotice" type="SPUserNoticeType"/>
- <xsd:complexType name="SPUserNoticeType">
- <xsd:sequence>
- <xsd:element name="NoticeRef" type="NoticeReferenceType" minOccurs="0"/>
- <xsd:element name="ExplicitText" type="xsd:string" minOccurs="0"/>
- </xsd:sequence>
- </xsd:complexType>
- <xsd:complexType name="NoticeReferenceType">
- <xsd:sequence>
- <xsd:element name="Organization" type="xsd:string"/>
- <xsd:element name="NoticeNumbers" type="IntegerListType"/>
- </xsd:sequence>
- </xsd:complexType>
- <xsd:complexType name="IntegerListType">
- <xsd:sequence>
- <xsd:element name="int" type="xsd:integer" minOccurs="0" maxOccurs="unbounded"/>
- </xsd:sequence>
- </xsd:complexType>
- <!-- End SignaturePolicyIdentifier -->
- <!-- Start CounterSignature -->
- <xsd:element name="CounterSignature" type="CounterSignatureType"/>
- <xsd:complexType name="CounterSignatureType">
- <xsd:sequence>
- <xsd:element ref="ds:Signature"/>
- </xsd:sequence>
- <xsd:attribute name="Id" type="xsd:ID" use="optional"/>
- </xsd:complexType>
- <!-- End CounterSignature -->
- <!-- Start DataObjectFormat -->
- <xsd:element name="DataObjectFormat" type="DataObjectFormatType"/>
- <xsd:complexType name="DataObjectFormatType">
- <xsd:sequence>
- <xsd:element name="Description" type="xsd:string" minOccurs="0"/>
- <xsd:element name="ObjectIdentifier" type="ObjectIdentifierType" minOccurs="0"/>
- <xsd:element name="MimeType" type="xsd:string" minOccurs="0"/>
- <xsd:element name="Encoding" type="xsd:anyURI" minOccurs="0"/>
- </xsd:sequence>
- <xsd:attribute name="ObjectReference" type="xsd:anyURI" use="required"/>
- </xsd:complexType>
- <!-- End DataObjectFormat -->
- <!-- Start CommitmentTypeIndication -->
- <xsd:element name="CommitmentTypeIndication" type="CommitmentTypeIndicationType"/>
- <xsd:complexType name="CommitmentTypeIndicationType">
- <xsd:sequence>
- <xsd:element name="CommitmentTypeId" type="ObjectIdentifierType"/>
- <xsd:choice>
- <xsd:element name="ObjectReference" type="xsd:anyURI" maxOccurs="unbounded"/>
- <xsd:element name="AllSignedDataObjects"/>
- </xsd:choice>
- <xsd:element name="CommitmentTypeQualifiers" type="CommitmentTypeQualifiersListType" minOccurs="0"/>
- </xsd:sequence>
- </xsd:complexType>
- <xsd:complexType name="CommitmentTypeQualifiersListType">
- <xsd:sequence>
- <xsd:element name="CommitmentTypeQualifier" type="AnyType" minOccurs="0" maxOccurs="unbounded"/>
- </xsd:sequence>
- </xsd:complexType>
- <!-- End CommitmentTypeIndication -->
- <!-- Start SignatureProductionPlace -->
- <xsd:element name="SignatureProductionPlace" type="SignatureProductionPlaceType"/>
- <xsd:complexType name="SignatureProductionPlaceType">
- <xsd:sequence>
- <xsd:element name="City" type="xsd:string" minOccurs="0"/>
- <xsd:element name="StateOrProvince" type="xsd:string" minOccurs="0"/>
- <xsd:element name="PostalCode" type="xsd:string" minOccurs="0"/>
- <xsd:element name="CountryName" type="xsd:string" minOccurs="0"/>
- </xsd:sequence>
- </xsd:complexType>
- <!-- End SignatureProductionPlace -->
- <!-- Start SignatureProductionPlaceV2 and SignatureProductionPlaceV2Type -->
- <xsd:element name="SignatureProductionPlaceV2" type="SignatureProductionPlaceV2Type"/>
- <xsd:complexType name="SignatureProductionPlaceV2Type">
- <xsd:sequence>
- <xsd:element name="City" type="xsd:string" minOccurs="0"/>
- <xsd:element name="StreetAddress" type="xsd:string" minOccurs="0"/>
- <xsd:element name="StateOrProvince" type="xsd:string" minOccurs="0"/>
- <xsd:element name="PostalCode" type="xsd:string" minOccurs="0"/>
- <xsd:element name="CountryName" type="xsd:string" minOccurs="0"/>
- </xsd:sequence>
- </xsd:complexType>
- <!-- End SignatureProductionPlace -->
- <!-- Start SignerRole -->
- <xsd:element name="SignerRole" type="SignerRoleType"/>
- <xsd:complexType name="SignerRoleType">
- <xsd:sequence>
- <xsd:element name="ClaimedRoles" type="ClaimedRolesListType" minOccurs="0"/>
- <xsd:element name="CertifiedRoles" type="CertifiedRolesListType" minOccurs="0"/>
- </xsd:sequence>
- </xsd:complexType>
- <xsd:complexType name="ClaimedRolesListType">
- <xsd:sequence>
- <xsd:element name="ClaimedRole" type="AnyType" maxOccurs="unbounded"/>
- </xsd:sequence>
- </xsd:complexType>
- <xsd:complexType name="CertifiedRolesListType">
- <xsd:sequence>
- <xsd:element name="CertifiedRole" type="EncapsulatedPKIDataType" maxOccurs="unbounded"/>
- </xsd:sequence>
- </xsd:complexType>
- <!-- End SignerRole -->
- <!-- Start SignerRoleV2 and SignerRoleV2Type -->
- <xsd:element name="SignerRoleV2" type="SignerRoleV2Type"/>
- <xsd:complexType name="SignerRoleV2Type">
- <xsd:sequence>
- <xsd:element ref="ClaimedRoles" minOccurs="0"/>
- <xsd:element ref="CertifiedRolesV2" minOccurs="0"/>
- <xsd:element ref="SignedAssertions" minOccurs="0"/>
- </xsd:sequence>
- </xsd:complexType>
- <xsd:element name="ClaimedRoles" type="ClaimedRolesListType"/>
- <xsd:element name="CertifiedRolesV2" type="CertifiedRolesListTypeV2"/>
- <xsd:element name="SignedAssertions" type="SignedAssertionsListType"/>
- <xsd:complexType name="CertifiedRolesListTypeV2">
- <xsd:sequence>
- <xsd:element name="CertifiedRole" type="CertifiedRoleTypeV2" maxOccurs="unbounded"/>
- </xsd:sequence>
- </xsd:complexType>
- <xsd:complexType name="CertifiedRoleTypeV2">
- <xsd:choice>
- <xsd:element ref="X509AttributeCertificate"/>
- <xsd:element ref="OtherAttributeCertificate"/>
- </xsd:choice>
- </xsd:complexType>
- <xsd:element name="X509AttributeCertificate" type="EncapsulatedPKIDataType"/>
- <xsd:element name="OtherAttributeCertificate" type="AnyType"/>
- <xsd:complexType name="SignedAssertionsListType">
- <xsd:sequence>
- <xsd:element ref="SignedAssertion" maxOccurs="unbounded"/>
- </xsd:sequence>
- </xsd:complexType>
- <xsd:element name="SignedAssertion" type="AnyType"/>
- <!-- End SignerRoleV2 and SignerRoleV2Type -->
- <xsd:element name="AllDataObjectsTimeStamp" type="XAdESTimeStampType"/>
- <xsd:element name="IndividualDataObjectsTimeStamp" type="XAdESTimeStampType"/>
- <xsd:element name="SignatureTimeStamp" type="XAdESTimeStampType"/>
- <!-- Start CompleteCertificateRefs -->
- <xsd:element name="CompleteCertificateRefs" type="CompleteCertificateRefsType"/>
- <xsd:complexType name="CompleteCertificateRefsType">
- <xsd:sequence>
- <xsd:element name="CertRefs" type="CertIDListType"/>
- </xsd:sequence>
- <xsd:attribute name="Id" type="xsd:ID" use="optional"/>
- </xsd:complexType>
- <!-- End CompleteCertificateRefs -->
- <!-- Start CompleteRevocationRefs-->
- <xsd:element name="CompleteRevocationRefs" type="CompleteRevocationRefsType"/>
- <xsd:complexType name="CompleteRevocationRefsType">
- <xsd:sequence>
- <xsd:element name="CRLRefs" type="CRLRefsType" minOccurs="0"/>
- <xsd:element name="OCSPRefs" type="OCSPRefsType" minOccurs="0"/>
- <xsd:element name="OtherRefs" type="OtherCertStatusRefsType" minOccurs="0"/>
- </xsd:sequence>
- <xsd:attribute name="Id" type="xsd:ID" use="optional"/>
- </xsd:complexType>
- <xsd:complexType name="CRLRefsType">
- <xsd:sequence>
- <xsd:element name="CRLRef" type="CRLRefType" maxOccurs="unbounded"/>
- </xsd:sequence>
- </xsd:complexType>
- <xsd:complexType name="CRLRefType">
- <xsd:sequence>
- <xsd:element name="DigestAlgAndValue" type="DigestAlgAndValueType"/>
- <xsd:element name="CRLIdentifier" type="CRLIdentifierType" minOccurs="0"/>
- </xsd:sequence>
- </xsd:complexType>
- <xsd:complexType name="CRLIdentifierType">
- <xsd:sequence>
- <xsd:element name="Issuer" type="xsd:string"/>
- <xsd:element name="IssueTime" type="xsd:dateTime"/>
- <xsd:element name="Number" type="xsd:integer" minOccurs="0"/>
- </xsd:sequence>
- <xsd:attribute name="URI" type="xsd:anyURI" use="optional"/>
- </xsd:complexType>
- <xsd:complexType name="OCSPRefsType">
- <xsd:sequence>
- <xsd:element name="OCSPRef" type="OCSPRefType" maxOccurs="unbounded"/>
- </xsd:sequence>
- </xsd:complexType>
- <xsd:complexType name="OCSPRefType">
- <xsd:sequence>
- <xsd:element name="OCSPIdentifier" type="OCSPIdentifierType"/>
- <xsd:element name="DigestAlgAndValue" type="DigestAlgAndValueType" minOccurs="0"/>
- </xsd:sequence>
- </xsd:complexType>
- <xsd:complexType name="ResponderIDType">
- <xsd:choice>
- <xsd:element name="ByName" type="xsd:string"/>
- <xsd:element name="ByKey" type="xsd:base64Binary"/>
- </xsd:choice>
- </xsd:complexType>
- <xsd:complexType name="OCSPIdentifierType">
- <xsd:sequence>
- <xsd:element name="ResponderID" type="ResponderIDType"/>
- <xsd:element name="ProducedAt" type="xsd:dateTime"/>
- </xsd:sequence>
- <xsd:attribute name="URI" type="xsd:anyURI" use="optional"/>
- </xsd:complexType>
- <xsd:complexType name="OtherCertStatusRefsType">
- <xsd:sequence>
- <xsd:element name="OtherRef" type="AnyType" maxOccurs="unbounded"/>
- </xsd:sequence>
- </xsd:complexType>
- <!-- End CompleteRevocationRefs-->
- <xsd:element name="AttributeCertificateRefs" type="CompleteCertificateRefsType"/>
- <xsd:element name="AttributeRevocationRefs" type="CompleteRevocationRefsType"/>
- <xsd:element name="SigAndRefsTimeStamp" type="XAdESTimeStampType"/>
- <xsd:element name="RefsOnlyTimeStamp" type="XAdESTimeStampType"/>
- <!-- Start CertificateValues -->
- <xsd:element name="CertificateValues" type="CertificateValuesType"/>
- <xsd:complexType name="CertificateValuesType">
- <xsd:choice minOccurs="0" maxOccurs="unbounded">
- <xsd:element name="EncapsulatedX509Certificate" type="EncapsulatedPKIDataType"/>
- <xsd:element name="OtherCertificate" type="AnyType"/>
- </xsd:choice>
- <xsd:attribute name="Id" type="xsd:ID" use="optional"/>
- </xsd:complexType>
- <!-- End CertificateValues -->
- <!-- Start RevocationValues-->
- <xsd:element name="RevocationValues" type="RevocationValuesType"/>
- <xsd:complexType name="RevocationValuesType">
- <xsd:sequence>
- <xsd:element name="CRLValues" type="CRLValuesType" minOccurs="0"/>
- <xsd:element name="OCSPValues" type="OCSPValuesType" minOccurs="0"/>
- <xsd:element name="OtherValues" type="OtherCertStatusValuesType" minOccurs="0"/>
- </xsd:sequence>
- <xsd:attribute name="Id" type="xsd:ID" use="optional"/>
- </xsd:complexType>
- <xsd:complexType name="CRLValuesType">
- <xsd:sequence>
- <xsd:element name="EncapsulatedCRLValue" type="EncapsulatedPKIDataType" maxOccurs="unbounded"/>
- </xsd:sequence>
- </xsd:complexType>
- <xsd:complexType name="OCSPValuesType">
- <xsd:sequence>
- <xsd:element name="EncapsulatedOCSPValue" type="EncapsulatedPKIDataType" maxOccurs="unbounded"/>
- </xsd:sequence>
- </xsd:complexType>
- <xsd:complexType name="OtherCertStatusValuesType">
- <xsd:sequence>
- <xsd:element name="OtherValue" type="AnyType" maxOccurs="unbounded"/>
- </xsd:sequence>
- </xsd:complexType>
- <!-- End RevocationValues-->
- <xsd:element name="AttrAuthoritiesCertValues" type="CertificateValuesType"/>
- <xsd:element name="AttributeRevocationValues" type="RevocationValuesType"/>
- <xsd:element name="ArchiveTimeStamp" type="XAdESTimeStampType"/>
-</xsd:schema>
-
+<?xml version="1.0" encoding="UTF-8"?> +<xsd:schema targetNamespace="http://uri.etsi.org/01903/v1.3.2#" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://uri.etsi.org/01903/v1.3.2#" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" elementFormDefault="qualified"> + <xsd:import namespace="http://www.w3.org/2000/09/xmldsig#" schemaLocation="http://www.w3.org/TR/2008/REC-xmldsig-core-20080610/xmldsig-core-schema.xsd"/> + <!-- Start auxiliary types definitions: AnyType, ObjectIdentifierType, +EncapsulatedPKIDataType and containers for time-stamp tokens --> + <!-- Start AnyType --> + <xsd:element name="Any" type="AnyType"/> + <xsd:complexType name="AnyType" mixed="true"> + <xsd:sequence minOccurs="0" maxOccurs="unbounded"> + <xsd:any namespace="##any" processContents="lax"/> + </xsd:sequence> + <xsd:anyAttribute namespace="##any"/> + </xsd:complexType> + <!-- End AnyType --> + <!-- Start ObjectIdentifierType--> + <xsd:element name="ObjectIdentifier" type="ObjectIdentifierType"/> + <xsd:complexType name="ObjectIdentifierType"> + <xsd:sequence> + <xsd:element name="Identifier" type="IdentifierType"/> + <xsd:element name="Description" type="xsd:string" minOccurs="0"/> + <xsd:element name="DocumentationReferences" type="DocumentationReferencesType" minOccurs="0"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="IdentifierType"> + <xsd:simpleContent> + <xsd:extension base="xsd:anyURI"> + <xsd:attribute name="Qualifier" type="QualifierType" use="optional"/> + </xsd:extension> + </xsd:simpleContent> + </xsd:complexType> + <xsd:simpleType name="QualifierType"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="OIDAsURI"/> + <xsd:enumeration value="OIDAsURN"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="DocumentationReferencesType"> + <xsd:sequence maxOccurs="unbounded"> + <xsd:element name="DocumentationReference" type="xsd:anyURI"/> + </xsd:sequence> + </xsd:complexType> + <!-- End ObjectIdentifierType--> + <!-- Start EncapsulatedPKIDataType--> + <xsd:element name="EncapsulatedPKIData" type="EncapsulatedPKIDataType"/> + <xsd:complexType name="EncapsulatedPKIDataType"> + <xsd:simpleContent> + <xsd:extension base="xsd:base64Binary"> + <xsd:attribute name="Id" type="xsd:ID" use="optional"/> + <xsd:attribute name="Encoding" type="xsd:anyURI" use="optional"/> + </xsd:extension> + </xsd:simpleContent> + </xsd:complexType> + <!-- End EncapsulatedPKIDataType --> + <!-- Start time-stamp containers types --> + <!-- Start GenericTimeStampType --> + <xsd:element name="Include" type="IncludeType"/> + <xsd:complexType name="IncludeType"> + <xsd:attribute name="URI" type="xsd:anyURI" use="required"/> + <xsd:attribute name="referencedData" type="xsd:boolean" use="optional"/> + </xsd:complexType> + <xsd:element name="ReferenceInfo" type="ReferenceInfoType"/> + <xsd:complexType name="ReferenceInfoType"> + <xsd:sequence> + <xsd:element ref="ds:DigestMethod"/> + <xsd:element ref="ds:DigestValue"/> + </xsd:sequence> + <xsd:attribute name="Id" type="xsd:ID" use="optional"/> + <xsd:attribute name="URI" type="xsd:anyURI" use="optional"/> + </xsd:complexType> + <xsd:complexType name="GenericTimeStampType" abstract="true"> + <xsd:sequence> + <xsd:choice minOccurs="0"> + <xsd:element ref="Include" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element ref="ReferenceInfo" maxOccurs="unbounded"/> + </xsd:choice> + <xsd:element ref="ds:CanonicalizationMethod" minOccurs="0"/> + <xsd:choice maxOccurs="unbounded"> + <xsd:element name="EncapsulatedTimeStamp" type="EncapsulatedPKIDataType"/> + <xsd:element name="XMLTimeStamp" type="AnyType"/> + </xsd:choice> + </xsd:sequence> + <xsd:attribute name="Id" type="xsd:ID" use="optional"/> + </xsd:complexType> + <!-- End GenericTimeStampType --> + <!-- Start XAdESTimeStampType --> + <xsd:element name="XAdESTimeStamp" type="XAdESTimeStampType"/> + <xsd:complexType name="XAdESTimeStampType"> + <xsd:complexContent> + <xsd:restriction base="GenericTimeStampType"> + <xsd:sequence> + <xsd:element ref="Include" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element ref="ds:CanonicalizationMethod" minOccurs="0"/> + <xsd:choice maxOccurs="unbounded"> + <xsd:element name="EncapsulatedTimeStamp" type="EncapsulatedPKIDataType"/> + <xsd:element name="XMLTimeStamp" type="AnyType"/> + </xsd:choice> + </xsd:sequence> + <xsd:attribute name="Id" type="xsd:ID" use="optional"/> + </xsd:restriction> + </xsd:complexContent> + </xsd:complexType> + <!-- End XAdESTimeStampType --> + <!-- Start OtherTimeStampType --> + <xsd:element name="OtherTimeStamp" type="OtherTimeStampType"/> + <xsd:complexType name="OtherTimeStampType"> + <xsd:complexContent> + <xsd:restriction base="GenericTimeStampType"> + <xsd:sequence> + <xsd:element ref="ReferenceInfo" maxOccurs="unbounded"/> + <xsd:element ref="ds:CanonicalizationMethod" minOccurs="0"/> + <xsd:choice> + <xsd:element name="EncapsulatedTimeStamp" type="EncapsulatedPKIDataType"/> + <xsd:element name="XMLTimeStamp" type="AnyType"/> + </xsd:choice> + </xsd:sequence> + <xsd:attribute name="Id" type="xsd:ID" use="optional"/> + </xsd:restriction> + </xsd:complexContent> + </xsd:complexType> + <!-- End OtherTimeStampType --> + <!-- End time-stamp containers types --> + <!-- End auxiliary types definitions--> + <!-- Start container types --> + <!-- Start QualifyingProperties --> + <xsd:element name="QualifyingProperties" type="QualifyingPropertiesType"/> + <xsd:complexType name="QualifyingPropertiesType"> + <xsd:sequence> + <xsd:element ref="SignedProperties" minOccurs="0"/> + <xsd:element ref="UnsignedProperties" minOccurs="0"/> + </xsd:sequence> + <xsd:attribute name="Target" type="xsd:anyURI" use="required"/> + <xsd:attribute name="Id" type="xsd:ID" use="optional"/> + </xsd:complexType> + <!-- End QualifyingProperties --> + <!-- Start SignedProperties--> + <xsd:element name="SignedProperties" type="SignedPropertiesType"/> + <xsd:complexType name="SignedPropertiesType"> + <xsd:sequence> + <xsd:element ref="SignedSignatureProperties" minOccurs="0"/> + <xsd:element ref="SignedDataObjectProperties" minOccurs="0"/> + </xsd:sequence> + <xsd:attribute name="Id" type="xsd:ID" use="optional"/> + </xsd:complexType> + <!-- End SignedProperties--> + <!-- Start UnsignedProperties--> + <xsd:element name="UnsignedProperties" type="UnsignedPropertiesType"/> + <xsd:complexType name="UnsignedPropertiesType"> + <xsd:sequence> + <xsd:element ref="UnsignedSignatureProperties" minOccurs="0"/> + <xsd:element ref="UnsignedDataObjectProperties" minOccurs="0"/> + </xsd:sequence> + <xsd:attribute name="Id" type="xsd:ID" use="optional"/> + </xsd:complexType> + <!-- End UnsignedProperties--> + <!-- Start SignedSignatureProperties--> + <!-- Definition changed: added new optional children for EN --> + <xsd:element name="SignedSignatureProperties" type="SignedSignaturePropertiesType"/> + <xsd:complexType name="SignedSignaturePropertiesType"> + <xsd:sequence> + <xsd:element ref="SigningTime" minOccurs="0"/> + <xsd:element ref="SigningCertificate" minOccurs="0"/> + <xsd:element ref="SigningCertificateV2" minOccurs="0"/> + <xsd:element ref="SignaturePolicyIdentifier" minOccurs="0"/> + <xsd:element ref="SignatureProductionPlace" minOccurs="0"/> + <xsd:element ref="SignatureProductionPlaceV2" minOccurs="0"/> + <xsd:element ref="SignerRole" minOccurs="0"/> + <xsd:element ref="SignerRoleV2" minOccurs="0"/> + <xsd:any namespace="##other" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + <xsd:attribute name="Id" type="xsd:ID" use="optional"/> + </xsd:complexType> + <!-- End SignedSignatureProperties--> + <!-- Start SignedDataObjectProperties--> + <xsd:element name="SignedDataObjectProperties" type="SignedDataObjectPropertiesType"/> + <xsd:complexType name="SignedDataObjectPropertiesType"> + <xsd:sequence> + <xsd:element ref="DataObjectFormat" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element ref="CommitmentTypeIndication" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element ref="AllDataObjectsTimeStamp" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element ref="IndividualDataObjectsTimeStamp" minOccurs="0" maxOccurs="unbounded"/> + <xsd:any namespace="##other" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + <xsd:attribute name="Id" type="xsd:ID" use="optional"/> + </xsd:complexType> + <!-- End SignedDataObjectProperties--> + <!-- Start UnsignedSignatureProperties--> + <xsd:element name="UnsignedSignatureProperties" type="UnsignedSignaturePropertiesType"/> + <xsd:complexType name="UnsignedSignaturePropertiesType"> + <xsd:choice maxOccurs="unbounded"> + <xsd:element ref="CounterSignature"/> + <xsd:element ref="SignatureTimeStamp"/> + <xsd:element ref="CompleteCertificateRefs"/> + <xsd:element ref="CompleteRevocationRefs"/> + <xsd:element ref="AttributeCertificateRefs"/> + <xsd:element ref="AttributeRevocationRefs"/> + <xsd:element ref="SigAndRefsTimeStamp"/> + <xsd:element ref="RefsOnlyTimeStamp"/> + <xsd:element ref="CertificateValues"/> + <xsd:element ref="RevocationValues"/> + <xsd:element ref="AttrAuthoritiesCertValues"/> + <xsd:element ref="AttributeRevocationValues"/> + <xsd:element ref="ArchiveTimeStamp"/> + <xsd:any namespace="##other"/> + </xsd:choice> + <xsd:attribute name="Id" type="xsd:ID" use="optional"/> + </xsd:complexType> + <!-- End UnsignedSignatureProperties--> + <!-- Start UnsignedDataObjectProperties--> + <xsd:element name="UnsignedDataObjectProperties" type="UnsignedDataObjectPropertiesType"/> + <xsd:complexType name="UnsignedDataObjectPropertiesType"> + <xsd:sequence> + <xsd:element name="UnsignedDataObjectProperty" type="AnyType" maxOccurs="unbounded"/> + </xsd:sequence> + <xsd:attribute name="Id" type="xsd:ID" use="optional"/> + </xsd:complexType> + <!-- End UnsignedDataObjectProperties--> + <!-- Start QualifyingPropertiesReference--> + <xsd:element name="QualifyingPropertiesReference" type="QualifyingPropertiesReferenceType"/> + <xsd:complexType name="QualifyingPropertiesReferenceType"> + <xsd:attribute name="URI" type="xsd:anyURI" use="required"/> + <xsd:attribute name="Id" type="xsd:ID" use="optional"/> + </xsd:complexType> + <!-- End QualifyingPropertiesReference--> + <!-- End container types --> + <!-- Start SigningTime element --> + <xsd:element name="SigningTime" type="xsd:dateTime"/> + <!-- End SigningTime element --> + <!-- Start SigningCertificate --> + <xsd:element name="SigningCertificate" type="CertIDListType"/> + <xsd:complexType name="CertIDListType"> + <xsd:sequence> + <xsd:element name="Cert" type="CertIDType" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CertIDType"> + <xsd:sequence> + <xsd:element name="CertDigest" type="DigestAlgAndValueType"/> + <xsd:element name="IssuerSerial" type="ds:X509IssuerSerialType"/> + </xsd:sequence> + <xsd:attribute name="URI" type="xsd:anyURI" use="optional"/> + </xsd:complexType> + <xsd:complexType name="DigestAlgAndValueType"> + <xsd:sequence> + <xsd:element ref="ds:DigestMethod"/> + <xsd:element ref="ds:DigestValue"/> + </xsd:sequence> + </xsd:complexType> + <!-- End SigningCertificate --> + <!-- Start SigningCertificateV2 and CertIDListV2Type --> + <xsd:element name="SigningCertificateV2" type="CertIDListV2Type"/> + <xsd:complexType name="CertIDListV2Type"> + <xsd:sequence> + <xsd:element name="Cert" type="CertIDTypeV2" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CertIDTypeV2"> + <xsd:sequence> + <xsd:element name="CertDigest" type="DigestAlgAndValueType"/> + <xsd:element name="IssuerSerialV2" type="xsd:base64Binary" minOccurs="0"/> + </xsd:sequence> + <xsd:attribute name="URI" type="xsd:anyURI" use="optional"/> + </xsd:complexType> + <!-- End SigningCertificateV2 and CertIDListV2Type --> + <!-- Start SignaturePolicyIdentifier --> + <xsd:element name="SignaturePolicyIdentifier" type="SignaturePolicyIdentifierType"/> + <xsd:complexType name="SignaturePolicyIdentifierType"> + <xsd:choice> + <xsd:element name="SignaturePolicyId" type="SignaturePolicyIdType"/> + <xsd:element name="SignaturePolicyImplied"/> + </xsd:choice> + </xsd:complexType> + <xsd:complexType name="SignaturePolicyIdType"> + <xsd:sequence> + <xsd:element name="SigPolicyId" type="ObjectIdentifierType"/> + <xsd:element ref="ds:Transforms" minOccurs="0"/> + <xsd:element name="SigPolicyHash" type="DigestAlgAndValueType"/> + <xsd:element name="SigPolicyQualifiers" type="SigPolicyQualifiersListType" minOccurs="0"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="SigPolicyQualifiersListType"> + <xsd:sequence> + <xsd:element name="SigPolicyQualifier" type="AnyType" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:element name="SPURI" type="xsd:anyURI"/> + <xsd:element name="SPUserNotice" type="SPUserNoticeType"/> + <xsd:complexType name="SPUserNoticeType"> + <xsd:sequence> + <xsd:element name="NoticeRef" type="NoticeReferenceType" minOccurs="0"/> + <xsd:element name="ExplicitText" type="xsd:string" minOccurs="0"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="NoticeReferenceType"> + <xsd:sequence> + <xsd:element name="Organization" type="xsd:string"/> + <xsd:element name="NoticeNumbers" type="IntegerListType"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="IntegerListType"> + <xsd:sequence> + <xsd:element name="int" type="xsd:integer" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <!-- End SignaturePolicyIdentifier --> + <!-- Start CounterSignature --> + <xsd:element name="CounterSignature" type="CounterSignatureType"/> + <xsd:complexType name="CounterSignatureType"> + <xsd:sequence> + <xsd:element ref="ds:Signature"/> + </xsd:sequence> + <xsd:attribute name="Id" type="xsd:ID" use="optional"/> + </xsd:complexType> + <!-- End CounterSignature --> + <!-- Start DataObjectFormat --> + <xsd:element name="DataObjectFormat" type="DataObjectFormatType"/> + <xsd:complexType name="DataObjectFormatType"> + <xsd:sequence> + <xsd:element name="Description" type="xsd:string" minOccurs="0"/> + <xsd:element name="ObjectIdentifier" type="ObjectIdentifierType" minOccurs="0"/> + <xsd:element name="MimeType" type="xsd:string" minOccurs="0"/> + <xsd:element name="Encoding" type="xsd:anyURI" minOccurs="0"/> + </xsd:sequence> + <xsd:attribute name="ObjectReference" type="xsd:anyURI" use="required"/> + </xsd:complexType> + <!-- End DataObjectFormat --> + <!-- Start CommitmentTypeIndication --> + <xsd:element name="CommitmentTypeIndication" type="CommitmentTypeIndicationType"/> + <xsd:complexType name="CommitmentTypeIndicationType"> + <xsd:sequence> + <xsd:element name="CommitmentTypeId" type="ObjectIdentifierType"/> + <xsd:choice> + <xsd:element name="ObjectReference" type="xsd:anyURI" maxOccurs="unbounded"/> + <xsd:element name="AllSignedDataObjects"/> + </xsd:choice> + <xsd:element name="CommitmentTypeQualifiers" type="CommitmentTypeQualifiersListType" minOccurs="0"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CommitmentTypeQualifiersListType"> + <xsd:sequence> + <xsd:element name="CommitmentTypeQualifier" type="AnyType" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <!-- End CommitmentTypeIndication --> + <!-- Start SignatureProductionPlace --> + <xsd:element name="SignatureProductionPlace" type="SignatureProductionPlaceType"/> + <xsd:complexType name="SignatureProductionPlaceType"> + <xsd:sequence> + <xsd:element name="City" type="xsd:string" minOccurs="0"/> + <xsd:element name="StateOrProvince" type="xsd:string" minOccurs="0"/> + <xsd:element name="PostalCode" type="xsd:string" minOccurs="0"/> + <xsd:element name="CountryName" type="xsd:string" minOccurs="0"/> + </xsd:sequence> + </xsd:complexType> + <!-- End SignatureProductionPlace --> + <!-- Start SignatureProductionPlaceV2 and SignatureProductionPlaceV2Type --> + <xsd:element name="SignatureProductionPlaceV2" type="SignatureProductionPlaceV2Type"/> + <xsd:complexType name="SignatureProductionPlaceV2Type"> + <xsd:sequence> + <xsd:element name="City" type="xsd:string" minOccurs="0"/> + <xsd:element name="StreetAddress" type="xsd:string" minOccurs="0"/> + <xsd:element name="StateOrProvince" type="xsd:string" minOccurs="0"/> + <xsd:element name="PostalCode" type="xsd:string" minOccurs="0"/> + <xsd:element name="CountryName" type="xsd:string" minOccurs="0"/> + </xsd:sequence> + </xsd:complexType> + <!-- End SignatureProductionPlace --> + <!-- Start SignerRole --> + <xsd:element name="SignerRole" type="SignerRoleType"/> + <xsd:complexType name="SignerRoleType"> + <xsd:sequence> + <xsd:element name="ClaimedRoles" type="ClaimedRolesListType" minOccurs="0"/> + <xsd:element name="CertifiedRoles" type="CertifiedRolesListType" minOccurs="0"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="ClaimedRolesListType"> + <xsd:sequence> + <xsd:element name="ClaimedRole" type="AnyType" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CertifiedRolesListType"> + <xsd:sequence> + <xsd:element name="CertifiedRole" type="EncapsulatedPKIDataType" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <!-- End SignerRole --> + <!-- Start SignerRoleV2 and SignerRoleV2Type --> + <xsd:element name="SignerRoleV2" type="SignerRoleV2Type"/> + <xsd:complexType name="SignerRoleV2Type"> + <xsd:sequence> + <xsd:element ref="ClaimedRoles" minOccurs="0"/> + <xsd:element ref="CertifiedRolesV2" minOccurs="0"/> + <xsd:element ref="SignedAssertions" minOccurs="0"/> + </xsd:sequence> + </xsd:complexType> + <xsd:element name="ClaimedRoles" type="ClaimedRolesListType"/> + <xsd:element name="CertifiedRolesV2" type="CertifiedRolesListTypeV2"/> + <xsd:element name="SignedAssertions" type="SignedAssertionsListType"/> + <xsd:complexType name="CertifiedRolesListTypeV2"> + <xsd:sequence> + <xsd:element name="CertifiedRole" type="CertifiedRoleTypeV2" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CertifiedRoleTypeV2"> + <xsd:choice> + <xsd:element ref="X509AttributeCertificate"/> + <xsd:element ref="OtherAttributeCertificate"/> + </xsd:choice> + </xsd:complexType> + <xsd:element name="X509AttributeCertificate" type="EncapsulatedPKIDataType"/> + <xsd:element name="OtherAttributeCertificate" type="AnyType"/> + <xsd:complexType name="SignedAssertionsListType"> + <xsd:sequence> + <xsd:element ref="SignedAssertion" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:element name="SignedAssertion" type="AnyType"/> + <!-- End SignerRoleV2 and SignerRoleV2Type --> + <xsd:element name="AllDataObjectsTimeStamp" type="XAdESTimeStampType"/> + <xsd:element name="IndividualDataObjectsTimeStamp" type="XAdESTimeStampType"/> + <xsd:element name="SignatureTimeStamp" type="XAdESTimeStampType"/> + <!-- Start CompleteCertificateRefs --> + <xsd:element name="CompleteCertificateRefs" type="CompleteCertificateRefsType"/> + <xsd:complexType name="CompleteCertificateRefsType"> + <xsd:sequence> + <xsd:element name="CertRefs" type="CertIDListType"/> + </xsd:sequence> + <xsd:attribute name="Id" type="xsd:ID" use="optional"/> + </xsd:complexType> + <!-- End CompleteCertificateRefs --> + <!-- Start CompleteRevocationRefs--> + <xsd:element name="CompleteRevocationRefs" type="CompleteRevocationRefsType"/> + <xsd:complexType name="CompleteRevocationRefsType"> + <xsd:sequence> + <xsd:element name="CRLRefs" type="CRLRefsType" minOccurs="0"/> + <xsd:element name="OCSPRefs" type="OCSPRefsType" minOccurs="0"/> + <xsd:element name="OtherRefs" type="OtherCertStatusRefsType" minOccurs="0"/> + </xsd:sequence> + <xsd:attribute name="Id" type="xsd:ID" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CRLRefsType"> + <xsd:sequence> + <xsd:element name="CRLRef" type="CRLRefType" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CRLRefType"> + <xsd:sequence> + <xsd:element name="DigestAlgAndValue" type="DigestAlgAndValueType"/> + <xsd:element name="CRLIdentifier" type="CRLIdentifierType" minOccurs="0"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CRLIdentifierType"> + <xsd:sequence> + <xsd:element name="Issuer" type="xsd:string"/> + <xsd:element name="IssueTime" type="xsd:dateTime"/> + <xsd:element name="Number" type="xsd:integer" minOccurs="0"/> + </xsd:sequence> + <xsd:attribute name="URI" type="xsd:anyURI" use="optional"/> + </xsd:complexType> + <xsd:complexType name="OCSPRefsType"> + <xsd:sequence> + <xsd:element name="OCSPRef" type="OCSPRefType" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="OCSPRefType"> + <xsd:sequence> + <xsd:element name="OCSPIdentifier" type="OCSPIdentifierType"/> + <xsd:element name="DigestAlgAndValue" type="DigestAlgAndValueType" minOccurs="0"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="ResponderIDType"> + <xsd:choice> + <xsd:element name="ByName" type="xsd:string"/> + <xsd:element name="ByKey" type="xsd:base64Binary"/> + </xsd:choice> + </xsd:complexType> + <xsd:complexType name="OCSPIdentifierType"> + <xsd:sequence> + <xsd:element name="ResponderID" type="ResponderIDType"/> + <xsd:element name="ProducedAt" type="xsd:dateTime"/> + </xsd:sequence> + <xsd:attribute name="URI" type="xsd:anyURI" use="optional"/> + </xsd:complexType> + <xsd:complexType name="OtherCertStatusRefsType"> + <xsd:sequence> + <xsd:element name="OtherRef" type="AnyType" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <!-- End CompleteRevocationRefs--> + <xsd:element name="AttributeCertificateRefs" type="CompleteCertificateRefsType"/> + <xsd:element name="AttributeRevocationRefs" type="CompleteRevocationRefsType"/> + <xsd:element name="SigAndRefsTimeStamp" type="XAdESTimeStampType"/> + <xsd:element name="RefsOnlyTimeStamp" type="XAdESTimeStampType"/> + <!-- Start CertificateValues --> + <xsd:element name="CertificateValues" type="CertificateValuesType"/> + <xsd:complexType name="CertificateValuesType"> + <xsd:choice minOccurs="0" maxOccurs="unbounded"> + <xsd:element name="EncapsulatedX509Certificate" type="EncapsulatedPKIDataType"/> + <xsd:element name="OtherCertificate" type="AnyType"/> + </xsd:choice> + <xsd:attribute name="Id" type="xsd:ID" use="optional"/> + </xsd:complexType> + <!-- End CertificateValues --> + <!-- Start RevocationValues--> + <xsd:element name="RevocationValues" type="RevocationValuesType"/> + <xsd:complexType name="RevocationValuesType"> + <xsd:sequence> + <xsd:element name="CRLValues" type="CRLValuesType" minOccurs="0"/> + <xsd:element name="OCSPValues" type="OCSPValuesType" minOccurs="0"/> + <xsd:element name="OtherValues" type="OtherCertStatusValuesType" minOccurs="0"/> + </xsd:sequence> + <xsd:attribute name="Id" type="xsd:ID" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CRLValuesType"> + <xsd:sequence> + <xsd:element name="EncapsulatedCRLValue" type="EncapsulatedPKIDataType" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="OCSPValuesType"> + <xsd:sequence> + <xsd:element name="EncapsulatedOCSPValue" type="EncapsulatedPKIDataType" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="OtherCertStatusValuesType"> + <xsd:sequence> + <xsd:element name="OtherValue" type="AnyType" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <!-- End RevocationValues--> + <xsd:element name="AttrAuthoritiesCertValues" type="CertificateValuesType"/> + <xsd:element name="AttributeRevocationValues" type="RevocationValuesType"/> + <xsd:element name="ArchiveTimeStamp" type="XAdESTimeStampType"/> +</xsd:schema> + diff --git a/moaSig/common/src/main/resources/resources/schemas/XAdES-1.4.1.xsd b/moaSig/common/src/main/resources/resources/schemas/XAdES01903v141-201601.xsd index 4022bc2..1f3aaf9 100644 --- a/moaSig/common/src/main/resources/resources/schemas/XAdES-1.4.1.xsd +++ b/moaSig/common/src/main/resources/resources/schemas/XAdES01903v141-201601.xsd @@ -1,64 +1,64 @@ -<?xml version="1.0" encoding="UTF-8"?>
-<xsd:schema targetNamespace="http://uri.etsi.org/01903/v1.4.1#" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns="http://uri.etsi.org/01903/v1.4.1#" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xades="http://uri.etsi.org/01903/v1.3.2#" elementFormDefault="qualified">
- <xsd:import namespace="http://www.w3.org/2000/09/xmldsig#" schemaLocation="xmldsig-core-schema.xsd"/>
- <xsd:import namespace="http://uri.etsi.org/01903/v1.3.2#" schemaLocation="XAdES-1.3.2.xsd"/>
- <!-- Start CertificateValues -->
- <xsd:element name="TimeStampValidationData" type="ValidationDataType"/>
- <xsd:complexType name="ValidationDataType">
- <xsd:sequence>
- <xsd:element ref="xades:CertificateValues" minOccurs="0"/>
- <xsd:element ref="xades:RevocationValues" minOccurs="0"/>
- </xsd:sequence>
- <xsd:attribute name="Id" type="xsd:ID" use="optional"/>
- <xsd:attribute name="URI" type="xsd:anyURI" use="optional"/>
- </xsd:complexType>
- <xsd:element name="SignaturePolicyStore" type="SignaturePolicyStoreType"/>
- <xsd:complexType name="SignaturePolicyStoreType">
- <xsd:sequence>
- <xsd:element ref="SPDocSpecification"/>
- <xsd:choice>
- <xsd:element name="SignaturePolicyDocument" type="xsd:base64Binary"/>
- <xsd:element name="SigPolDocLocalURI" type="xsd:anyURI"/>
- </xsd:choice>
- </xsd:sequence>
- <xsd:attribute name="Id" type="xsd:ID" use="optional"/>
- </xsd:complexType>
- <xsd:element name="SPDocSpecification" type="xades:ObjectIdentifierType"/>
- <!-- -->
- <!-- Start RenewedDigests-->
- <!-- -->
- <xsd:element name="RenewedDigests" type="RenewedDigestsType"/>
- <xsd:complexType name="RenewedDigestsType">
- <xsd:sequence>
- <xsd:element ref="ds:DigestMethod"/>
- <xsd:element ref="RecomputedDigestValue" maxOccurs="unbounded"/>
- </xsd:sequence>
- <xsd:attribute name="Id" type="xsd:ID" use="optional"/>
- </xsd:complexType>
- <xsd:element name="RecomputedDigestValue" type="RecomputedDigestValueType"/>
- <xsd:complexType name="RecomputedDigestValueType">
- <xsd:simpleContent>
- <xsd:extension base="ds:DigestValueType">
- <xsd:attribute name="Order" type="xsd:integer" use="required"/>
- </xsd:extension>
- </xsd:simpleContent>
- </xsd:complexType>
- <!-- -->
- <!-- End RenewedDigests-->
- <!-- -->
- <!-- ArchiveTimeStamp in namespace with URI 'http://uri.etsi.org/01903/v1.4.1#'-->
- <xsd:element name="ArchiveTimeStamp" type="xades:XAdESTimeStampType"/>
- <!--CompleteCertificateRefsV2 and AttributeCertificateRefsV2-->
- <xsd:element name="CompleteCertificateRefsV2" type="CompleteCertificateRefsTypeV2"/>
- <xsd:element name="AttributeCertificateRefsV2" type="CompleteCertificateRefsTypeV2"/>
- <xsd:complexType name="CompleteCertificateRefsTypeV2">
- <xsd:sequence>
- <xsd:element name="CertRefs" type="xades:CertIDListV2Type"/>
- </xsd:sequence>
- <xsd:attribute name="Id" type="xsd:ID" use="optional"/>
- </xsd:complexType>
- <!-- SigAndRefsTimeStampV2 and RefsOnlyTimeStampV2-->
- <xsd:element name="SigAndRefsTimeStampV2" type="xades:XAdESTimeStampType"/>
- <xsd:element name="RefsOnlyTimeStampV2" type="xades:XAdESTimeStampType"/>
-</xsd:schema>
-
+<?xml version="1.0" encoding="UTF-8"?> +<xsd:schema targetNamespace="http://uri.etsi.org/01903/v1.4.1#" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns="http://uri.etsi.org/01903/v1.4.1#" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xades="http://uri.etsi.org/01903/v1.3.2#" elementFormDefault="qualified"> + <xsd:import namespace="http://www.w3.org/2000/09/xmldsig#" schemaLocation="http://www.w3.org/TR/2008/REC-xmldsig-core-20080610/xmldsig-core-schema.xsd"/> + <xsd:import namespace="http://uri.etsi.org/01903/v1.3.2#" schemaLocation="http://uri.etsi.org/01903/v1.3.2/XAdES01903v132-201601.xsd"/> + <!-- Start CertificateValues --> + <xsd:element name="TimeStampValidationData" type="ValidationDataType"/> + <xsd:complexType name="ValidationDataType"> + <xsd:sequence> + <xsd:element ref="xades:CertificateValues" minOccurs="0"/> + <xsd:element ref="xades:RevocationValues" minOccurs="0"/> + </xsd:sequence> + <xsd:attribute name="Id" type="xsd:ID" use="optional"/> + <xsd:attribute name="URI" type="xsd:anyURI" use="optional"/> + </xsd:complexType> + <xsd:element name="SignaturePolicyStore" type="SignaturePolicyStoreType"/> + <xsd:complexType name="SignaturePolicyStoreType"> + <xsd:sequence> + <xsd:element ref="SPDocSpecification"/> + <xsd:choice> + <xsd:element name="SignaturePolicyDocument" type="xsd:base64Binary"/> + <xsd:element name="SigPolDocLocalURI" type="xsd:anyURI"/> + </xsd:choice> + </xsd:sequence> + <xsd:attribute name="Id" type="xsd:ID" use="optional"/> + </xsd:complexType> + <xsd:element name="SPDocSpecification" type="xades:ObjectIdentifierType"/> + <!-- --> + <!-- Start RenewedDigests--> + <!-- --> + <xsd:element name="RenewedDigests" type="RenewedDigestsType"/> + <xsd:complexType name="RenewedDigestsType"> + <xsd:sequence> + <xsd:element ref="ds:DigestMethod"/> + <xsd:element ref="RecomputedDigestValue" maxOccurs="unbounded"/> + </xsd:sequence> + <xsd:attribute name="Id" type="xsd:ID" use="optional"/> + </xsd:complexType> + <xsd:element name="RecomputedDigestValue" type="RecomputedDigestValueType"/> + <xsd:complexType name="RecomputedDigestValueType"> + <xsd:simpleContent> + <xsd:extension base="ds:DigestValueType"> + <xsd:attribute name="Order" type="xsd:integer" use="required"/> + </xsd:extension> + </xsd:simpleContent> + </xsd:complexType> + <!-- --> + <!-- End RenewedDigests--> + <!-- --> + <!-- ArchiveTimeStamp in namespace with URI 'http://uri.etsi.org/01903/v1.4.1#'--> + <xsd:element name="ArchiveTimeStamp" type="xades:XAdESTimeStampType"/> + <!--CompleteCertificateRefsV2 and AttributeCertificateRefsV2--> + <xsd:element name="CompleteCertificateRefsV2" type="CompleteCertificateRefsTypeV2"/> + <xsd:element name="AttributeCertificateRefsV2" type="CompleteCertificateRefsTypeV2"/> + <xsd:complexType name="CompleteCertificateRefsTypeV2"> + <xsd:sequence> + <xsd:element name="CertRefs" type="xades:CertIDListV2Type"/> + </xsd:sequence> + <xsd:attribute name="Id" type="xsd:ID" use="optional"/> + </xsd:complexType> + <!-- SigAndRefsTimeStampV2 and RefsOnlyTimeStampV2--> + <xsd:element name="SigAndRefsTimeStampV2" type="xades:XAdESTimeStampType"/> + <xsd:element name="RefsOnlyTimeStampV2" type="xades:XAdESTimeStampType"/> +</xsd:schema> + diff --git a/moaSig/common/src/main/resources/resources/schemas/eIDAS_saml_extensions.xsd b/moaSig/common/src/main/resources/resources/schemas/eIDAS_saml_extensions.xsd new file mode 100644 index 0000000..76b82a2 --- /dev/null +++ b/moaSig/common/src/main/resources/resources/schemas/eIDAS_saml_extensions.xsd @@ -0,0 +1,31 @@ +<?xml version="1.0" encoding="UTF-8"?> +<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:eidas="http://eidas.europa.eu/saml-extensions" targetNamespace="http://eidas.europa.eu/saml-extensions" elementFormDefault="qualified" attributeFormDefault="unqualified"> + + <xsd:element name="SPType" type="eidas:SPTypeType"/> + <xsd:simpleType name="SPTypeType"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="public"/> + <xsd:enumeration value="private"/> + </xsd:restriction> + </xsd:simpleType> + + <xsd:element name="RequestedAttributes" type="eidas:RequestedAttributesType"/> + <xsd:complexType name="RequestedAttributesType"> + <xsd:sequence> + <xsd:element minOccurs="0" maxOccurs="unbounded" ref="eidas:RequestedAttribute"/> + </xsd:sequence> + </xsd:complexType> + + <xsd:element name="RequestedAttribute" type="eidas:RequestedAttributeType"/> + <xsd:complexType name="RequestedAttributeType"> + <xsd:sequence> + <xsd:element name="AttributeValue" minOccurs="0" maxOccurs="unbounded" type="xsd:anyType"/> + </xsd:sequence> + <xsd:attribute name="Name" type="xsd:string" use="required"/> + <xsd:attribute name="NameFormat" type="xsd:anyURI" use="required" /> + <xsd:attribute name="isRequired" type="xsd:boolean" use="required"/> + <xsd:attribute name="FriendlyName" type="xsd:string" use="optional"/> + <xsd:anyAttribute namespace="##other" processContents="lax" /> + </xsd:complexType> + +</xsd:schema> diff --git a/moaSig/common/src/main/resources/resources/schemas/zuse_mypersondata_en_p2.xsd b/moaSig/common/src/main/resources/resources/schemas/zuse_mypersondata_en_p2.xsd new file mode 100644 index 0000000..f23ee96 --- /dev/null +++ b/moaSig/common/src/main/resources/resources/schemas/zuse_mypersondata_en_p2.xsd @@ -0,0 +1,369 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- Mit XMLSpy v2016 (http://www.altova.com) von Arne Tauber (TU Graz) bearbeitet --> +<xs:schema xmlns:dsig="http://www.w3.org/2000/09/xmldsig#" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:p="http://reference.e-government.gv.at/namespace/persondata/phase2/20181206#" targetNamespace="http://reference.e-government.gv.at/namespace/persondata/phase2/20181206#" elementFormDefault="qualified" attributeFormDefault="unqualified" version="2.2.006"> + <xs:import namespace="http://www.w3.org/2000/09/xmldsig#" schemaLocation="W3C-XMLDSig.xsd"/> + <xs:annotation> + <xs:documentation>This version of person deploys only global elements. All types derived from abstract types have been replaced by substitution groups</xs:documentation> + </xs:annotation> + <!-- ### structure for person data ### --> + <xs:element name="Person" type="p:AbstractPersonType" abstract="true"/> + <!-- ### structure of a person with Identification ### --> + <xs:element name="PersonAndIdentification" type="p:PersonAndIdentificationType"> + <xs:annotation> + <xs:documentation>element of person details type</xs:documentation> + </xs:annotation> + </xs:element> + <!-- ### structure of a person with address### --> + <xs:element name="PersonAndAddress" type="p:PersonAndAddressType"> + <xs:annotation> + <xs:documentation>element of signed person datastructure type</xs:documentation> + </xs:annotation> + </xs:element> + <!-- ### physical person, corporate body and authority ### --> + <xs:element name="PhysicalPerson" type="p:PhysicalPersonType" substitutionGroup="p:Person"> + <xs:annotation> + <xs:documentation>element of physical person type, dreived from Person </xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="CorporateBody" type="p:CorporateBodyType" substitutionGroup="p:Person"> + <xs:annotation> + <xs:documentation>element of corporate body type, derived from Person</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="Name" type="p:PersonNameType"> + <xs:annotation> + <xs:documentation>data related to the person's name</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="FullName" type="xs:token"> + <xs:annotation> + <xs:documentation>name of corporate body (whole name), compare VollerName</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="Organization" type="xs:token"> + <xs:annotation> + <xs:documentation>part of an organisation, see also X.500 ou (eg departement, section, branch, ...) , compare Organisation</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="Target" type="xs:anyURI"> + <xs:annotation> + <xs:documentation>Beinhaltet die Bereichskennung und entweder das VKZ oder den Service-Identifier der Zielorganisation für die das vbPK-ZU umzuschlüsseln ist. Das Target ist in der Form "urn:publicid:gv.at:ecdid+«VKZ od. Service-ID»+«Bereich»" zu liefern. (vgl. SZR 3.0 Anwendungsdokumentation)</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="DateOfBirth" type="xs:date"> + <xs:annotation> + <xs:documentation>date of birth, compare Geburtsdatum</xs:documentation> + </xs:annotation> + </xs:element> + <!-- ### adress data for various types of communications ### --> + <xs:element name="Address" type="p:AbstractAddressType" abstract="true"/> + <xs:element name="PostalAddress" type="p:PostalAddressType" substitutionGroup="p:Address"> + <xs:annotation> + <xs:documentation>Postal or ZMR Address, compare PostAdresse</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="InternetAddress" type="p:InternetAddressType" substitutionGroup="p:Address"> + <xs:annotation> + <xs:documentation>element of internet address type</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="TelephoneAddress" type="p:TelephoneAddressType" substitutionGroup="p:Address"> + <xs:annotation> + <xs:documentation>element of TelephoneAddressType, compare TelefonAdresse</xs:documentation> + </xs:annotation> + </xs:element> + <!-- ### Identification elements ###--> + <xs:element name="Identification" type="p:IdentificationType"> + <xs:annotation> + <xs:documentation>unique identifier</xs:documentation> + </xs:annotation> + </xs:element> + <xs:complexType name="IdentificationType"> + <xs:annotation> + <xs:documentation>unique identifier</xs:documentation> + </xs:annotation> + <xs:sequence> + <xs:element name="Value"> + <xs:annotation> + <xs:documentation>actual value of the identifier.</xs:documentation> + </xs:annotation> + <xs:complexType> + <xs:simpleContent> + <xs:extension base="xs:string"> + <xs:attribute name="Id" type="xs:ID" use="optional"/> + </xs:extension> + </xs:simpleContent> + </xs:complexType> + </xs:element> + <xs:element name="Type" type="xs:anyURI"> + <xs:annotation> + <xs:documentation>type of value (eg 'ZMR', 'SV-Nummer', 'Martrikelnummer', database identification, ...)</xs:documentation> + </xs:annotation> + </xs:element> + </xs:sequence> + <xs:attribute name="Id" type="xs:ID" use="optional"/> + </xs:complexType> + <!--### Complex types ###--> + <xs:complexType name="PersonAndIdentificationType"> + <xs:annotation> + <xs:documentation>person datastructure. The first Identification elements (from the base type) denote the record as such (e.g. database key for this record) - not to be mistaken for identifiers of the person or of an address (they have their own Identification elements).</xs:documentation> + </xs:annotation> + <xs:sequence> + <xs:element ref="p:Identification"/> + <xs:element ref="p:Person"/> + </xs:sequence> + <xs:attribute name="Id" type="xs:ID" use="optional"/> + </xs:complexType> + <xs:complexType name="PersonAndAddressType"> + <xs:annotation> + <xs:documentation>signed person datastructure. The first Identification elements (from the base type) denote the record as such (e.g. database key for this record) - not to be mistaken for identifiers of the person or of an address (they have their own Identification elements).</xs:documentation> + </xs:annotation> + <xs:sequence> + <xs:element ref="p:Identification"/> + <xs:element ref="p:Person"/> + <xs:element ref="p:Address" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + <xs:attribute name="Id" type="xs:ID" use="optional"/> + </xs:complexType> + <xs:complexType name="AbstractPersonType" abstract="true"> + <xs:annotation> + <xs:documentation>main structure of person data</xs:documentation> + </xs:annotation> + <xs:attribute name="Id" type="xs:ID" use="optional"/> + </xs:complexType> + <xs:complexType name="PhysicalPersonType"> + <xs:annotation> + <xs:documentation>physical person</xs:documentation> + </xs:annotation> + <xs:complexContent> + <xs:extension base="p:AbstractPersonType"> + <xs:sequence> + <xs:element ref="p:Name"/> + <xs:element ref="p:DateOfBirth" minOccurs="0"/> + </xs:sequence> + </xs:extension> + </xs:complexContent> + </xs:complexType> + <xs:complexType name="PersonNameType"> + <xs:sequence> + <xs:element name="GivenName" type="xs:string"/> + <xs:element name="FamilyName"> + <xs:complexType> + <xs:simpleContent> + <xs:extension base="xs:string"> + <xs:attribute name="primary" default="undefined"> + <xs:simpleType> + <xs:restriction base="xs:string"> + <xs:enumeration value="true"/> + <xs:enumeration value="false"/> + <xs:enumeration value="undefined"/> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + <xs:attribute name="prefix" type="xs:string"/> + </xs:extension> + </xs:simpleContent> + </xs:complexType> + </xs:element> + <xs:element name="Affix" minOccurs="0" maxOccurs="unbounded"> + <xs:annotation> + <xs:documentation>Inlcudes all Information that is not exactly a name: academic or aristocratic titles, ... the new position attribute can contain a suffx or prefix value</xs:documentation> + </xs:annotation> + <xs:complexType> + <xs:simpleContent> + <xs:extension base="xs:string"> + <xs:attribute name="type" use="required"> + <xs:simpleType> + <xs:restriction base="xs:string"> + <xs:enumeration value="academicGrade"/> + <xs:enumeration value="aristocraticPrefix"/> + <xs:enumeration value="aristocraticTitle"/> + <xs:enumeration value="familyNamePrefix"/> + <xs:enumeration value="familyNameSuffix"/> + <xs:enumeration value="formOfAddress"/> + <xs:enumeration value="generation"/> + <xs:enumeration value="qualification"/> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + <xs:attribute name="position" use="optional"> + <xs:simpleType> + <xs:restriction base="xs:string"> + <xs:enumeration value="prefix"/> + <xs:enumeration value="suffix"/> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + </xs:extension> + </xs:simpleContent> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:complexType> + <xs:complexType name="AuthorityType"> + <xs:annotation> + <xs:documentation>public authority</xs:documentation> + </xs:annotation> + <xs:complexContent> + <xs:extension base="p:AbstractPersonType"> + <xs:sequence> + <xs:element ref="p:FullName"/> + <xs:element ref="p:Organization" minOccurs="0"/> + <xs:element ref="p:Target" minOccurs="0"/> + </xs:sequence> + </xs:extension> + </xs:complexContent> + </xs:complexType> + <xs:complexType name="CorporateBodyType"> + <xs:annotation> + <xs:documentation>juridical person, organisation</xs:documentation> + </xs:annotation> + <xs:complexContent> + <xs:extension base="p:AbstractPersonType"> + <xs:sequence> + <xs:element ref="p:FullName"/> + <xs:element ref="p:Organization" minOccurs="0"/> + <xs:element ref="p:Target" minOccurs="0"/> + </xs:sequence> + </xs:extension> + </xs:complexContent> + </xs:complexType> + <xs:complexType name="AbstractAddressType"> + <xs:annotation> + <xs:documentation>main structure of address data </xs:documentation> + </xs:annotation> + <xs:attribute name="Id" type="xs:ID" use="optional"/> + </xs:complexType> + <xs:complexType name="PostalAddressType"> + <xs:complexContent> + <xs:extension base="p:AbstractAddressType"> + <xs:sequence> + <xs:element name="CountryCode" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:documentation>Code for the country, use ISO or internatinal Postalstandard, compare Staatscode</xs:documentation> + </xs:annotation> + <!-- xs:simpleType> + <xs:restriction base="xs:string"> + <xs:pattern value="[A-Z]{2}"/> + </xs:restriction> + </xs:simpleType --> + </xs:element> + <xs:element name="PostalCode" type="xs:string"> + <xs:annotation> + <xs:documentation>ZIP, compare Postleitzahl</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="Municipality" type="xs:string"> + <xs:annotation> + <xs:documentation>compare Gemeinde</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="MunicipalityNumber" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:documentation>compare Gemeindekennzahl</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="DeliveryAddress"> + <xs:complexType> + <xs:sequence> + <xs:element name="StreetName" type="xs:string"/> + <xs:element name="BuildingNumber" type="xs:string"/> + <xs:element name="Unit" type="xs:string" minOccurs="0"/> + <xs:element name="DoorNumber" type="xs:string" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + </xs:element> + </xs:sequence> + <xs:attribute name="type" default="undefined"> + <xs:simpleType> + <xs:restriction base="xs:string"> + <xs:enumeration value="postOfficeBoxAddress"/> + <xs:enumeration value="streetAddress"/> + <xs:enumeration value="militaryAddress"/> + <xs:enumeration value="undefined"/> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + </xs:extension> + </xs:complexContent> + </xs:complexType> + <xs:complexType name="InternetAddressType"> + <xs:annotation> + <xs:documentation>internet based communication</xs:documentation> + </xs:annotation> + <xs:complexContent> + <xs:extension base="p:AbstractAddressType"> + <xs:sequence> + <xs:element name="Address" type="xs:anyURI"> + <xs:annotation> + <xs:documentation>URI: email-Address, Web, FTP, LDAP, ..., comapre Adress</xs:documentation> + </xs:annotation> + </xs:element> + </xs:sequence> + </xs:extension> + </xs:complexContent> + </xs:complexType> + <xs:complexType name="TelephoneAddressType"> + <xs:annotation> + <xs:documentation>phone numbers</xs:documentation> + </xs:annotation> + <xs:complexContent> + <xs:extension base="p:AbstractAddressType"> + <xs:sequence> + <xs:element name="Number" type="xs:token"> + <xs:annotation> + <xs:documentation>phonenumber</xs:documentation> + </xs:annotation> + </xs:element> + </xs:sequence> + <xs:attribute name="MessengerService" type="xs:token" use="optional" default="SMS"> + <xs:annotation> + <xs:documentation>SMS, WhatsApp, etc.</xs:documentation> + </xs:annotation> + </xs:attribute> + </xs:extension> + </xs:complexContent> + </xs:complexType> + <!-- ### strings of defined maximum lenght for use with ZMR address #### --> + <xs:simpleType name="string3"> + <xs:restriction base="xs:string"> + <xs:maxLength value="3"/> + </xs:restriction> + </xs:simpleType> + <xs:simpleType name="string4"> + <xs:restriction base="xs:string"> + <xs:maxLength value="4"/> + </xs:restriction> + </xs:simpleType> + <xs:simpleType name="string7"> + <xs:restriction base="xs:string"> + <xs:maxLength value="7"/> + </xs:restriction> + </xs:simpleType> + <xs:simpleType name="string20"> + <xs:restriction base="xs:string"> + <xs:maxLength value="20"/> + </xs:restriction> + </xs:simpleType> + <xs:simpleType name="string30"> + <xs:restriction base="xs:string"> + <xs:maxLength value="30"/> + </xs:restriction> + </xs:simpleType> + <xs:simpleType name="string50"> + <xs:restriction base="xs:string"> + <xs:maxLength value="50"/> + </xs:restriction> + </xs:simpleType> + <xs:simpleType name="string100"> + <xs:restriction base="xs:string"> + <xs:maxLength value="100"/> + </xs:restriction> + </xs:simpleType> + <xs:simpleType name="integer5"> + <xs:restriction base="xs:integer"> + <xs:minInclusive value="10000"/> + <xs:maxInclusive value="99999"/> + </xs:restriction> + </xs:simpleType> +</xs:schema> diff --git a/moaSig/common/src/main/resources/resources/schemas/zuse_p2.xsd b/moaSig/common/src/main/resources/resources/schemas/zuse_p2.xsd new file mode 100644 index 0000000..d996d01 --- /dev/null +++ b/moaSig/common/src/main/resources/resources/schemas/zuse_p2.xsd @@ -0,0 +1,989 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- Mit XMLSpy v2016 (http://www.altova.com) von Arne Tauber (TU Graz) bearbeitet --> +<!-- ### + + Die Versionsnummer des Schemas wird immer dann hochgezogen, wenn das Schema + selbst verändert wurde aber auch dann, wenn zumindest eines der importierten + ZUSE-Schemata angepasst wurde. + + ###--> +<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:p="http://reference.e-government.gv.at/namespace/persondata/phase2/20181206#" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#" xmlns:msg="http://reference.e-government.gv.at/namespace/zustellung/msg/phase2/20181206#" xmlns:saml="urn:oasis:names:tc:SAML:1.0:assertion" targetNamespace="http://reference.e-government.gv.at/namespace/zustellung/msg/phase2/20181206#" elementFormDefault="qualified" attributeFormDefault="unqualified" version="2.2.007"> + <!--### Imports ###--> + <!--### ZUSE-Personendaten: namespace="http://reference.e-government.gv.at/namespace/persondata/phase2/20181206#" version="2.2.007" ###--> + <xs:import namespace="http://reference.e-government.gv.at/namespace/persondata/phase2/20181206#" schemaLocation="zuse_mypersondata_en_p2.xsd"/> + <xs:import namespace="http://www.w3.org/2000/09/xmldsig#" schemaLocation="W3C-XMLDSig.xsd"/> + <!--### Abfrage der Webserviceversion--> + <xs:element name="GetVersionRequest" type="msg:SimpleRequestType"/> + <xs:element name="GetVersionResponse"> + <xs:complexType> + <xs:sequence> + <xs:element name="Version"> + <xs:simpleType> + <xs:restriction base="xs:token"> + <xs:enumeration value="2.2.007"/> + </xs:restriction> + </xs:simpleType> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + <!--### Nachrichten und Nachrichtenstrukturen ###--> + <!--### Zustellstückanlieferung ###--> + <xs:element name="DeliveryRequest" type="msg:DeliveryRequestType"> + <xs:annotation> + <xs:documentation>Zustellstückanlieferung</xs:documentation> + </xs:annotation> + </xs:element> + <xs:complexType name="DeliveryRequestType"> + <xs:sequence> + <xs:element ref="msg:Sender"/> + <xs:element ref="msg:Receiver"> + <xs:annotation> + <xs:documentation>Adressierung des Empfängers</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element ref="msg:MetaData"/> + <xs:element name="Attachments" type="msg:AttachmentsType"> + <xs:annotation> + <xs:documentation>Anhänge</xs:documentation> + </xs:annotation> + </xs:element> + </xs:sequence> + <xs:attribute name="Version" type="msg:VersionNumberType"/> + </xs:complexType> + <xs:element name="DeliveryResponse" type="msg:DeliveryRequestStatusType"/> + <xs:element name="DeliveryRequestStatus" type="msg:DeliveryRequestStatusType"> + <xs:annotation> + <xs:documentation>Webservice Response of ZSDeliveryRequest, also to used asynchronously </xs:documentation> + </xs:annotation> + </xs:element> + <xs:complexType name="DeliveryRequestStatusType"> + <xs:sequence> + <xs:choice> + <xs:element name="Success"> + <xs:annotation> + <xs:documentation>Zustellstück wurde erfolgreich übernommen</xs:documentation> + </xs:annotation> + <xs:complexType> + <xs:complexContent> + <xs:extension base="msg:DeliveryAnswerType"> + <xs:sequence> + <xs:element ref="msg:DeliveryTimestamp"/> + </xs:sequence> + </xs:extension> + </xs:complexContent> + </xs:complexType> + </xs:element> + <xs:element name="PartialSuccess"> + <xs:annotation> + <xs:documentation>Zustellstück wurde erfolgreich übernommen, attachment wird später geladen</xs:documentation> + </xs:annotation> + <xs:complexType> + <xs:complexContent> + <xs:extension base="msg:DeliveryAnswerType"/> + </xs:complexContent> + </xs:complexType> + </xs:element> + <xs:element name="Error"> + <xs:annotation> + <xs:documentation>Zustellstück konnte nicht übernommen werden</xs:documentation> + </xs:annotation> + <xs:complexType> + <xs:complexContent> + <xs:extension base="msg:DeliveryAnswerType"> + <xs:sequence> + <xs:element ref="msg:ErrorInfo"/> + <xs:element ref="msg:PreAdviceNoteSent" minOccurs="0"/> + </xs:sequence> + </xs:extension> + </xs:complexContent> + </xs:complexType> + </xs:element> + </xs:choice> + <xs:element ref="msg:RelayedViaERV" minOccurs="0"/> + <xs:element ref="dsig:Signature"/> + </xs:sequence> + <xs:attribute name="Version" type="msg:VersionNumberType"/> + <xs:attribute name="Id" type="xs:ID" use="optional"> + <xs:annotation> + <xs:documentation>Eindeutige ID des Elements, um in der Signatur referenziert werden zu können </xs:documentation> + </xs:annotation> + </xs:attribute> + </xs:complexType> + <xs:element name="DeliveryRequestStatusACK" type="msg:DeliveryRequestStatusACKType"> + <xs:annotation> + <xs:documentation>Wenn DeliveryRequestStatus bei asynchroner Koomunikation als Request benutzt wird, ist DeliveryRequstStatusACK die Antwort</xs:documentation> + </xs:annotation> + </xs:element> + <xs:complexType name="DeliveryRequestStatusACKType"> + <xs:sequence> + <xs:element ref="msg:AppDeliveryID"/> + <xs:element ref="msg:ZSDeliveryID"/> + </xs:sequence> + <xs:attribute name="Version" type="msg:VersionNumberType"/> + </xs:complexType> + <xs:annotation> + <xs:documentation>### Bestätigung über Zustellungs (Miß-) Erfolg ###</xs:documentation> + </xs:annotation> + <xs:element name="DeliveryNotification" type="msg:DeliveryNotificationType"> + <xs:annotation> + <xs:documentation>Benachrichtigung über die erfolgte oder nicht erfolgte Zustellung</xs:documentation> + </xs:annotation> + </xs:element> + <xs:complexType name="DeliveryNotificationType"> + <xs:complexContent> + <xs:extension base="msg:DeliveryAnswerType"> + <xs:sequence> + <xs:element ref="msg:SenderDetails"/> + <xs:element ref="msg:ReceiverDetails"/> + <xs:element ref="msg:Timestamp"> + <xs:annotation> + <xs:documentation>Timestamp der Nachrichtenoperation, welcher vom Anzeigemodul erzeugt wurde. Im Falle der Annahme einer Zustellung entspricht der Timestamp dem Annahmezeitpunkt</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element ref="msg:User" minOccurs="0"> + <xs:annotation> + <xs:documentation>Benutzer, der die Nachricht angenommen hat.</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element ref="msg:Answer"/> + <xs:element ref="dsig:Signature"/> + <xs:element name="AdditionalFormat" minOccurs="0" maxOccurs="unbounded"> + <xs:complexType> + <xs:simpleContent> + <xs:extension base="xs:base64Binary"> + <xs:attribute name="Type" type="xs:token" use="required"> + <xs:annotation> + <xs:documentation>Als MIME-Type ist „application/pdf“ zu verwenden</xs:documentation> + </xs:annotation> + </xs:attribute> + </xs:extension> + </xs:simpleContent> + </xs:complexType> + </xs:element> + </xs:sequence> + <xs:attribute name="Version" type="msg:VersionNumberType"/> + <xs:attribute name="Id" type="xs:ID" use="optional"> + <xs:annotation> + <xs:documentation>Eindeutige ID des Elements, um in der Signatur referenziert zu können </xs:documentation> + </xs:annotation> + </xs:attribute> + </xs:extension> + </xs:complexContent> + </xs:complexType> + <xs:element name="DeliveryNotificationACK" type="msg:DeliveryNotificationACKType"> + <xs:annotation> + <xs:documentation>Webservice Response of ZSDeliveryNotification</xs:documentation> + </xs:annotation> + </xs:element> + <xs:complexType name="DeliveryNotificationACKType"> + <xs:sequence> + <xs:element ref="msg:AppDeliveryID"/> + <xs:element ref="msg:ZSDeliveryID"/> + </xs:sequence> + <xs:attribute name="Version" type="msg:VersionNumberType"/> + </xs:complexType> + <xs:complexType name="DeliveryAnswerType"> + <xs:annotation> + <xs:documentation>Abstrakter Antwort Typ</xs:documentation> + </xs:annotation> + <xs:sequence> + <xs:element ref="msg:DeliverySystem"/> + <xs:element ref="msg:ZSDeliveryID"> + <xs:annotation> + <xs:documentation>ID des Zustellstücke innerhalb des Zustellsystems</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element ref="msg:AppDeliveryID"/> + <xs:element ref="msg:GZ" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + <xs:complexType name="DeliveryConfirmationType"> + <xs:complexContent> + <xs:extension base="msg:DeliveryAnswerType"> + <xs:sequence> + <xs:element ref="msg:Sender"/> + <xs:element ref="msg:Receiver"/> + <xs:element name="DeliveryTimestamp" type="xs:dateTime"> + <xs:annotation> + <xs:documentation>Übergabezeitpunkt an den Zustelldienst</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element ref="dsig:Signature"/> + </xs:sequence> + </xs:extension> + </xs:complexContent> + </xs:complexType> + <!--### globale Elemente und komplexe Typen###--> + <xs:complexType name="AbstractOperationType" abstract="true"/> + <xs:complexType name="AbstractSenderPersonType"> + <xs:annotation> + <xs:documentation>main structure of sender</xs:documentation> + </xs:annotation> + <xs:attribute name="Id" type="xs:ID" use="optional"/> + </xs:complexType> + <xs:element name="Accepted" type="msg:AcceptedType" substitutionGroup="msg:Answer"> + <xs:annotation> + <xs:documentation>Zeigt an, dass die Nachricht durch den Einstieg ins Anzeigemodul angenommen wurde. </xs:documentation> + </xs:annotation> + </xs:element> + <xs:complexType name="AcceptedType"> + <xs:complexContent> + <xs:extension base="msg:AbstractOperationType"> + <xs:sequence> + <xs:element ref="msg:NotificationsPerformed"/> + </xs:sequence> + </xs:extension> + </xs:complexContent> + </xs:complexType> + <xs:element name="AdditionalCriteria" type="msg:AdditionalCriteriaType"> + <xs:annotation> + <xs:documentation>Weitere über den eigentlichen Adressaten hinausgehende Kriterien zur Adressierung (bspw. c/o)</xs:documentation> + </xs:annotation> + </xs:element> + <xs:complexType name="AdditionalCriteriaType"> + <xs:sequence> + <xs:element ref="msg:MailBox" minOccurs="0"> + <xs:annotation> + <xs:documentation>Eindeutige Kennung (Filiale, Standort, Abteilung, etc..) innerhalb der jur. Person </xs:documentation> + </xs:annotation> + </xs:element> + <xs:element ref="msg:Roles" minOccurs="0"/> + <xs:element ref="msg:CareOf" minOccurs="0"> + <xs:annotation> + <xs:documentation>Natürlichen Person innerhalb einer Orangisation der "zu Handen" (c/o) zustellen werden soll. Wird eine E-Mail-Adresse angegeben, kann die Person eindeutig identifiziert und notifiziert werden. </xs:documentation> + </xs:annotation> + </xs:element> + </xs:sequence> + </xs:complexType> + <xs:element name="Answer" type="msg:AbstractOperationType" abstract="true"> + <xs:annotation> + <xs:documentation> Rückmeldungen zu einer Nachricht</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="AppDeliveryID" type="msg:token256"> + <xs:annotation> + <xs:documentation>ID des Zustellstücke beim Absender</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="Attachment" type="msg:AttachmentType"/> + <xs:element name="Attachments" type="msg:AttachmentsType"> + <xs:annotation> + <xs:documentation>List of all attachments</xs:documentation> + </xs:annotation> + </xs:element> + <xs:complexType name="AttachmentsType"> + <xs:sequence> + <xs:element ref="msg:Attachment" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + <xs:complexType name="AttachmentType"> + <xs:sequence> + <xs:element name="FileName" type="msg:FileNameType"> + <xs:annotation> + <xs:documentation>Dateiname min. 5 Zeichen, max 255 Zeichen</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element ref="msg:MimeType"/> + <xs:element ref="msg:DocumentClass" minOccurs="0"> + <xs:annotation> + <xs:documentation>Dokumentenklasse als String bzw. Namespace im Fall von XML-Dokumenten im Anhang, um auf Empfängerseite eine automatische Verarbeitung durch ein Workflowsystem realisieren zu können.</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="Size" type="xs:nonNegativeInteger"> + <xs:annotation> + <xs:documentation>Größe in Bytes</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element ref="msg:CheckSum"/> + <xs:choice> + <xs:element name="Content" type="xs:base64Binary"> + <xs:annotation> + <xs:documentation>Für Attachments deren Inhalt direkt in die Nachricht eingebettet werden. (Das Größenlimit für die gesamte Nachricht inklusive aller eingebetteten Attachments beträgt 10 MB)</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="URL" type="xs:anyURI"> + <xs:annotation> + <xs:documentation>Docuementlocation in case of Callback attachements</xs:documentation> + </xs:annotation> + </xs:element> + </xs:choice> + </xs:sequence> + </xs:complexType> + <xs:element name="AustrianAddressesOnly" type="msg:IndicatorType"> + <xs:annotation> + <xs:documentation>Die Existenz des Elements zeigt an, dass die gesuchte Person in Österreich gemeldet sein muss</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="AuthLevel" type="msg:token256"> + <xs:annotation> + <xs:documentation>Höchstes Authentifizierungsniveau mit dem sich der Teilnehmer beim Portal/Kommunikationssystem angemeldet hatte. Folgende Werte sind zulässig - absteigend sortiert nach der Höhe des Authentifizierungsniveaus: "EID" > "FON" > "LOW" + </xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="CareOf"> + <xs:annotation> + <xs:documentation>Um einer natürlichen Person innerhalb einer Orangisation "zu Handen" (c/o) zustellen zu können, reicht die vbPK-ZU oder die E-Mail-Adresse aus, um die Person über das Eintreffen der Nachricht notifiziert zu können. </xs:documentation> + </xs:annotation> + <xs:complexType> + <xs:sequence> + <xs:element ref="msg:ElectronicAddress" minOccurs="0"> + <xs:annotation> + <xs:documentation>Elektronische Adresse der "Zu Handen"-Person innerhalb der Organisation</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="Name" type="msg:token256"> + <xs:annotation> + <xs:documentation>Name der Person zu deren Handen adressiert wird. Hierbei handelt es sich um einen Freitext für die Anzeige, der als eindeutiger Identifikator für Verständigungen oder eine automatisierte Weiterleitung ungeeignet ist.</xs:documentation> + </xs:annotation> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="CheckSum" type="msg:CheckSumType"> + <xs:annotation> + <xs:documentation>Prüfsumme</xs:documentation> + </xs:annotation> + </xs:element> + <xs:complexType name="CheckSumType"> + <xs:annotation> + <xs:documentation>Prüfsumme</xs:documentation> + </xs:annotation> + <xs:sequence> + <xs:element name="AlgorithmID" type="xs:token"> + <xs:annotation> + <xs:documentation>Hash Algorithmus, z.B. SHA-256, SHA-512</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="Value" type="xs:base64Binary"> + <xs:annotation> + <xs:documentation>Hashwert</xs:documentation> + </xs:annotation> + </xs:element> + </xs:sequence> + </xs:complexType> + <xs:element name="ClearingProfilID" type="xs:token"> + <xs:annotation> + <xs:documentation>Ist zu verwenden, wenn die Abrechnung über ein anderes Profil erfolgen soll, als dem Versender-Profil </xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="ConfirmationAddress"> + <xs:annotation> + <xs:documentation>Webservice oder E-Mail-Adresse, an welches die Zustellbestätigung oder Fehlermeldung weitergeleitet wird (Callback)</xs:documentation> + </xs:annotation> + <xs:complexType> + <xs:choice> + <xs:element ref="msg:WebserviceURL"/> + <xs:element ref="msg:Email"/> + </xs:choice> + <xs:attribute name="Type" default="xml"> + <xs:annotation> + <xs:documentation>Typ des Zustellnachweises, z.B. xml+pdf oder nur xml (default)</xs:documentation> + </xs:annotation> + <xs:simpleType> + <xs:restriction base="xs:token"> + <xs:enumeration value="xml"/> + <xs:enumeration value="xml+pdf"/> + <xs:enumeration value="pdf"/> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + </xs:complexType> + </xs:element> + <xs:element name="DeliveryError" type="msg:DeliveryErrorType" substitutionGroup="msg:Answer"> + <xs:annotation> + <xs:documentation>Zustellung war nicht erfolgreich +• Nachricht wurde nicht innerhalb der Zustellfrist angenommen +• Zustellhindernis </xs:documentation> + </xs:annotation> + </xs:element> + <xs:complexType name="DeliveryErrorType"> + <xs:complexContent> + <xs:extension base="msg:AbstractOperationType"> + <xs:sequence> + <xs:element ref="msg:NotificationsPerformed" minOccurs="0"> + <xs:annotation> + <xs:documentation>Im Falle des verstreichens der Zustellfrist MUSS das Element befüllt sein.</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element ref="msg:ErrorInfo"/> + </xs:sequence> + </xs:extension> + </xs:complexContent> + </xs:complexType> + <xs:element name="DeliveryQuality"> + <xs:annotation> + <xs:documentation>Zustellqualität gemäß ZustellG: +• RSa +• RSa+ +• nonRSa +• nonRSa+</xs:documentation> + </xs:annotation> + <xs:simpleType> + <xs:restriction base="msg:token256"> + <xs:enumeration value="RSa"/> + <xs:enumeration value="RSa+"/> + <xs:enumeration value="nonRSa"/> + <xs:enumeration value="nonRSa+"/> + </xs:restriction> + </xs:simpleType> + </xs:element> + <xs:element name="DeliverySystem" type="xs:anyURI"> + <xs:annotation> + <xs:documentation>URL des für die Nachricht verantwortlichen Zustellstellsystems</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="DeliveryTimestamp" type="xs:dateTime"> + <xs:annotation> + <xs:documentation>Zustellzeitpunkt</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="DocumentClass" type="xs:token"> + <xs:annotation> + <xs:documentation>Enthält den Namespace des XML-Dokuments, um auf Empfängerseite eine automatische Verarbeitung durch ein Workflowsystem realisieren zu können.</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="ElectronicAddress" type="p:AbstractAddressType" abstract="true"> + <xs:annotation> + <xs:documentation> Elektronische Adresse (E-Mail, HTTP, etc)</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="Email" type="p:InternetAddressType"> + <xs:annotation> + <xs:documentation>Für Notfälle, wenn der Absender weder über ein Webservice noch über ein elektronisches Postfach verfügt.</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="ErrorInfo" type="msg:ErrorInfoType"> + <xs:annotation> + <xs:documentation>Beschreibung eines aufgetretenen Fehlers</xs:documentation> + </xs:annotation> + </xs:element> + <xs:complexType name="ErrorInfoType"> + <xs:annotation> + <xs:documentation>ComplexTpye für die Beschreibung eines aufgetretenen Fehlers</xs:documentation> + </xs:annotation> + <xs:sequence> + <xs:element name="Code" type="xs:token"> + <xs:annotation> + <xs:documentation>Fehlercode</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="Text" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:documentation>Fehlerbeschreibung</xs:documentation> + </xs:annotation> + </xs:element> + </xs:sequence> + </xs:complexType> + <xs:element name="ERVConfirmedDelivery" type="msg:ERVConfirmedDeliveryType" substitutionGroup="msg:Answer"> + <xs:annotation> + <xs:documentation>Diese Operation zeigt an, dass eine in den ERV weitergeleitete Nachricht erfolgreich im Verfügungsbereich des Empfängers eingelangt ist. </xs:documentation> + </xs:annotation> + </xs:element> + <xs:complexType name="ERVConfirmedDeliveryType"> + <xs:complexContent> + <xs:extension base="msg:AbstractOperationType"> + <xs:sequence> + <xs:element ref="msg:ERVCode"/> + <xs:element ref="msg:ERVDeliveryTimestamp"/> + </xs:sequence> + </xs:extension> + </xs:complexContent> + </xs:complexType> + <xs:element name="ERVCode" type="msg:token256"> + <xs:annotation> + <xs:documentation>Anschriftcode des Elektronischen Rechtsverkehrs der Justiz (ERV): Wenn die Nachricht in den ERV weitergeleitet wird, ist der Anschriftcode - zwecks Nachvollziehbarkeit - bis zum Versender zurückgegeben.</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="ERVDeliveryTimestamp" type="xs:dateTime"> + <xs:annotation> + <xs:documentation>Datum, wann die Zustellung in der jeweiligen Übermittlungsstelle und damit im Verfügungsbereich des Empfängers eingelangt ist, d.h. die Zustellung erfolgt ist, wird als Zustellzeitpunkt verwendet und an das jeweilige Zustellsystem zurück-gemeldet. Dieses Datum ist gemäß GOG berechnet und gibt den nächsten auf die Ankunft in der Übermittlungsstelle folgenden Werktag an und enthält keine Zeitangabe.</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="GZ" type="xs:token"> + <xs:annotation> + <xs:documentation>Geschäftszahl</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="IgnorePostRedirectionOrder" type="msg:IndicatorType"> + <xs:annotation> + <xs:documentation>Wenn dieser Marker existiert, MUSS diese Zustellung auch bei aktiver Postsperre an den tatsächlichen Empfänger zugestellt werden.</xs:documentation> + </xs:annotation> + </xs:element> + <xs:complexType name="IndicatorType"> + <xs:annotation> + <xs:documentation>Dieser ComplexType ist ein Hilfskonstrukt damit ein Flag/Kennzeichen/Marker/Idikator Element nicht als XML-Any misbraucht werden kann.</xs:documentation> + </xs:annotation> + </xs:complexType> + <xs:element name="InternetAddress" type="p:InternetAddressType" substitutionGroup="msg:ElectronicAddress"> + <xs:annotation> + <xs:documentation>element of internet address type</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="Language" type="msg:AustrianLanguageType"> + <xs:annotation> + <xs:documentation>Sprache in welcher der Zustellnachweis gesendet werden soll</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="Logo" type="msg:LogoType"> + <xs:annotation> + <xs:documentation>Definiert ein Logo</xs:documentation> + </xs:annotation> + </xs:element> + <xs:complexType name="LogoType"> + <xs:annotation> + <xs:documentation>Definiert ein Nachrichtenlogo</xs:documentation> + </xs:annotation> + <xs:choice> + <xs:element name="LogoID" type="xs:token"> + <xs:annotation> + <xs:documentation>Für Logos, die vorab beim Zustelldienst für den Versender im Profil hinterlegt wurden</xs:documentation> + </xs:annotation> + </xs:element> + <xs:sequence> + <xs:element name="ContentValue" type="xs:base64Binary"/> + <xs:element name="ContentType" type="msg:token256"/> + </xs:sequence> + </xs:choice> + </xs:complexType> + <xs:element name="MailBox" type="xs:token"> + <xs:annotation> + <xs:documentation>Spezielles Postfach des Empfängers, z.B. eine Filiale einer jur. Person</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="MetaData"> + <xs:annotation> + <xs:documentation>Metadaten der Zustellung</xs:documentation> + </xs:annotation> + <xs:complexType> + <xs:sequence> + <xs:element ref="msg:AppDeliveryID"> + <xs:annotation> + <xs:documentation>ID des Zustellstücks beim Absender</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element ref="msg:Origin" minOccurs="0"> + <xs:annotation> + <xs:documentation>Zustellsystem, welches die Nachricht überrmittelt hat. Muss gesetzt werden, wenn die Zustellsystem-Applikationen mehrere Zustellsysteme repräsentiert</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element ref="msg:Subject"/> + <xs:element ref="msg:GZ" minOccurs="0"/> + <xs:choice> + <xs:element ref="msg:DeliveryQuality"/> + <xs:element ref="msg:PrivateMessageQuality"/> + </xs:choice> + <xs:element ref="msg:NotificationLanguages" minOccurs="0"> + <xs:annotation> + <xs:documentation>Sprachen - vom Versender mitgegeben - in denen die Verständigung gesendet werden soll</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element ref="msg:IgnorePostRedirectionOrder" minOccurs="0"/> + <xs:element ref="msg:Reference" minOccurs="0"/> + <xs:element ref="msg:Tags" minOccurs="0"/> + <xs:element ref="msg:MetadataList" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="MetadataEntry" type="msg:MetadataEntryType"> + <xs:annotation> + <xs:documentation>Single metadata entry</xs:documentation> + </xs:annotation> + </xs:element> + <xs:complexType name="MetadataEntryType"> + <xs:sequence> + <xs:element name="OID" type="xs:token"> + <xs:annotation> + <xs:documentation>Unique object identifier</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="Value" type="xs:anySimpleType"> + <xs:annotation> + <xs:documentation>Metadata value. basic type is defined in specification document</xs:documentation> + </xs:annotation> + </xs:element> + </xs:sequence> + <xs:attribute name="DisplayInDetailView" type="xs:boolean"> + <xs:annotation> + <xs:documentation>Display metadata in detailed view. If metadata are displayed by default or prohibited to display (e.g. internal data), this value cannot be overriden</xs:documentation> + </xs:annotation> + </xs:attribute> + </xs:complexType> + <xs:element name="MetadataList"> + <xs:annotation> + <xs:documentation>List of metadata entries</xs:documentation> + </xs:annotation> + <xs:complexType> + <xs:sequence> + <xs:element ref="msg:MetadataEntry" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="MimeType" type="msg:token256"> + <xs:annotation> + <xs:documentation>Mime-Typ</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="NotificationAddressList" type="msg:NotificationAddressListType"> + <xs:annotation> + <xs:documentation>Liste der verifizierten Verständigungsadressen des Teilnehmers</xs:documentation> + </xs:annotation> + </xs:element> + <xs:complexType name="NotificationAddressListType"> + <xs:sequence> + <xs:element ref="msg:ElectronicAddress" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + <xs:element name="NotificationLanguages"> + <xs:annotation> + <xs:documentation>Sprachen in denen die Verständigung gesendet werden soll</xs:documentation> + </xs:annotation> + <xs:complexType> + <xs:sequence> + <xs:element ref="msg:Language" maxOccurs="unbounded"> + <xs:annotation> + <xs:documentation>Sprache in der die Verständigung gesendet werden soll</xs:documentation> + </xs:annotation> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="NotificationsPerformed" type="msg:NotificationsPerformedType"> + <xs:annotation> + <xs:documentation>Liste der vom AMOD durchgeführten Verständigungen des Empfängers</xs:documentation> + </xs:annotation> + </xs:element> + <xs:complexType name="NotificationsPerformedType"> + <xs:sequence> + <xs:element name="RecipientNotification" maxOccurs="unbounded"> + <xs:complexType> + <xs:sequence> + <xs:element name="Timestamp" type="xs:dateTime"/> + </xs:sequence> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:complexType> + <xs:element name="Origin" type="msg:SystemComponentType"> + <xs:annotation> + <xs:documentation>Herkunftssystem: Zustellsystem oder Kommunikationssystem der Behörde, von welchem die Nachricht oder Empfängerrdaten stammen</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="ParticipantID" type="msg:token256"> + <xs:annotation> + <xs:documentation>ParticipantID = Landeskennung ":" ID +ID = "VKZ:" VKZ | Org-Id +VKZ ::= 1#32UACHAR;(Verwaltungskennzeichen gem. [VKZ]) +Org-Id ::= 1#32UACHAR;(Org-Id gem. [VKZ]) +Landeskennung ::= {2} ALPHA; (gem. ISO 3166 - Alpha2) +(nicht normativ / nach ldap.gv.at) Beispiele: "AT:B:102", "AT:VKZ:GGA-12345", "AT:L9:9876"</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="PreAdviceNote" type="msg:PreAdviceNoteType"> + <xs:annotation> + <xs:documentation>Aviso (optional)</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="PreAdviceNoteSent" type="msg:PreAdviceNoteSentType"> + <xs:annotation> + <xs:documentation>Existenz des Elements zeigt an, dass ein Aviso erfolgreich an alle Verständigungsadressen des Teilnahmkandidaten versendet wurde</xs:documentation> + </xs:annotation> + </xs:element> + <xs:complexType name="PreAdviceNoteSentType"> + <xs:annotation> + <xs:documentation>(Technisch Notwendig, um implizites XML-Any zu verhindern)</xs:documentation> + </xs:annotation> + </xs:complexType> + <xs:complexType name="PreAdviceNoteType"> + <xs:sequence> + <xs:element name="NumberOfDays" type="xs:positiveInteger"> + <xs:annotation> + <xs:documentation>Frist von der Behörde bis wann die Registrierung erfolgt sein muss, um dass Behördenschriftstück noch elektronisch zu bekommen. Anderenfalls wird das Schriftstück von der Behörde auf dem normalen Postweg versandt. Diese Info wird im Aviso-E-Mail mitgegeben.</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element ref="msg:NotificationAddressList" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + <xs:element name="PrivateMessageQuality"> + <xs:annotation> + <xs:documentation>Qualität der privatrechtlichen Zusendung ist von der Zustellqualität lt. ZustellG zu unterscheiden: +• Information +• RegisteredMail +• RegisteredMail+ +• ConfirmReceipt +• ConfirmReceipt+</xs:documentation> + </xs:annotation> + <xs:simpleType> + <xs:restriction base="xs:token"> + <xs:enumeration value="Information"/> + <xs:enumeration value="RegisteredMail"/> + <xs:enumeration value="RegisteredMail+"/> + <xs:enumeration value="ConfirmReceipt"/> + <xs:enumeration value="ConfirmReceipt+"/> + </xs:restriction> + </xs:simpleType> + </xs:element> + <xs:element name="ProfileID" type="xs:token"> + <xs:annotation> + <xs:documentation>ID mit der der Versender beim Zustellsystem registriert ist. (Das Zustellsystem ist für den Inhalt der Personendaten des Versenders verantwortlich, um sicherzustellen, dass diese nicht missbräuchlich verwendet werden (Vortäuschung einer anderen Identität))</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="Receiver"> + <xs:annotation> + <xs:documentation>Informationen zum Empfänger</xs:documentation> + </xs:annotation> + <xs:complexType> + <xs:sequence> + <xs:choice> + <xs:element ref="p:Identification"/> + <xs:sequence> + <xs:element ref="p:Person"/> + <xs:element ref="msg:AustrianAddressesOnly" minOccurs="0"/> + <xs:element ref="p:Address" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + </xs:choice> + <xs:element ref="msg:AdditionalCriteria" minOccurs="0"/> + <xs:element ref="msg:PreAdviceNote" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="ReceiverDetails" type="p:PersonAndIdentificationType"> + <xs:annotation> + <xs:documentation>Informationen nur für Senderidentifikation</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="Reference"> + <xs:annotation> + <xs:documentation>Referenz auf ein anderes Zustellstück (ZSDeliveryID), auf die sich diese Zustellung bezieht</xs:documentation> + </xs:annotation> + <xs:complexType> + <xs:sequence> + <xs:element ref="msg:ZSDeliveryID"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="RelayedViaERV"> + <xs:annotation> + <xs:documentation>Gibt an ob das Zustellstück über den ERV zugestellt wurde</xs:documentation> + </xs:annotation> + <xs:complexType> + <xs:sequence> + <xs:element ref="msg:ERVCode"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="Roles"> + <xs:annotation> + <xs:documentation>Rollen, welche neben globalen Vertretungsbefugten Zustellstücke entgegennehmen dürfen</xs:documentation> + </xs:annotation> + <xs:complexType> + <xs:sequence> + <xs:element name="Role" maxOccurs="unbounded"> + <xs:complexType> + <xs:sequence> + <xs:element name="Value" type="msg:token256"/> + </xs:sequence> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="Sender"> + <xs:annotation> + <xs:documentation>Informationen zum Sender</xs:documentation> + </xs:annotation> + <xs:complexType> + <xs:sequence> + <xs:element ref="msg:SenderPerson"/> + <xs:element ref="msg:ClearingProfilID" minOccurs="0"/> + <xs:element ref="msg:Logo" minOccurs="0"/> + <xs:element ref="msg:AdditionalCriteria" minOccurs="0"> + <xs:annotation> + <xs:documentation>Spezielles Postfach des Versenders z.B. eine Filiale einer jur. Person an welches dieser eine etwaige Antwort retourniert haben möchte</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element ref="msg:ConfirmationAddress" minOccurs="0"> + <xs:annotation> + <xs:documentation>Webservice oder E-Mail-Adresse, an welche die Übergabebestätigung, der Zustellnachweis oder die Fehlermeldung zurückgemeldet wird (Callback)</xs:documentation> + </xs:annotation> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="SenderCorporateBody" type="msg:SenderCorporateBodyType" substitutionGroup="msg:SenderPerson"> + <xs:annotation> + <xs:documentation>Versender ist eine Behörde oder ein Unternehmen, das im gesetzlichen Auftrag handeln</xs:documentation> + </xs:annotation> + </xs:element> + <xs:complexType name="SenderCorporateBodyType"> + <xs:annotation> + <xs:documentation>juridical person, organisation</xs:documentation> + </xs:annotation> + <xs:complexContent> + <xs:extension base="msg:AbstractSenderPersonType"> + <xs:choice> + <xs:element ref="msg:SenderProfile"/> + <xs:sequence> + <xs:element ref="p:Identification"/> + <xs:element ref="p:CorporateBody"/> + </xs:sequence> + </xs:choice> + </xs:extension> + </xs:complexContent> + </xs:complexType> + <xs:element name="SenderDetails" type="p:PersonAndIdentificationType"> + <xs:annotation> + <xs:documentation>Informationen nur für Senderidentifikation</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="SenderPerson" type="msg:AbstractSenderPersonType"> + <xs:annotation> + <xs:documentation>Die Person des Versenders wird über das Clientzertifikat authentifiziert mit dem sich das IT-Service des Versenders mit seinem Zustellsystem verbindet. (Bei Behörden erfolgt die Authentifizierung über PVP-Header)</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="SenderProfile"> + <xs:complexType> + <xs:sequence> + <xs:element ref="msg:ProfileID"/> + <xs:element ref="p:Organization" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="ServiceProviderID" type="msg:token256"> + <xs:annotation> + <xs:documentation>ID des Dienstleisters, der für den Versender die Kommunikation mit dem Zustelldienst bzw. generell dem Zustellsystem durchführt. In diesem Fall ist der Dienstleister der Rechnungsempfänger</xs:documentation> + </xs:annotation> + </xs:element> + <xs:complexType name="SimpleRequestType"> + <xs:annotation> + <xs:documentation>Einfacher "Request" ohne Datenelemente</xs:documentation> + </xs:annotation> + </xs:complexType> + <xs:element name="Subject" type="xs:token"> + <xs:annotation> + <xs:documentation>Zur Anzeige in der Mailbox, vgl. Subject von herkömml. E-mails</xs:documentation> + </xs:annotation> + </xs:element> + <xs:complexType name="SystemComponentType"> + <xs:annotation> + <xs:documentation>Systemkomponente der E-Zustellung: Portal oder Zustellsystem. (Ein Zustellsystem ist entweder ein Zustelldienst, ein Kommunikationssystem der Behörde oder ein Zielsystem)</xs:documentation> + </xs:annotation> + <xs:sequence> + <xs:element ref="msg:ParticipantID"> + <xs:annotation> + <xs:documentation>ParticipantID = Landeskennung ":" ID +ID = "VKZ:" VKZ | Org-Id +VKZ ::= 1#32UACHAR; (Verwaltungskennzeichen gem. [VKZ]) +Org-Id ::= 1#32UACHAR; (Org-Id gem. [VKZ]) +Landeskennung ::= {2} ALPHA; (gem. ISO 3166 - Alpha2) +(nicht normativ / nach ldap.gv.at) Beispiele: "AT:B:102", "AT:VKZ:GGA-12345", "AT:L9:9876"</xs:documentation> + </xs:annotation> + </xs:element> + </xs:sequence> + </xs:complexType> + <xs:element name="Tag" type="msg:token256"/> + <xs:element name="Tags"> + <xs:annotation> + <xs:documentation>Schlagworte zu einer Nachricht nach welchen ein Benutzer suchen kann. (Dieser müssen vom Versender einer Nachricht gesetzt werden)</xs:documentation> + </xs:annotation> + <xs:complexType> + <xs:sequence> + <xs:element ref="msg:Tag" maxOccurs="20"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="TargetIdentification" type="p:IdentificationType"> + <xs:annotation> + <xs:documentation>Wenn im DeliveryRequest ein Target angegeben wurde, d.h. der Bereich und das VKZ des behördlichen Versenders, dann enthält das TargetIdentification Element das entsprechende, umgeschlüsselt vbPK für den Versender</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="Timestamp" type="xs:dateTime"> + <xs:annotation> + <xs:documentation>Timestamp, der vom Anzeigemodul erzeugt wurde. Im Falle der Annahme einer Zustellung entspricht der Timestamp dem Zustellzeitpunkt</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="User"> + <xs:annotation> + <xs:documentation>Benutzer, der die Nachricht angenommen oder gelöscht hat. Wenn die Nachrichtenoperation vom System des Anzeigemoduls ausgelöst wurde, bleibt das User Element leer</xs:documentation> + </xs:annotation> + <xs:complexType> + <xs:sequence> + <xs:element name="Role"> + <xs:annotation> + <xs:documentation>Rolle des Benutzers: +• Receiver: Empfänger persönlich +• Representative: Vertretungsbevollmächtigter +• InsolvencyAdministrator: Insolvenzverwalters +• System: Eine Systemkomponente der eZustellung ist Auslöser der MessageOperation + </xs:documentation> + </xs:annotation> + <xs:simpleType> + <xs:restriction base="xs:token"> + <xs:enumeration value="Receiver"/> + <xs:enumeration value="Representative"/> + <xs:enumeration value="InsolvencyAdministrator"/> + <xs:enumeration value="System"/> + </xs:restriction> + </xs:simpleType> + </xs:element> + <xs:element ref="p:Identification"/> + <xs:element ref="msg:TargetIdentification" minOccurs="0"/> + <xs:element ref="p:PhysicalPerson"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="WebserviceURL"> + <xs:complexType> + <xs:complexContent> + <xs:extension base="p:InternetAddressType"> + <xs:attribute name="AlternativeEmail" type="xs:anyURI"/> + </xs:extension> + </xs:complexContent> + </xs:complexType> + </xs:element> + <xs:element name="ZSDeliveryID" type="msg:token256"> + <xs:annotation> + <xs:documentation>ID des Zustellstückes MUSS über alle Zustellsysteme eindeutig sein. Die ZSDeliveryID wird durch eine UUID gemäß RFC-4122 repräsentiert. Der Node-Teil MUSS pro Zustellsystem eindeutig sein und wird vom Anzeigemodul vergeben.</xs:documentation> + </xs:annotation> + </xs:element> + <!--### Simple Types--> + <xs:simpleType name="token256"> + <xs:annotation> + <xs:documentation>Token auf 256 Zeichen beschränkt.</xs:documentation> + </xs:annotation> + <xs:restriction base="xs:token"> + <xs:minLength value="1"/> + <xs:maxLength value="256"/> + </xs:restriction> + </xs:simpleType> + <xs:simpleType name="AustrianLanguageType"> + <xs:annotation> + <xs:documentation>2-stelliger Sprachcode der anerkannten österreichischen Minderheiten</xs:documentation> + </xs:annotation> + <xs:restriction base="xs:token"> + <xs:minLength value="2"/> + <xs:maxLength value="2"/> + <xs:enumeration value="DE"/> + <xs:enumeration value="HR"/> + <xs:enumeration value="HU"/> + <xs:enumeration value="SL"/> + </xs:restriction> + </xs:simpleType> + <xs:simpleType name="FileNameType"> + <xs:annotation> + <xs:documentation>Typ zur Beschränkung von Dateinamen auf minimal 5 Zeichen und maximal 255 Zeichen</xs:documentation> + </xs:annotation> + <xs:restriction base="xs:token"> + <xs:maxLength value="255"/> + <xs:minLength value="5"/> + </xs:restriction> + </xs:simpleType> + <xs:simpleType name="VersionNumberType"> + <xs:annotation> + <xs:documentation>Typ definiert einen regulären Ausdruck für Versionsnummer - z.B. 1.0.0</xs:documentation> + </xs:annotation> + <xs:restriction base="xs:token"> + <xs:pattern value="[0-9]{1,2}\.[0-9]{1,2}\.[0-9]{1,3}"/> + </xs:restriction> + </xs:simpleType> +</xs:schema> diff --git a/moaSig/common/src/test/java/console/SchemaValidationTest.java b/moaSig/common/src/test/java/console/SchemaValidationTest.java new file mode 100644 index 0000000..db3041b --- /dev/null +++ b/moaSig/common/src/test/java/console/SchemaValidationTest.java @@ -0,0 +1,52 @@ +package console; + +import java.io.InputStream; + +import org.w3c.dom.Element; + +import at.gv.egovernment.moaspss.util.DOMUtils; + +public class SchemaValidationTest { + + public static final String SCHEMA_ROOT = "/config/zuseSchema"; + + public static final String XML_NS_URI = "http://www.w3.org/XML/1998/namespace"; + public static final String XML_SCHEMA_LOCATION = SCHEMA_ROOT + "xml.xsd"; + + public static final String XSI_NS_URI = "http://www.w3.org/2001/XMLSchema-instance"; + public static final String XSI_SCHEMA_LOCATION = SCHEMA_ROOT + "XMLSchema-instance.xsd"; + + public static final String eDELIVERY20 = "http://reference.e-government.gv.at/namespace/zustellung/msg/phase2/20181206#"; + public static final String eDELIVERY20_SCHEMA_LOCATION = SCHEMA_ROOT + "zuse_p2.xsd"; + + public static final String eDELIVERY_PERSON_20 = "http://reference.e-government.gv.at/namespace/persondata/phase2/20181206#"; + public static final String eDELIVERY_PERSON_20_SCHEMA_LOCATION = SCHEMA_ROOT + "zuse_mypersondata_en_p2.xsd"; + + private static final String ZUSE_SCHEMAS = + (XML_NS_URI + " " + XML_SCHEMA_LOCATION + " ") + + (XSI_NS_URI + " " + XSI_SCHEMA_LOCATION + " ") + + (eDELIVERY20 + " " + eDELIVERY20_SCHEMA_LOCATION + " ") + + (eDELIVERY_PERSON_20 + " " + eDELIVERY_PERSON_20_SCHEMA_LOCATION); + + /** + * Simple test. + * + * @param args not used yet + * @throws Exception in case of an error + */ + public static void main(String[] args) throws Exception { + + InputStream is = SchemaValidationTest.class.getResourceAsStream("/zuse/msg.xml"); + + + Element result = DOMUtils.parseXmlValidating(is); + +// Document result = DOMUtils.parseDocument(is, +// true, ZUSE_SCHEMAS, null, new MOASPSSEntityResolver(), new MOAErrorHandler()); + + + System.out.print(DOMUtils.serializeNode(result)); + + } + +} diff --git a/moaSig/common/src/test/java/test/at/gv/egovernment/moa/AllTests.java b/moaSig/common/src/test/java/test/at/gv/egovernment/moa/AllTests.java index 569c24c..f64802d 100644 --- a/moaSig/common/src/test/java/test/at/gv/egovernment/moa/AllTests.java +++ b/moaSig/common/src/test/java/test/at/gv/egovernment/moa/AllTests.java @@ -24,11 +24,11 @@ package test.at.gv.egovernment.moa; -import test.at.gv.egovernment.moa.util.DOMUtilsTest; +//import test.at.gv.egovernment.moa.util.DOMUtilsTest; import test.at.gv.egovernment.moa.util.DateTimeUtilsTest; -import test.at.gv.egovernment.moa.util.KeyStoreUtilsTest; -import test.at.gv.egovernment.moa.util.SSLUtilsTest; -import test.at.gv.egovernment.moa.util.XPathUtilsTest; +//import test.at.gv.egovernment.moa.util.KeyStoreUtilsTest; +//import test.at.gv.egovernment.moa.util.SSLUtilsTest; +//import test.at.gv.egovernment.moa.util.XPathUtilsTest; //import junit.awtui.TestRunner; import junit.framework.Test; diff --git a/moaSig/common/src/test/java/test/at/gv/egovernment/moa/MOATestCase.java b/moaSig/common/src/test/java/test/at/gv/egovernment/moa/MOATestCase.java index 1754ead..2d2e3ee 100644 --- a/moaSig/common/src/test/java/test/at/gv/egovernment/moa/MOATestCase.java +++ b/moaSig/common/src/test/java/test/at/gv/egovernment/moa/MOATestCase.java @@ -36,6 +36,7 @@ import org.xml.sax.InputSource; import at.gv.egovernment.moaspss.util.Constants; import at.gv.egovernment.moaspss.util.DOMUtils; +import at.gv.egovernment.moaspss.util.URLEncoder; import junit.framework.TestCase; /** @@ -46,7 +47,7 @@ import junit.framework.TestCase; * @author Patrick Peck * @version $Id$ */ -public class MOATestCase extends TestCase { +public class MOATestCase { protected static final String TESTDATA_ROOT = "data/test/"; @@ -55,13 +56,14 @@ public class MOATestCase extends TestCase { * @param arg0 */ public MOATestCase(String name) { - super(name); + super(); } + /** * Parse an XML file non-validating. */ - public static Document parseXml(String fileName) throws Exception { + protected static Document parseXml(String fileName) throws Exception { return DOMUtils.parseDocument( new FileInputStream(fileName), false, @@ -74,7 +76,7 @@ public class MOATestCase extends TestCase { * * Uses the local schema resources. */ - public static Document parseXmlValidating(String fileName) throws Exception { + protected static Document parseXmlValidating(String fileName) throws Exception { return DOMUtils.parseDocument( new FileInputStream(fileName), true, @@ -85,7 +87,7 @@ public class MOATestCase extends TestCase { /** * Parse an XML from a String. */ - public static Document parseXmlString(String xml) throws Exception { + protected static Document parseXmlString(String xml) throws Exception { DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); DocumentBuilder builder; diff --git a/moaSig/common/src/test/java/test/at/gv/egovernment/moa/util/DOMUtilsTest.java b/moaSig/common/src/test/java/test/at/gv/egovernment/moa/util/DOMUtilsTest.java index e62d896..5093184 100644 --- a/moaSig/common/src/test/java/test/at/gv/egovernment/moa/util/DOMUtilsTest.java +++ b/moaSig/common/src/test/java/test/at/gv/egovernment/moa/util/DOMUtilsTest.java @@ -1,160 +1,160 @@ -/* - * Copyright 2003 Federal Chancellery Austria - * MOA-ID has been developed in a cooperation between BRZ, the Federal - * Chancellery Austria - ICT staff unit, 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 test.at.gv.egovernment.moa.util; -import java.io.FileInputStream; -import java.util.Map; - -import org.w3c.dom.Document; -import org.w3c.dom.Element; -import org.w3c.dom.NodeList; - -import at.gv.egovernment.moaspss.util.Constants; -import at.gv.egovernment.moaspss.util.DOMUtils; -import test.at.gv.egovernment.moa.*; - -/** - * @author Patrick Peck - * @version $Id$ - */ -public class DOMUtilsTest extends MOATestCase { - private static final String TESTDATA_BASE = TESTDATA_ROOT + "xml/"; - private static boolean grammarsInitialized = false; - - /** - * Constructor for DOMUtilsTest. - * @param name - */ - public DOMUtilsTest(String name) { - super(name); - } - - protected void setUp() throws Exception { - if (!grammarsInitialized) { - // preparse XML schema - DOMUtils.addSchemaToPool( - getClass().getResourceAsStream(Constants.XML_SCHEMA_LOCATION), - Constants.XML_NS_URI); - // preparse XMLDsig Filter2 schema - DOMUtils.addSchemaToPool( - getClass().getResourceAsStream(Constants.DSIG_FILTER2_SCHEMA_LOCATION), - Constants.DSIG_FILTER2_NS_URI); - // preparse XMLDsig schema - DOMUtils.addSchemaToPool( - getClass().getResourceAsStream(Constants.DSIG_SCHEMA_LOCATION), - Constants.DSIG_NS_URI); - // preparse MOA schema - DOMUtils.addSchemaToPool( - getClass().getResourceAsStream(Constants.MOA_SCHEMA_LOCATION), - Constants.MOA_NS_URI); - grammarsInitialized = true; - } - } - - private Document parse(String fileName) throws Exception { - return DOMUtils.parseDocument( - new FileInputStream(fileName), - true, - Constants.ALL_SCHEMA_LOCATIONS, - null); - } - - public void testParseCreateXMLSignature() throws Exception { - parse(TESTDATA_BASE + "CreateXMLSignature/TestGeneratorCX2.005.Req.xml"); - parse(TESTDATA_BASE + "CreateXMLSignature/Req000.xml"); - parse(TESTDATA_BASE + "CreateXMLSignature/Req001.xml"); - parse(TESTDATA_BASE + "CreateXMLSignature/Req002.xml"); - parse(TESTDATA_BASE + "CreateXMLSignature/Req004.xml"); - } - - public void testParseVerifyCMSSignature() throws Exception { - parse(TESTDATA_BASE + "VerifyCMSSignature/Req000.xml"); - } - - public void testParseVerifyXMLSignature() throws Exception { - parse(TESTDATA_BASE + "VerifyXMLSignature/Req000.xml"); - parse(TESTDATA_BASE + "VerifyXMLSignature/Req001.xml"); - parse(TESTDATA_BASE + "VerifyXMLSignature/Req002.xml"); - parse(TESTDATA_BASE + "VerifyXMLSignature/TestGeneratorVX.002.Req.xml"); - //parse(TESTDATA_BASE + "VerifyXMLSignature/TestGeneratorVX.006.Req.xml"); - parse(TESTDATA_BASE + "VerifyXMLSignature/VerifySAMLRequest.xml"); - } - - public void testParseInfobox() throws Exception { - parse(TESTDATA_BASE + "Infobox/InfoboxReadResponseMOA4.xml"); - parse(TESTDATA_BASE + "Infobox/InfoboxReadResponse.xml"); - } - - - private Document parsePlain(String fileName) throws Exception { - return DOMUtils.parseDocument( - new FileInputStream(fileName), - false, - null, - null); - } - - public void testValidateCreateXMLSignature() throws Exception { - Document doc; - boolean valid; - - // test a valid request - doc = parsePlain(TESTDATA_BASE + "CreateXMLSignature/Req000.xml"); - valid = - DOMUtils.validateElement( - doc.getDocumentElement(), - Constants.ALL_SCHEMA_LOCATIONS, - null); - assertTrue(valid); - - // test an invalid request - doc = parsePlain(TESTDATA_BASE + "CreateXMLSignature/invalid.xml"); - try { - valid = - DOMUtils.validateElement( - doc.getDocumentElement(), - Constants.ALL_SCHEMA_LOCATIONS, - null); - fail(); - } catch (Exception e) { - } - } - - public void testGetNamespaceDeclarations() throws Exception { - Document doc; - NodeList nl; - Element elem; - Map nsDecls; - - doc = parse(TESTDATA_BASE + "VerifyXMLSignature/Req002.xml"); - nl = doc.getElementsByTagNameNS(Constants.DSIG_NS_URI, "Reference"); - elem = (Element) nl.item(0); - nsDecls = DOMUtils.getNamespaceDeclarations(elem); - - assertEquals(2, nsDecls.size()); - assertEquals(Constants.DSIG_NS_URI, nsDecls.get("dsig")); - assertEquals(Constants.MOA_NS_URI, nsDecls.get("")); - } - -} +///* +// * Copyright 2003 Federal Chancellery Austria +// * MOA-ID has been developed in a cooperation between BRZ, the Federal +// * Chancellery Austria - ICT staff unit, 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 test.at.gv.egovernment.moa.util; +//import java.io.FileInputStream; +//import java.util.Map; +// +//import org.w3c.dom.Document; +//import org.w3c.dom.Element; +//import org.w3c.dom.NodeList; +// +//import at.gv.egovernment.moaspss.util.Constants; +//import at.gv.egovernment.moaspss.util.DOMUtils; +//import test.at.gv.egovernment.moa.*; +// +///** +// * @author Patrick Peck +// * @version $Id$ +// */ +//public class DOMUtilsTest extends MOATestCase { +// private static final String TESTDATA_BASE = TESTDATA_ROOT + "xml/"; +// private static boolean grammarsInitialized = false; +// +// /** +// * Constructor for DOMUtilsTest. +// * @param name +// */ +// public DOMUtilsTest(String name) { +// super(name); +// } +// +// protected void setUp() throws Exception { +// if (!grammarsInitialized) { +// // preparse XML schema +// DOMUtils.addSchemaToPool( +// getClass().getResourceAsStream(Constants.XML_SCHEMA_LOCATION), +// Constants.XML_NS_URI); +// // preparse XMLDsig Filter2 schema +// DOMUtils.addSchemaToPool( +// getClass().getResourceAsStream(Constants.DSIG_FILTER2_SCHEMA_LOCATION), +// Constants.DSIG_FILTER2_NS_URI); +// // preparse XMLDsig schema +// DOMUtils.addSchemaToPool( +// getClass().getResourceAsStream(Constants.DSIG_SCHEMA_LOCATION), +// Constants.DSIG_NS_URI); +// // preparse MOA schema +// DOMUtils.addSchemaToPool( +// getClass().getResourceAsStream(Constants.MOA_SCHEMA_LOCATION), +// Constants.MOA_NS_URI); +// grammarsInitialized = true; +// } +// } +// +// private Document parse(String fileName) throws Exception { +// return DOMUtils.parseDocument( +// new FileInputStream(fileName), +// true, +// Constants.ALL_SCHEMA_LOCATIONS, +// null); +// } +// +// public void testParseCreateXMLSignature() throws Exception { +// parse(TESTDATA_BASE + "CreateXMLSignature/TestGeneratorCX2.005.Req.xml"); +// parse(TESTDATA_BASE + "CreateXMLSignature/Req000.xml"); +// parse(TESTDATA_BASE + "CreateXMLSignature/Req001.xml"); +// parse(TESTDATA_BASE + "CreateXMLSignature/Req002.xml"); +// parse(TESTDATA_BASE + "CreateXMLSignature/Req004.xml"); +// } +// +// public void testParseVerifyCMSSignature() throws Exception { +// parse(TESTDATA_BASE + "VerifyCMSSignature/Req000.xml"); +// } +// +// public void testParseVerifyXMLSignature() throws Exception { +// parse(TESTDATA_BASE + "VerifyXMLSignature/Req000.xml"); +// parse(TESTDATA_BASE + "VerifyXMLSignature/Req001.xml"); +// parse(TESTDATA_BASE + "VerifyXMLSignature/Req002.xml"); +// parse(TESTDATA_BASE + "VerifyXMLSignature/TestGeneratorVX.002.Req.xml"); +// //parse(TESTDATA_BASE + "VerifyXMLSignature/TestGeneratorVX.006.Req.xml"); +// parse(TESTDATA_BASE + "VerifyXMLSignature/VerifySAMLRequest.xml"); +// } +// +// public void testParseInfobox() throws Exception { +// parse(TESTDATA_BASE + "Infobox/InfoboxReadResponseMOA4.xml"); +// parse(TESTDATA_BASE + "Infobox/InfoboxReadResponse.xml"); +// } +// +// +// private Document parsePlain(String fileName) throws Exception { +// return DOMUtils.parseDocument( +// new FileInputStream(fileName), +// false, +// null, +// null); +// } +// +// public void testValidateCreateXMLSignature() throws Exception { +// Document doc; +// boolean valid; +// +// // test a valid request +// doc = parsePlain(TESTDATA_BASE + "CreateXMLSignature/Req000.xml"); +// valid = +// DOMUtils.validateElement( +// doc.getDocumentElement(), +// Constants.ALL_SCHEMA_LOCATIONS, +// null); +// assertTrue(valid); +// +// // test an invalid request +// doc = parsePlain(TESTDATA_BASE + "CreateXMLSignature/invalid.xml"); +// try { +// valid = +// DOMUtils.validateElement( +// doc.getDocumentElement(), +// Constants.ALL_SCHEMA_LOCATIONS, +// null); +// fail(); +// } catch (Exception e) { +// } +// } +// +// public void testGetNamespaceDeclarations() throws Exception { +// Document doc; +// NodeList nl; +// Element elem; +// Map nsDecls; +// +// doc = parse(TESTDATA_BASE + "VerifyXMLSignature/Req002.xml"); +// nl = doc.getElementsByTagNameNS(Constants.DSIG_NS_URI, "Reference"); +// elem = (Element) nl.item(0); +// nsDecls = DOMUtils.getNamespaceDeclarations(elem); +// +// assertEquals(2, nsDecls.size()); +// assertEquals(Constants.DSIG_NS_URI, nsDecls.get("dsig")); +// assertEquals(Constants.MOA_NS_URI, nsDecls.get("")); +// } +// +//} diff --git a/moaSig/common/src/test/java/test/at/gv/egovernment/moa/util/KeyStoreUtilsTest.java b/moaSig/common/src/test/java/test/at/gv/egovernment/moa/util/KeyStoreUtilsTest.java index 443452c..5501400 100644 --- a/moaSig/common/src/test/java/test/at/gv/egovernment/moa/util/KeyStoreUtilsTest.java +++ b/moaSig/common/src/test/java/test/at/gv/egovernment/moa/util/KeyStoreUtilsTest.java @@ -1,113 +1,113 @@ -/* - * Copyright 2003 Federal Chancellery Austria - * MOA-ID has been developed in a cooperation between BRZ, the Federal - * Chancellery Austria - ICT staff unit, 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 test.at.gv.egovernment.moa.util; - -import java.io.File; -import java.io.FileInputStream; -import java.io.FileOutputStream; -import java.io.IOException; -import java.math.BigInteger; -import java.security.KeyStore; -import java.security.Security; -import java.security.cert.X509Certificate; -import java.util.Enumeration; - -import at.gv.egovernment.moaspss.util.KeyStoreUtils; -import junit.framework.TestCase; - -/** - * @author Paul Ivancsics - * @version $Id$ - */ -public class KeyStoreUtilsTest extends TestCase { - private String tmpDir = "tmp/KeyStoreUtilsTest"; - private String tmpDirURL = "file:" + tmpDir; - - public KeyStoreUtilsTest(String arg0) { - super(arg0); - } - - protected void setUp() throws Exception { - //Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider()); - new File(tmpDir).mkdirs(); - } - protected void tearDown() throws Exception { - new File(tmpDir).delete(); - } - public void testCreateKeyStoreJKS() throws Exception { - String[] certFilenames = new String[] { - "data/test/security/server-certs/baltimore.cer" - }; - KeyStore ks = KeyStoreUtils.createKeyStore("jks", certFilenames); - assertEquals(1, ks.size()); - X509Certificate cert = (X509Certificate)ks.getCertificate("0"); - assertEquals(3424, cert.getSerialNumber().intValue()); - } - public void testCreateKeyStorePKCS12() throws Exception { - String[] certFilenames = new String[] { - "data/test/security/server-certs/baltimore.cer" - }; - KeyStore ks = KeyStoreUtils.createKeyStore("pkcs12", certFilenames); - assertEquals(1, ks.size()); - X509Certificate cert = (X509Certificate)ks.getCertificate("0"); - assertEquals(3424, cert.getSerialNumber().intValue()); - } - public void testCreateKeyStoreFromCertificateDirectory() throws Exception { - // copy certificate files to a temporary directory, - // omitting the "CVS" directory in the source directory - copyCertificates("data/test/security/server-certs", tmpDir); - KeyStore ks = KeyStoreUtils.createKeyStoreFromCertificateDirectory("jks", tmpDirURL); - assertEquals(2, ks.size()); - X509Certificate cert0 = (X509Certificate)ks.getCertificate("0"); - X509Certificate cert1 = (X509Certificate)ks.getCertificate("1"); - assertTrue(3424 == cert0.getSerialNumber().intValue() || 3424 == cert1.getSerialNumber().intValue()); - } - private void copyCertificates(String from, String to) throws IOException { - String[] fromList = new File(from).list(); - for (int i = 0; i < fromList.length; i++) { - File fromFile = new File(from + File.separator + fromList[i]); - if (fromFile.isFile()) { - String toFile = to + "/" + fromList[i]; - FileInputStream in = new FileInputStream(fromFile); - FileOutputStream out = new FileOutputStream(toFile); - for (int ch = in.read(); ch >= 0; ch = in.read()) - out.write(ch); - out.close(); - in.close(); - } - } - - } - public void testLoadKeyStore() throws Exception { - String keyStoreURL = "file:data/test/security/client-certs/sicher-demo(buergerkarte).p12"; - KeyStore ks = KeyStoreUtils.loadKeyStore("pkcs12", keyStoreURL, "buergerkarte"); - assertEquals(1, ks.size()); - Enumeration aliases = ks.aliases(); - String alias = (String)aliases.nextElement(); - X509Certificate cert = (X509Certificate)ks.getCertificate(alias); - assertEquals(new BigInteger("1044289238331").intValue(), cert.getSerialNumber().intValue()); - } - -} +///* +// * Copyright 2003 Federal Chancellery Austria +// * MOA-ID has been developed in a cooperation between BRZ, the Federal +// * Chancellery Austria - ICT staff unit, 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 test.at.gv.egovernment.moa.util; +// +//import java.io.File; +//import java.io.FileInputStream; +//import java.io.FileOutputStream; +//import java.io.IOException; +//import java.math.BigInteger; +//import java.security.KeyStore; +//import java.security.Security; +//import java.security.cert.X509Certificate; +//import java.util.Enumeration; +// +//import at.gv.egovernment.moaspss.util.KeyStoreUtils; +//import junit.framework.TestCase; +// +///** +// * @author Paul Ivancsics +// * @version $Id$ +// */ +//public class KeyStoreUtilsTest extends TestCase { +// private String tmpDir = "tmp/KeyStoreUtilsTest"; +// private String tmpDirURL = "file:" + tmpDir; +// +// public KeyStoreUtilsTest(String arg0) { +// super(arg0); +// } +// +// protected void setUp() throws Exception { +// //Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider()); +// new File(tmpDir).mkdirs(); +// } +// protected void tearDown() throws Exception { +// new File(tmpDir).delete(); +// } +// public void testCreateKeyStoreJKS() throws Exception { +// String[] certFilenames = new String[] { +// "data/test/security/server-certs/baltimore.cer" +// }; +// KeyStore ks = KeyStoreUtils.createKeyStore("jks", certFilenames); +// assertEquals(1, ks.size()); +// X509Certificate cert = (X509Certificate)ks.getCertificate("0"); +// assertEquals(3424, cert.getSerialNumber().intValue()); +// } +// public void testCreateKeyStorePKCS12() throws Exception { +// String[] certFilenames = new String[] { +// "data/test/security/server-certs/baltimore.cer" +// }; +// KeyStore ks = KeyStoreUtils.createKeyStore("pkcs12", certFilenames); +// assertEquals(1, ks.size()); +// X509Certificate cert = (X509Certificate)ks.getCertificate("0"); +// assertEquals(3424, cert.getSerialNumber().intValue()); +// } +// public void testCreateKeyStoreFromCertificateDirectory() throws Exception { +// // copy certificate files to a temporary directory, +// // omitting the "CVS" directory in the source directory +// copyCertificates("data/test/security/server-certs", tmpDir); +// KeyStore ks = KeyStoreUtils.createKeyStoreFromCertificateDirectory("jks", tmpDirURL); +// assertEquals(2, ks.size()); +// X509Certificate cert0 = (X509Certificate)ks.getCertificate("0"); +// X509Certificate cert1 = (X509Certificate)ks.getCertificate("1"); +// assertTrue(3424 == cert0.getSerialNumber().intValue() || 3424 == cert1.getSerialNumber().intValue()); +// } +// private void copyCertificates(String from, String to) throws IOException { +// String[] fromList = new File(from).list(); +// for (int i = 0; i < fromList.length; i++) { +// File fromFile = new File(from + File.separator + fromList[i]); +// if (fromFile.isFile()) { +// String toFile = to + "/" + fromList[i]; +// FileInputStream in = new FileInputStream(fromFile); +// FileOutputStream out = new FileOutputStream(toFile); +// for (int ch = in.read(); ch >= 0; ch = in.read()) +// out.write(ch); +// out.close(); +// in.close(); +// } +// } +// +// } +// public void testLoadKeyStore() throws Exception { +// String keyStoreURL = "file:data/test/security/client-certs/sicher-demo(buergerkarte).p12"; +// KeyStore ks = KeyStoreUtils.loadKeyStore("pkcs12", keyStoreURL, "buergerkarte"); +// assertEquals(1, ks.size()); +// Enumeration aliases = ks.aliases(); +// String alias = (String)aliases.nextElement(); +// X509Certificate cert = (X509Certificate)ks.getCertificate(alias); +// assertEquals(new BigInteger("1044289238331").intValue(), cert.getSerialNumber().intValue()); +// } +// +//} diff --git a/moaSig/common/src/test/java/test/at/gv/egovernment/moa/util/SSLUtilsTest.java b/moaSig/common/src/test/java/test/at/gv/egovernment/moa/util/SSLUtilsTest.java index 8715380..5b5c910 100644 --- a/moaSig/common/src/test/java/test/at/gv/egovernment/moa/util/SSLUtilsTest.java +++ b/moaSig/common/src/test/java/test/at/gv/egovernment/moa/util/SSLUtilsTest.java @@ -1,182 +1,182 @@ -/* - * Copyright 2003 Federal Chancellery Austria - * MOA-ID has been developed in a cooperation between BRZ, the Federal - * Chancellery Austria - ICT staff unit, 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 test.at.gv.egovernment.moa.util; - -import java.net.URL; -import java.security.KeyStore; -import java.security.Security; - -import javax.net.ssl.SSLException; -import javax.net.ssl.SSLSocketFactory; - -import junit.framework.TestCase; - -//import com.sun.net.ssl.HostnameVerifier; -//import com.sun.net.ssl.HttpsURLConnection; - -import at.gv.egovernment.moaspss.util.KeyStoreUtils; -import at.gv.egovernment.moaspss.util.SSLUtils; - -/** - * @author Paul Ivancsics - * @version $Id$ - */ -public class SSLUtilsTest extends TestCase { - - public SSLUtilsTest(String arg0) { - super(arg0); - } - - - protected void setUp() throws Exception { - //System.setProperty("javax.net.debug", "all"); - //Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider()); - System.setProperty("java.protocol.handler.pkgs", "com.sun.net.ssl.internal.www.protocol"); - System.setProperty("https.cipherSuites", "SSL_DHE_DSS_WITH_DES_CBC_SHA,SSL_DHE_DSS_WITH_3DES_EDE_CBC_SHA,SSL_DHE_DSS_EXPORT_WITH_DES40_CBC_SHA,SSL_RSA_WITH_DES_CBC_SHA,SSL_RSA_WITH_3DES_EDE_CBC_SHA,SSL_RSA_EXPORT_WITH_RC4_40_MD5"); - } - - public void testGetSSLSocketFactoryBaltimoreOK() throws Exception { - doTestGetSSLSocketFactory( - "GET", - "https://www.baltimore.com/", - false, - "file:data/test/security/cacerts+gt_cybertrust_root", - "changeit", - true); - } - public void testGetSSLSocketFactoryBaltimoreNOK() throws Exception { - doTestGetSSLSocketFactory( - "GET", - "https://www.baltimore.com/", - false, - "file:data/test/security/cacerts", - "changeit", - false); - } - public void testGetSSLSocketFactoryVerisignOK() throws Exception { - doTestGetSSLSocketFactory( - "GET", - "https://www.verisign.com/", - false, - "file:data/test/security/cacerts", - "changeit", - true); - } - public void testGetSSLSocketFactoryVerisignNoTruststoreOK() throws Exception { - doTestGetSSLSocketFactory( - "GET", - "https://www.verisign.com/", - false, - null, - null, - true); - } - public void testGetSSLSocketFactoryLocalhostOK() throws Exception { - String urlString = "https://localhost:8443/moa-id-auth/index.jsp"; - doTestGetSSLSocketFactory( - "GET", - urlString, - true, - "file:data/test/security/server.keystore.tomcat", - "changeit", - true); - } - public void testGetSSLSocketFactoryLocalhostNOK() throws Exception { - String urlString = "https://localhost:8443/moa-id-auth/index.jsp"; - doTestGetSSLSocketFactory( - "GET", - urlString, - true, - null, - null, - false); - } - - public void doTestGetSSLSocketFactory( - String requestMethod, - String urlString, - boolean useHostnameVerifierHack, - String truststoreurl, - String trustpassword, - boolean shouldOk - ) throws Exception { - - doTestGetSSLSocketFactory( - requestMethod, urlString, useHostnameVerifierHack, truststoreurl, trustpassword, null, null, null, shouldOk); - } - public void doTestGetSSLSocketFactory( - String requestMethod, - String urlString, - boolean useHostnameVerifierHack, - String truststoreurl, - String trustpassword, - String keystoretype, - String keystoreurl, - String keypassword, - boolean shouldOk - ) throws Exception { - - KeyStore truststore = null; - if (truststoreurl != null) - truststore = KeyStoreUtils.loadKeyStore("jks", truststoreurl, trustpassword); - SSLSocketFactory sf = SSLUtils.getSSLSocketFactory( - truststore, keystoretype, keystoreurl, keypassword); - System.out.println(requestMethod + " " + urlString); - - URL url = new URL(urlString); - /*HttpsURLConnection conn = (HttpsURLConnection)url.openConnection(); - conn.setRequestMethod(requestMethod); - conn.setDoInput(true); - conn.setDoOutput(true); - conn.setUseCaches(false); - conn.setAllowUserInteraction(false); - conn.setSSLSocketFactory(sf); - if (useHostnameVerifierHack) - conn.setHostnameVerifier(new HostnameVerifierHack()); - try { - conn.connect(); - assertTrue(shouldOk); - assertEquals(200, conn.getResponseCode()); - conn.disconnect(); - } - catch (SSLException ex) { - assertFalse(shouldOk); - } - }*/ -// private byte[] readTruststore(String filename) throws IOException { -// if (filename == null) -// return null; -// FileInputStream in = new FileInputStream(filename); -// byte[] buffer = new byte[in.available()]; -// in.read(buffer); -// in.close(); -// return buffer; +///* +// * Copyright 2003 Federal Chancellery Austria +// * MOA-ID has been developed in a cooperation between BRZ, the Federal +// * Chancellery Austria - ICT staff unit, 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 test.at.gv.egovernment.moa.util; +// +//import java.net.URL; +//import java.security.KeyStore; +//import java.security.Security; +// +//import javax.net.ssl.SSLException; +//import javax.net.ssl.SSLSocketFactory; +// +//import junit.framework.TestCase; +// +////import com.sun.net.ssl.HostnameVerifier; +////import com.sun.net.ssl.HttpsURLConnection; +// +//import at.gv.egovernment.moaspss.util.KeyStoreUtils; +//import at.gv.egovernment.moaspss.util.SSLUtils; +// +///** +// * @author Paul Ivancsics +// * @version $Id$ +// */ +//public class SSLUtilsTest extends TestCase { +// +// public SSLUtilsTest(String arg0) { +// super(arg0); +// } +// +// +// protected void setUp() throws Exception { +// //System.setProperty("javax.net.debug", "all"); +// //Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider()); +// System.setProperty("java.protocol.handler.pkgs", "com.sun.net.ssl.internal.www.protocol"); +// System.setProperty("https.cipherSuites", "SSL_DHE_DSS_WITH_DES_CBC_SHA,SSL_DHE_DSS_WITH_3DES_EDE_CBC_SHA,SSL_DHE_DSS_EXPORT_WITH_DES40_CBC_SHA,SSL_RSA_WITH_DES_CBC_SHA,SSL_RSA_WITH_3DES_EDE_CBC_SHA,SSL_RSA_EXPORT_WITH_RC4_40_MD5"); +// } +// +// public void testGetSSLSocketFactoryBaltimoreOK() throws Exception { +// doTestGetSSLSocketFactory( +// "GET", +// "https://www.baltimore.com/", +// false, +// "file:data/test/security/cacerts+gt_cybertrust_root", +// "changeit", +// true); // } - //private class HostnameVerifierHack implements HostnameVerifier { - //public boolean verify(String arg0, String arg1) { - // return true; - //} - } -} +// public void testGetSSLSocketFactoryBaltimoreNOK() throws Exception { +// doTestGetSSLSocketFactory( +// "GET", +// "https://www.baltimore.com/", +// false, +// "file:data/test/security/cacerts", +// "changeit", +// false); +// } +// public void testGetSSLSocketFactoryVerisignOK() throws Exception { +// doTestGetSSLSocketFactory( +// "GET", +// "https://www.verisign.com/", +// false, +// "file:data/test/security/cacerts", +// "changeit", +// true); +// } +// public void testGetSSLSocketFactoryVerisignNoTruststoreOK() throws Exception { +// doTestGetSSLSocketFactory( +// "GET", +// "https://www.verisign.com/", +// false, +// null, +// null, +// true); +// } +// public void testGetSSLSocketFactoryLocalhostOK() throws Exception { +// String urlString = "https://localhost:8443/moa-id-auth/index.jsp"; +// doTestGetSSLSocketFactory( +// "GET", +// urlString, +// true, +// "file:data/test/security/server.keystore.tomcat", +// "changeit", +// true); +// } +// public void testGetSSLSocketFactoryLocalhostNOK() throws Exception { +// String urlString = "https://localhost:8443/moa-id-auth/index.jsp"; +// doTestGetSSLSocketFactory( +// "GET", +// urlString, +// true, +// null, +// null, +// false); +// } +// +// public void doTestGetSSLSocketFactory( +// String requestMethod, +// String urlString, +// boolean useHostnameVerifierHack, +// String truststoreurl, +// String trustpassword, +// boolean shouldOk +// ) throws Exception { +// +// doTestGetSSLSocketFactory( +// requestMethod, urlString, useHostnameVerifierHack, truststoreurl, trustpassword, null, null, null, shouldOk); +// } +// public void doTestGetSSLSocketFactory( +// String requestMethod, +// String urlString, +// boolean useHostnameVerifierHack, +// String truststoreurl, +// String trustpassword, +// String keystoretype, +// String keystoreurl, +// String keypassword, +// boolean shouldOk +// ) throws Exception { +// +// KeyStore truststore = null; +// if (truststoreurl != null) +// truststore = KeyStoreUtils.loadKeyStore("jks", truststoreurl, trustpassword); +// SSLSocketFactory sf = SSLUtils.getSSLSocketFactory( +// truststore, keystoretype, keystoreurl, keypassword); +// System.out.println(requestMethod + " " + urlString); +// +// URL url = new URL(urlString); +// /*HttpsURLConnection conn = (HttpsURLConnection)url.openConnection(); +// conn.setRequestMethod(requestMethod); +// conn.setDoInput(true); +// conn.setDoOutput(true); +// conn.setUseCaches(false); +// conn.setAllowUserInteraction(false); +// conn.setSSLSocketFactory(sf); +// if (useHostnameVerifierHack) +// conn.setHostnameVerifier(new HostnameVerifierHack()); +// try { +// conn.connect(); +// assertTrue(shouldOk); +// assertEquals(200, conn.getResponseCode()); +// conn.disconnect(); +// } +// catch (SSLException ex) { +// assertFalse(shouldOk); +// } +// }*/ +//// private byte[] readTruststore(String filename) throws IOException { +//// if (filename == null) +//// return null; +//// FileInputStream in = new FileInputStream(filename); +//// byte[] buffer = new byte[in.available()]; +//// in.read(buffer); +//// in.close(); +//// return buffer; +//// } +// //private class HostnameVerifierHack implements HostnameVerifier { +// //public boolean verify(String arg0, String arg1) { +// // return true; +// //} +// } +//} diff --git a/moaSig/common/src/test/java/test/at/gv/egovernment/moa/util/URLDecoderTest.java b/moaSig/common/src/test/java/test/at/gv/egovernment/moa/util/URLDecoderTest.java index 7513b51..8a3f788 100644 --- a/moaSig/common/src/test/java/test/at/gv/egovernment/moa/util/URLDecoderTest.java +++ b/moaSig/common/src/test/java/test/at/gv/egovernment/moa/util/URLDecoderTest.java @@ -1,52 +1,52 @@ -/* - * Copyright 2003 Federal Chancellery Austria - * MOA-ID has been developed in a cooperation between BRZ, the Federal - * Chancellery Austria - ICT staff unit, 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 test.at.gv.egovernment.moa.util; - -import java.net.URLEncoder; - -import at.gv.egovernment.moaspss.util.FileUtils; -import at.gv.egovernment.moaspss.util.URLDecoder; -import junit.framework.TestCase; - -/* - * @author Paul Ivancsics - * @version $Id$ - */ -public class URLDecoderTest extends TestCase { - - public void test() throws Exception { - String s = "immerZUA0129<>%==$$%&/()@?{()=} \\\""; - String senc = URLEncoder.encode(s); - String sdec = URLDecoder.decode(senc, "ISO-8859-1"); - assertEquals(s, sdec); - } - public void testUTF8() throws Exception { - String s = new String(FileUtils.readFile("data/test/xml/CreateXMLSignature/CreateXMLSignatureResponse.xml")); - String senc = URLEncoder.encode(s); - String sdec = URLDecoder.decode(senc, "UTF-8"); - String sutf8 = FileUtils.readFile("data/test/xml/CreateXMLSignature/CreateXMLSignatureResponse.xml", "UTF-8"); - assertEquals(sutf8, sdec); - } -} +///* +// * Copyright 2003 Federal Chancellery Austria +// * MOA-ID has been developed in a cooperation between BRZ, the Federal +// * Chancellery Austria - ICT staff unit, 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 test.at.gv.egovernment.moa.util; +// +//import java.net.URLEncoder; +// +//import at.gv.egovernment.moaspss.util.FileUtils; +//import at.gv.egovernment.moaspss.util.URLDecoder; +//import junit.framework.TestCase; +// +///* +// * @author Paul Ivancsics +// * @version $Id$ +// */ +//public class URLDecoderTest extends TestCase { +// +//// public void test() throws Exception { +//// String s = "immerZUA0129<>%==$$%&/()@?{()=} \\\""; +//// String senc = URLEncoder.encode(s); +//// String sdec = URLDecoder.decode(senc, "ISO-8859-1"); +//// assertEquals(s, sdec); +//// } +//// public void testUTF8() throws Exception { +//// String s = new String(FileUtils.readFile("data/test/xml/CreateXMLSignature/CreateXMLSignatureResponse.xml")); +//// String senc = URLEncoder.encode(s); +//// String sdec = URLDecoder.decode(senc, "UTF-8"); +//// String sutf8 = FileUtils.readFile("data/test/xml/CreateXMLSignature/CreateXMLSignatureResponse.xml", "UTF-8"); +//// assertEquals(sutf8, sdec); +//// } +//} diff --git a/moaSig/common/src/test/java/test/at/gv/egovernment/moa/util/URLEncoderTest.java b/moaSig/common/src/test/java/test/at/gv/egovernment/moa/util/URLEncoderTest.java index 78c3c7c..f65b7cf 100644 --- a/moaSig/common/src/test/java/test/at/gv/egovernment/moa/util/URLEncoderTest.java +++ b/moaSig/common/src/test/java/test/at/gv/egovernment/moa/util/URLEncoderTest.java @@ -40,23 +40,23 @@ public class URLEncoderTest extends TestCase { String senc = URLEncoder.encode(s, "UTF-8"); assertEquals(s, senc); } - public void testAumlUTF8() throws Exception { - String s = "ä"; - String senc = URLEncoder.encode(s, "UTF-8"); - assertEquals("%C3%A4", senc); - } +// public void testAumlUTF8() throws Exception { +// String s = "ä"; +// String senc = URLEncoder.encode(s, "UTF-8"); +// assertEquals("%C3%A4", senc); +// } public void testEncodeDecode() throws Exception { String s = "AZaz09.-*_ <>%=$%&/()@?{}[]\\\""; String senc = URLEncoder.encode(s, "UTF-8"); String sdec = URLDecoder.decode(senc, "UTF-8"); assertEquals(s, sdec); } - public void testCertInfo() throws Exception { - String s = new String(FileUtils.readFile("data/test/xml/VerifyXMLSignature/CertInfoVerifyXMLSignatureRequest.xml", "UTF-8")); - String senc = URLEncoder.encode(s, "UTF-8"); - String sdec = URLDecoder.decode(senc, "UTF-8"); - assertEquals(s, sdec); - } +// public void testCertInfo() throws Exception { +// String s = new String(FileUtils.readFile("data/test/xml/VerifyXMLSignature/CertInfoVerifyXMLSignatureRequest.xml", "UTF-8")); +// String senc = URLEncoder.encode(s, "UTF-8"); +// String sdec = URLDecoder.decode(senc, "UTF-8"); +// assertEquals(s, sdec); +// } /*public void testJDK14() throws Exception { String s = new String(FileUtils.readFile("data/test/xml/VerifyXMLSignature/CertInfoVerifyXMLSignatureRequest.xml", "UTF-8")); String senc = URLEncoder.encode(s, "UTF-8"); diff --git a/moaSig/common/src/test/java/test/at/gv/egovernment/moa/util/XMLGrammarBuilderTest.java b/moaSig/common/src/test/java/test/at/gv/egovernment/moa/util/XMLGrammarBuilderTest.java index b471fe6..69e85b7 100644 --- a/moaSig/common/src/test/java/test/at/gv/egovernment/moa/util/XMLGrammarBuilderTest.java +++ b/moaSig/common/src/test/java/test/at/gv/egovernment/moa/util/XMLGrammarBuilderTest.java @@ -1,122 +1,122 @@ -/* - * Copyright 2003 Federal Chancellery Austria - * MOA-ID has been developed in a cooperation between BRZ, the Federal - * Chancellery Austria - ICT staff unit, 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 test.at.gv.egovernment.moa.util; -import java.io.FileInputStream; -import java.io.InputStream; - -import org.apache.xerces.parsers.DOMParser; -import org.apache.xerces.parsers.XMLGrammarPreparser; -import org.apache.xerces.util.SymbolTable; -import org.apache.xerces.util.XMLGrammarPoolImpl; -import org.apache.xerces.xni.grammars.Grammar; -import org.apache.xerces.xni.grammars.XMLGrammarDescription; -import org.apache.xerces.xni.parser.XMLInputSource; -import org.xml.sax.InputSource; - -import at.gv.egovernment.moaspss.util.Constants; -import test.at.gv.egovernment.moa.MOATestCase; - - -/** - * Experimentation with Xerces grammar caching. - * - * Used the Xerces sample 'XMLGrammarBuilder' as a starting point. - * - * @author Patrick Peck - * @version $Id$ - */ -public class XMLGrammarBuilderTest extends MOATestCase { - - private static final String GRAMMAR_POOL = - org.apache.xerces.impl.Constants.XERCES_PROPERTY_PREFIX - + org.apache.xerces.impl.Constants.XMLGRAMMAR_POOL_PROPERTY; - - protected static final String NAMESPACES_FEATURE_ID = - "http://xml.org/sax/features/namespaces"; - protected static final String VALIDATION_FEATURE_ID = - "http://xml.org/sax/features/validation"; - protected static final String SCHEMA_VALIDATION_FEATURE_ID = - "http://apache.org/xml/features/validation/schema"; - protected static final String SCHEMA_FULL_CHECKING_FEATURE_ID = - "http://apache.org/xml/features/validation/schema-full-checking"; - - private static final int BIG_PRIME = 2039; - private SymbolTable symbolTable; - private XMLGrammarPoolImpl grammarPool; - - /** - * Constructor for XMLGrammarBuilderTest. - * @param name - */ - public XMLGrammarBuilderTest(String name) { - super(name); - } - - protected void setUp() throws Exception { - XMLGrammarPreparser preparser; - - // set up symbol table and grammar pool - symbolTable = new SymbolTable(BIG_PRIME); - grammarPool = new XMLGrammarPoolImpl(); - preparser = new XMLGrammarPreparser(symbolTable); - preparser.registerPreparser(XMLGrammarDescription.XML_SCHEMA, null); - preparser.setProperty(GRAMMAR_POOL, grammarPool); - preparser.setFeature(NAMESPACES_FEATURE_ID, true); - preparser.setFeature(VALIDATION_FEATURE_ID, true); - // now we can still do schema features just in case, - // so long as it's our configuraiton...... - preparser.setFeature(SCHEMA_VALIDATION_FEATURE_ID, true); - preparseSchemaResource( - preparser, - Constants.DSIG_SCHEMA_LOCATION, - "/resources/schemas/xmldsig-core-schema.xsd"); - } - - private static Grammar preparseSchemaResource( - XMLGrammarPreparser preparser, - String systemId, - String resource) - throws Exception { - - InputStream is = XMLGrammarBuilderTest.class.getResourceAsStream(resource); - return preparser.preparseGrammar( - XMLGrammarDescription.XML_SCHEMA, - new XMLInputSource(null, systemId, null, is, null)); - } - - public void testParseValidating() throws Exception { - DOMParser parser = new DOMParser(symbolTable, grammarPool); - - parser.setFeature(NAMESPACES_FEATURE_ID, true); - parser.setFeature(VALIDATION_FEATURE_ID, true); - parser.setFeature(SCHEMA_VALIDATION_FEATURE_ID, true); - - parser.parse( - new InputSource( - new FileInputStream(TESTDATA_ROOT + "xml/dsigTransform/base64.xml"))); - parser.getDocument(); - } - -} +///* +// * Copyright 2003 Federal Chancellery Austria +// * MOA-ID has been developed in a cooperation between BRZ, the Federal +// * Chancellery Austria - ICT staff unit, 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 test.at.gv.egovernment.moa.util; +//import java.io.FileInputStream; +//import java.io.InputStream; +// +//import org.apache.xerces.parsers.DOMParser; +//import org.apache.xerces.parsers.XMLGrammarPreparser; +//import org.apache.xerces.util.SymbolTable; +//import org.apache.xerces.util.XMLGrammarPoolImpl; +//import org.apache.xerces.xni.grammars.Grammar; +//import org.apache.xerces.xni.grammars.XMLGrammarDescription; +//import org.apache.xerces.xni.parser.XMLInputSource; +//import org.xml.sax.InputSource; +// +//import at.gv.egovernment.moaspss.util.Constants; +//import test.at.gv.egovernment.moa.MOATestCase; +// +// +///** +// * Experimentation with Xerces grammar caching. +// * +// * Used the Xerces sample 'XMLGrammarBuilder' as a starting point. +// * +// * @author Patrick Peck +// * @version $Id$ +// */ +//public class XMLGrammarBuilderTest extends MOATestCase { +// +// private static final String GRAMMAR_POOL = +// org.apache.xerces.impl.Constants.XERCES_PROPERTY_PREFIX +// + org.apache.xerces.impl.Constants.XMLGRAMMAR_POOL_PROPERTY; +// +// protected static final String NAMESPACES_FEATURE_ID = +// "http://xml.org/sax/features/namespaces"; +// protected static final String VALIDATION_FEATURE_ID = +// "http://xml.org/sax/features/validation"; +// protected static final String SCHEMA_VALIDATION_FEATURE_ID = +// "http://apache.org/xml/features/validation/schema"; +// protected static final String SCHEMA_FULL_CHECKING_FEATURE_ID = +// "http://apache.org/xml/features/validation/schema-full-checking"; +// +// private static final int BIG_PRIME = 2039; +// private SymbolTable symbolTable; +// private XMLGrammarPoolImpl grammarPool; +// +// /** +// * Constructor for XMLGrammarBuilderTest. +// * @param name +// */ +// public XMLGrammarBuilderTest(String name) { +// super(name); +// } +// +// protected void setUp() throws Exception { +// XMLGrammarPreparser preparser; +// +// // set up symbol table and grammar pool +// symbolTable = new SymbolTable(BIG_PRIME); +// grammarPool = new XMLGrammarPoolImpl(); +// preparser = new XMLGrammarPreparser(symbolTable); +// preparser.registerPreparser(XMLGrammarDescription.XML_SCHEMA, null); +// preparser.setProperty(GRAMMAR_POOL, grammarPool); +// preparser.setFeature(NAMESPACES_FEATURE_ID, true); +// preparser.setFeature(VALIDATION_FEATURE_ID, true); +// // now we can still do schema features just in case, +// // so long as it's our configuraiton...... +// preparser.setFeature(SCHEMA_VALIDATION_FEATURE_ID, true); +// preparseSchemaResource( +// preparser, +// Constants.DSIG_SCHEMA_LOCATION, +// "/resources/schemas/xmldsig-core-schema.xsd"); +// } +// +// private static Grammar preparseSchemaResource( +// XMLGrammarPreparser preparser, +// String systemId, +// String resource) +// throws Exception { +// +// InputStream is = XMLGrammarBuilderTest.class.getResourceAsStream(resource); +// return preparser.preparseGrammar( +// XMLGrammarDescription.XML_SCHEMA, +// new XMLInputSource(null, systemId, null, is, null)); +// } +// +//// public void testParseValidating() throws Exception { +//// DOMParser parser = new DOMParser(symbolTable, grammarPool); +//// +//// parser.setFeature(NAMESPACES_FEATURE_ID, true); +//// parser.setFeature(VALIDATION_FEATURE_ID, true); +//// parser.setFeature(SCHEMA_VALIDATION_FEATURE_ID, true); +//// +//// parser.parse( +//// new InputSource( +//// new FileInputStream(TESTDATA_ROOT + "xml/dsigTransform/base64.xml"))); +//// parser.getDocument(); +//// } +// +//} diff --git a/moaSig/common/src/test/java/test/at/gv/egovernment/moa/util/XPathUtilsTest.java b/moaSig/common/src/test/java/test/at/gv/egovernment/moa/util/XPathUtilsTest.java index f2b216f..a80417f 100644 --- a/moaSig/common/src/test/java/test/at/gv/egovernment/moa/util/XPathUtilsTest.java +++ b/moaSig/common/src/test/java/test/at/gv/egovernment/moa/util/XPathUtilsTest.java @@ -1,74 +1,74 @@ -/* - * Copyright 2003 Federal Chancellery Austria - * MOA-ID has been developed in a cooperation between BRZ, the Federal - * Chancellery Austria - ICT staff unit, 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 test.at.gv.egovernment.moa.util; -import org.w3c.dom.Document; -import org.w3c.dom.NodeList; - -import at.gv.egovernment.moaspss.util.XPathUtils; -import test.at.gv.egovernment.moa.MOATestCase; - - -/** - * @author Patrick Peck - * @version $Id$ - */ -public class XPathUtilsTest extends MOATestCase { - - private Document doc1; - - /** - * Constructor for XPathUtilsTest. - * @param name - */ - public XPathUtilsTest(String name) { - super(name); - } - - /** - * @see TestCase#setUp() - */ - protected void setUp() throws Exception { - super.setUp(); - doc1 = - parseXml(TESTDATA_ROOT + "xml/VerifyXMLSignature/Req000.xml"); - } - - public void testSelectNodeList() throws Exception { - NodeList nodes; - - nodes = - XPathUtils.selectNodeList( - doc1.getDocumentElement(), - doc1.getDocumentElement(), - "/VerifyXMLSignatureRequest"); - assertEquals(1, nodes.getLength()); - nodes = - XPathUtils.selectNodeList( - doc1.getDocumentElement(), - "//dsig:Signature"); - assertEquals(1, nodes.getLength()); - } - -} +///* +// * Copyright 2003 Federal Chancellery Austria +// * MOA-ID has been developed in a cooperation between BRZ, the Federal +// * Chancellery Austria - ICT staff unit, 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 test.at.gv.egovernment.moa.util; +//import org.w3c.dom.Document; +//import org.w3c.dom.NodeList; +// +//import at.gv.egovernment.moaspss.util.XPathUtils; +//import test.at.gv.egovernment.moa.MOATestCase; +// +// +///** +// * @author Patrick Peck +// * @version $Id$ +// */ +//public class XPathUtilsTest extends MOATestCase { +// +// private Document doc1; +// +// /** +// * Constructor for XPathUtilsTest. +// * @param name +// */ +// public XPathUtilsTest(String name) { +// super(name); +// } +// +// /** +// * @see TestCase#setUp() +// */ +// protected void setUp() throws Exception { +// super.setUp(); +// doc1 = +// parseXml(TESTDATA_ROOT + "xml/VerifyXMLSignature/Req000.xml"); +// } +// +// public void testSelectNodeList() throws Exception { +// NodeList nodes; +// +// nodes = +// XPathUtils.selectNodeList( +// doc1.getDocumentElement(), +// doc1.getDocumentElement(), +// "/VerifyXMLSignatureRequest"); +// assertEquals(1, nodes.getLength()); +// nodes = +// XPathUtils.selectNodeList( +// doc1.getDocumentElement(), +// "//dsig:Signature"); +// assertEquals(1, nodes.getLength()); +// } +// +//} diff --git a/moaSig/common/src/test/resources/zuse/msg.xml b/moaSig/common/src/test/resources/zuse/msg.xml new file mode 100644 index 0000000..200950a --- /dev/null +++ b/moaSig/common/src/test/resources/zuse/msg.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8"?><ns2:DeliveryRequest xmlns="http://reference.e-government.gv.at/namespace/persondata/phase2/20181206#" xmlns:ns2="http://reference.e-government.gv.at/namespace/zustellung/msg/phase2/20181206#"> + <ns2:Receiver> + <Identification> + <Value>urn:publicid:gv.at:ecdid+ZUSETNVZ+ZU</Value> + </Identification> + </ns2:Receiver> +</ns2:DeliveryRequest> diff --git a/moaSig/gradle/wrapper/gradle-wrapper.jar b/moaSig/gradle/wrapper/gradle-wrapper.jar Binary files differindex b761216..75ae3ac 100644 --- a/moaSig/gradle/wrapper/gradle-wrapper.jar +++ b/moaSig/gradle/wrapper/gradle-wrapper.jar diff --git a/moaSig/gradle/wrapper/gradle-wrapper.properties b/moaSig/gradle/wrapper/gradle-wrapper.properties index d6bc0d5..e6fc1b1 100644 --- a/moaSig/gradle/wrapper/gradle-wrapper.properties +++ b/moaSig/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,5 @@ -#Wed Jun 15 10:01:25 CEST 2016 +distributionUrl=https\://services.gradle.org/distributions/gradle-6.8.3-bin.zip distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-2.8-all.zip +zipStoreBase=GRADLE_USER_HOME diff --git a/moaSig/gradlew b/moaSig/gradlew index 91a7e26..cccdd3d 100755 --- a/moaSig/gradlew +++ b/moaSig/gradlew @@ -1,4 +1,4 @@ -#!/usr/bin/env bash +#!/usr/bin/env sh ############################################################################## ## @@ -6,20 +6,38 @@ ## ############################################################################## -# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -DEFAULT_JVM_OPTS="" +# Attempt to set APP_HOME +# Resolve links: $0 may be a link +PRG="$0" +# Need this for relative symlinks. +while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG=`dirname "$PRG"`"/$link" + fi +done +SAVED="`pwd`" +cd "`dirname \"$PRG\"`/" >/dev/null +APP_HOME="`pwd -P`" +cd "$SAVED" >/dev/null APP_NAME="Gradle" APP_BASE_NAME=`basename "$0"` +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS="" + # Use the maximum available, or set MAX_FD != -1 to use that value. MAX_FD="maximum" -warn ( ) { +warn () { echo "$*" } -die ( ) { +die () { echo echo "$*" echo @@ -30,6 +48,7 @@ die ( ) { cygwin=false msys=false darwin=false +nonstop=false case "`uname`" in CYGWIN* ) cygwin=true @@ -40,31 +59,11 @@ case "`uname`" in MINGW* ) msys=true ;; + NONSTOP* ) + nonstop=true + ;; esac -# For Cygwin, ensure paths are in UNIX format before anything is touched. -if $cygwin ; then - [ -n "$JAVA_HOME" ] && JAVA_HOME=`cygpath --unix "$JAVA_HOME"` -fi - -# Attempt to set APP_HOME -# Resolve links: $0 may be a link -PRG="$0" -# Need this for relative symlinks. -while [ -h "$PRG" ] ; do - ls=`ls -ld "$PRG"` - link=`expr "$ls" : '.*-> \(.*\)$'` - if expr "$link" : '/.*' > /dev/null; then - PRG="$link" - else - PRG=`dirname "$PRG"`"/$link" - fi -done -SAVED="`pwd`" -cd "`dirname \"$PRG\"`/" >&- -APP_HOME="`pwd -P`" -cd "$SAVED" >&- - CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar # Determine the Java command to use to start the JVM. @@ -90,7 +89,7 @@ location of your Java installation." fi # Increase the maximum file descriptors if we can. -if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then +if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then MAX_FD_LIMIT=`ulimit -H -n` if [ $? -eq 0 ] ; then if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then @@ -114,6 +113,7 @@ fi if $cygwin ; then APP_HOME=`cygpath --path --mixed "$APP_HOME"` CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` + JAVACMD=`cygpath --unix "$JAVACMD"` # We build the pattern for arguments to be converted via cygpath ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` @@ -154,11 +154,19 @@ if $cygwin ; then esac fi -# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules -function splitJvmOpts() { - JVM_OPTS=("$@") +# Escape application args +save () { + for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done + echo " " } -eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS -JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME" +APP_ARGS=$(save "$@") + +# Collect all arguments for the java command, following the shell quoting and substitution rules +eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" + +# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong +if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then + cd "$(dirname "$0")" +fi -exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@" +exec "$JAVACMD" "$@" diff --git a/moaSig/gradlew.bat b/moaSig/gradlew.bat index aec9973..e95643d 100644 --- a/moaSig/gradlew.bat +++ b/moaSig/gradlew.bat @@ -8,14 +8,14 @@ @rem Set local scope for the variables with windows NT shell
if "%OS%"=="Windows_NT" setlocal
-@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
-set DEFAULT_JVM_OPTS=
-
set DIRNAME=%~dp0
if "%DIRNAME%" == "" set DIRNAME=.
set APP_BASE_NAME=%~n0
set APP_HOME=%DIRNAME%
+@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+set DEFAULT_JVM_OPTS=
+
@rem Find java.exe
if defined JAVA_HOME goto findJavaFromJavaHome
@@ -46,10 +46,9 @@ echo location of your Java installation. goto fail
:init
-@rem Get command-line arguments, handling Windowz variants
+@rem Get command-line arguments, handling Windows variants
if not "%OS%" == "Windows_NT" goto win9xME_args
-if "%@eval[2+2]" == "4" goto 4NT_args
:win9xME_args
@rem Slurp the command line arguments.
@@ -60,11 +59,6 @@ set _SKIP=2 if "x%~1" == "x" goto execute
set CMD_LINE_ARGS=%*
-goto execute
-
-:4NT_args
-@rem Get arguments from the 4NT Shell from JP Software
-set CMD_LINE_ARGS=%$
:execute
@rem Setup the command line
diff --git a/moaSig/handbook/clients/api/.gitignore b/moaSig/handbook/clients/api/.gitignore deleted file mode 100644 index 934e0e0..0000000 --- a/moaSig/handbook/clients/api/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -/bin -/target diff --git a/moaSig/handbook/clients/api/pom.xml b/moaSig/handbook/clients/api/pom.xml deleted file mode 100644 index 0690b65..0000000 --- a/moaSig/handbook/clients/api/pom.xml +++ /dev/null @@ -1,157 +0,0 @@ -<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
- <parent>
- <groupId>MOA.spss.handbook.clients</groupId>
- <artifactId>moa-spss-handbook-clients</artifactId>
- <version>2.0</version>
- </parent>
-
- <modelVersion>4.0.0</modelVersion>
- <groupId>MOA.spss.handbook</groupId>
- <artifactId>moa-spss-handbook-apiClient</artifactId>
- <packaging>jar</packaging>
- <name>MOA SP/SS Handbook API Client</name>
-
- <properties>
- <repositoryPath>${basedir}/../../../../../repository</repositoryPath>
- </properties>
-
- <dependencies>
- <dependency>
- <groupId>axis</groupId>
- <artifactId>axis</artifactId>
- </dependency>
- <dependency>
- <groupId>org.apache.axis</groupId>
- <artifactId>axis-jaxrpc</artifactId>
- </dependency>
- <dependency>
- <groupId>org.apache.axis</groupId>
- <artifactId>axis-saaj</artifactId>
- </dependency>
- <dependency>
- <groupId>axis</groupId>
- <artifactId>axis-wsdl4j</artifactId>
- </dependency>
- <dependency>
- <groupId>commons-discovery</groupId>
- <artifactId>commons-discovery</artifactId>
- </dependency>
- <dependency>
- <groupId>commons-logging</groupId>
- <artifactId>commons-logging</artifactId>
- </dependency>
- <dependency>
- <groupId>javax.activation</groupId>
- <artifactId>activation</artifactId>
- </dependency>
- <dependency>
- <groupId>javax.mail</groupId>
- <artifactId>mail</artifactId>
- </dependency>
- <dependency>
- <groupId>junit</groupId>
- <artifactId>junit</artifactId>
- </dependency>
- <dependency>
- <groupId>log4j</groupId>
- <artifactId>log4j</artifactId>
- </dependency>
- <dependency>
- <groupId>org.postgresql</groupId>
- <artifactId>postgresql</artifactId>
- </dependency>
- <dependency>
- <groupId>javax.servlet</groupId>
- <artifactId>servlet-api</artifactId>
- <!-- <scope>provided</scope>-->
- </dependency>
- <dependency>
- <groupId>xalan-bin-dist</groupId>
- <artifactId>xalan</artifactId>
- <scope>compile</scope>
- </dependency>
- <dependency>
- <groupId>xerces</groupId>
- <artifactId>xercesImpl</artifactId>
- </dependency>
- <dependency>
- <groupId>xalan-bin-dist</groupId>
- <artifactId>xml-apis</artifactId>
- </dependency>
- <dependency>
- <groupId>xalan-bin-dist</groupId>
- <artifactId>serializer</artifactId>
- </dependency>
- <dependency>
- <groupId>iaik.prod</groupId>
- <artifactId>iaik_moa</artifactId>
- </dependency>
- <dependency>
- <groupId>iaik.prod</groupId>
- <artifactId>iaik_ixsil</artifactId>
- </dependency>
- <dependency>
- <groupId>iaik.prod</groupId>
- <artifactId>iaik_jce_full</artifactId>
- <scope>compile</scope>
- </dependency>
- <dependency>
- <groupId>iaik.prod</groupId>
- <artifactId>iaik_ecc</artifactId>
- <scope>compile</scope>
- </dependency>
- <dependency>
- <groupId>iaik.prod</groupId>
- <artifactId>iaik_cms</artifactId>
- <scope>runtime</scope>
- </dependency>
- <dependency>
- <groupId>iaik.prod</groupId>
- <artifactId>iaik_Pkcs11Provider</artifactId>
- <scope>runtime</scope>
- </dependency>
- <dependency>
- <groupId>iaik.prod</groupId>
- <artifactId>iaik_Pkcs11Wrapper</artifactId>
- <scope>runtime</scope>
- </dependency>
- <dependency>
- <groupId>iaik.prod</groupId>
- <artifactId>iaik_Pkcs11Wrapper</artifactId>
- <classifier>win32</classifier>
- <type>dll</type>
- <scope>runtime</scope>
- <optional>true</optional>
- </dependency>
- <dependency>
- <groupId>MOA</groupId>
- <artifactId>moa-common</artifactId>
- </dependency>
- <dependency>
- <groupId>MOA.spss.server</groupId>
- <artifactId>moa-spss-lib</artifactId>
- </dependency>
- </dependencies>
- <build>
- <plugins>
-<!-- <plugin>
- <groupId>org.codehaus.mojo</groupId>
- <artifactId>properties-maven-plugin</artifactId>
- <version>1.0-alpha-2</version>
- <executions>
- <execution>
- <phase>initialize</phase>
- <goals>
- <goal>read-project-properties</goal>
- </goals>
- <configuration>
- <files>
- <file>${basedir}/../../../../../moa-id.properties</file>
- </files>
- </configuration>
- </execution>
- </executions>
- </plugin> -->
- </plugins>
- </build>
-</project>
diff --git a/moaSig/handbook/clients/api/signatures/SimpleSignature.xml b/moaSig/handbook/clients/api/signatures/SimpleSignature.xml deleted file mode 100644 index 9ecd215..0000000 --- a/moaSig/handbook/clients/api/signatures/SimpleSignature.xml +++ /dev/null @@ -1,23 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<dsig:Signature Id="signature-1-1" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"><dsig:SignedInfo><dsig:CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/><dsig:SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#ecdsa-sha1"/><dsig:Reference Id="reference-1-1" URI="#xpointer(id('signed-data-1-1-1')/node())"><dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/><dsig:DigestValue>tLODyeiWFbAkQKwhrR23jtcgu4k=</dsig:DigestValue></dsig:Reference></dsig:SignedInfo><dsig:SignatureValue>VEjXB6+geUL16oTPDVx5lcQliGl/oyVobug3BVxVwhu8CU7WK65moTcTuo/CL2hQ</dsig:SignatureValue><dsig:KeyInfo><dsig:X509Data><dsig:X509Certificate>MIID+DCCA2WgAwIBAgIBCTAJBgUrDgMCHQUAMH8xCzAJBgNVBAYTAkFUMSwwKgYD -VQQKEyNTdGFic3RlbGxlIElLVC1TdHJhdGVnaWUgZGVzIEJ1bmRlczEeMBwGA1UE -CxMVVGVjaG5payB1bmQgU3RhbmRhcmRzMSIwIAYDVQQDExlUZXN0IENBIC0gU2ln -bmF0dXJkaWVuc3RlMB4XDTA0MDgwNDA4MjM0OFoXDTA3MDgwNDA4MjM0OFowgZgx -CzAJBgNVBAYTAkFUMS0wKwYDVQQKEyRTdGFic3N0ZWxsZSBJS1QtU3RyYXRlZ2ll -IGRlcyBCdW5kZXMxHjAcBgNVBAsTFVRlY2huaWsgdW5kIFN0YW5kYXJkczE6MDgG -A1UEAxMxVGVzdDogU2lnbmF0dXJkaWVuc3QgYWxsZXIgS3VuZGVuOiBFQ0RTQSAo -UDE5MnYxKTCB8zCBvAYHKoZIzj0CATCBsAIBATAkBgcqhkjOPQEBAhkA//////// -/////////////v//////////MDQEGP////////////////////7//////////AQY -ZCEFGeWcgOcPp+mrciQwSf643uzBRrmxBDEEGI2oDrAwkPZ8vyDrQ6GIAPT/Cv2C -/xASBxkrlf/I2nhjEBHtayTN1XP5d6EeeUgRAhkA////////////////md74NhRr -ybG00igxAgEBAzIABNHWY9lQOE1zgmpcpjTg2WIg6qgEsGhpXELPinJoMPDVheTv -2BZPG42YJsNfvWgC06OCARwwggEYMA4GA1UdDwEB/wQEAwIGwDAMBgNVHRMBAf8E -AjAAMB0GA1UdDgQWBBRHH5EXnrWosCmIa+JyEM5seMxFVzBdBgNVHSAEVjBUMFIG -DCsGAQQBlRIBAgMBATBCMEAGCCsGAQUFBwICMDQaMkRpZXNlcyBaZXJ0aWZpa2F0 -IGlzdCBudXIgZvxyIFRlc3R6d2Vja2UgZ2VlaWduZXQuMEMGA1UdHwQ8MDowOKA2 -oDSGMmh0dHA6Ly9sYWJzLmNpby5ndi5hdC90ZW1wL2NybHMvc2lnbmF0dXJkaWVu -c3QuY3JsMBQGByooAAoBAQEECQwHQktBLUlLVDAfBgNVHSMEGDAWgBRAl0P5fWaw -vf59+uxGcYY9wffZPTAJBgUrDgMCHQUAA4GBAIMKUsnajgfBtpHeDdMdQMLA8fdt -lluezDOM78WYYSFURP04QZk5iHkShzptgZCF5Y/T4an3dC3SnytL67LJvEoKUyja -iTMLo7650xRTvAjTaMJ+nly/wTRYJKplOLXKWj3WwfObMHXdsDE8NJmpJSRE7Sw7 -+tj+UiTiNNSaXirq</dsig:X509Certificate></dsig:X509Data></dsig:KeyInfo><dsig:Object Id="signed-data-1-1-1">Diese Daten werden signiert.</dsig:Object></dsig:Signature>
\ No newline at end of file diff --git a/moaSig/handbook/clients/api/src/main/java/at/gv/egovernment/moa/spss/handbook/clients/api/CreateXMLSignature.java b/moaSig/handbook/clients/api/src/main/java/at/gv/egovernment/moa/spss/handbook/clients/api/CreateXMLSignature.java deleted file mode 100644 index aad0a0c..0000000 --- a/moaSig/handbook/clients/api/src/main/java/at/gv/egovernment/moa/spss/handbook/clients/api/CreateXMLSignature.java +++ /dev/null @@ -1,154 +0,0 @@ -/* - * Copyright 2003 Federal Chancellery Austria - * MOA-SPSS has been developed in a cooperation between BRZ, the Federal - * Chancellery Austria - ICT staff unit, 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.egovernment.moa.spss.handbook.clients.api; - -import java.io.ByteArrayInputStream; -import java.util.ArrayList; -import java.util.List; - -import org.w3c.dom.Element; - -import at.gv.egovernment.moa.spss.api.SPSSFactory; -import at.gv.egovernment.moa.spss.api.SignatureCreationService; -import at.gv.egovernment.moa.spss.api.common.Content; -import at.gv.egovernment.moa.spss.api.common.MetaInfo; -import at.gv.egovernment.moa.spss.api.xmlsign.CreateTransformsInfo; -import at.gv.egovernment.moa.spss.api.xmlsign.CreateTransformsInfoProfile; -import at.gv.egovernment.moa.spss.api.xmlsign.CreateXMLSignatureRequest; -import at.gv.egovernment.moa.spss.api.xmlsign.CreateXMLSignatureResponse; -import at.gv.egovernment.moa.spss.api.xmlsign.DataObjectInfo; -import at.gv.egovernment.moa.spss.api.xmlsign.SignatureEnvironmentResponse; -import at.gv.egovernment.moa.spss.api.xmlsign.SingleSignatureInfo; -import at.gv.egovernment.moa.util.DOMUtils; - -/** - * Dieses einfache Beispiel demonstriert grundlegend den Gebrauch der API von MOA SP/SS. Es wird damit eine - * einfach aufgebaute XML-Signatur erzeugt. - */ -public class CreateXMLSignature -{ - /** - * Methode main. - * - * Enthält beispielhaften Code zum grundlegenden Gebrauch der API von MOA SP/SS. Es wird damit eine - * einfach aufgebaute XML-Signatur erzeugt. - * - * ACHTUNG: Stellen Sie bei Verwendung von J2SE 1.4.x bzw. 5.x sicher, dass Sie die System-Property - * <code>java.endorsed.dirs</code> auf jenes Verzeichnis gesetzt haben, in dem sich die XPath- - * und XSLT-Bibliothek <em>Xalan-J</em> befindet. - * - * @param args <ul> - * <li> - * args[0] enthält einen Verweis auf die Konfigurations-Datei von MOA SP/SS Der Verweis - * enthält entweder eine absolute oder eine relative Pfadangabe, wobei eine relative - * Angabe als relativ zum Arbeitsverzeichnis der Java VM interpretiert wird. - * </li> - * <li> - * args[1] enthält einen Verweis auf die Konfigurations-Datei von Log4J, dem Logging- - * Framework, das von MOA SP/SS verwendet wird. Der Verweis enth�lt entweder eine - * absolute oder eine relative Pfadangabe, wobei eine relative Angabe als relativ zum - * Arbeitsverzeichnis der Java VM interpretiert wird. - * </li> - * </ul> - * - * @throws Exception Sollten Fehler auftreten werden die Fehler an die Java-VM weitergeleitet. - */ - public static void main(String[] args) throws Exception - { - // Setzen der System-Properties - init(args); - - // Serverfunktionshandler instanzieren - SPSSFactory spf = SPSSFactory.getInstance(); - - // Zu signierende Daten in ein Contentobjekt einbinden (die Daten werden hier explizit angegeben, - // sollen aber in der Signatur mittels URL "http://uri.data.org" referenziert werden - byte[] data = "Diese Daten werden signiert.".getBytes("UTF-8"); - ByteArrayInputStream bis = new ByteArrayInputStream(data); - Content cont = spf.createContent(bis, null); - - // Metainformationen zu den zu signierenden Daten erstellen - MetaInfo mi = spf.createMetaInfo("text/plain", null, null, null); - - // Transformationen erstellen (hier werden keine Transformationen angewandt) - CreateTransformsInfo cti = spf.createCreateTransformsInfo(null, mi); - CreateTransformsInfoProfile ct = spf.createCreateTransformsInfoProfile(cti, null); - - // Datenobjekt aufbauen - DataObjectInfo doi = spf.createDataObjectInfo(DataObjectInfo.STRUCTURE_ENVELOPING, false, cont, ct); - - // Erstellen eines SingleSignatureInfo-Containers - // Enth�lt alle Angaben zur Erstellung *einer* Signatur - List dataobjectinfolist = new ArrayList(); - dataobjectinfolist.add(doi); - SingleSignatureInfo ssi = spf.createSingleSignatureInfo(dataobjectinfolist, null, false); - - // Erstellen des Request-Objekts (Schl�sselbezeichner, Liste von SingleSignatureInfo-Containern) - List singlesignatureinfolist = new ArrayList(); - singlesignatureinfolist.add(ssi); - CreateXMLSignatureRequest cxsreq = spf.createCreateXMLSignatureRequest("KG_allgemein", - singlesignatureinfolist); - - // Signatureerstellungsservice instanzieren und aufrufen - SignatureCreationService scs = SignatureCreationService.getInstance(); - CreateXMLSignatureResponse cxsres = scs.createXMLSignature(cxsreq); - - // Response auswerten - List elements = cxsres.getResponseElements(); - SignatureEnvironmentResponse ser = (SignatureEnvironmentResponse) elements.get(0); - - // Auswertung des ersten (und einzigen) SignatureEnvironmentResponse-Containers - int response_type = ser.getResponseType(); - - if (response_type == SignatureEnvironmentResponse.ERROR_RESPONSE) - { - // Fehlerfall - System.out.println("Bei der Erstellung der Signatur ist ein Fehler aufgetreten."); - } - else - { - // Signaturerstellung erfolgreich - System.out.println("Signaturerstellung erfolgreich:"); - - Element se = ser.getSignatureEnvironment(); - System.out.println(DOMUtils.serializeNode(se)); - } - } - - /** - * Setzt die notwendigen System-Properties f�r die Konfiguration der MOA SP/SS API. - * - * @param args Siehe @link CreateXMLSignature#main(String[]). - */ - private static void init(String[] args) - { - if (args == null || args.length != 2) - { - System.out.println("Verwendung: CreateXMLSignature <MOASPSSConfigFile> <Log4JConfigFile>"); - } - System.setProperty("moa.spss.server.configuration", args[0]); - System.setProperty("log4j.configuration", "file:" + args[1]); - } -}
\ No newline at end of file diff --git a/moaSig/handbook/clients/api/src/main/java/at/gv/egovernment/moa/spss/handbook/clients/api/VerifyXMLSignature.java b/moaSig/handbook/clients/api/src/main/java/at/gv/egovernment/moa/spss/handbook/clients/api/VerifyXMLSignature.java deleted file mode 100644 index 6a4a57c..0000000 --- a/moaSig/handbook/clients/api/src/main/java/at/gv/egovernment/moa/spss/handbook/clients/api/VerifyXMLSignature.java +++ /dev/null @@ -1,171 +0,0 @@ -/* - * Copyright 2003 Federal Chancellery Austria - * MOA-SPSS has been developed in a cooperation between BRZ, the Federal - * Chancellery Austria - ICT staff unit, 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.egovernment.moa.spss.handbook.clients.api; - -import java.io.FileInputStream; -import java.io.FileNotFoundException; -import java.util.HashMap; - -import at.gv.egovernment.moa.spss.MOAException; -import at.gv.egovernment.moa.spss.api.SPSSFactory; -import at.gv.egovernment.moa.spss.api.SignatureVerificationService; -import at.gv.egovernment.moa.spss.api.common.Content; -import at.gv.egovernment.moa.spss.api.common.SignerInfo; -import at.gv.egovernment.moa.spss.api.xmlverify.VerifySignatureInfo; -import at.gv.egovernment.moa.spss.api.xmlverify.VerifySignatureLocation; -import at.gv.egovernment.moa.spss.api.xmlverify.VerifyXMLSignatureRequest; -import at.gv.egovernment.moa.spss.api.xmlverify.VerifyXMLSignatureResponse; - -/** - * Dieses einfache Beispiel demonstriert grundlegend den Gebrauch der API von MOA SP/SS. - * Es wird damit eine einfach aufgebaute XML-Signatur gepr�ft. - */ - -public class VerifyXMLSignature -{ - /** - * Methode main. - * - * Enthält beispielhaften Code zum grundlegenden Gebrauch der API von MOA SP/SS. - * Es wird damit eine einfach aufgebaute XML-Signatur geprüft. - * - * ACHTUNG: Stellen Sie bei Verwendung von J2SE 1.4.x bzw. 5.x sicher, dass Sie die System-Property - * <code>java.endorsed.dirs</code> auf jenes Verzeichnis gesetzt haben, in dem sich die XPath- - * und XSLT-Bibliothek <em>Xalan-J</em> befindet. - * - * @param args <ul> - * <li> - * args[0] enthält einen Verweis auf die Konfigurations-Datei von MOA SP/SS Der Verweis - * enthält entweder eine absolute oder eine relative Pfadangabe, wobei eine relative - * Angabe als relativ zum Arbeitsverzeichnis der Java VM interpretiert wird. - * </li> - * <li> - * args[1] enthält einen Verweis auf die Konfigurations-Datei von Log4J, dem Logging- - * Framework, das von MOA SP/SS verwendet wird. Der Verweis enth�lt entweder eine - * absolute oder eine relative Pfadangabe, wobei eine relative Angabe als relativ zum - * Arbeitsverzeichnis der Java VM interpretiert wird. - * </li> - * <li> - * args[2] enth�lt Pfad und Dateiname des XML-Dokuments mit der darin enthaltenen, zu - * prüfenden XML-Signatur. Verwenden Sie z.B. das mit diesem Handbuch mitgelieferte - * Beispiel <code>clients/api/signatures/SimpleSignature.xml</code>. - * </li> - * </ul> - */ - public static void main(String[] args) - { - // Setzen der System-Properties - init(args); - - // Factory und Service instanzieren - SPSSFactory spssFac = SPSSFactory.getInstance(); - SignatureVerificationService sigVerifyService = SignatureVerificationService.getInstance(); - - // Content aus Dokument mit zu pr�fender Signatur erstellen - FileInputStream sigDocFIS = null; - try - { - sigDocFIS = new FileInputStream(args[2]); - } - catch (FileNotFoundException e1) - { - System.err.println("XML-Dokument mit zu prüfender Signatur nicht gefunden: " + args[2]); - System.exit(-1); - } - Content sigDocContent = spssFac.createContent(sigDocFIS, null); - - // Position der zu pr�fenden Signatur im Dokument angeben - // (Nachdem im XPath-Ausdruck ein NS-Pr�fix verwendet wird, muss in einer Lookup-Tabelle - // der damit bezeichnete Namenraum mitgegeben werden) - HashMap nSMap = new HashMap(); - nSMap.put("dsig", "http://www.w3.org/2000/09/xmldsig#"); - VerifySignatureLocation sigLocation = spssFac.createVerifySignatureLocation("//dsig:Signature", nSMap); - - // Zu pr�fendes Dokument und Signaturposition zusammenfassen - VerifySignatureInfo sigInfo = spssFac.createVerifySignatureInfo(sigDocContent, sigLocation); - - // Pr�frequest zusammenstellen - VerifyXMLSignatureRequest verifyRequest = spssFac.createVerifyXMLSignatureRequest( - null, // Wird Pr�fzeit nicht angegeben, wird aktuelle Zeit verwendet - sigInfo, - null, // Keine Erg�nzungsobjekte notwendig - null, // Signaturmanifest-Pr�fung soll nicht durchgef�hrt werden - false, // Hash-Inputdaten, d.h. tats�chlich signierte Daten werden nicht zur�ckgeliefert - "Test-Signaturdienste"); // ID des verwendeten Vertrauensprofils - - VerifyXMLSignatureResponse verifyResponse = null; - try - { - // Aufruf der Signaturpr�fung - verifyResponse = sigVerifyService.verifyXMLSignature(verifyRequest); - } - catch (MOAException e) - { - // Service liefert Fehler - System.err.println("Die Signaturprüfung hat folgenden Fehler geliefert:"); - System.err.println("Fehlercode: " + e.getMessageId()); - System.err.println("Fehlernachricht: " + e.getMessage()); - System.exit(-1); - } - - // Auswertung der Response - System.out.println(); - System.out.println("Ergebnisse der Signaturprüfung:"); - System.out.println(); - - // Besondere Eigenschaften des Signatorzertifikats - SignerInfo signerInfo = verifyResponse.getSignerInfo(); - System.out.println("*** Ist Zertifikat des Signators qualifiziert? " + ((signerInfo.isQualifiedCertificate()) ? "ja" : "nein")); - System.out.println("*** Ist Zertifikat des Signators von einer Behürde? " + ((signerInfo.isPublicAuthority()) ? "ja" : "nein")); - - // Ergebnisse von Signatur- und Zertifikatspr�fung - System.out.println(); - System.out.println("Ergebniscode der Signaturprüfung: " + verifyResponse.getSignatureCheck().getCode()); - System.out.println("Ergebniscode der Zertifikatsprüfung: " + verifyResponse.getCertificateCheck().getCode()); - - // Signatorzertifikat - System.out.println(); - System.out.println("*** Zertifikat des Signators:"); - System.out.println("Aussteller: " + signerInfo.getSignerCertificate().getIssuerDN()); - System.out.println("Subject: " + signerInfo.getSignerCertificate().getSubjectDN()); - System.out.println("Seriennummer: " + signerInfo.getSignerCertificate().getSerialNumber()); - } - - /** - * Setzt die notwendigen System-Properties f�r die Konfiguration der MOA SP/SS API. - * - * @param args Siehe @link VerifyXMLSignature#main(String[]). - */ - private static void init(String[] args) - { - if (args == null || args.length != 3) - { - System.out.println("Verwendung: VerifyXMLSignature <MOASPSSConfigFile> <Log4JConfigFile> <XMLDocWithSignature>"); - System.exit(-1); - } - System.setProperty("moa.spss.server.configuration", args[0]); - System.setProperty("log4j.configuration", "file:" + args[1]); - } -}
\ No newline at end of file diff --git a/moaSig/handbook/clients/pom.xml b/moaSig/handbook/clients/pom.xml deleted file mode 100644 index 1dfa3d5..0000000 --- a/moaSig/handbook/clients/pom.xml +++ /dev/null @@ -1,46 +0,0 @@ -<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
- <parent>
- <groupId>MOA.spss.handbook</groupId>
- <artifactId>moa-spss-handbook</artifactId>
- <version>2.0</version>
- </parent>
-
- <modelVersion>4.0.0</modelVersion>
- <groupId>MOA.spss.handbook.clients</groupId>
- <artifactId>moa-spss-handbook-clients</artifactId>
- <packaging>pom</packaging>
- <name>MOA SP/SS Handbook Clients</name>
-
- <modules>
- <module>referencedData</module>
- <module>api</module>
- <module>webservice</module>
- </modules>
-
- <properties>
- <repositoryPath>${basedir}/../../../../repository</repositoryPath>
- </properties>
- <build>
- <plugins>
-<!-- <plugin>
- <groupId>org.codehaus.mojo</groupId>
- <artifactId>properties-maven-plugin</artifactId>
- <version>1.0-alpha-2</version>
- <executions>
- <execution>
- <phase>initialize</phase>
- <goals>
- <goal>read-project-properties</goal>
- </goals>
- <configuration>
- <files>
- <file>${basedir}/../../../../moa-id.properties</file>
- </files>
- </configuration>
- </execution>
- </executions>
- </plugin> -->
- </plugins>
- </build>
-</project>
diff --git a/moaSig/handbook/clients/referencedData/.gitignore b/moaSig/handbook/clients/referencedData/.gitignore deleted file mode 100644 index 934e0e0..0000000 --- a/moaSig/handbook/clients/referencedData/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -/bin -/target diff --git a/moaSig/handbook/clients/referencedData/pom.xml b/moaSig/handbook/clients/referencedData/pom.xml deleted file mode 100644 index e9370cd..0000000 --- a/moaSig/handbook/clients/referencedData/pom.xml +++ /dev/null @@ -1,56 +0,0 @@ -<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
- <parent>
- <groupId>MOA.spss.handbook.clients</groupId>
- <artifactId>moa-spss-handbook-clients</artifactId>
- <version>2.0</version>
- </parent>
-
- <modelVersion>4.0.0</modelVersion>
- <groupId>MOA.spss.handbook</groupId>
- <artifactId>moa-spss-handbook-referencedData</artifactId>
- <packaging>war</packaging>
- <name>MOA SP/SS Handbook Referenced Data</name>
-
- <properties>
- <repositoryPath>${basedir}/../../../../../repository</repositoryPath>
- </properties>
-
- <build>
- <plugins>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-war-plugin</artifactId>
- <configuration>
- <warName>referencedData</warName>
- <archive>
- <manifest>
- <addDefaultSpecificationEntries>false</addDefaultSpecificationEntries>
- <addDefaultImplementationEntries>true</addDefaultImplementationEntries>
- </manifest>
- <addMavenDescriptor>false</addMavenDescriptor>
- </archive>
- </configuration>
- </plugin>
-
-<!-- <plugin>
- <groupId>org.codehaus.mojo</groupId>
- <artifactId>properties-maven-plugin</artifactId>
- <version>1.0-alpha-2</version>
- <executions>
- <execution>
- <phase>initialize</phase>
- <goals>
- <goal>read-project-properties</goal>
- </goals>
- <configuration>
- <files>
- <file>${basedir}/../../../../../moa-id.properties</file>
- </files>
- </configuration>
- </execution>
- </executions>
- </plugin> -->
- </plugins>
- </build>
-</project>
diff --git a/moaSig/handbook/clients/referencedData/src/main/webapp/META-INF/MANIFEST.MF b/moaSig/handbook/clients/referencedData/src/main/webapp/META-INF/MANIFEST.MF deleted file mode 100644 index 5e94951..0000000 --- a/moaSig/handbook/clients/referencedData/src/main/webapp/META-INF/MANIFEST.MF +++ /dev/null @@ -1,3 +0,0 @@ -Manifest-Version: 1.0
-Class-Path:
-
diff --git a/moaSig/handbook/clients/referencedData/src/main/webapp/Text.b64 b/moaSig/handbook/clients/referencedData/src/main/webapp/Text.b64 deleted file mode 100644 index 0f4636b..0000000 --- a/moaSig/handbook/clients/referencedData/src/main/webapp/Text.b64 +++ /dev/null @@ -1 +0,0 @@ -RGllc2UgRGF0ZW4gd2FyZW4gYmFzZTY0IGtvZGllcnQu
\ No newline at end of file diff --git a/moaSig/handbook/clients/referencedData/src/main/webapp/Text.txt b/moaSig/handbook/clients/referencedData/src/main/webapp/Text.txt deleted file mode 100644 index 3a75c06..0000000 --- a/moaSig/handbook/clients/referencedData/src/main/webapp/Text.txt +++ /dev/null @@ -1 +0,0 @@ -Diese Daten sind reiner Text.
\ No newline at end of file diff --git a/moaSig/handbook/clients/referencedData/src/main/webapp/WEB-INF/web.xml b/moaSig/handbook/clients/referencedData/src/main/webapp/WEB-INF/web.xml deleted file mode 100644 index 002520b..0000000 --- a/moaSig/handbook/clients/referencedData/src/main/webapp/WEB-INF/web.xml +++ /dev/null @@ -1,10 +0,0 @@ -<?xml version="1.0" encoding="ISO-8859-1"?> - -<!DOCTYPE web-app - PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" - "http://java.sun.com/dtd/web-app_2_3.dtd"> - -<web-app> - <display-name>MOA Webservice Client: Referenzierte Web-Daten</display-name> - <description>MOA Webservice Client: Referenzierte Web-Daten</description> -</web-app> diff --git a/moaSig/handbook/clients/referencedData/src/main/webapp/XMLDocument.Para.xsl b/moaSig/handbook/clients/referencedData/src/main/webapp/XMLDocument.Para.xsl deleted file mode 100644 index 11d6dd6..0000000 --- a/moaSig/handbook/clients/referencedData/src/main/webapp/XMLDocument.Para.xsl +++ /dev/null @@ -1,19 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:doc="urn:document" xmlns="http://www.w3.org/1999/xhtml"> - <xsl:output encoding="UTF-8" method="xml" indent="yes"/> - <xsl:template match="/"> - <html xmlns="http://www.w3.org/1999/xhtml"> - <head> - <title>HTML-Dokument</title> - </head> - <body> - <xsl:apply-templates/> - </body> - </html> - </xsl:template> - <xsl:template match="doc:Paragraph"> - <p> - <xsl:value-of select="child::text()"/> - </p> - </xsl:template> -</xsl:stylesheet> diff --git a/moaSig/handbook/clients/referencedData/src/main/webapp/XMLDocument.signed.xml b/moaSig/handbook/clients/referencedData/src/main/webapp/XMLDocument.signed.xml deleted file mode 100644 index 897b3c8..0000000 --- a/moaSig/handbook/clients/referencedData/src/main/webapp/XMLDocument.signed.xml +++ /dev/null @@ -1,27 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<doc:XMLDocument xmlns:doc="urn:document"> - <doc:Paragraph>Ich bin der erste Absatz in diesem Dokument.</doc:Paragraph> - <doc:Paragraph ParaId="Para2">Und ich bin der zweite Absatz in diesem Dokument. -Ich habe weiters ein eigenens ID-Attribut bekommen.</doc:Paragraph><dsig:Signature Id="signature-1-1" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"><dsig:SignedInfo><dsig:CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/><dsig:SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#ecdsa-sha1"/><dsig:Reference Id="reference-1-1" URI=""><dsig:Transforms><dsig:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/></dsig:Transforms><dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/><dsig:DigestValue>2b83+NbXDFijHzz+sH0T7fM36sA=</dsig:DigestValue></dsig:Reference></dsig:SignedInfo><dsig:SignatureValue>30zsZMPn1mR5G5oIGJvTRmCik3WuepfZF6AhLwxgJDMJlPQ8rheBWCaKihzXnHaS</dsig:SignatureValue><dsig:KeyInfo><dsig:X509Data><dsig:X509Certificate>MIID+DCCA2WgAwIBAgIBCTAJBgUrDgMCHQUAMH8xCzAJBgNVBAYTAkFUMSwwKgYD -VQQKEyNTdGFic3RlbGxlIElLVC1TdHJhdGVnaWUgZGVzIEJ1bmRlczEeMBwGA1UE -CxMVVGVjaG5payB1bmQgU3RhbmRhcmRzMSIwIAYDVQQDExlUZXN0IENBIC0gU2ln -bmF0dXJkaWVuc3RlMB4XDTA0MDgwNDA4MjM0OFoXDTA3MDgwNDA4MjM0OFowgZgx -CzAJBgNVBAYTAkFUMS0wKwYDVQQKEyRTdGFic3N0ZWxsZSBJS1QtU3RyYXRlZ2ll -IGRlcyBCdW5kZXMxHjAcBgNVBAsTFVRlY2huaWsgdW5kIFN0YW5kYXJkczE6MDgG -A1UEAxMxVGVzdDogU2lnbmF0dXJkaWVuc3QgYWxsZXIgS3VuZGVuOiBFQ0RTQSAo -UDE5MnYxKTCB8zCBvAYHKoZIzj0CATCBsAIBATAkBgcqhkjOPQEBAhkA//////// -/////////////v//////////MDQEGP////////////////////7//////////AQY -ZCEFGeWcgOcPp+mrciQwSf643uzBRrmxBDEEGI2oDrAwkPZ8vyDrQ6GIAPT/Cv2C -/xASBxkrlf/I2nhjEBHtayTN1XP5d6EeeUgRAhkA////////////////md74NhRr -ybG00igxAgEBAzIABNHWY9lQOE1zgmpcpjTg2WIg6qgEsGhpXELPinJoMPDVheTv -2BZPG42YJsNfvWgC06OCARwwggEYMA4GA1UdDwEB/wQEAwIGwDAMBgNVHRMBAf8E -AjAAMB0GA1UdDgQWBBRHH5EXnrWosCmIa+JyEM5seMxFVzBdBgNVHSAEVjBUMFIG -DCsGAQQBlRIBAgMBATBCMEAGCCsGAQUFBwICMDQaMkRpZXNlcyBaZXJ0aWZpa2F0 -IGlzdCBudXIgZvxyIFRlc3R6d2Vja2UgZ2VlaWduZXQuMEMGA1UdHwQ8MDowOKA2 -oDSGMmh0dHA6Ly9sYWJzLmNpby5ndi5hdC90ZW1wL2NybHMvc2lnbmF0dXJkaWVu -c3QuY3JsMBQGByooAAoBAQEECQwHQktBLUlLVDAfBgNVHSMEGDAWgBRAl0P5fWaw -vf59+uxGcYY9wffZPTAJBgUrDgMCHQUAA4GBAIMKUsnajgfBtpHeDdMdQMLA8fdt -lluezDOM78WYYSFURP04QZk5iHkShzptgZCF5Y/T4an3dC3SnytL67LJvEoKUyja -iTMLo7650xRTvAjTaMJ+nly/wTRYJKplOLXKWj3WwfObMHXdsDE8NJmpJSRE7Sw7 -+tj+UiTiNNSaXirq</dsig:X509Certificate></dsig:X509Data></dsig:KeyInfo></dsig:Signature> -</doc:XMLDocument>
\ No newline at end of file diff --git a/moaSig/handbook/clients/referencedData/src/main/webapp/XMLDocument.withResolvableSchemaHint.xml b/moaSig/handbook/clients/referencedData/src/main/webapp/XMLDocument.withResolvableSchemaHint.xml deleted file mode 100644 index 4f11246..0000000 --- a/moaSig/handbook/clients/referencedData/src/main/webapp/XMLDocument.withResolvableSchemaHint.xml +++ /dev/null @@ -1,6 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<doc:XMLDocument xmlns:doc="urn:document" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:document http://localhost:8080/referencedData/XMLDocument.xsd"> - <doc:Paragraph>Ich bin der erste Absatz in diesem Dokument.</doc:Paragraph> - <doc:Paragraph ParaId="Para2">Und ich bin der zweite Absatz in diesem Dokument. -Ich habe weiters ein eigenens ID-Attribut bekommen.</doc:Paragraph> -</doc:XMLDocument> diff --git a/moaSig/handbook/clients/referencedData/src/main/webapp/XMLDocument.withSchemaHint.xml b/moaSig/handbook/clients/referencedData/src/main/webapp/XMLDocument.withSchemaHint.xml deleted file mode 100644 index 82f65d9..0000000 --- a/moaSig/handbook/clients/referencedData/src/main/webapp/XMLDocument.withSchemaHint.xml +++ /dev/null @@ -1,6 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<doc:XMLDocument xmlns:doc="urn:document" xmlns="http://reference.e-government.gv.at/namespace/moa/20020822#" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:document urn:XMLDocument.xsd"> - <doc:Paragraph>Ich bin der erste Absatz in diesem Dokument.</doc:Paragraph> - <doc:Paragraph ParaId="Para2">Und ich bin der zweite Absatz in diesem Dokument. -Ich habe weiters ein eigenens ID-Attribut bekommen.</doc:Paragraph> -</doc:XMLDocument> diff --git a/moaSig/handbook/clients/referencedData/src/main/webapp/XMLDocument.xml b/moaSig/handbook/clients/referencedData/src/main/webapp/XMLDocument.xml deleted file mode 100644 index 1c48dce..0000000 --- a/moaSig/handbook/clients/referencedData/src/main/webapp/XMLDocument.xml +++ /dev/null @@ -1,6 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<doc:XMLDocument xmlns:doc="urn:document"> - <doc:Paragraph>Ich bin der erste Absatz in diesem Dokument.</doc:Paragraph> - <doc:Paragraph ParaId="Para2">Und ich bin der zweite Absatz in diesem Dokument. -Ich habe weiters ein eigenens ID-Attribut bekommen.</doc:Paragraph> -</doc:XMLDocument> diff --git a/moaSig/handbook/clients/referencedData/src/main/webapp/XMLDocument.xsd b/moaSig/handbook/clients/referencedData/src/main/webapp/XMLDocument.xsd deleted file mode 100644 index a2930f1..0000000 --- a/moaSig/handbook/clients/referencedData/src/main/webapp/XMLDocument.xsd +++ /dev/null @@ -1,15 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?>
-<xs:schema targetNamespace="urn:document" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="urn:document" elementFormDefault="qualified" attributeFormDefault="unqualified">
- <xs:element name="XMLDocument">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="Paragraph" maxOccurs="unbounded">
- <xs:complexType mixed="true">
- <xs:attribute name="ParaId" type="xs:ID" use="optional"/>
- </xs:complexType>
- </xs:element>
- <xs:any namespace="##other" minOccurs="0" maxOccurs="unbounded"/>
- </xs:sequence>
- </xs:complexType>
- </xs:element>
-</xs:schema>
diff --git a/moaSig/handbook/clients/referencedData/src/main/webapp/XMLDocument.xsl b/moaSig/handbook/clients/referencedData/src/main/webapp/XMLDocument.xsl deleted file mode 100644 index 85755c2..0000000 --- a/moaSig/handbook/clients/referencedData/src/main/webapp/XMLDocument.xsl +++ /dev/null @@ -1,18 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:doc="urn:document"> - <xsl:output encoding="UTF-8" method="xml" indent="yes"/> - <xsl:template match="/doc:XMLDocument"> - <html xmlns="http://www.w3.org/1999/xhtml"> - <head> - <title>HTML-Dokument</title> - </head> - <body> - <xsl:for-each select="doc:Paragraph"> - <p> - <xsl:value-of select="child::text()"/> - </p> - </xsl:for-each> - </body> - </html> - </xsl:template> -</xsl:stylesheet> diff --git a/moaSig/handbook/clients/referencedData/src/main/webapp/XMLDocumentRef.xsl b/moaSig/handbook/clients/referencedData/src/main/webapp/XMLDocumentRef.xsl deleted file mode 100644 index c385f9d..0000000 --- a/moaSig/handbook/clients/referencedData/src/main/webapp/XMLDocumentRef.xsl +++ /dev/null @@ -1,4 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> - <xsl:include href="XMLDocument.Para.xsl"/> -</xsl:stylesheet> diff --git a/moaSig/handbook/clients/webservice/.gitignore b/moaSig/handbook/clients/webservice/.gitignore deleted file mode 100644 index 934e0e0..0000000 --- a/moaSig/handbook/clients/webservice/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -/bin -/target diff --git a/moaSig/handbook/clients/webservice/conf/http.properties b/moaSig/handbook/clients/webservice/conf/http.properties deleted file mode 100644 index 8bf490a..0000000 --- a/moaSig/handbook/clients/webservice/conf/http.properties +++ /dev/null @@ -1,78 +0,0 @@ -### -# Properties für den HTTP(S) Client -### - -# -# Signieren -# - -# Name des Webservices, fix "SignatureCreation" -signServiceQName = SignatureCreation - -# Zugangspunkt des Webservices -signServiceEndPoint = http://localhost:8080/moa-spss/services/SignatureCreation -#signServiceEndPoint = https://localhost:8443/moa-spss/services/SignatureCreation - -# Name des zu sendenden Signaturerstellungsrequests (entweder absolute -# oder relative Pfadangabe; eine relative Pfadangabe wird relativ zum -# Arbeitsverzeichnis der Java VM interpretiert) -signRequest = resources/requests/CreateXMLSignatureRequest.Simple.xml -#signRequest=resources/requests/CreateXMLSignatureRequest.Refs.xml -#signRequest=resources/requests/CreateXMLSignatureRequest.Transforms.xml -#signRequest=resources/requests/CreateXMLSignatureRequest.Supplements.xml - - -# -# Verifizieren -# - -# Name des Webservices, fix "SignatureVerification" -verifyServiceQName = SignatureVerification - -# Zugangspunkt des Webservices -verifyServiceEndPoint = http://localhost:18080/moa-spss/services/SignatureVerification -#verifyServiceEndPoint = https://localhost:8443/moa-spss/services/SignatureVerification - -# Name des zu sendenden Signaturprüfrequests (entweder absolute -# oder relative Pfadangabe; eine relative Pfadangabe wird relativ zum -# Arbeitsverzeichnis der Java VM interpretiert) -verifyRequest=resources/requests/VerifyCMSSignatureRequest.Simple.xml -#verifyRequest=resources/requests/VerifyCMSSignatureRequest.Extended.xml -#verifyRequest=resources/requests/VerifyXMLSignatureRequest.Simple.xml -#verifyRequest=resources/requests/VerifyXMLSignatureRequest.Enveloped.xml -#verifyRequest=resources/requests/VerifyXMLSignatureRequest.Supplements.xml -#verifyRequest=resources/requests/VerifyXMLSignatureRequest.SigManifest.xml -#verifyRequest=resources/requests/VerifyXMLSignatureRequest.XMLDSigManifest.xml -#verifyRequest=resources/requests/VerifyXMLSignatureRequest.FileURIs.xml -#verifyRequest=resources/requests/VerifyXMLSignatureRequest.FileURIs.DataObject.xml -#verifyRequest=resources/requests/VerifyXMLSignatureRequest.FileURIs.Supplements.xml -#verifyRequest=resources/requests/VerifyXMLSignatureRequest.FileURIs.ServerSupplements.xml - -# -# JSSE-Konfiguration -# - -# Typ des JSSE-Truststores (entweder "JKS" für einen Java Key Store oder -# "PKCS12" für eine PKCS#12-Datei). -ssl.truststore.type = JKS - -# Relativer oder absoluter Pfad zum JSSE-Truststore. Ein relativer Pfad -# wird relativ zum Arbeitsverzeichnis der Java VM interpretiert). -ssl.truststore.loc = resources/sslKeys/customer1/trustedServers[pwd=servers].keystore -#ssl.truststore.loc = resources/sslKeys/customer2/trustedServers[pwd=servers].keystore - -# Passwort für den JSSE-Truststore. -ssl.truststore.pwd = servers - -# Typ des JSSE-Keystores (entweder "JKS" für einen Java Key Store oder -# "PKCS12" für eine PKCS#12-Datei). -ssl.keystore.type = PKCS12 - -# Relativer oder absoluter Pfad zum JSSE-Keystore. Ein relativer Pfad -# wird relativ zum Arbeitsverzeichnis der Java VM interpretiert). -ssl.keystore.loc = resources/sslKeys/customer1/moa-ssl-kunde1[pwd=kunde1].p12 -#ssl.keystore.loc = resources/sslKeys/customer2/moa-ssl-kunde2[pwd=kunde2].p12 - -# Passwort für den JSSE-Keystore. -ssl.keystore.pwd = kunde1 -#ssl.keystore.pwd = kunde2 diff --git a/moaSig/handbook/clients/webservice/conf/log4j.properties b/moaSig/handbook/clients/webservice/conf/log4j.properties deleted file mode 100644 index bf7c98c..0000000 --- a/moaSig/handbook/clients/webservice/conf/log4j.properties +++ /dev/null @@ -1,25 +0,0 @@ -# commons-logging setup
-org.apache.commons.logging.LogFactory=org.apache.commons.logging.impl.Log4jFactory
-
-# define log4j root loggers
-log4j.rootLogger=info, stdout
-#log4j.rootLogger=info, stdout, R
-#log4j.logger.moa=info
-#log4j.logger.moa.spss.server=debug
-#log4j.logger.iaik.server=info
-#log4j.logger.moa.id.auth=debug
-#log4j.logger.moa.id.proxy=debug
-
-# configure the stdout appender
-log4j.appender.stdout=org.apache.log4j.ConsoleAppender
-log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
-log4j.appender.stdout.layout.ConversionPattern=%5p | %d{dd HH:mm:ss,SSS} | %20.20c | %10t | %m%n
-
-# configure the rolling file appender (R)
-log4j.appender.R=org.apache.log4j.RollingFileAppender
-log4j.appender.R.File=${catalina.base}/logs/moa-id.log
-log4j.appender.R.MaxFileSize=10000KB
-log4j.appender.R.MaxBackupIndex=1
-log4j.appender.R.layout=org.apache.log4j.PatternLayout
-log4j.appender.R.layout.ConversionPattern=%5p | %d{dd HH:mm:ss,SSS} | %t | %m%n
-
diff --git a/moaSig/handbook/clients/webservice/pom.xml b/moaSig/handbook/clients/webservice/pom.xml deleted file mode 100644 index 9a98ce4..0000000 --- a/moaSig/handbook/clients/webservice/pom.xml +++ /dev/null @@ -1,155 +0,0 @@ -<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
- <parent>
- <groupId>MOA.spss.handbook.clients</groupId>
- <artifactId>moa-spss-handbook-clients</artifactId>
- <version>2.0</version>
- </parent>
-
- <modelVersion>4.0.0</modelVersion>
- <artifactId>moa-spss-handbook-webserviceClient</artifactId>
- <packaging>jar</packaging>
- <name>MOA SP/SS Handbook WebService Client</name>
-
- <properties>
- <repositoryPath>${basedir}/../../../../../repository</repositoryPath>
- </properties>
-
- <dependencies>
- <dependency>
- <groupId>axis</groupId>
- <artifactId>axis</artifactId>
- </dependency>
- <dependency>
- <groupId>org.apache.axis</groupId>
- <artifactId>axis-jaxrpc</artifactId>
- </dependency>
- <dependency>
- <groupId>org.apache.axis</groupId>
- <artifactId>axis-saaj</artifactId>
- </dependency>
- <dependency>
- <groupId>axis</groupId>
- <artifactId>axis-wsdl4j</artifactId>
- </dependency>
- <dependency>
- <groupId>commons-discovery</groupId>
- <artifactId>commons-discovery</artifactId>
- </dependency>
- <dependency>
- <groupId>commons-logging</groupId>
- <artifactId>commons-logging</artifactId>
- </dependency>
- <dependency>
- <groupId>javax.activation</groupId>
- <artifactId>activation</artifactId>
- </dependency>
- <dependency>
- <groupId>javax.mail</groupId>
- <artifactId>mail</artifactId>
- </dependency>
- <dependency>
- <groupId>junit</groupId>
- <artifactId>junit</artifactId>
- </dependency>
- <dependency>
- <groupId>log4j</groupId>
- <artifactId>log4j</artifactId>
- </dependency>
- <dependency>
- <groupId>org.postgresql</groupId>
- <artifactId>postgresql</artifactId>
- </dependency>
- <dependency>
- <groupId>javax.servlet</groupId>
- <artifactId>servlet-api</artifactId>
- </dependency>
- <dependency>
- <groupId>xalan-bin-dist</groupId>
- <artifactId>xalan</artifactId>
- <scope>compile</scope>
- </dependency>
- <dependency>
- <groupId>xerces</groupId>
- <artifactId>xercesImpl</artifactId>
- </dependency>
- <dependency>
- <groupId>xalan-bin-dist</groupId>
- <artifactId>xml-apis</artifactId>
- </dependency>
- <dependency>
- <groupId>xalan-bin-dist</groupId>
- <artifactId>serializer</artifactId>
- </dependency>
- <dependency>
- <groupId>iaik.prod</groupId>
- <artifactId>iaik_moa</artifactId>
- </dependency>
- <dependency>
- <groupId>iaik.prod</groupId>
- <artifactId>iaik_ixsil</artifactId>
- </dependency>
- <dependency>
- <groupId>iaik.prod</groupId>
- <artifactId>iaik_jce_full</artifactId>
- <scope>compile</scope>
- </dependency>
- <dependency>
- <groupId>iaik.prod</groupId>
- <artifactId>iaik_ecc</artifactId>
- <scope>compile</scope>
- </dependency>
- <dependency>
- <groupId>iaik.prod</groupId>
- <artifactId>iaik_cms</artifactId>
- <scope>runtime</scope>
- </dependency>
- <dependency>
- <groupId>iaik.prod</groupId>
- <artifactId>iaik_Pkcs11Provider</artifactId>
- <scope>runtime</scope>
- </dependency>
- <dependency>
- <groupId>iaik.prod</groupId>
- <artifactId>iaik_Pkcs11Wrapper</artifactId>
- <scope>runtime</scope>
- </dependency>
- <dependency>
- <groupId>iaik.prod</groupId>
- <artifactId>iaik_Pkcs11Wrapper</artifactId>
- <classifier>win32</classifier>
- <type>dll</type>
- <scope>runtime</scope>
- <optional>true</optional>
- </dependency>
- <dependency>
- <groupId>MOA</groupId>
- <artifactId>moa-common</artifactId>
- </dependency>
- <dependency>
- <groupId>MOA.spss.server</groupId>
- <artifactId>moa-spss-lib</artifactId>
- </dependency>
- </dependencies>
- <build>
- <plugins>
-<!-- <plugin>
- <groupId>org.codehaus.mojo</groupId>
- <artifactId>properties-maven-plugin</artifactId>
- <version>1.0-alpha-2</version>
- <executions>
- <execution>
- <phase>initialize</phase>
- <goals>
- <goal>read-project-properties</goal>
- </goals>
- <configuration>
- <files>
- <file>${basedir}/../../../../../moa-id.properties</file>
- </files>
- </configuration>
- </execution>
- </executions>
- </plugin> -->
- </plugins>
- </build>
-</project>
diff --git a/moaSig/handbook/clients/webservice/resources/requests/CreateCMSSignatureRequest.Base64Content.resp.xml b/moaSig/handbook/clients/webservice/resources/requests/CreateCMSSignatureRequest.Base64Content.resp.xml deleted file mode 100644 index 45b06e4..0000000 --- a/moaSig/handbook/clients/webservice/resources/requests/CreateCMSSignatureRequest.Base64Content.resp.xml +++ /dev/null @@ -1,46 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<CreateCMSSignatureResponse xmlns="http://reference.e-government.gv.at/namespace/moa/20020822#" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"> - <CMSSignature>MIAGCSqGSIb3DQEHAqCAMIACAQExDTALBglghkgBZQMEAgMwgAYJKoZIhvcNAQcB -oIAkgAQdRGllc2UgRGF0ZW4gc2luZCByZWluZXIgVGV4dC4AAAAAAACgggQvMIIE -KzCCA5SgAwIBAgIGY6tXffAmMA0GCSqGSIb3DQEBBQUAMEAxIjAgBgNVBAMTGUlB -SUsgVGVzdCBJbnRlcm1lZGlhdGUgQ0ExDTALBgNVBAoTBElBSUsxCzAJBgNVBAYT -AkFUMB4XDTEzMDQxNjE0MzMyNFoXDTIzMDQxNjE0MzMyNFowfjELMAkGA1UEBhMC -QVQxDTALBgNVBAcTBEdyYXoxJjAkBgNVBAoTHUdyYXogVW5pdmVyc2l0eSBvZiBU -ZWNobm9sb2d5MQ0wCwYDVQQLEwRFR0laMSkwJwYDVQQDEyBUZXN0IFNpZ25hdHVy -ZGllbnN0IGFsbGVyIEt1bmRlbjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC -ggEBAN1oJenNIuGzCiny3kibTm1pYPfuCqbE+6x+skNXj+TRY0vsR+Skj5P1/sNl -iFF0qVPrtH+VGvhzLBhb98uPEkxQ1xpl+AJ0YJin0XMW1+PMCGOuQ+A/mfsx9gZC -lAMPffgCOBgEuAuugfl7NfW1+4wK8cy4OKUAl6/UuTKWhlZyh0HIsAVmvHquPsOa -Fy607KI0JAK8QXogHu4nNXSRCuwf3YMM/lR1ky0Q90IBk4uBKE+2pPiIQAej6kiP -a2HcbKNT9UCtmcUOtmaNPHhlGvjAAe6LBj7MfHjfHsvn3ub07w4hDG3NauaEiDcu -cwjtOg9Bl6F8EcIzB8cmo25ZkrkCAwEAAaOCAWwwggFoMA4GA1UdDwEB/wQEAwIG -wDAMBgNVHRMBAf8EAjAAMB0GA1UdDgQWBBT5IDty8bqV51kzZB7+jExO+YOLUTBQ -BgNVHR8ESTBHMEWgQ6BBhj9odHRwOi8vY2EuaWFpay50dWdyYXouYXQvY2Fwc28v -Y3Jscy9JQUlLVGVzdF9JbnRlcm1lZGlhdGVDQS5jcmwwgaoGCCsGAQUFBwEBBIGd -MIGaMEoGCCsGAQUFBzABhj5odHRwOi8vY2EuaWFpay50dWdyYXouYXQvY2Fwc28v -T0NTUD9jYT1JQUlLVGVzdF9JbnRlcm1lZGlhdGVDQTBMBggrBgEFBQcwAoZAaHR0 -cDovL2NhLmlhaWsudHVncmF6LmF0L2NhcHNvL2NlcnRzL0lBSUtUZXN0X0ludGVy -bWVkaWF0ZUNBLmNlcjAJBgNVHREEAjAAMB8GA1UdIwQYMBaAFGiiXhHa3i+Aa0RE -v436ZTaBJKdvMA0GCSqGSIb3DQEBBQUAA4GBAGzwtp4nq0IxjnK5D86/9Gg6NRN2 -K39wN8/Zd6Uo8OnwmpYxEdfLsnDhp+H1IcqRFroqDRDmtoRXRqIW0VKJno70CzuW -+3ZFsSopH51BbHSxIvXAbxfOPX1PZQ1fXGTo5gWaJ62Xeu6zi+YtSxQHNMHqUxO/ -llGVtT8VDtNGS0wGMYIC0TCCAs0CAQEwSjBAMSIwIAYDVQQDExlJQUlLIFRlc3Qg -SW50ZXJtZWRpYXRlIENBMQ0wCwYDVQQKEwRJQUlLMQswCQYDVQQGEwJBVAIGY6tX -ffAmMAsGCWCGSAFlAwQCA6CCAVwwFgYGBACNRQIBMQwMCnRleHQvcGxhaW4wGAYJ -KoZIhvcNAQkDMQsGCSqGSIb3DQEHATAcBgkqhkiG9w0BCQUxDxcNMTMwNTE2MDkz -MzUxWjBPBgkqhkiG9w0BCQQxQgRAds7061RkR9wybcxKrtd9Uc/S/DNyxhvXPzr5 -A8IphKGDTe4lHXiky2xwjYEcSE7Mx3Jm8Lo5d9iFu45Dq9nx0DCBuAYLKoZIhvcN -AQkQAi8xgagwgaUwgaIwgZ8wCwYJYIZIAWUDBAIDBEBxEElsIgrSD8KgnZk88uom -iqWEEvWoMufQe68l7z1/qYX39aLlD2ShpHolkI+EM5JuuWM678CAJdkOTvxUvKm8 -ME4wRKRCMEAxIjAgBgNVBAMTGUlBSUsgVGVzdCBJbnRlcm1lZGlhdGUgQ0ExDTAL -BgNVBAoTBElBSUsxCzAJBgNVBAYTAkFUAgZjq1d98CYwCwYJKoZIhvcNAQEBBIIB -AN0fuQCwuCxNQOGtR+Jv6lk/1QQkkxD7YUvbjGbJoaX+qpYmRFyw5dLo1y+1p4fR -Sxyy0Zn2Yo8dD+5q/4LFtC4O1sz6qGZtmDMizwOuRcDQ0sn+nBQcDDWw81QKWqha -g7VWOotssgq9Rt//YswBh/mx5B7yEx7RXdzvK9knPncyXnM5Yef7yrhJ65txJMSA -hWUqikMC6NUn8N+ZCYyFlqyCWmbwpvBqXXb5OLt5Ke/lqKKG7iQrVwfTPBy0A7SA -ZnOHW9RnKfC9lXfT0Qf9jVCsXaTznlLQS5FzUVQNmEJzWF7WAwYzVhRgmxWhbnp+ -V8aqyuBfKTs4gm0sQIxXoToAAAAAAAA=</CMSSignature> - </CreateCMSSignatureResponse> - - - diff --git a/moaSig/handbook/clients/webservice/resources/requests/CreateCMSSignatureRequest.Base64Content.xml b/moaSig/handbook/clients/webservice/resources/requests/CreateCMSSignatureRequest.Base64Content.xml deleted file mode 100644 index 28b67f9..0000000 --- a/moaSig/handbook/clients/webservice/resources/requests/CreateCMSSignatureRequest.Base64Content.xml +++ /dev/null @@ -1,17 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<CreateCMSSignatureRequest xmlns="http://reference.e-government.gv.at/namespace/moa/20020822#" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"> - <KeyIdentifier>KG_allgemein</KeyIdentifier> - <SingleSignatureInfo SecurityLayerConformity="true"> - <DataObjectInfo Structure="enveloping"> - <DataObject> - <MetaInfo> - <MimeType>text/plain</MimeType> - </MetaInfo> - <Content> - <Base64Content>RGllc2UgRGF0ZW4gc2luZCByZWluZXIgVGV4dC4=</Base64Content> - </Content> - </DataObject> - </DataObjectInfo> - </SingleSignatureInfo> -</CreateCMSSignatureRequest> - diff --git a/moaSig/handbook/clients/webservice/resources/requests/CreateCMSSignatureRequest.Reference.resp.xml b/moaSig/handbook/clients/webservice/resources/requests/CreateCMSSignatureRequest.Reference.resp.xml deleted file mode 100644 index c81e98f..0000000 --- a/moaSig/handbook/clients/webservice/resources/requests/CreateCMSSignatureRequest.Reference.resp.xml +++ /dev/null @@ -1,38 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<CreateCMSSignatureResponse xmlns="http://reference.e-government.gv.at/namespace/moa/20020822#" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"> - <CMSSignature>MIAGCSqGSIb3DQEHAqCAMIACAQExDTALBglghkgBZQMEAgMwgAYJKoZIhvcNAQcB -AACgggQvMIIEKzCCA5SgAwIBAgIGY6tXffAmMA0GCSqGSIb3DQEBBQUAMEAxIjAg -BgNVBAMTGUlBSUsgVGVzdCBJbnRlcm1lZGlhdGUgQ0ExDTALBgNVBAoTBElBSUsx -CzAJBgNVBAYTAkFUMB4XDTEzMDQxNjE0MzMyNFoXDTIzMDQxNjE0MzMyNFowfjEL -MAkGA1UEBhMCQVQxDTALBgNVBAcTBEdyYXoxJjAkBgNVBAoTHUdyYXogVW5pdmVy -c2l0eSBvZiBUZWNobm9sb2d5MQ0wCwYDVQQLEwRFR0laMSkwJwYDVQQDEyBUZXN0 -IFNpZ25hdHVyZGllbnN0IGFsbGVyIEt1bmRlbjCCASIwDQYJKoZIhvcNAQEBBQAD -ggEPADCCAQoCggEBAN1oJenNIuGzCiny3kibTm1pYPfuCqbE+6x+skNXj+TRY0vs -R+Skj5P1/sNliFF0qVPrtH+VGvhzLBhb98uPEkxQ1xpl+AJ0YJin0XMW1+PMCGOu -Q+A/mfsx9gZClAMPffgCOBgEuAuugfl7NfW1+4wK8cy4OKUAl6/UuTKWhlZyh0HI -sAVmvHquPsOaFy607KI0JAK8QXogHu4nNXSRCuwf3YMM/lR1ky0Q90IBk4uBKE+2 -pPiIQAej6kiPa2HcbKNT9UCtmcUOtmaNPHhlGvjAAe6LBj7MfHjfHsvn3ub07w4h -DG3NauaEiDcucwjtOg9Bl6F8EcIzB8cmo25ZkrkCAwEAAaOCAWwwggFoMA4GA1Ud -DwEB/wQEAwIGwDAMBgNVHRMBAf8EAjAAMB0GA1UdDgQWBBT5IDty8bqV51kzZB7+ -jExO+YOLUTBQBgNVHR8ESTBHMEWgQ6BBhj9odHRwOi8vY2EuaWFpay50dWdyYXou -YXQvY2Fwc28vY3Jscy9JQUlLVGVzdF9JbnRlcm1lZGlhdGVDQS5jcmwwgaoGCCsG -AQUFBwEBBIGdMIGaMEoGCCsGAQUFBzABhj5odHRwOi8vY2EuaWFpay50dWdyYXou -YXQvY2Fwc28vT0NTUD9jYT1JQUlLVGVzdF9JbnRlcm1lZGlhdGVDQTBMBggrBgEF -BQcwAoZAaHR0cDovL2NhLmlhaWsudHVncmF6LmF0L2NhcHNvL2NlcnRzL0lBSUtU -ZXN0X0ludGVybWVkaWF0ZUNBLmNlcjAJBgNVHREEAjAAMB8GA1UdIwQYMBaAFGii -XhHa3i+Aa0REv436ZTaBJKdvMA0GCSqGSIb3DQEBBQUAA4GBAGzwtp4nq0IxjnK5 -D86/9Gg6NRN2K39wN8/Zd6Uo8OnwmpYxEdfLsnDhp+H1IcqRFroqDRDmtoRXRqIW -0VKJno70CzuW+3ZFsSopH51BbHSxIvXAbxfOPX1PZQ1fXGTo5gWaJ62Xeu6zi+Yt -SxQHNMHqUxO/llGVtT8VDtNGS0wGMYIB/TCCAfkCAQEwSjBAMSIwIAYDVQQDExlJ -QUlLIFRlc3QgSW50ZXJtZWRpYXRlIENBMQ0wCwYDVQQKEwRJQUlLMQswCQYDVQQG -EwJBVAIGY6tXffAmMAsGCWCGSAFlAwQCA6CBiTAYBgkqhkiG9w0BCQMxCwYJKoZI -hvcNAQcBMBwGCSqGSIb3DQEJBTEPFw0xMzA1MDYyMDE3NThaME8GCSqGSIb3DQEJ -BDFCBEB2zvTrVGRH3DJtzEqu131Rz9L8M3LGG9c/OvkDwimEoYNN7iUdeKTLbHCN -gRxITszHcmbwujl32IW7jkOr2fHQMAsGCSqGSIb3DQEBAQSCAQARQoV2xP8NRZpi -PXk8554tQQ1EiT0EDbgbxtpPMlkTz4WODxcY+qpKC3ZM6uaOnTPfCwya/xucFC/u -A2rvuvyuaoDDAPmvdmsFtNX0ymO3THECe95iJ3pd92m2DjfyEPS2S7hRkoSaMzqd -BBLjwSGm8ZaM8J1Pd4hC6pKEdgMFB3VOgZFHOZd2fG60olI3wcYVvu1Rwkab5R9/ -kTsMHqDjLz0reHRK5G4RUAZ7NSZ+h7HWuaoTviaWPM37iUw4ipko5+vR6m3kxbUv -p2mVhbGtiVjV6lwOfCA5kuFFjeaLrxLwv5JeVQItzw4E3DMEB2+csSA/qTH/xly4 -SwxhbA9pAAAAAAAA</CMSSignature> -</CreateCMSSignatureResponse>
\ No newline at end of file diff --git a/moaSig/handbook/clients/webservice/resources/requests/CreateCMSSignatureRequest.Reference.xml b/moaSig/handbook/clients/webservice/resources/requests/CreateCMSSignatureRequest.Reference.xml deleted file mode 100644 index 976ea7a..0000000 --- a/moaSig/handbook/clients/webservice/resources/requests/CreateCMSSignatureRequest.Reference.xml +++ /dev/null @@ -1,14 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<CreateCMSSignatureRequest xmlns="http://reference.e-government.gv.at/namespace/moa/20020822#" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"> - <KeyIdentifier>KG_allgemein</KeyIdentifier> - <SingleSignatureInfo SecurityLayerConformity="false"> - <DataObjectInfo Structure="detached"> - <DataObject> - <MetaInfo> - <MimeType>text/plain</MimeType> - </MetaInfo> - <Content Reference="http://localhost:8080/moa-spss-handbook-referencedData/Text.txt"/> - </DataObject> - </DataObjectInfo> - </SingleSignatureInfo> -</CreateCMSSignatureRequest>
\ No newline at end of file diff --git a/moaSig/handbook/clients/webservice/resources/requests/CreateXMLSignatureRequest.Refs.resp.xml b/moaSig/handbook/clients/webservice/resources/requests/CreateXMLSignatureRequest.Refs.resp.xml deleted file mode 100644 index bad31d1..0000000 --- a/moaSig/handbook/clients/webservice/resources/requests/CreateXMLSignatureRequest.Refs.resp.xml +++ /dev/null @@ -1,31 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<CreateXMLSignatureResponse xmlns="http://reference.e-government.gv.at/namespace/moa/20020822#" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"><SignatureEnvironment><doc:XMLDocument xmlns:doc="urn:document"> - <doc:Paragraph>Ich bin der erste Absatz in diesem Dokument.</doc:Paragraph> - <doc:Paragraph ParaId="Para2">Und ich bin der zweite Absatz in diesem Dokument. -Ich habe weiters ein eigenens ID-Attribut bekommen.</doc:Paragraph><dsig:Signature Id="signature-1-1" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"><dsig:SignedInfo><dsig:CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/><dsig:SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#ecdsa-sha1"/><dsig:Reference Id="reference-1-2" URI="#xpointer(id('signed-data-1-2-1')/node())"><dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/><dsig:DigestValue>A8ml6/aZKCmj1hONwvLItIwGHoc=</dsig:DigestValue></dsig:Reference><dsig:Reference Id="reference-1-3" URI="#xpointer(id('signed-data-1-3-1')/node())"><dsig:Transforms><dsig:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#base64"/></dsig:Transforms><dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/><dsig:DigestValue>0P878Dsmtxv5goj+6KgNmj6S/EE=</dsig:DigestValue></dsig:Reference><dsig:Reference Id="reference-1-4" URI="#xpointer(id('signed-data-1-4-1')/node())"><dsig:Transforms><dsig:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#base64"/></dsig:Transforms><dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/><dsig:DigestValue>0P878Dsmtxv5goj+6KgNmj6S/EE=</dsig:DigestValue></dsig:Reference><dsig:Reference Id="reference-1-6" URI="NichtAufloesbareReferenz1"><dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/><dsig:DigestValue>2b83+NbXDFijHzz+sH0T7fM36sA=</dsig:DigestValue></dsig:Reference><dsig:Reference Id="reference-1-7" URI="http://localhost:8080/referencedData/Text.txt"><dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/><dsig:DigestValue>0P878Dsmtxv5goj+6KgNmj6S/EE=</dsig:DigestValue></dsig:Reference><dsig:Reference Id="reference-1-8" URI="NichtAufloesbareReferenz2"><dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/><dsig:DigestValue>0P878Dsmtxv5goj+6KgNmj6S/EE=</dsig:DigestValue></dsig:Reference><dsig:Reference Id="reference-1-9" URI=""><dsig:Transforms><dsig:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/></dsig:Transforms><dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/><dsig:DigestValue>2b83+NbXDFijHzz+sH0T7fM36sA=</dsig:DigestValue></dsig:Reference><dsig:Reference Type="http://www.w3.org/2000/09/xmldsig#Manifest" URI="#dsig-manifest-1-1"><dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/><dsig:DigestValue>mNsxUkFoF46XZVBivBo4aasFCTQ=</dsig:DigestValue></dsig:Reference></dsig:SignedInfo><dsig:SignatureValue>kaAiAZgnUMYb3/IV5mmJinrH3et5M+o4OWMhgA3C9SZSPsE+ptWUAPU1VKl1G2AF</dsig:SignatureValue><dsig:KeyInfo><dsig:X509Data><dsig:X509Certificate>MIID+DCCA2WgAwIBAgIBCTAJBgUrDgMCHQUAMH8xCzAJBgNVBAYTAkFUMSwwKgYD -VQQKEyNTdGFic3RlbGxlIElLVC1TdHJhdGVnaWUgZGVzIEJ1bmRlczEeMBwGA1UE -CxMVVGVjaG5payB1bmQgU3RhbmRhcmRzMSIwIAYDVQQDExlUZXN0IENBIC0gU2ln -bmF0dXJkaWVuc3RlMB4XDTA0MDgwNDA4MjM0OFoXDTA3MDgwNDA4MjM0OFowgZgx -CzAJBgNVBAYTAkFUMS0wKwYDVQQKEyRTdGFic3N0ZWxsZSBJS1QtU3RyYXRlZ2ll -IGRlcyBCdW5kZXMxHjAcBgNVBAsTFVRlY2huaWsgdW5kIFN0YW5kYXJkczE6MDgG -A1UEAxMxVGVzdDogU2lnbmF0dXJkaWVuc3QgYWxsZXIgS3VuZGVuOiBFQ0RTQSAo -UDE5MnYxKTCB8zCBvAYHKoZIzj0CATCBsAIBATAkBgcqhkjOPQEBAhkA//////// -/////////////v//////////MDQEGP////////////////////7//////////AQY -ZCEFGeWcgOcPp+mrciQwSf643uzBRrmxBDEEGI2oDrAwkPZ8vyDrQ6GIAPT/Cv2C -/xASBxkrlf/I2nhjEBHtayTN1XP5d6EeeUgRAhkA////////////////md74NhRr -ybG00igxAgEBAzIABNHWY9lQOE1zgmpcpjTg2WIg6qgEsGhpXELPinJoMPDVheTv -2BZPG42YJsNfvWgC06OCARwwggEYMA4GA1UdDwEB/wQEAwIGwDAMBgNVHRMBAf8E -AjAAMB0GA1UdDgQWBBRHH5EXnrWosCmIa+JyEM5seMxFVzBdBgNVHSAEVjBUMFIG -DCsGAQQBlRIBAgMBATBCMEAGCCsGAQUFBwICMDQaMkRpZXNlcyBaZXJ0aWZpa2F0 -IGlzdCBudXIgZvxyIFRlc3R6d2Vja2UgZ2VlaWduZXQuMEMGA1UdHwQ8MDowOKA2 -oDSGMmh0dHA6Ly9sYWJzLmNpby5ndi5hdC90ZW1wL2NybHMvc2lnbmF0dXJkaWVu -c3QuY3JsMBQGByooAAoBAQEECQwHQktBLUlLVDAfBgNVHSMEGDAWgBRAl0P5fWaw -vf59+uxGcYY9wffZPTAJBgUrDgMCHQUAA4GBAIMKUsnajgfBtpHeDdMdQMLA8fdt -lluezDOM78WYYSFURP04QZk5iHkShzptgZCF5Y/T4an3dC3SnytL67LJvEoKUyja -iTMLo7650xRTvAjTaMJ+nly/wTRYJKplOLXKWj3WwfObMHXdsDE8NJmpJSRE7Sw7 -+tj+UiTiNNSaXirq</dsig:X509Certificate></dsig:X509Data></dsig:KeyInfo><dsig:Object Id="signed-data-1-2-1"><doc:XMLDocument xmlns:doc="urn:document"> - <doc:Paragraph>Ich bin der erste Absatz in diesem Dokument.</doc:Paragraph> - <doc:Paragraph ParaId="Para2">Und ich bin der zweite Absatz in diesem Dokument. -Ich habe weiters ein eigenens ID-Attribut bekommen.</doc:Paragraph> -</doc:XMLDocument></dsig:Object><dsig:Object Id="signed-data-1-3-1">RGllc2UgRGF0ZW4gc2luZCByZWluZXIgVGV4dC4=</dsig:Object><dsig:Object Id="signed-data-1-4-1">RGllc2UgRGF0ZW4gc2luZCByZWluZXIgVGV4dC4=</dsig:Object><dsig:Object Id="signed-data-1-1-1">RGllc2UgRGF0ZW4gd2FyZW4gYmFzZTY0IGtvZGllcnQu</dsig:Object><dsig:Object><dsig:Manifest Id="dsig-manifest-1-1"><dsig:Reference Id="reference-1-1" URI="#xpointer(id('signed-data-1-1-1')/node())"><dsig:Transforms><dsig:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#base64"/></dsig:Transforms><dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/><dsig:DigestValue>a53jOsL7KbyltpByAK87FoMZphI=</dsig:DigestValue></dsig:Reference><dsig:Reference Id="reference-1-5" URI="http://localhost:8080/referencedData/Text.b64"><dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/><dsig:DigestValue>a53jOsL7KbyltpByAK87FoMZphI=</dsig:DigestValue></dsig:Reference></dsig:Manifest></dsig:Object></dsig:Signature> -</doc:XMLDocument></SignatureEnvironment></CreateXMLSignatureResponse>
\ No newline at end of file diff --git a/moaSig/handbook/clients/webservice/resources/requests/CreateXMLSignatureRequest.Refs.xml b/moaSig/handbook/clients/webservice/resources/requests/CreateXMLSignatureRequest.Refs.xml deleted file mode 100644 index f4dd2db..0000000 --- a/moaSig/handbook/clients/webservice/resources/requests/CreateXMLSignatureRequest.Refs.xml +++ /dev/null @@ -1,137 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<CreateXMLSignatureRequest xmlns="http://reference.e-government.gv.at/namespace/moa/20020822#" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"> - <KeyIdentifier>KG_allgemein</KeyIdentifier> - <SingleSignatureInfo SecurityLayerConformity="false"> - <!--Enveloping Data, direkte Angabe der Daten in base64 kodierter Form; Manifest-Referenz--> - <DataObjectInfo Structure="enveloping" ChildOfManifest="true"> - <DataObject> - <Base64Content>RGllc2UgRGF0ZW4gd2FyZW4gYmFzZTY0IGtvZGllcnQu</Base64Content> - </DataObject> - <CreateTransformsInfoProfile> - <CreateTransformsInfo> - <FinalDataMetaInfo> - <MimeType>text/plain</MimeType> - </FinalDataMetaInfo> - </CreateTransformsInfo> - </CreateTransformsInfoProfile> - </DataObjectInfo> - <!--Enveloping Data, direkte Angabe der Daten als XML-Fragment; SignedInfo-Referenz--> - <DataObjectInfo Structure="enveloping" ChildOfManifest="false"> - <DataObject> - <XMLContent><doc:XMLDocument xmlns:doc="urn:document"> - <doc:Paragraph>Ich bin der erste Absatz in diesem Dokument.</doc:Paragraph> - <doc:Paragraph ParaId="Para2">Und ich bin der zweite Absatz in diesem Dokument. -Ich habe weiters ein eigenens ID-Attribut bekommen.</doc:Paragraph> -</doc:XMLDocument></XMLContent> - </DataObject> - <CreateTransformsInfoProfile> - <CreateTransformsInfo> - <FinalDataMetaInfo> - <MimeType>application/xml</MimeType> - </FinalDataMetaInfo> - </CreateTransformsInfo> - </CreateTransformsInfoProfile> - </DataObjectInfo> - <!--Enveloping Data, Angabe der Daten als Referenz mittels Reference-Attribut, die von MOA aufgelöst wird; SignedInfo-Referenz--> - <DataObjectInfo Structure="enveloping" ChildOfManifest="false"> - <DataObject Reference="http://localhost:8080/referencedData/Text.txt"/> - <CreateTransformsInfoProfile> - <CreateTransformsInfo> - <FinalDataMetaInfo> - <MimeType>text/plain</MimeType> - </FinalDataMetaInfo> - </CreateTransformsInfo> - </CreateTransformsInfoProfile> - </DataObjectInfo> - <!--Enveloping Data, Angabe der Daten als Referenz mittels LocRefContent, die von MOA aufgelöst wird; SignedInfo-Referenz--> - <DataObjectInfo Structure="enveloping" ChildOfManifest="false"> - <DataObject> - <LocRefContent>http://localhost:8080/referencedData/Text.txt</LocRefContent> - </DataObject> - <CreateTransformsInfoProfile> - <CreateTransformsInfo> - <FinalDataMetaInfo> - <MimeType>text/plain</MimeType> - </FinalDataMetaInfo> - </CreateTransformsInfo> - </CreateTransformsInfoProfile> - </DataObjectInfo> - <!--Detached Daten; direkte Angabe der Daten in base64 kodierter Form; Referenzierung für die Signatur muss durch Reference-Attribut angegeben werden; Manifest-Referenz--> - <DataObjectInfo Structure="detached" ChildOfManifest="true"> - <DataObject Reference="http://localhost:8080/referencedData/Text.b64"> - <Base64Content>RGllc2UgRGF0ZW4gd2FyZW4gYmFzZTY0IGtvZGllcnQu</Base64Content> - </DataObject> - <CreateTransformsInfoProfile> - <CreateTransformsInfo> - <FinalDataMetaInfo> - <MimeType>text/plain</MimeType> - </FinalDataMetaInfo> - </CreateTransformsInfo> - </CreateTransformsInfoProfile> - </DataObjectInfo> - <!--Detached Daten; direkte Angabe der Daten als XML-Fragment; Referenzierung in der Signatur muss durch Reference-Attribut angegeben werden; SignedInfo-Referenz--> - <DataObjectInfo Structure="detached" ChildOfManifest="false"> - <DataObject Reference="NichtAufloesbareReferenz1"> - <XMLContent><doc:XMLDocument xmlns:doc="urn:document"> - <doc:Paragraph>Ich bin der erste Absatz in diesem Dokument.</doc:Paragraph> - <doc:Paragraph ParaId="Para2">Und ich bin der zweite Absatz in diesem Dokument. -Ich habe weiters ein eigenens ID-Attribut bekommen.</doc:Paragraph> -</doc:XMLDocument></XMLContent> - </DataObject> - <CreateTransformsInfoProfile> - <CreateTransformsInfo> - <FinalDataMetaInfo> - <MimeType>application/xml</MimeType> - </FinalDataMetaInfo> - </CreateTransformsInfo> - </CreateTransformsInfoProfile> - </DataObjectInfo> - <!--Detached Daten;Angabe der Daten als Referenz über das Reference-Attribut, die von MOA aufgelöst wird; Referenzierung für die Signatur muss durch Reference-Attribut angegeben werden; SignedInfo-Referenz--> - <DataObjectInfo Structure="detached" ChildOfManifest="false"> - <DataObject Reference="http://localhost:8080/referencedData/Text.txt"> - </DataObject> - <CreateTransformsInfoProfile> - <CreateTransformsInfo> - <FinalDataMetaInfo> - <MimeType>text/plain</MimeType> - </FinalDataMetaInfo> - </CreateTransformsInfo> - </CreateTransformsInfoProfile> - </DataObjectInfo> - <!--Detached Daten;Angabe der Daten als Referenz mittels LocRefContent, die von MOA aufgelöst wird; Referenzierung für die Signatur muss durch Reference-Attribut angegeben werden; SignedInfo-Referenz--> - <DataObjectInfo Structure="detached" ChildOfManifest="false"> - <DataObject Reference="NichtAufloesbareReferenz2"> - <LocRefContent>http://localhost:8080/referencedData/Text.txt</LocRefContent> - </DataObject> - <CreateTransformsInfoProfile> - <CreateTransformsInfo> - <FinalDataMetaInfo> - <MimeType>text/plain</MimeType> - </FinalDataMetaInfo> - </CreateTransformsInfo> - </CreateTransformsInfoProfile> - </DataObjectInfo> - <!--Detached Daten, Verweis auf jenes Dokument, das die Signatur beinhalten wird; Angabe der Daten als Referenz über das Reference-Attribut, die von MOA aufgelöst wird; Referenzierung für die Signatur muss durch Reference-Attribut angegeben werden; SignedInfo-Referenz--> - <DataObjectInfo Structure="detached"> - <DataObject Reference=""/> - <CreateTransformsInfoProfile> - <CreateTransformsInfo> - <dsig:Transforms> - <dsig:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/> - </dsig:Transforms> - <FinalDataMetaInfo> - <MimeType>application/xml</MimeType> - </FinalDataMetaInfo> - </CreateTransformsInfo> - </CreateTransformsInfoProfile> - </DataObjectInfo> - <CreateSignatureInfo> - <CreateSignatureEnvironment> - <LocRefContent>http://localhost:8080/referencedData/XMLDocument.xml</LocRefContent> - </CreateSignatureEnvironment> - <CreateSignatureEnvironmentProfile> - <CreateSignatureLocation Index="4" xmlns:doc="urn:document">/doc:XMLDocument</CreateSignatureLocation> - </CreateSignatureEnvironmentProfile> - </CreateSignatureInfo> - </SingleSignatureInfo> -</CreateXMLSignatureRequest>
\ No newline at end of file diff --git a/moaSig/handbook/clients/webservice/resources/requests/CreateXMLSignatureRequest.Simple.resp.xml b/moaSig/handbook/clients/webservice/resources/requests/CreateXMLSignatureRequest.Simple.resp.xml deleted file mode 100644 index edcb03c..0000000 --- a/moaSig/handbook/clients/webservice/resources/requests/CreateXMLSignatureRequest.Simple.resp.xml +++ /dev/null @@ -1,23 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<CreateXMLSignatureResponse xmlns="http://reference.e-government.gv.at/namespace/moa/20020822#" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"><SignatureEnvironment><dsig:Signature Id="signature-1-1" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"><dsig:SignedInfo><dsig:CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/><dsig:SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#ecdsa-sha1"/><dsig:Reference Id="reference-1-1" URI="#xpointer(id('signed-data-1-1-1')/node())"><dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/><dsig:DigestValue>tLODyeiWFbAkQKwhrR23jtcgu4k=</dsig:DigestValue></dsig:Reference></dsig:SignedInfo><dsig:SignatureValue>VEjXB6+geUL16oTPDVx5lcQliGl/oyVobug3BVxVwhu8CU7WK65moTcTuo/CL2hQ</dsig:SignatureValue><dsig:KeyInfo><dsig:X509Data><dsig:X509Certificate>MIID+DCCA2WgAwIBAgIBCTAJBgUrDgMCHQUAMH8xCzAJBgNVBAYTAkFUMSwwKgYD -VQQKEyNTdGFic3RlbGxlIElLVC1TdHJhdGVnaWUgZGVzIEJ1bmRlczEeMBwGA1UE -CxMVVGVjaG5payB1bmQgU3RhbmRhcmRzMSIwIAYDVQQDExlUZXN0IENBIC0gU2ln -bmF0dXJkaWVuc3RlMB4XDTA0MDgwNDA4MjM0OFoXDTA3MDgwNDA4MjM0OFowgZgx -CzAJBgNVBAYTAkFUMS0wKwYDVQQKEyRTdGFic3N0ZWxsZSBJS1QtU3RyYXRlZ2ll -IGRlcyBCdW5kZXMxHjAcBgNVBAsTFVRlY2huaWsgdW5kIFN0YW5kYXJkczE6MDgG -A1UEAxMxVGVzdDogU2lnbmF0dXJkaWVuc3QgYWxsZXIgS3VuZGVuOiBFQ0RTQSAo -UDE5MnYxKTCB8zCBvAYHKoZIzj0CATCBsAIBATAkBgcqhkjOPQEBAhkA//////// -/////////////v//////////MDQEGP////////////////////7//////////AQY -ZCEFGeWcgOcPp+mrciQwSf643uzBRrmxBDEEGI2oDrAwkPZ8vyDrQ6GIAPT/Cv2C -/xASBxkrlf/I2nhjEBHtayTN1XP5d6EeeUgRAhkA////////////////md74NhRr -ybG00igxAgEBAzIABNHWY9lQOE1zgmpcpjTg2WIg6qgEsGhpXELPinJoMPDVheTv -2BZPG42YJsNfvWgC06OCARwwggEYMA4GA1UdDwEB/wQEAwIGwDAMBgNVHRMBAf8E -AjAAMB0GA1UdDgQWBBRHH5EXnrWosCmIa+JyEM5seMxFVzBdBgNVHSAEVjBUMFIG -DCsGAQQBlRIBAgMBATBCMEAGCCsGAQUFBwICMDQaMkRpZXNlcyBaZXJ0aWZpa2F0 -IGlzdCBudXIgZvxyIFRlc3R6d2Vja2UgZ2VlaWduZXQuMEMGA1UdHwQ8MDowOKA2 -oDSGMmh0dHA6Ly9sYWJzLmNpby5ndi5hdC90ZW1wL2NybHMvc2lnbmF0dXJkaWVu -c3QuY3JsMBQGByooAAoBAQEECQwHQktBLUlLVDAfBgNVHSMEGDAWgBRAl0P5fWaw -vf59+uxGcYY9wffZPTAJBgUrDgMCHQUAA4GBAIMKUsnajgfBtpHeDdMdQMLA8fdt -lluezDOM78WYYSFURP04QZk5iHkShzptgZCF5Y/T4an3dC3SnytL67LJvEoKUyja -iTMLo7650xRTvAjTaMJ+nly/wTRYJKplOLXKWj3WwfObMHXdsDE8NJmpJSRE7Sw7 -+tj+UiTiNNSaXirq</dsig:X509Certificate></dsig:X509Data></dsig:KeyInfo><dsig:Object Id="signed-data-1-1-1">Diese Daten werden signiert.</dsig:Object></dsig:Signature></SignatureEnvironment></CreateXMLSignatureResponse>
\ No newline at end of file diff --git a/moaSig/handbook/clients/webservice/resources/requests/CreateXMLSignatureRequest.Simple.xml b/moaSig/handbook/clients/webservice/resources/requests/CreateXMLSignatureRequest.Simple.xml deleted file mode 100644 index 3344b47..0000000 --- a/moaSig/handbook/clients/webservice/resources/requests/CreateXMLSignatureRequest.Simple.xml +++ /dev/null @@ -1,19 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<CreateXMLSignatureRequest xmlns="http://reference.e-government.gv.at/namespace/moa/20020822#" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"> - <KeyIdentifier>KG_allgemein</KeyIdentifier> - <SingleSignatureInfo SecurityLayerConformity="false"> - <DataObjectInfo Structure="enveloping"> - <DataObject> - <XMLContent>Diese Daten werden signiert.</XMLContent> - </DataObject> - <CreateTransformsInfoProfile> - <CreateTransformsInfo> - <FinalDataMetaInfo> - <MimeType>text/plain</MimeType> - </FinalDataMetaInfo> - </CreateTransformsInfo> - </CreateTransformsInfoProfile> - </DataObjectInfo> - </SingleSignatureInfo> -</CreateXMLSignatureRequest> - diff --git a/moaSig/handbook/clients/webservice/resources/requests/CreateXMLSignatureRequest.Supplements.resp.xml b/moaSig/handbook/clients/webservice/resources/requests/CreateXMLSignatureRequest.Supplements.resp.xml deleted file mode 100644 index def0daf..0000000 --- a/moaSig/handbook/clients/webservice/resources/requests/CreateXMLSignatureRequest.Supplements.resp.xml +++ /dev/null @@ -1,29 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<CreateXMLSignatureResponse xmlns="http://reference.e-government.gv.at/namespace/moa/20020822#" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"><SignatureEnvironment><doc:XMLDocument xmlns="http://reference.e-government.gv.at/namespace/moa/20020822#" xmlns:doc="urn:document" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:document urn:XMLDocument.xsd"> - <doc:Paragraph>Ich bin der erste Absatz in diesem Dokument.</doc:Paragraph> - <doc:Paragraph ParaId="Para2">Und ich bin der zweite Absatz in diesem Dokument. -Ich habe weiters ein eigenens ID-Attribut bekommen.</doc:Paragraph><dsig:Signature Id="signature-1-1" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"><dsig:SignedInfo><dsig:CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/><dsig:SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#ecdsa-sha1"/><dsig:Reference Id="reference-1-1" URI="#Para2"><dsig:Transforms><dsig:Transform Algorithm="http://www.w3.org/TR/1999/REC-xslt-19991116"><xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> - <xsl:include href="XMLDocument.Para.xsl"/> -</xsl:stylesheet></dsig:Transform><dsig:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/></dsig:Transforms><dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/><dsig:DigestValue>luM3wUmedTvkMHVedQkA/8otXUE=</dsig:DigestValue></dsig:Reference></dsig:SignedInfo><dsig:SignatureValue>vGVimRmUHwrDR8feQCK1DZ2kyDw0CCrXimJi/yCrIoqSkUKFlKrtAyP2RUBXXjye</dsig:SignatureValue><dsig:KeyInfo><dsig:X509Data><dsig:X509Certificate>MIID+DCCA2WgAwIBAgIBCTAJBgUrDgMCHQUAMH8xCzAJBgNVBAYTAkFUMSwwKgYD -VQQKEyNTdGFic3RlbGxlIElLVC1TdHJhdGVnaWUgZGVzIEJ1bmRlczEeMBwGA1UE -CxMVVGVjaG5payB1bmQgU3RhbmRhcmRzMSIwIAYDVQQDExlUZXN0IENBIC0gU2ln -bmF0dXJkaWVuc3RlMB4XDTA0MDgwNDA4MjM0OFoXDTA3MDgwNDA4MjM0OFowgZgx -CzAJBgNVBAYTAkFUMS0wKwYDVQQKEyRTdGFic3N0ZWxsZSBJS1QtU3RyYXRlZ2ll -IGRlcyBCdW5kZXMxHjAcBgNVBAsTFVRlY2huaWsgdW5kIFN0YW5kYXJkczE6MDgG -A1UEAxMxVGVzdDogU2lnbmF0dXJkaWVuc3QgYWxsZXIgS3VuZGVuOiBFQ0RTQSAo -UDE5MnYxKTCB8zCBvAYHKoZIzj0CATCBsAIBATAkBgcqhkjOPQEBAhkA//////// -/////////////v//////////MDQEGP////////////////////7//////////AQY -ZCEFGeWcgOcPp+mrciQwSf643uzBRrmxBDEEGI2oDrAwkPZ8vyDrQ6GIAPT/Cv2C -/xASBxkrlf/I2nhjEBHtayTN1XP5d6EeeUgRAhkA////////////////md74NhRr -ybG00igxAgEBAzIABNHWY9lQOE1zgmpcpjTg2WIg6qgEsGhpXELPinJoMPDVheTv -2BZPG42YJsNfvWgC06OCARwwggEYMA4GA1UdDwEB/wQEAwIGwDAMBgNVHRMBAf8E -AjAAMB0GA1UdDgQWBBRHH5EXnrWosCmIa+JyEM5seMxFVzBdBgNVHSAEVjBUMFIG -DCsGAQQBlRIBAgMBATBCMEAGCCsGAQUFBwICMDQaMkRpZXNlcyBaZXJ0aWZpa2F0 -IGlzdCBudXIgZvxyIFRlc3R6d2Vja2UgZ2VlaWduZXQuMEMGA1UdHwQ8MDowOKA2 -oDSGMmh0dHA6Ly9sYWJzLmNpby5ndi5hdC90ZW1wL2NybHMvc2lnbmF0dXJkaWVu -c3QuY3JsMBQGByooAAoBAQEECQwHQktBLUlLVDAfBgNVHSMEGDAWgBRAl0P5fWaw -vf59+uxGcYY9wffZPTAJBgUrDgMCHQUAA4GBAIMKUsnajgfBtpHeDdMdQMLA8fdt -lluezDOM78WYYSFURP04QZk5iHkShzptgZCF5Y/T4an3dC3SnytL67LJvEoKUyja -iTMLo7650xRTvAjTaMJ+nly/wTRYJKplOLXKWj3WwfObMHXdsDE8NJmpJSRE7Sw7 -+tj+UiTiNNSaXirq</dsig:X509Certificate></dsig:X509Data></dsig:KeyInfo></dsig:Signature> -</doc:XMLDocument></SignatureEnvironment></CreateXMLSignatureResponse>
\ No newline at end of file diff --git a/moaSig/handbook/clients/webservice/resources/requests/CreateXMLSignatureRequest.Supplements.xml b/moaSig/handbook/clients/webservice/resources/requests/CreateXMLSignatureRequest.Supplements.xml deleted file mode 100644 index 9144e83..0000000 --- a/moaSig/handbook/clients/webservice/resources/requests/CreateXMLSignatureRequest.Supplements.xml +++ /dev/null @@ -1,40 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<CreateXMLSignatureRequest xmlns="http://reference.e-government.gv.at/namespace/moa/20020822#" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"> - <KeyIdentifier>KG_allgemein</KeyIdentifier> - <SingleSignatureInfo SecurityLayerConformity="false"> - <DataObjectInfo Structure="detached"> - <DataObject Reference="#Para2"/> - <CreateTransformsInfoProfile> - <CreateTransformsInfo> - <dsig:Transforms> - <dsig:Transform Algorithm="http://www.w3.org/TR/1999/REC-xslt-19991116"> - <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> - <xsl:include href="XMLDocument.Para.xsl"/> -</xsl:stylesheet> - </dsig:Transform> - <dsig:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/> - </dsig:Transforms> - <FinalDataMetaInfo> - <MimeType>application/xhtml+xml</MimeType> - </FinalDataMetaInfo> - </CreateTransformsInfo> - <Supplement> - <Content Reference="XMLDocument.Para.xsl"> - <LocRefContent>http://localhost:8080/referencedData/XMLDocument.Para.xsl</LocRefContent> - </Content> - </Supplement> - </CreateTransformsInfoProfile> - </DataObjectInfo> - <CreateSignatureInfo> - <CreateSignatureEnvironment Reference="http://localhost:8080/referencedData/XMLDocument.withSchemaHint.xml"/> - <CreateSignatureEnvironmentProfile> - <CreateSignatureLocation Index="4" xmlns:doc="urn:document">/doc:XMLDocument</CreateSignatureLocation> - <Supplement> - <Content Reference="urn:XMLDocument.xsd"> - <LocRefContent>http://localhost:8080/referencedData/XMLDocument.xsd</LocRefContent> - </Content> - </Supplement> - </CreateSignatureEnvironmentProfile> - </CreateSignatureInfo> - </SingleSignatureInfo> -</CreateXMLSignatureRequest> diff --git a/moaSig/handbook/clients/webservice/resources/requests/CreateXMLSignatureRequest.Transforms.resp.xml b/moaSig/handbook/clients/webservice/resources/requests/CreateXMLSignatureRequest.Transforms.resp.xml deleted file mode 100644 index 1d5bd65..0000000 --- a/moaSig/handbook/clients/webservice/resources/requests/CreateXMLSignatureRequest.Transforms.resp.xml +++ /dev/null @@ -1,39 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<CreateXMLSignatureResponse xmlns="http://reference.e-government.gv.at/namespace/moa/20020822#" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"><SignatureEnvironment><dsig:Signature Id="signature-1-1" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"><dsig:SignedInfo><dsig:CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/><dsig:SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#ecdsa-sha1"/><dsig:Reference Id="reference-1-1" URI="http://localhost:8080/referencedData/Text.b64"><dsig:Transforms><dsig:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#base64"/></dsig:Transforms><dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/><dsig:DigestValue>a53jOsL7KbyltpByAK87FoMZphI=</dsig:DigestValue></dsig:Reference><dsig:Reference Id="reference-1-2" URI="http://localhost:8080/referencedData/XMLDocument.xml"><dsig:Transforms><dsig:Transform Algorithm="http://www.w3.org/2002/06/xmldsig-filter2"><xp2:XPath Filter="subtract" xmlns:doc="urn:document" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#" xmlns:xf2="http://www.w3.org/2002/06/xmldsig-filter2" xmlns:xp2="http://www.w3.org/2002/06/xmldsig-filter2">/doc:XMLDocument/doc:Paragraph[2]</xp2:XPath></dsig:Transform><dsig:Transform Algorithm="http://www.w3.org/TR/1999/REC-xslt-19991116"><xsl:stylesheet version="1.0" xmlns:doc="urn:document" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> - <xsl:output encoding="UTF-8" indent="yes" method="xml"/> - <xsl:template match="/doc:XMLDocument"> - <html xmlns="http://www.w3.org/1999/xhtml"> - <head> - <title>HTML-Dokument</title> - </head> - <body> - <xsl:for-each select="doc:Paragraph"> - <p> - <xsl:value-of select="child::text()"/> - </p> - </xsl:for-each> - </body> - </html> - </xsl:template> -</xsl:stylesheet></dsig:Transform><dsig:Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/></dsig:Transforms><dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/><dsig:DigestValue>fIPwneCpjVqTXwHMN9DFfx6tJIU=</dsig:DigestValue></dsig:Reference></dsig:SignedInfo><dsig:SignatureValue>kWm9iFL5UngH8uDG6094K99J/WB/PdlqzfI6WtGpJ3jiCTV7mn/mzYWMv09b3vee</dsig:SignatureValue><dsig:KeyInfo><dsig:X509Data><dsig:X509Certificate>MIID+DCCA2WgAwIBAgIBCTAJBgUrDgMCHQUAMH8xCzAJBgNVBAYTAkFUMSwwKgYD -VQQKEyNTdGFic3RlbGxlIElLVC1TdHJhdGVnaWUgZGVzIEJ1bmRlczEeMBwGA1UE -CxMVVGVjaG5payB1bmQgU3RhbmRhcmRzMSIwIAYDVQQDExlUZXN0IENBIC0gU2ln -bmF0dXJkaWVuc3RlMB4XDTA0MDgwNDA4MjM0OFoXDTA3MDgwNDA4MjM0OFowgZgx -CzAJBgNVBAYTAkFUMS0wKwYDVQQKEyRTdGFic3N0ZWxsZSBJS1QtU3RyYXRlZ2ll -IGRlcyBCdW5kZXMxHjAcBgNVBAsTFVRlY2huaWsgdW5kIFN0YW5kYXJkczE6MDgG -A1UEAxMxVGVzdDogU2lnbmF0dXJkaWVuc3QgYWxsZXIgS3VuZGVuOiBFQ0RTQSAo -UDE5MnYxKTCB8zCBvAYHKoZIzj0CATCBsAIBATAkBgcqhkjOPQEBAhkA//////// -/////////////v//////////MDQEGP////////////////////7//////////AQY -ZCEFGeWcgOcPp+mrciQwSf643uzBRrmxBDEEGI2oDrAwkPZ8vyDrQ6GIAPT/Cv2C -/xASBxkrlf/I2nhjEBHtayTN1XP5d6EeeUgRAhkA////////////////md74NhRr -ybG00igxAgEBAzIABNHWY9lQOE1zgmpcpjTg2WIg6qgEsGhpXELPinJoMPDVheTv -2BZPG42YJsNfvWgC06OCARwwggEYMA4GA1UdDwEB/wQEAwIGwDAMBgNVHRMBAf8E -AjAAMB0GA1UdDgQWBBRHH5EXnrWosCmIa+JyEM5seMxFVzBdBgNVHSAEVjBUMFIG -DCsGAQQBlRIBAgMBATBCMEAGCCsGAQUFBwICMDQaMkRpZXNlcyBaZXJ0aWZpa2F0 -IGlzdCBudXIgZvxyIFRlc3R6d2Vja2UgZ2VlaWduZXQuMEMGA1UdHwQ8MDowOKA2 -oDSGMmh0dHA6Ly9sYWJzLmNpby5ndi5hdC90ZW1wL2NybHMvc2lnbmF0dXJkaWVu -c3QuY3JsMBQGByooAAoBAQEECQwHQktBLUlLVDAfBgNVHSMEGDAWgBRAl0P5fWaw -vf59+uxGcYY9wffZPTAJBgUrDgMCHQUAA4GBAIMKUsnajgfBtpHeDdMdQMLA8fdt -lluezDOM78WYYSFURP04QZk5iHkShzptgZCF5Y/T4an3dC3SnytL67LJvEoKUyja -iTMLo7650xRTvAjTaMJ+nly/wTRYJKplOLXKWj3WwfObMHXdsDE8NJmpJSRE7Sw7 -+tj+UiTiNNSaXirq</dsig:X509Certificate></dsig:X509Data></dsig:KeyInfo></dsig:Signature></SignatureEnvironment></CreateXMLSignatureResponse>
\ No newline at end of file diff --git a/moaSig/handbook/clients/webservice/resources/requests/CreateXMLSignatureRequest.Transforms.xml b/moaSig/handbook/clients/webservice/resources/requests/CreateXMLSignatureRequest.Transforms.xml deleted file mode 100644 index 6375365..0000000 --- a/moaSig/handbook/clients/webservice/resources/requests/CreateXMLSignatureRequest.Transforms.xml +++ /dev/null @@ -1,52 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<CreateXMLSignatureRequest xmlns="http://reference.e-government.gv.at/namespace/moa/20020822#" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"> - <KeyIdentifier>KG_allgemein</KeyIdentifier> - <SingleSignatureInfo SecurityLayerConformity="false"> - <DataObjectInfo Structure="detached"> - <DataObject Reference="http://localhost:8080/referencedData/Text.b64"/> - <CreateTransformsInfoProfile> - <CreateTransformsInfo> - <dsig:Transforms> - <dsig:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#base64"/> - </dsig:Transforms> - <FinalDataMetaInfo> - <MimeType>text/plain</MimeType> - </FinalDataMetaInfo> - </CreateTransformsInfo> - </CreateTransformsInfoProfile> - </DataObjectInfo> - <DataObjectInfo Structure="detached"> - <DataObject Reference="http://localhost:8080/referencedData/XMLDocument.xml"/> - <CreateTransformsInfoProfile> - <CreateTransformsInfo> - <dsig:Transforms> - <dsig:Transform Algorithm="http://www.w3.org/2002/06/xmldsig-filter2"> - <xp2:XPath xmlns:xp2="http://www.w3.org/2002/06/xmldsig-filter2" xmlns:doc="urn:document" Filter="subtract">/doc:XMLDocument/doc:Paragraph[2]</xp2:XPath> - </dsig:Transform> - <dsig:Transform Algorithm="http://www.w3.org/TR/1999/REC-xslt-19991116"><xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:doc="urn:document"> - <xsl:output encoding="UTF-8" method="xml" indent="yes"/> - <xsl:template match="/doc:XMLDocument"> - <html xmlns="http://www.w3.org/1999/xhtml"> - <head> - <title>HTML-Dokument</title> - </head> - <body> - <xsl:for-each select="doc:Paragraph"> - <p> - <xsl:value-of select="child::text()"/> - </p> - </xsl:for-each> - </body> - </html> - </xsl:template> -</xsl:stylesheet></dsig:Transform> - <dsig:Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/> - </dsig:Transforms> - <FinalDataMetaInfo> - <MimeType>application/xhtml+xml</MimeType> - </FinalDataMetaInfo> - </CreateTransformsInfo> - </CreateTransformsInfoProfile> - </DataObjectInfo> - </SingleSignatureInfo> -</CreateXMLSignatureRequest> diff --git a/moaSig/handbook/clients/webservice/resources/requests/VerifyCMSSignatureRequest.Extended.resp.xml b/moaSig/handbook/clients/webservice/resources/requests/VerifyCMSSignatureRequest.Extended.resp.xml deleted file mode 100644 index daa22bd..0000000 --- a/moaSig/handbook/clients/webservice/resources/requests/VerifyCMSSignatureRequest.Extended.resp.xml +++ /dev/null @@ -1,29 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<VerifyCMSSignatureResponse xmlns="http://reference.e-government.gv.at/namespace/moa/20020822#" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"><SignerInfo><dsig:X509Data><dsig:X509SubjectName>serialNumber=615536615920,givenName=Gregor,SN=Karlinger,CN=Gregor Karlinger,C=AT</dsig:X509SubjectName><dsig:X509IssuerSerial><dsig:X509IssuerName>CN=TrustSignTest-Sig-01,OU=TrustSignTest-Sig-01,O=A-Trust Ges. für Sicherheitssysteme im elektr. Datenverkehr GmbH,C=AT</dsig:X509IssuerName><dsig:X509SerialNumber>2892</dsig:X509SerialNumber></dsig:X509IssuerSerial><dsig:X509Certificate>MIIFLjCCBBagAwIBAgICC0wwDQYJKoZIhvcNAQEFBQAwgdkxCzAJBgNVBAYTAkFU -MYGLMIGIBgNVBAoegYAAQQAtAFQAcgB1AHMAdAAgAEcAZQBzAC4AIABmAPwAcgAg -AFMAaQBjAGgAZQByAGgAZQBpAHQAcwBzAHkAcwB0AGUAbQBlACAAaQBtACAAZQBs -AGUAawB0AHIALgAgAEQAYQB0AGUAbgB2AGUAcgBrAGUAaAByACAARwBtAGIASDEd -MBsGA1UECxMUVHJ1c3RTaWduVGVzdC1TaWctMDExHTAbBgNVBAMTFFRydXN0U2ln -blRlc3QtU2lnLTAxMB4XDTAzMDgyNzEyMDEyNFoXDTA2MDgyNzEyMDEyNFowZDEL -MAkGA1UEBhMCQVQxGTAXBgNVBAMTEEdyZWdvciBLYXJsaW5nZXIxEjAQBgNVBAQT -CUthcmxpbmdlcjEPMA0GA1UEKhMGR3JlZ29yMRUwEwYDVQQFEww2MTU1MzY2MTU5 -MjAwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAKDSK1XaYK0Ydbk6V58g7QzQ -Ysk0A6C2JyhiZy3078DJ1EkwzBMVejTNq1e9wp+BmeZ2YpiftNyRFfu/Gg8ksOUQ -2oCn9A9pZLUGvtajA3aL8f182GQODRqQmelvYSUL/u9vAChOlcT+UEqj5jW4xjd4 -XsCotX4Kz+ofkD+SAlf1AgMBAAGjggH2MIIB8jATBgNVHSMEDDAKgAhKfsjmnWR0 -6TA+BggrBgEFBQcBAwEB/wQvMC0wCAYGBACORgEBMBUGBgQAjkYBAjALEwNFVVIC -AQACAQAwCgYIKwYBBQUHCwEwgYIGCCsGAQUFBwEBBHYwdDAvBggrBgEFBQcwAYYj -aHR0cDovL29jc3AtdGVzdC5hLXRydXN0LmF0OjgyL29jc3AwQQYIKwYBBQUHMAKG -NWh0dHA6Ly93d3cuYS10cnVzdC5hdC9jZXJ0cy9UcnVzdFNpZ25UZXN0LVNpZy0w -MWMuY3J0MFEGA1UdIARKMEgwPAYGKigAEQEDMDIwMAYIKwYBBQUHAgEWJGh0dHA6 -Ly93d3cuYS10cnVzdC5hdC9kb2NzL1RydXN0VGVzdDAIBgYEAIswAQEwbgYDVR0f -BGcwZTBjoGGgX4ZdbGRhcDovL2xkYXAtdGVzdC5hLXRydXN0LmF0L291PVRydXN0 -U2lnblRlc3QtU2lnLTAxLG89QS1UcnVzdCxjPUFUP2NlcnRpZmljYXRlcmV2b2Nh -dGlvbmxpc3Q/MBEGA1UdDgQKBAhNa9QR1H4T3zAOBgNVHQ8BAf8EBAMCBsAwJQYD -VR0RBB4wHIEaZ3JlZ29yLmthcmxpbmdlckBjaW8uZ3YuYXQwCQYDVR0TBAIwADAN -BgkqhkiG9w0BAQUFAAOCAQEALi2DEl6whJsiQF+bsNVR8CQhXg6ZuzTGlPhyCBum -765Y5gMRLEfAx2D8Wv4XXPHasAxZ/NKZRwbfLWN7IxPeVHF+vCShlXmYGWVj75fE -EGStIKyULqZB7jOJdsFHNdvp8yQaexR9olO3neXjrFmcXFVhpZFJomBH6JEL0uRa -LsPlN97OTa1NKkdj92SX8IkcV2k9yQ3Nl2KgicZDlxdYtSDGh9P0KddJZZJTRAdm -ixWb4Y2cGkRDhXoHzvHcZQ7eqJYHPapm3NTZ428I7LCKma8859rMwRSNTN14yIVL -KkgBtxvmstGVa33Ki53LBkSSuBMH3Pa+4xbnYSkJA4phaA==</dsig:X509Certificate><QualifiedCertificate/></dsig:X509Data></SignerInfo><SignatureCheck><Code>0</Code></SignatureCheck><CertificateCheck><Code>1</Code></CertificateCheck></VerifyCMSSignatureResponse>
\ No newline at end of file diff --git a/moaSig/handbook/clients/webservice/resources/requests/VerifyCMSSignatureRequest.Extended.xml b/moaSig/handbook/clients/webservice/resources/requests/VerifyCMSSignatureRequest.Extended.xml deleted file mode 100644 index 16e961b..0000000 --- a/moaSig/handbook/clients/webservice/resources/requests/VerifyCMSSignatureRequest.Extended.xml +++ /dev/null @@ -1,44 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<VerifyCMSSignatureRequest xmlns="http://reference.e-government.gv.at/namespace/moa/20020822#" Signatories="1"> - <DateTime>2004-08-17T08:00:00+02:00</DateTime> - <CMSSignature>MIIHiwYJKoZIhvcNAQcCoIIHfDCCB3gCAQExCzAJBgUrDgMCGgUAMAsGCSqGSIb3DQEHAaCCBTIw -ggUuMIIEFqADAgECAgILTDANBgkqhkiG9w0BAQUFADCB2TELMAkGA1UEBhMCQVQxgYswgYgGA1UE -Ch6BgABBAC0AVAByAHUAcwB0ACAARwBlAHMALgAgAGYA/AByACAAUwBpAGMAaABlAHIAaABlAGkA -dABzAHMAeQBzAHQAZQBtAGUAIABpAG0AIABlAGwAZQBrAHQAcgAuACAARABhAHQAZQBuAHYAZQBy -AGsAZQBoAHIAIABHAG0AYgBIMR0wGwYDVQQLExRUcnVzdFNpZ25UZXN0LVNpZy0wMTEdMBsGA1UE -AxMUVHJ1c3RTaWduVGVzdC1TaWctMDEwHhcNMDMwODI3MTIwMTI0WhcNMDYwODI3MTIwMTI0WjBk -MQswCQYDVQQGEwJBVDEZMBcGA1UEAxMQR3JlZ29yIEthcmxpbmdlcjESMBAGA1UEBBMJS2FybGlu -Z2VyMQ8wDQYDVQQqEwZHcmVnb3IxFTATBgNVBAUTDDYxNTUzNjYxNTkyMDCBnzANBgkqhkiG9w0B -AQEFAAOBjQAwgYkCgYEAoNIrVdpgrRh1uTpXnyDtDNBiyTQDoLYnKGJnLfTvwMnUSTDMExV6NM2r -V73Cn4GZ5nZimJ+03JEV+78aDySw5RDagKf0D2lktQa+1qMDdovx/XzYZA4NGpCZ6W9hJQv+728A -KE6VxP5QSqPmNbjGN3hewKi1fgrP6h+QP5ICV/UCAwEAAaOCAfYwggHyMBMGA1UdIwQMMAqACEp+ -yOadZHTpMD4GCCsGAQUFBwEDAQH/BC8wLTAIBgYEAI5GAQEwFQYGBACORgECMAsTA0VVUgIBAAIB -ADAKBggrBgEFBQcLATCBggYIKwYBBQUHAQEEdjB0MC8GCCsGAQUFBzABhiNodHRwOi8vb2NzcC10 -ZXN0LmEtdHJ1c3QuYXQ6ODIvb2NzcDBBBggrBgEFBQcwAoY1aHR0cDovL3d3dy5hLXRydXN0LmF0 -L2NlcnRzL1RydXN0U2lnblRlc3QtU2lnLTAxYy5jcnQwUQYDVR0gBEowSDA8BgYqKAARAQMwMjAw -BggrBgEFBQcCARYkaHR0cDovL3d3dy5hLXRydXN0LmF0L2RvY3MvVHJ1c3RUZXN0MAgGBgQAizAB -ATBuBgNVHR8EZzBlMGOgYaBfhl1sZGFwOi8vbGRhcC10ZXN0LmEtdHJ1c3QuYXQvb3U9VHJ1c3RT -aWduVGVzdC1TaWctMDEsbz1BLVRydXN0LGM9QVQ/Y2VydGlmaWNhdGVyZXZvY2F0aW9ubGlzdD8w -EQYDVR0OBAoECE1r1BHUfhPfMA4GA1UdDwEB/wQEAwIGwDAlBgNVHREEHjAcgRpncmVnb3Iua2Fy -bGluZ2VyQGNpby5ndi5hdDAJBgNVHRMEAjAAMA0GCSqGSIb3DQEBBQUAA4IBAQAuLYMSXrCEmyJA -X5uw1VHwJCFeDpm7NMaU+HIIG6bvrljmAxEsR8DHYPxa/hdc8dqwDFn80plHBt8tY3sjE95UcX68 -JKGVeZgZZWPvl8QQZK0grJQupkHuM4l2wUc12+nzJBp7FH2iU7ed5eOsWZxcVWGlkUmiYEfokQvS -5Fouw+U33s5NrU0qR2P3ZJfwiRxXaT3JDc2XYqCJxkOXF1i1IMaH0/Qp10llklNEB2aLFZvhjZwa -REOFegfO8dxlDt6olgc9qmbc1NnjbwjssIqZrzzn2szBFI1M3XjIhUsqSAG3G+ay0ZVrfcqLncsG -RJK4Ewfc9r7jFudhKQkDimFoMYICITCCAh0CAQEwgeAwgdkxCzAJBgNVBAYTAkFUMYGLMIGIBgNV -BAoegYAAQQAtAFQAcgB1AHMAdAAgAEcAZQBzAC4AIABmAPwAcgAgAFMAaQBjAGgAZQByAGgAZQBp -AHQAcwBzAHkAcwB0AGUAbQBlACAAaQBtACAAZQBsAGUAawB0AHIALgAgAEQAYQB0AGUAbgB2AGUA -cgBrAGUAaAByACAARwBtAGIASDEdMBsGA1UECxMUVHJ1c3RTaWduVGVzdC1TaWctMDExHTAbBgNV -BAMTFFRydXN0U2lnblRlc3QtU2lnLTAxAgILTDAJBgUrDgMCGgUAoIGXMCMGCSqGSIb3DQEJBDEW -BBRrneM6wvspvKW2kHIArzsWgxmmEjAYBgkqhkiG9w0BCQMxCwYJKoZIhvcNAQcBMCkGCyqGSIb3 -DQEJEAIEMRowGAwLdGV4dC9wbGFpbhsGCSqGSIb3DQEHATArBgsqhkiG9w0BCRACEzEcMBowGDAW -BBQdhdZ+dQSz53K2vT9KOGCxp6+qIDANBgkqhkiG9w0BAQEFAASBgFTEY4mMXQx2fNk9zo64MRxI -mS38vuD7W7LjBoUQ/w6mPi60kiqA/Pnf5I7fvM2epuo4xHpft1diuTY0fa9VqSv+q13Lr1x+l3ON -oxX27oCPLcJq6sFipZj50Bx5BHhgTX+59cNIT3eTRLenBzrJ/ccNd5OLqgkfiwsvqSk48lou</CMSSignature> - <DataObject> - <Content> - <Base64Content>RGllc2UgRGF0ZW4gd2FyZW4gYmFzZTY0IGtvZGllcnQu</Base64Content> - </Content> - </DataObject> - <TrustProfileID>Test-Signaturdienste</TrustProfileID> -</VerifyCMSSignatureRequest> diff --git a/moaSig/handbook/clients/webservice/resources/requests/VerifyCMSSignatureRequest.Simple.resp.xml b/moaSig/handbook/clients/webservice/resources/requests/VerifyCMSSignatureRequest.Simple.resp.xml deleted file mode 100644 index daa22bd..0000000 --- a/moaSig/handbook/clients/webservice/resources/requests/VerifyCMSSignatureRequest.Simple.resp.xml +++ /dev/null @@ -1,29 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<VerifyCMSSignatureResponse xmlns="http://reference.e-government.gv.at/namespace/moa/20020822#" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"><SignerInfo><dsig:X509Data><dsig:X509SubjectName>serialNumber=615536615920,givenName=Gregor,SN=Karlinger,CN=Gregor Karlinger,C=AT</dsig:X509SubjectName><dsig:X509IssuerSerial><dsig:X509IssuerName>CN=TrustSignTest-Sig-01,OU=TrustSignTest-Sig-01,O=A-Trust Ges. für Sicherheitssysteme im elektr. Datenverkehr GmbH,C=AT</dsig:X509IssuerName><dsig:X509SerialNumber>2892</dsig:X509SerialNumber></dsig:X509IssuerSerial><dsig:X509Certificate>MIIFLjCCBBagAwIBAgICC0wwDQYJKoZIhvcNAQEFBQAwgdkxCzAJBgNVBAYTAkFU -MYGLMIGIBgNVBAoegYAAQQAtAFQAcgB1AHMAdAAgAEcAZQBzAC4AIABmAPwAcgAg -AFMAaQBjAGgAZQByAGgAZQBpAHQAcwBzAHkAcwB0AGUAbQBlACAAaQBtACAAZQBs -AGUAawB0AHIALgAgAEQAYQB0AGUAbgB2AGUAcgBrAGUAaAByACAARwBtAGIASDEd -MBsGA1UECxMUVHJ1c3RTaWduVGVzdC1TaWctMDExHTAbBgNVBAMTFFRydXN0U2ln -blRlc3QtU2lnLTAxMB4XDTAzMDgyNzEyMDEyNFoXDTA2MDgyNzEyMDEyNFowZDEL -MAkGA1UEBhMCQVQxGTAXBgNVBAMTEEdyZWdvciBLYXJsaW5nZXIxEjAQBgNVBAQT -CUthcmxpbmdlcjEPMA0GA1UEKhMGR3JlZ29yMRUwEwYDVQQFEww2MTU1MzY2MTU5 -MjAwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAKDSK1XaYK0Ydbk6V58g7QzQ -Ysk0A6C2JyhiZy3078DJ1EkwzBMVejTNq1e9wp+BmeZ2YpiftNyRFfu/Gg8ksOUQ -2oCn9A9pZLUGvtajA3aL8f182GQODRqQmelvYSUL/u9vAChOlcT+UEqj5jW4xjd4 -XsCotX4Kz+ofkD+SAlf1AgMBAAGjggH2MIIB8jATBgNVHSMEDDAKgAhKfsjmnWR0 -6TA+BggrBgEFBQcBAwEB/wQvMC0wCAYGBACORgEBMBUGBgQAjkYBAjALEwNFVVIC -AQACAQAwCgYIKwYBBQUHCwEwgYIGCCsGAQUFBwEBBHYwdDAvBggrBgEFBQcwAYYj -aHR0cDovL29jc3AtdGVzdC5hLXRydXN0LmF0OjgyL29jc3AwQQYIKwYBBQUHMAKG -NWh0dHA6Ly93d3cuYS10cnVzdC5hdC9jZXJ0cy9UcnVzdFNpZ25UZXN0LVNpZy0w -MWMuY3J0MFEGA1UdIARKMEgwPAYGKigAEQEDMDIwMAYIKwYBBQUHAgEWJGh0dHA6 -Ly93d3cuYS10cnVzdC5hdC9kb2NzL1RydXN0VGVzdDAIBgYEAIswAQEwbgYDVR0f -BGcwZTBjoGGgX4ZdbGRhcDovL2xkYXAtdGVzdC5hLXRydXN0LmF0L291PVRydXN0 -U2lnblRlc3QtU2lnLTAxLG89QS1UcnVzdCxjPUFUP2NlcnRpZmljYXRlcmV2b2Nh -dGlvbmxpc3Q/MBEGA1UdDgQKBAhNa9QR1H4T3zAOBgNVHQ8BAf8EBAMCBsAwJQYD -VR0RBB4wHIEaZ3JlZ29yLmthcmxpbmdlckBjaW8uZ3YuYXQwCQYDVR0TBAIwADAN -BgkqhkiG9w0BAQUFAAOCAQEALi2DEl6whJsiQF+bsNVR8CQhXg6ZuzTGlPhyCBum -765Y5gMRLEfAx2D8Wv4XXPHasAxZ/NKZRwbfLWN7IxPeVHF+vCShlXmYGWVj75fE -EGStIKyULqZB7jOJdsFHNdvp8yQaexR9olO3neXjrFmcXFVhpZFJomBH6JEL0uRa -LsPlN97OTa1NKkdj92SX8IkcV2k9yQ3Nl2KgicZDlxdYtSDGh9P0KddJZZJTRAdm -ixWb4Y2cGkRDhXoHzvHcZQ7eqJYHPapm3NTZ428I7LCKma8859rMwRSNTN14yIVL -KkgBtxvmstGVa33Ki53LBkSSuBMH3Pa+4xbnYSkJA4phaA==</dsig:X509Certificate><QualifiedCertificate/></dsig:X509Data></SignerInfo><SignatureCheck><Code>0</Code></SignatureCheck><CertificateCheck><Code>1</Code></CertificateCheck></VerifyCMSSignatureResponse>
\ No newline at end of file diff --git a/moaSig/handbook/clients/webservice/resources/requests/VerifyCMSSignatureRequest.Simple.xml b/moaSig/handbook/clients/webservice/resources/requests/VerifyCMSSignatureRequest.Simple.xml deleted file mode 100644 index d41b0e2..0000000 --- a/moaSig/handbook/clients/webservice/resources/requests/VerifyCMSSignatureRequest.Simple.xml +++ /dev/null @@ -1,39 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<VerifyCMSSignatureRequest xmlns="http://reference.e-government.gv.at/namespace/moa/20020822#"> - <CMSSignature>MIIHsAYJKoZIhvcNAQcCoIIHoTCCB50CAQExCzAJBgUrDgMCGgUAMDAGCSqGSIb3DQEHAaAjBCFE -aWVzZSBEYXRlbiB3YXJlbiBiYXNlNjQga29kaWVydC6gggUyMIIFLjCCBBagAwIBAgICC0wwDQYJ -KoZIhvcNAQEFBQAwgdkxCzAJBgNVBAYTAkFUMYGLMIGIBgNVBAoegYAAQQAtAFQAcgB1AHMAdAAg -AEcAZQBzAC4AIABmAPwAcgAgAFMAaQBjAGgAZQByAGgAZQBpAHQAcwBzAHkAcwB0AGUAbQBlACAA -aQBtACAAZQBsAGUAawB0AHIALgAgAEQAYQB0AGUAbgB2AGUAcgBrAGUAaAByACAARwBtAGIASDEd -MBsGA1UECxMUVHJ1c3RTaWduVGVzdC1TaWctMDExHTAbBgNVBAMTFFRydXN0U2lnblRlc3QtU2ln -LTAxMB4XDTAzMDgyNzEyMDEyNFoXDTA2MDgyNzEyMDEyNFowZDELMAkGA1UEBhMCQVQxGTAXBgNV -BAMTEEdyZWdvciBLYXJsaW5nZXIxEjAQBgNVBAQTCUthcmxpbmdlcjEPMA0GA1UEKhMGR3JlZ29y -MRUwEwYDVQQFEww2MTU1MzY2MTU5MjAwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAKDSK1Xa -YK0Ydbk6V58g7QzQYsk0A6C2JyhiZy3078DJ1EkwzBMVejTNq1e9wp+BmeZ2YpiftNyRFfu/Gg8k -sOUQ2oCn9A9pZLUGvtajA3aL8f182GQODRqQmelvYSUL/u9vAChOlcT+UEqj5jW4xjd4XsCotX4K -z+ofkD+SAlf1AgMBAAGjggH2MIIB8jATBgNVHSMEDDAKgAhKfsjmnWR06TA+BggrBgEFBQcBAwEB -/wQvMC0wCAYGBACORgEBMBUGBgQAjkYBAjALEwNFVVICAQACAQAwCgYIKwYBBQUHCwEwgYIGCCsG -AQUFBwEBBHYwdDAvBggrBgEFBQcwAYYjaHR0cDovL29jc3AtdGVzdC5hLXRydXN0LmF0OjgyL29j -c3AwQQYIKwYBBQUHMAKGNWh0dHA6Ly93d3cuYS10cnVzdC5hdC9jZXJ0cy9UcnVzdFNpZ25UZXN0 -LVNpZy0wMWMuY3J0MFEGA1UdIARKMEgwPAYGKigAEQEDMDIwMAYIKwYBBQUHAgEWJGh0dHA6Ly93 -d3cuYS10cnVzdC5hdC9kb2NzL1RydXN0VGVzdDAIBgYEAIswAQEwbgYDVR0fBGcwZTBjoGGgX4Zd -bGRhcDovL2xkYXAtdGVzdC5hLXRydXN0LmF0L291PVRydXN0U2lnblRlc3QtU2lnLTAxLG89QS1U -cnVzdCxjPUFUP2NlcnRpZmljYXRlcmV2b2NhdGlvbmxpc3Q/MBEGA1UdDgQKBAhNa9QR1H4T3zAO -BgNVHQ8BAf8EBAMCBsAwJQYDVR0RBB4wHIEaZ3JlZ29yLmthcmxpbmdlckBjaW8uZ3YuYXQwCQYD -VR0TBAIwADANBgkqhkiG9w0BAQUFAAOCAQEALi2DEl6whJsiQF+bsNVR8CQhXg6ZuzTGlPhyCBum -765Y5gMRLEfAx2D8Wv4XXPHasAxZ/NKZRwbfLWN7IxPeVHF+vCShlXmYGWVj75fEEGStIKyULqZB -7jOJdsFHNdvp8yQaexR9olO3neXjrFmcXFVhpZFJomBH6JEL0uRaLsPlN97OTa1NKkdj92SX8Ikc -V2k9yQ3Nl2KgicZDlxdYtSDGh9P0KddJZZJTRAdmixWb4Y2cGkRDhXoHzvHcZQ7eqJYHPapm3NTZ -428I7LCKma8859rMwRSNTN14yIVLKkgBtxvmstGVa33Ki53LBkSSuBMH3Pa+4xbnYSkJA4phaDGC -AiEwggIdAgEBMIHgMIHZMQswCQYDVQQGEwJBVDGBizCBiAYDVQQKHoGAAEEALQBUAHIAdQBzAHQA -IABHAGUAcwAuACAAZgD8AHIAIABTAGkAYwBoAGUAcgBoAGUAaQB0AHMAcwB5AHMAdABlAG0AZQAg -AGkAbQAgAGUAbABlAGsAdAByAC4AIABEAGEAdABlAG4AdgBlAHIAawBlAGgAcgAgAEcAbQBiAEgx -HTAbBgNVBAsTFFRydXN0U2lnblRlc3QtU2lnLTAxMR0wGwYDVQQDExRUcnVzdFNpZ25UZXN0LVNp -Zy0wMQICC0wwCQYFKw4DAhoFAKCBlzAjBgkqhkiG9w0BCQQxFgQUa53jOsL7KbyltpByAK87FoMZ -phIwGAYJKoZIhvcNAQkDMQsGCSqGSIb3DQEHATApBgsqhkiG9w0BCRACBDEaMBgMC3RleHQvcGxh -aW4bBgkqhkiG9w0BBwEwKwYLKoZIhvcNAQkQAhMxHDAaMBgwFgQUHYXWfnUEs+dytr0/Sjhgsaev -qiAwDQYJKoZIhvcNAQEBBQAEgYBUxGOJjF0MdnzZPc6OuDEcSJkt/L7g+1uy4waFEP8Opj4utJIq -gPz53+SO37zNnqbqOMR6X7dXYrk2NH2vVakr/qtdy69cfpdzjaMV9u6Ajy3CaurBYqWY+dAceQR4 -YE1/ufXDSE93k0S3pwc6yf3HDXeTi6oJH4sLL6kpOPJaLg==</CMSSignature> - <TrustProfileID>Test-Signaturdienste</TrustProfileID> -</VerifyCMSSignatureRequest> diff --git a/moaSig/handbook/clients/webservice/resources/requests/VerifyXMLSignatureRequest.Enveloped.resp.xml b/moaSig/handbook/clients/webservice/resources/requests/VerifyXMLSignatureRequest.Enveloped.resp.xml deleted file mode 100644 index f4db026..0000000 --- a/moaSig/handbook/clients/webservice/resources/requests/VerifyXMLSignatureRequest.Enveloped.resp.xml +++ /dev/null @@ -1,28 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<VerifyXMLSignatureResponse xmlns="http://reference.e-government.gv.at/namespace/moa/20020822#" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"><SignerInfo><dsig:X509Data><dsig:X509SubjectName>CN=Test: Signaturdienst aller Kunden: ECDSA (P192v1),OU=Technik und Standards,O=Stabsstelle IKT-Strategie des Bundes,C=AT</dsig:X509SubjectName><dsig:X509IssuerSerial><dsig:X509IssuerName>CN=Test CA - Signaturdienste,OU=Technik und Standards,O=Stabstelle IKT-Strategie des Bundes,C=AT</dsig:X509IssuerName><dsig:X509SerialNumber>9</dsig:X509SerialNumber></dsig:X509IssuerSerial><dsig:X509Certificate>MIID+DCCA2WgAwIBAgIBCTAJBgUrDgMCHQUAMH8xCzAJBgNVBAYTAkFUMSwwKgYD -VQQKEyNTdGFic3RlbGxlIElLVC1TdHJhdGVnaWUgZGVzIEJ1bmRlczEeMBwGA1UE -CxMVVGVjaG5payB1bmQgU3RhbmRhcmRzMSIwIAYDVQQDExlUZXN0IENBIC0gU2ln -bmF0dXJkaWVuc3RlMB4XDTA0MDgwNDA4MjM0OFoXDTA3MDgwNDA4MjM0OFowgZgx -CzAJBgNVBAYTAkFUMS0wKwYDVQQKEyRTdGFic3N0ZWxsZSBJS1QtU3RyYXRlZ2ll -IGRlcyBCdW5kZXMxHjAcBgNVBAsTFVRlY2huaWsgdW5kIFN0YW5kYXJkczE6MDgG -A1UEAxMxVGVzdDogU2lnbmF0dXJkaWVuc3QgYWxsZXIgS3VuZGVuOiBFQ0RTQSAo -UDE5MnYxKTCB8zCBvAYHKoZIzj0CATCBsAIBATAkBgcqhkjOPQEBAhkA//////// -/////////////v//////////MDQEGP////////////////////7//////////AQY -ZCEFGeWcgOcPp+mrciQwSf643uzBRrmxBDEEGI2oDrAwkPZ8vyDrQ6GIAPT/Cv2C -/xASBxkrlf/I2nhjEBHtayTN1XP5d6EeeUgRAhkA////////////////md74NhRr -ybG00igxAgEBAzIABNHWY9lQOE1zgmpcpjTg2WIg6qgEsGhpXELPinJoMPDVheTv -2BZPG42YJsNfvWgC06OCARwwggEYMA4GA1UdDwEB/wQEAwIGwDAMBgNVHRMBAf8E -AjAAMB0GA1UdDgQWBBRHH5EXnrWosCmIa+JyEM5seMxFVzBdBgNVHSAEVjBUMFIG -DCsGAQQBlRIBAgMBATBCMEAGCCsGAQUFBwICMDQaMkRpZXNlcyBaZXJ0aWZpa2F0 -IGlzdCBudXIgZvxyIFRlc3R6d2Vja2UgZ2VlaWduZXQuMEMGA1UdHwQ8MDowOKA2 -oDSGMmh0dHA6Ly9sYWJzLmNpby5ndi5hdC90ZW1wL2NybHMvc2lnbmF0dXJkaWVu -c3QuY3JsMBQGByooAAoBAQEECQwHQktBLUlLVDAfBgNVHSMEGDAWgBRAl0P5fWaw -vf59+uxGcYY9wffZPTAJBgUrDgMCHQUAA4GBAIMKUsnajgfBtpHeDdMdQMLA8fdt -lluezDOM78WYYSFURP04QZk5iHkShzptgZCF5Y/T4an3dC3SnytL67LJvEoKUyja -iTMLo7650xRTvAjTaMJ+nly/wTRYJKplOLXKWj3WwfObMHXdsDE8NJmpJSRE7Sw7 -+tj+UiTiNNSaXirq</dsig:X509Certificate><PublicAuthority><Code>BKA-IKT</Code></PublicAuthority></dsig:X509Data></SignerInfo><HashInputData PartOf="SignedInfo"><Base64Content>PGRvYzpYTUxEb2N1bWVudCB4bWxuczpkb2M9InVybjpkb2N1bWVudCI+CiAgPGRv -YzpQYXJhZ3JhcGg+SWNoIGJpbiBkZXIgZXJzdGUgQWJzYXR6IGluIGRpZXNlbSBE -b2t1bWVudC48L2RvYzpQYXJhZ3JhcGg+CiAgPGRvYzpQYXJhZ3JhcGggUGFyYUlk -PSJQYXJhMiI+VW5kIGljaCBiaW4gZGVyIHp3ZWl0ZSBBYnNhdHogaW4gZGllc2Vt -IERva3VtZW50LgpJY2ggaGFiZSB3ZWl0ZXJzIGVpbiBlaWdlbmVucyBJRC1BdHRy -aWJ1dCBiZWtvbW1lbi48L2RvYzpQYXJhZ3JhcGg+CjwvZG9jOlhNTERvY3VtZW50Pg==</Base64Content></HashInputData><SignatureCheck><Code>0</Code></SignatureCheck><CertificateCheck><Code>0</Code></CertificateCheck></VerifyXMLSignatureResponse>
\ No newline at end of file diff --git a/moaSig/handbook/clients/webservice/resources/requests/VerifyXMLSignatureRequest.Enveloped.xml b/moaSig/handbook/clients/webservice/resources/requests/VerifyXMLSignatureRequest.Enveloped.xml deleted file mode 100644 index d97e76f..0000000 --- a/moaSig/handbook/clients/webservice/resources/requests/VerifyXMLSignatureRequest.Enveloped.xml +++ /dev/null @@ -1,10 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<VerifyXMLSignatureRequest xmlns="http://reference.e-government.gv.at/namespace/moa/20020822#"> - <DateTime>2004-08-18T17:00:00+02:00</DateTime> - <VerifySignatureInfo> - <VerifySignatureEnvironment Reference="http://localhost:8080/referencedData/XMLDocument.signed.xml"/> - <VerifySignatureLocation xmlns:doc="urn:document" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#">/doc:XMLDocument/dsig:Signature</VerifySignatureLocation> - </VerifySignatureInfo> - <ReturnHashInputData/> - <TrustProfileID>Test-Signaturdienste</TrustProfileID> -</VerifyXMLSignatureRequest> diff --git a/moaSig/handbook/clients/webservice/resources/requests/VerifyXMLSignatureRequest.FileURIs.DataObject.xml b/moaSig/handbook/clients/webservice/resources/requests/VerifyXMLSignatureRequest.FileURIs.DataObject.xml deleted file mode 100644 index d9a9c0b..0000000 --- a/moaSig/handbook/clients/webservice/resources/requests/VerifyXMLSignatureRequest.FileURIs.DataObject.xml +++ /dev/null @@ -1,82 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?>
-<VerifyXMLSignatureRequest
- xmlns="http://reference.e-government.gv.at/namespace/moa/20020822#"
- xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://reference.e-government.gv.at/namespace/moa/20020822# file:D:/_java/moa-idspss/trunk/common/src/main/resources/resources/schemas/MOA-SPSS-2.0.0.xsd
- http://www.w3.org/2000/09/xmldsig# http://www.w3.org/TR/2002/REC-xmldsig-core-20020212/xmldsig-core-schema.xsd">
- <VerifySignatureInfo>
- <VerifySignatureEnvironment>
- <XMLContent>
- <dsig:Signature Id="signature-1-1"
- xmlns:dsig="http://www.w3.org/2000/09/xmldsig#">
- <dsig:SignedInfo>
- <dsig:CanonicalizationMethod
- Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" />
- <dsig:SignatureMethod
- Algorithm="http://www.w3.org/2001/04/xmldsig-more#ecdsa-sha1" />
- <dsig:Reference
- Type="http://www.w3.org/2000/09/xmldsig#Manifest"
- URI="#dsig-manifest-1-1">
- <dsig:DigestMethod
- Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
- <dsig:DigestValue>
- XRuYnuRTOAInpu8TzwDWn9Er4/Y=
- </dsig:DigestValue>
- </dsig:Reference>
- </dsig:SignedInfo>
- <dsig:SignatureValue>
- O3/U4zcVG6BOdc2C/m09xe+vxGhp6TKz7lEukgjINsc1o1Bvdelo77T8cEG/muYd
- </dsig:SignatureValue>
- <dsig:KeyInfo>
- <dsig:X509Data>
- <dsig:X509Certificate>
- MIIELjCCAxagAwIBAgIBEzANBgkqhkiG9w0BAQUFADBEMQswCQYDVQQGEwJBVDEQ
- MA4GA1UEChMHVFUgR3JhejENMAsGA1UECxMERUdJWjEUMBIGA1UEAxMLTU9BIFRl
- c3QgQ0EwHhcNMDcwODIzMTM1ODU0WhcNMTIwODIzMTM1ODU0WjBpMQswCQYDVQQG
- EwJBVDEQMA4GA1UEChMHVFUgR1JBWjENMAsGA1UECxMERUdJWjE5MDcGA1UEAxMw
- VGVzdCBTaWduYXR1cmRpZW5zdCBhbGxlciBLdW5kZW46IEVDRFNBIChQMTkydjEp
- MIHzMIG8BgcqhkjOPQIBMIGwAgEBMCQGByqGSM49AQECGQD/////////////////
- ///+//////////8wNAQY/////////////////////v/////////8BBhkIQUZ5ZyA
- 5w+n6atyJDBJ/rje7MFGubEEMQQYjagOsDCQ9ny/IOtDoYgA9P8K/YL/EBIHGSuV
- /8jaeGMQEe1rJM3Vc/l3oR55SBECGQD///////////////+Z3vg2FGvJsbTSKDEC
- AQEDMgAExf78b6N6BUhK+FHmunDUCQefSxpQmC6m4yq/+pqdDMJalTWATFhQwZqE
- qSMXJ2Tqo4IBNDCCATAwDgYDVR0PAQH/BAQDAgbAMAwGA1UdEwEB/wQCMAAwHQYD
- VR0OBBYEFBrwapQSMwabwPPOijtgOu3iNlt3MHAGA1UdIARpMGcwZQYMKwYBBAGV
- EgECewEBMFUwUwYIKwYBBQUHAgIwRxpFVGhpcyBjZXJ0aWZpY2F0ZSBvbmx5IG1h
- eSBiZSB1c2VkIGZvciBkZW1vbnN0cmF0aW9uIGFuZCB0ZXN0IHB1cnBvc2VzMEYG
- A1UdHwQ/MD0wO6A5oDeGNWh0dHA6Ly9tb2EtaWRzcHNzLmVnb3ZsYWJzLmd2LmF0
- L2NybHMvbW9hLXRlc3QtY2EuY3JsMBYGByooAAoBAQEECxMJRUdJWi1UZXN0MB8G
- A1UdIwQYMBaAFFKXvB3Ugd6H51ClcBGdjhYJNiRSMA0GCSqGSIb3DQEBBQUAA4IB
- AQB60RLi9zIwF/Rmy/Wo0yf1/ZktElIt91vfBsXlpgLJ4Q6ol/4hTjMJ4FIa8GOl
- 0b9dIkEe+WGq77JFJVgltsRoJfQBSvnK9jdLfB5YJD0ETDnMdckBV+RsxkEtl5Lr
- IrT6vExyJUAWz15XJiHgkYZncJCBTy1oh8f3V8cR1VZYwO4QBRDwRdVdZsaL5PME
- vvLrcAMJhF5fS4AiqMex2Eh2kav5t6/I5bmB4CKEe+0+dPO8DGl7areEfzQEPd8p
- jkkX5PnxriQvZfgVzwrdXGDqMTnBNaRtCGMiQU/0kp21a6BVtT4am27yr9p3ddhl
- z7sJ4Z6ys1bwB0on/O65tdn7
- </dsig:X509Certificate>
- </dsig:X509Data>
- </dsig:KeyInfo>
- <dsig:Object>
- <dsig:Manifest Id="dsig-manifest-1-1">
- <dsig:Reference Id="reference-1-1"
- URI="file:referencedData/Text.txt">
- <dsig:DigestMethod
- Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
- <dsig:DigestValue>
- TrE7WPVlNnBf1dh9PRiZdwpTaxs=
- </dsig:DigestValue>
- </dsig:Reference>
- </dsig:Manifest>
- </dsig:Object>
- </dsig:Signature>
- </XMLContent>
- </VerifySignatureEnvironment>
- <VerifySignatureLocation
- xmlns:dsig="http://www.w3.org/2000/09/xmldsig#">
- /dsig:Signature
- </VerifySignatureLocation>
- </VerifySignatureInfo>
- <TrustProfileID>Test-Signaturdienste</TrustProfileID>
-</VerifyXMLSignatureRequest>
-
diff --git a/moaSig/handbook/clients/webservice/resources/requests/VerifyXMLSignatureRequest.FileURIs.ServerSupplements.xml b/moaSig/handbook/clients/webservice/resources/requests/VerifyXMLSignatureRequest.FileURIs.ServerSupplements.xml deleted file mode 100644 index 1785de6..0000000 --- a/moaSig/handbook/clients/webservice/resources/requests/VerifyXMLSignatureRequest.FileURIs.ServerSupplements.xml +++ /dev/null @@ -1,66 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?>
-<VerifyXMLSignatureRequest
- xmlns="http://reference.e-government.gv.at/namespace/moa/20020822#"
- xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://reference.e-government.gv.at/namespace/moa/20020822# file:D:/_java/moa-idspss/trunk/common/src/main/resources/resources/schemas/MOA-SPSS-2.0.0.xsd
- http://www.w3.org/2000/09/xmldsig# http://www.w3.org/TR/2002/REC-xmldsig-core-20020212/xmldsig-core-schema.xsd">
- <VerifySignatureInfo>
- <VerifySignatureEnvironment>
- <XMLContent>
- <dsig:Signature xmlns:dsig="http://www.w3.org/2000/09/xmldsig#" Id="signature-1208432475-242867937-18096">
- <dsig:SignedInfo>
- <dsig:CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>
- <dsig:SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#ecdsa-sha1"/>
- <dsig:Reference Id="signed-data-reference-0-1208432475-242867937-22960" URI="urn:Document">
- <dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
- <dsig:DigestValue>te0YD8LFaK3JLQV8cL69DPnFRLc=</dsig:DigestValue>
- </dsig:Reference>
- <dsig:Reference Id="etsi-data-reference-0-1208432475-242867937-11431" Type="http://uri.etsi.org/01903/v1.1.1#SignedProperties" URI="#xmlns(etsi=http://uri.etsi.org/01903/v1.1.1%23)%20xpointer(id('etsi-data-object-0-1208432475-242867937-12332')/child::etsi:QualifyingProperties/child::etsi:SignedProperties)">
- <dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
- <dsig:DigestValue>2M9g7DopnXtz86dkz+7yk5SHSHo=</dsig:DigestValue>
- </dsig:Reference>
- </dsig:SignedInfo>
- <dsig:SignatureValue>Ti3ckR8eq4D0mUhb+ylUFhIYn7mfUHTc2AjTys4oaq4gFkXvQlQI41Iggp40c916</dsig:SignatureValue>
- <dsig:KeyInfo>
- <dsig:X509Data>
- <dsig:X509Certificate>MIIDlzCCAf+gAwIBAgIRMrFTcaHacn5T5kRFML4Ck6swDQYJKoZIhvcNAQEFBQAwTTESMBAGA1UEAwwJVlNpZyBDQSAyMSowKAYDVQQKDCFIYXVwdHZlcmJhbmQgw7ZzdGVyci4gU296aWFsdmVycy4xCzAJBgNVBAYTAkFUMB4XDTA2MDEyMDA1MTExMVoXDTExMDEyMDA1MTExMVowXzEVMBMGA1UEAwwMRGF2aWQgRmVyYmFzMSowKAYDVQQKDCFIYXVwdHZlcmJhbmQgw7ZzdGVyci4gU296aWFsdmVycy4xDTALBgNVBAsMBFZTaWcxCzAJBgNVBAYTAkFUMEkwEwYHKoZIzj0CAQYIKoZIzj0DAQEDMgAEc7ESyZ4IdIM9UDtze29i0IqfCbwWSODfCF8bTiXxdJZLWZOE0eqwL2ybWVTEmCXDo4G6MIG3MBMGA1UdIwQMMAqACEhpdVw8ryMqMBEGA1UdDgQKBAhP473ttlxOBjAOBgNVHQ8BAf8EBAMCBsAwFgYDVR0gBA8wDTALBgkqKAAKAQQBZgAwQwYIKwYBBQUHAQEENzA1MDMGCCsGAQUFBzABhidodHRwOi8vb2NzcC5lY2FyZC5zb3ppYWx2ZXJzaWNoZXJ1bmcuYXQwIAYDVR0RBBkwF4EVZGF2aWQuZmVyYmFzQGlub2RlLmF0MA0GCSqGSIb3DQEBBQUAA4IBgQAu74FsENLTC9kqN4UVEX+pJz4ckOjAI8NbzCEvHgDqfpXmjZKA+8354fE6hsCd8uCJWCJ36ig2cMcOjGJrW+4YExYFRpiq1U2u9N1eKEj7j1oQzNZw4lotDxMFHnzd5WBjXjWekgy3uWkFhqE+NvQtauNtRiR3kg2jMt4MmcjZpck3WoTibrV9sMOzyM8L4y3HdDix97aWTefqxJ28IF9Anuk/uNGu74KcuJjYuIZx7q1ULsuXEs/HJMxU2/9lcT6lRhsp5VE0Z0/zOWdenQYUBscdbNrEDg3gmGU9T7SuxNQfHRLQ1OGzjolJL7kvhsRiK/l7pBtGAt2oPO6OKbLgWhW/6DEYJqnUrScQCli34EVDFC8W9yOBq3BHHZCQOzGgYtxtpI2QzCHLMGEwaxdFAYQp9pVBnX7HGbPqhq2r5osDlcyJDLO9uYW+63CTCVIeJ9018OxvOxNNvb6JzunW/oQAVMj+vTiR4GE74A0qVbuYd0fvEvc47J1q6++QlKc=</dsig:X509Certificate>
- </dsig:X509Data>
- </dsig:KeyInfo>
- <dsig:Object Id="etsi-data-object-0-1208432475-242867937-12332">
- <etsi:QualifyingProperties xmlns:dsig="http://www.w3.org/2000/09/xmldsig#" xmlns:etsi="http://uri.etsi.org/01903/v1.1.1#" Target="#signature-1208432475-242867937-18096">
- <etsi:SignedProperties xmlns:dsig="http://www.w3.org/2000/09/xmldsig#" xmlns:etsi="http://uri.etsi.org/01903/v1.1.1#">
- <etsi:SignedSignatureProperties>
- <etsi:SigningTime>2008-04-17T11:41:15Z</etsi:SigningTime>
- <etsi:SigningCertificate>
- <etsi:Cert>
- <etsi:CertDigest>
- <etsi:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
- <etsi:DigestValue>RREWB1U7AWw/Xy+QkwfAiityVDs=</etsi:DigestValue>
- </etsi:CertDigest>
- <etsi:IssuerSerial>
- <dsig:X509IssuerName>C=AT,O=Hauptverband österr. Sozialvers.,CN=VSig CA 2</dsig:X509IssuerName>
- <dsig:X509SerialNumber>17249824966675737197051526866457224975275</dsig:X509SerialNumber>
- </etsi:IssuerSerial>
- </etsi:Cert>
- </etsi:SigningCertificate>
- <etsi:SignaturePolicyIdentifier>
- <etsi:SignaturePolicyImplied/>
- </etsi:SignaturePolicyIdentifier>
- </etsi:SignedSignatureProperties>
- <etsi:SignedDataObjectProperties>
- <etsi:DataObjectFormat ObjectReference="#signed-data-reference-0-1208432475-242867937-22960">
- <etsi:MimeType>text/plain</etsi:MimeType>
- </etsi:DataObjectFormat>
- </etsi:SignedDataObjectProperties>
- </etsi:SignedProperties>
- </etsi:QualifyingProperties>
- </dsig:Object>
- </dsig:Signature>
- </XMLContent>
- </VerifySignatureEnvironment>
- <VerifySignatureLocation xmlns:dsig="http://www.w3.org/2000/09/xmldsig#">/dsig:Signature</VerifySignatureLocation>
- </VerifySignatureInfo>
- <SupplementProfileID>testID</SupplementProfileID>
- <TrustProfileID>certifiedSignature+Test</TrustProfileID>
-</VerifyXMLSignatureRequest>
diff --git a/moaSig/handbook/clients/webservice/resources/requests/VerifyXMLSignatureRequest.FileURIs.Supplements.xml b/moaSig/handbook/clients/webservice/resources/requests/VerifyXMLSignatureRequest.FileURIs.Supplements.xml deleted file mode 100644 index 80abd26..0000000 --- a/moaSig/handbook/clients/webservice/resources/requests/VerifyXMLSignatureRequest.FileURIs.Supplements.xml +++ /dev/null @@ -1,70 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?>
-<VerifyXMLSignatureRequest
- xmlns="http://reference.e-government.gv.at/namespace/moa/20020822#"
- xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://reference.e-government.gv.at/namespace/moa/20020822# file:D:/_java/moa-idspss/trunk/common/src/main/resources/resources/schemas/MOA-SPSS-2.0.0.xsd
- http://www.w3.org/2000/09/xmldsig# http://www.w3.org/TR/2002/REC-xmldsig-core-20020212/xmldsig-core-schema.xsd">
- <VerifySignatureInfo>
- <VerifySignatureEnvironment>
- <XMLContent>
- <dsig:Signature xmlns:dsig="http://www.w3.org/2000/09/xmldsig#" Id="signature-1208432475-242867937-18096">
- <dsig:SignedInfo>
- <dsig:CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>
- <dsig:SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#ecdsa-sha1"/>
- <dsig:Reference Id="signed-data-reference-0-1208432475-242867937-22960" URI="urn:Document">
- <dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
- <dsig:DigestValue>te0YD8LFaK3JLQV8cL69DPnFRLc=</dsig:DigestValue>
- </dsig:Reference>
- <dsig:Reference Id="etsi-data-reference-0-1208432475-242867937-11431" Type="http://uri.etsi.org/01903/v1.1.1#SignedProperties" URI="#xmlns(etsi=http://uri.etsi.org/01903/v1.1.1%23)%20xpointer(id('etsi-data-object-0-1208432475-242867937-12332')/child::etsi:QualifyingProperties/child::etsi:SignedProperties)">
- <dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
- <dsig:DigestValue>2M9g7DopnXtz86dkz+7yk5SHSHo=</dsig:DigestValue>
- </dsig:Reference>
- </dsig:SignedInfo>
- <dsig:SignatureValue>Ti3ckR8eq4D0mUhb+ylUFhIYn7mfUHTc2AjTys4oaq4gFkXvQlQI41Iggp40c916</dsig:SignatureValue>
- <dsig:KeyInfo>
- <dsig:X509Data>
- <dsig:X509Certificate>MIIDlzCCAf+gAwIBAgIRMrFTcaHacn5T5kRFML4Ck6swDQYJKoZIhvcNAQEFBQAwTTESMBAGA1UEAwwJVlNpZyBDQSAyMSowKAYDVQQKDCFIYXVwdHZlcmJhbmQgw7ZzdGVyci4gU296aWFsdmVycy4xCzAJBgNVBAYTAkFUMB4XDTA2MDEyMDA1MTExMVoXDTExMDEyMDA1MTExMVowXzEVMBMGA1UEAwwMRGF2aWQgRmVyYmFzMSowKAYDVQQKDCFIYXVwdHZlcmJhbmQgw7ZzdGVyci4gU296aWFsdmVycy4xDTALBgNVBAsMBFZTaWcxCzAJBgNVBAYTAkFUMEkwEwYHKoZIzj0CAQYIKoZIzj0DAQEDMgAEc7ESyZ4IdIM9UDtze29i0IqfCbwWSODfCF8bTiXxdJZLWZOE0eqwL2ybWVTEmCXDo4G6MIG3MBMGA1UdIwQMMAqACEhpdVw8ryMqMBEGA1UdDgQKBAhP473ttlxOBjAOBgNVHQ8BAf8EBAMCBsAwFgYDVR0gBA8wDTALBgkqKAAKAQQBZgAwQwYIKwYBBQUHAQEENzA1MDMGCCsGAQUFBzABhidodHRwOi8vb2NzcC5lY2FyZC5zb3ppYWx2ZXJzaWNoZXJ1bmcuYXQwIAYDVR0RBBkwF4EVZGF2aWQuZmVyYmFzQGlub2RlLmF0MA0GCSqGSIb3DQEBBQUAA4IBgQAu74FsENLTC9kqN4UVEX+pJz4ckOjAI8NbzCEvHgDqfpXmjZKA+8354fE6hsCd8uCJWCJ36ig2cMcOjGJrW+4YExYFRpiq1U2u9N1eKEj7j1oQzNZw4lotDxMFHnzd5WBjXjWekgy3uWkFhqE+NvQtauNtRiR3kg2jMt4MmcjZpck3WoTibrV9sMOzyM8L4y3HdDix97aWTefqxJ28IF9Anuk/uNGu74KcuJjYuIZx7q1ULsuXEs/HJMxU2/9lcT6lRhsp5VE0Z0/zOWdenQYUBscdbNrEDg3gmGU9T7SuxNQfHRLQ1OGzjolJL7kvhsRiK/l7pBtGAt2oPO6OKbLgWhW/6DEYJqnUrScQCli34EVDFC8W9yOBq3BHHZCQOzGgYtxtpI2QzCHLMGEwaxdFAYQp9pVBnX7HGbPqhq2r5osDlcyJDLO9uYW+63CTCVIeJ9018OxvOxNNvb6JzunW/oQAVMj+vTiR4GE74A0qVbuYd0fvEvc47J1q6++QlKc=</dsig:X509Certificate>
- </dsig:X509Data>
- </dsig:KeyInfo>
- <dsig:Object Id="etsi-data-object-0-1208432475-242867937-12332">
- <etsi:QualifyingProperties xmlns:dsig="http://www.w3.org/2000/09/xmldsig#" xmlns:etsi="http://uri.etsi.org/01903/v1.1.1#" Target="#signature-1208432475-242867937-18096">
- <etsi:SignedProperties xmlns:dsig="http://www.w3.org/2000/09/xmldsig#" xmlns:etsi="http://uri.etsi.org/01903/v1.1.1#">
- <etsi:SignedSignatureProperties>
- <etsi:SigningTime>2008-04-17T11:41:15Z</etsi:SigningTime>
- <etsi:SigningCertificate>
- <etsi:Cert>
- <etsi:CertDigest>
- <etsi:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
- <etsi:DigestValue>RREWB1U7AWw/Xy+QkwfAiityVDs=</etsi:DigestValue>
- </etsi:CertDigest>
- <etsi:IssuerSerial>
- <dsig:X509IssuerName>C=AT,O=Hauptverband österr. Sozialvers.,CN=VSig CA 2</dsig:X509IssuerName>
- <dsig:X509SerialNumber>17249824966675737197051526866457224975275</dsig:X509SerialNumber>
- </etsi:IssuerSerial>
- </etsi:Cert>
- </etsi:SigningCertificate>
- <etsi:SignaturePolicyIdentifier>
- <etsi:SignaturePolicyImplied/>
- </etsi:SignaturePolicyIdentifier>
- </etsi:SignedSignatureProperties>
- <etsi:SignedDataObjectProperties>
- <etsi:DataObjectFormat ObjectReference="#signed-data-reference-0-1208432475-242867937-22960">
- <etsi:MimeType>text/plain</etsi:MimeType>
- </etsi:DataObjectFormat>
- </etsi:SignedDataObjectProperties>
- </etsi:SignedProperties>
- </etsi:QualifyingProperties>
- </dsig:Object>
- </dsig:Signature>
- </XMLContent>
- </VerifySignatureEnvironment>
- <VerifySignatureLocation xmlns:dsig="http://www.w3.org/2000/09/xmldsig#">/dsig:Signature</VerifySignatureLocation>
- </VerifySignatureInfo>
- <SupplementProfile>
- <Content Reference="urn:Document">
- <LocRefContent>file:D:/Programme/apache-tomcat-5.5.26/webapps/referencedData/enno-sp.pdf_bku_sign_out.pdf</LocRefContent>
- </Content>
- </SupplementProfile>
- <TrustProfileID>certifiedSignature+Test</TrustProfileID>
-</VerifyXMLSignatureRequest>
diff --git a/moaSig/handbook/clients/webservice/resources/requests/VerifyXMLSignatureRequest.FileURIs.xml b/moaSig/handbook/clients/webservice/resources/requests/VerifyXMLSignatureRequest.FileURIs.xml deleted file mode 100644 index fc67859..0000000 --- a/moaSig/handbook/clients/webservice/resources/requests/VerifyXMLSignatureRequest.FileURIs.xml +++ /dev/null @@ -1,58 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?>
-<VerifyXMLSignatureRequest
- xmlns="http://reference.e-government.gv.at/namespace/moa/20020822#">
- <VerifySignatureInfo>
- <VerifySignatureEnvironment>
- <XMLContent>
- <dsig:Signature Id="signature-1-1" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#">
- <dsig:SignedInfo>
- <dsig:CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" />
- <dsig:SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#ecdsa-sha1" />
- <dsig:Reference Id="reference-1-1" URI="file:../conf/server.xml">
- <dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
- <dsig:DigestValue>tLODyeiWFbAkQKwhrR23jtcgu4k=</dsig:DigestValue>
- </dsig:Reference>
- </dsig:SignedInfo>
- <dsig:SignatureValue>
- VEjXB6+geUL16oTPDVx5lcQliGl/oyVobug3BVxVwhu8CU7WK65moTcTuo/CL2hQ
- </dsig:SignatureValue>
- <dsig:KeyInfo>
- <dsig:X509Data>
- <dsig:X509Certificate>
- MIID+DCCA2WgAwIBAgIBCTAJBgUrDgMCHQUAMH8xCzAJBgNVBAYTAkFUMSwwKgYD
- VQQKEyNTdGFic3RlbGxlIElLVC1TdHJhdGVnaWUgZGVzIEJ1bmRlczEeMBwGA1UE
- CxMVVGVjaG5payB1bmQgU3RhbmRhcmRzMSIwIAYDVQQDExlUZXN0IENBIC0gU2ln
- bmF0dXJkaWVuc3RlMB4XDTA0MDgwNDA4MjM0OFoXDTA3MDgwNDA4MjM0OFowgZgx
- CzAJBgNVBAYTAkFUMS0wKwYDVQQKEyRTdGFic3N0ZWxsZSBJS1QtU3RyYXRlZ2ll
- IGRlcyBCdW5kZXMxHjAcBgNVBAsTFVRlY2huaWsgdW5kIFN0YW5kYXJkczE6MDgG
- A1UEAxMxVGVzdDogU2lnbmF0dXJkaWVuc3QgYWxsZXIgS3VuZGVuOiBFQ0RTQSAo
- UDE5MnYxKTCB8zCBvAYHKoZIzj0CATCBsAIBATAkBgcqhkjOPQEBAhkA////////
- /////////////v//////////MDQEGP////////////////////7//////////AQY
- ZCEFGeWcgOcPp+mrciQwSf643uzBRrmxBDEEGI2oDrAwkPZ8vyDrQ6GIAPT/Cv2C
- /xASBxkrlf/I2nhjEBHtayTN1XP5d6EeeUgRAhkA////////////////md74NhRr
- ybG00igxAgEBAzIABNHWY9lQOE1zgmpcpjTg2WIg6qgEsGhpXELPinJoMPDVheTv
- 2BZPG42YJsNfvWgC06OCARwwggEYMA4GA1UdDwEB/wQEAwIGwDAMBgNVHRMBAf8E
- AjAAMB0GA1UdDgQWBBRHH5EXnrWosCmIa+JyEM5seMxFVzBdBgNVHSAEVjBUMFIG
- DCsGAQQBlRIBAgMBATBCMEAGCCsGAQUFBwICMDQaMkRpZXNlcyBaZXJ0aWZpa2F0
- IGlzdCBudXIgZvxyIFRlc3R6d2Vja2UgZ2VlaWduZXQuMEMGA1UdHwQ8MDowOKA2
- oDSGMmh0dHA6Ly9sYWJzLmNpby5ndi5hdC90ZW1wL2NybHMvc2lnbmF0dXJkaWVu
- c3QuY3JsMBQGByooAAoBAQEECQwHQktBLUlLVDAfBgNVHSMEGDAWgBRAl0P5fWaw
- vf59+uxGcYY9wffZPTAJBgUrDgMCHQUAA4GBAIMKUsnajgfBtpHeDdMdQMLA8fdt
- lluezDOM78WYYSFURP04QZk5iHkShzptgZCF5Y/T4an3dC3SnytL67LJvEoKUyja
- iTMLo7650xRTvAjTaMJ+nly/wTRYJKplOLXKWj3WwfObMHXdsDE8NJmpJSRE7Sw7
- +tj+UiTiNNSaXirq
- </dsig:X509Certificate>
- </dsig:X509Data>
- </dsig:KeyInfo>
- </dsig:Signature>
- </XMLContent>
- </VerifySignatureEnvironment>
- <VerifySignatureLocation xmlns:dsig="http://www.w3.org/2000/09/xmldsig#">/dsig:Signature</VerifySignatureLocation>
- </VerifySignatureInfo>
- <SignatureManifestCheckParams ReturnReferenceInputData="true">
- <ReferenceInfo>
- <VerifyTransformsInfoProfile />
- </ReferenceInfo>
- </SignatureManifestCheckParams>
- <TrustProfileID>Test-Signaturdienste</TrustProfileID>
-</VerifyXMLSignatureRequest>
\ No newline at end of file diff --git a/moaSig/handbook/clients/webservice/resources/requests/VerifyXMLSignatureRequest.SigManifest.resp.xml b/moaSig/handbook/clients/webservice/resources/requests/VerifyXMLSignatureRequest.SigManifest.resp.xml deleted file mode 100644 index 3798b27..0000000 --- a/moaSig/handbook/clients/webservice/resources/requests/VerifyXMLSignatureRequest.SigManifest.resp.xml +++ /dev/null @@ -1,24 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<VerifyXMLSignatureResponse xmlns="http://reference.e-government.gv.at/namespace/moa/20020822#" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"><SignerInfo><dsig:X509Data><dsig:X509SubjectName>CN=Test: Signaturdienst aller Kunden: ECDSA (P192v1),OU=Technik und Standards,O=Stabsstelle IKT-Strategie des Bundes,C=AT</dsig:X509SubjectName><dsig:X509IssuerSerial><dsig:X509IssuerName>CN=Test CA - Signaturdienste,OU=Technik und Standards,O=Stabstelle IKT-Strategie des Bundes,C=AT</dsig:X509IssuerName><dsig:X509SerialNumber>9</dsig:X509SerialNumber></dsig:X509IssuerSerial><dsig:X509Certificate>MIID+DCCA2WgAwIBAgIBCTAJBgUrDgMCHQUAMH8xCzAJBgNVBAYTAkFUMSwwKgYD -VQQKEyNTdGFic3RlbGxlIElLVC1TdHJhdGVnaWUgZGVzIEJ1bmRlczEeMBwGA1UE -CxMVVGVjaG5payB1bmQgU3RhbmRhcmRzMSIwIAYDVQQDExlUZXN0IENBIC0gU2ln -bmF0dXJkaWVuc3RlMB4XDTA0MDgwNDA4MjM0OFoXDTA3MDgwNDA4MjM0OFowgZgx -CzAJBgNVBAYTAkFUMS0wKwYDVQQKEyRTdGFic3N0ZWxsZSBJS1QtU3RyYXRlZ2ll -IGRlcyBCdW5kZXMxHjAcBgNVBAsTFVRlY2huaWsgdW5kIFN0YW5kYXJkczE6MDgG -A1UEAxMxVGVzdDogU2lnbmF0dXJkaWVuc3QgYWxsZXIgS3VuZGVuOiBFQ0RTQSAo -UDE5MnYxKTCB8zCBvAYHKoZIzj0CATCBsAIBATAkBgcqhkjOPQEBAhkA//////// -/////////////v//////////MDQEGP////////////////////7//////////AQY -ZCEFGeWcgOcPp+mrciQwSf643uzBRrmxBDEEGI2oDrAwkPZ8vyDrQ6GIAPT/Cv2C -/xASBxkrlf/I2nhjEBHtayTN1XP5d6EeeUgRAhkA////////////////md74NhRr -ybG00igxAgEBAzIABNHWY9lQOE1zgmpcpjTg2WIg6qgEsGhpXELPinJoMPDVheTv -2BZPG42YJsNfvWgC06OCARwwggEYMA4GA1UdDwEB/wQEAwIGwDAMBgNVHRMBAf8E -AjAAMB0GA1UdDgQWBBRHH5EXnrWosCmIa+JyEM5seMxFVzBdBgNVHSAEVjBUMFIG -DCsGAQQBlRIBAgMBATBCMEAGCCsGAQUFBwICMDQaMkRpZXNlcyBaZXJ0aWZpa2F0 -IGlzdCBudXIgZvxyIFRlc3R6d2Vja2UgZ2VlaWduZXQuMEMGA1UdHwQ8MDowOKA2 -oDSGMmh0dHA6Ly9sYWJzLmNpby5ndi5hdC90ZW1wL2NybHMvc2lnbmF0dXJkaWVu -c3QuY3JsMBQGByooAAoBAQEECQwHQktBLUlLVDAfBgNVHSMEGDAWgBRAl0P5fWaw -vf59+uxGcYY9wffZPTAJBgUrDgMCHQUAA4GBAIMKUsnajgfBtpHeDdMdQMLA8fdt -lluezDOM78WYYSFURP04QZk5iHkShzptgZCF5Y/T4an3dC3SnytL67LJvEoKUyja -iTMLo7650xRTvAjTaMJ+nly/wTRYJKplOLXKWj3WwfObMHXdsDE8NJmpJSRE7Sw7 -+tj+UiTiNNSaXirq</dsig:X509Certificate><PublicAuthority><Code>BKA-IKT</Code></PublicAuthority></dsig:X509Data></SignerInfo><ReferenceInputData PartOf="SignedInfo"><XMLContent xml:space="preserve"><doc:Paragraph ParaId="Para2" xmlns:doc="urn:document" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">Und ich bin der zweite Absatz in diesem Dokument. -Ich habe weiters ein eigenens ID-Attribut bekommen.</doc:Paragraph></XMLContent></ReferenceInputData><ReferenceInputData PartOf="SignedInfo"><XMLContent xml:space="preserve"><dsig:Manifest Id="manifest-1-1" xmlns:doc="urn:document" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><dsig:Reference URI="http://localhost:8080/referencedData/XMLDocument.Para.xsl"><dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/><dsig:DigestValue>B9nRChTbct68n9h5+Cb2mfNkASI=</dsig:DigestValue></dsig:Reference></dsig:Manifest></XMLContent></ReferenceInputData><ReferenceInputData PartOf="SignedInfo"><XMLContent xml:space="preserve"><etsi:SignedProperties xmlns:doc="urn:document" xmlns:etsi="http://uri.etsi.org/01903/v1.1.1#" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><etsi:SignedSignatureProperties><etsi:SigningTime>2004-08-20T12:42:21</etsi:SigningTime><etsi:SigningCertificate><etsi:Cert><etsi:CertDigest><etsi:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/><etsi:DigestValue>FOWcAqaHew69LEIDiGuiWVnB0mc=</etsi:DigestValue></etsi:CertDigest><etsi:IssuerSerial><dsig:X509IssuerName>CN=Test CA - Signaturdienste,OU=Technik und Standards,O=Stabstelle IKT-Strategie des Bundes,C=AT</dsig:X509IssuerName><dsig:X509SerialNumber>9</dsig:X509SerialNumber></etsi:IssuerSerial></etsi:Cert></etsi:SigningCertificate><etsi:SignaturePolicyIdentifier><etsi:SignaturePolicyImplied/></etsi:SignaturePolicyIdentifier></etsi:SignedSignatureProperties><etsi:SignedDataObjectProperties><etsi:DataObjectFormat ObjectReference="#reference-1-1"><etsi:MimeType>application/xhtml+xml</etsi:MimeType></etsi:DataObjectFormat></etsi:SignedDataObjectProperties></etsi:SignedProperties></XMLContent></ReferenceInputData><SignatureCheck><Code>0</Code></SignatureCheck><SignatureManifestCheck><Code>0</Code></SignatureManifestCheck><CertificateCheck><Code>0</Code></CertificateCheck></VerifyXMLSignatureResponse>
\ No newline at end of file diff --git a/moaSig/handbook/clients/webservice/resources/requests/VerifyXMLSignatureRequest.SigManifest.xml b/moaSig/handbook/clients/webservice/resources/requests/VerifyXMLSignatureRequest.SigManifest.xml deleted file mode 100644 index 657beca..0000000 --- a/moaSig/handbook/clients/webservice/resources/requests/VerifyXMLSignatureRequest.SigManifest.xml +++ /dev/null @@ -1,50 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<VerifyXMLSignatureRequest xmlns="http://reference.e-government.gv.at/namespace/moa/20020822#" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"> - <VerifySignatureInfo> - <VerifySignatureEnvironment> - <XMLContent><doc:XMLDocument xmlns:doc="urn:document" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:document http://localhost:8080/referencedData/XMLDocument.xsd"> - <doc:Paragraph>Ich bin der erste Absatz in diesem Dokument.</doc:Paragraph> - <doc:Paragraph ParaId="Para2">Und ich bin der zweite Absatz in diesem Dokument. -Ich habe weiters ein eigenens ID-Attribut bekommen.</doc:Paragraph><dsig:Signature Id="signature-1-1" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"><dsig:SignedInfo><dsig:CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/><dsig:SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#ecdsa-sha1"/><dsig:Reference Id="reference-1-1" URI="#Para2"><dsig:Transforms><dsig:Transform Algorithm="http://www.w3.org/TR/1999/REC-xslt-19991116"><xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> - <xsl:include href="http://localhost:8080/referencedData/XMLDocument.Para.xsl"/> -</xsl:stylesheet></dsig:Transform><dsig:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/></dsig:Transforms><dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/><dsig:DigestValue>luM3wUmedTvkMHVedQkA/8otXUE=</dsig:DigestValue></dsig:Reference><dsig:Reference Type="http://www.buergerkarte.at/specifications/Security-Layer/20020225#SignatureManifest" URI="#manifest-1-1"><dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/><dsig:DigestValue>1aSV+vFkwG6NZCk5ZUzZV3J4eSo=</dsig:DigestValue></dsig:Reference><dsig:Reference Type="http://uri.etsi.org/01903/v1.1.1#SignedProperties" URI="#xmlns(etsi=http://uri.etsi.org/01903/v1.1.1%23)%20xpointer(id('etsi-signed-1-1')/child::etsi:QualifyingProperties/child::etsi:SignedProperties)"><dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/><dsig:DigestValue>Dy1xXsV2LgSFJlGwYiunav1KC7A=</dsig:DigestValue></dsig:Reference></dsig:SignedInfo><dsig:SignatureValue>f1v/vi1S7xiL+7ofWOUqBfoqOy42EnlXYFoTYcaUZaBiAecDvyX9StPRWTUls/j2</dsig:SignatureValue><dsig:KeyInfo><dsig:X509Data><dsig:X509Certificate>MIID+DCCA2WgAwIBAgIBCTAJBgUrDgMCHQUAMH8xCzAJBgNVBAYTAkFUMSwwKgYD -VQQKEyNTdGFic3RlbGxlIElLVC1TdHJhdGVnaWUgZGVzIEJ1bmRlczEeMBwGA1UE -CxMVVGVjaG5payB1bmQgU3RhbmRhcmRzMSIwIAYDVQQDExlUZXN0IENBIC0gU2ln -bmF0dXJkaWVuc3RlMB4XDTA0MDgwNDA4MjM0OFoXDTA3MDgwNDA4MjM0OFowgZgx -CzAJBgNVBAYTAkFUMS0wKwYDVQQKEyRTdGFic3N0ZWxsZSBJS1QtU3RyYXRlZ2ll -IGRlcyBCdW5kZXMxHjAcBgNVBAsTFVRlY2huaWsgdW5kIFN0YW5kYXJkczE6MDgG -A1UEAxMxVGVzdDogU2lnbmF0dXJkaWVuc3QgYWxsZXIgS3VuZGVuOiBFQ0RTQSAo -UDE5MnYxKTCB8zCBvAYHKoZIzj0CATCBsAIBATAkBgcqhkjOPQEBAhkA//////// -/////////////v//////////MDQEGP////////////////////7//////////AQY -ZCEFGeWcgOcPp+mrciQwSf643uzBRrmxBDEEGI2oDrAwkPZ8vyDrQ6GIAPT/Cv2C -/xASBxkrlf/I2nhjEBHtayTN1XP5d6EeeUgRAhkA////////////////md74NhRr -ybG00igxAgEBAzIABNHWY9lQOE1zgmpcpjTg2WIg6qgEsGhpXELPinJoMPDVheTv -2BZPG42YJsNfvWgC06OCARwwggEYMA4GA1UdDwEB/wQEAwIGwDAMBgNVHRMBAf8E -AjAAMB0GA1UdDgQWBBRHH5EXnrWosCmIa+JyEM5seMxFVzBdBgNVHSAEVjBUMFIG -DCsGAQQBlRIBAgMBATBCMEAGCCsGAQUFBwICMDQaMkRpZXNlcyBaZXJ0aWZpa2F0 -IGlzdCBudXIgZvxyIFRlc3R6d2Vja2UgZ2VlaWduZXQuMEMGA1UdHwQ8MDowOKA2 -oDSGMmh0dHA6Ly9sYWJzLmNpby5ndi5hdC90ZW1wL2NybHMvc2lnbmF0dXJkaWVu -c3QuY3JsMBQGByooAAoBAQEECQwHQktBLUlLVDAfBgNVHSMEGDAWgBRAl0P5fWaw -vf59+uxGcYY9wffZPTAJBgUrDgMCHQUAA4GBAIMKUsnajgfBtpHeDdMdQMLA8fdt -lluezDOM78WYYSFURP04QZk5iHkShzptgZCF5Y/T4an3dC3SnytL67LJvEoKUyja -iTMLo7650xRTvAjTaMJ+nly/wTRYJKplOLXKWj3WwfObMHXdsDE8NJmpJSRE7Sw7 -+tj+UiTiNNSaXirq</dsig:X509Certificate></dsig:X509Data></dsig:KeyInfo><dsig:Object><dsig:Manifest Id="manifest-1-1"><dsig:Reference URI="http://localhost:8080/referencedData/XMLDocument.Para.xsl"><dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/><dsig:DigestValue>B9nRChTbct68n9h5+Cb2mfNkASI=</dsig:DigestValue></dsig:Reference></dsig:Manifest></dsig:Object><dsig:Object Id="etsi-signed-1-1"><etsi:QualifyingProperties Target="#signature-1-1" xmlns:etsi="http://uri.etsi.org/01903/v1.1.1#"><etsi:SignedProperties><etsi:SignedSignatureProperties><etsi:SigningTime>2005-03-29T09:55:29</etsi:SigningTime><etsi:SigningCertificate><etsi:Cert><etsi:CertDigest><etsi:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/><etsi:DigestValue>FOWcAqaHew69LEIDiGuiWVnB0mc=</etsi:DigestValue></etsi:CertDigest><etsi:IssuerSerial><dsig:X509IssuerName>CN=Test CA - Signaturdienste,OU=Technik und Standards,O=Stabstelle IKT-Strategie des Bundes,C=AT</dsig:X509IssuerName><dsig:X509SerialNumber>9</dsig:X509SerialNumber></etsi:IssuerSerial></etsi:Cert></etsi:SigningCertificate><etsi:SignaturePolicyIdentifier><etsi:SignaturePolicyImplied/></etsi:SignaturePolicyIdentifier></etsi:SignedSignatureProperties><etsi:SignedDataObjectProperties><etsi:DataObjectFormat ObjectReference="#reference-1-1"><etsi:MimeType>application/xhtml+xml</etsi:MimeType></etsi:DataObjectFormat></etsi:SignedDataObjectProperties></etsi:SignedProperties></etsi:QualifyingProperties></dsig:Object></dsig:Signature> -</doc:XMLDocument></XMLContent> - </VerifySignatureEnvironment> - <VerifySignatureLocation xmlns:doc="urn:document">/doc:XMLDocument/dsig:Signature</VerifySignatureLocation> - </VerifySignatureInfo> - <SignatureManifestCheckParams ReturnReferenceInputData="true"> - <ReferenceInfo> - <VerifyTransformsInfoProfile> - <dsig:Transforms><dsig:Transform Algorithm="http://www.w3.org/TR/1999/REC-xslt-19991116"><xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> - <xsl:include href="http://localhost:8080/referencedData/XMLDocument.Para.xsl"/> -</xsl:stylesheet></dsig:Transform><dsig:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/></dsig:Transforms> - <TransformParameter URI="http://localhost:8080/referencedData/XMLDocument.Para.xsl"/> - </VerifyTransformsInfoProfile> - <VerifyTransformsInfoProfile> - <dsig:Transforms><dsig:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/></dsig:Transforms> - </VerifyTransformsInfoProfile> - </ReferenceInfo> - </SignatureManifestCheckParams> - <TrustProfileID>Test-Signaturdienste</TrustProfileID> -</VerifyXMLSignatureRequest> diff --git a/moaSig/handbook/clients/webservice/resources/requests/VerifyXMLSignatureRequest.Simple.resp.xml b/moaSig/handbook/clients/webservice/resources/requests/VerifyXMLSignatureRequest.Simple.resp.xml deleted file mode 100644 index 2fab33b..0000000 --- a/moaSig/handbook/clients/webservice/resources/requests/VerifyXMLSignatureRequest.Simple.resp.xml +++ /dev/null @@ -1,23 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<VerifyXMLSignatureResponse xmlns="http://reference.e-government.gv.at/namespace/moa/20020822#" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"><SignerInfo><dsig:X509Data><dsig:X509SubjectName>CN=Test: Signaturdienst aller Kunden: ECDSA (P192v1),OU=Technik und Standards,O=Stabsstelle IKT-Strategie des Bundes,C=AT</dsig:X509SubjectName><dsig:X509IssuerSerial><dsig:X509IssuerName>CN=Test CA - Signaturdienste,OU=Technik und Standards,O=Stabstelle IKT-Strategie des Bundes,C=AT</dsig:X509IssuerName><dsig:X509SerialNumber>9</dsig:X509SerialNumber></dsig:X509IssuerSerial><dsig:X509Certificate>MIID+DCCA2WgAwIBAgIBCTAJBgUrDgMCHQUAMH8xCzAJBgNVBAYTAkFUMSwwKgYD -VQQKEyNTdGFic3RlbGxlIElLVC1TdHJhdGVnaWUgZGVzIEJ1bmRlczEeMBwGA1UE -CxMVVGVjaG5payB1bmQgU3RhbmRhcmRzMSIwIAYDVQQDExlUZXN0IENBIC0gU2ln -bmF0dXJkaWVuc3RlMB4XDTA0MDgwNDA4MjM0OFoXDTA3MDgwNDA4MjM0OFowgZgx -CzAJBgNVBAYTAkFUMS0wKwYDVQQKEyRTdGFic3N0ZWxsZSBJS1QtU3RyYXRlZ2ll -IGRlcyBCdW5kZXMxHjAcBgNVBAsTFVRlY2huaWsgdW5kIFN0YW5kYXJkczE6MDgG -A1UEAxMxVGVzdDogU2lnbmF0dXJkaWVuc3QgYWxsZXIgS3VuZGVuOiBFQ0RTQSAo -UDE5MnYxKTCB8zCBvAYHKoZIzj0CATCBsAIBATAkBgcqhkjOPQEBAhkA//////// -/////////////v//////////MDQEGP////////////////////7//////////AQY -ZCEFGeWcgOcPp+mrciQwSf643uzBRrmxBDEEGI2oDrAwkPZ8vyDrQ6GIAPT/Cv2C -/xASBxkrlf/I2nhjEBHtayTN1XP5d6EeeUgRAhkA////////////////md74NhRr -ybG00igxAgEBAzIABNHWY9lQOE1zgmpcpjTg2WIg6qgEsGhpXELPinJoMPDVheTv -2BZPG42YJsNfvWgC06OCARwwggEYMA4GA1UdDwEB/wQEAwIGwDAMBgNVHRMBAf8E -AjAAMB0GA1UdDgQWBBRHH5EXnrWosCmIa+JyEM5seMxFVzBdBgNVHSAEVjBUMFIG -DCsGAQQBlRIBAgMBATBCMEAGCCsGAQUFBwICMDQaMkRpZXNlcyBaZXJ0aWZpa2F0 -IGlzdCBudXIgZvxyIFRlc3R6d2Vja2UgZ2VlaWduZXQuMEMGA1UdHwQ8MDowOKA2 -oDSGMmh0dHA6Ly9sYWJzLmNpby5ndi5hdC90ZW1wL2NybHMvc2lnbmF0dXJkaWVu -c3QuY3JsMBQGByooAAoBAQEECQwHQktBLUlLVDAfBgNVHSMEGDAWgBRAl0P5fWaw -vf59+uxGcYY9wffZPTAJBgUrDgMCHQUAA4GBAIMKUsnajgfBtpHeDdMdQMLA8fdt -lluezDOM78WYYSFURP04QZk5iHkShzptgZCF5Y/T4an3dC3SnytL67LJvEoKUyja -iTMLo7650xRTvAjTaMJ+nly/wTRYJKplOLXKWj3WwfObMHXdsDE8NJmpJSRE7Sw7 -+tj+UiTiNNSaXirq</dsig:X509Certificate><PublicAuthority><Code>BKA-IKT</Code></PublicAuthority></dsig:X509Data></SignerInfo><SignatureCheck><Code>0</Code></SignatureCheck><CertificateCheck><Code>0</Code></CertificateCheck></VerifyXMLSignatureResponse>
\ No newline at end of file diff --git a/moaSig/handbook/clients/webservice/resources/requests/VerifyXMLSignatureRequest.Simple.xml b/moaSig/handbook/clients/webservice/resources/requests/VerifyXMLSignatureRequest.Simple.xml deleted file mode 100644 index 5565601..0000000 --- a/moaSig/handbook/clients/webservice/resources/requests/VerifyXMLSignatureRequest.Simple.xml +++ /dev/null @@ -1,30 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<VerifyXMLSignatureRequest xmlns="http://reference.e-government.gv.at/namespace/moa/20020822#"> - <VerifySignatureInfo> - <VerifySignatureEnvironment> - <XMLContent><dsig:Signature Id="signature-1-1" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"><dsig:SignedInfo><dsig:CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/><dsig:SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#ecdsa-sha1"/><dsig:Reference Id="reference-1-1" URI="#xpointer(id('signed-data-1-1-1')/node())"><dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/><dsig:DigestValue>tLODyeiWFbAkQKwhrR23jtcgu4k=</dsig:DigestValue></dsig:Reference></dsig:SignedInfo><dsig:SignatureValue>VEjXB6+geUL16oTPDVx5lcQliGl/oyVobug3BVxVwhu8CU7WK65moTcTuo/CL2hQ</dsig:SignatureValue><dsig:KeyInfo><dsig:X509Data><dsig:X509Certificate>MIID+DCCA2WgAwIBAgIBCTAJBgUrDgMCHQUAMH8xCzAJBgNVBAYTAkFUMSwwKgYD -VQQKEyNTdGFic3RlbGxlIElLVC1TdHJhdGVnaWUgZGVzIEJ1bmRlczEeMBwGA1UE -CxMVVGVjaG5payB1bmQgU3RhbmRhcmRzMSIwIAYDVQQDExlUZXN0IENBIC0gU2ln -bmF0dXJkaWVuc3RlMB4XDTA0MDgwNDA4MjM0OFoXDTA3MDgwNDA4MjM0OFowgZgx -CzAJBgNVBAYTAkFUMS0wKwYDVQQKEyRTdGFic3N0ZWxsZSBJS1QtU3RyYXRlZ2ll -IGRlcyBCdW5kZXMxHjAcBgNVBAsTFVRlY2huaWsgdW5kIFN0YW5kYXJkczE6MDgG -A1UEAxMxVGVzdDogU2lnbmF0dXJkaWVuc3QgYWxsZXIgS3VuZGVuOiBFQ0RTQSAo -UDE5MnYxKTCB8zCBvAYHKoZIzj0CATCBsAIBATAkBgcqhkjOPQEBAhkA//////// -/////////////v//////////MDQEGP////////////////////7//////////AQY -ZCEFGeWcgOcPp+mrciQwSf643uzBRrmxBDEEGI2oDrAwkPZ8vyDrQ6GIAPT/Cv2C -/xASBxkrlf/I2nhjEBHtayTN1XP5d6EeeUgRAhkA////////////////md74NhRr -ybG00igxAgEBAzIABNHWY9lQOE1zgmpcpjTg2WIg6qgEsGhpXELPinJoMPDVheTv -2BZPG42YJsNfvWgC06OCARwwggEYMA4GA1UdDwEB/wQEAwIGwDAMBgNVHRMBAf8E -AjAAMB0GA1UdDgQWBBRHH5EXnrWosCmIa+JyEM5seMxFVzBdBgNVHSAEVjBUMFIG -DCsGAQQBlRIBAgMBATBCMEAGCCsGAQUFBwICMDQaMkRpZXNlcyBaZXJ0aWZpa2F0 -IGlzdCBudXIgZvxyIFRlc3R6d2Vja2UgZ2VlaWduZXQuMEMGA1UdHwQ8MDowOKA2 -oDSGMmh0dHA6Ly9sYWJzLmNpby5ndi5hdC90ZW1wL2NybHMvc2lnbmF0dXJkaWVu -c3QuY3JsMBQGByooAAoBAQEECQwHQktBLUlLVDAfBgNVHSMEGDAWgBRAl0P5fWaw -vf59+uxGcYY9wffZPTAJBgUrDgMCHQUAA4GBAIMKUsnajgfBtpHeDdMdQMLA8fdt -lluezDOM78WYYSFURP04QZk5iHkShzptgZCF5Y/T4an3dC3SnytL67LJvEoKUyja -iTMLo7650xRTvAjTaMJ+nly/wTRYJKplOLXKWj3WwfObMHXdsDE8NJmpJSRE7Sw7 -+tj+UiTiNNSaXirq</dsig:X509Certificate></dsig:X509Data></dsig:KeyInfo><dsig:Object Id="signed-data-1-1-1">Diese Daten werden signiert.</dsig:Object></dsig:Signature></XMLContent></VerifySignatureEnvironment> - <VerifySignatureLocation xmlns:dsig="http://www.w3.org/2000/09/xmldsig#">/dsig:Signature</VerifySignatureLocation> - </VerifySignatureInfo> - <TrustProfileID>Test-Signaturdienste</TrustProfileID> -</VerifyXMLSignatureRequest> diff --git a/moaSig/handbook/clients/webservice/resources/requests/VerifyXMLSignatureRequest.Supplements.resp.xml b/moaSig/handbook/clients/webservice/resources/requests/VerifyXMLSignatureRequest.Supplements.resp.xml deleted file mode 100644 index 2fab33b..0000000 --- a/moaSig/handbook/clients/webservice/resources/requests/VerifyXMLSignatureRequest.Supplements.resp.xml +++ /dev/null @@ -1,23 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<VerifyXMLSignatureResponse xmlns="http://reference.e-government.gv.at/namespace/moa/20020822#" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"><SignerInfo><dsig:X509Data><dsig:X509SubjectName>CN=Test: Signaturdienst aller Kunden: ECDSA (P192v1),OU=Technik und Standards,O=Stabsstelle IKT-Strategie des Bundes,C=AT</dsig:X509SubjectName><dsig:X509IssuerSerial><dsig:X509IssuerName>CN=Test CA - Signaturdienste,OU=Technik und Standards,O=Stabstelle IKT-Strategie des Bundes,C=AT</dsig:X509IssuerName><dsig:X509SerialNumber>9</dsig:X509SerialNumber></dsig:X509IssuerSerial><dsig:X509Certificate>MIID+DCCA2WgAwIBAgIBCTAJBgUrDgMCHQUAMH8xCzAJBgNVBAYTAkFUMSwwKgYD -VQQKEyNTdGFic3RlbGxlIElLVC1TdHJhdGVnaWUgZGVzIEJ1bmRlczEeMBwGA1UE -CxMVVGVjaG5payB1bmQgU3RhbmRhcmRzMSIwIAYDVQQDExlUZXN0IENBIC0gU2ln -bmF0dXJkaWVuc3RlMB4XDTA0MDgwNDA4MjM0OFoXDTA3MDgwNDA4MjM0OFowgZgx -CzAJBgNVBAYTAkFUMS0wKwYDVQQKEyRTdGFic3N0ZWxsZSBJS1QtU3RyYXRlZ2ll -IGRlcyBCdW5kZXMxHjAcBgNVBAsTFVRlY2huaWsgdW5kIFN0YW5kYXJkczE6MDgG -A1UEAxMxVGVzdDogU2lnbmF0dXJkaWVuc3QgYWxsZXIgS3VuZGVuOiBFQ0RTQSAo -UDE5MnYxKTCB8zCBvAYHKoZIzj0CATCBsAIBATAkBgcqhkjOPQEBAhkA//////// -/////////////v//////////MDQEGP////////////////////7//////////AQY -ZCEFGeWcgOcPp+mrciQwSf643uzBRrmxBDEEGI2oDrAwkPZ8vyDrQ6GIAPT/Cv2C -/xASBxkrlf/I2nhjEBHtayTN1XP5d6EeeUgRAhkA////////////////md74NhRr -ybG00igxAgEBAzIABNHWY9lQOE1zgmpcpjTg2WIg6qgEsGhpXELPinJoMPDVheTv -2BZPG42YJsNfvWgC06OCARwwggEYMA4GA1UdDwEB/wQEAwIGwDAMBgNVHRMBAf8E -AjAAMB0GA1UdDgQWBBRHH5EXnrWosCmIa+JyEM5seMxFVzBdBgNVHSAEVjBUMFIG -DCsGAQQBlRIBAgMBATBCMEAGCCsGAQUFBwICMDQaMkRpZXNlcyBaZXJ0aWZpa2F0 -IGlzdCBudXIgZvxyIFRlc3R6d2Vja2UgZ2VlaWduZXQuMEMGA1UdHwQ8MDowOKA2 -oDSGMmh0dHA6Ly9sYWJzLmNpby5ndi5hdC90ZW1wL2NybHMvc2lnbmF0dXJkaWVu -c3QuY3JsMBQGByooAAoBAQEECQwHQktBLUlLVDAfBgNVHSMEGDAWgBRAl0P5fWaw -vf59+uxGcYY9wffZPTAJBgUrDgMCHQUAA4GBAIMKUsnajgfBtpHeDdMdQMLA8fdt -lluezDOM78WYYSFURP04QZk5iHkShzptgZCF5Y/T4an3dC3SnytL67LJvEoKUyja -iTMLo7650xRTvAjTaMJ+nly/wTRYJKplOLXKWj3WwfObMHXdsDE8NJmpJSRE7Sw7 -+tj+UiTiNNSaXirq</dsig:X509Certificate><PublicAuthority><Code>BKA-IKT</Code></PublicAuthority></dsig:X509Data></SignerInfo><SignatureCheck><Code>0</Code></SignatureCheck><CertificateCheck><Code>0</Code></CertificateCheck></VerifyXMLSignatureResponse>
\ No newline at end of file diff --git a/moaSig/handbook/clients/webservice/resources/requests/VerifyXMLSignatureRequest.Supplements.xml b/moaSig/handbook/clients/webservice/resources/requests/VerifyXMLSignatureRequest.Supplements.xml deleted file mode 100644 index 50ddbc1..0000000 --- a/moaSig/handbook/clients/webservice/resources/requests/VerifyXMLSignatureRequest.Supplements.xml +++ /dev/null @@ -1,62 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<VerifyXMLSignatureRequest xmlns="http://reference.e-government.gv.at/namespace/moa/20020822#"> - <VerifySignatureInfo> - <VerifySignatureEnvironment> - <XMLContent><doc:XMLDocument xmlns="http://reference.e-government.gv.at/namespace/moa/20020822#" xmlns:doc="urn:document" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:document urn:XMLDocument.xsd"> - <doc:Paragraph>Ich bin der erste Absatz in diesem Dokument.</doc:Paragraph> - <doc:Paragraph ParaId="Para2">Und ich bin der zweite Absatz in diesem Dokument. -Ich habe weiters ein eigenens ID-Attribut bekommen.</doc:Paragraph><dsig:Signature Id="signature-1-1" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"><dsig:SignedInfo><dsig:CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/><dsig:SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#ecdsa-sha1"/><dsig:Reference Id="reference-1-1" URI="#Para2"><dsig:Transforms><dsig:Transform Algorithm="http://www.w3.org/TR/1999/REC-xslt-19991116"><xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> - <xsl:include href="XMLDocument.Para.xsl"/> -</xsl:stylesheet></dsig:Transform><dsig:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/></dsig:Transforms><dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/><dsig:DigestValue>luM3wUmedTvkMHVedQkA/8otXUE=</dsig:DigestValue></dsig:Reference></dsig:SignedInfo><dsig:SignatureValue>vGVimRmUHwrDR8feQCK1DZ2kyDw0CCrXimJi/yCrIoqSkUKFlKrtAyP2RUBXXjye</dsig:SignatureValue><dsig:KeyInfo><dsig:X509Data><dsig:X509Certificate>MIID+DCCA2WgAwIBAgIBCTAJBgUrDgMCHQUAMH8xCzAJBgNVBAYTAkFUMSwwKgYD -VQQKEyNTdGFic3RlbGxlIElLVC1TdHJhdGVnaWUgZGVzIEJ1bmRlczEeMBwGA1UE -CxMVVGVjaG5payB1bmQgU3RhbmRhcmRzMSIwIAYDVQQDExlUZXN0IENBIC0gU2ln -bmF0dXJkaWVuc3RlMB4XDTA0MDgwNDA4MjM0OFoXDTA3MDgwNDA4MjM0OFowgZgx -CzAJBgNVBAYTAkFUMS0wKwYDVQQKEyRTdGFic3N0ZWxsZSBJS1QtU3RyYXRlZ2ll -IGRlcyBCdW5kZXMxHjAcBgNVBAsTFVRlY2huaWsgdW5kIFN0YW5kYXJkczE6MDgG -A1UEAxMxVGVzdDogU2lnbmF0dXJkaWVuc3QgYWxsZXIgS3VuZGVuOiBFQ0RTQSAo -UDE5MnYxKTCB8zCBvAYHKoZIzj0CATCBsAIBATAkBgcqhkjOPQEBAhkA//////// -/////////////v//////////MDQEGP////////////////////7//////////AQY -ZCEFGeWcgOcPp+mrciQwSf643uzBRrmxBDEEGI2oDrAwkPZ8vyDrQ6GIAPT/Cv2C -/xASBxkrlf/I2nhjEBHtayTN1XP5d6EeeUgRAhkA////////////////md74NhRr -ybG00igxAgEBAzIABNHWY9lQOE1zgmpcpjTg2WIg6qgEsGhpXELPinJoMPDVheTv -2BZPG42YJsNfvWgC06OCARwwggEYMA4GA1UdDwEB/wQEAwIGwDAMBgNVHRMBAf8E -AjAAMB0GA1UdDgQWBBRHH5EXnrWosCmIa+JyEM5seMxFVzBdBgNVHSAEVjBUMFIG -DCsGAQQBlRIBAgMBATBCMEAGCCsGAQUFBwICMDQaMkRpZXNlcyBaZXJ0aWZpa2F0 -IGlzdCBudXIgZvxyIFRlc3R6d2Vja2UgZ2VlaWduZXQuMEMGA1UdHwQ8MDowOKA2 -oDSGMmh0dHA6Ly9sYWJzLmNpby5ndi5hdC90ZW1wL2NybHMvc2lnbmF0dXJkaWVu -c3QuY3JsMBQGByooAAoBAQEECQwHQktBLUlLVDAfBgNVHSMEGDAWgBRAl0P5fWaw -vf59+uxGcYY9wffZPTAJBgUrDgMCHQUAA4GBAIMKUsnajgfBtpHeDdMdQMLA8fdt -lluezDOM78WYYSFURP04QZk5iHkShzptgZCF5Y/T4an3dC3SnytL67LJvEoKUyja -iTMLo7650xRTvAjTaMJ+nly/wTRYJKplOLXKWj3WwfObMHXdsDE8NJmpJSRE7Sw7 -+tj+UiTiNNSaXirq</dsig:X509Certificate></dsig:X509Data></dsig:KeyInfo></dsig:Signature> -</doc:XMLDocument></XMLContent> - </VerifySignatureEnvironment> - <VerifySignatureLocation xmlns:doc="urn:document" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#">/doc:XMLDocument/dsig:Signature</VerifySignatureLocation> - </VerifySignatureInfo> - <SupplementProfile> - <Content Reference="XMLDocument.Para.xsl"> - <LocRefContent>http://localhost:8080/referencedData/XMLDocument.Para.xsl</LocRefContent> - </Content> - </SupplementProfile> - <SupplementProfile> - <Content Reference="urn:XMLDocument.xsd"> - <XMLContent><xs:schema targetNamespace="urn:document" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="urn:document" elementFormDefault="qualified" attributeFormDefault="unqualified"> - <xs:element name="XMLDocument"> - <xs:complexType> - <xs:sequence> - <xs:element name="Paragraph" maxOccurs="unbounded"> - <xs:complexType mixed="true"> - <xs:attribute name="ParaId" type="xs:ID" use="optional"/> - </xs:complexType> - </xs:element> - <xs:any namespace="##other" minOccurs="0" maxOccurs="unbounded"/> - </xs:sequence> - </xs:complexType> - </xs:element> -</xs:schema> - -</XMLContent> - </Content> - </SupplementProfile> - <TrustProfileID>Test-Signaturdienste</TrustProfileID> -</VerifyXMLSignatureRequest> diff --git a/moaSig/handbook/clients/webservice/resources/requests/VerifyXMLSignatureRequest.TSL.resp.xml b/moaSig/handbook/clients/webservice/resources/requests/VerifyXMLSignatureRequest.TSL.resp.xml deleted file mode 100644 index 8691c45..0000000 --- a/moaSig/handbook/clients/webservice/resources/requests/VerifyXMLSignatureRequest.TSL.resp.xml +++ /dev/null @@ -1,50 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<VerifyXMLSignatureResponse xmlns="http://reference.e-government.gv.at/namespace/moa/20020822#" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"> - <SignerInfo> - <dsig:X509Data> - <dsig:X509SubjectName>T=DI,serialNumber=847206943023,givenName=Klaus,SN=Stranacher,CN=Klaus Stranacher,C=AT</dsig:X509SubjectName> - <dsig:X509IssuerSerial> - <dsig:X509IssuerName>CN=a-sign-premium-mobile-03,OU=a-sign-premium-mobile-03,O=A-Trust Ges. f. Sicherheitssysteme im elektr. Datenverkehr GmbH,C=AT</dsig:X509IssuerName> - <dsig:X509SerialNumber>685117</dsig:X509SerialNumber> - </dsig:X509IssuerSerial> - <dsig:X509Certificate>MIIEtTCCA52gAwIBAgIDCnQ9MA0GCSqGSIb3DQEBBQUAMIGdMQswCQYDVQQGEwJB -VDFIMEYGA1UECgw/QS1UcnVzdCBHZXMuIGYuIFNpY2hlcmhlaXRzc3lzdGVtZSBp -bSBlbGVrdHIuIERhdGVudmVya2VociBHbWJIMSEwHwYDVQQLDBhhLXNpZ24tcHJl -bWl1bS1tb2JpbGUtMDMxITAfBgNVBAMMGGEtc2lnbi1wcmVtaXVtLW1vYmlsZS0w -MzAeFw0xMjAxMTkxMDUwNDRaFw0xNzAxMTkxMDUwNDRaMHExCzAJBgNVBAYTAkFU -MRkwFwYDVQQDDBBLbGF1cyBTdHJhbmFjaGVyMRMwEQYDVQQEDApTdHJhbmFjaGVy -MQ4wDAYDVQQqDAVLbGF1czEVMBMGA1UEBRMMODQ3MjA2OTQzMDIzMQswCQYDVQQM -DAJESTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABCl9cWMwe9LaXbcwuLCMRXS6 -KYhou9Fzvo7ScXpwcRn1sbTSjUIIhLUTrqfqO/pnwoKd87PmNcGUFoCXvsb4lUqj -ggHyMIIB7jARBgNVHQ4ECgQITPnzawkXeUUwDgYDVR0PAQH/BAQDAgbAMBMGA1Ud -IwQMMAqACEu4Yddf1khjMAkGA1UdEwQCMAAwfgYIKwYBBQUHAQEEcjBwMEUGCCsG -AQUFBzAChjlodHRwOi8vd3d3LmEtdHJ1c3QuYXQvY2VydHMvYS1zaWduLXByZW1p -dW0tbW9iaWxlLTAzYS5jcnQwJwYIKwYBBQUHMAGGG2h0dHA6Ly9vY3NwLmEtdHJ1 -c3QuYXQvb2NzcDBgBgNVHSAEWTBXMEsGBiooABEBFDBBMD8GCCsGAQUFBwIBFjNo -dHRwOi8vd3d3LmEtdHJ1c3QuYXQvZG9jcy9jcC9hLXNpZ24tcHJlbWl1bS1tb2Jp -bGUwCAYGBACLMAEBMCcGCCsGAQUFBwEDAQH/BBgwFjAIBgYEAI5GAQEwCgYIKwYB -BQUHCwEwgZ0GA1UdHwSBlTCBkjCBj6CBjKCBiYaBhmxkYXA6Ly9sZGFwLmEtdHJ1 -c3QuYXQvb3U9YS1zaWduLXByZW1pdW0tbW9iaWxlLTAzLG89QS1UcnVzdCxjPUFU -P2NlcnRpZmljYXRlcmV2b2NhdGlvbmxpc3Q/YmFzZT9vYmplY3RjbGFzcz1laWRD -ZXJ0aWZpY2F0aW9uQXV0aG9yaXR5MA0GCSqGSIb3DQEBBQUAA4IBAQBWEeyDzBQA -5O5CY7z6K9EwbXxxuuaEEb1GVIyTZ4DcfodjkEEdGqWicsPdUUJDZ7ETyaKucgVt -WaOHaObkCua9tM5TP3YtaEyDRteqU7N6LMDcMrXle8WOTUcIhSFy5UU8SnFtbZyQ -v+eeAW48PVq5pzBzizGNtMKCv9XC7df5ARhDEU7tYaVrKIobTdeq8D7zXnZ2Wdt9 -6VG6QBe8eH49bAxabnOk/rF6TMO2NX4h/tlQLBzOdOeEolUHOHkA3L01REL2m/6k -lPNsA8mX++cD3yKuoCWxtl27peTscRyGKEo2EBLtt7mfaTFBbkdKo1WUkZ+dVesa -XtKckFCEtW3r</dsig:X509Certificate> - <QualifiedCertificate/> - <SecureSignatureCreationDevice Source="Certificate"/> - <IssuerCountryCode>AT</IssuerCountryCode> - </dsig:X509Data> - </SignerInfo> - <SignatureCheck> - <Code>0</Code> - </SignatureCheck> - <SignatureManifestCheck> - <Code>0</Code> - </SignatureManifestCheck> - <CertificateCheck> - <Code>0</Code> - </CertificateCheck> - </VerifyXMLSignatureResponse> diff --git a/moaSig/handbook/clients/webservice/resources/requests/VerifyXMLSignatureRequest.TSL.xml b/moaSig/handbook/clients/webservice/resources/requests/VerifyXMLSignatureRequest.TSL.xml deleted file mode 100644 index efdc2a7..0000000 --- a/moaSig/handbook/clients/webservice/resources/requests/VerifyXMLSignatureRequest.TSL.xml +++ /dev/null @@ -1,6 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<moa:VerifyXMLSignatureRequest xmlns:dsig="http://www.w3.org/2000/09/xmldsig#" xmlns:moa="http://reference.e-government.gv.at/namespace/moa/20020822#"><moa:VerifySignatureInfo><moa:VerifySignatureEnvironment><moa:XMLContent> -<dsig:Signature Id="signature-1-1" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"><dsig:SignedInfo><dsig:CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/><dsig:SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#ecdsa-sha256"/><dsig:Reference Id="reference-1-1" URI="#signed-data-1-1"><dsig:Transforms><dsig:Transform Algorithm="http://www.w3.org/2002/06/xmldsig-filter2"><xpf:XPath Filter="intersect" xmlns:xpf="http://www.w3.org/2002/06/xmldsig-filter2">id('signed-data-1-1')/node()</xpf:XPath></dsig:Transform></dsig:Transforms><dsig:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/><dsig:DigestValue>ck5CfKRJ6J4x7YusP2LmJXRBo3sFoSgTCXlujYNSFvI=</dsig:DigestValue></dsig:Reference><dsig:Reference Id="etsi-data-reference-1-1" Type="http://uri.etsi.org/01903/v1.1.1#SignedProperties" URI=""><dsig:Transforms><dsig:Transform Algorithm="http://www.w3.org/2002/06/xmldsig-filter2"><xpf:XPath Filter="intersect" xmlns:etsi="http://uri.etsi.org/01903/v1.1.1#" xmlns:xpf="http://www.w3.org/2002/06/xmldsig-filter2">//*[@Id='etsi-signed-1-1']/etsi:QualifyingProperties/etsi:SignedProperties</xpf:XPath></dsig:Transform></dsig:Transforms><dsig:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/><dsig:DigestValue>twh9pMjAoknEfJ97w9PA8pEnVFrKb/14Mmdl6AhweE8=</dsig:DigestValue></dsig:Reference></dsig:SignedInfo><dsig:SignatureValue>N5mPWLfwxBrJIVQEAktiZqStkManxG7P8GBE8rw5DCEB2k7OctmvlPLLy+JtQy11OVNU0ISQeJn3BprTxgU/tw==</dsig:SignatureValue><dsig:KeyInfo><dsig:X509Data><dsig:X509Certificate>MIIEtTCCA52gAwIBAgIDCnQ9MA0GCSqGSIb3DQEBBQUAMIGdMQswCQYDVQQGEwJBVDFIMEYGA1UECgw/QS1UcnVzdCBHZXMuIGYuIFNpY2hlcmhlaXRzc3lzdGVtZSBpbSBlbGVrdHIuIERhdGVudmVya2VociBHbWJIMSEwHwYDVQQLDBhhLXNpZ24tcHJlbWl1bS1tb2JpbGUtMDMxITAfBgNVBAMMGGEtc2lnbi1wcmVtaXVtLW1vYmlsZS0wMzAeFw0xMjAxMTkxMDUwNDRaFw0xNzAxMTkxMDUwNDRaMHExCzAJBgNVBAYTAkFUMRkwFwYDVQQDDBBLbGF1cyBTdHJhbmFjaGVyMRMwEQYDVQQEDApTdHJhbmFjaGVyMQ4wDAYDVQQqDAVLbGF1czEVMBMGA1UEBRMMODQ3MjA2OTQzMDIzMQswCQYDVQQMDAJESTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABCl9cWMwe9LaXbcwuLCMRXS6KYhou9Fzvo7ScXpwcRn1sbTSjUIIhLUTrqfqO/pnwoKd87PmNcGUFoCXvsb4lUqjggHyMIIB7jARBgNVHQ4ECgQITPnzawkXeUUwDgYDVR0PAQH/BAQDAgbAMBMGA1UdIwQMMAqACEu4Yddf1khjMAkGA1UdEwQCMAAwfgYIKwYBBQUHAQEEcjBwMEUGCCsGAQUFBzAChjlodHRwOi8vd3d3LmEtdHJ1c3QuYXQvY2VydHMvYS1zaWduLXByZW1pdW0tbW9iaWxlLTAzYS5jcnQwJwYIKwYBBQUHMAGGG2h0dHA6Ly9vY3NwLmEtdHJ1c3QuYXQvb2NzcDBgBgNVHSAEWTBXMEsGBiooABEBFDBBMD8GCCsGAQUFBwIBFjNodHRwOi8vd3d3LmEtdHJ1c3QuYXQvZG9jcy9jcC9hLXNpZ24tcHJlbWl1bS1tb2JpbGUwCAYGBACLMAEBMCcGCCsGAQUFBwEDAQH/BBgwFjAIBgYEAI5GAQEwCgYIKwYBBQUHCwEwgZ0GA1UdHwSBlTCBkjCBj6CBjKCBiYaBhmxkYXA6Ly9sZGFwLmEtdHJ1c3QuYXQvb3U9YS1zaWduLXByZW1pdW0tbW9iaWxlLTAzLG89QS1UcnVzdCxjPUFUP2NlcnRpZmljYXRlcmV2b2NhdGlvbmxpc3Q/YmFzZT9vYmplY3RjbGFzcz1laWRDZXJ0aWZpY2F0aW9uQXV0aG9yaXR5MA0GCSqGSIb3DQEBBQUAA4IBAQBWEeyDzBQA5O5CY7z6K9EwbXxxuuaEEb1GVIyTZ4DcfodjkEEdGqWicsPdUUJDZ7ETyaKucgVtWaOHaObkCua9tM5TP3YtaEyDRteqU7N6LMDcMrXle8WOTUcIhSFy5UU8SnFtbZyQv+eeAW48PVq5pzBzizGNtMKCv9XC7df5ARhDEU7tYaVrKIobTdeq8D7zXnZ2Wdt96VG6QBe8eH49bAxabnOk/rF6TMO2NX4h/tlQLBzOdOeEolUHOHkA3L01REL2m/6klPNsA8mX++cD3yKuoCWxtl27peTscRyGKEo2EBLtt7mfaTFBbkdKo1WUkZ+dVesaXtKckFCEtW3r</dsig:X509Certificate></dsig:X509Data></dsig:KeyInfo><dsig:Object Id="etsi-signed-1-1"><etsi:QualifyingProperties Target="#signature-1-1" xmlns:etsi="http://uri.etsi.org/01903/v1.1.1#"><etsi:SignedProperties><etsi:SignedSignatureProperties><etsi:SigningTime>2014-03-17T12:08:58Z</etsi:SigningTime><etsi:SigningCertificate><etsi:Cert><etsi:CertDigest><etsi:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/><etsi:DigestValue>rUAiWR/xWih+N/Aa7AUvetg2FFU=</etsi:DigestValue></etsi:CertDigest><etsi:IssuerSerial><dsig:X509IssuerName>CN=a-sign-premium-mobile-03,OU=a-sign-premium-mobile-03,O=A-Trust Ges. f. Sicherheitssysteme im elektr. Datenverkehr GmbH,C=AT</dsig:X509IssuerName><dsig:X509SerialNumber>685117</dsig:X509SerialNumber></etsi:IssuerSerial></etsi:Cert></etsi:SigningCertificate><etsi:SignaturePolicyIdentifier><etsi:SignaturePolicyImplied/></etsi:SignaturePolicyIdentifier></etsi:SignedSignatureProperties><etsi:SignedDataObjectProperties><etsi:DataObjectFormat ObjectReference="#reference-1-1"><etsi:MimeType>text/plain</etsi:MimeType></etsi:DataObjectFormat></etsi:SignedDataObjectProperties></etsi:SignedProperties></etsi:QualifyingProperties></dsig:Object><dsig:Object Id="signed-data-1-1">Ich bin ein einfacher Text.</dsig:Object></dsig:Signature> -</moa:XMLContent></moa:VerifySignatureEnvironment><moa:VerifySignatureLocation xmlns:dsig="http://www.w3.org/2000/09/xmldsig#">//dsig:Signature</moa:VerifySignatureLocation></moa:VerifySignatureInfo> -<moa:TrustProfileID>Test-TSLProfil</moa:TrustProfileID> -</moa:VerifyXMLSignatureRequest>
\ No newline at end of file diff --git a/moaSig/handbook/clients/webservice/resources/requests/VerifyXMLSignatureRequest.XMLDSigManifest.resp.xml b/moaSig/handbook/clients/webservice/resources/requests/VerifyXMLSignatureRequest.XMLDSigManifest.resp.xml deleted file mode 100644 index 9d3b6de..0000000 --- a/moaSig/handbook/clients/webservice/resources/requests/VerifyXMLSignatureRequest.XMLDSigManifest.resp.xml +++ /dev/null @@ -1,23 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<VerifyXMLSignatureResponse xmlns="http://reference.e-government.gv.at/namespace/moa/20020822#" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"><SignerInfo><dsig:X509Data><dsig:X509SubjectName>CN=Test: Signaturdienst aller Kunden: ECDSA (P192v1),OU=Technik und Standards,O=Stabsstelle IKT-Strategie des Bundes,C=AT</dsig:X509SubjectName><dsig:X509IssuerSerial><dsig:X509IssuerName>CN=Test CA - Signaturdienste,OU=Technik und Standards,O=Stabstelle IKT-Strategie des Bundes,C=AT</dsig:X509IssuerName><dsig:X509SerialNumber>9</dsig:X509SerialNumber></dsig:X509IssuerSerial><dsig:X509Certificate>MIID+DCCA2WgAwIBAgIBCTAJBgUrDgMCHQUAMH8xCzAJBgNVBAYTAkFUMSwwKgYD -VQQKEyNTdGFic3RlbGxlIElLVC1TdHJhdGVnaWUgZGVzIEJ1bmRlczEeMBwGA1UE -CxMVVGVjaG5payB1bmQgU3RhbmRhcmRzMSIwIAYDVQQDExlUZXN0IENBIC0gU2ln -bmF0dXJkaWVuc3RlMB4XDTA0MDgwNDA4MjM0OFoXDTA3MDgwNDA4MjM0OFowgZgx -CzAJBgNVBAYTAkFUMS0wKwYDVQQKEyRTdGFic3N0ZWxsZSBJS1QtU3RyYXRlZ2ll -IGRlcyBCdW5kZXMxHjAcBgNVBAsTFVRlY2huaWsgdW5kIFN0YW5kYXJkczE6MDgG -A1UEAxMxVGVzdDogU2lnbmF0dXJkaWVuc3QgYWxsZXIgS3VuZGVuOiBFQ0RTQSAo -UDE5MnYxKTCB8zCBvAYHKoZIzj0CATCBsAIBATAkBgcqhkjOPQEBAhkA//////// -/////////////v//////////MDQEGP////////////////////7//////////AQY -ZCEFGeWcgOcPp+mrciQwSf643uzBRrmxBDEEGI2oDrAwkPZ8vyDrQ6GIAPT/Cv2C -/xASBxkrlf/I2nhjEBHtayTN1XP5d6EeeUgRAhkA////////////////md74NhRr -ybG00igxAgEBAzIABNHWY9lQOE1zgmpcpjTg2WIg6qgEsGhpXELPinJoMPDVheTv -2BZPG42YJsNfvWgC06OCARwwggEYMA4GA1UdDwEB/wQEAwIGwDAMBgNVHRMBAf8E -AjAAMB0GA1UdDgQWBBRHH5EXnrWosCmIa+JyEM5seMxFVzBdBgNVHSAEVjBUMFIG -DCsGAQQBlRIBAgMBATBCMEAGCCsGAQUFBwICMDQaMkRpZXNlcyBaZXJ0aWZpa2F0 -IGlzdCBudXIgZvxyIFRlc3R6d2Vja2UgZ2VlaWduZXQuMEMGA1UdHwQ8MDowOKA2 -oDSGMmh0dHA6Ly9sYWJzLmNpby5ndi5hdC90ZW1wL2NybHMvc2lnbmF0dXJkaWVu -c3QuY3JsMBQGByooAAoBAQEECQwHQktBLUlLVDAfBgNVHSMEGDAWgBRAl0P5fWaw -vf59+uxGcYY9wffZPTAJBgUrDgMCHQUAA4GBAIMKUsnajgfBtpHeDdMdQMLA8fdt -lluezDOM78WYYSFURP04QZk5iHkShzptgZCF5Y/T4an3dC3SnytL67LJvEoKUyja -iTMLo7650xRTvAjTaMJ+nly/wTRYJKplOLXKWj3WwfObMHXdsDE8NJmpJSRE7Sw7 -+tj+UiTiNNSaXirq</dsig:X509Certificate><PublicAuthority><Code>BKA-IKT</Code></PublicAuthority></dsig:X509Data></SignerInfo><SignatureCheck><Code>0</Code></SignatureCheck><XMLDSIGManifestCheck><Code>0</Code><Info><ReferringSigReference>1</ReferringSigReference></Info></XMLDSIGManifestCheck><CertificateCheck><Code>0</Code></CertificateCheck></VerifyXMLSignatureResponse>
\ No newline at end of file diff --git a/moaSig/handbook/clients/webservice/resources/requests/VerifyXMLSignatureRequest.XMLDSigManifest.xml b/moaSig/handbook/clients/webservice/resources/requests/VerifyXMLSignatureRequest.XMLDSigManifest.xml deleted file mode 100644 index a57fbb9..0000000 --- a/moaSig/handbook/clients/webservice/resources/requests/VerifyXMLSignatureRequest.XMLDSigManifest.xml +++ /dev/null @@ -1,31 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<VerifyXMLSignatureRequest xmlns="http://reference.e-government.gv.at/namespace/moa/20020822#" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"> - <VerifySignatureInfo> - <VerifySignatureEnvironment> - <XMLContent><dsig:Signature Id="signature-1-1" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"><dsig:SignedInfo><dsig:CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/><dsig:SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#ecdsa-sha1"/><dsig:Reference Type="http://www.w3.org/2000/09/xmldsig#Manifest" URI="#dsig-manifest-1-1"><dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/><dsig:DigestValue>nUUaW6OtcsNvV/QhqmkU2QXT1Mw=</dsig:DigestValue></dsig:Reference></dsig:SignedInfo><dsig:SignatureValue>pzI1j60BNsnS+zjXYtXlh109HjJGEMrMzTzkUB54rReOpI1ynNkG2RE7AiOlvpPh</dsig:SignatureValue><dsig:KeyInfo><dsig:X509Data><dsig:X509Certificate>MIID+DCCA2WgAwIBAgIBCTAJBgUrDgMCHQUAMH8xCzAJBgNVBAYTAkFUMSwwKgYD -VQQKEyNTdGFic3RlbGxlIElLVC1TdHJhdGVnaWUgZGVzIEJ1bmRlczEeMBwGA1UE -CxMVVGVjaG5payB1bmQgU3RhbmRhcmRzMSIwIAYDVQQDExlUZXN0IENBIC0gU2ln -bmF0dXJkaWVuc3RlMB4XDTA0MDgwNDA4MjM0OFoXDTA3MDgwNDA4MjM0OFowgZgx -CzAJBgNVBAYTAkFUMS0wKwYDVQQKEyRTdGFic3N0ZWxsZSBJS1QtU3RyYXRlZ2ll -IGRlcyBCdW5kZXMxHjAcBgNVBAsTFVRlY2huaWsgdW5kIFN0YW5kYXJkczE6MDgG -A1UEAxMxVGVzdDogU2lnbmF0dXJkaWVuc3QgYWxsZXIgS3VuZGVuOiBFQ0RTQSAo -UDE5MnYxKTCB8zCBvAYHKoZIzj0CATCBsAIBATAkBgcqhkjOPQEBAhkA//////// -/////////////v//////////MDQEGP////////////////////7//////////AQY -ZCEFGeWcgOcPp+mrciQwSf643uzBRrmxBDEEGI2oDrAwkPZ8vyDrQ6GIAPT/Cv2C -/xASBxkrlf/I2nhjEBHtayTN1XP5d6EeeUgRAhkA////////////////md74NhRr -ybG00igxAgEBAzIABNHWY9lQOE1zgmpcpjTg2WIg6qgEsGhpXELPinJoMPDVheTv -2BZPG42YJsNfvWgC06OCARwwggEYMA4GA1UdDwEB/wQEAwIGwDAMBgNVHRMBAf8E -AjAAMB0GA1UdDgQWBBRHH5EXnrWosCmIa+JyEM5seMxFVzBdBgNVHSAEVjBUMFIG -DCsGAQQBlRIBAgMBATBCMEAGCCsGAQUFBwICMDQaMkRpZXNlcyBaZXJ0aWZpa2F0 -IGlzdCBudXIgZvxyIFRlc3R6d2Vja2UgZ2VlaWduZXQuMEMGA1UdHwQ8MDowOKA2 -oDSGMmh0dHA6Ly9sYWJzLmNpby5ndi5hdC90ZW1wL2NybHMvc2lnbmF0dXJkaWVu -c3QuY3JsMBQGByooAAoBAQEECQwHQktBLUlLVDAfBgNVHSMEGDAWgBRAl0P5fWaw -vf59+uxGcYY9wffZPTAJBgUrDgMCHQUAA4GBAIMKUsnajgfBtpHeDdMdQMLA8fdt -lluezDOM78WYYSFURP04QZk5iHkShzptgZCF5Y/T4an3dC3SnytL67LJvEoKUyja -iTMLo7650xRTvAjTaMJ+nly/wTRYJKplOLXKWj3WwfObMHXdsDE8NJmpJSRE7Sw7 -+tj+UiTiNNSaXirq</dsig:X509Certificate></dsig:X509Data></dsig:KeyInfo><dsig:Object Id="signed-data-1-1-1">Diese Daten sind signiert.</dsig:Object><dsig:Object><dsig:Manifest Id="dsig-manifest-1-1"><dsig:Reference Id="reference-1-1" URI="#xpointer(id('signed-data-1-1-1')/node())"><dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/><dsig:DigestValue>EYxznGxNRAIcHQeUsj+zsK+uaHA=</dsig:DigestValue></dsig:Reference></dsig:Manifest></dsig:Object></dsig:Signature></XMLContent> - </VerifySignatureEnvironment> - <VerifySignatureLocation>//dsig:Signature</VerifySignatureLocation> - </VerifySignatureInfo> - <TrustProfileID>Test-Signaturdienste</TrustProfileID> -</VerifyXMLSignatureRequest> diff --git a/moaSig/handbook/clients/webservice/resources/requests/signatures2bverified/CreateXMLSignatureRequest.VerifyXML.Enveloped.response.xml b/moaSig/handbook/clients/webservice/resources/requests/signatures2bverified/CreateXMLSignatureRequest.VerifyXML.Enveloped.response.xml deleted file mode 100644 index be2eb37..0000000 --- a/moaSig/handbook/clients/webservice/resources/requests/signatures2bverified/CreateXMLSignatureRequest.VerifyXML.Enveloped.response.xml +++ /dev/null @@ -1,27 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<CreateXMLSignatureResponse xmlns="http://reference.e-government.gv.at/namespace/moa/20020822#" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"><SignatureEnvironment><doc:XMLDocument xmlns:doc="urn:document"> - <doc:Paragraph>Ich bin der erste Absatz in diesem Dokument.</doc:Paragraph> - <doc:Paragraph ParaId="Para2">Und ich bin der zweite Absatz in diesem Dokument. -Ich habe weiters ein eigenens ID-Attribut bekommen.</doc:Paragraph><dsig:Signature Id="signature-1-1" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"><dsig:SignedInfo><dsig:CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/><dsig:SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#ecdsa-sha1"/><dsig:Reference Id="reference-1-1" URI=""><dsig:Transforms><dsig:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/></dsig:Transforms><dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/><dsig:DigestValue>2b83+NbXDFijHzz+sH0T7fM36sA=</dsig:DigestValue></dsig:Reference></dsig:SignedInfo><dsig:SignatureValue>30zsZMPn1mR5G5oIGJvTRmCik3WuepfZF6AhLwxgJDMJlPQ8rheBWCaKihzXnHaS</dsig:SignatureValue><dsig:KeyInfo><dsig:X509Data><dsig:X509Certificate>MIID+DCCA2WgAwIBAgIBCTAJBgUrDgMCHQUAMH8xCzAJBgNVBAYTAkFUMSwwKgYD -VQQKEyNTdGFic3RlbGxlIElLVC1TdHJhdGVnaWUgZGVzIEJ1bmRlczEeMBwGA1UE -CxMVVGVjaG5payB1bmQgU3RhbmRhcmRzMSIwIAYDVQQDExlUZXN0IENBIC0gU2ln -bmF0dXJkaWVuc3RlMB4XDTA0MDgwNDA4MjM0OFoXDTA3MDgwNDA4MjM0OFowgZgx -CzAJBgNVBAYTAkFUMS0wKwYDVQQKEyRTdGFic3N0ZWxsZSBJS1QtU3RyYXRlZ2ll -IGRlcyBCdW5kZXMxHjAcBgNVBAsTFVRlY2huaWsgdW5kIFN0YW5kYXJkczE6MDgG -A1UEAxMxVGVzdDogU2lnbmF0dXJkaWVuc3QgYWxsZXIgS3VuZGVuOiBFQ0RTQSAo -UDE5MnYxKTCB8zCBvAYHKoZIzj0CATCBsAIBATAkBgcqhkjOPQEBAhkA//////// -/////////////v//////////MDQEGP////////////////////7//////////AQY -ZCEFGeWcgOcPp+mrciQwSf643uzBRrmxBDEEGI2oDrAwkPZ8vyDrQ6GIAPT/Cv2C -/xASBxkrlf/I2nhjEBHtayTN1XP5d6EeeUgRAhkA////////////////md74NhRr -ybG00igxAgEBAzIABNHWY9lQOE1zgmpcpjTg2WIg6qgEsGhpXELPinJoMPDVheTv -2BZPG42YJsNfvWgC06OCARwwggEYMA4GA1UdDwEB/wQEAwIGwDAMBgNVHRMBAf8E -AjAAMB0GA1UdDgQWBBRHH5EXnrWosCmIa+JyEM5seMxFVzBdBgNVHSAEVjBUMFIG -DCsGAQQBlRIBAgMBATBCMEAGCCsGAQUFBwICMDQaMkRpZXNlcyBaZXJ0aWZpa2F0 -IGlzdCBudXIgZvxyIFRlc3R6d2Vja2UgZ2VlaWduZXQuMEMGA1UdHwQ8MDowOKA2 -oDSGMmh0dHA6Ly9sYWJzLmNpby5ndi5hdC90ZW1wL2NybHMvc2lnbmF0dXJkaWVu -c3QuY3JsMBQGByooAAoBAQEECQwHQktBLUlLVDAfBgNVHSMEGDAWgBRAl0P5fWaw -vf59+uxGcYY9wffZPTAJBgUrDgMCHQUAA4GBAIMKUsnajgfBtpHeDdMdQMLA8fdt -lluezDOM78WYYSFURP04QZk5iHkShzptgZCF5Y/T4an3dC3SnytL67LJvEoKUyja -iTMLo7650xRTvAjTaMJ+nly/wTRYJKplOLXKWj3WwfObMHXdsDE8NJmpJSRE7Sw7 -+tj+UiTiNNSaXirq</dsig:X509Certificate></dsig:X509Data></dsig:KeyInfo></dsig:Signature> -</doc:XMLDocument></SignatureEnvironment></CreateXMLSignatureResponse>
\ No newline at end of file diff --git a/moaSig/handbook/clients/webservice/resources/requests/signatures2bverified/CreateXMLSignatureRequest.VerifyXML.Enveloped.xml b/moaSig/handbook/clients/webservice/resources/requests/signatures2bverified/CreateXMLSignatureRequest.VerifyXML.Enveloped.xml deleted file mode 100644 index 7f89028..0000000 --- a/moaSig/handbook/clients/webservice/resources/requests/signatures2bverified/CreateXMLSignatureRequest.VerifyXML.Enveloped.xml +++ /dev/null @@ -1,25 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<CreateXMLSignatureRequest xmlns="http://reference.e-government.gv.at/namespace/moa/20020822#" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"> - <KeyIdentifier>KG_allgemein</KeyIdentifier> - <SingleSignatureInfo SecurityLayerConformity="false"> - <DataObjectInfo Structure="detached"> - <DataObject Reference=""/> - <CreateTransformsInfoProfile> - <CreateTransformsInfo> - <dsig:Transforms> - <dsig:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/> - </dsig:Transforms> - <FinalDataMetaInfo> - <MimeType>text/xml</MimeType> - </FinalDataMetaInfo> - </CreateTransformsInfo> - </CreateTransformsInfoProfile> - </DataObjectInfo> - <CreateSignatureInfo> - <CreateSignatureEnvironment Reference="http://localhost:8080/referencedData/XMLDocument.xml"/> - <CreateSignatureEnvironmentProfile> - <CreateSignatureLocation Index="4" xmlns:doc="urn:document">/doc:XMLDocument</CreateSignatureLocation> - </CreateSignatureEnvironmentProfile> - </CreateSignatureInfo> - </SingleSignatureInfo> -</CreateXMLSignatureRequest> diff --git a/moaSig/handbook/clients/webservice/resources/requests/signatures2bverified/CreateXMLSignatureRequest.VerifyXML.SigManifest.response.xml b/moaSig/handbook/clients/webservice/resources/requests/signatures2bverified/CreateXMLSignatureRequest.VerifyXML.SigManifest.response.xml deleted file mode 100644 index fb4204a..0000000 --- a/moaSig/handbook/clients/webservice/resources/requests/signatures2bverified/CreateXMLSignatureRequest.VerifyXML.SigManifest.response.xml +++ /dev/null @@ -1,29 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<CreateXMLSignatureResponse xmlns="http://reference.e-government.gv.at/namespace/moa/20020822#" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"><SignatureEnvironment><doc:XMLDocument xmlns:doc="urn:document" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:document http://localhost:8080/referencedData/XMLDocument.xsd"> - <doc:Paragraph>Ich bin der erste Absatz in diesem Dokument.</doc:Paragraph> - <doc:Paragraph ParaId="Para2">Und ich bin der zweite Absatz in diesem Dokument. -Ich habe weiters ein eigenens ID-Attribut bekommen.</doc:Paragraph><dsig:Signature Id="signature-1-1" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"><dsig:SignedInfo><dsig:CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/><dsig:SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#ecdsa-sha1"/><dsig:Reference Id="reference-1-1" URI="#Para2"><dsig:Transforms><dsig:Transform Algorithm="http://www.w3.org/TR/1999/REC-xslt-19991116"><xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> - <xsl:include href="http://localhost:8080/referencedData/XMLDocument.Para.xsl"/> -</xsl:stylesheet></dsig:Transform><dsig:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/></dsig:Transforms><dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/><dsig:DigestValue>luM3wUmedTvkMHVedQkA/8otXUE=</dsig:DigestValue></dsig:Reference><dsig:Reference Type="http://www.buergerkarte.at/specifications/Security-Layer/20020225#SignatureManifest" URI="#manifest-1-1"><dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/><dsig:DigestValue>1aSV+vFkwG6NZCk5ZUzZV3J4eSo=</dsig:DigestValue></dsig:Reference><dsig:Reference Type="http://uri.etsi.org/01903/v1.1.1#SignedProperties" URI="#xmlns(etsi=http://uri.etsi.org/01903/v1.1.1%23)%20xpointer(id('etsi-signed-1-1')/child::etsi:QualifyingProperties/child::etsi:SignedProperties)"><dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/><dsig:DigestValue>Dy1xXsV2LgSFJlGwYiunav1KC7A=</dsig:DigestValue></dsig:Reference></dsig:SignedInfo><dsig:SignatureValue>f1v/vi1S7xiL+7ofWOUqBfoqOy42EnlXYFoTYcaUZaBiAecDvyX9StPRWTUls/j2</dsig:SignatureValue><dsig:KeyInfo><dsig:X509Data><dsig:X509Certificate>MIID+DCCA2WgAwIBAgIBCTAJBgUrDgMCHQUAMH8xCzAJBgNVBAYTAkFUMSwwKgYD -VQQKEyNTdGFic3RlbGxlIElLVC1TdHJhdGVnaWUgZGVzIEJ1bmRlczEeMBwGA1UE -CxMVVGVjaG5payB1bmQgU3RhbmRhcmRzMSIwIAYDVQQDExlUZXN0IENBIC0gU2ln -bmF0dXJkaWVuc3RlMB4XDTA0MDgwNDA4MjM0OFoXDTA3MDgwNDA4MjM0OFowgZgx -CzAJBgNVBAYTAkFUMS0wKwYDVQQKEyRTdGFic3N0ZWxsZSBJS1QtU3RyYXRlZ2ll -IGRlcyBCdW5kZXMxHjAcBgNVBAsTFVRlY2huaWsgdW5kIFN0YW5kYXJkczE6MDgG -A1UEAxMxVGVzdDogU2lnbmF0dXJkaWVuc3QgYWxsZXIgS3VuZGVuOiBFQ0RTQSAo -UDE5MnYxKTCB8zCBvAYHKoZIzj0CATCBsAIBATAkBgcqhkjOPQEBAhkA//////// -/////////////v//////////MDQEGP////////////////////7//////////AQY -ZCEFGeWcgOcPp+mrciQwSf643uzBRrmxBDEEGI2oDrAwkPZ8vyDrQ6GIAPT/Cv2C -/xASBxkrlf/I2nhjEBHtayTN1XP5d6EeeUgRAhkA////////////////md74NhRr -ybG00igxAgEBAzIABNHWY9lQOE1zgmpcpjTg2WIg6qgEsGhpXELPinJoMPDVheTv -2BZPG42YJsNfvWgC06OCARwwggEYMA4GA1UdDwEB/wQEAwIGwDAMBgNVHRMBAf8E -AjAAMB0GA1UdDgQWBBRHH5EXnrWosCmIa+JyEM5seMxFVzBdBgNVHSAEVjBUMFIG -DCsGAQQBlRIBAgMBATBCMEAGCCsGAQUFBwICMDQaMkRpZXNlcyBaZXJ0aWZpa2F0 -IGlzdCBudXIgZvxyIFRlc3R6d2Vja2UgZ2VlaWduZXQuMEMGA1UdHwQ8MDowOKA2 -oDSGMmh0dHA6Ly9sYWJzLmNpby5ndi5hdC90ZW1wL2NybHMvc2lnbmF0dXJkaWVu -c3QuY3JsMBQGByooAAoBAQEECQwHQktBLUlLVDAfBgNVHSMEGDAWgBRAl0P5fWaw -vf59+uxGcYY9wffZPTAJBgUrDgMCHQUAA4GBAIMKUsnajgfBtpHeDdMdQMLA8fdt -lluezDOM78WYYSFURP04QZk5iHkShzptgZCF5Y/T4an3dC3SnytL67LJvEoKUyja -iTMLo7650xRTvAjTaMJ+nly/wTRYJKplOLXKWj3WwfObMHXdsDE8NJmpJSRE7Sw7 -+tj+UiTiNNSaXirq</dsig:X509Certificate></dsig:X509Data></dsig:KeyInfo><dsig:Object><dsig:Manifest Id="manifest-1-1"><dsig:Reference URI="http://localhost:8080/referencedData/XMLDocument.Para.xsl"><dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/><dsig:DigestValue>B9nRChTbct68n9h5+Cb2mfNkASI=</dsig:DigestValue></dsig:Reference></dsig:Manifest></dsig:Object><dsig:Object Id="etsi-signed-1-1"><etsi:QualifyingProperties Target="#signature-1-1" xmlns:etsi="http://uri.etsi.org/01903/v1.1.1#"><etsi:SignedProperties><etsi:SignedSignatureProperties><etsi:SigningTime>2005-03-29T09:55:29</etsi:SigningTime><etsi:SigningCertificate><etsi:Cert><etsi:CertDigest><etsi:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/><etsi:DigestValue>FOWcAqaHew69LEIDiGuiWVnB0mc=</etsi:DigestValue></etsi:CertDigest><etsi:IssuerSerial><dsig:X509IssuerName>CN=Test CA - Signaturdienste,OU=Technik und Standards,O=Stabstelle IKT-Strategie des Bundes,C=AT</dsig:X509IssuerName><dsig:X509SerialNumber>9</dsig:X509SerialNumber></etsi:IssuerSerial></etsi:Cert></etsi:SigningCertificate><etsi:SignaturePolicyIdentifier><etsi:SignaturePolicyImplied/></etsi:SignaturePolicyIdentifier></etsi:SignedSignatureProperties><etsi:SignedDataObjectProperties><etsi:DataObjectFormat ObjectReference="#reference-1-1"><etsi:MimeType>application/xhtml+xml</etsi:MimeType></etsi:DataObjectFormat></etsi:SignedDataObjectProperties></etsi:SignedProperties></etsi:QualifyingProperties></dsig:Object></dsig:Signature> -</doc:XMLDocument></SignatureEnvironment></CreateXMLSignatureResponse>
\ No newline at end of file diff --git a/moaSig/handbook/clients/webservice/resources/requests/signatures2bverified/CreateXMLSignatureRequest.VerifyXML.SigManifest.xml b/moaSig/handbook/clients/webservice/resources/requests/signatures2bverified/CreateXMLSignatureRequest.VerifyXML.SigManifest.xml deleted file mode 100644 index b19f66b..0000000 --- a/moaSig/handbook/clients/webservice/resources/requests/signatures2bverified/CreateXMLSignatureRequest.VerifyXML.SigManifest.xml +++ /dev/null @@ -1,30 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<CreateXMLSignatureRequest xmlns="http://reference.e-government.gv.at/namespace/moa/20020822#" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"> - <KeyIdentifier>KG_allgemein</KeyIdentifier> - <SingleSignatureInfo SecurityLayerConformity="true"> - <DataObjectInfo Structure="detached"> - <DataObject Reference="#Para2"/> - <CreateTransformsInfoProfile> - <CreateTransformsInfo> - <dsig:Transforms> - <dsig:Transform Algorithm="http://www.w3.org/TR/1999/REC-xslt-19991116"> - <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> - <xsl:include href="http://localhost:8080/referencedData/XMLDocument.Para.xsl"/> -</xsl:stylesheet> - </dsig:Transform> - <dsig:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/> - </dsig:Transforms> - <FinalDataMetaInfo> - <MimeType>application/xhtml+xml</MimeType> - </FinalDataMetaInfo> - </CreateTransformsInfo> - </CreateTransformsInfoProfile> - </DataObjectInfo> - <CreateSignatureInfo> - <CreateSignatureEnvironment Reference="http://localhost:8080/referencedData/XMLDocument.withResolvableSchemaHint.xml"/> - <CreateSignatureEnvironmentProfile> - <CreateSignatureLocation Index="4" xmlns:doc="urn:document">/doc:XMLDocument</CreateSignatureLocation> - </CreateSignatureEnvironmentProfile> - </CreateSignatureInfo> - </SingleSignatureInfo> -</CreateXMLSignatureRequest> diff --git a/moaSig/handbook/clients/webservice/resources/requests/signatures2bverified/CreateXMLSignatureRequest.VerifyXML.XMLDSigManifest.response.xml b/moaSig/handbook/clients/webservice/resources/requests/signatures2bverified/CreateXMLSignatureRequest.VerifyXML.XMLDSigManifest.response.xml deleted file mode 100644 index a465e21..0000000 --- a/moaSig/handbook/clients/webservice/resources/requests/signatures2bverified/CreateXMLSignatureRequest.VerifyXML.XMLDSigManifest.response.xml +++ /dev/null @@ -1,23 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<CreateXMLSignatureResponse xmlns="http://reference.e-government.gv.at/namespace/moa/20020822#" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"><SignatureEnvironment><dsig:Signature Id="signature-1-1" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"><dsig:SignedInfo><dsig:CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/><dsig:SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#ecdsa-sha1"/><dsig:Reference Type="http://www.w3.org/2000/09/xmldsig#Manifest" URI="#dsig-manifest-1-1"><dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/><dsig:DigestValue>nUUaW6OtcsNvV/QhqmkU2QXT1Mw=</dsig:DigestValue></dsig:Reference></dsig:SignedInfo><dsig:SignatureValue>pzI1j60BNsnS+zjXYtXlh109HjJGEMrMzTzkUB54rReOpI1ynNkG2RE7AiOlvpPh</dsig:SignatureValue><dsig:KeyInfo><dsig:X509Data><dsig:X509Certificate>MIID+DCCA2WgAwIBAgIBCTAJBgUrDgMCHQUAMH8xCzAJBgNVBAYTAkFUMSwwKgYD -VQQKEyNTdGFic3RlbGxlIElLVC1TdHJhdGVnaWUgZGVzIEJ1bmRlczEeMBwGA1UE -CxMVVGVjaG5payB1bmQgU3RhbmRhcmRzMSIwIAYDVQQDExlUZXN0IENBIC0gU2ln -bmF0dXJkaWVuc3RlMB4XDTA0MDgwNDA4MjM0OFoXDTA3MDgwNDA4MjM0OFowgZgx -CzAJBgNVBAYTAkFUMS0wKwYDVQQKEyRTdGFic3N0ZWxsZSBJS1QtU3RyYXRlZ2ll -IGRlcyBCdW5kZXMxHjAcBgNVBAsTFVRlY2huaWsgdW5kIFN0YW5kYXJkczE6MDgG -A1UEAxMxVGVzdDogU2lnbmF0dXJkaWVuc3QgYWxsZXIgS3VuZGVuOiBFQ0RTQSAo -UDE5MnYxKTCB8zCBvAYHKoZIzj0CATCBsAIBATAkBgcqhkjOPQEBAhkA//////// -/////////////v//////////MDQEGP////////////////////7//////////AQY -ZCEFGeWcgOcPp+mrciQwSf643uzBRrmxBDEEGI2oDrAwkPZ8vyDrQ6GIAPT/Cv2C -/xASBxkrlf/I2nhjEBHtayTN1XP5d6EeeUgRAhkA////////////////md74NhRr -ybG00igxAgEBAzIABNHWY9lQOE1zgmpcpjTg2WIg6qgEsGhpXELPinJoMPDVheTv -2BZPG42YJsNfvWgC06OCARwwggEYMA4GA1UdDwEB/wQEAwIGwDAMBgNVHRMBAf8E -AjAAMB0GA1UdDgQWBBRHH5EXnrWosCmIa+JyEM5seMxFVzBdBgNVHSAEVjBUMFIG -DCsGAQQBlRIBAgMBATBCMEAGCCsGAQUFBwICMDQaMkRpZXNlcyBaZXJ0aWZpa2F0 -IGlzdCBudXIgZvxyIFRlc3R6d2Vja2UgZ2VlaWduZXQuMEMGA1UdHwQ8MDowOKA2 -oDSGMmh0dHA6Ly9sYWJzLmNpby5ndi5hdC90ZW1wL2NybHMvc2lnbmF0dXJkaWVu -c3QuY3JsMBQGByooAAoBAQEECQwHQktBLUlLVDAfBgNVHSMEGDAWgBRAl0P5fWaw -vf59+uxGcYY9wffZPTAJBgUrDgMCHQUAA4GBAIMKUsnajgfBtpHeDdMdQMLA8fdt -lluezDOM78WYYSFURP04QZk5iHkShzptgZCF5Y/T4an3dC3SnytL67LJvEoKUyja -iTMLo7650xRTvAjTaMJ+nly/wTRYJKplOLXKWj3WwfObMHXdsDE8NJmpJSRE7Sw7 -+tj+UiTiNNSaXirq</dsig:X509Certificate></dsig:X509Data></dsig:KeyInfo><dsig:Object Id="signed-data-1-1-1">Diese Daten sind signiert.</dsig:Object><dsig:Object><dsig:Manifest Id="dsig-manifest-1-1"><dsig:Reference Id="reference-1-1" URI="#xpointer(id('signed-data-1-1-1')/node())"><dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/><dsig:DigestValue>EYxznGxNRAIcHQeUsj+zsK+uaHA=</dsig:DigestValue></dsig:Reference></dsig:Manifest></dsig:Object></dsig:Signature></SignatureEnvironment></CreateXMLSignatureResponse>
\ No newline at end of file diff --git a/moaSig/handbook/clients/webservice/resources/requests/signatures2bverified/CreateXMLSignatureRequest.VerifyXML.XMLDSigManifest.xml b/moaSig/handbook/clients/webservice/resources/requests/signatures2bverified/CreateXMLSignatureRequest.VerifyXML.XMLDSigManifest.xml deleted file mode 100644 index da7e820..0000000 --- a/moaSig/handbook/clients/webservice/resources/requests/signatures2bverified/CreateXMLSignatureRequest.VerifyXML.XMLDSigManifest.xml +++ /dev/null @@ -1,18 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<CreateXMLSignatureRequest xmlns="http://reference.e-government.gv.at/namespace/moa/20020822#"> - <KeyIdentifier>KG_allgemein</KeyIdentifier> - <SingleSignatureInfo SecurityLayerConformity="false"> - <DataObjectInfo Structure="enveloping" ChildOfManifest="true"> - <DataObject> - <XMLContent>Diese Daten sind signiert.</XMLContent> - </DataObject> - <CreateTransformsInfoProfile> - <CreateTransformsInfo> - <FinalDataMetaInfo> - <MimeType>text/plain</MimeType> - </FinalDataMetaInfo> - </CreateTransformsInfo> - </CreateTransformsInfoProfile> - </DataObjectInfo> - </SingleSignatureInfo> -</CreateXMLSignatureRequest>
\ No newline at end of file diff --git a/moaSig/handbook/clients/webservice/resources/requests/transformResults/CreateXMLSignatureRequest.Transforms.hashinput.ref2.txt b/moaSig/handbook/clients/webservice/resources/requests/transformResults/CreateXMLSignatureRequest.Transforms.hashinput.ref2.txt deleted file mode 100644 index f8527bb..0000000 --- a/moaSig/handbook/clients/webservice/resources/requests/transformResults/CreateXMLSignatureRequest.Transforms.hashinput.ref2.txt +++ /dev/null @@ -1,8 +0,0 @@ -<html xmlns="http://www.w3.org/1999/xhtml" xmlns:doc="urn:document"> -<head> -<title>HTML-Dokument</title> -</head> -<body> -<p>Ich bin der erste Absatz in diesem Dokument.</p> -</body> -</html> diff --git a/moaSig/handbook/clients/webservice/resources/sslKeys/customer1/moa-ssl-kunde1.cer b/moaSig/handbook/clients/webservice/resources/sslKeys/customer1/moa-ssl-kunde1.cer Binary files differdeleted file mode 100644 index dc8a692..0000000 --- a/moaSig/handbook/clients/webservice/resources/sslKeys/customer1/moa-ssl-kunde1.cer +++ /dev/null diff --git a/moaSig/handbook/clients/webservice/resources/sslKeys/customer1/moa-ssl-kunde1[pwd=kunde1].p12 b/moaSig/handbook/clients/webservice/resources/sslKeys/customer1/moa-ssl-kunde1[pwd=kunde1].p12 Binary files differdeleted file mode 100644 index ea67e4a..0000000 --- a/moaSig/handbook/clients/webservice/resources/sslKeys/customer1/moa-ssl-kunde1[pwd=kunde1].p12 +++ /dev/null diff --git a/moaSig/handbook/clients/webservice/resources/sslKeys/customer1/trustedServers[pwd=servers].keystore b/moaSig/handbook/clients/webservice/resources/sslKeys/customer1/trustedServers[pwd=servers].keystore Binary files differdeleted file mode 100644 index db78c54..0000000 --- a/moaSig/handbook/clients/webservice/resources/sslKeys/customer1/trustedServers[pwd=servers].keystore +++ /dev/null diff --git a/moaSig/handbook/clients/webservice/resources/sslKeys/customer2/moa-ssl-kunde2.cer b/moaSig/handbook/clients/webservice/resources/sslKeys/customer2/moa-ssl-kunde2.cer Binary files differdeleted file mode 100644 index 63f5dc7..0000000 --- a/moaSig/handbook/clients/webservice/resources/sslKeys/customer2/moa-ssl-kunde2.cer +++ /dev/null diff --git a/moaSig/handbook/clients/webservice/resources/sslKeys/customer2/moa-ssl-kunde2[pwd=kunde2].p12 b/moaSig/handbook/clients/webservice/resources/sslKeys/customer2/moa-ssl-kunde2[pwd=kunde2].p12 Binary files differdeleted file mode 100644 index db70725..0000000 --- a/moaSig/handbook/clients/webservice/resources/sslKeys/customer2/moa-ssl-kunde2[pwd=kunde2].p12 +++ /dev/null diff --git a/moaSig/handbook/clients/webservice/resources/sslKeys/customer2/trustedServers[pwd=servers].keystore b/moaSig/handbook/clients/webservice/resources/sslKeys/customer2/trustedServers[pwd=servers].keystore Binary files differdeleted file mode 100644 index cbf43b0..0000000 --- a/moaSig/handbook/clients/webservice/resources/sslKeys/customer2/trustedServers[pwd=servers].keystore +++ /dev/null diff --git a/moaSig/handbook/clients/webservice/resources/sslKeys/server/localhost.cer b/moaSig/handbook/clients/webservice/resources/sslKeys/server/localhost.cer Binary files differdeleted file mode 100644 index 7bee8af..0000000 --- a/moaSig/handbook/clients/webservice/resources/sslKeys/server/localhost.cer +++ /dev/null diff --git a/moaSig/handbook/clients/webservice/resources/sslKeys/server/tomcat[pwd=server].keystore b/moaSig/handbook/clients/webservice/resources/sslKeys/server/tomcat[pwd=server].keystore Binary files differdeleted file mode 100644 index a245203..0000000 --- a/moaSig/handbook/clients/webservice/resources/sslKeys/server/tomcat[pwd=server].keystore +++ /dev/null diff --git a/moaSig/handbook/clients/webservice/resources/sslKeys/server/trustedClients[pwd=clients].keystore b/moaSig/handbook/clients/webservice/resources/sslKeys/server/trustedClients[pwd=clients].keystore Binary files differdeleted file mode 100644 index 44a4072..0000000 --- a/moaSig/handbook/clients/webservice/resources/sslKeys/server/trustedClients[pwd=clients].keystore +++ /dev/null diff --git a/moaSig/handbook/clients/webservice/src/main/java/at/gv/egovernment/moa/spss/handbook/clients/webservice/HTTP.java b/moaSig/handbook/clients/webservice/src/main/java/at/gv/egovernment/moa/spss/handbook/clients/webservice/HTTP.java deleted file mode 100644 index 0ed47e4..0000000 --- a/moaSig/handbook/clients/webservice/src/main/java/at/gv/egovernment/moa/spss/handbook/clients/webservice/HTTP.java +++ /dev/null @@ -1,229 +0,0 @@ -/* - * Copyright 2003 Federal Chancellery Austria - - * MOA-SPSS has been developed in a cooperation between BRZ, the Federal - * Chancellery Austria - ICT staff unit, 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.egovernment.moa.spss.handbook.clients.webservice; - -import java.io.FileInputStream; -import java.io.FileOutputStream; -import java.util.Properties; -import java.util.Vector; - -import javax.xml.namespace.QName; -import javax.xml.parsers.DocumentBuilder; -import javax.xml.parsers.DocumentBuilderFactory; -import javax.xml.rpc.Call; -import javax.xml.rpc.Service; -import javax.xml.rpc.ServiceFactory; - -import org.apache.axis.message.SOAPBodyElement; -import org.apache.xml.serialize.OutputFormat; -import org.apache.xml.serialize.XMLSerializer; -import org.w3c.dom.Document; - -/** - * Diese Klasse implementiert einen einfachen Client f�r das MOA SP/SS Webservice mittels Apache Axis. Die - * Verbindung erfolgt ungesichert über HTTP. - */ -public class HTTP -{ - protected Properties props_; - - /** - * Methode main. - * - * Enthält den Beispielcode der nötig ist um von Java aus auf MOA-SPSS zugreifen zu können. Der Zugriff - * passiert über das AXIS-Framework. Die Verbindung erfolgt ungesichert über HTTP. - * - * @param args <ul> - * <li> - * args[0] enthält entweder die Bezeichnung "sign" oder "verify" zur Kennzeichnung, - * ob ein Signaturerstellungsrequest, oder ein Signaturprüfrequest gesendet werden soll. - * </li> - * <li> - * args[1] enthält einen Verweis auf eine Property-Datei, die die n�here Konfiguration - * f�r dieses Beispiel enthält. Der Verweis enthält entweder eine absolute oder eine - * relative Pfadangabe, wobei eine relative Angabe als relativ zum Arbeitsverzeichnis der - * Java VM interpretiert wird. Folgende Properties m�ssen in der Property-Datei vorhanden - * sein: - * <ul> - * <li> - * <code>signServiceQName</code>: Name des Webservices, fix "SignatureCreation" - * </li> - * <li> - * <code>signServiceEndPoint</code>: Zugangspunkt des Webservices (URL) - * </li> - * <li> - * <code>signRequest</code>: Name des zu sendenden Signaturerstellungsrequests (entweder - * absolute oder relative Pfadangabe; eine relative Pfadangabe wird relativ zum - * Arbeitsverzeichnis der Java VM interpretiert) - * </li> - * <li> - * <code>verifyServiceQName</code>: Name des Webservices, fix "SignatureVerification" - * </li> - * <li> - * <code>verifyServiceEndPoint</code>: Zugangspunkt des Webservices (URL) - * </li> - * <li> - * <code>verifyRequest</code>: Name des zu sendenden Signaturprüfrequests (entweder - * absolute oder relative Pfadangabe; eine relative Pfadangabe wird relativ zum - * Arbeitsverzeichnis der Java VM interpretiert) - * </li> - * </ul> - * </li> - * </ul> - */ - public static void main(String[] args) - { - try - { - // Pr�fen, ob Beispiel korrekt verwendet wird - checkArgs(args, "HTTP"); - - // Initialisieren des Clients - HTTP httpClient = new HTTP(args); - - // Ausf�hren der Serviceabfrage - httpClient.execute(args[0]); - } - catch (Exception e) - { - e.printStackTrace(); - } - } - - /** - * Pr�ft, ob das Beispiel korrekt verwendet wird. - * - * @param args Die Aufrufparameter für das Beispiel. Siehe {@link HTTP#main(String[])}. - * - * @param exampleName Der Name dieses Beispiels, der im Hilfetext gedruckt wird. - */ - protected static void checkArgs(String[] args, String exampleName) - { - if (args == null || args.length != 2 || (!"sign".equals(args[0]) && !"verify".equals(args[0]))) - { - System.out.println("Verwendung: " + exampleName + " \"sign\"|\"verify\" Properties-Datei"); - } - } - - /** - * Erzeugt den MOA Client. Es erfolgt die Auswertung der �bergebenen Aufrufparameter. - * - * @param args Die Aufrufparameter für das Beispiel. Siehe {@link HTTP#main(String[])}. - * - * @throws Exception wenn der MOA Client mit den �bergebenen Aufrufparametern nicht korrekt erzeugt - * werden konnte. - */ - protected HTTP(String[] args) throws Exception - { - props_ = new Properties(); - props_.load(new FileInputStream(args[1])); - } - - /** - * F�hrt die Abfrage beim MOA-Service aus. - * - * @param mode Steuert, ob eine Signatur erstellt ("sign") oder gepr�ft ("verify") werden soll. - * - * @throws Exception wenn dabei etwas schiegeht. - */ - protected void execute(String mode) throws Exception - { - // Datei mit Request einlesen - FileInputStream inputStream = new FileInputStream(getProperty(mode + "Request")); - - // Parser/DOMBuilder instanzieren - DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); - factory.setNamespaceAware(true); - DocumentBuilder builder = factory.newDocumentBuilder(); - - // XML Datei in einen DOM-Baum umwandeln - Document xmlRequest = builder.parse(inputStream); - - // AXIS-Server instanzieren - Service service = ServiceFactory.newInstance().createService(new QName(getProperty(mode + "ServiceQName"))); - - // Call �ffnen - Call call = service.createCall(); - - // Neues BodyElement anlegen und mit dem DOM-Baum f�llen - SOAPBodyElement body = new SOAPBodyElement(xmlRequest.getDocumentElement()); - SOAPBodyElement[] params = new SOAPBodyElement[] - { - body - }; - - // Call mit Endpoint verkn�pfen - call.setTargetEndpointAddress(getProperty(mode + "ServiceEndPoint")); - - // Call ausl�sen und die Antworten speichern - System.out.println("Calling ..."); - Vector responses = (Vector) call.invoke(params); - - // Erstes Body Element auslesen - SOAPBodyElement response = (SOAPBodyElement) responses.get(0); - - // Aus der Response den DOM-Baum lesen - Document root_response = response.getAsDocument(); - System.out.println("Return ..."); - - // XML-Formatierung konfiguieren - OutputFormat format = new OutputFormat((Document) root_response); - format.setLineSeparator("\n"); - format.setIndenting(false); - format.setPreserveSpace(true); - format.setOmitXMLDeclaration(false); - format.setEncoding("UTF-8"); - - // Ausgabe der Webservice-Antwort auf die Konsole - XMLSerializer conSerializer = new XMLSerializer(System.out, format); - conSerializer.serialize(root_response); - - // Ausgabe der Webservice-Antwort in Datei - String responseFile = getProperty(mode + "Request").substring(0, getProperty(mode + "Request").lastIndexOf('.')) - + ".response.xml"; - XMLSerializer fileSerializer = new XMLSerializer(new FileOutputStream(responseFile), format); - fileSerializer.serialize(root_response); - } - - /** - * Pr�ft ob die Property mit dem angegebenen Namen in den Konfigurations-Properties enthalten ist. - * - * @param propName Name der zu untersuchenden Property. - * - * @return den Wert der gesuchten Property. - * - * @throws Exception wenn die gesuchte Property nicht vorhanden ist. - */ - protected String getProperty(String propName) throws Exception - { - String propValue = props_.getProperty(propName); - if ((propValue == null) || "".equals(propValue.trim())) - { - throw new Exception("Property named \"" + propName + "\" does not exist."); - } - return propValue; - } -}
\ No newline at end of file diff --git a/moaSig/handbook/clients/webservice/src/main/java/at/gv/egovernment/moa/spss/handbook/clients/webservice/HTTPSClientAuth.java b/moaSig/handbook/clients/webservice/src/main/java/at/gv/egovernment/moa/spss/handbook/clients/webservice/HTTPSClientAuth.java deleted file mode 100644 index 33a94ff..0000000 --- a/moaSig/handbook/clients/webservice/src/main/java/at/gv/egovernment/moa/spss/handbook/clients/webservice/HTTPSClientAuth.java +++ /dev/null @@ -1,146 +0,0 @@ -/* - * Copyright 2003 Federal Chancellery Austria - * MOA-SPSS has been developed in a cooperation between BRZ, the Federal - * Chancellery Austria - ICT staff unit, 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.egovernment.moa.spss.handbook.clients.webservice; - - -/** - * Diese Klasse implementiert einen einfachen Client f�r das MOA SP/SS Webservice mittels Apache Axis. Die - * Verbindung erfolgt gesichert über SSL, und zwar sowohl mit Server- und Clientauthentisierung. - */ -public class HTTPSClientAuth extends HTTPSServerAuth -{ - // JSSE Konstanten - public static final String KEYSTORE = "javax.net.ssl.keyStore"; - public static final String KEYSTOREPASSWORD = "javax.net.ssl.keyStorePassword"; - public static final String KEYSTORETYPE = "javax.net.ssl.keyStoreType"; - - /** - * Methode main. - * - * Enthaelt den Beispielcode der noetig ist um von Java aus auf MOA-SPSS zugreifen zu koennen. Der Zugriff - * passiert ueber das AXIS-Framework. Die Verbindung erfolgt gesichert ueber SSL, und zwar sowohl mit - * Server- und Clientauthentisierung. - * - * @param args <ul> - * <li> - * args[0] enthaelt entweder die Bezeichnung "sign" oder "verify" zur Kennzeichnung, - * ob ein Signaturerstellungsrequest, oder ein Signaturprüefrequest gesendet werden soll. - * </li> - * <li> - * args[1] enthaelt einen Verweis auf eine Property-Datei, die die n�here Konfiguration - * fuer dieses Beispiel enthaelt. Der Verweis enthaelt entweder eine absolute oder eine - * relative Pfadangabe, wobei eine relative Angabe als relativ zum Arbeitsverzeichnis der - * Java VM interpretiert wird. Folgende Properties muessen in der Properties-Datei vorhanden - * sein: - * <ul> - * <li> - * <code>signServiceQName</code>: Name des Webservices, fix "SignatureCreation" - * </li> - * <li> - * <code>signServiceEndPoint</code>: Zugangspunkt des Webservices (URL) - * </li> - * <li> - * <code>signRequest</code>: Name des zu sendenden Signaturerstellungsrequests (entweder - * absolute oder relative Pfadangabe; eine relative Pfadangabe wird relativ zum - * Arbeitsverzeichnis der Java VM interpretiert) - * </li> - * <li> - * <code>verifyServiceQName</code>: Name des Webservices, fix "SignatureVerification" - * </li> - * <li> - * <code>verifyServiceEndPoint</code>: Zugangspunkt des Webservices (URL) - * </li> - * <li> - * <code>verifyRequest</code>: Name des zu sendenden Signaturpruefrequests (entweder - * absolute oder relative Pfadangabe; eine relative Pfadangabe wird relativ zum - * Arbeitsverzeichnis der Java VM interpretiert) - * </li> - * <li> - * <code>ssl.truststore.type</code>: Typ des JSSE-Truststores (entweder "JKS" fuer einen - * Java Key Store oder "PKCS12" fuer eine PKCS#12-Datei). - * </li> - * <li><code>ssl.truststore.type</code>: Relativer oder absoluter Pfad zum JSSE-Truststore. - * Ein relativer Pfad wird relativ zum Arbeitsverzeichnis der Java VM interpretiert). - * </li> - * <li><code>ssl.truststore.pwd</code>: Passwort f�r den JSSE-Truststore. - * </li> - * <li> - * <code>ssl.keystore.type</code>: Typ des JSSE-Keystores (entweder "JKS" fuer einen - * Java Key Store oder "PKCS12" fuer eine PKCS#12-Datei). - * </li> - * <li><code>ssl.keystore.type</code>: Relativer oder absoluter Pfad zum JSSE-Keystore. - * Ein relativer Pfad wird relativ zum Arbeitsverzeichnis der Java VM interpretiert). - * </li> - * <li><code>ssl.keystore.pwd</code>: Passwort f�r den JSSE-Keystore. - * </li> - * </ul> - * </li> - * </ul> - */ - public static void main(String[] args) - { - try - { - // Pr�fen, ob Beispiel korrekt verwendet wird - checkArgs(args, "HTTP"); - - // Initialisieren des Clients - HTTPSClientAuth httpClient = new HTTPSClientAuth(args); - - // Ausf�hren der Serviceabfrage - httpClient.execute(args[0]); - } - catch (Exception e) - { - e.printStackTrace(); - } - } - - /** - * Erzeugt den MOA Client. Es erfolgt die Auswertung der uebergebenen Aufrufparameter. - * - * @param args Die Aufrufparameter fuer das Beispiel. Siehe {@link HTTPSClientAuth#main(String[])}. - * - * @throws Exception wenn der MOA Client mit den �bergebenen Aufrufparametern nicht korrekt erzeugt - * werden konnte. - */ - protected HTTPSClientAuth(String[] args) throws Exception - { - super(args); - } - - /** - * Konfiguriert JSSE fuer eine SSL-Verbindung mit Client- und Serverauthentisierung. - */ - protected void configureSSL() throws Exception - { - super.configureSSL(); - - // Konfiguriere Key-Store (enth�lt privaten Schl�ssel und Zertifikat des Clients) - System.setProperty(KEYSTORETYPE, getProperty("ssl.keystore.type")); - System.setProperty(KEYSTORE, getProperty("ssl.keystore.loc")); - System.setProperty(KEYSTOREPASSWORD, getProperty("ssl.keystore.pwd")); - } -}
\ No newline at end of file diff --git a/moaSig/handbook/clients/webservice/src/main/java/at/gv/egovernment/moa/spss/handbook/clients/webservice/HTTPSServerAuth.java b/moaSig/handbook/clients/webservice/src/main/java/at/gv/egovernment/moa/spss/handbook/clients/webservice/HTTPSServerAuth.java deleted file mode 100644 index d725648..0000000 --- a/moaSig/handbook/clients/webservice/src/main/java/at/gv/egovernment/moa/spss/handbook/clients/webservice/HTTPSServerAuth.java +++ /dev/null @@ -1,149 +0,0 @@ -/* - * Copyright 2003 Federal Chancellery Austria - * MOA-SPSS has been developed in a cooperation between BRZ, the Federal - * Chancellery Austria - ICT staff unit, 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.egovernment.moa.spss.handbook.clients.webservice; - -import java.security.Security; - -import com.sun.net.ssl.internal.ssl.Provider; - -/** - * Diese Klasse implementiert einen einfachen Client f�r das MOA SP/SS Webservice mittels Apache Axis. Die - * Verbindung erfolgt gesichert ueber SSL, und zwar nur mit Serverauthentisierung. - */ -public class HTTPSServerAuth extends HTTP -{ - // JSSE Konstanten - public static final String HANDLER = "java.protocol.handler.pkgs"; - public static final String TRUSTSTORE = "javax.net.ssl.trustStore"; - public static final String TRUSTSTOREPASSWORD = "javax.net.ssl.trustStorePassword"; - public static final String TRUSTSTORETYPE = "javax.net.ssl.trustStoreType"; - - /** - * Methode main. - * - * Enthaelt den Beispielcode der noetig ist um von Java aus auf MOA-SPSS zugreifen zu koennen. Der Zugriff - * passiert ueber das AXIS-Framework. Die Verbindung erfolgt gesichert ueber SSL, und zwar nur mit - * Serverauthentisierung. - * - * @param args <ul> - * <li> - * args[0] enthaelt entweder die Bezeichnung "sign" oder "verify" zur Kennzeichnung, - * ob ein Signaturerstellungsrequest, oder ein Signaturpruefrequest gesendet werden soll. - * </li> - * <li> - * args[1] enthaelt einen Verweis auf eine Property-Datei, die die naehere Konfiguration - * fuer dieses Beispiel enthaelt. Der Verweis enthaelt entweder eine absolute oder eine - * relative Pfadangabe, wobei eine relative Angabe als relativ zum Arbeitsverzeichnis der - * Java VM interpretiert wird. Folgende Properties muessen in der Properties-Datei vorhanden - * sein: - * <ul> - * <li> - * <code>signServiceQName</code>: Name des Webservices, fix "SignatureCreation" - * </li> - * <li> - * <code>signServiceEndPoint</code>: Zugangspunkt des Webservices (URL) - * </li> - * <li> - * <code>signRequest</code>: Name des zu sendenden Signaturerstellungsrequests (entweder - * absolute oder relative Pfadangabe; eine relative Pfadangabe wird relativ zum - * Arbeitsverzeichnis der Java VM interpretiert) - * </li> - * <li> - * <code>verifyServiceQName</code>: Name des Webservices, fix "SignatureVerification" - * </li> - * <li> - * <code>verifyServiceEndPoint</code>: Zugangspunkt des Webservices (URL) - * </li> - * <li> - * <code>verifyRequest</code>: Name des zu sendenden Signaturpruefrequests (entweder - * absolute oder relative Pfadangabe; eine relative Pfadangabe wird relativ zum - * Arbeitsverzeichnis der Java VM interpretiert) - * </li> - * <li> - * <code>ssl.truststore.type</code>: Typ des JSSE-Truststores (entweder "JKS" fuer einen - * Java Key Store oder "PKCS12" fuer eine PKCS#12-Datei). - * </li> - * <li><code>ssl.truststore.type</code>: Relativer oder absoluter Pfad zum JSSE-Truststore. - * Ein relativer Pfad wird relativ zum Arbeitsverzeichnis der Java VM interpretiert). - * </li> - * <li><code>ssl.truststore.pwd</code>: Passwort fuer den JSSE-Truststore. - * </li> - * </ul> - * </li> - * </ul> - */ - public static void main(String[] args) - { - try - { - // Pr�fen, ob Beispiel korrekt verwendet wird - checkArgs(args, "HTTP"); - - // Initialisieren des Clients - HTTPSServerAuth httpClient = new HTTPSServerAuth(args); - - // Ausf�hren der Serviceabfrage - httpClient.execute(args[0]); - } - catch (Exception e) - { - e.printStackTrace(); - } - } - - /** - * Erzeugt den MOA Client. Es erfolgt die Auswertung der �bergebenen Aufrufparameter. - * - * @param args Die Aufrufparameter fuer das Beispiel. Siehe {@link HTTPSServerAuth#main(String[])}. - * - * @throws Exception wenn der MOA Client mit den uebergebenen Aufrufparametern nicht korrekt erzeugt - * werden konnte. - */ - protected HTTPSServerAuth(String[] args) throws Exception - { - super(args); - configureSSL(); - } - - /** - * Konfiguriert JSSE fuer eine SSL-Verbindung mit Serverauthentisierung. - * - * @throws Exception wenn die Konfiguration von JSSE fehlschlaegt. - */ - protected void configureSSL() throws Exception - { - // Aktivieren Sie die n�chste Zeile f�r detailliertes Logging des SSL-Verbindungsaufbaus - // System.setProperty("javax.net.debug", "all"); - - // Setzen des korrekten Protokoll-Handlers f�r https - Security.addProvider(new Provider()); - System.setProperty(HANDLER, "com.sun.net.ssl.internal.www.protocol"); - - // Konfiguriere Trust-Store (enth�lt SSL-Zertifikat des MOA Services, dem vertraut wird) - System.setProperty(TRUSTSTORETYPE, getProperty("ssl.truststore.type")); - System.setProperty(TRUSTSTORE, getProperty("ssl.truststore.loc")); - System.setProperty(TRUSTSTOREPASSWORD, getProperty("ssl.truststore.pwd")); - } -}
\ No newline at end of file diff --git a/moaSig/handbook/conf/moa-spss/certstore/01540E2704537AA810D671E1C4106FD8821EB52A/C2556DADDF68A9EEF7F5C14A24CA33BCA930B201 b/moaSig/handbook/conf/moa-spss/certstore/01540E2704537AA810D671E1C4106FD8821EB52A/C2556DADDF68A9EEF7F5C14A24CA33BCA930B201 Binary files differdeleted file mode 100644 index 592c962..0000000 --- a/moaSig/handbook/conf/moa-spss/certstore/01540E2704537AA810D671E1C4106FD8821EB52A/C2556DADDF68A9EEF7F5C14A24CA33BCA930B201 +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/certstore/032F2123890A879585CE96674CA4C37B55986729/E1201A308CC10323C27D9084B048996E44B8F710 b/moaSig/handbook/conf/moa-spss/certstore/032F2123890A879585CE96674CA4C37B55986729/E1201A308CC10323C27D9084B048996E44B8F710 Binary files differdeleted file mode 100644 index a7948e4..0000000 --- a/moaSig/handbook/conf/moa-spss/certstore/032F2123890A879585CE96674CA4C37B55986729/E1201A308CC10323C27D9084B048996E44B8F710 +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/certstore/04462EF01783744F9F4CDE3705FD86D488697C9F/D44EED7580C7792242D73E267A89C7DB25E4BD08 b/moaSig/handbook/conf/moa-spss/certstore/04462EF01783744F9F4CDE3705FD86D488697C9F/D44EED7580C7792242D73E267A89C7DB25E4BD08 Binary files differdeleted file mode 100644 index 7343413..0000000 --- a/moaSig/handbook/conf/moa-spss/certstore/04462EF01783744F9F4CDE3705FD86D488697C9F/D44EED7580C7792242D73E267A89C7DB25E4BD08 +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/certstore/083E1A0528C48475951A6610360D813E2713DCC7/7E691392F741B7E4B4AA9A76D75851BDE18BE5A7 b/moaSig/handbook/conf/moa-spss/certstore/083E1A0528C48475951A6610360D813E2713DCC7/7E691392F741B7E4B4AA9A76D75851BDE18BE5A7 Binary files differdeleted file mode 100644 index 8c43477..0000000 --- a/moaSig/handbook/conf/moa-spss/certstore/083E1A0528C48475951A6610360D813E2713DCC7/7E691392F741B7E4B4AA9A76D75851BDE18BE5A7 +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/certstore/0889EBEC55D9E34E782E6D3C250840EB932EEA2F/9CD9ADF04626E7E8C9A1C8DACE3B0B8A2979C726 b/moaSig/handbook/conf/moa-spss/certstore/0889EBEC55D9E34E782E6D3C250840EB932EEA2F/9CD9ADF04626E7E8C9A1C8DACE3B0B8A2979C726 Binary files differdeleted file mode 100644 index 3af27c0..0000000 --- a/moaSig/handbook/conf/moa-spss/certstore/0889EBEC55D9E34E782E6D3C250840EB932EEA2F/9CD9ADF04626E7E8C9A1C8DACE3B0B8A2979C726 +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/certstore/0A5C2C9276B649D088A86BD9FD97E2B95658481D/08CAE18D8CFF86144CB8FFD671B916CAAB8BD4E9 b/moaSig/handbook/conf/moa-spss/certstore/0A5C2C9276B649D088A86BD9FD97E2B95658481D/08CAE18D8CFF86144CB8FFD671B916CAAB8BD4E9 Binary files differdeleted file mode 100644 index cac4409..0000000 --- a/moaSig/handbook/conf/moa-spss/certstore/0A5C2C9276B649D088A86BD9FD97E2B95658481D/08CAE18D8CFF86144CB8FFD671B916CAAB8BD4E9 +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/certstore/0AF04E7099C9829BD1F8437362BA0036E0705C4D/0F843FB1E0C626540BE638B79A2987E2611CE630 b/moaSig/handbook/conf/moa-spss/certstore/0AF04E7099C9829BD1F8437362BA0036E0705C4D/0F843FB1E0C626540BE638B79A2987E2611CE630 Binary files differdeleted file mode 100644 index 29d9355..0000000 --- a/moaSig/handbook/conf/moa-spss/certstore/0AF04E7099C9829BD1F8437362BA0036E0705C4D/0F843FB1E0C626540BE638B79A2987E2611CE630 +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/certstore/0AF04E7099C9829BD1F8437362BA0036E0705C4D/69F21C82DC9A7A940ACEC414593E59C9E61E522F b/moaSig/handbook/conf/moa-spss/certstore/0AF04E7099C9829BD1F8437362BA0036E0705C4D/69F21C82DC9A7A940ACEC414593E59C9E61E522F Binary files differdeleted file mode 100644 index 2a88295..0000000 --- a/moaSig/handbook/conf/moa-spss/certstore/0AF04E7099C9829BD1F8437362BA0036E0705C4D/69F21C82DC9A7A940ACEC414593E59C9E61E522F +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/certstore/0AF04E7099C9829BD1F8437362BA0036E0705C4D/FC72939DC06EDDF8C51549ECF00AC92BF2B39F35 b/moaSig/handbook/conf/moa-spss/certstore/0AF04E7099C9829BD1F8437362BA0036E0705C4D/FC72939DC06EDDF8C51549ECF00AC92BF2B39F35 Binary files differdeleted file mode 100644 index 84a1690..0000000 --- a/moaSig/handbook/conf/moa-spss/certstore/0AF04E7099C9829BD1F8437362BA0036E0705C4D/FC72939DC06EDDF8C51549ECF00AC92BF2B39F35 +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/certstore/0BF5B0C4B029051D91A83EE9CCD0266A52D867A6/341F53B3B17518213B1856BFAB3CEFBE948AFC0D b/moaSig/handbook/conf/moa-spss/certstore/0BF5B0C4B029051D91A83EE9CCD0266A52D867A6/341F53B3B17518213B1856BFAB3CEFBE948AFC0D Binary files differdeleted file mode 100644 index 3250c6a..0000000 --- a/moaSig/handbook/conf/moa-spss/certstore/0BF5B0C4B029051D91A83EE9CCD0266A52D867A6/341F53B3B17518213B1856BFAB3CEFBE948AFC0D +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/certstore/0BF5B0C4B029051D91A83EE9CCD0266A52D867A6/3A24040C01D5C9A4980575BFF99A25E534A056CB b/moaSig/handbook/conf/moa-spss/certstore/0BF5B0C4B029051D91A83EE9CCD0266A52D867A6/3A24040C01D5C9A4980575BFF99A25E534A056CB Binary files differdeleted file mode 100644 index 3848a2b..0000000 --- a/moaSig/handbook/conf/moa-spss/certstore/0BF5B0C4B029051D91A83EE9CCD0266A52D867A6/3A24040C01D5C9A4980575BFF99A25E534A056CB +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/certstore/0FE419AB943E7E5C6A7190CC6BBE8E3F914C658A/FB356CEF4406D1F135E3FC59026B338D3F518F9A b/moaSig/handbook/conf/moa-spss/certstore/0FE419AB943E7E5C6A7190CC6BBE8E3F914C658A/FB356CEF4406D1F135E3FC59026B338D3F518F9A Binary files differdeleted file mode 100644 index 04c6ea3..0000000 --- a/moaSig/handbook/conf/moa-spss/certstore/0FE419AB943E7E5C6A7190CC6BBE8E3F914C658A/FB356CEF4406D1F135E3FC59026B338D3F518F9A +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/certstore/10D143E18C03A4A29F783D26F2F67E3B64C35CB0/BE9D654B0DE0F3CC53CA36703DD9D9049A5F9330 b/moaSig/handbook/conf/moa-spss/certstore/10D143E18C03A4A29F783D26F2F67E3B64C35CB0/BE9D654B0DE0F3CC53CA36703DD9D9049A5F9330 Binary files differdeleted file mode 100644 index 32893db..0000000 --- a/moaSig/handbook/conf/moa-spss/certstore/10D143E18C03A4A29F783D26F2F67E3B64C35CB0/BE9D654B0DE0F3CC53CA36703DD9D9049A5F9330 +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/certstore/10F17BDACD8DEAA1E8F23FBEAE7B3EC3D9773D1D/E7340D1FB627D8917A9C0D23F21515C441BF1214 b/moaSig/handbook/conf/moa-spss/certstore/10F17BDACD8DEAA1E8F23FBEAE7B3EC3D9773D1D/E7340D1FB627D8917A9C0D23F21515C441BF1214 Binary files differdeleted file mode 100644 index fd23a38..0000000 --- a/moaSig/handbook/conf/moa-spss/certstore/10F17BDACD8DEAA1E8F23FBEAE7B3EC3D9773D1D/E7340D1FB627D8917A9C0D23F21515C441BF1214 +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/certstore/125E4AC6B38C1E0BF34BF7D927CBB947E35141E8/2CA36B76BC6CCDC29296111A4EFCAFC0553BBC7D b/moaSig/handbook/conf/moa-spss/certstore/125E4AC6B38C1E0BF34BF7D927CBB947E35141E8/2CA36B76BC6CCDC29296111A4EFCAFC0553BBC7D Binary files differdeleted file mode 100644 index 1a31067..0000000 --- a/moaSig/handbook/conf/moa-spss/certstore/125E4AC6B38C1E0BF34BF7D927CBB947E35141E8/2CA36B76BC6CCDC29296111A4EFCAFC0553BBC7D +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/certstore/15A052B0DC4E0333656264E2FEEBE45B1BE449BF/386C1663C6390BC288DC171522439210AF361958 b/moaSig/handbook/conf/moa-spss/certstore/15A052B0DC4E0333656264E2FEEBE45B1BE449BF/386C1663C6390BC288DC171522439210AF361958 Binary files differdeleted file mode 100644 index a5e651f..0000000 --- a/moaSig/handbook/conf/moa-spss/certstore/15A052B0DC4E0333656264E2FEEBE45B1BE449BF/386C1663C6390BC288DC171522439210AF361958 +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/certstore/1607988A938D3D339F40AFB567384BC5B7540935/9FDCFE5A082FD69BF5D9E73C25FBE9EA1AC0ACF2 b/moaSig/handbook/conf/moa-spss/certstore/1607988A938D3D339F40AFB567384BC5B7540935/9FDCFE5A082FD69BF5D9E73C25FBE9EA1AC0ACF2 Binary files differdeleted file mode 100644 index 28cb48b..0000000 --- a/moaSig/handbook/conf/moa-spss/certstore/1607988A938D3D339F40AFB567384BC5B7540935/9FDCFE5A082FD69BF5D9E73C25FBE9EA1AC0ACF2 +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/certstore/1A283D1183DB82A548427B4F19E99E7A8EA728D7/49969819654C230ECDF779ABB9629A211FCC43D6 b/moaSig/handbook/conf/moa-spss/certstore/1A283D1183DB82A548427B4F19E99E7A8EA728D7/49969819654C230ECDF779ABB9629A211FCC43D6 Binary files differdeleted file mode 100644 index bdfcb7a..0000000 --- a/moaSig/handbook/conf/moa-spss/certstore/1A283D1183DB82A548427B4F19E99E7A8EA728D7/49969819654C230ECDF779ABB9629A211FCC43D6 +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/certstore/1BF3C1D2767F5C333AD5531531FEE3A712935B73/D0AF386E182F00983637F97C0A5F4708F9F641A7 b/moaSig/handbook/conf/moa-spss/certstore/1BF3C1D2767F5C333AD5531531FEE3A712935B73/D0AF386E182F00983637F97C0A5F4708F9F641A7 Binary files differdeleted file mode 100644 index eaac351..0000000 --- a/moaSig/handbook/conf/moa-spss/certstore/1BF3C1D2767F5C333AD5531531FEE3A712935B73/D0AF386E182F00983637F97C0A5F4708F9F641A7 +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/certstore/20DD04B052D2D364E5FF851A3FD314F0FD91253E/6814C7316CEA7191C9CB3BE58199B4A957210D9C b/moaSig/handbook/conf/moa-spss/certstore/20DD04B052D2D364E5FF851A3FD314F0FD91253E/6814C7316CEA7191C9CB3BE58199B4A957210D9C Binary files differdeleted file mode 100644 index 4dd2c49..0000000 --- a/moaSig/handbook/conf/moa-spss/certstore/20DD04B052D2D364E5FF851A3FD314F0FD91253E/6814C7316CEA7191C9CB3BE58199B4A957210D9C +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/certstore/20EF2EC4E04DF4D51A8F10DFE4249C0024C7A28C/5F06F65C714047E3B282AEC427C35AB703E49D8E b/moaSig/handbook/conf/moa-spss/certstore/20EF2EC4E04DF4D51A8F10DFE4249C0024C7A28C/5F06F65C714047E3B282AEC427C35AB703E49D8E Binary files differdeleted file mode 100644 index 39e377e..0000000 --- a/moaSig/handbook/conf/moa-spss/certstore/20EF2EC4E04DF4D51A8F10DFE4249C0024C7A28C/5F06F65C714047E3B282AEC427C35AB703E49D8E +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/certstore/20EF2EC4E04DF4D51A8F10DFE4249C0024C7A28C/D45360060761812D33DE294EAC1573F6DE12A208 b/moaSig/handbook/conf/moa-spss/certstore/20EF2EC4E04DF4D51A8F10DFE4249C0024C7A28C/D45360060761812D33DE294EAC1573F6DE12A208 Binary files differdeleted file mode 100644 index 0a1fcff..0000000 --- a/moaSig/handbook/conf/moa-spss/certstore/20EF2EC4E04DF4D51A8F10DFE4249C0024C7A28C/D45360060761812D33DE294EAC1573F6DE12A208 +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/certstore/22973CFC20EA68162A0B2E837D45FB8266ACDBCF/C529469053D9F95810A8F7F2DB9A6596A7655732 b/moaSig/handbook/conf/moa-spss/certstore/22973CFC20EA68162A0B2E837D45FB8266ACDBCF/C529469053D9F95810A8F7F2DB9A6596A7655732 Binary files differdeleted file mode 100644 index 13abede..0000000 --- a/moaSig/handbook/conf/moa-spss/certstore/22973CFC20EA68162A0B2E837D45FB8266ACDBCF/C529469053D9F95810A8F7F2DB9A6596A7655732 +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/certstore/238ACC1D03DA5A2E7E580D760FB3EE218FDC5A97/D3C063F219ED073E34AD5D750B327629FFD59AF2 b/moaSig/handbook/conf/moa-spss/certstore/238ACC1D03DA5A2E7E580D760FB3EE218FDC5A97/D3C063F219ED073E34AD5D750B327629FFD59AF2 Binary files differdeleted file mode 100644 index 33e7763..0000000 --- a/moaSig/handbook/conf/moa-spss/certstore/238ACC1D03DA5A2E7E580D760FB3EE218FDC5A97/D3C063F219ED073E34AD5D750B327629FFD59AF2 +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/certstore/23A16796B3D718035F1E0DB209A42938767631DA/1C43C0BA36CC8DE659180B2FAC9A6F54430D5941 b/moaSig/handbook/conf/moa-spss/certstore/23A16796B3D718035F1E0DB209A42938767631DA/1C43C0BA36CC8DE659180B2FAC9A6F54430D5941 Binary files differdeleted file mode 100644 index d2e7db6..0000000 --- a/moaSig/handbook/conf/moa-spss/certstore/23A16796B3D718035F1E0DB209A42938767631DA/1C43C0BA36CC8DE659180B2FAC9A6F54430D5941 +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/certstore/23A16796B3D718035F1E0DB209A42938767631DA/AC36A78C66FEC87CC0FD2C32B49214C65676E0C5 b/moaSig/handbook/conf/moa-spss/certstore/23A16796B3D718035F1E0DB209A42938767631DA/AC36A78C66FEC87CC0FD2C32B49214C65676E0C5 Binary files differdeleted file mode 100644 index f2f1c65..0000000 --- a/moaSig/handbook/conf/moa-spss/certstore/23A16796B3D718035F1E0DB209A42938767631DA/AC36A78C66FEC87CC0FD2C32B49214C65676E0C5 +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/certstore/23A16796B3D718035F1E0DB209A42938767631DA/C92238A7178A6C61F8BACA22D6CF7E50772BA9F0 b/moaSig/handbook/conf/moa-spss/certstore/23A16796B3D718035F1E0DB209A42938767631DA/C92238A7178A6C61F8BACA22D6CF7E50772BA9F0 Binary files differdeleted file mode 100644 index 476a3ef..0000000 --- a/moaSig/handbook/conf/moa-spss/certstore/23A16796B3D718035F1E0DB209A42938767631DA/C92238A7178A6C61F8BACA22D6CF7E50772BA9F0 +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/certstore/23A16796B3D718035F1E0DB209A42938767631DA/DFAE695342AC81A521025904406884399822B233 b/moaSig/handbook/conf/moa-spss/certstore/23A16796B3D718035F1E0DB209A42938767631DA/DFAE695342AC81A521025904406884399822B233 Binary files differdeleted file mode 100644 index 5c88b66..0000000 --- a/moaSig/handbook/conf/moa-spss/certstore/23A16796B3D718035F1E0DB209A42938767631DA/DFAE695342AC81A521025904406884399822B233 +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/certstore/2962CDAADFA0BF8EE53B80870C53E551A43EA72A/12B06E039F1A36D8238AFC508009E1ADF88BF66F b/moaSig/handbook/conf/moa-spss/certstore/2962CDAADFA0BF8EE53B80870C53E551A43EA72A/12B06E039F1A36D8238AFC508009E1ADF88BF66F Binary files differdeleted file mode 100644 index 4d18522..0000000 --- a/moaSig/handbook/conf/moa-spss/certstore/2962CDAADFA0BF8EE53B80870C53E551A43EA72A/12B06E039F1A36D8238AFC508009E1ADF88BF66F +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/certstore/2C976220B378E08DF5E68CBC54C05CE41224FD29/0CC37CC35E18F9909E43E4E9894D0CDF06EE9A38 b/moaSig/handbook/conf/moa-spss/certstore/2C976220B378E08DF5E68CBC54C05CE41224FD29/0CC37CC35E18F9909E43E4E9894D0CDF06EE9A38 Binary files differdeleted file mode 100644 index 69a8e48..0000000 --- a/moaSig/handbook/conf/moa-spss/certstore/2C976220B378E08DF5E68CBC54C05CE41224FD29/0CC37CC35E18F9909E43E4E9894D0CDF06EE9A38 +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/certstore/2F5DA022AAFF668F34C35A80049D690F3CFE3040/D62327E6B19B7968A8BE6588DEAB0BC0DB684D8D b/moaSig/handbook/conf/moa-spss/certstore/2F5DA022AAFF668F34C35A80049D690F3CFE3040/D62327E6B19B7968A8BE6588DEAB0BC0DB684D8D Binary files differdeleted file mode 100644 index 807fa78..0000000 --- a/moaSig/handbook/conf/moa-spss/certstore/2F5DA022AAFF668F34C35A80049D690F3CFE3040/D62327E6B19B7968A8BE6588DEAB0BC0DB684D8D +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/certstore/31B5BA02D476873C5220CDCFA0C095C4A31DEFDF/88D6151358A5E3C81D7AE1A536121DC03011BC03 b/moaSig/handbook/conf/moa-spss/certstore/31B5BA02D476873C5220CDCFA0C095C4A31DEFDF/88D6151358A5E3C81D7AE1A536121DC03011BC03 Binary files differdeleted file mode 100644 index 376d075..0000000 --- a/moaSig/handbook/conf/moa-spss/certstore/31B5BA02D476873C5220CDCFA0C095C4A31DEFDF/88D6151358A5E3C81D7AE1A536121DC03011BC03 +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/certstore/328AA897B7E6270202B2FC0889FF88D66BB41122/35A40EF932B1F23980E2C672FC939E91EEBD0317 b/moaSig/handbook/conf/moa-spss/certstore/328AA897B7E6270202B2FC0889FF88D66BB41122/35A40EF932B1F23980E2C672FC939E91EEBD0317 Binary files differdeleted file mode 100644 index 73553b9..0000000 --- a/moaSig/handbook/conf/moa-spss/certstore/328AA897B7E6270202B2FC0889FF88D66BB41122/35A40EF932B1F23980E2C672FC939E91EEBD0317 +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/certstore/3314CE3E42175EACC28D57C35F192430BBADAC1A/B1D0BC027906A3B7E7518C93ACB26D978233ED27 b/moaSig/handbook/conf/moa-spss/certstore/3314CE3E42175EACC28D57C35F192430BBADAC1A/B1D0BC027906A3B7E7518C93ACB26D978233ED27 Binary files differdeleted file mode 100644 index 5171276..0000000 --- a/moaSig/handbook/conf/moa-spss/certstore/3314CE3E42175EACC28D57C35F192430BBADAC1A/B1D0BC027906A3B7E7518C93ACB26D978233ED27 +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/certstore/337F895A0435AA7E2629C5282B5A0DBBE19EE1C7/75F792DE2CF544007F470F1B924961C2BD2EF517 b/moaSig/handbook/conf/moa-spss/certstore/337F895A0435AA7E2629C5282B5A0DBBE19EE1C7/75F792DE2CF544007F470F1B924961C2BD2EF517 Binary files differdeleted file mode 100644 index f8a8957..0000000 --- a/moaSig/handbook/conf/moa-spss/certstore/337F895A0435AA7E2629C5282B5A0DBBE19EE1C7/75F792DE2CF544007F470F1B924961C2BD2EF517 +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/certstore/349CA7B279F4EF3C085B1E8D08AA5DE3EC586188/08BBE8E906397158FA4BF4058BBBDB5EA11BAE82 b/moaSig/handbook/conf/moa-spss/certstore/349CA7B279F4EF3C085B1E8D08AA5DE3EC586188/08BBE8E906397158FA4BF4058BBBDB5EA11BAE82 Binary files differdeleted file mode 100644 index 167c364..0000000 --- a/moaSig/handbook/conf/moa-spss/certstore/349CA7B279F4EF3C085B1E8D08AA5DE3EC586188/08BBE8E906397158FA4BF4058BBBDB5EA11BAE82 +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/certstore/3868959083AA986194E58E73798BCD724D785A0E/66AB66128A44574873E54E6584E450C4EB3B9A1E b/moaSig/handbook/conf/moa-spss/certstore/3868959083AA986194E58E73798BCD724D785A0E/66AB66128A44574873E54E6584E450C4EB3B9A1E Binary files differdeleted file mode 100644 index ed5ba19..0000000 --- a/moaSig/handbook/conf/moa-spss/certstore/3868959083AA986194E58E73798BCD724D785A0E/66AB66128A44574873E54E6584E450C4EB3B9A1E +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/certstore/3A095C38EB5D5824FE61BE43F9CDF6515DC94805/65698A39E03FF00FD552D4AD99FB290C2B9D4BEA b/moaSig/handbook/conf/moa-spss/certstore/3A095C38EB5D5824FE61BE43F9CDF6515DC94805/65698A39E03FF00FD552D4AD99FB290C2B9D4BEA Binary files differdeleted file mode 100644 index 836ba37..0000000 --- a/moaSig/handbook/conf/moa-spss/certstore/3A095C38EB5D5824FE61BE43F9CDF6515DC94805/65698A39E03FF00FD552D4AD99FB290C2B9D4BEA +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/certstore/3B2F8C424AA88CA305C519FDEFCF29DDB7E96AE2/04CF0318BA0B54DD76E1DE143445210BDD32E299 b/moaSig/handbook/conf/moa-spss/certstore/3B2F8C424AA88CA305C519FDEFCF29DDB7E96AE2/04CF0318BA0B54DD76E1DE143445210BDD32E299 Binary files differdeleted file mode 100644 index 8d33015..0000000 --- a/moaSig/handbook/conf/moa-spss/certstore/3B2F8C424AA88CA305C519FDEFCF29DDB7E96AE2/04CF0318BA0B54DD76E1DE143445210BDD32E299 +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/certstore/3B2F8C424AA88CA305C519FDEFCF29DDB7E96AE2/0F5A0342F5CD448799C3C6D178607E3F2B5BCB8F b/moaSig/handbook/conf/moa-spss/certstore/3B2F8C424AA88CA305C519FDEFCF29DDB7E96AE2/0F5A0342F5CD448799C3C6D178607E3F2B5BCB8F Binary files differdeleted file mode 100644 index 69de756..0000000 --- a/moaSig/handbook/conf/moa-spss/certstore/3B2F8C424AA88CA305C519FDEFCF29DDB7E96AE2/0F5A0342F5CD448799C3C6D178607E3F2B5BCB8F +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/certstore/3B2F8C424AA88CA305C519FDEFCF29DDB7E96AE2/51A44C28F313E3F9CB5E7C0A1E0E0DD2843758AE b/moaSig/handbook/conf/moa-spss/certstore/3B2F8C424AA88CA305C519FDEFCF29DDB7E96AE2/51A44C28F313E3F9CB5E7C0A1E0E0DD2843758AE Binary files differdeleted file mode 100644 index efa2817..0000000 --- a/moaSig/handbook/conf/moa-spss/certstore/3B2F8C424AA88CA305C519FDEFCF29DDB7E96AE2/51A44C28F313E3F9CB5E7C0A1E0E0DD2843758AE +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/certstore/3B2F8C424AA88CA305C519FDEFCF29DDB7E96AE2/9E0512DD61DA5949D1D8631C3F19D75F496C3733 b/moaSig/handbook/conf/moa-spss/certstore/3B2F8C424AA88CA305C519FDEFCF29DDB7E96AE2/9E0512DD61DA5949D1D8631C3F19D75F496C3733 Binary files differdeleted file mode 100644 index 289fc21..0000000 --- a/moaSig/handbook/conf/moa-spss/certstore/3B2F8C424AA88CA305C519FDEFCF29DDB7E96AE2/9E0512DD61DA5949D1D8631C3F19D75F496C3733 +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/certstore/3B2F8C424AA88CA305C519FDEFCF29DDB7E96AE2/E6E6FC88719177C9B7421825757C5E47BCAC85F6 b/moaSig/handbook/conf/moa-spss/certstore/3B2F8C424AA88CA305C519FDEFCF29DDB7E96AE2/E6E6FC88719177C9B7421825757C5E47BCAC85F6 Binary files differdeleted file mode 100644 index b7d4b08..0000000 --- a/moaSig/handbook/conf/moa-spss/certstore/3B2F8C424AA88CA305C519FDEFCF29DDB7E96AE2/E6E6FC88719177C9B7421825757C5E47BCAC85F6 +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/certstore/3B76D7A5CE7EC6022D7990CFEA534C908717DF54/C0C699EFE6E837CB5E4CFC3A61077617A22C1A9E b/moaSig/handbook/conf/moa-spss/certstore/3B76D7A5CE7EC6022D7990CFEA534C908717DF54/C0C699EFE6E837CB5E4CFC3A61077617A22C1A9E Binary files differdeleted file mode 100644 index b2bedda..0000000 --- a/moaSig/handbook/conf/moa-spss/certstore/3B76D7A5CE7EC6022D7990CFEA534C908717DF54/C0C699EFE6E837CB5E4CFC3A61077617A22C1A9E +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/certstore/3C025917C3C938FEB856E5440D28E4A568C311DC/A2F138CD16AD04BC3F145E3780BFA169BFDA263B b/moaSig/handbook/conf/moa-spss/certstore/3C025917C3C938FEB856E5440D28E4A568C311DC/A2F138CD16AD04BC3F145E3780BFA169BFDA263B Binary files differdeleted file mode 100644 index 414123e..0000000 --- a/moaSig/handbook/conf/moa-spss/certstore/3C025917C3C938FEB856E5440D28E4A568C311DC/A2F138CD16AD04BC3F145E3780BFA169BFDA263B +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/certstore/3C627C9D89A5BFB5E4E385982DF33B7E7F6E8D2D/C5AC86EC5B771BEBDF8B6E040F109A1186E229B9 b/moaSig/handbook/conf/moa-spss/certstore/3C627C9D89A5BFB5E4E385982DF33B7E7F6E8D2D/C5AC86EC5B771BEBDF8B6E040F109A1186E229B9 Binary files differdeleted file mode 100644 index 54893c9..0000000 --- a/moaSig/handbook/conf/moa-spss/certstore/3C627C9D89A5BFB5E4E385982DF33B7E7F6E8D2D/C5AC86EC5B771BEBDF8B6E040F109A1186E229B9 +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/certstore/3C7CE93947421CB66603DC7DBAB0F04C4788382F/23E594945195F2414803B4D564D2A3A3F5D88B8C b/moaSig/handbook/conf/moa-spss/certstore/3C7CE93947421CB66603DC7DBAB0F04C4788382F/23E594945195F2414803B4D564D2A3A3F5D88B8C Binary files differdeleted file mode 100644 index 8588ce5..0000000 --- a/moaSig/handbook/conf/moa-spss/certstore/3C7CE93947421CB66603DC7DBAB0F04C4788382F/23E594945195F2414803B4D564D2A3A3F5D88B8C +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/certstore/405D86C9D39B1061885678ED90780A0F04A76327/6F61A0C50B4E6ED821F032A4DF3DA7DDDFD2FE6A b/moaSig/handbook/conf/moa-spss/certstore/405D86C9D39B1061885678ED90780A0F04A76327/6F61A0C50B4E6ED821F032A4DF3DA7DDDFD2FE6A Binary files differdeleted file mode 100644 index 141b05e..0000000 --- a/moaSig/handbook/conf/moa-spss/certstore/405D86C9D39B1061885678ED90780A0F04A76327/6F61A0C50B4E6ED821F032A4DF3DA7DDDFD2FE6A +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/certstore/4224231A54F64581FBA2AB6ED82ADE467F144BDC/65EF37033859C2F709A64086D3A5BD1B8F1A85A4 b/moaSig/handbook/conf/moa-spss/certstore/4224231A54F64581FBA2AB6ED82ADE467F144BDC/65EF37033859C2F709A64086D3A5BD1B8F1A85A4 Binary files differdeleted file mode 100644 index 6e17b9d..0000000 --- a/moaSig/handbook/conf/moa-spss/certstore/4224231A54F64581FBA2AB6ED82ADE467F144BDC/65EF37033859C2F709A64086D3A5BD1B8F1A85A4 +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/certstore/427765A998398EE1B138ABDBA20313DC4A3738A0/07298E24461954E4696D2ED9FFB7D52B57F325B3 b/moaSig/handbook/conf/moa-spss/certstore/427765A998398EE1B138ABDBA20313DC4A3738A0/07298E24461954E4696D2ED9FFB7D52B57F325B3 Binary files differdeleted file mode 100644 index 33e1ee9..0000000 --- a/moaSig/handbook/conf/moa-spss/certstore/427765A998398EE1B138ABDBA20313DC4A3738A0/07298E24461954E4696D2ED9FFB7D52B57F325B3 +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/certstore/427765A998398EE1B138ABDBA20313DC4A3738A0/B630DB0DB940BCE72B2E09868B4CA0A92BBC1D15 b/moaSig/handbook/conf/moa-spss/certstore/427765A998398EE1B138ABDBA20313DC4A3738A0/B630DB0DB940BCE72B2E09868B4CA0A92BBC1D15 Binary files differdeleted file mode 100644 index 694e682..0000000 --- a/moaSig/handbook/conf/moa-spss/certstore/427765A998398EE1B138ABDBA20313DC4A3738A0/B630DB0DB940BCE72B2E09868B4CA0A92BBC1D15 +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/certstore/45E2F3F807C6EAB9EDC1B3250F7558CA12A063DE/3A77E9B577661D99F9BBA5A352B29C7FF58A3D26 b/moaSig/handbook/conf/moa-spss/certstore/45E2F3F807C6EAB9EDC1B3250F7558CA12A063DE/3A77E9B577661D99F9BBA5A352B29C7FF58A3D26 Binary files differdeleted file mode 100644 index 55707d6..0000000 --- a/moaSig/handbook/conf/moa-spss/certstore/45E2F3F807C6EAB9EDC1B3250F7558CA12A063DE/3A77E9B577661D99F9BBA5A352B29C7FF58A3D26 +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/certstore/47ED4C584F9DCD54A6C2925252C5603ADAC93F49/84E4E75DBB2FD6397E6ABBD27FBE16D5BA71923E b/moaSig/handbook/conf/moa-spss/certstore/47ED4C584F9DCD54A6C2925252C5603ADAC93F49/84E4E75DBB2FD6397E6ABBD27FBE16D5BA71923E Binary files differdeleted file mode 100644 index 3be7b6a..0000000 --- a/moaSig/handbook/conf/moa-spss/certstore/47ED4C584F9DCD54A6C2925252C5603ADAC93F49/84E4E75DBB2FD6397E6ABBD27FBE16D5BA71923E +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/certstore/487F4DEE9E63DADEB4CAAB07E0E166ACC9F584B6/9891BBEA9FDA665EEEC31C403A00A5CA5628D0FA b/moaSig/handbook/conf/moa-spss/certstore/487F4DEE9E63DADEB4CAAB07E0E166ACC9F584B6/9891BBEA9FDA665EEEC31C403A00A5CA5628D0FA Binary files differdeleted file mode 100644 index 4e18de8..0000000 --- a/moaSig/handbook/conf/moa-spss/certstore/487F4DEE9E63DADEB4CAAB07E0E166ACC9F584B6/9891BBEA9FDA665EEEC31C403A00A5CA5628D0FA +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/certstore/4C7CAA9FE9C08078541DA31B76FF0951E73480FF/C23FC1895966021249B35412C0C8C56D107732DE b/moaSig/handbook/conf/moa-spss/certstore/4C7CAA9FE9C08078541DA31B76FF0951E73480FF/C23FC1895966021249B35412C0C8C56D107732DE Binary files differdeleted file mode 100644 index c4d97cd..0000000 --- a/moaSig/handbook/conf/moa-spss/certstore/4C7CAA9FE9C08078541DA31B76FF0951E73480FF/C23FC1895966021249B35412C0C8C56D107732DE +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/certstore/52B42552A440A54C21A39D46D7F176AF28BEB5AA/51AC8CFF36818AA25498A293DF48EBCFFFF6D0B4 b/moaSig/handbook/conf/moa-spss/certstore/52B42552A440A54C21A39D46D7F176AF28BEB5AA/51AC8CFF36818AA25498A293DF48EBCFFFF6D0B4 Binary files differdeleted file mode 100644 index 9b2ee0f..0000000 --- a/moaSig/handbook/conf/moa-spss/certstore/52B42552A440A54C21A39D46D7F176AF28BEB5AA/51AC8CFF36818AA25498A293DF48EBCFFFF6D0B4 +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/certstore/53CF955B19387A437659158BC050B7BC4B238132/F5F2456D79490C268569970E900C68FD1C7DC8E5 b/moaSig/handbook/conf/moa-spss/certstore/53CF955B19387A437659158BC050B7BC4B238132/F5F2456D79490C268569970E900C68FD1C7DC8E5 Binary files differdeleted file mode 100644 index b2a1e14..0000000 --- a/moaSig/handbook/conf/moa-spss/certstore/53CF955B19387A437659158BC050B7BC4B238132/F5F2456D79490C268569970E900C68FD1C7DC8E5 +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/certstore/54A361D38F73772377E15E145772C03EC0197142/F86591A6D86718886A0234B8E54E21AAEA63E24B b/moaSig/handbook/conf/moa-spss/certstore/54A361D38F73772377E15E145772C03EC0197142/F86591A6D86718886A0234B8E54E21AAEA63E24B Binary files differdeleted file mode 100644 index 2bf4ad7..0000000 --- a/moaSig/handbook/conf/moa-spss/certstore/54A361D38F73772377E15E145772C03EC0197142/F86591A6D86718886A0234B8E54E21AAEA63E24B +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/certstore/550E9627E9094A2D1BB6385821334D02122BCF26/B7BCA7BC3C41FD0DC835175486FAB3FB4626EC0F b/moaSig/handbook/conf/moa-spss/certstore/550E9627E9094A2D1BB6385821334D02122BCF26/B7BCA7BC3C41FD0DC835175486FAB3FB4626EC0F Binary files differdeleted file mode 100644 index 5dd9558..0000000 --- a/moaSig/handbook/conf/moa-spss/certstore/550E9627E9094A2D1BB6385821334D02122BCF26/B7BCA7BC3C41FD0DC835175486FAB3FB4626EC0F +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/certstore/562428A359B1CC3A820ABCC9C8F625CBB6A6A510/620127A8E5886A4805403977C3EF7D5EAF881526 b/moaSig/handbook/conf/moa-spss/certstore/562428A359B1CC3A820ABCC9C8F625CBB6A6A510/620127A8E5886A4805403977C3EF7D5EAF881526 Binary files differdeleted file mode 100644 index da38ce0..0000000 --- a/moaSig/handbook/conf/moa-spss/certstore/562428A359B1CC3A820ABCC9C8F625CBB6A6A510/620127A8E5886A4805403977C3EF7D5EAF881526 +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/certstore/562428A359B1CC3A820ABCC9C8F625CBB6A6A510/FCD9E881BCCCB9352EEF337C8D4EAAD65C4EC830 b/moaSig/handbook/conf/moa-spss/certstore/562428A359B1CC3A820ABCC9C8F625CBB6A6A510/FCD9E881BCCCB9352EEF337C8D4EAAD65C4EC830 Binary files differdeleted file mode 100644 index 7e9fd5b..0000000 --- a/moaSig/handbook/conf/moa-spss/certstore/562428A359B1CC3A820ABCC9C8F625CBB6A6A510/FCD9E881BCCCB9352EEF337C8D4EAAD65C4EC830 +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/certstore/5650A465FD3B5EF83639E11F324A2A0EA98AF935/4B5B0C2A0BF944CD467A6140F8C782E2BE9D15F9 b/moaSig/handbook/conf/moa-spss/certstore/5650A465FD3B5EF83639E11F324A2A0EA98AF935/4B5B0C2A0BF944CD467A6140F8C782E2BE9D15F9 Binary files differdeleted file mode 100644 index 6409186..0000000 --- a/moaSig/handbook/conf/moa-spss/certstore/5650A465FD3B5EF83639E11F324A2A0EA98AF935/4B5B0C2A0BF944CD467A6140F8C782E2BE9D15F9 +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/certstore/58090A698038FEDAD56B4B976F23C29950D1D5A5/6BDA1FF41EEBC5DA66912F3C69B60C2A41C6E25B b/moaSig/handbook/conf/moa-spss/certstore/58090A698038FEDAD56B4B976F23C29950D1D5A5/6BDA1FF41EEBC5DA66912F3C69B60C2A41C6E25B Binary files differdeleted file mode 100644 index b15880c..0000000 --- a/moaSig/handbook/conf/moa-spss/certstore/58090A698038FEDAD56B4B976F23C29950D1D5A5/6BDA1FF41EEBC5DA66912F3C69B60C2A41C6E25B +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/certstore/59484253C7D4C5BEAB7D2BABFAC13DDD1CA53FCC/341EA32E448659125A67DD04177FD17468FCFCB1 b/moaSig/handbook/conf/moa-spss/certstore/59484253C7D4C5BEAB7D2BABFAC13DDD1CA53FCC/341EA32E448659125A67DD04177FD17468FCFCB1 Binary files differdeleted file mode 100644 index 6da18c6..0000000 --- a/moaSig/handbook/conf/moa-spss/certstore/59484253C7D4C5BEAB7D2BABFAC13DDD1CA53FCC/341EA32E448659125A67DD04177FD17468FCFCB1 +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/certstore/5E043AA9A832C33C7065B7633F4C007E0394BA19/069519EC949AC6B91D4C33A3F3665441F0220D20 b/moaSig/handbook/conf/moa-spss/certstore/5E043AA9A832C33C7065B7633F4C007E0394BA19/069519EC949AC6B91D4C33A3F3665441F0220D20 Binary files differdeleted file mode 100644 index 8b501d7..0000000 --- a/moaSig/handbook/conf/moa-spss/certstore/5E043AA9A832C33C7065B7633F4C007E0394BA19/069519EC949AC6B91D4C33A3F3665441F0220D20 +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/certstore/5E043AA9A832C33C7065B7633F4C007E0394BA19/2F5EBA5055E9F7444852ADCEEB769E5DE157A03D b/moaSig/handbook/conf/moa-spss/certstore/5E043AA9A832C33C7065B7633F4C007E0394BA19/2F5EBA5055E9F7444852ADCEEB769E5DE157A03D Binary files differdeleted file mode 100644 index b4b1289..0000000 --- a/moaSig/handbook/conf/moa-spss/certstore/5E043AA9A832C33C7065B7633F4C007E0394BA19/2F5EBA5055E9F7444852ADCEEB769E5DE157A03D +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/certstore/60EF765436B4F314F2285BE2D89A511073AC0D58/334710B9169BCD20687A6302EEB16AEB97F288CD b/moaSig/handbook/conf/moa-spss/certstore/60EF765436B4F314F2285BE2D89A511073AC0D58/334710B9169BCD20687A6302EEB16AEB97F288CD Binary files differdeleted file mode 100644 index c19647a..0000000 --- a/moaSig/handbook/conf/moa-spss/certstore/60EF765436B4F314F2285BE2D89A511073AC0D58/334710B9169BCD20687A6302EEB16AEB97F288CD +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/certstore/6144BFC0CBE85C63DEFB6F208D80385B89F68046/D031945D982820B92FADBC7F71F6D1D9DFFDA2C9 b/moaSig/handbook/conf/moa-spss/certstore/6144BFC0CBE85C63DEFB6F208D80385B89F68046/D031945D982820B92FADBC7F71F6D1D9DFFDA2C9 Binary files differdeleted file mode 100644 index 39f88d8..0000000 --- a/moaSig/handbook/conf/moa-spss/certstore/6144BFC0CBE85C63DEFB6F208D80385B89F68046/D031945D982820B92FADBC7F71F6D1D9DFFDA2C9 +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/certstore/68AF646E90A6FF370230F64ACD4E8A4F12C03916/CA80A13D41116E24CB1479E970CDC1C030C5907C b/moaSig/handbook/conf/moa-spss/certstore/68AF646E90A6FF370230F64ACD4E8A4F12C03916/CA80A13D41116E24CB1479E970CDC1C030C5907C Binary files differdeleted file mode 100644 index 277b608..0000000 --- a/moaSig/handbook/conf/moa-spss/certstore/68AF646E90A6FF370230F64ACD4E8A4F12C03916/CA80A13D41116E24CB1479E970CDC1C030C5907C +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/certstore/6F5F08A3A5D59CA877CB146F00BB0264369B2304/7A2CFA69FCA284D4627012A7A55662594C803B2A b/moaSig/handbook/conf/moa-spss/certstore/6F5F08A3A5D59CA877CB146F00BB0264369B2304/7A2CFA69FCA284D4627012A7A55662594C803B2A Binary files differdeleted file mode 100644 index ad13d7b..0000000 --- a/moaSig/handbook/conf/moa-spss/certstore/6F5F08A3A5D59CA877CB146F00BB0264369B2304/7A2CFA69FCA284D4627012A7A55662594C803B2A +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/certstore/6F5F08A3A5D59CA877CB146F00BB0264369B2304/ADEC5673B57A18F16EFAF75EEFBFAD4841E2CD2B b/moaSig/handbook/conf/moa-spss/certstore/6F5F08A3A5D59CA877CB146F00BB0264369B2304/ADEC5673B57A18F16EFAF75EEFBFAD4841E2CD2B Binary files differdeleted file mode 100644 index d361d91..0000000 --- a/moaSig/handbook/conf/moa-spss/certstore/6F5F08A3A5D59CA877CB146F00BB0264369B2304/ADEC5673B57A18F16EFAF75EEFBFAD4841E2CD2B +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/certstore/6F86F897C45679B45F03C67D44B6447EFF43B758/53CB69CF933C2D28FB9DF91F2852A99EC3352EA0 b/moaSig/handbook/conf/moa-spss/certstore/6F86F897C45679B45F03C67D44B6447EFF43B758/53CB69CF933C2D28FB9DF91F2852A99EC3352EA0 Binary files differdeleted file mode 100644 index 89cfe44..0000000 --- a/moaSig/handbook/conf/moa-spss/certstore/6F86F897C45679B45F03C67D44B6447EFF43B758/53CB69CF933C2D28FB9DF91F2852A99EC3352EA0 +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/certstore/728C819D737EE42627F96F839C33BB6E68E85F68/00845B74CA13FE0A9056E6C0B5126FECF73B0D8C b/moaSig/handbook/conf/moa-spss/certstore/728C819D737EE42627F96F839C33BB6E68E85F68/00845B74CA13FE0A9056E6C0B5126FECF73B0D8C Binary files differdeleted file mode 100644 index cc8b505..0000000 --- a/moaSig/handbook/conf/moa-spss/certstore/728C819D737EE42627F96F839C33BB6E68E85F68/00845B74CA13FE0A9056E6C0B5126FECF73B0D8C +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/certstore/738B34854780955AE8FAF12349F2C9C52105A52C/474BC41135FB88BF58B5A8D976A1D5583378D85E b/moaSig/handbook/conf/moa-spss/certstore/738B34854780955AE8FAF12349F2C9C52105A52C/474BC41135FB88BF58B5A8D976A1D5583378D85E Binary files differdeleted file mode 100644 index c9da415..0000000 --- a/moaSig/handbook/conf/moa-spss/certstore/738B34854780955AE8FAF12349F2C9C52105A52C/474BC41135FB88BF58B5A8D976A1D5583378D85E +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/certstore/738B34854780955AE8FAF12349F2C9C52105A52C/6B618820CE6A5EC0B5E63A9170335E5EA9F3BA01 b/moaSig/handbook/conf/moa-spss/certstore/738B34854780955AE8FAF12349F2C9C52105A52C/6B618820CE6A5EC0B5E63A9170335E5EA9F3BA01 Binary files differdeleted file mode 100644 index 28fbdf4..0000000 --- a/moaSig/handbook/conf/moa-spss/certstore/738B34854780955AE8FAF12349F2C9C52105A52C/6B618820CE6A5EC0B5E63A9170335E5EA9F3BA01 +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/certstore/76011AE57123CC4E476C094C48C461DC37A0DEDD/FDC348410699803DE7D8276813BC2232EA99A878 b/moaSig/handbook/conf/moa-spss/certstore/76011AE57123CC4E476C094C48C461DC37A0DEDD/FDC348410699803DE7D8276813BC2232EA99A878 Binary files differdeleted file mode 100644 index 424f849..0000000 --- a/moaSig/handbook/conf/moa-spss/certstore/76011AE57123CC4E476C094C48C461DC37A0DEDD/FDC348410699803DE7D8276813BC2232EA99A878 +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/certstore/7A9DC855647136050A8D75D6571AC64739F36C6C/BF648929E7DAABD8D97B3202F48D6C4A19C78F6C b/moaSig/handbook/conf/moa-spss/certstore/7A9DC855647136050A8D75D6571AC64739F36C6C/BF648929E7DAABD8D97B3202F48D6C4A19C78F6C Binary files differdeleted file mode 100644 index 4989f3e..0000000 --- a/moaSig/handbook/conf/moa-spss/certstore/7A9DC855647136050A8D75D6571AC64739F36C6C/BF648929E7DAABD8D97B3202F48D6C4A19C78F6C +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/certstore/88BBA52A5AF119284F03A7D0D1DA61934EE57A79/FE4F09F5D1A4AADE9232D9E2D6B9A2552BC48A22 b/moaSig/handbook/conf/moa-spss/certstore/88BBA52A5AF119284F03A7D0D1DA61934EE57A79/FE4F09F5D1A4AADE9232D9E2D6B9A2552BC48A22 Binary files differdeleted file mode 100644 index a699436..0000000 --- a/moaSig/handbook/conf/moa-spss/certstore/88BBA52A5AF119284F03A7D0D1DA61934EE57A79/FE4F09F5D1A4AADE9232D9E2D6B9A2552BC48A22 +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/certstore/88D9F0C0EBB72C58516EC96AEED397FA86B40E39/6DCD5118D1542E6C205C580775C5420B7509506B b/moaSig/handbook/conf/moa-spss/certstore/88D9F0C0EBB72C58516EC96AEED397FA86B40E39/6DCD5118D1542E6C205C580775C5420B7509506B Binary files differdeleted file mode 100644 index 06b40aa..0000000 --- a/moaSig/handbook/conf/moa-spss/certstore/88D9F0C0EBB72C58516EC96AEED397FA86B40E39/6DCD5118D1542E6C205C580775C5420B7509506B +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/certstore/8B23D64DBA1572885563DF070BE9C22A39A3BD26/3B8484BF1370941BF03F206B5C4958DA4E1559BB b/moaSig/handbook/conf/moa-spss/certstore/8B23D64DBA1572885563DF070BE9C22A39A3BD26/3B8484BF1370941BF03F206B5C4958DA4E1559BB Binary files differdeleted file mode 100644 index 6f97837..0000000 --- a/moaSig/handbook/conf/moa-spss/certstore/8B23D64DBA1572885563DF070BE9C22A39A3BD26/3B8484BF1370941BF03F206B5C4958DA4E1559BB +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/certstore/8B23D64DBA1572885563DF070BE9C22A39A3BD26/6DD653FB8FE2614249924274043E834664EBE980 b/moaSig/handbook/conf/moa-spss/certstore/8B23D64DBA1572885563DF070BE9C22A39A3BD26/6DD653FB8FE2614249924274043E834664EBE980 Binary files differdeleted file mode 100644 index d779911..0000000 --- a/moaSig/handbook/conf/moa-spss/certstore/8B23D64DBA1572885563DF070BE9C22A39A3BD26/6DD653FB8FE2614249924274043E834664EBE980 +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/certstore/8B23D64DBA1572885563DF070BE9C22A39A3BD26/C0EF3E7A54B4C501295F77974B1995E36B25C92B b/moaSig/handbook/conf/moa-spss/certstore/8B23D64DBA1572885563DF070BE9C22A39A3BD26/C0EF3E7A54B4C501295F77974B1995E36B25C92B Binary files differdeleted file mode 100644 index 508f7f0..0000000 --- a/moaSig/handbook/conf/moa-spss/certstore/8B23D64DBA1572885563DF070BE9C22A39A3BD26/C0EF3E7A54B4C501295F77974B1995E36B25C92B +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/certstore/8B23D64DBA1572885563DF070BE9C22A39A3BD26/D29172D3F501A2D7A47F702633044F519A3A5F0B b/moaSig/handbook/conf/moa-spss/certstore/8B23D64DBA1572885563DF070BE9C22A39A3BD26/D29172D3F501A2D7A47F702633044F519A3A5F0B Binary files differdeleted file mode 100644 index c0feb0d..0000000 --- a/moaSig/handbook/conf/moa-spss/certstore/8B23D64DBA1572885563DF070BE9C22A39A3BD26/D29172D3F501A2D7A47F702633044F519A3A5F0B +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/certstore/8FDB1CB752D82C88C89F9E9DA7AD2F54C6FA6F3B/842B3870A64001CDD90978D0E554DAF94D9ABDFE b/moaSig/handbook/conf/moa-spss/certstore/8FDB1CB752D82C88C89F9E9DA7AD2F54C6FA6F3B/842B3870A64001CDD90978D0E554DAF94D9ABDFE Binary files differdeleted file mode 100644 index a0e3fdd..0000000 --- a/moaSig/handbook/conf/moa-spss/certstore/8FDB1CB752D82C88C89F9E9DA7AD2F54C6FA6F3B/842B3870A64001CDD90978D0E554DAF94D9ABDFE +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/certstore/9014D44A2072A5D74E12C7FE47F37D68371E1C42/679A4F81FC705DDEC419778DD2EBD875F4C242C6 b/moaSig/handbook/conf/moa-spss/certstore/9014D44A2072A5D74E12C7FE47F37D68371E1C42/679A4F81FC705DDEC419778DD2EBD875F4C242C6 Binary files differdeleted file mode 100644 index 36a442b..0000000 --- a/moaSig/handbook/conf/moa-spss/certstore/9014D44A2072A5D74E12C7FE47F37D68371E1C42/679A4F81FC705DDEC419778DD2EBD875F4C242C6 +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/certstore/9014D44A2072A5D74E12C7FE47F37D68371E1C42/82096E6D9B1248321625323D52858642CB0B748E b/moaSig/handbook/conf/moa-spss/certstore/9014D44A2072A5D74E12C7FE47F37D68371E1C42/82096E6D9B1248321625323D52858642CB0B748E Binary files differdeleted file mode 100644 index 54f8099..0000000 --- a/moaSig/handbook/conf/moa-spss/certstore/9014D44A2072A5D74E12C7FE47F37D68371E1C42/82096E6D9B1248321625323D52858642CB0B748E +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/certstore/91C4DD783D6D38F0325FE74930BF61F656364EA9/53A6B611F8CEE0315BCCE5D59898931ED390E400 b/moaSig/handbook/conf/moa-spss/certstore/91C4DD783D6D38F0325FE74930BF61F656364EA9/53A6B611F8CEE0315BCCE5D59898931ED390E400 Binary files differdeleted file mode 100644 index 6c02162..0000000 --- a/moaSig/handbook/conf/moa-spss/certstore/91C4DD783D6D38F0325FE74930BF61F656364EA9/53A6B611F8CEE0315BCCE5D59898931ED390E400 +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/certstore/92E5C38466AECA677325C25C3C3011C97D24CCF6/A149EE01A250491C07D5A279D3B58A646288DA22 b/moaSig/handbook/conf/moa-spss/certstore/92E5C38466AECA677325C25C3C3011C97D24CCF6/A149EE01A250491C07D5A279D3B58A646288DA22 Binary files differdeleted file mode 100644 index 7c6aded..0000000 --- a/moaSig/handbook/conf/moa-spss/certstore/92E5C38466AECA677325C25C3C3011C97D24CCF6/A149EE01A250491C07D5A279D3B58A646288DA22 +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/certstore/92E5C38466AECA677325C25C3C3011C97D24CCF6/AD8ECBB67B9DC59406F92A296A38192297A4F169 b/moaSig/handbook/conf/moa-spss/certstore/92E5C38466AECA677325C25C3C3011C97D24CCF6/AD8ECBB67B9DC59406F92A296A38192297A4F169 Binary files differdeleted file mode 100644 index 70f5b7c..0000000 --- a/moaSig/handbook/conf/moa-spss/certstore/92E5C38466AECA677325C25C3C3011C97D24CCF6/AD8ECBB67B9DC59406F92A296A38192297A4F169 +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/certstore/96107213A757FFB88DECEE469373162636D7146C/45B43346251FDF9E95DCB7F36928785D46D63913 b/moaSig/handbook/conf/moa-spss/certstore/96107213A757FFB88DECEE469373162636D7146C/45B43346251FDF9E95DCB7F36928785D46D63913 Binary files differdeleted file mode 100644 index f3cf5e6..0000000 --- a/moaSig/handbook/conf/moa-spss/certstore/96107213A757FFB88DECEE469373162636D7146C/45B43346251FDF9E95DCB7F36928785D46D63913 +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/certstore/96107213A757FFB88DECEE469373162636D7146C/E33619C88426E4FE956041E6751ADDEC9C10F0BC b/moaSig/handbook/conf/moa-spss/certstore/96107213A757FFB88DECEE469373162636D7146C/E33619C88426E4FE956041E6751ADDEC9C10F0BC Binary files differdeleted file mode 100644 index fc5bd43..0000000 --- a/moaSig/handbook/conf/moa-spss/certstore/96107213A757FFB88DECEE469373162636D7146C/E33619C88426E4FE956041E6751ADDEC9C10F0BC +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/certstore/975729FFAF7EB667BCF68E9B886EA876E44F46D0/35202B14F69409EAA51CD8AB547AC0CD5E993F3F b/moaSig/handbook/conf/moa-spss/certstore/975729FFAF7EB667BCF68E9B886EA876E44F46D0/35202B14F69409EAA51CD8AB547AC0CD5E993F3F Binary files differdeleted file mode 100644 index 3beb452..0000000 --- a/moaSig/handbook/conf/moa-spss/certstore/975729FFAF7EB667BCF68E9B886EA876E44F46D0/35202B14F69409EAA51CD8AB547AC0CD5E993F3F +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/certstore/9C5C7CD895AABBFF23E79907A97FB2D68423CA8E/41E3FCC9470F8634DBCB5CEA7FB688E04E7575BA b/moaSig/handbook/conf/moa-spss/certstore/9C5C7CD895AABBFF23E79907A97FB2D68423CA8E/41E3FCC9470F8634DBCB5CEA7FB688E04E7575BA Binary files differdeleted file mode 100644 index 8ddc7d7..0000000 --- a/moaSig/handbook/conf/moa-spss/certstore/9C5C7CD895AABBFF23E79907A97FB2D68423CA8E/41E3FCC9470F8634DBCB5CEA7FB688E04E7575BA +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/certstore/9C5C7CD895AABBFF23E79907A97FB2D68423CA8E/79B21E2743A879AFF5403ECEA09EAC2084EF4799 b/moaSig/handbook/conf/moa-spss/certstore/9C5C7CD895AABBFF23E79907A97FB2D68423CA8E/79B21E2743A879AFF5403ECEA09EAC2084EF4799 Binary files differdeleted file mode 100644 index c9fd41f..0000000 --- a/moaSig/handbook/conf/moa-spss/certstore/9C5C7CD895AABBFF23E79907A97FB2D68423CA8E/79B21E2743A879AFF5403ECEA09EAC2084EF4799 +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/certstore/9D3E6FACCD6AF894CDD2B91D1B9E3C2E310EAB93/3F4E01DF7547CDD38DCCFCCD76170C299ECEB9F6 b/moaSig/handbook/conf/moa-spss/certstore/9D3E6FACCD6AF894CDD2B91D1B9E3C2E310EAB93/3F4E01DF7547CDD38DCCFCCD76170C299ECEB9F6 Binary files differdeleted file mode 100644 index 781d1e4..0000000 --- a/moaSig/handbook/conf/moa-spss/certstore/9D3E6FACCD6AF894CDD2B91D1B9E3C2E310EAB93/3F4E01DF7547CDD38DCCFCCD76170C299ECEB9F6 +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/certstore/9D3E6FACCD6AF894CDD2B91D1B9E3C2E310EAB93/9D4CB7E3DBF24AE596972D59C375DD6384BB5E8B b/moaSig/handbook/conf/moa-spss/certstore/9D3E6FACCD6AF894CDD2B91D1B9E3C2E310EAB93/9D4CB7E3DBF24AE596972D59C375DD6384BB5E8B Binary files differdeleted file mode 100644 index 8286cab..0000000 --- a/moaSig/handbook/conf/moa-spss/certstore/9D3E6FACCD6AF894CDD2B91D1B9E3C2E310EAB93/9D4CB7E3DBF24AE596972D59C375DD6384BB5E8B +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/certstore/9D3E6FACCD6AF894CDD2B91D1B9E3C2E310EAB93/A562C4B99E2847251CB4A1F05DA1FF43E7296F0B b/moaSig/handbook/conf/moa-spss/certstore/9D3E6FACCD6AF894CDD2B91D1B9E3C2E310EAB93/A562C4B99E2847251CB4A1F05DA1FF43E7296F0B Binary files differdeleted file mode 100644 index a0148f6..0000000 --- a/moaSig/handbook/conf/moa-spss/certstore/9D3E6FACCD6AF894CDD2B91D1B9E3C2E310EAB93/A562C4B99E2847251CB4A1F05DA1FF43E7296F0B +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/certstore/9F5A9B8D0F919C96B9472442BFBBDD34232A627D/9039DBD29DB8AD0F8E2015F05FCD40582CCCBE8C b/moaSig/handbook/conf/moa-spss/certstore/9F5A9B8D0F919C96B9472442BFBBDD34232A627D/9039DBD29DB8AD0F8E2015F05FCD40582CCCBE8C Binary files differdeleted file mode 100644 index 61d346a..0000000 --- a/moaSig/handbook/conf/moa-spss/certstore/9F5A9B8D0F919C96B9472442BFBBDD34232A627D/9039DBD29DB8AD0F8E2015F05FCD40582CCCBE8C +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/certstore/9F5A9B8D0F919C96B9472442BFBBDD34232A627D/9F0E0FBB25F66FF88C8E033EFF358923C84A2926 b/moaSig/handbook/conf/moa-spss/certstore/9F5A9B8D0F919C96B9472442BFBBDD34232A627D/9F0E0FBB25F66FF88C8E033EFF358923C84A2926 Binary files differdeleted file mode 100644 index 9ae7ffa..0000000 --- a/moaSig/handbook/conf/moa-spss/certstore/9F5A9B8D0F919C96B9472442BFBBDD34232A627D/9F0E0FBB25F66FF88C8E033EFF358923C84A2926 +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/certstore/9F5A9B8D0F919C96B9472442BFBBDD34232A627D/C87D1855227D995C332C4C9072A2E2053F2CC623 b/moaSig/handbook/conf/moa-spss/certstore/9F5A9B8D0F919C96B9472442BFBBDD34232A627D/C87D1855227D995C332C4C9072A2E2053F2CC623 Binary files differdeleted file mode 100644 index a68ae2d..0000000 --- a/moaSig/handbook/conf/moa-spss/certstore/9F5A9B8D0F919C96B9472442BFBBDD34232A627D/C87D1855227D995C332C4C9072A2E2053F2CC623 +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/certstore/A07E912CAA2AB620034B05353E7D4B91807880ED/42AD1897A4643D2AA634D980F16349E6694F3B1B b/moaSig/handbook/conf/moa-spss/certstore/A07E912CAA2AB620034B05353E7D4B91807880ED/42AD1897A4643D2AA634D980F16349E6694F3B1B Binary files differdeleted file mode 100644 index f1d7b6a..0000000 --- a/moaSig/handbook/conf/moa-spss/certstore/A07E912CAA2AB620034B05353E7D4B91807880ED/42AD1897A4643D2AA634D980F16349E6694F3B1B +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/certstore/A07E912CAA2AB620034B05353E7D4B91807880ED/FE7891B6ED7B178F528A28B21478299F865889BD b/moaSig/handbook/conf/moa-spss/certstore/A07E912CAA2AB620034B05353E7D4B91807880ED/FE7891B6ED7B178F528A28B21478299F865889BD Binary files differdeleted file mode 100644 index c1b90c0..0000000 --- a/moaSig/handbook/conf/moa-spss/certstore/A07E912CAA2AB620034B05353E7D4B91807880ED/FE7891B6ED7B178F528A28B21478299F865889BD +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/certstore/A15B5DBE14A19CF859F48E2DA2A29A4C3DB4D680/3AC12E21FFF9ACAB2BCFF52BBD885FB7AAC9A02B b/moaSig/handbook/conf/moa-spss/certstore/A15B5DBE14A19CF859F48E2DA2A29A4C3DB4D680/3AC12E21FFF9ACAB2BCFF52BBD885FB7AAC9A02B Binary files differdeleted file mode 100644 index e27a870..0000000 --- a/moaSig/handbook/conf/moa-spss/certstore/A15B5DBE14A19CF859F48E2DA2A29A4C3DB4D680/3AC12E21FFF9ACAB2BCFF52BBD885FB7AAC9A02B +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/certstore/A24C49B7F1B637E7F72C12CAB35910EC8EF1C6CF/8784ED81F5A22779EB0B081945FD151992557FBE b/moaSig/handbook/conf/moa-spss/certstore/A24C49B7F1B637E7F72C12CAB35910EC8EF1C6CF/8784ED81F5A22779EB0B081945FD151992557FBE Binary files differdeleted file mode 100644 index cc35ba6..0000000 --- a/moaSig/handbook/conf/moa-spss/certstore/A24C49B7F1B637E7F72C12CAB35910EC8EF1C6CF/8784ED81F5A22779EB0B081945FD151992557FBE +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/certstore/A24C49B7F1B637E7F72C12CAB35910EC8EF1C6CF/88583DB03975127CB488CA7DDE303A1646CEA97B b/moaSig/handbook/conf/moa-spss/certstore/A24C49B7F1B637E7F72C12CAB35910EC8EF1C6CF/88583DB03975127CB488CA7DDE303A1646CEA97B Binary files differdeleted file mode 100644 index 783dd27..0000000 --- a/moaSig/handbook/conf/moa-spss/certstore/A24C49B7F1B637E7F72C12CAB35910EC8EF1C6CF/88583DB03975127CB488CA7DDE303A1646CEA97B +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/certstore/A4B140FBD4D5EA2AC3A570299945D8FCBBAD2231/0C30A6F2950EFEFBAB5964DA9E0EED7C9DB115D8 b/moaSig/handbook/conf/moa-spss/certstore/A4B140FBD4D5EA2AC3A570299945D8FCBBAD2231/0C30A6F2950EFEFBAB5964DA9E0EED7C9DB115D8 Binary files differdeleted file mode 100644 index 41dc7c5..0000000 --- a/moaSig/handbook/conf/moa-spss/certstore/A4B140FBD4D5EA2AC3A570299945D8FCBBAD2231/0C30A6F2950EFEFBAB5964DA9E0EED7C9DB115D8 +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/certstore/A4B140FBD4D5EA2AC3A570299945D8FCBBAD2231/20CAECDCA766243AAD6FA1327618FC81BA65DC0F b/moaSig/handbook/conf/moa-spss/certstore/A4B140FBD4D5EA2AC3A570299945D8FCBBAD2231/20CAECDCA766243AAD6FA1327618FC81BA65DC0F Binary files differdeleted file mode 100644 index b596d82..0000000 --- a/moaSig/handbook/conf/moa-spss/certstore/A4B140FBD4D5EA2AC3A570299945D8FCBBAD2231/20CAECDCA766243AAD6FA1327618FC81BA65DC0F +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/certstore/A4B140FBD4D5EA2AC3A570299945D8FCBBAD2231/96D5D179016A5A6546973BA63733617EE1F1540D b/moaSig/handbook/conf/moa-spss/certstore/A4B140FBD4D5EA2AC3A570299945D8FCBBAD2231/96D5D179016A5A6546973BA63733617EE1F1540D Binary files differdeleted file mode 100644 index 4adc3b7..0000000 --- a/moaSig/handbook/conf/moa-spss/certstore/A4B140FBD4D5EA2AC3A570299945D8FCBBAD2231/96D5D179016A5A6546973BA63733617EE1F1540D +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/certstore/A4B140FBD4D5EA2AC3A570299945D8FCBBAD2231/CF236CF66379EA506F967D21F0E25E87529D9687 b/moaSig/handbook/conf/moa-spss/certstore/A4B140FBD4D5EA2AC3A570299945D8FCBBAD2231/CF236CF66379EA506F967D21F0E25E87529D9687 Binary files differdeleted file mode 100644 index 1e4f227..0000000 --- a/moaSig/handbook/conf/moa-spss/certstore/A4B140FBD4D5EA2AC3A570299945D8FCBBAD2231/CF236CF66379EA506F967D21F0E25E87529D9687 +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/certstore/A4B140FBD4D5EA2AC3A570299945D8FCBBAD2231/FDD40A10FB9BE9DEB5B8AE76CC0184930EF8BB76 b/moaSig/handbook/conf/moa-spss/certstore/A4B140FBD4D5EA2AC3A570299945D8FCBBAD2231/FDD40A10FB9BE9DEB5B8AE76CC0184930EF8BB76 Binary files differdeleted file mode 100644 index fe561ad..0000000 --- a/moaSig/handbook/conf/moa-spss/certstore/A4B140FBD4D5EA2AC3A570299945D8FCBBAD2231/FDD40A10FB9BE9DEB5B8AE76CC0184930EF8BB76 +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/certstore/A7437C35301BDB5349F320B62231615028F397F8/266FCA0265A576548425BDAE15448665EE8BB889 b/moaSig/handbook/conf/moa-spss/certstore/A7437C35301BDB5349F320B62231615028F397F8/266FCA0265A576548425BDAE15448665EE8BB889 Binary files differdeleted file mode 100644 index 3754de6..0000000 --- a/moaSig/handbook/conf/moa-spss/certstore/A7437C35301BDB5349F320B62231615028F397F8/266FCA0265A576548425BDAE15448665EE8BB889 +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/certstore/A95F0C3FA54CA93E3D5BA61AD23459300FA498D6/D4D1370FD1D9EAA46412008FF3E59E114BCF724A b/moaSig/handbook/conf/moa-spss/certstore/A95F0C3FA54CA93E3D5BA61AD23459300FA498D6/D4D1370FD1D9EAA46412008FF3E59E114BCF724A Binary files differdeleted file mode 100644 index 3c7775b..0000000 --- a/moaSig/handbook/conf/moa-spss/certstore/A95F0C3FA54CA93E3D5BA61AD23459300FA498D6/D4D1370FD1D9EAA46412008FF3E59E114BCF724A +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/certstore/A95F0C3FA54CA93E3D5BA61AD23459300FA498D6/DFA7DDEF5C212F0F0651E2A9DE1CE4A1AC63AF7A b/moaSig/handbook/conf/moa-spss/certstore/A95F0C3FA54CA93E3D5BA61AD23459300FA498D6/DFA7DDEF5C212F0F0651E2A9DE1CE4A1AC63AF7A Binary files differdeleted file mode 100644 index b6f39e3..0000000 --- a/moaSig/handbook/conf/moa-spss/certstore/A95F0C3FA54CA93E3D5BA61AD23459300FA498D6/DFA7DDEF5C212F0F0651E2A9DE1CE4A1AC63AF7A +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/certstore/A95F0C3FA54CA93E3D5BA61AD23459300FA498D6/E619D25B380B7B13FDA33E8A58CD82D8A88E0515 b/moaSig/handbook/conf/moa-spss/certstore/A95F0C3FA54CA93E3D5BA61AD23459300FA498D6/E619D25B380B7B13FDA33E8A58CD82D8A88E0515 Binary files differdeleted file mode 100644 index f9fef65..0000000 --- a/moaSig/handbook/conf/moa-spss/certstore/A95F0C3FA54CA93E3D5BA61AD23459300FA498D6/E619D25B380B7B13FDA33E8A58CD82D8A88E0515 +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/certstore/A95F0C3FA54CA93E3D5BA61AD23459300FA498D6/F825578F8F5484DFB40F81867C392D6CB0012B92 b/moaSig/handbook/conf/moa-spss/certstore/A95F0C3FA54CA93E3D5BA61AD23459300FA498D6/F825578F8F5484DFB40F81867C392D6CB0012B92 Binary files differdeleted file mode 100644 index f9f2744..0000000 --- a/moaSig/handbook/conf/moa-spss/certstore/A95F0C3FA54CA93E3D5BA61AD23459300FA498D6/F825578F8F5484DFB40F81867C392D6CB0012B92 +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/certstore/AAB27F0E98B28AF253454415F6490CB5F43A4B49/A9D28607928FA8615E2615CC9D71B535C5D0D419 b/moaSig/handbook/conf/moa-spss/certstore/AAB27F0E98B28AF253454415F6490CB5F43A4B49/A9D28607928FA8615E2615CC9D71B535C5D0D419 Binary files differdeleted file mode 100644 index 10a1f71..0000000 --- a/moaSig/handbook/conf/moa-spss/certstore/AAB27F0E98B28AF253454415F6490CB5F43A4B49/A9D28607928FA8615E2615CC9D71B535C5D0D419 +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/certstore/AC1B67D7D5A300767C0944ACE8458DD49960F1BD/4D523730501ADB80A76B0B473A4D21C7D86F8374 b/moaSig/handbook/conf/moa-spss/certstore/AC1B67D7D5A300767C0944ACE8458DD49960F1BD/4D523730501ADB80A76B0B473A4D21C7D86F8374 Binary files differdeleted file mode 100644 index 61a7ccb..0000000 --- a/moaSig/handbook/conf/moa-spss/certstore/AC1B67D7D5A300767C0944ACE8458DD49960F1BD/4D523730501ADB80A76B0B473A4D21C7D86F8374 +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/certstore/AF03510E8BCAE72BB7C4E9D1910B4E12057075A4/7AC3EFA52DE27A930EC8754DB5E061476948E914 b/moaSig/handbook/conf/moa-spss/certstore/AF03510E8BCAE72BB7C4E9D1910B4E12057075A4/7AC3EFA52DE27A930EC8754DB5E061476948E914 Binary files differdeleted file mode 100644 index 911640d..0000000 --- a/moaSig/handbook/conf/moa-spss/certstore/AF03510E8BCAE72BB7C4E9D1910B4E12057075A4/7AC3EFA52DE27A930EC8754DB5E061476948E914 +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/certstore/B1A1ACC805C656EF257C5115509B977964591D7E/8944AF64790FA467C02424CB22523A068C3B72DB b/moaSig/handbook/conf/moa-spss/certstore/B1A1ACC805C656EF257C5115509B977964591D7E/8944AF64790FA467C02424CB22523A068C3B72DB Binary files differdeleted file mode 100644 index a95605e..0000000 --- a/moaSig/handbook/conf/moa-spss/certstore/B1A1ACC805C656EF257C5115509B977964591D7E/8944AF64790FA467C02424CB22523A068C3B72DB +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/certstore/B293710691F553804016FCEC3428ABA1CB11ADF7/36B41A8B411985ED1032DBD85A154207164A9B85 b/moaSig/handbook/conf/moa-spss/certstore/B293710691F553804016FCEC3428ABA1CB11ADF7/36B41A8B411985ED1032DBD85A154207164A9B85 Binary files differdeleted file mode 100644 index a365a46..0000000 --- a/moaSig/handbook/conf/moa-spss/certstore/B293710691F553804016FCEC3428ABA1CB11ADF7/36B41A8B411985ED1032DBD85A154207164A9B85 +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/certstore/B310CEED301C503EDB15720F94D5D7E76BF423DA/AA94FD422AEB8F5B6E8508314CE0DC68BCD53305 b/moaSig/handbook/conf/moa-spss/certstore/B310CEED301C503EDB15720F94D5D7E76BF423DA/AA94FD422AEB8F5B6E8508314CE0DC68BCD53305 Binary files differdeleted file mode 100644 index ea3512e..0000000 --- a/moaSig/handbook/conf/moa-spss/certstore/B310CEED301C503EDB15720F94D5D7E76BF423DA/AA94FD422AEB8F5B6E8508314CE0DC68BCD53305 +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/certstore/B3EB7B59ECFF1E25E16C64BB24993D1B20DCFC28/07A6DEED70213CCF598F278789680DA4C04A0331 b/moaSig/handbook/conf/moa-spss/certstore/B3EB7B59ECFF1E25E16C64BB24993D1B20DCFC28/07A6DEED70213CCF598F278789680DA4C04A0331 Binary files differdeleted file mode 100644 index 46dd968..0000000 --- a/moaSig/handbook/conf/moa-spss/certstore/B3EB7B59ECFF1E25E16C64BB24993D1B20DCFC28/07A6DEED70213CCF598F278789680DA4C04A0331 +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/certstore/B749506C821467F7D6F4E8943D07DDED771A7B47/A5A00B223EF24AED92D03F652CFE367CA9D1B200 b/moaSig/handbook/conf/moa-spss/certstore/B749506C821467F7D6F4E8943D07DDED771A7B47/A5A00B223EF24AED92D03F652CFE367CA9D1B200 Binary files differdeleted file mode 100644 index 05a8b86..0000000 --- a/moaSig/handbook/conf/moa-spss/certstore/B749506C821467F7D6F4E8943D07DDED771A7B47/A5A00B223EF24AED92D03F652CFE367CA9D1B200 +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/certstore/B9041947DCD9B7E2B82D72D6A0FF1FBC4B213DC0/BD78039E45BA4E4B13ADECC58124520ACE83B6A7 b/moaSig/handbook/conf/moa-spss/certstore/B9041947DCD9B7E2B82D72D6A0FF1FBC4B213DC0/BD78039E45BA4E4B13ADECC58124520ACE83B6A7 Binary files differdeleted file mode 100644 index 815f53d..0000000 --- a/moaSig/handbook/conf/moa-spss/certstore/B9041947DCD9B7E2B82D72D6A0FF1FBC4B213DC0/BD78039E45BA4E4B13ADECC58124520ACE83B6A7 +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/certstore/BAA9ADD095E87E0B490B6DD933AA2F450C6B9492/7A430B6E3592BEEDFAA0DD5DD6262C27EB8D26D2 b/moaSig/handbook/conf/moa-spss/certstore/BAA9ADD095E87E0B490B6DD933AA2F450C6B9492/7A430B6E3592BEEDFAA0DD5DD6262C27EB8D26D2 Binary files differdeleted file mode 100644 index 63ba5cc..0000000 --- a/moaSig/handbook/conf/moa-spss/certstore/BAA9ADD095E87E0B490B6DD933AA2F450C6B9492/7A430B6E3592BEEDFAA0DD5DD6262C27EB8D26D2 +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/certstore/BE47A5DA41A35F740D98305DA8FF4096B71492BE/D1474E7D99512D05B98DD37B3FE86496A03D088D b/moaSig/handbook/conf/moa-spss/certstore/BE47A5DA41A35F740D98305DA8FF4096B71492BE/D1474E7D99512D05B98DD37B3FE86496A03D088D Binary files differdeleted file mode 100644 index 0bab770..0000000 --- a/moaSig/handbook/conf/moa-spss/certstore/BE47A5DA41A35F740D98305DA8FF4096B71492BE/D1474E7D99512D05B98DD37B3FE86496A03D088D +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/certstore/BE77EF0A6C18C4B70D3B516426B559A2C1969460/9766A5ED03482991DA91BB763ECDCD9417394100 b/moaSig/handbook/conf/moa-spss/certstore/BE77EF0A6C18C4B70D3B516426B559A2C1969460/9766A5ED03482991DA91BB763ECDCD9417394100 Binary files differdeleted file mode 100644 index 8827539..0000000 --- a/moaSig/handbook/conf/moa-spss/certstore/BE77EF0A6C18C4B70D3B516426B559A2C1969460/9766A5ED03482991DA91BB763ECDCD9417394100 +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/certstore/BE77EF0A6C18C4B70D3B516426B559A2C1969460/BB97947C31BBF3364A2909F9876DBD3B87B5B62A b/moaSig/handbook/conf/moa-spss/certstore/BE77EF0A6C18C4B70D3B516426B559A2C1969460/BB97947C31BBF3364A2909F9876DBD3B87B5B62A Binary files differdeleted file mode 100644 index f28aa4b..0000000 --- a/moaSig/handbook/conf/moa-spss/certstore/BE77EF0A6C18C4B70D3B516426B559A2C1969460/BB97947C31BBF3364A2909F9876DBD3B87B5B62A +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/certstore/BEBA5B735BCC34BDB0D778DAA1E669AEF999FCAB/60B7181FD8BCA00B84961BF31DB08C50376CCF44 b/moaSig/handbook/conf/moa-spss/certstore/BEBA5B735BCC34BDB0D778DAA1E669AEF999FCAB/60B7181FD8BCA00B84961BF31DB08C50376CCF44 Binary files differdeleted file mode 100644 index 08d7b28..0000000 --- a/moaSig/handbook/conf/moa-spss/certstore/BEBA5B735BCC34BDB0D778DAA1E669AEF999FCAB/60B7181FD8BCA00B84961BF31DB08C50376CCF44 +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/certstore/BEBA5B735BCC34BDB0D778DAA1E669AEF999FCAB/74801529B4E8E5764FFC4D8E6577E1F84E8101CE b/moaSig/handbook/conf/moa-spss/certstore/BEBA5B735BCC34BDB0D778DAA1E669AEF999FCAB/74801529B4E8E5764FFC4D8E6577E1F84E8101CE Binary files differdeleted file mode 100644 index e47d2b8..0000000 --- a/moaSig/handbook/conf/moa-spss/certstore/BEBA5B735BCC34BDB0D778DAA1E669AEF999FCAB/74801529B4E8E5764FFC4D8E6577E1F84E8101CE +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/certstore/BEBA5B735BCC34BDB0D778DAA1E669AEF999FCAB/7B7B60B748C82B34EE71A3CEA729C477083F0BDA b/moaSig/handbook/conf/moa-spss/certstore/BEBA5B735BCC34BDB0D778DAA1E669AEF999FCAB/7B7B60B748C82B34EE71A3CEA729C477083F0BDA Binary files differdeleted file mode 100644 index 5168e1a..0000000 --- a/moaSig/handbook/conf/moa-spss/certstore/BEBA5B735BCC34BDB0D778DAA1E669AEF999FCAB/7B7B60B748C82B34EE71A3CEA729C477083F0BDA +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/certstore/BEBA5B735BCC34BDB0D778DAA1E669AEF999FCAB/EBB80BE34C78814AE659BBA3A2394E4D9857123D b/moaSig/handbook/conf/moa-spss/certstore/BEBA5B735BCC34BDB0D778DAA1E669AEF999FCAB/EBB80BE34C78814AE659BBA3A2394E4D9857123D Binary files differdeleted file mode 100644 index c5bcc42..0000000 --- a/moaSig/handbook/conf/moa-spss/certstore/BEBA5B735BCC34BDB0D778DAA1E669AEF999FCAB/EBB80BE34C78814AE659BBA3A2394E4D9857123D +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/certstore/BED4C70D83B5042F4254459064FDEACD43DD1EDF/7BE0C8E441786C69A3CB35BDBEF235F8B5310E04 b/moaSig/handbook/conf/moa-spss/certstore/BED4C70D83B5042F4254459064FDEACD43DD1EDF/7BE0C8E441786C69A3CB35BDBEF235F8B5310E04 Binary files differdeleted file mode 100644 index 0a8de4b..0000000 --- a/moaSig/handbook/conf/moa-spss/certstore/BED4C70D83B5042F4254459064FDEACD43DD1EDF/7BE0C8E441786C69A3CB35BDBEF235F8B5310E04 +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/certstore/BF375B55D8D7CFC31FD8E3FBF7B1981A91A1A6CA/42EFDDE6BFF35ED0BAE6ACDD204C50AE86C4F4FA b/moaSig/handbook/conf/moa-spss/certstore/BF375B55D8D7CFC31FD8E3FBF7B1981A91A1A6CA/42EFDDE6BFF35ED0BAE6ACDD204C50AE86C4F4FA Binary files differdeleted file mode 100644 index ab9e0cd..0000000 --- a/moaSig/handbook/conf/moa-spss/certstore/BF375B55D8D7CFC31FD8E3FBF7B1981A91A1A6CA/42EFDDE6BFF35ED0BAE6ACDD204C50AE86C4F4FA +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/certstore/BF375B55D8D7CFC31FD8E3FBF7B1981A91A1A6CA/51C01567BCB22968EF5A297B7EA84E195594E0E8 b/moaSig/handbook/conf/moa-spss/certstore/BF375B55D8D7CFC31FD8E3FBF7B1981A91A1A6CA/51C01567BCB22968EF5A297B7EA84E195594E0E8 Binary files differdeleted file mode 100644 index 0196576..0000000 --- a/moaSig/handbook/conf/moa-spss/certstore/BF375B55D8D7CFC31FD8E3FBF7B1981A91A1A6CA/51C01567BCB22968EF5A297B7EA84E195594E0E8 +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/certstore/C15FFFE6EFAD484909C9EFC6CD5C20435E326685/DDBAE68B1FF60FFBB2854C78727B76C95EC83BBE b/moaSig/handbook/conf/moa-spss/certstore/C15FFFE6EFAD484909C9EFC6CD5C20435E326685/DDBAE68B1FF60FFBB2854C78727B76C95EC83BBE Binary files differdeleted file mode 100644 index 6428b82..0000000 --- a/moaSig/handbook/conf/moa-spss/certstore/C15FFFE6EFAD484909C9EFC6CD5C20435E326685/DDBAE68B1FF60FFBB2854C78727B76C95EC83BBE +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/certstore/C20C15B6163E675959D273D502F0D80718326C55/844FDEEE3C847F4BD5153E822803C1A2C1B6E7BA b/moaSig/handbook/conf/moa-spss/certstore/C20C15B6163E675959D273D502F0D80718326C55/844FDEEE3C847F4BD5153E822803C1A2C1B6E7BA Binary files differdeleted file mode 100644 index bc5ed1e..0000000 --- a/moaSig/handbook/conf/moa-spss/certstore/C20C15B6163E675959D273D502F0D80718326C55/844FDEEE3C847F4BD5153E822803C1A2C1B6E7BA +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/certstore/C20C15B6163E675959D273D502F0D80718326C55/B38C775A18C1195D01658D75FBDA3258B6DF018B b/moaSig/handbook/conf/moa-spss/certstore/C20C15B6163E675959D273D502F0D80718326C55/B38C775A18C1195D01658D75FBDA3258B6DF018B Binary files differdeleted file mode 100644 index cb519b7..0000000 --- a/moaSig/handbook/conf/moa-spss/certstore/C20C15B6163E675959D273D502F0D80718326C55/B38C775A18C1195D01658D75FBDA3258B6DF018B +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/certstore/C2A7CAE9E68EB7945828D193CB22CDD246BC7F95/6955D95F6B0799F7D96F4FC28E6E6C64758C1240 b/moaSig/handbook/conf/moa-spss/certstore/C2A7CAE9E68EB7945828D193CB22CDD246BC7F95/6955D95F6B0799F7D96F4FC28E6E6C64758C1240 Binary files differdeleted file mode 100644 index f11bd62..0000000 --- a/moaSig/handbook/conf/moa-spss/certstore/C2A7CAE9E68EB7945828D193CB22CDD246BC7F95/6955D95F6B0799F7D96F4FC28E6E6C64758C1240 +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/certstore/C52E4A04A22D98C70E19F1969AD71C838E4371B3/F96FE4F59166EFA9000B21A16EF22CF14468890C b/moaSig/handbook/conf/moa-spss/certstore/C52E4A04A22D98C70E19F1969AD71C838E4371B3/F96FE4F59166EFA9000B21A16EF22CF14468890C Binary files differdeleted file mode 100644 index 3482571..0000000 --- a/moaSig/handbook/conf/moa-spss/certstore/C52E4A04A22D98C70E19F1969AD71C838E4371B3/F96FE4F59166EFA9000B21A16EF22CF14468890C +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/certstore/C6673943153C8BE9F977A89A00ED84B432074576/7D0C7B977ACEA63D51EE34B00BC3C1DBF318B92E b/moaSig/handbook/conf/moa-spss/certstore/C6673943153C8BE9F977A89A00ED84B432074576/7D0C7B977ACEA63D51EE34B00BC3C1DBF318B92E Binary files differdeleted file mode 100644 index b9fe128..0000000 --- a/moaSig/handbook/conf/moa-spss/certstore/C6673943153C8BE9F977A89A00ED84B432074576/7D0C7B977ACEA63D51EE34B00BC3C1DBF318B92E +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/certstore/C6673943153C8BE9F977A89A00ED84B432074576/A79681CBDD69EC741214136F128923A574E26F03 b/moaSig/handbook/conf/moa-spss/certstore/C6673943153C8BE9F977A89A00ED84B432074576/A79681CBDD69EC741214136F128923A574E26F03 Binary files differdeleted file mode 100644 index ea1585a..0000000 --- a/moaSig/handbook/conf/moa-spss/certstore/C6673943153C8BE9F977A89A00ED84B432074576/A79681CBDD69EC741214136F128923A574E26F03 +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/certstore/C7E1D3604D2A960201D70F29B8A80EDA11475EEB/C18ECC8FD712ACAFBEAEDC1FA13F5AB19930E3ED b/moaSig/handbook/conf/moa-spss/certstore/C7E1D3604D2A960201D70F29B8A80EDA11475EEB/C18ECC8FD712ACAFBEAEDC1FA13F5AB19930E3ED Binary files differdeleted file mode 100644 index a3f8a74..0000000 --- a/moaSig/handbook/conf/moa-spss/certstore/C7E1D3604D2A960201D70F29B8A80EDA11475EEB/C18ECC8FD712ACAFBEAEDC1FA13F5AB19930E3ED +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/certstore/C976280EC7FECF169577E31D8CA0BB00967904B1/7666A8BD2C2513DE489C06D08D566F177ECE84AA b/moaSig/handbook/conf/moa-spss/certstore/C976280EC7FECF169577E31D8CA0BB00967904B1/7666A8BD2C2513DE489C06D08D566F177ECE84AA Binary files differdeleted file mode 100644 index 3c1f2f8..0000000 --- a/moaSig/handbook/conf/moa-spss/certstore/C976280EC7FECF169577E31D8CA0BB00967904B1/7666A8BD2C2513DE489C06D08D566F177ECE84AA +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/certstore/CABD2EA6CA438084840DCCAE875F341E2D3A2C43/02A0E6456442E35198532ACFFB6FEE3B606D9FA3 b/moaSig/handbook/conf/moa-spss/certstore/CABD2EA6CA438084840DCCAE875F341E2D3A2C43/02A0E6456442E35198532ACFFB6FEE3B606D9FA3 Binary files differdeleted file mode 100644 index 5026d39..0000000 --- a/moaSig/handbook/conf/moa-spss/certstore/CABD2EA6CA438084840DCCAE875F341E2D3A2C43/02A0E6456442E35198532ACFFB6FEE3B606D9FA3 +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/certstore/CC93161E57C3898635E1D086008BD053F542457F/7D60E314AA6AEF548A614A9354C5068192051A29 b/moaSig/handbook/conf/moa-spss/certstore/CC93161E57C3898635E1D086008BD053F542457F/7D60E314AA6AEF548A614A9354C5068192051A29 Binary files differdeleted file mode 100644 index afe6fdf..0000000 --- a/moaSig/handbook/conf/moa-spss/certstore/CC93161E57C3898635E1D086008BD053F542457F/7D60E314AA6AEF548A614A9354C5068192051A29 +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/certstore/CCBA90ED697BA209AB6093FC19FB15B53EE26933/159E42D4A53599389431771D5C936552BB22B084 b/moaSig/handbook/conf/moa-spss/certstore/CCBA90ED697BA209AB6093FC19FB15B53EE26933/159E42D4A53599389431771D5C936552BB22B084 Binary files differdeleted file mode 100644 index 9a777fd..0000000 --- a/moaSig/handbook/conf/moa-spss/certstore/CCBA90ED697BA209AB6093FC19FB15B53EE26933/159E42D4A53599389431771D5C936552BB22B084 +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/certstore/CD2D87A57D1568A515128BE9DA8B3CAE7AC007A4/C6658C25AFB8A9D738F2BC591775D167549FFD3A b/moaSig/handbook/conf/moa-spss/certstore/CD2D87A57D1568A515128BE9DA8B3CAE7AC007A4/C6658C25AFB8A9D738F2BC591775D167549FFD3A Binary files differdeleted file mode 100644 index f6df0f4..0000000 --- a/moaSig/handbook/conf/moa-spss/certstore/CD2D87A57D1568A515128BE9DA8B3CAE7AC007A4/C6658C25AFB8A9D738F2BC591775D167549FFD3A +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/certstore/CE91CC7CF2DDDEE6623A1A91B3298DCAD2375F2B/8AB0A3519AFA7F3C04074522678BAA1CB3DC734F b/moaSig/handbook/conf/moa-spss/certstore/CE91CC7CF2DDDEE6623A1A91B3298DCAD2375F2B/8AB0A3519AFA7F3C04074522678BAA1CB3DC734F Binary files differdeleted file mode 100644 index c34d0f3..0000000 --- a/moaSig/handbook/conf/moa-spss/certstore/CE91CC7CF2DDDEE6623A1A91B3298DCAD2375F2B/8AB0A3519AFA7F3C04074522678BAA1CB3DC734F +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/certstore/CE91CC7CF2DDDEE6623A1A91B3298DCAD2375F2B/DF47B3040E7632614464BD2EC4ECD1B8030F53E3 b/moaSig/handbook/conf/moa-spss/certstore/CE91CC7CF2DDDEE6623A1A91B3298DCAD2375F2B/DF47B3040E7632614464BD2EC4ECD1B8030F53E3 Binary files differdeleted file mode 100644 index d894e92..0000000 --- a/moaSig/handbook/conf/moa-spss/certstore/CE91CC7CF2DDDEE6623A1A91B3298DCAD2375F2B/DF47B3040E7632614464BD2EC4ECD1B8030F53E3 +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/certstore/CE91CC7CF2DDDEE6623A1A91B3298DCAD2375F2B/E117479B4A41D7F3223FCAE50560B0D57B22217D b/moaSig/handbook/conf/moa-spss/certstore/CE91CC7CF2DDDEE6623A1A91B3298DCAD2375F2B/E117479B4A41D7F3223FCAE50560B0D57B22217D Binary files differdeleted file mode 100644 index 380486f..0000000 --- a/moaSig/handbook/conf/moa-spss/certstore/CE91CC7CF2DDDEE6623A1A91B3298DCAD2375F2B/E117479B4A41D7F3223FCAE50560B0D57B22217D +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/certstore/D4D40BD33958CD9169A7AB6304AA2BBAD22DC595/07976A2A16EC182670161B46886B05E1FEAC16B1 b/moaSig/handbook/conf/moa-spss/certstore/D4D40BD33958CD9169A7AB6304AA2BBAD22DC595/07976A2A16EC182670161B46886B05E1FEAC16B1 Binary files differdeleted file mode 100644 index 22d64fb..0000000 --- a/moaSig/handbook/conf/moa-spss/certstore/D4D40BD33958CD9169A7AB6304AA2BBAD22DC595/07976A2A16EC182670161B46886B05E1FEAC16B1 +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/certstore/D708C897515970D33EF7CD0C2474449D3AB6AA83/52ED0FAFBD38A868C678174D7EB03D266ADB221C b/moaSig/handbook/conf/moa-spss/certstore/D708C897515970D33EF7CD0C2474449D3AB6AA83/52ED0FAFBD38A868C678174D7EB03D266ADB221C Binary files differdeleted file mode 100644 index 42a64da..0000000 --- a/moaSig/handbook/conf/moa-spss/certstore/D708C897515970D33EF7CD0C2474449D3AB6AA83/52ED0FAFBD38A868C678174D7EB03D266ADB221C +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/certstore/D866A07634012B24DB601087D8B3A9FFEDF5CADB/969A71FDCC5302167A60158828B9E7862DED3B4D b/moaSig/handbook/conf/moa-spss/certstore/D866A07634012B24DB601087D8B3A9FFEDF5CADB/969A71FDCC5302167A60158828B9E7862DED3B4D Binary files differdeleted file mode 100644 index d17d076..0000000 --- a/moaSig/handbook/conf/moa-spss/certstore/D866A07634012B24DB601087D8B3A9FFEDF5CADB/969A71FDCC5302167A60158828B9E7862DED3B4D +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/certstore/DD29E76659D18371B78E61E7DF4D4B8FEDCAF8E7/8BA5C0847597612C7E16970EAE55EF58D32E9CF3 b/moaSig/handbook/conf/moa-spss/certstore/DD29E76659D18371B78E61E7DF4D4B8FEDCAF8E7/8BA5C0847597612C7E16970EAE55EF58D32E9CF3 Binary files differdeleted file mode 100644 index 010c5d5..0000000 --- a/moaSig/handbook/conf/moa-spss/certstore/DD29E76659D18371B78E61E7DF4D4B8FEDCAF8E7/8BA5C0847597612C7E16970EAE55EF58D32E9CF3 +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/certstore/DF5F53FDADAFC93F4789141B5A7627EB9F3BD29F/18585FC53A283488E4BA84867980E9B1F2B28ADA b/moaSig/handbook/conf/moa-spss/certstore/DF5F53FDADAFC93F4789141B5A7627EB9F3BD29F/18585FC53A283488E4BA84867980E9B1F2B28ADA Binary files differdeleted file mode 100644 index d53dce9..0000000 --- a/moaSig/handbook/conf/moa-spss/certstore/DF5F53FDADAFC93F4789141B5A7627EB9F3BD29F/18585FC53A283488E4BA84867980E9B1F2B28ADA +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/certstore/DF5F53FDADAFC93F4789141B5A7627EB9F3BD29F/27337257493B86B9BFF78D569F938D692A430EAE b/moaSig/handbook/conf/moa-spss/certstore/DF5F53FDADAFC93F4789141B5A7627EB9F3BD29F/27337257493B86B9BFF78D569F938D692A430EAE Binary files differdeleted file mode 100644 index 5375c57..0000000 --- a/moaSig/handbook/conf/moa-spss/certstore/DF5F53FDADAFC93F4789141B5A7627EB9F3BD29F/27337257493B86B9BFF78D569F938D692A430EAE +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/certstore/DF5F53FDADAFC93F4789141B5A7627EB9F3BD29F/4832F0A28C3724A92F6CB3314F747D0E74FC7344 b/moaSig/handbook/conf/moa-spss/certstore/DF5F53FDADAFC93F4789141B5A7627EB9F3BD29F/4832F0A28C3724A92F6CB3314F747D0E74FC7344 Binary files differdeleted file mode 100644 index 7085c5a..0000000 --- a/moaSig/handbook/conf/moa-spss/certstore/DF5F53FDADAFC93F4789141B5A7627EB9F3BD29F/4832F0A28C3724A92F6CB3314F747D0E74FC7344 +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/certstore/DF5F53FDADAFC93F4789141B5A7627EB9F3BD29F/6352302A5072DBFB769D4FF4C70C86432C4C1683 b/moaSig/handbook/conf/moa-spss/certstore/DF5F53FDADAFC93F4789141B5A7627EB9F3BD29F/6352302A5072DBFB769D4FF4C70C86432C4C1683 Binary files differdeleted file mode 100644 index 97dc187..0000000 --- a/moaSig/handbook/conf/moa-spss/certstore/DF5F53FDADAFC93F4789141B5A7627EB9F3BD29F/6352302A5072DBFB769D4FF4C70C86432C4C1683 +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/certstore/DF5F53FDADAFC93F4789141B5A7627EB9F3BD29F/EE886B907E31667D622677F665F25C54AF9A7F65 b/moaSig/handbook/conf/moa-spss/certstore/DF5F53FDADAFC93F4789141B5A7627EB9F3BD29F/EE886B907E31667D622677F665F25C54AF9A7F65 Binary files differdeleted file mode 100644 index ad5d7de..0000000 --- a/moaSig/handbook/conf/moa-spss/certstore/DF5F53FDADAFC93F4789141B5A7627EB9F3BD29F/EE886B907E31667D622677F665F25C54AF9A7F65 +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/certstore/E47BA33321A8A919414A123C91F5D253766AB078/698563ECEE29232C5304487D972310F86650C3A6 b/moaSig/handbook/conf/moa-spss/certstore/E47BA33321A8A919414A123C91F5D253766AB078/698563ECEE29232C5304487D972310F86650C3A6 Binary files differdeleted file mode 100644 index ebfbce9..0000000 --- a/moaSig/handbook/conf/moa-spss/certstore/E47BA33321A8A919414A123C91F5D253766AB078/698563ECEE29232C5304487D972310F86650C3A6 +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/certstore/E583DB7202A8D1570A18CD11146B0CBCA438F71A/2A5945E1FC2006BE0D59C3375253C9D3327D197D b/moaSig/handbook/conf/moa-spss/certstore/E583DB7202A8D1570A18CD11146B0CBCA438F71A/2A5945E1FC2006BE0D59C3375253C9D3327D197D Binary files differdeleted file mode 100644 index a6a9acd..0000000 --- a/moaSig/handbook/conf/moa-spss/certstore/E583DB7202A8D1570A18CD11146B0CBCA438F71A/2A5945E1FC2006BE0D59C3375253C9D3327D197D +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/certstore/E6A4C843059A6043B4DC967F9EF892B695990777/B4B77C83465979E3679E3A33F972F48EE3730A18 b/moaSig/handbook/conf/moa-spss/certstore/E6A4C843059A6043B4DC967F9EF892B695990777/B4B77C83465979E3679E3A33F972F48EE3730A18 Binary files differdeleted file mode 100644 index 6225c0c..0000000 --- a/moaSig/handbook/conf/moa-spss/certstore/E6A4C843059A6043B4DC967F9EF892B695990777/B4B77C83465979E3679E3A33F972F48EE3730A18 +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/certstore/EA7E6D37E678C1BCA5060F97DAF09F559DFD04B7/3AAD23B00CA10E54E6368DF7952E3F4B5108B65C b/moaSig/handbook/conf/moa-spss/certstore/EA7E6D37E678C1BCA5060F97DAF09F559DFD04B7/3AAD23B00CA10E54E6368DF7952E3F4B5108B65C Binary files differdeleted file mode 100644 index a3aa000..0000000 --- a/moaSig/handbook/conf/moa-spss/certstore/EA7E6D37E678C1BCA5060F97DAF09F559DFD04B7/3AAD23B00CA10E54E6368DF7952E3F4B5108B65C +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/certstore/EEE6351C5C6EBD8644AB88E7648D44FA07C72A80/14E59C02A6877B0EBD2C4203886BA25959C1D267 b/moaSig/handbook/conf/moa-spss/certstore/EEE6351C5C6EBD8644AB88E7648D44FA07C72A80/14E59C02A6877B0EBD2C4203886BA25959C1D267 Binary files differdeleted file mode 100644 index 332aa81..0000000 --- a/moaSig/handbook/conf/moa-spss/certstore/EEE6351C5C6EBD8644AB88E7648D44FA07C72A80/14E59C02A6877B0EBD2C4203886BA25959C1D267 +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/certstore/F1B84756A1EAB09C171B2783DD163B42A9BD0BBB/ED5608CE67EA5CB79AC024CEA7445F9BCBE48703 b/moaSig/handbook/conf/moa-spss/certstore/F1B84756A1EAB09C171B2783DD163B42A9BD0BBB/ED5608CE67EA5CB79AC024CEA7445F9BCBE48703 Binary files differdeleted file mode 100644 index 069640f..0000000 --- a/moaSig/handbook/conf/moa-spss/certstore/F1B84756A1EAB09C171B2783DD163B42A9BD0BBB/ED5608CE67EA5CB79AC024CEA7445F9BCBE48703 +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/certstore/F3DA7C495789E656FA27E611CCAFA05F232ADEA0/F3AE9FEA4DECEE5330770A2520BD86909929E7BE b/moaSig/handbook/conf/moa-spss/certstore/F3DA7C495789E656FA27E611CCAFA05F232ADEA0/F3AE9FEA4DECEE5330770A2520BD86909929E7BE Binary files differdeleted file mode 100644 index c3fc913..0000000 --- a/moaSig/handbook/conf/moa-spss/certstore/F3DA7C495789E656FA27E611CCAFA05F232ADEA0/F3AE9FEA4DECEE5330770A2520BD86909929E7BE +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/certstore/F4834A83B4ED558A1E349821898B6DE4353516F1/16D8270DE51B034E77B7CDAF1DEE623916243DDC b/moaSig/handbook/conf/moa-spss/certstore/F4834A83B4ED558A1E349821898B6DE4353516F1/16D8270DE51B034E77B7CDAF1DEE623916243DDC Binary files differdeleted file mode 100644 index 87d8b52..0000000 --- a/moaSig/handbook/conf/moa-spss/certstore/F4834A83B4ED558A1E349821898B6DE4353516F1/16D8270DE51B034E77B7CDAF1DEE623916243DDC +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/certstore/F4834A83B4ED558A1E349821898B6DE4353516F1/3D3F25C5CD9F932037D91B7D102EDB58EC7C8239 b/moaSig/handbook/conf/moa-spss/certstore/F4834A83B4ED558A1E349821898B6DE4353516F1/3D3F25C5CD9F932037D91B7D102EDB58EC7C8239 Binary files differdeleted file mode 100644 index 91acd39..0000000 --- a/moaSig/handbook/conf/moa-spss/certstore/F4834A83B4ED558A1E349821898B6DE4353516F1/3D3F25C5CD9F932037D91B7D102EDB58EC7C8239 +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/certstore/F4834A83B4ED558A1E349821898B6DE4353516F1/40B51EEF4E709FBD47935DDD83A1F640D0CC378A b/moaSig/handbook/conf/moa-spss/certstore/F4834A83B4ED558A1E349821898B6DE4353516F1/40B51EEF4E709FBD47935DDD83A1F640D0CC378A Binary files differdeleted file mode 100644 index b5f5fa6..0000000 --- a/moaSig/handbook/conf/moa-spss/certstore/F4834A83B4ED558A1E349821898B6DE4353516F1/40B51EEF4E709FBD47935DDD83A1F640D0CC378A +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/certstore/F4834A83B4ED558A1E349821898B6DE4353516F1/D4E1786D8B8B57B22C81D0F0FCE18EA818DA0537 b/moaSig/handbook/conf/moa-spss/certstore/F4834A83B4ED558A1E349821898B6DE4353516F1/D4E1786D8B8B57B22C81D0F0FCE18EA818DA0537 Binary files differdeleted file mode 100644 index abeb964..0000000 --- a/moaSig/handbook/conf/moa-spss/certstore/F4834A83B4ED558A1E349821898B6DE4353516F1/D4E1786D8B8B57B22C81D0F0FCE18EA818DA0537 +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/certstore/F48B57F89BACD8687EBB12223A5B8E5EF3774583/CAF84A42305615AC2C582F6412BDA3E36DAC3D25 b/moaSig/handbook/conf/moa-spss/certstore/F48B57F89BACD8687EBB12223A5B8E5EF3774583/CAF84A42305615AC2C582F6412BDA3E36DAC3D25 Binary files differdeleted file mode 100644 index 83aeb1f..0000000 --- a/moaSig/handbook/conf/moa-spss/certstore/F48B57F89BACD8687EBB12223A5B8E5EF3774583/CAF84A42305615AC2C582F6412BDA3E36DAC3D25 +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/certstore/F613568C1D7A1300B32609998288211959DBDFB0/D7EDAF7381F7FC93B4C28FA372190D7A59CFA696 b/moaSig/handbook/conf/moa-spss/certstore/F613568C1D7A1300B32609998288211959DBDFB0/D7EDAF7381F7FC93B4C28FA372190D7A59CFA696 Binary files differdeleted file mode 100644 index 5631441..0000000 --- a/moaSig/handbook/conf/moa-spss/certstore/F613568C1D7A1300B32609998288211959DBDFB0/D7EDAF7381F7FC93B4C28FA372190D7A59CFA696 +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/certstore/F7D331850EC13D22284909E0FC3493A65FFA7F30/EC988340526163D5B7AC80481B2AC76828EDDC6C b/moaSig/handbook/conf/moa-spss/certstore/F7D331850EC13D22284909E0FC3493A65FFA7F30/EC988340526163D5B7AC80481B2AC76828EDDC6C Binary files differdeleted file mode 100644 index 585047f..0000000 --- a/moaSig/handbook/conf/moa-spss/certstore/F7D331850EC13D22284909E0FC3493A65FFA7F30/EC988340526163D5B7AC80481B2AC76828EDDC6C +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/certstore/FE51079176B9F46204816CABA94824B3B14A3830/2E66C9841181C08FB1DFABD4FF8D5CC72BE08F02 b/moaSig/handbook/conf/moa-spss/certstore/FE51079176B9F46204816CABA94824B3B14A3830/2E66C9841181C08FB1DFABD4FF8D5CC72BE08F02 Binary files differdeleted file mode 100644 index b9a0e5a..0000000 --- a/moaSig/handbook/conf/moa-spss/certstore/FE51079176B9F46204816CABA94824B3B14A3830/2E66C9841181C08FB1DFABD4FF8D5CC72BE08F02 +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/certstore/toBeAdded/A-Trust-Qual-01-20140701-20240701.SerNo144ddd(SecureSignatureKeypair).cer b/moaSig/handbook/conf/moa-spss/certstore/toBeAdded/A-Trust-Qual-01-20140701-20240701.SerNo144ddd(SecureSignatureKeypair).cer deleted file mode 100644 index eb051dc..0000000 --- a/moaSig/handbook/conf/moa-spss/certstore/toBeAdded/A-Trust-Qual-01-20140701-20240701.SerNo144ddd(SecureSignatureKeypair).cer +++ /dev/null @@ -1,26 +0,0 @@ ------BEGIN CERTIFICATE----- -MIIEUzCCAzugAwIBAgIDFE3dMA0GCSqGSIb3DQEBBQUAMIHPMQswCQYDVQQGEwJB -VDGBizCBiAYDVQQKHoGAAEEALQBUAHIAdQBzAHQAIABHAGUAcwAuACAAZgD8AHIA -IABTAGkAYwBoAGUAcgBoAGUAaQB0AHMAcwB5AHMAdABlAG0AZQAgAGkAbQAgAGUA -bABlAGsAdAByAC4AIABEAGEAdABlAG4AdgBlAHIAawBlAGgAcgAgAEcAbQBiAEgx -GDAWBgNVBAsTD0EtVHJ1c3QtUXVhbC0wMTEYMBYGA1UEAxMPQS1UcnVzdC1RdWFs -LTAxMB4XDTE0MDcwMTExMjExNVoXDTI0MDcwMTA5MjExNVowgc8xCzAJBgNVBAYT -AkFUMYGLMIGIBgNVBAoegYAAQQAtAFQAcgB1AHMAdAAgAEcAZQBzAC4AIABmAPwA -cgAgAFMAaQBjAGgAZQByAGgAZQBpAHQAcwBzAHkAcwB0AGUAbQBlACAAaQBtACAA -ZQBsAGUAawB0AHIALgAgAEQAYQB0AGUAbgB2AGUAcgBrAGUAaAByACAARwBtAGIA -SDEYMBYGA1UECxMPQS1UcnVzdC1RdWFsLTAxMRgwFgYDVQQDEw9BLVRydXN0LVF1 -YWwtMDEwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCmhgdxIbxTGEOH -fXGiewI3NFldAWKFWfLofO+5I1UbvA5avt7IgsGXz/tI/f5HGUbascI0i7xG0tqV -lA5ctQgLRqxgxHtgTkMcqsAEYdsz3LZsCdXO1QrvEBGLTSABdxiL/gSWJ6z77CSw -x7Xg02HwxPV82cjGkSF3ENGJntuIAAnRDWn/ORHjFatNRymoMbHaOEZXSGhf7Y5F -rrHEqGyi9E6sv784De/T1aTvskn8cWeUmDzv//omiG/a/V9KQex/61XN8OthUQVn -X+u/liL2NKx74I2C/GgHX5B0WkPNqsSOgmlvJ/cKuT0PveUgVFDAA0oYBgcE1KDM -lBbN0kmPAgMBAAGjNjA0MA8GA1UdEwEB/wQFMAMBAf8wEQYDVR0OBAoECEs8jB2F -6W+tMA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQUFAAOCAQEAQIN9LZbMivO9 -kWLDlDI9cTEIPpRXmgNdaBQRUpZc2ML0vDW6OVI90r8GxFQTE/I7HjrvuqQDTEL1 -qd8tthiazsLYI5eDX1CtJEFFtg25Y9t3tK2HsShb8sCj798hoXsOMFR9qhp5Fjb8 -TX4CVuQ3sK1TKeNlDmpAx6SqkYYT0CCMccsxt2j89ED8Z+B/yW19OZQk3BFDigYL -46YsLKAC96ItFpUOs8ZbAUfUlpVA6G+09EMcDxOcuD/ebLx6I/ynwYAtqYXaizsY -KTE35A3M2ghfGFJ+DlQoh3Bn/RG01LKXXgaVTHHMvvpxBp55wz2SocD/PpFe+D6Q -C016YgTrrQ== ------END CERTIFICATE----- diff --git a/moaSig/handbook/conf/moa-spss/certstore/toBeAdded/A-Trust-Qual-02-20140701-20240701.SerNo144de4(SecureSignatureKeypair).cer b/moaSig/handbook/conf/moa-spss/certstore/toBeAdded/A-Trust-Qual-02-20140701-20240701.SerNo144de4(SecureSignatureKeypair).cer deleted file mode 100644 index be29fb6..0000000 --- a/moaSig/handbook/conf/moa-spss/certstore/toBeAdded/A-Trust-Qual-02-20140701-20240701.SerNo144de4(SecureSignatureKeypair).cer +++ /dev/null @@ -1,23 +0,0 @@ ------BEGIN CERTIFICATE----- -MIIDyzCCArOgAwIBAgIDFE3kMA0GCSqGSIb3DQEBBQUAMIGLMQswCQYDVQQGEwJB -VDFIMEYGA1UECgw/QS1UcnVzdCBHZXMuIGYuIFNpY2hlcmhlaXRzc3lzdGVtZSBp -bSBlbGVrdHIuIERhdGVudmVya2VociBHbWJIMRgwFgYDVQQLDA9BLVRydXN0LVF1 -YWwtMDIxGDAWBgNVBAMMD0EtVHJ1c3QtUXVhbC0wMjAeFw0xNDA3MDExMTIzMzNa -Fw0yNDA3MDEwOTIzMzNaMIGLMQswCQYDVQQGEwJBVDFIMEYGA1UECgw/QS1UcnVz -dCBHZXMuIGYuIFNpY2hlcmhlaXRzc3lzdGVtZSBpbSBlbGVrdHIuIERhdGVudmVy -a2VociBHbWJIMRgwFgYDVQQLDA9BLVRydXN0LVF1YWwtMDIxGDAWBgNVBAMMD0Et -VHJ1c3QtUXVhbC0wMjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAJaR -q9eOsFm4Ab20Hq2Z/aH86gyWa48uSUjY6eQkguHYuszr3gdcSMYZggFHQgnhfLmf -ro/27l5rqKhWiDhWs+b+yZ1PNDhRPJy+86ycHMg9XJqErveULBSyZDdgjhSwOyrN -ibUir/fkf+4sKzP5jjytTKJXD/uCxY4fAd9TjMEVpN3umpIS0ijpYhclYDHvzzGU -833z5Dwhq5D8bc9jp8YSAHFJ1xzIoO1jmn3jjyjdYPnY5harJtHQL73nDQnfbtTs -5ThT9GQLulrMgLU4WeyAWWWEMWpfVZFMJOUkmoOEer6A8e5fIAeqdxdsC+JVqpZ4 -CAKel/Arrlj1gFA//jsCAwEAAaM2MDQwDwYDVR0TAQH/BAUwAwEB/zARBgNVHQ4E -CgQIQj0rJKbBRc4wDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3DQEBBQUAA4IBAQBh -MfOINQm4XpzF6DmkOmb/ArSXHf5LObqFmIMooNr2TkyzrUTK/NE+mdrm15Rfdts7 -kZVq/ICfQSFeaPvWaAVq4plH/26OjvMTVv7DfgfPBUxDWqlCuDnDnPAVQ+yo/o5i -BA5uUlMbp5znbDtlxwF/5gWqcn/hKxSUCP1uiOPIlKfeVvsRmBcJAdoixTM/Ic10 -pavJMGOI20onArvQZAUEbXQLA8cs8naxfF6Bo36U9nk6wn7q8VPXhViekByd17F6 -9A+ah0Iqw4SPf9BqNRIe1YxxjDhCmjWt3aoyE3ZFBuGjW+r2ipb/vGU1+2oyy2Fd -2dMmiMQ7gGhWX9X6gWLd ------END CERTIFICATE----- diff --git a/moaSig/handbook/conf/moa-spss/certstore/toBeAdded/A-Trust-Qual-03-20140701-20240701.SerNo144df5(SecureSignatureKeypair).cer b/moaSig/handbook/conf/moa-spss/certstore/toBeAdded/A-Trust-Qual-03-20140701-20240701.SerNo144df5(SecureSignatureKeypair).cer deleted file mode 100644 index e1100c7..0000000 --- a/moaSig/handbook/conf/moa-spss/certstore/toBeAdded/A-Trust-Qual-03-20140701-20240701.SerNo144df5(SecureSignatureKeypair).cer +++ /dev/null @@ -1,23 +0,0 @@ ------BEGIN CERTIFICATE----- -MIIDyzCCArOgAwIBAgIDFE31MA0GCSqGSIb3DQEBBQUAMIGLMQswCQYDVQQGEwJB -VDFIMEYGA1UECgw/QS1UcnVzdCBHZXMuIGYuIFNpY2hlcmhlaXRzc3lzdGVtZSBp -bSBlbGVrdHIuIERhdGVudmVya2VociBHbWJIMRgwFgYDVQQLDA9BLVRydXN0LVF1 -YWwtMDMxGDAWBgNVBAMMD0EtVHJ1c3QtUXVhbC0wMzAeFw0xNDA3MDExMTMwNTZa -Fw0yNDA3MDEwOTMwNTZaMIGLMQswCQYDVQQGEwJBVDFIMEYGA1UECgw/QS1UcnVz -dCBHZXMuIGYuIFNpY2hlcmhlaXRzc3lzdGVtZSBpbSBlbGVrdHIuIERhdGVudmVy -a2VociBHbWJIMRgwFgYDVQQLDA9BLVRydXN0LVF1YWwtMDMxGDAWBgNVBAMMD0Et -VHJ1c3QtUXVhbC0wMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALOe -JIgc0s9AA0hqqqWgK72W9XwKn5+rUJDbQc5WgHkqwP2TU3qcW/NZYSSIY6PVGO6b -hHSEnOyMPdrBhnpvNi4m6349yT6t565LdHcoKyQg/youwpVkEPZ+e8O32hF9nqvt -L4wZohydjMwzcHUJB/5e+0CkJYwv/bVRZzqoK0yf1midYJukxWOw7nDNKD9KdOpZ -+XXFAAZuH7BjwSqqE138y9JlGzkxIlrCeSJdGfFLwr7OHIgBdPEmQXcyOcaMUGjP -U4VDig+gj+6OC5KjAEC+wKJZXiyhRLj+HyLTDLrQ6O8p5HI3Sov4FuwiMgcqIyzz -o9fNyqmnT3K/vBGOqBsCAwEAAaM2MDQwDwYDVR0TAQH/BAUwAwEB/zARBgNVHQ4E -CgQIRgbfN/LCNxAwDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3DQEBBQUAA4IBAQBy -jA/CmId9oz8sy4rwEklti+8TLS/aLHkiMqUmKjuHyT/6mz4Qh4fLfAAEv8iGSZiW -+7+Gv7HTcuEEdyNNhUmMGJLSQA/3KBjlttHXLiG943wnvcZf3LtkFc+8Ia5N3bNS -BM6q7/OFKHSS+iHcAJ8XS6SnLITYRyfo0thsXBaHpkTUkEP0uJY+yoE/EcBkvsGX -drLIawu8YOrNZvs3S6Ag0ex5brIdqiNtlUGwRxpLwssfBho5K0NqpXAloHT9kHBd -rGb2GrVdLIesuVivSP9zq09M8bcm3jDPCHv5bcudPZVX7rkr79VphgLfKlINA4Fw -VxCuPLXx/4sCfANQtvuY ------END CERTIFICATE----- diff --git a/moaSig/handbook/conf/moa-spss/certstore/toBeAdded/A-Trust-Root-05.20130923-20230920.SerNoFCDB4.cer b/moaSig/handbook/conf/moa-spss/certstore/toBeAdded/A-Trust-Root-05.20130923-20230920.SerNoFCDB4.cer Binary files differdeleted file mode 100644 index b9a0e5a..0000000 --- a/moaSig/handbook/conf/moa-spss/certstore/toBeAdded/A-Trust-Root-05.20130923-20230920.SerNoFCDB4.cer +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/certstore/toBeAdded/A-Trust-Test-Root-05-20141215-20241209.SerNo165fae.crt b/moaSig/handbook/conf/moa-spss/certstore/toBeAdded/A-Trust-Test-Root-05-20141215-20241209.SerNo165fae.crt deleted file mode 100644 index 9befb53..0000000 --- a/moaSig/handbook/conf/moa-spss/certstore/toBeAdded/A-Trust-Test-Root-05-20141215-20241209.SerNo165fae.crt +++ /dev/null @@ -1,34 +0,0 @@ ------BEGIN CERTIFICATE----- -MIIF3TCCA8WgAwIBAgIDFl+uMA0GCSqGSIb3DQEBCwUAMIGVMQswCQYDVQQGEwJB -VDFIMEYGA1UECgw/QS1UcnVzdCBHZXMuIGYuIFNpY2hlcmhlaXRzc3lzdGVtZSBp -bSBlbGVrdHIuIERhdGVudmVya2VociBHbWJIMR0wGwYDVQQLDBRBLVRydXN0LVRl -c3QtUm9vdC0wNTEdMBsGA1UEAwwUQS1UcnVzdC1UZXN0LVJvb3QtMDUwHhcNMTQx -MjE1MTMwMDQ1WhcNMjQxMjA5MTIwMDQ1WjCBlTELMAkGA1UEBhMCQVQxSDBGBgNV -BAoMP0EtVHJ1c3QgR2VzLiBmLiBTaWNoZXJoZWl0c3N5c3RlbWUgaW0gZWxla3Ry -LiBEYXRlbnZlcmtlaHIgR21iSDEdMBsGA1UECwwUQS1UcnVzdC1UZXN0LVJvb3Qt -MDUxHTAbBgNVBAMMFEEtVHJ1c3QtVGVzdC1Sb290LTA1MIICIDANBgkqhkiG9w0B -AQEFAAOCAg0AMIICCAKCAgEApv3ETyDuseYGvBXgJSiAe7q2dvKtcxlHGlEdEWKv -YUODdXiTIIcwuIU0+F8ybvoQdEVPGDsdzShhXKgMfdGY5WF1BslCgjwcr4h6GWgt -cSkXXFIYVV5GCrac4DhM60EvtXpadi8dNMu7dUKZjqES9UPC6Gc5H6fadauLaV6b -DbNrJufXUditjEbhqj5uX3u4/+nFRH8g1DiQm5RCC3ttVe0/7buJipErVQ9Sbhzk -hkFlzLbph2s2hiEP8NB5tXM3ffxmJ2Yv98+U1Ec0iXvsoGhqRyZVn1huTi+9PJnP -IyPfXDkqWv49E/WeZsaZ48kdVx9xIC6OVYF0GCDsKjsKWN+4xL6/eYvSnyIBij/A -e1T3wkLhp+bDyqxnvDatMlWchfbZxicvzr83c8SGt81RBekwbG/HGPRE4x5DnTkQ -67DTMzMSmW+FAJdZG2Ofsg9+D+v+iqRD310maLABtko3e+xm601FS8d0lDFJVGgG -36IB+ZrUIXmLfOIQjlF/yx566oUmSif3QRgmnSuNtunffXHBbL0qFAiEDwwHg41t -zBiSswKRWa5J/BMIung+6T8gw5kY3c3yJ+pUip4J2oeVa9jZlO/AY7k5BCeGh5Ky -zu22GMQIp9ulIIfUKx8jcnhtDy07UEmaWqv3rVsqKWF9v9B4z2SMiH1oFEgrNAxi -v98CAQOjNjA0MA8GA1UdEwEB/wQFMAMBAf8wEQYDVR0OBAoECEQv+xQJkonQMA4G -A1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQsFAAOCAgEASO7M8elac5VTP+FjuL1S -nS72NaIP/RGYmw6967irlG5qQ0cGmCZO5J8SsL7xc3BMofMQMbrsGEryO1F4Y95B -o419IzqPb8sYHlx1Du+F2D01qXBmGP/NcqQIo9twLa+man16l7SFF/iNof2axigM -TUcWzqHUxtSjCPoU44qTsi8vVuQKRP8gMGlVCty0joc0gEW8PqKiMaKxI+tglVA6 -czwvPXfk9pJkL3hhDg/p59iKJTkEKIDtvugrZ4ZqOCBL5xv1Tar3BMBAKSfl/YoQ -/p6ATGlKkjSbMyU7vUGxXldNALHkezxFufuDZEF/erp3hCVADbQMKgyM7Diu6cKB -0s4+POeTQoSQ2dnMQJdgAfeGcd3twy2s/M/xHAVGPAPIQWH7ppVcs6AbVXQabHxJ -YZU7G2ct8Se0r8RLq+iRYrWhFKl8mmVBNwK2WJhjWPv2fqM1xYtbbwH6zoV/Sf8j -uIbx/5A/MJo/4s/9ciafJLVzLvkOh6Bhf310TAxyB9mDiL00KAuVTDtwYfzo1+jw -0bInpPqTCkgszn0LbajeaEIc7lQ7neY0gmMqDvnhA+5LyHJXuX5tDF+1/KDijlLs -p/k1/YZfe1Ai1+gcRoAlp2O80tKaJWZPkf8POffyIkSxJbHlKF6r3TWs7JYr+YUi -lm2dyCqZ9RUD5ZN2YRntJoo= ------END CERTIFICATE----- diff --git a/moaSig/handbook/conf/moa-spss/certstore/toBeAdded/A-Trust-nQual-01-20140701-20240701.SerNo144dc3(CertifiedKeypair).cer b/moaSig/handbook/conf/moa-spss/certstore/toBeAdded/A-Trust-nQual-01-20140701-20240701.SerNo144dc3(CertifiedKeypair).cer deleted file mode 100644 index e90f5f2..0000000 --- a/moaSig/handbook/conf/moa-spss/certstore/toBeAdded/A-Trust-nQual-01-20140701-20240701.SerNo144dc3(CertifiedKeypair).cer +++ /dev/null @@ -1,21 +0,0 @@ ------BEGIN CERTIFICATE----- -MIIDXTCCAkWgAwIBAgIDFE3DMA0GCSqGSIb3DQEBBQUAMFUxCzAJBgNVBAYTAkFU -MRAwDgYDVQQKEwdBLVRydXN0MRkwFwYDVQQLExBBLVRydXN0LW5RdWFsLTAxMRkw -FwYDVQQDExBBLVRydXN0LW5RdWFsLTAxMB4XDTE0MDcwMTExMDk1NFoXDTI0MDcw -MTA5MDk1NFowVTELMAkGA1UEBhMCQVQxEDAOBgNVBAoTB0EtVHJ1c3QxGTAXBgNV -BAsTEEEtVHJ1c3QtblF1YWwtMDExGTAXBgNVBAMTEEEtVHJ1c3QtblF1YWwtMDEw -ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQD/9RyAEZ6eHmhYzNJ328f0 -jmdSUFi6EqRqOxb3jHNPTIpK82CR6z5lmSnZQNUuCPD+htbNZffd2DKVB06NOyZ1 -2zcOMCgj4GtkZoqE0zPpPT3bpoE55nkZZe/qWEX/64wz/L/4EdkvKDSKG/UsP75M -tmCVY5m2Eg73RVFRz4ccBIMpHel4lzEqSkdDtZOY5fnkrE333hx67nxq21vY8Eyf -8O4fPQ5RtN8eohQCcPQ1z6ypU1R7N9jPRpnI+yzMOiwd3+QcKhHi1miCzo0pkOaB -1CwmfsTyNl8qU0NJUL9Ta6cea7WThwTiWol2yD88cd2cy388xpbNkfrCPmZNGLoV -AgMBAAGjNjA0MA8GA1UdEwEB/wQFMAMBAf8wEQYDVR0OBAoECE5ZzscCMocwMA4G -A1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQUFAAOCAQEAO3hBdwsNQOtYOAlC2PKT -sdNexKqMefFGrGDYIEAflaudwpcqUgv7fLLhMNRMT+BcXtqXtfNHGsll2GwseuMq -C02bPUmbfNV4P9djIz/s6qqvNQaQneFzhuXn+i0YQ10sFFVeIL3qrBMl1lwBeQ64 -/GyvrbGiHuuagEUc25CDrUqni+b+azaPUsRG6IXkIWG0H6WIMqtxIdHzAV/1raKh -PKot1VhG2rivf1cBBGXU/0VSYBitXrLNwXwlX2ad0WiFHUF8RS9F3j2vVSYMfxer -NPNaRLtCkHNSqCIDkMmmHJKbJbKJzMaZYmX2i2nc16HCpE/gbQc3etQCl3GvzO88 -xw== ------END CERTIFICATE----- diff --git a/moaSig/handbook/conf/moa-spss/certstore/toBeAdded/A-Trust-nQual-03-20140723-20250723.SerNo14b4f9.cer b/moaSig/handbook/conf/moa-spss/certstore/toBeAdded/A-Trust-nQual-03-20140723-20250723.SerNo14b4f9.cer deleted file mode 100644 index 2284687..0000000 --- a/moaSig/handbook/conf/moa-spss/certstore/toBeAdded/A-Trust-nQual-03-20140723-20250723.SerNo14b4f9.cer +++ /dev/null @@ -1,23 +0,0 @@ ------BEGIN CERTIFICATE----- -MIIDzzCCAregAwIBAgIDFLT5MA0GCSqGSIb3DQEBBQUAMIGNMQswCQYDVQQGEwJB -VDFIMEYGA1UECgw/QS1UcnVzdCBHZXMuIGYuIFNpY2hlcmhlaXRzc3lzdGVtZSBp -bSBlbGVrdHIuIERhdGVudmVya2VociBHbWJIMRkwFwYDVQQLDBBBLVRydXN0LW5R -dWFsLTAzMRkwFwYDVQQDDBBBLVRydXN0LW5RdWFsLTAzMB4XDTE0MDcyMzEwMzgy -OVoXDTI1MDcyMzA4MzgyOVowgY0xCzAJBgNVBAYTAkFUMUgwRgYDVQQKDD9BLVRy -dXN0IEdlcy4gZi4gU2ljaGVyaGVpdHNzeXN0ZW1lIGltIGVsZWt0ci4gRGF0ZW52 -ZXJrZWhyIEdtYkgxGTAXBgNVBAsMEEEtVHJ1c3QtblF1YWwtMDMxGTAXBgNVBAMM -EEEtVHJ1c3QtblF1YWwtMDMwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB -AQCtPWFuA/OQO8BBC4SAzewqo51ru27CQoT3URThoKgtUaNR8t4j8DRE/5TrzAUj -lUC5B3ilJfYKvUWG6Nm9wASOhURh73+nyfrBJcyFLGM/BWBzSQXgYHiVEEvc+RFZ -znF/QJuKqiTfC0Li21a8StKlDJu3Qz7dg9MmEALP6iPESU7l0+m0iKsMrmKS1GWH -2WrX9IWf5DMiJaXlyDO6w8dB3F/GaswADm0yqLaHNgBid5seHzTLkDx4iHQF63n1 -k3Flyp3HaxgtPVxO59X4PzF9j4fsCiIvI+n+u33J4PTs63zEsMMtYrWacdaxaujs -2e3Vcuy+VwHOBVWf3tFgiBCzAgMBAAGjNjA0MA8GA1UdEwEB/wQFMAMBAf8wEQYD -VR0OBAoECERqlWdVeRFPMA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQUFAAOC -AQEAEoykPeAA/6iKm6YnfxsSHFe+Dtian2yAH8L2TqMdcHeSB/7L1x73uuDeYku1 -hbKQAXnfXntf8R+VgjQBTww0aDb5164netYcFbK0g8uVWVCqOl8wf3JbAUxHS9br -cFKks+CJKPr6qQ6H+sb1o9127c9IQSZYP3S/gMAaGw0cSTlsnosE0P5Ur5vHsapm -FV3V+VOjYNs2GLSu4XQCYvSIpsfDJp8VsJ/BMYS9GqGvQ/9qGa0fwEbEMadb5mcJ -tw/EKg4gJthMgxOfO5eVuCQ3PAEWOe5lrOrTdvTIlhphUuns5hoIdlyLuNqewK3s -FJ6N46sU7LjJLqSKYEB8usoIiw== ------END CERTIFICATE----- diff --git a/moaSig/handbook/conf/moa-spss/certstore/toBeAdded/a-sign-Premium-Test-Sig-02.20141124-20241118.SerNo3969edc1.cer b/moaSig/handbook/conf/moa-spss/certstore/toBeAdded/a-sign-Premium-Test-Sig-02.20141124-20241118.SerNo3969edc1.cer Binary files differdeleted file mode 100644 index 1bb4494..0000000 --- a/moaSig/handbook/conf/moa-spss/certstore/toBeAdded/a-sign-Premium-Test-Sig-02.20141124-20241118.SerNo3969edc1.cer +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/certstore/toBeAdded/a-sign-Premium-enc-02.20140701-20240701.SerNo144dfd.cer b/moaSig/handbook/conf/moa-spss/certstore/toBeAdded/a-sign-Premium-enc-02.20140701-20240701.SerNo144dfd.cer Binary files differdeleted file mode 100644 index 6c0c042..0000000 --- a/moaSig/handbook/conf/moa-spss/certstore/toBeAdded/a-sign-Premium-enc-02.20140701-20240701.SerNo144dfd.cer +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/certstore/toBeAdded/a-sign-SSL-03.20140723-20240723.SerNo14b4fd.cer b/moaSig/handbook/conf/moa-spss/certstore/toBeAdded/a-sign-SSL-03.20140723-20240723.SerNo14b4fd.cer deleted file mode 100644 index 04627da..0000000 --- a/moaSig/handbook/conf/moa-spss/certstore/toBeAdded/a-sign-SSL-03.20140723-20240723.SerNo14b4fd.cer +++ /dev/null @@ -1,26 +0,0 @@ ------BEGIN CERTIFICATE----- -MIIEdzCCA1+gAwIBAgIDFLT9MA0GCSqGSIb3DQEBBQUAMIGNMQswCQYDVQQGEwJB -VDFIMEYGA1UECgw/QS1UcnVzdCBHZXMuIGYuIFNpY2hlcmhlaXRzc3lzdGVtZSBp -bSBlbGVrdHIuIERhdGVudmVya2VociBHbWJIMRkwFwYDVQQLDBBBLVRydXN0LW5R -dWFsLTAzMRkwFwYDVQQDDBBBLVRydXN0LW5RdWFsLTAzMB4XDTE0MDcyMzEwNDIw -NVoXDTI0MDcyMzA4NDIwNVowgYcxCzAJBgNVBAYTAkFUMUgwRgYDVQQKDD9BLVRy -dXN0IEdlcy4gZi4gU2ljaGVyaGVpdHNzeXN0ZW1lIGltIGVsZWt0ci4gRGF0ZW52 -ZXJrZWhyIEdtYkgxFjAUBgNVBAsMDWEtc2lnbi1TU0wtMDMxFjAUBgNVBAMMDWEt -c2lnbi1TU0wtMDMwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDMjPM6 -PqgdPBPV4Efudpytt2Y4GZJfjeRdZo5SCuULDvvL+23xxBWnR3scFvfE1ekHN/YK -k+2/qhU2B2ntoSNJSyDchNM8YPc9Lx67zZyhQTZgbBzh3IZAVb/hwuRRRV68JCBj -r3r6v7IbwjH5XcVISdB4szx0z93aAQyKW9QkV+tD5a1vWFETvdHsZeVmDzfqcdsG -AznPJw+9HrImCsswCWYUgPcFRkPNjj2r2NoyckVN781aWmNTAqJPf/Ckj9l9pUIt -Vjhy8XNJW4iVDBkkykBXcGSkIau0ypJrRjsD1jKqUTIRZ/y2HlyltmwWi8OuyBLd -LaHDbjc0b6JmqoivAgMBAAGjgeMwgeAwDwYDVR0TAQH/BAUwAwEB/zARBgNVHQ4E -CgQIQD6h02K0A90wEwYDVR0jBAwwCoAIRGqVZ1V5EU8wDgYDVR0PAQH/BAQDAgEG -MIGUBgNVHR8EgYwwgYkwgYaggYOggYCGfmxkYXA6Ly9sZGFwLmEtdHJ1c3QuYXQv -b3U9QS1UcnVzdC1uUXVhbC0wMyxvPUEtVHJ1c3QsYz1BVD9jZXJ0aWZpY2F0ZXJl -dm9jYXRpb25saXN0P2Jhc2U/b2JqZWN0Y2xhc3M9ZWlkQ2VydGlmaWNhdGlvbkF1 -dGhvcml0eTANBgkqhkiG9w0BAQUFAAOCAQEAbHQvTl94ommGFln3s6wmd/tr6r5R -3FR3A7O/uiGEAqm/7B84KGkTmKHhChGMiCiMcBSGtMx1IaO+t7gimLtRL57wgeIf -k6nsgcbBioh0nO12XDagdtj75Dr7buEFyQvFdfydi5cAwScLW+YYxtwDni9/debd -ypFKeCRxdCX12n0oFQDPJf8YvE4CaDitBJCQrZdJBDpB6muF8mpNq8CIuyTPIBZX -RPKJNfIraKq/Xi7tuLkvWVGVsSqJeTvP++05Tvv/44+XBpCp3sUrjsb0G0Mj90PG -SnAapsrgzDzLO/LQ8vrB9H2oRM4iYfUxu/dKSOBVXa3WQzsLBL0/9zZ30g== ------END CERTIFICATE----- diff --git a/moaSig/handbook/conf/moa-spss/certstore/toBeAdded/a-sign-Test-Premium-Sig-05.20141215-20141209.SerNo165fb8.crt b/moaSig/handbook/conf/moa-spss/certstore/toBeAdded/a-sign-Test-Premium-Sig-05.20141215-20141209.SerNo165fb8.crt deleted file mode 100644 index ee17cdb..0000000 --- a/moaSig/handbook/conf/moa-spss/certstore/toBeAdded/a-sign-Test-Premium-Sig-05.20141215-20141209.SerNo165fb8.crt +++ /dev/null @@ -1,36 +0,0 @@ ------BEGIN CERTIFICATE----- -MIIGQTCCBCmgAwIBAgIDFl+4MA0GCSqGSIb3DQEBCwUAMIGVMQswCQYDVQQGEwJB -VDFIMEYGA1UECgw/QS1UcnVzdCBHZXMuIGYuIFNpY2hlcmhlaXRzc3lzdGVtZSBp -bSBlbGVrdHIuIERhdGVudmVya2VociBHbWJIMR0wGwYDVQQLDBRBLVRydXN0LVRl -c3QtUm9vdC0wNTEdMBsGA1UEAwwUQS1UcnVzdC1UZXN0LVJvb3QtMDUwHhcNMTQx -MjE1MTMxMDE5WhcNMjQxMjA5MTIxMDE5WjCBoTELMAkGA1UEBhMCQVQxSDBGBgNV -BAoMP0EtVHJ1c3QgR2VzLiBmLiBTaWNoZXJoZWl0c3N5c3RlbWUgaW0gZWxla3Ry -LiBEYXRlbnZlcmtlaHIgR21iSDEjMCEGA1UECwwaYS1zaWduLVRlc3QtUHJlbWl1 -bS1TaWctMDUxIzAhBgNVBAMMGmEtc2lnbi1UZXN0LVByZW1pdW0tU2lnLTA1MIIC -IDANBgkqhkiG9w0BAQEFAAOCAg0AMIICCAKCAgEAq9PRwApA35K3LT0p5IYtNZMS -BFJsIkzjgF4FRQ36PtxeNsPL6iPgfFjWLZzVT1arHrC6ciz97haDWEN5Jq+aVaZp -gvFtvqZXlwYOWP0sshQg1aP7zrfH/N6yqjkrXHyzgmSz3SVIbdj5CqUJz/+94FCR -cA8XkQ3WZAjSkRB+MSIY8umftkmJOVAstaG28OEtpmqwBLRh/QGcNZzfhyrPS2Ls -5BAKQW9SBb1nXn8JOHq0Bd8zHShHbny9X/qT0xqeFfwItZWiW7iu3LgbGqfB3J4d -s+9iecwHDsmYdSb2quGmzJXejmvktFZte9dlF7BuBqier+R3/czdLteRems5S9Ka -hlP3+f3CnFwKihyVMhnuf5HyhCo1Fvrt+igWtNnos38qzB5RzRTJXnvZyrtTJMQE -/8ZuV2B12Oaf0AQjt+o/SPKeaTBX2yes0S1xbQy7xJzNhgBJ2Ir3OI6SoOooVN+9 -kQuzD7NsJBJzIy4dHCvOgs0C1ro8DROaV3Usn58eYOkLDrPGpEBmFq7GnsxnbeEh -5zzlgh00R9cy5PxiO40U+KxnTmQl+/vc9i1plDLsTRePeThKgS0UOIRZP7voYKdu -IJaEzufNXUxZbCc9Mq3V552BmRPhL9Ouf/bfaVMmkY4p7BdU57stxDfVwG9biujj -AVPA7DeRm+S0kzWRq0kCAQOjgY0wgYowPwYDVR0fBDgwNjA0oDKgMIYuaHR0cDov -L2NybC5hLXRydXN0LmF0L2NybC9BLVRydXN0LVRlc3QtUm9vdC0wNTATBgNVHSME -DDAKgAhEL/sUCZKJ0DAPBgNVHRMBAf8EBTADAQH/MBEGA1UdDgQKBAhB0SNOEjM1 -3jAOBgNVHQ8BAf8EBAMCAQYwDQYJKoZIhvcNAQELBQADggIBAEiqm52uEL2giMCy -8i1tIbqKP3SeJnYxhJgN4d3caWqfE1CoEUQjsN8t7sF866TOYJMrQ+/dS8bUqNiG -x4vvPrDq3DUSyKflgPaz+36xtB4BTlIiYTzio7Tnv+d5n+MsM6c/rijJzRx38FLM -tZTAfr7dXv5KxrfYrrEnPrGg0gMlYqX3rB1TKQnPx5qG3e2YXc6tdvDeXhh9cXj3 -76VJony7iV0ccKWNXRRNx1X0po/Luu6EMD/5czArtmO0KmGXO3gK3Fy7pxUbdBra -nSJNsY+Fv4X3zqf5n9ZM4Yut7KSqBiQbuMmIzLZkICJOWN5t9mOTStgmZjGqBdQN -sRuVinaLxA88Fd32ZmFxbagOLeKEXPTQT/ERbDOjhShY6jA2/LkIcg9mwDDOubsp -FcZaYlyXmvD+HNVxL5B4BGDWoGHmCxaj+bcYP4U797bpE90sTnMIQd6JoYEMQSIy -Re0S4jKIOkCqBDkPBIXZf/IizTvJiQoFUtT7civFYhcUHDOcWs69NUU3F6sEBZmq -C1uIRm7zD6FUPNpVcfVIeqcfWsnx5bSKwheh9Dk/A3eTmxjpodV4tIq6BfCLdq52 -85dumPB4zz/EmCuZ0hwy9/TJwaogVMqicvr1/pQXDM7T6fCM0vK9w/e4ejmX61TK -6MsTXFjxlwpIacl4fkAxk6L22xfB ------END CERTIFICATE----- diff --git a/moaSig/handbook/conf/moa-spss/certstore/toBeAdded/a-sign-Test-Qual-01.20141117-20241111.SerNo16120f.cer b/moaSig/handbook/conf/moa-spss/certstore/toBeAdded/a-sign-Test-Qual-01.20141117-20241111.SerNo16120f.cer deleted file mode 100644 index 60bc9a5..0000000 --- a/moaSig/handbook/conf/moa-spss/certstore/toBeAdded/a-sign-Test-Qual-01.20141117-20241111.SerNo16120f.cer +++ /dev/null @@ -1,23 +0,0 @@ ------BEGIN CERTIFICATE----- -MIID2zCCAsOgAwIBAgIDFhIPMA0GCSqGSIb3DQEBBQUAMIGTMQswCQYDVQQGEwJB -VDFIMEYGA1UECgw/QS1UcnVzdCBHZXMuIGYuIFNpY2hlcmhlaXRzc3lzdGVtZSBp -bSBlbGVrdHIuIERhdGVudmVya2VociBHbWJIMRwwGgYDVQQLDBNhLXNpZ24tVEVT -VC1RdWFsLTAxMRwwGgYDVQQDDBNhLXNpZ24tVEVTVC1RdWFsLTAxMB4XDTE0MTEx -NzA3NDAzNloXDTI0MTExMTA2NDAzNlowgZMxCzAJBgNVBAYTAkFUMUgwRgYDVQQK -DD9BLVRydXN0IEdlcy4gZi4gU2ljaGVyaGVpdHNzeXN0ZW1lIGltIGVsZWt0ci4g -RGF0ZW52ZXJrZWhyIEdtYkgxHDAaBgNVBAsME2Etc2lnbi1URVNULVF1YWwtMDEx -HDAaBgNVBAMME2Etc2lnbi1URVNULVF1YWwtMDEwggEiMA0GCSqGSIb3DQEBAQUA -A4IBDwAwggEKAoIBAQD4TRgyXzhxJ2AkndX0RPY771f64dsJrReEeuShLRK5io0B -kJWc4t7wuD1B98cJ0MUPlMmOJ2Ckc/vuLhQUyY3qEUmhMhixCUIcdHQ5yH3H0yMV -HxyJxAG83fE8M25kpKA4TzzMW8KPd2S63wbpPElyEy7vrllrLxvdQRSDpMZMvRg8 -fvoDGAehxsnKKwlXZuMq1aSBzfMz3cMBDKxvqzDIz7yC1iWNkdiwog3a5a5PbViK -shhZ0h+bx9WFDpiN6ooPQgcGhjD+NqIDoiOr7CUFHp+HiC6xIsEFJaBHTf3dRZ61 -0r1FDABx0Yj8+wlXSQLYq/1nR/QMwsvH0Cz1qYTPAgMBAAGjNjA0MA8GA1UdEwEB -/wQFMAMBAf8wEQYDVR0OBAoECE8h1CulBqTdMA4GA1UdDwEB/wQEAwIBBjANBgkq -hkiG9w0BAQUFAAOCAQEAimFu+xTm3UdyU+fO+2hz4DS20OGSC9NBDkorjzhRPWoZ -IVhUi6yH5drqSBm4/2ZYS1Ba5npzfyJwm+cLO28ljxAApfRHlbN0y83hKv7c0I7g -zWTMRs8X8ar5Gd7d4O5jpC4PAaZ1ozSDoE06U5im6YMLaJy/0QYvf5EQBMvLdeoc -d1vl17JYKYqYzcX2dvayikrfiglFqDaZZ66yJPBSuiyNhXpPkbXsOoyyTPtV/0Bh -eKIQiQyJID5aZtR7D4fBAzKdp5wB9KLQXBZ80hrwqrIuy+ME0tFaBWYBi8dzQ1iq -/E3Qz0USfGmxPMm8y/zRqsDvxZCRiSuvzBkOXbGMdA== ------END CERTIFICATE----- diff --git a/moaSig/handbook/conf/moa-spss/certstore/toBeAdded/a-sign-corporate-light-02.20140905-20240905.SerNo153B49.cer b/moaSig/handbook/conf/moa-spss/certstore/toBeAdded/a-sign-corporate-light-02.20140905-20240905.SerNo153B49.cer Binary files differdeleted file mode 100644 index e4bd48d..0000000 --- a/moaSig/handbook/conf/moa-spss/certstore/toBeAdded/a-sign-corporate-light-02.20140905-20240905.SerNo153B49.cer +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/certstore/toBeAdded/a-sign-premium-sig-02.20140701-20240701.SerNo144e10.cer b/moaSig/handbook/conf/moa-spss/certstore/toBeAdded/a-sign-premium-sig-02.20140701-20240701.SerNo144e10.cer Binary files differdeleted file mode 100644 index 74c4ce3..0000000 --- a/moaSig/handbook/conf/moa-spss/certstore/toBeAdded/a-sign-premium-sig-02.20140701-20240701.SerNo144e10.cer +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/certstore/toBeAdded/a-sign-premium-sig-03.20140701-20240701.SerNo144e13.cer b/moaSig/handbook/conf/moa-spss/certstore/toBeAdded/a-sign-premium-sig-03.20140701-20240701.SerNo144e13.cer Binary files differdeleted file mode 100644 index 6c50ec0..0000000 --- a/moaSig/handbook/conf/moa-spss/certstore/toBeAdded/a-sign-premium-sig-03.20140701-20240701.SerNo144e13.cer +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/certstore/toBeAdded/a-sign-test-premium-Enc-05.20141215-20141209.SerNo165fb7.crt b/moaSig/handbook/conf/moa-spss/certstore/toBeAdded/a-sign-test-premium-Enc-05.20141215-20141209.SerNo165fb7.crt deleted file mode 100644 index 9ea6d0c..0000000 --- a/moaSig/handbook/conf/moa-spss/certstore/toBeAdded/a-sign-test-premium-Enc-05.20141215-20141209.SerNo165fb7.crt +++ /dev/null @@ -1,36 +0,0 @@ ------BEGIN CERTIFICATE----- -MIIGQTCCBCmgAwIBAgIDFl+3MA0GCSqGSIb3DQEBCwUAMIGVMQswCQYDVQQGEwJB -VDFIMEYGA1UECgw/QS1UcnVzdCBHZXMuIGYuIFNpY2hlcmhlaXRzc3lzdGVtZSBp -bSBlbGVrdHIuIERhdGVudmVya2VociBHbWJIMR0wGwYDVQQLDBRBLVRydXN0LVRl -c3QtUm9vdC0wNTEdMBsGA1UEAwwUQS1UcnVzdC1UZXN0LVJvb3QtMDUwHhcNMTQx -MjE1MTMwOTAwWhcNMjQxMjA5MTIwOTAwWjCBoTELMAkGA1UEBhMCQVQxSDBGBgNV -BAoMP0EtVHJ1c3QgR2VzLiBmLiBTaWNoZXJoZWl0c3N5c3RlbWUgaW0gZWxla3Ry -LiBEYXRlbnZlcmtlaHIgR21iSDEjMCEGA1UECwwaYS1zaWduLVRlc3QtUHJlbWl1 -bS1FbmMtMDUxIzAhBgNVBAMMGmEtc2lnbi1UZXN0LVByZW1pdW0tRW5jLTA1MIIC -IDANBgkqhkiG9w0BAQEFAAOCAg0AMIICCAKCAgEA2YDEweWMfTpWbHjFwzPl5tri -jaL4tmhuHQzuSAEO080+m5Dc38Rj5xHf1MNCxvAx18+3A+b0WDDhtdJh+SXVxAQq -/VhnaOFcdlvun0/4+l4Xynf6xd0r8WfQgnTAER4iFzGoWnOFQZqF3JGsx0mxd5Ss -6kbs+4Gd/FmdAD09qTb+e3FtQC9aszVb5j57LB14Ka+iVXMEFq6J1uvvdjIcwbeL -7gOGOLzn9dArFT4bfMIE/gBOJnY3Ulp16jOMGb2sY+9u9rGJ84jSpYKEsL+RBoJr -23O5rfdrVi/+fWC0QaDqwhI46lLr9Erkk7NjEeElZ+Tj2A5KK4K0FNvzAIqxki1Z -/MQcBfknbq9jxUZs4zUl9QA7ufCqmFhi4qQxycEfUEXsTFlya2IgWqavA1OFZ7Ww -tJQOR/EQUvtH/fIE7nompnxzWxi1iAvVkv0OEsAYVRd9ldviLl9wLzpQoOPvwc/B -kRLvriWH/Bjyc8+SeAfK92ZRHh+a1HBsX7XKuZwKJ/pVKF4EtalbZXlSuQau/Mc0 -ImS49AL/GjfShp/IhGHfBQbTjR3vhZfakG6wvSFnGaRt2ohxMHb0fSK7xNrDpfNV -Orloh77ry44C4jjQIairRW1l4CLilbitKpHO4VtZ443w25fud2FapvdesoUfHogV -KTce4dGvW3jrN7/8TRUCAQOjgY0wgYowPwYDVR0fBDgwNjA0oDKgMIYuaHR0cDov -L2NybC5hLXRydXN0LmF0L2NybC9BLVRydXN0LVRlc3QtUm9vdC0wNTATBgNVHSME -DDAKgAhEL/sUCZKJ0DAPBgNVHRMBAf8EBTADAQH/MBEGA1UdDgQKBAhH2pAliBnO -GzAOBgNVHQ8BAf8EBAMCAQYwDQYJKoZIhvcNAQELBQADggIBADDqJFkkBD6tUmiu -L45YlXWKogD5eUfM+xnNVdg60M4HXHksVGT49CiY1vWzuLwUD3CXQ1W7yBKnLB5b -GcoaHNgZDhNskYJCZu9K0g8oqNEN3Hb2QoKqyCaOlKV0dXILq/3SbdcXvUkUPS9K -nWkX48tVMcw3OAmRYKwBK6tkUBwVw0VJ49sT+9qgPGCb8HYafSjCTnb3kdKGYK7a -0E6eVBjYf6WcMfvCIYma5Zi4fx7U0K6RN8xJvhRHAZK3uJphk1QciAIxViFIPnex -htgywJNHRautIsDbRGwdDVOUB6VdCFF19HnO9C4p2+pggCi9nT/I4CklZGZ5Q0VB -j9knsSFXYMY9QFGm3feiVIXAy2Pp7IMB21KNZKgqCLQRgANNdvkWwO97lcxpmocS -/p9LIEYDpa9tIvBrTiK39hUixeQaMhvlrSN3H49NqoxsStv8UEvSbjLJAuOcK1oV -+IWA8RbBwippM45729X7nGdPUbxys+rn7F04WNe+oQN96hKX4VJ6OCANz1bca6LV -sPtkFej+SLbpALVH3YvP4ct1UQms3UnuN9m1A0ceB4u4KroHBHlSGLB6K3UI3E42 -cYVaGrbflSvwwXxCHUvrCeL+eNKgI2Vyt29aHVJO0OMAS03Eb1PcygeNU4h6t+CS -UBU+/OTtSQGrLe+kMKP6uBO/cMhv ------END CERTIFICATE----- diff --git a/moaSig/handbook/conf/moa-spss/certstore/toBeAdded/atrust_OCSP_Responder_03-1.crt b/moaSig/handbook/conf/moa-spss/certstore/toBeAdded/atrust_OCSP_Responder_03-1.crt Binary files differdeleted file mode 100644 index ebfbce9..0000000 --- a/moaSig/handbook/conf/moa-spss/certstore/toBeAdded/atrust_OCSP_Responder_03-1.crt +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/keys/common/moa-signaturdienst-allekunden.cer b/moaSig/handbook/conf/moa-spss/keys/common/moa-signaturdienst-allekunden.cer Binary files differdeleted file mode 100644 index ad98900..0000000 --- a/moaSig/handbook/conf/moa-spss/keys/common/moa-signaturdienst-allekunden.cer +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/keys/common/moa-signaturdienst-allekunden[pwd=allekunden].p12 b/moaSig/handbook/conf/moa-spss/keys/common/moa-signaturdienst-allekunden[pwd=allekunden].p12 Binary files differdeleted file mode 100644 index 9c6669e..0000000 --- a/moaSig/handbook/conf/moa-spss/keys/common/moa-signaturdienst-allekunden[pwd=allekunden].p12 +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/keys/customer1/moa-signaturdienst-kunde1.cer b/moaSig/handbook/conf/moa-spss/keys/customer1/moa-signaturdienst-kunde1.cer Binary files differdeleted file mode 100644 index 65e3332..0000000 --- a/moaSig/handbook/conf/moa-spss/keys/customer1/moa-signaturdienst-kunde1.cer +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/keys/customer1/moa-signaturdienst-kunde1[pwd=kunde1].p12 b/moaSig/handbook/conf/moa-spss/keys/customer1/moa-signaturdienst-kunde1[pwd=kunde1].p12 Binary files differdeleted file mode 100644 index b751263..0000000 --- a/moaSig/handbook/conf/moa-spss/keys/customer1/moa-signaturdienst-kunde1[pwd=kunde1].p12 +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/keys/customer2/moa-signaturdienst-kunde2.cer b/moaSig/handbook/conf/moa-spss/keys/customer2/moa-signaturdienst-kunde2.cer Binary files differdeleted file mode 100644 index a3ebd91..0000000 --- a/moaSig/handbook/conf/moa-spss/keys/customer2/moa-signaturdienst-kunde2.cer +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/keys/customer2/moa-signaturdienst-kunde2[pwd=kunde2].p12 b/moaSig/handbook/conf/moa-spss/keys/customer2/moa-signaturdienst-kunde2[pwd=kunde2].p12 Binary files differdeleted file mode 100644 index 28e703d..0000000 --- a/moaSig/handbook/conf/moa-spss/keys/customer2/moa-signaturdienst-kunde2[pwd=kunde2].p12 +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/log4j.properties b/moaSig/handbook/conf/moa-spss/log4j.properties deleted file mode 100644 index 562d450..0000000 --- a/moaSig/handbook/conf/moa-spss/log4j.properties +++ /dev/null @@ -1,38 +0,0 @@ -# -# Sample log4j configuration for the MOA-SPSS web service -# - -# commons-logging setup -org.apache.commons.logging.LogFactory=org.apache.commons.logging.impl.Log4jFactory - -# Configure root logger and loggers for moa-spss -log4j.rootLogger=info, stdout -log4j.logger.at.gv.egovernment.moa.spss=info, moaspss -log4j.logger.at.gv.egovernment.moa.sig=info, moaspss -log4j.logger.iaik.server=warn, moaspss - -# Configure the 'stdout' appender to write logging output to the console -log4j.appender.stdout=org.apache.log4j.ConsoleAppender -log4j.appender.stdout.layout=org.apache.log4j.PatternLayout -log4j.appender.stdout.layout.ConversionPattern=%5p | %d{dd HH:mm:ss,SSS} | %20c | %10t | %m%n - -# Configure the 'moaspss' appender to write moa-spss related logging output -# to the file '${catalina.base}/logs/moa-spss.log'. The file is rolled over every 1000KB, -# and a maximum history of 10 log files is being kept. -log4j.appender.moaspss=org.apache.log4j.RollingFileAppender -log4j.appender.moaspss.File=${catalina.base}/logs/moa-spss.log -log4j.appender.moaspss.MaxFileSize=1000KB -log4j.appender.moaspss.MaxBackupIndex=10 -log4j.appender.moaspss.layout=org.apache.log4j.PatternLayout -log4j.appender.moaspss.layout.ConversionPattern=%5p | %d{dd HH:mm:ss,SSS} | %20c | %10t | %m%n - -# Configure the jdbc appender 'JDBC' to write logging output -# to the given PostgreSQL database -# a suitable table called 'spss_log' must have been created in the -# database using the command: -# create table spss_log (log_time timestamp, log_level char(5), log_msg text) -#log4j.appender.JDBC=org.apache.log4j.jdbc.JDBCAppender -#log4j.appender.JDBC.driver=org.postgresql.Driver -#log4j.appender.JDBC.URL=jdbc:postgresql://10.16.46.108/moa?user=moa&password=moatest -#log4j.appender.JDBC.layout=org.apache.log4j.PatternLayout -#log4j.appender.JDBC.sql=INSERT INTO spss_log (log_time, log_level, log_msg) VALUES ('%d{ yyyy-MM-dd HH:mm:ss.SSS}', '%5p', '%m') diff --git a/moaSig/handbook/conf/moa-spss/sp.minimum.config.xml b/moaSig/handbook/conf/moa-spss/sp.minimum.config.xml deleted file mode 100644 index 96f0cf4..0000000 --- a/moaSig/handbook/conf/moa-spss/sp.minimum.config.xml +++ /dev/null @@ -1,112 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!--MOA SP 1.5 Configuration File--> -<cfg:MOAConfiguration xmlns:cfg="http://reference.e-government.gv.at/namespace/moaconfig/20021122#" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"> -<!-- Aus Sicherheitsgründen ist das Auflösen von externen URIs und localhost defaultmäßig deaktiviert --> -<!-- Siehe auch MOA-SPSS Dokumentation - Konfiguration Abschnitt 2.1.2 Auflösen externer URIs --> -<!-- Es kann jedoch ein Black- oder Whitelisting-Mechanismus aktiviert werden --> -<!-- <cfg:Common> --> -<!-- Blacklisting: Mit cfg:PermitExternalUris kann das Auflösen externe URIs (optional mit Angabe einer Blacklist) aktiviert werden. --> -<!-- Empfehlung: Bei aktiviertem Auflösen von externen URIs sollten sowohl localhost als auch der gesamte Intranetbereich in die Blacklist eingetragen werden. --> -<!-- <cfg:PermitExternalUris> - <cfg:BlackListUri> - <cfg:IP>192.168</cfg:IP> - </cfg:BlackListUri> - <cfg:BlackListUri> - <cfg:IP>127.0</cfg:IP> - </cfg:BlackListUri> - </cfg:PermitExternalUris>--> -<!-- Whitelisting: Mit cfg:ForbidExternalUris bleibt das Auflösen externe URIs verboten (optional kann aber eine Whitelist angegeben werden). --> -<!-- <cfg:ForbidExternalUris> - <cfg:WhiteListUri> - <cfg:IP>127.0.</cfg:IP> - <cfg:Port>8443</cfg:Port> - </cfg:WhiteListUri> - </cfg:ForbidExternalUris>--> -<!-- </cfg:Common>--> - <cfg:SignatureVerification> - <cfg:CertificateValidation> - <cfg:PathConstruction> - <cfg:AutoAddCertificates>true</cfg:AutoAddCertificates> - <cfg:UseAuthorityInformationAccess>true</cfg:UseAuthorityInformationAccess> - <cfg:CertificateStore> - <cfg:DirectoryStore> - <cfg:Location>certstore</cfg:Location> - </cfg:DirectoryStore> - </cfg:CertificateStore> - </cfg:PathConstruction> - <cfg:PathValidation> - <cfg:ChainingMode> - <cfg:DefaultMode>pkix</cfg:DefaultMode> - </cfg:ChainingMode> - <cfg:TrustProfile> - <cfg:Id>Test-Signaturdienste</cfg:Id> - <cfg:TrustAnchorsLocation>trustProfiles/test</cfg:TrustAnchorsLocation> - </cfg:TrustProfile> - </cfg:PathValidation> - <cfg:RevocationChecking> - <cfg:EnableChecking>true</cfg:EnableChecking> - <cfg:MaxRevocationAge>0</cfg:MaxRevocationAge> - <cfg:ServiceOrder> - <cfg:Service>CRL</cfg:Service> - <cfg:Service>OCSP</cfg:Service> - </cfg:ServiceOrder> - <cfg:Archiving> - <cfg:EnableArchiving>false</cfg:EnableArchiving> - <cfg:ArchiveDuration>365</cfg:ArchiveDuration> - <cfg:Archive> - <cfg:DatabaseArchive> - <cfg:JDBCURL>jdbc:url</cfg:JDBCURL> - <cfg:JDBCDriverClassName>fully.qualified.classname</cfg:JDBCDriverClassName> - </cfg:DatabaseArchive> - </cfg:Archive> - </cfg:Archiving> - <cfg:CrlRetentionIntervals> - <cfg:CA> - <cfg:X509IssuerName>CN=A-Trust-Qual-01,OU=A-Trust-Qual-01,O=A-Trust Ges. für Sicherheitssysteme im elektr. Datenverkehr GmbH,C=AT</cfg:X509IssuerName> - <cfg:Interval>12775</cfg:Interval> - </cfg:CA> - <cfg:CA> - <cfg:X509IssuerName>CN=A-Trust-Qual-02,OU=A-Trust-Qual-02,O=A-Trust Ges. f. Sicherheitssysteme im elektr. Datenverkehr GmbH,C=AT</cfg:X509IssuerName> - <cfg:Interval>12775</cfg:Interval> - </cfg:CA> - <cfg:CA> - <cfg:X509IssuerName>CN=A-Trust-Qual-03,OU=A-Trust-Qual-03,O=A-Trust Ges. f. Sicherheitssysteme im elektr. Datenverkehr GmbH,C=AT</cfg:X509IssuerName> - <cfg:Interval>12775</cfg:Interval> - </cfg:CA> - <cfg:CA> - <cfg:X509IssuerName>CN=A-Trust-Qual-04,OU=A-Trust-Qual-04,O=A-Trust Ges. f. Sicherheitssysteme im elektr. Datenverkehr GmbH,C=AT</cfg:X509IssuerName> - <cfg:Interval>12775</cfg:Interval> - </cfg:CA> - <cfg:CA> - <cfg:X509IssuerName>CN=a-sign-Premium-Sig-01,OU=a-sign-Premium-Sig-01,O=A-Trust Ges. f. Sicherheitssysteme im elektr. Datenverkehr GmbH,C=AT</cfg:X509IssuerName> - <cfg:Interval>12775</cfg:Interval> - </cfg:CA> - <cfg:CA> - <cfg:X509IssuerName>CN=a-sign-Premium-Sig-02,OU=a-sign-Premium-Sig-02,O=A-Trust Ges. f. Sicherheitssysteme im elektr. Datenverkehr GmbH,C=AT</cfg:X509IssuerName> - <cfg:Interval>12775</cfg:Interval> - </cfg:CA> - <cfg:CA> - <cfg:X509IssuerName>CN=a-sign-Premium-Sig-03,OU=a-sign-Premium-Sig-03,O=A-Trust Ges. f. Sicherheitssysteme im elektr. Datenverkehr GmbH,C=AT</cfg:X509IssuerName> - <cfg:Interval>12775</cfg:Interval> - </cfg:CA> - <cfg:CA> - <cfg:X509IssuerName>CN=a-sign-Premium-Sig-04,OU=a-sign-Premium-Sig-04,O=A-Trust Ges. f. Sicherheitssysteme im elektr. Datenverkehr GmbH,C=AT</cfg:X509IssuerName> - <cfg:Interval>12775</cfg:Interval> - </cfg:CA> - <cfg:CA> - <cfg:X509IssuerName>CN=a-sign-premium-mobile-03,OU=a-sign-premium-mobile-03,O=A-Trust Ges. f. Sicherheitssysteme im elektr. Datenverkehr GmbH,C=AT</cfg:X509IssuerName> - <cfg:Interval>12775</cfg:Interval> - </cfg:CA> - <cfg:CA> - <cfg:X509IssuerName>CN=a-sign-premium-mobile-04,OU=a-sign-premium-mobile-04,O=A-Trust Ges. f. Sicherheitssysteme im elektr. Datenverkehr GmbH,C=AT</cfg:X509IssuerName> - <cfg:Interval>12775</cfg:Interval> - </cfg:CA> - <cfg:CA> - <cfg:X509IssuerName>E=a-cert@a-cert.at,CN=A-CERT GOVERNMENT,O=ARGE DATEN - Österreichische Gesellschaft für Datenschutz,L=Wien,S=Wien,C=AT</cfg:X509IssuerName> - <cfg:Interval>12775</cfg:Interval> - </cfg:CA> - </cfg:CrlRetentionIntervals> - </cfg:RevocationChecking> - </cfg:CertificateValidation> - </cfg:SignatureVerification> -</cfg:MOAConfiguration> diff --git a/moaSig/handbook/conf/moa-spss/sp.minimum_with_tsl.config.xml b/moaSig/handbook/conf/moa-spss/sp.minimum_with_tsl.config.xml deleted file mode 100644 index 06b1647..0000000 --- a/moaSig/handbook/conf/moa-spss/sp.minimum_with_tsl.config.xml +++ /dev/null @@ -1,139 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?>
-<!--MOA SP 1.5 Configuration File-->
-<cfg:MOAConfiguration xmlns:cfg="http://reference.e-government.gv.at/namespace/moaconfig/20021122#" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#">
-<!-- Aus Sicherheitsgründen ist das Auflösen von externen URIs und localhost defaultmäßig deaktiviert -->
-<!-- Siehe auch MOA-SPSS Dokumentation - Konfiguration Abschnitt 2.1.2 Auflösen externer URIs -->
-<!-- Es kann jedoch ein Black- oder Whitelisting-Mechanismus aktiviert werden -->
-<!-- <cfg:Common> -->
-<!-- Blacklisting: Mit cfg:PermitExternalUris kann das Auflösen externe URIs (optional mit Angabe einer Blacklist) aktiviert werden. -->
-<!-- Empfehlung: Bei aktiviertem Auflösen von externen URIs sollten sowohl localhost als auch der gesamte Intranetbereich in die Blacklist eingetragen werden. -->
-<!-- <cfg:PermitExternalUris>
- <cfg:BlackListUri>
- <cfg:IP>192.168</cfg:IP>
- </cfg:BlackListUri>
- <cfg:BlackListUri>
- <cfg:IP>127.0</cfg:IP>
- </cfg:BlackListUri>
- </cfg:PermitExternalUris>-->
-<!-- Whitelisting: Mit cfg:ForbidExternalUris bleibt das Auflösen externe URIs verboten (optional kann aber eine Whitelist angegeben werden). -->
-<!-- <cfg:ForbidExternalUris>
- <cfg:WhiteListUri>
- <cfg:IP>127.0.</cfg:IP>
- <cfg:Port>8443</cfg:Port>
- </cfg:WhiteListUri>
- </cfg:ForbidExternalUris>-->
-<!-- </cfg:Common>-->
- <cfg:SignatureVerification>
- <cfg:CertificateValidation>
- <!-- ReadTimeout in seconds-->
- <cfg:ReadTimeout>30</cfg:ReadTimeout>
- <cfg:PathConstruction>
- <cfg:AutoAddCertificates>true</cfg:AutoAddCertificates>
- <cfg:UseAuthorityInformationAccess>true</cfg:UseAuthorityInformationAccess>
- <cfg:CertificateStore>
- <cfg:DirectoryStore>
- <cfg:Location>certstore</cfg:Location>
- </cfg:DirectoryStore>
- </cfg:CertificateStore>
- </cfg:PathConstruction>
- <cfg:PathValidation>
- <cfg:ChainingMode>
- <cfg:DefaultMode>pkix</cfg:DefaultMode>
- </cfg:ChainingMode>
- <cfg:TrustProfile>
- <cfg:Id>Test-Signaturdienste</cfg:Id>
- <cfg:TrustAnchorsLocation>trustProfiles/test</cfg:TrustAnchorsLocation>
- </cfg:TrustProfile>
- <cfg:TrustProfile>
- <cfg:Id>Test-TSLProfil</cfg:Id>
- <cfg:TrustAnchorsLocation>trustProfiles/testTSL</cfg:TrustAnchorsLocation>
- <!-- aktiviere TSL-Unterstützung für dieses Vertrauensprofil -->
- <cfg:EUTSL>
- <!-- Optional kann eine Länderliste mit zweistelligen Länderkürzeln angegeben werden (d.h. nur die -->
- <!-- Vertrauensanker der angegeben Länder werden importiert) -->
- <cfg:CountrySelection>AT,BE</cfg:CountrySelection>
- <cfg:AllowedTSPStatus></cfg:AllowedTSPStatus>
- <cfg:AllowedTSPServiceTypes></cfg:AllowedTSPServiceTypes>
- </cfg:EUTSL>
- </cfg:TrustProfile>
- </cfg:PathValidation>
- <cfg:RevocationChecking>
- <cfg:EnableChecking>true</cfg:EnableChecking>
- <cfg:MaxRevocationAge>0</cfg:MaxRevocationAge>
- <cfg:ServiceOrder>
- <cfg:Service>CRL</cfg:Service>
- <cfg:Service>OCSP</cfg:Service>
- </cfg:ServiceOrder>
- <cfg:Archiving>
- <cfg:EnableArchiving>false</cfg:EnableArchiving>
- <cfg:ArchiveDuration>365</cfg:ArchiveDuration>
- <cfg:Archive>
- <cfg:DatabaseArchive>
- <cfg:JDBCURL>jdbc:url</cfg:JDBCURL>
- <cfg:JDBCDriverClassName>fully.qualified.classname</cfg:JDBCDriverClassName>
- </cfg:DatabaseArchive>
- </cfg:Archive>
- </cfg:Archiving>
- <cfg:CrlRetentionIntervals>
- <cfg:CA>
- <cfg:X509IssuerName>CN=A-Trust-Qual-01,OU=A-Trust-Qual-01,O=A-Trust Ges. für Sicherheitssysteme im elektr. Datenverkehr GmbH,C=AT</cfg:X509IssuerName>
- <cfg:Interval>12775</cfg:Interval>
- </cfg:CA>
- <cfg:CA>
- <cfg:X509IssuerName>CN=A-Trust-Qual-02,OU=A-Trust-Qual-02,O=A-Trust Ges. f. Sicherheitssysteme im elektr. Datenverkehr GmbH,C=AT</cfg:X509IssuerName>
- <cfg:Interval>12775</cfg:Interval>
- </cfg:CA>
- <cfg:CA>
- <cfg:X509IssuerName>CN=A-Trust-Qual-03,OU=A-Trust-Qual-03,O=A-Trust Ges. f. Sicherheitssysteme im elektr. Datenverkehr GmbH,C=AT</cfg:X509IssuerName>
- <cfg:Interval>12775</cfg:Interval>
- </cfg:CA>
- <cfg:CA>
- <cfg:X509IssuerName>CN=A-Trust-Qual-04,OU=A-Trust-Qual-04,O=A-Trust Ges. f. Sicherheitssysteme im elektr. Datenverkehr GmbH,C=AT</cfg:X509IssuerName>
- <cfg:Interval>12775</cfg:Interval>
- </cfg:CA>
- <cfg:CA>
- <cfg:X509IssuerName>CN=a-sign-Premium-Sig-01,OU=a-sign-Premium-Sig-01,O=A-Trust Ges. f. Sicherheitssysteme im elektr. Datenverkehr GmbH,C=AT</cfg:X509IssuerName>
- <cfg:Interval>12775</cfg:Interval>
- </cfg:CA>
- <cfg:CA>
- <cfg:X509IssuerName>CN=a-sign-Premium-Sig-02,OU=a-sign-Premium-Sig-02,O=A-Trust Ges. f. Sicherheitssysteme im elektr. Datenverkehr GmbH,C=AT</cfg:X509IssuerName>
- <cfg:Interval>12775</cfg:Interval>
- </cfg:CA>
- <cfg:CA>
- <cfg:X509IssuerName>CN=a-sign-Premium-Sig-03,OU=a-sign-Premium-Sig-03,O=A-Trust Ges. f. Sicherheitssysteme im elektr. Datenverkehr GmbH,C=AT</cfg:X509IssuerName>
- <cfg:Interval>12775</cfg:Interval>
- </cfg:CA>
- <cfg:CA>
- <cfg:X509IssuerName>CN=a-sign-Premium-Sig-04,OU=a-sign-Premium-Sig-04,O=A-Trust Ges. f. Sicherheitssysteme im elektr. Datenverkehr GmbH,C=AT</cfg:X509IssuerName>
- <cfg:Interval>12775</cfg:Interval>
- </cfg:CA>
- <cfg:CA>
- <cfg:X509IssuerName>CN=a-sign-premium-mobile-03,OU=a-sign-premium-mobile-03,O=A-Trust Ges. f. Sicherheitssysteme im elektr. Datenverkehr GmbH,C=AT</cfg:X509IssuerName>
- <cfg:Interval>12775</cfg:Interval>
- </cfg:CA>
- <cfg:CA>
- <cfg:X509IssuerName>CN=a-sign-premium-mobile-04,OU=a-sign-premium-mobile-04,O=A-Trust Ges. f. Sicherheitssysteme im elektr. Datenverkehr GmbH,C=AT</cfg:X509IssuerName>
- <cfg:Interval>12775</cfg:Interval>
- </cfg:CA>
- <cfg:CA>
- <cfg:X509IssuerName>E=a-cert@a-cert.at,CN=A-CERT GOVERNMENT,O=ARGE DATEN - Österreichische Gesellschaft für Datenschutz,L=Wien,S=Wien,C=AT</cfg:X509IssuerName>
- <cfg:Interval>12775</cfg:Interval>
- </cfg:CA>
- </cfg:CrlRetentionIntervals>
- </cfg:RevocationChecking>
- <!-- Optionale Angabe einer TSL Konfiguration-->
- <!-- Wichtig: Das WorkingDirectory muss jedenfalls den Unterordner „trust“ aus der Beispielkonfiguration beinhalten. -->
- <!-- <cfg:TSLConfiguration>
- <cfg:UpdateSchedule>
- <cfg:StartTime>02:00:00</cfg:StartTime>
- <cfg:Period>86400000</cfg:Period>
- </cfg:UpdateSchedule>
- <cfg:WorkingDirectory>tslworking</cfg:WorkingDirectory>
- <cfg:Evaluation>
- <cfg:QCQualifier>http://uri.etsi.org/TrstSvc/Svctype/CA/QC,http://uri.etsi.org/TrstSvc/Svctype/TSA/QTST</cfg:QCQualifier>
- <cfg:SSCDQualifier>http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/QCWithSSCD,http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/QCWithQSCD</cfg:SSCDQualifier>
- </cfg:Evaluation>
- </cfg:TSLConfiguration>-->
- </cfg:CertificateValidation>
- </cfg:SignatureVerification>
-</cfg:MOAConfiguration>
diff --git a/moaSig/handbook/conf/moa-spss/spss.config.xml b/moaSig/handbook/conf/moa-spss/spss.config.xml deleted file mode 100644 index 222546b..0000000 --- a/moaSig/handbook/conf/moa-spss/spss.config.xml +++ /dev/null @@ -1,221 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!--MOA SS 1.5 Configuration File--> -<cfg:MOAConfiguration xmlns:cfg="http://reference.e-government.gv.at/namespace/moaconfig/20021122#" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"> - <!-- Aus Sicherheitsgründen ist das Auflösen von externen URIs und localhost defaultmäßig deaktiviert --> - <!-- Siehe auch MOA-SPSS Dokumentation - Konfiguration Abschnitt 2.1.2 Auflösen externer URIs --> - <!-- Es kann jedoch ein Black- oder Whitelisting-Mechanismus aktiviert werden --> - <!-- <cfg:Common> --> - <!-- Blacklisting: Mit cfg:PermitExternalUris kann das Auflösen externe URIs (optional mit Angabe einer Blacklist) aktiviert werden. --> - <!-- Empfehlung: Bei aktiviertem Auflösen von externen URIs sollten sowohl localhost als auch der gesamte Intranetbereich in die Blacklist eingetragen werden. --> - <!-- <cfg:PermitExternalUris> - <cfg:BlackListUri> - <cfg:IP>192.168</cfg:IP> - </cfg:BlackListUri> - <cfg:BlackListUri> - <cfg:IP>127.0</cfg:IP> - </cfg:BlackListUri> - </cfg:PermitExternalUris>--> - <!-- Whitelisting: Mit cfg:ForbidExternalUris bleibt das Auflösen externe URIs verboten (optional kann aber eine Whitelist angegeben werden). --> - <!-- <cfg:ForbidExternalUris> - <cfg:WhiteListUri> - <cfg:IP>127.0.</cfg:IP> - <cfg:Port>8443</cfg:Port> - </cfg:WhiteListUri> - </cfg:ForbidExternalUris>--> - <!-- </cfg:Common>--> - <cfg:SignatureCreation> - <cfg:KeyModules> - <cfg:SoftwareKeyModule> - <cfg:Id>SKM_Kunde1</cfg:Id> - <cfg:FileName>keys/customer1/moa-signaturdienst-kunde1[pwd=kunde1].p12</cfg:FileName> - <cfg:Password>kunde1</cfg:Password> - </cfg:SoftwareKeyModule> - <cfg:SoftwareKeyModule> - <cfg:Id>SKM_Kunde2</cfg:Id> - <cfg:FileName>keys/customer2/moa-signaturdienst-kunde2[pwd=kunde2].p12</cfg:FileName> - <cfg:Password>kunde2</cfg:Password> - </cfg:SoftwareKeyModule> - <cfg:SoftwareKeyModule> - <cfg:Id>SKM_allgemein</cfg:Id> - <cfg:FileName>keys/common/moa-signaturdienst-allekunden[pwd=allekunden].p12</cfg:FileName> - <cfg:Password>allekunden</cfg:Password> - </cfg:SoftwareKeyModule> - </cfg:KeyModules> - <cfg:KeyGroup> - <cfg:Id>KG_Kunde1</cfg:Id> - <cfg:Key> - <cfg:KeyModuleId>SKM_Kunde1</cfg:KeyModuleId> - <cfg:KeyCertIssuerSerial> - <dsig:X509IssuerName>C=AT,O=IAIK,CN=IAIK Test Intermediate CA</dsig:X509IssuerName> - <dsig:X509SerialNumber>547500611579119</dsig:X509SerialNumber> - </cfg:KeyCertIssuerSerial> - </cfg:Key> - </cfg:KeyGroup> - <cfg:KeyGroup> - <cfg:Id>KG_Kunde2</cfg:Id> - <cfg:Key> - <cfg:KeyModuleId>SKM_Kunde2</cfg:KeyModuleId> - <cfg:KeyCertIssuerSerial> - <dsig:X509IssuerName>C=AT,O=IAIK,CN=IAIK Test Intermediate CA</dsig:X509IssuerName> - <dsig:X509SerialNumber>820993612901355</dsig:X509SerialNumber> - </cfg:KeyCertIssuerSerial> - </cfg:Key> - </cfg:KeyGroup> - <cfg:KeyGroup> - <cfg:Id>KG_allgemein</cfg:Id> - <cfg:Key> - <cfg:KeyModuleId>SKM_allgemein</cfg:KeyModuleId> - <cfg:KeyCertIssuerSerial> - <dsig:X509IssuerName>C=AT,O=IAIK,CN=IAIK Test Intermediate CA</dsig:X509IssuerName> - <dsig:X509SerialNumber>109587558428710</dsig:X509SerialNumber> - </cfg:KeyCertIssuerSerial> - </cfg:Key> - </cfg:KeyGroup> - <cfg:KeyGroupMapping> - <cfg:KeyGroupId>KG_allgemein</cfg:KeyGroupId> - </cfg:KeyGroupMapping> - <cfg:KeyGroupMapping> - <cfg:CustomerId> - <dsig:X509IssuerName>C=AT,O=IAIK,CN=IAIK Test Intermediate CA</dsig:X509IssuerName> - <dsig:X509SerialNumber>738201464765280</dsig:X509SerialNumber> - </cfg:CustomerId> - <cfg:KeyGroupId>KG_Kunde1</cfg:KeyGroupId> - </cfg:KeyGroupMapping> - <cfg:KeyGroupMapping> - <cfg:CustomerId> - <dsig:X509IssuerName>C=AT,O=IAIK,CN=IAIK Test Intermediate CA</dsig:X509IssuerName> - <dsig:X509SerialNumber>476148056604200</dsig:X509SerialNumber> - </cfg:CustomerId> - <cfg:KeyGroupId>KG_Kunde2</cfg:KeyGroupId> - </cfg:KeyGroupMapping> - <cfg:XMLDSig> - <cfg:CanonicalizationAlgorithm>http://www.w3.org/TR/2001/REC-xml-c14n-20010315</cfg:CanonicalizationAlgorithm> - <cfg:DigestMethodAlgorithm>http://www.w3.org/2000/09/xmldsig#sha512</cfg:DigestMethodAlgorithm> - </cfg:XMLDSig> - <cfg:XAdES> - <cfg:Version>1.4.2</cfg:Version> - </cfg:XAdES> - </cfg:SignatureCreation> - <cfg:SignatureVerification> - <cfg:CertificateValidation> - <cfg:PathConstruction> - <cfg:AutoAddCertificates>true</cfg:AutoAddCertificates> - <cfg:UseAuthorityInformationAccess>true</cfg:UseAuthorityInformationAccess> - <cfg:CertificateStore> - <cfg:DirectoryStore> - <cfg:Location>certstore</cfg:Location> - </cfg:DirectoryStore> - </cfg:CertificateStore> - </cfg:PathConstruction> - <cfg:PathValidation> - <cfg:ChainingMode> - <cfg:DefaultMode>pkix</cfg:DefaultMode> - <cfg:TrustAnchor> - <cfg:Identification> - <dsig:X509IssuerName>CN=A-Trust-nQual-0,OU=A-Trust-nQual-0,O=A-Trust,C=AT</dsig:X509IssuerName> - <dsig:X509SerialNumber>536</dsig:X509SerialNumber> - </cfg:Identification> - <cfg:Mode>chaining</cfg:Mode> - </cfg:TrustAnchor> - </cfg:ChainingMode> - <cfg:TrustProfile> - <cfg:Id>Test-Signaturdienste</cfg:Id> - <cfg:TrustAnchorsLocation>trustProfiles/test</cfg:TrustAnchorsLocation> - </cfg:TrustProfile> - <cfg:TrustProfile> - <cfg:Id>CertifiedSignature</cfg:Id> - <cfg:TrustAnchorsLocation>trustProfiles/certifiedSignature</cfg:TrustAnchorsLocation> - </cfg:TrustProfile> - <cfg:TrustProfile> - <cfg:Id>CertifiedSignature+Test</cfg:Id> - <cfg:TrustAnchorsLocation>trustProfiles/certifiedSignature+Test</cfg:TrustAnchorsLocation> - </cfg:TrustProfile> - <cfg:TrustProfile> - <cfg:Id>SecureSignature</cfg:Id> - <cfg:TrustAnchorsLocation>trustProfiles/secureSignature</cfg:TrustAnchorsLocation> - </cfg:TrustProfile> - <cfg:TrustProfile> - <cfg:Id>SecureSignature-Qual-Only</cfg:Id> - <cfg:TrustAnchorsLocation>trustProfiles/secureSignature-qual-only</cfg:TrustAnchorsLocation> - </cfg:TrustProfile> - <cfg:TrustProfile> - <cfg:Id>SecureSignature+Test</cfg:Id> - <cfg:TrustAnchorsLocation>trustProfiles/secureSignature+Test</cfg:TrustAnchorsLocation> - </cfg:TrustProfile> - <cfg:TrustProfile> - <cfg:Id>IdentityLink</cfg:Id> - <cfg:TrustAnchorsLocation>trustProfiles/identityLink</cfg:TrustAnchorsLocation> - </cfg:TrustProfile> - <cfg:TrustProfile> - <cfg:Id>IdentityLink+Test</cfg:Id> - <cfg:TrustAnchorsLocation>trustProfiles/identityLink+Test</cfg:TrustAnchorsLocation> - </cfg:TrustProfile> - </cfg:PathValidation> - <cfg:RevocationChecking> - <cfg:EnableChecking>true</cfg:EnableChecking> - <cfg:MaxRevocationAge>0</cfg:MaxRevocationAge> - <cfg:ServiceOrder> - <cfg:Service>CRL</cfg:Service> - <cfg:Service>OCSP</cfg:Service> - </cfg:ServiceOrder> - <cfg:Archiving> - <cfg:EnableArchiving>false</cfg:EnableArchiving> - <cfg:ArchiveDuration>365</cfg:ArchiveDuration> - <cfg:Archive> - <cfg:DatabaseArchive> - <cfg:JDBCURL>jdbc:url</cfg:JDBCURL> - <cfg:JDBCDriverClassName>fully.qualified.classname</cfg:JDBCDriverClassName> - </cfg:DatabaseArchive> - </cfg:Archive> - </cfg:Archiving> - <cfg:CrlRetentionIntervals> - <cfg:CA> - <cfg:X509IssuerName>CN=A-Trust-Qual-01,OU=A-Trust-Qual-01,O=A-Trust Ges. für Sicherheitssysteme im elektr. Datenverkehr GmbH,C=AT</cfg:X509IssuerName> - <cfg:Interval>12775</cfg:Interval> - </cfg:CA> - <cfg:CA> - <cfg:X509IssuerName>CN=A-Trust-Qual-02,OU=A-Trust-Qual-02,O=A-Trust Ges. f. Sicherheitssysteme im elektr. Datenverkehr GmbH,C=AT</cfg:X509IssuerName> - <cfg:Interval>12775</cfg:Interval> - </cfg:CA> - <cfg:CA> - <cfg:X509IssuerName>CN=A-Trust-Qual-03,OU=A-Trust-Qual-03,O=A-Trust Ges. f. Sicherheitssysteme im elektr. Datenverkehr GmbH,C=AT</cfg:X509IssuerName> - <cfg:Interval>12775</cfg:Interval> - </cfg:CA> - <cfg:CA> - <cfg:X509IssuerName>CN=A-Trust-Qual-04,OU=A-Trust-Qual-04,O=A-Trust Ges. f. Sicherheitssysteme im elektr. Datenverkehr GmbH,C=AT</cfg:X509IssuerName> - <cfg:Interval>12775</cfg:Interval> - </cfg:CA> - <cfg:CA> - <cfg:X509IssuerName>CN=a-sign-Premium-Sig-01,OU=a-sign-Premium-Sig-01,O=A-Trust Ges. f. Sicherheitssysteme im elektr. Datenverkehr GmbH,C=AT</cfg:X509IssuerName> - <cfg:Interval>12775</cfg:Interval> - </cfg:CA> - <cfg:CA> - <cfg:X509IssuerName>CN=a-sign-Premium-Sig-02,OU=a-sign-Premium-Sig-02,O=A-Trust Ges. f. Sicherheitssysteme im elektr. Datenverkehr GmbH,C=AT</cfg:X509IssuerName> - <cfg:Interval>12775</cfg:Interval> - </cfg:CA> - <cfg:CA> - <cfg:X509IssuerName>CN=a-sign-Premium-Sig-03,OU=a-sign-Premium-Sig-03,O=A-Trust Ges. f. Sicherheitssysteme im elektr. Datenverkehr GmbH,C=AT</cfg:X509IssuerName> - <cfg:Interval>12775</cfg:Interval> - </cfg:CA> - <cfg:CA> - <cfg:X509IssuerName>CN=a-sign-Premium-Sig-04,OU=a-sign-Premium-Sig-04,O=A-Trust Ges. f. Sicherheitssysteme im elektr. Datenverkehr GmbH,C=AT</cfg:X509IssuerName> - <cfg:Interval>12775</cfg:Interval> - </cfg:CA> - <cfg:CA> - <cfg:X509IssuerName>CN=a-sign-premium-mobile-03,OU=a-sign-premium-mobile-03,O=A-Trust Ges. f. Sicherheitssysteme im elektr. Datenverkehr GmbH,C=AT</cfg:X509IssuerName> - <cfg:Interval>12775</cfg:Interval> - </cfg:CA> - <cfg:CA> - <cfg:X509IssuerName>CN=a-sign-premium-mobile-04,OU=a-sign-premium-mobile-04,O=A-Trust Ges. f. Sicherheitssysteme im elektr. Datenverkehr GmbH,C=AT</cfg:X509IssuerName> - <cfg:Interval>12775</cfg:Interval> - </cfg:CA> - <cfg:CA> - <cfg:X509IssuerName>E=a-cert@a-cert.at,CN=A-CERT GOVERNMENT,O=ARGE DATEN - Österreichische Gesellschaft für Datenschutz,L=Wien,S=Wien,C=AT</cfg:X509IssuerName> - <cfg:Interval>12775</cfg:Interval> - </cfg:CA> - </cfg:CrlRetentionIntervals> - </cfg:RevocationChecking> - </cfg:CertificateValidation> - <cfg:PermitFileURIs>false</cfg:PermitFileURIs> - </cfg:SignatureVerification> -</cfg:MOAConfiguration> diff --git a/moaSig/handbook/conf/moa-spss/ss.minimum.config.xml b/moaSig/handbook/conf/moa-spss/ss.minimum.config.xml deleted file mode 100644 index 7bbc924..0000000 --- a/moaSig/handbook/conf/moa-spss/ss.minimum.config.xml +++ /dev/null @@ -1,99 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!--MOA SS 1.5 Configuration File--> -<cfg:MOAConfiguration xmlns:cfg="http://reference.e-government.gv.at/namespace/moaconfig/20021122#" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"> - <!-- Aus Sicherheitsgründen ist das Auflösen von externen URIs und localhost defaultmäßig deaktiviert --> - <!-- Siehe auch MOA-SPSS Dokumentation - Konfiguration Abschnitt 2.1.2 Auflösen externer URIs --> - <!-- Es kann jedoch ein Black- oder Whitelisting-Mechanismus aktiviert werden --> - <!-- <cfg:Common> --> - <!-- Blacklisting: Mit cfg:PermitExternalUris kann das Auflösen externe URIs (optional mit Angabe einer Blacklist) aktiviert werden. --> - <!-- Empfehlung: Bei aktiviertem Auflösen von externen URIs sollten sowohl localhost als auch der gesamte Intranetbereich in die Blacklist eingetragen werden. --> - <!-- <cfg:PermitExternalUris> - <cfg:BlackListUri> - <cfg:IP>192.168</cfg:IP> - </cfg:BlackListUri> - <cfg:BlackListUri> - <cfg:IP>127.0</cfg:IP> - </cfg:BlackListUri> - </cfg:PermitExternalUris>--> - <!-- Whitelisting: Mit cfg:ForbidExternalUris bleibt das Auflösen externe URIs verboten (optional kann aber eine Whitelist angegeben werden). --> - <!-- <cfg:ForbidExternalUris> - <cfg:WhiteListUri> - <cfg:IP>127.0.</cfg:IP> - <cfg:Port>8443</cfg:Port> - </cfg:WhiteListUri> - </cfg:ForbidExternalUris>--> - <!-- </cfg:Common>--> - <cfg:SignatureCreation> - <cfg:KeyModules> - <cfg:SoftwareKeyModule> - <cfg:Id>SKM_Kunde1</cfg:Id> - <cfg:FileName>keys/customer1/moa-signaturdienst-kunde1[pwd=kunde1].p12</cfg:FileName> - <cfg:Password>kunde1</cfg:Password> - </cfg:SoftwareKeyModule> - <cfg:SoftwareKeyModule> - <cfg:Id>SKM_Kunde2</cfg:Id> - <cfg:FileName>keys/customer2/moa-signaturdienst-kunde2[pwd=kunde2].p12</cfg:FileName> - <cfg:Password>kunde2</cfg:Password> - </cfg:SoftwareKeyModule> - <cfg:SoftwareKeyModule> - <cfg:Id>SKM_allgemein</cfg:Id> - <cfg:FileName>keys/common/moa-signaturdienst-allekunden[pwd=allekunden].p12</cfg:FileName> - <cfg:Password>allekunden</cfg:Password> - </cfg:SoftwareKeyModule> - </cfg:KeyModules> - <cfg:KeyGroup> - <cfg:Id>KG_Kunde1</cfg:Id> - <cfg:Key> - <cfg:KeyModuleId>SKM_Kunde1</cfg:KeyModuleId> - <cfg:KeyCertIssuerSerial> - <dsig:X509IssuerName>C=AT,O=IAIK,CN=IAIK Test Intermediate CA</dsig:X509IssuerName> - <dsig:X509SerialNumber>547500611579119</dsig:X509SerialNumber> - </cfg:KeyCertIssuerSerial> - </cfg:Key> - </cfg:KeyGroup> - <cfg:KeyGroup> - <cfg:Id>KG_Kunde2</cfg:Id> - <cfg:Key> - <cfg:KeyModuleId>SKM_Kunde2</cfg:KeyModuleId> - <cfg:KeyCertIssuerSerial> - <dsig:X509IssuerName>C=AT,O=IAIK,CN=IAIK Test Intermediate CA</dsig:X509IssuerName> - <dsig:X509SerialNumber>820993612901355</dsig:X509SerialNumber> - </cfg:KeyCertIssuerSerial> - </cfg:Key> - </cfg:KeyGroup> - <cfg:KeyGroup> - <cfg:Id>KG_allgemein</cfg:Id> - <cfg:Key> - <cfg:KeyModuleId>SKM_allgemein</cfg:KeyModuleId> - <cfg:KeyCertIssuerSerial> - <dsig:X509IssuerName>C=AT,O=IAIK,CN=IAIK Test Intermediate CA</dsig:X509IssuerName> - <dsig:X509SerialNumber>109587558428710</dsig:X509SerialNumber> - </cfg:KeyCertIssuerSerial> - </cfg:Key> - </cfg:KeyGroup> - <cfg:KeyGroupMapping> - <cfg:KeyGroupId>KG_allgemein</cfg:KeyGroupId> - </cfg:KeyGroupMapping> - <cfg:KeyGroupMapping> - <cfg:CustomerId> - <dsig:X509IssuerName>C=AT,O=IAIK,CN=IAIK Test Intermediate CA</dsig:X509IssuerName> - <dsig:X509SerialNumber>738201464765280</dsig:X509SerialNumber> - </cfg:CustomerId> - <cfg:KeyGroupId>KG_Kunde1</cfg:KeyGroupId> - </cfg:KeyGroupMapping> - <cfg:KeyGroupMapping> - <cfg:CustomerId> - <dsig:X509IssuerName>C=AT,O=IAIK,CN=IAIK Test Intermediate CA</dsig:X509IssuerName> - <dsig:X509SerialNumber>476148056604200</dsig:X509SerialNumber> - </cfg:CustomerId> - <cfg:KeyGroupId>KG_Kunde2</cfg:KeyGroupId> - </cfg:KeyGroupMapping> - <cfg:XMLDSig> - <cfg:CanonicalizationAlgorithm>http://www.w3.org/TR/2001/REC-xml-c14n-20010315</cfg:CanonicalizationAlgorithm> - <cfg:DigestMethodAlgorithm>http://www.w3.org/2000/09/xmldsig#sha512</cfg:DigestMethodAlgorithm> - </cfg:XMLDSig> - <cfg:XAdES> - <cfg:Version>1.4.2</cfg:Version> - </cfg:XAdES> - </cfg:SignatureCreation> -</cfg:MOAConfiguration> diff --git a/moaSig/handbook/conf/moa-spss/sslKeys/server/moa-ssl-server.der b/moaSig/handbook/conf/moa-spss/sslKeys/server/moa-ssl-server.der Binary files differdeleted file mode 100644 index e0f78a8..0000000 --- a/moaSig/handbook/conf/moa-spss/sslKeys/server/moa-ssl-server.der +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/sslKeys/server/moa-ssl-server[pwd=server].p12 b/moaSig/handbook/conf/moa-spss/sslKeys/server/moa-ssl-server[pwd=server].p12 Binary files differdeleted file mode 100644 index f012d58..0000000 --- a/moaSig/handbook/conf/moa-spss/sslKeys/server/moa-ssl-server[pwd=server].p12 +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/sslKeys/tomcat/tomcat[pwd=server].keystore b/moaSig/handbook/conf/moa-spss/sslKeys/tomcat/tomcat[pwd=server].keystore Binary files differdeleted file mode 100644 index da42549..0000000 --- a/moaSig/handbook/conf/moa-spss/sslKeys/tomcat/tomcat[pwd=server].keystore +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/sslKeys/tomcat/trustedClients[pwd=clients].keystore b/moaSig/handbook/conf/moa-spss/sslKeys/tomcat/trustedClients[pwd=clients].keystore Binary files differdeleted file mode 100644 index bdc296c..0000000 --- a/moaSig/handbook/conf/moa-spss/sslKeys/tomcat/trustedClients[pwd=clients].keystore +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/svaconfig.example b/moaSig/handbook/conf/moa-spss/svaconfig.example deleted file mode 100644 index cdb972f..0000000 --- a/moaSig/handbook/conf/moa-spss/svaconfig.example +++ /dev/null @@ -1,74 +0,0 @@ -#Fri Jul 27 14:18:37 CEST 2012 -# -# Format [key]=[value] -# -# Note that if an '=' is used in a key or value it has to be escaped: "\=" - -##################### WebConfig ####################### - -#The path to the sva configuration file -#svaconfig=/data/sigval/incoming/svaconfig - -#The directories where to store the collected testdata -#testdir=/data/sigval/incoming/test/ - -#The basepath for signature validation -#basepath= - -###################################################### - -#The path prefix for all file system locations -#pathprefix=/home/afitzek/server/moa-spss/apache-tomcat-8.0.0-RC3/conf/moa-spss/sva/ - -#The file where the xmldsig core schema is located -#xmlschemaloc=example/schema/xmldsig-core-schema.xsd - -#The root folder where truststore and certstore are created later on -#certroot=example/certs - -#The folder containing the trustanchors -#trustanchorloc=example/keys_and_certs - -#The folder containing the timestampauthority trustanchors -#tsttrustanchorloc=example/keys_and_certs - -#The folder containing alternative revocation information (comment out to use -#infos contained in the certificate) -#altdp= - -#The maximum age of a revocation information of a end user certificate in hours -#endusercertgrace=4382 - -#The maximum age of a revocation information for a ca certificate in hours -#cacertgrace=4382 - -#tstcoherencetolerance=10 - -#The maximum time difference (in hours) the signing-time property and a -#time stamp -#timestampdelay=24 - -# Defines the forbidden hashing algorithms and the inception date -# Format: {<algorithm name>, <inception date>};{<algname 2>, <inc date 2>}... -#hashconstraint={md5, 2000-08-08};{sha1, 2016-08-08} - -# Defines the forbidden hashing algorithms for CA Certificates and the inception date -# Format: {<algorithm name>, <inception date>};{<algname 2>, <inc date 2>}... -#cahashconstraint={md5,2000-08-08};{sha1, 2012-08-05} - -# Defines the minimum required key lengths -# Format: {<algorithm name>, <min len>,<inception date>};{...}... -#keylenconstraint={rsa, 1024, 2000-08-08} - -# Defines the minimum required key lengths for CA Certificates -# Format: {<algorithm name>, <min len>,<inception date>};{...}.. -#cakeylenconstraint={rsa,512,2000-08-08} - -# Defines the minimum required key lengths for timestamps -# Format: {<algorithm name>, <min len>,<inception date>};{...}... -#tstkeylenconstraint={rsa, 1024, 2000-08-08} - -# Allows any key usage if set to true, otherwise only dig. signature -allowanykeyusage=true - -chainingmodel=SHELL diff --git a/moaSig/handbook/conf/moa-spss/trustProfiles/certifiedSignature+Test/A-Trust-Root-05.20130923-20230920.SerNoFCDB4.cer b/moaSig/handbook/conf/moa-spss/trustProfiles/certifiedSignature+Test/A-Trust-Root-05.20130923-20230920.SerNoFCDB4.cer Binary files differdeleted file mode 100644 index b9a0e5a..0000000 --- a/moaSig/handbook/conf/moa-spss/trustProfiles/certifiedSignature+Test/A-Trust-Root-05.20130923-20230920.SerNoFCDB4.cer +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/trustProfiles/certifiedSignature+Test/A-Trust-Test-Qual-02.20141124-20141118.SerNo3969edbf.cer b/moaSig/handbook/conf/moa-spss/trustProfiles/certifiedSignature+Test/A-Trust-Test-Qual-02.20141124-20141118.SerNo3969edbf.cer Binary files differdeleted file mode 100644 index d71177a..0000000 --- a/moaSig/handbook/conf/moa-spss/trustProfiles/certifiedSignature+Test/A-Trust-Test-Qual-02.20141124-20141118.SerNo3969edbf.cer +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/trustProfiles/certifiedSignature+Test/A-Trust-Test-Root-05-20141215-20241209.SerNo165fae.crt b/moaSig/handbook/conf/moa-spss/trustProfiles/certifiedSignature+Test/A-Trust-Test-Root-05-20141215-20241209.SerNo165fae.crt deleted file mode 100644 index 9befb53..0000000 --- a/moaSig/handbook/conf/moa-spss/trustProfiles/certifiedSignature+Test/A-Trust-Test-Root-05-20141215-20241209.SerNo165fae.crt +++ /dev/null @@ -1,34 +0,0 @@ ------BEGIN CERTIFICATE----- -MIIF3TCCA8WgAwIBAgIDFl+uMA0GCSqGSIb3DQEBCwUAMIGVMQswCQYDVQQGEwJB -VDFIMEYGA1UECgw/QS1UcnVzdCBHZXMuIGYuIFNpY2hlcmhlaXRzc3lzdGVtZSBp -bSBlbGVrdHIuIERhdGVudmVya2VociBHbWJIMR0wGwYDVQQLDBRBLVRydXN0LVRl -c3QtUm9vdC0wNTEdMBsGA1UEAwwUQS1UcnVzdC1UZXN0LVJvb3QtMDUwHhcNMTQx -MjE1MTMwMDQ1WhcNMjQxMjA5MTIwMDQ1WjCBlTELMAkGA1UEBhMCQVQxSDBGBgNV -BAoMP0EtVHJ1c3QgR2VzLiBmLiBTaWNoZXJoZWl0c3N5c3RlbWUgaW0gZWxla3Ry -LiBEYXRlbnZlcmtlaHIgR21iSDEdMBsGA1UECwwUQS1UcnVzdC1UZXN0LVJvb3Qt -MDUxHTAbBgNVBAMMFEEtVHJ1c3QtVGVzdC1Sb290LTA1MIICIDANBgkqhkiG9w0B -AQEFAAOCAg0AMIICCAKCAgEApv3ETyDuseYGvBXgJSiAe7q2dvKtcxlHGlEdEWKv -YUODdXiTIIcwuIU0+F8ybvoQdEVPGDsdzShhXKgMfdGY5WF1BslCgjwcr4h6GWgt -cSkXXFIYVV5GCrac4DhM60EvtXpadi8dNMu7dUKZjqES9UPC6Gc5H6fadauLaV6b -DbNrJufXUditjEbhqj5uX3u4/+nFRH8g1DiQm5RCC3ttVe0/7buJipErVQ9Sbhzk -hkFlzLbph2s2hiEP8NB5tXM3ffxmJ2Yv98+U1Ec0iXvsoGhqRyZVn1huTi+9PJnP -IyPfXDkqWv49E/WeZsaZ48kdVx9xIC6OVYF0GCDsKjsKWN+4xL6/eYvSnyIBij/A -e1T3wkLhp+bDyqxnvDatMlWchfbZxicvzr83c8SGt81RBekwbG/HGPRE4x5DnTkQ -67DTMzMSmW+FAJdZG2Ofsg9+D+v+iqRD310maLABtko3e+xm601FS8d0lDFJVGgG -36IB+ZrUIXmLfOIQjlF/yx566oUmSif3QRgmnSuNtunffXHBbL0qFAiEDwwHg41t -zBiSswKRWa5J/BMIung+6T8gw5kY3c3yJ+pUip4J2oeVa9jZlO/AY7k5BCeGh5Ky -zu22GMQIp9ulIIfUKx8jcnhtDy07UEmaWqv3rVsqKWF9v9B4z2SMiH1oFEgrNAxi -v98CAQOjNjA0MA8GA1UdEwEB/wQFMAMBAf8wEQYDVR0OBAoECEQv+xQJkonQMA4G -A1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQsFAAOCAgEASO7M8elac5VTP+FjuL1S -nS72NaIP/RGYmw6967irlG5qQ0cGmCZO5J8SsL7xc3BMofMQMbrsGEryO1F4Y95B -o419IzqPb8sYHlx1Du+F2D01qXBmGP/NcqQIo9twLa+man16l7SFF/iNof2axigM -TUcWzqHUxtSjCPoU44qTsi8vVuQKRP8gMGlVCty0joc0gEW8PqKiMaKxI+tglVA6 -czwvPXfk9pJkL3hhDg/p59iKJTkEKIDtvugrZ4ZqOCBL5xv1Tar3BMBAKSfl/YoQ -/p6ATGlKkjSbMyU7vUGxXldNALHkezxFufuDZEF/erp3hCVADbQMKgyM7Diu6cKB -0s4+POeTQoSQ2dnMQJdgAfeGcd3twy2s/M/xHAVGPAPIQWH7ppVcs6AbVXQabHxJ -YZU7G2ct8Se0r8RLq+iRYrWhFKl8mmVBNwK2WJhjWPv2fqM1xYtbbwH6zoV/Sf8j -uIbx/5A/MJo/4s/9ciafJLVzLvkOh6Bhf310TAxyB9mDiL00KAuVTDtwYfzo1+jw -0bInpPqTCkgszn0LbajeaEIc7lQ7neY0gmMqDvnhA+5LyHJXuX5tDF+1/KDijlLs -p/k1/YZfe1Ai1+gcRoAlp2O80tKaJWZPkf8POffyIkSxJbHlKF6r3TWs7JYr+YUi -lm2dyCqZ9RUD5ZN2YRntJoo= ------END CERTIFICATE----- diff --git a/moaSig/handbook/conf/moa-spss/trustProfiles/certifiedSignature+Test/A-Trust-nQual-01-20140701-20240701.SerNo144dc3(CertifiedKeypair).cer b/moaSig/handbook/conf/moa-spss/trustProfiles/certifiedSignature+Test/A-Trust-nQual-01-20140701-20240701.SerNo144dc3(CertifiedKeypair).cer deleted file mode 100644 index e90f5f2..0000000 --- a/moaSig/handbook/conf/moa-spss/trustProfiles/certifiedSignature+Test/A-Trust-nQual-01-20140701-20240701.SerNo144dc3(CertifiedKeypair).cer +++ /dev/null @@ -1,21 +0,0 @@ ------BEGIN CERTIFICATE----- -MIIDXTCCAkWgAwIBAgIDFE3DMA0GCSqGSIb3DQEBBQUAMFUxCzAJBgNVBAYTAkFU -MRAwDgYDVQQKEwdBLVRydXN0MRkwFwYDVQQLExBBLVRydXN0LW5RdWFsLTAxMRkw -FwYDVQQDExBBLVRydXN0LW5RdWFsLTAxMB4XDTE0MDcwMTExMDk1NFoXDTI0MDcw -MTA5MDk1NFowVTELMAkGA1UEBhMCQVQxEDAOBgNVBAoTB0EtVHJ1c3QxGTAXBgNV -BAsTEEEtVHJ1c3QtblF1YWwtMDExGTAXBgNVBAMTEEEtVHJ1c3QtblF1YWwtMDEw -ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQD/9RyAEZ6eHmhYzNJ328f0 -jmdSUFi6EqRqOxb3jHNPTIpK82CR6z5lmSnZQNUuCPD+htbNZffd2DKVB06NOyZ1 -2zcOMCgj4GtkZoqE0zPpPT3bpoE55nkZZe/qWEX/64wz/L/4EdkvKDSKG/UsP75M -tmCVY5m2Eg73RVFRz4ccBIMpHel4lzEqSkdDtZOY5fnkrE333hx67nxq21vY8Eyf -8O4fPQ5RtN8eohQCcPQ1z6ypU1R7N9jPRpnI+yzMOiwd3+QcKhHi1miCzo0pkOaB -1CwmfsTyNl8qU0NJUL9Ta6cea7WThwTiWol2yD88cd2cy388xpbNkfrCPmZNGLoV -AgMBAAGjNjA0MA8GA1UdEwEB/wQFMAMBAf8wEQYDVR0OBAoECE5ZzscCMocwMA4G -A1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQUFAAOCAQEAO3hBdwsNQOtYOAlC2PKT -sdNexKqMefFGrGDYIEAflaudwpcqUgv7fLLhMNRMT+BcXtqXtfNHGsll2GwseuMq -C02bPUmbfNV4P9djIz/s6qqvNQaQneFzhuXn+i0YQ10sFFVeIL3qrBMl1lwBeQ64 -/GyvrbGiHuuagEUc25CDrUqni+b+azaPUsRG6IXkIWG0H6WIMqtxIdHzAV/1raKh -PKot1VhG2rivf1cBBGXU/0VSYBitXrLNwXwlX2ad0WiFHUF8RS9F3j2vVSYMfxer -NPNaRLtCkHNSqCIDkMmmHJKbJbKJzMaZYmX2i2nc16HCpE/gbQc3etQCl3GvzO88 -xw== ------END CERTIFICATE----- diff --git a/moaSig/handbook/conf/moa-spss/trustProfiles/certifiedSignature+Test/A-Trust-nQual-01.20040326-20070326.SerNo6632(CertifiedKeypair).cer b/moaSig/handbook/conf/moa-spss/trustProfiles/certifiedSignature+Test/A-Trust-nQual-01.20040326-20070326.SerNo6632(CertifiedKeypair).cer Binary files differdeleted file mode 100644 index 8c43477..0000000 --- a/moaSig/handbook/conf/moa-spss/trustProfiles/certifiedSignature+Test/A-Trust-nQual-01.20040326-20070326.SerNo6632(CertifiedKeypair).cer +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/trustProfiles/certifiedSignature+Test/A-Trust-nQual-01.20041201-20141201.SerNo01c85e.cer b/moaSig/handbook/conf/moa-spss/trustProfiles/certifiedSignature+Test/A-Trust-nQual-01.20041201-20141201.SerNo01c85e.cer Binary files differdeleted file mode 100644 index 8d33015..0000000 --- a/moaSig/handbook/conf/moa-spss/trustProfiles/certifiedSignature+Test/A-Trust-nQual-01.20041201-20141201.SerNo01c85e.cer +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/trustProfiles/certifiedSignature+Test/A-Trust-nQual-01.20041201-20141201.SerNoe242.cer b/moaSig/handbook/conf/moa-spss/trustProfiles/certifiedSignature+Test/A-Trust-nQual-01.20041201-20141201.SerNoe242.cer Binary files differdeleted file mode 100644 index efa2817..0000000 --- a/moaSig/handbook/conf/moa-spss/trustProfiles/certifiedSignature+Test/A-Trust-nQual-01.20041201-20141201.SerNoe242.cer +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/trustProfiles/certifiedSignature+Test/A-Trust-nQual-03-20140723-20250723.SerNo14b4f9.cer b/moaSig/handbook/conf/moa-spss/trustProfiles/certifiedSignature+Test/A-Trust-nQual-03-20140723-20250723.SerNo14b4f9.cer deleted file mode 100644 index 2284687..0000000 --- a/moaSig/handbook/conf/moa-spss/trustProfiles/certifiedSignature+Test/A-Trust-nQual-03-20140723-20250723.SerNo14b4f9.cer +++ /dev/null @@ -1,23 +0,0 @@ ------BEGIN CERTIFICATE----- -MIIDzzCCAregAwIBAgIDFLT5MA0GCSqGSIb3DQEBBQUAMIGNMQswCQYDVQQGEwJB -VDFIMEYGA1UECgw/QS1UcnVzdCBHZXMuIGYuIFNpY2hlcmhlaXRzc3lzdGVtZSBp -bSBlbGVrdHIuIERhdGVudmVya2VociBHbWJIMRkwFwYDVQQLDBBBLVRydXN0LW5R -dWFsLTAzMRkwFwYDVQQDDBBBLVRydXN0LW5RdWFsLTAzMB4XDTE0MDcyMzEwMzgy -OVoXDTI1MDcyMzA4MzgyOVowgY0xCzAJBgNVBAYTAkFUMUgwRgYDVQQKDD9BLVRy -dXN0IEdlcy4gZi4gU2ljaGVyaGVpdHNzeXN0ZW1lIGltIGVsZWt0ci4gRGF0ZW52 -ZXJrZWhyIEdtYkgxGTAXBgNVBAsMEEEtVHJ1c3QtblF1YWwtMDMxGTAXBgNVBAMM -EEEtVHJ1c3QtblF1YWwtMDMwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB -AQCtPWFuA/OQO8BBC4SAzewqo51ru27CQoT3URThoKgtUaNR8t4j8DRE/5TrzAUj -lUC5B3ilJfYKvUWG6Nm9wASOhURh73+nyfrBJcyFLGM/BWBzSQXgYHiVEEvc+RFZ -znF/QJuKqiTfC0Li21a8StKlDJu3Qz7dg9MmEALP6iPESU7l0+m0iKsMrmKS1GWH -2WrX9IWf5DMiJaXlyDO6w8dB3F/GaswADm0yqLaHNgBid5seHzTLkDx4iHQF63n1 -k3Flyp3HaxgtPVxO59X4PzF9j4fsCiIvI+n+u33J4PTs63zEsMMtYrWacdaxaujs -2e3Vcuy+VwHOBVWf3tFgiBCzAgMBAAGjNjA0MA8GA1UdEwEB/wQFMAMBAf8wEQYD -VR0OBAoECERqlWdVeRFPMA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQUFAAOC -AQEAEoykPeAA/6iKm6YnfxsSHFe+Dtian2yAH8L2TqMdcHeSB/7L1x73uuDeYku1 -hbKQAXnfXntf8R+VgjQBTww0aDb5164netYcFbK0g8uVWVCqOl8wf3JbAUxHS9br -cFKks+CJKPr6qQ6H+sb1o9127c9IQSZYP3S/gMAaGw0cSTlsnosE0P5Ur5vHsapm -FV3V+VOjYNs2GLSu4XQCYvSIpsfDJp8VsJ/BMYS9GqGvQ/9qGa0fwEbEMadb5mcJ -tw/EKg4gJthMgxOfO5eVuCQ3PAEWOe5lrOrTdvTIlhphUuns5hoIdlyLuNqewK3s -FJ6N46sU7LjJLqSKYEB8usoIiw== ------END CERTIFICATE----- diff --git a/moaSig/handbook/conf/moa-spss/trustProfiles/certifiedSignature+Test/A-Trust-nQual-03.20050817-20150817.SerNo016c1e.cer b/moaSig/handbook/conf/moa-spss/trustProfiles/certifiedSignature+Test/A-Trust-nQual-03.20050817-20150817.SerNo016c1e.cer Binary files differdeleted file mode 100644 index 33e7763..0000000 --- a/moaSig/handbook/conf/moa-spss/trustProfiles/certifiedSignature+Test/A-Trust-nQual-03.20050817-20150817.SerNo016c1e.cer +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/trustProfiles/certifiedSignature+Test/A-Trust-nQual-04.20130708-20230701.SerNof28a2.cer b/moaSig/handbook/conf/moa-spss/trustProfiles/certifiedSignature+Test/A-Trust-nQual-04.20130708-20230701.SerNof28a2.cer Binary files differdeleted file mode 100644 index 167c364..0000000 --- a/moaSig/handbook/conf/moa-spss/trustProfiles/certifiedSignature+Test/A-Trust-nQual-04.20130708-20230701.SerNof28a2.cer +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/trustProfiles/certifiedSignature+Test/A-Trust.A-Trust-nQual-01.20010427-20040427.SerNo006f[CertifiedKeypair].cer b/moaSig/handbook/conf/moa-spss/trustProfiles/certifiedSignature+Test/A-Trust.A-Trust-nQual-01.20010427-20040427.SerNo006f[CertifiedKeypair].cer Binary files differdeleted file mode 100644 index b7d4b08..0000000 --- a/moaSig/handbook/conf/moa-spss/trustProfiles/certifiedSignature+Test/A-Trust.A-Trust-nQual-01.20010427-20040427.SerNo006f[CertifiedKeypair].cer +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/trustProfiles/certifiedSignature+Test/A-Trust.A-Trust-nQual-01.20011212-20041212.SerNo0213[CertifiedKeypair].cer b/moaSig/handbook/conf/moa-spss/trustProfiles/certifiedSignature+Test/A-Trust.A-Trust-nQual-01.20011212-20041212.SerNo0213[CertifiedKeypair].cer Binary files differdeleted file mode 100644 index 289fc21..0000000 --- a/moaSig/handbook/conf/moa-spss/trustProfiles/certifiedSignature+Test/A-Trust.A-Trust-nQual-01.20011212-20041212.SerNo0213[CertifiedKeypair].cer +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/trustProfiles/certifiedSignature+Test/A-Trust.A-Trust-nQual-01.20011212-20041212.SerNo0218[CertifiedKeypair].cer b/moaSig/handbook/conf/moa-spss/trustProfiles/certifiedSignature+Test/A-Trust.A-Trust-nQual-01.20011212-20041212.SerNo0218[CertifiedKeypair].cer Binary files differdeleted file mode 100644 index 69de756..0000000 --- a/moaSig/handbook/conf/moa-spss/trustProfiles/certifiedSignature+Test/A-Trust.A-Trust-nQual-01.20011212-20041212.SerNo0218[CertifiedKeypair].cer +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/trustProfiles/certifiedSignature+Test/C=AT,O=Hauptverband oesterr. Sozialvers.,CN=Root-CA 1-2045.der b/moaSig/handbook/conf/moa-spss/trustProfiles/certifiedSignature+Test/C=AT,O=Hauptverband oesterr. Sozialvers.,CN=Root-CA 1-2045.der Binary files differdeleted file mode 100644 index 3be7b6a..0000000 --- a/moaSig/handbook/conf/moa-spss/trustProfiles/certifiedSignature+Test/C=AT,O=Hauptverband oesterr. Sozialvers.,CN=Root-CA 1-2045.der +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/trustProfiles/certifiedSignature+Test/EGIZ_Test_CA_-_Root.20070829-20180101.SerNo00.cer b/moaSig/handbook/conf/moa-spss/trustProfiles/certifiedSignature+Test/EGIZ_Test_CA_-_Root.20070829-20180101.SerNo00.cer Binary files differdeleted file mode 100644 index ed5ba19..0000000 --- a/moaSig/handbook/conf/moa-spss/trustProfiles/certifiedSignature+Test/EGIZ_Test_CA_-_Root.20070829-20180101.SerNo00.cer +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/trustProfiles/certifiedSignature+Test/MOA_Test_CA.20070823-20131022.Serno01.cer b/moaSig/handbook/conf/moa-spss/trustProfiles/certifiedSignature+Test/MOA_Test_CA.20070823-20131022.Serno01.cer Binary files differdeleted file mode 100644 index 05a8b86..0000000 --- a/moaSig/handbook/conf/moa-spss/trustProfiles/certifiedSignature+Test/MOA_Test_CA.20070823-20131022.Serno01.cer +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/trustProfiles/certifiedSignature+Test/a-sign-TEST-nQual-01a.20041117-20080630.SerNo00da8b.cer b/moaSig/handbook/conf/moa-spss/trustProfiles/certifiedSignature+Test/a-sign-TEST-nQual-01a.20041117-20080630.SerNo00da8b.cer Binary files differdeleted file mode 100644 index 32893db..0000000 --- a/moaSig/handbook/conf/moa-spss/trustProfiles/certifiedSignature+Test/a-sign-TEST-nQual-01a.20041117-20080630.SerNo00da8b.cer +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/trustProfiles/certifiedSignature+Test/a-sign-Test-Qual-01.20141117-20241111.SerNo16120f.cer b/moaSig/handbook/conf/moa-spss/trustProfiles/certifiedSignature+Test/a-sign-Test-Qual-01.20141117-20241111.SerNo16120f.cer deleted file mode 100644 index 60bc9a5..0000000 --- a/moaSig/handbook/conf/moa-spss/trustProfiles/certifiedSignature+Test/a-sign-Test-Qual-01.20141117-20241111.SerNo16120f.cer +++ /dev/null @@ -1,23 +0,0 @@ ------BEGIN CERTIFICATE----- -MIID2zCCAsOgAwIBAgIDFhIPMA0GCSqGSIb3DQEBBQUAMIGTMQswCQYDVQQGEwJB -VDFIMEYGA1UECgw/QS1UcnVzdCBHZXMuIGYuIFNpY2hlcmhlaXRzc3lzdGVtZSBp -bSBlbGVrdHIuIERhdGVudmVya2VociBHbWJIMRwwGgYDVQQLDBNhLXNpZ24tVEVT -VC1RdWFsLTAxMRwwGgYDVQQDDBNhLXNpZ24tVEVTVC1RdWFsLTAxMB4XDTE0MTEx -NzA3NDAzNloXDTI0MTExMTA2NDAzNlowgZMxCzAJBgNVBAYTAkFUMUgwRgYDVQQK -DD9BLVRydXN0IEdlcy4gZi4gU2ljaGVyaGVpdHNzeXN0ZW1lIGltIGVsZWt0ci4g -RGF0ZW52ZXJrZWhyIEdtYkgxHDAaBgNVBAsME2Etc2lnbi1URVNULVF1YWwtMDEx -HDAaBgNVBAMME2Etc2lnbi1URVNULVF1YWwtMDEwggEiMA0GCSqGSIb3DQEBAQUA -A4IBDwAwggEKAoIBAQD4TRgyXzhxJ2AkndX0RPY771f64dsJrReEeuShLRK5io0B -kJWc4t7wuD1B98cJ0MUPlMmOJ2Ckc/vuLhQUyY3qEUmhMhixCUIcdHQ5yH3H0yMV -HxyJxAG83fE8M25kpKA4TzzMW8KPd2S63wbpPElyEy7vrllrLxvdQRSDpMZMvRg8 -fvoDGAehxsnKKwlXZuMq1aSBzfMz3cMBDKxvqzDIz7yC1iWNkdiwog3a5a5PbViK -shhZ0h+bx9WFDpiN6ooPQgcGhjD+NqIDoiOr7CUFHp+HiC6xIsEFJaBHTf3dRZ61 -0r1FDABx0Yj8+wlXSQLYq/1nR/QMwsvH0Cz1qYTPAgMBAAGjNjA0MA8GA1UdEwEB -/wQFMAMBAf8wEQYDVR0OBAoECE8h1CulBqTdMA4GA1UdDwEB/wQEAwIBBjANBgkq -hkiG9w0BAQUFAAOCAQEAimFu+xTm3UdyU+fO+2hz4DS20OGSC9NBDkorjzhRPWoZ -IVhUi6yH5drqSBm4/2ZYS1Ba5npzfyJwm+cLO28ljxAApfRHlbN0y83hKv7c0I7g -zWTMRs8X8ar5Gd7d4O5jpC4PAaZ1ozSDoE06U5im6YMLaJy/0QYvf5EQBMvLdeoc -d1vl17JYKYqYzcX2dvayikrfiglFqDaZZ66yJPBSuiyNhXpPkbXsOoyyTPtV/0Bh -eKIQiQyJID5aZtR7D4fBAzKdp5wB9KLQXBZ80hrwqrIuy+ME0tFaBWYBi8dzQ1iq -/E3Qz0USfGmxPMm8y/zRqsDvxZCRiSuvzBkOXbGMdA== ------END CERTIFICATE----- diff --git a/moaSig/handbook/conf/moa-spss/trustProfiles/certifiedSignature+Test/mobilkom.A1-Signatur.20040326-20140326.SerNo6646[SecureSignatureKeypair].cer b/moaSig/handbook/conf/moa-spss/trustProfiles/certifiedSignature+Test/mobilkom.A1-Signatur.20040326-20140326.SerNo6646[SecureSignatureKeypair].cer Binary files differdeleted file mode 100644 index 06b40aa..0000000 --- a/moaSig/handbook/conf/moa-spss/trustProfiles/certifiedSignature+Test/mobilkom.A1-Signatur.20040326-20140326.SerNo6646[SecureSignatureKeypair].cer +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/trustProfiles/certifiedSignature+Test/mobilkom_A1-Signatur_20060912-20110912_SerNo027866.cer b/moaSig/handbook/conf/moa-spss/trustProfiles/certifiedSignature+Test/mobilkom_A1-Signatur_20060912-20110912_SerNo027866.cer Binary files differdeleted file mode 100644 index 7e9fd5b..0000000 --- a/moaSig/handbook/conf/moa-spss/trustProfiles/certifiedSignature+Test/mobilkom_A1-Signatur_20060912-20110912_SerNo027866.cer +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/trustProfiles/certifiedSignature+Test/mobilkom_A1-Signatur_20070501-20120501_SerNo6650.cer b/moaSig/handbook/conf/moa-spss/trustProfiles/certifiedSignature+Test/mobilkom_A1-Signatur_20070501-20120501_SerNo6650.cer Binary files differdeleted file mode 100644 index da38ce0..0000000 --- a/moaSig/handbook/conf/moa-spss/trustProfiles/certifiedSignature+Test/mobilkom_A1-Signatur_20070501-20120501_SerNo6650.cer +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/trustProfiles/certifiedSignature/A-Trust-Root-05.20130923-20230920.SerNoFCDB4.cer b/moaSig/handbook/conf/moa-spss/trustProfiles/certifiedSignature/A-Trust-Root-05.20130923-20230920.SerNoFCDB4.cer Binary files differdeleted file mode 100644 index b9a0e5a..0000000 --- a/moaSig/handbook/conf/moa-spss/trustProfiles/certifiedSignature/A-Trust-Root-05.20130923-20230920.SerNoFCDB4.cer +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/trustProfiles/certifiedSignature/A-Trust-nQual-01-20140701-20240701.SerNo144dc3(CertifiedKeypair).cer b/moaSig/handbook/conf/moa-spss/trustProfiles/certifiedSignature/A-Trust-nQual-01-20140701-20240701.SerNo144dc3(CertifiedKeypair).cer deleted file mode 100644 index e90f5f2..0000000 --- a/moaSig/handbook/conf/moa-spss/trustProfiles/certifiedSignature/A-Trust-nQual-01-20140701-20240701.SerNo144dc3(CertifiedKeypair).cer +++ /dev/null @@ -1,21 +0,0 @@ ------BEGIN CERTIFICATE----- -MIIDXTCCAkWgAwIBAgIDFE3DMA0GCSqGSIb3DQEBBQUAMFUxCzAJBgNVBAYTAkFU -MRAwDgYDVQQKEwdBLVRydXN0MRkwFwYDVQQLExBBLVRydXN0LW5RdWFsLTAxMRkw -FwYDVQQDExBBLVRydXN0LW5RdWFsLTAxMB4XDTE0MDcwMTExMDk1NFoXDTI0MDcw -MTA5MDk1NFowVTELMAkGA1UEBhMCQVQxEDAOBgNVBAoTB0EtVHJ1c3QxGTAXBgNV -BAsTEEEtVHJ1c3QtblF1YWwtMDExGTAXBgNVBAMTEEEtVHJ1c3QtblF1YWwtMDEw -ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQD/9RyAEZ6eHmhYzNJ328f0 -jmdSUFi6EqRqOxb3jHNPTIpK82CR6z5lmSnZQNUuCPD+htbNZffd2DKVB06NOyZ1 -2zcOMCgj4GtkZoqE0zPpPT3bpoE55nkZZe/qWEX/64wz/L/4EdkvKDSKG/UsP75M -tmCVY5m2Eg73RVFRz4ccBIMpHel4lzEqSkdDtZOY5fnkrE333hx67nxq21vY8Eyf -8O4fPQ5RtN8eohQCcPQ1z6ypU1R7N9jPRpnI+yzMOiwd3+QcKhHi1miCzo0pkOaB -1CwmfsTyNl8qU0NJUL9Ta6cea7WThwTiWol2yD88cd2cy388xpbNkfrCPmZNGLoV -AgMBAAGjNjA0MA8GA1UdEwEB/wQFMAMBAf8wEQYDVR0OBAoECE5ZzscCMocwMA4G -A1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQUFAAOCAQEAO3hBdwsNQOtYOAlC2PKT -sdNexKqMefFGrGDYIEAflaudwpcqUgv7fLLhMNRMT+BcXtqXtfNHGsll2GwseuMq -C02bPUmbfNV4P9djIz/s6qqvNQaQneFzhuXn+i0YQ10sFFVeIL3qrBMl1lwBeQ64 -/GyvrbGiHuuagEUc25CDrUqni+b+azaPUsRG6IXkIWG0H6WIMqtxIdHzAV/1raKh -PKot1VhG2rivf1cBBGXU/0VSYBitXrLNwXwlX2ad0WiFHUF8RS9F3j2vVSYMfxer -NPNaRLtCkHNSqCIDkMmmHJKbJbKJzMaZYmX2i2nc16HCpE/gbQc3etQCl3GvzO88 -xw== ------END CERTIFICATE----- diff --git a/moaSig/handbook/conf/moa-spss/trustProfiles/certifiedSignature/A-Trust-nQual-01.20040326-20070326.SerNo6632(CertifiedKeypair).cer b/moaSig/handbook/conf/moa-spss/trustProfiles/certifiedSignature/A-Trust-nQual-01.20040326-20070326.SerNo6632(CertifiedKeypair).cer Binary files differdeleted file mode 100644 index 8c43477..0000000 --- a/moaSig/handbook/conf/moa-spss/trustProfiles/certifiedSignature/A-Trust-nQual-01.20040326-20070326.SerNo6632(CertifiedKeypair).cer +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/trustProfiles/certifiedSignature/A-Trust-nQual-01.20041201-20141201.SerNo01c85e.cer b/moaSig/handbook/conf/moa-spss/trustProfiles/certifiedSignature/A-Trust-nQual-01.20041201-20141201.SerNo01c85e.cer Binary files differdeleted file mode 100644 index 8d33015..0000000 --- a/moaSig/handbook/conf/moa-spss/trustProfiles/certifiedSignature/A-Trust-nQual-01.20041201-20141201.SerNo01c85e.cer +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/trustProfiles/certifiedSignature/A-Trust-nQual-01.20041201-20141201.SerNoe242.cer b/moaSig/handbook/conf/moa-spss/trustProfiles/certifiedSignature/A-Trust-nQual-01.20041201-20141201.SerNoe242.cer Binary files differdeleted file mode 100644 index efa2817..0000000 --- a/moaSig/handbook/conf/moa-spss/trustProfiles/certifiedSignature/A-Trust-nQual-01.20041201-20141201.SerNoe242.cer +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/trustProfiles/certifiedSignature/A-Trust-nQual-03-20140723-20250723.SerNo14b4f9.cer b/moaSig/handbook/conf/moa-spss/trustProfiles/certifiedSignature/A-Trust-nQual-03-20140723-20250723.SerNo14b4f9.cer deleted file mode 100644 index 2284687..0000000 --- a/moaSig/handbook/conf/moa-spss/trustProfiles/certifiedSignature/A-Trust-nQual-03-20140723-20250723.SerNo14b4f9.cer +++ /dev/null @@ -1,23 +0,0 @@ ------BEGIN CERTIFICATE----- -MIIDzzCCAregAwIBAgIDFLT5MA0GCSqGSIb3DQEBBQUAMIGNMQswCQYDVQQGEwJB -VDFIMEYGA1UECgw/QS1UcnVzdCBHZXMuIGYuIFNpY2hlcmhlaXRzc3lzdGVtZSBp -bSBlbGVrdHIuIERhdGVudmVya2VociBHbWJIMRkwFwYDVQQLDBBBLVRydXN0LW5R -dWFsLTAzMRkwFwYDVQQDDBBBLVRydXN0LW5RdWFsLTAzMB4XDTE0MDcyMzEwMzgy -OVoXDTI1MDcyMzA4MzgyOVowgY0xCzAJBgNVBAYTAkFUMUgwRgYDVQQKDD9BLVRy -dXN0IEdlcy4gZi4gU2ljaGVyaGVpdHNzeXN0ZW1lIGltIGVsZWt0ci4gRGF0ZW52 -ZXJrZWhyIEdtYkgxGTAXBgNVBAsMEEEtVHJ1c3QtblF1YWwtMDMxGTAXBgNVBAMM -EEEtVHJ1c3QtblF1YWwtMDMwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB -AQCtPWFuA/OQO8BBC4SAzewqo51ru27CQoT3URThoKgtUaNR8t4j8DRE/5TrzAUj -lUC5B3ilJfYKvUWG6Nm9wASOhURh73+nyfrBJcyFLGM/BWBzSQXgYHiVEEvc+RFZ -znF/QJuKqiTfC0Li21a8StKlDJu3Qz7dg9MmEALP6iPESU7l0+m0iKsMrmKS1GWH -2WrX9IWf5DMiJaXlyDO6w8dB3F/GaswADm0yqLaHNgBid5seHzTLkDx4iHQF63n1 -k3Flyp3HaxgtPVxO59X4PzF9j4fsCiIvI+n+u33J4PTs63zEsMMtYrWacdaxaujs -2e3Vcuy+VwHOBVWf3tFgiBCzAgMBAAGjNjA0MA8GA1UdEwEB/wQFMAMBAf8wEQYD -VR0OBAoECERqlWdVeRFPMA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQUFAAOC -AQEAEoykPeAA/6iKm6YnfxsSHFe+Dtian2yAH8L2TqMdcHeSB/7L1x73uuDeYku1 -hbKQAXnfXntf8R+VgjQBTww0aDb5164netYcFbK0g8uVWVCqOl8wf3JbAUxHS9br -cFKks+CJKPr6qQ6H+sb1o9127c9IQSZYP3S/gMAaGw0cSTlsnosE0P5Ur5vHsapm -FV3V+VOjYNs2GLSu4XQCYvSIpsfDJp8VsJ/BMYS9GqGvQ/9qGa0fwEbEMadb5mcJ -tw/EKg4gJthMgxOfO5eVuCQ3PAEWOe5lrOrTdvTIlhphUuns5hoIdlyLuNqewK3s -FJ6N46sU7LjJLqSKYEB8usoIiw== ------END CERTIFICATE----- diff --git a/moaSig/handbook/conf/moa-spss/trustProfiles/certifiedSignature/A-Trust-nQual-03.20050817-20150817.SerNo016c1e.cer b/moaSig/handbook/conf/moa-spss/trustProfiles/certifiedSignature/A-Trust-nQual-03.20050817-20150817.SerNo016c1e.cer Binary files differdeleted file mode 100644 index 33e7763..0000000 --- a/moaSig/handbook/conf/moa-spss/trustProfiles/certifiedSignature/A-Trust-nQual-03.20050817-20150817.SerNo016c1e.cer +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/trustProfiles/certifiedSignature/A-Trust-nQual-04.20130708-20230701.SerNof28a2.cer b/moaSig/handbook/conf/moa-spss/trustProfiles/certifiedSignature/A-Trust-nQual-04.20130708-20230701.SerNof28a2.cer Binary files differdeleted file mode 100644 index 167c364..0000000 --- a/moaSig/handbook/conf/moa-spss/trustProfiles/certifiedSignature/A-Trust-nQual-04.20130708-20230701.SerNof28a2.cer +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/trustProfiles/certifiedSignature/A-Trust.A-Trust-nQual-01.20010427-20040427.SerNo006f[CertifiedKeypair].cer b/moaSig/handbook/conf/moa-spss/trustProfiles/certifiedSignature/A-Trust.A-Trust-nQual-01.20010427-20040427.SerNo006f[CertifiedKeypair].cer Binary files differdeleted file mode 100644 index b7d4b08..0000000 --- a/moaSig/handbook/conf/moa-spss/trustProfiles/certifiedSignature/A-Trust.A-Trust-nQual-01.20010427-20040427.SerNo006f[CertifiedKeypair].cer +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/trustProfiles/certifiedSignature/A-Trust.A-Trust-nQual-01.20011212-20041212.SerNo0213[CertifiedKeypair].cer b/moaSig/handbook/conf/moa-spss/trustProfiles/certifiedSignature/A-Trust.A-Trust-nQual-01.20011212-20041212.SerNo0213[CertifiedKeypair].cer Binary files differdeleted file mode 100644 index 289fc21..0000000 --- a/moaSig/handbook/conf/moa-spss/trustProfiles/certifiedSignature/A-Trust.A-Trust-nQual-01.20011212-20041212.SerNo0213[CertifiedKeypair].cer +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/trustProfiles/certifiedSignature/A-Trust.A-Trust-nQual-01.20011212-20041212.SerNo0218[CertifiedKeypair].cer b/moaSig/handbook/conf/moa-spss/trustProfiles/certifiedSignature/A-Trust.A-Trust-nQual-01.20011212-20041212.SerNo0218[CertifiedKeypair].cer Binary files differdeleted file mode 100644 index 69de756..0000000 --- a/moaSig/handbook/conf/moa-spss/trustProfiles/certifiedSignature/A-Trust.A-Trust-nQual-01.20011212-20041212.SerNo0218[CertifiedKeypair].cer +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/trustProfiles/certifiedSignature/C=AT,O=Hauptverband oesterr. Sozialvers.,CN=Root-CA 1-2045.der b/moaSig/handbook/conf/moa-spss/trustProfiles/certifiedSignature/C=AT,O=Hauptverband oesterr. Sozialvers.,CN=Root-CA 1-2045.der Binary files differdeleted file mode 100644 index 3be7b6a..0000000 --- a/moaSig/handbook/conf/moa-spss/trustProfiles/certifiedSignature/C=AT,O=Hauptverband oesterr. Sozialvers.,CN=Root-CA 1-2045.der +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/trustProfiles/certifiedSignature/mobilkom.A1-Signatur.20040326-20140326.SerNo6646.cer b/moaSig/handbook/conf/moa-spss/trustProfiles/certifiedSignature/mobilkom.A1-Signatur.20040326-20140326.SerNo6646.cer Binary files differdeleted file mode 100644 index 06b40aa..0000000 --- a/moaSig/handbook/conf/moa-spss/trustProfiles/certifiedSignature/mobilkom.A1-Signatur.20040326-20140326.SerNo6646.cer +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/trustProfiles/certifiedSignature/mobilkom_A1-Signatur_20060912-20110912_SerNo027866.cer b/moaSig/handbook/conf/moa-spss/trustProfiles/certifiedSignature/mobilkom_A1-Signatur_20060912-20110912_SerNo027866.cer Binary files differdeleted file mode 100644 index 7e9fd5b..0000000 --- a/moaSig/handbook/conf/moa-spss/trustProfiles/certifiedSignature/mobilkom_A1-Signatur_20060912-20110912_SerNo027866.cer +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/trustProfiles/certifiedSignature/mobilkom_A1-Signatur_20070501-20120501_SerNo6650.cer b/moaSig/handbook/conf/moa-spss/trustProfiles/certifiedSignature/mobilkom_A1-Signatur_20070501-20120501_SerNo6650.cer Binary files differdeleted file mode 100644 index da38ce0..0000000 --- a/moaSig/handbook/conf/moa-spss/trustProfiles/certifiedSignature/mobilkom_A1-Signatur_20070501-20120501_SerNo6650.cer +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/trustProfiles/identityLink+Test-signerCerts/Dr. Waltraut Kotschy.20070119-20120119.SerNo02de1c.cer b/moaSig/handbook/conf/moa-spss/trustProfiles/identityLink+Test-signerCerts/Dr. Waltraut Kotschy.20070119-20120119.SerNo02de1c.cer Binary files differdeleted file mode 100644 index 592c962..0000000 --- a/moaSig/handbook/conf/moa-spss/trustProfiles/identityLink+Test-signerCerts/Dr. Waltraut Kotschy.20070119-20120119.SerNo02de1c.cer +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/trustProfiles/identityLink+Test-signerCerts/EGIZ_Administrator.20070829-20120829.SerNo00.cer b/moaSig/handbook/conf/moa-spss/trustProfiles/identityLink+Test-signerCerts/EGIZ_Administrator.20070829-20120829.SerNo00.cer Binary files differdeleted file mode 100644 index 694e682..0000000 --- a/moaSig/handbook/conf/moa-spss/trustProfiles/identityLink+Test-signerCerts/EGIZ_Administrator.20070829-20120829.SerNo00.cer +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/trustProfiles/identityLink+Test-signerCerts/Nikolaus_Schwab.20040219-20070219.SerNo5C39.cer b/moaSig/handbook/conf/moa-spss/trustProfiles/identityLink+Test-signerCerts/Nikolaus_Schwab.20040219-20070219.SerNo5C39.cer Binary files differdeleted file mode 100644 index 376d075..0000000 --- a/moaSig/handbook/conf/moa-spss/trustProfiles/identityLink+Test-signerCerts/Nikolaus_Schwab.20040219-20070219.SerNo5C39.cer +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/trustProfiles/identityLink+Test-signerCerts/Signaturservice Datenschutzkommission-20100728-20150728.SerNo0729E2.cer b/moaSig/handbook/conf/moa-spss/trustProfiles/identityLink+Test-signerCerts/Signaturservice Datenschutzkommission-20100728-20150728.SerNo0729E2.cer Binary files differdeleted file mode 100644 index 414123e..0000000 --- a/moaSig/handbook/conf/moa-spss/trustProfiles/identityLink+Test-signerCerts/Signaturservice Datenschutzkommission-20100728-20150728.SerNo0729E2.cer +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/trustProfiles/identityLink+Test/A-CERT-GOVERNMENT-20090505-20360918.SerNo0E.cer b/moaSig/handbook/conf/moa-spss/trustProfiles/identityLink+Test/A-CERT-GOVERNMENT-20090505-20360918.SerNo0E.cer Binary files differdeleted file mode 100644 index afe6fdf..0000000 --- a/moaSig/handbook/conf/moa-spss/trustProfiles/identityLink+Test/A-CERT-GOVERNMENT-20090505-20360918.SerNo0E.cer +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/trustProfiles/identityLink+Test/A-Trust-nQual-03-20140723-20250723.SerNo14b4f9.cer b/moaSig/handbook/conf/moa-spss/trustProfiles/identityLink+Test/A-Trust-nQual-03-20140723-20250723.SerNo14b4f9.cer deleted file mode 100644 index 2284687..0000000 --- a/moaSig/handbook/conf/moa-spss/trustProfiles/identityLink+Test/A-Trust-nQual-03-20140723-20250723.SerNo14b4f9.cer +++ /dev/null @@ -1,23 +0,0 @@ ------BEGIN CERTIFICATE----- -MIIDzzCCAregAwIBAgIDFLT5MA0GCSqGSIb3DQEBBQUAMIGNMQswCQYDVQQGEwJB -VDFIMEYGA1UECgw/QS1UcnVzdCBHZXMuIGYuIFNpY2hlcmhlaXRzc3lzdGVtZSBp -bSBlbGVrdHIuIERhdGVudmVya2VociBHbWJIMRkwFwYDVQQLDBBBLVRydXN0LW5R -dWFsLTAzMRkwFwYDVQQDDBBBLVRydXN0LW5RdWFsLTAzMB4XDTE0MDcyMzEwMzgy -OVoXDTI1MDcyMzA4MzgyOVowgY0xCzAJBgNVBAYTAkFUMUgwRgYDVQQKDD9BLVRy -dXN0IEdlcy4gZi4gU2ljaGVyaGVpdHNzeXN0ZW1lIGltIGVsZWt0ci4gRGF0ZW52 -ZXJrZWhyIEdtYkgxGTAXBgNVBAsMEEEtVHJ1c3QtblF1YWwtMDMxGTAXBgNVBAMM -EEEtVHJ1c3QtblF1YWwtMDMwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB -AQCtPWFuA/OQO8BBC4SAzewqo51ru27CQoT3URThoKgtUaNR8t4j8DRE/5TrzAUj -lUC5B3ilJfYKvUWG6Nm9wASOhURh73+nyfrBJcyFLGM/BWBzSQXgYHiVEEvc+RFZ -znF/QJuKqiTfC0Li21a8StKlDJu3Qz7dg9MmEALP6iPESU7l0+m0iKsMrmKS1GWH -2WrX9IWf5DMiJaXlyDO6w8dB3F/GaswADm0yqLaHNgBid5seHzTLkDx4iHQF63n1 -k3Flyp3HaxgtPVxO59X4PzF9j4fsCiIvI+n+u33J4PTs63zEsMMtYrWacdaxaujs -2e3Vcuy+VwHOBVWf3tFgiBCzAgMBAAGjNjA0MA8GA1UdEwEB/wQFMAMBAf8wEQYD -VR0OBAoECERqlWdVeRFPMA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQUFAAOC -AQEAEoykPeAA/6iKm6YnfxsSHFe+Dtian2yAH8L2TqMdcHeSB/7L1x73uuDeYku1 -hbKQAXnfXntf8R+VgjQBTww0aDb5164netYcFbK0g8uVWVCqOl8wf3JbAUxHS9br -cFKks+CJKPr6qQ6H+sb1o9127c9IQSZYP3S/gMAaGw0cSTlsnosE0P5Ur5vHsapm -FV3V+VOjYNs2GLSu4XQCYvSIpsfDJp8VsJ/BMYS9GqGvQ/9qGa0fwEbEMadb5mcJ -tw/EKg4gJthMgxOfO5eVuCQ3PAEWOe5lrOrTdvTIlhphUuns5hoIdlyLuNqewK3s -FJ6N46sU7LjJLqSKYEB8usoIiw== ------END CERTIFICATE----- diff --git a/moaSig/handbook/conf/moa-spss/trustProfiles/identityLink+Test/A-Trust-nQual-03.20050817-20150817.SerNo016c1e.cer b/moaSig/handbook/conf/moa-spss/trustProfiles/identityLink+Test/A-Trust-nQual-03.20050817-20150817.SerNo016c1e.cer Binary files differdeleted file mode 100644 index 33e7763..0000000 --- a/moaSig/handbook/conf/moa-spss/trustProfiles/identityLink+Test/A-Trust-nQual-03.20050817-20150817.SerNo016c1e.cer +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/trustProfiles/identityLink+Test/EGIZ_Test_CA_-_Signaturdienst.20070829-20140101.SerNo02.cer b/moaSig/handbook/conf/moa-spss/trustProfiles/identityLink+Test/EGIZ_Test_CA_-_Signaturdienst.20070829-20140101.SerNo02.cer Binary files differdeleted file mode 100644 index 277b608..0000000 --- a/moaSig/handbook/conf/moa-spss/trustProfiles/identityLink+Test/EGIZ_Test_CA_-_Signaturdienst.20070829-20140101.SerNo02.cer +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/trustProfiles/identityLink+Test/Nikolaus_Schwab.20040219-20070219.SerNo5C39.cer b/moaSig/handbook/conf/moa-spss/trustProfiles/identityLink+Test/Nikolaus_Schwab.20040219-20070219.SerNo5C39.cer Binary files differdeleted file mode 100644 index 376d075..0000000 --- a/moaSig/handbook/conf/moa-spss/trustProfiles/identityLink+Test/Nikolaus_Schwab.20040219-20070219.SerNo5C39.cer +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/trustProfiles/identityLink+Test/Waltraut_Kotschy.20070119-20120119.SerNo02DE1C.cer b/moaSig/handbook/conf/moa-spss/trustProfiles/identityLink+Test/Waltraut_Kotschy.20070119-20120119.SerNo02DE1C.cer Binary files differdeleted file mode 100644 index 592c962..0000000 --- a/moaSig/handbook/conf/moa-spss/trustProfiles/identityLink+Test/Waltraut_Kotschy.20070119-20120119.SerNo02DE1C.cer +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/trustProfiles/identityLink+Test/a-sign-corporate-light-02.20140905-20240905.SrN153B49.crt b/moaSig/handbook/conf/moa-spss/trustProfiles/identityLink+Test/a-sign-corporate-light-02.20140905-20240905.SrN153B49.crt Binary files differdeleted file mode 100644 index e4bd48d..0000000 --- a/moaSig/handbook/conf/moa-spss/trustProfiles/identityLink+Test/a-sign-corporate-light-02.20140905-20240905.SrN153B49.crt +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/trustProfiles/identityLink+Test/a-sign-corporate-light-02.cer b/moaSig/handbook/conf/moa-spss/trustProfiles/identityLink+Test/a-sign-corporate-light-02.cer Binary files differdeleted file mode 100644 index 61a7ccb..0000000 --- a/moaSig/handbook/conf/moa-spss/trustProfiles/identityLink+Test/a-sign-corporate-light-02.cer +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/trustProfiles/identityLink+Test/a-sign-corporate-light-03-20051114-20151114.SerNo01aaed.der b/moaSig/handbook/conf/moa-spss/trustProfiles/identityLink+Test/a-sign-corporate-light-03-20051114-20151114.SerNo01aaed.der Binary files differdeleted file mode 100644 index 5171276..0000000 --- a/moaSig/handbook/conf/moa-spss/trustProfiles/identityLink+Test/a-sign-corporate-light-03-20051114-20151114.SerNo01aaed.der +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/trustProfiles/identityLink-signerCerts/Dr. Waltraut Kotschy-20070119-20120119.SerNo02de1c.der b/moaSig/handbook/conf/moa-spss/trustProfiles/identityLink-signerCerts/Dr. Waltraut Kotschy-20070119-20120119.SerNo02de1c.der Binary files differdeleted file mode 100644 index 592c962..0000000 --- a/moaSig/handbook/conf/moa-spss/trustProfiles/identityLink-signerCerts/Dr. Waltraut Kotschy-20070119-20120119.SerNo02de1c.der +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/trustProfiles/identityLink-signerCerts/Nikolaus_Schwab.20040219-20070219.SerNo5C39.cer b/moaSig/handbook/conf/moa-spss/trustProfiles/identityLink-signerCerts/Nikolaus_Schwab.20040219-20070219.SerNo5C39.cer Binary files differdeleted file mode 100644 index 376d075..0000000 --- a/moaSig/handbook/conf/moa-spss/trustProfiles/identityLink-signerCerts/Nikolaus_Schwab.20040219-20070219.SerNo5C39.cer +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/trustProfiles/identityLink-signerCerts/Signaturservice Datenschutzkommission-20100728-20150728.SerNo0729E2.cer b/moaSig/handbook/conf/moa-spss/trustProfiles/identityLink-signerCerts/Signaturservice Datenschutzkommission-20100728-20150728.SerNo0729E2.cer Binary files differdeleted file mode 100644 index 414123e..0000000 --- a/moaSig/handbook/conf/moa-spss/trustProfiles/identityLink-signerCerts/Signaturservice Datenschutzkommission-20100728-20150728.SerNo0729E2.cer +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/trustProfiles/identityLink/A-CERT-GOVERNMENT-20090505-20360918.SerNo0E.cer b/moaSig/handbook/conf/moa-spss/trustProfiles/identityLink/A-CERT-GOVERNMENT-20090505-20360918.SerNo0E.cer Binary files differdeleted file mode 100644 index afe6fdf..0000000 --- a/moaSig/handbook/conf/moa-spss/trustProfiles/identityLink/A-CERT-GOVERNMENT-20090505-20360918.SerNo0E.cer +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/trustProfiles/identityLink/A-Trust-nQual-03-20140723-20250723.SerNo14b4f9.cer b/moaSig/handbook/conf/moa-spss/trustProfiles/identityLink/A-Trust-nQual-03-20140723-20250723.SerNo14b4f9.cer deleted file mode 100644 index 2284687..0000000 --- a/moaSig/handbook/conf/moa-spss/trustProfiles/identityLink/A-Trust-nQual-03-20140723-20250723.SerNo14b4f9.cer +++ /dev/null @@ -1,23 +0,0 @@ ------BEGIN CERTIFICATE----- -MIIDzzCCAregAwIBAgIDFLT5MA0GCSqGSIb3DQEBBQUAMIGNMQswCQYDVQQGEwJB -VDFIMEYGA1UECgw/QS1UcnVzdCBHZXMuIGYuIFNpY2hlcmhlaXRzc3lzdGVtZSBp -bSBlbGVrdHIuIERhdGVudmVya2VociBHbWJIMRkwFwYDVQQLDBBBLVRydXN0LW5R -dWFsLTAzMRkwFwYDVQQDDBBBLVRydXN0LW5RdWFsLTAzMB4XDTE0MDcyMzEwMzgy -OVoXDTI1MDcyMzA4MzgyOVowgY0xCzAJBgNVBAYTAkFUMUgwRgYDVQQKDD9BLVRy -dXN0IEdlcy4gZi4gU2ljaGVyaGVpdHNzeXN0ZW1lIGltIGVsZWt0ci4gRGF0ZW52 -ZXJrZWhyIEdtYkgxGTAXBgNVBAsMEEEtVHJ1c3QtblF1YWwtMDMxGTAXBgNVBAMM -EEEtVHJ1c3QtblF1YWwtMDMwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB -AQCtPWFuA/OQO8BBC4SAzewqo51ru27CQoT3URThoKgtUaNR8t4j8DRE/5TrzAUj -lUC5B3ilJfYKvUWG6Nm9wASOhURh73+nyfrBJcyFLGM/BWBzSQXgYHiVEEvc+RFZ -znF/QJuKqiTfC0Li21a8StKlDJu3Qz7dg9MmEALP6iPESU7l0+m0iKsMrmKS1GWH -2WrX9IWf5DMiJaXlyDO6w8dB3F/GaswADm0yqLaHNgBid5seHzTLkDx4iHQF63n1 -k3Flyp3HaxgtPVxO59X4PzF9j4fsCiIvI+n+u33J4PTs63zEsMMtYrWacdaxaujs -2e3Vcuy+VwHOBVWf3tFgiBCzAgMBAAGjNjA0MA8GA1UdEwEB/wQFMAMBAf8wEQYD -VR0OBAoECERqlWdVeRFPMA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQUFAAOC -AQEAEoykPeAA/6iKm6YnfxsSHFe+Dtian2yAH8L2TqMdcHeSB/7L1x73uuDeYku1 -hbKQAXnfXntf8R+VgjQBTww0aDb5164netYcFbK0g8uVWVCqOl8wf3JbAUxHS9br -cFKks+CJKPr6qQ6H+sb1o9127c9IQSZYP3S/gMAaGw0cSTlsnosE0P5Ur5vHsapm -FV3V+VOjYNs2GLSu4XQCYvSIpsfDJp8VsJ/BMYS9GqGvQ/9qGa0fwEbEMadb5mcJ -tw/EKg4gJthMgxOfO5eVuCQ3PAEWOe5lrOrTdvTIlhphUuns5hoIdlyLuNqewK3s -FJ6N46sU7LjJLqSKYEB8usoIiw== ------END CERTIFICATE----- diff --git a/moaSig/handbook/conf/moa-spss/trustProfiles/identityLink/A-Trust-nQual-03.20050817-20150817.SerNo016c1e.cer b/moaSig/handbook/conf/moa-spss/trustProfiles/identityLink/A-Trust-nQual-03.20050817-20150817.SerNo016c1e.cer Binary files differdeleted file mode 100644 index 33e7763..0000000 --- a/moaSig/handbook/conf/moa-spss/trustProfiles/identityLink/A-Trust-nQual-03.20050817-20150817.SerNo016c1e.cer +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/trustProfiles/identityLink/Nikolaus-Schwab-BM-f-Inneres-20040219-20070219.SerNo5c39.der b/moaSig/handbook/conf/moa-spss/trustProfiles/identityLink/Nikolaus-Schwab-BM-f-Inneres-20040219-20070219.SerNo5c39.der Binary files differdeleted file mode 100644 index 376d075..0000000 --- a/moaSig/handbook/conf/moa-spss/trustProfiles/identityLink/Nikolaus-Schwab-BM-f-Inneres-20040219-20070219.SerNo5c39.der +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/trustProfiles/identityLink/Waltraut_Kotschy.20070119-20120119.SerNo02DE1C.cer b/moaSig/handbook/conf/moa-spss/trustProfiles/identityLink/Waltraut_Kotschy.20070119-20120119.SerNo02DE1C.cer Binary files differdeleted file mode 100644 index 592c962..0000000 --- a/moaSig/handbook/conf/moa-spss/trustProfiles/identityLink/Waltraut_Kotschy.20070119-20120119.SerNo02DE1C.cer +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/trustProfiles/identityLink/a-sign-corporate-light-02.20140905-20240905.SrN153B49.crt b/moaSig/handbook/conf/moa-spss/trustProfiles/identityLink/a-sign-corporate-light-02.20140905-20240905.SrN153B49.crt Binary files differdeleted file mode 100644 index e4bd48d..0000000 --- a/moaSig/handbook/conf/moa-spss/trustProfiles/identityLink/a-sign-corporate-light-02.20140905-20240905.SrN153B49.crt +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/trustProfiles/identityLink/a-sign-corporate-light-02.cer b/moaSig/handbook/conf/moa-spss/trustProfiles/identityLink/a-sign-corporate-light-02.cer Binary files differdeleted file mode 100644 index 61a7ccb..0000000 --- a/moaSig/handbook/conf/moa-spss/trustProfiles/identityLink/a-sign-corporate-light-02.cer +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/trustProfiles/identityLink/a-sign-corporate-light-03-20051114-20151114.SerNo01AAED.cer b/moaSig/handbook/conf/moa-spss/trustProfiles/identityLink/a-sign-corporate-light-03-20051114-20151114.SerNo01AAED.cer Binary files differdeleted file mode 100644 index 5171276..0000000 --- a/moaSig/handbook/conf/moa-spss/trustProfiles/identityLink/a-sign-corporate-light-03-20051114-20151114.SerNo01AAED.cer +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/trustProfiles/identityLink/a-sign-corporate-light-03-20051114-20151114.SerNo01aaed.der b/moaSig/handbook/conf/moa-spss/trustProfiles/identityLink/a-sign-corporate-light-03-20051114-20151114.SerNo01aaed.der Binary files differdeleted file mode 100644 index 5171276..0000000 --- a/moaSig/handbook/conf/moa-spss/trustProfiles/identityLink/a-sign-corporate-light-03-20051114-20151114.SerNo01aaed.der +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/trustProfiles/officialSignature/A-CERT GOVERNMENT.20051001-20111023.SerNo170.cer b/moaSig/handbook/conf/moa-spss/trustProfiles/officialSignature/A-CERT GOVERNMENT.20051001-20111023.SerNo170.cer Binary files differdeleted file mode 100644 index c4d97cd..0000000 --- a/moaSig/handbook/conf/moa-spss/trustProfiles/officialSignature/A-CERT GOVERNMENT.20051001-20111023.SerNo170.cer +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/trustProfiles/officialSignature/A-CERT GOVERNMENT.20070507-20090507.SerNo51D.cer b/moaSig/handbook/conf/moa-spss/trustProfiles/officialSignature/A-CERT GOVERNMENT.20070507-20090507.SerNo51D.cer Binary files differdeleted file mode 100644 index 815f53d..0000000 --- a/moaSig/handbook/conf/moa-spss/trustProfiles/officialSignature/A-CERT GOVERNMENT.20070507-20090507.SerNo51D.cer +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/trustProfiles/officialSignature/A-CERT GOVERNMENT.20090505-20360918.SerNoE.cer b/moaSig/handbook/conf/moa-spss/trustProfiles/officialSignature/A-CERT GOVERNMENT.20090505-20360918.SerNoE.cer Binary files differdeleted file mode 100644 index afe6fdf..0000000 --- a/moaSig/handbook/conf/moa-spss/trustProfiles/officialSignature/A-CERT GOVERNMENT.20090505-20360918.SerNoE.cer +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/trustProfiles/officialSignature/A-Trust-nQual-03-20140723-20250723.SerNo14b4f9.cer b/moaSig/handbook/conf/moa-spss/trustProfiles/officialSignature/A-Trust-nQual-03-20140723-20250723.SerNo14b4f9.cer deleted file mode 100644 index 2284687..0000000 --- a/moaSig/handbook/conf/moa-spss/trustProfiles/officialSignature/A-Trust-nQual-03-20140723-20250723.SerNo14b4f9.cer +++ /dev/null @@ -1,23 +0,0 @@ ------BEGIN CERTIFICATE----- -MIIDzzCCAregAwIBAgIDFLT5MA0GCSqGSIb3DQEBBQUAMIGNMQswCQYDVQQGEwJB -VDFIMEYGA1UECgw/QS1UcnVzdCBHZXMuIGYuIFNpY2hlcmhlaXRzc3lzdGVtZSBp -bSBlbGVrdHIuIERhdGVudmVya2VociBHbWJIMRkwFwYDVQQLDBBBLVRydXN0LW5R -dWFsLTAzMRkwFwYDVQQDDBBBLVRydXN0LW5RdWFsLTAzMB4XDTE0MDcyMzEwMzgy -OVoXDTI1MDcyMzA4MzgyOVowgY0xCzAJBgNVBAYTAkFUMUgwRgYDVQQKDD9BLVRy -dXN0IEdlcy4gZi4gU2ljaGVyaGVpdHNzeXN0ZW1lIGltIGVsZWt0ci4gRGF0ZW52 -ZXJrZWhyIEdtYkgxGTAXBgNVBAsMEEEtVHJ1c3QtblF1YWwtMDMxGTAXBgNVBAMM -EEEtVHJ1c3QtblF1YWwtMDMwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB -AQCtPWFuA/OQO8BBC4SAzewqo51ru27CQoT3URThoKgtUaNR8t4j8DRE/5TrzAUj -lUC5B3ilJfYKvUWG6Nm9wASOhURh73+nyfrBJcyFLGM/BWBzSQXgYHiVEEvc+RFZ -znF/QJuKqiTfC0Li21a8StKlDJu3Qz7dg9MmEALP6iPESU7l0+m0iKsMrmKS1GWH -2WrX9IWf5DMiJaXlyDO6w8dB3F/GaswADm0yqLaHNgBid5seHzTLkDx4iHQF63n1 -k3Flyp3HaxgtPVxO59X4PzF9j4fsCiIvI+n+u33J4PTs63zEsMMtYrWacdaxaujs -2e3Vcuy+VwHOBVWf3tFgiBCzAgMBAAGjNjA0MA8GA1UdEwEB/wQFMAMBAf8wEQYD -VR0OBAoECERqlWdVeRFPMA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQUFAAOC -AQEAEoykPeAA/6iKm6YnfxsSHFe+Dtian2yAH8L2TqMdcHeSB/7L1x73uuDeYku1 -hbKQAXnfXntf8R+VgjQBTww0aDb5164netYcFbK0g8uVWVCqOl8wf3JbAUxHS9br -cFKks+CJKPr6qQ6H+sb1o9127c9IQSZYP3S/gMAaGw0cSTlsnosE0P5Ur5vHsapm -FV3V+VOjYNs2GLSu4XQCYvSIpsfDJp8VsJ/BMYS9GqGvQ/9qGa0fwEbEMadb5mcJ -tw/EKg4gJthMgxOfO5eVuCQ3PAEWOe5lrOrTdvTIlhphUuns5hoIdlyLuNqewK3s -FJ6N46sU7LjJLqSKYEB8usoIiw== ------END CERTIFICATE----- diff --git a/moaSig/handbook/conf/moa-spss/trustProfiles/officialSignature/A-Trust-nQual-03.20050817-20150817.SerNo016c1e.cer b/moaSig/handbook/conf/moa-spss/trustProfiles/officialSignature/A-Trust-nQual-03.20050817-20150817.SerNo016c1e.cer Binary files differdeleted file mode 100644 index 33e7763..0000000 --- a/moaSig/handbook/conf/moa-spss/trustProfiles/officialSignature/A-Trust-nQual-03.20050817-20150817.SerNo016c1e.cer +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/trustProfiles/officialSignature/a-sign-Premium-Enc-01.20030123-20060123.SerNo1815.cer b/moaSig/handbook/conf/moa-spss/trustProfiles/officialSignature/a-sign-Premium-Enc-01.20030123-20060123.SerNo1815.cer Binary files differdeleted file mode 100644 index b596d82..0000000 --- a/moaSig/handbook/conf/moa-spss/trustProfiles/officialSignature/a-sign-Premium-Enc-01.20030123-20060123.SerNo1815.cer +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/trustProfiles/officialSignature/a-sign-Premium-Enc-01.20030123-20060123.SerNo210E.cer b/moaSig/handbook/conf/moa-spss/trustProfiles/officialSignature/a-sign-Premium-Enc-01.20030123-20060123.SerNo210E.cer Binary files differdeleted file mode 100644 index fe561ad..0000000 --- a/moaSig/handbook/conf/moa-spss/trustProfiles/officialSignature/a-sign-Premium-Enc-01.20030123-20060123.SerNo210E.cer +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/trustProfiles/officialSignature/a-sign-Premium-Enc-01.20041206-20081201.SerNo1C864.cer b/moaSig/handbook/conf/moa-spss/trustProfiles/officialSignature/a-sign-Premium-Enc-01.20041206-20081201.SerNo1C864.cer Binary files differdeleted file mode 100644 index 41dc7c5..0000000 --- a/moaSig/handbook/conf/moa-spss/trustProfiles/officialSignature/a-sign-Premium-Enc-01.20041206-20081201.SerNo1C864.cer +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/trustProfiles/officialSignature/a-sign-Premium-Enc-01.20041206-20081201.SerNoE287.cer b/moaSig/handbook/conf/moa-spss/trustProfiles/officialSignature/a-sign-Premium-Enc-01.20041206-20081201.SerNoE287.cer Binary files differdeleted file mode 100644 index 4adc3b7..0000000 --- a/moaSig/handbook/conf/moa-spss/trustProfiles/officialSignature/a-sign-Premium-Enc-01.20041206-20081201.SerNoE287.cer +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/trustProfiles/officialSignature/a-sign-Premium-Enc-01.20081201-20121201.SerNo4AFE4.cer b/moaSig/handbook/conf/moa-spss/trustProfiles/officialSignature/a-sign-Premium-Enc-01.20081201-20121201.SerNo4AFE4.cer Binary files differdeleted file mode 100644 index 1e4f227..0000000 --- a/moaSig/handbook/conf/moa-spss/trustProfiles/officialSignature/a-sign-Premium-Enc-01.20081201-20121201.SerNo4AFE4.cer +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/trustProfiles/officialSignature/a-sign-Premium-Enc-02.20041215-20141214.SerNo1C858.cer b/moaSig/handbook/conf/moa-spss/trustProfiles/officialSignature/a-sign-Premium-Enc-02.20041215-20141214.SerNo1C858.cer Binary files differdeleted file mode 100644 index cb519b7..0000000 --- a/moaSig/handbook/conf/moa-spss/trustProfiles/officialSignature/a-sign-Premium-Enc-02.20041215-20141214.SerNo1C858.cer +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/trustProfiles/officialSignature/a-sign-Premium-Enc-02.20041215-20141214.SerNoE4A2.cer b/moaSig/handbook/conf/moa-spss/trustProfiles/officialSignature/a-sign-Premium-Enc-02.20041215-20141214.SerNoE4A2.cer Binary files differdeleted file mode 100644 index bc5ed1e..0000000 --- a/moaSig/handbook/conf/moa-spss/trustProfiles/officialSignature/a-sign-Premium-Enc-02.20041215-20141214.SerNoE4A2.cer +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/trustProfiles/officialSignature/a-sign-Premium-Enc-04.20130708-20230701.SerNo‎f28c4.cer b/moaSig/handbook/conf/moa-spss/trustProfiles/officialSignature/a-sign-Premium-Enc-04.20130708-20230701.SerNo‎f28c4.cer Binary files differdeleted file mode 100644 index a95605e..0000000 --- a/moaSig/handbook/conf/moa-spss/trustProfiles/officialSignature/a-sign-Premium-Enc-04.20130708-20230701.SerNo‎f28c4.cer +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/trustProfiles/officialSignature/a-sign-Premium-Enc-05.20130923-20230920.SerNoFCDEE.cer b/moaSig/handbook/conf/moa-spss/trustProfiles/officialSignature/a-sign-Premium-Enc-05.20130923-20230920.SerNoFCDEE.cer Binary files differdeleted file mode 100644 index d17d076..0000000 --- a/moaSig/handbook/conf/moa-spss/trustProfiles/officialSignature/a-sign-Premium-Enc-05.20130923-20230920.SerNoFCDEE.cer +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/trustProfiles/officialSignature/a-sign-Premium-Sig-01.20030123-20060123.SerNo1814.cer b/moaSig/handbook/conf/moa-spss/trustProfiles/officialSignature/a-sign-Premium-Sig-01.20030123-20060123.SerNo1814.cer Binary files differdeleted file mode 100644 index 7085c5a..0000000 --- a/moaSig/handbook/conf/moa-spss/trustProfiles/officialSignature/a-sign-Premium-Sig-01.20030123-20060123.SerNo1814.cer +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/trustProfiles/officialSignature/a-sign-Premium-Sig-01.20030123-20060123.SerNo2115.cer b/moaSig/handbook/conf/moa-spss/trustProfiles/officialSignature/a-sign-Premium-Sig-01.20030123-20060123.SerNo2115.cer Binary files differdeleted file mode 100644 index d53dce9..0000000 --- a/moaSig/handbook/conf/moa-spss/trustProfiles/officialSignature/a-sign-Premium-Sig-01.20030123-20060123.SerNo2115.cer +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/trustProfiles/officialSignature/a-sign-Premium-Sig-01.20041206-20081201.SerNo1C856.cer b/moaSig/handbook/conf/moa-spss/trustProfiles/officialSignature/a-sign-Premium-Sig-01.20041206-20081201.SerNo1C856.cer Binary files differdeleted file mode 100644 index ad5d7de..0000000 --- a/moaSig/handbook/conf/moa-spss/trustProfiles/officialSignature/a-sign-Premium-Sig-01.20041206-20081201.SerNo1C856.cer +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/trustProfiles/officialSignature/a-sign-Premium-Sig-01.20041206-20081201.SerNoE28E.cer b/moaSig/handbook/conf/moa-spss/trustProfiles/officialSignature/a-sign-Premium-Sig-01.20041206-20081201.SerNoE28E.cer Binary files differdeleted file mode 100644 index 5375c57..0000000 --- a/moaSig/handbook/conf/moa-spss/trustProfiles/officialSignature/a-sign-Premium-Sig-01.20041206-20081201.SerNoE28E.cer +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/trustProfiles/officialSignature/a-sign-Premium-Sig-01.20081201-20121201.SerNo4AFDC.cer b/moaSig/handbook/conf/moa-spss/trustProfiles/officialSignature/a-sign-Premium-Sig-01.20081201-20121201.SerNo4AFDC.cer Binary files differdeleted file mode 100644 index 97dc187..0000000 --- a/moaSig/handbook/conf/moa-spss/trustProfiles/officialSignature/a-sign-Premium-Sig-01.20081201-20121201.SerNo4AFDC.cer +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/trustProfiles/officialSignature/a-sign-Premium-Sig-02.20041215-20141214.SerNo1C859.cer b/moaSig/handbook/conf/moa-spss/trustProfiles/officialSignature/a-sign-Premium-Sig-02.20041215-20141214.SerNo1C859.cer Binary files differdeleted file mode 100644 index 783dd27..0000000 --- a/moaSig/handbook/conf/moa-spss/trustProfiles/officialSignature/a-sign-Premium-Sig-02.20041215-20141214.SerNo1C859.cer +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/trustProfiles/officialSignature/a-sign-Premium-Sig-02.20041215-20141214.SerNoE4A3.cer b/moaSig/handbook/conf/moa-spss/trustProfiles/officialSignature/a-sign-Premium-Sig-02.20041215-20141214.SerNoE4A3.cer Binary files differdeleted file mode 100644 index cc35ba6..0000000 --- a/moaSig/handbook/conf/moa-spss/trustProfiles/officialSignature/a-sign-Premium-Sig-02.20041215-20141214.SerNoE4A3.cer +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/trustProfiles/officialSignature/a-sign-Premium-Sig-03.20080429-20180429.SerNo3E9AB.cer b/moaSig/handbook/conf/moa-spss/trustProfiles/officialSignature/a-sign-Premium-Sig-03.20080429-20180429.SerNo3E9AB.cer Binary files differdeleted file mode 100644 index ea1585a..0000000 --- a/moaSig/handbook/conf/moa-spss/trustProfiles/officialSignature/a-sign-Premium-Sig-03.20080429-20180429.SerNo3E9AB.cer +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/trustProfiles/officialSignature/a-sign-Premium-Sig-03.20080429-20180429.SerNo41D15.cer b/moaSig/handbook/conf/moa-spss/trustProfiles/officialSignature/a-sign-Premium-Sig-03.20080429-20180429.SerNo41D15.cer Binary files differdeleted file mode 100644 index b9fe128..0000000 --- a/moaSig/handbook/conf/moa-spss/trustProfiles/officialSignature/a-sign-Premium-Sig-03.20080429-20180429.SerNo41D15.cer +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/trustProfiles/officialSignature/a-sign-Premium-Sig-04.20130702-20230701.SerNof1d50.cer b/moaSig/handbook/conf/moa-spss/trustProfiles/officialSignature/a-sign-Premium-Sig-04.20130702-20230701.SerNof1d50.cer Binary files differdeleted file mode 100644 index 3250c6a..0000000 --- a/moaSig/handbook/conf/moa-spss/trustProfiles/officialSignature/a-sign-Premium-Sig-04.20130702-20230701.SerNof1d50.cer +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/trustProfiles/officialSignature/a-sign-Premium-Sig-04.20130705-20230701.SerNo‎f24d6.cer b/moaSig/handbook/conf/moa-spss/trustProfiles/officialSignature/a-sign-Premium-Sig-04.20130705-20230701.SerNo‎f24d6.cer Binary files differdeleted file mode 100644 index 3848a2b..0000000 --- a/moaSig/handbook/conf/moa-spss/trustProfiles/officialSignature/a-sign-Premium-Sig-04.20130705-20230701.SerNo‎f24d6.cer +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/trustProfiles/officialSignature/a-sign-Premium-Sig-05.20130923-20230920.SerNoFCDB8.cer b/moaSig/handbook/conf/moa-spss/trustProfiles/officialSignature/a-sign-Premium-Sig-05.20130923-20230920.SerNoFCDB8.cer Binary files differdeleted file mode 100644 index a6a9acd..0000000 --- a/moaSig/handbook/conf/moa-spss/trustProfiles/officialSignature/a-sign-Premium-Sig-05.20130923-20230920.SerNoFCDB8.cer +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/trustProfiles/officialSignature/a-sign-Premium-enc-02.20140701-20240701.SerNo144dfd.cer b/moaSig/handbook/conf/moa-spss/trustProfiles/officialSignature/a-sign-Premium-enc-02.20140701-20240701.SerNo144dfd.cer Binary files differdeleted file mode 100644 index 6c0c042..0000000 --- a/moaSig/handbook/conf/moa-spss/trustProfiles/officialSignature/a-sign-Premium-enc-02.20140701-20240701.SerNo144dfd.cer +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/trustProfiles/officialSignature/a-sign-corporate-03.20051114-20151114.SerNo1AAEC.cer b/moaSig/handbook/conf/moa-spss/trustProfiles/officialSignature/a-sign-corporate-03.20051114-20151114.SerNo1AAEC.cer Binary files differdeleted file mode 100644 index b15880c..0000000 --- a/moaSig/handbook/conf/moa-spss/trustProfiles/officialSignature/a-sign-corporate-03.20051114-20151114.SerNo1AAEC.cer +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/trustProfiles/officialSignature/a-sign-corporate-04.2010821-20230821.SerNo.‎f76bd.cer b/moaSig/handbook/conf/moa-spss/trustProfiles/officialSignature/a-sign-corporate-04.2010821-20230821.SerNo.‎f76bd.cer Binary files differdeleted file mode 100644 index a365a46..0000000 --- a/moaSig/handbook/conf/moa-spss/trustProfiles/officialSignature/a-sign-corporate-04.2010821-20230821.SerNo.‎f76bd.cer +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/trustProfiles/officialSignature/a-sign-corporate-05.20130923-20230920.SerNoFCE21.cer b/moaSig/handbook/conf/moa-spss/trustProfiles/officialSignature/a-sign-corporate-05.20130923-20230920.SerNoFCE21.cer Binary files differdeleted file mode 100644 index 9a777fd..0000000 --- a/moaSig/handbook/conf/moa-spss/trustProfiles/officialSignature/a-sign-corporate-05.20130923-20230920.SerNoFCE21.cer +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/trustProfiles/officialSignature/a-sign-corporate-light-01.20021120-20051120.SerNo1390.cer b/moaSig/handbook/conf/moa-spss/trustProfiles/officialSignature/a-sign-corporate-light-01.20021120-20051120.SerNo1390.cer Binary files differdeleted file mode 100644 index 6f97837..0000000 --- a/moaSig/handbook/conf/moa-spss/trustProfiles/officialSignature/a-sign-corporate-light-01.20021120-20051120.SerNo1390.cer +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/trustProfiles/officialSignature/a-sign-corporate-light-01.20021120-20051120.SerNo2111.cer b/moaSig/handbook/conf/moa-spss/trustProfiles/officialSignature/a-sign-corporate-light-01.20021120-20051120.SerNo2111.cer Binary files differdeleted file mode 100644 index d779911..0000000 --- a/moaSig/handbook/conf/moa-spss/trustProfiles/officialSignature/a-sign-corporate-light-01.20021120-20051120.SerNo2111.cer +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/trustProfiles/officialSignature/a-sign-corporate-light-01.20041201-20081201.SerNoE244.cer b/moaSig/handbook/conf/moa-spss/trustProfiles/officialSignature/a-sign-corporate-light-01.20041201-20081201.SerNoE244.cer Binary files differdeleted file mode 100644 index 508f7f0..0000000 --- a/moaSig/handbook/conf/moa-spss/trustProfiles/officialSignature/a-sign-corporate-light-01.20041201-20081201.SerNoE244.cer +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/trustProfiles/officialSignature/a-sign-corporate-light-01.20081201-20121201.SerNo4AFF1.cer b/moaSig/handbook/conf/moa-spss/trustProfiles/officialSignature/a-sign-corporate-light-01.20081201-20121201.SerNo4AFF1.cer Binary files differdeleted file mode 100644 index c0feb0d..0000000 --- a/moaSig/handbook/conf/moa-spss/trustProfiles/officialSignature/a-sign-corporate-light-01.20081201-20121201.SerNo4AFF1.cer +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/trustProfiles/officialSignature/a-sign-corporate-light-02.20041215-20141214.SerNoE4A8.cer b/moaSig/handbook/conf/moa-spss/trustProfiles/officialSignature/a-sign-corporate-light-02.20041215-20141214.SerNoE4A8.cer Binary files differdeleted file mode 100644 index 61a7ccb..0000000 --- a/moaSig/handbook/conf/moa-spss/trustProfiles/officialSignature/a-sign-corporate-light-02.20041215-20141214.SerNoE4A8.cer +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/trustProfiles/officialSignature/a-sign-corporate-light-02.20140905-20240905.SrN153B49.crt b/moaSig/handbook/conf/moa-spss/trustProfiles/officialSignature/a-sign-corporate-light-02.20140905-20240905.SrN153B49.crt Binary files differdeleted file mode 100644 index e4bd48d..0000000 --- a/moaSig/handbook/conf/moa-spss/trustProfiles/officialSignature/a-sign-corporate-light-02.20140905-20240905.SrN153B49.crt +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/trustProfiles/officialSignature/a-sign-corporate-light-03.20051114-20151114.SerNo1AAED.cer b/moaSig/handbook/conf/moa-spss/trustProfiles/officialSignature/a-sign-corporate-light-03.20051114-20151114.SerNo1AAED.cer Binary files differdeleted file mode 100644 index 5171276..0000000 --- a/moaSig/handbook/conf/moa-spss/trustProfiles/officialSignature/a-sign-corporate-light-03.20051114-20151114.SerNo1AAED.cer +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/trustProfiles/officialSignature/a-sign-corporate-medium-01.20030327-20060327.SerNo1C1C.cer b/moaSig/handbook/conf/moa-spss/trustProfiles/officialSignature/a-sign-corporate-medium-01.20030327-20060327.SerNo1C1C.cer Binary files differdeleted file mode 100644 index e47d2b8..0000000 --- a/moaSig/handbook/conf/moa-spss/trustProfiles/officialSignature/a-sign-corporate-medium-01.20030327-20060327.SerNo1C1C.cer +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/trustProfiles/officialSignature/a-sign-corporate-medium-01.20041206-20081201.SerNo1C867.cer b/moaSig/handbook/conf/moa-spss/trustProfiles/officialSignature/a-sign-corporate-medium-01.20041206-20081201.SerNo1C867.cer Binary files differdeleted file mode 100644 index 08d7b28..0000000 --- a/moaSig/handbook/conf/moa-spss/trustProfiles/officialSignature/a-sign-corporate-medium-01.20041206-20081201.SerNo1C867.cer +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/trustProfiles/officialSignature/a-sign-corporate-medium-01.20041206-20081201.SerNoE28A.cer b/moaSig/handbook/conf/moa-spss/trustProfiles/officialSignature/a-sign-corporate-medium-01.20041206-20081201.SerNoE28A.cer Binary files differdeleted file mode 100644 index c5bcc42..0000000 --- a/moaSig/handbook/conf/moa-spss/trustProfiles/officialSignature/a-sign-corporate-medium-01.20041206-20081201.SerNoE28A.cer +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/trustProfiles/officialSignature/a-sign-corporate-medium-01.20081201-20121201.SerNo4AFF3.cer b/moaSig/handbook/conf/moa-spss/trustProfiles/officialSignature/a-sign-corporate-medium-01.20081201-20121201.SerNo4AFF3.cer Binary files differdeleted file mode 100644 index 5168e1a..0000000 --- a/moaSig/handbook/conf/moa-spss/trustProfiles/officialSignature/a-sign-corporate-medium-01.20081201-20121201.SerNo4AFF3.cer +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/trustProfiles/officialSignature/a-sign-corporate-medium-02.20041215-20141214.SerNo1C85C.cer b/moaSig/handbook/conf/moa-spss/trustProfiles/officialSignature/a-sign-corporate-medium-02.20041215-20141214.SerNo1C85C.cer Binary files differdeleted file mode 100644 index 39e377e..0000000 --- a/moaSig/handbook/conf/moa-spss/trustProfiles/officialSignature/a-sign-corporate-medium-02.20041215-20141214.SerNo1C85C.cer +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/trustProfiles/officialSignature/a-sign-corporate-medium-02.20041215-20141214.SerNoE4A9.cer b/moaSig/handbook/conf/moa-spss/trustProfiles/officialSignature/a-sign-corporate-medium-02.20041215-20141214.SerNoE4A9.cer Binary files differdeleted file mode 100644 index 0a1fcff..0000000 --- a/moaSig/handbook/conf/moa-spss/trustProfiles/officialSignature/a-sign-corporate-medium-02.20041215-20141214.SerNoE4A9.cer +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/trustProfiles/officialSignature/a-sign-corporate-strong-01.20030327-20060327.SerNo1C1D.cer b/moaSig/handbook/conf/moa-spss/trustProfiles/officialSignature/a-sign-corporate-strong-01.20030327-20060327.SerNo1C1D.cer Binary files differdeleted file mode 100644 index b5f5fa6..0000000 --- a/moaSig/handbook/conf/moa-spss/trustProfiles/officialSignature/a-sign-corporate-strong-01.20030327-20060327.SerNo1C1D.cer +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/trustProfiles/officialSignature/a-sign-corporate-strong-01.20041206-20081201.SerNo1C868.cer b/moaSig/handbook/conf/moa-spss/trustProfiles/officialSignature/a-sign-corporate-strong-01.20041206-20081201.SerNo1C868.cer Binary files differdeleted file mode 100644 index abeb964..0000000 --- a/moaSig/handbook/conf/moa-spss/trustProfiles/officialSignature/a-sign-corporate-strong-01.20041206-20081201.SerNo1C868.cer +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/trustProfiles/officialSignature/a-sign-corporate-strong-01.20041206-20081201.SerNoE28B.cer b/moaSig/handbook/conf/moa-spss/trustProfiles/officialSignature/a-sign-corporate-strong-01.20041206-20081201.SerNoE28B.cer Binary files differdeleted file mode 100644 index 91acd39..0000000 --- a/moaSig/handbook/conf/moa-spss/trustProfiles/officialSignature/a-sign-corporate-strong-01.20041206-20081201.SerNoE28B.cer +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/trustProfiles/officialSignature/a-sign-corporate-strong-01.20081201-20131201.SerNo4C3C6.cer b/moaSig/handbook/conf/moa-spss/trustProfiles/officialSignature/a-sign-corporate-strong-01.20081201-20131201.SerNo4C3C6.cer Binary files differdeleted file mode 100644 index 87d8b52..0000000 --- a/moaSig/handbook/conf/moa-spss/trustProfiles/officialSignature/a-sign-corporate-strong-01.20081201-20131201.SerNo4C3C6.cer +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/trustProfiles/officialSignature/a-sign-corporate-strong-02.20041215-20141214.SerNo1C85D.cer b/moaSig/handbook/conf/moa-spss/trustProfiles/officialSignature/a-sign-corporate-strong-02.20041215-20141214.SerNo1C85D.cer Binary files differdeleted file mode 100644 index f28aa4b..0000000 --- a/moaSig/handbook/conf/moa-spss/trustProfiles/officialSignature/a-sign-corporate-strong-02.20041215-20141214.SerNo1C85D.cer +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/trustProfiles/officialSignature/a-sign-corporate-strong-02.20041215-20141214.SerNoE4AA.cer b/moaSig/handbook/conf/moa-spss/trustProfiles/officialSignature/a-sign-corporate-strong-02.20041215-20141214.SerNoE4AA.cer Binary files differdeleted file mode 100644 index 8827539..0000000 --- a/moaSig/handbook/conf/moa-spss/trustProfiles/officialSignature/a-sign-corporate-strong-02.20041215-20141214.SerNoE4AA.cer +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/trustProfiles/officialSignature/a-sign-premium-sig-02.20140701-20240701.SerNo144e10.cer b/moaSig/handbook/conf/moa-spss/trustProfiles/officialSignature/a-sign-premium-sig-02.20140701-20240701.SerNo144e10.cer Binary files differdeleted file mode 100644 index 74c4ce3..0000000 --- a/moaSig/handbook/conf/moa-spss/trustProfiles/officialSignature/a-sign-premium-sig-02.20140701-20240701.SerNo144e10.cer +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/trustProfiles/officialSignature/a-sign-premium-sig-03.20140701-20240701.SerNo144e13.cer b/moaSig/handbook/conf/moa-spss/trustProfiles/officialSignature/a-sign-premium-sig-03.20140701-20240701.SerNo144e13.cer Binary files differdeleted file mode 100644 index 6c50ec0..0000000 --- a/moaSig/handbook/conf/moa-spss/trustProfiles/officialSignature/a-sign-premium-sig-03.20140701-20240701.SerNo144e13.cer +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/trustProfiles/secureSignature+Test/A-Trust-Qual-01-20140701-20240701.SerNo144ddd(SecureSignatureKeypair).cer b/moaSig/handbook/conf/moa-spss/trustProfiles/secureSignature+Test/A-Trust-Qual-01-20140701-20240701.SerNo144ddd(SecureSignatureKeypair).cer deleted file mode 100644 index eb051dc..0000000 --- a/moaSig/handbook/conf/moa-spss/trustProfiles/secureSignature+Test/A-Trust-Qual-01-20140701-20240701.SerNo144ddd(SecureSignatureKeypair).cer +++ /dev/null @@ -1,26 +0,0 @@ ------BEGIN CERTIFICATE----- -MIIEUzCCAzugAwIBAgIDFE3dMA0GCSqGSIb3DQEBBQUAMIHPMQswCQYDVQQGEwJB -VDGBizCBiAYDVQQKHoGAAEEALQBUAHIAdQBzAHQAIABHAGUAcwAuACAAZgD8AHIA -IABTAGkAYwBoAGUAcgBoAGUAaQB0AHMAcwB5AHMAdABlAG0AZQAgAGkAbQAgAGUA -bABlAGsAdAByAC4AIABEAGEAdABlAG4AdgBlAHIAawBlAGgAcgAgAEcAbQBiAEgx -GDAWBgNVBAsTD0EtVHJ1c3QtUXVhbC0wMTEYMBYGA1UEAxMPQS1UcnVzdC1RdWFs -LTAxMB4XDTE0MDcwMTExMjExNVoXDTI0MDcwMTA5MjExNVowgc8xCzAJBgNVBAYT -AkFUMYGLMIGIBgNVBAoegYAAQQAtAFQAcgB1AHMAdAAgAEcAZQBzAC4AIABmAPwA -cgAgAFMAaQBjAGgAZQByAGgAZQBpAHQAcwBzAHkAcwB0AGUAbQBlACAAaQBtACAA -ZQBsAGUAawB0AHIALgAgAEQAYQB0AGUAbgB2AGUAcgBrAGUAaAByACAARwBtAGIA -SDEYMBYGA1UECxMPQS1UcnVzdC1RdWFsLTAxMRgwFgYDVQQDEw9BLVRydXN0LVF1 -YWwtMDEwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCmhgdxIbxTGEOH -fXGiewI3NFldAWKFWfLofO+5I1UbvA5avt7IgsGXz/tI/f5HGUbascI0i7xG0tqV -lA5ctQgLRqxgxHtgTkMcqsAEYdsz3LZsCdXO1QrvEBGLTSABdxiL/gSWJ6z77CSw -x7Xg02HwxPV82cjGkSF3ENGJntuIAAnRDWn/ORHjFatNRymoMbHaOEZXSGhf7Y5F -rrHEqGyi9E6sv784De/T1aTvskn8cWeUmDzv//omiG/a/V9KQex/61XN8OthUQVn -X+u/liL2NKx74I2C/GgHX5B0WkPNqsSOgmlvJ/cKuT0PveUgVFDAA0oYBgcE1KDM -lBbN0kmPAgMBAAGjNjA0MA8GA1UdEwEB/wQFMAMBAf8wEQYDVR0OBAoECEs8jB2F -6W+tMA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQUFAAOCAQEAQIN9LZbMivO9 -kWLDlDI9cTEIPpRXmgNdaBQRUpZc2ML0vDW6OVI90r8GxFQTE/I7HjrvuqQDTEL1 -qd8tthiazsLYI5eDX1CtJEFFtg25Y9t3tK2HsShb8sCj798hoXsOMFR9qhp5Fjb8 -TX4CVuQ3sK1TKeNlDmpAx6SqkYYT0CCMccsxt2j89ED8Z+B/yW19OZQk3BFDigYL -46YsLKAC96ItFpUOs8ZbAUfUlpVA6G+09EMcDxOcuD/ebLx6I/ynwYAtqYXaizsY -KTE35A3M2ghfGFJ+DlQoh3Bn/RG01LKXXgaVTHHMvvpxBp55wz2SocD/PpFe+D6Q -C016YgTrrQ== ------END CERTIFICATE----- diff --git a/moaSig/handbook/conf/moa-spss/trustProfiles/secureSignature+Test/A-Trust-Qual-01.20041201-20141201.SerNoE243.cer b/moaSig/handbook/conf/moa-spss/trustProfiles/secureSignature+Test/A-Trust-Qual-01.20041201-20141201.SerNoE243.cer Binary files differdeleted file mode 100644 index f9fef65..0000000 --- a/moaSig/handbook/conf/moa-spss/trustProfiles/secureSignature+Test/A-Trust-Qual-01.20041201-20141201.SerNoE243.cer +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/trustProfiles/secureSignature+Test/A-Trust-Qual-01b.20041201-20141201.SerNo01C854.cer b/moaSig/handbook/conf/moa-spss/trustProfiles/secureSignature+Test/A-Trust-Qual-01b.20041201-20141201.SerNo01C854.cer Binary files differdeleted file mode 100644 index 3c7775b..0000000 --- a/moaSig/handbook/conf/moa-spss/trustProfiles/secureSignature+Test/A-Trust-Qual-01b.20041201-20141201.SerNo01C854.cer +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/trustProfiles/secureSignature+Test/A-Trust-Qual-02-20140701-20240701.SerNo144de4(SecureSignatureKeypair).cer b/moaSig/handbook/conf/moa-spss/trustProfiles/secureSignature+Test/A-Trust-Qual-02-20140701-20240701.SerNo144de4(SecureSignatureKeypair).cer deleted file mode 100644 index be29fb6..0000000 --- a/moaSig/handbook/conf/moa-spss/trustProfiles/secureSignature+Test/A-Trust-Qual-02-20140701-20240701.SerNo144de4(SecureSignatureKeypair).cer +++ /dev/null @@ -1,23 +0,0 @@ ------BEGIN CERTIFICATE----- -MIIDyzCCArOgAwIBAgIDFE3kMA0GCSqGSIb3DQEBBQUAMIGLMQswCQYDVQQGEwJB -VDFIMEYGA1UECgw/QS1UcnVzdCBHZXMuIGYuIFNpY2hlcmhlaXRzc3lzdGVtZSBp -bSBlbGVrdHIuIERhdGVudmVya2VociBHbWJIMRgwFgYDVQQLDA9BLVRydXN0LVF1 -YWwtMDIxGDAWBgNVBAMMD0EtVHJ1c3QtUXVhbC0wMjAeFw0xNDA3MDExMTIzMzNa -Fw0yNDA3MDEwOTIzMzNaMIGLMQswCQYDVQQGEwJBVDFIMEYGA1UECgw/QS1UcnVz -dCBHZXMuIGYuIFNpY2hlcmhlaXRzc3lzdGVtZSBpbSBlbGVrdHIuIERhdGVudmVy -a2VociBHbWJIMRgwFgYDVQQLDA9BLVRydXN0LVF1YWwtMDIxGDAWBgNVBAMMD0Et -VHJ1c3QtUXVhbC0wMjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAJaR -q9eOsFm4Ab20Hq2Z/aH86gyWa48uSUjY6eQkguHYuszr3gdcSMYZggFHQgnhfLmf -ro/27l5rqKhWiDhWs+b+yZ1PNDhRPJy+86ycHMg9XJqErveULBSyZDdgjhSwOyrN -ibUir/fkf+4sKzP5jjytTKJXD/uCxY4fAd9TjMEVpN3umpIS0ijpYhclYDHvzzGU -833z5Dwhq5D8bc9jp8YSAHFJ1xzIoO1jmn3jjyjdYPnY5harJtHQL73nDQnfbtTs -5ThT9GQLulrMgLU4WeyAWWWEMWpfVZFMJOUkmoOEer6A8e5fIAeqdxdsC+JVqpZ4 -CAKel/Arrlj1gFA//jsCAwEAAaM2MDQwDwYDVR0TAQH/BAUwAwEB/zARBgNVHQ4E -CgQIQj0rJKbBRc4wDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3DQEBBQUAA4IBAQBh -MfOINQm4XpzF6DmkOmb/ArSXHf5LObqFmIMooNr2TkyzrUTK/NE+mdrm15Rfdts7 -kZVq/ICfQSFeaPvWaAVq4plH/26OjvMTVv7DfgfPBUxDWqlCuDnDnPAVQ+yo/o5i -BA5uUlMbp5znbDtlxwF/5gWqcn/hKxSUCP1uiOPIlKfeVvsRmBcJAdoixTM/Ic10 -pavJMGOI20onArvQZAUEbXQLA8cs8naxfF6Bo36U9nk6wn7q8VPXhViekByd17F6 -9A+ah0Iqw4SPf9BqNRIe1YxxjDhCmjWt3aoyE3ZFBuGjW+r2ipb/vGU1+2oyy2Fd -2dMmiMQ7gGhWX9X6gWLd ------END CERTIFICATE----- diff --git a/moaSig/handbook/conf/moa-spss/trustProfiles/secureSignature+Test/A-Trust-Qual-02.20041203-20141203.SerNoE248.cer b/moaSig/handbook/conf/moa-spss/trustProfiles/secureSignature+Test/A-Trust-Qual-02.20041203-20141203.SerNoE248.cer Binary files differdeleted file mode 100644 index 36a442b..0000000 --- a/moaSig/handbook/conf/moa-spss/trustProfiles/secureSignature+Test/A-Trust-Qual-02.20041203-20141203.SerNoE248.cer +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/trustProfiles/secureSignature+Test/A-Trust-Qual-02b.20041203-20141203.SerNo01C857.cer b/moaSig/handbook/conf/moa-spss/trustProfiles/secureSignature+Test/A-Trust-Qual-02b.20041203-20141203.SerNo01C857.cer Binary files differdeleted file mode 100644 index 54f8099..0000000 --- a/moaSig/handbook/conf/moa-spss/trustProfiles/secureSignature+Test/A-Trust-Qual-02b.20041203-20141203.SerNo01C857.cer +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/trustProfiles/secureSignature+Test/A-Trust-Qual-03-20140701-20240701.SerNo144df5(SecureSignatureKeypair).cer b/moaSig/handbook/conf/moa-spss/trustProfiles/secureSignature+Test/A-Trust-Qual-03-20140701-20240701.SerNo144df5(SecureSignatureKeypair).cer deleted file mode 100644 index e1100c7..0000000 --- a/moaSig/handbook/conf/moa-spss/trustProfiles/secureSignature+Test/A-Trust-Qual-03-20140701-20240701.SerNo144df5(SecureSignatureKeypair).cer +++ /dev/null @@ -1,23 +0,0 @@ ------BEGIN CERTIFICATE----- -MIIDyzCCArOgAwIBAgIDFE31MA0GCSqGSIb3DQEBBQUAMIGLMQswCQYDVQQGEwJB -VDFIMEYGA1UECgw/QS1UcnVzdCBHZXMuIGYuIFNpY2hlcmhlaXRzc3lzdGVtZSBp -bSBlbGVrdHIuIERhdGVudmVya2VociBHbWJIMRgwFgYDVQQLDA9BLVRydXN0LVF1 -YWwtMDMxGDAWBgNVBAMMD0EtVHJ1c3QtUXVhbC0wMzAeFw0xNDA3MDExMTMwNTZa -Fw0yNDA3MDEwOTMwNTZaMIGLMQswCQYDVQQGEwJBVDFIMEYGA1UECgw/QS1UcnVz -dCBHZXMuIGYuIFNpY2hlcmhlaXRzc3lzdGVtZSBpbSBlbGVrdHIuIERhdGVudmVy -a2VociBHbWJIMRgwFgYDVQQLDA9BLVRydXN0LVF1YWwtMDMxGDAWBgNVBAMMD0Et -VHJ1c3QtUXVhbC0wMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALOe -JIgc0s9AA0hqqqWgK72W9XwKn5+rUJDbQc5WgHkqwP2TU3qcW/NZYSSIY6PVGO6b -hHSEnOyMPdrBhnpvNi4m6349yT6t565LdHcoKyQg/youwpVkEPZ+e8O32hF9nqvt -L4wZohydjMwzcHUJB/5e+0CkJYwv/bVRZzqoK0yf1midYJukxWOw7nDNKD9KdOpZ -+XXFAAZuH7BjwSqqE138y9JlGzkxIlrCeSJdGfFLwr7OHIgBdPEmQXcyOcaMUGjP -U4VDig+gj+6OC5KjAEC+wKJZXiyhRLj+HyLTDLrQ6O8p5HI3Sov4FuwiMgcqIyzz -o9fNyqmnT3K/vBGOqBsCAwEAAaM2MDQwDwYDVR0TAQH/BAUwAwEB/zARBgNVHQ4E -CgQIRgbfN/LCNxAwDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3DQEBBQUAA4IBAQBy -jA/CmId9oz8sy4rwEklti+8TLS/aLHkiMqUmKjuHyT/6mz4Qh4fLfAAEv8iGSZiW -+7+Gv7HTcuEEdyNNhUmMGJLSQA/3KBjlttHXLiG943wnvcZf3LtkFc+8Ia5N3bNS -BM6q7/OFKHSS+iHcAJ8XS6SnLITYRyfo0thsXBaHpkTUkEP0uJY+yoE/EcBkvsGX -drLIawu8YOrNZvs3S6Ag0ex5brIdqiNtlUGwRxpLwssfBho5K0NqpXAloHT9kHBd -rGb2GrVdLIesuVivSP9zq09M8bcm3jDPCHv5bcudPZVX7rkr79VphgLfKlINA4Fw -VxCuPLXx/4sCfANQtvuY ------END CERTIFICATE----- diff --git a/moaSig/handbook/conf/moa-spss/trustProfiles/secureSignature+Test/A-Trust-Qual-03.20080425-20180425.SerNoe694(SecureSignatureKeypair).cer b/moaSig/handbook/conf/moa-spss/trustProfiles/secureSignature+Test/A-Trust-Qual-03.20080425-20180425.SerNoe694(SecureSignatureKeypair).cer Binary files differdeleted file mode 100644 index ab9e0cd..0000000 --- a/moaSig/handbook/conf/moa-spss/trustProfiles/secureSignature+Test/A-Trust-Qual-03.20080425-20180425.SerNoe694(SecureSignatureKeypair).cer +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/trustProfiles/secureSignature+Test/A-Trust-Qual-03b.20080424-20180424.SerNo041D14.cer b/moaSig/handbook/conf/moa-spss/trustProfiles/secureSignature+Test/A-Trust-Qual-03b.20080424-20180424.SerNo041D14.cer Binary files differdeleted file mode 100644 index 0196576..0000000 --- a/moaSig/handbook/conf/moa-spss/trustProfiles/secureSignature+Test/A-Trust-Qual-03b.20080424-20180424.SerNo041D14.cer +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/trustProfiles/secureSignature+Test/A-Trust-Root-05.20130923-20230920.SerNoFCDB4.cer b/moaSig/handbook/conf/moa-spss/trustProfiles/secureSignature+Test/A-Trust-Root-05.20130923-20230920.SerNoFCDB4.cer Binary files differdeleted file mode 100644 index b9a0e5a..0000000 --- a/moaSig/handbook/conf/moa-spss/trustProfiles/secureSignature+Test/A-Trust-Root-05.20130923-20230920.SerNoFCDB4.cer +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/trustProfiles/secureSignature+Test/A-Trust-Test-Root-05-20141215-20241209.SerNo165fae.crt b/moaSig/handbook/conf/moa-spss/trustProfiles/secureSignature+Test/A-Trust-Test-Root-05-20141215-20241209.SerNo165fae.crt deleted file mode 100644 index 9befb53..0000000 --- a/moaSig/handbook/conf/moa-spss/trustProfiles/secureSignature+Test/A-Trust-Test-Root-05-20141215-20241209.SerNo165fae.crt +++ /dev/null @@ -1,34 +0,0 @@ ------BEGIN CERTIFICATE----- -MIIF3TCCA8WgAwIBAgIDFl+uMA0GCSqGSIb3DQEBCwUAMIGVMQswCQYDVQQGEwJB -VDFIMEYGA1UECgw/QS1UcnVzdCBHZXMuIGYuIFNpY2hlcmhlaXRzc3lzdGVtZSBp -bSBlbGVrdHIuIERhdGVudmVya2VociBHbWJIMR0wGwYDVQQLDBRBLVRydXN0LVRl -c3QtUm9vdC0wNTEdMBsGA1UEAwwUQS1UcnVzdC1UZXN0LVJvb3QtMDUwHhcNMTQx -MjE1MTMwMDQ1WhcNMjQxMjA5MTIwMDQ1WjCBlTELMAkGA1UEBhMCQVQxSDBGBgNV -BAoMP0EtVHJ1c3QgR2VzLiBmLiBTaWNoZXJoZWl0c3N5c3RlbWUgaW0gZWxla3Ry -LiBEYXRlbnZlcmtlaHIgR21iSDEdMBsGA1UECwwUQS1UcnVzdC1UZXN0LVJvb3Qt -MDUxHTAbBgNVBAMMFEEtVHJ1c3QtVGVzdC1Sb290LTA1MIICIDANBgkqhkiG9w0B -AQEFAAOCAg0AMIICCAKCAgEApv3ETyDuseYGvBXgJSiAe7q2dvKtcxlHGlEdEWKv -YUODdXiTIIcwuIU0+F8ybvoQdEVPGDsdzShhXKgMfdGY5WF1BslCgjwcr4h6GWgt -cSkXXFIYVV5GCrac4DhM60EvtXpadi8dNMu7dUKZjqES9UPC6Gc5H6fadauLaV6b -DbNrJufXUditjEbhqj5uX3u4/+nFRH8g1DiQm5RCC3ttVe0/7buJipErVQ9Sbhzk -hkFlzLbph2s2hiEP8NB5tXM3ffxmJ2Yv98+U1Ec0iXvsoGhqRyZVn1huTi+9PJnP -IyPfXDkqWv49E/WeZsaZ48kdVx9xIC6OVYF0GCDsKjsKWN+4xL6/eYvSnyIBij/A -e1T3wkLhp+bDyqxnvDatMlWchfbZxicvzr83c8SGt81RBekwbG/HGPRE4x5DnTkQ -67DTMzMSmW+FAJdZG2Ofsg9+D+v+iqRD310maLABtko3e+xm601FS8d0lDFJVGgG -36IB+ZrUIXmLfOIQjlF/yx566oUmSif3QRgmnSuNtunffXHBbL0qFAiEDwwHg41t -zBiSswKRWa5J/BMIung+6T8gw5kY3c3yJ+pUip4J2oeVa9jZlO/AY7k5BCeGh5Ky -zu22GMQIp9ulIIfUKx8jcnhtDy07UEmaWqv3rVsqKWF9v9B4z2SMiH1oFEgrNAxi -v98CAQOjNjA0MA8GA1UdEwEB/wQFMAMBAf8wEQYDVR0OBAoECEQv+xQJkonQMA4G -A1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQsFAAOCAgEASO7M8elac5VTP+FjuL1S -nS72NaIP/RGYmw6967irlG5qQ0cGmCZO5J8SsL7xc3BMofMQMbrsGEryO1F4Y95B -o419IzqPb8sYHlx1Du+F2D01qXBmGP/NcqQIo9twLa+man16l7SFF/iNof2axigM -TUcWzqHUxtSjCPoU44qTsi8vVuQKRP8gMGlVCty0joc0gEW8PqKiMaKxI+tglVA6 -czwvPXfk9pJkL3hhDg/p59iKJTkEKIDtvugrZ4ZqOCBL5xv1Tar3BMBAKSfl/YoQ -/p6ATGlKkjSbMyU7vUGxXldNALHkezxFufuDZEF/erp3hCVADbQMKgyM7Diu6cKB -0s4+POeTQoSQ2dnMQJdgAfeGcd3twy2s/M/xHAVGPAPIQWH7ppVcs6AbVXQabHxJ -YZU7G2ct8Se0r8RLq+iRYrWhFKl8mmVBNwK2WJhjWPv2fqM1xYtbbwH6zoV/Sf8j -uIbx/5A/MJo/4s/9ciafJLVzLvkOh6Bhf310TAxyB9mDiL00KAuVTDtwYfzo1+jw -0bInpPqTCkgszn0LbajeaEIc7lQ7neY0gmMqDvnhA+5LyHJXuX5tDF+1/KDijlLs -p/k1/YZfe1Ai1+gcRoAlp2O80tKaJWZPkf8POffyIkSxJbHlKF6r3TWs7JYr+YUi -lm2dyCqZ9RUD5ZN2YRntJoo= ------END CERTIFICATE----- diff --git a/moaSig/handbook/conf/moa-spss/trustProfiles/secureSignature+Test/A-Trust-nQual-03.20050817-20150817.SerNo016c1e.cer b/moaSig/handbook/conf/moa-spss/trustProfiles/secureSignature+Test/A-Trust-nQual-03.20050817-20150817.SerNo016c1e.cer Binary files differdeleted file mode 100644 index 33e7763..0000000 --- a/moaSig/handbook/conf/moa-spss/trustProfiles/secureSignature+Test/A-Trust-nQual-03.20050817-20150817.SerNo016c1e.cer +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/trustProfiles/secureSignature+Test/A-Trust.A-Trust-Qual-01.20011130-20041130.SerNo01f6[SecureSignatureKeypair].cer b/moaSig/handbook/conf/moa-spss/trustProfiles/secureSignature+Test/A-Trust.A-Trust-Qual-01.20011130-20041130.SerNo01f6[SecureSignatureKeypair].cer Binary files differdeleted file mode 100644 index d361d91..0000000 --- a/moaSig/handbook/conf/moa-spss/trustProfiles/secureSignature+Test/A-Trust.A-Trust-Qual-01.20011130-20041130.SerNo01f6[SecureSignatureKeypair].cer +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/trustProfiles/secureSignature+Test/A-Trust.A-Trust-Qual-01.20011215-20041215.SerNo021e[SecureSignatureKeypair].cer b/moaSig/handbook/conf/moa-spss/trustProfiles/secureSignature+Test/A-Trust.A-Trust-Qual-01.20011215-20041215.SerNo021e[SecureSignatureKeypair].cer Binary files differdeleted file mode 100644 index ad13d7b..0000000 --- a/moaSig/handbook/conf/moa-spss/trustProfiles/secureSignature+Test/A-Trust.A-Trust-Qual-01.20011215-20041215.SerNo021e[SecureSignatureKeypair].cer +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/trustProfiles/secureSignature+Test/A-Trust.A-Trust-Qual-01.20020207-20050207.SerNo0291[SecureSignatureKeypair].cer b/moaSig/handbook/conf/moa-spss/trustProfiles/secureSignature+Test/A-Trust.A-Trust-Qual-01.20020207-20050207.SerNo0291[SecureSignatureKeypair].cer Binary files differdeleted file mode 100644 index f9f2744..0000000 --- a/moaSig/handbook/conf/moa-spss/trustProfiles/secureSignature+Test/A-Trust.A-Trust-Qual-01.20020207-20050207.SerNo0291[SecureSignatureKeypair].cer +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/trustProfiles/secureSignature+Test/A-Trust.A-Trust-Qual-01.20020207-20050207.SerNo210d[SecureSignatureKeypair].cer b/moaSig/handbook/conf/moa-spss/trustProfiles/secureSignature+Test/A-Trust.A-Trust-Qual-01.20020207-20050207.SerNo210d[SecureSignatureKeypair].cer Binary files differdeleted file mode 100644 index b6f39e3..0000000 --- a/moaSig/handbook/conf/moa-spss/trustProfiles/secureSignature+Test/A-Trust.A-Trust-Qual-01.20020207-20050207.SerNo210d[SecureSignatureKeypair].cer +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/trustProfiles/secureSignature+Test/C=AT,O=Hauptverband oesterr. Sozialvers.,CN=Root-CA 1-2045.der b/moaSig/handbook/conf/moa-spss/trustProfiles/secureSignature+Test/C=AT,O=Hauptverband oesterr. Sozialvers.,CN=Root-CA 1-2045.der Binary files differdeleted file mode 100644 index 3be7b6a..0000000 --- a/moaSig/handbook/conf/moa-spss/trustProfiles/secureSignature+Test/C=AT,O=Hauptverband oesterr. Sozialvers.,CN=Root-CA 1-2045.der +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/trustProfiles/secureSignature+Test/EGIZ_Test_CA_-_Root.20070829-20180101.SerNo00.cer b/moaSig/handbook/conf/moa-spss/trustProfiles/secureSignature+Test/EGIZ_Test_CA_-_Root.20070829-20180101.SerNo00.cer Binary files differdeleted file mode 100644 index ed5ba19..0000000 --- a/moaSig/handbook/conf/moa-spss/trustProfiles/secureSignature+Test/EGIZ_Test_CA_-_Root.20070829-20180101.SerNo00.cer +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/trustProfiles/secureSignature+Test/MOA_Test_CA.20070823-20131022.Serno01.cer b/moaSig/handbook/conf/moa-spss/trustProfiles/secureSignature+Test/MOA_Test_CA.20070823-20131022.Serno01.cer Binary files differdeleted file mode 100644 index 05a8b86..0000000 --- a/moaSig/handbook/conf/moa-spss/trustProfiles/secureSignature+Test/MOA_Test_CA.20070823-20131022.Serno01.cer +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/trustProfiles/secureSignature+Test/a-sign-Premium-Test-Sig-02.20141124-20141118.SerNo3969edc1.cer b/moaSig/handbook/conf/moa-spss/trustProfiles/secureSignature+Test/a-sign-Premium-Test-Sig-02.20141124-20141118.SerNo3969edc1.cer Binary files differdeleted file mode 100644 index 1bb4494..0000000 --- a/moaSig/handbook/conf/moa-spss/trustProfiles/secureSignature+Test/a-sign-Premium-Test-Sig-02.20141124-20141118.SerNo3969edc1.cer +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/trustProfiles/secureSignature+Test/a-sign-TEST-Qual-01a.20041117-20141117.SerNo00da88.cer b/moaSig/handbook/conf/moa-spss/trustProfiles/secureSignature+Test/a-sign-TEST-Qual-01a.20041117-20141117.SerNo00da88.cer Binary files differdeleted file mode 100644 index cac4409..0000000 --- a/moaSig/handbook/conf/moa-spss/trustProfiles/secureSignature+Test/a-sign-TEST-Qual-01a.20041117-20141117.SerNo00da88.cer +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/trustProfiles/secureSignature+Test/a-sign-Test-Premium-Sig-05.20141215-20141209.SerNo165fb8.crt b/moaSig/handbook/conf/moa-spss/trustProfiles/secureSignature+Test/a-sign-Test-Premium-Sig-05.20141215-20141209.SerNo165fb8.crt deleted file mode 100644 index ee17cdb..0000000 --- a/moaSig/handbook/conf/moa-spss/trustProfiles/secureSignature+Test/a-sign-Test-Premium-Sig-05.20141215-20141209.SerNo165fb8.crt +++ /dev/null @@ -1,36 +0,0 @@ ------BEGIN CERTIFICATE----- -MIIGQTCCBCmgAwIBAgIDFl+4MA0GCSqGSIb3DQEBCwUAMIGVMQswCQYDVQQGEwJB -VDFIMEYGA1UECgw/QS1UcnVzdCBHZXMuIGYuIFNpY2hlcmhlaXRzc3lzdGVtZSBp -bSBlbGVrdHIuIERhdGVudmVya2VociBHbWJIMR0wGwYDVQQLDBRBLVRydXN0LVRl -c3QtUm9vdC0wNTEdMBsGA1UEAwwUQS1UcnVzdC1UZXN0LVJvb3QtMDUwHhcNMTQx -MjE1MTMxMDE5WhcNMjQxMjA5MTIxMDE5WjCBoTELMAkGA1UEBhMCQVQxSDBGBgNV -BAoMP0EtVHJ1c3QgR2VzLiBmLiBTaWNoZXJoZWl0c3N5c3RlbWUgaW0gZWxla3Ry -LiBEYXRlbnZlcmtlaHIgR21iSDEjMCEGA1UECwwaYS1zaWduLVRlc3QtUHJlbWl1 -bS1TaWctMDUxIzAhBgNVBAMMGmEtc2lnbi1UZXN0LVByZW1pdW0tU2lnLTA1MIIC -IDANBgkqhkiG9w0BAQEFAAOCAg0AMIICCAKCAgEAq9PRwApA35K3LT0p5IYtNZMS -BFJsIkzjgF4FRQ36PtxeNsPL6iPgfFjWLZzVT1arHrC6ciz97haDWEN5Jq+aVaZp -gvFtvqZXlwYOWP0sshQg1aP7zrfH/N6yqjkrXHyzgmSz3SVIbdj5CqUJz/+94FCR -cA8XkQ3WZAjSkRB+MSIY8umftkmJOVAstaG28OEtpmqwBLRh/QGcNZzfhyrPS2Ls -5BAKQW9SBb1nXn8JOHq0Bd8zHShHbny9X/qT0xqeFfwItZWiW7iu3LgbGqfB3J4d -s+9iecwHDsmYdSb2quGmzJXejmvktFZte9dlF7BuBqier+R3/czdLteRems5S9Ka -hlP3+f3CnFwKihyVMhnuf5HyhCo1Fvrt+igWtNnos38qzB5RzRTJXnvZyrtTJMQE -/8ZuV2B12Oaf0AQjt+o/SPKeaTBX2yes0S1xbQy7xJzNhgBJ2Ir3OI6SoOooVN+9 -kQuzD7NsJBJzIy4dHCvOgs0C1ro8DROaV3Usn58eYOkLDrPGpEBmFq7GnsxnbeEh -5zzlgh00R9cy5PxiO40U+KxnTmQl+/vc9i1plDLsTRePeThKgS0UOIRZP7voYKdu -IJaEzufNXUxZbCc9Mq3V552BmRPhL9Ouf/bfaVMmkY4p7BdU57stxDfVwG9biujj -AVPA7DeRm+S0kzWRq0kCAQOjgY0wgYowPwYDVR0fBDgwNjA0oDKgMIYuaHR0cDov -L2NybC5hLXRydXN0LmF0L2NybC9BLVRydXN0LVRlc3QtUm9vdC0wNTATBgNVHSME -DDAKgAhEL/sUCZKJ0DAPBgNVHRMBAf8EBTADAQH/MBEGA1UdDgQKBAhB0SNOEjM1 -3jAOBgNVHQ8BAf8EBAMCAQYwDQYJKoZIhvcNAQELBQADggIBAEiqm52uEL2giMCy -8i1tIbqKP3SeJnYxhJgN4d3caWqfE1CoEUQjsN8t7sF866TOYJMrQ+/dS8bUqNiG -x4vvPrDq3DUSyKflgPaz+36xtB4BTlIiYTzio7Tnv+d5n+MsM6c/rijJzRx38FLM -tZTAfr7dXv5KxrfYrrEnPrGg0gMlYqX3rB1TKQnPx5qG3e2YXc6tdvDeXhh9cXj3 -76VJony7iV0ccKWNXRRNx1X0po/Luu6EMD/5czArtmO0KmGXO3gK3Fy7pxUbdBra -nSJNsY+Fv4X3zqf5n9ZM4Yut7KSqBiQbuMmIzLZkICJOWN5t9mOTStgmZjGqBdQN -sRuVinaLxA88Fd32ZmFxbagOLeKEXPTQT/ERbDOjhShY6jA2/LkIcg9mwDDOubsp -FcZaYlyXmvD+HNVxL5B4BGDWoGHmCxaj+bcYP4U797bpE90sTnMIQd6JoYEMQSIy -Re0S4jKIOkCqBDkPBIXZf/IizTvJiQoFUtT7civFYhcUHDOcWs69NUU3F6sEBZmq -C1uIRm7zD6FUPNpVcfVIeqcfWsnx5bSKwheh9Dk/A3eTmxjpodV4tIq6BfCLdq52 -85dumPB4zz/EmCuZ0hwy9/TJwaogVMqicvr1/pQXDM7T6fCM0vK9w/e4ejmX61TK -6MsTXFjxlwpIacl4fkAxk6L22xfB ------END CERTIFICATE----- diff --git a/moaSig/handbook/conf/moa-spss/trustProfiles/secureSignature+Test/a-sign-Test-Qual-01.20141117-20241111.SerNo16120f.cer b/moaSig/handbook/conf/moa-spss/trustProfiles/secureSignature+Test/a-sign-Test-Qual-01.20141117-20241111.SerNo16120f.cer deleted file mode 100644 index 60bc9a5..0000000 --- a/moaSig/handbook/conf/moa-spss/trustProfiles/secureSignature+Test/a-sign-Test-Qual-01.20141117-20241111.SerNo16120f.cer +++ /dev/null @@ -1,23 +0,0 @@ ------BEGIN CERTIFICATE----- -MIID2zCCAsOgAwIBAgIDFhIPMA0GCSqGSIb3DQEBBQUAMIGTMQswCQYDVQQGEwJB -VDFIMEYGA1UECgw/QS1UcnVzdCBHZXMuIGYuIFNpY2hlcmhlaXRzc3lzdGVtZSBp -bSBlbGVrdHIuIERhdGVudmVya2VociBHbWJIMRwwGgYDVQQLDBNhLXNpZ24tVEVT -VC1RdWFsLTAxMRwwGgYDVQQDDBNhLXNpZ24tVEVTVC1RdWFsLTAxMB4XDTE0MTEx -NzA3NDAzNloXDTI0MTExMTA2NDAzNlowgZMxCzAJBgNVBAYTAkFUMUgwRgYDVQQK -DD9BLVRydXN0IEdlcy4gZi4gU2ljaGVyaGVpdHNzeXN0ZW1lIGltIGVsZWt0ci4g -RGF0ZW52ZXJrZWhyIEdtYkgxHDAaBgNVBAsME2Etc2lnbi1URVNULVF1YWwtMDEx -HDAaBgNVBAMME2Etc2lnbi1URVNULVF1YWwtMDEwggEiMA0GCSqGSIb3DQEBAQUA -A4IBDwAwggEKAoIBAQD4TRgyXzhxJ2AkndX0RPY771f64dsJrReEeuShLRK5io0B -kJWc4t7wuD1B98cJ0MUPlMmOJ2Ckc/vuLhQUyY3qEUmhMhixCUIcdHQ5yH3H0yMV -HxyJxAG83fE8M25kpKA4TzzMW8KPd2S63wbpPElyEy7vrllrLxvdQRSDpMZMvRg8 -fvoDGAehxsnKKwlXZuMq1aSBzfMz3cMBDKxvqzDIz7yC1iWNkdiwog3a5a5PbViK -shhZ0h+bx9WFDpiN6ooPQgcGhjD+NqIDoiOr7CUFHp+HiC6xIsEFJaBHTf3dRZ61 -0r1FDABx0Yj8+wlXSQLYq/1nR/QMwsvH0Cz1qYTPAgMBAAGjNjA0MA8GA1UdEwEB -/wQFMAMBAf8wEQYDVR0OBAoECE8h1CulBqTdMA4GA1UdDwEB/wQEAwIBBjANBgkq -hkiG9w0BAQUFAAOCAQEAimFu+xTm3UdyU+fO+2hz4DS20OGSC9NBDkorjzhRPWoZ -IVhUi6yH5drqSBm4/2ZYS1Ba5npzfyJwm+cLO28ljxAApfRHlbN0y83hKv7c0I7g -zWTMRs8X8ar5Gd7d4O5jpC4PAaZ1ozSDoE06U5im6YMLaJy/0QYvf5EQBMvLdeoc -d1vl17JYKYqYzcX2dvayikrfiglFqDaZZ66yJPBSuiyNhXpPkbXsOoyyTPtV/0Bh -eKIQiQyJID5aZtR7D4fBAzKdp5wB9KLQXBZ80hrwqrIuy+ME0tFaBWYBi8dzQ1iq -/E3Qz0USfGmxPMm8y/zRqsDvxZCRiSuvzBkOXbGMdA== ------END CERTIFICATE----- diff --git a/moaSig/handbook/conf/moa-spss/trustProfiles/secureSignature+Test/mobilkom.A1-Signatur.20040326-20140326.SerNo6646[SecureSignatureKeypair].cer b/moaSig/handbook/conf/moa-spss/trustProfiles/secureSignature+Test/mobilkom.A1-Signatur.20040326-20140326.SerNo6646[SecureSignatureKeypair].cer Binary files differdeleted file mode 100644 index 06b40aa..0000000 --- a/moaSig/handbook/conf/moa-spss/trustProfiles/secureSignature+Test/mobilkom.A1-Signatur.20040326-20140326.SerNo6646[SecureSignatureKeypair].cer +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/trustProfiles/secureSignature+Test/mobilkom_A1-Signatur_20060912-20110912_SerNo027866.cer b/moaSig/handbook/conf/moa-spss/trustProfiles/secureSignature+Test/mobilkom_A1-Signatur_20060912-20110912_SerNo027866.cer Binary files differdeleted file mode 100644 index 7e9fd5b..0000000 --- a/moaSig/handbook/conf/moa-spss/trustProfiles/secureSignature+Test/mobilkom_A1-Signatur_20060912-20110912_SerNo027866.cer +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/trustProfiles/secureSignature+Test/mobilkom_A1-Signatur_20070501-20120501_SerNo6650.cer b/moaSig/handbook/conf/moa-spss/trustProfiles/secureSignature+Test/mobilkom_A1-Signatur_20070501-20120501_SerNo6650.cer Binary files differdeleted file mode 100644 index da38ce0..0000000 --- a/moaSig/handbook/conf/moa-spss/trustProfiles/secureSignature+Test/mobilkom_A1-Signatur_20070501-20120501_SerNo6650.cer +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/trustProfiles/secureSignature-qual-only/a-sign-Premium-Sig-01.20030123-20060123.SerNo1814.cer b/moaSig/handbook/conf/moa-spss/trustProfiles/secureSignature-qual-only/a-sign-Premium-Sig-01.20030123-20060123.SerNo1814.cer Binary files differdeleted file mode 100644 index 7085c5a..0000000 --- a/moaSig/handbook/conf/moa-spss/trustProfiles/secureSignature-qual-only/a-sign-Premium-Sig-01.20030123-20060123.SerNo1814.cer +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/trustProfiles/secureSignature-qual-only/a-sign-Premium-Sig-01.20030123-20060123.SerNo2115.cer b/moaSig/handbook/conf/moa-spss/trustProfiles/secureSignature-qual-only/a-sign-Premium-Sig-01.20030123-20060123.SerNo2115.cer Binary files differdeleted file mode 100644 index d53dce9..0000000 --- a/moaSig/handbook/conf/moa-spss/trustProfiles/secureSignature-qual-only/a-sign-Premium-Sig-01.20030123-20060123.SerNo2115.cer +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/trustProfiles/secureSignature-qual-only/a-sign-Premium-Sig-01.20041206-20081201.SerNo1C856.cer b/moaSig/handbook/conf/moa-spss/trustProfiles/secureSignature-qual-only/a-sign-Premium-Sig-01.20041206-20081201.SerNo1C856.cer Binary files differdeleted file mode 100644 index ad5d7de..0000000 --- a/moaSig/handbook/conf/moa-spss/trustProfiles/secureSignature-qual-only/a-sign-Premium-Sig-01.20041206-20081201.SerNo1C856.cer +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/trustProfiles/secureSignature-qual-only/a-sign-Premium-Sig-01.20041206-20081201.SerNoE28E.cer b/moaSig/handbook/conf/moa-spss/trustProfiles/secureSignature-qual-only/a-sign-Premium-Sig-01.20041206-20081201.SerNoE28E.cer Binary files differdeleted file mode 100644 index 5375c57..0000000 --- a/moaSig/handbook/conf/moa-spss/trustProfiles/secureSignature-qual-only/a-sign-Premium-Sig-01.20041206-20081201.SerNoE28E.cer +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/trustProfiles/secureSignature-qual-only/a-sign-Premium-Sig-01.20081201-20121201.SerNo4AFDC.cer b/moaSig/handbook/conf/moa-spss/trustProfiles/secureSignature-qual-only/a-sign-Premium-Sig-01.20081201-20121201.SerNo4AFDC.cer Binary files differdeleted file mode 100644 index 97dc187..0000000 --- a/moaSig/handbook/conf/moa-spss/trustProfiles/secureSignature-qual-only/a-sign-Premium-Sig-01.20081201-20121201.SerNo4AFDC.cer +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/trustProfiles/secureSignature-qual-only/a-sign-Premium-Sig-02.20041215-20141214.SerNo1C859.cer b/moaSig/handbook/conf/moa-spss/trustProfiles/secureSignature-qual-only/a-sign-Premium-Sig-02.20041215-20141214.SerNo1C859.cer Binary files differdeleted file mode 100644 index 783dd27..0000000 --- a/moaSig/handbook/conf/moa-spss/trustProfiles/secureSignature-qual-only/a-sign-Premium-Sig-02.20041215-20141214.SerNo1C859.cer +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/trustProfiles/secureSignature-qual-only/a-sign-Premium-Sig-02.20041215-20141214.SerNoE4A3.cer b/moaSig/handbook/conf/moa-spss/trustProfiles/secureSignature-qual-only/a-sign-Premium-Sig-02.20041215-20141214.SerNoE4A3.cer Binary files differdeleted file mode 100644 index cc35ba6..0000000 --- a/moaSig/handbook/conf/moa-spss/trustProfiles/secureSignature-qual-only/a-sign-Premium-Sig-02.20041215-20141214.SerNoE4A3.cer +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/trustProfiles/secureSignature-qual-only/a-sign-Premium-Sig-03.20080429-20180429.SerNo3E9AB.cer b/moaSig/handbook/conf/moa-spss/trustProfiles/secureSignature-qual-only/a-sign-Premium-Sig-03.20080429-20180429.SerNo3E9AB.cer Binary files differdeleted file mode 100644 index ea1585a..0000000 --- a/moaSig/handbook/conf/moa-spss/trustProfiles/secureSignature-qual-only/a-sign-Premium-Sig-03.20080429-20180429.SerNo3E9AB.cer +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/trustProfiles/secureSignature-qual-only/a-sign-Premium-Sig-03.20080429-20180429.SerNo41D15.cer b/moaSig/handbook/conf/moa-spss/trustProfiles/secureSignature-qual-only/a-sign-Premium-Sig-03.20080429-20180429.SerNo41D15.cer Binary files differdeleted file mode 100644 index b9fe128..0000000 --- a/moaSig/handbook/conf/moa-spss/trustProfiles/secureSignature-qual-only/a-sign-Premium-Sig-03.20080429-20180429.SerNo41D15.cer +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/trustProfiles/secureSignature-qual-only/a-sign-Premium-Sig-04.20130702-20230701.SerNof1d50.cer b/moaSig/handbook/conf/moa-spss/trustProfiles/secureSignature-qual-only/a-sign-Premium-Sig-04.20130702-20230701.SerNof1d50.cer Binary files differdeleted file mode 100644 index 3250c6a..0000000 --- a/moaSig/handbook/conf/moa-spss/trustProfiles/secureSignature-qual-only/a-sign-Premium-Sig-04.20130702-20230701.SerNof1d50.cer +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/trustProfiles/secureSignature-qual-only/a-sign-Premium-Sig-04.20130705-20230701.SerNo‎f24d6.cer b/moaSig/handbook/conf/moa-spss/trustProfiles/secureSignature-qual-only/a-sign-Premium-Sig-04.20130705-20230701.SerNo‎f24d6.cer Binary files differdeleted file mode 100644 index 3848a2b..0000000 --- a/moaSig/handbook/conf/moa-spss/trustProfiles/secureSignature-qual-only/a-sign-Premium-Sig-04.20130705-20230701.SerNo‎f24d6.cer +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/trustProfiles/secureSignature-qual-only/a-sign-Premium-Sig-05.20130923-20230920.SerNoFCDB8.cer b/moaSig/handbook/conf/moa-spss/trustProfiles/secureSignature-qual-only/a-sign-Premium-Sig-05.20130923-20230920.SerNoFCDB8.cer Binary files differdeleted file mode 100644 index a6a9acd..0000000 --- a/moaSig/handbook/conf/moa-spss/trustProfiles/secureSignature-qual-only/a-sign-Premium-Sig-05.20130923-20230920.SerNoFCDB8.cer +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/trustProfiles/secureSignature-qual-only/a-sign-premium-mobile-03.20090909-20140909.SerNo5EFE7.cer b/moaSig/handbook/conf/moa-spss/trustProfiles/secureSignature-qual-only/a-sign-premium-mobile-03.20090909-20140909.SerNo5EFE7.cer Binary files differdeleted file mode 100644 index 8ddc7d7..0000000 --- a/moaSig/handbook/conf/moa-spss/trustProfiles/secureSignature-qual-only/a-sign-premium-mobile-03.20090909-20140909.SerNo5EFE7.cer +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/trustProfiles/secureSignature-qual-only/a-sign-premium-mobile-03.20090909-20140909.SerNo7F061.cer b/moaSig/handbook/conf/moa-spss/trustProfiles/secureSignature-qual-only/a-sign-premium-mobile-03.20090909-20140909.SerNo7F061.cer Binary files differdeleted file mode 100644 index c9fd41f..0000000 --- a/moaSig/handbook/conf/moa-spss/trustProfiles/secureSignature-qual-only/a-sign-premium-mobile-03.20090909-20140909.SerNo7F061.cer +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/trustProfiles/secureSignature-qual-only/a-sign-premium-mobile-04.20130702-20180701.SerNof1d4f.cer b/moaSig/handbook/conf/moa-spss/trustProfiles/secureSignature-qual-only/a-sign-premium-mobile-04.20130702-20180701.SerNof1d4f.cer Binary files differdeleted file mode 100644 index 3754de6..0000000 --- a/moaSig/handbook/conf/moa-spss/trustProfiles/secureSignature-qual-only/a-sign-premium-mobile-04.20130702-20180701.SerNof1d4f.cer +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/trustProfiles/secureSignature-qual-only/a-sign-premium-mobile-05.20130923-20230920.SerNoFCDD4.cer b/moaSig/handbook/conf/moa-spss/trustProfiles/secureSignature-qual-only/a-sign-premium-mobile-05.20130923-20230920.SerNoFCDD4.cer Binary files differdeleted file mode 100644 index 2bf4ad7..0000000 --- a/moaSig/handbook/conf/moa-spss/trustProfiles/secureSignature-qual-only/a-sign-premium-mobile-05.20130923-20230920.SerNoFCDD4.cer +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/trustProfiles/secureSignature/A-Trust-Qual-01-20140701-20240701.SerNo144ddd(SecureSignatureKeypair).cer b/moaSig/handbook/conf/moa-spss/trustProfiles/secureSignature/A-Trust-Qual-01-20140701-20240701.SerNo144ddd(SecureSignatureKeypair).cer deleted file mode 100644 index eb051dc..0000000 --- a/moaSig/handbook/conf/moa-spss/trustProfiles/secureSignature/A-Trust-Qual-01-20140701-20240701.SerNo144ddd(SecureSignatureKeypair).cer +++ /dev/null @@ -1,26 +0,0 @@ ------BEGIN CERTIFICATE----- -MIIEUzCCAzugAwIBAgIDFE3dMA0GCSqGSIb3DQEBBQUAMIHPMQswCQYDVQQGEwJB -VDGBizCBiAYDVQQKHoGAAEEALQBUAHIAdQBzAHQAIABHAGUAcwAuACAAZgD8AHIA -IABTAGkAYwBoAGUAcgBoAGUAaQB0AHMAcwB5AHMAdABlAG0AZQAgAGkAbQAgAGUA -bABlAGsAdAByAC4AIABEAGEAdABlAG4AdgBlAHIAawBlAGgAcgAgAEcAbQBiAEgx -GDAWBgNVBAsTD0EtVHJ1c3QtUXVhbC0wMTEYMBYGA1UEAxMPQS1UcnVzdC1RdWFs -LTAxMB4XDTE0MDcwMTExMjExNVoXDTI0MDcwMTA5MjExNVowgc8xCzAJBgNVBAYT -AkFUMYGLMIGIBgNVBAoegYAAQQAtAFQAcgB1AHMAdAAgAEcAZQBzAC4AIABmAPwA -cgAgAFMAaQBjAGgAZQByAGgAZQBpAHQAcwBzAHkAcwB0AGUAbQBlACAAaQBtACAA -ZQBsAGUAawB0AHIALgAgAEQAYQB0AGUAbgB2AGUAcgBrAGUAaAByACAARwBtAGIA -SDEYMBYGA1UECxMPQS1UcnVzdC1RdWFsLTAxMRgwFgYDVQQDEw9BLVRydXN0LVF1 -YWwtMDEwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCmhgdxIbxTGEOH -fXGiewI3NFldAWKFWfLofO+5I1UbvA5avt7IgsGXz/tI/f5HGUbascI0i7xG0tqV -lA5ctQgLRqxgxHtgTkMcqsAEYdsz3LZsCdXO1QrvEBGLTSABdxiL/gSWJ6z77CSw -x7Xg02HwxPV82cjGkSF3ENGJntuIAAnRDWn/ORHjFatNRymoMbHaOEZXSGhf7Y5F -rrHEqGyi9E6sv784De/T1aTvskn8cWeUmDzv//omiG/a/V9KQex/61XN8OthUQVn -X+u/liL2NKx74I2C/GgHX5B0WkPNqsSOgmlvJ/cKuT0PveUgVFDAA0oYBgcE1KDM -lBbN0kmPAgMBAAGjNjA0MA8GA1UdEwEB/wQFMAMBAf8wEQYDVR0OBAoECEs8jB2F -6W+tMA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQUFAAOCAQEAQIN9LZbMivO9 -kWLDlDI9cTEIPpRXmgNdaBQRUpZc2ML0vDW6OVI90r8GxFQTE/I7HjrvuqQDTEL1 -qd8tthiazsLYI5eDX1CtJEFFtg25Y9t3tK2HsShb8sCj798hoXsOMFR9qhp5Fjb8 -TX4CVuQ3sK1TKeNlDmpAx6SqkYYT0CCMccsxt2j89ED8Z+B/yW19OZQk3BFDigYL -46YsLKAC96ItFpUOs8ZbAUfUlpVA6G+09EMcDxOcuD/ebLx6I/ynwYAtqYXaizsY -KTE35A3M2ghfGFJ+DlQoh3Bn/RG01LKXXgaVTHHMvvpxBp55wz2SocD/PpFe+D6Q -C016YgTrrQ== ------END CERTIFICATE----- diff --git a/moaSig/handbook/conf/moa-spss/trustProfiles/secureSignature/A-Trust-Qual-01.20041201-20141201.SerNoE243.cer b/moaSig/handbook/conf/moa-spss/trustProfiles/secureSignature/A-Trust-Qual-01.20041201-20141201.SerNoE243.cer Binary files differdeleted file mode 100644 index f9fef65..0000000 --- a/moaSig/handbook/conf/moa-spss/trustProfiles/secureSignature/A-Trust-Qual-01.20041201-20141201.SerNoE243.cer +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/trustProfiles/secureSignature/A-Trust-Qual-01b.20041201-20141201.SerNo01C854.cer b/moaSig/handbook/conf/moa-spss/trustProfiles/secureSignature/A-Trust-Qual-01b.20041201-20141201.SerNo01C854.cer Binary files differdeleted file mode 100644 index 3c7775b..0000000 --- a/moaSig/handbook/conf/moa-spss/trustProfiles/secureSignature/A-Trust-Qual-01b.20041201-20141201.SerNo01C854.cer +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/trustProfiles/secureSignature/A-Trust-Qual-02-20140701-20240701.SerNo144de4(SecureSignatureKeypair).cer b/moaSig/handbook/conf/moa-spss/trustProfiles/secureSignature/A-Trust-Qual-02-20140701-20240701.SerNo144de4(SecureSignatureKeypair).cer deleted file mode 100644 index be29fb6..0000000 --- a/moaSig/handbook/conf/moa-spss/trustProfiles/secureSignature/A-Trust-Qual-02-20140701-20240701.SerNo144de4(SecureSignatureKeypair).cer +++ /dev/null @@ -1,23 +0,0 @@ ------BEGIN CERTIFICATE----- -MIIDyzCCArOgAwIBAgIDFE3kMA0GCSqGSIb3DQEBBQUAMIGLMQswCQYDVQQGEwJB -VDFIMEYGA1UECgw/QS1UcnVzdCBHZXMuIGYuIFNpY2hlcmhlaXRzc3lzdGVtZSBp -bSBlbGVrdHIuIERhdGVudmVya2VociBHbWJIMRgwFgYDVQQLDA9BLVRydXN0LVF1 -YWwtMDIxGDAWBgNVBAMMD0EtVHJ1c3QtUXVhbC0wMjAeFw0xNDA3MDExMTIzMzNa -Fw0yNDA3MDEwOTIzMzNaMIGLMQswCQYDVQQGEwJBVDFIMEYGA1UECgw/QS1UcnVz -dCBHZXMuIGYuIFNpY2hlcmhlaXRzc3lzdGVtZSBpbSBlbGVrdHIuIERhdGVudmVy -a2VociBHbWJIMRgwFgYDVQQLDA9BLVRydXN0LVF1YWwtMDIxGDAWBgNVBAMMD0Et -VHJ1c3QtUXVhbC0wMjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAJaR -q9eOsFm4Ab20Hq2Z/aH86gyWa48uSUjY6eQkguHYuszr3gdcSMYZggFHQgnhfLmf -ro/27l5rqKhWiDhWs+b+yZ1PNDhRPJy+86ycHMg9XJqErveULBSyZDdgjhSwOyrN -ibUir/fkf+4sKzP5jjytTKJXD/uCxY4fAd9TjMEVpN3umpIS0ijpYhclYDHvzzGU -833z5Dwhq5D8bc9jp8YSAHFJ1xzIoO1jmn3jjyjdYPnY5harJtHQL73nDQnfbtTs -5ThT9GQLulrMgLU4WeyAWWWEMWpfVZFMJOUkmoOEer6A8e5fIAeqdxdsC+JVqpZ4 -CAKel/Arrlj1gFA//jsCAwEAAaM2MDQwDwYDVR0TAQH/BAUwAwEB/zARBgNVHQ4E -CgQIQj0rJKbBRc4wDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3DQEBBQUAA4IBAQBh -MfOINQm4XpzF6DmkOmb/ArSXHf5LObqFmIMooNr2TkyzrUTK/NE+mdrm15Rfdts7 -kZVq/ICfQSFeaPvWaAVq4plH/26OjvMTVv7DfgfPBUxDWqlCuDnDnPAVQ+yo/o5i -BA5uUlMbp5znbDtlxwF/5gWqcn/hKxSUCP1uiOPIlKfeVvsRmBcJAdoixTM/Ic10 -pavJMGOI20onArvQZAUEbXQLA8cs8naxfF6Bo36U9nk6wn7q8VPXhViekByd17F6 -9A+ah0Iqw4SPf9BqNRIe1YxxjDhCmjWt3aoyE3ZFBuGjW+r2ipb/vGU1+2oyy2Fd -2dMmiMQ7gGhWX9X6gWLd ------END CERTIFICATE----- diff --git a/moaSig/handbook/conf/moa-spss/trustProfiles/secureSignature/A-Trust-Qual-02.20041203-20141203.SerNoE248.cer b/moaSig/handbook/conf/moa-spss/trustProfiles/secureSignature/A-Trust-Qual-02.20041203-20141203.SerNoE248.cer Binary files differdeleted file mode 100644 index 36a442b..0000000 --- a/moaSig/handbook/conf/moa-spss/trustProfiles/secureSignature/A-Trust-Qual-02.20041203-20141203.SerNoE248.cer +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/trustProfiles/secureSignature/A-Trust-Qual-02b.20041203-20141203.SerNo01C857.cer b/moaSig/handbook/conf/moa-spss/trustProfiles/secureSignature/A-Trust-Qual-02b.20041203-20141203.SerNo01C857.cer Binary files differdeleted file mode 100644 index 54f8099..0000000 --- a/moaSig/handbook/conf/moa-spss/trustProfiles/secureSignature/A-Trust-Qual-02b.20041203-20141203.SerNo01C857.cer +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/trustProfiles/secureSignature/A-Trust-Qual-03-20140701-20240701.SerNo144df5(SecureSignatureKeypair).cer b/moaSig/handbook/conf/moa-spss/trustProfiles/secureSignature/A-Trust-Qual-03-20140701-20240701.SerNo144df5(SecureSignatureKeypair).cer deleted file mode 100644 index e1100c7..0000000 --- a/moaSig/handbook/conf/moa-spss/trustProfiles/secureSignature/A-Trust-Qual-03-20140701-20240701.SerNo144df5(SecureSignatureKeypair).cer +++ /dev/null @@ -1,23 +0,0 @@ ------BEGIN CERTIFICATE----- -MIIDyzCCArOgAwIBAgIDFE31MA0GCSqGSIb3DQEBBQUAMIGLMQswCQYDVQQGEwJB -VDFIMEYGA1UECgw/QS1UcnVzdCBHZXMuIGYuIFNpY2hlcmhlaXRzc3lzdGVtZSBp -bSBlbGVrdHIuIERhdGVudmVya2VociBHbWJIMRgwFgYDVQQLDA9BLVRydXN0LVF1 -YWwtMDMxGDAWBgNVBAMMD0EtVHJ1c3QtUXVhbC0wMzAeFw0xNDA3MDExMTMwNTZa -Fw0yNDA3MDEwOTMwNTZaMIGLMQswCQYDVQQGEwJBVDFIMEYGA1UECgw/QS1UcnVz -dCBHZXMuIGYuIFNpY2hlcmhlaXRzc3lzdGVtZSBpbSBlbGVrdHIuIERhdGVudmVy -a2VociBHbWJIMRgwFgYDVQQLDA9BLVRydXN0LVF1YWwtMDMxGDAWBgNVBAMMD0Et -VHJ1c3QtUXVhbC0wMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALOe -JIgc0s9AA0hqqqWgK72W9XwKn5+rUJDbQc5WgHkqwP2TU3qcW/NZYSSIY6PVGO6b -hHSEnOyMPdrBhnpvNi4m6349yT6t565LdHcoKyQg/youwpVkEPZ+e8O32hF9nqvt -L4wZohydjMwzcHUJB/5e+0CkJYwv/bVRZzqoK0yf1midYJukxWOw7nDNKD9KdOpZ -+XXFAAZuH7BjwSqqE138y9JlGzkxIlrCeSJdGfFLwr7OHIgBdPEmQXcyOcaMUGjP -U4VDig+gj+6OC5KjAEC+wKJZXiyhRLj+HyLTDLrQ6O8p5HI3Sov4FuwiMgcqIyzz -o9fNyqmnT3K/vBGOqBsCAwEAAaM2MDQwDwYDVR0TAQH/BAUwAwEB/zARBgNVHQ4E -CgQIRgbfN/LCNxAwDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3DQEBBQUAA4IBAQBy -jA/CmId9oz8sy4rwEklti+8TLS/aLHkiMqUmKjuHyT/6mz4Qh4fLfAAEv8iGSZiW -+7+Gv7HTcuEEdyNNhUmMGJLSQA/3KBjlttHXLiG943wnvcZf3LtkFc+8Ia5N3bNS -BM6q7/OFKHSS+iHcAJ8XS6SnLITYRyfo0thsXBaHpkTUkEP0uJY+yoE/EcBkvsGX -drLIawu8YOrNZvs3S6Ag0ex5brIdqiNtlUGwRxpLwssfBho5K0NqpXAloHT9kHBd -rGb2GrVdLIesuVivSP9zq09M8bcm3jDPCHv5bcudPZVX7rkr79VphgLfKlINA4Fw -VxCuPLXx/4sCfANQtvuY ------END CERTIFICATE----- diff --git a/moaSig/handbook/conf/moa-spss/trustProfiles/secureSignature/A-Trust-Qual-03.20080425-20180425.SerNoe694(SecureSignatureKeypair).cer b/moaSig/handbook/conf/moa-spss/trustProfiles/secureSignature/A-Trust-Qual-03.20080425-20180425.SerNoe694(SecureSignatureKeypair).cer Binary files differdeleted file mode 100644 index ab9e0cd..0000000 --- a/moaSig/handbook/conf/moa-spss/trustProfiles/secureSignature/A-Trust-Qual-03.20080425-20180425.SerNoe694(SecureSignatureKeypair).cer +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/trustProfiles/secureSignature/A-Trust-Qual-03b.20080424-20180424.SerNo041D14.cer b/moaSig/handbook/conf/moa-spss/trustProfiles/secureSignature/A-Trust-Qual-03b.20080424-20180424.SerNo041D14.cer Binary files differdeleted file mode 100644 index 0196576..0000000 --- a/moaSig/handbook/conf/moa-spss/trustProfiles/secureSignature/A-Trust-Qual-03b.20080424-20180424.SerNo041D14.cer +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/trustProfiles/secureSignature/A-Trust-Root-05.20130923-20230920.SerNoFCDB4.cer b/moaSig/handbook/conf/moa-spss/trustProfiles/secureSignature/A-Trust-Root-05.20130923-20230920.SerNoFCDB4.cer Binary files differdeleted file mode 100644 index b9a0e5a..0000000 --- a/moaSig/handbook/conf/moa-spss/trustProfiles/secureSignature/A-Trust-Root-05.20130923-20230920.SerNoFCDB4.cer +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/trustProfiles/secureSignature/A-Trust-nQual-03.20050817-20150817.SerNo016c1e.cer b/moaSig/handbook/conf/moa-spss/trustProfiles/secureSignature/A-Trust-nQual-03.20050817-20150817.SerNo016c1e.cer Binary files differdeleted file mode 100644 index 33e7763..0000000 --- a/moaSig/handbook/conf/moa-spss/trustProfiles/secureSignature/A-Trust-nQual-03.20050817-20150817.SerNo016c1e.cer +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/trustProfiles/secureSignature/A-Trust.A-Trust-Qual-01.20011130-20041130.SerNo01f6[SecureSignatureKeypair].cer b/moaSig/handbook/conf/moa-spss/trustProfiles/secureSignature/A-Trust.A-Trust-Qual-01.20011130-20041130.SerNo01f6[SecureSignatureKeypair].cer Binary files differdeleted file mode 100644 index d361d91..0000000 --- a/moaSig/handbook/conf/moa-spss/trustProfiles/secureSignature/A-Trust.A-Trust-Qual-01.20011130-20041130.SerNo01f6[SecureSignatureKeypair].cer +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/trustProfiles/secureSignature/A-Trust.A-Trust-Qual-01.20011215-20041215.SerNo021e[SecureSignatureKeypair].cer b/moaSig/handbook/conf/moa-spss/trustProfiles/secureSignature/A-Trust.A-Trust-Qual-01.20011215-20041215.SerNo021e[SecureSignatureKeypair].cer Binary files differdeleted file mode 100644 index ad13d7b..0000000 --- a/moaSig/handbook/conf/moa-spss/trustProfiles/secureSignature/A-Trust.A-Trust-Qual-01.20011215-20041215.SerNo021e[SecureSignatureKeypair].cer +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/trustProfiles/secureSignature/A-Trust.A-Trust-Qual-01.20020207-20050207.SerNo0291[SecureSignatureKeypair].cer b/moaSig/handbook/conf/moa-spss/trustProfiles/secureSignature/A-Trust.A-Trust-Qual-01.20020207-20050207.SerNo0291[SecureSignatureKeypair].cer Binary files differdeleted file mode 100644 index f9f2744..0000000 --- a/moaSig/handbook/conf/moa-spss/trustProfiles/secureSignature/A-Trust.A-Trust-Qual-01.20020207-20050207.SerNo0291[SecureSignatureKeypair].cer +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/trustProfiles/secureSignature/A-Trust.A-Trust-Qual-01.20020207-20050207.SerNo210d[SecureSignatureKeypair].cer b/moaSig/handbook/conf/moa-spss/trustProfiles/secureSignature/A-Trust.A-Trust-Qual-01.20020207-20050207.SerNo210d[SecureSignatureKeypair].cer Binary files differdeleted file mode 100644 index b6f39e3..0000000 --- a/moaSig/handbook/conf/moa-spss/trustProfiles/secureSignature/A-Trust.A-Trust-Qual-01.20020207-20050207.SerNo210d[SecureSignatureKeypair].cer +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/trustProfiles/secureSignature/C=AT,O=Hauptverband oesterr. Sozialvers.,CN=Root-CA 1-2045.der b/moaSig/handbook/conf/moa-spss/trustProfiles/secureSignature/C=AT,O=Hauptverband oesterr. Sozialvers.,CN=Root-CA 1-2045.der Binary files differdeleted file mode 100644 index 3be7b6a..0000000 --- a/moaSig/handbook/conf/moa-spss/trustProfiles/secureSignature/C=AT,O=Hauptverband oesterr. Sozialvers.,CN=Root-CA 1-2045.der +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/trustProfiles/secureSignature/mobilkom.A1-Signatur.20040326-20140326.SerNo6646[SecureSignatureKeypair].cer b/moaSig/handbook/conf/moa-spss/trustProfiles/secureSignature/mobilkom.A1-Signatur.20040326-20140326.SerNo6646[SecureSignatureKeypair].cer Binary files differdeleted file mode 100644 index 06b40aa..0000000 --- a/moaSig/handbook/conf/moa-spss/trustProfiles/secureSignature/mobilkom.A1-Signatur.20040326-20140326.SerNo6646[SecureSignatureKeypair].cer +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/trustProfiles/secureSignature/mobilkom_A1-Signatur_20060912-20110912_SerNo027866.cer b/moaSig/handbook/conf/moa-spss/trustProfiles/secureSignature/mobilkom_A1-Signatur_20060912-20110912_SerNo027866.cer Binary files differdeleted file mode 100644 index 7e9fd5b..0000000 --- a/moaSig/handbook/conf/moa-spss/trustProfiles/secureSignature/mobilkom_A1-Signatur_20060912-20110912_SerNo027866.cer +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/trustProfiles/secureSignature/mobilkom_A1-Signatur_20070501-20120501_SerNo6650.cer b/moaSig/handbook/conf/moa-spss/trustProfiles/secureSignature/mobilkom_A1-Signatur_20070501-20120501_SerNo6650.cer Binary files differdeleted file mode 100644 index da38ce0..0000000 --- a/moaSig/handbook/conf/moa-spss/trustProfiles/secureSignature/mobilkom_A1-Signatur_20070501-20120501_SerNo6650.cer +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/trustProfiles/testTSL/EGIZ_Test_CA_-_Root.20070829-20180101.SerNo00.cer b/moaSig/handbook/conf/moa-spss/trustProfiles/testTSL/EGIZ_Test_CA_-_Root.20070829-20180101.SerNo00.cer Binary files differdeleted file mode 100644 index ed5ba19..0000000 --- a/moaSig/handbook/conf/moa-spss/trustProfiles/testTSL/EGIZ_Test_CA_-_Root.20070829-20180101.SerNo00.cer +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/trustProfiles/testTSL/IAIK-Test-Root-CA_20080114-20180114.SerNo.01.der b/moaSig/handbook/conf/moa-spss/trustProfiles/testTSL/IAIK-Test-Root-CA_20080114-20180114.SerNo.01.der Binary files differdeleted file mode 100644 index 38c2de5..0000000 --- a/moaSig/handbook/conf/moa-spss/trustProfiles/testTSL/IAIK-Test-Root-CA_20080114-20180114.SerNo.01.der +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/trustProfiles/testTSL/MOA_Test_CA.20070823-20131022.Serno01.cer b/moaSig/handbook/conf/moa-spss/trustProfiles/testTSL/MOA_Test_CA.20070823-20131022.Serno01.cer Binary files differdeleted file mode 100644 index 05a8b86..0000000 --- a/moaSig/handbook/conf/moa-spss/trustProfiles/testTSL/MOA_Test_CA.20070823-20131022.Serno01.cer +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/tslworking/trust/eu/(SIGN) AGNIESZKA BAJNO_To20181219.crt b/moaSig/handbook/conf/moa-spss/tslworking/trust/eu/(SIGN) AGNIESZKA BAJNO_To20181219.crt deleted file mode 100644 index 5c07bd9..0000000 --- a/moaSig/handbook/conf/moa-spss/tslworking/trust/eu/(SIGN) AGNIESZKA BAJNO_To20181219.crt +++ /dev/null @@ -1,41 +0,0 @@ ------BEGIN CERTIFICATE----- -MIIHSDCCBTCgAwIBAgIQHaaUHzn5vENUk+T/aHIefTANBgkqhkiG9w0BAQsFADAx -MQswCQYDVQQGEwJFUzERMA8GA1UECgwIRk5NVC1SQ00xDzANBgNVBAMMBklTQSBD -QTAeFw0xNDEyMTkwODQyMzlaFw0xODEyMTkwODQyMzlaMEwxCzAJBgNVBAYTAkJF -MRwwGgYDVQQKDBNFVVJPUEVBTiBDT01NSVNTSU9OMR8wHQYDVQQDDBYoU0lHTikg -QUdOSUVTWktBIEJBSk5PMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA -og6nQQcoPlHOrwXYDD+wj38lwn1zbalTTJL7yW3N7OgO9/eSCIY5nGgfnslapC36 -vSO9RbSxW3cV4CJCf2nGZdsZHxNJpf4IG4CEsByui30UGFANtBPlFj/r5avf0OrD -GKTI2H/6sN2swgs43grcRFQ5yt/ZPhOIgjXjzK4s36IFMBG1GGRQUSDJo+uv3cbu -BcNjdFro3Zmm9TypDv194f1NwXRbFOon1WtaIsJNKzw4+MKCAyD9BBVATQxGLYeC -T2tZt3DFbSSXZbBfSnfwGe7eMc99S12Hr/MwAPJhUwZZpienadVNlMNWxwutxcDO -5HrmOdtxv8Vh9MKlAwvN4QIDAQABo4IDPzCCAzswWwYDVR0RBFQwUoEcQUdOSUVT -WktBLkJBSk5PQEVDLkVVUk9QQS5FVaQyMDAxFDASBgkrBgEEAaxmAQIMBUJBSk5P -MRgwFgYJKwYBBAGsZgEBDAlBR05JRVNaS0EwCQYDVR0TBAIwADAOBgNVHQ8BAf8E -BAMCBkAwHQYDVR0OBBYEFIe8EqP5sxbiNrSKwgNC00FsSfkjMB8GA1UdIwQYMBaA -FEft+GPwma9e/n4OXFjL/uI1N6a9MIHgBgNVHSAEgdgwgdUwgcgGCisGAQQBrGYD -BAEwgbkwKQYIKwYBBQUHAgEWHWh0dHA6Ly93d3cuY2VydC5mbm10LmVzL2RwY3Mv -MIGLBggrBgEFBQcCAjB/DH1RdWFsaWZpZWQgY2VydGlmaWNhdGUuIFVuZGVyIHRo -ZSB1c2FnZSBjb25kaXRpb25zIGFzc2VydGVkIGluIHRoZSBGTk1ULVJDTSBDUFMg -KDEwNiwgSm9yZ2UgSnVhbiBzdHJlZXQsMjgwMDksIE1hZHJpZCwgU3BhaW4pLjAI -BgYEAIswAQEwgYYGCCsGAQUFBwEBBHoweDBBBggrBgEFBQcwAYY1aHR0cDovL29j -c3BJU0FjYS5jZXJ0LmZubXQuZXMvb2NzcElTQWNhL09jc3BSZXNwb25kZXIwMwYI -KwYBBQUHMAKGJ2h0dHA6Ly93d3cuY2VydC5mbm10LmVzL2NlcnRzL0lTQUNBLmNy -dDBGBggrBgEFBQcBAwQ6MDgwCAYGBACORgEBMAsGBgQAjkYBAwIBDzAVBgYEAI5G -AQIwCxMDRVVSAgECAgECMAgGBgQAjkYBBDCBzAYDVR0fBIHEMIHBMIG+oIG7oIG4 -hoGIbGRhcDovL2xkYXBJU0FjYS5jZXJ0LmZubXQuZXMvQ049Q1JMMSxjbj1JU0El -MjBDQSxvPUZOTVQtUkNNLEM9RVM/Y2VydGlmaWNhdGVSZXZvY2F0aW9uTGlzdDti -aW5hcnk/YmFzZT9vYmplY3RjbGFzcz1jUkxEaXN0cmlidXRpb25Qb2ludIYraHR0 -cDovL3d3dy5jZXJ0LmZubXQuZXMvY3Jsc19JU0FjYS9DUkwxLmNybDANBgkqhkiG -9w0BAQsFAAOCAgEAd2CyyRljkbR+hxMwnjwzNE9q6nw29uLWx4c/kWfWGNxyjO/m -bE2KhgXfUm7e441Ih87PX1p8jpTeOhtfvL8CxmsqyDg56GBNq5NprbagpmKHiNCP -77baZiLMFfEvc915ktLlYQEH+wIe5i0gMPmRWjA2urB/M+fXwLgqQdOEe4e0NSLr -7YJqHeL1sWQsS4r1zK8ZGv1uJ0v+vAmYXwFtaYYht/c9X+QtVxYaflDcBVnPBxj3 -xUG7vQHe7g5/RPX4vvzAZNV9d5IBk+sCX05dRfRqsym4qw1sw4j0W2nxAfQwk3bf -W6NP5SgOHfC9sh2LrC3F/wlvePY8piTXFUkRzlsEb8zWM2vfz3QRNgGbxCz3DY3k -FavdEL/gnNHOg5Q4tn2TVV7YfXLEgu7zN+IqBOdlAtbJXEu60FiF9Cs35IGqwWlb -eOK8QvogFYDxlgIPrs3ijEA1WHyY+GH1mofSA7u30wEvooCzohFf4DBv06I4q9aC -NBnTo4yki1yFhBm71r60hlAas6aK6TZ+NUoFWwPypMP617SlHdy8QlFx1s3V+rIt -2hxUUGddid/FXDKtuUCRqKqx6x8J8bI7DecZsCS7ijPCApjJ84HB8UASRzdGtEwc -97hvnAqXjpCS/tHAVcVvmP3isNDu4WtV2LQfL/TIY8zMxUebv/E5JyB3KAw= ------END CERTIFICATE-----
\ No newline at end of file diff --git a/moaSig/handbook/conf/moa-spss/tslworking/trust/eu/(SIGN) JOLANDA VAN EIJNDTHOVEN_To20180915.crt b/moaSig/handbook/conf/moa-spss/tslworking/trust/eu/(SIGN) JOLANDA VAN EIJNDTHOVEN_To20180915.crt deleted file mode 100644 index 0264c9a..0000000 --- a/moaSig/handbook/conf/moa-spss/tslworking/trust/eu/(SIGN) JOLANDA VAN EIJNDTHOVEN_To20180915.crt +++ /dev/null @@ -1,42 +0,0 @@ ------BEGIN CERTIFICATE----- -MIIHYDCCBUigAwIBAgIQLc4fd1CtIihUFtlELwMLDDANBgkqhkiG9w0BAQsFADAx -MQswCQYDVQQGEwJFUzERMA8GA1UECgwIRk5NVC1SQ00xDzANBgNVBAMMBklTQSBD -QTAeFw0xNDA5MTUxMjE5MTVaFw0xODA5MTUxMjE5MTVaMFQxCzAJBgNVBAYTAkJF -MRwwGgYDVQQKDBNFVVJPUEVBTiBDT01NSVNTSU9OMScwJQYDVQQDDB4oU0lHTikg -Sk9MQU5EQSBWQU4gRUlKTkRUSE9WRU4wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw -ggEKAoIBAQC0sin8VvNtcuOnUuGDWtXjZlTx5SoZzJiDG4/6bOt3geyPIvqHzci8 -HSlIJB1YqjNimGltI6BlHelR/skf8rEguEYn/Ijgio2/89b82rsFM1R+ehsjkLMv -uu+Kj7UunhRCdLAHgnOhmPwIDe3dIxY4Jw0rBdjtyEwV7cNDedOC4lE9iuJ71zls -pHMedtLfLdwIF0ay/r5Bx1vaiapmzxjDIcArsQlHNmNpK3ysHW+poAhzN8Tj9Vow -jhTDSw/FTBNbQASzuK0L2IWD0PXrsZSO+yW86Dx0kAN1qSmWxdwZ0PAX+n39mL2G -GuG8StIrpvLMZDGgN6G52msz2grnIAulAgMBAAGjggNPMIIDSzBrBgNVHREEZDBi -gSRKT0xBTkRBLlZBTi1FSUpORFRIT1ZFTkBFQy5FVVJPUEEuRVWkOjA4MR4wHAYJ -KwYBBAGsZgECDA9WQU4gRUlKTkRUSE9WRU4xFjAUBgkrBgEEAaxmAQEMB0pPTEFO -REEwCQYDVR0TBAIwADAOBgNVHQ8BAf8EBAMCBkAwHQYDVR0OBBYEFIz+jZkpky2x -CorjhNpu1m1pDZ76MB8GA1UdIwQYMBaAFEft+GPwma9e/n4OXFjL/uI1N6a9MIHg -BgNVHSAEgdgwgdUwgcgGCisGAQQBrGYDBAEwgbkwKQYIKwYBBQUHAgEWHWh0dHA6 -Ly93d3cuY2VydC5mbm10LmVzL2RwY3MvMIGLBggrBgEFBQcCAjB/DH1RdWFsaWZp -ZWQgY2VydGlmaWNhdGUuIFVuZGVyIHRoZSB1c2FnZSBjb25kaXRpb25zIGFzc2Vy -dGVkIGluIHRoZSBGTk1ULVJDTSBDUFMgKDEwNiwgSm9yZ2UgSnVhbiBzdHJlZXQs -MjgwMDksIE1hZHJpZCwgU3BhaW4pLjAIBgYEAIswAQEwgYYGCCsGAQUFBwEBBHow -eDBBBggrBgEFBQcwAYY1aHR0cDovL29jc3BJU0FjYS5jZXJ0LmZubXQuZXMvb2Nz -cElTQWNhL09jc3BSZXNwb25kZXIwMwYIKwYBBQUHMAKGJ2h0dHA6Ly93d3cuY2Vy -dC5mbm10LmVzL2NlcnRzL0lTQUNBLmNydDBGBggrBgEFBQcBAwQ6MDgwCAYGBACO -RgEBMAsGBgQAjkYBAwIBDzAVBgYEAI5GAQIwCxMDRVVSAgECAgECMAgGBgQAjkYB -BDCBzAYDVR0fBIHEMIHBMIG+oIG7oIG4hoGIbGRhcDovL2xkYXBJU0FjYS5jZXJ0 -LmZubXQuZXMvQ049Q1JMNixjbj1JU0ElMjBDQSxvPUZOTVQtUkNNLEM9RVM/Y2Vy -dGlmaWNhdGVSZXZvY2F0aW9uTGlzdDtiaW5hcnk/YmFzZT9vYmplY3RjbGFzcz1j -UkxEaXN0cmlidXRpb25Qb2ludIYraHR0cDovL3d3dy5jZXJ0LmZubXQuZXMvY3Js -c19JU0FjYS9DUkw2LmNybDANBgkqhkiG9w0BAQsFAAOCAgEAYnVYxWe3b57eq6qG -lVE9f7tiEPUGqmKm2cXlRLY50Hat4O/dVDv9teyNd/fvcaK4UHdhRaF+EhOoDsm9 -RTKrkc4VzWIUA8xbgJL8NlJd1OdVgdIk0kuI7QvQQ/x4c9PTyk0ucBw5MNWyr97U -O68rOBNiF+tS2mrOMJqjQS6vX7tf/HOvyPg9dLY/+KiiuijnAFS9+DPJNWQh8Ukv -SEqgBkydy0pDFLLOREFHiBY7cOflfjoQm+tKxsPt8Mw/z/p5OLeg8cMyVprtVZ2L -ohgkJP/Do0SB1lgenlVWAY7f/7swSgn4y6yd99hB74MKDgREqpBVIn5syrgpfZFK -yYeLZ9/q7FHDdr3TVXLSdcJlIa5+5D8iprdw70vstU9p3mMPXCZNvBFSmVeGNDVm -2jszt7oD254nj5dm/8tXdXqeq4MEi1wHRposKRc6pPtAPFRTcIzRLQ8BRKTEkA6s -UbeshjyIIA0942/zEFRO/H+cEMTqz1ZuCHoS3mwM6qjh0cEsZ0tmUpHzrNltR5WP -o0IKiqqaDxdxN/9OuTId+P5zLRdwsVSduvUm+5krW8Pxn2pkyTg16NN2wLQ7p/Xn -sEPwBVV2lEUJt8n0obHVYZvBZSUchbcpLQaQxMbIG5dpzFXXBYgXSUMhuf3Seoau -oMhXPm9N2UyFJ5fwcoXHZPNI1Uw= ------END CERTIFICATE-----
\ No newline at end of file diff --git a/moaSig/handbook/conf/moa-spss/tslworking/trust/eu/EC_DIGIT.20131030-20161030.SerNo79A1C51E6E5FE7CCD8BF6D097ECA55277868B2C6.cer b/moaSig/handbook/conf/moa-spss/tslworking/trust/eu/EC_DIGIT.20131030-20161030.SerNo79A1C51E6E5FE7CCD8BF6D097ECA55277868B2C6.cer deleted file mode 100644 index 6a81c11..0000000 --- a/moaSig/handbook/conf/moa-spss/tslworking/trust/eu/EC_DIGIT.20131030-20161030.SerNo79A1C51E6E5FE7CCD8BF6D097ECA55277868B2C6.cer +++ /dev/null @@ -1,35 +0,0 @@ -MIIGgTCCBGmgAwIBAgIUeaHFHm5f58zYv20JfspVJ3hossYwDQYJKoZIhvcNAQEF -BQAwgZIxCzAJBgNVBAYTAk5MMSAwHgYDVQQKExdRdW9WYWRpcyBUcnVzdGxpbmsg -Qi5WLjEoMCYGA1UECxMfSXNzdWluZyBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTE3 -MDUGA1UEAxMuUXVvVmFkaXMgRVUgSXNzdWluZyBDZXJ0aWZpY2F0aW9uIEF1dGhv -cml0eSBHMjAeFw0xMzEwMzAxMjI3MTFaFw0xNjEwMzAxMjI3MTFaMHoxCzAJBgNV -BAYTAkJFMRAwDgYDVQQIEwdCcnVzc2VsMRIwEAYDVQQHEwlFdHRlcmJlZWsxHDAa -BgNVBAoTE0V1cm9wZWFuIENvbW1pc3Npb24xFDASBgNVBAsTC0luZm9ybWF0aWNz -MREwDwYDVQQDDAhFQ19ESUdJVDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC -ggEBAJgkkqvJmZaknQC7c6H6LEr3dGtQ5IfOB3HAZZxOZbb8tdM1KMTO3sAifJC5 -HNFeIWd0727uZj+V5kBrUv36zEs+VxiN1yJBmcJznX4J2TCyPfLk2NRELGu65Vwr -K2Whp8cLLANc+6pQn/5wKh23ehZm21mLXcicZ8whksUGb/h8p6NDe1cElD6veNc9 -CwwK2QT0G0mQiEYchqjJkqyY8HEak8t+CbIC4Rrhyxh3HI1fCK0WKS9JjbPQFbvG -mfpBZuLPYZYzP4UXIqfBVYctyodcSAnSfmy6tySMqpVSRhjRn4KP0EfHlq7Ec+H3 -nwuqxd0M4vTJlZm+XwYJBzEFzFsCAwEAAaOCAeQwggHgMFgGA1UdIARRME8wCAYG -BACLMAECMEMGCisGAQQBvlgBgxAwNTAzBggrBgEFBQcCARYnaHR0cDovL3d3dy5x -dW92YWRpc2dsb2JhbC5ubC9kb2N1bWVudGVuMCQGCCsGAQUFBwEDBBgwFjAKBggr -BgEFBQcLAjAIBgYEAI5GAQEwdAYIKwYBBQUHAQEEaDBmMCoGCCsGAQUFBzABhh5o -dHRwOi8vb2NzcC5xdW92YWRpc2dsb2JhbC5jb20wOAYIKwYBBQUHMAKGLGh0dHA6 -Ly90cnVzdC5xdW92YWRpc2dsb2JhbC5jb20vcXZldWNhZzIuY3J0MEYGCiqGSIb3 -LwEBCQEEODA2AgEBhjFodHRwOi8vdHNhMDEucXVvdmFkaXNnbG9iYWwuY29tL1RT -Uy9IdHRwVHNwU2VydmVyMBMGCiqGSIb3LwEBCQIEBTADAgEBMA4GA1UdDwEB/wQE -AwIGQDAfBgNVHSMEGDAWgBTg+A751LXyf0kjtsN5x6M1H4Z6iDA7BgNVHR8ENDAy -MDCgLqAshipodHRwOi8vY3JsLnF1b3ZhZGlzZ2xvYmFsLmNvbS9xdmV1Y2FnMi5j -cmwwHQYDVR0OBBYEFDc3hgIFJTDamDEeQczI7Lot4uaVMA0GCSqGSIb3DQEBBQUA -A4ICAQAZ8EZ48RgPimWY6s4LjZf0M2MfVJmNh06Jzmf6fzwYtDtQLKzIDk8Ztosq -YpNNBoZIFICMZguGRAP3kuxWvwANmrb5HqyCzXThZVPJTmKEzZNhsDtKu1almYBs -zqX1UV7IgZp+jBZ7FyXzXrXyF1tzXQxHGobDV3AEE8vdzEZtwDGpZJPnEPCBzifd -Y+lrrL2rDBjbv0VeildgOP1SIlL7dh1O9f0T6T4ioS6uSdMt6b/OWjqHadsSpKry -0A6pqfOqJWAhDiueqgVB7vus6o6sSmfG4SW9EWW+BEZ510HjlQU/JL3PPmf+Xs8s -00sm77LJ/T/1hMUuGp6TtDsJe+pPBpCYvpm6xu9GL20CsArFWUeQ2MSnE1jsrb00 -UniCKslcM63pU7I0VcnWMJQSNY28OmnFESPK6s6zqoN0ZMLhwCVnahi6pouBwTb1 -0M9/Anla9xOT42qxiLr14S2lHy18aLiBSQ4zJKNLqKvIrkjewSfW+00VLBYbPTmt -rHpZUWiCGiRS2SviuEmPVbdWvsBUaq7OMLIfBD4nin1FlmYnaG9TVmWkwVYDsFmQ -epwPDqjPs4efAxzkgUFHWn0gQFbqxRocKrCsOvCDHOHORA97UWcThmgvr0Jl7ipv -P4Px//tRp08blfy4GMzYls5WF8f6JaMrNGmpfPasd9NbpBNp7A==
\ No newline at end of file diff --git a/moaSig/handbook/conf/moa-spss/tslworking/trust/eu/EU.der b/moaSig/handbook/conf/moa-spss/tslworking/trust/eu/EU.der Binary files differdeleted file mode 100644 index abca57d..0000000 --- a/moaSig/handbook/conf/moa-spss/tslworking/trust/eu/EU.der +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/tslworking/trust/eu/EU2.der b/moaSig/handbook/conf/moa-spss/tslworking/trust/eu/EU2.der Binary files differdeleted file mode 100644 index 1520644..0000000 --- a/moaSig/handbook/conf/moa-spss/tslworking/trust/eu/EU2.der +++ /dev/null diff --git a/moaSig/handbook/conf/moa-spss/tslworking/trust/eu/Pierre_Damas_(Signature).20130717-20180714.SerNo1000000000005A04B848690925470777.cer b/moaSig/handbook/conf/moa-spss/tslworking/trust/eu/Pierre_Damas_(Signature).20130717-20180714.SerNo1000000000005A04B848690925470777.cer Binary files differdeleted file mode 100644 index bc706d9..0000000 --- a/moaSig/handbook/conf/moa-spss/tslworking/trust/eu/Pierre_Damas_(Signature).20130717-20180714.SerNo1000000000005A04B848690925470777.cer +++ /dev/null diff --git a/moaSig/handbook/handbook.html b/moaSig/handbook/handbook.html deleted file mode 100644 index 2497d7f..0000000 --- a/moaSig/handbook/handbook.html +++ /dev/null @@ -1,6 +0,0 @@ -<html> - <head> - <meta http-equiv="refresh" content="0; URL=handbook/index.html"> - </head> - <body><p><a href="handbook/index.html">Zum Handbuch ...</a></p></body> -</html>
\ No newline at end of file diff --git a/moaSig/handbook/handbook/common/LogoBKA.png b/moaSig/handbook/handbook/common/LogoBKA.png Binary files differdeleted file mode 100644 index 6a92647..0000000 --- a/moaSig/handbook/handbook/common/LogoBKA.png +++ /dev/null diff --git a/moaSig/handbook/handbook/common/LogoEGIZ.png b/moaSig/handbook/handbook/common/LogoEGIZ.png Binary files differdeleted file mode 100644 index 39f05d1..0000000 --- a/moaSig/handbook/handbook/common/LogoEGIZ.png +++ /dev/null diff --git a/moaSig/handbook/handbook/common/MOA.css b/moaSig/handbook/handbook/common/MOA.css deleted file mode 100644 index 85ed136..0000000 --- a/moaSig/handbook/handbook/common/MOA.css +++ /dev/null @@ -1,617 +0,0 @@ -body
-{
- font-family: "Times New Roman", Times, serif;
- font-size: medium;
- font-weight: normal;
- margin-left: 2.5em;
- margin-right: 2.5em;
- background-color: white;
- text: #000000;
- link: #990000;
- vlink: #666666;
- alink: #cc9966;
-}
-
-
-
-p
-{
- margin-top: 0pt;
- margin-bottom: 0.5em;
- text-align: justify
-}
-
-pre
-{
- font-family: "Courier New", monospace;
- font-size: 90%;
- background-color: #cccccc;
- color: #000000;
- margin-left:1.5%;
- margin-right:1.5%;
- margin-top: 1em;
- margin-bottom: 1em;
- border: #008000 none;
-}
-
-hr
-{
- color: #000080;
- background-color: #000080;
- margin-top: 0.5em;
- margin-bottom: 0.5em;
-}
-
-table.fixedWidth
-{
- width: 97%;
- margin-left:1.5%;
- margin-right:1.5%;
- margin-top: 1em;
- margin-bottom: 1em;
-}
-
-
-table.varWidth
-{
- margin-left:1.5%;
- margin-top: 1em;
- margin-bottom: 1em;
-}
-
-th
-{
- text-align: left;
-}
-
-h1
-{
- color: #000000;
- text-align: left;
- font-size: 167%;
- font-family: Arial, Helvetica, sans-serif;
- font-weight: normal;
- background-color:#999;
-}
-
-h2
-{
- color: #000000;
- font-size: 150%;
- font-family: Arial, Helvetica, sans-serif;
- font-weight: normal;
- background-color:#999;
-}
-
-h3
-{
- color: #000000;
- font-size: 133%;
- font-family: Arial, Helvetica, sans-serif;
- font-weight: normal;
- background-color:#999;
-}
-
-h4
-{
- color: #000000;
- font-size: 116%;
- font-family: Arial, Helvetica, sans-serif;
- font-weight: normal;
- background-color:#999;
-}
-
-h5
-{
- color: #000000;
- font-size: 100%;
- font-family: Arial, Helvetica, sans-serif;
- font-weight: normal;
- background-color:#999;
-}
-
-h6
-{
- color: #000000;
- font-size: 83%;
- font-family: Arial, Helvetica, sans-serif;
- font-weight: normal;
- background-color:#999;
-}
-
-code
-{
- font-family: "Courier New", Courier, monospace;
- font-size: 90%;
- color: #000000
-}
-
-dd
-{
- margin-top: 0.8em;
- margin-bottom: 0.8em;
- text-align: justify
-
-}
-
-dt
-{
- margin-top: 0.8em;
- font-family: Arial, Helvetica, sans-serif;
- color: #000080
-}
-
-ol
-{
- margin-top: 0.5em;
- margin-bottom: 0.5em
-}
-
-ol.alpha
-{
- list-style-type: lower-alpha
-}
-
-li
-{
- margin-top: 0.25em;
- margin-bottom: 0.25em;
- text-align: justify
-}
-
-a:hover
-{
- color: #990000
-}
-
-
-.title
-{
- text-align: left;
- font-size: 200%;
- color: #000000;
- font-family: Arial, Helvetica, sans-serif;
- margin-top: 0.4em;
- margin-bottom: 0.4em;
- background-color:#999;
-}
-
-.subtitle
-{
- text-align: left;
- font-size: 133%;
- color: #000000;
- font-family: Arial, Helvetica, sans-serif;
- margin-top: 0.4em;
- margin-bottom: 0.4em
-}
-
-.glossaryTerm
-{
- font-style: italic;
- color: #006699
-}
-
-.example
-{
- font-family: "Courier New", monospace;
- background-color: #CCFFFF;
- color: #000000;
- margin: 0pt 0pt;
- border: #008000 none
-}
-
-.schema
-{
- font-family: "Courier New", monospace;
- background-color: #FFFFCC;
- color: #000000;
- margin: 0pt 0pt;
- border: #008000 none
-}
-
-.documentinfo
-{
- font-family: Arial, Helvetica, sans-serif;
- font-size: 100%;
-}
-
-.ol-contents
-{
- font-size: 100%;
- margin-top: 0.0em;
- margin-bottom: 0.0em;
-}
-
-.li-contents
-{
- font-size: 100%;
- margin-top: 0.0em;
- margin-bottom: 0.0em;
-}
-
-.logoTitle
-{
- text-align: center;
- font-size: 200%;
- color: #000080;
- font-family: Arial, Helvetica, sans-serif;
-}
-
-.logoTable
-{
- margin-bottom: 0px;
- margin-left: 0px
-}
-
-.superscript
-{
- vertical-align: super;
- font-size: 66%;
-}
-
-.term
-{
- font-style: italic;
-}
-
-.comment
-{
- color: #000000;
- background: #ffff00;
- font-style: italic
-}
-
-.addedErrata12
-{
- color: #FF0000;
- background-color: #FFEEEE;
- text-decoration: underline
-}
-
-.deletedErrata12
-{
- color: #999999;
- background-color: #EEEEEE;
- text-decoration: line-through
-}
-
-.added12
-{
- color: #FF0000;
- text-decoration: underline
-; background-color: #F8F0FF
-}
-
-.deleted12
-{
- color: #999999;
- text-decoration: line-through
-; background-color: #f8f0ff
-}
-
-.rfc2119Keyword
-{
- font-variant: small-caps;
- font-style: normal;
-}
-
-.remark { font-style: italic}
-
-li.faq
-{
- margin-top: 1.5em;
- margin-bottom: 1.5em;
-}
-
-.faq-question
-{
- color: #000080;
- font-size: 100%;
- font-family: Arial, Helvetica, sans-serif;
- font-weight: normal;
- margin-bottom: 0.4em;
-}
-
-
-/*body
-{
- font-family: "Times New Roman", Times, serif;
- font-size: medium;
- font-weight: normal;
- margin-left: 2.5em;
- margin-right: 2.5em;
-}
-
-p
-{
- margin-top: 0pt;
- margin-bottom: 0.5em;
- text-align: justify
-}
-
-pre
-{
- font-family: "Courier New", monospace;
- font-size: 90%;
- background-color: #cccccc;
- color: #000000;
- margin-left:1.5%;
- margin-right:1.5%;
- margin-top: 1em;
- margin-bottom: 1em;
- border: #008000 none;
-}
-
-hr
-{
- color: #000080;
- background-color: #000080;
- margin-top: 0.5em;
- margin-bottom: 0.5em;
-}
-
-table.fixedWidth
-{
- width: 97%;
- margin-left:1.5%;
- margin-right:1.5%;
- margin-top: 1em;
- margin-bottom: 1em;
-}
-
-
-table.varWidth
-{
- margin-left:1.5%;
- margin-top: 1em;
- margin-bottom: 1em;
-}
-
-th
-{
- text-align: left;
-}
-
-h1
-{
- color: #000080;
- text-align: left;
- font-size: 167%;
- font-family: Arial, Helvetica, sans-serif;
- font-weight: normal
-}
-
-h2
-{
- color: #000080;
- font-size: 150%;
- font-family: Arial, Helvetica, sans-serif;
- font-weight: normal
-}
-
-h3
-{
- color: #000080;
- font-size: 133%;
- font-family: Arial, Helvetica, sans-serif;
- font-weight: normal
-}
-
-h4
-{
- color: #000080;
- font-size: 116%;
- font-family: Arial, Helvetica, sans-serif;
- font-weight: normal
-}
-
-h5
-{
- color: #000080;
- font-size: 100%;
- font-family: Arial, Helvetica, sans-serif;
- font-weight: normal
-}
-
-h6
-{
- color: #000080;
- font-size: 83%;
- font-family: Arial, Helvetica, sans-serif;
- font-weight: normal
-}
-
-code
-{
- font-family: "Courier New", Courier, monospace;
- font-size: 90%;
- color: #000000
-}
-
-dd
-{
- margin-top: 0.8em;
- margin-bottom: 0.8em;
- text-align: justify
-
-}
-
-dt
-{
- margin-top: 0.8em;
- font-family: Arial, Helvetica, sans-serif;
- color: #000080
-}
-
-ol
-{
- margin-top: 0.5em;
- margin-bottom: 0.5em
-}
-
-ol.alpha
-{
- list-style-type: lower-alpha
-}
-
-li
-{
- margin-top: 0.25em;
- margin-bottom: 0.25em;
- text-align: justify
-}
-
-a:hover
-{
- color: #990000
-}
-
-
-.title
-{
- text-align: left;
- font-size: 167%;
- color: #000080;
- font-family: Arial, Helvetica, sans-serif;
- margin-top: 0.4em;
- margin-bottom: 0.4em
-}
-
-.subtitle
-{
- text-align: left;
- font-size: 133%;
- color: #000080;
- font-family: Arial, Helvetica, sans-serif;
- margin-top: 0.4em;
- margin-bottom: 0.4em
-}
-
-.glossaryTerm
-{
- font-style: italic;
- color: #006699
-}
-
-.example
-{
- font-family: "Courier New", monospace;
- background-color: #CCFFFF;
- color: #000000;
- margin: 0pt 0pt;
- border: #008000 none
-}
-
-.schema
-{
- font-family: "Courier New", monospace;
- background-color: #FFFFCC;
- color: #000000;
- margin: 0pt 0pt;
- border: #008000 none
-}
-
-.documentinfo
-{
- font-family: Arial, Helvetica, sans-serif;
- font-size: 100%;
-}
-
-.ol-contents
-{
- font-size: 100%;
- margin-top: 0.0em;
- margin-bottom: 0.0em;
-}
-
-.li-contents
-{
- font-size: 100%;
- margin-top: 0.0em;
- margin-bottom: 0.0em;
-}
-
-.logoTitle
-{
- text-align: center;
- font-size: 133%;
- color: #000080;
- font-family: Arial, Helvetica, sans-serif;
-}
-
-.logoTable
-{
- margin-bottom: 0px;
- margin-left: 0px
-}
-
-.superscript
-{
- vertical-align: super;
- font-size: 66%;
-}
-
-.term
-{
- font-style: italic;
-}
-
-.comment
-{
- color: #000000;
- background: #ffff00;
- font-style: italic
-}
-
-.addedErrata12
-{
- color: #FF0000;
- background-color: #FFEEEE;
- text-decoration: underline
-}
-
-.deletedErrata12
-{
- color: #999999;
- background-color: #EEEEEE;
- text-decoration: line-through
-}
-
-.added12
-{
- color: #FF0000;
- text-decoration: underline
-; background-color: #F8F0FF
-}
-
-.deleted12
-{
- color: #999999;
- text-decoration: line-through
-; background-color: #f8f0ff
-}
-
-.rfc2119Keyword
-{
- font-variant: small-caps;
- font-style: normal;
-}
-
-.remark { font-style: italic}
-
-li.faq
-{
- margin-top: 1.5em;
- margin-bottom: 1.5em;
-}
-
-.faq-question
-{
- color: #000080;
- font-size: 100%;
- font-family: Arial, Helvetica, sans-serif;
- font-weight: normal;
- margin-bottom: 0.4em;
-}
-*/
\ No newline at end of file diff --git a/moaSig/handbook/handbook/config/MOA-SPSS-config-2.0.0.xsd b/moaSig/handbook/handbook/config/MOA-SPSS-config-2.0.0.xsd deleted file mode 100644 index 391ef41..0000000 --- a/moaSig/handbook/handbook/config/MOA-SPSS-config-2.0.0.xsd +++ /dev/null @@ -1,353 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?>
-<!--
- MOA SP/SS 2.0.0 Configuration Schema
--->
-<xs:schema xmlns:config="http://reference.e-government.gv.at/namespace/moaconfig/20021122#" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#" xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://reference.e-government.gv.at/namespace/moaconfig/20021122#" elementFormDefault="qualified" attributeFormDefault="unqualified">
- <xs:import namespace="http://www.w3.org/2000/09/xmldsig#" schemaLocation="http://www.w3.org/TR/xmldsig-core/xmldsig-core-schema.xsd"/>
- <xs:element name="MOAConfiguration">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="Common" minOccurs="0">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="HardwareCryptoModule" minOccurs="0" maxOccurs="unbounded">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="Name" type="xs:string"/>
- <xs:element name="SlotId" type="xs:string" minOccurs="0"/>
- <xs:element name="UserPIN" type="xs:string"/>
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:choice>
- <xs:element name="PermitExternalUris" minOccurs="0">
- <xs:complexType>
- <xs:sequence minOccurs="0">
- <xs:element name="BlackListUri" minOccurs="0" maxOccurs="unbounded">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="IP" type="xs:string"/>
- <xs:element name="Port" type="xs:int" minOccurs="0"/>
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="ForbidExternalUris" minOccurs="0">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="WhiteListUri" minOccurs="0" maxOccurs="unbounded">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="IP" type="xs:string"/>
- <xs:element name="Port" type="xs:int" minOccurs="0"/>
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- </xs:choice>
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="SignatureCreation" minOccurs="0">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="KeyModules">
- <xs:complexType>
- <xs:choice maxOccurs="unbounded">
- <xs:element name="HardwareKeyModule">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="Id" type="xs:token"/>
- <xs:element name="Name" type="xs:string"/>
- <xs:element name="SlotId" type="xs:string" minOccurs="0"/>
- <xs:element name="UserPIN" type="xs:string"/>
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="SoftwareKeyModule">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="Id" type="xs:token"/>
- <xs:element name="FileName" type="xs:string"/>
- <xs:element name="Password" type="xs:string" minOccurs="0"/>
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- </xs:choice>
- </xs:complexType>
- </xs:element>
- <xs:element name="KeyGroup" maxOccurs="unbounded">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="Id" type="xs:token"/>
- <xs:sequence maxOccurs="unbounded">
- <xs:element name="Key">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="KeyModuleId" type="xs:token"/>
- <xs:element name="KeyCertIssuerSerial" type="dsig:X509IssuerSerialType"/>
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- </xs:sequence>
- <xs:element name="DigestMethodAlgorithm" minOccurs="0"/>
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="KeyGroupMapping" maxOccurs="unbounded">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="CustomerId" type="dsig:X509IssuerSerialType" minOccurs="0"/>
- <xs:element name="KeyGroupId" type="xs:token" maxOccurs="unbounded"/>
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="XMLDSig">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="CanonicalizationAlgorithm" type="xs:anyURI" minOccurs="0"/>
- <xs:element name="DigestMethodAlgorithm" type="xs:anyURI" minOccurs="0"/>
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="CreateTransformsInfoProfile" type="config:ProfileType" minOccurs="0" maxOccurs="unbounded"/>
- <xs:element name="CreateSignatureEnvironmentProfile" type="config:ProfileType" minOccurs="0" maxOccurs="unbounded"/>
- <xs:element name="XAdES" minOccurs="0">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="Version">
- <xs:simpleType>
- <xs:restriction base="xs:token">
- <xs:enumeration value="1.4.2"/>
- </xs:restriction>
- </xs:simpleType>
- </xs:element>
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="SignatureVerification" minOccurs="0">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="CertificateValidation">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="PathConstruction">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="AutoAddCertificates" type="xs:boolean"/>
- <xs:element name="UseAuthorityInformationAccess" type="xs:boolean"/>
- <xs:element name="CertificateStore">
- <xs:complexType>
- <xs:choice>
- <xs:element name="DirectoryStore">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="Location" type="xs:token"/>
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- </xs:choice>
- </xs:complexType>
- </xs:element>
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="PathValidation">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="ChainingMode">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="DefaultMode" type="config:ChainingModeType"/>
- <xs:element name="TrustAnchor" minOccurs="0" maxOccurs="unbounded">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="Identification" type="dsig:X509IssuerSerialType"/>
- <xs:element name="Mode" type="config:ChainingModeType"/>
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="TrustProfile" minOccurs="0" maxOccurs="unbounded">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="Id" type="xs:token"/>
- <xs:element name="TrustAnchorsLocation" type="xs:anyURI"/>
- <xs:element name="SignerCertsLocation" type="xs:anyURI" minOccurs="0"/>
- <xs:element name="EUTSL" minOccurs="0">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="CountrySelection" type="xs:string" minOccurs="0"/>
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <!--
- <xs:element name="TSLTrustProfile">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="Id" type="xs:token"/>
- <xs:element name="TrustAnchorsLocation" type="xs:anyURI"/>
- <xs:element name="SignerCertsLocation" type="xs:anyURI" minOccurs="0"/>
- <xs:element name="EUTSL" minOccurs="0">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="CountrySelection" minOccurs="0"/>
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- -->
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="RevocationChecking">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="EnableChecking" type="xs:boolean"/>
- <xs:element name="MaxRevocationAge" type="xs:integer"/>
- <xs:element name="ServiceOrder" minOccurs="0">
- <xs:complexType>
- <xs:sequence maxOccurs="2">
- <xs:element name="Service">
- <xs:simpleType>
- <xs:restriction base="xs:token">
- <xs:enumeration value="OCSP"/>
- <xs:enumeration value="CRL"/>
- </xs:restriction>
- </xs:simpleType>
- </xs:element>
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="Archiving">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="EnableArchiving" type="xs:boolean"/>
- <xs:element name="ArchiveDuration" type="xs:nonNegativeInteger" minOccurs="0"/>
- <xs:element name="Archive" minOccurs="0">
- <xs:complexType>
- <xs:choice>
- <xs:element name="DatabaseArchive">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="JDBCURL" type="xs:anyURI"/>
- <xs:element name="JDBCDriverClassName" type="xs:token"/>
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- </xs:choice>
- </xs:complexType>
- </xs:element>
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="DistributionPoint" minOccurs="0" maxOccurs="unbounded">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="CAIssuerDN" type="xs:token"/>
- <xs:choice maxOccurs="unbounded">
- <xs:element name="CRLDP">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="Location" type="xs:anyURI"/>
- <xs:element name="ReasonCode" minOccurs="0" maxOccurs="unbounded">
- <xs:simpleType>
- <xs:restriction base="xs:token">
- <xs:enumeration value="unused"/>
- <xs:enumeration value="keyCompromise"/>
- <xs:enumeration value="cACompromise"/>
- <xs:enumeration value="affiliationChanged"/>
- <xs:enumeration value="superseded"/>
- <xs:enumeration value="cessationOfOperation"/>
- <xs:enumeration value="certificateHold"/>
- <xs:enumeration value="privilegeWithdrawn"/>
- <xs:enumeration value="aACompromise"/>
- </xs:restriction>
- </xs:simpleType>
- </xs:element>
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="OCSPDP">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="Location" type="xs:anyURI"/>
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- </xs:choice>
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="CrlRetentionIntervals" minOccurs="0">
- <xs:complexType>
- <xs:sequence maxOccurs="unbounded">
- <xs:element name="CA">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="X509IssuerName" type="xs:string"/>
- <xs:element name="Interval" type="xs:integer"/>
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="TSLConfiguration" minOccurs="0">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="EUTSLUrl" type="xs:anyURI" minOccurs="0"/>
- <xs:element name="UpdateSchedule" minOccurs="0">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="StartTime" type="xs:time"/>
- <xs:element name="Period" type="xs:unsignedLong"/>
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="WorkingDirectory" type="xs:anyURI" minOccurs="0"/>
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="VerifyTransformsInfoProfile" type="config:ProfileType" minOccurs="0" maxOccurs="unbounded"/>
- <xs:element name="SupplementProfile" type="config:ProfileType" minOccurs="0" maxOccurs="unbounded"/>
- <xs:element name="PermitFileURIs" type="xs:boolean" default="false" minOccurs="0"/>
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:simpleType name="ChainingModeType">
- <xs:restriction base="xs:string">
- <xs:enumeration value="chaining"/>
- <xs:enumeration value="pkix"/>
- </xs:restriction>
- </xs:simpleType>
- <xs:complexType name="ProfileType">
- <xs:sequence>
- <xs:element name="Id" type="xs:token"/>
- <xs:element name="Location" type="xs:anyURI"/>
- </xs:sequence>
- </xs:complexType>
-</xs:schema>
diff --git a/moaSig/handbook/handbook/config/config.html b/moaSig/handbook/handbook/config/config.html deleted file mode 100644 index 3ef04f9..0000000 --- a/moaSig/handbook/handbook/config/config.html +++ /dev/null @@ -1,1224 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> -<html> -<head> - <meta http-equiv="content-type" content="text/html; charset=iso-8859-1"> - <title>MOA SS und SP - Konfiguration</title> - <link rel="stylesheet" href="../common/MOA.css" type="text/css"> -</head> -<body link="#990000"> - <table class="logoTable" width="100%" border="0" cellspacing="0" cellpadding="10"> - <tr> - <td align="center" class="logoTitle" width="267"><img src="../common/LogoBKA.png" alt="Logo BKA" width="267" height="37" align="left"></td> - <td align="center" class="logoTitle">Dokumentation</td> - <td align="center" class="logoTitle" width="123"><img src="../common/LogoEGIZ.png" alt="Logo EGIZ" width="230" height="81" align="right"></td> - </tr> - </table> - <hr/> - <p class="title"><a href="../index.html">MOA: Serversignatur (SS) und Signaturprüfung (SP)</a></p> - <p class="subtitle">Konfiguration</p> - <hr/> - <h1>Inhalt</h1> - <ol> - <li> - <p><a href="#uebersicht">Übersicht</a></p> - <ol> - <li><a href="#uebersicht_allgemeines">Allgemeines</a> - <ol> - <li><a href="#uebersicht_allgemeines_namenskonventionen">Namenskonventionen</a></li> - </ol> - </li> - <li><a href="#uebersicht_zentraledatei">Zentrale Konfigurationsdatei</a> - <ol> - <li><a href="#uebersicht_zentraledatei_aktualisierung">Aktualisierung auf das Format von MOA SP/SS 1.3</a></li> - </ol> - </li> - <li><a href="#uebersicht_bekanntmachung">Bekanntmachung der Konfigurationsdatei - </a> - <ol> - <li><a href="#uebersicht_bekanntmachung_laufenderbetrieb">Aktualisierung der Konfiguration im laufenden Betrieb</a></li> - </ol> - </li> - <li><a href="#uebersicht_logging">Konfiguration des Loggings</a></li> - </ol> - </li> - <li><a href="#konfigurationsparameter">Konfigurationsparameter</a> - <ol> - <li><a href="#konfigurationsparameter_allgemein">Allgemeines Parameter</a> <ol> - <li><a href="#konfigurationsparameter_allgemein_hardwarecryptomodule">Hardwarebasiertes Kryptographiemodul</a></li> - <li><a href="#konfigurationsparameter_allgemein_externaluris">Auflösen externer URIs</a> - <ol> - <li><a href="#konfigurationsparameter_allgemein_externaluris_blacklisting">Blacklisting</a></li> - <li><a href="#konfigurationsparameter_allgemein_externaluris_whitelisting">Whitelisting</a></li> - </ol> - </li> - </ol> - </li> - <li><a href="#konfigurationsparameter_ss">Parameter für MOA SS</a> <ol> - <li><a href="#konfigurationsparameter_ss_keymodules">Schlüsselspeicher</a> <ol> - <li><a href="#konfigurationsparameter_ss_keymodules_hardwarekeymodule">Hardware-Schlüsselspeicher</a></li> - <li><a href="#konfigurationsparameter_ss_keymodules_softwarekeymodule">Software-Schlüsselspeicher</a></li> - </ol> - </li> - <li><a href="#konfigurationsparameter_ss_keygroup">Schlüsselgruppe</a></li> - <li><a href="#konfigurationsparameter_ss_keygroupmapping">Zuordnung von Schlüsselgruppen zu einem - Kunden</a></li> - <li><a href="#konfigurationsparameter_ss_xmldsig">Parameter für XML-Signaturen</a> </li> - <li><a href="#konfigurationsparameter_ss_createtransformsinfoprofile">Profil für Transformationen</a></li> - <li><a href="#konfigurationsparameter_ss_createsignatureenvironmentprofile">Profil für Signaturumgebung </a></li> - <li><a href="#konfigurationsparameter_ss_xades">XAdES Version</a></li> - </ol> - </li> - <li><a href="#konfigurationsparameter_sp">Parameter für MOA SP</a> <ol> - <li><a href="#konfigurationsparameter_sp_certificatevalidation">Zertifikatsvalidierung</a> <ol> - <li><a href="#konfigurationsparameter_sp_certificatevalidation_pathconstruction">Konstruktion des Zertifikatspfads</a> - <ol> - <li><a href="#konfigurationsparameter_sp_certificatevalidation_pathconstruction_autoaddcertificates">Cachen von Zertifikaten</a></li> - <li><a href="#konfigurationsparameter_sp_certificatevalidation_pathconstruction_useauthorityinfoaccess">Auswertung der Zertifikatserweiterung <span class="term">Authority Information Access</span></a></li> - <li><a href="#konfigurationsparameter_sp_certificatevalidation_pathconstruction_certificatestore">Lokalisierung des Zertifikatsspeichers</a></li> - </ol> - </li> - <li><a href="#konfigurationsparameter_sp_certificatevalidation_pathvalidation">Valdierung des Zertifikatspfads</a> - <ol> - <li><a href="#konfigurationsparameter_sp_certificatevalidation_pathvalidation_chainingmode">Gültigkeitsmodell für die Zertifikatskettenprüfung</a></li> - <li><a href="#konfigurationsparameter_sp_certificatevalidation_pathvalidation_trustprofile">Vertrauensprofile</a></li> - </ol> - </li> - <li><a href="#konfigurationsparameter_sp_certificatevalidation_revocationchecking">Widerrufsprüfung</a> - <ol> - <li><a href="#konfigurationsparameter_sp_certificatevalidation_revocationchecking_enablechecking">Aktivieren - der Widerrufsprüfung</a></li> - <li><a href="#konfigurationsparameter_sp_certificatevalidation_revocationchecking_maxrevocationage">Maximales Alter der Widerrufsinformation</a></li> - <li><a href="#konfigurationsparameter_sp_certificatevalidation_revocationchecking_serviceorder">Reihenfolge der Widerrufsdienste</a></li> - <li><a href="#konfigurationsparameter_sp_certificatevalidation_revocationchecking_archiving">Archivierung von Widerrufsinformationen</a></li> - <li><a href="#konfigurationsparameter_sp_certificatevalidation_revocationchecking_distributionpoint">Manuelle - Konfiguration von Verteilungspunkten für Widerrufsinformationen</a></li> - <li><a href="#konfigurationsparameter_sp_certificatevalidation_tslconfiguration">TSL Konfiguration</a></li> - </ol> - </li> - </ol> - </li> - <li><a href="#konfigurationsparameter_sp_verifytransformsinfoprofile">Profil für Transformationen</a></li> - <li><a href="#konfigurationsparameter_sp_supplementprofile">Profil für Ergänzungsobjekte</a></li> - <li><a href="#konfigurationsparameter_sp_permitfileuris">file-URIs</a></li> - </ol> - </li> - </ol> - </li> - <li><a href="#beispielkonfigurationen">Beispielkonfigurationen</a> - <ol> - <li><a href="#beispielkonfigurationen_minss">Minimale Konfiguration für MOA SS</a></li> - <li><a href="#beispielkonfigurationen_minsp">Minimale Konfiguration für MOA SP</a></li> - <li><a href="#beispielkonfigurationen_minsptsl">Minimale Konfiguration für MOA SP mit TSL Unterstützung</a></li> - <li><a href="#beispielkonfigurationen_typspss">Typische Konfiguration für MOA SP/SS</a></li> - </ol> - </li> - </ol> -<hr/> - <h1><a name="uebersicht" id="uebersicht"></a>1 Übersicht </h1> - <p>Dieses Handbuch beschreibt detailliert die Konfigurationsmöglichkeiten für MOA SP/SS. Wenn nicht anders angegeben, beziehen sich die Erläuterungen sowohl auf die Konfiguration des Webservices als auch auf die Konfiguration von MOA SP/SS für den Einsatz als Klassenbibliothek.</p> - <h2><a name="uebersicht_allgemeines" id="uebersicht_allgemeines"></a>1.1 Allgemeines</h2> - <h3><a name="uebersicht_allgemeines_namenskonventionen" id="uebersicht_allgemeines_namenskonventionen"></a>1.1.1 Namenskonventionen </h3> - <p>Folgende Namenraum-Präfixe werden in diesem Handbuch zur Kennzeichnung der Namenräume - von XML-Elementen verwendet: </p> - <table class="fixedWidth" border="1" cellpadding="2"> - <tr> - <th scope="col">Präfix</th> - <th scope="col">Namenraum</th> - </tr> - <tr> - <td><code>cfg</code></td> - <td><code>http://reference.e-government.gv.at/namespace/moaconfig/20021122#</code></td> - </tr> - <tr> - <td><code>dsig</code></td> - <td><code>http://www.w3.org/2000/09/xmldsig#</code></td> - </tr> - <tr> - <td><code>moa</code></td> - <td><code>http://reference.e-government.gv.at/namespace/moa/20020822#</code></td> - </tr> - <tr> - <td><code>xs</code></td> - <td><code>http://www.w3.org/2001/XMLSchema</code></td> - </tr> - </table> - <h2><a name="uebersicht_zentraledatei" id="uebersicht_zentraledatei"></a>1.2 Zentrale Konfigurationsdatei</h2> - <p>Die Konfiguration von MOA SP/SS erfolgt zentral über eine einzige Konfigurationsdatei. Das Format der Konfigurationsdatei ist XML und muss dem Schema <a href="./MOA-SPSS-config-2.0.0.xsd">MOA-SPSS-config-2.0.0.xsd</a> entsprechen. <a href="#konfigurationsparameter">Abschnitt 2</a> erläutert die Konfigurationsmöglichkeiten im Einzelnen.</p> - <h3><a name="uebersicht_zentraledatei_aktualisierung" id="uebersicht_zentraledatei_aktualisierung"></a>1.2.1 - Aktualisierung auf das Format von MOA SP/SS 1.3</h3> - <p>Mit dem Wechsel auf Version 1.3 verwendet MOA SP/SS ein neues, übersichtlicheres Format für die - XML-Konfigurationsdatei. </p> - <p>Wenn Sie von einer älteren Version von MOA SP/SS auf die Version 1.3 wechseln und Ihre bestehende - Konfiguration beibehalten wollen, steht Ihnen ein einfaches Kommandozeilenwerkzeug zur Verfügung, mit dem - Sie Ihre Konfigurationsdatei vom bisherigen auf das neue Format migrieren können. </p> - <p>Dieses Werkzeug können Sie durch Ausführen des Scripts <code>configtool</code> aus dem Verzeichnis - <code>tools</code> im MOA-Installationsverzeichnis verwenden:</p> - <pre>configtool c:\pfad\zur\konfiguration\config.alt.xml c:\pfad\zur\konfiguration\config.neu.xml</pre> - <p>Der erste Parameter für das Script gibt also Pfad und Dateiname der bestehenden, alten Konfigurationsdatei - an, der zweite Parameter Pfad und Dateiname für die zu erzeugende Konfigurationsdatei im neuen Format (<span class="remark">Hinweis: - Die Beispielpfade beziehen sich auf Windows-Betriebssysteme; für Unix-Betriebssysteme wählen Sie bitte sinngemäße - Pfade.</span>). </p> - <h2><a name="uebersicht_bekanntmachung" id="uebersicht_bekanntmachung"></a>1.3 Bekanntmachung der Konfigurationsdatei</h2> - <p>Die zentrale Konfigurationsdatei von MOA SP/SS wird der <span class="term">Java Virtual Machine</span>, in der MOA SP/SS läuft, durch eine <span class="term">System Property </span> mitgeteilt (wird beim Starten der <span class="term">Java Virtual Machine</span> in der Form <code>-D<name>=<wert></code> gemacht). Der Name der <span class="term">System Property</span> lautet <code>moa.spss.server.configuration</code>; als Wert der <span class="term">System Property</span> ist der Pfad sowie der Name der Konfigurationsdatei im Dateisystem anzugeben, z.B.</p> - <pre>moa.spss.server.configuration=C:/Programme/apache/tomcat-4.1.30/conf/moa-spss/moa-spss.config.xml -</pre> -<p>Weitere Informationen zum Bekanntmachen der zentralen Konfigurationsdatei für MOA SP/SS erhalten Sie in <a href="../install/install.html#webservice_basisinstallation_installation_spssdeploy">Abschnitt 2.1.2.3</a> des Installationshandbuchs.</p> -<h3><a name="uebersicht_bekanntmachung_laufenderbetrieb" id="uebersicht_bekanntmachung_laufenderbetrieb"></a>1.3.1 - Aktualisierung der Konfiguration im laufenden Betrieb</h3> -<p>Wird MOA SP/SS als Webservice eingesetzt, kann durch Aufrufen einer speziellen URL des Webservice ein erneutes Einlesen der Konfigurationsdatei erzwungen werden. Damit ist es möglich, Änderungen an der Konfigurationsdatei vorzunehmen, und diese Änderungen ohne Neustart des zu Grunde liegenden Servlet Containers in den Betrieb zu übernehmen.</p> -<p>Weitere Informationen zum erneuten Einlesen der Konfigurationsdatei im Webservice-Betrieb erhalten Sie in <a href="../install/install.html#webservice_basisinstallation_installation_changeonthefly">Abschnitt 2.1.2.5</a> des Installationshandbuchs.</p> -<h2><a name="uebersicht_logging" id="uebersicht_logging"></a>1.4 Konfiguration des Loggings</h2> - <p>MOA SP/SS verwendet als Framework für Logging-Information die Open Source Software <code>log4j</code>. Die Konfiguration der Logging-Information erfolgt nicht direkt durch MOA SP/SS, sondern über eine eigene Konfigurationsdatei, die der <span class="term">Java Virtual Machine</span> durch eine <span class="term">System Property </span> mitgeteilt wird. Der Name der <span class="term">System Property </span> lautet <code>log4j.configuration</code>; als Wert der <span class="term">System Property </span> ist eine URL anzugeben, die auf die <code>log4j</code>-Konfigurationsdatei verweist, z.B. </p> -<pre>log4j.configuration=file:/C:/Programme/apache/tomcat-4.1.30/conf/moa-spss/log4j.properties</pre> - Weitere Informationen zur Konfiguration des Loggings erhalten Sie in <a href="../install/install.html#webservice_basisinstallation_logging">Abschnitt 2.1.3</a> des Installationshandbuchs. -<p></p> - <h1><a name="konfigurationsparameter"></a>2 Konfigurationsparameter</h1> - <p>Nachfolgend werden die verfügbaren Konfigurationsparameter der zentralen Konfigurationsdatei im Detail erläutert. Die Reihenfolge der Abhandlung entspricht der Reihenfolge des vorgeschriebenen Auftretens in der Konfigurationsdatei. Für beispielhafte Konfigurationsdateien siehe <a href="#beispielkonfigurationen">Abschnitt 3</a>. </p> - <p>Muss der Wert eines Konfigurationsparameters eine URL oder eine Pfadangabe sein, und wird als konkreter Wert eine relative URL bzw. ein relativer Pfad angegeben, so wird diese Angabe relativ zum Pfad jenes Verzeichnisses interpretiert, in dem die zentrale Konfigurationsdatei gespeichert ist.</p> - <h2><a name="konfigurationsparameter_allgemein" id="konfigurationsparameter_allgemein"></a>2.1 - Allgemeine Parameter</h2> - <h3><a name="konfigurationsparameter_allgemein_hardwarecryptomodule" id="konfigurationsparameter_allgemein_hardwarecryptomodule"></a>2.1.1 Hardwarebasiertes Kryptographiemodul</h3> - <table class="fixedWidth" border="1" cellpadding="2"> - <tr> - <td>Name</td> - <td><code>cfg:Common/cfg:HardwareCryptoModule</code></td> - </tr> - <tr> - <td> Gebrauch</td> - <td>Null mal bis unbeschränkt oft </td> - </tr> - <tr> - <td>Erläuterung</td> - <td><p> Mit diesem Element wird MOA SP bzw. SS die Verfügbarkeit eines Hardware-Kryptographiemoduls - mitgeteilt. Wird ein solches Hardware-Kryptographiemodul konfiguriert, versucht MOA SP/SS das - Hardware-Kryptographiemodul für die Verifikation des Signaturwerts (MOA SP) bzw. für die Berechnung - von Hashwerten (MOA SP und MOA SS) anstatt des standardmäßig konfigurierten Software-Kryptographiemoduls - zu verwenden. </p> - <p>Werden mehrere Hardware-Kryptographiemodule konfiguriert, prüft MOA SP/SS entsprechend - der Konfigurationsreihenfolge der Hardware-Kryptographiemodule, ob eines der Module die benötigte - Funktion (Hashwertberechnung, Siganturprüfung) zur Verfügung stellt. Verwendet wird das erste Hardware-Kryptographiemodul, - das ide benötigte Funktion zur Verfügung stellen kann. </p> - <p>Das Element weist bis zu drei Kindelemente auf:</p> - <ul> - <li>Element <code>cfg:Name</code>: Dieses obligatorische Element vom Typ <code>xs:string</code> enthält - den Dateinamen der DLL (Windows) oder der Shared-Library (Unix), welche die PKCS#11-Schnittstelle - zum Hardware-Kryptographiemodul implementiert; der Wert enthält entweder einen Dateinamen - mit absoluter Pfadangabe oder einen Dateinamen ohne Pfadangabe. Im letzteren Fall wird der Dateiname - relativ zum Suchpfad des Betriebssystems interpretiert. </li> - <li>Element <code>cfg:SlotId</code>: Dieses optionale Element vom Typ <code>xs:string</code> gibt - des Slot der PKCS#11-Schnittstelle an, über den das Hardware-Kryptographiemodul von MOA - SP/SS angesprochen werden soll. Fehlt dieses Attribut, wählt MOA SP/SS selbst einen Slot - aus der Liste der verfügbaren Slots aus. </li> - <li>Element <code>cfg:UserPIN</code>: Dieses obligatorische Element vom Typ <code>xs:string</code> enthält - den PIN-Code zur Freischaltung der Kryptographiefunktionen über die PKCS#11-Schnittstelle - des Hardware-Kryptographiemoduls. </li> - </ul></td> - </tr> - </table> - - <h3><a name="konfigurationsparameter_allgemein_externaluris" id="konfigurationsparameter_allgemein_externaluris"></a>2.1.2 Auflösen externer URIs</h3> - <p>Standardmäßig ist das Auflösen von externen URIs (inkl. localhost) deaktiviert (d.h. keines der nachfolgenden Konfigurationselement <code>cfg:PermitExternalUris</code> bzw. <code>cfg:ForbidExternalUris</code> existiert). Es gibt jedoch zwei Möglichkeiten das Auflösen zu aktivieren: </p> - <ul> - <li>Blacklisting: Hierbei wird das Auflösen von externen URIs erlaubt. Es kann jedoch durch die Angaben einer Blacklist der Zugriff auf bestimmte URIs eingeschränkt werden.</li> - <li>Whitelisting: Hierbei ist das Auflösen von externen URIs weiterhin verboten. Es kann jedoch durch die Angabe einer Whitelist der Zugriff auf bestimmte URIs gestattet werden.</li> -</ul> -<p>Diese beiden Möglichkeiten stehen wahlweise zur Verfügung, d.h. es kann entweder Blacklisting oder Whitelisting konfiguriert werden.</p> -<h4><a name="konfigurationsparameter_allgemein_externaluris_blacklisting" id="konfigurationsparameter_allgemein_externaluris_blacklisting"></a>2.1.2.1 Blacklisting</h4> - <table class="fixedWidth" border="1" cellpadding="2"> - <tr> - <td>Name</td> - <td><code>cfg:Common/cfg:PermitExternalUris</code></td> - </tr> - <tr> - <td> Gebrauch</td> - <td>Null mal bis einmal </td> - </tr> - <tr> - <td>Erläuterung</td> - <td><p>Mit diesem Element wird MOA SP bzw. SS mitgeteilt, dass das Auflösen externer URIs (inkl. localhost) erlaubt ist. Ist dieses Element vorhanden, so ist das Auflösen aller externer URIs aktiviert. Durch einen Blacklist-Mechanismus kann jedoch eingeschränkt werden, dass bestimmte URIs, die sich auf dieser Blacklist befinden, nicht aufgelöst werden. Diese Blacklist kann in dem folgenden Kindelement angegeben werden:</p> - <ul> - <li>Element <code>cfg:BlackListUri</code>: Dieses optionale und unbegrenzten Element gibt einen Blacklist-Eintrag an und besteht aus folgenden zwei weiteren Kindelementen:</li> - <ul> - <li>Element <code>cfg:IP</code>: Dieses Element vom Type <code>xs:string</code> gibt eine IP-Adresse (z.B.: 127.0.0.1) oder einen IP-Adress-Bereich (z.B.: 192.168) an. Bei Angabe einer IP-Adresse werden nur URIs mit exakt dieser IP-Adresse nicht aufgelöst. Bei Angabe eines IP-Adress-Bereichs werden sämtliche URIs, die mit diesem IP-Bereich beginnen nicht aufgelöst (z.B.: alle IPs im Bereich 192.168.0.0 bis 192.168.255.255)</li> - <li>Element <code>cfg:Port</code>: Dieses optionale Element vom Typ <code>xs:int</code> legt eine bestimmte Portnummer fest. Ist eine Portnummer angegeben werden alle URIs mit obiger IP-Adresse und dieser Portnummer nicht aufgelöst. Ist keine Portnummer angegeben, sind alle Portnummern gesperrt.</li> - </ul> - </ul> - - <p><b>Empfehlung:</b> Bei aktiviertem Auflösen von externen URIs sollten sowohl <em>localhost</em> als auch der <em>gesamte Intranetbereich</em> in die Blacklist eingetragen werden. Hierzu eine beispielhafte Blacklist: </p> - <p><code><cfg:BlackListUri><br> - <cfg:IP>192.168</cfg:IP><br> - </cfg:BlackListUri><br> - <cfg:BlackListUri><br> - <cfg:IP>127.0.0.1</cfg:IP><br> - </cfg:BlackListUri></code></p></td> - </tr> - </table> - - <h4><a name="konfigurationsparameter_allgemein_externaluris_whitelisting" id="konfigurationsparameter_allgemein_externaluris_whitelisting"></a>2.1.2.2 Whitelisting</h4> -<table class="fixedWidth" border="1" cellpadding="2"> - <tr> - <td>Name</td> - <td><code>cfg:Common/cfg:ForbidExternalUris</code></td> - </tr> - <tr> - <td> Gebrauch</td> - <td>Null mal bis einmal </td> - </tr> - <tr> - <td>Erläuterung</td> - <td><p>Mit diesem Element wird MOA SP bzw. SS mitgeteilt, dass das Auflösen externer URIs (inkl. localhost) zwar verboten ist, aber durch eine Whitelist entsprechende Ausnahmen angeben werden können. D.h. URIs, die sich auf dieser Whitelist befinden werden aufgelöst. Diese Whitelist kann in dem folgenden Kindelement angegeben werden:</p> - <ul> - <li>Element <code>cfg:WhiteListUri</code>: Dieses optionale und unbegrenzten Element gibt einen Whitelist-Eintrag an und besteht aus folgenden zwei weiteren Kindelementen:</li> - <ul> - <li>Element <code>cfg:IP</code>: Dieses Element vom Type <code>xs:string</code> gibt eine IP-Adresse (z.B.: 127.0.0.1) oder einen IP-Adress-Bereich (z.B.: 192.168) an. Bei Angabe einer IP-Adresse werden nur URIs mit exakt dieser IP-Adresse aufgelöst. Bei Angabe eines IP-Adress-Bereichs werden sämtliche URIs, die mit diesem IP-Bereich beginnen aufgelöst (z.B.: alle IPs im Bereich 192.168.0.0 bis 192.168.255.255)</li> - <li>Element <code>cfg:Port</code>: Dieses optionale Element vom Typ <code>xs:int</code> legt eine bestimmte Portnummer fest. Ist eine Portnummer angegeben werden alle URIs mit obiger IP-Adresse und dieser Portnummer aufgelöst. Ist Portnummer angegeben, sind alle Portnummern offen.</li> - </ul> - </ul></td> - </tr> -</table> -<h2><a name="konfigurationsparameter_ss" id="konfigurationsparameter_ss"></a>2.2 Parameter für MOA SS</h2> - <h3><a name="konfigurationsparameter_ss_keymodules" id="konfigurationsparameter_ss_keymodules"></a>2.2.1 Schlüsselspeicher</h3> - <h4><a name="konfigurationsparameter_ss_keymodules_hardwarekeymodule" id="konfigurationsparameter_ss_keymodules_hardwarekeymodule"></a>2.2.1.1 Hardware-Schlüsselspeicher</h4> - <table class="fixedWidth" border="1" cellpadding="2"> - <tr> - <td>Name</td> - <td><code>cfg:SignatureCreation/cfg:KeyModules/cfg:HardwareKeyModule</code></td> - </tr> - <tr> - <td>Gebrauch</td> - <td>Null mal bis unbeschränkt oft; zumindest ein Hardware- (<code>cfg:HardwareKeyModule</code>) oder - Software-Schlüsselspeicher (<code>cfg:SoftwareKeyModule</code>) muss - jedoch vorhanden sein</td> - </tr> - <tr> - <td>Erläuterung</td> - <td><p>Mit diesem Element wird MOA SS die Verfügbarkeit eines Hardware-Schlüsselspeichers mitgeteilt. </p> - <p>Das Element weist bis zu vier Kindelemente auf:</p> - <ul> - <li>Element <code>cfg:Id</code>: Dieses obligatorische Element vom Typ <code>xs:token</code> enthält - einen frei wählbaren Identifikator für dieses Konfigurationselement, der innerhalb der - XML-Konfigurationsdatei eindeutig sein muss. Mit Hilfe dieses Identifikators wird im Konfigurationselement <code>cfg:SignatureCreation/cfg:KeyGroup</code> auf - dieses Konfigurationselement referenziert.</li> - <li> Element <code>cfg:Name</code>: Dieses obligatorische Element vom Typ <code>xs:string</code> enthält - den Dateinamen der DLL (Windows) oder der Shared-Library (Unix), welche die PKCS#11-Schnittstelle - zum Hardware-Schlüsselspeicher implementiert; der Wert enthält entweder einen Dateinamen - mit absoluter Pfadangabe oder einen Dateinamen ohne Pfadangabe. Im letzteren Fall wird der Dateiname - relativ zum Suchpfad des Betriebssystems interpretiert. </li> - <li>Element <code>cfg:SlotId</code>: Dieses optionale Element vom Typ <code>xs:string</code> gibt des - Slot der PKCS#11-Schnittstelle an, über den der Hardware-Schlüsselspeicher von MOA SS - angesprochen werden soll. Fehlt dieses Attribut, wählt MOA SS selbst einen Slot aus der Liste - der verfügbaren Slots aus. </li> - <li>Element <code>cfg:UserPIN</code>: Dieses obligatorische Element vom Typ <code>xs:string</code> enthält - den PIN-Code zur Freischaltung der Schlüsselverwendung über die PKCS#11-Schnittstelle - des Hardware-Schlüsselspeichers. </li> - </ul> </td> - </tr> - </table> - <h4><a name="konfigurationsparameter_ss_keymodules_softwarekeymodule" id="konfigurationsparameter_ss_keymodules_softwarekeymodule"></a>2.2.1.2 - Software-Schlüsselspeicher</h4> - <table class="fixedWidth" border="1" cellpadding="2"> - <tr> - <td>Name</td> - <td><code>cfg:SignatureCreation/cfg:KeyModules/cfg:SoftwareKeyModule</code></td> - </tr> - <tr> - <td>Gebrauch</td> - <td>Null mal bis unbeschränkt oft; zumindest ein Hardware- (<code>cfg:HardwareKeyModule</code>) oder - Software-Schlüsselspeicher (<code>cfg:SoftwareKeyModule</code>) muss jedoch vorhanden sein</td> - </tr> - <tr> - <td>Erläuterung</td> - <td><p>Mit diesem Element wird MOA SS die Verfügbarkeit eines Software-Schlüsselspeichers in - Form einer PKCS#12-Datei mitgeteilt. </p> - <p>Das Element weist drei obligatorische Kindelemente auf:</p> - <ul> - <li>Element <code>cfg:Id</code>: Dieses Element vom Typ <code>xs:token</code> enthält einen - frei wählbaren Identifikator für dieses Konfigurationselement, der innerhalb der XML-Konfigurationsdatei - eindeutig sein muss. Mit Hilfe dieses Identifikators wird im Konfigurationselement <code>cfg:SignatureCreation/cfg:KeyGroup</code> auf - dieses Konfigurationselement referenziert.</li> - <li> Element <code>cfg:Filename</code>: Dieses Element vom Typ <code>xs:string</code> enthält - den Dateinamen der PKCS#12-Datei, die den Software-Schlüsselspeicher repräsentiert. Der - Wert enthält einen Dateinamen mit absoluter oder relativer Pfadangabe. Eine relative Pfadangabe - wird von MOA SS relativ zum Pfad jenes Verzeichnisses interpretiert, in dem die zentrale Konfigurationsdatei - gespeichert ist.</li> - <li>Element <code>cfg:Password</code>: Dieses Element vom Typ <code>xs:string</code> enthält - das Passwort zum Entschlüsseln der Inhalte der PKCS#12-Datei. </li> - </ul> </td> - </tr> - </table> - <h3><a name="konfigurationsparameter_ss_keygroup" id="konfigurationsparameter_ss_keygroup"></a>2.2.2 Schlüsselgruppe</h3> - <table class="fixedWidth" border="1" cellpadding="2"> - <tr> - <td>Name</td> - <td><code>cfg:SignatureCreation/cfg:KeyGroup</code></td> - </tr> - <tr> - <td>Gebrauch</td> - <td>einmal bis unbeschränkt oft </td> - </tr> - <tr> - <td>Erläuterung</td> - <td><p>Mit diesem Element wird in MOA SS eine Schlüsselgruppe definiert. Eine Schlüsselgruppe - ist eine Zusammenfassung von einem oder mehreren privaten Schlüsseln, die in Hardware- bzw. Softwareschlüsselspeichern - (vergleiche Abschnitte <a href="#konfigurationsparameter_ss_keymodules_hardwarekeymodule">2.2.1.1</a> bzw. <a href="#konfigurationsparameter_ss_keymodules_softwarekeymodule">2.2.1.2</a>) - verwaltet werden. Die Schlüsselgruppe wird vom Kunden von MOA SS über einen eindeutigen Bezeichner - im Request zur Signaturerstellung angesprochen. </p> -<p>Sinn der Zusammenfassung von mehreren privaten Schlüsseln zu einer Schlüsselgruppe ist - es, dass MOA SS selbst entscheidet, welcher konkrete Schlüssel aus der Schlüsselgruppe - zur Erstellung der Signatur verwendet wird. Durch die somit mögliche Parallelisierung (mehrere - private Schlüssel werden parallel für Anfragen, die auf die gleiche Schlüsselgruppe - referenzieren) lässt sich der Durchsatz der erstellten Signaturen verbessern. </p> - <p>Das Element <code>cfg:SignatureCreation/cfg:KeyGroup</code> hat folgenden Element-Inhalt:</p> - <ul> - <li>Element <code>cfg:Id</code>: Dieses obligatorische Element vom Typ <code>xs:token</code> enthält - einen frei wählbaren Identifikator für dieses Konfigurationselement, der innerhalb der - XML-Konfigurationsdatei eindeutig sein muss. Mit Hilfe dieses Identifikators wird im Konfigurationselement <code>cfg:SignatureCreation/cfg:KeyGroupMapping</code> auf - dieses Konfigurationselement referenziert. Weiters wird dieser Identifikator im Request zur Erstellung - der Signatur verwendet, um die zu verwendende Schlüsselgruppe anzugeben.</li> - <li>Element <code>cfg:Key</code>: Dieses Element muss zumindest einmal vorkommen. Jedes Element beschreibt - einen der privaten Schlüssel, aus denen sich die Schlüsselgruppe zusammensetzt. Das Element - hat folgenden Element-Inhalt: - <ul> - <li>Element <code>cfg:KeyModuleId</code>: Dieses Element kommt genau einmal vor. Mit ihm wird - auf einen der konfigurierten Hardware- oder Software-Schlüsselspeicher referenziert. - Sein Textinhalt vom Typ <code>xs:token</code> enthält den Identifikator des Hardware- - oder Software-Schlüsselspeichers, so wie er in <code>cfg:SignatureCreation/cfg:KeyModules/cfg:HardwareKeyModule/cfg:Id</code> bzw. <code>cfg:SignatureCreation/cfg:KeyModules/cfg:SoftwareKeyModule/cfg:Id</code> festgelegt - wurde. </li> - <li>Element <code>cfg:KeyCertIssuerSerial</code>: Dieses Element kommt ebenfalls genau einmal - vor. Mit ihm wird ein privater Schlüssel innerhalb des mit <code>cfg:KeyModuleId</code> ausgewählten - Schlüsselspeichers ausgewählt (sowohl Hardware- als auch Softwareschlüsselspeicher - können ja prinzipiell mehr als nur einen einzigen privaten Schlüssel verwalten). - Das Element hat folgenden Element-Inhalt: - <ul> - <li>Element <code>dsig:X509IssuerName</code>: Dieses Element kommt genau einmal vor. - Sein Textinhalt vom Typ <code>xs:string</code> enthält den Namen des Ausstellers - des Zertifikats für den ausgewählten privaten Schlüssel.</li> - <li>Element <code>dsig:X509SerialNumber</code>: Dieses Element kommt genau einmal vor. - Sein Textinhalt vom Typ <code>xs:integer</code> enthält die Seriennummer des Zertifikats - für den ausgewählten privaten Schlüssel. </li> - </ul> - </li> - </ul> - </li> - <li>Element <code>cfg:DigestMethodAlgorithm</code>: Dieses optionale Element spezifiert einen Digest-Algorithmus, der für das Erstellen von XML-Signaturen mittels dieser Schlüsselgruppe verwendet werden soll. Der Default-Wert bzw. ein allfällig in Abschnitt "<a href="#konfigurationsparameter_ss_xmldsig">Parameter für XML-Signaturen</a>" definierter Wert, werden dadurch für diese Schlüsselgruppe überschrieben. Mögliche Werte sind dem Element <code>cfg:SignatureCreation/cfg:XMLDSig/cfg:DigestMethodAlgorithm</code> ebenfalls in Abschnitt "<a href="#konfigurationsparameter_ss_xmldsig">Parameter für XML-Signaturen</a>" zu entnehmen. </li> - </ul> - <p>Um auf einfache Weise für alle in Ihren Schlüsselspeichern enthaltenen privaten Schlüssel - die jeweiligen Werte für <code>dsig:X509IssuerName</code> und <code>dsig:X509SerialNumber</code> zu -</p> - <ol> - <li>Erfassen Sie in der zentralen Konfigurationsdatei alle Ihre Schlüsselspeicher mit Hilfe - der Konfigurationselemente <code>cfg:SignatureCreation/cfg:KeyModules/cfg:HardwareKeyModule</code> bzw. <code>cfg:SignatureCreation/cfg:KeyModules/cfg:SoftwareKeyModule</code>. </li> - <li>Starten Sie nun - mit bewusst fehlenden <code>cfg:SignatureCreation/cfg:KeyGroup</code> Elementen - den MOA SP/SS Server. - Stellen Sie dabei sicher, dass das Log-Level für den Logger <code>moa.spss.server</code> zumindest - auf das Niveau <code>info</code> eingestellt ist (Informationen zur Konfiguration des Loggings - von MOA SP/SS finden Sie in <a href="../install/install.html#webservice_basisinstallation_logging">Abschnitt - 2.1.3</a> des Installationshandbuchs). Im Log-File werden dann alle verfügbaren privaten Schlüssel - an Hand der Werte <code>dsig:X509IssuerName</code> und <code>dsig:X509SerialNumber</code> aufgelistet. - Vergleichen Sie den folgenden beispielhaften Auszug:<br> - <pre>INFO | 15 15:10:14,737 | moa.spss.server | TID=startup NID=node1 MSG=Key <br> ID=SKM_Kunde1;CN=Test CA - Signaturdienste,OU=Technik und Standards,O=Stabstelle IKT-Strategie des Bundes,C=AT;7 -INFO | 15 15:10:14,737 | moa.spss.server | TID=startup NID=node1 MSG=Key - ID=SKM_allgemein;CN=Test CA - Signaturdienste,OU=Technik und Standards,O=Stabstelle IKT-Strategie des Bundes,C=AT;9<br>INFO | 15 15:10:14,737 | moa.spss.server | TID=startup NID=node1 MSG=Key <br> ID=SKM_Kunde2;CN=Test CA - Signaturdienste,OU=Technik und Standards,O=Stabstelle IKT-Strategie des Bundes,C=AT;8</pre> - Der Wert der Eigenschaft <code>ID</code> des Logging-Eintrags gliedert sich in drei Teile: - <ol> - <li>Der erste Teil enthält den Identifikator des Hardware- bzw. Softwareschlüsselspeichers, - so wie er im entsprechenden Konfigurationselement <code>cfg:SignatureCreation/cfg:KeyModules/cfg:HardwareKeyModule</code> bzw. <code>cfg:SignatureCreation/cfg:KeyModules/cfg:SoftwareKeyModule</code> erfasst - wurde. </li> - <li>Der zweite Teil enthält nach dem ersten Semikolon den Namen des Ausstellers des Zertifikats - für den privaten Schlüssel, so wie er in <code>dsig:X509IssuerName</code> benötigt - wird. </li> - <li>Der dritte Teil enthält nach dem zweiten Semikolon die Seriennummer des Zertifikats für - den privaten Schlüssel, so wie er in <code>dsig:X509SerialNumber</code> benötigt wird. </li> - </ol> - </li> - <li>Erfassen Sie nun mit Hilfe der neu gewonnenen Informationen die Schlüsselgruppen, die in - MOA SS zur Verfügung stehen sollen. </li> - </ol> - <p>Wenn Ihnen für einen privaten Schlüssel, den Sie in eine Schlüsselgruppe aufnehmen - wollen, das Zertifikat bekannt ist und es in Form einer DER-kodierten Datei vorliegt, können - Sie alternativ das Script <code>certtool</code> aus dem Verzeichnis <code>tools</code> im MOA-Installationsverzeichnis - verwenden, um zu den Werten für <code>dsig:X509IssuerName</code> und <code>dsig:X509SerialNumber</code> zu - kommen: </p> - <pre>certtool -info <certfilename></pre> <p><code><certfilename></code> enthält den Namen der DER-kodierten Zertifikatsdatei, für - die die beiden Werte <code>dsig:X509IssuerName</code> und <code>dsig:X509SerialNumber</code> geliefert - werden sollen. Eine beispielhafte Ausgabe des Scripts sieht wie folgt aus: </p> - <pre>SubjectDN (RFC2253): - CN=Test: Signaturdienst aller Kunden: ECDSA (P192v1),OU=Technik und Standards,O=Stabsstelle IKT-Strategie des Bundes,C=AT -IssuerDN (RFC2253) : - CN=Test CA - Signaturdienste,OU=Technik und Standards,O=Stabstelle IKT-Strategie des Bundes,C=AT<br>Serial Number : - 9</pre> <p>Die Werte für <code>IssuerDN (RFC2253)</code> sowie <code>Serial Number</code> entsprechen - den Werten für <code>dsig:X509IssuerName</code> und <code>dsig:X509SerialNumber</code>.</p></td> - </tr> - </table> - <h3><a name="konfigurationsparameter_ss_keygroupmapping" id="konfigurationsparameter_ss_keygroupmapping"></a>2.2.3 - Zuordnung von Schlüsselgruppen zu Kunden</h3> - <table class="fixedWidth" border="1" cellpadding="2"> - <tr> - <td>Name</td> - <td><code>cfg:SignatureCreation/cfg:KeyGroupMapping</code></td> - </tr> - <tr> - <td>Gebrauch</td> - <td>einmal bis unbeschränkt oft </td> - </tr> - <tr> - <td>Erläuterung</td> - <td><p> Das Element <code>cfg:SignatureCreation/cfg:KeyGroupMapping</code> ordnet einem Kunden von MOA SS die ihm zur Verfügung - stehenden Schlüsselgruppen zu, indem das den Kunden repräsentierende SSL-Clientzertifikat - mit einer oder mehreren Schlüsselgruppen assoziiert wird. </p> - <p>Das Element hat folgenden Element-Inhalt:</p> - <ul> - <li>Element <code>cfg:CustomerId</code>: Dieses Element bezeichnet auf eindeutige - Weise das den Kunden repräsentierende SSL-Clientzertifikat. Der Aufbau des Elements enspricht - dem Aufbau des Elements <code>cfg:KeyCertIssuerSerial</code> in Abschnitt <a href="#konfigurationsparameter_ss_keygroup">2.2.2</a>. - Um zu den Werten für Ausstellername und Seriennummer des SSL-Clientzertifikats zu kommen, - können Sie auch hier das Script <code>certtool</code> (vergleiche Abschnitt <a href="#konfigurationsparameter_ss_keygroup">2.2.2</a>) - verwenden. </li> - <li>Element <code>cfg:KeyGroupId</code>: Dieses Element vom Typ <code>xs:token</code> kommt so oft - vor, wie Schlüsselgruppen - einem bestimmten SSL-Clientzertifikat zugeordnet werden sollen, mindestens jedoch einmal. Sein - Wert repräsentiert dem Identifikator der Schlüsselgruppe, so wie er in <code>cfg:SignatureCreation/cfg:KeyGroup/cfg:Id</code> festgelegt - wurde. </li> - </ul> - <p class="remark">Bitte beachten Sie: Für maximal ein Konfigurationselement <code>cfg:SignatureCreation/cfg:KeyGroupMapping</code> kann <code>cfg:CustomerId</code> auch - weggelassen werden. Die darin enthaltenen Schlüsselgruppen stehen dann allen Kunden von MOA - SS gleichermaßen zur Verfügung.</p></td> - </tr> - </table> - <h3><a name="konfigurationsparameter_ss_xmldsig" id="konfigurationsparameter_ss_xmldsig"></a>2.2.4 Parameter - für XML-Signaturen </h3> - <table class="fixedWidth" border="1" cellpadding="2"> - <tr> - <td>Name</td> - <td><code>cfg:SignatureCreation/cfg:XMLDSig/cfg:CanonicalizationAlgorithm</code></td> - </tr> - <tr> - <td> Gebrauch</td> - <td>Null mal oder einmal </td> - </tr> - <tr> - <td>Erläuterung</td> - <td><p>Als Inhalt des Elements kann der Kanonisierungs-Algorithmus, der für das Erstellen von XML-Signaturen verwendet werden soll und in der Signatur als Inhalt von <code>dsig:Signature/dsig:SignedInfo/dsig:CanonicalizationMethod</code> aufscheint, spezifiziert werden. Folgende Werte dürfen verwendet werden:</p> -<p> -<pre>http://www.w3.org/TR/2001/REC-xml-c14n-20010315 <br>http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithComments <br>http://www.w3.org/2001/10/xml-exc-c14n# <br>http://www.w3.org/2001/10/xml-exc-c14n#WithComments </pre> - <p></p> <p>Wird das Element nicht angegeben, wird folgender Wert als Default-Wert verwendet:</p> - <pre>http://www.w3.org/TR/2001/REC-xml-c14n-20010315 </pre> <p>Für die genaue Bedeutung der Werte siehe die <a href="http://www.w3.org/TR/xmldsig-core/" target="_blank">Spezifikation für XML-Signaturen</a>.</p></td> - </tr> - </table> - <table class="fixedWidth" border="1" cellpadding="2"> - <tr> - <td>Name</td> - <td><code>cfg:SignatureCreation/cfg:XMLDSig/cfg:DigestMethodAlgorithm</code></td> - </tr> - <tr> - <td>Gebrauch</td> - <td>Null mal oder einmal </td> - </tr> - <tr> - <td>Erläuterung</td> - <td><p>Als Inhalt des Elements kann der Digest-Algorithmus, der für das Erstellen von XML-Signaturen verwendet werden soll und in der Signatur als Inhalt von <code>dsig:Signature/dsig:SignedInfo/dsig:Reference/dsig:DigestMethod</code> aufscheint, spezifiziert werden. Folgende Werte dürfen verwendet werden: -</p> - <pre>http://www.w3.org/2000/09/xmldsig#sha1 -http://www.w3.org/2000/09/xmldsig#sha256<br>http://www.w3.org/2000/09/xmldsig#sha384<br>http://www.w3.org/2000/09/xmldsig#sha512 </pre> - Wird das Element nicht angegeben, wird - abhängig von der konfigurierten XAdES-Version (siehe <a href="#konfigurationsparameter_ss_xades">XAdES-Version</a>)- folgender Wert als Default-Wert verwendet: - <p>Für XAdES Version 1.1.1:</p> - <pre>http://www.w3.org/2000/09/xmldsig#sha1</pre> - <p>Für XAdES Version 1.4.2:</p> -<pre>http://www.w3.org/2000/09/xmldsig#sha256</pre> -<p>Für die genaue Bedeutung der Werte siehe die <a href="http://www.w3.org/TR/xmldsig-core/" target="_blank">Spezifikation für XML-Signaturen</a>.</p></td> - </tr> - </table> - <h3><a name="konfigurationsparameter_ss_createtransformsinfoprofile" id="konfigurationsparameter_ss_createtransformsinfoprofile"></a>2.2.5 Profil für Transformationen</h3> - <table class="fixedWidth" border="1" cellpadding="2"> - <tr> - <td>Name</td> - <td><code>cfg:SignatureCreation/cfg:CreateTransformsInfoProfile</code></td> - </tr> - <tr> - <td>Gebrauch</td> - <td>Null mal bis unbeschränkt oft</td> - </tr> - <tr> - <td>Erläuterung</td> - <td><p>MOA SS erlaubt die Hinterlegung von vordefinierten Profilen für Transformationen, die im Rahmen - einer XML-Signaturerstellung zur Anwendung kommen sollen. Im Request zur XML-Signaturerstellung - reicht es dann aus, auf dieses Profil zu referenzieren, anstatt die gesamten Transformationen explizit - anzugeben. </p> - <p><code>cfg:CreateTransformsInfoProfile</code> enthält für ein bestimmtes Datenobjekt - für eine zu erstellende XML-Signatur die auf dieses Datenobjekt anzuwendenden Transformationen, - sowie allenfalls für die Durchführung der Transformationen notwendige Ergänzungsobjekte - (z.B. einen zu importierenden Stylesheet für eine XSL-Transformation).</p> - <p><code>cfg:CreateTransformsInfoProfile</code> weist folgende obligatorische Kindelemene auf: </p> - <ul> - <li>Element<code> Id</code>: Dieses Element<code></code> vom Typ <code>xs:token</code> enthält einen frei - wählbaren Identifikator für dieses Konfigurationselement, der innerhalb der XML-Konfigurationsdatei - eindeutig sein muss. Dieser Identifikator wird im Request zur Erstellung der XML-Signatur verwendet, - um das hinterlegte Profil zu referenzieren (vergleiche Element <code>moa:CreateTransformsInfoProfileID</code>). </li> - <li>Element<code></code> <code>Location</code>: Dieses Element<code></code> vom Typ <code>xs:anyURI</code> enthält - den Namen der XML-Datei, die das hinterlegte Profil beinhaltet. Der Wert enthält eine relative - oder absolute URI. Eine relative URI - wird von MOA SS als File-URI relativ zum Lage jenes Verzeichnisses interpretiert, in dem die zentrale - Konfigurationsdatei gespeichert ist. Die XML-Datei muss als Wurzelelement das Element<code> moa:CreateTransformsInfoProfile - </code>enthalten.</li> - </ul> </td> - </tr> - </table> - <h3><a name="konfigurationsparameter_ss_createsignatureenvironmentprofile" id="konfigurationsparameter_ss_createsignatureenvironmentprofile"></a>2.2.6 Profil für Signaturumgebung </h3> - <table class="fixedWidth" border="1" cellpadding="2"> - <tr> - <td>Name</td> - <td><code>cfg:SignatureCreation/cfg:CreateSignatureEnvironmentProfile</code></td> - </tr> - <tr> - <td>Gebrauch</td> - <td>Null mal bis unbeschränkt oft</td> - </tr> - <tr> - <td>Erläuterung</td> - <td><p>MOA SS erlaubt die Hinterlegung von vordefinierten Profilen für die Signaturumgebung, - die im Rahmen einer XML-Signaturerstellung zur Anwendung kommen soll. Im Request zur XML-Signaturerstellung - reicht es dann aus, auf dieses Profil zu referenzieren, anstatt die Informationen zur Signaturumgebung - explizit anzugeben. </p> - <p><code>cfg:CreateSignatureEnvironmentProfile</code> enthält für eine zu erstellende XML-Signatur, - die in ein bereits bestehendes XML-Dokument integriert werden soll, die Stelle, an der die XML-Signatur - eingefügt werden soll, sowie allenfalls für die Verarbeitung des bestehenden XML-Dokuments - notwendige Ergänzungsobjekte (z.B. ein XML-Schema für das validierende Parsen des bestehenden - XML-Dokuments).</p> - <p><code>cfg:</code><code>CreateSignatureEnvironmentProfile</code> weist folgende obligatorische Kindelemente - auf: </p> - <ul> - <li>Element<code> Id</code>: Dieses Element<code></code> vom Typ <code>xs:token</code> enthält - einen frei wählbaren Identifikator für dieses Konfigurationselement, der innerhalb der - XML-Konfigurationsdatei eindeutig sein muss. Dieser Identifikator wird im Request zur Erstellung - der XML-Signatur verwendet, um das hinterlegte Profil zu referenzieren (vergleiche Element <code>moa:</code><code>CreateSignatureEnvironmentProfileID</code>). </li> - <li>Element<code></code> <code>Location</code>: Dieses Element<code></code> vom Typ <code>xs:anyURI</code> enthält - den Namen der XML-Datei, die das hinterlegte Profil beinhaltet. Der Wert enthält eine relative - oder absolute URI. Eine relative URI wird von MOA SS als File-URI relativ zum Lage jenes Verzeichnisses - interpretiert, in dem die zentrale Konfigurationsdatei gespeichert ist. Die XML-Datei muss als - Wurzelelement das Element<code> moa:CreateSignatureEnvironmentProfile </code>enthalten.</li> - </ul></td> - </tr> - </table> - <h3><a name="konfigurationsparameter_ss_xades" id="konfigurationsparameter_ss_xades"></a>2.2.7 XAdES Version</h3> - <table class="fixedWidth" border="1" cellpadding="2"> - <tr> - <td>Name</td> - <td><code>cfg:SignatureCreation/cfg:XAdES</code></td> - </tr> - <tr> - <td>Gebrauch</td> - <td>Null mal bis einmal</td> - </tr> - <tr> - <td>Erläuterung</td> - <td><p>MOA SS ermöglicht die Erstellung einer herkömmlichen XML-Signatur (das Attribut <code>SecurityLayerConformity</code> im <code>CreateXMLSignatureRequest</code> ist auf <code>false</code> gesetzt) oder einer XAdES-Signatur (<code>SecurityLayerConformity=true</code>) gemäß der <a href="http://www.buergerkarte.at/konzept/securitylayer/spezifikation/20020831/core/Core.html#signaturerstellungNachXMLDSIGAntwort" target="_blank">Security-Layer Spezifikation V1.1</a>. Dieses Element gibt nun an welche XAdES-Version in diesem Fall eingesetzt werden soll. Bei Nichtvorhandensein des Elements wird die bisherige Standardversion XAdES 1.1.1 verwendet. Im folgenden Kindelement kann jedoch eine andere XAdES-Version konfiguriert werden. <code>cfg:</code><code>XAdES</code> weist daher folgendes obligatorische Kindelement - auf: </p> - <ul> - <li>Element<code> Version</code>: Dieses Element<code></code> vom Typ <code>xs:token</code> gibt die zu verwendende XAdES-Version an. Derzeit kann nur die Version 1.4.2 angegeben werden.</li> - </ul></td> - </tr> - </table> - <h2><a name="konfigurationsparameter_sp" id="konfigurationsparameter_sp"></a>2.3 -Parameter für MOA SP </h2> - <h3> <a name="konfigurationsparameter_sp_certificatevalidation" id="konfigurationsparameter_sp_certificatevalidation"></a>2.3.1 - Zertifikatsvalidierung</h3> - <h4><a name="konfigurationsparameter_sp_certificatevalidation_pathconstruction" id="konfigurationsparameter_sp_certificatevalidation_pathconstruction"></a>2.3.1.1 - Konstruktion des Zertifikatspfads</h4> - <h5><a name="konfigurationsparameter_sp_certificatevalidation_pathconstruction_autoaddcertificates" id="konfigurationsparameter_sp_certificatevalidation_pathconstruction_autoaddcertificates"></a>2.3.1.1.1 Cachen von Zertifikaten </h5> - <table class="fixedWidth" border="1" cellpadding="2"> - <tr> - <td> Name </td> - <td><code>cfg:SignatureVerification/cfg:CertificateValidation/cfg:PathConstruction/cfg:AutoAddCertificates</code></td> - </tr> - <tr> - <td>Gebrauch</td> - <td>genau einmal</td> - </tr> - <tr> - <td>Erläuterung</td> - <td><p> Der Inhalt dieses Elements vom Typ <code>xs:boolean</code> gibt an, ob Zertifikate, die in einer - zu prüfenden - Signatur enthalten sind bzw. bei der Zertifikatspfaderstellung durch Auswertung der Zertifikatserweiterung <span class="term">Authority - Information Access</span> (siehe - auch Parameter <code>cfg:UseAuthorityInfoAccess</code>) aus dem Internet geladen werden, automatisch - in den lokalen Zertifikatsspeicher hinzugefügt werden sollen.</p> - <p>Zulässige Werte für diesen Parameter sind <code>true</code> oder <code>false</code>.</p> - </td> - </tr> - </table> - <h5><a name="konfigurationsparameter_sp_certificatevalidation_pathconstruction_useauthorityinfoaccess" id="konfigurationsparameter_sp_certificatevalidation_pathconstruction_useauthorityinfoaccess"></a>2.3.1.1.2 Auswertung - der Zertifikatserweiterung <span class="term">Authority Information Access</span> - </h5> - <table class="fixedWidth" border="1" cellpadding="2"> - <tr> - <td> Name </td> - <td><code>cfg:SignatureVerification/cfg:CertificateValidation/cfg:PathConstruction/cfg:UseAuthorityInfoAccess</code></td> - </tr> - <tr> - <td>Gebrauch</td> - <td>genau einmal</td> - </tr> - <tr> - <td>Erläuterung</td> - <td><p> Der Inhalt dieses Elements vom Typ <code>xs:boolean</code> gibt an, ob die Zertifikatserweiterung <span class="term">Authority - Information Access</span> für die Zertifikatspfaderstellung verwendet werden soll. Wird der - Wert auf <code>true</code> gesetzt, dann setzt MOA auch den Parameter <code>cfg:AutoAddCertificate</code> automatisch - auf <code>true</code> und ignoriert den gegebenenfalls in der Konfigurationsdatei dafür gesetzten - Wert. </p> - <p>Zulässige Werte für diesen Parameter sind <code>true</code> oder <code>false</code>.</p></td> - </tr> - </table> - <h5><a name="konfigurationsparameter_sp_certificatevalidation_pathconstruction_certificatestore" id="konfigurationsparameter_sp_certificatevalidation_pathconstruction_certificatestore"></a>2.3.1.1.3 Lokalisierung - des Zertifikatsspeichers </h5> - <table class="fixedWidth" border="1" cellpadding="2"> - <tr> - <td> Name </td> - <td><code>cfg:SignatureVerification/cfg:CertificateValidation/cfg:PathConstruction/cfg:CertificateStore/cfg:DirectoryStore/cfg:Location</code></td> - </tr> - <tr> - <td>Gebrauch</td> - <td>genau einmal</td> - </tr> - <tr> - <td>Erläuterung</td> - <td><p> Der Inhalt dieses Elements vom Typ <code>xs:token</code> gibt ein Verzeichnis im lokalen Dateisystem - an, das von MOA als lokaler Zertifikatsspeicher verwendet werden soll. -Zulässige Werte für diesen Parameter sind absolute oder relative Pfadangaben, wobei relative Pfadangaben -als relativ zum Pfad jenes Verzeichnisses interpretiert werden, in dem die zentrale - Konfigurationsdatei gespeichert ist. Beispiele für zulässige Werte lauten:</p> - <pre>C:/Programme/apache/tomcat-4.1.30/conf/moa-spss/certstore</pre> - <pre>certstore</pre></td> - </tr> - </table> - <h4><a name="konfigurationsparameter_sp_certificatevalidation_pathvalidation" id="konfigurationsparameter_sp_certificatevalidation_pathvalidation"></a>2.3.1.2 - Valdierung des Zertifikatspfads</h4> - <h5><a name="konfigurationsparameter_sp_certificatevalidation_pathvalidation_chainingmode" id="konfigurationsparameter_sp_certificatevalidation_pathvalidation_chainingmode"></a>2.3.1.2.1 Gültigkeitsmodell - für die Zertifikatskettenprüfung</h5> - <table class="fixedWidth" border="1" cellpadding="2"> - <tr> - <td>Name</td> - <td><code>cfg:SignatureVerification/cfg:CertificateValidation/cfg:PathValidation/cfg:ChainingMode</code></td> - </tr> - <tr> - <td>Gebrauch</td> - <td>genau einmal </td> - </tr> - <tr> - <td>Erläuterung</td> - <td><p> Dieses Element legt fest, ob MOA SP für die Prüfung der Gültigkeit - einer konstruierten Zertifikatskette das Kettenmodell aus ISIS-MTT oder das Schalenmodell aus dem PKIX - RFC 3280 verwenden soll. Es hat folgende Kindelemente:</p> - <ul> - <li><code>cfg:DefaultMode</code>: Dieses obligatorische Element gibt das Default-Modell für die Prüfung - der Gültigkeit einer konstruierten Zertifikatskette an. Gültige Werte sind <code>chaining</code> (Kettenmodell) - oder <code>pkix</code> (Schalenmodell). </li> - <li><code>cfg:TrustAnchor</code>: Dieses Element kann beliebig oft (auch gar nicht) verwendet - werden, um für bestimmte Vertrauensanker (vergleiche nächsten Parameter <code>cfg:TrustProfile</code>) - Ausnahmen vom Default-Modell vorzugeben. - Das Element weist folgende Kindelemente auf: - <ul> - <li><code>cfg:Identification</code>: Dieses obligatorische Element identifiziert den Vertrauensanker, - für den ein bestimmtes Modell konfiguriert werden soll. Es entspricht vom Aufbau jenem - von <code>cfg:KeyCertIssuerSerial</code> in - Abschnitt <a href="#konfigurationsparameter_ss_keygroup">2.2.2</a>. Um zu den Werten für - Ausstellername und Seriennummer des Vertrauensankers zu kommen, können Sie auch hier - das Script <code>certtool</code> (vergleiche Abschnitt <a href="#konfigurationsparameter_ss_keygroup">2.2.2</a>) - verwenden. </li> - <li><code>cfg:Mode</code>: Dieses obligatorische Element vom Typ <code>xs:string</code> gibt - jenes Modell an, das von MOA SP für die - Prüfung von konstruierten Zertifikatsketten zu verwenden ist, die im mittels <code>cfg:Identification/dsig:X509IssuerName</code> und <code>cfg:Identification/dsig:X509SerialNumber</code> angegebenen - Vertrauensanker münden. Gültige Werte sind <code>chaining</code> (Kettenmodell) - oder <code>pkix</code> (Schalenmodell).</li> - </ul> - </li> - </ul> </td> - </tr> - </table> - <h5><a name="konfigurationsparameter_sp_certificatevalidation_pathvalidation_trustprofile" id="konfigurationsparameter_sp_certificatevalidation_pathvalidation_trustprofile"></a>2.3.1.2.2 Vertrauensprofile </h5> - <table class="fixedWidth" border="1" cellpadding="2"> - <tr> - <td>Name</td> - <td><code>cfg:SignatureVerification/cfg:CertificateValidation/cfg:PathValidation/cfg:TrustProfile</code></td> - </tr> - <tr> - <td>Gebrauch</td> - <td>einmal bis unbeschränkt oft (zumindest ein Vertrauensprofil muss vorhanden sein) </td> - </tr> - <tr> - <td>Erläuterung</td> - <td><p> Das Element <code>cfg:</code><code>TrustProfile</code> wird dazu verwendet, um in MOA SP ein Vertrauensprofil - für die Signaturprüfung einzurichten. Ein Vertrauensprofil besteht aus einer Menge von Vertrauensankern - und einer optionalen Menge von explizit erlaubten Signatorzertifikaten. </p> - <p>Ein Vertrauensanker ist ein CA-Zertifikat, das explizit als vertrauenswürdig eingestuft wird. - MOA SP versucht bei der Konstruktion einer Zertifikatskette, einen Pfad vom Signatorzertifikat bis - hin zu einem der konfigurierten Vertrauensanker zu finden. Gelingt dies, wird auch das Signatorzertifikat - als vertrauenswürdig betrachtet, ansonsten nicht. </p> - <p>Wird neben der Menge von Vertrauensankern auch noch eine Menge von explizit erlaubten Signatorzertifikaten - angegeben, prüft MOA SP nicht nur, ob sich ein Pfad vom Signatorzertifikat zu einem konfigurierten - Vertrauensanker konstruieren lässt, sondern darüber hinaus auch noch, ob das Signatorzertifikat - aus der zu prüfenden Signatur in der Menge der explizit erlaubten Signatorzertifikate vorkommt. - Explizit erlaubte Signatorzertifikate sollten Sie dann konfigurieren, wenn nicht allen von einer - als Vertrauensanker konfigurierten CA ausgestellten Zertifikaten vertraut werden soll, sondern nur - ganz bestimmten Zertifikaten dieser CA. </p> - <p>In MOA SP können beliebig viele solcher Vertrauensprofile konfiguriert werden. Der Kunde von - MOA SP gibt im Request zur Signaturprüfung an, gegen welches Vertrauensprofil MOA SP die Zertifikatsprüfung - vornehmen soll.</p> - <p>Das Element <code>cfg:</code><code>TrustProfile</code> weist folgende Kindelemente - auf:</p> - <ul> - <li><code>cfg:Id</code>: Dieses obligatorische Element vom Typ <code>xs:token</code> enthält einen - frei wählbaren Identifikator für dieses Konfigurationselement, der innerhalb der XML-Konfigurationsdatei - eindeutig sein muss. Dieser Identifikator wird im Request zur Signaturprüfung verwendet, um - das zu verwendende Vertrauensprofil auszuwählen. </li> - <li>Element <code>cfg:TrustAnchorsLocation</code>: Dieses obligatorische Element vom Typ <code>xs:anyURI </code> enthält - eine relative oder absolute URL, die ein Verzeichnis im lokalen Dateisystem referenziert. - Eine relative URL wird relativ zum Pfad jenes Verzeichnisses interpretiert, in dem die zentrale - Konfigurationsdatei gespeichert ist. Eine absolute URL muss als Protokoll-Teil <code>file</code> verwenden. - Das referenzierte Verzeichnis muss eine oder mehrere DER-kodierte Zertifikatsdateien beinhalten. - Jede Zertifikatsdatei repräsentiert einen Vertrauensanker. </li> - <li>Element <code>cfg:SignerCertsLocation</code>: Dieses optionale Element vom Typ <code>xs:anyURI </code> enthält - eine relative oder absolute URL, die ein Verzeichnis im lokalen Dateisystem referenziert. Eine - relative URL wird relativ zum Pfad jenes Verzeichnisses interpretiert, in dem die zentrale Konfigurationsdatei - gespeichert ist. Eine absolute URL muss als Protokoll-Teil <code>file</code> verwenden. Das referenzierte - Verzeichnis muss eine oder mehrere DER-kodierte Zertifikatsdateien beinhalten. Jede Zertifikatsdatei - repräsentiert ein explizit erlaubtes Signatorzertifikat. </li> - <li>Element <code>cfg:EUTSL</code>: Dieses optionale Element aktiviert bei Vorhandensein die EU-TSL Unterstützung für dieses Vertrauensprofile. D.h. als Vertrauensanker werden jene CA-Zertifikate herangezogen, die zum gegenwärtigen Zeitpunkt auf der EU-TSL bzw. den entsprechenden TSLs der Mitgliedsstaaten befugt sind qualifizierte Zertifikate auszustellen und dessen Zertififierungsdiensteanbieter unter dem ServiceLevel "accredited" oder "undersupervision" stehen. Des Weiteren werden bei TSL-aktivierten Vertrauensprofilen, die Überprüfung auf qualifiziertes Zertifikat (QC-Überprüfung) und die Überprüfung auf sichere Signaturerstellungseinheit (SSCD-Überprüfung) über die EU-TSL durchgeführt.<br> - Zusätzliche kann ein optionales Kind-Element - <code>cfg:CountrySelection</code> angegeben werden. Dieses Element definiert eine komma-separierte Liste an zweistelligen Länderkürzeln nach ISO 3166. Ist so eine Liste vorhanden, werden nur die Vertrauensanker der angegebenen Länder herangezogen.<br> - <strong>Wichtig</strong>: Es können zusätzlich manuelle Vertrauensanker via <code>cfg:TrustAnchorsLocation</code> konfiguriert werden. Hierbei ist jedoch, insbesondere beim Hinzufügen von Enduser-Zertifikaten als Vertrauensanker, zu beachten, dass eine QC- bzw. SSCD-Überprüfung gegebenenfalls nicht erfolgreich durchgeführt werden kann.<br> - <strong>Wichtig</strong>: Bei aktivierter TSL-Unterstützung muss einen entsprechende TSL Konfiguration angegeben werden (siehe <a href="#konfigurationsparameter_sp_certificatevalidation_tslconfiguration">TSL Konfiguration</a>).</li> - </ul></td> - </tr> - </table> - <h4><a name="konfigurationsparameter_sp_certificatevalidation_revocationchecking" id="konfigurationsparameter_sp_certificatevalidation_revocationchecking"></a>2.3.1.3 - Widerrufsprüfung</h4> - <h5><a name="konfigurationsparameter_sp_certificatevalidation_revocationchecking_enablechecking" id="konfigurationsparameter_sp_certificatevalidation_revocationchecking_enablechecking"></a>2.3.1.3.1 Aktivieren - der Widerrufsprüfung</h5> - <table class="fixedWidth" border="1" cellpadding="2"> - <tr> - <td> Name </td> - <td><code> cfg:SignatureVerification/cfg:CertificateValidation/cfg:RevocationChecking/cfg:EnableChecking</code></td> - </tr> - <tr> - <td>Gebrauch</td> - <td>genau einmal </td> - </tr> - <tr> - <td>Erläuterung</td> - <td><p> Der Inhalt dieses Elements vom Typ <code>xs:boolean</code> gibt an, ob bei der Zertifikatsüberprüfung im Zuge einer Signaturprüfung auch der - Zertifikatsstatus jedes einzelnen Zertifikats des gebildeten Zertifikatspfads überprüft werden - soll. </p> - <p class="remark">Bitte beachten Sie: Die Widerrufsprüfung ist ein sehr wichtiger Schritt der - Zertifikatsüberprüfung und somit der Signaturprüfung. Eine Deaktivierung sollte nur - in begründeten Ausnahmefällen in Erwägung gezogen werden, z.B. für Testsituationen. </p> - <p>Zulässige Werte für diesen Parameter sind <code>true</code> oder <code>false</code>.</p> </td> - </tr> - </table> - <h5><a name="konfigurationsparameter_sp_certificatevalidation_revocationchecking_maxrevocationage" id="konfigurationsparameter_sp_certificatevalidation_revocationchecking_maxrevocationage"></a>2.3.1.3.2 - Maximales Alter der Widerrufsinformation </h5> - <table class="fixedWidth" border="1" cellpadding="2"> - <tr> - <td> Name </td> - <td><code> cfg:SignatureVerification/cfg:CertificateValidation/cfg:RevocationChecking/cfg:MaxRevocationAge</code></td> - </tr> - <tr> - <td>Gebrauch</td> - <td>genau einmal</td> - </tr> - <tr> - <td>Erläuterung</td> - <td><p> Der Inhalt dieses Elements vom Typ <code>xs:integer</code> gibt an, wie aktuell eine ggf. lokal - gespeicherte Widerrufsinformation sein muss, damit sie von MOA SP als gültig angesehen wird. Ist - die lokal gespeicherte Widerrufsinformation nicht aktuell genug, wird sie von MOA SP erneut aus dem - Internet geladen.</p> - <p>Dieser Parameter wird nur ausgewertet, wenn die Widerrufsprüfung aktiviert ist (siehe Parameter <code>cfg:EnableChecking</code>). </p> - <p>Zulässige Werte für diesen Parameter sind ganze Zahlen: </p> - <ul> - <li>Ein beliebiger negativer Wert bedeutet, dass eine Widerrufsinformation jedes Mal, wenn sie benötigt - wird, neu aus dem Internet geladen wird. </li> - <li>Der Wert <code>0</code> bedeutet, dass eine Widerrufsinformation dann neu geladen wird, wenn - das Datum im Feld <code>nextUpdate</code> der entsprechenden Widerrufsliste bereits überschritten - ist.</li> - <li>Ein positiver Wert gibt gibt die Zeitspanne in Millisekunden an, nach der eine ggf. vorhandene - lokale Widerrufsinformation spätestens durch erneutes Laden aus dem Internet aktualisiert - wird.</li> - </ul> </td> - </tr> - </table> - <h5><a name="konfigurationsparameter_sp_certificatevalidation_revocationchecking_serviceorder" id="konfigurationsparameter_sp_certificatevalidation_revocationchecking_serviceorder"></a>2.3.1.3.3 - Reihenfolge der Widerrufsdienste</h5> - <table class="fixedWidth" border="1" cellpadding="2"> - <tr> - <td> Name </td> - <td><code> cfg:SignatureVerification/cfg:CertificateValidation/cfg:RevocationChecking/cfg:ServiceOrder</code></td> - </tr> - <tr> - <td>Gebrauch</td> - <td>Null mal oder einmal </td> - </tr> - <tr> - <td>Erläuterung</td> - <td><p> Dieses Element gibt an, in welcher Reihenfolge MOA SP die Widerrufsdienste für die Prüfung des - Widerrufs für ein Zertifikat kontaktieren soll, wenn für das Zertifikat mehrere unterschiedliche Widerrufsdienste - (CRL, OCSP) verfügbar sind. Das Element weist folgendes Kindelement auf: </p> - <ul> - <li><code>cfg:Service</code>: Dieses Element vom Typ <code>xs:token</code> muss genau ein oder zwei mal vorkommen. Gütlige Werte für den - Textinhalt des Elements sind <code>OCSP</code> und <code>CRL</code>. Damit kann entweder die Reihenfolge (CRL, OCSP) oder (OCSP, - CRL) festgelegt werden. Wird nur ein Element angegeben, so wird auch nur der jeweilige Dienst verwendet. </li> - </ul> <p>Wird das Element nicht angegeben, so lautet die von MOA SP dann verwendete Default-Reihenfolge (CRL, - OCSP).</p> </td> - </tr> - </table> - <h5><a name="konfigurationsparameter_sp_certificatevalidation_revocationchecking_archiving" id="konfigurationsparameter_sp_certificatevalidation_revocationchecking_archiving"></a>2.3.1.3.4 - Archivierung von Widerrufsinformationen</h5> - <table class="fixedWidth" border="1" cellpadding="2"> - <tr> - <td> Name </td> - <td><code> cfg:SignatureVerification/cfg:CertificateValidation/cfg:RevocationChecking/cfg:Archiving/cfg:EnableArchiving</code></td> - </tr> - <tr> - <td>Gebrauch</td> - <td>genau einmal </td> - </tr> - <tr> - <td>Erläuterung</td> - <td><p> Der Inhalt dieses Elements vom Typ <code>xs:boolean</code> gibt an, ob mittlerweile ungültig - gewordene (i.e. historische) CRL-Widerrufsinformationen von MOA SP archiviert werden soll. </p> - <p>Wird dieser - Parameter auf den Wert <code>true</code> gesetzt, muss auch der Parameter <code>cfg:Archive</code> (siehe - unten) angegeben werden. Zulässige Werte für diesen Parameter sind <code>true</code> oder <code>false</code>.</p> </td> - </tr> - </table> - - <table class="fixedWidth" border="1" cellpadding="2"> - <tr> - <td>Name</td> - <td><code>cfg:SignatureVerification/cfg:CertificateValidation/cfg:RevocationChecking/cfg:Archiving/cfg:ArchiveDuration</code></td> - </tr> - <tr> - <td>Gebrauch</td> - <td>Null mal oder einmal </td> - </tr> - <tr> - <td>Erläuterung</td> - <td><p> Dieses Element vom Typ <code>xs:nonNegativeInteger</code> gibt (in Tagen) an, wie lange Widerrufsinformationen - von MOA SP archiviert werden müssen. Das Element wird von MOA SP nur dann ausgewertet, wenn der - Konfigurationsparameter <code>cfg:EnableArchiving</code> auf - true gesetzt ist. </p> - <p>Wird das Element nicht angegeben, so verwendet MOA SP den Default-Wert von 365 Tagen.</p> </td> - </tr> - </table> - <table class="fixedWidth" border="1" cellpadding="2"> - <tr> - <td> Name </td> - <td><code> cfg:SignatureVerification/cfg:CertificateValidation/cfg:RevocationChecking/cfg:Archiving/cfg:Archive</code></td> - </tr> - <tr> - <td>Gebrauch</td> - <td>Null mal oder einmal </td> - </tr> - <tr> - <td>Erläuterung</td> - <td><p>Dieses Element gibt an, welches Archiv MOA SP zur Archivierung von mittlerweile ungültig - gewordene (i.e. historische) CRL-Widerrufsinformationen verwenden soll, falls der Konfigurationsparameter <code>cfg:EnableArchiving</code> auf - <code>true</code> gesetzt ist. Es muss angegeben werden, wenn der - Konfigurationsparameter <code>cfg:EnableArchiving</code> auf true gesetzt ist. Das Element weist folgendes - Kindelement auf:</p> - <ul> - <li><code>cfg:DatabaseArchive</code>: Dieses obligatorische Element dient zur Angabe der notwendigen - Informationen für die Benutzung eines datenbankbasierten CRL-Archivs durch MOA SP. Das Datenbankarchiv - ist die einzige derzeit unterstützte Archivform. Das Element weist folgende Kindelemente auf: - <ul> - <li> <code>cfg:JDBCURL</code>: Dieses obligatorische Element vom Typ <code>xs:anyURI</code> gibt - die JDBC-URL zu jener Datenbank an, in der MOA historische Widerrufsinformationen archivieren - soll. Der genaue Aufbau der JDBC-URL ist abhängig von der verwendeten Datenbank. Im Fall von - PostgreSQL kann folgende URL verwendet werden: - <pre>jdbc:postgresql://<host>/<moadb>?user=<moauser>&amp;password=<moapassword></pre> - <p> Die Platzhalter <code><host></code>, <code><moadb></code>, <code><moauser></code> und <code><moapassword></code> müssen - dabei an die tatsächlich verwendete Datenbank angepasst werden.</p> - <p class="remark"> Bitte beachten Sie: Die Kodierung des Zeichens "&" als "&amp;" ist - erforderlich, da es andernfalls zu einem Validierungsfehler beim Parsen der XML-Konfigurationsdatei - durch MOA kommen würde.</p> - <p class="remark"> Bitte beachten Sie: MOA SP legt eigenständig eine passende Tabelle in der angegebenen - Datenbank an und befüllt diese dann in weiterer Folge. Der in der JDBC-URL angegebene Benutzer - muss mit den dazu passenden Rechten ausgestattet sein. </p> - </li> - <li><p><code>cfg:JDBCDriverClassName</code>: Dieses obligatorische Element vom Typ <code>xs:token</code> gibt den - vollständig - qualifizierten Java-Klassennamen des JDBC-Treibers an, der von MOA SP zur Ansprache der für - die CRL-Archivierung zu verwendenden Datenbank benützt werden soll.</p> - <p class="remark">Bitte beachten Sie: Informationen zum Anlegen einer Datenbank in postgreSQL finden Sie in <a href="../install/install.html#webservice_erweiterungsmöglichkeiten_datenbank_postgresql">Abschnitt - 2.2.2.1</a> des Installationshandbuchs.</p> - </li> - </ul> - </li> - </ul> </td> - </tr> - </table> - <h5><a name="konfigurationsparameter_sp_certificatevalidation_revocationchecking_distributionpoint" id="konfigurationsparameter_sp_certificatevalidation_revocationchecking_distributionpoint"></a>2.3.1.3.5 - Manuelle Konfiguration von Verteilungspunkten für Widerrufsinformationen</h5> - <table class="fixedWidth" border="1" cellpadding="2"> - <tr> - <td>Name</td> - <td><code>cfg:SignatureVerification/cfg:CertificateValidation/cfg:RevocationChecking/cfg:DistributionPoint</code></td> - </tr> - <tr> - <td>Gebrauch</td> - <td>Null mal bis unbeschränkt oft </td> - </tr> - <tr> - <td>Erläuterung</td> - <td><p> Das Element <code>cfg:</code><code>CRLDistributionPoint</code> kann dazu verwendet werden, manuelle - Verteilungspunkte für Widerrufsinformationen einer bestimmten CA zu konfigurieren. </p> - <p>Dies macht für veraltete Zertifikate Sinn, die nicht den aktuellen Vorgaben aus dem PKIX RFC 3280 entsprechen und im Zertifikat selbst keine Zertifikatserweiterung mit einem solchen Verteilungspunkt enthalten.</p> - <p>Weiters kann diese manuelle Konfiguration verwendet werden, wenn die in einem Zertifikat enthaltenen Verteilungspunkte für eine bestimmte CA durch einen manuellen Eintrag überschrieben werden soll (etwa weil die im Zertifikat enthaltenen Verteilungspunkte in Form von ldap-URLs angegeben sind, MOA SP aber der Zugriff auf ldap-URLs per Firewall-Einstellungen untersagt ist; dann könnte man stattdessen manuell eine (lokale) http-URL als Verteilungspunkt angeben, die von MOA SP dann aufgelöst werden kann). </p> - <p>Das Element weist folgende Kind-Elemente auf:</p> - <ul> - <li>Element <code>cfg:CAIssuerDN</code>: Dieses Element enthält als Textinhalt vom Typ <code>xs:string</code> den - Namen jener CA, die das Zertifikat ausgestellt hat, dessen Widerruf mit Hilfe des zu konfigurierenden - Verteilungspunktes geprüft werden soll. Um zu diesem Wert zu kommen, können Sie auch - hier das Script <code>certtool</code> (vergleiche Abschnitt<a href="#konfigurationsparameter_ss_keygroup"> 2.2.2</a>) - verwenden, in dem Sie es für das Zertifikat anwenden, dessen Widerruf mit Hilfe des zu konfigurierenden - Verteilungspunktes geprüft werden soll.</li> - <li>Element <code>cfg:CRLDP</code>: Dieses Element verweist auf einen Verteilungspunkt, an dem eine - Widerrufsliste abgeholt werden kann. Es weist folgende Kind-Elemente auf: - <ul> - <li>Element<code> cfg:Location</code>: Der Wert dieses obligatorischen Elements vom Typ<code> xs:anyURI</code> enthält - die URL für den zu konfigurierenden Verteilungspunkt. Es werden die Protokolle HTTP, HTTPS - und LDAP unterstützt.</li> - <li>Element<code> cfg:ReasonCode</code>: Dieses Element vom Typ <code>xs:token</code> kann - null mal bis unbeschränkt - oft vorkommen und enthält - jeweils einen laut PKIX RFC 3280 möglichen Grund eines Widerrufs, - für - welche die über den zu konfigurierenden Verteilungspunkt zu beziehende Widerrufsliste - ausgestellt ist. Gültige Gründe sind <code>unused</code>, <code>keyCompromise</code>, <code>cACompromise</code>, <code>affiliationChanged</code>, <code>superseded</code>, <code>cessationOfOperation</code>, <code>certificateHold</code>, <code>privilegeWithdrawn</code> und <code>aACompromise</code>. - Wird eine Widerrufsliste für mehrere Gründe ausgestellt, muss also das Element <code>cfg:ReasonCode</code> mehrmals - angegeben werden. Wird das Element null mal angegeben, gilt der Verteilungspunkt für alle möglichen - Widerrufsgründe.</li> - </ul> - </li> - <li>Element <code>cfg:OCSPDP</code>: Dieses Element verweist auf einen Verteilungspunkt, an dem die - Widerrufsinformation von einem OCSP-Responder bezogen werden kann. Es weist folgendes Kind-Element - auf: - <ul> - <li></li> - </ul> - Element<code> cfg:Location</code>: Der Wert dieses obligatorischen Elements vom Typ<code> xs:anyURI</code> enthält - die URL für den zu konfigurierenden Verteilungspunkt. Es werden die Protokolle HTTP, HTTPS und - LDAP unterstützt.</li> - </ul> - <p>Hinweis: Die Elemente <code>cfg:CRLDP</code> bzw. <code>cfg:OSCPDP</code> können beliebig oft als Kinder von <code>cfg:CRLDistributionPoint</code> angegeben - werden. Die Reihenfolge spielt dabei keine Rolle. Jedenfalls muss aber eines dieser beiden Elemente - angegeben werden. </p></td> - </tr> - </table> - -<h5><a name="konfigurationsparameter_sp_certificatevalidation_revocationchecking_crlretention" id="konfigurationsparameter_sp_certificatevalidation_revocationchecking_crlretention"></a>2.3.1.3.6 - Konfiguration CRL Retention Intervallen </h5> - <table class="fixedWidth" border="1" cellpadding="2"> - <tr> - <td>Name</td> - <td><code>cfg:SignatureVerification/cfg:CertificateValidation/cfg:RevocationChecking/cfg:CrlRetentionIntervals</code></td> - </tr> - <tr> - <td>Gebrauch</td> - <td>Null oder einmal </td> - </tr> - <tr> - <td>Erläuterung</td> - <td><p>Das Element <code>cfg:</code><code>CrlRetentionIntervals</code> kann - dazu verwendet werden, um Retention Intervalle für bestimmte CAs zu - konfigurieren. <br /> - Gemäß <a href="http://www.ietf.org/rfc/rfc5280.txt" target="_blank">RFC 5280</a> - muss ein widerrufenes Zertifikat solange auf Widerrufslisten - aufscheinen, bis das Zertifikat abgelaufen ist und noch eine CRL-Periode - darüber hinaus. Auf allen weiteren CRLs muss das Zertifikat nicht mehr - geführt werden. Daraus folgt, dass MOA SP für abgelaufene Zertifikate in - der Regel keine CRL-Statusabfrage durchführen kann, da nicht sichergestellt - ist, dass eine aktuell geladene Widerrufssliste für derartige - Zertifikate noch adeqaute Widerrufsinformationen enthält. <br /> - Garantiert eine CA jedoch, dass widerrufene Zertifikate noch über deren - Ablauf hinaus auf der Widerrufsliste geführt werden, so kann für diese - CA ein Retention Intervall definiert werden. <p /> - Das <code>cfg:</code><code>CrlRetentionIntervals</code> Element weist folgendes Kind-Element auf:</p> - <ul> -<li>Element <code>cfg:CA</code>: Dieses Element legt ein Retention Intervall für eine CA fest und kann beliebig oft vorkommen. Es weist folgende Kind-Elemente auf:</li> -<ul> -<li>Element <code>cfg:X509IssuerName</code>: Dieses Element vom Typ <code>xs:string</code> muss einmal vorkommen und definiert die entsprechende CA über einen RFC2253 String. Das (im folgenden Element) festgelegte Intervall wird für alle Widerrufslisten, die von dieser CA ausgestellt werden, verwendet.</li></li> -<li>Element <code>cfg:Interval</code>: Dieses Element vom Typ <code>xs:integer</code> muss einmal vorkommen und enthält das Retention Intervall. Es gibt den Zeitraum in Tagen an, über -den widerrufene Zertifikate über deren Ablauf hinaus auf Widerrufslisten geführt werden. -Wird der Wert auf -1 gesetzt, dann bedeutet das ein unendlich langes Intervall. In diesem Fall wird ein widerrufenes Zertifikat niemals von den Widerrufslisten entfernt.<br /> -</ul> -</ul> - </td> - </tr> - </table> - - - <h5><a name="konfigurationsparameter_sp_certificatevalidation_tslconfiguration" id="konfigurationsparameter_sp_certificatevalidation_tslconfiguration"></a>2.3.1.3.7 - TSL Konfiguration</h5> -<table class="fixedWidth" border="1" cellpadding="2"> - <tr> - <td>Name</td> - <td><code>cfg:SignatureVerification/cfg:CertificateValidation/cfg:TSLConfiguration</code></td> - </tr> - <tr> - <td>Gebrauch</td> - <td>Null oder einmal </td> - </tr> - <tr> - <td>Erläuterung</td> - <td><p>Das Element <code>cfg:TSLConfiguration</code><code></code> legt die TSL Konfiguration fest, wenn Vertrauensprofile mit TSL Unterstützung konfiguriert sind. Das Element weist folgende Kind-Elemente auf: - <ul> - <ul> - <li>Element <code>cfg:EUTSLUrl</code>: Dieses optionale Element legt die URL zur EU-TSL fest.<br> - </li> - <em>Hinweis</em>: Wird kein <code>cfg:EUTSLUrl</code> Element angegeben so wird defaultmäßig <code>https://ec.europa.eu/information_society/policy/esignature/trusted-list/tl-mp.xml</code> als EU-TSL URL herangezogen. - <li>Element <code>cfg:UpdateSchedule</code>: Dieses optionale Element legt fest wann und in welchem Intervall die EU-TSL erneut eingelesen werden soll. Das Element <code>cfg:UpdateSchedule</code> besteht dabei aus folgenden Kind-Elementen:</li> - <ul> - <li>Element <code>cfg:StartTime</code>: Legt eine Startzeit im Format hh:mm:ss fest. </li> - <li>Element <code>cfg:Period</code>: Legt das Intervall (in Millisekunden) fest, in welchem die EU-TSL erneut eingelesen werden soll</li> - </ul> - <em>Hinweis</em>: Wird kein <code>cfg:UpdateSchedule</code> Element angegeben so wird defaultmäßig <code>02:00.00</code> als Startzeit und <code>86400000</code> Millisekunden (=1 Tag) als Intervall herangezogen<br> - <em>Hinweis</em>: Der Import der Zertifikate von der EU-TSL benötigt (je nach Verbindung) ca. 90-180 Sekunden. Als Startzeit sollte daher eine Zeit gewählt werden, zu der die Auslastung gering ist. -<li>Element <code>cfg:WorkingDirectory</code>: Diese Element gibt einen Pfad zum Arbeitsverzeichnis (inkl. Lese- und Schreibrechte) für die TSL an. Enthält dieses Element eine relative Pfadangabe, so wird dieser relativ zum Verzeichnis in dem sich die MOA-SPSS Konfigurationsdatei befindet interpretiert.<br> - </li> - <em>Hinweis</em>: Wird kein <code>cfg:WorkingDirectory</code> Element angegeben so wird defaultmäßig <code>tslworking</code> als Arbeitsverzeichnis herangezogen.<br/> -<strong> - Wichtig</strong>: Das angegebene Verzeichnis muss jedenfalls die Unterverzeichnis - "trust" aus der <a href="../../../conf/moa-spss/tslworking">Beispiel-Konfiguration</a> beinhalten. In dessen Unterverzeichnis "eu" müssen jene vertrauenswürdigen Zertifikate angegeben werden, mit denen die EU-TSL signiert ist. - </ul> - <p><em>Hinweis</em>: Um die TSL Überprüfung zu aktivieren muss auch (zumindest) ein Vertrauensprofil mit TSL Überprüfung konfiguriert werden (siehe <a href="#konfigurationsparameter_sp_certificatevalidation_pathvalidation_trustprofile">Vertrauensprofil</a>)</p></td> - </tr> - -</table> -<h3><a name="konfigurationsparameter_sp_verifytransformsinfoprofile" id="konfigurationsparameter_sp_verifytransformsinfoprofile"></a>2.3.2 Profil für Transformationen</h3> - <table class="fixedWidth" border="1" cellpadding="2"> - <tr> - <td>Name</td> - <td><code>cfg:SignatureVerification/cfg:VerifyTransformsInfoProfile</code></td> - </tr> - <tr> - <td>Gebrauch</td> - <td>Null mal bis unbeschränkt oft</td> - </tr> - <tr> - <td>Erläuterung</td> - <td><p>MOA SP erlaubt die Hinterlegung eines vordefinierten Profils für eine erlaubte Transformationsfolge, - deren Einhaltung im Rahmen einer XML-Signaturprüfung kontrolliert wird. Im Request - zur XML-Signaturprüfung reicht es dann aus, auf dieses Profil zu referenzieren, anstatt die - gesamten Transformationen explizit anzugeben. </p> - <p><code>cfg:VerifyTransformsInfoProfile</code> enthält für ein bestimmtes Datenobjekt für - eine zu prüfende XML-Signatur eine - für dieses Datenobjekt erlaubte Transformationsfolge, bestehend aus den anzuwendenden Transformationen, - sowie allenfalls für die Durchführung der Transformationen erlaubte implizite Transformationsparameter - (z.B. einen zu importierenden Stylesheet für eine XSL-Transformation).</p> - <p><code>cfg:</code><code>VerifyTransformsInfoProfile</code> weist folgende obligatorische Kindelemene - auf: </p> - <ul> - <li>Element<code> Id</code>: Dieses Element<code></code> vom Typ <code>xs:token</code> enthält - einen frei wählbaren Identifikator für dieses Konfigurationselement, der innerhalb der - XML-Konfigurationsdatei eindeutig sein muss. Dieser Identifikator wird im Request zur Prüfung - der XML-Signatur verwendet, um das hinterlegte Profil zu referenzieren (vergleiche Element <code>moa:</code><code>VerifyTransformsInfoProfileID</code>). </li> - <li>Element<code></code> <code>Location</code>: Dieses Element<code></code> vom Typ <code>xs:anyURI</code> enthält - den Namen der XML-Datei, die das hinterlegte Profil beinhaltet. Der Wert enthält eine relative - oder absolute URI. Eine relative URI wird von MOA SP als File-URI relativ zum Lage jenes Verzeichnisses - interpretiert, in dem die zentrale Konfigurationsdatei gespeichert ist. Die XML-Datei muss als - Wurzelelement das Element<code> moa:VerifyTransformsInfoProfile </code>enthalten.</li> - </ul></td> - </tr> - </table> - <h3><a name="konfigurationsparameter_sp_supplementprofile" id="konfigurationsparameter_sp_supplementprofile"></a>2.3.3 Profil für Ergänzungsobjekte</h3> - <table class="fixedWidth" border="1" cellpadding="2"> - <tr> - <td>Name</td> - <td><code>cfg:SignatureVerification/cfg:SupplementProfile</code></td> - </tr> - <tr> - <td>Gebrauch</td> - <td>Null mal bis unbeschränkt oft</td> - </tr> - <tr> - <td>Erläuterung</td> - <td><p>MOA SS erlaubt die Hinterlegung eines vordefinierten Profils für ein Ergänzungsobjekt, - das im Rahmen einer XML-Signaturprüfung verwendet werden soll. Im Request zur XML-Signaturprüfung reicht es dann aus, auf dieses Profil zu referenzieren, anstatt die Informationen zur Signaturumgebung - explizit anzugeben. </p> - <p><code>cfg:SupplementProfile</code> enthält für ein Datenobjekt in der zu prüfenden - XML-Signatur ein allenfalls für die Durchführung der vorgegebenen Transformationen notwendiges - Ergänzungsobjekt (z.B. einen zu importierenden Stylesheet für eine XSL-Transformation).</p> - <p><code>cfg:</code><code>SupplementProfile</code> weist folgende obligatorische Kindelemene auf: </p> - <ul> - <li>Element<code> Id</code>: Dieses Element<code></code> vom Typ <code>xs:token</code> enthält - einen frei wählbaren Identifikator für dieses Konfigurationselement, der innerhalb der - XML-Konfigurationsdatei eindeutig sein muss. Dieser Identifikator wird im Request zur Prüfung - der XML-Signatur verwendet, um das hinterlegte Profil zu referenzieren (vergleiche Element <code>moa:</code><code>SupplementProfileID</code>). </li> - <li>Element<code></code> <code>Location</code>: Dieses Element<code></code> vom Typ <code>xs:anyURI</code> enthält - den Namen der XML-Datei, die das hinterlegte Profil beinhaltet. Der Wert enthält eine relative - oder absolute URI. Eine relative URI wird von MOA SP als File-URI relativ zum Lage jenes Verzeichnisses - interpretiert, in dem die zentrale Konfigurationsdatei gespeichert ist. Die XML-Datei muss als - Wurzelelement das Element<code> moa:SupplementProfile </code>enthalten.</li> - </ul></td> - </tr> - </table> - <h3><a name="konfigurationsparameter_sp_permitfileuris" id="konfigurationsparameter_sp_permitfileuris"></a>2.3.4 file-URIs</h3> - <table class="fixedWidth" border="1" cellpadding="2"> - <tr> - <td>Name</td> - <td><code>cfg:SignatureVerification/cfg:PermitFileURIs</code></td> - - </tr> - <tr> - <td>Gebrauch</td> - <td>Null mal oder einmal</td> - </tr> - <tr> - <td>Erläuterung</td> - - <td><p>Der Inhalt dieses Elements vom Typ <code>xs:boolean</code> gibt an, ob file-URIs innerhalb von MOA-SP zugelassen werden sollen. In MOA-SS werden file-URIs strikt verboten.</p> - <p class="remark">Bitte beachten Sie: Das Erlauben von file-URIs birgt Sicherheitsrisikien. Eine Deaktivierung sollte nur in begründeten Ausnahmefällen in Erwägung gezogen werden. </p> - <p class="remark">Bitte beachten Sie: Es werden keine file-URIs in Ergänzungsobjekten unterstützt.</p> - <p>Zulässige Werte für diesen Parameter sind <code>true</code> oder <code>false</code>. Wird dieses Element nicht angegeben, so nimmt MOA den Wert <code>false</code> an.</p> - </td> - </tr> - </table> - <h1><a name="beispielkonfigurationen"></a>3 Beispielkonfigurationen</h1> - <!--<p>TODO Update Konfigurations (Simple, Expert)</p>--> -<h2><a name="beispielkonfigurationen_minss" id="beispielkonfigurationen_minss"></a>3.1 Minimale Konfiguration für MOA SS</h2> - <p>Nachfolgend finden Sie eine zentrale Konfigurationsdatei mit den minimal notwendigen Einträgen für - den alleinigen Betrieb von MOA SS. Darin sind als Kinder des Wurzelelements <code>cfg:MOAConfiguration</code> folgende - Konfigurationselemente enthalten:</p> - <ul> - <li>Ein Software-Schlüsselspeicher (<code>cfg:SignatureCreation/cfg:KeyModules/cfg:SoftwareKeyModule</code>);</li> - <li>Eine Schlüsselgruppe (<code>cfg:SignatureCreation/</code><code>cfg:KeyGroup</code>);</li> - <li>Eine Zuordnung dieser Schlüsselgruppe für einen bestimmten Kunden (<code>cfg:SignatureCreation/cfg:KeyGroupMapping</code>). </li> - </ul> - <p><a href="../../../conf/moa-spss/ss.minimum.config.xml">Minimale Konfiguration für MOA SS</a> </p> - <h2><a name="beispielkonfigurationen_minsp" id="beispielkonfigurationen_minsp"></a>3.2 Minimale Konfiguration für MOA SP</h2> - <p>Nachfolgend finden Sie eine zentrale Konfigurationsdatei mit den minimal notwendigen Einträgen für - den alleinigen Betrieb von MOA SP. Darin sind als Kinder des Wurzelelements <code>cfg:MOAConfiguration</code> folgende - Konfigurationselemente enthalten:</p> - <ul> - <li>Einstellungen betreffend die Konstruktion des Zertifikatspfades (<code>cfg:SignatureVerification/cfg:CertificateValidation/cfg:PathConstruction</code>);</li> - <li>Einstellungen betreffend die Validierung des Zertifikatspfades (<code>cfg:SignatureVerification/cfg:CertificateValidation/cfg:PathValidation</code>), - unter anderem ein Vertrauensprofil (<code>cfg:TrustProfile</code>);</li> - <li>Einstellungen betreffend die Widerrufsprüfung von Zertifikaten des Zertifikatspfades (<code>cfg:SignatureVerification/cfg:CertificateValidation/cfg:RevocationChecking</code>) . </li> - </ul> - <p><a href="../../../conf/moa-spss/sp.minimum.config.xml">Minimale Konfiguration für MOA SP</a> </p> - <h2><a name="beispielkonfigurationen_minsptsl" id="beispielkonfigurationen_minsptsl"></a>3.3 Minimale Konfiguration für MOA SP mit TSL Unterstützung</h2> -<p>Nachfolgend finden Sie eine zentrale Konfigurationsdatei mit den minimal notwendigen Einträgen für - den alleinigen Betrieb von MOA SP mit TSL Unterstützung. Darin sind als Kinder des Wurzelelements <code>cfg:MOAConfiguration</code> folgende - Konfigurationselemente enthalten:</p> - <ul> - <li>Einstellungen betreffend die Konstruktion des Zertifikatspfades (<code>cfg:SignatureVerification/cfg:CertificateValidation/cfg:PathConstruction</code>);</li> - <li>Einstellungen betreffend die Validierung des Zertifikatspfades (<code>cfg:SignatureVerification/cfg:CertificateValidation/cfg:PathValidation</code>), - unter anderem ein Vertrauensprofil mit TSL Unterstützung (<code>cfg:TrustProfile</code>);</li> - <li>Einstellungen betreffend die Widerrufsprüfung von Zertifikaten des Zertifikatspfades (<code>cfg:SignatureVerification/cfg:CertificateValidation/cfg:RevocationChecking</code>) .</li> - <li>Einstellungen betreffend der TSL Konfiguration (<code>cfg:SignatureVerification/cfg:CertificateValidation/cfg:TSLConfiguration</code>) . </li> - </ul> - <p><a href="../../../conf/moa-spss/sp.minimum_with_tsl.config.xml">Minimale Konfiguration für MOA SP mit TSL Unterstützung</a> </p> - -<h2><a name="beispielkonfigurationen_typspss" id="beispielkonfigurationen_typspss"></a>3.4 Typische Konfiguration für MOA SP/SS</h2> - <p>Nachfolgend finden Sie eine typische zentrale Konfigurationsdatei mit Einträgen für den kombinierten Betrieb von MOA SP und SS. Diese Datei wird auch als Konfiguration von MOA SP und SS verwendet, die für das Ausführen der Beispiele des <a href="../usage/usage.html">Anwenderhandbuchs</a> notwendig ist.</p> - <p><a href="../../../conf/moa-spss/spss.config.xml">Typische Konfiguration für MOA SP/SS</a> </p> -</body> -</html> diff --git a/moaSig/handbook/handbook/faq/faq.html b/moaSig/handbook/handbook/faq/faq.html deleted file mode 100644 index fc3f98d..0000000 --- a/moaSig/handbook/handbook/faq/faq.html +++ /dev/null @@ -1,169 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> -<html> -<head> - <meta http-equiv="content-type" content="text/html; charset=iso-8859-1"> - <title>MOA SS und SP - FAQ</title> - <link rel="stylesheet" href="../common/MOA.css" type="text/css"> -</head> -<body link="#990000"> - <table class="logoTable" width="100%" border="0" cellspacing="0" cellpadding="10"> - <tr> - <td align="center" class="logoTitle" width="267"><img src="../common/LogoBKA.png" alt="Logo BKA" width="267" height="37" align="left"></td> - <td align="center" class="logoTitle">Dokumentation</td> - <td align="center" class="logoTitle" width="123"><img src="../common/LogoEGIZ.png" alt="Logo EGIZ" width="230" height="81" align="right"></td> - </tr> - </table> - <hr/> - <p class="title"><a href="../index.html">MOA: Serversignatur (SS) und Signaturprüfung (SP)</a></p> - <p class="subtitle">FAQ</p> - <hr/> - <h1>Inhalt</h1> - <ol> - <li> - <p><a href="#allgemeines">Allgemeines</a></p> - </li> - <li> - <p><a href="#uebersicht_fragen">Übersicht der Fragen </a></p> - </li> - <li> - <p><a href="#antworten">Antworten</a></p> - </li> - </ol> -<hr/> - <h1><a name="allgemeines"></a>1 Allgemeines</h1> - <p> Dieses Dokument enthält eine Reihe von häufig gestellten Fragen zu Installation, Konfiguration und Verwendung von MOA Serversignatur (SS) und Signaturprüfung (SP). </p> - <h1><a name="uebersicht_fragen" id="uebersicht_fragen"></a>2 Übersicht der Fragen </h1> - <h2> Installation</h2> - <ol> - <li>Beim Starten von MOA SPSS tritt folgende Exception auf: <code>java.lang.ClassCastException: iaik.asn1.structures.Name</code>. Was kann der Fehler sein? [<a href="#installation_1">Zur Antwort</a>]</li> - <li>Ich möchte MOA SS/SP in einer Umgebung betreiben, die einen Internet-Zugang nur über einen Proxy erlaubt. Funktioniert das? [<a href="#installation_1">Zur Antwort</a>] </li> - </ol> - <h2>Konfiguration</h2> - <ol> - <li>Ich möchte gerne die CRL-Archivierung von MOA verwenden, möchte aber eine andere als die in der Konfiguration erwähnte postgreSQL-Datenbank verwenden. Geht das? [<a href="#konfiguration_1">Zur Antwort</a>]</li> - <li>Ich möchte ein Zertifikat (z.B. einer Zwischen-Zertifizierungsstelle) manuell in den internen Zertifikatsspeicher von MOA SP importieren. Wie funktioniert das? [<a href="#konfiguration_2">Zur Antwort</a>]</li> - <li>Meine bestehende Konfigurationsdatei funktioniert mit MOA SP/SS 1.3 oder höher nicht mehr. Was ist passiert? - [<a href="#konfiguration_3">Zur Antwort</a>]</li> - <li>Welche Netzwerkverbindungen (incoming / outgoing) werden durch MOA SP/SS benötigt? [<a href="#konfiguration_4">Zur Antwort</a>]</li> - </ol> -<h2>Verwendung</h2> - <ol> - <li>Bei der Prüfung einer Signatur liefert die Prüfung des Zertifikatsstatus den Code 1. Was kann der Fehler sein? [<a href="#verwendung_1">Zur Antwort</a>] </li> - </ol> - <h1><a name="antworten" id="antworten"></a>3 Antworten</h1> - <h2>Installation</h2> - <ol> - <li class="faq"><div class="faq-question"><a name="installation_1"></a>Beim Starten von MOA SPSS tritt folgende Exception auf: <code>java.lang.ClassCastException: iaik.asn1.structures.Name</code>. Was kann der Fehler sein?</div> - <p>Auf Grund einer mangelhaften Implementierung in einigen Versionen des JDK 1.3.1 kann es beim Betrieb von MOA zu folgendem Problem kommen: Sun macht in der Implementierung von <code>PKCS7.getCertificate()</code> einen Downcast vom Interface<code> java.security.Principal</code> auf die eigene Implementierung, was zu einer <span class="term">ClassCastException</span> führt, wenn der JCE-Provider von Sun nicht an erster Stelle in der List der Security-Provider installiert ist. MOA geht nun aber so vor, dass der JCE-Provider des IAIK an die erste Stelle installiert wird, wenn er zum Zeitpunkt der Konfiguration noch nicht installiert war. Wird dann von irgendeinem ClassLoader der jar-Verifier benützt, wird <code>PKCS7.getCertificate()</code> verwendet, und es kommt zu einer <span class="term">ClassCastException</span>. </p> - <p>Wird MOA über die API-Schnittstelle verwendet, ist ein Workaround die manuelle Installation des IAIK-JCE-Providers nach dem Sun JCE-Provider (etwa an die letzte Stelle), bevor die MOA-Konfiguration aufgerufen wird. Bei Verwendung der Webservices ist die Möglichkeit der statischen Konfiguration der JCE-Provider mittels Angabe in der Datei <code>$JAVA_HOME/jre/lib/security/java.security</code> der einzige bekannte Workaround. Hierzu müssen die Einträge </p> - <pre> security.provider.1=sun.security.provider.Sun - security.provider.2=com.sun.rsajca.Provider </pre> - <p>durch folgenden Eintrag ergänzt werden:</p> - <pre>security.provider.3=iaik.security.provider.IAIK</pre> - </li> - <li class="faq"> - <div class="faq-question"><a name="installation_2" id="installation_2"></a>Ich möchte MOA SS/SP in einer Umgebung betreiben, die einen Internet-Zugang nur über einen Proxy erlaubt. Funktioniert das?</div> - <p>Ja, zumindest für Zugriffe über HTTP. Sie müssen dazu die nachfolgenden JAVA System-Properties setzen:</p> - <pre>http.proxyHost=<proxyhost> -http.proxyPort=<proxyport> -http.nonProxyHosts="<exceptionhosts>"</pre> - <p><code><proxyhost></code> gibt den Namen oder die IP-Adresse des Proxies an.</p> - <p><code><proxyport></code> gibt den Port des Proxies an.</p> - <p><code><exceptionhosts></code> enthält eine Liste von Rechnernamen, die nicht über den Proxy laufen sollen. Jedenfalls müssen sie hier <code>localhost</code> angeben. Einzelne Namen sind durch eine Pipe (<code>|</code>) zu trennen. Bitte beachten Sie, dass IP-Addressen nicht angegeben werden dürfen, sowie die verpflichtend zu verwendenen Anführungszeichen.<br> - </p> - </li> - </ol> - <h2>Konfiguration</h2> - <ol> - <li class="faq"><div class="faq-question"><a name="konfiguration_1" id="konfiguration_1"></a>Ich möchte gerne die CRL-Archivierung von MOA verwenden, möchte aber eine andere als die in der Konfiguration erwähnte postgreSQL-Datenbank verwenden. Geht das?</div> - <p>Ja, das ist möglich. Wenn Sie eine mySQL-Datenbank verwenden möchten, sind folgende Maßnahmen zu treffen:</p> - <ul> - <li><a href="http://www.mysql.com/downloads/api-jdbc.html">Laden</a> Sie den mySQL-JDBC-Connector herunter und fügen Sie das im Download enthaltene jar-File <code>mysql-connector-java-3.x.x-stable-bin.jar</code> zum Klassenpfad für MOA SPSS hinzu.</li> - <li>Geben Sie im MOA-Konfigurationsfile mit Hilfe des generischen Konfigurationsparameters <code>DataBaseArchiveParameter.JDBCUrl</code> eine gültige JDBC-URL zu Ihrer mySQL-Datenbank angeben. Hinweise zum Format dieser URL für mySQL finden Sie <a href="http://www.mysql.com/documentation/connector-j/index.html">hier</a>. </li> - </ul> - <p>Wenn Sie eine andere Datenbank verwenden möchten, beispielsweise Oracle, gehen Sie sinngemäß wie oben vor und setzen zusätzlich noch folgenden Schritt:</p> - <ul> - <li>Geben Sie im MOA-Konfigurationsfile mit Hilfe des generischen Konfigurationsparameters <code>DataBaseArchiveParameter.JDBCDriverClass</code> den vollständig qualifizierten Klassennamen des JDBC-Treibers an, der die Verbindung zu Ihrer Datenbank herstellt. </li> - </ul> - </li> - <li class="faq"> - <div class="faq-question"><a name="konfiguration_2" id="konfiguration_2"></a>Ich möchte ein Zertifikat (z.B. einer Zwischen-Zertifizierungsstelle) manuell in den internen Zertifikatsspeicher von MOA SP importieren. Wie funktioniert das?</div> - <p>Sie können für diesen Zweck ein mit MOA SP/SS mitgeliefertes Kommandozeilen-Tool verwenden, das Sie im Verzeichnis <code>$MOA_SPSS_INST/tools</code> finden. Wechseln Sie zu diesem Verzeichnis und rufen Sie die Script-Datei <code>certtools.bat</code> bzw. <code>certtools.sh</code> (je nach Betriebssystem) auf. Achten Sie darauf, dass die Umgebungsvariable <code>$JAVA_HOME</code> korrekt gesetzt ist. Die Syntax für dieses Tool lautet:</p> - <pre>certtool -add <cert> <store></pre> - <p><code><cert></code> bezeichnet dabei Pfad und Dateiname des zu importierenden X509-Zertifikats. Das Zertifikat muss DER-kodiert vorliegen.</p> - <p><code><store></code> bezeichnet den Pfad des internen Zertifikatsspeichers von MOA SP. Wenn Sie nach der Installationsanleitung vorgegangen sind, lautet dieser Pfad <code>$CATALINA_HOME/conf/moa-spss/certstore</code>.</p> - </li> - <li class="faq"> - <div class="faq-question"><a name="konfiguration_3" id="konfiguration_3"></a> - Meine bestehende Konfigurationsdatei - funktioniert mit MOA SP/SS 1.3 oder höher nicht mehr. Was ist passiert?</div> - <p>Mit dem Wechsel auf Version 1.3 verwendet MOA SP/SS ein neues, übersichtlicheres Format für die - XML-Konfigurationsdatei. </p> - <p>Wenn Sie von einer älteren Version von MOA SP/SS auf die Version 1.3 wechseln und Ihre bestehende - Konfiguration beibehalten wollen, steht Ihnen ein einfaches Kommandozeilenwerkzeug zur Verfügung, mit - dem Sie Ihre Konfigurationsdatei vom bisherigen auf das neue Format migrieren können.</p> - <p>Informationen zur Verwendung des Werkzeugs finden Sie in <a href="../config/config.html#übersicht_zentraledatei_aktualisierung">Abschnitt 1.2.1</a> des Konfigurationshandbuchs. </p> - </li> - <li class="faq"> - <div class="faq-question"><a name="konfiguration_4" id="konfiguration_4"></a>Welche Netzwerkverbindungen (incoming / outgoing) werden durch MOA SP/SS benötigt?</div> - <p> Die nachfolgende Tabelle gibt eine Aufstellung der benötigten Netzberbindungen und eine kurze Beschreibung über deren Funktion.</p> - <table border="1" cellpadding="0" cellspacing="0"> - <tr> - <td width="105" height="34" valign="middle"><strong>Service</strong></td> - <td width="275" valign="middle"><strong>URL</strong></td> - <td width="63" valign="middle"><strong>Port</strong></td> - <td width="87" valign="middle"><strong>Richtung</strong></td> - <td width="702" valign="middle"><strong>Beschreibung</strong></td> - </tr> - <tr> - <td valign="middle"><p>MOA-SP/SS</p></td> - <td align="center" valign="middle">*</td> - <td align="center" valign="middle">80, 443</td> - <td align="center" valign="middle">eingehend</td> - <td valign="middle"><p>Verbindungen zum Signature-Creation und Signature-Verification Service </p></td> - </tr> - <tr> - <td valign="middle"><p>Referenzen / TSL</p></td> - <td align="center" valign="middle">*</td> - <td align="center" valign="middle">80, 443</td> - <td align="center" valign="middle">ausgehend</td> - <td valign="middle">Zum Auflösen von externen Referenzen, welche in den Requests enthalten sind und zum Download der Trust-Status Listen (TSL).<br> - <strong>Hinweis: </strong>Werden externe Referenzen über andere Protokolle bezogen müssen die jeweiligen Ports ebenfalls freigeschalten werden.</td> - </tr> - <tr> - <td height="26" valign="middle">LDAP</td> - <td align="center" valign="middle">*</td> - <td align="center" valign="middle">389, 636</td> - <td align="center" valign="middle">ausgehend</td> - <td valign="middle">Zertifikatsprüfung</td> - </tr> - <tr> - <td width="105" valign="middle"><p>OSCP / CRL</p></td> - <td width="275" align="center" valign="middle">*</td> - <td width="63" align="center" valign="middle">80, 443</td> - <td width="87" align="center" valign="middle">ausgehend</td> - <td width="702" valign="middle"><p>Zertifikatsprüfung</p></td> - </tr> - </table> - <br> - </li> - </ol> -<h2>Verwendung</h2> - <ol> - <li class="faq"><div class="faq-question"><a name="verwendung_1" id="verwendung_1"></a>Bei der Prüfung einer Signatur liefert die Prüfung des Zertifikatsstatus den Code 1. Was kann der Fehler sein? </div> - <p>Dieser Fehlercode bedeutet: Es konnte keine formal korrekte Zertifikatskette vom Signatorzertifikat zu einem vertrauenswürdigen Wurzelzertifikat konstruiert werden. Das kann grundsätzlich eine der beiden folgenden Ursachen haben:</p> - <ul> - <li>Keines der Zertifikate in der Kette vom Signatorzertifikat bis zu einem selbstsignierten Wurzelzertifikat ist im anzuwendenden <span class="term">TrustProfile</span> enthalten. </li> - <li>Die Zertifikatskette konnte nicht bis zu einem im anzuwendenden <span class="term">TrustProfile</span> enthaltenen vertrauenswürdigen Zertifikat gebildet werden. </li> - </ul> - <p>Prüfen Sie also zunächst, ob sie im anzuwendenden <span class="term">TrustProfile</span> ein passendes vertrauenswürdiges Zertifikat konfiguriert haben. Das kann beispielsweise das Zertifikat jener CA sein, die das Signatorzertifikat ausgestellt hat, oder aber auch das Zertifikat einer CA weiter oben in der Hierarchie des Zertifizierungsdiensteanbieters, beispielsweise das selbstsignierte Wurzelzertifikat.</p> - <p>Wenn diese Prüfung das Problem nicht behebt, gelingt des MOA SP vermutlich nicht, ein für die Bildung der Zertifikatskette notwendiges Zertifikat zu lokalisieren. Mögliche Gründe sowie Lösungsmöglichkeiten dafür sind:</p> - <ul> - <li>Das aktuell letzte Zertifikat in der bereits gebildeten Zertifikatskette besitzt zwar die Zertifikatserweiterung <span class="term">AuthorityInformationAccess</span> mit einem Hinweis auf das nächste Zertifikat der zu bildenden Kette, das darin per URL referenzierte Zertifikat kann jedoch nicht geladen werden. Prüfen Sie daher zunächst, ob MOA SP/SS per HTTP oder LDAP Zugriffe nach außen tätigen darf. </li> - <li>Das aktuell letzte Zertifikat in der bereits gebildeten Zertifikatskette besitzt keine Zertifikatserweiterung <span class="term">AuthorityInformationAccess</span> mit einem Hinweis auf das nächste Zertifikat der zu bildenden Kette, und auch im internen Zertifikatsspeicher von MOA SP ist das nächste Zertifikat nicht enthalten. Ist Ihnen das nächste Zertifikat bekannt (z.B. durch manuellen Download von der Webseite des Zertifizierungsdiensteanbieters), können Sie es manuell in den internen Zertifikatsspeicher importieren. Eine Anleitung dazu finden Sie <a href="#konfiguration_2">hier</a>. <br> - </li> - </ul> - </li> - </ol> -</body> -</html> diff --git a/moaSig/handbook/handbook/index.html b/moaSig/handbook/handbook/index.html deleted file mode 100644 index 56ba413..0000000 --- a/moaSig/handbook/handbook/index.html +++ /dev/null @@ -1,33 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> -<html> -<head> - <meta http-equiv="content-type" content="text/html; charset=iso-8859-1"> - <title>MOA SS und SP - Übersicht</title> - <link rel="stylesheet" href="./common/MOA.css" type="text/css"> -</head> -<body link="#990000"> - <table class="logoTable" width="100%" border="0" cellspacing="0" cellpadding="10"> - <tr> - <td align="center" class="logoTitle" width="267"><img src="common/LogoBKA.png" alt="Logo BKA" width="267" height="37" align="left"></td> - <td align="center" class="logoTitle">Dokumentation</td> - <td align="center" class="logoTitle" width="123"><img src="common/LogoEGIZ.png" alt="Logo EGIZ" width="230" height="81" align="right"></td> - </tr> - </table> - <hr/> - <p class="title">MOA: Serversignatur (SS) und Signaturprüfung (SP) </p> - <p class="subtitle">Übersicht zur Dokumentation der Version 3.0.x</p> - <hr/> - <dl> - <dt><a href="./intro/intro.html">Einführung</a></dt> - <dd>Übersicht über die beiden Module.</dd> - <dt><a href="./install/install.html">Installation</a></dt> - <dd>Detaillierte Anleitung für die Installation. </dd> - <dt><a href="./config/config.html">Konfiguration</a></dt> - <dd>Erläuterung aller Konfigurationsoptionen sowie Leitfaden für häufige Konfigurationsaufgaben.</dd> - <dt><a href="./usage/usage.html">Anwendung</a></dt> - <dd>Beispiele zur Verwendung der beiden Module.</dd> - <dt><a href="./faq/faq.html">FAQ</a></dt> - <dd>Häufig gestellte Fragen zu Installation, Konfiguration und Anwendung. </dd> - </dl> -</body> -</html> diff --git a/moaSig/handbook/handbook/install/install.html b/moaSig/handbook/handbook/install/install.html deleted file mode 100644 index f131f06..0000000 --- a/moaSig/handbook/handbook/install/install.html +++ /dev/null @@ -1,493 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> -<html> -<head> - <meta http-equiv="content-type" content="text/html; charset=iso-8859-1"> - <title>MOA SS und SP - Installation</title> - <link rel="stylesheet" href="../common/MOA.css" type="text/css"> -</head> -<<body link="#990000"> - <table class="logoTable" width="100%" border="0" cellspacing="0" cellpadding="10"> - <tr> - <td align="center" class="logoTitle" width="267"><img src="../common/LogoBKA.png" alt="Logo BKA" width="267" height="37" align="left"></td> - <td align="center" class="logoTitle">Dokumentation</td> - <td align="center" class="logoTitle" width="123"><img src="../common/LogoEGIZ.png" alt="Logo EGIZ" width="230" height="81" align="right"></td> - </tr> - </table> - <hr/> - <p class="title"><a href="../index.html">MOA: Serversignatur (SS) und Signaturprüfung (SP)</a></p> - <p class="subtitle">Installation</p> - <hr/> - <h1>Inhalt</h1> - <ol> - <li> - <p><a href="#uebersicht">Übersicht</a></p> - </li> - <li> - <p><a href="#webservice">Webservice</a></p> - <ol> - <li><a href="#webservice_basisinstallation">Basisinstallation</a> - <ol> - <li><a href="#webservice_basisinstallation_einfuehrung">Einführung</a></li> - <li><a href="#webservice_basisinstallation_installation">Installation</a> - <ol> - <li><a href="#webservice_basisinstallation_installation_vorbereitung">Vorbereitung</a></li> - <li><a href="#webservice_basisinstallation_installation_tomcatconfig">Konfiguration von Apache Tomcat</a> - <ol> - <li><a href="#webservice_basisinstallation_installation_tomcatconfig_httpconn">Konfiguration des HTTP Connectors</a></li> - <li><a href="#webservice_basisinstallation_installation_tomcatconfig_httpsconn">Konfiguration des HTTPS Connectors</a></li> - <li><a href="#webservice_basisinstallation_installation_tomcatconfig_moaadmin">Einrichten des MOA SP/SS Administrators</a></li> - </ol> - </li> - <li><a href="#webservice_basisinstallation_installation_spssdeploy">Einsatz des MOA SP/SS Webservices in Tomcat</a></li> - <li><a href="#webservice_basisinstallation_installation_tomcatstartstop">Starten und Stoppen von Tomcat</a> - <ol> - <li><a href="#webservice_basisinstallation_installation_tomcatstartstop_windows">Unter Windows</a></li> - <li><a href="#webservice_basisinstallation_installation_tomcatstartstop_unix">Unter Unix</a></li> - <li><a href="#webservice_basisinstallation_installation_tomcatstartstop_verify">Prüfen des erfolgreichen Starts</a> </li> - </ol> - </li> - <li><a href="#webservice_basisinstallation_installation_changeonthefly">Änderung der Konfiguration im laufenden Betrieb</a></li> - </ol> - </li> - <li><a href="#webservice_basisinstallation_logging">Logging</a> - <ol> - <li><a href="#webservice_basisinstallation_logging_format">Format der Log-Meldungen</a></li> - <li><a href="#webservice_basisinstallation_logging_messages">Wichtige Log-Meldungen</a></li> - </ol> - </li> - </ol> - </li> - <li><a href="#webservice_erweiterungsmoeglichkeiten">Erweiterungsmöglichkeiten</a> <ol> - <li><a href="#webservice_erweiterungsmoeglichkeiten_webserver">Vorgeschalteter Webserver</a> <ol> - <li><a href="#webservice_erweiterungsmoeglichkeiten_webserver_iis">Microsoft Internet Information Server (MS IIS)</a> <ol> - <li><a href="#webservice_erweiterungsmoeglichkeiten_webserver_iis_jk">Konfiguration von <span class="term"> mod_jk</span> im MS IIS</a></li> - <li><a href="#webservice_erweiterungsmoeglichkeiten_webserver_iis_tomcat">Konfiguration von Tomcat</a></li> - <li><a href="#webservice_erweiterungsmoeglichkeiten_webserver_iis_ssl">Konfiguration von SSL</a></li> - </ol> - </li> - <li><a href="#webservice_erweiterungsmoeglichkeiten_webserver_apache">Apache</a> <ol> - <li><a href="#webservice_erweiterungsmoeglichkeiten_webserver_apache_jk">Konfiguration von <span class="term"> mod_jk</span> im Apache </a></li> - <li><a href="#webservice_erweiterungsmoeglichkeiten_webserver_apache_tomcat">Konfiguration von Tomcat</a></li> - <li><a href="#webservice_erweiterungsmoeglichkeiten_webserver_apache_ssl">Konfiguration von SSL mit <span class="term">mod_SSL</span></a></li> - </ol> - </li> - </ol> - </li> - <li><a href="#webservice_erweiterungsmoeglichkeiten_datenbank">Datenbank</a> <ol> - <li><a href="#webservice_erweiterungsmoeglichkeiten_datenbank_postgresql">PostgreSQL</a> <ol> - <li><a href="#webservice_erweiterungsmoeglichkeiten_datenbank_postgresql_benutzer">Anlegen eines Benutzers und einer Datenbank für MOA SP/SS</a></li> - <li><a href="#webservice_erweiterungsmoeglichkeiten_datenbank_postgresql_crls">Archivierung von CRLs</a> </li> - <li><a href="#webservice_erweiterungsmoeglichkeiten_datenbank_postgresql_logging">Logging</a></li> - </ol> - </li> - <li><a href="#webservice_erweiterungsmoeglichkeiten_datenbank_andere">Andere Datenbanken</a> </li> - </ol> - </li> - </ol> - </li> - </ol> - <li><a href="#klassenbibliothek">Klassenbibliothek</a> - <ol> - <li><a href="#klassenbibliothek_basisinstallation">Basisinstallation</a> - <ol> - <li><a href="#klassenbibliothek_basisinstallation_einfuehrung">Einführung</a></li> - <li><a href="#klassenbibliothek_basisinstallation_vorbereitung">Vorbereitung</a></li> - <li><a href="#klassenbibliothek_basisinstallation_verwendung">Verwendung</a></li> - <li><a href="#klassenbibliothek_basisinstallation_logging">Logging</a></li> - </ol> - </li> - <li><a href="#klassenbibliothek_erweiterungsmoeglichkeiten">Erweiterungsmöglichkeiten</a></li> - </ol> - </li> - </ol> - <ol type="A"> - <li><a href="#referenzierte_software">Referenzierte Software</a></li> - </ol> - <hr/> - <h1><a name="uebersicht" id="uebersicht"></a>1 Übersicht</h1> - <p> Die Module Signaturprüfung (SP) und Serversignatur (SS) sind als plattformunabhängige Module ausgelegt, die entweder als Webservice über HTTP bzw. HTTPS oder als Klassenbibliothek über ein API angesprochen werden können. Dieses Handbuch beschreibt die Installation der beiden Module als Webservice oder als Klassenbibliothek, sowie die Einrichtung der Systemumgebung.</p> - <h1><a name="webservice"></a>2 Webservice </h1> - <p>Dieser Abschnitt beschreibt die Installation von MOA SP/SS als Webservice. Im ersten Unterkapitel wird eine minimale Basisinstallation beschrieben. Das zweite Unterkapitel zeigt eine Reihe von optionalen Erweiterungsmöglichkeiten auf.</p> - <h2><a name="webservice_basisinstallation" id="webservice_basisinstallation"></a>2.1 Basisinstallation</h2> - <h3><a name="webservice_basisinstallation_einfuehrung" id="webservice_basisinstallation_einfuehrung"></a>2.1.1 Einführung </h3> - <p> Die Basisinstallation des Webservices stellt einerseits die minimalen Anforderungen für den Betrieb von MOA SP/SS als Webservices dar, andererseits dient sie als Ausgangspunkt für optionale <a href="#webservice_erweiterungsmoeglichkeiten">Erweiterungsmöglichkeiten</a>.</p> - <p>Die <strong>Mindestanforderungen</strong> für die Basisinstallation sind: </p> - <ul> - <li><a href="#referenziertesoftware">Java SE 7 oder höher</a></li> - <li><a href="#referenziertesoftware">Apache Tomcat 7.0.69 oder höher </a></li> - </ul> - <p>Wir <strong>empfehlen</strong> jedoch jeweils aktuelle Version zu verwenden:</p> - <ul> - <li><a href="#referenziertesoftware">Java SE Update SE 8 (neuestes Update)</a></li> - <li><a href="#referenziertesoftware">Apache Tomcat 8.0.33</a></li> -</ul> - <p>In diesem Betriebs-Szenario wird das MOA SP/SS Webservice in Tomcat zum Einsatz gebracht. Tomcat fungiert gleichzeitig als HTTP- und HTTPS-Endpunkt für das MOA SP/SS Webservice. Beide Protokolle werden direkt in Tomcat konfiguriert. Das MOA SP/SS Webservice verwendet Log4j als Logging Toolkit.</p> -<h3><a name="webservice_basisinstallation_installation" id="webservice_basisinstallation_installation"></a>2.1.2 Installation</h3> -<h4><a name="webservice_basisinstallation_installation_vorbereitung" id="webservice_basisinstallation_installation_vorbereitung"></a>2.1.2.1 Vorbereitung</h4> -<p>Die folgenden Schritte dienen der Vorbereitung der Installation.</p> - <dl> - <dt>Installation von Java SE</dt> - <dd>Installieren Sie Java SE in ein beliebiges Verzeichnis. Das Wurzelverzeichnis der Java SE Installation wird im weiteren Verlauf als <code>$JAVA_HOME</code> bezeichnet. </dd> - <dt>Installation von Apache Tomcat</dt> - <dd> Installieren Sie Apache Tomcat in ein Verzeichnis, das keine Leerzeichen im Pfadnamen enthält. Verwenden Sie bitte die zu Ihrer Java SE passende Distribution von Tomcat. Das Wurzelverzeichnis der Tomcat-Installation wird im weiteren Verlauf als <code>$CATALINA_HOME</code> bezeichnet.</dd> - <dt>Entpacken der MOA SP/SS Webservice Distribution</dt> - <dd> Entpacken Sie die Datei <code>moa-spss-3.0.x.zip</code> in ein beliebiges Verzeichnis. Dieses Verzeichnis wird im weiteren Verlauf als <code>$MOA_SPSS_INST</code> bezeichnet. </dd> - <dt>Installation der Kryptographiebibliotheken von SIC/IAIK</dt> - <dd> - <p>Kopieren Sie alle Dateien aus dem Verzeichnis <code>$MOA_SPSS_INST/ext</code> in das Verzeichnis <code>$JAVA_HOME/jre/lib/ext</code>. Zusätzlich müssen Sie die Rechtedateien Ihrer Java SE austauschen. Laden Sie dazu die passenden <span class="term">Unlimited Strength - - - Jurisdiction Policy Files</span> von der <a href="http://java.com/download" target="_blank">Java SE Downloadseite </a>und achten Sie darauf die für ihre verwendete Java SE Installation richtige Version zu nehmen. Anschließend folgen Sie der darin enthaltenen Installationsanweisung. </p> - </dd> - </dl> -<h4><a name="webservice_basisinstallation_installation_tomcatconfig" id="webservice_basisinstallation_installation_tomcatconfig"></a>2.1.2.2 Konfiguration von Apache Tomcat</h4> - <p>Die zentrale Konfigurations-Datei von Tomcat ist <code>$CATALINA_HOME/conf/server.xml</code>. Tomcat wird grundsätzlich mit einer funktionierenden Default-Konfiguration ausgeliefert. </p> -<h5><a name="webservice_basisinstallation_installation_tomcatconfig_httpconn" id="webservice_basisinstallation_installation_tomcatconfig_httpconn"></a>2.1.2.2.1 Konfiguration des HTTP Connectors</h5> -<p>Die Tomcat Default-Konfiguration schaltet ausschließlich den Connector für HTTP auf Port 8080 frei. Wir empfehlen diese Konfiguration nur für Fälle, in denen das MOA SP/SS Webservice in einer abgeschlossenen Netzwerkumgebung betrieben wird. </p> -<h5><a name="webservice_basisinstallation_installation_tomcatconfig_httpsconn" id="webservice_basisinstallation_installation_tomcatconfig_httpsconn"></a>2.1.2.2.2 Konfiguration des HTTPS Connectors</h5> - <p>Wird das MOA SP/SS Webservice in einer nicht abgeschlossenen Umgebung (z.B. Erreichbarkeit über das Internet) betrieben, ist die gegenseitige Identitätsfeststellung von Kunde und Webservice essentiell: </p> - <ul> - <li> Nutzt ein Kunde MOA SP, ist es für ihn wichtig, die Identität des Webservice eindeutig feststellen zu können, denn er vertraut dem Webservice ja die Prüfung einer elektronischen Signatur an.</li> - <li>Nutzt ein Kunde MOA SS, ist es für ihn wesentlich, dass nur er Zugriff auf die für ihn vom Webservice verwalteten privaten Schlüssel hat, um elektronische Signaturen zu erstellen. Das Webservice muss also die Identität des Kunden prüfen. </li> - </ul> - <p>Beide Identitätsprüfungen können mit hoher Qualität vorgenommen werden, wenn die Erreichbarkeit des Webservice auf SSL mit Server- (für MOA SP) bzw. Client- und Serverauthentisierung (für MOA SS) eingeschränkt wird. </p> - <p>Für die dazu notwendige Konfiguration kann die im vorigen Abschnitt besprochene minimale Tomcat-Konfiguration als Ausgangspunkt verwendet werden: Zunächst ist der HTTP Connector abzuschalten (auszukommentieren). Anschließend ist der HTTPS Connector zu konfigurieren. Das Dokument <a href="http://tomcat.apache.org/tomcat-7.0-doc/ssl-howto.html">Tomcat SSL Configuration HOW-TO </a> gibt einen guten Überblick dazu. Grob zusammengefasst sind folgende Schritte durchzuführen: </p> - <ul> - <li>Erstellung eines <span class="term">Server-Keystores</span>, der den privaten Schlüssel sowie das zugehörige Zertifikat des Webservices enthält, mit dem es sich bei Aufbau einer SSL-Verbindung gegenüber dem Kunden ausweist sowie das dazugehörige Server-Zertifikat enthält. Sie können diesen Keystore z.B. mit <code>keytool</code> erstellen, einem Programm, das Ihrer Java SE beiliegt.</li> - <li>Erstellung eines <span class="term">Client-Keystores</span>, der die Zertifikate aller Kunden des Webservices enthält. Nur Kunden des Webservices, die sich beim Aufbau einer SSL-Verbindung gegenüber dem Webservice mit einem im <span class="term">Client-Keystore</span> enthaltenen Zertifikat ausweisen, erhalten grundsätzlich Zugriff zu den Diensten des Webservices (für die Konfiguration, welcher Kunde welche Schlüssel von MOA SS verwenden darf, siehe <a href="../config/config.html#konfigurationsparameter_ss_keygroupmapping">Abschnitt 2.2.3 des Konfigurationshandbuchs</a>). Auch dieser Keystore kann z.B. mit <code>keytool</code> erstellt werden. Dieser Keystore ist optional und braucht nur erstellt zu werden, wenn sich die Kunden gegenüber dem Webservice authentisieren müssen. </li> - <li>Konfiguration des HTTPS Connectors in <code>$CATALINA_HOME/conf/server.xml</code>.</li> - </ul> - <p>Die Konfiguration des HTTPS Connectors kann entfallen, wenn Tomcat ein Webserver vorgeschaltet ist, und dieser die SSL-Kommunikation mit dem Kunden übernimmt (siehe <a href="#webservice_erweiterungsmoeglichkeiten_webserver">Abschnitt 2.2.1</a>).</p> - <h5><a name="webservice_basisinstallation_installation_tomcatconfig_moaadmin" id="webservice_basisinstallation_installation_tomcatconfig_moaadmin"></a>2.1.2.2.3 Einrichten des MOA SP/SS Administrators </h5> - <p>Das MOA SP/SS Webservice kann <span class="term">remote</span> durch den Aufruf einer speziellen URL des Webservices dazu veranlasst werden, seine Konfiguration neu einzulesen (vergleiche Abschnitt <a href="#webservice_basisinstallation_installation_changeonthefly">2.1.2.5</a>). Der Zugriff auf diese URL ist durch eine Passwort-Abfrage geschützt, und kann nur von Tomcat-Benutzern aufgerufen werden, denen die Tomcat-Benutzer-Rolle <code>moa-admin</code> zugeordnet wurde.</p> - <p> Um diese Benutzer-Rolle und einen oder mehrere Benutzer einzurichten, müssen in der Datei <code>$CATALINA_HOME/conf/tomcat-users.xml </code>unter dem Element <code><tomcat-users></code> sinngemäß folgende Einträge hinzugefügt werden: </p> - <p> - <pre><role rolename="moa-admin"/> -<user username="moa-chief" password="openSesam" roles="moa-admin"/> </pre> -<p>Soll der Aufruf dieser URL niemandem ermöglicht werden, sind die oben beschriebenen Einträge einfach nicht vorzunehmen.</p> - -<h4><a name="webservice_basisinstallation_installation_spssdeploy" id="webservice_basisinstallation_installation_spssdeploy"></a>2.1.2.3 Einsatz des MOA SP/SS Webservices in Tomcat</h4> -<p> Um das MOA SP/SS Webservice in Tomcat für den Einsatz vorzubereiten, sind folgende Schritte notwendig:</p> -<ul> - <li>Die Datei <code>$MOA_SPSS_INST/moa-spss.war</code> enthält das einsatzfertige MOA SP/SS Webarchiv und muss ins Verzeichnis <code>$CATALINA_HOME/webapps</code> kopiert werden. Dort wird sie beim ersten Start von Tomcat automatisch ins Verzeichnis <code>$CATALINA_HOME/webapps/moa-spss</code> entpackt. </li> - <li>Die zentrale Konfigurationsdatei für MOA SP/SS und die zugehörigen Profil-Verzeichnisse müssen in ein beliebiges Verzeichnis im Dateisystem kopiert werden (z.B. <code>$CATALINA_HOME/conf/moa-spss</code>). Eine funktionsfähige Konfiguration, die als Ausgangspunkt für die Konfiguration des MOA SP/SS Webservices dienen kann, finden Sie <a href="../../conf/moa-spss/spss.config.xml">hier</a>. <br> - </li> - <li> Die Dateien <code>xalan.jar</code>, <code>xercesImpl.jar, serializer.jar </code> und <code>xml-apis.jar</code> aus dem Verzeichnis <code>$MOA_SPSS_INST/endorsed</code> müssen in das Tomcat-Verzeichnis <code>$CATALINA_HOME/endorsed</code> (bzw. <code>$CATALINA_HOME/common/endorsed</code> bis Apache Tomcat Version 5.5) kopiert werden. Sind gleichnamige Dateien dort bereits vorhanden, müssen sie überschrieben werden. Die ggf. in diesem Verzeichnis vorhandene Datei <code>xmlParserAPIs.jar</code> muss gelöscht werden. Sollte das Verzeichnis <code>endorsed</code> nicht vorhanden sein, dann muss dieses zuerst erstellt werden.</li> - <li>Folgende <span class="term">System Properties</span> können gesetzt werden (wird beim Starten von Tomcat der <span class="term">Java Virtual Machine</span> in der Umgebungsvariablen <code>CATALINA_OPTS</code> in der Form <code>-D<name>=<wert></code> übergeben): - <ul> - <li id="klein"><code>moa.spss.server.configuration</code>: Pfad und Name der zentralen Konfigurationsdatei für MOA SP/SS. Eine beispielhafte Konfigurationsdatei finden Sie <a href="../../../conf/moa-spss/spss.config.xml">hier</a>. Wird ein relativer Pfad angegeben, wird dieser relativ zum Startverzeichnis der <span class="term">Java Virtual Machine</span> interpretiert. Ist diese <span class="term">System Property</span> nicht gesetzt, wird automatisch eine im Webarchiv unter <code>WEB-INF/conf</code> enthaltene Default-Konfiguration herangezogen.</li> - <li><code>iaik.esi.sva.configuration.location</code>: Pfad und Name der Konfigurationsdatei für die extendet PDF Validierung von MOA SP/SS. Eine beispielhafte Konfigurationsdatei finden Sie <a href="../../../conf/moa-spss/svaconfig.example">hier</a>. Wird ein relativer Pfad angegeben, wird dieser relativ zum Startverzeichnis der <span class="term">Java Virtual Machine</span> interpretiert. </li> - <li id="klein"><code>log4j.configuration</code>: URL der Log4j Konfigurationsdatei. Eine beispielhafte Log4j-Konfiguration finden Sie <a href="../../../conf/moa-spss/log4j.properties">hier</a>. Wird eine relative URL angegeben, wird diese als File-URL relativ zum Startverzeichnis der <span class="term">Java Virtual Machine</span> interpretiert. Ist diese <span class="term">System Property</span> nicht gesetzt, wird automatisch eine im Webarchiv unter <code>WEB-INF/classes</code> enthaltene Default-Konfiguration herangezogen.</li> - <li id="klein"><code>moa.node.id</code>: Frei wählbarer Name des Rechner-Knotens, auf dem MOA SP/SS läuft. Der Name des Knotens wird bei Log-Ausgaben von MOA SP/SS angeführt und dient zur Unterscheidung mehrerer gleichzeitig betriebener MOA SP/SS Webservice-Instanzen. </li> - <li id="klein"><code>javax.net.ssl.trustStore</code>: Pfad und Dateiname des <span class="term">Truststores</span> für vertrauenswürdige SSL Client-Zertifikate (optional; nur, wenn SSL Client-Authentisierung durchgeführt werden soll). Ein relativer Pfad werden relativ zum Startverzeichnis der <span class="term">Java Virtual Machine</span> interpretiert.</li> - <li id="klein"><code>javax.net.ssl.trustStorePassword</code>: Passwort für den <span class="term">Truststore</span> (optional; nur, wenn SSL Client-Authentisierung durchgeführt werden soll). </li> - <li id="klein"><code>javax.net.ssl.trustStoreType</code>: Truststore-Typ (optional; nur, wenn SSL Client-Authentisierung durchgeführt werden soll). Je nach verwendetem Keystore-Typ muss <code>jks</code> (<span class="term">Java Key Store</span>) oder <code>pkcs12</code> (PKCS#12-Datei) angegeben werden.</li> - </ul> - </li> -</ul> -<h4><a name="webservice_basisinstallation_installation_tomcatstartstop" id="webservice_basisinstallation_installation_tomcatstartstop"></a>2.1.2.4 Starten und Stoppen von Tomcat</h4> -<h5><a name="webservice_basisinstallation_installation_tomcatstartstop_windows" id="webservice_basisinstallation_installation_tomcatstartstop_windows"></a>2.1.2.4.1 Unter Windows</h5> -<div id="block"> - <p>Das Verzeichnis <code>$MOA_SPSS_INST/tomcat/win32</code> enthält Script-Dateien zum Starten und Stoppen von Tomcat. Vor der erstmaligen Verwendung der Scripts müssen in den ersten Zeilen die Umgebungsvariablen <code>JAVA_HOME</code> (Basisverzeichnis der eingesetzten Java SE) und <code>CATALINA_HOME</code> (Basisverzeichnis der eingesetzten Tomcat-Installation) angepasst werden. Evtl. müssen Sie auch noch die in den Script-Dateien gesetzten, in Abschnitt 2.1.2.3 besprochenen <span class="term">System Properties</span> anpassen. </p> -</div> -<h5><a name="webservice_basisinstallation_installation_tomcatstartstop_unix" id="webservice_basisinstallation_installation_tomcatstartstop_unix"></a>2.1.2.4.2 Unter Unix</h5> -<p>Zunächst müssen die in Abschnitt 2.1.2.3 besprochenen <span class="term">System Properties</span> mit Hilfe der Umgebungsvariablen <code>CATALINA_OPTS</code> gesetzt sein. Die Datei <code>$MOA_SPSS_INST/tomcat/unix/moa-env.sh</code> enthält ein Beispiel dafür. Weiters müssen noch die Umgebungsvariablen <code>JAVA_HOME</code> (Basisverzeichnis der eingesetzten Java SE) und <code>CATALINA_HOME</code> (Basisverzeichnis der eingesetzten Tomcat-Installation) angepasst werden.</p> -<p>Nun kann Tomcat aus seinem Basisverzeichnis mit </p> -<pre>bin/catalina.sh start</pre> -gestartet werden. Das Stoppen von Tomcat erfolgt analog mit -<pre>bin/catalina.sh stop</pre> -<h5><a name="webservice_basisinstallation_installation_tomcatstartstop_verify" id="webservice_basisinstallation_installation_tomcatstartstop_verify"></a>2.1.2.4.3 Prüfen des erfolgreichen Starts </h5> -<div id="block"> - <p>Ein erfolgreicher Start des MOA SP/SS Webservices ist an folgender Log-Meldung ersichtlich: <br> - </p> -</div> -<pre>INFO | 18 10:09:45,155 | main | TID=startup NID=<null> MSG=MOA Konfiguration erfolgreich geladen -</pre> -<p>Bei leichten Fehlern in der Konfiguration geben <code>WARN</code> Log-Meldungen unmittelbar davor Aufschluss über fehlerhafte Konfigurations-Einträge. - Nach dem Starten von Tomcat steht das MOA SP/SS Webservice für die Server-Signatur und Signatur-Prüfung unter den Endpunkten </p> -<pre>http://<host>:<port>/moa-spss/services/SignatureCreation -</pre> -<p>bzw. -</p> -<pre>http://<host>:<port>/moa-spss/services/SignatureVerification -</pre> -<p>zur Verfügung. Die Verfügbarkeit des Services können Sie einfach überprüfen, indem Sie die Endpunkte mit einem Web-Browser aufgerufen; dies sollte nach erfolgreichem Start zur Anzeige einer Informationsseite führen. </p> -<p>Konnte das MOA SP/SS Webservice nicht ordnungsgemäß gestartet werden, führt das zu folgender Log-Meldung:</p> -<pre>FATAL | 18 10:17:03,475 | main | TID=startup NID=<null> <br> MSG=Fehler beim Lesen der MOA Konfiguration: das Service steht nicht zur Verfügung -</pre> -In diesem Fall geben die <code>WARN</code> bzw. <code>ERROR</code> Log-Meldungen unmittelbar davor Aufschluss über den genaueren Grund. -<h4><a name="webservice_basisinstallation_installation_changeonthefly" id="webservice_basisinstallation_installation_changeonthefly"></a>2.1.2.5 Änderung der Konfiguration im laufenden Betrieb </h4> -<p> Sie können die Konfiguration für MOA SP/SS im laufenden Betrieb aktualisieren, in dem Sie mittels eines Web-Browsers folgende URL aufrufen:</p> -<pre> http://<host>:<port>/moa-spss/ConfigurationUpdate </pre> -<p>Damit dies funktioniert, muss in der Konfiguration von Tomcat ein spezieller Benutzer sowie eine spezielle Benutzerrolle eingerichtet werden (vergleiche Abschnitt <a href="#webservice_basisinstallation_installation_tomcatconfig_moaadmin">2.1.2.2.3</a>). </p> -<h3><a name="webservice_basisinstallation_logging" id="webservice_basisinstallation_logging"></a>2.1.3 Logging </h3> -<p>Das MOA SP/SS Webservice verwendet <a href="#referenziertesoftware">Log4j</a> für die Ausgabe von Log-Meldungen am Bildschirm bzw. in Log-Dateien. Log4j bietet zahlreiche Konfigurationsmöglichkeiten, die ausführlich im Log4j Handbuch beschrieben sind. Unter anderem gibt es die Möglichkeit, folgende Einstellungen vorzunehmen: -<ul> - <li id="klein"> - <p>Das verwendete Log-Level (<code>DEBUG</code>, <code>INFO</code>, <code>WARN</code>, <code>ERROR</code>, <code>FATAL</code>);</p> - </li> - <li id="klein"> - <p>Name und maximale Größe der Log-Datei(en);</p> - </li> - <li id="klein"> - <p>Das Aussehen der Log-Einträge.</p> - </li> -</ul> - <p>Das MOA SP/SS Webservice verwendet folgende Log-Hierarchien: </p> -<ul> - <li> - <p><code>moa.spss.server</code> für alle Log-Meldungen aus dem MOA/SPSS Webservice; </p> - </li> - <li> - <p><code>iaik.server</code> für alle Log-Meldungen aus den SIC/IAIK Kryptographie-Modulen. </p> - </li> -</ul> - <p>Eine für MOA SP/SS passende Konfigurationsdatei für Log4j finden Sie <a href="../../../conf/moa-spss/log4j.properties">hier</a>. Wird diese Datei als Logging-Konfiguration verwendet, so werden alle Log-Meldungen sowohl in die Konsole, als auch in die Datei <code>moa-spss.log</code> geschrieben. </p> - <h4><a name="webservice_basisinstallation_logging_format" id="webservice_basisinstallation_logging_format"></a>2.1.3.1 Format der Log-Meldungen</h4> - <p> Anhand einer konkreten Log-Meldung wird das Format der MOA SP/SS Log-Meldungen erläutert: </p> - <pre>INFO | 01 21:25:26,540 | Thread-3 | TID=1049225059594-100 NID=node1 - MSG=Starte neue Transaktion: TID=1049225059594-100, Service=SignatureVerification -</pre> -<p> Der Wert <code>INFO</code> besagt, dass die Log-Meldung im Log-Level <code>INFO</code> entstanden ist. Folgende Log-Levels existieren:</p> - <ul> - <li> - <p><code>DEBUG</code>: Log-Meldungen im Log-Level <code>DEBUG</code> geben Auskunft über die innere Arbeitsweise des Systems. Sie sind hauptsächlich für Entwickler interessant.</p> - </li> - <li> - <p><code>INFO</code>: Diese Log-Meldungen geben Status-Informationen über den Ablauf des Webservices, wie z.B. über das Einlangen einer neuen Anfrage.</p> - </li> - <li> - <p><code>WARN</code>: Bei der Ausführung einer Anfrage sind leichte Fehler aufgetreten. Der Ablauf des Webservices ist nicht weiter beeinträchtigt.</p> - </li> - <li> - <p><code>ERROR</code>: Die Ausführung einer Anfrage musste abgebrochen werden. Das Webservice ist davon nicht beeinträchtigt. </p> - </li> - <li> - <p><code>FATAL</code>: Es ist ein Fehler aufgetreten, der den weiteren Betrieb des Webservices nicht mehr erlaubt.</p> - </li> - </ul> - <p>Der nächste Wert <code>01 21:25:26,540</code> gibt den Zeitpunkt an, zu dem die Log-Meldung generiert wurde (in diesem Fall den 1. Tag im aktuellen Monat, sowie die genaue Uhrzeit). </p> - <p> Der Wert <code>Thread-3</code> bezeichnet den Thread, von dem die Anfrage bearbeitet wird.</p> - <p> Der Wert von <code>TID</code> gibt die für jede Anfrage eindeutige Transaktions-ID an. Log-Meldungen, die bei der Abarbeitung dieser Anfrage geschrieben werden, enthalten alle einen Hinweis auf die entsprechende Transaktions-ID.</p> - <p> Der Wert von <code>NID</code> gibt den Rechner-Knoten an, auf dem das MOA SP/SS Webservice läuft (bei <code>NID=<null></code> ist dieser Wert nicht konfiguriert, vergleiche Abschnitt <a href="#webservice_basisinstallation_installation_spssdeploy">2.1.2.3</a>).</p> - <p> Der Rest der Zeile einer Log-Meldung ist der eigentliche Text, mit dem das System bestimmte Informationen anzeigt. Im Fehlerfall ist häufig ein Java Stack-Trace angefügt, der eine genauere Ursachen-Forschung ermöglicht.</p> - <h4> <a name="webservice_basisinstallation_logging_messages" id="webservice_basisinstallation_logging_messages"></a>2.1.3.2 Wichtige Log-Meldungen</h4> - <p> Neben den im Abschnitt <a href="#webservice_basisinstallation_installation_tomcatstartstop_verify">2.1.2.4.3</a> beschriebenen Log-Meldungen, die anzeigen, ob das Service ordnungsgemäß gestartet wurde, geben nachfolgenden Log-Meldungen Aufschluss über die Abarbeitung von Anfragen. </p> - <p>Die Entgegennahme einer Anfrage wird angezeigt durch: - - </p> - <pre>INFO | 01 21:25:26,540 | Thread-3 | TID=1049225059594-100 NID=<null> - MSG=Starte neue Transaktion: TID=1049225059594-100, Service=SignatureVerification -INFO | 01 21:25:26,540 | Thread-3 | TID=1049225059594-100 NID=<null> - MSG=Aufruf von Adresse=127.0.0.1 -INFO | 01 21:25:26,540 | Thread-3 | TID=1049225059594-100 NID=<null> - MSG=Client-Zertifikat nicht verfügbar</pre> - <p> Die dritte Log-Meldung besagt, dass für die Abarbeitung dieser Anfrage kein Client-Zertifikat verfügbar ist (entweder, weil die Anfrage über HTTP eingelangt ist, oder weil die SSL Client-Authentisierung nicht eingeschaltet ist). Bei erfolgreicher SSL Client-Authentisierung, gibt beispielsweise folgende Log-Meldung Informationen über das Client-Zertifikat aus: - <pre>INFO | 12 13:58:08,772 | Thread-10 | TID=1045054687159-2 NID=<null> - MSG=Client-Zertifikat: Subject=CN=Testuser, OU=MOA, O=BRZ, L=Vienna, ST=Vienna, C=AT, - Serial=1.039.104.204, Issuer=CN=TestCA, OU=MOA, O=BRZ, L=Vienna, ST=Vienna, C=AT</pre> - <p>Eine erfolgreich abgearbeitete Anfrage wird angezeigt durch: - </p> - <pre>INFO | 01 21:25:53,168 | Thread-3 | TID=1049225059594-106 NID=<null> - MSG=Anfrage erfolgreich abgearbeitet</pre> - <p>Ein Fehler beim Abarbeiten der Anfrage wird angezeigt durch: </p> - <pre>INFO | 01 21:25:27,642 | Thread-3 | TID=1049225059594-100 NID=<null> - MSG=Fehler beim Abarbeiten der Anfrage</pre> - <div id="block"> - <p>In diesem Fall gibt der mitgeloggte Stacktrace Auskunft über die Art des Fehlers. Der Aufrufer des MOA SP/SS Webservices bekommt einen Fehlercode sowie eine kurze Beschreibung des Fehlers als Antwort zurück. </p> - <p> Die tatsächlich übertragenen Anfragen bzw. Antworten werden aus Effizienzgründen nur im Log-Level <code>DEBUG</code> angezeigt. </p> - </div> - <h2><a name="webservice_erweiterungsmoeglichkeiten" id="webservice_erweiterungsmoeglichkeiten"></a>2.2 Erweiterungsmöglichkeiten</h2> -<p>Ausgehend von der <a href="#webservice_basisinstallation">Basisinstallation</a> können die optionalen Erweiterungen, die in den nachfolgenden Abschnitten beschrieben werden, unabhängig und in beliebiger Kombination aufgesetzt werden.</p> -<h3><a name="webservice_erweiterungsmoeglichkeiten_webserver" id="webservice_erweiterungsmoeglichkeiten_webserver"></a>2.2.1 Vorgeschalteter Webserver</h3> -<h4><a name="webservice_erweiterungsmoeglichkeiten_webserver_iis" id="webservice_erweiterungsmoeglichkeiten_webserver_iis"></a>2.2.1.1 Microsoft Internet Information Server (MS IIS) </h4> - <p>Den MOA SP/SS Webservices kann optional ein MS IIS vorgeschaltet sein. In diesem Fall übernimmt der MS IIS die HTTP- bzw. HTTPS-Kommunikation mit dem Aufrufer des Webservices. Die Kommunikation zwischen MS IIS und dem in Tomcat eingerichteten MOA SP/SS Webservice wird durch <span class="term">mod_jk</span> durchgeführt. Die angeführten Konfigurationsschritte gehen von einer MS IIS Standard-Installation aus.</p> - <h5><a name="webservice_erweiterungsmoeglichkeiten_webserver_iis_jk" id="webservice_erweiterungsmoeglichkeiten_webserver_iis_jk"></a>2.2.1.1.1 Konfiguration von <span class="term">mod_jk</span> im MS IIS</h5> - <p> Für die Kommunikation des MS IIS mit dem im Tomcat eingerichteten MOA SP/SS Webservice wird das <span class="term">ISAPI</span>-Modul von <span class="term">mod_jk</span> im MS IIS installiert und konfiguriert. Eine detaillierte Installations- und Konfigurationsanleitung gibt das <span class="term"><a href="http://tomcat.apache.org/connectors-doc/webserver_howto/iis.html" target="_blank">mod_jk</a></span><a href="http://tomcat.apache.org/connectors-doc/webserver_howto/iis.html" target="_blank"> IIS HowTo</a>. Beispiele für <code>workers.properties</code> und <code>uriworkermap.properties</code> Dateien liegen im Verzeichnis <code>$MOA_SPSS_INST/tomcat</code> bei.</p> - <h5><a name="webservice_erweiterungsmoeglichkeiten_webserver_iis_tomcat" id="webservice_erweiterungsmoeglichkeiten_webserver_iis_tomcat"></a>2.2.1.1.2 Konfiguration von Tomcat</h5> - <p>Damit Tomcat die Aufrufe entgegennehmen kann, die von MS IIS mittels <span class="term"> mod_jk</span> weiterleitet werden, muss in <code>$CATALINA_HOME/conf/server.xml</code> der <span class="term">AJP Connector</span> aktiviert werden. Im Gegenzug können die Konnektoren für HTTP und HTTPS deaktiviert werden. Das geschieht am einfachsten durch Ein- bzw. Auskommentieren der entsprechenden <code>Connector</code> Konfigurations-Elemente in dieser Datei.</p> -<h5><a name="webservice_erweiterungsmoeglichkeiten_webserver_iis_ssl" id="webservice_erweiterungsmoeglichkeiten_webserver_iis_ssl"></a>2.2.1.1.3 Konfiguration von SSL</h5> - <p> Die Dokumentation zum Einrichten von SSL auf dem MS IIS steht nach Installation des IIS unter http://localhost/iisHelp/ oder aber auch auf den Webseiten von Mircrosoft zur Verfügung. </p> - <h4><a name="webservice_erweiterungsmoeglichkeiten_webserver_apache" id="webservice_erweiterungsmoeglichkeiten_webserver_apache"></a>2.2.1.2 Apache</h4> - <p>Den MOA SP/SS Webservices kann ein Apache Webserver vorgeschaltet sein. Das Prinzip funktioniert wie bei MS IIS, auch hier wird <span class="term"> mod_jk</span> für die Kommunikation zwischen Webserver und Tomcat eingesetzt. Die angeführten Konfigurationsschritte gehen von einer Standard-Installation des Apache Webservers aus.</p> - <h5><a name="webservice_erweiterungsmoeglichkeiten_webserver_apache_jk" id="webservice_erweiterungsmoeglichkeiten_webserver_apache_jk"></a>2.2.1.2.1 Konfiguration von <span class="term"> mod_jk</span> im Apache </h5> - <p>Um das MOA-SPSS Webservice hinter einem Apache Webserver zu betreiben, ist die Konfiguration des Apache-Moduls <span class="term">mod_jk</span> erforderlich. Eine detaillierte Installations- und Konfigurationsanleitung gibt das <span class="term"><a href="http://tomcat.apache.org/connectors-doc/webserver_howto/apache.html" target="_blank">mod_jk</a></span><a href="http://tomcat.apache.org/connectors-doc/webserver_howto/apache.html" target="_blank"> Apache HowTo</a>. Ein Beispiel für eine <code>workers.properties</code> Datei liegt im Verzeichnis <code>$MOA_SPSS_INST/tomcat</code> bei.</p> - <p>Um das MOA SP/SS Webservice dem Apache Webserver bekannt zu machen, sind zumindest folgende Einträge im globalen Kontext der Apache-Konfigurationsdatei notwendig:</p> - <pre>LoadModule jk_module /usr/lib/apache/mod_jk.so<br>AddModule jk_module<br>JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories<br>JkWorkersFile conf/workers.properties <br>JkMount /moa-spss/* moaworker </pre> - <p>Die Pfad- und Dateinamen können je nach existierender Apache Installation geringfügig variieren.</p> - <h5><a name="webservice_erweiterungsmoeglichkeiten_webserver_apache_tomcat" id="webservice_erweiterungsmoeglichkeiten_webserver_apache_tomcat"></a>2.2.1.2.2 Konfiguration von Tomcat</h5> - <p>Die Konfiguration von Tomcat ist analog zu Abschnitt <a href="#webservice_erweiterungsmoeglichkeiten_webserver_iis_tomcat">2.2.1.1.2</a> durchzuführen.</p> - <h5><a name="webservice_erweiterungsmoeglichkeiten_webserver_apache_ssl" id="webservice_erweiterungsmoeglichkeiten_webserver_apache_ssl"></a>2.2.1.2.2 Konfiguration von SSL mit <span class="term">mod_SSL</span></h5> - <p>Apache kann in Verbindung mit <span class="term">mod_SSL</span> als SSL-Endpunkt für das MOA SP/SS Webservice fungieren. In diesem Fall entfällt die SSL-Konfiguration in Tomcat, da Apache und Tomcat auch im Fall von SSL Daten via <span class="term">mod_jk</span> austauschen. Eine detaillierte Installations- und Konfigurationsanleitung enthält die <a href="http://www.modssl.org/docs/" target="_blank">Online-Dokumentation</a> von <span class="term">mod_SSL</span>.</p> - <p>Bei der Verwendung von Client-Authentisierung muss darauf geachtet werden, dass <span class="term">mod_ssl</span> die HTTP-Header mit den Informationen über das Client-Zertifikat exportiert. Dies wird durch Angabe der folgenden Option in der Apache-Konfiguration erreicht: </p> - <pre>SSLOptions +ExportCertData +StdEnvVars</pre> - <p>Je nach vorhandener SSL-Konfiguration des Apache Webservers kann diese Option im globalen Kontext, im Kontext des Virtual Hosts oder im Kontext eines Verzeichnisses spezifiziert werden.</p> - <h3><a name="webservice_erweiterungsmoeglichkeiten_datenbank" id="webservice_erweiterungsmoeglichkeiten_datenbank"></a>2.2.2 Datenbank</h3> - <p>Die MOA SP/SS Module können eine Datenbank zum Archivieren von Certificate Revocation Lists (CRLs), sowie zum Abspeichern von Log-Meldungen verwenden. In beiden Fällen wird eine installierte und konfigurierte Datenbank vorausgesetzt.</p> - <h4><a name="webservice_erweiterungsmoeglichkeiten_datenbank_postgresql" id="webservice_erweiterungsmoeglichkeiten_datenbank_postgresql"></a>2.2.2.1 PostgreSQL</h4> - <p>Eine detaillierte Übersicht über die Installation und Konfiguration von <span class="term">PostgreSQL</span> gibt die <a href="http://wiki.postgresql.org/wiki/Main_Page" target="_blank">Online-Dokumentation</a>. </p> - <p class="term">Bitte beachten Sie: Eine Möglichkeit, PostgreSQL unter MS Windows zu installieren, besteht darin, <a href="http://sources.redhat.com/cygwin/" target="_blank">Cygwin</a> mit dem PostgreSQL-Package zu installieren. Alternative Installationsvarianten werden in der PostgreSQL Dokumentation angeführt.</p> - <h5><a name="webservice_erweiterungsmoeglichkeiten_datenbank_postgresql_benutzer" id="webservice_erweiterungsmoeglichkeiten_datenbank_postgresql_benutzer"></a>2.2.2.1.1 Anlegen eines Benutzers und einer Datenbank für MOA SP/SS</h5> - <p>Damit die MOA SP/SS Module eine Verbindung zu <span class="term">PostgreSQL</span> aufbauen kann, müssen der Name eines <span class="term">PostgreSQL</span>-Benutzers und einer <span class="term">PostgreSQL</span>-Datenbank bekannt sein. Sollten diese nicht vorhanden sein, kann mit folgenden Kommandos ein Benutzer namens <code>moa</code> und eine Datenbank namens <code>moadb</code> angelegt werden:</p> - <pre>createuser -U postgres -d -A -P moa<br>createdb -U moa moadb</pre> - <p>Da die MOA SP/SS Module über <span class="term">JDBC</span> mit der Datenbank kommunizieren, ist in der Folge die Angabe einer <span class="term">JDBC</span>-URL notwendig, welche die Verbindungsparameter enthält. Wurden der Benutzer und die Datenbank wie im obigen Beispiel angelegt, ist folgende <span class="term">JDBC</span>-URL anzugeben (Annahme: als Passwort für den Benutzer moa wurde moapass gewählt):</p> - <pre> jdbc:postgresql://host/moadb?user=moa&password=moapass</pre> - <p>Die Zeichen <code>jdbc:postgresql://</code> sind unveränderliche Bestandteile einer <span class="term">PostgreSQL</span> <span class="term">JDBC</span>-URL. <code>host</code> gibt den Rechner an, auf dem <span class="term">PostgreSQL</span> läuft. <code>moadb</code> identifiziert den Namen der Datenbank. Über die Parameter <code>user=</code> und <code>pass=</code> werden Benutzername und Passwort für den DB-User bekanntgegeben.</p> - <h5><a name="webservice_erweiterungsmoeglichkeiten_datenbank_postgresql_crls" id="webservice_erweiterungsmoeglichkeiten_datenbank_postgresql_crls"></a>2.2.2.1.2 Archivierung von CRLs</h5> - <p>Zum Archivieren von CRLs müssen in der MOA SP/SS Konfigurationsdatei die Kinder des Elements <code>cfg:MOAConfiguration/cfg:SignatureVerification/cfg:CertificateValidation/cfg:RevocationChecking/cfg:Archiving</code> entsprechend - konfiguriert werden: </p> - <ul> - <li><code>cfg:EnableArchiving</code> muss auf den Wert <code>true</code> gesetzt sein;</li> - <li><code>cfg:ArchiveDuration</code> muss als nichtnegative Ganzzahl die maximale Archivierungsdauer in Tagen enthalten;</li> - <li><code>cfg:Archive</code> muss genau ein Element <code>cfg:DatabaseArchive</code> enthalten, das wiederum aus zwei Elementen - bestehen muss: - <ul> - <li><code>cfg:JDBCURL</code> muss eine gültige JDBC-URL enthalten, mit der auf die Datenbank zur Archivierung - zugegriffen werden kann (<span class="remark">Hinweis: da es sich hierbei um einen Eintrag - in eine XML-Datei handelt, muss das Zeichen <code>&</code> in der in Abschnitt <a href="#webservice_erweiterungsmoeglichkeiten_datenbank_postgresql_benutzer">2.2.2.1.1</a> gezeigten - JDBC-URL - durch die Zeichenfolge <code>&amp;</code> ersetzt werden.</span>);</li> - <li><code>cfg:JDBCDriverClassName</code> muss den vollständig qualifizierten Java-Klassennamen des JDBC-Treibers - enthalten. </li> - </ul> - </li> - </ul> - <p>Vergleiche auch Abschnitt <a href="../config/config.html#konfigurationsparameter_sp_certificatevalidation_revocationchecking_archiving">2.3.1.3.4</a> im - Konfigurationshandbuch.</p> - <h5><a name="webservice_erweiterungsmoeglichkeiten_datenbank_postgresql_logging" id="webservice_erweiterungsmoeglichkeiten_datenbank_postgresql_logging"></a>2.2.2.1.3 Logging</h5> - <p>Für das Logging in eine <span class="term">PostgreSQL</span> Datenbank mittels <span class="term">Log4j</span> muss zunächst eine Tabelle für die Log-Meldungen angelegt werden. Dies kann mit folgendem SQL-Statement erreicht werden:</p> - <pre> create table spss_log (log_time timestamp, log_level varchar(5), log_msg text);</pre> - <p>Damit <span class="term">Log4j</span> die Log-Meldungen in diese Datenbanktabelle schreibt, muss die <span class="term">Log4j</span>-Konfiguration adaptiert werden. Die mit MOA SP/SS mitgelieferte, beispielhafte <a href="../../../conf/moa-spss/log4j.properties">Log4j-Konfiguration</a> enthält bereits die notwendigen Einträge für das Logging in eine PostgreSQL Datenbank, die jedoch standardmäßig ausgeschaltet sind. </p> - <p>Wie beim Caching von CRLs ist auch hier die Angabe einer <span class="term">JDBC</span>-URL notwendig, damit die MOA SP/SS Module eine Verbindung zur Datenbank aufnehmen können.</p> - <p><span class="remark">Bitte beachten Sie: Bei Tests hat sich das Logging in eine Datenbank mit Log4j als Performance-Engpass herausgestellt. Es wird deshalb empfohlen, dieses Feature mit Bedacht einzusetzen.</span></p> - <h4><a name="webservice_erweiterungsmoeglichkeiten_datenbank_andere" id="webservice_erweiterungsmoeglichkeiten_datenbank_andere"></a>2.2.2.2 Andere Datenbanken </h4> - <p>Über die generische Anbindung JDBC können auch andere Datenbanken für die Archivierung von CRLs bzw. für die Speicherung der Log-Meldungen eingesetzt werden. Hinweise zu bestimmten Datenbanken finden Sie in den <a href="../faq/faq.html">FAQ</a>. </p> - <p>Die in Abschnitt <a href="#webservice_erweiterungsmoeglichkeiten_datenbank_postgresql">2.2.2.1</a> gemachten Angaben zu Archivierung von CRLs bzw. zur Speicherung von Log-Meldungen gelten sinngemäß. </p> - <h3><a name="webservice_erweiterungsmoeglichkeiten_hsm" id="webservice_erweiterungsmoeglichkeiten_hsm"></a>2.2.3 Hardware Security Module (HSM)</h3> - <p>MOA SS kann für die Erstellung von Signaturen auf die Dienste eines HSM zurückgreifen. Voraussetzung dafür ist, dass für das HSM eine Implementierung der Schnittstelle PCKS#11 (PKCS#11-Bibliothek) angeboten wird. </p> - <p>Für die Einbindung des HSM in MOA SS müssen zunächst die Bibliotheken aus <code>$MOA_SPSS_INST/pkcs11</code> in ein beliebiges Verzeichnis kopiert werden, welches dann in den Libray-Pfad des jeweiligen Betriebssystems aufgenommen werden muss (Windows: Umgebungsvariable <code>PATH</code>; Linux: Umgebungsvariable <code>LD_LIBRARY_PATH</code>). </p> - <p>Der Name der für das HSM spezifischen PKCS#11-Bibliothek muss in der Konfigurationsdatei eingetragen werden (vergleiche Abschnitt <a href="../config/config.html#konfigurationsparameter_ss_keymodules_hardwarekeymodule">2.2.1.1</a> des Konfigurationshandbuchs).</p> - <h1><a name="klassenbibliothek"></a>3 Klassenbibliothek</h1> - <p>Dieser Abschnitt beschreibt die Verwendung von MOA SP/SS als Klassenbibliothek. Im ersten Unterkapitel wird eine minimale Basisinstallation beschrieben. Das zweite Unterkapitel zeigt eine Reihe von optionalen Erweiterungsmöglichkeiten auf.</p> - <h2><a name="klassenbibliothek_basisinstallation" id="klassenbibliothek_basisinstallation"></a>3.1 Basisinstallation</h2> - <h3><a name="klassenbibliothek_basisinstallation_einfuehrung" id="klassenbibliothek_basisinstallation_einfuehrung"></a>3.1.1 Einführung </h3> - <p>Die Basisinstallation der Klassenbibliothek stellt einerseits die minimalen Anforderungen für den Einsatz von MOA SP/SS als Klassenbibliothek dar, andererseits dient sie als Ausgangspunkt für optionale Erweiterungsmöglichkeiten.</p> - <p> Die <strong>Mindestanforderungen</strong> für die Basisinstallation sind: </p> - <ul> - <li><a href="#referenziertesoftware">Java SE 7 oder höher</a></li> -</ul> - <p>Wir <strong>empfehlen</strong> jedoch jeweils aktuelle Version zu verwenden:</p> - <ul> - <li><a href="#referenziertesoftware">Java SE Update SE 8 (neuestes Update)</a></li> - </ul> -<h3><a name="klassenbibliothek_basisinstallation_vorbereitung" id="klassenbibliothek_basisinstallation_vorbereitung"></a>3.1.2 Vorbereitung </h3> -<p>Die folgenden Schritte dienen der Vorbereitung der Installation.</p> - <dl> - <dt>Installation von Java SE</dt> - <dd>Installieren Sie Java SE in ein beliebiges Verzeichnis. Das Wurzelverzeichnis der Java SE Installation wird im weiteren Verlauf als <code>$JAVA_HOME</code> bezeichnet.</dd> - <dt>Entpacken der MOA SP/SS Klassenbibliotheks-Distribution</dt> - <dd> Entpacken Sie die Datei <code>moa-spss-3.0.x-lib.zip</code> in ein beliebiges Verzeichnis. Dieses Verzeichnis wird im weiteren Verlauf als <code>$MOA_SPSS_INST</code> bezeichnet. </dd> - <dt>Installation der Kryptographiebibliotheken von SIC/IAIK</dt> - <dd> - <p>Kopieren Sie alle Dateien aus dem Verzeichnis <code>$MOA_SPSS_INST/ext</code> in das Verzeichnis <code>$JAVA_HOME/jre/lib/ext</code>. Zusätzlich müssen Sie die Rechtedateien Ihrer Java SE austauschen. Laden Sie dazu die passenden <span class="term">Unlimited Strength - - - Jurisdiction Policy Files</span> von der <a href="http://java.com/download" target="_blank">Java SE Downloadseite </a>und achten Sie darauf die für ihre verwendete Java SE Installation richtige Version zu nehmen. Anschließend folgen Sie der darin enthaltenen Installationsanweisung.</p> -</dd> -</dl> -<h3><a name="klassenbibliothek_basisinstallation_verwendung" id="klassenbibliothek_basisinstallation_verwendung"></a>3.1.3 Verwendung</h3> - <p> Um die MOA SP/SS Klassenbibliothek in einer Applikation verwenden zu können, müssen die mit MOA SP/SS ausgelieferten Bibliotheken in den Java Klassenpfad der Applikation eingebunden werden. </p> - <p>Die nachfolgende Tabelle listet diese Klassenbibliotheken auf; die Einträge in der Spalte Dateien sind relativ zum Verzeichnis <code>$MOA_SPSS_INST</code> zu interpretieren.</p> -<table class="fixedWidth" border="1" cellpadding="2"> - <tbody><tr> -<th>Klassenbibliothek</th><th>Version</th><th>Dateien</th> - -</tr><tr> -<td>MOA SP/SS</td> -<td>2.0.0 </td> -<td><code>moa-spss.jar</code>, <code>moa-common.jar</code></td> -</tr><tr> -<td>MOA IAIK</td> -<td><p>1.5<strong> </strong></p></td> -<td><p><code>lib/iaik_moa-1.5.jar</code>, - <code>lib/iaik_cms-4.1.jar</code>, <code>lib/iaik_ixsil-1.2.2.5.jar</code></p> - </td> -</tr> -<tr> - <td>Mail</td> - <td>1.4 </td> - <td><code>lib/mail-1.4.jar</code></td> -</tr> -<tr> - <td>Activation</td> - <td>1.1 </td> - <td><code>lib/activation-1.1.jar</code></td> -</tr> -<tr> -<td>Xerces-J</td> -<td>2.9.0 </td> -<td><code>lib/xercesImpl.jar</code></td> -</tr><tr> -<td>Xalan-J</td> -<td>2.7.1 </td> -<td><p><code>lib/xalan.jar</code>, <code>lib/xml-apis.jar</code>, <code>lib/serializer.jar</code></p> - <p class="remark">Bitte beachten Sie: Sie müssen diese Bibliothek gegebenenfalls der Java VM als endorsed bekanntgeben. Sie können dies tun, indem Sie entweder</p> - <ul> - <li class="remark">die Bibliothek in das (ggf. vorher anzulegende) Verzeichnis <code>$JAVA_HOME/jre/lib/endorsed/</code> kopieren; oder</li> - <li class="remark">die System Property <code>java.endorsed.dirs</code> verwenden, und als Wert den Pfad zu jenem Verzeichnis angeben, in dem Sie die Bibliothek vorhalten (also z.B. <code>java.endorsed.dirs=c:/mylibdir</code>).</li> - </ul></td> -</tr><tr> -<td>Jaxen</td><td>1.0 </td> -<td><code>lib/jaxen-1.0-FCS.jar</code>, <code>lib/saxpath-1.0-FCS.jar</code></td> - -</tr><tr> -<td>Commons-Logging</td> -<td>1.0.4 </td> -<td><code>lib/commons-logging-1.0.4.jar</code></td> -</tr><tr> -<td>Log4j</td> -<td>1.2.14 </td> -<td><code>lib/log4j-1.2.14.jar</code></td> -</tr> -<tr> - <td>Commons-Discovery</td><td>0.2 </td><td><code>lib/commons-discovery-0.2.jar</code></td> -</tr> -<tr> - <td>Postgres JDBC2</td><td>7.3 </td><td><p><code>lib/postgresql-7.2.jar</code></p> - <p><span class="remark">Bitte beachten Sie: Wenn Sie keine Datenbank für MOA SP/SS verwenden (vergleiche </span><a href="#webservice_erweiterungsmoeglichkeiten_datenbank">2.2.2</a><span class="remark">), benötigen Sie diese Bibliothek nicht.</span></p></td> -</tr><tr> -</tr> -<tr> - <td>Axis</td> - <td>1.0_IAIK/1.4 </td> - <td><code>lib/axis-1.0_iaik.jar, lib/axis-jaxrpc-1.4.jar, lib/axis-saaj-1.4.jar, lib/axis-wsdl4j-1.5.1.jar</code></td> -</tr> -</tbody></table> - - <h3><a name="klassenbibliothek_basisinstallation_logging" id="klassenbibliothek_basisinstallation_logging"></a>3.1.4 Logging</h3> - <p> Die MOA SP/SS Klassenbibliothek verwendet <a href="#referenziertesoftware">Log4j</a> für die Ausgabe von Log-Meldungen am Bildschirm bzw. in Log-Dateien. Die im Abschnitt <a href="#webservice_basisinstallation_logging">2.1.3</a> gemachten Aussagen lassen sich großteils auf den Einsatz der MOA SP/SS Klassenbibliothek übertragen. </p> - <h2><a name="klassenbibliothek_erweiterungsmoeglichkeiten" id="klassenbibliothek_erweiterungsmoeglichkeiten"></a>3.2 Erweiterungsmöglichkeiten </h2> - <p>Die im Abschnitt <a href="#webservice_erweiterungsmoeglichkeiten">2.2</a> angeführten Erweiterungsmöglichkeiten für die MOA SP/SS Webservices gelten in analoger Weise auch für die Klassenbibliothek.</p> - <h1><a name="referenzierte_software"></a>A Referenzierte Software</h1> -<p>Auf folgende Software-Pakete wird in diesem Handbuch verwiesen:</p> -<table class="fixedWidth" border="1" cellpadding="2"> - <tr> - <th scope="col">Name</th> - <th scope="col">Beschreibung</th> - </tr> - <tr> - <td><a href="http://jakarta.apache.org/tomcat/index.html" target="_blank">Apache Tomcat </a></td> - <td>Apache Tomcat Servlet-Container</td> - </tr> - <tr> - <td><a href="http://java.com/" target="_blank">Java SE</a></td> - <td>Java Standard Edition (Software Development Kit bzw. Java Runtime Environment) </td> - </tr> - <tr> - <td><a href="http://logging.apache.org/log4j/1.2/" target="_blank"> Log4J </a></td> - <td>Logging Framework </td> - </tr> -</table> - -</body> -</html> diff --git a/moaSig/handbook/handbook/intro/intro.html b/moaSig/handbook/handbook/intro/intro.html deleted file mode 100644 index 138ca61..0000000 --- a/moaSig/handbook/handbook/intro/intro.html +++ /dev/null @@ -1,43 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> -<html> -<head> - <meta http-equiv="content-type" content="text/html; charset=iso-8859-1"> - <title>MOA SS und SP - Einführung</title> - <link rel="stylesheet" href="../common/MOA.css" type="text/css"> -</head> -<body link="#990000"> - <table class="logoTable" width="100%" border="0" cellspacing="0" cellpadding="10"> - <tr> - <td align="center" class="logoTitle" width="267"><img src="../common/LogoBKA.png" alt="Logo BKA" width="267" height="37" align="left"></td> - <td align="center" class="logoTitle">Dokumentation</td> - <td align="center" class="logoTitle" width="123"><img src="../common/LogoEGIZ.png" alt="Logo EGIZ" width="230" height="81" align="right"></td> - </tr> - </table> - <hr/> - <p class="title"><a href="../index.html">MOA: Serversignatur (SS) und Signaturprüfung (SP)</a></p> - <p class="subtitle">Einführung</p> - <hr/> - <h1>Inhalt</h1> - <ol> - <li> - <p><a href="#allgemeines">Allgemeines</a></p> - </li> - <li> - <p><a href="#ss">Modul Serversignatur (SS) </a></p> - </li> - <li><a href="#sp">Modul Signaturprüfung (SP) </a></li> - </ol> -<hr/> - <h1><a name="allgemeines"></a>1 Allgemeines</h1> - <p> Die Module Serversignatur (SS) und Signaturprüfung (SP) können von Anwendungen verwendet werden, um elektronische Signaturen zu erstellen bzw. vorliegende elektronische Signaturen zu überprüfen.</p> - <p>Die Funktionalität und der Aufbau der Schnittstelle zu den beiden Modulen ist in der <a href="../spec/MOA-SPSS-2.0.0.pdf" target="_blank" class="term">Spezifikation MOA SP/SS (V2.0.0)</a> detailliert beschrieben. Da diese Spezifikation auf der <a href="http://www.buergerkarte.at/konzept/securitylayer/spezifikation/20140114/core/core.html#core" target="_blank" class="term"> Schnittstellenspezifikation des Security-Layers (V 1.2.7)</a> aufbaut, ist deren Kenntnis zum Verstehen der Schnittstellen zu SS und SP erforderlich. </p> -<h1><a name="ss"></a>2 Modul Serversignatur (SS) </h1> - <p> Das Modul Serversignatur (SS) dient zum Erstellen von XML-Signaturen in Anlehnung an die <a href="http://www.buergerkarte.at/konzept/securitylayer/spezifikation/20140114/core/core.html#core" target="_blank" class="term"> Schnittstellenspezifikation des Security-Layers (V 1.2.7)</a>. Eine Signatur kann entweder rein in Software erstellt werden, oder aber unter Zuhilfenahme eines Hardware Security Modules (HSM), das den privaten Schlüssel geschützt enthält und die Signatur berechnet.</p> - <p> Der Zugriff auf einzelne Signaturschlüssel in MOA SS kann basierend auf dem für TLS-Client-Authentisierung verwendeten Zertifikat eingeschränkt werden. </p> - <p> Anwendungen können das Modul entweder als Web-Service oder über ein Java-API ansprechen. </p> - <h1><a name="sp"></a>3 Modul Signaturprüfung (SP) </h1> - <p> Das Modul Signaturprüfung (SP) dient zum Überprüfen von <a href="http://www.w3.org/TR/2002/REC-xmldsig-core-20020212/" target="_blank">XML-Signaturen</a> und <a href="http://www.ietf.org/rfc/rfc2630.txt" target="_blank">CMS-Signaturen</a> sowie den fortgeschrittenen Signaturen XAdES und CAdES entsprechende der <a href="http://www.buergerkarte.at/konzept/securitylayer/spezifikation/20140114/core/core.html#core" target="_blank" class="term">Schnittstellenspezifikation des Security-Layers (V 1.2.7)</a>.</p> -<p>Im Zuge der Verifikation einer XML-Signatur werden die Signatur, gegebenenfalls vorhandene XMLDSIG-Manifeste, als auch die Gültigkeit und Anwendbarkeit des Zertifikats überprüft. Bei XML-Signaturen kann zusätzlich überprüft werden, ob sie den speziellen Anforderungen <a href="http://www.buergerkarte.at/konzept/securitylayer/spezifikation/20140114/core/core.html#core" target="_blank" class="term"> Schnittstellenspezifikation des Security-Layers (V 1.2.7)</a> entsprechen (vgl. Signaturmanifest). </p> - <p> Anwendungen können das Modul entweder als Web-Service oder über ein Java-API ansprechen.</p> -</body> -</html> diff --git a/moaSig/handbook/handbook/spec/MOA-SPSS-1.3.pdf b/moaSig/handbook/handbook/spec/MOA-SPSS-1.3.pdf Binary files differdeleted file mode 100644 index 6709a40..0000000 --- a/moaSig/handbook/handbook/spec/MOA-SPSS-1.3.pdf +++ /dev/null diff --git a/moaSig/handbook/handbook/spec/MOA-SPSS-2.0.0.pdf b/moaSig/handbook/handbook/spec/MOA-SPSS-2.0.0.pdf Binary files differdeleted file mode 100644 index 6cf5382..0000000 --- a/moaSig/handbook/handbook/spec/MOA-SPSS-2.0.0.pdf +++ /dev/null diff --git a/moaSig/handbook/handbook/spec/MOA-SPSS-2.0.0.wsdl b/moaSig/handbook/handbook/spec/MOA-SPSS-2.0.0.wsdl deleted file mode 100644 index c8bf329..0000000 --- a/moaSig/handbook/handbook/spec/MOA-SPSS-2.0.0.wsdl +++ /dev/null @@ -1,128 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - Web Service Description for MOA SP/SS 1.5 ---> -<definitions xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:tns="http://reference.e-government.gv.at/namespace/moa/20020822#" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:moa="http://reference.e-government.gv.at/namespace/moa/20020822#" xmlns:xsd="http://www.w3.org/1999/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" name="MOA" targetNamespace="http://reference.e-government.gv.at/namespace/moa/20020822#"> - <import namespace="http://reference.e-government.gv.at/namespace/moa/20020822#" location="../resources/schemas/MOA-SPSS-2.0.0.xsd"/> - <message name="CreateCMSSignatureInput"> - <part name="body" element="moa:CreateCMSSignatureRequest"/> - </message> - <message name="CreateCMSSignatureOutput"> - <part name="body" element="moa:CreateCMSSignatureResponse"/> - </message> - <message name="CreateXMLSignatureInput"> - <part name="body" element="moa:CreateXMLSignatureRequest"/> - </message> - <message name="CreateXMLSignatureOutput"> - <part name="body" element="moa:CreateXMLSignatureResponse"/> - </message> - <message name="VerifyCMSSignatureInput"> - <part name="body" element="moa:VerifyCMSSignatureRequest"/> - </message> - <message name="VerifyCMSSignatureOutput"> - <part name="body" element="moa:VerifyCMSSignatureResponse"/> - </message> - <message name="VerifyXMLSignatureInput"> - <part name="body" element="moa:VerifyXMLSignatureRequest"/> - </message> - <message name="VerifyXMLSignatureOutput"> - <part name="body" element="moa:VerifyXMLSignatureResponse"/> - </message> - <message name="MOAFault"> - <part name="body" element="moa:ErrorResponse"/> - </message> - <portType name="SignatureCreationPortType"> - <operation name="createXMLSignature"> - <input message="tns:CreateXMLSignatureInput"/> - <output message="tns:CreateXMLSignatureOutput"/> - <fault name="MOAFault" message="tns:MOAFault"/> - </operation> - <operation name="createCMSSignature"> - <input message="tns:CreateCMSSignatureInput"/> - <output message="tns:CreateCMSSignatureOutput"/> - <fault name="MOAFault" message="tns:MOAFault"/> - </operation> - </portType> - <portType name="SignatureVerificationPortType"> - <operation name="verifyCMSSignature"> - <input message="tns:VerifyCMSSignatureInput"/> - <output message="tns:VerifyCMSSignatureOutput"/> - <fault name="MOAFault" message="tns:MOAFault"/> - </operation> - <operation name="verifyXMLSignature"> - <input message="tns:VerifyXMLSignatureInput"/> - <output message="tns:VerifyXMLSignatureOutput"/> - <fault name="MOAFault" message="tns:MOAFault"/> - </operation> - </portType> - <binding name="SignatureCreationBinding" type="tns:SignatureCreationPortType"> - <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/> - <operation name="createXMLSignature"> - <soap:operation soapAction="urn:CreateXMLSignatureAction"/> - <input> - <soap:body use="literal" namespace="http://reference.e-government.gv.at/namespace/moa/20020822#"/> - </input> - <output> - <soap:body use="literal" namespace="http://reference.e-government.gv.at/namespace/moa/20020822#"/> - </output> - <fault name="MOAFault"> - <soap:fault name="" use="literal" namespace="http://reference.e-government.gv.at/namespace/moa/20020822#"/> - </fault> - </operation> - <operation name="createCMSSignature"> - <soap:operation soapAction="urn:CreateCMSSignatureAction"/> - <input> - <soap:body use="literal" namespace="http://reference.e-government.gv.at/namespace/moa/20020822#"/> - </input> - <output> - <soap:body use="literal" namespace="http://reference.e-government.gv.at/namespace/moa/20020822#"/> - </output> - <fault name="MOAFault"> - <soap:fault name="" use="literal" namespace="http://reference.e-government.gv.at/namespace/moa/20020822#"/> - </fault> - </operation> - </binding> - <binding name="SignatureVerificationBinding" type="tns:SignatureVerificationPortType"> - <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/> - <operation name="verifyCMSSignature"> - <soap:operation soapAction="urn:VerifyCMSSignatureAction"/> - <input> - <soap:body use="literal" namespace="http://reference.e-government.gv.at/namespace/moa/20020822#"/> - </input> - <output> - <soap:body use="literal" namespace="http://reference.e-government.gv.at/namespace/moa/20020822#"/> - </output> - <fault name="MOAFault"> - <soap:fault name="" use="literal" namespace="http://reference.e-government.gv.at/namespace/moa/20020822#"/> - </fault> - </operation> - <operation name="verifyXMLSignature"> - <soap:operation soapAction="urn:VerifyXMLSignatureAction"/> - <input> - <soap:body use="literal" namespace="http://reference.e-government.gv.at/namespace/moa/20020822#"/> - </input> - <output> - <soap:body use="literal" namespace="http://reference.e-government.gv.at/namespace/moa/20020822#"/> - </output> - <fault name="MOAFault"> - <soap:fault name="" use="literal" namespace="http://reference.e-government.gv.at/namespace/moa/20020822#"/> - </fault> - </operation> - </binding> - <service name="SignatureCreationService"> - <port name="SignatureCreationPort" binding="tns:SignatureCreationBinding"> - <!-- - Please note that the location URL must be adapted to the actual service URL. - <soap:address location="http://localhost/moa-spss/services/SignatureCreation"/> - --> - </port> - </service> - <service name="SignatureVerificationService"> - <port name="SignatureVerificationPort" binding="tns:SignatureVerificationBinding"> - <!-- - Please note that the location URL must be adapted to the actual service URL. - <soap:address location="http://localhost/moa-spss/services/SignatureVerification"/> - --> - </port> - </service> -</definitions> diff --git a/moaSig/handbook/handbook/usage/usage.html b/moaSig/handbook/handbook/usage/usage.html deleted file mode 100644 index d36fb13..0000000 --- a/moaSig/handbook/handbook/usage/usage.html +++ /dev/null @@ -1,1366 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> -<html> -<head> - <meta http-equiv="content-type" content="text/html; charset=iso-8859-1"> - <title>MOA SS und SP - Anwendung</title> - <link rel="stylesheet" href="../common/MOA.css" type="text/css"> -</head> -<body link="#990000"> - <table class="logoTable" width="100%" border="0" cellspacing="0" cellpadding="10"> - <tr> - <td align="center" class="logoTitle" width="267"><img src="../common/LogoBKA.png" alt="Logo BKA" width="267" height="37" align="left"></td> - <td align="center" class="logoTitle">Dokumentation</td> - <td align="center" class="logoTitle" width="123"><img src="../common/LogoEGIZ.png" alt="Logo EGIZ" width="230" height="81" align="right"></td> - </tr> - </table> - <hr/> - <p class="title"><a href="../index.html">MOA: Serversignatur (SS) und Signaturprüfung (SP)</a></p> - <p class="subtitle">Anwendung</p> - <hr/> - <h1>Inhalt</h1> - <ol> - <li> - <p><a href="#übersicht">Übersicht</a></p> - </li> - <li> - <p><a href="#webservice">Verwendung des Webservices</a></p> - <ol> - <li><a href="#webservice_xmlrequests">XML-Requests</a> <ol> - <li><a href="#webservice_xmlrequests_erstellungcms">Erstellung einer CMS bzw. CAdES-Signatur</a></li> - <ol> - <li><a href="#webservice_xmlrequests_erstellungcms_einfach">Beispiel (Base64-codiertes Datenobjekt)</a></li> - <li><a href="#webservice_xmlrequests_erstellungcms_erweitert">Beispiel (Datenobjekt als Referenz)</a></li> - </ol> - <li><a href="#webservice_xmlrequests_erstellungxml">Erstellung einer XML bzw. XAdES-Signatur</a> - <ol> - <li><a href="#webservice_xmlrequests_erstellungxml_simple">Einfaches Beispiel</a></li> - <li><a href="#webservice_xmlrequests_erstellungxml_daten">Angabe der zu signierenden Daten</a></li> - <li><a href="#webservice_xmlrequests_erstellungxml_transformationen">Transformationen</a></li> - <li><a href="#webservice_xmlrequests_erstellungxml_ergaenzungsobjekte">Ergänzungsobjekte</a> </li> - </ol> - </li> - <li><a href="#webservice_xmlrequests_pruefungcms">Prüfung einer CMS bzw. CAdES-Signatur </a> - <ol> - <li><a href="#webservice_xmlrequests_pruefungcms_einfach">Einfaches Beispiel</a></li> - <li><a href="#webservice_xmlrequests_pruefungcms_erweitert">Erweitertes Beispiel</a> </li> - </ol> - </li> - <li><a href="#webservice_xmlrequests_pruefungxml">Prüfung einer XML bzw. XAdES-Signatur </a> - <ol> - <li><a href="#webservice_xmlrequests_pruefungxml_einfach">Einfaches Beispiel</a></li> - <li><a href="#webservice_xmlrequests_pruefungxml_erweitert">Erweitertes Beispiel</a></li> - <li><a href="#webservice_xmlrequests_pruefungxml_xmldsigmanifest">Prüfung eines XMLDSIG-Manifests</a></li> - <li><a href="#webservice_xmlrequests_pruefungxml_ergaenzungsobjekte">Ergänzungsobjekte</a></li> - <li><a href="#webservice_xmlrequests_pruefungxml_signaturmanifest">Signatur-Manifest des Security-Layers</a></li> - <li><a href="#webservice_xmlrequests_pruefungxml_tsl">Prüfung gegen Trustprofil mit TSL Unterstützung</a></li> - </ol> - </li> - </ol> - </li> - <li><a href="#webservice_clients">Webservice-Clients - </a> <ol> - <li><a href="#webservice_clients_übersicht">Übersicht</a></li> - <li><a href="#webservice_clients_gemeinsamkeiten">Gemeinsamkeiten</a></li> - <li><a href="#webservice_clients_httpsserverauth">Besonderheiten von <code>HTTPSServerAuth.java</code></a></li> - <li><a href="#webservice_clients_httpsclientauth">Besonderheiten von <code>HTTPSClientAuth.java</code></a></li> - </ol> - </li> - <li><a href="#readcert">Zertifikat einer Schlüsselgruppe auslesen</a></li> - </ol> - </li> - <li><a href="#klassenbibliothek">Verwendung der Klassenbibliothek</a> - <ol> - <li><a href="#klassenbibliothek_vorbereitung">Vorbereitung</a></li> - <li><a href="#klassenbibliothek_allgemeines">Allgemeines</a> </li> - <li><a href="#klassenbibliothek_beispiele">Beispiele</a></li> - <li><a href="#klassenbibliothek_apidoc">API-Dokumentation</a> </li> - </ol> - </li> - </ol> - <ol type="A"> - <li><a href="#referenzierte_software">Referenzierte Software</a></li> - <li><a href="#referenzierte_spezifikation">Referenzierte Spezifikation</a></li> - </ol> - -<hr/> - <h1><a name="übersicht" id="übersicht"></a>1 Übersicht</h1> - <p> Die Module Signaturprüfung (SP) und Serversignatur (SS) sind als plattformunabhängige Module ausgelegt, die entweder als Webservice über HTTP bzw. HTTPS oder als Klassenbibliothek über ein API angesprochen werden können. Dieses Handbuch beschreibt die Anwendung der beiden Module auf jede dieser beiden Arten.</p> - <h1><a name="webservice"></a>2 Verwendung des Webservices </h1> - <p>Dieser Abschnitt beschreibt die Verwendung der Module SP und SS über die Webservice-Schnittstelle. Im ersten Unterabschnitt werden typische XML-Requests zur Signaturerstellung mittels SS bzw. zur Signaturprüfung mittels SP vorgestellt, wie sie an das Webservice gesendet werden können. Der zweite Unterabschnitt stellt beispielhafte Implementierungen eines Webservice-Clients in Java vor, mit dem die Requests aus dem ersten Unterabschnitt an das Webservice gesendet werden können.</p> - <h2><a name="webservice_xmlrequests" id="webservice_xmlrequests"></a>2.1 XML-Requests </h2> - <p>Dieser Abschnitt stellt typische XML-Requests für die Erstellung einer XML/XAdES- und CMS/CAdES-Signatur mittels SS bzw. zur Prüfung einer CMS/CAdES- bzw. XML/XAdES-Signatur mittels SP vor. Zu jedem Request wird jeweils auch eine typische Response des Services besprochen. </p> -<p class="remark">Bitte beachten Sie: Einige der vorgestellten Requests referenzieren beispielhafte Daten auf <code>localhost</code>, z.B. <code>http://localhost:8080/referencedData/Text.txt</code>. Wenn Sie diese Beispiele ausprobieren möchten, müssen Sie dafür sorgen, dass MOA SS bzw. SP diese Daten auch tatsächlich auflösen kann. Wenn Sie Ihre Tomcat-Installation auf <code>localhost:8080</code> betreiben, ist es ausreichend, wenn sie die diesem Handbuch beiliegende Webapplikation <code><a href="../../clients/common/referencedData/referencedData.war">referencedData.war</a></code> in das Verzeichnis <code>webapps</code> Ihrer Tomcat-Installation kopieren. Ansonsten müssen Sie zusätzlich die URLs in den Requests anpassen. </p> - <h3><a name="webservice_xmlrequests_erstellungcms" id="webservice_xmlrequests_erstellungcms"></a>2.1.1 Erstellung einer CMS bzw. CAdES-Signatur</h3> - <p>MOA-SS ermöglicht die Erstellung einer herkömmlichen CMS-Signatur und einer CAdES-Signatur gemäß der <a href="#sl"> Security-Layer Spezifikation</a>. Die Auswahl ob eine herkömmliche XML oder eine Security-Layer konforme CAdES-Signatur erstellt wird, erfolgt durch das Attribute <code>SecurityLayerConformity</code> im Signaturerstelltungs-Request (siehe auch folgende Beispiele).</p> -<h4><a name="webservice_xmlrequests_erstellungcms_einfach" id="webservice_xmlrequests_erstellungcms_einfach"></a>2.1.1.1 Beispiel (Base64-codiertes Datenobjekt)</h4> -<h5>Request</h5> - <p><code><a href="../../clients/webservice/resources/requests/CreateCMSSignatureRequest.Base64Content.xml" target="_blank">CreateCMSSignatureRequest.Base64Content.xml</a></code> ist ein einfacher XML-Request zur Erzeugung einer CAdES-Signatur. Sein Aufbau wird nachfolgend analysiert:</p> - <pre> <KeyIdentifier>KG_allgemein</KeyIdentifier> </pre> - <p><code>KG_allgemein</code> bezeichnet eine Schlüsselgruppe, aus der SS einen Signaturschlüssel selektieren soll und muss einer in der SP/SS-Konfigurationsdatei definierten Schlüsselgruppe entsprechen. </p> - <pre> <SingleSignatureInfo SecurityLayerConformity="true"></pre> - <p> Für jedes <code>SingleSignatureInfo</code>Element wird eine eigene CMS/CAdES-Signatur erzeugt. Wird das Attribut <code>SecurityLayerConformity</code> auf <code>true</code> gesetzt, dann wird eine CAdES-Signatur gemäß <a href="#sl"> Security-Layer Spezifikation</a> 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).</p> -<pre> <DataObjectInfo Structure="enveloping"> - <DataObject> - <MetaInfo> - <MimeType>text/plain</MimeType> - </MetaInfo> - <Content> - <Base64Content>RGllc2UgRGF0ZW4gc2luZCByZWluZXIgVGV4dC4=</Base64Content> - </Content> - </DataObject> - </DataObjectInfo> -</pre> -<p>Das zu signierende Daten-Objekt muss in einem <code>DataObjectInfo</code> Element spezifiziert werden. Das Attribut <code>Structure</code> gibt an, ob die Daten in die Signatur integriert werden sollen (<code>Structure="enveloping"</code>) oder nicht (<code>Structure="detached"</code>). </p> -<p> Im nachfolgenden <code>DataObject</code> Element muss entweder das Attribut <code>Reference</code> (enthält eine URL, von der SS die Daten beziehen soll) gesetzt sein, oder aber die zu signierenden Daten werden explizit im Element <code>Base64Content</code> (enthält Daten in Base64 kodierter Form) spezifiziert sein. Die Angabe der zu signierenden Daten über das Attribut <code>Reference</code> und gleichzeitig im Element <code>Base64Content</code> ist nicht erlaubt. Zusätzlich muss im Element <code>MimeType</code> (unter dem Element <code>MetaInfo</code>) der MIME-Type der zu signierenden Daten spezifiziert werden.</p> - <p>Im konkreten Beispiel sollen die Daten in die Signatur integriert werden (<code>Structure="enveloping"</code>). Die Daten werden in diesem Beispiel mittels <code>Base64Content</code> angegeben. Der MIME-Type wird mit <code>text/plain</code> angegeben.</p> -<h5>Response</h5> -<p><code><a href="../../clients/webservice/resources/requests/CreateCMSSignatureRequest.Base64Content.resp.xml" target="_blank">CreateCMSSignatureRequest.Base64Content.resp.xml</a></code> ist eine typische Response des SS Webservices auf den obigen Request. Sein Aufbau wird nachfolgend analysiert. Bitte beachten Sie, dass die dargestellte Response zur bessernen Lesbarkeit eingerückt und gekürzt wurde. </p> - <pre> <CreateCMSSignatureResponse - xmlns="http://reference.e-government.gv.at/namespace/moa/20020822#" <br> xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"><br> <CMSSignature>MIAGCSqGSI...p92gh6wAAAAAAAA=</CMSSignature><br> </CreateCMSSignatureResponse></pre> -<p><code>CreateCMSSignatureResponse</code> enthält je erzeugter Signatur ein Element <code>CMSSignature</code> (in diesem Fall genau ein Element). <code>CMSSignature</code> enthält die von SS erzeugte CAdES-Signatur (da <code>SecurityLayerConformity="true"</code> im Request angegeben wurde) als Base64-codierten Wert. Das unterzeichnete Datenobjekt ist in der Signaturstruktur selbst enthalten (<code>enveloping</code>). </p> -<h4><a name="webservice_xmlrequests_erstellungcms_erweitert" id="webservice_xmlrequests_erstellungcms_erweitert"></a>2.1.1.2 Beispiel (Datenobjekt als Referenz)</h4> - -<h5>Request</h5> -<p><code><a href="../../clients/webservice/resources/requests/CreateCMSSignatureRequest.Reference.xml" target="_blank">CreateCMSSignatureRequest.Reference.xml</a></code> ist ein einfacher XML-Request zur Erzeugung einer CMS-Signatur. Sein Aufbau wird nachfolgend analysiert:</p> -<pre> <KeyIdentifier>KG_allgemein</KeyIdentifier> </pre> -<p><code>KG_allgemein</code> bezeichnet eine Schlüsselgruppe, aus der SS einen Signaturschlüssel selektieren soll und muss einer in der SP/SS-Konfigurationsdatei definierten Schlüsselgruppe entsprechen. </p> -<pre> <SingleSignatureInfo SecurityLayerConformity="false"></pre> -<p> Für jedes <code>SingleSignatureInfo</code>Element wird eine eigene CMS/CAdES-Signatur erzeugt. Wird das Attribut <code>SecurityLayerConformity</code> auf <code>true</code> gesetzt, dann wird eine CAdES-Signatur gemäß <a href="#sl"> Security-Layer Spezifikation</a> 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).</p> -<pre> <DataObjectInfo Structure="detached"> - <DataObject> - <MetaInfo> - <MimeType>text/plain</MimeType> - </MetaInfo> - <Content Reference="http://localhost:8080/moa-spss-handbook-referencedData/Text.txt"/> - </DataObject> - </DataObjectInfo> -</pre> -<p>Das zu signierende Daten-Objekt muss in einem <code>DataObjectInfo</code> Element spezifiziert werden. Das Attribut <code>Structure</code> gibt an, ob die Daten in die Signatur integriert werden sollen (<code>Structure="enveloping"</code>) oder nicht (<code>Structure="detached"</code>). </p> -<p> Im nachfolgenden <code>DataObject</code> Element muss entweder das Attribut <code>Reference</code> (enthält eine URL, von der SS die Daten beziehen soll) gesetzt sein, oder aber die zu signierenden Daten werden explizit im Element <code>Base64Content</code> (enthält Daten in Base64 kodierter Form) spezifiziert sein. Die Angabe der zu signierenden Daten über das Attribut <code>Reference</code> und gleichzeitig im Element <code>Base64Content</code> ist nicht erlaubt. Zusätzlich muss im Element <code>MimeType</code> (unter dem Element <code>MetaInfo</code>) der MIME-Type der zu signierenden Daten spezifiziert werden.</p> -<p>Im konkreten Beispiel sollen die Daten nicht in die Signatur integriert werden (<code>Structure="detached"</code>). Die Daten werden in diesem Beispiel mittels der Attributs <code>Refernce</code> angegeben und SS muss es von dieser URL laden. Der MIME-Type wird mit <code>text/plain</code> angegeben.</p> -<h5>Response</h5> -<p><code><a href="../../clients/webservice/resources/requests/CreateCMSSignatureRequest.Reference.resp.xml" target="_blank">CreateCMSSignatureRequest.Reference.resp.xml</a></code> ist eine typische Response des SS Webservices auf den obigen Request. Sein Aufbau wird nachfolgend analysiert. Bitte beachten Sie, dass die dargestellte Response zur bessernen Lesbarkeit eingerückt und gekürzt wurde. </p> -<pre> <CreateCMSSignatureResponse - xmlns="http://reference.e-government.gv.at/namespace/moa/20020822#" <br> xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"><br> <CMSSignature>MIAGCSqGSI...SwxhbA9pAAAAAAAA</CMSSignature><br> </CreateCMSSignatureResponse></pre> -<p><code>CreateCMSSignatureResponse</code> enthält je erzeugter Signatur ein Element <code>CMSSignature</code> (in diesem Fall genau ein Element). <code>CMSSignature</code> enthält die von SS erzeugte CMS-Signatur (da <code>SecurityLayerConformity="false"</code> im Request angegeben wurde) als Base64-codierten Wert. Das unterzeichnete Datenobjekt ist in der Signaturstruktur nicht enthalten (<code>detached</code>).</p> -<h3><a name="webservice_xmlrequests_erstellungxml" id="webservice_xmlrequests_erstellungxml"></a>2.1.2 Erstellung einer XML bzw. XAdES-Signatur</h3> -<p>MOA-SS ermöglicht die Erstellung einer herkömmlichen XML-Signatur und einer XAdES-Signatur gemäß der <a href="#sl"> Security-Layer Spezifikation</a>. Die Auswahl ob eine herkömmliche XML oder eine Security-Layer konforme XAdES-Signatur erstellt wird, erfolgt durch das Attribute <code>SecurityLayerConformity</code> im Signaturerstelltungs-Request (siehe auch folgende Beispiele). </p> -<p>Im Falle einer XAdES-Signatur, kann entweder eine XAdES-Signatur in der Version 1.1.1 oder in der Version 1.4.2 erstellt werden. Dies hängt von der in der MOA-SS Konfiguration angegeben XAdES-Version ab (siehe hierzu <a href="../config/config.html#konfigurationsparameter_ss_xades">Konfiguration der XAdES Version</a>).</p> -<h4><a name="webservice_xmlrequests_erstellungxml_simple" id="webservice_xmlrequests_erstellungxml_simple"></a>2.1.2.1 Einfaches Beispiel</h4> - <h5>Request</h5> - <p><code><a href="../../clients/webservice/resources/requests/CreateXMLSignatureRequest.Simple.xml" target="_blank">CreateXMLSignatureRequest.Simple.xml</a></code> ist ein einfacher XML-Request zur Erzeugung einer XML-Signatur. Sein Aufbau wird nachfolgend analysiert:</p> - <pre> <KeyIdentifier>KG_allgemein</KeyIdentifier> </pre> - <p><code>KG_allgemein</code> bezeichnet eine Schlüsselgruppe, aus der SS einen Signaturschlüssel selektieren soll und muss einer in der SP/SS-Konfigurationsdatei definierten Schlüsselgruppe entsprechen. </p> - <pre> <SingleSignatureInfo SecurityLayerConformity="false"></pre> - <p> Für jedes <code>SingleSignatureInfo</code>Element wird eine eigene XML-Signatur erzeugt. Wird das Attribut <code>SecurityLayerConformity</code> auf <code>true</code> gesetzt, dann wird eine XML-Signatur gemäß <a href="#sl"> Security-Layer Spezifikation</a> 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) und ein Manifest, das alle implizite Transformationsparameter enthält, zur Signatur hinzugefügt (=eine XAdES Signatur).</p> -<pre> <DataObjectInfo Structure="enveloping"> - <DataObject> - <XMLContent>Diese Daten werden signiert.<XMLContent> - </DataObject></pre> -<p> </p> - <p> Für jedes Daten-Objekt, das in die XML-Signatur als <code>dsig:Reference</code> aufgenommen werden soll, muss ein <code>DataObjectInfo</code> Element spezifiziert werden. Das Attribut <code>Structure</code> gibt an, ob die Daten in die Signatur in ein <code>dsig:Object</code> Element integriert werden sollen (<code>Structure="enveloping"</code>), oder über einen URL referenziert werden sollen (<code>Structure="detached"</code>). </p> - <p> Im Fall von <code>Structure="enveloping"</code> muss im nachfolgenden <code>DataObject</code> Element entweder das Attribut <code>Reference</code> (enthält eine URL, von der SS die Daten beziehen soll) gesetzt sein, oder aber die zu signierenden Daten werden explizit in einem der Elemente <code>Base64Content</code> (enthält Daten in Base64 kodierter Form) oder <code>XMLContent</code> (enthält Daten als beliebiges XML-Fragment) oder <code>LocRefContent</code> (enthält eine URL, von der SS die Daten beziehen soll; in diesem Fall also gleichwertig wie ein gesetztes Attribut <code>Reference</code>) spezifiziert sein. Die Angabe der zu signierenden Daten über das Attribut <code>Reference</code> und gleichzeitig einem der Elemente <code>Base64Content</code> oder <code>XMLContent</code> oder <code>LocRefContent</code> ist nicht erlaubt.</p> - <p>Im Fall von <code>Structure="detached"</code> muss das Attribut <code>Reference</code> im nachfolgenden <code>DataObject</code> Element gesetzt sein. Es enthält jene URL, die zur Referenzierung der Daten als Wert von <code>dsig:Reference/@URI</code> in die XML-Signatur aufgenommen wird. Die Angabe eines der Element <code>Base64Content</code> oder <code>XMLContent</code> oder <code>LocRefContent</code> ist optional. Unterbleibt die Angabe, bezieht SS die Daten von der URL im Attribut <code>Reference</code>. Wird eines der Elemente verwendet, bezieht SS die Daten durch Analyse des angegebenen Elements (siehe obiger Absatz). </p> - <p>Im konkreten Beispiel sollen die Daten in ein <code>dsig:Object</code> Element integriert werden (<code>Structure="enveloping"</code>). Die Daten werden mittels <code>XMLContent</code> als XML-Fragment (ein einfacher Textknoten) angegeben.</p> - <p> - <pre> <CreateTransformsInfoProfile><br> <CreateTransformsInfo> - <FinalDataMetaInfo> - <MimeType>text/plain<MimeType> - </FinalDataMetaInfo> - </CreateTransformsInfo> - </CreateTransformsInfoProfile></pre> - Zu jedem Daten-Objekt können optional Transformationen (z.B. XPath, XSLT, Base64-Decodierung, etc.) angegeben werden. Werden - wie hier im Beispiel - keine Transformationen angegeben, so muss zumindest der MIME-Type der zu signierenden Daten spezifiziert werden. <p></p> - <h5>Response</h5> - <p><code><a href="../../clients/webservice/resources/requests/CreateXMLSignatureRequest.Simple.resp.xml" target="_blank">CreateXMLSignatureRequest.Simple.resp.xml</a></code> ist eine typische Response des SS Webservices auf den obigen Request. Sein Aufbau wird nachfolgend analysiert. Bitte beachten Sie, dass die dargestellte Response zur bessernen Lesbarkeit eingerückt und gekürzt wurde. </p> - <pre> <CreateXMLSignatureResponse - xmlns="http://reference.e-government.gv.at/namespace/moa/20020822#" <br> xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"><br> <SignatureEnvironment><br> <dsig:Signature Id="signature-1-1" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"><br> <dsig:SignedInfo> - ... - <dsig:Reference Id="reference-1-1" URI="#xpointer(id(&apos;signed-data-1-1-1&apos;)/node())"> - ... - </dsig:Reference> - ... - </dsig:SignedInfo> - ... - <dsig:Object Id="signed-data-1-1-1">Diese Daten werden signiert.</dsig:Object> - </dsig:Signature><br> </SignatureEnvironment><br> </CreateXMLSignatureResponse></pre> -<p></p> - <p><code>CreateXMLSignatureResponse</code> enthält je erzeugter Signatur ein Element <code>SignatureEnvironment</code> (in diesem Fall genau ein Element). <code>SignatureEnvironment</code> enthält die von SS erzeugte XML-Signatur, die im obigen Request spezifiziert wurde. Man erkennt, dass die XML-Signatur genau ein Daten-Objekt unterzeichnet (ein <code>dsig:Reference</code> Element ist enthalten). Das unterzeichnete Datenobjekt ist in der Signaturstruktur selbst enthalten (<code>enveloping</code>), und zwar in einem <code>dsig:Object</code> Element. </p> - <h4><a name="webservice_xmlrequests_erstellungxml_daten" id="webservice_xmlrequests_erstellungxml_daten"></a>2.1.2.2 Angabe der zu signierenden Daten </h4> - <h5>Request</h5> - <p>Dieses Beispiel stellt die vielfältigen Möglichkeiten vor, wie MOA SS mitgeteilt werden kann, welche Daten signiert (wenn keine Transformationen angegeben werden) bzw. als Eingangsdaten für die Berechnung der Transformationen verwendet werden sollen (wenn Transformationen angegeben werden).</p> - <p>Mit <a href="../../clients/webservice/resources/requests/CreateXMLSignatureRequest.Refs.xml" target="_blank"><code>CreateXMLSignatureRequest.Refs.xml</code></a> sollen insgesamt neun Datenobjekte signiert werden:</p> - <pre> <CreateXMLSignatureRequest - xmlns="http://reference.e-government.gv.at/namespace/moa/20020822#" - xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"><br> <KeyIdentifier>KG_allgemein</KeyIdentifier><br> <SingleSignatureInfo SecurityLayerConformity="false"></pre> - <p>Die Signatur soll mit dem Schlüssel <code>KG_allgemein</code> erstellt werden; jene Elemente, die speziell für eine Security-Layer V1.1 konforme Signatur notwendig sind (vergleiche <a href="#webservice_xmlrequests_erstellungxml_simple" class="term">Einfaches Beispiel</a>), brauchen nicht erstellt zu werden (<code>SecurityLayerConformity="false"</code>).</p> - <pre> <DataObjectInfo Structure="enveloping" ChildOfManifest="true"> - <DataObject> - <Base64Content>RGllc2UgRGF0ZW4gd2FyZW4gYmFzZTY0IGtvZGllcnQu</Base64Content> - </DataObject> - <CreateTransformsInfoProfile> - <CreateTransformsInfo> - <FinalDataMetaInfo> - <MimeType>text/plain</MimeType> - </FinalDataMetaInfo> - </CreateTransformsInfo> - </CreateTransformsInfoProfile> - </DataObjectInfo></pre> - <p>Die Daten sollen in der <span class="term">Enveloping</span> Form in die Signatur integriert werden, d. h. die Daten werden in einem <code>dsig:Object</code> als Teil der XML-Struktur der Signatur aufgenommen (<code>Structure="enveloping"</code>). Weiters sollen die Daten nicht über über eine <code>dsig:Reference</code> in <code>dsig:SignedInfo</code>, sondern über eine <code>dsig:Reference</code> in einem eigenen <code>dsig:Manifest</code> aufgenommen werden (<code>ChildOfManifest="true"</code>).</p> - <p>Die Daten selbst werden explizit in base64 kodierter Form als Inhalt des Elements <code>Base64Content</code> angegeben. Das Attribut <code>DataObject/@Reference</code> darf nicht angegeben werden, da die Daten in der <span class="term">Enveloping</span> Form integriert werden sollen, und <code>Base64Content</code> verwendet wird.</p> - <p>Es werden - wie in allen übrigen Fällen dieses Beispiels - keine Transformationen angegeben. Der Mime-Type der zu signierenden Daten wird als <code>text/plain</code> angegeben, da der Inhalt von <code>Base64Content</code> die base64-Kodierung des Texts <code>Diese Daten waren base64 kodiert.</code> ist. </p> - <pre> - <DataObjectInfo Structure="enveloping" ChildOfManifest="false"> - <DataObject> - <XMLContent><doc:XMLDocument xmlns:doc="urn:document"> - <doc:Paragraph>Ich bin der erste Absatz in diesem Dokument.</doc:Paragraph> - <doc:Paragraph ParaId="Para2">Und ich bin der zweite Absatz in diesem Dokument. - Ich habe weiters ein eigenens ID-Attribut bekommen.</doc:Paragraph> - </doc:XMLDocument></XMLContent> - </DataObject> - <CreateTransformsInfoProfile> - <CreateTransformsInfo> - <FinalDataMetaInfo> - <MimeType>application/xml</MimeType> - </FinalDataMetaInfo> - </CreateTransformsInfo> - </CreateTransformsInfoProfile> - </DataObjectInfo> -</pre> - <p>Die Daten sollen in der <span class="term">Enveloping</span> Form in die Signatur integriert werden, d. h. die Daten werden in einem <code>dsig:Object</code> als Teil der XML-Struktur der Signatur aufgenommen (<code>Structure="enveloping"</code>). Diesmal sollen die Daten direkt über eine <code>dsig:Reference</code> in <code>dsig:SignedInfo</code> aufgenommen werden (<code>ChildOfManifest="false"</code>).</p> - <p>Die Daten selbst werden explizit als XML-Fragment als Inhalt des Elements <code>XMLContent</code> angegeben. Das Attribut <code>DataObject/@Reference</code> darf nicht angegeben werden, da die Daten in der <span class="term">Enveloping</span> Form integriert werden sollen, und <code>XMLContent</code> verwendet wird.</p> - <p>Der Mime-Type der zu signierenden Daten wird als <code>application/xml</code> angegeben.</p> -<pre> - <DataObjectInfo Structure="enveloping" ChildOfManifest="false"> - <DataObject Reference="http://localhost:8080/referencedData/Text.txt"/> - <CreateTransformsInfoProfile> - <CreateTransformsInfo> - <FinalDataMetaInfo> - <MimeType>text/plain</MimeType> - </FinalDataMetaInfo> - </CreateTransformsInfo> - </CreateTransformsInfoProfile> - </DataObjectInfo> -</pre> -<p>Die Daten sollen in der <span class="term">Enveloping</span> Form in die Signatur integriert werden, d. h. die Daten werden in einem <code>dsig:Object</code> als Teil der XML-Struktur der Signatur aufgenommen (<code>Structure="enveloping"</code>). Wiederum sollen die Daten direkt über eine <code>dsig:Reference</code> in <code>dsig:SignedInfo</code> aufgenommen werden (<code>ChildOfManifest="false"</code>). -</p> -<p>Die Daten werden diesmal nicht explizit angegeben, sondern mittels der URL in <code>DataObject/@Reference</code> referenziert. MOA SS versucht diese URL aufzulösen, um zu den zu signierenden Daten zu gelangen. <code>Base64Content</code> oder <code>XMLContent</code> oder <code>LocRefContent</code> dürfen nicht verwendet werden, da die Daten in der <span class="term">Enveloping</span> Form integriert werden sollen, und bereits <code>DataObject/@Reference</code> eingesetzt wird. </p> -<p>Der Mime-Type der zu signierenden Daten wird als <code>text/plain</code> angegeben.</p> -<pre> - <DataObjectInfo Structure="enveloping" ChildOfManifest="false"> - <DataObject> - <LocRefContent>http://localhost:8080/referencedData/Text.txt</LocRefContent> - </DataObject> - <CreateTransformsInfoProfile> - <CreateTransformsInfo> - <FinalDataMetaInfo> - <MimeType>text/plain</MimeType> - </FinalDataMetaInfo> - </CreateTransformsInfo> - </CreateTransformsInfoProfile> - </DataObjectInfo> -</pre> -<p>Die Daten sollen wiederum in der <span class="term">Enveloping</span> Form in die Signatur integriert werden, d. h. die Daten werden in einem <code>dsig:Object</code> als Teil der XML-Struktur der Signatur aufgenommen (<code>Structure="enveloping"</code>). Wiederum sollen die Daten direkt über eine <code>dsig:Reference</code> in <code>dsig:SignedInfo</code> aufgenommen werden (<code>ChildOfManifest="false"</code>). </p> -<p>Die Daten werden wie im vorhergehenden Fall nicht explizit angegeben, sondern referenziert. Diesmal wird die URL jedoch nicht <code>DataObject/@Reference</code> verwendet, sondern als Textinhalt des Elements <code>LocRefContent</code> (<code>LocRef</code> steht für <span class="term">Location Reference</span>). <code>DataObject/@Reference</code> darf in diesem Fall nicht verwendet werden. Diese Methode ist semantisch völlig ident mit dem vorhergehenden Fall. </p> -<p>Der Mime-Type der zu signierenden Daten wird als <code>text/plain</code> angegeben.</p> -<pre> - <DataObjectInfo Structure="detached" ChildOfManifest="true"> - <DataObject Reference="http://localhost:8080/referencedData/Text.b64"> - <Base64Content>RGllc2UgRGF0ZW4gd2FyZW4gYmFzZTY0IGtvZGllcnQu</Base64Content> - </DataObject> - <CreateTransformsInfoProfile> - <CreateTransformsInfo> - <FinalDataMetaInfo> - <MimeType>text/plain</MimeType> - </FinalDataMetaInfo> - </CreateTransformsInfo> - </CreateTransformsInfoProfile> - </DataObjectInfo> -</pre> -<p>Die Daten sollen diesmal in der <span class="term">Detached</span> Form in die Signatur aufgenommen werden, d. h. die Daten werden nicht direkt in die Signaturstruktur integriert, sondern lediglich mittels URI im Attribut <code>URI</code> der anzufertigenden <code>dsig:Reference</code> referenziert (<code>Structure="detached"</code>). Die Daten sollen indirekt über eine <code>dsig:Reference</code> eines <code>dsig:Manifest</code>s aufgenommen werden (<code>ChildOfManifest="true"</code>). </p> -<p>Die URI in <code>DataObject/@Reference</code> enthält dabei die URI, die zur Referenzierung in <code>dsig:Reference/@URI</code> aufgenommen werden soll. Die Daten selbst hingegen werden im diesem Beispiel explizit in base64 kodierter Form als Inhalt des Elements <code>Base64Content</code> angegeben. MOA SS löst also keine URL zur Erlangung der Daten auf, sondern verwendet den Inhalt von <code>Base64Content</code>. </p> -<p>Der Mime-Type der zu signierenden Daten wird als <code>text/plain</code> angegeben.</p> -<pre> - <DataObjectInfo Structure="detached" ChildOfManifest="false"> - <DataObject Reference="NichtAufloesbareReferenz1"> - <XMLContent><doc:XMLDocument xmlns:doc="urn:document"> - <doc:Paragraph>Ich bin der erste Absatz in diesem Dokument.</doc:Paragraph> - <doc:Paragraph ParaId="Para2">Und ich bin der zweite Absatz in diesem Dokument. - Ich habe weiters ein eigenens ID-Attribut bekommen.</doc:Paragraph> - </doc:XMLDocument> - </XMLContent> - </DataObject> - <CreateTransformsInfoProfile> - <CreateTransformsInfo> - <FinalDataMetaInfo> - <MimeType>application/xml</MimeType> - </FinalDataMetaInfo> - </CreateTransformsInfo> - </CreateTransformsInfoProfile> - </DataObjectInfo> -</pre> -<p>Die Daten sollen auch diesmal in der <span class="term">Detached</span> Form in die Signatur aufgenommen werden, d. h. die Daten werden nicht direkt in die Signaturstruktur integriert, sondern lediglich mittels URI im Attribut <code>URI</code> der anzufertigenden <code>dsig:Reference</code> referenziert (<code>Structure="detached"</code>). Diesmal sollen die Daten direkt über eine <code>dsig:Reference</code> in <code>dsig:SignedInfo</code> aufgenommen werden (<code>ChildOfManifest="false"</code>). -</p> -<p>Die URI in <code>DataObject/@Reference</code> enthält dabei die URI, die zur Referenzierung in <code>dsig:Reference/@URI</code> aufgenommen werden soll. Die Daten selbst hingegen werden im diesem Beispiel explizit als XML-Fragment in <code>XMLContent</code> angegeben. MOA SS löst auch hier keine URL zur Erlangung der Daten auf, sondern verwendet den Inhalt von <code>XMLContent</code>. Zur Verdeutlichung dieses Umstandes wurde die URI in <code>DataObject/@Reference</code> auf einen Wert gesetzt, der von MOA SS ganz sicher nicht aufgelöst werden kann (<code>NichtAufloesbareReferenz1</code>). </p> -<p>Der Mime-Type der zu signierenden Daten wird als <code>application/xml</code> angegeben.</p> -<pre> - <DataObjectInfo Structure="detached" ChildOfManifest="false"> - <DataObject Reference="http://localhost:8080/referencedData/Text.txt"> - </DataObject> - <CreateTransformsInfoProfile> - <CreateTransformsInfo> - <FinalDataMetaInfo> - <MimeType>text/plain</MimeType> - </FinalDataMetaInfo> - </CreateTransformsInfo> - </CreateTransformsInfoProfile> - </DataObjectInfo> -</pre> -<p>Wiederum sollen die Daten in der <span class="term">Detached</span> Form in die Signatur aufgenommen werden (<code>Structure="detached"</code>). Wie zuvor sollen die Daten direkt über eine <code>dsig:Reference</code> in <code>dsig:SignedInfo</code> aufgenommen werden (<code>ChildOfManifest="false"</code>). </p> -<p>Die URI in <code>DataObject/@Reference</code> enthält dabei die URI, die zur Referenzierung in <code>dsig:Reference/@URI</code> aufgenommen werden soll. Nachdem eine explizite Angabe der Daten mittels <code>Base64Content</code>, <code>XMLContent</code> oder <code>LocRefContent</code> unterbleibt, wird MOA SS versuchen, die URI in <code>dsig:Reference/@URI</code> als URL aufzulösen, um so zu den zu signierenden Daten zu gelangen. </p> -<p>Der Mime-Type der zu signierenden Daten wird als <code>text/plain</code> angegeben.</p> -<pre> - <DataObjectInfo Structure="detached" ChildOfManifest="false"> - <DataObject Reference="NichtAufloesbareReferenz2"> - <LocRefContent>http://localhost:8080/referencedData/Text.txt</LocRefContent> - </DataObject> - <CreateTransformsInfoProfile> - <CreateTransformsInfo> - <FinalDataMetaInfo> - <MimeType>text/plain</MimeType> - </FinalDataMetaInfo> - </CreateTransformsInfo> - </CreateTransformsInfoProfile> - </DataObjectInfo> -</pre> -<p>Wiederum sollen die Daten in der <span class="term">Detached</span> Form in die Signatur aufgenommen werden (<code>Structure="detached"</code>). Wie zuvor sollen die Daten direkt über eine <code>dsig:Reference</code> in <code>dsig:SignedInfo</code> aufgenommen werden (<code>ChildOfManifest="false"</code>).</p> -<p>Die URI in <code>DataObject/@Reference</code> enthält dabei die URI, die zur Referenzierung in <code>dsig:Reference/@URI</code> aufgenommen werden soll. Den Hinweis, wie MOA SS zu den zu signierenden Daten gelangen soll, ist jedoch in LocRefContent enthalten. MOA SS wird also versuchen, die dort enthaltene URL aufzulösen, um zu den zu signierenden Daten zu gelangen. Zur Verdeutlichung dieses Umstandes wurde die URI in <code>DataObject/@Reference</code> auf einen Wert gesetzt, der von MOA SS ganz sicher nicht aufgelöst werden kann (<code>NichtAufloesbareReferenz2</code>). Diese Art der Datenangabe kann eingesetzt werden, wenn die Daten zum Zeitpunkt der Signaturerstellung von einem anderen Ort bezogen werden müssen, als später dann bei der Signaturprüfung.</p> -<p>Der Mime-Type der zu signierenden Daten wird als <code>text/plain</code> angegeben.</p> -<pre> - <DataObjectInfo Structure="detached" ChildOfManifest="false"> - <DataObject Reference=""/> - <CreateTransformsInfoProfile> - <CreateTransformsInfo> - <dsig:Transforms> - <dsig:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/> - </dsig:Transforms> - <FinalDataMetaInfo> - <MimeType>application/xml</MimeType> - </FinalDataMetaInfo> - </CreateTransformsInfo> - </CreateTransformsInfoProfile> - </DataObjectInfo> -</pre> -<p>Im letzten Fall schließlich sollen wiederum Daten in der <span class="term">Detached</span> Form in die Signatur aufgenommen werden (<code>Structure="detached"</code>). Wie zuvor sollen die Daten direkt über eine <code>dsig:Reference</code> in <code>dsig:SignedInfo</code> aufgenommen werden (<code>ChildOfManifest="false"</code>).</p> -<p>Die Referenz auf die zu signierenden Daten ist wiederum in <code>DataObject/@Reference</code> enthalten; sie verweist diesmal jedoch nicht auf ein externes Dokument, sondern auf das gesamte (XML-)Dokument, in das die zu erstellende Signatur integriert werden soll, und zwar, indem <code>DataObject/@Reference</code> den leeren String (<code>""</code>) enthält. Nachdem dadurch zwangsläufig auch die Signatur in den zu signierenden Daten enthalten wäre, wird die Signatur durch die Angabe einer Enveloped Signature Transform aus den zu signierenden Daten herausgenommen, bevor darüber der Hashwert berechnet wird (dsig:Transform).</p> -<p>Offen bleibt die Frage, wie MOA SS nun weiß, in welches (XML-)Dokument es die die Signatur integrieren soll. Siehe dazu die Erläuterungen zum nächsten Ausschnitts des Requests. </p> -<p>Der Mime-Type der zu signierenden Daten wird als <code>application/xml</code> angegeben.</p> -<pre> - <CreateSignatureInfo> - <CreateSignatureEnvironment> - <LocRefContent>http://localhost:8080/referencedData/XMLDocument.xml</LocRefContent> - </CreateSignatureEnvironment> - <CreateSignatureEnvironmentProfile> - <CreateSignatureLocation Index="4" xmlns:doc="urn:document">/doc:XMLDocument</CreateSignatureLocation> - </CreateSignatureEnvironmentProfile> - </CreateSignatureInfo> -</pre> -<p>Das Element <code>CreateSignatureInfo</code> ist grundsätzlich optional, und muss nur angegeben werden, wenn die zu erstellende Signatur von MOA SS in ein bestehendes XML-Dokument integriert werden soll (was in diesem Beispiel ja der Fall ist).</p> -<p><code>CreateSignatureEnvironment</code> enthält das XML-Dokument, in das die zu erstellende Signatur integriert werden soll. In diesem Beispiel wird dieses Dokument mit Hilfe von <code>LocRefContent</code> referenziert, d. h. MOA SS wird versuchen, die darin enthaltene URL aufzulösen, um das XML-Dokument zu erhalten. Alternativ könnte auch <code>Base64Content</code> (explizite Angabe des XML-Dokuments in base64 kodierter Form) oder <code>XMLContent</code> (direkte Angabe des XML-Dokuments im Request) verwendet werden.</p> -<p><a name="webservice_xmlrequests_erstellungxml_daten_hinweisCreateSignatureLocation"></a><code>CreateSignatureLocation</code> enthält die Angabe jener Stelle, an der die Signatur in das XML-Dokument eingesetzt werden soll. Der Inhalt dieses Elements bezeichnet mittels <span class="term">XPath</span>-Ausdruck das <span class="term">Parent</span>-Element der Signatur, der Wert des Attributs <code>CreateSignatureLocation/@Index</code> enthält den Offset innerhalb dieses <span class="term">Parent</span>-Elements. Betrachten Sie zur Verdeutlichung das XML-Dokument <a href="../../clients/referencedData/src/main/webapp/XMLDocument.xml" target="_blank"><code>XMLDocument.xml</code></a>, in das die Signatur integriert werden soll: Die Signatur soll unmittelbar nach dem zweiten <code>doc:Paragraph</code> Element in das XML-Dokument eingefügt werden. Der Inhalt von <code>CreateSignatureLocation</code> (<code>/doc:XMLDocument</code>) selektiert das zukünftige <span class="term">Parent</span>-Element der Signatur, also <code>doc:XMLDocument</code>. Das Attribut <code>Index</code> enthält deshalb den Wert <code>4</code> (und nicht etwa <code>2</code> oder <code>3</code>), da erstens bei <code>0</code> zu zählen begonnen wird, und zweitens auch die Text-Knoten, die lediglich Whitespace enthalten, für diesen Offset zählen (um diese Textknoten erkennen zu können, müssen Sie das XML-Dokument in einem Text-Editor öffnen). Beachten Sie weiters, dass das im <span class="term">XPath</span>-Ausdruck verwendete Namespace-Prefix <code>doc</code> im Kontext des Elements <code>CreateSignatureLocation</code> bekannt sein muss. Deshalb enthält dieses Element auch die entsprechende Namespace-Deklaration (<code>xmlns:doc="urn:document"</code>).</p> -<h5>Response</h5> -<p><code><a href="../../clients/webservice/resources/requests/CreateXMLSignatureRequest.Refs.resp.xml" target="_blank">CreateXMLSignatureRequest.Refs.resp.xml</a></code> ist eine typische Response des SS Webservices auf den obigen Request. Sein Aufbau wird nachfolgend analysiert. Bitte beachten Sie, dass die dargestellte Response zur bessernen Lesbarkeit eingerückt und gekürzt wurde.</p> -<pre> - <CreateXMLSignatureResponse - xmlns="http://reference.e-government.gv.at/namespace/moa/20020822#" - xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"> - <SignatureEnvironment> - <doc:XMLDocument xmlns:doc="urn:document"> - <doc:Paragraph>Ich bin der erste Absatz in diesem Dokument.</doc:Paragraph> - <doc:Paragraph ParaId="Para2">Und ich bin der zweite Absatz in diesem Dokument. - Ich habe weiters ein eigenens ID-Attribut bekommen.</doc:Paragraph> - <dsig:Signature Id="signature-1-1" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"> - <dsig:SignedInfo> - <dsig:CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/> - <dsig:SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#ecdsa-sha1"/> -</pre> -<p>Die Antwort enthält in <code>SignatureEnvironment</code> das Ergebnis der Signaturerstellung. Nachdem die Signatur in ein bestehendes XML-Dokument integriert werden sollte, enthält <code>SignatureEnvironment</code> das Dokument-Element dieses XML-Dokuments (<code>doc:XMLDocument</code>). Man erkennt auch gut, dass die XML-Signatur als fünfter Kindknoten (Offset <code>4</code>) von <code>doc:XMLDocument</code> eingefügt wurde.</p> -<pre> - <dsig:Reference Id="reference-1-2" URI="#xpointer(id('signed-data-1-2-1')/node())"> - <dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/> - <dsig:DigestValue>A8ml6/aZKCmj1hONwvLItIwGHoc=</dsig:DigestValue> - </dsig:Reference> -</pre> -<p>Diese <code>dsig:Reference</code> wurde auf Grund des zweiten <code>DataObjectInfo</code> Elements im Request erstellt. Man erkennt gut den Verweis in <code>dsig:Reference/@URI</code> auf das <code>dsig:Object</code>, das die signierten Daten enthält (der XPointer verweist auf sämtliche Kindknoten jenes Elements, das ein ID-Attribut mit dem Wert <code>signed-data-1-2-1</code> aufweist, des ersten vorkommenden <code>dsig:Object</code>s der Signatur). </p> -<pre> - <dsig:Reference Id="reference-1-3" URI="#xpointer(id('signed-data-1-3-1')/node())"> - <dsig:Transforms> - <dsig:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#base64"/> - </dsig:Transforms> - <dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/> - <dsig:DigestValue>0P878Dsmtxv5goj+6KgNmj6S/EE=</dsig:DigestValue> - </dsig:Reference> -</pre> -<p>Diese <code>dsig:Reference</code> wurde auf Grund des dritten <code>DataObjectInfo</code> Elements im Request erstellt. Die Text-Daten wurden von der angegebenen URL (<code>http://localhost:8080/referencedData/Text.txt</code>) aufgelöst und in das <code>dsig:Object</code> mit dem ID-Attribut <code>signed-data-1-3-1</code> gesteckt. Um Probleme mit nicht in XML darstellbare Zeichen zu vermeiden, wurde der Text nicht direkt signiert, sondern in base64 kodierter Form in das <code>dsig:Object</code> integriert, und eine Transformation zur base64 Dekodierung spezifiziert. </p> -<pre> - <dsig:Reference Id="reference-1-4" URI="#xpointer(id('signed-data-1-4-1')/node())"> - <dsig:Transforms> - <dsig:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#base64"/> - </dsig:Transforms> - <dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/> - <dsig:DigestValue>0P878Dsmtxv5goj+6KgNmj6S/EE=</dsig:DigestValue> - </dsig:Reference> -</pre> -<p>Diese <code>dsig:Reference</code> wurde auf Grund des vierten <code>DataObjectInfo</code> Elements im Request erstellt. Wie schon bei der Beschreibung des Requests angeführt, ist die erstellte<code> dsig:Reference</code> semantisch genau gleich wie die vorhergehende. </p> -<pre> - <dsig:Reference Id="reference-1-6" URI="NichtAufloesbareReferenz1"> - <dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/> - <dsig:DigestValue>2b83+NbXDFijHzz+sH0T7fM36sA=</dsig:DigestValue> - </dsig:Reference> -</pre> -<p>Diese <code>dsig:Reference</code> wurde auf Grund des sechsten <code>DataObjectInfo</code> Elements im Request erstellt. Die zu signierenden Daten wurden aus dem <code>XMLContent</code> des Requests entnommen, als Wert von <code>dsig:Reference/@URI</code> wurde der Wert von <code>DataObjectInfo/@Reference</code> übernommen. </p> -<pre> - <dsig:Reference Id="reference-1-7" URI="http://localhost:8080/referencedData/Text.txt"> - <dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/> - <dsig:DigestValue>0P878Dsmtxv5goj+6KgNmj6S/EE=</dsig:DigestValue> - </dsig:Reference> -</pre> -<p>Diese <code>dsig:Reference</code> wurde auf Grund des siebenten <code>DataObjectInfo</code> Elements im Request erstellt. Um zu den zu signierenden Daten zu gelangen, wurde von MOA SS die URL in <code>DataObjectInfo/@Reference</code> aufgelöst. Gleichermaßen wurde die URL in <code>dsig:Reference/@URI</code> übernommen. </p> -<pre> - <dsig:Reference Id="reference-1-8" URI="NichtAufloesbareReferenz2"> - <dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/> - <dsig:DigestValue>0P878Dsmtxv5goj+6KgNmj6S/EE=</dsig:DigestValue> - </dsig:Reference> -</pre> -<p>Diese <code>dsig:Reference</code> wurde auf Grund des achten <code>DataObjectInfo</code> Elements im Request erstellt. Um zu den zu signierenden Daten zu gelangen, wurde von MOA SS die URL in LocRefContent aufgelöst. In <code>dsig:Reference/@URI</code> wurde der Wert aus <code>DataObjectInfo/@Reference</code> übernommen.</p> -<pre> - <dsig:Reference Id="reference-1-9" URI=""> - <dsig:Transforms> - <dsig:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/> - </dsig:Transforms> - <dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/> - <dsig:DigestValue>2b83+NbXDFijHzz+sH0T7fM36sA=</dsig:DigestValue> - </dsig:Reference> -</pre> -<p>Diese <code>dsig:Reference</code> wurde auf Grund des neunten <code>DataObjectInfo</code> Elements im Request erstellt. Als zu signierende Daten wurde das XML-Dokument ausgewählt, in das die XML-Signatur integriert werden solle. Vor der Berechnung des Hashwerts wurde eine <span class="term">Enveloped Signature</span> Transformation zwischengeschaltet, welche die XML-Struktur der Signatur selbst aus den Hash-Eingangsdaten herausschneidet. </p> -<pre> - <dsig:Reference Type="http://www.w3.org/2000/09/xmldsig#Manifest" URI="#dsig-manifest-1-1"> - <dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/> - <dsig:DigestValue>mNsxUkFoF46XZVBivBo4aasFCTQ=</dsig:DigestValue> - </dsig:Reference> -</pre> -<p>Diese <code>dsig:Reference</code> verweist auf das <code>dsig:Manifest</code> weiter unten in der XML-Struktur der Signatur. Das <code>dsig:Manifest</code> wurde angelegt, weil bei zwei <code>DataObjectInfo</code>s im Request das Attribut <code>ChildOfManifest</code> auf den Wert <code>true</code> gesetzt wurde.</p> -<pre> - </dsig:SignedInfo> - <dsig:SignatureValue>...</dsig:SignatureValue> - <dsig:KeyInfo>...</dsig:KeyInfo> - <dsig:Object Id="signed-data-1-2-1"> - <doc:XMLDocument xmlns:doc="urn:document"> - <doc:Paragraph>Ich bin der erste Absatz in diesem Dokument.</doc:Paragraph> - <doc:Paragraph ParaId="Para2">Und ich bin der zweite Absatz in diesem Dokument. - Ich habe weiters ein eigenens ID-Attribut bekommen.</doc:Paragraph> - </doc:XMLDocument> - </dsig:Object> - <dsig:Object Id="signed-data-1-3-1">RGllc2UgRGF0ZW4gc2luZCByZWluZXIgVGV4dC4=</dsig:Object> - <dsig:Object Id="signed-data-1-4-1">RGllc2UgRGF0ZW4gc2luZCByZWluZXIgVGV4dC4=</dsig:Object> - <dsig:Object Id="signed-data-1-1-1">RGllc2UgRGF0ZW4gd2FyZW4gYmFzZTY0IGtvZGllcnQu</dsig:Object> -</pre> -<p><code>SignatureValue</code> und <code>KeyInfo</code> werden an dieser Stelle nicht näher betrachtet.</p> -<p>Das erste <code>dsig:Object</code> enthält die Daten aus dem zweiten <code>DataObjectInfo</code>; das zweite <code>dsig:Object</code> jene aus dem dritten <code>DataObjectInfo</code>; das dritte <code>dsig:Object</code> jene aus dem vierten <code>DataObjectInfo</code>; das vierte <code>dsig:Object</code> schließlich jene aus dem ersten <code>DataObjectInfo</code>.</p> -<pre> - <dsig:Object> - <dsig:Manifest Id="dsig-manifest-1-1"> - <dsig:Reference Id="reference-1-1" URI="#xpointer(id('signed-data-1-1-1')/node())"> - <dsig:Transforms> - <dsig:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#base64"/> - </dsig:Transforms> - <dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/> - <dsig:DigestValue>a53jOsL7KbyltpByAK87FoMZphI=</dsig:DigestValue> - </dsig:Reference> - <dsig:Reference Id="reference-1-5" URI="http://localhost:8080/referencedData/Text.b64"> - <dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/> - <dsig:DigestValue>a53jOsL7KbyltpByAK87FoMZphI=</dsig:DigestValue> - </dsig:Reference> - </dsig:Manifest> - </dsig:Object> -</pre> -<p>Das fünfte <code>dsig:Object</code> enthält das <code>dsig:Manifest</code>, das von MOA SS auf Grund des ersten bzw. fünften <code>DataObjectInfo</code> des Requests erstellt wurde. Darin enthalten sind die zum ersten und fünten <code>DataObjectInfo</code> korrespondierenden <code>dsig:Reference</code> Elemente. Die Daten für die erste im <code>dsig:Manifest</code> enthaltene <code>dsig:Reference</code> wurden aus dem <code>Base64Content</code> Element des ersten <code>DataObjectInfo</code> entnommen, jene für die zweite <code>dsig:Reference</code> aus dem <code>Base64Content</code> Element des fünften <code>DataObjectInfo</code>. Der Wert des <code>URI</code> Attributs der zweiten <code>dsig:Reference</code> wurde aus dem <code>DataObject/@Reference</code> des fünften <code>DataObjectInfo</code> übernommen. </p> -<h4><a name="webservice_xmlrequests_erstellungxml_transformationen" id="webservice_xmlrequests_erstellungxml_transformationen"></a>2.1.2.3 Transformationen</h4> -<h5>Request</h5> -<p>Dieses Beispiel (<a href="../../clients/webservice/resources/requests/CreateXMLSignatureRequest.Transforms.xml" target="_blank"><code>CreateXMLSignatureRequest.Transforms.xml</code></a>) stellt die wichtigsten Transformationen vor, die von MOA SS bei der Erstellung einer Signatur verwendet werden können. Eine Transformation bzw. eine Kette mehrerer hintereinandergeschalteter Transformationen werden auf die Referenz-Eingangsdaten (also jene Daten, die in DataObjectInfo/DataObject angegeben werden) angewendet; das Ergebnis fließt dann in die Hashwert-Berechnung ein. </p> -<pre><CreateXMLSignatureRequest - xmlns="http://reference.e-government.gv.at/namespace/moa/20020822#" - xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"><br> <KeyIdentifier>KG_allgemein</KeyIdentifier><br> <SingleSignatureInfo SecurityLayerConformity="false"></pre> -<p>Die Signatur soll mit dem Schlüssel <code>KG_allgemein</code> erstellt werden; jene Elemente, die speziell für eine Security-Layer V1.1 konforme Signatur notwendig sind (vergleiche <a href="#webservice_xmlrequests_erstellungxml_simple" class="term">Einfaches Beispiel</a>), brauchen nicht erstellt zu werden (<code>SecurityLayerConformity="false"</code>).</p> -<pre> - <DataObjectInfo Structure="detached"> - <DataObject Reference="http://localhost:8080/referencedData/Text.b64"/> - <CreateTransformsInfoProfile> - <CreateTransformsInfo> - <dsig:Transforms> - <dsig:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#base64"/> - </dsig:Transforms> - <FinalDataMetaInfo> - <MimeType>text/plain</MimeType> - </FinalDataMetaInfo> - </CreateTransformsInfo> - </CreateTransformsInfoProfile> - </DataObjectInfo> -</pre> -<p>Für das erste zu signierende Datenobjekt werden die Referenz-Eingangsdaten mittels <code>DataObject/@Reference</code> referenziert, d. h. MOA SS löst die darin enthaltene URL auf, um zu den Daten zu gelangen. Es handelt sich dabei um einen <a href="../../clients/referencedData/src/main/webapp/Text.b64" target="_blank">base64 kodierten Text</a>.</p> -<p>Unterschrieben werden soll nun aber nicht dieser base64 kodierte Text, sondern der entsprechend dekodierte Text. Dies lässt sich elegant durch die Angabe einer <span class="term"><a href="http://www.w3.org/TR/xmldsig-core/#sec-Base-64" target="_blank">Base64 Decoding</a></span><a href="http://www.w3.org/TR/2002/REC-xmldsig-core-20020212/#sec-Base-64" target="_blank"> Transformation</a> bewerkstelligen. Dazu wird als erstes Kindelement von <code>CreateTransformsInfo</code> ein <code>dsig:Transforms</code> Element im Request angegeben. Dieses <code>dsig:Transforms</code> Element nimmt ein oderer mehrere <code>dsig:Transform</code> Elemente auf, wobei jedes <code>dsig:Transform</code> Element für eine Transformation steht. In unserem Fall wird nur eine einzige Transformation benötigt; die Angabe, um welche Transformation es sich handelt, wird durch das Attribut <code>dsig:Transform/@Algorithm</code> angegeben. Für die <span class="term">Base64 Decoding</span> Transformation muss der Wert auf <code>http://www.w3.org/2000/09/xmldsig#base64</code> gesetzt werden. Sie ist eine parameterlose Transformation, d. h. <code>dsig:Transform</code> hat keine Kindelemente.</p> -<p>Der Mime-Type der zu signierenden Daten wird als <code>text/plain</code> angegeben, da ja tatsächlich nach der durchgeführten Transformation dekodierter Text vorliegt, über den dann der Hashwert berechnet wird. </p> -<pre> - <DataObjectInfo Structure="detached"> - <DataObject Reference="http://localhost:8080/referencedData/XMLDocument.xml"/> - <CreateTransformsInfoProfile> - <CreateTransformsInfo> - <dsig:Transforms> - <dsig:Transform Algorithm="http://www.w3.org/2002/06/xmldsig-filter2"> - <xp2:XPath - xmlns:xp2="http://www.w3.org/2002/06/xmldsig-filter2" - xmlns:doc="urn:document" - Filter="subtract">/doc:XMLDocument/doc:Paragraph[2]</xp2:XPath> - </dsig:Transform> - <dsig:Transform Algorithm="http://www.w3.org/TR/1999/REC-xslt-19991116"> - <xsl:stylesheet version="1.0" - xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:doc="urn:document"> - <xsl:output encoding="UTF-8" method="xml" indent="yes"/> - <xsl:template match="/doc:XMLDocument"> - <html xmlns="http://www.w3.org/1999/xhtml"> - <head> - <title>HTML-Dokument</title> - </head> - <body> - <xsl:for-each select="doc:Paragraph"> - <p> - <xsl:value-of select="child::text()"/> - </p> - </xsl:for-each> - </body> - </html> - </xsl:template> -</xsl:stylesheet></dsig:Transform> - <dsig:Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/> - </dsig:Transforms> - <FinalDataMetaInfo> - <MimeType>application/xhtml+xml</MimeType> - </FinalDataMetaInfo> - </CreateTransformsInfo> - </CreateTransformsInfoProfile> - </DataObjectInfo> -</pre> -<p>Für das zweite zu signierende Datenobjekt werden die Referenz-Eingangsdaten wiederum mittels <code>DataObject/@Reference</code> referenziert, d. h. MOA SS löst die darin enthaltene URL auf, um zu den Daten zu gelangen. Es handelt sich dabei um ein <a href="../../clients/webservice/resources/requests/CreateXMLSignatureRequest.Transforms.xml" target="_blank">XML-Dokument</a>.</p> -<p>Zunächst soll von diesem XML-Dokument jedoch ein Teil weggeschnitten werden, da er nicht mitsigniert werden soll. Für diesen Zweck bietet sich die<a href="http://www.w3.org/TR/2002/REC-xmldsig-filter2-20021108/" target="_blank" class="term"> XPath Filter 2 Transformation</a> an. Das Attribut <code>dsig:Transform/@Algorithm</code> ist dazu auf den Wert <code>http://www.w3.org/2002/06/xmldsig-filter2</code> zu setzen. Diese Transformation benötigt weiters Transformationsparameter. Diese werden als Kindelement <code>xp2:XPath</code> in <code>dsig:Transform</code> angegeben. Das Attribut <code>Filter</code> selektiert den Filtermodus; für das Bespiel wird den Modus <code>subtract</code> benötigt, da ein Teil weggefiltert werden soll. Der Textinhalt von <code>xp2:XPath</code> ist ein XPath-Ausdruck, der den Wurzelknoten jenes Teilbaums selektiert, der weggefiltert werden soll. Für das Beispiel soll das zweite <code>doc:Paragraph</code> Element des XML-Dokuments weggefiltert werden. Beachten Sie, dass das im XPath-Ausdruck verwendete Namespace-Prefix <code>doc</code> im Kontext des <code>xp2:XPath</code> Elements deklariert sein muss.</p> -<p>Als nächstes soll nun das XML-Dokument mit Hilfe eines Stylesheets in ein XHTML-Dokument übergeführt werden. Dazu kann die <a href="http://www.w3.org/TR/2002/REC-xmldsig-core-20020212/#sec-XSLT" target="_blank" class="term">XSLT Transformation</a> verwendet werden. Das Attribut <code>dsig:Transform/@Algorithm</code> ist dazu auf den Wert <code>http://www.w3.org/TR/1999/REC-xslt-19991116</code> zu setzen. Auch diese Transformation benötigt Transformationsparameter: Als Kindelement von <code>dsig:Transform</code> wird jener Stylesheet angegeben, mit dem die Stylesheet-Transformation ausgeführt werden soll.</p> -<p>Abschließend soll, wie in der Spezifikation der<span class="term"> XSLT-Transformation</span> <a href="http://www.w3.org/TR/2002/REC-xmldsig-core-20020212/#sec-XSLT" target="_blank">empfohlen</a>, eine Kanonisierungstransformation angewendet werden. Damit können Unterschiede im Output unterschiedlicher XSLT-Engines, wie sie in der Praxis vorkommen, abgefangen werden. Beachten Sie, dass als Voraussetzung dazu die Output-Methode im Stylesheet auf <code>xml</code> festgelegt werden muss (<code><xsl:output method="xml"></code>), denn nur XML-Output kann anschließend kanonisiert werden. Das Attribut <code>dsig:Transform/@Algorithm</code> ist für die <a href="http://www.w3.org/TR/2002/REC-xmldsig-core-20020212/#sec-c14nAlg" target="_blank"><span class="term">Canonical XML Transformation</span></a> auf den Wert http://www.w3.org/TR/2001/REC-xml-c14n-20010315 zu setzen. Die Transformation benötigt keine Transformationsparameter.</p> -<p>Das Ergebnis der drei hintereinandergeschalteten Transformationen, welches der Hashwert-Berechnung zufließt, finden Sie <a href="../../clients/webservice/resources/requests/transformResults/CreateXMLSignatureRequest.Transforms.hashinput.ref2.txt" target="_blank">hier</a>. </p> -<h5>Response</h5> -<p><code><a href="../../clients/webservice/resources/requests/CreateXMLSignatureRequest.Transforms.resp.xml" target="_blank">CreateXMLSignatureRequest.Transforms.resp.xml</a></code> ist eine typische Response des SS Webservices auf den obigen Request. Sein Aufbau wird nachfolgend analysiert. Bitte beachten Sie, dass die dargestellte Response zur bessernen Lesbarkeit eingerückt und gekürzt wurde.</p> -<pre> -<CreateXMLSignatureResponse - xmlns="http://reference.e-government.gv.at/namespace/moa/20020822#" - xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"> - <SignatureEnvironment> - <dsig:Signature Id="signature-1-1" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"> - <dsig:SignedInfo> - <dsig:CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/> - <dsig:SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#ecdsa-sha1"/> -</pre> -<p>Die Antwort enthält in <code>SignatureEnvironment</code> das Ergebnis der Signaturerstellung. Nachdem die Signatur in kein bestehendes Dokument eingefügt werden sollte, enhält <code>SignatureEnvironment</code> direkt die erzeugte XML-Signatur (<code>dsig:Signature</code>).</p> -<pre> - <dsig:Reference Id="reference-1-1" URI="http://localhost:8080/referencedData/Text.b64"> - <dsig:Transforms> - <dsig:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#base64"/> - </dsig:Transforms> - <dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/> - <dsig:DigestValue>a53jOsL7KbyltpByAK87FoMZphI=</dsig:DigestValue> - </dsig:Reference> -</pre> -<p>Die erste <code>dsig:Reference</code> wurde auf Grund des ersten <code>DataObjectInfo</code> im Request erstellt. Man erkennt dass die URL auf die Referenz-Eingangsdaten (Wert des Attributs <code>dsig:Reference/@URI</code>) aus <code>DataObject/@Reference</code> übernommen und eine <span class="term">Base64 Decoding Transformation</span> eingefügt würde. Die im Request spezifizierten Transformationen werden also eins zu eins in die XML-Signatur übernommen.</p> -<pre> - <dsig:Reference Id="reference-1-2" URI="http://localhost:8080/referencedData/XMLDocument.xml"> - <dsig:Transforms> - <dsig:Transform Algorithm="http://www.w3.org/2002/06/xmldsig-filter2"> - <xp2:XPath Filter="subtract" xmlns:doc="urn:document" - xmlns:dsig="http://www.w3.org/2000/09/xmldsig#" - xmlns:xf2="http://www.w3.org/2002/06/xmldsig-filter2" - xmlns:xp2="http://www.w3.org/2002/06/xmldsig-filter2">/doc:XMLDocument/doc:Paragraph[2]</xp2:XPath> - </dsig:Transform> - <dsig:Transform Algorithm="http://www.w3.org/TR/1999/REC-xslt-19991116"> - <xsl:stylesheet version="1.0" - xmlns:doc="urn:document" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> - <xsl:output encoding="UTF-8" indent="yes" method="xml"/> - <xsl:template match="/doc:XMLDocument">...</xsl:template> - </xsl:stylesheet> - </dsig:Transform> - <dsig:Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/> - </dsig:Transforms> - <dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/> - <dsig:DigestValue>fIPwneCpjVqTXwHMN9DFfx6tJIU=</dsig:DigestValue> - </dsig:Reference> -</pre> -<p>Die zweite <code>dsig:Reference</code> wurde auf Grund des zweiten <code>DataObjectInfo</code> im Request erstellt. Man erkennt auch hier gut, dass die URL auf die Referenz-Eingangsdaten (Wert des Attributs <code>dsig:Reference/@URI</code>) aus <code>DataObject/@Reference</code> übernommen und die drei Transformationen wie im Request angegeben eingefügt wurden. </p> -<h4><a name="webservice_xmlrequests_erstellungxml_ergaenzungsobjekte"></a>2.1.2.4 Ergänzungsobjekte </h4> -<h5>Request</h5> -<p>Dieses Beispiel (<a href="../../clients/webservice/resources/requests/CreateXMLSignatureRequest.Supplements.xml" target="_blank"><code>CreateXMLSignatureRequest.Supplements.xml</code></a>) stellt die Verwendung von Ergänzungsobjekten vor. Ein Ergänzungsobjekt betrifft entweder ein zu signierendes Datum (Zusammenhang mit einem <code>DataObject</code>) oder jenes Dokument, in das eine zu erzeugende Signatur eingefügt werden soll (Zusammenhang mit <code>CreateSignatureEnvironment</code>). Es muss dann angegeben werden, wenn in einem zu signierenden Datum bzw. im Einfügedokument auf Daten per Referenz verwiesen wird, diese referenzierten Daten aber von MOA SS nicht aufgelöst werden können. Das Ergänzungsobjekt enthält dann genau diese Daten, die nicht von MOA SS aufgelöst werden können.</p> -<pre> -<CreateXMLSignatureRequest - xmlns="http://reference.e-government.gv.at/namespace/moa/20020822#" - xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"> - <KeyIdentifier>KG_allgemein</KeyIdentifier> - <SingleSignatureInfo SecurityLayerConformity="false"> -</pre> -<p>Die Signatur soll mit dem Schlüssel <code>KG_allgemein</code> erstellt werden; jene Elemente, die speziell für eine Security-Layer V1.1 konforme Signatur notwendig sind (vergleiche <a href="#webservice_xmlrequests_erstellungxml_simple" class="term">Einfaches Beispiel</a>), brauchen nicht erstellt zu werden (<code>SecurityLayerConformity="false"</code>).</p> -<pre> - <DataObjectInfo Structure="detached"> - <DataObject Reference="#Para2"/> -</pre> -<p>Das zu signierende Datum in diesem Beispiel ist ein Teil des Dokuments, in das die zu erstellende Signatur eingefügt werden soll. Der Wert des <code>Reference</code> Attributs ist <code>#Para2</code>, das bedeutet, dass jenes Element des Einfügedokuments signiert werden soll, das ein ID-Attribut mit dem Wert <code>#Para2</code> aufweist. Damit MOA SS diesen Hinweis auswerten kann, muss es das Einfügedokument validierend parsen, denn sonst wüsste es ja nicht, welche Attribute überhaupt ID-Attribute sind. Das zum validierenden Parsen notwendige XML-Schema wird MOA SS in diesem Beispiel über ein Ergänzungsobjekt zum Einfügedokument mitgeteilt (siehe weiter unten). </p> -<pre> - <CreateTransformsInfoProfile> - <CreateTransformsInfo> - <dsig:Transforms> - <dsig:Transform Algorithm="http://www.w3.org/TR/1999/REC-xslt-19991116"> - <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> - <xsl:include href="XMLDocument.Para.xsl"/> -</xsl:stylesheet> - </dsig:Transform> - <dsig:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/> - </dsig:Transforms> - <FinalDataMetaInfo> - <MimeType>application/xhtml+xml</MimeType> - </FinalDataMetaInfo> -</pre> -<p>Das Beispiel enthält als erste Transformation eine <span class="term">XSLT-Transformation</span>. Der als Kindelement von <code>dsig:Transform</code> angegebene Stylesheet verweist dabei mittels <code>xsl:include</code> auf einen weiteren Stylesheet. Dieser weitere Stylesheet kann jedoch von MOA nicht direkt aufgelöst werden, da er als relative Referenz angegeben wird. Deshalb ist es notwendig, diesen weiteren Stylesheet als Ergänzungsobjekt zu den signierenden Daten anzugeben:</p> -< - </CreateTransformsInfo> - <Supplement> - <Content Reference="XMLDocument.Para.xsl"> - <LocRefContent>http://localhost:8080/referencedData/XMLDocument.Para.xsl</LocRefContent> - </Content> - </Supplement> - </CreateTransformsInfoProfile> - </DataObjectInfo> -</pre> -<p>Ein Ergänzungsobjekt für zu signierende Daten wird im entsprechenden <code>DataObjectInfo</code> Element angegeben, und zwar als Inhalt des Elements <code>CreateTransformsInfoProfile/Supplement</code>. Das verpflichtend zu verwendende Attribut <code>Content/@Reference</code> enthält dabei die Referenz auf das Ergänzungsobjekt in exakt jener Schreibweise, wie sie in der <code>xsl:include</code> Direktive vorkommt, hier also <code>XMLDocument.Para.xsl</code>. Das Element <code>Content</code> beinhaltet das Ergänzungsobjekt so, wie es MOA SS verwenden soll (Elemente <code>Base64Content</code> oder <code>XMLContent</code>, vergleiche <a href="#webservice_xmlrequests_erstellungxml_simple"><span class="term">Einfaches Beispiel</span></a>), bzw. enthält eine von MOA SS auflösbare Referenz auf das Ergänzungsobjekt (Element <code>LocRefContent</code>, vergleiche <a href="#webservice_xmlrequests_erstellungxml_simple"><span class="term">Einfaches Beispiel</span></a>). Im konkreten Beispiel wird <code>LocRefContent</code> verwendet. </p> -<pre> - <CreateSignatureInfo> - <CreateSignatureEnvironment - Reference="http://localhost:8080/referencedData/XMLDocument.withSchemaHint.xml"/> - <CreateSignatureEnvironmentProfile> - <CreateSignatureLocation - Index="4" xmlns:doc="urn:document">/doc:XMLDocument</CreateSignatureLocation> -</pre> -<p>Eingefügt werden soll die zu erzeugende Signatur in ein <a href="../../clients/referencedData/src/main/webapp/XMLDocument.withSchemaHint.xml" target="_blank">bestehendes Dokument</a>, das MOA SS durch Auflösen der in <code>CreateSignatureEnvironment/@Reference</code> angegebenen URL erhält. Eingefügt werden soll die Signatur als fünfter Kindknoten des Wurzelelements <code>doc:XMLDocument</code>. Beachten Sie wiederum die <a href="#webservice_xmlrequests_erstellungxml_daten_hinweisCreateSignatureLocation">Hinweise</a> zur Zählweise für das Attribut <code>Index</code> bzw. zur Deklaration der im XPath-Ausdruck verwendeten Namespace-Deklarationen (hier <code>doc</code>). </p> -<pre> - <Supplement> - <Content Reference="urn:XMLDocument.xsd"> - <LocRefContent>http://localhost:8080/referencedData/XMLDocument.xsd</LocRefContent> - </Content> - </Supplement> - </CreateSignatureEnvironmentProfile> - </CreateSignatureInfo> -</pre> -<p>Wie oben bereits angemerkt, muss MOA SS zur Auflösung der ID-Referenz <code>#Para2</code> das Einfügedokument validierend parsen. Im Einfügedokument ist zwar nun ein Hinweis auf die dazu notwendige Grammatikinformation in Form eines XML-Schemas enthalten (Attribut <code>xsi:schemaLocation</code> enthält den Wert <code>"urn:document urn:XMLDocument.xsd"</code>). Nachdem die darin angegebene URI <code>urn:XMLDocument.xsd</code> jedoch von MOA nicht direkt aufgelöst werden kann, wird im Request ein Ergänzungsobjekt zum Einfügedokument angegeben (<code>CreateSignatureEnvironmentProfile/Supplement</code>). Das Attribut <code>Content/@Reference</code> enthält die Referenz auf das Ergänzungsobjekt in exakt jener Schreibweise, wie sie im Attribut <code>xsi:schemaLocation</code> angegeben wurde (<code>urn:XMLDocument.xsd</code>). Das Element <code>Content</code> beinhaltet das Ergänzungsobjekt so, wie es MOA SS verwenden soll (Elemente <code>Base64Content</code> oder <code>XMLContent</code>, vergleiche <a href="#webservice_xmlrequests_erstellungxml_simple"><span class="term">Einfaches Beispiel</span></a>), bzw. enthält eine von MOA SS auflösbare Referenz auf das Ergänzungsobjekt (Element <code>LocRefContent</code>, vergleiche <a href="#webservice_xmlrequests_erstellungxml_simple"><span class="term">Einfaches Beispiel</span></a>). Im konkreten Beispiel wird <code>LocRefContent</code> verwendet. </p> -<p>Beachten Sie bitte, dass die Verwendung von Ergänzungsobjekten für die Mitteilung von XML-Schemata nur dann funktioniert, wenn die Referenz auf das XML-Schema in der <code>xsi:schemaLocation</code> eine absolute URI ist (also z.B. wie hier <code>urn:XMLDocument.xsd</code> oder auch <code>http://example.org/XMLDocument.xsd</code>, nicht aber z.B. <code>XMLDocument.xsd</code> oder <code>../schemas/XMLDocument.xsd</code>).</p> -<p>Auch für das Auflösen eines Verweises in einer DTD kann in analoger Weise von Ergänzungsobjekten Gebrauch gemacht werden. </p> -<h5>Response</h5> -<p><code><a href="../../clients/webservice/resources/requests/CreateXMLSignatureRequest.Supplements.resp.xml" target="_blank">CreateXMLSignatureRequest.Supplements.resp.xml</a></code> ist eine typische Response des SS Webservices auf den obigen Request. Er wird an dieser Stelle nicht näher analysiert, da er keine für das Thema des Beispiels relevanten Besonderheiten aufweist.</p> -<h3><a name="webservice_xmlrequests_pruefungcms" id="webservice_xmlrequests_pruefungcms"></a>2.1.3 Prüfung einer CMS bzw. CAdES-Signatur</h3> -<h4><a name="webservice_xmlrequests_pruefungcms_einfach" id="webservice_xmlrequests_pruefungcms_einfach"></a>2.1.3.1 Einfaches Beispiel</h4> -<h5>Request</h5> -<p>Dieses Beispiel (<a href="../../clients/webservice/resources/requests/VerifyCMSSignatureRequest.Simple.xml" target="_blank"><code>VerifyCMSSignatureRequest.Simple.xml</code></a>) ist ein einfacher Request zur Prüfung einer CMS-Signatur. Sein Aufbau wird nachfolgend analysiert. Bitte beachten Sie, dass der nachfolgende Ausschnitt aus dem Request aus Gründen der Übersichtlichkeit gekürzt wurde.</p> -<pre> -<VerifyCMSSignatureRequest - xmlns="http://reference.e-government.gv.at/namespace/moa/20020822#"> - <CMSSignature>MIIHsAYJKo...4sLL6kpOPJaLg==</CMSSignature> - <TrustProfileID>Test-Signaturdienste</TrustProfileID> -</VerifyCMSSignatureRequest> -</pre> -<p>Der Request enthält zunächst in <code>CMSSignature</code> die zu prüfende CMS-Signatur, und zwar in base64 kodierter Form. In diesem Beispiel wird davon ausgegangen, dass es sich dabei um eine <span class="term">Enveloping</span> Signature handelt, d. h. dass die signierten Daten als Teil der CMS-Struktur vorhanden sind. Für die Behandlung einer <span class="term">Detached</span> Signature sei auf das <a href="#webservice_xmlrequests_pruefungcms_detached">nächste Beispiel</a> verwiesen.</p> -<p>Abschließend enthält der Request in <code>TrustProfileID</code> die Angabe des Vertrauensprofils, gegen das die Vertrauensprüfung des Zertifikats durchgeführt werden soll. Ein Vertrauensprofil mit dem angegebenen Namen muss in der für die Signaturprüfung verwendeten Instanz von MOA SP eingerichtet sein. </p> -<h5>Response</h5> -<p><code><a href="../../clients/webservice/resources/requests/VerifyCMSSignatureRequest.Simple.resp.xml" target="_blank">VerifyCMSSignatureRequest.Simple.resp.xml</a></code> ist eine typische Response des SP Webservices auf den obigen Request. Sein Aufbau wird nachfolgend analysiert. Bitte beachten Sie, dass die dargestellte Response zur bessernen Lesbarkeit eingerückt und gekürzt wurde.</p> -<pre> -<VerifyCMSSignatureResponse - xmlns="http://reference.e-government.gv.at/namespace/moa/20020822#" - xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"> - <SignerInfo> - <dsig:X509Data> - <dsig:X509SubjectName>serialNumber=615536615920,givenName=Gregor,SN=Karlinger, -CN=Gregor Karlinger,C=AT</dsig:X509SubjectName> - <dsig:X509IssuerSerial> - <dsig:X509IssuerName>CN=TrustSignTest-Sig-01,OU=TrustSignTest-Sig-01, -O=A-Trust Ges. für Sicherheitssysteme im elektr. Datenverkehr GmbH,C=AT</dsig:X509IssuerName> - <dsig:X509SerialNumber>2892</dsig:X509SerialNumber> - </dsig:X509IssuerSerial> - <dsig:X509Certificate>...</dsig:X509Certificate> - <QualifiedCertificate/> - </dsig:X509Data> - </SignerInfo> -</pre> -<p>Die Response enthält zunächst in <code>SignerInfo/dsig:X509Data</code> Informationen über den Signator, die aus dem in der CMS-Signatur enthaltenen Signatorzertifikat entnommen sind. </p> -<p><code>dsig:X509SubjectName</code> ist immer vorhanden und enthält den Namen des Signators. <code>dsig:X509IssuerSerial</code> ist ebenfalls immer vorhanden und enthält den Namen des Austellers des Signatorzertifikats (<code>dsig:X509IssuerName</code>) sowie die Seriennummer des Zertifikats (<code>dsig:X509SerialNumber</code>). Auch <code>dsig:X509Certificate</code> ist immer vorhanden und enthält das Signatorzertifikat in base64 kodierter Form. </p> -<p>Optional vorhanden ist das inhaltslose Element <code>QualifiedCertificate</code>, und zwar dann, wenn es sich beim Signatorzertifikat um ein qualifiziertes Zertifikat handelt. Ebenfalls optional vorhanden ist schließlich - in diesem Beispiel nicht ersichtlich - das Element <code>PublicAuthority</code>, und zwar dann, wenn das Signatorzertifikat die österreichspezifische Zertifikatserweiterung <a href="http://www.digitales.oesterreich.gv.at/site/cob__28513/5580/default.aspx" target="_blank">Verwaltungseigenschaft</a> aufweist. Ist in dieser Zertifikatserweiterung das Verwaltungskennzeichen mitkodiert, wird dieses Kennzeichen als Textinhalt des optionalen Elements <code>PublicAuthority/Code</code> geliefert.</p> -<pre> - <SignatureCheck> - <Code>0</Code> - </SignatureCheck> -</pre> -<p> Anschließend an <code>SignerInfo</code> enthält die Response mit <code>SignatureCheck/Code</code> das Resultat der kryptographischen Prüfung der Signatur. In unserem Beispiel ist dort der Wert <code>0</code> enthalten, d. h. die Signatur konnte erfolgreich validiert werden. Für eine Übersicht der möglichen Kodes siehe <a href="#sl"> Security-Layer Spezifikation</a>.</p> -<pre> - <CertificateCheck> - <Code>1</Code> - </CertificateCheck> -</pre> -<p>Abschließend enthält die Response mit <code>CertificateCheck/Code</code> das Resultat der Prüfung des Signatorzertifikats. Zunächst prüft MOA SP, ob ausgehend vom Signatorzertifikat eine Zertifikatskette zu einem im zugehörigen Vertrauensprofil konfigurierten sog. <span class="term">Trust Anchor</span> gebildet werden kann. Gelingt dies, wird die Gültigkeit jedes Zertifikats dieser Kette überprüft. In unserem Beispiel enthält <code>Code</code> den Wert <code>1</code>, d. h. MOA SP konnte die oben erläuterte Zertifikatskette nicht bilden. Für eine Übersicht der möglichen Kodes siehe <a href="#sl"> Security-Layer Spezifikation</a>.</p> -<h4><a name="webservice_xmlrequests_pruefungcms_erweitert" id="webservice_xmlrequests_pruefungcms_erweitert"></a>2.1.3.2 Erweitertes Beispiel</h4> -<h5>Request</h5> -<p>Dieses erweiterte Beispiel zur Prüfung einer CMS-Signatur (<a href="../../clients/webservice/resources/requests/VerifyCMSSignatureRequest.Extended.xml" target="_blank"><code>VerifyCMSSignatureRequest.Extended.xml</code></a>) demonstriert die Prüfung mehrerer Signatoren einer CMS-Signatur, die Angabe des Prüfzeitpunkts sowie die Prüfung einer <span class="term">Detached Signature</span>, d. h. einer Signatur, in der die signierten Daten nicht enthalten sind und daher extra angegeben werden müssen. </p> -<pre> -<VerifyCMSSignatureRequest - xmlns="http://reference.e-government.gv.at/namespace/moa/20020822#" - Signatories="1"> - <DateTime>2004-08-17T08:00:00+02:00</DateTime> - <CMSSignature>MIIHiwYJKoZI...kfiwsvqSk48lou</CMSSignature> - <DataObject> - <Content> - <Base64Content>RGllc2UgRGF0ZW4gd2FyZW4gYmFzZTY0IGtvZGllcnQu</Base64Content> - </Content> - </DataObject> - <TrustProfileID>Test-Signaturdienste</TrustProfileID> -</VerifyCMSSignatureRequest> -</pre> -<p> Liegt eine zu prüfende CMS-Signatur vor, die von mehreren Unterzeichnenden signiert worden ist, kann das Attribut <code>VerifyCMSSignatureRequest/@Signatories</code> verwendet werden, um jene Unterzeichnenden auszuwählen, deren Unterschriften von MOA SP geprüft werden sollen. Der Default-Wert für dieses optionale Attribut ist <code>1</code>. Soll nicht die Unterschrift allein des ersten Unterzeichnenden geprüft werden, muss das Attribut explizit angegeben werden. Es enthält dann eine oder mehrere Ganzzahlwerte, getrennt durch Leerzeichen. Jede Ganzzahl bezeichnet einen Unterzeichnenden, wobei die Reihenfolge der Auflistung der Unterzeichner in der CMS-Signatur entspricht. Der Wert <code>"1 3"</code> würde beispielsweise aussagen, dass MOA SP die Unterschrift des ersten sowie des dritten Unterzeichnenden prüfen soll.</p> -<p>Mit dem optionalen Element <code>DateTime</code> kann der Zeitpunkt der Signaturprüfung explizit vorgegeben werden. Inhalt dieses Elements ist die Angabe von Datum und Uhrzeit entsprechend dem XML-Schema Datentyp <a href="http://www.w3.org/TR/2001/REC-xmlschema-2-20010502/#dateTime" target="_blank"><span class="term">dateTime</span></a>. Enthält der angegebene Zeitpunkt keinen Zeitzonen-Offset zur UTC, wird der Zeitpunkt als lokale Zeit des Servers interpretiert, auf dem MOA SP läuft. Wird <code>DateTime</code> nicht angegeben, versucht MOA SP, den Zeitpunkt der Signaturerstellung aus der Signatur zu ermitteln (anhand des Signaturattributs <a href="http://www.buergerkarte.at/konzept/securitylayer/spezifikation/20040514/core/Core.html#ref-etsicms" target="_blank" class="term">SigningTime</a>). Enthält die Signatur keinen Zeitpunkt der Signaturerstellung, verwendet MOA SP die aktuelle Systemzeit des Servers, auf dem es läuft. </p> -<p>Das optionale Element <code>DataObject</code> muss dann angegeben werden, wenn eine <span class="term">Detached Signature</span> geprüft werden soll, d. h. wenn in der CMS-Signatur die signierten Daten nicht mitkodiert sind. In <code>DataObject/Content/Base64Content</code> sind in einem solchen Fall diese Daten in base64 kodierter Form bereit zu stellen.</p> -<h5>Response</h5> -<p><code><a href="../../clients/webservice/resources/requests/VerifyCMSSignatureRequest.Extended.resp.xml" target="_blank">VerifyCMSSignatureRequest.Extended.resp.xml</a></code> ist eine typische Response des SP Webservices auf den obigen Request. Er wird an dieser Stelle nicht näher analysiert, da er keine für das Thema des Beispiels relevanten Besonderheiten aufweist.</p> -<h3><a name="webservice_xmlrequests_pruefungxml"></a>2.1.4 Prüfen einer XML-Signatur</h3> -<h4><a name="webservice_xmlrequests_pruefungxml_einfach"></a>2.1.4.1 Einfaches Beispiel</h4> -<h5>Request</h5> -<p><code><a href="../../clients/webservice/resources/requests/VerifyXMLSignatureRequest.Simple.xml" target="_blank">VerifyXMLSignatureRequest.Simple.xml</a></code> ist ein einfacher XML-Request zur Prüfung einer XML-Signatur. Sein Aufbau wird nachfolgend analysiert. Bitte beachten Sie, dass der dargestellte Request zur bessernen Lesbarkeit eingerückt und gekürzt wurde.</p> -<pre> -<VerifyXMLSignatureRequest xmlns="http://reference.e-government.gv.at/namespace/moa/20020822#"> - <VerifySignatureInfo> - <VerifySignatureEnvironment> - <XMLContent> - <dsig:Signature Id="signature-1-1" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"> - <dsig:SignedInfo> - <dsig:CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/> - <dsig:SignatureMethod - Algorithm="http://www.w3.org/2001/04/xmldsig-more#ecdsa-sha1"/> - <dsig:Reference Id="reference-1-1" URI="#xpointer(id('signed-data-1-1-1')/node())"> - <dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/> - <dsig:DigestValue>tLODyeiWFbAkQKwhrR23jtcgu4k=</dsig:DigestValue> - </dsig:Reference> - </dsig:SignedInfo> - <dsig:SignatureValue>...</dsig:SignatureValue> - <dsig:KeyInfo>...</dsig:KeyInfo> - <dsig:Object Id="signed-data-1-1-1">Diese Daten werden signiert.</dsig:Object> - </dsig:Signature> - </XMLContent> - </VerifySignatureEnvironment> -</pre> -<p>Das Element <code>VerifySignatureEnvironment</code> enthält jenes XML-Dokument, das die zu prüfende XML-Signatur enthält. Auch hier stehen eine Reihe von Möglichkeiten zur Verfügung, dieses XML-Dokument anzugeben. Im Beispiel wurde das Element <code>XMLContent</code> verwendet; alternativ stehen die Elemente <code>Base64Content</code> und <code>LocRefContent</code> bzw. gleichwertig zu <code>LocRefContent</code> das Attribut <code>Reference</code> zur Verfügung.</p> -<p>Im konkreten Beispiel enthält das angegebene XML-Dokument direkt als Root-Element die zu prüfende Signatur (<code>dsig:Signature</code>). Es handelt sich dabei um eine <span class="term">Enveloping Signature</span>, d. h. die signierten Daten sind in einem <code>dsig:Object</code> als Teil der XML-Struktur der Signatur kodiert. Tatsächlich signiert ist hier die Zeichenkette <code>Diese Daten werden signiert.</code></p> -<pre> - <VerifySignatureLocation - xmlns:dsig="http://www.w3.org/2000/09/xmldsig#">/dsig:Signature</VerifySignatureLocation> - </VerifySignatureInfo> -</pre> -<p>Das Element <code>VerifySignatureLocation</code> enthält als Text den XPath-Ausdruck zur Selektion der XML-Signatur innerhalb des zu prüfenden XML-Dokuments. Die Auswertung des XPath-Ausdrucks muss genau ein Element <code>dsig:Signature</code> ergeben. Bitte beachten Sie, dass im Kontext des Elements <code>VerifySignatureLocation</code> alle im XPath-Ausdruck verwendeten Namespace-Präfixe bekannt sein müssen (hier das Präfix <code>dsig</code>). </p> -<pre> - <TrustProfileID>Test-Signaturdienste</TrustProfileID> -</VerifyXMLSignatureRequest> -</pre> -<p>Das Element <code>TrustProfileID</code> schließlich enthält den Bezeichner des Vertrauensprofils, gegen das die Zertifikatsprüfung von MOA SP durchgeführt wird. Ein Vertrauensprofil enthält die Zertifikate jene Zertifizierungsdiensteanbieter, denen als Aussteller von Signatorzertifikaten vertraut wird. Ein Vertrauensprofil mit dem gewählten Namen (hier <code>Test-Signaturdienste</code>) muss in der Konfiguration von MOA SP hinterlegt sein. </p> -<h5>Response</h5> -<p><code><a href="../../clients/webservice/resources/requests/VerifyXMLSignatureRequest.Simple.resp.xml" target="_blank">VerifyXMLSignatureRequest.Simple.resp.xml</a></code> ist eine typische Response des SP Webservices auf den obigen Request. Sein Aufbau wird nachfolgend analysiert. Bitte beachten Sie, dass die dargestellte Response zur bessernen Lesbarkeit eingerückt und gekürzt wurde.</p> -<pre> -<VerifyXMLSignatureResponse - xmlns="http://reference.e-government.gv.at/namespace/moa/20020822#" - xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"> - <SignerInfo> - <dsig:X509Data> - <dsig:X509SubjectName>CN=Test: Signaturdienst aller Kunden: ECDSA (P192v1),OU=Technik und Standards, - O=Stabsstelle IKT-Strategie des Bundes,C=AT</dsig:X509SubjectName> - <dsig:X509IssuerSerial> - <dsig:X509IssuerName>CN=Test CA - Signaturdienste,OU=Technik und Standards, - O=Stabstelle IKT-Strategie des Bundes,C=AT</dsig:X509IssuerName> - <dsig:X509SerialNumber>9</dsig:X509SerialNumber> - </dsig:X509IssuerSerial> - <dsig:X509Certificate>...</dsig:X509Certificate> - <PublicAuthority> - <Code>BKA-IKT</Code> - </PublicAuthority> - </dsig:X509Data> - </SignerInfo> -</pre> -<p>Die Response enthält zunächst in <code>SignerInfo/dsig:X509Data</code> Informationen über den Signator, die aus dem in der XML-Signatur enthaltenen Signatorzertifikat entnommen sind. </p> -<p><code>dsig:X509SubjectName</code> ist immer vorhanden und enthält den Namen des Signators. <code>dsig:X509IssuerSerial</code> ist ebenfalls immer vorhanden und enthält den Namen des Austellers des Signatorzertifikats (<code>dsig:X509IssuerName</code>) sowie die Seriennummer des Zertifikats (<code>dsig:X509SerialNumber</code>). Auch <code>dsig:X509Certificate</code> ist ist immer vorhanden und enthält das Signatorzertifikat in base64 kodierter Form. </p> -<p>Optional vorhanden - in diesem Beispiel nicht ersichtlich - ist das inhaltslose Element <code>QualifiedCertificate</code>, und zwar dann, wenn es sich beim Signatorzertifikat um ein qualifiziertes Zertifikat handelt. Ebenfalls optional vorhanden ist schließlich das Element <code>PublicAuthority</code>, und zwar dann, wenn das Signatorzertifikat die österreichspezifische Zertifikatserweiterung <a href="http://www.digitales.oesterreich.gv.at/site/cob__28513/5580/default.aspx" target="_blank">Verwaltungseigenschaft</a> aufweist. Ist in dieser Zertifikatserweiterung das Verwaltungskennzeichen mitkodiert, wird dieses Kennzeichen als Textinhalt des optionalen Elements <code>PublicAuthority/Code</code> geliefert.</p> -<pre> - <SignatureCheck> - <Code>0</Code> - </SignatureCheck> -</pre> -<p> Anschließend an <code>SignerInfo</code> enthält die Response mit <code>SignatureCheck/Code</code> das Resultat der kryptographischen Prüfung der Signatur. In unserem Beispiel ist dort der Wert <code>0</code> enthalten, d. h. die Signatur konnte erfolgreich validiert werden. Für eine Übersicht der möglichen Kodes siehe <a href="#sl"> Security-Layer Spezifikation</a>.</p> -<pre> - <CertificateCheck> - <Code>0</Code> - </CertificateCheck> -</pre> -<p>Abschließend enthält die Response mit <code>CertificateCheck/Code</code> das Resultat der Prüfung des Signatorzertifikats. Zunächst prüft MOA SP, ob ausgehend vom Signatorzertifikat eine Zertifikatskette zu einem im zugehörigen Vertrauensprofil konfigurierten sog. <span class="term">Trust Anchor</span> gebildet werden kann. Gelingt dies, wird die Gültigkeit jedes Zertifikats dieser Kette überprüft. In unserem Beispiel enthält <code>Code</code> den Wert <code>0</code>, d. h. MOA SP konnte die Kette bilden, und alle Zertifikate der Kette sind gültig. Für eine Übersicht der möglichen Kodes siehe <a href="#sl"> Security-Layer Spezifikation</a>.</p> -<h4><a name="webservice_xmlrequests_pruefungxml_erweitert"></a>2.1.4.2 Erweitertes Beispiel </h4> -<h5>Request</h5> -<p>Dieses erweiterte Beispiel zur Prüfung einer XML-Signatur (<a href="../../clients/webservice/resources/requests/VerifyXMLSignatureRequest.Enveloped.xml" target="_blank"><code>VerifyXMLSignatureRequest.Enveloped.xml</code></a>) demonstriert die Prüfung einer <span class="term">Enveloped Signature</span>, d. h. einer Signatur, die in ein XML-Dokument integriert ist, die Angabe des Prüfzeitpunkts sowie die Anweisung an MOA SP, in der Response die von der Signatur abgedeckten Daten zu retournieren.</p> -<pre> -<VerifyXMLSignatureRequest xmlns="http://reference.e-government.gv.at/namespace/moa/20020822#"> - <DateTime>2004-08-18T17:00:00+02:00</DateTime> -</pre> -<p>Mit dem optionalen Element <code>DateTime</code> kann der Zeitpunkt der Signaturprüfung explizit vorgegeben werden. Inhalt dieses Elements ist die Angabe von Datum und Uhrzeit entsprechend dem XML-Schema Datentyp <a href="http://www.w3.org/TR/2001/REC-xmlschema-2-20010502/#dateTime" target="_blank"><span class="term">dateTime</span></a>. Enthält der angegebene Zeitpunkt keinen Zeitzonen-Offset zur UTC, wird der Zeitpunkt als lokale Zeit des Servers interpretiert, auf dem MOA SP läuft. Wird <code>DateTime</code> nicht angegeben, versucht MOA SP, den Zeitpunkt der Signaturerstellung aus der Signatur zu ermitteln (anhand des Signaturattributs <a href="http://www.buergerkarte.at/konzept/securitylayer/spezifikation/20040514/core/Core.html#ref-etsicms" target="_blank" class="term">SigningTime</a>). Enthält die Signatur keinen Zeitpunkt der Signaturerstellung, verwendet MOA SP die aktuelle Systemzeit des Servers, auf dem es läuft.</p> -<pre> - <VerifySignatureInfo> - <VerifySignatureEnvironment Reference="http://localhost:8080/referencedData/XMLDocument.signed.xml"/> - <VerifySignatureLocation xmlns:doc="urn:document" - xmlns:dsig="http://www.w3.org/2000/09/xmldsig#">/doc:XMLDocument/dsig:Signature</VerifySignatureLocation> - </VerifySignatureInfo> -</pre> -<p>Das Element <code>VerifySignatureEnvironment</code> enthält in diesem Fall mit dem Attribut <code>Reference</code> eine Referenz auf das XML-Dokument (<code><a href="../../clients/referencedData/src/main/webapp/XMLDocument.signed.xml" target="_blank">XMLDocument.signed.xml</a></code>), das die zu prüfende Signatur beinhaltet. Als Textinhalt von <code>VerifySignatureLocation</code> ist ein XPath-Ausdruck angegeben, der die zu prüfende Signatur innerhalb des XML-Dokuments auswählt. Bitte beachten Sie, dass im Kontext des Elements <code>VerifySignatureLocation</code> alle im XPath-Ausdruck verwendeten Namespace-Präfixe bekannt sein müssen (hier die Präfixe <code>doc</code> und <code>dsig</code>). </p> -<pre> - <ReturnHashInputData/> - <TrustProfileID>Test-Signaturdienste</TrustProfileID> -</VerifyXMLSignatureRequest> -</pre> -<p>Durch Angabe des optionalen, leeren Elements <code>ReturnHashInputData</code> wird MOA SP angewiesen, im Response jene Daten zurückzuliefern, die von der Signatur abgedeckt sind, d. h. tatsächlich signiert wurden (siehe unten). Diese Information ist für die MOA SP verwendende Anwendung essentiell, da sie wissen muss, ob tatsächlich die von ihr geforderten Daten signiert wurden. Wird <code>HashInputData</code> im Request nicht angegeben, muss die Anwendung selbst die Signatur analysieren, um diese Information zu erhalten. </p> -<h5>Response</h5> -<p><code><a href="../../clients/webservice/resources/requests/VerifyXMLSignatureRequest.Enveloped.resp.xml" target="_blank">VerifyXMLSignatureRequest.Enveloped.resp.xml</a></code> ist eine typische Response des SP Webservices auf den obigen Request. Sein Aufbau wird nachfolgend analysiert. Bitte beachten Sie, dass die dargestellte Response zur bessernen Lesbarkeit eingerückt und gekürzt wurde.</p> -<pre> -<VerifyXMLSignatureResponse - xmlns="http://reference.e-government.gv.at/namespace/moa/20020822#" - xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"> - <SignerInfo> - <dsig:X509Data>...</dsig:X509Data> - </SignerInfo> -</pre> -<p>Die Response enthält zunächst in <code>SignerInfo/dsig:X509Data</code> Informationen über den Signator, die aus dem in der XML-Signatur enthaltenen Signatorzertifikat entnommen sind (siehe <a href="#webservice_xmlrequests_pruefungxml_einfach">Einfaches Beispiel</a>).</p> -<pre> - <HashInputData PartOf="SignedInfo"> - <Base64Content>PGRvYzp...hNTERvY3VtZW50Pg==</Base64Content> - </HashInputData> -</pre> -<p>Wurde im Request - so wie in diesem Beispiel - das Element <code>ReturnHashInputData</code> angegeben, enthält - die Response nach <code>SignerInfo</code> für jede <code>dsig:Reference</code> in <code>dsig:SignedInfo</code> der - XML-Signatur (bzw. auch für jede <code>dsig:Reference</code> aus einem <code>dsig:Manifest</code>, auf - das mittels des Attributs <code>Type="http://www.w3.org/2000/09/xmldsig#Manifest"</code> in einer <code>dsig:Reference</code> aus <code>dsig:SignedInfo</code> verwiesen - wird; solche Manifeste kommen aber in diesem Beispiel nicht vor) ein Element <code>HashInputData</code>.</p> -<p>Die Reihenfolge der <code>HashInputData</code>-Elemente - entspricht der Reihenfolge der <code>dsig:Reference</code>-Elemente in <code>dsig:SignedInfo</code> der - XML-Signatur (enthält die XML-Signatur auch <code>dsig:Manifest</code>-Elemente, auf die jeweils in einer <code>dsig:Reference</code> aus <code>dsig:SignedInfo</code> verwiesen wird, werden zuerst <code>HashInputData</code>-Elemente für alle <code>dsig:Reference</code>-Elemente - aus <code>dsig:SignedInfo</code> und anschließend <code>HashInputData</code>-Elemente für alle <code>dsig:Reference</code>-Elemente - aus den einzelnen <code>dsig:Manifest</code>-Elementen geliefert). </p> -<p>Das Attribut PartOf weist mit dem Wert SignedInfo darauf hin, dass die <code>dsig:Reference</code>, -für welche die Hasheingangsdaten gelten, Teil von <code>dsig:SignedInfo</code> ist (für eine <code>dsig:Reference</code> aus -einem <code>dsig:SignedInfo</code> würde der gelieferte Wert <code>XMLDSIGManifest</code> lauten; weiters -würde<code> HashInputData</code> in einem solchen Fall ein weiteres Attribut - - -<code>ReferringSigReference</code> aufweisen, dessen Wert die Nummer jener <code>dsig:Reference</code> aus <code>dsig:SignedInfo </code>als -positive Ganzzahl repräsentiert, die auf das beinhaltende <code>dsig:Manifest</code> verweist.). </p> -<p>Der Inhalt wird dabei stets mittels <code>Base64Content</code> in - base64-kodierter Form geliefert.</p> -<pre> - <SignatureCheck> - <Code>0</Code> - </SignatureCheck> - <CertificateCheck> - <Code>0</Code> - </CertificateCheck> -</VerifyXMLSignatureResponse> -</pre> -<p>Die Elemente <code>SignatureCheck</code> und <code>CertificateCheck</code> enthalten die Resultate der kryptographischen Prüfung der Signatur sowie der Zertifikatsprüfung (siehe <a href="#webservice_xmlrequests_pruefungxml_einfach">Einfaches Beispiel</a>).</p> -<h4><a name="webservice_xmlrequests_pruefungxml_xmldsigmanifest"></a>2.1.4.3 Prüfung eines XMLDSIG-Manifests </h4> -<h5>Request</h5> -<p>Dieses Beispiel zur Prüfung einer XML-Signatur (<a href="../../clients/webservice/resources/requests/VerifyXMLSignatureRequest.XMLDSigManifest.xml" target="_blank"><code>VerifyXMLSignatureRequest.XMLDSigManifest.xml</code></a>) demonstriert die Prüfung eines in der XML-Signatur vorhandenden <a href="http://www.w3.org/TR/2002/REC-xmldsig-core-20020212/#sec-Manifest" target="_blank">Manifests nach XMLDSig</a>. Bitte beachten Sie, dass der dargestellte Request zur bessernen Lesbarkeit eingerückt und gekürzt wurde.</p> -<pre> -<VerifyXMLSignatureRequest - xmlns="http://reference.e-government.gv.at/namespace/moa/20020822#" - xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"> - <VerifySignatureInfo> - <VerifySignatureEnvironment> - <XMLContent> - <dsig:Signature xmlns:dsig="http://www.w3.org/2000/09/xmldsig#" Id="signature-1-1"> - <dsig:SignedInfo> - <dsig:CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/> - <dsig:SignatureMethod - Algorithm="http://www.w3.org/2001/04/xmldsig-more#ecdsa-sha1"/> - <dsig:Reference Type="http://www.w3.org/2000/09/xmldsig#Manifest" URI="#dsig-manifest-1-1"> - <dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/> - <dsig:DigestValue>nUUaW6OtcsNvV/QhqmkU2QXT1Mw=</dsig:DigestValue> - </dsig:Reference> - </dsig:SignedInfo> - <dsig:SignatureValue>315gCwZI...OXFwr+</dsig:SignatureValue> - <dsig:KeyInfo>...</dsig:KeyInfo> - <dsig:Object Id="signed-data-1-1-1">Diese Daten sind signiert.</dsig:Object> - <dsig:Object> - <dsig:Manifest Id="dsig-manifest-1-1"> - <dsig:Reference Id="reference-1-1" URI="#xpointer(id('signed-data-1-1-1')/node())"> - <dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/> - <dsig:DigestValue>EYxznGxNRAIcHQeUsj+zsK+uaHA=</dsig:DigestValue> - </dsig:Reference> - </dsig:Manifest> - </dsig:Object> - </dsig:Signature> - </XMLContent> - </VerifySignatureEnvironment> -</pre> -<p>Das Element <code>VerifySignatureEnvironment</code> enthält als <code>XMLContent</code> die zu prüfende XML-Signatur. Man erkennt, dass sich die einzige <code>dsig:Reference</code> im <code>dsig:SignedInfo</code> der XML-Signatur auf ein Manifest nach XMLDSig bezieht (erkennbar am Attribut <code>Type</code>, das auf den Wert <code>http://www.w3.org/2000/09/xmldsig#Manifest</code> gesetzt ist). Im Response (siehe unten) werden wir deshalb ein eigenes Resultat für die Manifest-Prüfung erhalten.</p> -<p>Das Manifest selbst ist in einem <code>dsig:Object</code>, also innerhalb der XML-Struktur der XML-Signatur kodiert. Es enthält eine <code>dsig:Reference</code>, welche sich auf die Zeichenkette <code>Diese Daten sind signiert.</code> bezieht.</p> -<pre> - <VerifySignatureLocation>//dsig:Signature</VerifySignatureLocation> - </VerifySignatureInfo> - <TrustProfileID>Test-Signaturdienste</TrustProfileID> -</VerifyXMLSignatureRequest> -</pre> -<p>Das Element <code>VerifySignatureLocation</code> wählt die zu prüfende Signatur innerhalb des in <code>VerifySignatureEnvironment</code> angegebenen XML-Dokuments aus. Das Element <code>TrustProfileID</code> wählt das Vertrauensprofil aus, gegen das die Zertifikatsprüfung durchgeführt werden soll. </p> -<h5>Response</h5> -<p><code><a href="../../clients/webservice/resources/requests/VerifyXMLSignatureRequest.XMLDSigManifest.resp.xml" target="_blank">VerifyXMLSignatureRequest.XMLDSigManifest.resp.xml</a></code> ist eine typische Response des SP Webservices auf den obigen Request. Sein Aufbau wird nachfolgend analysiert. Bitte beachten Sie, dass die dargestellte Response zur bessernen Lesbarkeit eingerückt und gekürzt wurde.</p> -<pre> -<VerifyXMLSignatureResponse - xmlns="http://reference.e-government.gv.at/namespace/moa/20020822#" - xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"> - <SignerInfo> - <dsig:X509Data>...</dsig:X509Data> - </SignerInfo> - <SignatureCheck> - <Code>0</Code> - </SignatureCheck> -</pre> -<p>Die Response enthält zunächst in <code>SignerInfo/dsig:X509Data</code> Informationen über den Signator, die aus dem in der XML-Signatur enthaltenen Signatorzertifikat entnommen sind (siehe <a href="#webservice_xmlrequests_pruefungxml_einfach">Einfaches Beispiel</a>). Das Element<code> SignatureCheck</code> enthält das Resultat der kryptographischen Prüfung der Signatur (siehe <a href="#webservice_xmlrequests_pruefungxml_einfach">Einfaches Beispiel</a>).</p> -<pre> - <XMLDSIGManifestCheck> - <Code>0</Code> - <Info> - <ReferringSigReference>1</ReferringSigReference> - </Info> - </XMLDSIGManifestCheck> -</pre> -<p>Neu ist in dieser Response das an <code>SignatureCheck</code> anschließende Element <code>XMLDSIGManifestCheck</code>. Ein oder mehrere solche Elemente werden immer dann zurückgeliefert, wenn in <code>dsig:SignedInfo</code> der XML-Signatur <code>dsig:Reference</code> Elemente existieren, die sich auf ein Manifest nach XMLDSIG beziehen (siehe oben). Je solcher <code>dsig:Reference</code> enthält die Antwort ein korrespondierendes Element <code>XMLDSIGManifestCheck</code>, im konkreten Beispiel als eines.</p> -<p>Das Element <code>Code</code> gibt das Ergebnis der durchgeführten Prüfung des XMLDSIG-Manifests an. In diesem Fall bedeutet <code>0</code>, dass die Prüfung jeder <code>dsig:Reference </code>im <code>dsig:Manifest</code> (im konkreten Beispiel also genau einer <code>dsig:Reference</code>) erfolgreich durchgeführt werden konnte. Für eine Übersicht der möglichen Kodes siehe <a href="#sl"> Security-Layer Spezifikation</a>.</p> -<p>Das Element <code>Info/ReferringSigReference</code> enthält als Textinhalt die Nummer jenes <code>dsig:Reference</code> Elements in <code>dsig:SignedInfo</code> der XML-Signatur, welches auf das untersuchte Manifest nach XMLDSIG verweist, wobei mit <code>1</code> zu zählen begonnen wird.</p> -<pre> - <CertificateCheck> - <Code>0</Code> - </CertificateCheck> -</VerifyXMLSignatureResponse> -</pre> -<p>Das Element<code> CertificateCheck</code> enthält das Resultat der Zertifikatsprüfung (siehe <a href="#webservice_xmlrequests_pruefungxml_einfach">Einfaches Beispiel</a>).</p> -<h4><a name="webservice_xmlrequests_pruefungxml_ergaenzungsobjekte"></a>2.1.4.4 Ergänzungsobjekte </h4> -<p>Dieses Beispiel zur Prüfung einer XML-Signatur (<a href="../../clients/webservice/resources/requests/VerifyXMLSignatureRequest.Supplements.xml" target="_blank"><code>VerifyXMLSignatureRequest.Supplements.xml</code></a>) demonstriert die Verwendung von Ergänzungsobjekten. Ein Ergänzungsobjekt betrifft entweder ein signiertes Datum (Zusammenhang mit einem <code>dsig:Reference</code> der XML-Signatur) oder jenes Dokument, in dem sich die zu prüfende XML-Signatur befindet (Zusammenhang mit <code>VerifySignatureEnvironment</code>). Es muss dann angegeben werden, wenn auf ein signiertes Datum bzw. in einem signierten Datum bzw. in dem die XML-Signatur enthaltenden XML-Dokument auf weitere Daten per Referenz verwiesen wird, diese Referenz aber von MOA SP nicht aufgelöst werden kann. Das Ergänzungsobjekt enthält dann genau diese Daten die nicht von MOA SS aufgelöst werden können.</p> -<p>Bitte beachten Sie, dass der dargestellte Request zur bessernen Lesbarkeit eingerückt und gekürzt wurde.</p> -<pre> -<VerifyXMLSignatureRequest xmlns="http://reference.e-government.gv.at/namespace/moa/20020822#"> - <VerifySignatureInfo> - <VerifySignatureEnvironment> - <XMLContent> - <doc:XMLDocument ... xsi:schemaLocation="urn:document urn:XMLDocument.xsd"> - <doc:Paragraph>Ich bin der erste Absatz in diesem Dokument.</doc:Paragraph> - <doc:Paragraph ParaId="Para2">Und ich bin der zweite Absatz in diesem Dokument. -Ich habe weiters ein eigenens ID-Attribut bekommen.</doc:Paragraph> - <dsig:Signature Id="signature-1-1" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"> - <dsig:SignedInfo> - ... - <dsig:Reference Id="reference-1-1" URI="#Para2"> - <dsig:Transforms> - <dsig:Transform Algorithm="http://www.w3.org/TR/1999/REC-xslt-19991116"> - <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> - <xsl:include href="XMLDocument.Para.xsl"/> - </xsl:stylesheet> - </dsig:Transform> - <dsig:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/> - </dsig:Transforms> - ... - </dsig:Reference> - </dsig:SignedInfo> - <dsig:SignatureValue>5rXIIkbP/djWmTgQEICy...0Sf8jvnz+d</dsig:SignatureValue> - <dsig:KeyInfo>...</dsig:KeyInfo> - </dsig:Signature> - </doc:XMLDocument> - </XMLContent> - </VerifySignatureEnvironment> -</pre> -<p>Das Element <code>VerifySignatureEnvironment</code> enthält das XML-Dokument mit der zu prüfenden XML-Signatur. </p> -<p>Man erkennt, dass das Attribut <code>dsig:Reference/@URI</code> das Element<code> doc:Paragraph</code> mit dem auf den Wert <code>Para2</code> gesetzten ID-Attribut <code>ParaId</code> referenziert. MOA kann jedoch den Umstand, dass es sich bei <code>doc:Paragraph/@ParaId</code> um ein ID-Attribut handelt, nur dann erkennen, wenn es das XML-Dokument validierend parst. Der dazu nötige Verweis auf das passende XML-Schema ist zwar mit dem Attribut <code>xsi:schemaLocation</code> vorhanden, jedoch handelt es sich dabei mit <code>urn:XMLDocument.xsd</code> um eine nicht auflösbare Referenz. Deshalb wird im Request ein passendes Ergänzungsobjekt benötigt (siehe unten).</p> -<p>Weiters erkennt man, dass <code>dsig:Reference</code> ein XSLT-Transformation enthält. Im darin kodierten Stylesheet-Parameter (<code>dsig:Transform/xsl:stylesheet</code>) wird ein weiterer Stylesheet inkludiert (<code>XMLDocument.Para.xsl</code>). Diese Referenz ist aber wiederum für MOA SP nicht auflösbar. Auch hier wird also ein passendes Ergänzungsobjekt benötigt (siehe unten). </p> -<pre> - <VerifySignatureLocation xmlns:doc="urn:document" - xmlns:dsig="http://www.w3.org/2000/09/xmldsig#">/doc:XMLDocument/dsig:Signature</VerifySignatureLocation> - </VerifySignatureInfo> -</pre> -<p>Das Element <code>VerifySignatureLocation</code> wählt die zu prüfende Signatur innerhalb des in <code>VerifySignatureEnvironment</code> angegebenen XML-Dokuments aus.</p> -<pre> - <SupplementProfile> - <Content Reference="XMLDocument.Para.xsl"> - <LocRefContent>http://localhost:8080/referencedData/XMLDocument.Para.xsl</LocRefContent> - </Content> - </SupplementProfile> -</pre> -<p>Das erste Element <code>SupplementProfile</code> enthält nun das Ergänzungsobjekt für den oben beschriebenen inkludierten Stylesheet. <code>Content/@Reference</code> enthält die Referenz genau so, wie sie oben im Attribut <code>xsl:stylesheet/@href</code> angegeben wurde. Im Inhalt von <code>Content</code> werden entweder explizit jene Daten angegeben, die von MOA statt des Auflösens der Referenz verwendet werden sollen (<code>Base64Content</code> oder<code> XMLContent</code>), oder aber es wird - wie im konkreten Beispiel - <code></code>mit <code>LocRefContent</code> eine auflösbare Referenz für diese Daten an MOA SP übergeben. </p> -<pre> - <SupplementProfile> - <Content Reference="urn:XMLDocument.xsd"> - <XMLContent> - <xs:schema targetNamespace="urn:document" xmlns:xs="http://www.w3.org/2001/XMLSchema" - xmlns="urn:document" elementFormDefault="qualified" attributeFormDefault="unqualified"> - ... - </xs:schema> - </XMLContent> - </Content> - </SupplementProfile> - <TrustProfileID>Test-Signaturdienste</TrustProfileID> -</VerifyXMLSignatureRequest> -</pre> -<p>Das zweite Element <code>SupplementProfile</code> enthält analog das Ergänzungsobjekt für das oben beschriebene XML-Schema. <code>Content/@Reference</code> enthält die Referenz genau so, wie sie oben im Attribut <code>xsi:schemaLocation</code> angegeben wurde. </p> -<h5>Response</h5> -<p><code><a href="../../clients/webservice/resources/requests/VerifyXMLSignatureRequest.Supplements.resp.xml" target="_blank">VerifyXMLSignatureRequest.Supplements.resp.xml</a></code> ist eine typische Response des SP Webservices auf den obigen Request. Er wird an dieser Stelle nicht näher analysiert, da er keine für das Thema des Beispiels relevanten Besonderheiten aufweist.</p> -<h4><a name="webservice_xmlrequests_pruefungxml_signaturmanifest" id="webservice_xmlrequests_pruefungxml_signaturmanifest"></a>2.1.4.5 Signatur-Manifest des Security-Layers </h4> -<h5>Request</h5> -<p>Dieses Beispiel zur Prüfung einer XML-Signatur (<a href="../../clients/webservice/resources/requests/VerifyXMLSignatureRequest.SigManifest.xml" target="_blank"><code>VerifyXMLSignatureRequest.SigManifest.xml</code></a>) demonstriert die Überprüfung des Zusammenhangs zwischen den <a href="http://www.buergerkarte.at/konzept/securitylayer/spezifikation/20040514/core/Core.html#glossar_Referenz-Eingangsdaten" target="_blank">Referenz-Eingangsdaten</a> und den <a href="http://www.buergerkarte.at/konzept/securitylayer/spezifikation/20040514/core/Core.html#glossar_Hash-Eingangsdaten" target="_blank">Hash-Eingangsdaten</a> für die <code>dsig:Reference</code>-Elemente einer XML-Signatur. Mit Hilfe dieser Prüfung kann eine Anwendung feststellen, ob bei der Erstellung einer XML-Signatur jene Transformationen bzw. auch jene inkludierten Stylesheets (vgl. <a href="http://www.buergerkarte.at/konzept/securitylayer/spezifikation/20040514/core/Core.html#signaturerstellungNachXMLDSIGAntwortImplTransParam" target="_blank">Implizite Transformationsparameter</a>) einer XSLT-Transformation angewendet wurden, welche die Anwendung vorgegeben hat. Bei erfolgreicher Prüfung dieses Zusammenhangs kann die Anwendung die Referenz-Eingangsdaten einer <code>dsig:Reference</code> als gesichert ansehen, obwohl eigentlich die Hash-Eingangsdaten durch die Signatur gesichert sind. Dies ist jenen Fällen sinnvoll, in denen die Anwendung grundsätzlich mit XML-Daten arbeitet, diese Daten jedoch für das Signieren durch eine Person in ein für diese Person verständliches Format wie z.B. HTML umgewandelt werden sollen.</p> -<pre> -<VerifyXMLSignatureRequest - xmlns="http://reference.e-government.gv.at/namespace/moa/20020822#" - xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"> - <VerifySignatureInfo> - <VerifySignatureEnvironment> - <XMLContent> - <doc:XMLDocument xmlns:doc="urn:document" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:schemaLocation="urn:document http://localhost:8080/referencedData/XMLDocument.xsd"> - <doc:Paragraph>Ich bin der erste Absatz in diesem Dokument.</doc:Paragraph> - <doc:Paragraph ParaId="Para2">Und ich bin der zweite Absatz in diesem Dokument. -Ich habe weiters ein eigenens ID-Attribut bekommen.</doc:Paragraph> - <dsig:Signature xmlns:dsig="http://www.w3.org/2000/09/xmldsig#" Id="signature-1-1"> - <dsig:SignedInfo> - ... - <dsig:Reference Id="reference-1-1" URI="#Para2"> - <dsig:Transforms> - <dsig:Transform Algorithm="http://www.w3.org/TR/1999/REC-xslt-19991116"> - <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> - <xsl:include href="http://localhost:8080/referencedData/XMLDocument.Para.xsl"/> - </xsl:stylesheet> - </dsig:Transform> - <dsig:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/> - </dsig:Transforms> - ... - </dsig:Reference> - <dsig:Reference - Type="http://www.buergerkarte.at/specifications/Security-Layer/20020225#SignatureManifest" - URI="#manifest-1-1"> - ... - </dsig:Reference> - <dsig:Reference Type="http://uri.etsi.org/01903/v1.1.1#SignedProperties" ...>...</dsig:Reference> - </dsig:SignedInfo> - <dsig:SignatureValue>jnXc/X+hUY...uBxo9q</dsig:SignatureValue> - <dsig:KeyInfo>...</dsig:KeyInfo> - <dsig:Object> - <dsig:Manifest Id="manifest-1-1"> - <dsig:Reference URI="http://localhost:8080/referencedData/XMLDocument.Para.xsl"> - ... - </dsig:Reference> - </dsig:Manifest> - </dsig:Object> - <dsig:Object Id="etsi-signed-1-1"> - <etsi:QualifyingProperties Target="#signature-1-1" xmlns:etsi="http://uri.etsi.org/01903/v1.1.1#"> - ... - </etsi:QualifyingProperties> - </dsig:Object> - </dsig:Signature> - </doc:XMLDocument> - </XMLContent> - </VerifySignatureEnvironment> -</pre> -<p>Das Element <code>VerifySignatureEnvironment</code> enthält das XML-Dokument mit der zu prüfenden XML-Signatur. Die XML-Signatur wurde von einer Bürgerkarten-Umgebung erstellt. Man erkennt, dass das Element <code>dsig:SignedInfo</code> der XML-Signatur drei <code>dsig:Reference</code>-Elemente enthält. </p> -<p>Die erste <code>dsig:Reference</code> bezieht sich auf die eigentlich signierten Nutzdaten. Das zweite <code>doc:Paragraph</code>-Element stellt die Referenz-Eingangsdaten für diese <code>dsig:Reference</code> dar, welche mit Hilfe einer XSLT-Transformation in ein kleines HTML-Dokument übergeführt wird, worüber dann der Hashwert der dsig:Reference gebildet wird (Hash-Eingangsdaten).</p> -<p>Die zweite <code>dsig:Reference</code> bezieht sich auf das von der Bürgerkarten-Umgebung angefertigte Signaturmanifest. Das Signaturmanifest ist vorhanden, weil die XSLT-Transformation der ersten <code>dsig:Reference</code> einen weiteren Stylesheet inkludiert, und die Daten dieses weiteren Stylesheets ansonsten nicht von der XML-Signatur abgedeckt wären (vgl. <a href="http://www.buergerkarte.at/konzept/securitylayer/spezifikation/20040514/core/Core.html#signaturerstellungNachXMLDSIGAntwortImplTransParam" target="_blank">Implizite Transformationsparameter</a>). Das Signaturmanifest enthält eine einzige <code>dsig:Reference</code>, die den inkludierten Stylesheet referenziert und so in die XML-Signatur einbindet.</p> -<p>Die dritte <code>dsig:Reference</code> bezieht sich auf die von der Bürgerkarten-Umgebung angefertigten Signatureigenschaften, die hier nicht näher betrachtet werden. </p> -<pre> - <VerifySignatureLocation xmlns:doc="urn:document">/doc:XMLDocument/dsig:Signature</VerifySignatureLocation> - </VerifySignatureInfo> -</pre> -<p>Das Element <code>VerifySignatureLocation</code> wählt die zu prüfende Signatur innerhalb des in <code>VerifySignatureEnvironment</code> angegebenen XML-Dokuments aus.</p> -<pre> - <SignatureManifestCheckParams ReturnReferenceInputData="true"> - <ReferenceInfo> - <VerifyTransformsInfoProfile> - <dsig:Transforms> - <dsig:Transform Algorithm="http://www.w3.org/TR/1999/REC-xslt-19991116"> - <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> - <xsl:include href="http://localhost:8080/referencedData/XMLDocument.Para.xsl"/> - </xsl:stylesheet> - </dsig:Transform> - <dsig:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/> - </dsig:Transforms> - <TransformParameter URI="http://localhost:8080/referencedData/XMLDocument.Para.xsl"/> - </VerifyTransformsInfoProfile> - <VerifyTransformsInfoProfile> - <dsig:Transforms> - <dsig:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/> - </dsig:Transforms> - </VerifyTransformsInfoProfile> - </ReferenceInfo> - </SignatureManifestCheckParams> - <TrustProfileID>Test-Signaturdienste</TrustProfileID> -</VerifyXMLSignatureRequest> -</pre> -<p>Mit Angabe des optionalen Elements <code>SignatureManifestCheckParams</code> wird MOA SP angewiesen, den oben skizzierten Zusammenhang zwischen Referenz-Eingangsdaten und Hash-Eingangsdaten zu überprüfen. Wird das Attribut <code>ReturnReferenceInputData</code> wie im Beispiel auf den Wert <code>true</code> gesetzt, liefert MOA SP in der Response die Hash-Eingangsdaten für alle Referenzen in <code>dsig:SignedInfo</code> der XML-Signatur an die Anwendung zurück, was in der Regel von der Anwendung wohl gewünscht wird, wenn MOA SP schon den Zusammenhang zwischen Referenz-Eingangsdaten und Hash-Eingangsdaten prüfen soll.</p> -<p>Die Prüfung des Zusammenhangs untergliedert sich in zwei Teilprüfungen:</p> -<ul> - <li>Überprüfung, ob jede <code>dsig:Reference</code> in <code>dsig:SignedInfo</code> der Signatur eine vorgegebene Transformationskette inkludiert;</li> - <li>Überprüfung, ob die in der vorgegebenen Transformationskette ggf. enthaltenen inkludierten Stylesheets (implizite Transformationsparameter) durch ein Signaturmanifest mitsigniert sind.</li> -</ul> -<p>Damit MOA SP die erste Teilprüfung durchführen kann, muss in <code>SignatureManifestCheckParams</code> je <code>dsig:Reference</code> Element in <code>dsig:SignedInfo</code> der XML-Signatur ein Element <code>ReferenceInfo</code> angeben. Ausgenommen sind <code>dsig:Reference</code>-Elemente, die auf ein Signaturmanifest (Attribut <code>Type</code> ist gesetzt und hat den Wert <code>http://www.buergerkarte.at/specifications/Security-Layer/20020225#SignatureManifest</code>), auf ein XMLDSIG-Manifest (Attribut <code>Type</code> ist gesetzt und hat den Wert <code>http://www.w3.org/2000/09/xmldsig#Manifest</code>) oder auf Signatureigenschaften (Attribut <code>Type</code> ist gesetzt und hat den Wert <code>http://uri.etsi.org/01903/v1.1.1#SignedProperties</code>) verweisen. </p> -<p>Das Element <code>ReferenceInfo</code> enthält eine oder mehrere erlaubte Transformationsketten, die jeweils durch ein Element <code>VerifyTransformsInfoProfile/dsig:Transforms</code> repräsentiert werden. Im konkreten Beispiel werden für die einzige zu prüfende <code>dsig:Reference</code> zwei erlaubte Transformationsketten angegeben. Die Transformationen in der <code>dsig:Reference</code> müssen einer dieser beiden Ketten entsprechen; im konkreten Beispiel entsprechen sie der ersten. </p> -<p>Nachdem die erste erlaubte Transformationskette eine XSLT-Transformation mit einem inkludierten Stylesheet enthält, muss MOA SP auch überprüfen, ob dieser inkludierte Stylesheet korrekt durch ein Signaturmanifest mitunterschrieben wurde. Nachdem wichtig ist, dass nicht irgendein beliebiger Stylesheet verwendet und mitunterschrieben wurde, sondern genau jener, den die Anwendung bei der Signaturerstellung vorgegeben hat, muss die Anwendung MOA SP mitteilen, welcher Stylesheet das sein muss. Die Anwendung verwendet dazu das Element <code>VerifyTransformsInfoProfile/TransformParameter</code>. Das Attribut <code>TransformParameter/@URI</code> enthält die Referenz auf den Stylesheet genau so, wie er im Stylesheet-Parameter der zu prüfenden Signatur verwendet wird (<code>dsig:Transform/xsl:stylesheet/xsl:inlcude/@href</code>). Für den Inhalt dieses Elements hat die Anwendung drei Möglichkeiten: </p> -<ul> - <li>Die Anwendung lässt den Inhalt leer. Dies wird sie dann machen, wenn sie darauf vertrauen kann, dass die Auflösung der in <code>TransformParameter/@URI</code> angegebenen Referenz bei der Signaturprüfung zum gleichen Resultat führt wie seinerzeit beim Erstellen der Signatur (z.B. weil die Referenz auf einen Webserver unter Kontrolle der Anwendung zeigt);</li> - <li>Die Anwendung gibt im Element <code>TransformParameter/Base64Content</code> explizit den inkludierten Stylesheet an. MOA SP verwendet dann diesen Stylesheet, um den Hashwert der <code>dsig:Reference</code> im Signaturmanifest zu kontrollieren;</li> - <li>Die Anwendung gibt im Element <code>TransformParameter/Hash </code>den Hashwert des inkludierten Stylesheets an. MOA SP löst dann die Referenz in <code>dsig:Transform/xsl:stylesheet/xsl:inlcude/@href</code> auf und stellt sicher, dass der über das Auflösungsergebnis gebildete Hashwert jenem in <code>TransformParameter/Hash </code>entspricht. Diese Möglichkeit wird die Anwendung dann verwenden, wenn es sich um einen sehr umfangreichen Stylesheet handelt, der nicht im Request mitübertragen werden soll.</li> -</ul> -<h5>Response</h5> -<p><code><a href="../../clients/webservice/resources/requests/VerifyXMLSignatureRequest.SigManifest.resp.xml" target="_blank">VerifyXMLSignatureRequest.SigManifest.resp.xml</a></code> ist eine typische Response des SP Webservices auf den obigen Request. Sein Aufbau wird nachfolgend analysiert. Bitte beachten Sie, dass die dargestellte Response zur bessernen Lesbarkeit eingerückt und gekürzt wurde. </p> -<pre> -<VerifyXMLSignatureResponse - xmlns="http://reference.e-government.gv.at/namespace/moa/20020822#" - xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"> - <SignerInfo>...</SignerInfo> -</pre> -<p>Die Response enthält zunächst in <code>SignerInfo/dsig:X509Data</code> Informationen über den Signator, die aus dem in der XML-Signatur enthaltenen Signatorzertifikat entnommen sind (siehe <a href="#webservice_xmlrequests_pruefungxml_einfach">Einfaches Beispiel</a>). </p> -<pre> - <ReferenceInputData PartOf="SignedInfo"> - <XMLContent xml:space="preserve"> - <doc:Paragraph ParaId="Para2" xmlns:doc="urn:document" - xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">...</doc:Paragraph> - </XMLContent> - </ReferenceInputData> - <ReferenceInputData PartOf="SignedInfo"> - <XMLContent xml:space="preserve"> - <dsig:Manifest Id="manifest-1-1" xmlns:doc="urn:document" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> - ... - </dsig:Manifest> - </XMLContent> - </ReferenceInputData> - <ReferenceInputData PartOf="SignedInfo"> - <XMLContent xml:space="preserve"> - <etsi:SignedProperties xmlns:doc="urn:document" - xmlns:etsi="http://uri.etsi.org/01903/v1.1.1#" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> - ... - </etsi:SignedProperties> - </XMLContent> - </ReferenceInputData> -</pre> -<p>Nachdem im Request spezifiziert wurde, dass in der Response die Referenzeingangsdaten für alle <code>dsig:Reference</code>-Elemente - von <code>dsig:SignedInfo</code> (bzw. auch für jede <code>dsig:Reference</code> aus einem <code>dsig:Manifest</code>, - auf das mittels des Attributs <code>Type="http://www.w3.org/2000/09/xmldsig#Manifest"</code> in einer <code>dsig:Reference</code> aus <code>dsig:SignedInfo</code> verwiesen - wird; solche Manifeste kommen aber in diesem Beispiel nicht vor) der geprüften - XML-Signatur übermittelt - werden sollen, enthält - die Response nach <code>SignerInfo</code> drei <code>ReferenceInputData</code>-Elemente. Das erste <code>ReferenceInputData</code>-Element - enthält das zuvor besprochene <code>doc:Paragraph</code> Element, das zweite das Signaturmanifest, das - dritte die Signatureigenschaften. Das Attribut <code>PartOf</code> jedes Elements weist mit dem Wert <code>SignedInfo</code> darauf hin, - dass die <code>dsig:Reference</code>, für welche die Referenzeingangsdaten gelten, Teil von <code>dsig:SignedInfo</code> ist. </p> -<pre> - <SignatureCheck> - <Code>0</Code> - </SignatureCheck> -</pre> -<p>Das Element<code> SignatureCheck</code> enthält das Resultat der kryptographischen Prüfung der Signatur (siehe <a href="#webservice_xmlrequests_pruefungxml_einfach">Einfaches Beispiel</a>).</p> -<pre> - <SignatureManifestCheck> - <Code>0</Code> - </SignatureManifestCheck> -</pre> -<p>Das Element <code>SignatureManifestCheck</code> enhält das Resultat der Prüfung des Zusammenhangs zwischen Referenz-Eingangsdaten und Hash-Eingangsdaten. Der Kode <code>0</code> im konkreten Beispiel bedeutet, dass alle Referenzen die in der Anfrage zur Überprüfung der XML-Signatur gemachten Einschränkungen bezüglich der erlaubten Transformationskette(n) einhalten, sowie dass die Anforderungen hinsichtlich des Signaturmanifests werden eingehalten. Für eine Übersicht der möglichen Kodes siehe die <a href="../spec/MOA-SPSS-2.0.0.pdf" target="_blank">Spezifikation zu MOA SP/SS</a>, Abschnitt 5.1.3.1.4.</p> -<pre> - <CertificateCheck> - <Code>0</Code> - </CertificateCheck> -</VerifyXMLSignatureResponse> -</pre> -<p>Das Element<code> CertificateCheck</code> enthält das Resultat der Zertifikatsprüfung (siehe <a href="#webservice_xmlrequests_pruefungxml_einfach">Einfaches Beispiel</a>).</p> -<!-- TSL --> -<h4><a name="webservice_xmlrequests_pruefungxml_tsl"></a>2.1.4.6 Prüfung gegen Trustprofil mit TSL Unterstützung</h4> -<h5>Request</h5> -<p><code><a href="../../clients/webservice/resources/requests/VerifyXMLSignatureRequest.TSL.xml" target="_blank">VerifyXMLSignatureRequest.TSL.xml</a></code> ist ein einfacher XML-Request zur Prüfung einer XML-Signatur. Sein Aufbau wird nachfolgend analysiert. Bitte beachten Sie, dass der dargestellte Request zur bessernen Lesbarkeit eingerückt und gekürzt wurde.</p> -<pre> -<VerifyXMLSignatureRequest xmlns="http://reference.e-government.gv.at/namespace/moa/20020822#"> - <VerifySignatureInfo> - <VerifySignatureEnvironment> - <XMLContent> - <dsig:Signature Id="signature-1-1" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"> - [..] - </dsig:Signature> - </XMLContent> - </VerifySignatureEnvironment> -</pre> -<p>Das Element <code>VerifySignatureEnvironment</code> enthält jenes XML-Dokument, das die zu prüfende XML-Signatur enthält. </p> -<pre> - <VerifySignatureLocation - xmlns:dsig="http://www.w3.org/2000/09/xmldsig#">//dsig:Signature</VerifySignatureLocation> - </VerifySignatureInfo> -</pre> -<p>Das Element <code>VerifySignatureLocation</code> enthält als Text den XPath-Ausdruck zur Selektion der XML-Signatur innerhalb des zu prüfenden XML-Dokuments. Die Auswertung des XPath-Ausdrucks muss genau ein Element <code>dsig:Signature</code> ergeben. Bitte beachten Sie, dass im Kontext des Elements <code>VerifySignatureLocation</code> alle im XPath-Ausdruck verwendeten Namespace-Präfixe bekannt sein müssen (hier das Präfix <code>dsig</code>). </p> -<pre> - <TrustProfileID>Test-TSLProfil</TrustProfileID> -</VerifyXMLSignatureRequest> -</pre> -<p>Das Element <code>TrustProfileID</code> schließlich enthält den Bezeichner des Vertrauensprofils, gegen das die Zertifikatsprüfung von MOA SP durchgeführt wird. In diesem Falle muss für das Vertrauenprofil die TSL Unterstützung aktiviert sein. In der beispielhaften Konfiguration <a href="../../../conf/moa-spss/sp.minimum_with_tsl.config.xml" target="_blank">sp.minimum_with_tsl.config.xml</a> ist so eine Vertrauensprofile mit der ID Test-TSLProfil eingerichtet.</p> -<h5>Response</h5> -<p><code><a href="../../clients/webservice/resources/requests/VerifyXMLSignatureRequest.TSL.resp.xml" target="_blank">VerifyXMLSignatureRequest.TSL.resp.xml</a></code> ist eine typische Response des SP Webservices auf den obigen Request. Sein Aufbau wird nachfolgend analysiert. Bitte beachten Sie, dass die dargestellte Response zur bessernen Lesbarkeit eingerückt und gekürzt wurde.</p> -<pre> -<VerifyXMLSignatureResponse - xmlns="http://reference.e-government.gv.at/namespace/moa/20020822#" - xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"> - <SignerInfo> - <dsig:X509Data> - <dsig:X509SubjectName>T=DI,serialNumber=847206943023,givenName=Klaus,SN=Stranacher, - CN=Klaus Stranacher,C=AT</dsig:X509SubjectName> - <dsig:X509IssuerSerial> - <dsig:X509IssuerName>CN=a-sign-premium-mobile-03,OU=a-sign-premium-mobile-03, - O=A-Trust Ges. f. Sicherheitssysteme im elektr. Datenverkehr GmbH,C=AT</dsig:X509IssuerName> - <dsig:X509SerialNumber>685117</dsig:X509SerialNumber> - </dsig:X509IssuerSerial> - <dsig:X509Certificate>...</dsig:X509Certificate> - <QualifiedCertificate/><br> <SecureSignatureCreationDevice Source="Certificate"/><br> <IssuerCountryCode>AT</IssuerCountryCode><br> </dsig:X509Data> - </SignerInfo> -</pre> -<p>Die Response enthält zunächst in <code>SignerInfo/dsig:X509Data</code> Informationen über den Signator, die aus dem in der XML-Signatur enthaltenen Signatorzertifikat entnommen sind. </p> -<p><code>dsig:X509SubjectName</code> ist immer vorhanden und enthält den Namen des Signators. <code>dsig:X509IssuerSerial</code> ist ebenfalls immer vorhanden und enthält den Namen des Austellers des Signatorzertifikats (<code>dsig:X509IssuerName</code>) sowie die Seriennummer des Zertifikats (<code>dsig:X509SerialNumber</code>). Auch <code>dsig:X509Certificate</code> ist ist immer vorhanden und enthält das Signatorzertifikat in base64 kodierter Form. </p> -<p>Optional vorhanden ist das inhaltslose Element <code>QualifiedCertificate</code>, und zwar dann, wenn es sich beim Signatorzertifikat um ein qualifiziertes Zertifikat handelt. Optional vorhanden ist das Element <code>SecureSignatureCreationDevice</code>, und zwar dann wenn die Signatur mittels einer sicheren Signaturerstellungseinheit erzeugt wurde. Das Attribut <code>Source</code>, gibt dabei an ob diese Information über die entsprechende TSL (<code>Source=TSL</code>) oder über das Zertifikat ermittelt wurde (<code>Source=Certificate</code>). Das weitere optionale Element <code>IssuerCountryCode</code> gibt dabei den Ländercode des Zertifizierungsdiensteanbieters an, der das Signaturzertifikat ausgestellt hat. Ebenfalls optional vorhanden (nicht in diesem Beispiel) ist schließlich das Element <code>PublicAuthority</code>, und zwar dann, wenn das Signatorzertifikat die österreichspezifische Zertifikatserweiterung <a href="http://www.digitales.oesterreich.gv.at/site/cob__28513/5580/default.aspx" target="_blank">Verwaltungseigenschaft</a> aufweist. Ist in dieser Zertifikatserweiterung das Verwaltungskennzeichen mitkodiert, wird dieses Kennzeichen als Textinhalt des optionalen Elements <code>PublicAuthority/Code</code> geliefert.</p> -<pre> - <SignatureCheck> - <Code>0</Code> - </SignatureCheck> -</pre> -<p> Anschließend an <code>SignerInfo</code> enthält die Response mit <code>SignatureCheck/Code</code> das Resultat der kryptographischen Prüfung der Signatur. In unserem Beispiel ist dort der Wert <code>0</code> enthalten, d. h. die Signatur konnte erfolgreich validiert werden. Für eine Übersicht der möglichen Kodes siehe <a href="#sl"> Security-Layer Spezifikation</a>.</p> -<pre> - <CertificateCheck> - <Code>0</Code> - </CertificateCheck> -</pre> -<p>Abschließend enthält die Response mit <code>CertificateCheck/Code</code> das Resultat der Prüfung des Signatorzertifikats. Zunächst prüft MOA SP, ob ausgehend vom Signatorzertifikat eine Zertifikatskette zu einem im zugehörigen Vertrauensprofil konfigurierten sog. <span class="term">Trust Anchor</span> gebildet werden kann. Gelingt dies, wird die Gültigkeit jedes Zertifikats dieser Kette überprüft. In unserem Beispiel enthält <code>Code</code> den Wert <code>0</code>, d. h. MOA SP konnte die Kette bilden, und alle Zertifikate der Kette sind gültig. Für eine Übersicht der möglichen Kodes siehe <a href="#sl"> Security-Layer Spezifikation</a>.</p> - -<!-- TSL --> -<h2><a name="webservice_clients" id="webservice_clients"></a>2.2 Webservice-Clients</h2> -<p><a href="#webservice_xmlrequests">Abschnitt 2.1</a> bespricht eine Reihe von typischen XML-Requests, die über die Webservice-Schnittstelle an MOA SP/SS gesendet werden können, um entweder Signaturen zu erstellen (MOA SS) oder Signaturen zu prüfen (MOA SP). Dieser Abschnitt zeigt die Verwendung des prototypischen Webservice-Clients, der mit dieser Dokumentation zu MOA SP/SS ausgeliefert wird.</p> -<h3><a name="webservice_clients_übersicht" id="webservice_clients_übersicht"></a>2.2.1 Übersicht</h3> -<p>Der Webservice-Client existiert in drei Varianten, wobei jede Variante in einer eigenen Java-Klasse implementiert ist:</p> -<ul> - <li>Der einfache Client (<code><a href="../../clients/webservice/src/main/java/at/gv/egovernment/moa/spss/handbook/clients/webservice/HTTP.java">HTTP.java</a></code>) arbeitet ohne Authentifikation. Er prüft weder die Authentizität des verwendeten MOA-Webservices, noch identifiziert er sich selbst gegenüber dem MOA-Webservice.</li> - <li>Der Client mit Server-Authentisierung (<code><a href="../../clients/webservice/src/main/java/at/gv/egovernment/moa/spss/handbook/clients/webservice/HTTPSServerAuth.java">HTTPSServerAuth.java</a></code>) prüft die Authentizität des verwendeten MOA-Websservices an Hand dessen SSL-Serverzertifikats, identifiziert sich selbst jedoch nicht gegenüber dem MOA-Webservice.</li> - <li>Der Client mit Client- und Server-Authentisierung (<code><a href="../../clients/webservice/src/main/java/at/gv/egovernment/moa/spss/handbook/clients/webservice/HTTPSClientAuth.java">HTTPSClientAuth.java</a></code>) prüft einerseits die Authentizität des verwendeten MOA-Websservices an Hand dessen SSL-Serverzertifikats; andererseits weist er sich selbst mittels eines SSL-Client-Zertifikats gegenüber dem MOA-Webservice aus. </li> -</ul> -<p>Welcher der drei Varianten des Webservice-Clients zum Einsatz kommen soll, hängt von der Art ab, wie das MOA-Webservice betrieben wird, d.h. ob es Server- bzw. Client-Authentisierung unterstützt bzw. verlangt. Befinden sich sowohl MOA-Webservice als auch der Webservice-Client im gleichen, abgeschotteten Netzwerk, kann auch eine Kommunikation ohne Authenifikation in Betracht gezogen werden. Ansonsten wird der Standardfall wohl der Betrieb mit Server-Authentisierung (Verwendung von MOA SP) bzw. mit Server- und Client-Authentisierung (Verwendung von MOA SS) sein.</p> -<p class="remark">Hinweis: Das <a href="../../">Wurzelverzeichnis</a> dieses Handbuchs stellt ein komplettes und sofort verwendbares Eclipse Projekt dar. </p> -<h3><a name="webservice_clients_gemeinsamkeiten" id="webservice_clients_gemeinsamkeiten"></a>2.2.2 Gemeinsamkeiten</h3> -<p>Dieser Abschnitt beschreibt die Gemeinsamkeiten aller drei Varianten des Webservice-Clients. </p> -<p>Zunächst einmal benötigen alle drei Varianten die folgenden Java-Bibliotheken, die im Ordner <a href="../../clients/webservice/lib/">clients/webservice/lib/</a> dieses Handbuchs bereits enthalten sind:</p> -<table class="fixedwidth" border="1" cellpadding="2"> - <TBODY> - <TR> - <TH>Java-Bibliothek</TH> - <TH>Bemerkung</TH> - </TR> - <tr class="fixedWidth"> - <td><a href="http://java.com/" target="_blank">Java SE</a></td> - <td>Java Standard Edition (Software Development Kit bzw. Java Runtime Environment) </td> - </tr> - <TR> - <TD><a href="#referenzierte_software">Apache Xerces</a></TD> - <TD>XML-Parser, Version 2.0.2 oder höher</TD> - </TR> - <TR> - <TD><a href="#referenzierte_software">AXIS Framework</a></TD> - <TD>Webservice-Framework, ab Version 1.1.</TD> - </TR> - </TBODY> -</TABLE> -<p>Weiters ist allen drei Varianten der folgende Kern-Ablauf gemeinsam:</p> -<ol> - <li>Der Webservice-Client liest einen vorbereiteten MOA-XML-Request (z. B. einen der in <a href="#webservice_xmlrequests">Abschnitt 2.1</a> gezeigten) vom Dateisystem ein.</li> - <li>Der Webservice-Client erstellt einen SOAP-Request mit dem vom Dateisystem gelesenen MOA-XML-Request als Nutzlast.</li> - <li>Der Webservice-Client sendet den erstellten SOAP-Request über HTTP an MOA SP/SS. </li> - <li>Der Webservice-Client empfängt die SOAP-Response von MOA SP/SS.</li> - <li>Der Webservice-Client extrahiert die Nutzlast des SOAP-Responses (d. h. die zum MOA-XML-Request aus Schritt 1 passende MOA-XML-Response), gibt diese auf die Konsole aus und speichert sie im Dateisystem. </li> -</ol> -<p>Konfiguriert werden können alle drei Varianten mit Hilfe von zwei Kommandozeilen-Parametern:</p> -<ol> - <li>Der erste Kommandozeilenparameter gibt an, ob MOA SS (Wert <code>sign</code>) oder MOA SP (Wert <code>verify</code>) kontaktiert werden soll. </li> - <li>Der zweite Kommandozeilenparameter enthält Pfad und Dateiname einer Java-Properties-Datei, die die weiteren Konfigurationsparameter für den Webservice-Client enthält. Ein relativer Pfad wird als relativ zum Arbeitsverzeichnis der Java Virtual Machine interpretiert. Genaue Infos zu den möglichen Konfigurationsparametern entnehmen Sie bitte der Quellcodedokumentation der jeweiligen Variante des Webservice-Clients. <a href="../../clients/webservice/conf/http.properties"><code>http.properties</code></a> enthält eine auf dieses Handbuch abgestimmte Konfiguration.</li> -</ol> -<h3><a name="webservice_clients_httpsserverauth" id="webservice_clients_httpsserverauth"></a>2.2.3 Besonderheiten von <code>HTTPSServerAuth.java</code></h3> -<p>Diese Variante des Webservice-Clients baut im Schritt 3 des Kernablaufs aus <a href="#webservice_clients_gemeinsamkeiten">Abschnitt 2.2.2</a> eine SSL-Verbindung mit Server-Authentifizierung zum MOA SP/SS Server auf. In dieser SSL-Verbindung sendet der Webservice-Client dann den erstellten SOAP-Request über HTTPS.</p> -<p>Die entsprechende Konfiguration (Speicher für die vertrauenswürdigen Serverzertifikate, Typ dieses Speichers, Passwort für diesen Speicher) wird mittels zusätzlicher Parameter in der in <a href="#webservice_clients_gemeinsamkeiten">Abschnitt 2.2.2</a> besprochenen Java-Properties-Datei vorgenommen. Genaue Infos zu diesen Konfigurationsparametern entnehmen Sie bitte der Quellcodedokumentation von <code><a href="../../clients/webservice/src/main/java/at/gv/egovernment/moa/spss/handbook/clients/webservice/HTTPSServerAuth.java">HTTPSServerAuth.java</a></code>. <a href="../../clients/webservice/conf/http.properties"><code>http.properties</code></a> enthält eine auf dieses Handbuch abgestimmte Konfiguration.</p> -<p>Falls Sie Probleme beim SSL-Verbindungsaufbau zwischen Webservice-Client und MOA SP/SS Webservice haben, empfiehlt sich die Aktivierung des SSL Loggings. Das Setzen der dafür notwendigen Java System Property ist im Quellcode von <code><a href="../../clients/webservice/src/main/java/at/gv/egovernment/moa/spss/handbook/clients/webservice/HTTPSServerAuth.java">HTTPSServerAuth.java</a></code> bereits enthalten, jedoch auskommentiert. Suchen Sie einfach nach dem String <code>javax.net.debug</code>, um zur entsprechenden Stelle im Quellcode zu gelangen. </p> -<h3><a name="webservice_clients_httpsclientauth" id="webservice_clients_httpsclientauth"></a>2.2.4 Besonderheiten von <code>HTTPSClientAuth.java</code> </h3> -<p>Diese Variante des Webservice-Clients baut im Schritt 3 des Kernablaufs aus <a href="#webservice_clients_gemeinsamkeiten">Abschnitt 2.2.2</a> eine SSL-Verbindung mit Server- und Client-Authentifizierung zum MOA SP/SS Server auf. In dieser SSL-Verbindung sendet der Webservice-Client dann den erstellten SOAP-Request über HTTPS.</p> -<p>Die gegenüber <a href="#webservice_clients_httpsserverauth">Abschnitt 2.2.3</a> zusätzlich notwendige Konfiguration (Speicher für das SSL-Client-Zertifikat sowie den dazugehörigen privaten Schlüssel, Typ dieses Speichers, Passwort für diesen Speicher) wird mittels zusätzlicher Parameter in der in <a href="#webservice_clients_gemeinsamkeiten">Abschnitt 2.2.2</a> besprochenen Java-Properties-Datei vorgenommen. Genaue Infos zu diesen Konfigurationsparametern entnehmen Sie bitte der Quellcodedokumentation von <code><a href="../../clients/webservice/src/main/java/at/gv/egovernment/moa/spss/handbook/clients/webservice/HTTPSClientAuth.java">HTTPSClientAuth.java</a></code>. <a href="../../clients/webservice/conf/http.properties"><code>http.properties</code></a> enthält eine auf dieses Handbuch abgestimmte Konfiguration.</p> -<p>Beachten Sie bitte auch den Hinweis zum SSL Logging aus <a href="#webservice_clients_httpsserverauth">Abschnitt 2.2.3</a>.</p> -<h2><a name="readcert" id="webservice_clients_httpsclientauth2"></a>2.3 Zertifikat einer Schlüsselgruppe auslesen</h2> -<p>Ab der Version 2.0.3 von MOA-SPSS kann das Zertifikat einer Schlüsselgruppe über ein Web Interface abgerufen werden. MOA-SPSS bietet hierfür folgenden Endpunkt:</p> -<pre>http(s)://......../moa-spss/Certificate?id=<Name der Schlüsselgruppe></pre> -<p>Mit dem http GET Parameter id kann die gewünsche Schlüsselgruppe ausgewählt werden.</p> -<h1><a name="klassenbibliothek" id="klassenbibliothek"></a>3 Verwendung der Klassenbibliothek</h1> -<p>Neben dem Betrieb von MOA SP/SS als Webservice ist als Alternative auch die Verwendung von MOA SP/SS als Klassenbibliothek möglich, also die direkte Einbindung in ein Java-Programm unter Verwendung des Application Programmers Interface (API) von MOA SP/SS. </p> -<h2><a name="klassenbibliothek_vorbereitung" id="klassenbibliothek_vorbereitung"></a>3.1 Vorbereitung</h2> -<p>Um das API von MOA SP/SS verwenden zu können, müssen einerseits die MOA-Bibliotheken selbst, andererseits eine Reihe von unterstützenden Bibliotheken in den Klassenpfad aufgenommen werden. Eine Übersicht dazu finden Sie im Installationshandbuch im <a href="../install/install.html#klassenbibliothek">Abschnitt 3</a>. -<h2><a name="klassenbibliothek_allgemeines" id="klassenbibliothek_allgemeines"></a>3.2 Allgemeines </h2> -<p>Der strukturelle Aufbau der API entspricht weitgehend der Struktur eines MOA-XML-Requests. Es werden daher in diesem Abschnitt nur zwei grundlegende Beispiele gebracht; für komplexere Aufgaben können die XML-Beispiele aus <a href="#webservice_xmlrequests">Abschnitt 2.1</a> als Vorlage verwendet und einfach in die "API-Welt" übertragen werden. -<h2><a name="klassenbibliothek_beispiele" id="klassenbibliothek_beispiele"></a>3.3 Beispiele </h2> -<p>Dieses Handbuch enthält zwei Beispiele für die Verwendung der API von MOA SP/SS: -<ol> - <li><code><a href="../../clients/api/src/main/java/at/gv/egovernment/moa/spss/handbook/clients/api/CreateXMLSignature.java">CreateXMLSignature.java</a></code>: Erstellung einer einfachen XML-Signatur; dieses Beispiel entspricht dem MOA-XML-Request aus <a href="#webservice_xmlrequests_erstellungxml_simple">Abschnitt 2.1.1.1</a>. <br> - Die Konfiguration der API erfolgt über Kommandozeilenparameter (Lage der Konfigurationsdatei für MOA SP/SS, Lage der Konfigurationsdatei für das Logging mit Log4j). Detaillierte Informationen dazu finden Sie in der Quellcodedokumentation des Beispiels. </li> - <li><code><a href="../../clients/api/src/main/java/at/gv/egovernment/moa/spss/handbook/clients/api/VerifyXMLSignature.java">VerifyXMLSignature.java</a></code>: Prüfung einer einfachen XML-Signatur; dieses Beispiel entspricht dem MOA-XML-Request aus <a href="#webservice_xmlrequests_pruefungxml_einfach">Abschnitt 2.1.3.1</a>. <br> - Die Konfiguration der API erfolgt über Kommandozeilenparameter (Lage der Konfigurationsdatei für MOA SP/SS, Lage der Konfigurationsdatei für das Logging mit Log4j). Detaillierte Informationen dazu finden Sie in der Quellcodedokumentation des Beispiels. <br> - Die Auswahl der zu prüfenden Signatur erfolgt ebenfalls per Kommandozeilenparameter. Detaillierte Informationen dazu finden Sie ebenfalls in der Quellcodedokumentation des Beispiels. </li> -</ol> -<h2><a name="klassenbibliothek_apidoc" id="klassenbibliothek_apidoc"></a>3.4 API-Dokumentation </h2> -<p>Für die vollständige Dokumentation des API von MOA SP/SS sei auf die <a href="../../api-doc/index.html">Java Doc der API</a> verwiesen. -<p> -<h1><a name="referenzierte_software" id="referenzierte_software"></a>A Referenzierte Software</h1> -<p>Auf folgende Software-Pakete wird in diesem Handbuch verwiesen:</p> -<table class="fixedWidth" border="1" cellpadding="2"> - <tbody> - <tr> - <th scope="col">Name</th> - <th scope="col">Beschreibung</th> - </tr> - <tr> - <td><a href="http://xml.apache.org/xerces2-j/">Apache Xerces 2</a> </td> - <td>XML-Parser aus dem Apache Project</td> - </tr> - <tr> - <td><a href="http://axis.apache.org/axis/">Apache Axis</a></td> - <td>Webservice-Framework aus dem Apache Project</td> - </tr> - <tr> - <td><a href="http://java.com/" target="_blank">Java SE</a></td> - <td>Java Standard Edition (Software Development Kit bzw. Java Runtime Environment) </td> - </tr> - </tbody> -</table> -<h1><a name="referenzierte_spezifikation" id="referenzierte_spezifikation"></a>B Referenzierte Spezifikation</h1> -<table class="fixedWidth" border="1" cellpadding="2"> - <tbody> - <tr> - <th>Spezifikation</th> - <th>Link</th> - </tr> - <tr id="sl"> - <td><p>Security Layer Spezifikation Version 1.2.7</p></td> - <td><a href="http://www.buergerkarte.at/konzept/securitylayer/spezifikation/20140114/core/core.html#core" target="_blank">http://www.buergerkarte.at/konzept/securitylayer/spezifikation/20140114/core/core.html#core</a></td> - </tr> - </tbody> -</table> -</body> -</html> diff --git a/moaSig/handbook/pom.xml b/moaSig/handbook/pom.xml deleted file mode 100644 index d4cf8e8..0000000 --- a/moaSig/handbook/pom.xml +++ /dev/null @@ -1,45 +0,0 @@ -<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
- <parent>
- <groupId>MOA</groupId>
- <artifactId>spss</artifactId>
- <version>2.0.x</version>
- </parent>
-
- <modelVersion>4.0.0</modelVersion>
- <groupId>MOA.spss.handbook</groupId>
- <artifactId>moa-spss-handbook</artifactId>
- <packaging>pom</packaging>
- <version>2.0</version>
- <name>MOA SP/SS Handbook</name>
-
- <modules>
- <module>clients</module>
- </modules>
-
- <properties>
- <repositoryPath>${basedir}/../../../repository</repositoryPath>
- </properties>
- <build>
- <plugins>
-<!-- <plugin>
- <groupId>org.codehaus.mojo</groupId>
- <artifactId>properties-maven-plugin</artifactId>
- <version>1.0-alpha-2</version>
- <executions>
- <execution>
- <phase>initialize</phase>
- <goals>
- <goal>read-project-properties</goal>
- </goals>
- <configuration>
- <files>
- <file>${basedir}/../../../moa-id.properties</file>
- </files>
- </configuration>
- </execution>
- </executions>
- </plugin> -->
- </plugins>
- </build>
-</project>
diff --git a/moaSig/libs/iaik_cpades-2.4_MOA.jar b/moaSig/libs/iaik_cpades-2.4_MOA.jar Binary files differnew file mode 100644 index 0000000..300c215 --- /dev/null +++ b/moaSig/libs/iaik_cpades-2.4_MOA.jar diff --git a/moaSig/libs/iaik_cpades.jar b/moaSig/libs/iaik_cpades.jar Binary files differdeleted file mode 100644 index 70794e4..0000000 --- a/moaSig/libs/iaik_cpades.jar +++ /dev/null diff --git a/moaSig/libs/iaik_cpxlevel.jar b/moaSig/libs/iaik_cpxlevel.jar Binary files differindex ae00654..3caa161 100644 --- a/moaSig/libs/iaik_cpxlevel.jar +++ b/moaSig/libs/iaik_cpxlevel.jar diff --git a/moaSig/libs/iaik_eccelerate-6.02.jar b/moaSig/libs/iaik_eccelerate-6.02.jar Binary files differnew file mode 100644 index 0000000..e30b629 --- /dev/null +++ b/moaSig/libs/iaik_eccelerate-6.02.jar diff --git a/moaSig/libs/iaik_eccelerate.jar b/moaSig/libs/iaik_eccelerate.jar Binary files differdeleted file mode 100644 index 0ec3110..0000000 --- a/moaSig/libs/iaik_eccelerate.jar +++ /dev/null diff --git a/moaSig/libs/iaik_eccelerate_addon-6.02.jar b/moaSig/libs/iaik_eccelerate_addon-6.02.jar Binary files differnew file mode 100644 index 0000000..94f2de5 --- /dev/null +++ b/moaSig/libs/iaik_eccelerate_addon-6.02.jar diff --git a/moaSig/libs/iaik_eccelerate_addon.jar b/moaSig/libs/iaik_eccelerate_addon.jar Binary files differdeleted file mode 100644 index bd57ff2..0000000 --- a/moaSig/libs/iaik_eccelerate_addon.jar +++ /dev/null diff --git a/moaSig/libs/iaik_eccelerate_cms-6.02.jar b/moaSig/libs/iaik_eccelerate_cms-6.02.jar Binary files differnew file mode 100644 index 0000000..32d7aec --- /dev/null +++ b/moaSig/libs/iaik_eccelerate_cms-6.02.jar diff --git a/moaSig/libs/iaik_eccelerate_cms.jar b/moaSig/libs/iaik_eccelerate_cms.jar Binary files differdeleted file mode 100644 index 3c9ac83..0000000 --- a/moaSig/libs/iaik_eccelerate_cms.jar +++ /dev/null diff --git a/moaSig/libs/iaik_jce_full-5.62_moa.jar b/moaSig/libs/iaik_jce_full-5.62_moa.jar Binary files differnew file mode 100644 index 0000000..382593e --- /dev/null +++ b/moaSig/libs/iaik_jce_full-5.62_moa.jar diff --git a/moaSig/libs/iaik_jce_full.jar b/moaSig/libs/iaik_jce_full.jar Binary files differdeleted file mode 100644 index 736981a..0000000 --- a/moaSig/libs/iaik_jce_full.jar +++ /dev/null diff --git a/moaSig/libs/iaik_jsse-4.4.jar b/moaSig/libs/iaik_jsse-4.4.jar Binary files differdeleted file mode 100644 index 15b3204..0000000 --- a/moaSig/libs/iaik_jsse-4.4.jar +++ /dev/null diff --git a/moaSig/libs/iaik_moa-2.02.jar b/moaSig/libs/iaik_moa-2.07.jar Binary files differindex c45a355..b3436ef 100644 --- a/moaSig/libs/iaik_moa-2.02.jar +++ b/moaSig/libs/iaik_moa-2.07.jar diff --git a/moaSig/libs/iaik_pki_module-2.02_moa.jar b/moaSig/libs/iaik_pki_module-2.02_moa.jar Binary files differnew file mode 100644 index 0000000..b7979e5 --- /dev/null +++ b/moaSig/libs/iaik_pki_module-2.02_moa.jar diff --git a/moaSig/libs/iaik_pki_module.jar b/moaSig/libs/iaik_pki_module.jar Binary files differdeleted file mode 100644 index cc07059..0000000 --- a/moaSig/libs/iaik_pki_module.jar +++ /dev/null diff --git a/moaSig/libs/iaik_sva-1.1.jar b/moaSig/libs/iaik_sva-1.1.jar Binary files differnew file mode 100644 index 0000000..29138db --- /dev/null +++ b/moaSig/libs/iaik_sva-1.1.jar diff --git a/moaSig/libs/iaik_sva.jar b/moaSig/libs/iaik_sva.jar Binary files differdeleted file mode 100644 index 9500d67..0000000 --- a/moaSig/libs/iaik_sva.jar +++ /dev/null diff --git a/moaSig/libs/iaik_tsl-1.1.jar b/moaSig/libs/iaik_tsl-1.1.jar Binary files differdeleted file mode 100644 index b4eb067..0000000 --- a/moaSig/libs/iaik_tsl-1.1.jar +++ /dev/null diff --git a/moaSig/libs/iaik_tsp.jar b/moaSig/libs/iaik_tsp.jar Binary files differindex 5e1936b..fbd9abd 100644 --- a/moaSig/libs/iaik_tsp.jar +++ b/moaSig/libs/iaik_tsp.jar diff --git a/moaSig/libs/iaik_xades.jar b/moaSig/libs/iaik_xades-2.13_moa.jar Binary files differindex 20ae685..0f111e2 100644 --- a/moaSig/libs/iaik_xades.jar +++ b/moaSig/libs/iaik_xades-2.13_moa.jar diff --git a/moaSig/libs/iaik_xsect.jar b/moaSig/libs/iaik_xsect-2.14_MOA.jar Binary files differindex 7b05174..aa3c229 100644 --- a/moaSig/libs/iaik_xsect.jar +++ b/moaSig/libs/iaik_xsect-2.14_MOA.jar diff --git a/moaSig/libs/pdfbox-app-1.8.10.jar b/moaSig/libs/pdfbox-app-1.8.10.jar Binary files differdeleted file mode 100644 index 4c6b4f3..0000000 --- a/moaSig/libs/pdfbox-app-1.8.10.jar +++ /dev/null diff --git a/moaSig/libs/tsl-lib-2.0.0-RC2.jar b/moaSig/libs/tsl-lib-2.0.0-RC2.jar Binary files differdeleted file mode 100644 index a6e3142..0000000 --- a/moaSig/libs/tsl-lib-2.0.0-RC2.jar +++ /dev/null diff --git a/moaSig/moa-asic/build.gradle b/moaSig/moa-asic/build.gradle index d615c1f..3ef15cb 100644 --- a/moaSig/moa-asic/build.gradle +++ b/moaSig/moa-asic/build.gradle @@ -2,7 +2,7 @@ apply plugin: 'java-library-distribution' distributions { main{ - baseName = 'MOA-ASIC' + distributionBaseName = 'MOA-ASIC' } } @@ -11,12 +11,14 @@ configurations { } dependencies { + jaxb group: 'com.sun.xml.bind', name: 'jaxb-xjc', version: '2.2.11' - jaxb group: 'com.sun.xml.bind', name: 'jaxb-xjc', version: '2.2.4-1' + implementation project(':common') + implementation project(':moa-sig-lib') + implementation 'org.slf4j:slf4j-log4j12:1.7.30' + api group: 'javax.xml.bind', name: 'jaxb-api', version: '2.3.1' + api group: 'javax.xml.ws', name: 'jaxws-api', version: '2.3.1' - compile project(':common') - compile project(':moa-sig-lib') - compile 'org.slf4j:slf4j-log4j12:1.7.12' } sourceSets { @@ -49,8 +51,10 @@ task jaxb () { } task releases(type: Copy) { - from jar.outputs - from distZip.outputs + //from jar.outputs + //from distZip.outputs from distTar.outputs into rootDir.toString() + "/releases/" + version } + +task publishPubNamePublicationToMavenLocal {} diff --git a/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/api/ASiC.java b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/api/ASiC.java index e79d2ca..d8bf4d9 100644 --- a/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/api/ASiC.java +++ b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/api/ASiC.java @@ -1,13 +1,18 @@ package at.gv.egiz.asic.api; +import java.util.Collection; import java.util.List; public interface ASiC { - public ASiCFormat getFormat(); - public boolean isXAdES(); - public boolean isCAdES(); + ASiCFormat getFormat(); - public List<ASiCEntry> getSignaturesEntries(); - public List<ASiCEntry> getDataEntries(); - public List<ASiCEntry> getInformationEntries(); + boolean isXAdES(); + + boolean isCAdES(); + + List<ASiCEntry> getSignaturesEntries(); + + Collection<ASiCEntry> getDataEntries(); + + List<ASiCEntry> getInformationEntries(); } diff --git a/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/api/ASiCConstants.java b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/api/ASiCConstants.java index 02baf40..b987346 100644 --- a/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/api/ASiCConstants.java +++ b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/api/ASiCConstants.java @@ -4,6 +4,6 @@ package at.gv.egiz.asic.api; * Created by afitzek on 6/15/16. */ public interface ASiCConstants { - public static final String FILE_MIME_TYPE = "mimetype"; - public static final String FILE_META_INF = "META-INF/"; + String FILE_MIME_TYPE = "mimetype"; + String FILE_META_INF = "META-INF/"; } diff --git a/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/api/ASiCEntry.java b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/api/ASiCEntry.java index 7c026cf..f0a9edd 100644 --- a/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/api/ASiCEntry.java +++ b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/api/ASiCEntry.java @@ -7,32 +7,32 @@ import java.io.InputStream; */ public class ASiCEntry { - private String entryName; - private InputStream contents; - - public ASiCEntry() { - } - - public String getEntryName() { - return entryName; - } - - public void setEntryName(String entryName) { - this.entryName = entryName; - } - - public InputStream getContents() { - return contents; - } - - public void setContents(InputStream contents) { - this.contents = contents; - } - - @Override - public String toString() { - return "ASiCEntry{" + - "entryName='" + entryName + '\'' + - '}'; - } + private String entryName; + private InputStream contents; + + public ASiCEntry() { + } + + public String getEntryName() { + return entryName; + } + + public void setEntryName(String entryName) { + this.entryName = entryName; + } + + public InputStream getContents() { + return contents; + } + + public void setContents(InputStream contents) { + this.contents = contents; + } + + @Override + public String toString() { + return "ASiCEntry{" + + "entryName='" + entryName + '\'' + + '}'; + } } diff --git a/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/api/ASiCFactory.java b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/api/ASiCFactory.java index 6b067f7..ccab9a4 100644 --- a/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/api/ASiCFactory.java +++ b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/api/ASiCFactory.java @@ -1,16 +1,5 @@ package at.gv.egiz.asic.api; -import at.gv.egiz.asic.exceptions.ASiCException; -import at.gv.egiz.asic.impl.ASiCBaseFormatFactory; -import at.gv.egiz.asic.impl.ASiCExtendedFormatFactory; -import at.gv.egiz.asic.impl.ASiCSimpleFormatFactory; -import at.gv.egiz.asic.impl.ZipCommentReaderStream; -import at.gv.egovernment.moa.spss.MOAApplicationException; -import at.gv.egovernment.moa.spss.MOAException; -import org.apache.commons.io.IOUtils; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; @@ -18,147 +7,158 @@ import java.io.InputStream; import java.util.zip.ZipEntry; import java.util.zip.ZipInputStream; +import org.apache.commons.io.IOUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import at.gv.egiz.asic.impl.ASiCBaseFormatFactory; +import at.gv.egiz.asic.impl.ASiCExtendedFormatFactory; +import at.gv.egiz.asic.impl.ASiCSimpleFormatFactory; +import at.gv.egiz.asic.impl.ZipCommentReaderStream; +import at.gv.egovernment.moa.spss.MOAApplicationException; +import at.gv.egovernment.moa.spss.MOAException; + /** * Created by afitzek on 6/15/16. */ public class ASiCFactory { - private static final Logger logger = LoggerFactory.getLogger(ASiCFactory.class); - - private static final String MIMETYPE_FORMAT_E = "application/vnd.etsi.asic-e+zip"; - private static final String MIMETYPE_FORMAT_S = "application/vnd.etsi.asic-s+zip"; - - public static ASiC parseASiC(InputStream is, ASiCFormat format) throws MOAException { - - InputStream newInputStream = is; - - - // Try to determine the asic format! - if (!newInputStream.markSupported()) { - ByteArrayOutputStream asicContainer = new ByteArrayOutputStream(); - - try { - IOUtils.copy(newInputStream, asicContainer); - } catch (IOException e) { - throw new MOAApplicationException("asic.0003", null); - } - newInputStream = new ByteArrayInputStream(asicContainer.toByteArray()); - } - - String mimeTypeFile = null; - ZipCommentReaderStream commentReaderStream = new ZipCommentReaderStream(newInputStream); - byte[] buffer = new byte[8096]; - try { - while (commentReaderStream.read(buffer) >= 0) { - } - newInputStream.reset(); - } catch (IOException e) { - throw new MOAApplicationException("asic.0003", null); - } - - ZipInputStream zipInputStream = new ZipInputStream(newInputStream); - - try { - for (ZipEntry entry = zipInputStream.getNextEntry(); entry != null; entry = zipInputStream.getNextEntry()) { - String entryName = entry.getName(); - - if("mimetype".equalsIgnoreCase(entryName)) { - if(mimeTypeFile == null) { - mimeTypeFile = IOUtils.toString(zipInputStream, "UTF-8"); - } else { - logger.warn("multiple mimetype files found in archiv"); - } - } - } - newInputStream.reset(); - } catch (IOException e) { - throw new MOAApplicationException("asic.0007", null); - } - - String fileComment = commentReaderStream.getFileComment(); - ASiCFormat fileCommentFormat = null; - if (fileComment != null) { - logger.info("Found file comment in ASiC {}", fileComment); - if(fileComment.startsWith("mimetype=")) { - String fileCommentMimeType = fileComment.substring("mimetype=".length()); - if(fileCommentMimeType.startsWith(MIMETYPE_FORMAT_E)) { - fileCommentFormat = ASiCFormat.ASiCE; - } else if(fileCommentMimeType.startsWith(MIMETYPE_FORMAT_S)) { - fileCommentFormat = ASiCFormat.ASiCS; - } - } - } else { - logger.info("No file comment in ASiC"); - } - - - ASiCFormat mimeTypeFileFormat = null; - if (mimeTypeFile != null) { - logger.info("Found mimetype file in ASiC {}", mimeTypeFile); - if(MIMETYPE_FORMAT_E.equalsIgnoreCase(mimeTypeFile)) { - mimeTypeFileFormat = ASiCFormat.ASiCE; - } else if(MIMETYPE_FORMAT_S.equalsIgnoreCase(mimeTypeFile)) { - mimeTypeFileFormat = ASiCFormat.ASiCS; - } - } else { - logger.info("No mimetype file in ASiC"); - } - - if (format == null) { - if (fileCommentFormat != null && mimeTypeFileFormat != null) { - // both are set - if (fileCommentFormat == mimeTypeFileFormat) { - format = fileCommentFormat; - } else { - throw new MOAApplicationException("asic.0009", null); - } - } else if (fileCommentFormat != null) { - format = fileCommentFormat; - } else if (mimeTypeFileFormat != null) { - format = mimeTypeFileFormat; - } else { - throw new MOAApplicationException("asic.0008", null); - } - } else { - // format is provided, only check for missmatches - if (fileCommentFormat != null && fileCommentFormat != format) { - logger.warn("ASiC format missmatch file comment {} vs provided {}", fileCommentFormat, format); - throw new MOAApplicationException("asic.0009", null); - } - if (mimeTypeFileFormat != null && mimeTypeFileFormat != format) { - logger.warn("ASiC format missmatch mimetype file {} vs provided {}", mimeTypeFileFormat, format); - throw new MOAApplicationException("asic.0009", null); - } - - if (fileCommentFormat != null && mimeTypeFileFormat != null) { - // both are set - if (fileCommentFormat != mimeTypeFileFormat) { - logger.warn("ASiC format missmatch file comment {} vs mimetype file {}", fileCommentFormat, mimeTypeFileFormat); - throw new MOAApplicationException("asic.0009", null); - } - } - } + private static final Logger logger = LoggerFactory.getLogger(ASiCFactory.class); - ASiCBaseFormatFactory formatFactory = null; + private static final String MIMETYPE_FORMAT_E = "application/vnd.etsi.asic-e+zip"; + private static final String MIMETYPE_FORMAT_S = "application/vnd.etsi.asic-s+zip"; - if (format == null) { - throw new MOAApplicationException("asic.0008", null); + public static ASiC parseASiC(InputStream is, ASiCFormat format) throws MOAException { + + InputStream newInputStream = is; + + // Try to determine the asic format! + if (!newInputStream.markSupported()) { + final ByteArrayOutputStream asicContainer = new ByteArrayOutputStream(); + + try { + IOUtils.copy(newInputStream, asicContainer); + } catch (final IOException e) { + throw new MOAApplicationException("asic.0003", null); + } + newInputStream = new ByteArrayInputStream(asicContainer.toByteArray()); + } + + String mimeTypeFile = null; + final ZipCommentReaderStream commentReaderStream = new ZipCommentReaderStream(newInputStream); + final byte[] buffer = new byte[8096]; + try { + while (commentReaderStream.read(buffer) >= 0) { + } + newInputStream.reset(); + } catch (final IOException e) { + throw new MOAApplicationException("asic.0003", null); + } + + final ZipInputStream zipInputStream = new ZipInputStream(newInputStream); + + try { + for (ZipEntry entry = zipInputStream.getNextEntry(); entry != null; entry = zipInputStream + .getNextEntry()) { + final String entryName = entry.getName(); + + if ("mimetype".equalsIgnoreCase(entryName)) { + if (mimeTypeFile == null) { + mimeTypeFile = IOUtils.toString(zipInputStream, "UTF-8"); + } else { + logger.warn("multiple mimetype files found in archiv"); + } } + } + newInputStream.reset(); + } catch (final IOException e) { + throw new MOAApplicationException("asic.0007", null); + } - switch (format) { - case ASiCE: - formatFactory = new ASiCExtendedFormatFactory(); - break; - case ASiCS: - formatFactory = new ASiCSimpleFormatFactory(); - break; + final String fileComment = commentReaderStream.getFileComment(); + ASiCFormat fileCommentFormat = null; + if (fileComment != null) { + logger.debug("Found file comment in ASiC {}", fileComment); + if (fileComment.startsWith("mimetype=")) { + final String fileCommentMimeType = fileComment.substring("mimetype=".length()); + if (fileCommentMimeType.startsWith(MIMETYPE_FORMAT_E)) { + fileCommentFormat = ASiCFormat.ASiCE; + } else if (fileCommentMimeType.startsWith(MIMETYPE_FORMAT_S)) { + fileCommentFormat = ASiCFormat.ASiCS; } + } + } else { + logger.info("No file comment in ASiC"); + } - if (formatFactory == null) { - throw new MOAApplicationException("asic.0008", null); + ASiCFormat mimeTypeFileFormat = null; + if (mimeTypeFile != null) { + logger.debug("Found mimetype file in ASiC {}", mimeTypeFile); + if (MIMETYPE_FORMAT_E.equalsIgnoreCase(mimeTypeFile)) { + mimeTypeFileFormat = ASiCFormat.ASiCE; + } else if (MIMETYPE_FORMAT_S.equalsIgnoreCase(mimeTypeFile)) { + mimeTypeFileFormat = ASiCFormat.ASiCS; + } + } else { + logger.info("No mimetype file in ASiC"); + } + + if (format == null) { + if (fileCommentFormat != null && mimeTypeFileFormat != null) { + // both are set + if (fileCommentFormat == mimeTypeFileFormat) { + format = fileCommentFormat; + } else { + throw new MOAApplicationException("asic.0009", null); } + } else if (fileCommentFormat != null) { + format = fileCommentFormat; + } else if (mimeTypeFileFormat != null) { + format = mimeTypeFileFormat; + } else { + throw new MOAApplicationException("asic.0008", null); + } + } else { + // format is provided, only check for missmatches + if (fileCommentFormat != null && fileCommentFormat != format) { + logger.warn("ASiC format missmatch file comment {} vs provided {}", fileCommentFormat, format); + throw new MOAApplicationException("asic.0009", null); + } + if (mimeTypeFileFormat != null && mimeTypeFileFormat != format) { + logger.warn("ASiC format missmatch mimetype file {} vs provided {}", mimeTypeFileFormat, format); + throw new MOAApplicationException("asic.0009", null); + } + + if (fileCommentFormat != null && mimeTypeFileFormat != null) { + // both are set + if (fileCommentFormat != mimeTypeFileFormat) { + logger.warn("ASiC format missmatch file comment {} vs mimetype file {}", fileCommentFormat, + mimeTypeFileFormat); + throw new MOAApplicationException("asic.0009", null); + } + } + } + + ASiCBaseFormatFactory formatFactory = null; - return formatFactory.createASiC(newInputStream); + if (format == null) { + throw new MOAApplicationException("asic.0008", null); } + switch (format) { + case ASiCE: + formatFactory = new ASiCExtendedFormatFactory(); + break; + case ASiCS: + formatFactory = new ASiCSimpleFormatFactory(); + break; + } + + if (formatFactory == null) { + throw new MOAApplicationException("asic.0008", null); + } + + return formatFactory.createASiC(newInputStream); + } + } diff --git a/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/api/ASiCFormat.java b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/api/ASiCFormat.java index 8106944..cc72f58 100644 --- a/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/api/ASiCFormat.java +++ b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/api/ASiCFormat.java @@ -4,6 +4,6 @@ package at.gv.egiz.asic.api; * Created by Andreas Fitzek on 6/15/16. */ public enum ASiCFormat { - ASiCS, - ASiCE + ASiCS, + ASiCE } diff --git a/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/api/ASiCVerificationResult.java b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/api/ASiCVerificationResult.java index a350f18..a29b5c2 100644 --- a/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/api/ASiCVerificationResult.java +++ b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/api/ASiCVerificationResult.java @@ -1,40 +1,43 @@ package at.gv.egiz.asic.api; -import at.gv.egovernment.moa.spss.api.cmsverify.VerifyCMSSignatureResponse; -import at.gv.egovernment.moa.spss.api.xmlverify.VerifyXMLSignatureResponse; - import java.util.ArrayList; import java.util.List; +import at.gv.egiz.asic.impl.AsicSignedFilesContainer; +import at.gv.egovernment.moa.spss.api.cmsverify.VerifyCMSSignatureResponse; +import at.gv.egovernment.moa.spss.api.xmlverify.VerifyXMLSignatureResponse; + /** * Created by Andreas Fitzek on 6/16/16. */ public class ASiCVerificationResult { - private List<String> signedFiles = new ArrayList<String>(); + private List<AsicSignedFilesContainer> signedFiles = new ArrayList<>(); - private VerifyCMSSignatureResponse cmsResult = null; - private VerifyXMLSignatureResponse xmlResult = null; + private VerifyCMSSignatureResponse cmsResult = null; + private VerifyXMLSignatureResponse xmlResult = null; - public ASiCVerificationResult(List<String> references, VerifyCMSSignatureResponse cmsResult) { - this.signedFiles = references; - this.cmsResult = cmsResult; - } + public ASiCVerificationResult(List<AsicSignedFilesContainer> references, + VerifyCMSSignatureResponse cmsResult) { + this.signedFiles = references; + this.cmsResult = cmsResult; + } - public ASiCVerificationResult(List<String> references, VerifyXMLSignatureResponse xmlResult) { - this.signedFiles = references; - this.xmlResult = xmlResult; - } + public ASiCVerificationResult(List<AsicSignedFilesContainer> references, + VerifyXMLSignatureResponse xmlResult) { + this.signedFiles = references; + this.xmlResult = xmlResult; + } - public List<String> getSignedFiles() { - return signedFiles; - } + public List<AsicSignedFilesContainer> getSignedFiles() { + return signedFiles; + } - public VerifyXMLSignatureResponse getXmlResult() { - return xmlResult; - } + public VerifyXMLSignatureResponse getXmlResult() { + return xmlResult; + } - public VerifyCMSSignatureResponse getCmsResult() { - return cmsResult; - } + public VerifyCMSSignatureResponse getCmsResult() { + return cmsResult; + } } diff --git a/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/api/ASiCVerifier.java b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/api/ASiCVerifier.java index 77bc61d..fc8de87 100644 --- a/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/api/ASiCVerifier.java +++ b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/api/ASiCVerifier.java @@ -1,16 +1,15 @@ package at.gv.egiz.asic.api; -import at.gv.egovernment.moa.spss.MOAException; -import at.gv.egovernment.moa.spss.api.cmsverify.VerifyCMSSignatureResponse; - import java.util.Date; import java.util.List; +import at.gv.egovernment.moa.spss.MOAException; + /** * Created by Andreas Fitzek on 6/15/16. */ public interface ASiCVerifier { - public List<ASiCVerificationResult> verify(ASiC asic, String trustProfileID, Date date) throws MOAException; + List<ASiCVerificationResult> verify(ASiC asic, String trustProfileID, Date date) throws MOAException; } diff --git a/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/exceptions/ASiCContainerInvalidException.java b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/exceptions/ASiCContainerInvalidException.java new file mode 100644 index 0000000..1927528 --- /dev/null +++ b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/exceptions/ASiCContainerInvalidException.java @@ -0,0 +1,7 @@ +package at.gv.egiz.asic.exceptions; + +public class ASiCContainerInvalidException extends ASiCException { + public ASiCContainerInvalidException(String reason) { + super(); + } +} diff --git a/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/ASiCBaseFormatFactory.java b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/ASiCBaseFormatFactory.java index bce179d..65c6ccc 100644 --- a/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/ASiCBaseFormatFactory.java +++ b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/ASiCBaseFormatFactory.java @@ -1,134 +1,151 @@ package at.gv.egiz.asic.impl; -import at.gv.egiz.asic.api.ASiC; -import at.gv.egiz.asic.api.ASiCEntry; -import at.gv.egiz.asic.api.ASiCFormat; -import at.gv.egiz.asic.impl.handler.*; -import at.gv.egovernment.moa.spss.MOAApplicationException; -import at.gv.egovernment.moa.spss.MOAException; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - import java.io.IOException; import java.io.InputStream; import java.util.ArrayList; +import java.util.HashMap; import java.util.Iterator; import java.util.List; +import java.util.Map; import java.util.zip.ZipEntry; import java.util.zip.ZipInputStream; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import at.gv.egiz.asic.api.ASiC; +import at.gv.egiz.asic.api.ASiCEntry; +import at.gv.egiz.asic.api.ASiCFormat; +import at.gv.egiz.asic.impl.handler.AllDataHandler; +import at.gv.egiz.asic.impl.handler.MetaInfHandler; +import at.gv.egiz.asic.impl.handler.MimefileHandler; +import at.gv.egovernment.moa.spss.MOAApplicationException; +import at.gv.egovernment.moa.spss.MOAException; + /** * Created by Andreas Fitzek on 6/15/16. */ public abstract class ASiCBaseFormatFactory implements ASiCContainer { - private static final Logger logger = LoggerFactory.getLogger(ASiCBaseFormatFactory.class); + private static final Logger logger = LoggerFactory.getLogger(ASiCBaseFormatFactory.class); - protected boolean cadesSigned = false; - protected boolean xadesSigned = false; - protected boolean timestamped = false; + protected boolean cadesSigned = false; + protected boolean xadesSigned = false; + protected boolean timestamped = false; - protected String mimeType = null; + protected String mimeType = null; - protected List<ASiCEntry> signatureEntries = new ArrayList<ASiCEntry>(); - protected List<ASiCEntry> dataEntries = new ArrayList<ASiCEntry>(); - protected List<ASiCEntry> informationEntries = new ArrayList<ASiCEntry>(); + protected List<ASiCEntry> signatureEntries = new ArrayList<>(); + protected Map<String, ASiCEntry> dataEntries = new HashMap<>(); + protected List<ASiCEntry> informationEntries = new ArrayList<>(); - protected List<EntryHandler> handlers = new ArrayList<EntryHandler>(); + protected List<EntryHandler> handlers = new ArrayList<>(); - @Override - public void addDataEntry(ASiCEntry entry) { - this.dataEntries.add(entry); - } + @Override + public void addDataEntry(ASiCEntry entry) throws MOAApplicationException { + // check if entry with a specific name already exists + if (!dataEntries.containsKey(entry.getEntryName())) { + this.dataEntries.put(entry.getEntryName(), entry); - @Override - public void addSignatureEntry(ASiCEntry entry) { - this.signatureEntries.add(entry); + } else { + logger.warn("ASiC container already contains a DataEntry with name: " + entry.getEntryName() + + " ASiC container is INVALID"); + throw new MOAApplicationException("asic.0017", new Object[] { entry.getEntryName() }); } + } - @Override - public void addInformationEntry(ASiCEntry entry) { - this.informationEntries.add(entry); - } + @Override + public void addSignatureEntry(ASiCEntry entry) { + this.signatureEntries.add(entry); + } - public ASiCBaseFormatFactory() { - handlers.add(new MimefileHandler()); - handlers.add(new MetaInfHandler()); - handlers.add(new AllDataHandler()); - } - - public abstract ASiCFormat factoryFormat(); + @Override + public void addInformationEntry(ASiCEntry entry) { + this.informationEntries.add(entry); + } - protected abstract void validate() throws MOAException; + public ASiCBaseFormatFactory() { + handlers.add(new MimefileHandler()); + handlers.add(new MetaInfHandler()); + handlers.add(new AllDataHandler()); + } - public ASiC createASiC(InputStream is) throws MOAException { + public abstract ASiCFormat factoryFormat(); - ZipCommentReaderStream commentReaderStream = new ZipCommentReaderStream(is); + protected abstract void validate() throws MOAException; - ZipInputStream zipInputStream = new ZipInputStream(commentReaderStream); + public ASiC createASiC(InputStream is) throws MOAException { - try { - for (ZipEntry entry = zipInputStream.getNextEntry(); entry != null; entry = zipInputStream.getNextEntry()) { - String entryName = entry.getName(); + final ZipCommentReaderStream commentReaderStream = new ZipCommentReaderStream(is); - Iterator<EntryHandler> handlerIterator = this.handlers.iterator(); - while (handlerIterator.hasNext()) { - EntryHandler entryHandler = handlerIterator.next(); + final ZipInputStream zipInputStream = new ZipInputStream(commentReaderStream); - if (entryHandler.handle(entryName, zipInputStream, this)) { - break; - } - } - } - } catch(IOException e) { - logger.info("Failed to read from ASiC Container", e); - throw new MOAApplicationException("asic.0007", null); - } + try { + for (ZipEntry entry = zipInputStream.getNextEntry(); entry != null; entry = zipInputStream + .getNextEntry()) { + final String entryName = entry.getName(); + final Iterator<EntryHandler> handlerIterator = this.handlers.iterator(); + while (handlerIterator.hasNext()) { + final EntryHandler entryHandler = handlerIterator.next(); - if(this.mimeType == null) { - String mimeTypeComment = commentReaderStream.getFileComment(); - if(mimeTypeComment != null) { - this.mimeType = mimeTypeComment; - } + if (entryHandler.handle(entryName, zipInputStream, this)) { + break; + } } - - this.validate(); - - // unpack and retrieve all available information on ASiC signature - return new ASiCImpl(this.factoryFormat(), this.xadesSigned, this.cadesSigned, this.signatureEntries, dataEntries, this.informationEntries); + } + } catch (final IOException e) { + logger.info("Failed to read from ASiC Container", e); + throw new MOAApplicationException("asic.0007", null); } - @Override - public void setMimeType(String mimeType) { - this.mimeType = mimeType; + if (this.mimeType == null) { + final String mimeTypeComment = commentReaderStream.getFileComment(); + if (mimeTypeComment != null) { + this.mimeType = mimeTypeComment; + } } - public void setIsXAdES() throws MOAException { - if(this.cadesSigned) { - throw new MOAApplicationException("asic.0010", null); - } - this.xadesSigned = true; - } + this.validate(); - public void setIsCAdES() throws MOAException { - if(this.xadesSigned) { - throw new MOAApplicationException("asic.0010", null); - } - this.cadesSigned = true; - } + // unpack and retrieve all available information on ASiC signature + return new ASiCImpl(this.factoryFormat(), this.xadesSigned, this.cadesSigned, this.signatureEntries, + dataEntries.values(), this.informationEntries); + } - public void setIsTimestamped() throws MOAException { - throw new MOAApplicationException("asic.0013", null); - } + @Override + public void setMimeType(String mimeType) { + this.mimeType = mimeType; + } - @Override - public void setIsEvidenceERS() throws MOAException { - throw new MOAApplicationException("asic.0011", null); + @Override + public void setIsXAdES() throws MOAException { + if (this.cadesSigned) { + throw new MOAApplicationException("asic.0010", null); } + this.xadesSigned = true; + } - @Override - public void setIsEvidenceXML() throws MOAException { - throw new MOAApplicationException("asic.0012", null); + @Override + public void setIsCAdES() throws MOAException { + if (this.xadesSigned) { + throw new MOAApplicationException("asic.0010", null); } + this.cadesSigned = true; + } + + @Override + public void setIsTimestamped() throws MOAException { + throw new MOAApplicationException("asic.0013", null); + } + + @Override + public void setIsEvidenceERS() throws MOAException { + throw new MOAApplicationException("asic.0011", null); + } + + @Override + public void setIsEvidenceXML() throws MOAException { + throw new MOAApplicationException("asic.0012", null); + } } diff --git a/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/ASiCContainer.java b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/ASiCContainer.java index 73d1566..26f2924 100644 --- a/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/ASiCContainer.java +++ b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/ASiCContainer.java @@ -1,6 +1,7 @@ package at.gv.egiz.asic.impl; import at.gv.egiz.asic.api.ASiCEntry; +import at.gv.egovernment.moa.spss.MOAApplicationException; import at.gv.egovernment.moa.spss.MOAException; /** @@ -8,15 +9,22 @@ import at.gv.egovernment.moa.spss.MOAException; */ public interface ASiCContainer { - public void setMimeType(String mimeType); - public void addDataEntry(ASiCEntry entry); - public void addSignatureEntry(ASiCEntry entry); - public void addInformationEntry(ASiCEntry entry); + void setMimeType(String mimeType); - public void setIsXAdES() throws MOAException; - public void setIsCAdES() throws MOAException; - public void setIsEvidenceERS() throws MOAException; - public void setIsEvidenceXML() throws MOAException; - public void setIsTimestamped() throws MOAException; + void addDataEntry(ASiCEntry entry) throws MOAApplicationException; + + void addSignatureEntry(ASiCEntry entry); + + void addInformationEntry(ASiCEntry entry); + + void setIsXAdES() throws MOAException; + + void setIsCAdES() throws MOAException; + + void setIsEvidenceERS() throws MOAException; + + void setIsEvidenceXML() throws MOAException; + + void setIsTimestamped() throws MOAException; } diff --git a/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/ASiCExtendedFormatFactory.java b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/ASiCExtendedFormatFactory.java index f71552b..854bf81 100644 --- a/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/ASiCExtendedFormatFactory.java +++ b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/ASiCExtendedFormatFactory.java @@ -1,51 +1,49 @@ package at.gv.egiz.asic.impl; -import at.gv.egiz.asic.api.ASiC; -import at.gv.egiz.asic.api.ASiCFormat; -import at.gv.egiz.asic.impl.handler.*; +import java.util.Collections; +import java.util.Iterator; + import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import java.io.IOException; -import java.io.InputStream; -import java.util.ArrayList; -import java.util.Collections; -import java.util.Iterator; -import java.util.List; -import java.util.zip.ZipEntry; -import java.util.zip.ZipInputStream; +import at.gv.egiz.asic.api.ASiCFormat; +import at.gv.egiz.asic.impl.handler.ExtendedASiCCAdESHandler; +import at.gv.egiz.asic.impl.handler.ExtendedASiCXAdESHandler; +import at.gv.egiz.asic.impl.handler.ExtendedEvidenceERSRecordHandler; +import at.gv.egiz.asic.impl.handler.ExtendedEvidenceXMLRecordHandler; +import at.gv.egiz.asic.impl.handler.HandlerSorter; /** * Created by Andreas Fitzek on 6/15/16. */ public class ASiCExtendedFormatFactory extends ASiCBaseFormatFactory { - private static final Logger logger = LoggerFactory.getLogger(ASiCExtendedFormatFactory.class); + private static final Logger logger = LoggerFactory.getLogger(ASiCExtendedFormatFactory.class); - public ASiCExtendedFormatFactory() { - super(); - handlers.add(new ExtendedASiCCAdESHandler()); - handlers.add(new ExtendedASiCXAdESHandler()); - handlers.add(new ExtendedEvidenceERSRecordHandler()); - handlers.add(new ExtendedEvidenceXMLRecordHandler()); + public ASiCExtendedFormatFactory() { + super(); + handlers.add(new ExtendedASiCCAdESHandler()); + handlers.add(new ExtendedASiCXAdESHandler()); + handlers.add(new ExtendedEvidenceERSRecordHandler()); + handlers.add(new ExtendedEvidenceXMLRecordHandler()); - Collections.sort(handlers, new HandlerSorter()); + Collections.sort(handlers, new HandlerSorter()); - logger.debug("Handler ordering for ASiCExtendedFormatFactory"); - Iterator<EntryHandler> handlerIterator = this.handlers.iterator(); - while(handlerIterator.hasNext()) { - EntryHandler entryHandler = handlerIterator.next(); - logger.debug(" " + entryHandler.getPriority() + " " + entryHandler.getClass().getSimpleName()); - } + logger.debug("Handler ordering for ASiCExtendedFormatFactory"); + final Iterator<EntryHandler> handlerIterator = this.handlers.iterator(); + while (handlerIterator.hasNext()) { + final EntryHandler entryHandler = handlerIterator.next(); + logger.debug(" " + entryHandler.getPriority() + " " + entryHandler.getClass().getSimpleName()); } + } - @Override - protected void validate() { + @Override + protected void validate() { - } + } - @Override - public ASiCFormat factoryFormat() { - return ASiCFormat.ASiCE; - } + @Override + public ASiCFormat factoryFormat() { + return ASiCFormat.ASiCE; + } } diff --git a/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/ASiCImpl.java b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/ASiCImpl.java index c78385a..e7cfc7e 100644 --- a/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/ASiCImpl.java +++ b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/ASiCImpl.java @@ -1,73 +1,75 @@ package at.gv.egiz.asic.impl; +import java.util.ArrayList; +import java.util.Collection; +import java.util.List; + import at.gv.egiz.asic.api.ASiC; import at.gv.egiz.asic.api.ASiCEntry; import at.gv.egiz.asic.api.ASiCFormat; -import java.util.ArrayList; -import java.util.List; - /** * Created by Andreas Fitzek on 6/15/16. */ public class ASiCImpl implements ASiC { - private ASiCFormat format; - private boolean xades; - private boolean cades; + private final ASiCFormat format; + private final boolean xades; + private final boolean cades; - protected List<ASiCEntry> signatureEntries = new ArrayList<ASiCEntry>(); - protected List<ASiCEntry> dataEntries = new ArrayList<ASiCEntry>(); - protected List<ASiCEntry> informationEntries = new ArrayList<ASiCEntry>(); + protected List<ASiCEntry> signatureEntries = new ArrayList<>(); + protected Collection<ASiCEntry> dataEntries = new ArrayList<>(); + protected List<ASiCEntry> informationEntries = new ArrayList<>(); - public ASiCImpl(ASiCFormat format, boolean xades, boolean cades, List<ASiCEntry> signatureEntries, List<ASiCEntry> dataEntries, List<ASiCEntry> informationEntries) { - this.format = format; - this.xades = xades; - this.cades = cades; - this.signatureEntries = signatureEntries; - this.dataEntries = dataEntries; - this.informationEntries = informationEntries; - } + public ASiCImpl(ASiCFormat format, boolean xades, boolean cades, List<ASiCEntry> signatureEntries, + Collection<ASiCEntry> collection, List<ASiCEntry> informationEntries) { + this.format = format; + this.xades = xades; + this.cades = cades; + this.signatureEntries = signatureEntries; + this.dataEntries = collection; + this.informationEntries = informationEntries; + } - @Override - public ASiCFormat getFormat() { - return format; - } + @Override + public ASiCFormat getFormat() { + return format; + } - @Override - public boolean isXAdES() { - return xades; - } + @Override + public boolean isXAdES() { + return xades; + } - @Override - public boolean isCAdES() { - return cades; - } + @Override + public boolean isCAdES() { + return cades; + } - @Override - public List<ASiCEntry> getSignaturesEntries() { - return signatureEntries; - } + @Override + public List<ASiCEntry> getSignaturesEntries() { + return signatureEntries; + } - @Override - public List<ASiCEntry> getDataEntries() { - return dataEntries; - } + @Override + public Collection<ASiCEntry> getDataEntries() { + return dataEntries; + } - @Override - public List<ASiCEntry> getInformationEntries() { - return informationEntries; - } + @Override + public List<ASiCEntry> getInformationEntries() { + return informationEntries; + } - @Override - public String toString() { - return "ASiCImpl{" + - "format=" + format + - ", xades=" + xades + - ", cades=" + cades + - ", signatureEntries=" + signatureEntries + - ", dataEntries=" + dataEntries + - ", informationEntries=" + informationEntries + - '}'; - } + @Override + public String toString() { + return "ASiCImpl{" + + "format=" + format + + ", xades=" + xades + + ", cades=" + cades + + ", signatureEntries=" + signatureEntries + + ", dataEntries=" + dataEntries + + ", informationEntries=" + informationEntries + + '}'; + } } diff --git a/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/ASiCMOAVerifier.java b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/ASiCMOAVerifier.java index 51392da..1ae32ed 100644 --- a/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/ASiCMOAVerifier.java +++ b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/ASiCMOAVerifier.java @@ -1,87 +1,62 @@ package at.gv.egiz.asic.impl; -import at.gv.egiz.asic.ASiCManifestType; -import at.gv.egiz.asic.DataObjectReferenceType; -import at.gv.egiz.asic.ReferenceType; -import at.gv.egiz.asic.XAdESSignaturesType; -import at.gv.egiz.asic.api.*; +import java.util.ArrayList; +import java.util.Date; +import java.util.Iterator; +import java.util.List; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import at.gv.egiz.asic.api.ASiC; +import at.gv.egiz.asic.api.ASiCVerificationResult; +import at.gv.egiz.asic.api.ASiCVerifier; import at.gv.egiz.asic.impl.verifier.ExtendedCAdESVerifier; import at.gv.egiz.asic.impl.verifier.ExtendedXAdESVerifier; import at.gv.egiz.asic.impl.verifier.SimpleCAdESVerifier; import at.gv.egiz.asic.impl.verifier.SimpleXAdESVerifier; -import at.gv.egovernment.moa.spss.MOAApplicationException; import at.gv.egovernment.moa.spss.MOAException; -import at.gv.egovernment.moa.spss.MOARuntimeException; import at.gv.egovernment.moa.spss.MOASystemException; -import at.gv.egovernment.moa.spss.api.SPSSFactory; -import at.gv.egovernment.moa.spss.api.cmsverify.*; -import at.gv.egovernment.moa.spss.api.common.*; -import at.gv.egovernment.moa.spss.api.impl.SPSSFactoryImpl; -import at.gv.egovernment.moa.spss.api.xmlverify.SupplementProfile; -import at.gv.egovernment.moa.spss.api.xmlverify.VerifySignatureInfo; -import at.gv.egovernment.moa.spss.api.xmlverify.VerifySignatureLocation; -import at.gv.egovernment.moa.spss.api.xmlverify.VerifyXMLSignatureRequest; -import at.gv.egovernment.moa.spss.server.invoke.CMSSignatureVerificationInvoker; -import at.gv.egovernment.moa.spss.server.invoke.VerifyCMSSignatureResponseBuilder; -import at.gv.egovernment.moa.spss.server.invoke.XMLSignatureVerificationInvoker; -import iaik.server.cmspdfverify.CertificateValidationResult; -import org.apache.commons.codec.binary.Hex; -import org.apache.commons.io.IOUtils; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import javax.xml.bind.DataBindingException; -import javax.xml.bind.JAXB; -import javax.xml.crypto.dsig.Reference; -import java.io.ByteArrayInputStream; -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.io.InputStream; -import java.security.DigestInputStream; -import java.security.MessageDigest; -import java.security.NoSuchAlgorithmException; -import java.security.cert.X509Certificate; -import java.util.*; /** * Created by Andreas Fitzek on 6/15/16. */ public class ASiCMOAVerifier implements ASiCVerifier { - private static final Logger logger = LoggerFactory.getLogger(ASiCMOAVerifier.class); + private static final Logger logger = LoggerFactory.getLogger(ASiCMOAVerifier.class); - private List<Verifier> verifierMap = new ArrayList<Verifier>(); + private final List<Verifier> verifierMap = new ArrayList<>(); - public ASiCMOAVerifier() { - verifierMap.add(new SimpleCAdESVerifier()); - verifierMap.add(new SimpleXAdESVerifier()); - verifierMap.add(new ExtendedCAdESVerifier()); - verifierMap.add(new ExtendedXAdESVerifier()); - } + public ASiCMOAVerifier() { + verifierMap.add(new SimpleCAdESVerifier()); + verifierMap.add(new SimpleXAdESVerifier()); + verifierMap.add(new ExtendedCAdESVerifier()); + verifierMap.add(new ExtendedXAdESVerifier()); + } - @Override - public List<ASiCVerificationResult> verify(ASiC asic, String trustProfileID, Date date) throws MOAException { - List<ASiCVerificationResult> response = new ArrayList<ASiCVerificationResult>(); - boolean handled = false; + @Override + public List<ASiCVerificationResult> verify(ASiC asic, String trustProfileID, Date date) + throws MOAException { + final List<ASiCVerificationResult> response = new ArrayList<>(); + boolean handled = false; - Iterator<Verifier> verifierIterator = verifierMap.iterator(); + final Iterator<Verifier> verifierIterator = verifierMap.iterator(); - while (verifierIterator.hasNext()) { - Verifier verifier = verifierIterator.next(); - if (verifier.handles(asic)) { - verifier.verify(asic, trustProfileID, date, response); - handled = true; - break; - } - } - - if (!handled) { - logger.warn("Cannot handle ASiC: {}", asic); - throw new MOASystemException("asic.0016", null); - } + while (verifierIterator.hasNext()) { + final Verifier verifier = verifierIterator.next(); + if (verifier.handles(asic)) { + verifier.verify(asic, trustProfileID, date, response); + handled = true; + break; + } + } - return response; + if (!handled) { + logger.warn("Cannot handle ASiC: {}", asic); + throw new MOASystemException("asic.0016", null); } + return response; + } } diff --git a/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/ASiCSimpleFormatFactory.java b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/ASiCSimpleFormatFactory.java index 90b3081..f478f93 100644 --- a/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/ASiCSimpleFormatFactory.java +++ b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/ASiCSimpleFormatFactory.java @@ -1,54 +1,59 @@ package at.gv.egiz.asic.impl; -import at.gv.egiz.asic.api.ASiCFormat; -import at.gv.egiz.asic.impl.handler.*; -import at.gv.egovernment.moa.spss.MOAApplicationException; +import java.util.Collections; +import java.util.Iterator; + import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import java.util.Collections; -import java.util.Iterator; +import at.gv.egiz.asic.api.ASiCFormat; +import at.gv.egiz.asic.impl.handler.HandlerSorter; +import at.gv.egiz.asic.impl.handler.SimpleASiCCAdESHandler; +import at.gv.egiz.asic.impl.handler.SimpleASiCXAdESHandler; +import at.gv.egiz.asic.impl.handler.SimpleEvidenceERSRecordHandler; +import at.gv.egiz.asic.impl.handler.SimpleEvidenceXMLRecordHandler; +import at.gv.egovernment.moa.spss.MOAApplicationException; /** * Created by Andreas Fitzek on 6/15/16. */ public class ASiCSimpleFormatFactory extends ASiCBaseFormatFactory { - private static final Logger logger = LoggerFactory.getLogger(ASiCSimpleFormatFactory.class); + private static final Logger logger = LoggerFactory.getLogger(ASiCSimpleFormatFactory.class); - public ASiCSimpleFormatFactory() { - super(); + public ASiCSimpleFormatFactory() { + super(); - handlers.add(new SimpleASiCCAdESHandler()); - handlers.add(new SimpleASiCXAdESHandler()); - handlers.add(new SimpleEvidenceXMLRecordHandler()); - handlers.add(new SimpleEvidenceERSRecordHandler()); + handlers.add(new SimpleASiCCAdESHandler()); + handlers.add(new SimpleASiCXAdESHandler()); + handlers.add(new SimpleEvidenceXMLRecordHandler()); + handlers.add(new SimpleEvidenceERSRecordHandler()); - Collections.sort(handlers, new HandlerSorter()); + Collections.sort(handlers, new HandlerSorter()); - logger.debug("Handler ordering for ASiCSimpleFormatFactory"); - Iterator<EntryHandler> handlerIterator = this.handlers.iterator(); - while(handlerIterator.hasNext()) { - EntryHandler entryHandler = handlerIterator.next(); - logger.debug(" " + entryHandler.getPriority() + " " + entryHandler.getClass().getSimpleName()); - } + logger.debug("Handler ordering for ASiCSimpleFormatFactory"); + final Iterator<EntryHandler> handlerIterator = this.handlers.iterator(); + while (handlerIterator.hasNext()) { + final EntryHandler entryHandler = handlerIterator.next(); + logger.debug(" " + entryHandler.getPriority() + " " + entryHandler.getClass().getSimpleName()); } + } - @Override - protected void validate() throws MOAApplicationException { - if(this.dataEntries.size() != 1) { - logger.warn("There can only be one data entry for ASiC signatures in simple format"); - throw new MOAApplicationException("asic.0014", null); - } - - if(this.signatureEntries.size() != 1) { - logger.warn("There can only be one signature entry for ASiC signatures in simple format"); - throw new MOAApplicationException("asic.0015", null); - } + @Override + protected void validate() throws MOAApplicationException { + if (this.dataEntries.size() != 1) { + logger.warn("There can only be one data entry for ASiC signatures in simple format"); + throw new MOAApplicationException("asic.0014", null); } - @Override - public ASiCFormat factoryFormat() { - return ASiCFormat.ASiCS; + if (this.signatureEntries.size() != 1) { + logger.warn("There can only be one signature entry for ASiC signatures in simple format"); + throw new MOAApplicationException("asic.0015", null); } + } + + @Override + public ASiCFormat factoryFormat() { + return ASiCFormat.ASiCS; + } } diff --git a/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/AsicSignedFilesContainer.java b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/AsicSignedFilesContainer.java new file mode 100644 index 0000000..fe88a0e --- /dev/null +++ b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/AsicSignedFilesContainer.java @@ -0,0 +1,38 @@ +package at.gv.egiz.asic.impl; + +public class AsicSignedFilesContainer { + + private String uri = null; + private String hashAlg = null; + + /** + * Container element with ASIC signed files information + * + * @param uri Identifier of the file + * @param hashAlg Hash algorithm that is used to hash the file + */ + public AsicSignedFilesContainer(String uri, String hashAlg) { + this.uri = uri; + this.hashAlg = hashAlg; + + } + + /** + * Get file identifier + * + * @return + */ + public String getUri() { + return uri; + } + + /** + * Get hash algorithm that is used to hash the file + * + * @return + */ + public String getHashAlg() { + return hashAlg; + } + +} diff --git a/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/EntryHandler.java b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/EntryHandler.java index 7767b33..e5e19ed 100644 --- a/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/EntryHandler.java +++ b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/EntryHandler.java @@ -1,14 +1,15 @@ package at.gv.egiz.asic.impl; -import at.gv.egovernment.moa.spss.MOAException; - import java.io.IOException; import java.io.InputStream; +import at.gv.egovernment.moa.spss.MOAException; + /** * Created by afitzek on 6/15/16. */ public interface EntryHandler { - public int getPriority(); - public boolean handle(String entryName, InputStream is, ASiCContainer container) throws IOException, MOAException; + int getPriority(); + + boolean handle(String entryName, InputStream is, ASiCContainer container) throws IOException, MOAException; } diff --git a/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/Verifier.java b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/Verifier.java index 95a2450..29bba58 100644 --- a/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/Verifier.java +++ b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/Verifier.java @@ -1,18 +1,18 @@ package at.gv.egiz.asic.impl; +import java.util.Date; +import java.util.List; + import at.gv.egiz.asic.api.ASiC; import at.gv.egiz.asic.api.ASiCVerificationResult; import at.gv.egovernment.moa.spss.MOAException; -import java.util.Date; -import java.util.List; - /** * Created by Andreas Fitzek on 6/17/16. */ public interface Verifier { - public boolean handles(ASiC asic); + boolean handles(ASiC asic); - public void verify(ASiC asic, String trustProfileID, Date date, List<ASiCVerificationResult> response) - throws MOAException; + void verify(ASiC asic, String trustProfileID, Date date, List<ASiCVerificationResult> response) + throws MOAException; } diff --git a/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/ZipCommentReaderStream.java b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/ZipCommentReaderStream.java index 93b7651..dacc76e 100644 --- a/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/ZipCommentReaderStream.java +++ b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/ZipCommentReaderStream.java @@ -1,7 +1,5 @@ package at.gv.egiz.asic.impl; -import java.io.ByteArrayInputStream; -import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; @@ -10,171 +8,171 @@ import java.io.InputStream; */ public class ZipCommentReaderStream extends InputStream { - private InputStream inputStream; + private final InputStream inputStream; - private int[] tempBuffer = new int[22]; + private final int[] tempBuffer = new int[22]; - private int[] commentBuffer = null; + private int[] commentBuffer = null; - private int commentBufferContentLen = 0; - private int commentBufferContentOff = 0; + private int commentBufferContentLen = 0; + private int commentBufferContentOff = 0; - private int tempBufferContentLen = 0; - private int tempBufferContentOff = 0; + private int tempBufferContentLen = 0; + private int tempBufferContentOff = 0; - private String fileComment = null; + private String fileComment = null; - private static final byte[] directoryRecord = new byte[] { (byte)0x50, (byte)0x4b, 0x05, 0x06 }; + private static final byte[] directoryRecord = new byte[] { (byte) 0x50, (byte) 0x4b, 0x05, 0x06 }; - public ZipCommentReaderStream(InputStream inputStream) { - this.inputStream = inputStream; - } - - private int readIntIntoBuffer() throws IOException { - int tValue = this.inputStream.read(); - - if(this.tempBuffer.length <= tempBufferContentOff) { - throw new IOException("Temp Buffer is out of space! @ " + tempBufferContentOff); - } + public ZipCommentReaderStream(InputStream inputStream) { + this.inputStream = inputStream; + } - this.tempBuffer[tempBufferContentOff] = tValue; - tempBufferContentOff++; - tempBufferContentLen++; + private int readIntIntoBuffer() throws IOException { + final int tValue = this.inputStream.read(); - return tValue; + if (this.tempBuffer.length <= tempBufferContentOff) { + throw new IOException("Temp Buffer is out of space! @ " + tempBufferContentOff); } - private int readIntIntoCommentBuffer() throws IOException { - int tValue = this.inputStream.read(); + this.tempBuffer[tempBufferContentOff] = tValue; + tempBufferContentOff++; + tempBufferContentLen++; - if(this.commentBuffer.length <= commentBufferContentOff) { - throw new IOException("Comment Buffer is out of space! @ " + commentBufferContentOff); - } + return tValue; + } - this.commentBuffer[commentBufferContentOff] = tValue; - commentBufferContentOff++; - commentBufferContentLen++; + private int readIntIntoCommentBuffer() throws IOException { + final int tValue = this.inputStream.read(); - return tValue; + if (this.commentBuffer.length <= commentBufferContentOff) { + throw new IOException("Comment Buffer is out of space! @ " + commentBufferContentOff); } - private void checkMagicBytes() throws IOException { - boolean foundMagic = true; - tempBufferContentOff = 0; - tempBufferContentLen = 0; - for(int i = 1; i < directoryRecord.length; i++) { - int tValue = readIntIntoBuffer(); - if(tValue != directoryRecord[i]) { - foundMagic = false; - break; - } - if(tValue < 0) { - // Found EOF - return; - } - } + this.commentBuffer[commentBufferContentOff] = tValue; + commentBufferContentOff++; + commentBufferContentLen++; + + return tValue; + } + + private void checkMagicBytes() throws IOException { + boolean foundMagic = true; + tempBufferContentOff = 0; + tempBufferContentLen = 0; + for (int i = 1; i < directoryRecord.length; i++) { + final int tValue = readIntIntoBuffer(); + if (tValue != directoryRecord[i]) { + foundMagic = false; + break; + } + if (tValue < 0) { + // Found EOF + return; + } + } - if(foundMagic) { - // read input stream until comment length - for(int i = 0; i < 16; i++) { - int tValue = readIntIntoBuffer(); + if (foundMagic) { + // read input stream until comment length + for (int i = 0; i < 16; i++) { + final int tValue = readIntIntoBuffer(); - if(tValue < 0) { - // Found EOF - return; - } - } + if (tValue < 0) { + // Found EOF + return; + } + } - int commentlengthHigh = readIntIntoBuffer(); + final int commentlengthHigh = readIntIntoBuffer(); - if(commentlengthHigh < 0) { - // Found EOF - return; - } + if (commentlengthHigh < 0) { + // Found EOF + return; + } - int commentlengthLow = readIntIntoBuffer(); + final int commentlengthLow = readIntIntoBuffer(); - if(commentlengthLow < 0) { - // Found EOF - return; - } + if (commentlengthLow < 0) { + // Found EOF + return; + } - int commentLength = commentlengthLow * 255 + commentlengthHigh; + final int commentLength = commentlengthLow * 255 + commentlengthHigh; - if(commentLength == 0) { - return; - } + if (commentLength == 0) { + return; + } - this.commentBuffer = new int[commentLength]; + this.commentBuffer = new int[commentLength]; - commentBufferContentOff = 0; - commentBufferContentLen = 0; + commentBufferContentOff = 0; + commentBufferContentLen = 0; - // read comment buffer string - for(int i = 0; i < commentLength; i++) { - int tValue = readIntIntoCommentBuffer(); + // read comment buffer string + for (int i = 0; i < commentLength; i++) { + final int tValue = readIntIntoCommentBuffer(); - if(tValue < 0) { - // Found EOF - return; - } - } + if (tValue < 0) { + // Found EOF + return; + } + } - byte[] stringBuffer = new byte[this.commentBuffer.length]; + final byte[] stringBuffer = new byte[this.commentBuffer.length]; - for(int i = 0; i < stringBuffer.length; i++) { - stringBuffer[i] = (byte)this.commentBuffer[i]; - } + for (int i = 0; i < stringBuffer.length; i++) { + stringBuffer[i] = (byte) this.commentBuffer[i]; + } - this.fileComment = new String(stringBuffer); - } + this.fileComment = new String(stringBuffer); } + } - @Override - public int read() throws IOException { - int value = -1; - if(tempBufferContentLen > 0) { - value = this.tempBuffer[tempBufferContentOff]; - tempBufferContentOff++; + @Override + public int read() throws IOException { + int value = -1; + if (tempBufferContentLen > 0) { + value = this.tempBuffer[tempBufferContentOff]; + tempBufferContentOff++; - // reset temp buffer - if(tempBufferContentOff >= tempBufferContentLen) { - tempBufferContentOff = 0; - tempBufferContentLen = 0; - } + // reset temp buffer + if (tempBufferContentOff >= tempBufferContentLen) { + tempBufferContentOff = 0; + tempBufferContentLen = 0; + } - return value; - } + return value; + } - if(this.commentBuffer != null) { - value = this.commentBuffer[commentBufferContentOff]; + if (this.commentBuffer != null) { + value = this.commentBuffer[commentBufferContentOff]; - commentBufferContentOff++; + commentBufferContentOff++; - // reset comment buffer - if(commentBufferContentOff >= commentBufferContentLen) { - commentBufferContentOff = 0; - commentBufferContentLen = 0; - this.commentBuffer = null; - } + // reset comment buffer + if (commentBufferContentOff >= commentBufferContentLen) { + commentBufferContentOff = 0; + commentBufferContentLen = 0; + this.commentBuffer = null; + } - return value; - } - - value = this.inputStream.read(); + return value; + } - if(value == directoryRecord[0] && this.fileComment == null) { - // might have found start of magic bytes - checkMagicBytes(); - // reset buffer offsets - tempBufferContentOff = 0; - commentBufferContentOff = 0; - } + value = this.inputStream.read(); - return value; + if (value == directoryRecord[0] && this.fileComment == null) { + // might have found start of magic bytes + checkMagicBytes(); + // reset buffer offsets + tempBufferContentOff = 0; + commentBufferContentOff = 0; } - public String getFileComment() { - return this.fileComment; - } + return value; + } + + public String getFileComment() { + return this.fileComment; + } } diff --git a/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/AllDataHandler.java b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/AllDataHandler.java index fa31bfc..e1d95c0 100644 --- a/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/AllDataHandler.java +++ b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/AllDataHandler.java @@ -1,28 +1,30 @@ package at.gv.egiz.asic.impl.handler; +import java.io.IOException; +import java.io.InputStream; + import at.gv.egiz.asic.api.ASiCConstants; -import at.gv.egiz.asic.impl.ASiCContainer; import at.gv.egiz.asic.api.ASiCEntry; +import at.gv.egiz.asic.impl.ASiCContainer; import at.gv.egiz.asic.impl.EntryHandler; - -import java.io.IOException; -import java.io.InputStream; +import at.gv.egovernment.moa.spss.MOAApplicationException; /** * Created by afitzek on 6/15/16. */ public class AllDataHandler extends BaseHandler implements EntryHandler, ASiCConstants { - @Override - public int getPriority() { - return 100; - } + @Override + public int getPriority() { + return 100; + } - @Override - public boolean handle(String entryName, InputStream is, ASiCContainer container) throws IOException { + @Override + public boolean handle(String entryName, InputStream is, ASiCContainer container) throws IOException, + MOAApplicationException { - ASiCEntry entry = buildASiCEntry(entryName, is); - container.addDataEntry(entry); + final ASiCEntry entry = buildASiCEntry(entryName, is); + container.addDataEntry(entry); - return true; - } + return true; + } } diff --git a/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/BaseHandler.java b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/BaseHandler.java index 2b5ca9a..208edb4 100644 --- a/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/BaseHandler.java +++ b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/BaseHandler.java @@ -1,27 +1,28 @@ package at.gv.egiz.asic.impl.handler; -import at.gv.egiz.asic.api.ASiCConstants; -import at.gv.egiz.asic.api.ASiCEntry; -import at.gv.egiz.asic.impl.EntryHandler; -import org.apache.commons.io.IOUtils; - import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; +import org.apache.commons.io.IOUtils; + +import at.gv.egiz.asic.api.ASiCConstants; +import at.gv.egiz.asic.api.ASiCEntry; +import at.gv.egiz.asic.impl.EntryHandler; + /** * Created by Andreas Fitzek on 6/15/16. */ public abstract class BaseHandler implements EntryHandler, ASiCConstants { - protected ASiCEntry buildASiCEntry(String entryName, InputStream is) throws IOException { - ASiCEntry entry = new ASiCEntry(); - ByteArrayOutputStream baos = new ByteArrayOutputStream(); - IOUtils.copy(is, baos); - entry.setContents(new ByteArrayInputStream(baos.toByteArray())); - entry.setEntryName(entryName); - return entry; - } + protected ASiCEntry buildASiCEntry(String entryName, InputStream is) throws IOException { + final ASiCEntry entry = new ASiCEntry(); + final ByteArrayOutputStream baos = new ByteArrayOutputStream(); + IOUtils.copy(is, baos); + entry.setContents(new ByteArrayInputStream(baos.toByteArray())); + entry.setEntryName(entryName); + return entry; + } } diff --git a/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/CAdESHandler.java b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/CAdESHandler.java index 3ee97fc..fef2e38 100644 --- a/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/CAdESHandler.java +++ b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/CAdESHandler.java @@ -5,16 +5,13 @@ import at.gv.egiz.asic.impl.ASiCContainer; import at.gv.egiz.asic.impl.EntryHandler; import at.gv.egovernment.moa.spss.MOAException; -import java.io.IOException; -import java.io.InputStream; - /** * Created by Andreas Fitzek on 6/15/16. */ public abstract class CAdESHandler extends SignatureHandler implements EntryHandler, ASiCConstants { - @Override - protected void setType(ASiCContainer container) throws MOAException { - container.setIsCAdES(); - } + @Override + protected void setType(ASiCContainer container) throws MOAException { + container.setIsCAdES(); + } } diff --git a/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/EvidenceERSRecordHandler.java b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/EvidenceERSRecordHandler.java index f89c6d0..5ba05d6 100644 --- a/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/EvidenceERSRecordHandler.java +++ b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/EvidenceERSRecordHandler.java @@ -3,16 +3,13 @@ package at.gv.egiz.asic.impl.handler; import at.gv.egiz.asic.impl.ASiCContainer; import at.gv.egovernment.moa.spss.MOAException; -import java.io.IOException; -import java.io.InputStream; - /** * Created by Andreas Fitzek on 6/17/16. */ public abstract class EvidenceERSRecordHandler extends SignatureHandler { - @Override - protected void setType(ASiCContainer container) throws MOAException { - container.setIsEvidenceERS(); - } + @Override + protected void setType(ASiCContainer container) throws MOAException { + container.setIsEvidenceERS(); + } } diff --git a/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/EvidenceXMLRecordHandler.java b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/EvidenceXMLRecordHandler.java index 4516bb0..932687b 100644 --- a/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/EvidenceXMLRecordHandler.java +++ b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/EvidenceXMLRecordHandler.java @@ -8,8 +8,8 @@ import at.gv.egovernment.moa.spss.MOAException; */ public abstract class EvidenceXMLRecordHandler extends SignatureHandler { - @Override - protected void setType(ASiCContainer container) throws MOAException { - container.setIsEvidenceXML(); - } + @Override + protected void setType(ASiCContainer container) throws MOAException { + container.setIsEvidenceXML(); + } } diff --git a/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/ExtendedASiCCAdESHandler.java b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/ExtendedASiCCAdESHandler.java index 464bcf6..6eb4d60 100644 --- a/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/ExtendedASiCCAdESHandler.java +++ b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/ExtendedASiCCAdESHandler.java @@ -1,13 +1,12 @@ package at.gv.egiz.asic.impl.handler; -import at.gv.egiz.asic.api.ASiCConstants; - /** * Created by Andreas Fitzek on 6/15/16. */ public class ExtendedASiCCAdESHandler extends CAdESHandler { - @Override - protected boolean matches(String entryName) { - return entryName.endsWith(".p7s") && entryName.startsWith(FILE_META_INF) && entryName.contains("signature"); - } + @Override + protected boolean matches(String entryName) { + return entryName.endsWith(".p7s") && entryName.startsWith(FILE_META_INF) && entryName.contains( + "signature"); + } } diff --git a/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/ExtendedASiCXAdESHandler.java b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/ExtendedASiCXAdESHandler.java index 28b21a3..199dda1 100644 --- a/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/ExtendedASiCXAdESHandler.java +++ b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/ExtendedASiCXAdESHandler.java @@ -2,10 +2,17 @@ package at.gv.egiz.asic.impl.handler; /** * Created by Andreas Fitzek on 6/15/16. + * + * Updated by Thomas Lenz on 02/03/17 */ public class ExtendedASiCXAdESHandler extends XAdESHandler { - @Override - protected boolean matches(String entryName) { - return entryName.endsWith(".xml") && entryName.startsWith(FILE_META_INF) && entryName.contains("signature"); - } + @Override + protected boolean matches(String entryName) { + return entryName.endsWith(".xml") + && entryName.startsWith(FILE_META_INF) + && entryName.contains("signatures") +// && !entryName.contains("ASiCManifest") +// && !entryName.contains("AsiCManifest") + ; + } } diff --git a/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/ExtendedEvidenceERSRecordHandler.java b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/ExtendedEvidenceERSRecordHandler.java index ccf9224..ab6f2d5 100644 --- a/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/ExtendedEvidenceERSRecordHandler.java +++ b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/ExtendedEvidenceERSRecordHandler.java @@ -4,8 +4,9 @@ package at.gv.egiz.asic.impl.handler; * Created by Andreas Fitzek on 6/17/16. */ public class ExtendedEvidenceERSRecordHandler extends EvidenceERSRecordHandler { - @Override - protected boolean matches(String entryName) { - return entryName.endsWith(".ers") && entryName.startsWith(FILE_META_INF) && entryName.contains("evidencerecord"); - } + @Override + protected boolean matches(String entryName) { + return entryName.endsWith(".ers") && entryName.startsWith(FILE_META_INF) && entryName.contains( + "evidencerecord"); + } } diff --git a/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/ExtendedEvidenceXMLRecordHandler.java b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/ExtendedEvidenceXMLRecordHandler.java index d24d61b..ecac8b6 100644 --- a/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/ExtendedEvidenceXMLRecordHandler.java +++ b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/ExtendedEvidenceXMLRecordHandler.java @@ -4,8 +4,9 @@ package at.gv.egiz.asic.impl.handler; * Created by Andreas Fitzek on 6/17/16. */ public class ExtendedEvidenceXMLRecordHandler extends EvidenceERSRecordHandler { - @Override - protected boolean matches(String entryName) { - return entryName.endsWith(".xml") && entryName.startsWith(FILE_META_INF) && entryName.contains("evidencerecord"); - } + @Override + protected boolean matches(String entryName) { + return entryName.endsWith(".xml") && entryName.startsWith(FILE_META_INF) && entryName.contains( + "evidencerecord"); + } } diff --git a/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/HandlerSorter.java b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/HandlerSorter.java index 36a215d..2f753cf 100644 --- a/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/HandlerSorter.java +++ b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/HandlerSorter.java @@ -1,16 +1,16 @@ package at.gv.egiz.asic.impl.handler; -import at.gv.egiz.asic.impl.EntryHandler; - import java.util.Comparator; +import at.gv.egiz.asic.impl.EntryHandler; + /** * Created by afitzek on 6/15/16. */ public class HandlerSorter implements Comparator<EntryHandler> { - @Override - public int compare(EntryHandler o1, EntryHandler o2) { - return Integer.compare(o1.getPriority(), o2.getPriority()); - } + @Override + public int compare(EntryHandler o1, EntryHandler o2) { + return Integer.compare(o1.getPriority(), o2.getPriority()); + } } diff --git a/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/MetaInfHandler.java b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/MetaInfHandler.java index ec4f101..0127ea4 100644 --- a/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/MetaInfHandler.java +++ b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/MetaInfHandler.java @@ -1,33 +1,33 @@ package at.gv.egiz.asic.impl.handler; +import java.io.IOException; +import java.io.InputStream; + import at.gv.egiz.asic.api.ASiCConstants; -import at.gv.egiz.asic.impl.ASiCContainer; import at.gv.egiz.asic.api.ASiCEntry; +import at.gv.egiz.asic.impl.ASiCContainer; import at.gv.egiz.asic.impl.EntryHandler; -import java.io.IOException; -import java.io.InputStream; - /** * Created by Andreas Fitzek on 6/15/16. */ public class MetaInfHandler extends BaseHandler implements EntryHandler, ASiCConstants { - @Override - public int getPriority() { - return 20; - } + @Override + public int getPriority() { + return 20; + } - @Override - public boolean handle(String entryName, InputStream is, ASiCContainer container) throws IOException { + @Override + public boolean handle(String entryName, InputStream is, ASiCContainer container) throws IOException { - boolean metainf = entryName.startsWith(FILE_META_INF); + final boolean metainf = entryName.startsWith(FILE_META_INF); - if(metainf) { - ASiCEntry entry = buildASiCEntry(entryName, is); - container.addInformationEntry(entry); - return true; - } - - return false; + if (metainf) { + final ASiCEntry entry = buildASiCEntry(entryName, is); + container.addInformationEntry(entry); + return true; } + + return false; + } } diff --git a/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/MimefileHandler.java b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/MimefileHandler.java index 68fc87e..5a67fb8 100644 --- a/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/MimefileHandler.java +++ b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/MimefileHandler.java @@ -1,36 +1,37 @@ package at.gv.egiz.asic.impl.handler; +import java.io.IOException; +import java.io.InputStream; + +import org.apache.commons.io.IOUtils; + import at.gv.egiz.asic.api.ASiCConstants; import at.gv.egiz.asic.impl.ASiCContainer; import at.gv.egiz.asic.impl.EntryHandler; -import org.apache.commons.io.IOUtils; - -import java.io.IOException; -import java.io.InputStream; /** * Created by afitzek on 6/15/16. */ public class MimefileHandler implements EntryHandler, ASiCConstants { - private boolean isMimeType(String entryName) { - return FILE_MIME_TYPE.equalsIgnoreCase(entryName); - } - - @Override - public int getPriority() { - return 1; - } + private boolean isMimeType(String entryName) { + return FILE_MIME_TYPE.equalsIgnoreCase(entryName); + } - @Override - public boolean handle(String entryName, InputStream is, ASiCContainer container) throws IOException { + @Override + public int getPriority() { + return 1; + } - if(isMimeType(entryName)) { - String mimeType = IOUtils.toString(is, "UTF-8"); - container.setMimeType(mimeType); - return true; - } + @Override + public boolean handle(String entryName, InputStream is, ASiCContainer container) throws IOException { - return false; + if (isMimeType(entryName)) { + final String mimeType = IOUtils.toString(is, "UTF-8"); + container.setMimeType(mimeType); + return true; } + + return false; + } } diff --git a/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/SignatureHandler.java b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/SignatureHandler.java index 621c9d4..08adbe9 100644 --- a/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/SignatureHandler.java +++ b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/SignatureHandler.java @@ -1,36 +1,37 @@ package at.gv.egiz.asic.impl.handler; -import at.gv.egiz.asic.impl.ASiCContainer; -import at.gv.egovernment.moa.spss.MOAException; - import java.io.IOException; import java.io.InputStream; +import at.gv.egiz.asic.impl.ASiCContainer; +import at.gv.egovernment.moa.spss.MOAException; + /** * Created by Andreas Fitzek on 6/15/16. */ public abstract class SignatureHandler extends BaseHandler { - @Override - public int getPriority() { - return 0; - } - - protected abstract boolean matches(String entryName); + @Override + public int getPriority() { + return 0; + } - protected abstract void setType(ASiCContainer container) throws MOAException; + protected abstract boolean matches(String entryName); - @Override - public boolean handle(String entryName, InputStream is, ASiCContainer container) throws IOException, MOAException { - boolean signature = this.matches(entryName); + protected abstract void setType(ASiCContainer container) throws MOAException; - if(signature) { - this.setType(container); - container.addSignatureEntry(buildASiCEntry(entryName, is)); - return true; - } + @Override + public boolean handle(String entryName, InputStream is, ASiCContainer container) throws IOException, + MOAException { + final boolean signature = this.matches(entryName); - return false; + if (signature) { + this.setType(container); + container.addSignatureEntry(buildASiCEntry(entryName, is)); + return true; } + return false; + } + } diff --git a/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/SimpleASiCCAdESHandler.java b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/SimpleASiCCAdESHandler.java index fdeda41..b049767 100644 --- a/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/SimpleASiCCAdESHandler.java +++ b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/SimpleASiCCAdESHandler.java @@ -6,8 +6,8 @@ import at.gv.egiz.asic.api.ASiCConstants; * Created by Andreas Fitzek on 6/15/16. */ public class SimpleASiCCAdESHandler extends CAdESHandler { - @Override - protected boolean matches(String entryName) { - return (ASiCConstants.FILE_META_INF + "signature.p7s").equalsIgnoreCase(entryName); - } + @Override + protected boolean matches(String entryName) { + return (ASiCConstants.FILE_META_INF + "signature.p7s").equalsIgnoreCase(entryName); + } } diff --git a/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/SimpleASiCXAdESHandler.java b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/SimpleASiCXAdESHandler.java index 66a7546..8425b51 100644 --- a/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/SimpleASiCXAdESHandler.java +++ b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/SimpleASiCXAdESHandler.java @@ -6,8 +6,8 @@ import at.gv.egiz.asic.api.ASiCConstants; * Created by Andreas Fitzek on 6/15/16. */ public class SimpleASiCXAdESHandler extends XAdESHandler { - @Override - protected boolean matches(String entryName) { - return (ASiCConstants.FILE_META_INF + "signatures.xml").equalsIgnoreCase(entryName); - } + @Override + protected boolean matches(String entryName) { + return (ASiCConstants.FILE_META_INF + "signatures.xml").equalsIgnoreCase(entryName); + } } diff --git a/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/SimpleEvidenceERSRecordHandler.java b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/SimpleEvidenceERSRecordHandler.java index 58221f5..63a70da 100644 --- a/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/SimpleEvidenceERSRecordHandler.java +++ b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/SimpleEvidenceERSRecordHandler.java @@ -6,8 +6,8 @@ import at.gv.egiz.asic.api.ASiCConstants; * Created by Andreas Fitzek on 6/17/16. */ public class SimpleEvidenceERSRecordHandler extends EvidenceERSRecordHandler { - @Override - protected boolean matches(String entryName) { - return (ASiCConstants.FILE_META_INF + "evidencerecord.ers").equalsIgnoreCase(entryName); - } + @Override + protected boolean matches(String entryName) { + return (ASiCConstants.FILE_META_INF + "evidencerecord.ers").equalsIgnoreCase(entryName); + } } diff --git a/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/SimpleEvidenceXMLRecordHandler.java b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/SimpleEvidenceXMLRecordHandler.java index dacc218..db7c063 100644 --- a/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/SimpleEvidenceXMLRecordHandler.java +++ b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/SimpleEvidenceXMLRecordHandler.java @@ -6,8 +6,8 @@ import at.gv.egiz.asic.api.ASiCConstants; * Created by Andreas Fitzek on 6/17/16. */ public class SimpleEvidenceXMLRecordHandler extends EvidenceERSRecordHandler { - @Override - protected boolean matches(String entryName) { - return (ASiCConstants.FILE_META_INF + "evidencerecord.xml").equalsIgnoreCase(entryName); - } + @Override + protected boolean matches(String entryName) { + return (ASiCConstants.FILE_META_INF + "evidencerecord.xml").equalsIgnoreCase(entryName); + } } diff --git a/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/XAdESHandler.java b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/XAdESHandler.java index ff19759..19e37c1 100644 --- a/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/XAdESHandler.java +++ b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/XAdESHandler.java @@ -10,8 +10,8 @@ import at.gv.egovernment.moa.spss.MOAException; */ public abstract class XAdESHandler extends SignatureHandler implements EntryHandler, ASiCConstants { - @Override - protected void setType(ASiCContainer container) throws MOAException { - container.setIsXAdES(); - } + @Override + protected void setType(ASiCContainer container) throws MOAException { + container.setIsXAdES(); + } } diff --git a/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/verifier/BaseVerifier.java b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/verifier/BaseVerifier.java index a0bc516..3060f67 100644 --- a/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/verifier/BaseVerifier.java +++ b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/verifier/BaseVerifier.java @@ -1,61 +1,61 @@ package at.gv.egiz.asic.impl.verifier; -import at.gv.egiz.asic.impl.Verifier; -import at.gv.egovernment.moa.spss.api.cmsverify.VerifyCMSSignatureResponse; -import org.apache.commons.codec.binary.Hex; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import java.util.Arrays; import java.util.HashMap; import java.util.Map; +import org.apache.commons.codec.binary.Hex; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import at.gv.egiz.asic.impl.Verifier; + /** * Created by Andreas Fitzek on 6/17/16. */ public abstract class BaseVerifier implements Verifier { - protected static Map<String, String> hashTranslator = new HashMap<String, String>(); - - static { - hashTranslator.put("http://www.w3.org/2000/09/xmldsig#sha1", "SHA-1"); - hashTranslator.put("http://www.w3.org/2001/04/xmldsig-more#sha224", "SHA-224"); - hashTranslator.put("http://www.w3.org/2001/04/xmlenc#sha256", "SHA-256"); - hashTranslator.put("http://www.w3.org/2001/04/xmldsig-more#sha384", "SHA-384"); - hashTranslator.put("http://www.w3.org/2001/04/xmlenc#sha512", "SHA-512"); - hashTranslator.put("http://www.w3.org/2001/04/xmlenc#ripemd160", "RIPEMD-160"); - } - - private static final Logger logger = LoggerFactory.getLogger(BaseVerifier.class); - - protected boolean compareHash(byte[] reference, byte[] calculated, String refName) { - String referenceHex = Hex.encodeHexString(reference); - String calculatedHex = Hex.encodeHexString(calculated); - if(Arrays.equals(reference, calculated)) { - logger.info("Digest from manifest do match for {}", refName); - return true; - } else { - logger.info("Digest from manifest do not match for {}", refName); - logger.info("Digest from manifest for {} : {}", refName, referenceHex); - logger.info("Digest from calculated for {} : {}", refName, calculatedHex); - return false; - } + protected static Map<String, String> hashTranslator = new HashMap<>(); + + static { + hashTranslator.put("http://www.w3.org/2000/09/xmldsig#sha1", "SHA-1"); + hashTranslator.put("http://www.w3.org/2001/04/xmldsig-more#sha224", "SHA-224"); + hashTranslator.put("http://www.w3.org/2001/04/xmlenc#sha256", "SHA-256"); + hashTranslator.put("http://www.w3.org/2001/04/xmldsig-more#sha384", "SHA-384"); + hashTranslator.put("http://www.w3.org/2001/04/xmlenc#sha512", "SHA-512"); + hashTranslator.put("http://www.w3.org/2001/04/xmlenc#ripemd160", "RIPEMD-160"); + } + + private static final Logger logger = LoggerFactory.getLogger(BaseVerifier.class); + + protected boolean compareHash(byte[] reference, byte[] calculated, String refName) { + final String referenceHex = Hex.encodeHexString(reference); + final String calculatedHex = Hex.encodeHexString(calculated); + if (Arrays.equals(reference, calculated)) { + logger.debug("Digest from manifest do match for {}", refName); + return true; + } else { + logger.info("Digest from manifest do not match for {}", refName); + logger.info("Digest from manifest for {} : {}", refName, referenceHex); + logger.info("Digest from calculated for {} : {}", refName, calculatedHex); + return false; } + } - protected MessageDigest getMessageDigestFromURI(String uri) { - try { + protected MessageDigest getMessageDigestFromURI(String uri) { + try { - String algo = hashTranslator.get(uri); + String algo = hashTranslator.get(uri); - if(algo == null) { - algo = uri; - } + if (algo == null) { + algo = uri; + } - return MessageDigest.getInstance(algo); - } catch (NoSuchAlgorithmException e) { - return null; - } + return MessageDigest.getInstance(algo); + } catch (final NoSuchAlgorithmException e) { + return null; } + } } diff --git a/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/verifier/CAdESVerifier.java b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/verifier/CAdESVerifier.java index 5ab677c..ac96f90 100644 --- a/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/verifier/CAdESVerifier.java +++ b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/verifier/CAdESVerifier.java @@ -1,5 +1,8 @@ package at.gv.egiz.asic.impl.verifier; +import java.io.InputStream; +import java.util.Date; + import at.gv.egiz.asic.api.ASiC; import at.gv.egovernment.moa.spss.MOAException; import at.gv.egovernment.moa.spss.api.SPSSFactory; @@ -9,35 +12,34 @@ import at.gv.egovernment.moa.spss.api.cmsverify.VerifyCMSSignatureRequest; import at.gv.egovernment.moa.spss.api.cmsverify.VerifyCMSSignatureResponse; import at.gv.egovernment.moa.spss.server.invoke.CMSSignatureVerificationInvoker; -import java.io.InputStream; -import java.util.Date; - /** * Created by Andreas Fitzek on 6/17/16. */ public abstract class CAdESVerifier extends BaseVerifier { - @Override - public boolean handles(ASiC asic) { - return asic.isCAdES(); - } + @Override + public boolean handles(ASiC asic) { + return asic.isCAdES(); + } - protected VerifyCMSSignatureResponse runCMSVerification(InputStream signedData, InputStream cmsSignature, - String trustProfileID, Date date) throws MOAException { - CMSContent cmsContent = SPSSFactory.getInstance().createCMSContent(signedData); - CMSDataObject cmsDataObject = SPSSFactory.getInstance().createCMSDataObject(null, cmsContent, null, null); + protected VerifyCMSSignatureResponse runCMSVerification(InputStream signedData, InputStream cmsSignature, + String trustProfileID, Date date) throws MOAException { + final CMSContent cmsContent = SPSSFactory.getInstance().createCMSContent(signedData); + final CMSDataObject cmsDataObject = SPSSFactory.getInstance().createCMSDataObject(null, cmsContent, null, + null); - VerifyCMSSignatureRequest verifyCMSSignatureRequest = - SPSSFactory.getInstance().createVerifyCMSSignatureRequest( - VerifyCMSSignatureRequest.ALL_SIGNATORIES, - date, - cmsSignature, - cmsDataObject, - trustProfileID, - false, - true); + final VerifyCMSSignatureRequest verifyCMSSignatureRequest = + SPSSFactory.getInstance().createVerifyCMSSignatureRequest( + VerifyCMSSignatureRequest.ALL_SIGNATORIES, + date, + cmsSignature, + cmsDataObject, + trustProfileID, + false, + true); - VerifyCMSSignatureResponse verifyResponse = CMSSignatureVerificationInvoker.getInstance().verifyCMSSignature( - verifyCMSSignatureRequest); - return verifyResponse; - } + final VerifyCMSSignatureResponse verifyResponse = CMSSignatureVerificationInvoker.getInstance() + .verifyCMSSignature( + verifyCMSSignatureRequest); + return verifyResponse; + } } diff --git a/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/verifier/ExtendedCAdESVerifier.java b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/verifier/ExtendedCAdESVerifier.java index e71f263..62ac1c8 100644 --- a/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/verifier/ExtendedCAdESVerifier.java +++ b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/verifier/ExtendedCAdESVerifier.java @@ -1,168 +1,179 @@ package at.gv.egiz.asic.impl.verifier; +import java.io.IOException; +import java.security.DigestInputStream; +import java.security.MessageDigest; +import java.util.ArrayList; +import java.util.Date; +import java.util.Iterator; +import java.util.List; + +import javax.xml.bind.JAXB; + +import org.apache.commons.codec.binary.Hex; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + import at.gv.egiz.asic.ASiCManifestType; import at.gv.egiz.asic.DataObjectReferenceType; import at.gv.egiz.asic.api.ASiC; import at.gv.egiz.asic.api.ASiCEntry; import at.gv.egiz.asic.api.ASiCFormat; import at.gv.egiz.asic.api.ASiCVerificationResult; +import at.gv.egiz.asic.impl.AsicSignedFilesContainer; import at.gv.egovernment.moa.spss.MOAApplicationException; import at.gv.egovernment.moa.spss.MOAException; import at.gv.egovernment.moa.spss.MOASystemException; import at.gv.egovernment.moa.spss.api.SPSSFactory; -import at.gv.egovernment.moa.spss.api.cmsverify.*; +import at.gv.egovernment.moa.spss.api.cmsverify.VerifyCMSSignatureResponse; +import at.gv.egovernment.moa.spss.api.cmsverify.VerifyCMSSignatureResponseElement; import at.gv.egovernment.moa.spss.api.common.CheckResult; import at.gv.egovernment.moa.spss.api.common.SignerInfo; -import at.gv.egovernment.moa.spss.server.invoke.CMSSignatureVerificationInvoker; -import org.apache.commons.codec.binary.Hex; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import javax.xml.bind.JAXB; -import java.io.IOException; -import java.security.DigestInputStream; -import java.security.MessageDigest; -import java.util.ArrayList; -import java.util.Date; -import java.util.Iterator; -import java.util.List; /** * Created by Andreas Fitzek on 6/17/16. */ public class ExtendedCAdESVerifier extends CAdESVerifier { - private static final Logger logger = LoggerFactory.getLogger(ExtendedCAdESVerifier.class); + private static final Logger logger = LoggerFactory.getLogger(ExtendedCAdESVerifier.class); - @Override - public boolean handles(ASiC asic) { - return super.handles(asic) && ASiCFormat.ASiCE.equals(asic.getFormat()); - } + @Override + public boolean handles(ASiC asic) { + return super.handles(asic) && ASiCFormat.ASiCE.equals(asic.getFormat()); + } + + @Override + public void verify(ASiC asic, String trustProfileID, Date date, List<ASiCVerificationResult> response) + throws MOAException { + try { + final Iterator<ASiCEntry> informationsIterator = asic.getInformationEntries().iterator(); - @Override - public void verify(ASiC asic, String trustProfileID, Date date, List<ASiCVerificationResult> response) throws MOAException { - try { - Iterator<ASiCEntry> informationsIterator = asic.getInformationEntries().iterator(); + while (informationsIterator.hasNext()) { + final ASiCEntry informationEntry = informationsIterator.next(); + + if (informationEntry.getEntryName().startsWith("META-INF/") && informationEntry.getEntryName() + .endsWith(".xml") + && informationEntry.getEntryName().contains("ASiCManifest")) { + // Got ASiC Manifest + final ASiCManifestType asiCManifestType = JAXB.unmarshal(informationEntry.getContents(), + ASiCManifestType.class); + final String signatureName = asiCManifestType.getSigReference().getURI(); + + ASiCEntry cadesSignature = null; + + // find referenced signature + final Iterator<ASiCEntry> cadesSignatureIterator = asic.getSignaturesEntries().iterator(); + + while (cadesSignatureIterator.hasNext()) { + final ASiCEntry tmpCadesSignature = cadesSignatureIterator.next(); + if (signatureName.equalsIgnoreCase(tmpCadesSignature.getEntryName())) { + cadesSignature = tmpCadesSignature; + break; + } + } - while (informationsIterator.hasNext()) { - ASiCEntry informationEntry = informationsIterator.next(); - - if (informationEntry.getEntryName().startsWith("META-INF/") && informationEntry.getEntryName().endsWith(".xml") - && informationEntry.getEntryName().contains("ASiCManifest")) { - // Got ASiC Manifest - ASiCManifestType asiCManifestType = JAXB.unmarshal(informationEntry.getContents(), ASiCManifestType.class); - String signatureName = asiCManifestType.getSigReference().getURI(); - - ASiCEntry cadesSignature = null; - - // find referenced signature - Iterator<ASiCEntry> cadesSignatureIterator = asic.getSignaturesEntries().iterator(); - - while (cadesSignatureIterator.hasNext()) { - ASiCEntry tmpCadesSignature = cadesSignatureIterator.next(); - if (signatureName.equalsIgnoreCase(tmpCadesSignature.getEntryName())) { - cadesSignature = tmpCadesSignature; - break; - } - } - - if (cadesSignature == null) { - throw new MOAApplicationException("asic.0004", new Object[]{signatureName}); - } - - // verify all references - - boolean allReferencesValid = true; - List<String> signedFiles = new ArrayList<String>(); - Iterator<DataObjectReferenceType> dataObjectReferenceTypeIterator = asiCManifestType.getDataObjectReference().iterator(); - while (dataObjectReferenceTypeIterator.hasNext()) { - DataObjectReferenceType dataObjectReferenceType = dataObjectReferenceTypeIterator.next(); - - String mdURI = dataObjectReferenceType.getDigestMethod().getAlgorithm(); - String uri = dataObjectReferenceType.getURI(); - signedFiles.add(uri); - - Iterator<ASiCEntry> dataEntryIterator = asic.getDataEntries().iterator(); - - while (dataEntryIterator.hasNext()) { - ASiCEntry dataEntry = dataEntryIterator.next(); - if (uri.equalsIgnoreCase(dataEntry.getEntryName())) { - MessageDigest md = this.getMessageDigestFromURI(mdURI); - if (md == null) { - throw new MOAApplicationException("asic.0005", new Object[]{mdURI}); - } - DigestInputStream dis = new DigestInputStream(dataEntry.getContents(), md); - byte[] buffer = new byte[8096]; - while (dis.read(buffer) > 0) ; - - if (!this.compareHash(dataObjectReferenceType.getDigestValue(), md.digest(), uri)) { - allReferencesValid = false; - } - - dataEntry.getContents().reset(); - break; - } - } - } - - if (allReferencesValid) { - logger.info("ASiCManifest {} references do match data files!", - informationEntry.getEntryName()); - } - - informationEntry.getContents().reset(); - MessageDigest md = this.getMessageDigestFromURI("SHA-256"); - DigestInputStream dis = new DigestInputStream(informationEntry.getContents(), md); - - VerifyCMSSignatureResponse verifyResponse = - this.runCMSVerification(dis, cadesSignature.getContents(), trustProfileID, date); - - dis.close(); - - String fullDigest = Hex.encodeHexString(md.digest()); - logger.info("CMS Input data {}", fullDigest); - - if (!allReferencesValid) { - logger.warn("ASiCManifest {} References do not match data files!", - informationEntry.getEntryName()); - List responseElements = new ArrayList(); - - SignerInfo signerInfo; - - - // add SignerInfo element - Iterator responseElementIterator = verifyResponse.getResponseElements().iterator(); - while (responseElementIterator.hasNext()) { - VerifyCMSSignatureResponseElement orig = (VerifyCMSSignatureResponseElement) - responseElementIterator.next(); - - CheckResult signatureCheck; - CheckResult certificateCheck; - - // add SignatureCheck element - signatureCheck = SPSSFactory.getInstance().createCheckResult(1, null); - - // build the response element - VerifyCMSSignatureResponseElement responseElement = - SPSSFactory.getInstance().createVerifyCMSSignatureResponseElement( - orig.getSignerInfo(), - signatureCheck, - orig.getCertificateCheck(), - orig.getAdESFormResults(), - orig.getExtendedCertificateCheck()); - responseElements.add(responseElement); - } - VerifyCMSSignatureResponse verifyCMSSignatureResponse = SPSSFactory.getInstance(). - createVerifyCMSSignatureResponse(responseElements); - response.add(new ASiCVerificationResult(signedFiles, verifyCMSSignatureResponse)); - continue; - } else { - response.add(new ASiCVerificationResult(signedFiles, verifyResponse)); - } + if (cadesSignature == null) { + throw new MOAApplicationException("asic.0004", new Object[] { signatureName }); + } + + // verify all references + + boolean allReferencesValid = true; + final List<AsicSignedFilesContainer> signedFiles = new ArrayList<>(); + final Iterator<DataObjectReferenceType> dataObjectReferenceTypeIterator = asiCManifestType + .getDataObjectReference().iterator(); + while (dataObjectReferenceTypeIterator.hasNext()) { + final DataObjectReferenceType dataObjectReferenceType = dataObjectReferenceTypeIterator.next(); + + final String mdURI = dataObjectReferenceType.getDigestMethod().getAlgorithm(); + final String uri = dataObjectReferenceType.getURI(); + signedFiles.add(new AsicSignedFilesContainer(uri, mdURI)); + + final Iterator<ASiCEntry> dataEntryIterator = asic.getDataEntries().iterator(); + + while (dataEntryIterator.hasNext()) { + final ASiCEntry dataEntry = dataEntryIterator.next(); + if (uri.equalsIgnoreCase(dataEntry.getEntryName())) { + final MessageDigest md = this.getMessageDigestFromURI(mdURI); + if (md == null) { + throw new MOAApplicationException("asic.0005", new Object[] { mdURI }); } + final DigestInputStream dis = new DigestInputStream(dataEntry.getContents(), md); + final byte[] buffer = new byte[8096]; + while (dis.read(buffer) > 0) { + ; + } + + if (!this.compareHash(dataObjectReferenceType.getDigestValue(), md.digest(), uri)) { + allReferencesValid = false; + } + + dataEntry.getContents().reset(); + break; + } + } + } + + if (allReferencesValid) { + logger.info("ASiCManifest {} references do match data files!", + informationEntry.getEntryName()); + } + + informationEntry.getContents().reset(); + final MessageDigest md = this.getMessageDigestFromURI("SHA-256"); + final DigestInputStream dis = new DigestInputStream(informationEntry.getContents(), md); + + final VerifyCMSSignatureResponse verifyResponse = + this.runCMSVerification(dis, cadesSignature.getContents(), trustProfileID, date); + + dis.close(); + + final String fullDigest = Hex.encodeHexString(md.digest()); + logger.debug("CMS Input data {}", fullDigest); + + if (!allReferencesValid) { + logger.warn("ASiCManifest {} References do not match data files!", + informationEntry.getEntryName()); + final List responseElements = new ArrayList(); + + final SignerInfo signerInfo; + + // add SignerInfo element + final Iterator responseElementIterator = verifyResponse.getResponseElements().iterator(); + while (responseElementIterator.hasNext()) { + final VerifyCMSSignatureResponseElement orig = + (VerifyCMSSignatureResponseElement) responseElementIterator.next(); + + CheckResult signatureCheck; + final CheckResult certificateCheck; + + // add SignatureCheck element + signatureCheck = SPSSFactory.getInstance().createCheckResult(1, null); + + // build the response element + final VerifyCMSSignatureResponseElement responseElement = + SPSSFactory.getInstance().createVerifyCMSSignatureResponseElement( + orig.getSignerInfo(), + signatureCheck, + orig.getCertificateCheck(), + orig.getAdESFormResults(), + orig.getExtendedCertificateCheck(), + orig.getSignatureAlgorithm(), + null, + null); + responseElements.add(responseElement); } - } catch (IOException ex) { - throw new MOASystemException("asic.0003", null, ex); + final VerifyCMSSignatureResponse verifyCMSSignatureResponse = SPSSFactory.getInstance() + .createVerifyCMSSignatureResponse(responseElements); + response.add(new ASiCVerificationResult(signedFiles, verifyCMSSignatureResponse)); + continue; + } else { + response.add(new ASiCVerificationResult(signedFiles, verifyResponse)); + } } + } + } catch (final IOException ex) { + throw new MOASystemException("asic.0003", null, ex); } + } } diff --git a/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/verifier/ExtendedXAdESVerifier.java b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/verifier/ExtendedXAdESVerifier.java index 58f0185..565921f 100644 --- a/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/verifier/ExtendedXAdESVerifier.java +++ b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/verifier/ExtendedXAdESVerifier.java @@ -1,5 +1,30 @@ package at.gv.egiz.asic.impl.verifier; +import java.io.IOException; +import java.io.InputStream; +import java.io.UnsupportedEncodingException; +import java.util.ArrayList; +import java.util.Date; +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; +import java.util.Map; + +import javax.xml.bind.JAXB; +import javax.xml.bind.JAXBContext; +import javax.xml.bind.JAXBElement; +import javax.xml.bind.JAXBException; +import javax.xml.parsers.DocumentBuilder; +import javax.xml.parsers.DocumentBuilderFactory; +import javax.xml.parsers.ParserConfigurationException; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.w3c.dom.Document; +import org.w3c.dom.Node; +import org.w3c.dom.NodeList; +import org.xml.sax.SAXException; + import at.gv.egiz.asic.ReferenceType; import at.gv.egiz.asic.SignatureType; import at.gv.egiz.asic.XAdESSignaturesType; @@ -7,178 +32,195 @@ import at.gv.egiz.asic.api.ASiC; import at.gv.egiz.asic.api.ASiCEntry; import at.gv.egiz.asic.api.ASiCFormat; import at.gv.egiz.asic.api.ASiCVerificationResult; +import at.gv.egiz.asic.impl.AsicSignedFilesContainer; +import at.gv.egovernment.moa.spss.MOAApplicationException; import at.gv.egovernment.moa.spss.MOAException; import at.gv.egovernment.moa.spss.MOARuntimeException; import at.gv.egovernment.moa.spss.MOASystemException; import at.gv.egovernment.moa.spss.api.SPSSFactory; import at.gv.egovernment.moa.spss.api.common.Content; import at.gv.egovernment.moa.spss.api.common.XMLDataObjectAssociation; -import at.gv.egovernment.moa.spss.api.impl.SPSSFactoryImpl; import at.gv.egovernment.moa.spss.api.xmlverify.SupplementProfile; import at.gv.egovernment.moa.spss.api.xmlverify.VerifySignatureInfo; import at.gv.egovernment.moa.spss.api.xmlverify.VerifySignatureLocation; import at.gv.egovernment.moa.spss.api.xmlverify.VerifyXMLSignatureRequest; import at.gv.egovernment.moa.spss.server.invoke.XMLSignatureVerificationInvoker; import at.gv.egovernment.moaspss.util.URLEncoder; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.w3c.dom.*; -import org.xml.sax.SAXException; - -import javax.xml.bind.*; -import javax.xml.parsers.DocumentBuilder; -import javax.xml.parsers.DocumentBuilderFactory; -import javax.xml.parsers.ParserConfigurationException; -import java.io.*; -import java.util.*; /** * Created by Andreas Fitzek on 6/17/16. */ public class ExtendedXAdESVerifier extends XAdESVerifier { - private static final Logger logger = LoggerFactory.getLogger(ExtendedXAdESVerifier.class); + private static final Logger logger = LoggerFactory.getLogger(ExtendedXAdESVerifier.class); - private void resetStream(InputStream is) { - try { - is.reset(); - } catch (IOException e) { - throw new MOARuntimeException("Failed to reset inputStream", null, e); - } + private void resetStream(InputStream is) { + try { + is.reset(); + } catch (final IOException e) { + throw new MOARuntimeException("Failed to reset inputStream", null, e); } + } - @Override - public void verify(ASiC asic, String trustProfileID, Date date, List<ASiCVerificationResult> response) throws MOAException { - try { - Iterator<ASiCEntry> xadesSignatureIterator = asic.getSignaturesEntries().iterator(); + @Override + public void verify(ASiC asic, String trustProfileID, Date date, List<ASiCVerificationResult> response) + throws MOAException { + try { + final Iterator<ASiCEntry> xadesSignatureIterator = asic.getSignaturesEntries().iterator(); - while (xadesSignatureIterator.hasNext()) { - ASiCEntry xadesSignature = xadesSignatureIterator.next(); + while (xadesSignatureIterator.hasNext()) { + final ASiCEntry xadesSignature = xadesSignatureIterator.next(); - List<SignatureType> xmlSignatures = null; - //int signatureSize = 0; + List<SignatureType> xmlSignatures = null; + // int signatureSize = 0; - - // TODO: support not only XAdESSignaturesType object 4.4.3.2 + // TODO: support not only XAdESSignaturesType object 4.4.3.2 // XAdESSignaturesType xAdESSignaturesType = JAXB.unmarshal(xadesSignature.getContents(), XAdESSignaturesType.class); - // signatureSize = xAdESSignaturesType.getSignature().size(); - - // this.resetStream(xadesSignature.getContents()); - DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance(); - dbFactory.setNamespaceAware(true); - //dbFactory.setValidating(true); - DocumentBuilder dBuilder = dbFactory.newDocumentBuilder(); - Document doc = dBuilder.parse(xadesSignature.getContents()); - - this.resetStream(xadesSignature.getContents()); - - org.w3c.dom.Element rootElement = doc.getDocumentElement(); - - if ("http://www.w3.org/2000/09/xmldsig#".equals(rootElement.getNamespaceURI()) && - "Signature".equals(rootElement.getTagName())) { - JAXBContext jc = JAXBContext.newInstance("at.gv.egiz.asic"); - JAXBElement<SignatureType> xmlSignatureJaxb = jc.createUnmarshaller().unmarshal(rootElement, SignatureType.class); - SignatureType xmlSignature = xmlSignatureJaxb.getValue(); - xmlSignatures = new ArrayList<SignatureType>(); - xmlSignatures.add(xmlSignature); - } else if ("http://uri.etsi.org/02918/v1.2.1#".equals(rootElement.getNamespaceURI()) && - "XAdESSignatures".equals(rootElement.getLocalName())) { - XAdESSignaturesType xAdESSignaturesType = JAXB.unmarshal(xadesSignature.getContents(), XAdESSignaturesType.class); - xmlSignatures = xAdESSignaturesType.getSignature(); - } else { - NodeList childrenNodes = rootElement.getChildNodes(); - for(int i = 0; i < childrenNodes.getLength(); i++) { - Node node = childrenNodes.item(i); - JAXBContext jc = JAXBContext.newInstance("at.gv.egiz.asic"); - xmlSignatures = new ArrayList<SignatureType>(); - if ("http://www.w3.org/2000/09/xmldsig#".equals(node.getNamespaceURI()) && - "Signature".equals(rootElement.getTagName())) { - JAXBElement<SignatureType> xmlSignatureJaxb = jc.createUnmarshaller().unmarshal(rootElement, SignatureType.class); - SignatureType xmlSignature = xmlSignatureJaxb.getValue(); - xmlSignatures.add(xmlSignature); - } - } - } - - - this.resetStream(xadesSignature.getContents()); - - Map namespaces = new HashMap(); - - //namespaces.put("asic", "http://uri.etsi.org/02918/v1.2.1#"); - namespaces.put("ds", "http://www.w3.org/2000/09/xmldsig#"); - - for (int i = 0; i < xmlSignatures.size(); i++) { - //NodeList nodes = (NodeList) result; - - //for(int i = 0; i < nodes.getLength(); i++) { - //Node node = nodes.item(i); - //JAXBContext jc = JAXBContext.newInstance( "at.gv.egiz.asic" ); - //JAXBElement<SignatureType> xmlSignatureJaxb = jc.createUnmarshaller().unmarshal(node, SignatureType.class); - //SignatureType xmlSignature = xmlSignatureJaxb.getValue(); - List<String> signedFiles = new ArrayList<String>(); - - //Iterator<ReferenceType> it = xmlSignature.getSignedInfo().getReference().iterator(); - Iterator<ReferenceType> it = xmlSignatures.get(i).getSignedInfo().getReference().iterator(); - while (it.hasNext()) { - ReferenceType refType = it.next(); - if (!refType.getURI().startsWith("#")) { - signedFiles.add(refType.getURI()); - } - } - - Iterator<ASiCEntry> dataEntryIterator = asic.getDataEntries().iterator(); - - Content content = SPSSFactory.getInstance().createContent(xadesSignature.getContents(), null); - - List supplementsList = new ArrayList(); - while (dataEntryIterator.hasNext()) { - ASiCEntry dataEntry = dataEntryIterator.next(); - dataEntry.getContents().reset(); - String entryName = URLEncoder.encode(dataEntry.getEntryName(), "UTF-8") - .replaceAll("\\+", "%20") - .replaceAll("\\%21", "!") - .replaceAll("\\%2F", "/") - //.replaceAll("\\%27", "'") - //.replaceAll("\\%28", "(") - //.replaceAll("\\%29", ")") - .replaceAll("\\%7E", "~"); - logger.info("Adding Entry : {}", entryName); - Content dataContent = SPSSFactory.getInstance().createContent(dataEntry.getContents(), entryName); - XMLDataObjectAssociation association = SPSSFactoryImpl.getInstance().createXMLDataObjectAssociation(null, dataContent); - SupplementProfile profile = SPSSFactoryImpl.getInstance().createSupplementProfile(association); - supplementsList.add(profile); - } - String location = "(//ds:Signature)[" + (i + 1) + "]"; - - VerifySignatureLocation verifySignatureLocation = SPSSFactory.getInstance().createVerifySignatureLocation( - location, namespaces); - - VerifySignatureInfo verifySignatureInfo = SPSSFactory.getInstance().createVerifySignatureInfo(content, verifySignatureLocation); - - VerifyXMLSignatureRequest verifyXMLSignatureRequest = SPSSFactory.getInstance().createVerifyXMLSignatureRequest( - date, verifySignatureInfo, supplementsList, null, false, trustProfileID, true); - - response.add(new ASiCVerificationResult(signedFiles, - XMLSignatureVerificationInvoker.getInstance().verifyXMLSignature(verifyXMLSignatureRequest))); - } + // signatureSize = xAdESSignaturesType.getSignature().size(); + + // this.resetStream(xadesSignature.getContents()); + final DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance(); + dbFactory.setNamespaceAware(true); + // dbFactory.setValidating(true); + final DocumentBuilder dBuilder = dbFactory.newDocumentBuilder(); + final Document doc = dBuilder.parse(xadesSignature.getContents()); + + this.resetStream(xadesSignature.getContents()); + + final org.w3c.dom.Element rootElement = doc.getDocumentElement(); + + if ("http://www.w3.org/2000/09/xmldsig#".equals(rootElement.getNamespaceURI()) && + "Signature".equals(rootElement.getTagName())) { + final JAXBContext jc = JAXBContext.newInstance("at.gv.egiz.asic"); + final JAXBElement<SignatureType> xmlSignatureJaxb = jc.createUnmarshaller().unmarshal(rootElement, + SignatureType.class); + final SignatureType xmlSignature = xmlSignatureJaxb.getValue(); + xmlSignatures = new ArrayList<>(); + xmlSignatures.add(xmlSignature); + } else if ("http://uri.etsi.org/02918/v1.2.1#".equals(rootElement.getNamespaceURI()) && + "XAdESSignatures".equals(rootElement.getLocalName())) { + final XAdESSignaturesType xAdESSignaturesType = JAXB.unmarshal(xadesSignature.getContents(), + XAdESSignaturesType.class); + xmlSignatures = xAdESSignaturesType.getSignature(); + + // TODO: maybe add additional XAdES version + } else if ("http://uri.etsi.org/02918/v1.1.1#".equals(rootElement.getNamespaceURI()) && + "XAdESSignatures".equals(rootElement.getLocalName())) { + + logger.warn( + "ASiC v1.1.1 is not supported any more. MOA-SP only supports v1.2.1 (http://uri.etsi.org/02918/v1.2.1#)"); + // XAdESSignaturesType xAdESSignaturesType = + // JAXB.unmarshal(xadesSignature.getContents(), XAdESSignaturesType.class); + // xmlSignatures = xAdESSignaturesType.getSignature(); + + } else { + final NodeList childrenNodes = rootElement.getChildNodes(); + for (int i = 0; i < childrenNodes.getLength(); i++) { + final Node node = childrenNodes.item(i); + final JAXBContext jc = JAXBContext.newInstance("at.gv.egiz.asic"); + xmlSignatures = new ArrayList<>(); + if ("http://www.w3.org/2000/09/xmldsig#".equals(node.getNamespaceURI()) && + "Signature".equals(rootElement.getTagName())) { + final JAXBElement<SignatureType> xmlSignatureJaxb = jc.createUnmarshaller().unmarshal( + rootElement, SignatureType.class); + final SignatureType xmlSignature = xmlSignatureJaxb.getValue(); + xmlSignatures.add(xmlSignature); } - } catch( UnsupportedEncodingException e) { - logger.error("UTF8 encoding not supported by system. MOA will not work on this system!", e); - throw new MOARuntimeException("asic.0003", null, e); - } catch (IOException ex) { - throw new MOASystemException("asic.0003", null, ex); - } catch (ParserConfigurationException e) { - throw new MOASystemException("asic.0003", null, e); - } catch (SAXException e) { - throw new MOASystemException("asic.0003", null, e); - } catch (JAXBException e) { - throw new MOASystemException("asic.0003", null, e); + } } - } - @Override - public boolean handles(ASiC asic) { - return super.handles(asic) && ASiCFormat.ASiCE.equals(asic.getFormat()); + this.resetStream(xadesSignature.getContents()); + + final Map namespaces = new HashMap(); + + // namespaces.put("asic", "http://uri.etsi.org/02918/v1.2.1#"); + namespaces.put("ds", "http://www.w3.org/2000/09/xmldsig#"); + + if (xmlSignatures == null || xmlSignatures.size() == 0) { + logger.info("ASiC container does not include a signature or signature format is not supported"); + throw new MOAApplicationException("asic.0016", null); + + } + + for (int i = 0; i < xmlSignatures.size(); i++) { + // NodeList nodes = (NodeList) result; + + // for(int i = 0; i < nodes.getLength(); i++) { + // Node node = nodes.item(i); + // JAXBContext jc = JAXBContext.newInstance( "at.gv.egiz.asic" ); + // JAXBElement<SignatureType> xmlSignatureJaxb = + // jc.createUnmarshaller().unmarshal(node, SignatureType.class); + // SignatureType xmlSignature = xmlSignatureJaxb.getValue(); + final List<AsicSignedFilesContainer> signedFiles = new ArrayList<>(); + + // Iterator<ReferenceType> it = + // xmlSignature.getSignedInfo().getReference().iterator(); + final Iterator<ReferenceType> it = xmlSignatures.get(i).getSignedInfo().getReference().iterator(); + while (it.hasNext()) { + final ReferenceType refType = it.next(); + if (!refType.getURI().startsWith("#")) { + signedFiles.add(new AsicSignedFilesContainer(refType.getURI(), refType.getDigestMethod() + .getAlgorithm())); + } + } + + final Iterator<ASiCEntry> dataEntryIterator = asic.getDataEntries().iterator(); + + final Content content = SPSSFactory.getInstance().createContent(xadesSignature.getContents(), null); + + final List supplementsList = new ArrayList(); + while (dataEntryIterator.hasNext()) { + final ASiCEntry dataEntry = dataEntryIterator.next(); + dataEntry.getContents().reset(); + final String entryName = URLEncoder.encode(dataEntry.getEntryName(), "UTF-8") + .replaceAll("\\+", "%20") + .replaceAll("\\%21", "!") + .replaceAll("\\%2F", "/") + // .replaceAll("\\%27", "'") + // .replaceAll("\\%28", "(") + // .replaceAll("\\%29", ")") + .replaceAll("\\%7E", "~"); + logger.info("Adding Entry : {}", entryName); + final Content dataContent = SPSSFactory.getInstance().createContent(dataEntry.getContents(), + entryName); + final XMLDataObjectAssociation association = SPSSFactory.getInstance() + .createXMLDataObjectAssociation(null, dataContent); + final SupplementProfile profile = SPSSFactory.getInstance().createSupplementProfile(association); + supplementsList.add(profile); + } + final String location = "(//ds:Signature)[" + (i + 1) + "]"; + + final VerifySignatureLocation verifySignatureLocation = SPSSFactory.getInstance() + .createVerifySignatureLocation( + location, namespaces); + + final VerifySignatureInfo verifySignatureInfo = SPSSFactory.getInstance().createVerifySignatureInfo( + content, verifySignatureLocation); + + final VerifyXMLSignatureRequest verifyXMLSignatureRequest = SPSSFactory.getInstance() + .createVerifyXMLSignatureRequest( + date, verifySignatureInfo, supplementsList, null, false, trustProfileID, true); + + response.add(new ASiCVerificationResult(signedFiles, + XMLSignatureVerificationInvoker.getInstance().verifyXMLSignature(verifyXMLSignatureRequest))); + } + } + } catch (final UnsupportedEncodingException e) { + logger.error("UTF8 encoding not supported by system. MOA will not work on this system!", e); + throw new MOARuntimeException("asic.0003", null, e); + } catch (final IOException ex) { + throw new MOASystemException("asic.0003", null, ex); + } catch (final ParserConfigurationException e) { + throw new MOASystemException("asic.0003", null, e); + } catch (final SAXException e) { + throw new MOASystemException("asic.0003", null, e); + } catch (final JAXBException e) { + throw new MOASystemException("asic.0003", null, e); } + } + + @Override + public boolean handles(ASiC asic) { + return super.handles(asic) && ASiCFormat.ASiCE.equals(asic.getFormat()); + } } diff --git a/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/verifier/SimpleCAdESVerifier.java b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/verifier/SimpleCAdESVerifier.java index b86e290..5af344a 100644 --- a/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/verifier/SimpleCAdESVerifier.java +++ b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/verifier/SimpleCAdESVerifier.java @@ -1,45 +1,42 @@ package at.gv.egiz.asic.impl.verifier; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + import at.gv.egiz.asic.api.ASiC; import at.gv.egiz.asic.api.ASiCEntry; import at.gv.egiz.asic.api.ASiCFormat; import at.gv.egiz.asic.api.ASiCVerificationResult; +import at.gv.egiz.asic.impl.AsicSignedFilesContainer; import at.gv.egovernment.moa.spss.MOAException; -import at.gv.egovernment.moa.spss.api.SPSSFactory; -import at.gv.egovernment.moa.spss.api.cmsverify.CMSContent; -import at.gv.egovernment.moa.spss.api.cmsverify.CMSDataObject; -import at.gv.egovernment.moa.spss.api.cmsverify.VerifyCMSSignatureRequest; import at.gv.egovernment.moa.spss.api.cmsverify.VerifyCMSSignatureResponse; -import at.gv.egovernment.moa.spss.server.invoke.CMSSignatureVerificationInvoker; - -import java.util.ArrayList; -import java.util.Date; -import java.util.List; /** * Created by Andreas Fitzek on 6/17/16. */ public class SimpleCAdESVerifier extends CAdESVerifier { - @Override - public boolean handles(ASiC asic) { - return super.handles(asic) && ASiCFormat.ASiCS.equals(asic.getFormat()); - } - - @Override - public void verify(ASiC asic, String trustProfileID, Date date, List<ASiCVerificationResult> response) throws MOAException { - ASiCEntry cadesSignature = asic.getSignaturesEntries().get(0); + @Override + public boolean handles(ASiC asic) { + return super.handles(asic) && ASiCFormat.ASiCS.equals(asic.getFormat()); + } - ASiCEntry dataEntry = asic.getDataEntries().get(0); + @Override + public void verify(ASiC asic, String trustProfileID, Date date, List<ASiCVerificationResult> response) + throws MOAException { + final ASiCEntry cadesSignature = asic.getSignaturesEntries().get(0); - List<String> signedFiles = new ArrayList<String>(); - signedFiles.add(dataEntry.getEntryName()); + // get first element + final ASiCEntry dataEntry = asic.getDataEntries().iterator().next(); - VerifyCMSSignatureResponse verifyResponse = - this.runCMSVerification(dataEntry.getContents(), cadesSignature.getContents(), trustProfileID, date); + final List<AsicSignedFilesContainer> signedFiles = new ArrayList<>(); + signedFiles.add(new AsicSignedFilesContainer(dataEntry.getEntryName(), null)); - response.add(new ASiCVerificationResult(signedFiles, - verifyResponse)); - } + final VerifyCMSSignatureResponse verifyResponse = + this.runCMSVerification(dataEntry.getContents(), cadesSignature.getContents(), trustProfileID, date); + response.add(new ASiCVerificationResult(signedFiles, + verifyResponse)); + } } diff --git a/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/verifier/SimpleXAdESVerifier.java b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/verifier/SimpleXAdESVerifier.java index a71462c..bc418e2 100644 --- a/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/verifier/SimpleXAdESVerifier.java +++ b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/verifier/SimpleXAdESVerifier.java @@ -1,128 +1,142 @@ package at.gv.egiz.asic.impl.verifier; +import java.io.IOException; +import java.io.UnsupportedEncodingException; +import java.util.ArrayList; +import java.util.Date; +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; +import java.util.Map; + +import javax.xml.bind.JAXB; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + import at.gv.egiz.asic.ReferenceType; import at.gv.egiz.asic.XAdESSignaturesType; import at.gv.egiz.asic.api.ASiC; import at.gv.egiz.asic.api.ASiCEntry; import at.gv.egiz.asic.api.ASiCFormat; import at.gv.egiz.asic.api.ASiCVerificationResult; +import at.gv.egiz.asic.impl.AsicSignedFilesContainer; import at.gv.egovernment.moa.spss.MOAApplicationException; import at.gv.egovernment.moa.spss.MOAException; import at.gv.egovernment.moa.spss.MOARuntimeException; import at.gv.egovernment.moa.spss.api.SPSSFactory; import at.gv.egovernment.moa.spss.api.common.Content; import at.gv.egovernment.moa.spss.api.common.XMLDataObjectAssociation; -import at.gv.egovernment.moa.spss.api.impl.SPSSFactoryImpl; import at.gv.egovernment.moa.spss.api.xmlverify.SupplementProfile; import at.gv.egovernment.moa.spss.api.xmlverify.VerifySignatureInfo; import at.gv.egovernment.moa.spss.api.xmlverify.VerifySignatureLocation; import at.gv.egovernment.moa.spss.api.xmlverify.VerifyXMLSignatureRequest; import at.gv.egovernment.moa.spss.server.invoke.XMLSignatureVerificationInvoker; import at.gv.egovernment.moaspss.util.URLEncoder; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import javax.xml.bind.JAXB; -import java.io.IOException; -import java.io.UnsupportedEncodingException; -import java.util.*; /** * Created by Andreas Fitzek on 6/17/16. */ public class SimpleXAdESVerifier extends XAdESVerifier { - private static final Logger logger = LoggerFactory.getLogger(SimpleXAdESVerifier.class); - - - @Override - public void verify(ASiC asic, String trustProfileID, Date date, List<ASiCVerificationResult> response) throws MOAException { - // XAdES - try { - ASiCEntry xadesSignature = asic.getSignaturesEntries().get(0); - - XAdESSignaturesType xAdESSignaturesType = null; - try { - xAdESSignaturesType = JAXB.unmarshal(xadesSignature.getContents(), XAdESSignaturesType.class); - } catch (Throwable ex) { - logger.warn("Failed to process xml signature: ex"); - throw new MOAApplicationException("asic.0003", null, ex); - } - - if (xAdESSignaturesType == null) { - throw new MOAApplicationException("asic.0003", null); - } - - int signatureSize = xAdESSignaturesType.getSignature().size(); - - try { - xadesSignature.getContents().reset(); - } catch (IOException e) { - throw new MOARuntimeException("asic.0003", null, e); - } - Map namespaces = new HashMap(); - - namespaces.put("asic", "http://uri.etsi.org/02918/v1.2.1#"); - namespaces.put("ds", "http://www.w3.org/2000/09/xmldsig#"); - - for (int i = 0; i < signatureSize; i++) { - - List<String> signedFiles = new ArrayList<String>(); - - Iterator<ReferenceType> it = xAdESSignaturesType.getSignature().get(i).getSignedInfo().getReference().iterator(); - while (it.hasNext()) { - ReferenceType refType = it.next(); - if (!refType.getURI().startsWith("#")) { - signedFiles.add(refType.getURI()); - } - } - - boolean addAll = signedFiles.isEmpty() && asic.getDataEntries().size() == 1; - - Iterator<ASiCEntry> dataEntryIterator = asic.getDataEntries().iterator(); - - Content content = SPSSFactory.getInstance().createContent(xadesSignature.getContents(), null); - List supplementsList = new ArrayList(); - while (dataEntryIterator.hasNext()) { - ASiCEntry dataEntry = dataEntryIterator.next(); - String uriName = URLEncoder.encode(dataEntry.getEntryName(), "UTF-8") - .replaceAll("\\+", "%20") - .replaceAll("\\%21", "!") - .replaceAll("\\%27", "'") - //.replaceAll("\\%28", "(") - //.replaceAll("\\%29", ")") - .replaceAll("\\%7E", "~"); - - Content dataContent = SPSSFactory.getInstance().createContent(dataEntry.getContents(), uriName); - XMLDataObjectAssociation association = SPSSFactoryImpl.getInstance().createXMLDataObjectAssociation(null, dataContent); - SupplementProfile profile = SPSSFactoryImpl.getInstance().createSupplementProfile(association); - supplementsList.add(profile); - - if (addAll) { - signedFiles.add(dataEntry.getEntryName()); - } - } - String location = "(//ds:Signature)[" + (i + 1) + "]"; - - VerifySignatureLocation verifySignatureLocation = SPSSFactory.getInstance().createVerifySignatureLocation( - location, namespaces); - - VerifySignatureInfo verifySignatureInfo = SPSSFactory.getInstance().createVerifySignatureInfo(content, verifySignatureLocation); - - VerifyXMLSignatureRequest verifyXMLSignatureRequest = SPSSFactory.getInstance().createVerifyXMLSignatureRequest( - date, verifySignatureInfo, supplementsList, null, false, trustProfileID, true); - - response.add(new ASiCVerificationResult(signedFiles, - XMLSignatureVerificationInvoker.getInstance().verifyXMLSignature(verifyXMLSignatureRequest))); - } - } catch(UnsupportedEncodingException e) { - logger.error("UTF8 encoding not supported by system. MOA will not work on this system!", e); - throw new MOARuntimeException("asic.0003", null, e); + private static final Logger logger = LoggerFactory.getLogger(SimpleXAdESVerifier.class); + + @Override + public void verify(ASiC asic, String trustProfileID, Date date, List<ASiCVerificationResult> response) + throws MOAException { + // XAdES + try { + final ASiCEntry xadesSignature = asic.getSignaturesEntries().get(0); + + XAdESSignaturesType xAdESSignaturesType = null; + try { + xAdESSignaturesType = JAXB.unmarshal(xadesSignature.getContents(), XAdESSignaturesType.class); + } catch (final Throwable ex) { + logger.warn("Failed to process xml signature: ex"); + throw new MOAApplicationException("asic.0003", null, ex); + } + + if (xAdESSignaturesType == null) { + throw new MOAApplicationException("asic.0003", null); + } + + final int signatureSize = xAdESSignaturesType.getSignature().size(); + + try { + xadesSignature.getContents().reset(); + } catch (final IOException e) { + throw new MOARuntimeException("asic.0003", null, e); + } + final Map namespaces = new HashMap(); + + namespaces.put("asic", "http://uri.etsi.org/02918/v1.2.1#"); + namespaces.put("ds", "http://www.w3.org/2000/09/xmldsig#"); + + for (int i = 0; i < signatureSize; i++) { + + final List<AsicSignedFilesContainer> signedFiles = new ArrayList<>(); + + final Iterator<ReferenceType> it = xAdESSignaturesType.getSignature().get(i).getSignedInfo() + .getReference().iterator(); + while (it.hasNext()) { + final ReferenceType refType = it.next(); + if (!refType.getURI().startsWith("#")) { + signedFiles.add(new AsicSignedFilesContainer(refType.getURI(), refType.getDigestMethod() + .getAlgorithm())); + } } - } - @Override - public boolean handles(ASiC asic) { - return super.handles(asic) && ASiCFormat.ASiCS.equals(asic.getFormat()); + final boolean addAll = signedFiles.isEmpty() && asic.getDataEntries().size() == 1; + + final Iterator<ASiCEntry> dataEntryIterator = asic.getDataEntries().iterator(); + + final Content content = SPSSFactory.getInstance().createContent(xadesSignature.getContents(), null); + final List supplementsList = new ArrayList(); + while (dataEntryIterator.hasNext()) { + final ASiCEntry dataEntry = dataEntryIterator.next(); + final String uriName = URLEncoder.encode(dataEntry.getEntryName(), "UTF-8") + .replaceAll("\\+", "%20") + .replaceAll("\\%21", "!") + .replaceAll("\\%27", "'") + // .replaceAll("\\%28", "(") + // .replaceAll("\\%29", ")") + .replaceAll("\\%7E", "~"); + + final Content dataContent = SPSSFactory.getInstance().createContent(dataEntry.getContents(), + uriName); + final XMLDataObjectAssociation association = SPSSFactory.getInstance() + .createXMLDataObjectAssociation(null, dataContent); + final SupplementProfile profile = SPSSFactory.getInstance().createSupplementProfile(association); + supplementsList.add(profile); + + if (addAll) { + signedFiles.add(new AsicSignedFilesContainer(dataEntry.getEntryName(), null)); + } + } + final String location = "(//ds:Signature)[" + (i + 1) + "]"; + + final VerifySignatureLocation verifySignatureLocation = SPSSFactory.getInstance() + .createVerifySignatureLocation( + location, namespaces); + + final VerifySignatureInfo verifySignatureInfo = SPSSFactory.getInstance().createVerifySignatureInfo( + content, verifySignatureLocation); + + final VerifyXMLSignatureRequest verifyXMLSignatureRequest = SPSSFactory.getInstance() + .createVerifyXMLSignatureRequest( + date, verifySignatureInfo, supplementsList, null, false, trustProfileID, true); + + response.add(new ASiCVerificationResult(signedFiles, + XMLSignatureVerificationInvoker.getInstance().verifyXMLSignature(verifyXMLSignatureRequest))); + } + } catch (final UnsupportedEncodingException e) { + logger.error("UTF8 encoding not supported by system. MOA will not work on this system!", e); + throw new MOARuntimeException("asic.0003", null, e); } + } + + @Override + public boolean handles(ASiC asic) { + return super.handles(asic) && ASiCFormat.ASiCS.equals(asic.getFormat()); + } }
\ No newline at end of file diff --git a/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/verifier/XAdESVerifier.java b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/verifier/XAdESVerifier.java index 904ad4e..2074464 100644 --- a/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/verifier/XAdESVerifier.java +++ b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/verifier/XAdESVerifier.java @@ -1,54 +1,54 @@ package at.gv.egiz.asic.impl.verifier; +import java.io.InputStream; +import java.util.Date; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + import at.gv.egiz.asic.api.ASiC; -import at.gv.egiz.asic.api.ASiCEntry; -import at.gv.egiz.asic.api.ASiCVerificationResult; import at.gv.egovernment.moa.spss.MOAException; import at.gv.egovernment.moa.spss.api.SPSSFactory; -import at.gv.egovernment.moa.spss.api.cmsverify.CMSContent; -import at.gv.egovernment.moa.spss.api.cmsverify.CMSDataObject; -import at.gv.egovernment.moa.spss.api.cmsverify.VerifyCMSSignatureRequest; -import at.gv.egovernment.moa.spss.api.cmsverify.VerifyCMSSignatureResponse; import at.gv.egovernment.moa.spss.api.common.Content; -import at.gv.egovernment.moa.spss.api.common.XMLDataObjectAssociation; -import at.gv.egovernment.moa.spss.api.impl.SPSSFactoryImpl; -import at.gv.egovernment.moa.spss.api.xmlverify.*; -import at.gv.egovernment.moa.spss.server.invoke.CMSSignatureVerificationInvoker; +import at.gv.egovernment.moa.spss.api.xmlverify.VerifySignatureInfo; +import at.gv.egovernment.moa.spss.api.xmlverify.VerifySignatureLocation; +import at.gv.egovernment.moa.spss.api.xmlverify.VerifyXMLSignatureRequest; +import at.gv.egovernment.moa.spss.api.xmlverify.VerifyXMLSignatureResponse; import at.gv.egovernment.moa.spss.server.invoke.XMLSignatureVerificationInvoker; -import java.io.InputStream; -import java.util.*; - /** * Created by Andreas Fitzek on 6/17/16. */ public abstract class XAdESVerifier extends BaseVerifier { - @Override - public boolean handles(ASiC asic) { - return asic.isXAdES(); - } + @Override + public boolean handles(ASiC asic) { + return asic.isXAdES(); + } - protected VerifyXMLSignatureResponse runXMLVerification(InputStream signedData, InputStream xmlSignature, - String trustProfileID, Date date, List supplementsList, - String location, Map namespaces) throws MOAException { + protected VerifyXMLSignatureResponse runXMLVerification(InputStream signedData, InputStream xmlSignature, + String trustProfileID, Date date, List supplementsList, + String location, Map namespaces) throws MOAException { - if(namespaces == null) { - namespaces = new HashMap(); + if (namespaces == null) { + namespaces = new HashMap(); - namespaces.put("asic", "http://uri.etsi.org/02918/v1.2.1#"); - namespaces.put("ds", "http://www.w3.org/2000/09/xmldsig#"); - } + namespaces.put("asic", "http://uri.etsi.org/02918/v1.2.1#"); + namespaces.put("ds", "http://www.w3.org/2000/09/xmldsig#"); + } - Content content = SPSSFactory.getInstance().createContent(xmlSignature, null); + final Content content = SPSSFactory.getInstance().createContent(xmlSignature, null); - VerifySignatureLocation verifySignatureLocation = SPSSFactory.getInstance().createVerifySignatureLocation( - location, namespaces); + final VerifySignatureLocation verifySignatureLocation = SPSSFactory.getInstance() + .createVerifySignatureLocation( + location, namespaces); - VerifySignatureInfo verifySignatureInfo = SPSSFactory.getInstance().createVerifySignatureInfo(content, verifySignatureLocation); + final VerifySignatureInfo verifySignatureInfo = SPSSFactory.getInstance().createVerifySignatureInfo( + content, verifySignatureLocation); - VerifyXMLSignatureRequest verifyXMLSignatureRequest = SPSSFactory.getInstance().createVerifyXMLSignatureRequest( - date, verifySignatureInfo, supplementsList, null, false, trustProfileID, true); + final VerifyXMLSignatureRequest verifyXMLSignatureRequest = SPSSFactory.getInstance() + .createVerifyXMLSignatureRequest( + date, verifySignatureInfo, supplementsList, null, false, trustProfileID, true); - return XMLSignatureVerificationInvoker.getInstance().verifyXMLSignature(verifyXMLSignatureRequest); - } + return XMLSignatureVerificationInvoker.getInstance().verifyXMLSignature(verifyXMLSignatureRequest); + } } diff --git a/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/xmlbind/VerifyASICSignatureRequestParser.java b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/xmlbind/VerifyASICSignatureRequestParser.java index c06e30e..b152b6d 100644 --- a/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/xmlbind/VerifyASICSignatureRequestParser.java +++ b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/xmlbind/VerifyASICSignatureRequestParser.java @@ -21,31 +21,25 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egiz.asic.xmlbind; +import java.io.InputStream; +import java.util.Date; + +import org.w3c.dom.Element; + import at.gv.egiz.asic.api.ASiCFormat; import at.gv.egovernment.moa.spss.MOAApplicationException; import at.gv.egovernment.moa.spss.api.SPSSFactory; -import at.gv.egovernment.moa.spss.api.cmsverify.CMSContent; -import at.gv.egovernment.moa.spss.api.cmsverify.CMSDataObject; -import at.gv.egovernment.moa.spss.api.cmsverify.VerifyCMSSignatureRequest; -import at.gv.egovernment.moa.spss.api.common.MetaInfo; import at.gv.egovernment.moa.spss.api.xmlbind.RequestParserUtils; -import at.gv.egovernment.moaspss.util.*; -import org.w3c.dom.Element; - -import java.io.InputStream; -import java.math.BigDecimal; -import java.util.ArrayList; -import java.util.Date; -import java.util.List; -import java.util.StringTokenizer; +import at.gv.egovernment.moaspss.util.Base64Utils; +import at.gv.egovernment.moaspss.util.Constants; +import at.gv.egovernment.moaspss.util.XPathUtils; /** * A parser to parse <code>VerifyCMSSignatureRequest</code> DOM trees into * <code>VerifyCMSSignatureRequest</code> API objects. - * + * * @author Patrick Peck * @version $Id$ */ @@ -61,48 +55,47 @@ public class VerifyASICSignatureRequestParser { private static final String ASIC_EXTENSION_XPATH = MOA + "ASICExtension"; private static final String TRUST_PROFILE_ID_XPATH = MOA + "TrustProfileID"; - /** The <code>SPSSFactory</code> for creating new API objects. */ - private SPSSFactory factory = SPSSFactory.getInstance(); + private final SPSSFactory factory = SPSSFactory.getInstance(); /** - * Parse a <code>VerifyCMSSignatureRequest</code> DOM element, as defined - * by the MOA schema. - * + * Parse a <code>VerifyCMSSignatureRequest</code> DOM element, as defined by the + * MOA schema. + * * @param requestElem The <code>VerifyCMSSignatureRequest</code> to parse. The - * request must have been successfully parsed against the schema for this - * method to succeed. - * @return A <code>VerifyCMSSignatureRequest</code> API objects containing - * the data from the DOM element. + * request must have been successfully parsed against the + * schema for this method to succeed. + * @return A <code>VerifyCMSSignatureRequest</code> API objects containing the + * data from the DOM element. * @throws MOAApplicationException An error occurred parsing the request. */ public VerifyASiCRequest parseASIC(Element requestElem) - throws MOAApplicationException { - Date dateTime = - RequestParserUtils.parseDateTime(requestElem, DATE_TIME_XPATH); + throws MOAApplicationException { + final Date dateTime = + RequestParserUtils.parseDateTime(requestElem, DATE_TIME_XPATH); + + final boolean extendedValidation = + RequestParserUtils.parseExtendedValidation(requestElem, EXTENDED_VALIDATION_XPATH, false); - boolean extendedValidation = - RequestParserUtils.parseExtendedValidation(requestElem, EXTENDED_VALIDATION_XPATH, false); - - String asicSignatureStr = - XPathUtils.getElementValue(requestElem, ASIC_SIGNATURE_XPATH, ""); + final String asicSignatureStr = + XPathUtils.getElementValue(requestElem, ASIC_SIGNATURE_XPATH, ""); - String asicExtensionStr = - XPathUtils.getElementValue(requestElem, ASIC_EXTENSION_XPATH, ""); + final String asicExtensionStr = + XPathUtils.getElementValue(requestElem, ASIC_EXTENSION_XPATH, ""); - String trustProfileID = - XPathUtils.getElementValue(requestElem, TRUST_PROFILE_ID_XPATH, null); - //Logger.info("CMSSignature: " + cmsSignatureStr); - InputStream asicSignature = - Base64Utils.decodeToStream(asicSignatureStr, true); + final String trustProfileID = + XPathUtils.getElementValue(requestElem, TRUST_PROFILE_ID_XPATH, null); + // Logger.info("CMSSignature: " + cmsSignatureStr); + final InputStream asicSignature = + Base64Utils.decodeToStream(asicSignatureStr, true); ASiCFormat format = null; - if("asics".equalsIgnoreCase(asicExtensionStr) || "scs".equalsIgnoreCase(asicExtensionStr) - || "application/vnd.etsi.asic-s+zip".equalsIgnoreCase(asicExtensionStr)) { + if ("asics".equalsIgnoreCase(asicExtensionStr) || "scs".equalsIgnoreCase(asicExtensionStr) + || "application/vnd.etsi.asic-s+zip".equalsIgnoreCase(asicExtensionStr)) { format = ASiCFormat.ASiCS; - } else if("asice".equalsIgnoreCase(asicExtensionStr) || "sce".equalsIgnoreCase(asicExtensionStr) - || "application/vnd.etsi.asic-e+zip".equalsIgnoreCase(asicExtensionStr)) { + } else if ("asice".equalsIgnoreCase(asicExtensionStr) || "sce".equalsIgnoreCase(asicExtensionStr) + || "application/vnd.etsi.asic-e+zip".equalsIgnoreCase(asicExtensionStr)) { format = ASiCFormat.ASiCE; } diff --git a/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/xmlbind/VerifyASICSignatureResponseBuilder.java b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/xmlbind/VerifyASICSignatureResponseBuilder.java index 50cd261..34744ef 100644 --- a/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/xmlbind/VerifyASICSignatureResponseBuilder.java +++ b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/xmlbind/VerifyASICSignatureResponseBuilder.java @@ -21,158 +21,172 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egiz.asic.xmlbind; +import java.util.Iterator; +import java.util.List; + +import org.w3c.dom.Document; +import org.w3c.dom.Element; + import at.gv.egiz.asic.api.ASiCVerificationResult; +import at.gv.egiz.asic.impl.AsicSignedFilesContainer; import at.gv.egovernment.moa.spss.MOAApplicationException; import at.gv.egovernment.moa.spss.MOAException; import at.gv.egovernment.moa.spss.MOASystemException; -import at.gv.egovernment.moa.spss.api.cmsverify.VerifyCMSSignatureResponse; import at.gv.egovernment.moa.spss.api.cmsverify.VerifyCMSSignatureResponseElement; import at.gv.egovernment.moa.spss.api.common.CheckResult; import at.gv.egovernment.moa.spss.api.common.SignerInfo; import at.gv.egovernment.moa.spss.api.xmlbind.ResponseBuilderUtils; +import at.gv.egovernment.moa.spss.api.xmlbind.VerifyCMSSignatureResponseBuilder; import at.gv.egovernment.moa.spss.api.xmlbind.VerifyXMLSignatureResponseBuilder; import at.gv.egovernment.moa.spss.api.xmlverify.AdESFormResults; -import at.gv.egovernment.moa.spss.api.xmlbind.VerifyCMSSignatureResponseBuilder; import at.gv.egovernment.moaspss.util.Constants; -import org.w3c.dom.Document; -import org.w3c.dom.Element; - -import java.util.Iterator; -import java.util.List; +import at.gv.egovernment.moaspss.util.MiscUtil; /** - * Convert a <code>VerifyCMSSignatureResponse</code> API object into its - * XML representation, according to the MOA XML schema. - * + * Convert a <code>VerifyCMSSignatureResponse</code> API object into its XML + * representation, according to the MOA XML schema. + * * @author Patrick Peck * @version $Id$ */ public class VerifyASICSignatureResponseBuilder { /** The XML document containing the response element. */ - private Document responseDoc; + private final Document responseDoc; /** The response <code>VerifyCMSSignatureResponse</code> DOM element. */ - private Element responseElem; + private final Element responseElem; /** * Create a new <code>VerifyCMSSignatureResponseBuilder</code>: * - * @throws MOASystemException An error occurred setting up the resulting - * XML document. + * @throws MOASystemException An error occurred setting up the resulting XML + * document. */ public VerifyASICSignatureResponseBuilder() throws MOASystemException { responseDoc = - ResponseBuilderUtils.createResponse("VerifyASICSignatureResponse"); + ResponseBuilderUtils.createResponse("VerifyASICSignatureResponse"); responseElem = responseDoc.getDocumentElement(); } - + /** - * Build a document containing a <code>VerifyCMSSignatureResponse</code> - * DOM element being the XML representation of the given + * Build a document containing a <code>VerifyCMSSignatureResponse</code> DOM + * element being the XML representation of the given * <code>VerifyCMSSignatureResponse</code> API object. - * - * @param response The <code>VerifyCMSSignatureResponse</code> to convert - * to XML. - * @return A document containing the <code>VerifyCMSSignatureResponse</code> - * DOM element. + * + * @param response The <code>VerifyCMSSignatureResponse</code> to convert to + * XML. + * @return A document containing the <code>VerifyCMSSignatureResponse</code> DOM + * element. * @throws MOAApplicationException An error occurred building the response. */ public Document build(List<ASiCVerificationResult> results) - throws MOAException { + throws MOAException { - Iterator<ASiCVerificationResult> iter = results.iterator(); + final Iterator<ASiCVerificationResult> iter = results.iterator(); - while(iter.hasNext()) { - ASiCVerificationResult aSiCVerificationResult = iter.next(); - addASiCResultElement(aSiCVerificationResult); + while (iter.hasNext()) { + final ASiCVerificationResult aSiCVerificationResult = iter.next(); + addASiCResultElement(aSiCVerificationResult); } - + return responseDoc; } - private void addASiCResultElement(ASiCVerificationResult aSiCVerificationResult) - throws MOAException { - Element asiCSignatureResultElem = responseDoc.createElementNS(Constants.MOA_NS_URI, "ASiCSignatureResult"); - - Iterator<String> signedFiles = aSiCVerificationResult.getSignedFiles().iterator(); - while (signedFiles.hasNext()) { - String signedFile = signedFiles.next(); - Element signedFilesElem = responseDoc.createElementNS(Constants.MOA_NS_URI, "signedFiles"); - signedFilesElem.setTextContent(signedFile); - asiCSignatureResultElem.appendChild(signedFilesElem); - } - - if(aSiCVerificationResult.getXmlResult() != null) { - VerifyXMLSignatureResponseBuilder verifyXMLSignatureResponseBuilder = new VerifyXMLSignatureResponseBuilder(this.responseDoc, "XMLSignatureResult", true); - asiCSignatureResultElem.appendChild(verifyXMLSignatureResponseBuilder.buildElement(aSiCVerificationResult.getXmlResult())); - } else if(aSiCVerificationResult.getCmsResult() != null) { - VerifyCMSSignatureResponseBuilder verifyCMSSignatureResponseBuilder = new VerifyCMSSignatureResponseBuilder(this.responseDoc, "CMSSignatureResult", true); - asiCSignatureResultElem.appendChild(verifyCMSSignatureResponseBuilder.buildElement(aSiCVerificationResult.getCmsResult())); - } - - responseElem.appendChild(asiCSignatureResultElem); + private void addASiCResultElement(ASiCVerificationResult aSiCVerificationResult) + throws MOAException { + final Element asiCSignatureResultElem = responseDoc.createElementNS(Constants.MOA_NS_URI, + "ASiCSignatureResult"); + + final Iterator<AsicSignedFilesContainer> signedFiles = aSiCVerificationResult.getSignedFiles().iterator(); + while (signedFiles.hasNext()) { + final AsicSignedFilesContainer signedFile = signedFiles.next(); + final Element signedFilesElem = responseDoc.createElementNS(Constants.MOA_NS_URI, "signedFiles"); + signedFilesElem.setTextContent(signedFile.getUri()); + if (MiscUtil.isNotEmpty(signedFile.getHashAlg())) { + signedFilesElem.setAttribute("hashAlgorithm", signedFile.getHashAlg()); + } + + asiCSignatureResultElem.appendChild(signedFilesElem); + } + + if (aSiCVerificationResult.getXmlResult() != null) { + final VerifyXMLSignatureResponseBuilder verifyXMLSignatureResponseBuilder = + new VerifyXMLSignatureResponseBuilder(this.responseDoc, "XMLSignatureResult", true); + asiCSignatureResultElem.appendChild(verifyXMLSignatureResponseBuilder.buildElement( + aSiCVerificationResult.getXmlResult())); + } else if (aSiCVerificationResult.getCmsResult() != null) { + final VerifyCMSSignatureResponseBuilder verifyCMSSignatureResponseBuilder = + new VerifyCMSSignatureResponseBuilder(this.responseDoc, "CMSSignatureResult", true); + asiCSignatureResultElem.appendChild(verifyCMSSignatureResponseBuilder.buildElement( + aSiCVerificationResult.getCmsResult())); } + responseElem.appendChild(asiCSignatureResultElem); + } + /** * Add an element to the response. - * + * * @param responseElement The element to add to the response. * @throws MOAApplicationException An error occurred adding the element. */ private void addResponseElement(VerifyCMSSignatureResponseElement responseElement) - throws MOAApplicationException { + throws MOAApplicationException { + + final SignerInfo signerInfo = responseElement.getSignerInfo(); + final CheckResult signatureCheck = responseElement.getSignatureCheck(); + final CheckResult certCheck = responseElement.getCertificateCheck(); - SignerInfo signerInfo = responseElement.getSignerInfo(); - CheckResult signatureCheck = responseElement.getSignatureCheck(); - CheckResult certCheck = responseElement.getCertificateCheck(); - ResponseBuilderUtils.addSignerInfo( - responseDoc, - responseElem, - signerInfo.getSignerCertificate(), - signerInfo.isQualifiedCertificate(), - signerInfo.getQCSource(), - signerInfo.isPublicAuthority(), - signerInfo.getPublicAuhtorityID(), - signerInfo.isSSCD(), - signerInfo.getSSCDSource(), - signerInfo.getIssuerCountryCode(), - signerInfo.getTslInfos()); + responseDoc, + responseElem, + signerInfo.getSignerCertificate(), + signerInfo.isQualifiedCertificate(), + signerInfo.getQCSource(), + signerInfo.isPublicAuthority(), + signerInfo.getPublicAuhtorityID(), + signerInfo.isSSCD(), + signerInfo.getSSCDSource(), + signerInfo.getIssuerCountryCode(), + signerInfo.getTslInfos()); + + ResponseBuilderUtils.addSignatureAlgorithm(responseDoc, + responseElem, + responseElement.getSignatureAlgorithm()); ResponseBuilderUtils.addCodeInfoElement( - responseDoc, - responseElem, - "SignatureCheck", - signatureCheck.getCode(), - signatureCheck.getInfo()); + responseDoc, + responseElem, + "SignatureCheck", + signatureCheck.getCode(), + signatureCheck.getInfo()); ResponseBuilderUtils.addCodeInfoElement( - responseDoc, - responseElem, - "CertificateCheck", - certCheck.getCode(), - certCheck.getInfo()); - + responseDoc, + responseElem, + "CertificateCheck", + certCheck.getCode(), + certCheck.getInfo()); if (responseElement.getAdESFormResults() != null) { - Iterator formIterator = responseElement.getAdESFormResults().iterator(); - - while (formIterator.hasNext()) { - AdESFormResults adESFormResult = (AdESFormResults) formIterator.next(); - // add the CertificateCheck - ResponseBuilderUtils.addFormCheckElement(responseDoc, responseElem, "FormCheckResult", - adESFormResult.getCode().intValue(), adESFormResult.getName()); - - } - } - - if(responseElement.getExtendedCertificateCheck() != null) { - ResponseBuilderUtils.addExtendendResult(responseDoc, responseElem, responseElement.getExtendedCertificateCheck()); - } - + final Iterator formIterator = responseElement.getAdESFormResults().iterator(); + + while (formIterator.hasNext()) { + final AdESFormResults adESFormResult = (AdESFormResults) formIterator.next(); + // add the CertificateCheck + ResponseBuilderUtils.addFormCheckElement(responseDoc, responseElem, "FormCheckResult", + adESFormResult.getCode().intValue(), adESFormResult.getName()); + + } + } + + if (responseElement.getExtendedCertificateCheck() != null) { + ResponseBuilderUtils.addExtendendResult(responseDoc, responseElem, responseElement + .getExtendedCertificateCheck()); + } + } } diff --git a/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/xmlbind/VerifyASiCRequest.java b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/xmlbind/VerifyASiCRequest.java index 37584a6..93218bc 100644 --- a/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/xmlbind/VerifyASiCRequest.java +++ b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/xmlbind/VerifyASiCRequest.java @@ -1,46 +1,46 @@ package at.gv.egiz.asic.xmlbind; -import at.gv.egiz.asic.api.ASiCFormat; - import java.io.InputStream; import java.util.Date; +import at.gv.egiz.asic.api.ASiCFormat; + /** * Created by Andreas Fitzek on 6/16/16. */ public class VerifyASiCRequest { - private Date date; - private InputStream asicInput; - private String trustProfile; - private ASiCFormat format; - private boolean extendedValidation; - - - public VerifyASiCRequest(ASiCFormat format, Date date, InputStream asicInput, String trustProfile, boolean extendedValidation) { - this.format = format; - this.date = date; - this.asicInput = asicInput; - this.trustProfile = trustProfile; - this.extendedValidation = extendedValidation; - } - - public Date getDate() { - return date; - } - - public InputStream getAsicInput() { - return asicInput; - } - - public String getTrustProfile() { - return trustProfile; - } - - public ASiCFormat getFormat() { - return format; - } - - public boolean isExtendedValidation() { - return extendedValidation; - } + private final Date date; + private final InputStream asicInput; + private final String trustProfile; + private final ASiCFormat format; + private final boolean extendedValidation; + + public VerifyASiCRequest(ASiCFormat format, Date date, InputStream asicInput, String trustProfile, + boolean extendedValidation) { + this.format = format; + this.date = date; + this.asicInput = asicInput; + this.trustProfile = trustProfile; + this.extendedValidation = extendedValidation; + } + + public Date getDate() { + return date; + } + + public InputStream getAsicInput() { + return asicInput; + } + + public String getTrustProfile() { + return trustProfile; + } + + public ASiCFormat getFormat() { + return format; + } + + public boolean isExtendedValidation() { + return extendedValidation; + } } diff --git a/moaSig/moa-asic/src/test/java/at/gv/egiz/asic/dev/Main.java b/moaSig/moa-asic/src/test/java/at/gv/egiz/asic/dev/Main.java index 5005a3b..ec6e902 100644 --- a/moaSig/moa-asic/src/test/java/at/gv/egiz/asic/dev/Main.java +++ b/moaSig/moa-asic/src/test/java/at/gv/egiz/asic/dev/Main.java @@ -5,6 +5,7 @@ import at.gv.egiz.asic.api.ASiCFactory; import at.gv.egiz.asic.api.ASiCFormat; import at.gv.egiz.asic.api.ASiCVerificationResult; import at.gv.egiz.asic.impl.ASiCMOAVerifier; +import at.gv.egiz.asic.impl.AsicSignedFilesContainer; import at.gv.egiz.asic.xmlbind.VerifyASICSignatureResponseBuilder; import at.gv.egovernment.moa.spss.MOASystemException; import at.gv.egovernment.moa.spss.api.cmsverify.VerifyCMSSignatureResponse; @@ -79,9 +80,9 @@ public class Main { // Auswertung der Response System.out.println(); System.out.println("Signierte Eintraege"); - Iterator<String> signedFilesIterator = aSiCVerificationResult.getSignedFiles().iterator(); + Iterator<AsicSignedFilesContainer> signedFilesIterator = aSiCVerificationResult.getSignedFiles().iterator(); while (signedFilesIterator.hasNext()) { - System.out.println(" " + signedFilesIterator.next()); + System.out.println(" " + signedFilesIterator.next().getUri()); } System.out.println(); } diff --git a/moaSig/moa-sig-lib/build.gradle b/moaSig/moa-sig-lib/build.gradle index 5cbfba7..bb1a8d3 100644 --- a/moaSig/moa-sig-lib/build.gradle +++ b/moaSig/moa-sig-lib/build.gradle @@ -1,30 +1,39 @@ apply plugin: 'java-library-distribution' +apply plugin: 'maven-publish' distributions { - main{ - baseName = 'MOA-SPSS' + main { + distributionBaseName = 'moa-spss-lib' } } -dependencies { - compile fileTree(dir: '../libs', include: '*.jar') - compile project(':common') +dependencies { + implementation project(':common') + testImplementation project(path: ':common') - compile 'log4j:log4j:1.2.17' - compile 'commons-logging:commons-logging:1.2' - compile 'commons-io:commons-io:2.4' - compile 'commons-codec:commons-codec:1.10' - compile 'org.apache.axis:axis-jaxrpc:1.4' - compile 'org.xerial:sqlite-jdbc:3.15.1' - compile 'javax.xml.bind:jaxb-api:2.2.12' - compile 'com.sun.xml.bind:jaxb-core:2.2.11' - compile 'com.sun.xml.bind:jaxb-impl:2.2.11' - compile 'org.postgresql:postgresql:9.4-1204-jdbc42' - compile group: 'org.apache.commons', name: 'commons-lang3', version: '3.5' + api fileTree(dir: '../libs', include: '*.jar') + api group: 'at.gv.egovernment.moa.sig', name: 'tsl-lib', version: '2.0.4' + api 'log4j:log4j:1.2.17' + api 'commons-logging:commons-logging:1.2' + api 'commons-io:commons-io:2.8.0' + api 'commons-codec:commons-codec:1.15' + api 'org.apache.axis:axis-jaxrpc:1.4' + api 'org.xerial:sqlite-jdbc:3.34.0' + api 'javax.xml.bind:jaxb-api:2.3.1' + api 'com.sun.xml.bind:jaxb-core:2.3.0.1' + api 'com.sun.xml.bind:jaxb-impl:2.3.2' + api 'org.postgresql:postgresql:42.2.19.jre7' + api group: 'org.apache.pdfbox', name: 'pdfbox', version: '2.0.23' + api group: 'org.apache.pdfbox', name: 'pdfbox-tools', version: '2.0.23' + api group: 'org.apache.pdfbox', name: 'pdfbox-app', version: '2.0.23' + api group: 'org.apache.pdfbox', name: 'preflight', version: '2.0.23' + api group: 'org.apache.pdfbox', name: 'preflight-app', version: '2.0.23' + api group: 'org.apache.commons', name: 'commons-lang3', version: '3.12.0' + api group: 'org.apache.httpcomponents', name: 'httpclient-cache', version: '4.5.13' } task releases(type: Copy) { - from jar.outputs + //from jar.outputs from distZip.outputs from distTar.outputs into rootDir.toString() + "/releases/" + version diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/MOAApplicationException.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/MOAApplicationException.java index 305c227..97e63c5 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/MOAApplicationException.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/MOAApplicationException.java @@ -21,30 +21,30 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss; + /** * Base class of application specific MOA exceptions. - * - * Application exceptions are exceptions that originate from application - * code (e.g. inconsistent data provided by the user, no permission to access - * certain resources, etc.) - * + * + * Application exceptions are exceptions that originate from application code + * (e.g. inconsistent data provided by the user, no permission to access certain + * resources, etc.) + * * @author Patrick Peck * @version $Id$ */ public class MOAApplicationException extends MOAException { - + /** - * - */ - private static final long serialVersionUID = 1042877795934327684L; + * + */ + private static final long serialVersionUID = 1042877795934327684L; -/** + /** * Create a new <code>MOAApplicationException</code>. - * - * @param messageId The identifier of the message associated with this - * exception. + * + * @param messageId The identifier of the message associated with this + * exception. * @param parameters Additional message parameters. */ public MOAApplicationException(String messageId, Object[] parameters) { @@ -53,17 +53,17 @@ public class MOAApplicationException extends MOAException { /** * Create a new <code>MOAApplicationException</code>. - * - * @param messageId The identifier of the message associated with this - * <code>MOAApplicationException</code>. + * + * @param messageId The identifier of the message associated with this + * <code>MOAApplicationException</code>. * @param parameters Additional message parameters. - * @param wrapped The exception wrapped by this - * <code>MOAApplicationException</code>. + * @param wrapped The exception wrapped by this + * <code>MOAApplicationException</code>. */ public MOAApplicationException( - String messageId, - Object[] parameters, - Throwable wrapped) { + String messageId, + Object[] parameters, + Throwable wrapped) { super(messageId, parameters, wrapped); } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/MOAException.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/MOAException.java index bf7f9af..0aff639 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/MOAException.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/MOAException.java @@ -21,8 +21,8 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss; + import java.io.PrintStream; import java.io.PrintWriter; @@ -39,30 +39,30 @@ import at.gv.egovernment.moaspss.util.Constants; /** * Base class of MOA specific exceptions. - * - * This class has the ability to wrap other exceptions which may be seen - * as the root cause for this exception. A similar mechanism is in place - * since JDK1.4 (see the <code>getClause()</code> method) but will not be used - * because of required compatibility with JDK1.3. - * + * + * This class has the ability to wrap other exceptions which may be seen as the + * root cause for this exception. A similar mechanism is in place since JDK1.4 + * (see the <code>getClause()</code> method) but will not be used because of + * required compatibility with JDK1.3. + * * @author Patrick Peck * @version $Id$ */ public abstract class MOAException extends Exception { /** - * - */ - private static final long serialVersionUID = 7115301799538771949L; -/** The message ID. */ - private String messageId; + * + */ + private static final long serialVersionUID = 7115301799538771949L; + /** The message ID. */ + private final String messageId; /** The wrapped <code>Throwable</code>. */ private Throwable wrapped; /** * Create a <code>MOAException</code>. - * - * @param messageId The message ID of the message contained in the created - * <code>MOAException</code>. + * + * @param messageId The message ID of the message contained in the created + * <code>MOAException</code>. * @param parameters The parameters needed to fill in the message arguments. */ public MOAException(String messageId, Object[] parameters) { @@ -72,15 +72,15 @@ public abstract class MOAException extends Exception { /** * Create a <code>MOAException</code>. - * - * @param messageId The message ID of the message contained in the created - * <code>MOAException</code>. + * + * @param messageId The message ID of the message contained in the created + * <code>MOAException</code>. * @param parameters The parameters needed to fill in the message arguments. - * @param wrapped The exception wrapped by the created - * <code>MOAException</code>. + * @param wrapped The exception wrapped by the created + * <code>MOAException</code>. */ public MOAException(String messageId, Object[] parameters, Throwable wrapped) { - // TODO: remove wrapped again from super constructor + // TODO: remove wrapped again from super constructor super(MessageProvider.getInstance().getMessage(messageId, parameters), wrapped); this.messageId = messageId; this.wrapped = wrapped; @@ -88,7 +88,7 @@ public abstract class MOAException extends Exception { /** * Returns the message ID of this exception. - * + * * @return The message ID as provided in the constructor. */ public String getMessageId() { @@ -97,9 +97,9 @@ public abstract class MOAException extends Exception { /** * Returns the exception wrapped by this <code>MOAException</code>. - * - * @return The exception wrapped by this exception. Possibly - * <code>null</code>, if none was provided at construction time. + * + * @return The exception wrapped by this exception. Possibly <code>null</code>, + * if none was provided at construction time. */ public Throwable getWrapped() { return wrapped; @@ -108,9 +108,10 @@ public abstract class MOAException extends Exception { /** * Convert this <code>MOAException</code> to an <code>ErrorResponse</code> * element from the MOA namespace. - * + * * @return An <code>ErrorResponse</code> element, containing the subelements - * <code>ErrorCode</code> and <code>Info</code> required by the MOA schema. + * <code>ErrorCode</code> and <code>Info</code> required by the MOA + * schema. */ public Element toErrorResponse() { DocumentBuilder builder; @@ -124,7 +125,7 @@ public abstract class MOAException extends Exception { try { builder = DocumentBuilderFactory.newInstance().newDocumentBuilder(); impl = builder.getDOMImplementation(); - } catch (ParserConfigurationException e) { + } catch (final ParserConfigurationException e) { return null; } @@ -134,11 +135,11 @@ public abstract class MOAException extends Exception { // add MOA namespace declaration errorResponse.setAttributeNS( - Constants.XMLNS_NS_URI, - "xmlns", - Constants.MOA_NS_URI); + Constants.XMLNS_NS_URI, + "xmlns", + Constants.MOA_NS_URI); - // build the child elements + // build the child elements errorCode = doc.createElementNS(Constants.MOA_NS_URI, "ErrorCode"); errorCode.appendChild(doc.createTextNode(messageId)); info = doc.createElementNS(Constants.MOA_NS_URI, "Info"); @@ -147,22 +148,24 @@ public abstract class MOAException extends Exception { errorResponse.appendChild(info); return errorResponse; } - + /** * Print a stack trace of this exception to <code>System.err</code>. - * + * * @see java.lang.Throwable#printStackTrace() */ + @Override public void printStackTrace() { printStackTrace(System.err); } /** * Print a stack trace of this exception, including the wrapped exception. - * + * * @param s The stream to write the stack trace to. * @see java.lang.Throwable#printStackTrace(java.io.PrintStream) */ + @Override public void printStackTrace(PrintStream s) { super.printStackTrace(s); if (getWrapped() != null) { @@ -173,10 +176,11 @@ public abstract class MOAException extends Exception { /** * Print a stack trace of this exception, including the wrapped exception. - * + * * @param s The stream to write the stacktrace to. * @see java.lang.Throwable#printStackTrace(java.io.PrintWriter) */ + @Override public void printStackTrace(PrintWriter s) { super.printStackTrace(s); if (getWrapped() != null) { diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/MOARuntimeException.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/MOARuntimeException.java index 3a65c48..d7522ff 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/MOARuntimeException.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/MOARuntimeException.java @@ -21,8 +21,8 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss; + import java.io.PrintStream; import java.io.PrintWriter; @@ -39,30 +39,30 @@ import at.gv.egovernment.moaspss.util.Constants; /** * Base class of MOA specific runtime exceptions. - * - * This class has the ability to wrap other exceptions which may be seen - * as the root cause for this exception. A similar mechanism is in place - * since JDK1.4 (see the <code>getClause()</code> method) but will not be used - * because of required compatibility with JDK1.3. - * + * + * This class has the ability to wrap other exceptions which may be seen as the + * root cause for this exception. A similar mechanism is in place since JDK1.4 + * (see the <code>getClause()</code> method) but will not be used because of + * required compatibility with JDK1.3. + * * @author Patrick Peck * @version $Id$ */ public class MOARuntimeException extends RuntimeException { /** - * - */ - private static final long serialVersionUID = 8516197293435621864L; -/** The message ID. */ - private String messageId; + * + */ + private static final long serialVersionUID = 8516197293435621864L; + /** The message ID. */ + private final String messageId; /** The wrapped <code>Throwable</code>. */ private Throwable wrapped; /** * Create a <code>MOAException</code>. - * - * @param messageId The message ID of the message contained in the created - * <code>MOAException</code>. + * + * @param messageId The message ID of the message contained in the created + * <code>MOAException</code>. * @param parameters The parameters needed to fill in the message arguments. */ public MOARuntimeException(String messageId, Object[] parameters) { @@ -72,17 +72,17 @@ public class MOARuntimeException extends RuntimeException { /** * Create a <code>MOAException</code>. - * - * @param messageId The message ID of the message contained in the created - * <code>MOAException</code>. + * + * @param messageId The message ID of the message contained in the created + * <code>MOAException</code>. * @param parameters The parameters needed to fill in the message arguments. - * @param wrapped The exception wrapped by the created - * <code>MOAException</code>. + * @param wrapped The exception wrapped by the created + * <code>MOAException</code>. */ public MOARuntimeException( - String messageId, - Object[] parameters, - Throwable wrapped) { + String messageId, + Object[] parameters, + Throwable wrapped) { super(MessageProvider.getInstance().getMessage(messageId, parameters)); this.messageId = messageId; @@ -91,7 +91,7 @@ public class MOARuntimeException extends RuntimeException { /** * Returns the message ID of this exception. - * + * * @return The message ID as provided in the constructor. */ public String getMessageId() { @@ -100,20 +100,21 @@ public class MOARuntimeException extends RuntimeException { /** * Returns the exception wrapped by this <code>MOARuntimeException</code>. - * - * @return The exception wrapped by this exception. Possibly - * <code>null</code>, if none was provided at construction time. + * + * @return The exception wrapped by this exception. Possibly <code>null</code>, + * if none was provided at construction time. */ public Throwable getWrapped() { return wrapped; } /** - * Convert this <code>MOARuntimeException</code> to an <code>ErrorResponse</code> - * element from the MOA namespace. - * + * Convert this <code>MOARuntimeException</code> to an + * <code>ErrorResponse</code> element from the MOA namespace. + * * @return An <code>ErrorResponse</code> element, containing the subelements - * <code>ErrorCode</code> and <code>Info</code> required by the MOA schema. + * <code>ErrorCode</code> and <code>Info</code> required by the MOA + * schema. */ public Element toErrorResponse() { DocumentBuilder builder; @@ -127,7 +128,7 @@ public class MOARuntimeException extends RuntimeException { try { builder = DocumentBuilderFactory.newInstance().newDocumentBuilder(); impl = builder.getDOMImplementation(); - } catch (ParserConfigurationException e) { + } catch (final ParserConfigurationException e) { return null; } @@ -137,11 +138,11 @@ public class MOARuntimeException extends RuntimeException { // add MOA namespace declaration errorResponse.setAttributeNS( - Constants.XMLNS_NS_URI, - "xmlns", - Constants.MOA_NS_URI); + Constants.XMLNS_NS_URI, + "xmlns", + Constants.MOA_NS_URI); - // build the child elements + // build the child elements errorCode = doc.createElementNS(Constants.MOA_NS_URI, "ErrorCode"); errorCode.appendChild(doc.createTextNode(messageId)); info = doc.createElementNS(Constants.MOA_NS_URI, "Info"); @@ -150,22 +151,24 @@ public class MOARuntimeException extends RuntimeException { errorResponse.appendChild(info); return errorResponse; } - + /** * Print a stack trace of this exception to <code>System.err</code>. - * + * * @see java.lang.Throwable#printStackTrace() */ + @Override public void printStackTrace() { printStackTrace(System.err); } /** * Print a stack trace of this exception, including the wrapped exception. - * + * * @param s The stream to write the stack trace to. * @see java.lang.Throwable#printStackTrace(java.io.PrintStream) */ + @Override public void printStackTrace(PrintStream s) { super.printStackTrace(s); if (getWrapped() != null) { @@ -176,10 +179,11 @@ public class MOARuntimeException extends RuntimeException { /** * Print a stack trace of this exception, including the wrapped exception. - * + * * @param s The stream to write the stacktrace to. * @see java.lang.Throwable#printStackTrace(java.io.PrintWriter) */ + @Override public void printStackTrace(PrintWriter s) { super.printStackTrace(s); if (getWrapped() != null) { diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/MOASystemException.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/MOASystemException.java index 67c1908..aea00a8 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/MOASystemException.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/MOASystemException.java @@ -21,29 +21,29 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss; + /** * Base class of technical MOA exceptions. - * + * * Technical exceptions are exceptions that originate from system failure (e.g., * a database connection fails, a component is not available, etc.) - * + * * @author Patrick Peck * @version $Id$ */ public class MOASystemException extends MOAException { /** - * - */ - private static final long serialVersionUID = 655642019638205185L; + * + */ + private static final long serialVersionUID = 655642019638205185L; -/** + /** * Create a new <code>MOASystemException</code>. - * - * @param messageId The identifier of the message associated with this - * exception. + * + * @param messageId The identifier of the message associated with this + * exception. * @param parameters Additional message parameters. */ public MOASystemException(String messageId, Object[] parameters) { @@ -52,17 +52,17 @@ public class MOASystemException extends MOAException { /** * Create a new <code>MOASystemException</code>. - * - * @param messageId The identifier of the message associated with this - * <code>MOASystemException</code>. + * + * @param messageId The identifier of the message associated with this + * <code>MOASystemException</code>. * @param parameters Additional message parameters. - * @param wrapped The exception wrapped by this - * <code>MOASystemException</code>. + * @param wrapped The exception wrapped by this + * <code>MOASystemException</code>. */ public MOASystemException( - String messageId, - Object[] parameters, - Throwable wrapped) { + String messageId, + Object[] parameters, + Throwable wrapped) { super(messageId, parameters, wrapped); } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/OutputConstants.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/OutputConstants.java index 83519d2..e69171c 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/OutputConstants.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/OutputConstants.java @@ -2,14 +2,13 @@ package at.gv.egovernment.moa.spss; import java.lang.reflect.Field; -import iaik.server.modules.ResultCode; +import iaik.server.modules.resultcodes.ResultCode; public class OutputConstants { - public static void main(String[] argv) throws IllegalArgumentException, IllegalAccessException { - Field[] fields = ResultCode.class.getFields(); - for(int i = 0; i < fields.length; i++) { - Field f = fields[i]; - System.out.println(f.getName() + " : " + f.get(null)); - } - } + public static void main(String[] argv) throws IllegalArgumentException, IllegalAccessException { + final Field[] fields = ResultCode.class.getFields(); + for (final Field f : fields) { + System.out.println(f.getName() + " : " + f.get(null)); + } + } } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/Configurator.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/Configurator.java index 59db7b5..f2d3b89 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/Configurator.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/Configurator.java @@ -21,17 +21,17 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.api; import at.gv.egovernment.moa.spss.MOAException; import at.gv.egovernment.moa.spss.server.init.ConfiguratorImpl; +import at.gv.egovernment.moa.spss.server.init.StartupConfigurationHolder; /** * Configures the SP/SS API. - * - * Also handles dynamic configuration updates. - * + * + * Also handles dynamic configuration updates. + * * @author Patrick Peck * @version $Id$ */ @@ -39,7 +39,7 @@ public abstract class Configurator { /** The default implementation class. */ private static final String DEFAULT_IMPLEMENTATION = - "at.gv.egovernment.moa.spss.server.init.ConfiguratorImpl"; + "at.gv.egovernment.moa.spss.server.init.ConfiguratorImpl"; /** The single instance of this class. */ private static Configurator instance = null; @@ -47,14 +47,13 @@ public abstract class Configurator { public static synchronized Configurator getInstance() { if (instance == null) { try { - /*DiscoverClass discover = new DiscoverClass(); - instance = - (Configurator) discover.newInstance( - Configurator.class, - DEFAULT_IMPLEMENTATION);*/ - instance = new ConfiguratorImpl(); - } catch (Exception e) { - // this can not happen since we provide a valid default + /* + * DiscoverClass discover = new DiscoverClass(); instance = (Configurator) + * discover.newInstance( Configurator.class, DEFAULT_IMPLEMENTATION); + */ + instance = new ConfiguratorImpl(); + } catch (final Exception e) { + // this can not happen since we provide a valid default // implementation } } @@ -62,23 +61,35 @@ public abstract class Configurator { } /** + * Get current configuration object. + * + * @return Configuration or <code>null</code> if it was not initialized yet + */ + public abstract StartupConfigurationHolder getCurrentConfiguration(); + + /** * Initialize the SP/SS configuration. - * - * Only a single call to this method will have an effect. Use - * <code>update()</code> for reflecting changes in the configuration instead. - * + * + * Only a single call to this method will have an effect. Use + * <code>update()</code> for reflecting changes in the configuration instead. + * + * @return Configuration holder + * * @throws MOAException An error occurred updating the SP/SS configuration. - */ - public abstract void init() throws MOAException; - + */ + public abstract StartupConfigurationHolder init() throws MOAException; + /** * Update the SP/SS configuration. - * + * * This will only have an effect after the system has been initialized once * using <code>init()</code>. - * + * + * @return Updated Configuration holder, or <code>null</code> if it was not + * initialized + * * @throws MOAException An error occurred updating the SP/SS configuration. */ - public abstract void update() throws MOAException; + public abstract StartupConfigurationHolder update() throws MOAException; } 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..d0be7d5 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 @@ -21,7 +21,6 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.api; import java.io.InputStream; @@ -81,10 +80,10 @@ import at.gv.egovernment.moa.spss.api.xmlverify.VerifyXMLSignatureResponse; /** * An abstract factory for creating MOA SP/SS API objects. - * - * Use <code>getInstance()</code> to get a concrete factory instance. Using - * this instance, concrete MOA SP/SS API object can be created. - * + * + * Use <code>getInstance()</code> to get a concrete factory instance. Using this + * instance, concrete MOA SP/SS API object can be created. + * * @author Patrick Peck * @author Gregor Karlinger * @version $Id$ @@ -93,27 +92,26 @@ public abstract class SPSSFactory { /** The default implementation of this class. */ private static final String DEFAULT_IMPLEMENTATION = - "at.gv.egovernment.moa.spss.api.impl.SPSSFactoryImpl"; + "at.gv.egovernment.moa.spss.api.impl.SPSSFactoryImpl"; /** The single instance of this class. */ private static SPSSFactory instance = null; /** * Returns the single instance of this class. - * + * * @return The single instance of this class. */ public static synchronized SPSSFactory getInstance() { if (instance == null) { try { - /*DiscoverClass discover = new DiscoverClass(); - instance = - (SPSSFactory) discover.newInstance( - SPSSFactory.class, - DEFAULT_IMPLEMENTATION);*/ + /* + * DiscoverClass discover = new DiscoverClass(); instance = (SPSSFactory) + * discover.newInstance( SPSSFactory.class, DEFAULT_IMPLEMENTATION); + */ instance = new SPSSFactoryImpl(); - } catch (Exception e) { - // this can not happen since we provide a valid default + } catch (final Exception e) { + // this can not happen since we provide a valid default // implementation } } @@ -126,93 +124,94 @@ public abstract class SPSSFactory { /** * Create a new <code>CreateXMLSignatureRequest</code> object. - * - * @param keyIdentifier The identifier for the key group to use for signing. - * @param singleSignatureInfos A <code>List</code> of - * <code>SingleSignatureInfo</code> objects containing information about a - * single signature to be created. - * @return The <code>CreateXMLSignatureRequest</code> containing the above - * data. - * + * + * @param keyIdentifier The identifier for the key group to use for + * signing. + * @param singleSignatureInfos A <code>List</code> of + * <code>SingleSignatureInfo</code> objects + * containing information about a single signature + * to be created. + * @return The <code>CreateXMLSignatureRequest</code> containing the above data. + * * @pre keyIdentifier != null && keyIdentifier.length() > 0 * @pre singleSignatureInfos != null - * @pre forall Object o in singleSignatureInfos | - * o instanceof at.gv.egovernment.moa.spss.api.common.SingleSignatureInfo + * @pre forall Object o in singleSignatureInfos | o instanceof + * at.gv.egovernment.moa.spss.api.common.SingleSignatureInfo * @post return != null */ public abstract CreateXMLSignatureRequest createCreateXMLSignatureRequest( - String keyIdentifier, - List singleSignatureInfos); + String keyIdentifier, + List singleSignatureInfos); /** * Create a new <code>CreateCMSSignatureRequest</code> object. - * - * @param keyIdentifier The identifier for the key group to use for signing. - * @param singleSignatureInfos A <code>List</code> of - * <code>SingleSignatureInfo</code> objects containing information about a - * single signature to be created. - * @return The <code>CreateCMSSignatureRequest</code> containing the above - * data. - * + * + * @param keyIdentifier The identifier for the key group to use for + * signing. + * @param singleSignatureInfos A <code>List</code> of + * <code>SingleSignatureInfo</code> objects + * containing information about a single signature + * to be created. + * @return The <code>CreateCMSSignatureRequest</code> containing the above data. + * * @pre keyIdentifier != null && keyIdentifier.length() > 0 * @pre singleSignatureInfos != null - * @pre forall Object o in singleSignatureInfos | - * o instanceof at.gv.egovernment.moa.spss.api.common.SingleSignatureInfo + * @pre forall Object o in singleSignatureInfos | o instanceof + * at.gv.egovernment.moa.spss.api.common.SingleSignatureInfo * @post return != null */ public abstract CreateCMSSignatureRequest createCreateCMSSignatureRequest( - String keyIdentifier, - List singleSignatureInfos); - + String keyIdentifier, + List singleSignatureInfos); + /** * Create a new <code>SingleSignatureInfo</code> object. - * - * @param dataObjectInfos The data objects that will be signed (including - * transformations). - * @param createSignatureInfo Information about the signature environment. May - * be <code>null</code>. + * + * @param dataObjectInfos The data objects that will be signed (including + * transformations). + * @param createSignatureInfo Information about the signature environment. May + * be <code>null</code>. * @param securityLayerConform If <code>true</code>, a Security Layer conform - * signature manifest is created, otherwise not. + * signature manifest is created, otherwise not. * @return The <code>SingleSignatureInfo</code> containing the above data. - * + * * @pre dataObjectInfos != null && dataObjectInfos.size() > 0 - * @pre forall Object o in dataObjectInfos | - * o instanceof at.gv.egovernment.moa.spss.api.xmlsign.DataObjectInfo + * @pre forall Object o in dataObjectInfos | o instanceof + * at.gv.egovernment.moa.spss.api.xmlsign.DataObjectInfo * @post return != null */ public abstract SingleSignatureInfo createSingleSignatureInfo( - List dataObjectInfos, - CreateSignatureInfo createSignatureInfo, boolean securityLayerConform); - + List dataObjectInfos, + CreateSignatureInfo createSignatureInfo, boolean securityLayerConform); + /** * Create a new <code>SingleSignatureInfo</code> object. - * - * @param dataObjectInfo The data object that will be signed. + * + * @param dataObjectInfo The data object that will be signed. * @param securityLayerConform If <code>true</code>, a Security Layer conform - * signature manifest is created, otherwise not. + * signature manifest is created, otherwise not. + * @param isPAdESSignature * @return The <code>SingleSignatureInfo</code> 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); - - - + public abstract at.gv.egovernment.moa.spss.api.cmssign.SingleSignatureInfo createSingleSignatureInfoCMS( + at.gv.egovernment.moa.spss.api.cmssign.DataObjectInfo dataObjectInfo, + boolean securityLayerConform, boolean isPAdESSignature); /** * Create a new <code>DataObjectInfo</code> object. - * - * @param structure The type of signature to create. - * @param childOfManifest If <code>true</code>, references will be returned - * as children of an XMLDsig manifest. Otherwise, they will be returned as - * children of the signature itself. - * @param dataObject The data object that will be signed. - * @param createTransformsInfoProfile Additional transformations to apply - * to the data object. + * + * @param structure The type of signature to create. + * @param childOfManifest If <code>true</code>, references will be + * returned as children of an XMLDsig + * manifest. Otherwise, they will be returned + * as children of the signature itself. + * @param dataObject The data object that will be signed. + * @param createTransformsInfoProfile Additional transformations to apply to the + * data object. * @return The <code>DataObjectInfo</code> containing the above data. - * + * * @pre DataObjectInfo.STRUCTURE_DETACHED.equals(structure) || * DataObjectInfo.STRUCTURE_ENVELOPING.equals(structure) * @pre dataObject != null @@ -220,218 +219,216 @@ public abstract class SPSSFactory { * @post return != null */ public abstract DataObjectInfo createDataObjectInfo( - String structure, - boolean childOfManifest, - Content dataObject, - CreateTransformsInfoProfile createTransformsInfoProfile); + String structure, + boolean childOfManifest, + Content dataObject, + CreateTransformsInfoProfile createTransformsInfoProfile); /** * Create a new <code>DataObjectInfo</code> object. - * - * @param structure The type of signature to create. + * + * @param structure The type of signature to create. * @param dataObject The data object that will be signed. * @return The <code>DataObjectInfo</code> containing the above data. - * + * * @pre DataObjectInfo.STRUCTURE_DETACHED.equals(structure) || * DataObjectInfo.STRUCTURE_ENVELOPING.equals(structure) * @pre dataObject != null * @post return != null */ public abstract at.gv.egovernment.moa.spss.api.cmssign.DataObjectInfo createDataObjectInfo( - String structure, - CMSDataObject dataObject); - + String structure, + CMSDataObject dataObject); + /** * Create a new <code>CreateTransformsInfoProfile</code> object containing a * reference to a locally stored profile. - * - * @param profileID The profile ID to resolve during signature creation. + * + * @param profileID The profile ID to resolve during signature creation. * @return The <code>CreateTransformsInfoProfile</code> containing the given - * profile ID. - * + * profile ID. + * * @pre profileID != null && profileID.length() > 0 * @post return != null */ public abstract CreateTransformsInfoProfile createCreateTransformsInfoProfile(String profileID); /** - * Create a new <code>CreateTransformsInfoProfile</code> object by providing - * the profile data explicitly. - * - * @param transformsInfo The transformations to apply to the associated - * data object. - * @param supplements Supplemental information for the transformation. May be - * <code>null</code>. + * Create a new <code>CreateTransformsInfoProfile</code> object by providing the + * profile data explicitly. + * + * @param transformsInfo The transformations to apply to the associated data + * object. + * @param supplements Supplemental information for the transformation. May be + * <code>null</code>. * @return The <code>CreateTransformsInfoProfile</code> containing the above - * data. - * + * data. + * * @pre transformsInfo != null - * @pre supplements != null implies - * forall Object o in supplements | - * o instanceof at.gv.egovernment.moa.spss.api.common.XMLDataObjectAssociation + * @pre supplements != null implies forall Object o in supplements | o + * instanceof + * at.gv.egovernment.moa.spss.api.common.XMLDataObjectAssociation * @post return != null */ public abstract CreateTransformsInfoProfile createCreateTransformsInfoProfile( - CreateTransformsInfo transformsInfo, - List supplements); + CreateTransformsInfo transformsInfo, + List supplements); /** * Create a new <code>CreateTransformsInfo</code> object. - * - * @param transforms The <code>Transform</code>s to apply to the associated - * data object. May be <code>null</code>. - * @param finalDataMetaInfo Information about the type of the transformed - * data. + * + * @param transforms The <code>Transform</code>s to apply to the + * associated data object. May be <code>null</code>. + * @param finalDataMetaInfo Information about the type of the transformed data. * @return The <code>CreateTransformsInfo</code> containing the above data. - * + * * @pre transforms != null implies transforms.size > 0 - * @pre transforms != null implies - * forall Object o in transforms | - * o instanceof at.gv.egovernment.moa.spss.api.common.Transform + * @pre transforms != null implies forall Object o in transforms | o instanceof + * at.gv.egovernment.moa.spss.api.common.Transform * @pre finalDataMetaInfo != null * @post return != null */ public abstract CreateTransformsInfo createCreateTransformsInfo( - List transforms, - MetaInfo finalDataMetaInfo); + List transforms, + MetaInfo finalDataMetaInfo); /** * Create a new <code>CreateSignatureInfo</code> object. - * - * @param createSignatureEnvironment The signature environment that will - * contain the signature. - * @param createSignatureEnvironmentProfile Additional information about - * the signture environment. + * + * @param createSignatureEnvironment The signature environment that will + * contain the signature. + * @param createSignatureEnvironmentProfile Additional information about the + * signture environment. * @return The <code>CreateSignatureInfo</code> containing the above data. - * + * * @pre createSignatureEnvironment != null * @pre createSignatureEnvironmentProfile != null * @post return != null */ public abstract CreateSignatureInfo createCreateSignatureInfo( - Content createSignatureEnvironment, - CreateSignatureEnvironmentProfile createSignatureEnvironmentProfile); + Content createSignatureEnvironment, + CreateSignatureEnvironmentProfile createSignatureEnvironmentProfile); /** - * Create a new <code>CreateSignatureEnvironmentProfile</code> object - * containing a reference to a locally stored profile. - * + * Create a new <code>CreateSignatureEnvironmentProfile</code> object containing + * a reference to a locally stored profile. + * * @param profileID The profile ID to resolve during signature creation. - * @return The <code>CreateSignatureEnvironmentProfile</code> containing - * the given profile ID. - * + * @return The <code>CreateSignatureEnvironmentProfile</code> containing the + * given profile ID. + * * @pre profileID != null && profileID.length() > 0 * @post return != null */ public abstract CreateSignatureEnvironmentProfile createCreateSignatureEnvironmentProfile(String profileID); /** - * Create a new <code>CreateSignatureEnvironmentProfile</code> object by - * providing the profile data explicitly. - * + * Create a new <code>CreateSignatureEnvironmentProfile</code> object by + * providing the profile data explicitly. + * * @param createSignatureLocation The location where the signature will be - * inserted. - * @param supplements Additional information about the signature environment. + * inserted. + * @param supplements Additional information about the signature + * environment. * @return The <code>CreateSignatureEnvironmentProfile</code> containing the - * above data. - * + * above data. + * * @pre createSignatureLocation != null - * @pre supplements != null - * @pre forall Object o in supplements | - * o instanceof at.gv.egovernment.moa.spss.api.common.XMLDataObjectAssociation + * @pre supplements != null + * @pre forall Object o in supplements | o instanceof + * at.gv.egovernment.moa.spss.api.common.XMLDataObjectAssociation * @post return != null */ public abstract CreateSignatureEnvironmentProfile createCreateSignatureEnvironmentProfile( - CreateSignatureLocation createSignatureLocation, - List supplements); + CreateSignatureLocation createSignatureLocation, + List supplements); /** * Create a new <code>CreateSignatureLocation</code> object. - * - * @param xPathExpression The XPath expression to select the signature - * parent element within the signature environment. - * @param index The index of the node, after which the signature will be - * inserted. + * + * @param xPathExpression The XPath expression to select the signature + * parent element within the signature environment. + * @param index The index of the node, after which the signature + * will be inserted. * @param namespaceDeclarations The namespace prefix to URI mapping to apply - * while evaluating the XPath expression. + * while evaluating the XPath expression. * @return The <code>CreateSignatureLocation</code> containing the above data. - * + * * @pre xPathExpression != null * @pre index >= 0 * @pre namespaceDeclarations != null */ public abstract CreateSignatureLocation createCreateSignatureLocation( - String xPathExpression, - int index, - Map namespaceDeclarations); + String xPathExpression, + int index, + Map namespaceDeclarations); /** * Create a new <code>CreateXMLSignatureResponse</code> object. - * - * @param responseElements The elements of the response, either - * <code>SignatureEnvironmentResponse</code> objects, or - * <code>ErrorResponse</code> objects. - * @return The new <code>CreateXMLSignatureResponse</code> containing the - * above data. - * + * + * @param responseElements The elements of the response, either + * <code>SignatureEnvironmentResponse</code> objects, or + * <code>ErrorResponse</code> objects. + * @return The new <code>CreateXMLSignatureResponse</code> containing the above + * data. + * * @pre responseElements != null && responseElements.size() > 0 - * @pre forall Object o in responseElements | - * o instanceof at.gv.egovernment.moa.spss.api.xmlsign.CreateSignatureResponseElement + * @pre forall Object o in responseElements | o instanceof + * at.gv.egovernment.moa.spss.api.xmlsign.CreateSignatureResponseElement * @post return != null */ public abstract CreateXMLSignatureResponse createCreateXMLSignatureResponse(List responseElements); - /** * Create a new <code>CreateCMSSignatureResponse</code> object. - * - * @param responseElements The elements of the response, either - * <code>CMSSignatureResponse</code> objects, or - * <code>ErrorResponse</code> objects. - * @return The new <code>CreateCMSSignatureResponse</code> containing the - * above data. - * + * + * @param responseElements The elements of the response, either + * <code>CMSSignatureResponse</code> objects, or + * <code>ErrorResponse</code> objects. + * @return The new <code>CreateCMSSignatureResponse</code> containing the above + * data. + * * @pre responseElements != null && responseElements.size() > 0 - * @pre forall Object o in responseElements | - * o instanceof at.gv.egovernment.moa.spss.api.cmssign.CMSSignatureResponse + * @pre forall Object o in responseElements | o instanceof + * at.gv.egovernment.moa.spss.api.cmssign.CMSSignatureResponse * @post return != null */ public abstract CreateCMSSignatureResponse createCreateCMSSignatureResponse(List responseElements); - - + /** * Create a new <code>SignatureEnvironmentResponse</code> object. - * + * * @param signatureEnvironment The signature environment containing the - * signature. + * signature. * @return The <code>SignatureEnvironmentResponse</code> containing the - * <code>signatureEnvironment</code>. - * + * <code>signatureEnvironment</code>. + * * @pre signatureEnvironment != null * @post return != null */ public abstract CMSSignatureResponse createCMSSignatureResponse(String base64value); - + /** * Create a new <code>SignatureEnvironmentResponse</code> object. - * + * * @param signatureEnvironment The signature environment containing the - * signature. + * signature. * @return The <code>SignatureEnvironmentResponse</code> containing the - * <code>signatureEnvironment</code>. - * + * <code>signatureEnvironment</code>. + * * @pre signatureEnvironment != null * @post return != null */ - public abstract SignatureEnvironmentResponse createSignatureEnvironmentResponse(Element signatureEnvironment); + public abstract SignatureEnvironmentResponse createSignatureEnvironmentResponse( + Element signatureEnvironment); /** * Create a new <code>ErrorResponse</code> object. - * + * * @param code The numerical error code. * @param info Verbose error information. * @return The new <code>ErrorResponse</code> containing the above data. - * + * * @pre code > 0 * @pre info != null * @post return != null @@ -444,91 +441,87 @@ public abstract class SPSSFactory { /** * Create a new <code>VerifyCMSSignatureRequest</code> object. - * - * @param signatories The indexes of the signatories whose signature is to - * be verified. - * @param dateTime The date for which the verification is to be performed. - * May be <code>null</code>. - * @param cmsSignature The CMS signature. - * @param dataObject The signed data. May be <code>null</code>. - * @param trustProfileID The ID of the trust profile containing the trusted - * root certificates. - * @return The <code>VerifyCMSSignatureRequest</code> containing the above - * data. - * + * + * @param signatories The indexes of the signatories whose signature is to be + * verified. + * @param dateTime The date for which the verification is to be performed. + * May be <code>null</code>. + * @param cmsSignature The CMS signature. + * @param dataObject The signed data. May be <code>null</code>. + * @param trustProfileID The ID of the trust profile containing the trusted root + * certificates. + * @return The <code>VerifyCMSSignatureRequest</code> containing the above data. + * * @pre signatories != null && signatories.length > 0 - * @pre signaturies != VerifyCMSSignatureRequest.ALL_SIGNATORIES implies - * for (int i = 0; i < signatories.length; i++) - * signatories[i] >= 1 + * @pre signaturies != VerifyCMSSignatureRequest.ALL_SIGNATORIES implies for + * (int i = 0; i < signatories.length; i++) signatories[i] >= 1 * @pre cmsSignature != null * @pre trustProfileID != null && trustProfileID.length() > 0 * @post return != null */ public abstract VerifyCMSSignatureRequest createVerifyCMSSignatureRequest( - int[] signatories, - Date dateTime, - InputStream cmsSignature, - CMSDataObject dataObject, - String trustProfileID, - boolean pdf); - + int[] signatories, + Date dateTime, + InputStream cmsSignature, + CMSDataObject dataObject, + String trustProfileID, + boolean pdf); + /** * Create a new <code>VerifyCMSSignatureRequest</code> object. - * - * @param signatories The indexes of the signatories whose signature is to - * be verified. - * @param dateTime The date for which the verification is to be performed. - * May be <code>null</code>. - * @param cmsSignature The CMS signature. - * @param dataObject The signed data. May be <code>null</code>. - * @param trustProfileID The ID of the trust profile containing the trusted - * root certificates. - * @return The <code>VerifyCMSSignatureRequest</code> containing the above - * data. - * + * + * @param signatories The indexes of the signatories whose signature is to be + * verified. + * @param dateTime The date for which the verification is to be performed. + * May be <code>null</code>. + * @param cmsSignature The CMS signature. + * @param dataObject The signed data. May be <code>null</code>. + * @param trustProfileID The ID of the trust profile containing the trusted root + * certificates. + * @return The <code>VerifyCMSSignatureRequest</code> containing the above data. + * * @pre signatories != null && signatories.length > 0 - * @pre signaturies != VerifyCMSSignatureRequest.ALL_SIGNATORIES implies - * for (int i = 0; i < signatories.length; i++) - * signatories[i] >= 1 + * @pre signaturies != VerifyCMSSignatureRequest.ALL_SIGNATORIES implies for + * (int i = 0; i < signatories.length; i++) signatories[i] >= 1 * @pre cmsSignature != null * @pre trustProfileID != null && trustProfileID.length() > 0 * @post return != null */ public abstract VerifyCMSSignatureRequest createVerifyCMSSignatureRequest( - int[] signatories, - Date dateTime, - InputStream cmsSignature, - CMSDataObject dataObject, - String trustProfileID, - boolean pdf, - boolean extended); + int[] signatories, + Date dateTime, + InputStream cmsSignature, + CMSDataObject dataObject, + String trustProfileID, + boolean pdf, + boolean extended); /** * Create a new <code>CMSDataObject</code> object from data at a given URI. - * - * @param metaInfo Type information about the <code>CMSDataObject</code>. - * May be <code>null</code>. - * @param content The CMS content containing the data. + * + * @param metaInfo Type information about the <code>CMSDataObject</code>. May be + * <code>null</code>. + * @param content The CMS content containing the data. * @return The new <code>CMSDataObject</code> containing the data. - * + * * @pre referenceURI != null * @pre content != null * @post return != null */ public abstract CMSDataObject createCMSDataObject( - MetaInfo metaInfo, - CMSContent content, - BigDecimal excludeByteRangeFrom, - BigDecimal excludeByteRangeTo); + MetaInfo metaInfo, + CMSContent content, + BigDecimal excludeByteRangeFrom, + BigDecimal excludeByteRangeTo); /** * Create a new <code>CMSContent</code> object from the data contained at the * given URI. - * + * * @param referenceURI The URI identifying the data. Must be resolvable. * @return The <code>CMSContent</code> containing a reference to the signed - * data. - * + * data. + * * @pre referenceURI != null * @post return != null */ @@ -536,11 +529,11 @@ public abstract class SPSSFactory { /** * Create a new <code>CMSContent</code> object from a byte stream. - * + * * @param binaryContent The byte stream containing the signed data. - * @return The new <code>CMSContent</code> containing the data from the - * byte stream. - * + * @return The new <code>CMSContent</code> containing the data from the byte + * stream. + * * @pre binaryContent != null * @post return != null */ @@ -548,38 +541,40 @@ public abstract class SPSSFactory { /** * Create a new <code>VerifyCMSSignatureResponse</code> object. - * + * * @param responseElements Verification information about each signature. - * @return The new <code>VerifyCMSSignatureResponse</code> containing the - * status of signature verification for each signature contained in the - * request. - * - * @pre responseElements != null && responseElements.size() > 0 - * @pre forall Object o in responseElements | - * o instanceof at.gv.egovernment.moa.spss.api.cmssign.VerifyCMSSignatureResponseElement + * @return The new <code>VerifyCMSSignatureResponse</code> containing the status + * of signature verification for each signature contained in the + * request. + * + * @pre responseElements != null && responseElements.size() > 0 + * @pre forall Object o in responseElements | o instanceof + * at.gv.egovernment.moa.spss.api.cmssign.VerifyCMSSignatureResponseElement * @post return != null */ public abstract VerifyCMSSignatureResponse createVerifyCMSSignatureResponse(List responseElements); /** * Create a new <code>VerifyCMSSignatureResponseElement</code> object. - * - * @param signerInfo Information about the signer certificate. - * @param signatureCheck Result of the singature value check. + * + * @param signerInfo Information about the signer certificate. + * @param signatureCheck Result of the signature value check. * @param certificateCheck Result of the certificate status check. - * @return The new <code>VerifyCMSSignatureResponseElement</code> containing - * the above data. - * - * @pre signerInfo != null && signatureCheck != null && - * certificateCheck != null + * @return The new <code>VerifyCMSSignatureResponseElement</code> containing the + * above data. + * + * @pre signerInfo != null && signatureCheck != null && certificateCheck != null * @post return != null */ public abstract VerifyCMSSignatureResponseElement createVerifyCMSSignatureResponseElement( - SignerInfo signerInfo, - CheckResult signatureCheck, - CheckResult certificateCheck, - List adesResult, - ExtendedCertificateCheckResult extendedCertificateCheckResult); + SignerInfo signerInfo, + CheckResult signatureCheck, + CheckResult certificateCheck, + List adesResult, + ExtendedCertificateCheckResult extendedCertificateCheckResult, + String usedAlgorithm, + Boolean coversFullDocument, + int[] byteRangeOfSignature); // // Factory methods for verifying XML signatures @@ -587,114 +582,114 @@ public abstract class SPSSFactory { /** * Create a new <code>VerifyXMLSignatureRequest</code> object. - * - * @param dateTime The date for which the verification is to be performed. - * May be <code>null</code>. - * @param verifySignatureInfo Information about the signature environment and - * the location of the signature. - * @param supplementProfiles Supplemental information for the signature - * environment. May be <code>null</code>. + * + * @param dateTime The date for which the verification is to be + * performed. May be <code>null</code>. + * @param verifySignatureInfo Information about the signature environment + * and the location of the signature. + * @param supplementProfiles Supplemental information for the signature + * environment. May be <code>null</code>. * @param signatureManifestParams Additional information for checking the - * signature manifest. May be <code>null</code>. - * @param returnHashInputData If <code>true</code>, hash input data will - * be returned in the response, otherwise not. - * @param trustProfileID The ID of the trust profile containing the trusted - * root certificates. - * @return The new <code>VerifyXMLSignatureRequest</code> containing the - * above data. - * + * signature manifest. May be <code>null</code>. + * @param returnHashInputData If <code>true</code>, hash input data will be + * returned in the response, otherwise not. + * @param trustProfileID The ID of the trust profile containing the + * trusted root certificates. + * @return The new <code>VerifyXMLSignatureRequest</code> containing the above + * data. + * * @pre verifySignatureInfo != null - * @pre supplementProfiles != null implies - * forall Object o in supplementProfiles | - * o instanceof at.gv.egovernment.moa.spss.api.xmlverify.SupplementProfile + * @pre supplementProfiles != null implies forall Object o in supplementProfiles + * | o instanceof + * at.gv.egovernment.moa.spss.api.xmlverify.SupplementProfile * @pre trustProfileID != null && trustProfileID.length() > 0 * @post return != null */ public abstract VerifyXMLSignatureRequest createVerifyXMLSignatureRequest( - Date dateTime, - VerifySignatureInfo verifySignatureInfo, - List supplementProfiles, - SignatureManifestCheckParams signatureManifestParams, - boolean returnHashInputData, - String trustProfileID); - + Date dateTime, + VerifySignatureInfo verifySignatureInfo, + List supplementProfiles, + SignatureManifestCheckParams signatureManifestParams, + boolean returnHashInputData, + String trustProfileID); + /** * Create a new <code>VerifyXMLSignatureRequest</code> object. - * - * @param dateTime The date for which the verification is to be performed. - * May be <code>null</code>. - * @param verifySignatureInfo Information about the signature environment and - * the location of the signature. - * @param supplementProfiles Supplemental information for the signature - * environment. May be <code>null</code>. + * + * @param dateTime The date for which the verification is to be + * performed. May be <code>null</code>. + * @param verifySignatureInfo Information about the signature environment + * and the location of the signature. + * @param supplementProfiles Supplemental information for the signature + * environment. May be <code>null</code>. * @param signatureManifestParams Additional information for checking the - * signature manifest. May be <code>null</code>. - * @param returnHashInputData If <code>true</code>, hash input data will - * be returned in the response, otherwise not. - * @param trustProfileID The ID of the trust profile containing the trusted - * root certificates. - * @param extendedValidation Should the valdation result in forms - * @return The new <code>VerifyXMLSignatureRequest</code> containing the - * above data. - * + * signature manifest. May be <code>null</code>. + * @param returnHashInputData If <code>true</code>, hash input data will be + * returned in the response, otherwise not. + * @param trustProfileID The ID of the trust profile containing the + * trusted root certificates. + * @param extendedValidation Should the valdation result in forms + * @return The new <code>VerifyXMLSignatureRequest</code> containing the above + * data. + * * @pre verifySignatureInfo != null - * @pre supplementProfiles != null implies - * forall Object o in supplementProfiles | - * o instanceof at.gv.egovernment.moa.spss.api.xmlverify.SupplementProfile + * @pre supplementProfiles != null implies forall Object o in supplementProfiles + * | o instanceof + * at.gv.egovernment.moa.spss.api.xmlverify.SupplementProfile * @pre trustProfileID != null && trustProfileID.length() > 0 * @post return != null */ public abstract VerifyXMLSignatureRequest createVerifyXMLSignatureRequest( - Date dateTime, - VerifySignatureInfo verifySignatureInfo, - List supplementProfiles, - SignatureManifestCheckParams signatureManifestParams, - boolean returnHashInputData, - String trustProfileID, - boolean extendedValidation); + Date dateTime, + VerifySignatureInfo verifySignatureInfo, + List supplementProfiles, + SignatureManifestCheckParams signatureManifestParams, + boolean returnHashInputData, + String trustProfileID, + boolean extendedValidation); /** * Create a new <code>VerifySignatureInfo</code> object. - * - * @param verifySignatureEnvironment The signature environment containing - * the signature to be verified. - * @param verifySignatureLocation The location of the signature within the - * signature environment. + * + * @param verifySignatureEnvironment The signature environment containing the + * signature to be verified. + * @param verifySignatureLocation The location of the signature within the + * signature environment. * @return The new <code>VerifySignatureInfo</code> containing the above data. - * + * * @pre verifySignatureEnvironment != null * @pre verifySignatureLocation != null * @post return != null */ public abstract VerifySignatureInfo createVerifySignatureInfo( - Content verifySignatureEnvironment, - VerifySignatureLocation verifySignatureLocation); + Content verifySignatureEnvironment, + VerifySignatureLocation verifySignatureLocation); /** * Create a new <code>VerifySignatureLocation</code> object. - * - * @param xPathExpression The XPath expression to select the signature - * element within the signature environment. + * + * @param xPathExpression The XPath expression to select the signature + * element within the signature environment. * @param namespaceDeclarations The namespace prefix to URI mapping to apply - * while evaluating the XPath expression. + * while evaluating the XPath expression. * @return The new <code>VerifySignatureLocation</code> containing the above - * data. - * + * data. + * * @pre xPathExpression != null * @pre namespaceDeclarations != null * @post return != null */ public abstract VerifySignatureLocation createVerifySignatureLocation( - String xPathExpression, - Map namespaceDeclarations); + String xPathExpression, + Map namespaceDeclarations); /** - * Create a new <code>SupplementProfile</code> object containing a reference - * to a locally stored profile. - * + * Create a new <code>SupplementProfile</code> object containing a reference to + * a locally stored profile. + * * @param profileID The profile ID to resolve during signature verification. * @return The <code>SupplementProfile</code> containing the profile ID. - * + * * @pre profileID != null && profileID.length() > 0 * @post return != null */ @@ -703,7 +698,7 @@ public abstract class SPSSFactory { /** * Create a new <code>SupplementProfile</code> object by providing the profile * data explicitly. - * + * * @param supplementProfile The profile data. * @return The <code>SupplementProfile</code> containing the profile data. */ @@ -711,231 +706,227 @@ public abstract class SPSSFactory { /** * Create a new <code>SignatureManifestCheckParams</code> object. - * - * @param referenceInfos Information for checking the validity of a - * a reference. - * @param returnReferenceInputData If <code>true</code>, the input data to - * the calculation of reference digest values will be returned in the - * response, otherwise not. - * @return The <code>SignatureManifestCheckParams</code> containing the - * above data. - * + * + * @param referenceInfos Information for checking the validity of a a + * reference. + * @param returnReferenceInputData If <code>true</code>, the input data to the + * calculation of reference digest values will + * be returned in the response, otherwise not. + * @return The <code>SignatureManifestCheckParams</code> containing the above + * data. + * * @pre referenceInfos != null && referenceInfos.size() > 0 - * @pre forall Object o in referenceInfos | - * o instanceof at.gv.egovernment.moa.spss.api.xmlverify.ReferenceInfo + * @pre forall Object o in referenceInfos | o instanceof + * at.gv.egovernment.moa.spss.api.xmlverify.ReferenceInfo * @post return != null */ public abstract SignatureManifestCheckParams createSignatureManifestCheckParams( - List referenceInfos, - boolean returnReferenceInputData); + List referenceInfos, + boolean returnReferenceInputData); /** * Create a new <code>ReferenceInfo</code> object. - * - * @param verifyTransformsInfoProfiles The transformation profiles valid for - * the associated reference. - * @return The <code>ReferenceInfo</code> containing the transformation - * profiles. - * - * @pre verifyTransformsInfoProfiles != null && - * verifyTransformsInfoProfiles.size() > 0 - * @pre forall Object o in verifyTransformsInfoProfiles | - * o instanceof at.gv.egovernment.moa.spss.api.xmlverify.VerifyTransformsInfoProfile + * + * @param verifyTransformsInfoProfiles The transformation profiles valid for the + * associated reference. + * @return The <code>ReferenceInfo</code> containing the transformation + * profiles. + * + * @pre verifyTransformsInfoProfiles != null && + * verifyTransformsInfoProfiles.size() > 0 + * @pre forall Object o in verifyTransformsInfoProfiles | o instanceof + * at.gv.egovernment.moa.spss.api.xmlverify.VerifyTransformsInfoProfile * @post return != null */ public abstract ReferenceInfo createReferenceInfo(List verifyTransformsInfoProfiles); /** - * Create a new <code>VerifyTransformsInfoProfile</code> object containing - * a reference to a locally stored profile. - * + * Create a new <code>VerifyTransformsInfoProfile</code> object containing a + * reference to a locally stored profile. + * * @param profileID The profile ID to resolve during signature verification. - * @return The <code>VerifyTransformsInfoProfile</code> containing the - * given profile ID. - * + * @return The <code>VerifyTransformsInfoProfile</code> containing the given + * profile ID. + * * @pre profileID != null && profileID.length() > 0 * @post return != null */ public abstract VerifyTransformsInfoProfile createVerifyTransformsInfoProfile(String profileID); /** - * Create a new <code>VerifyTransformsInfoProfile</code> object by providing - * the profile data explicitly. - * - * @param transforms A valid chain of transformations for the reference. - * May be <code>null</code>. + * Create a new <code>VerifyTransformsInfoProfile</code> object by providing the + * profile data explicitly. + * + * @param transforms A valid chain of transformations for the + * reference. May be <code>null</code>. * @param transformParameters Additional transformation information. * @return The <code>VerifyTransformsInfoProfile</code> containing the above - * data. - * - * @pre transforms != null implies - * (transforms.size() > 0 && - * forall Object o in transforms | o instanceof Transform) - * @pre transformParameters != null implies - * forall Object o in transformParameters | - * o instanceof at.gv.egovernment.moa.spss.api.xmlverify.TransformParameter + * data. + * + * @pre transforms != null implies (transforms.size() > 0 && forall Object o in + * transforms | o instanceof Transform) + * @pre transformParameters != null implies forall Object o in + * transformParameters | o instanceof + * at.gv.egovernment.moa.spss.api.xmlverify.TransformParameter * @post return != null */ public abstract VerifyTransformsInfoProfile createVerifyTransformsInfoProfile( - List transforms, - List transformParameters); + List transforms, + List transformParameters); /** - * Create a new <code>TransformParameter</code> object with the data - * contained at the given URI. - * + * Create a new <code>TransformParameter</code> object with the data contained + * at the given URI. + * * @param URI The URI identifying the data. The URI will be resolved during - * signature verification. - * @return The <code>TransformParameter</code> containing the URI of the - * data. - * + * signature verification. + * @return The <code>TransformParameter</code> containing the URI of the data. + * * @pre URI != null * @post return != null */ public abstract TransformParameter createTransformParameter(String URI); /** - * Creata a new <code>TransformParameter</code> object containing the - * binary data. - * - * @param URI The URI identifying the data. - * @param binaryData The binary data. + * Creata a new <code>TransformParameter</code> object containing the binary + * data. + * + * @param URI The URI identifying the data. + * @param binaryData The binary data. * @return The <code>TransformParameter</code> containig the binary data. - * + * * @pre URI != null * @pre binary != null * @post return != null */ public abstract TransformParameter createTransformParameter( - String URI, - InputStream binaryData); + String URI, + InputStream binaryData); /** - * Create a new <code>TransformParameter</code> object containing the hash - * value of the transformation data. - * - * @param URI The URI identifying the data. It will be resolved during - * signature verification. - * @param digestMethod The digest method used for calculating the digest - * value. - * @param digestValue The hash value of the transformation data. + * Create a new <code>TransformParameter</code> object containing the hash value + * of the transformation data. + * + * @param URI The URI identifying the data. It will be resolved during + * signature verification. + * @param digestMethod The digest method used for calculating the digest value. + * @param digestValue The hash value of the transformation data. * @return The <code>TransformParameter</code> containing the above data. - * + * * @pre URI != null * @pre digestMethod != null * @pre digestValue != null */ public abstract TransformParameter createTransformParameter( - String URI, - String digestMethod, - byte[] digestValue); + String URI, + String digestMethod, + byte[] digestValue); /** * Create a new <code>VerifyXMLSignatureResponse</code> object. - * - * @param signerInfo Information about the signer certificate. - * @param hashInputDatas The signed data objects. May be <code>null</code>. - * @param referenceInputDatas The reference input data objects. - * May be <code>null</code>. - * @param signatureCheck Status information about the signature check. - * @param signatureManifestCheck Status information about the signature - * manifest check. - * @param xmlDsigManifestChecks Status information about each XMLDsig manifest - * check. - * @param certificateCheck Status information about the signer certificate - * check. + * + * @param signerInfo Information about the signer certificate. + * @param hashInputDatas The signed data objects. May be + * <code>null</code>. + * @param referenceInputDatas The reference input data objects. May be + * <code>null</code>. + * @param signatureCheck Status information about the signature check. + * @param signatureManifestCheck Status information about the signature manifest + * check. + * @param xmlDsigManifestChecks Status information about each XMLDsig manifest + * check. + * @param certificateCheck Status information about the signer certificate + * check. * @return The <code>VerifyXMLSignatureResponse</code> containing the above - * data. - * + * data. + * * @pre signerInfo != null - * @pre hashInputDatas != null implies - * forall Object o in hashInputDatas | - * o instanceof at.gv.egovernment.moa.spss.api.common.Content - * @pre referenceInputDatas != null implies - * forall Object o in referenceInputDatas | - * o instanceof at.gv.egovernment.moa.spss.api.common.Content + * @pre hashInputDatas != null implies forall Object o in hashInputDatas | o + * instanceof at.gv.egovernment.moa.spss.api.common.Content + * @pre referenceInputDatas != null implies forall Object o in + * referenceInputDatas | o instanceof + * at.gv.egovernment.moa.spss.api.common.Content * @pre signatureCheck != null - * @pre xmlDsigManifestChecks != null implies - * forall Object o in xmlDsigManifestChecks | - * o instanceof at.gv.egovernment.moa.spss.api.xmlverifyManifestRefsCheckResult + * @pre xmlDsigManifestChecks != null implies forall Object o in + * xmlDsigManifestChecks | o instanceof + * at.gv.egovernment.moa.spss.api.xmlverifyManifestRefsCheckResult * @pre certificateCheck != null * @post return != null */ public abstract VerifyXMLSignatureResponse createVerifyXMLSignatureResponse( - SignerInfo signerInfo, - List hashInputDatas, - List referenceInputDatas, - ReferencesCheckResult signatureCheck, - ReferencesCheckResult signatureManifestCheck, - List xmlDsigManifestChecks, - CheckResult certificateCheck, - List adesFormResults, - ExtendedCertificateCheckResult extCheckResult); + SignerInfo signerInfo, + List hashInputDatas, + List referenceInputDatas, + ReferencesCheckResult signatureCheck, + ReferencesCheckResult signatureManifestCheck, + List xmlDsigManifestChecks, + CheckResult certificateCheck, + List adesFormResults, + ExtendedCertificateCheckResult extCheckResult, + String signatureAlgorithm); /** * Create a new <code>ReferencesCheckResult</code> object. - * + * * @param code The status code. * @param info Additional information about the reference check. * @return The <code>ReferencesCheckResult</code> containing the above data. - * + * * @pre code >= 0 * @post return != null */ public abstract ReferencesCheckResult createReferencesCheckResult( - int code, - ReferencesCheckResultInfo info); + int code, + ReferencesCheckResultInfo info); /** * Create a new <code>ReferencesCheckResultInfo</code> object. - * - * @param anyOtherInfo Arbitrary XML content describing the check result. - * May be <code>null</code>. - * @param failedReferences The indexes of the failed references. May be - * <code>null</code>. - * @return The <code>ReferencesCheckResultInfo</code> containing the above - * data. - * + * + * @param anyOtherInfo Arbitrary XML content describing the check result. + * May be <code>null</code>. + * @param failedReferences The indexes of the failed references. May be + * <code>null</code>. + * @return The <code>ReferencesCheckResultInfo</code> containing the above data. + * * @post return != null */ public abstract ReferencesCheckResultInfo createReferencesCheckResultInfo( - NodeList anyOtherInfo, - int[] failedReferences); + NodeList anyOtherInfo, + int[] failedReferences); /** * Create a new <code>ManifestRefsCheckResult</code> object. - * + * * @param code The status code. * @param info Additional information about the manifest check. May be - * <code>null</code>. - * @return The <code>ManifestRefsCheckResult</code> containing the above - * data. - * + * <code>null</code>. + * @return The <code>ManifestRefsCheckResult</code> containing the above data. + * * @pre code >= 0 * @post return != null */ public abstract ManifestRefsCheckResult createManifestRefsCheckResult( - int code, - ManifestRefsCheckResultInfo info); + int code, + ManifestRefsCheckResultInfo info); /** * Create a new <code>ManifestRefsCheckResultInfo</code> object. - * - * @param anyOtherInfo Arbitrary XML content describing the check result. - * May be <code>null</code>. - * @param failedReferences The indexes of the failed references. May be - * <code>null</code>. + * + * @param anyOtherInfo Arbitrary XML content describing the check + * result. May be <code>null</code>. + * @param failedReferences The indexes of the failed references. May be + * <code>null</code>. * @param referringSigReference The index of the reference in the signature. - * @return The <code>ManifestRefsCheckResultInfo</code> containing the - * above data. - * + * @return The <code>ManifestRefsCheckResultInfo</code> containing the above + * data. + * * @pre referringSigReference > 0 * @post return != null */ public abstract ManifestRefsCheckResultInfo createManifestRefsCheckResultInfo( - NodeList anyOtherInfo, - int[] failedReferences, - int referringSigReference); + NodeList anyOtherInfo, + int[] failedReferences, + int referringSigReference); // // Factory methods for common objects @@ -943,10 +934,10 @@ public abstract class SPSSFactory { /** * Create a new <code>Content</code> object referencing data via a URI. - * + * * @param referenceURI The URI pointing to the content. * @return The <code>Content</code> object containing the reference. - * + * * @pre referenceURI != null && referenceURI.length() > 0 * @post return != null */ @@ -954,41 +945,43 @@ public abstract class SPSSFactory { /** * Create a new <code>Content</code> object containing binary data. - * - * @param binaryData An <code>InputStream</code> containing the binary data. + * + * @param binaryData An <code>InputStream</code> containing the binary data. * @param referenceURI An URI identifying the data. May be <code>null</code>. * @return The <code>Content</code> object containing the data. - * + * * @pre binaryData != null * @post return != null */ public abstract Content createContent( - InputStream binaryData, - String referenceURI); + InputStream binaryData, + String referenceURI); /** - * Create a new <code>Content</code> object containing location reference data. - * - * @param locationReferenceURI a URI pointing to the actual remote location of the content. - * - * @param referenceURI An URI identifying the data. May be <code>null</code>. - * - * @return The <code>Content</code> object containing the data. - * - * @pre locationReferenceURI != null - * @post return != null - */ - public abstract Content createContent( - String locationReferenceURI, - String referenceURI); + * Create a new <code>Content</code> object containing location reference data. + * + * @param locationReferenceURI a URI pointing to the actual remote location of + * the content. + * + * @param referenceURI An URI identifying the data. May be + * <code>null</code>. + * + * @return The <code>Content</code> object containing the data. + * + * @pre locationReferenceURI != null + * @post return != null + */ + public abstract Content createContent( + String locationReferenceURI, + String referenceURI); /** * Create a new <code>Content</code> object containing XML data. - * - * @param xmlData The XML data contained in the new <code>Content</code>. + * + * @param xmlData The XML data contained in the new <code>Content</code>. * @param referenceURI An URI identifying the data. May be <code>null</code>. * @return The <code>Content</code> object containing the data. - * + * * @pre xmlData != null * @post return != null */ @@ -996,13 +989,11 @@ public abstract class SPSSFactory { /** * Create a new <code>XMLDataObjectAssociation</code> object. - * - * @param metaInfo Information about the content type. May be - * <code>null</code>. - * @param content The <code>Content</code> object containing the data. - * @return The <code>XMLDataObjectAssociation</code> containing the above - * data. - * + * + * @param metaInfo Information about the content type. May be <code>null</code>. + * @param content The <code>Content</code> object containing the data. + * @return The <code>XMLDataObjectAssociation</code> containing the above data. + * * @pre content != null * @pre content.getContentType() == Content.CONTENT_XML || * content.getContentType() == Contetn.CONTENT_BINARY @@ -1010,34 +1001,36 @@ public abstract class SPSSFactory { * @post return != null */ public abstract XMLDataObjectAssociation createXMLDataObjectAssociation( - MetaInfo metaInfo, - Content content); + MetaInfo metaInfo, + Content content); /** * Create a new <code>MetaInfo</code> object. - * - * @param mimeType The MIME type part of the meta information. + * + * @param mimeType The MIME type part of the meta information. * @param description Descriptive meta information. May be <code>null</code>. - * @param otherInfo XML meta information. May be <code>null</code>. - * @param type Type information for XML signature creation. May be <code>null</code>. + * @param otherInfo XML meta information. May be <code>null</code>. + * @param type Type information for XML signature creation. May be + * <code>null</code>. * @return The <code>MetaInfo</code> object containing the above data. - * + * * @pre mimeType != null && mimeType.length() > 0 - * @pre otherInfo != null implies - * forall Node n in otherInfo | n.getNodeType() == Node.ELEMENT + * @pre otherInfo != null implies forall Node n in otherInfo | n.getNodeType() + * == Node.ELEMENT */ public abstract MetaInfo createMetaInfo( - String mimeType, - String description, - NodeList otherInfo, - String type); + String mimeType, + String description, + NodeList otherInfo, + String type); /** - * Create a <code>CanonicalizationTransform</code> type of <code>Transform</code>. - * + * Create a <code>CanonicalizationTransform</code> type of + * <code>Transform</code>. + * * @param algorithmURI The algorithm URI of the canonicalization. * @return The created <code>CanonicalizationTransform</code> object. - * + * * @pre CanonicalizationTransform.CANONICAL_XML.equals(algorithmURI) || * CanonicalizationTransform.CANONICAL_XML_WITH_COMMENTS.equals(algorithmURI) * @post return != null @@ -1047,95 +1040,95 @@ public abstract class SPSSFactory { /** * Create an <code>ExclusiveCanonicalizationTransform</code> type of * <code>Transform</code>. - * - * @param algorithmURI The algorithm URI of the exclusive canonicalization. - * @param inclusiveNamespacePrefixes The prefixes of the namespaces to - * treat according to canonical XML. + * + * @param algorithmURI The algorithm URI of the exclusive + * canonicalization. + * @param inclusiveNamespacePrefixes The prefixes of the namespaces to treat + * according to canonical XML. * @return The new <code>ExclusiveCanonicalizationTransform</code> - * - * @pre ExclusiveCanonicalizationTransform.EXCLUSIVE_CANONICAL_XML.equals(algorithmURI) || + * + * @pre ExclusiveCanonicalizationTransform.EXCLUSIVE_CANONICAL_XML.equals(algorithmURI) + * || * ExclusiveCanonicalizationTransform.EXCLUSIVE_CANONICAL_XML_WITH_COMMENTS.equals(algorithmURI) * @pre inclusiveNamespacePrefixes != null - * @pre forall Object o in inclusiveNamespacePrefixes | o instanceof String + * @pre forall Object o in inclusiveNamespacePrefixes | o instanceof String * @post return != null */ public abstract Transform createExclusiveCanonicalizationTransform( - String algorithmURI, - List inclusiveNamespacePrefixes); + String algorithmURI, + List inclusiveNamespacePrefixes); /** * Create a <code>Base64Transform</code> type of <code>Transform</code>. - * + * * @return A <code>Transform</code> denoting a Base64 decoding. - * + * * @post return != null */ public abstract Transform createBase64Transform(); /** - * Create a <code>EnvelopedSignatureTransform</code> type of + * Create a <code>EnvelopedSignatureTransform</code> type of * <code>Transform</code>. - * + * * @return A <code>Transform</code> denoting an enveloped signature. - * + * * @post return != null */ public abstract Transform createEnvelopedSignatureTransform(); /** * Create an <code>XSLTTransform</code> type of <code>Transform</code>. - * - * @param styleSheet The XSLT stylesheet contained in the - * <code>Transform</code>. + * + * @param styleSheet The XSLT stylesheet contained in the + * <code>Transform</code>. * @return A <code>Transform</code> containing the XSLT stylesheet. - * + * * @post return != null */ public abstract Transform createXSLTTransform(Element styleSheet); /** * Create an <code>XPathTransform</code> type of <code>Transform</code>. - * - * @param xPathExpression The XPath expression to use in the created - * <code>Transform</code>. - * @param namespaceDeclarations The namespace prefix to URI mapping to - * apply on evaluation of the XPath expression. + * + * @param xPathExpression The XPath expression to use in the created + * <code>Transform</code>. + * @param namespaceDeclarations The namespace prefix to URI mapping to apply on + * evaluation of the XPath expression. * @return The <code>XPathTransform</code> containing the above data. - * + * * @pre xPathExpression != null * @pre namespaceDeclarations != null * @post return != null */ public abstract Transform createXPathTransform( - String xPathExpression, - Map namespaceDeclarations); + String xPathExpression, + Map namespaceDeclarations); /** - * Create a new <code>XPathFilter2Transform</code> type of - * <code>Transform</code>. - * + * Create a new <code>XPathFilter2Transform</code> type of + * <code>Transform</code>. + * * @param xPathFilters The filters contained in the newly created - * <code>XPathFilter2Transform</code>. - * @return The <code>XPathFilter2Transform</code> containing the given - * filters. - * - * @pre xPathFilters != null && - * forall Object o in xPathFilters | - * o instanceof at.gv.egovernment.moa.spss.api.common.XPathFilter + * <code>XPathFilter2Transform</code>. + * @return The <code>XPathFilter2Transform</code> containing the given filters. + * + * @pre xPathFilters != null && forall Object o in xPathFilters | o instanceof + * at.gv.egovernment.moa.spss.api.common.XPathFilter * @post return != null */ public abstract Transform createXPathFilter2Transform(List xPathFilters); /** * Create a new <code>XPathFilter</code> object. - * - * @param filterType The type of filter. - * @param xPathExpression The XPath expression contained in this filter. - * @param namespaceDeclarations The namespace prefix to URI mapping to apply - * on evaluation of the XPath expression. + * + * @param filterType The type of filter. + * @param xPathExpression The XPath expression contained in this filter. + * @param namespaceDeclarations The namespace prefix to URI mapping to apply on + * evaluation of the XPath expression. * @return The <code>XPathFilter</code> containing the above data. - * - * @pre XPathFilter.SUBTRACT_TYPE.equals(filterType) || + * + * @pre XPathFilter.SUBTRACT_TYPE.equals(filterType) || * XPathFilter.INTERSECT_TYPE.equals(filterType) || * XPathFilter.UNION_TYPE.equals(filterType) * @pre xPathExpression != null @@ -1143,73 +1136,76 @@ public abstract class SPSSFactory { * @post return != null */ public abstract XPathFilter createXPathFilter( - String filterType, - String xPathExpression, - Map namespaceDeclarations); + String filterType, + String xPathExpression, + Map namespaceDeclarations); /** * Create a new <code>CheckResult</code> object. - * + * * @param code The check code. * @param info Verbose information about the check. May be <code>null</code>. * @return The <code>CheckResult</code> containing the above data. - * + * * @pre code >= 0 * @post return != null */ public abstract CheckResult createCheckResult(int code, NodeList info); - - /** * Create a new <code>SignerInfo</code> object. - * - * @param signerCertificate The signer certificate in binary form. - * @param qualifiedCertificate <code>true</code>, if the signer certificate is - * a qualified certificate, otherwise <code>false</code>. - * @param qcSourceTSL <code>true</code>, if the QC information comes from the TSL, - * otherwise <code>false</code>. - * @param publicAuthority <code>true</code>, if the signer certificate is a - * public authority certificate, otherwise <code>false</code>. - * @param publicAuthorityID The identification of the public authority - * (if <code>publicAuthority</code> is <code>true</code>). May be - * <code>null</code>. - * @param sscd <code>true</code>, if the TSL check verifies the - * signature based on a SSDC, otherwise <code>false</code>. - * @param sscdSourceTSL <code>true</code>, if the SSCD information comes from the TSL, - * otherwise <code>false</code>. - * @param issuerCountryCode contains the signer certificate issuer country code. - * @param tslInfos contains information from Trust-Status List for the signer certificate + * + * @param signerCertificate The signer certificate in binary form. + * @param qualifiedCertificate <code>true</code>, if the signer certificate is a + * qualified certificate, otherwise + * <code>false</code>. + * @param qcSourceTSL <code>true</code>, if the QC information comes + * from the TSL, otherwise <code>false</code>. + * @param publicAuthority <code>true</code>, if the signer certificate is a + * public authority certificate, otherwise + * <code>false</code>. + * @param publicAuthorityID The identification of the public authority (if + * <code>publicAuthority</code> is + * <code>true</code>). May be <code>null</code>. + * @param sscd <code>true</code>, if the TSL check verifies the + * signature based on a SSDC, otherwise + * <code>false</code>. + * @param sscdSourceTSL <code>true</code>, if the SSCD information comes + * from the TSL, otherwise <code>false</code>. + * @param issuerCountryCode contains the signer certificate issuer country + * code. + * @param tslInfos contains information from Trust-Status List for + * the signer certificate * @return The <code>SignerInfo</code> containing the above data. - * + * * @pre signerCertSubjectName != null * @pre signerCertIssuerSerial != null * @pre signerCertificate != null */ public abstract SignerInfo createSignerInfo( - X509Certificate signerCertificate, - boolean qualifiedCertificate, - boolean qcSourceTSL, - boolean publicAuthority, - String publicAuthorityID, - boolean sscd, - boolean sscdSourceTSL, - String issuerCountryCode, - Date signingTime, - TslInfos tslInfos); - + X509Certificate signerCertificate, + boolean qualifiedCertificate, + boolean qcSourceTSL, + boolean publicAuthority, + String publicAuthorityID, + boolean sscd, + boolean sscdSourceTSL, + String issuerCountryCode, + Date signingTime, + TslInfos tslInfos); + /** * Create a new <code>X509IssuerSerial</code> object. - * - * @param issuerName The distinguished name of the issuer. + * + * @param issuerName The distinguished name of the issuer. * @param issuerSerial The certificate serial number. * @return The <code>X509IssuerSerial</code> containing the above data. - * + * * @pre issuerName != null * @pre issuerSerial != null */ public abstract X509IssuerSerial createX509IssuerSerial( - String issuerName, - BigInteger issuerSerial); + String issuerName, + BigInteger issuerSerial); } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/SignatureCreationService.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/SignatureCreationService.java index 05271fb..4019ad7 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/SignatureCreationService.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/SignatureCreationService.java @@ -21,18 +21,16 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.api; import at.gv.egovernment.moa.spss.MOAException; - import at.gv.egovernment.moa.spss.api.xmlsign.CreateXMLSignatureRequest; import at.gv.egovernment.moa.spss.api.xmlsign.CreateXMLSignatureResponse; import at.gv.egovernment.moa.spss.server.invoke.SignatureCreationServiceImpl; /** * Interface providing functions for signature creation. - * + * * @author Patrick Peck * @version $Id$ */ @@ -40,42 +38,40 @@ public abstract class SignatureCreationService { /** The default implementation class. */ private static final String DEFAULT_IMPLEMENTATION = - "at.gv.egovernment.moa.spss.server.invoke.SignatureCreationServiceImpl"; - - /** The single instance of this class. */ + "at.gv.egovernment.moa.spss.server.invoke.SignatureCreationServiceImpl"; + + /** The single instance of this class. */ private static SignatureCreationService instance = null; /** * Get an instance of the <code>SignatureCreationService</code>. - * + * * @return A concrete instance of the <code>SignatureCreationService</code>. */ public static synchronized SignatureCreationService getInstance() { if (instance == null) { try { - /* - DiscoverClass discover = new DiscoverClass(); - instance = - (SignatureCreationService) discover.newInstance( - SignatureCreationService.class, - DEFAULT_IMPLEMENTATION);*/ + /* + * DiscoverClass discover = new DiscoverClass(); instance = + * (SignatureCreationService) discover.newInstance( + * SignatureCreationService.class, DEFAULT_IMPLEMENTATION); + */ instance = new SignatureCreationServiceImpl(); - } catch (Exception e) { - // this can not happen since we provide a valid default + } catch (final Exception e) { + // this can not happen since we provide a valid default // implementation } } return instance; } - + /** * Create an XML signature. - * + * * @param request Information on how to create the signature. - * @return A <code>CreateXMLSignatureResponse</code> containing the - * signature. + * @return A <code>CreateXMLSignatureResponse</code> containing the signature. * @throws MOAException Error in server side MOA module. */ public abstract CreateXMLSignatureResponse createXMLSignature(CreateXMLSignatureRequest request) - throws MOAException; + throws MOAException; } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/SignatureVerificationService.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/SignatureVerificationService.java index 2433e20..7d95d3a 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/SignatureVerificationService.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/SignatureVerificationService.java @@ -21,7 +21,6 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.api; import at.gv.egovernment.moa.spss.MOAException; @@ -33,7 +32,7 @@ import at.gv.egovernment.moa.spss.server.invoke.SignatureVerificationServiceImpl /** * Interface providing functions for verifying signatures. - * + * * @author Patrick Peck * @version $Id$ */ @@ -41,28 +40,27 @@ public abstract class SignatureVerificationService { /** The default implementation class. */ private static final String DEFAULT_IMPLEMENTATION = - "at.gv.egovernment.moa.spss.server.invoke.SignatureVerificationServiceImpl"; + "at.gv.egovernment.moa.spss.server.invoke.SignatureVerificationServiceImpl"; /** The single instance of this class. */ private static SignatureVerificationService instance = null; /** * Get an instance of the <code>SignatureVerificationService</code>. - * - * @return A concrete instance of the - * <code>SignatureVerificationService</code>. + * + * @return A concrete instance of the <code>SignatureVerificationService</code>. */ public static synchronized SignatureVerificationService getInstance() { if (instance == null) { try { - /*DiscoverClass discover = new DiscoverClass(); - instance = - (SignatureVerificationService) discover.newInstance( - SignatureVerificationService.class, - DEFAULT_IMPLEMENTATION);*/ - instance = new SignatureVerificationServiceImpl(); - } catch (Exception e) { - // this can not happen since we provide a valid default + /* + * DiscoverClass discover = new DiscoverClass(); instance = + * (SignatureVerificationService) discover.newInstance( + * SignatureVerificationService.class, DEFAULT_IMPLEMENTATION); + */ + instance = new SignatureVerificationServiceImpl(); + } catch (final Exception e) { + // this can not happen since we provide a valid default // implementation } } @@ -71,23 +69,24 @@ public abstract class SignatureVerificationService { /** * Verify a CMS signature. - * + * * @param request Detailed information on the verification that should be - * performed. + * performed. * @return A <code>VerifyCMSSignatureResponse</code> object that contains - * information about the performed verification. + * information about the performed verification. * @throws MOAException Error in server side MOA module. */ public abstract VerifyCMSSignatureResponse verifyCMSSignature(VerifyCMSSignatureRequest request) - throws MOAException; + throws MOAException; + /** * Verfiy an XML Signature. - * - * @param request information on the verification that should be performed. + * + * @param request information on the verification that should be performed. * @return A <code>VerifyXMLSignatureResponse</code> object that contains - * information about the performed verification. + * information about the performed verification. * @throws MOAException Error in server side MOA module. */ public abstract VerifyXMLSignatureResponse verifyXMLSignature(VerifyXMLSignatureRequest request) - throws MOAException; + throws MOAException; } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/cmssign/CMSSignatureResponse.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/cmssign/CMSSignatureResponse.java index 10db676..958bd7d 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/cmssign/CMSSignatureResponse.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/cmssign/CMSSignatureResponse.java @@ -21,21 +21,19 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.api.cmssign; - /** * Contains the signature if the signature creation was successful. - * + * * @version $Id$ */ public interface CMSSignatureResponse - extends CreateCMSSignatureResponseElement { - /** + extends CreateCMSSignatureResponseElement { + /** * Gets the CMS signature (Base64 encoded). - * + * * @return The CMS signature */ - public String getCMSSignature(); + String getCMSSignature(); } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/cmssign/CreateCMSSignatureRequest.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/cmssign/CreateCMSSignatureRequest.java index 9d5cd7a..c971451 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/cmssign/CreateCMSSignatureRequest.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/cmssign/CreateCMSSignatureRequest.java @@ -21,29 +21,28 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.api.cmssign; import java.util.List; - /** * Object that encapsulates a request to create a CMS Signature. - * - * + * + * * @version $Id$ */ public interface CreateCMSSignatureRequest { /** * Gets the identifier for the keys to be used for the signature. - * + * * @return The identifier for the keys to be used. */ - public String getKeyIdentifier(); + String getKeyIdentifier(); + /** - * Gets the information of the singleSignatureInfo elements. - * + * Gets the information of the singleSignatureInfo elements. + * * @return The information of singleSignatureInfo elements. */ - public List getSingleSignatureInfos(); + List getSingleSignatureInfos(); } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/cmssign/CreateCMSSignatureResponse.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/cmssign/CreateCMSSignatureResponse.java index 6062a11..e81a2bc 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/cmssign/CreateCMSSignatureResponse.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/cmssign/CreateCMSSignatureResponse.java @@ -21,22 +21,21 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.api.cmssign; import java.util.List; /** - * Object that encapsulates the response on to a + * Object that encapsulates the response on to a * <code>CreateCMSSignatureRequest</code> to create an XML signature. - * + * * @version $Id$ */ public interface CreateCMSSignatureResponse { /** * Gets the response elements. - * + * * @return The response elements. */ - public List getResponseElements(); + List getResponseElements(); } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/cmssign/CreateCMSSignatureResponseElement.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/cmssign/CreateCMSSignatureResponseElement.java index 8e4e611..a8d0ebd 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/cmssign/CreateCMSSignatureResponseElement.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/cmssign/CreateCMSSignatureResponseElement.java @@ -21,31 +21,29 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.api.cmssign; /** - * Base class for <code>CMSSignature</code> and - * <code>ErrorResponse</code> elements in a - * <code>CreateXMLSignatureResponse</code>. - * + * Base class for <code>CMSSignature</code> and <code>ErrorResponse</code> + * elements in a <code>CreateXMLSignatureResponse</code>. + * * @version $Id$ */ public interface CreateCMSSignatureResponseElement { /** * Indicates that this object contains a <code>CMSSignature</code>. */ - public static final int CMS_SIGNATURE = 0; + int CMS_SIGNATURE = 0; /** * Indicates that this objet contains an <code>ErrorResponse</code>. */ - public static final int ERROR_RESPONSE = 1; - + int ERROR_RESPONSE = 1; + /** * Gets the type of response object. - * - * @return The type of response object, either - * <code>CMS_SIGNATURE</code> or <code>ERROR_RESPONSE</code>. + * + * @return The type of response object, either <code>CMS_SIGNATURE</code> or + * <code>ERROR_RESPONSE</code>. */ - public int getResponseType(); + int getResponseType(); } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/cmssign/DataObjectInfo.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/cmssign/DataObjectInfo.java index b9f3630..4f97e5a 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/cmssign/DataObjectInfo.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/cmssign/DataObjectInfo.java @@ -21,38 +21,37 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.api.cmssign; import at.gv.egovernment.moa.spss.api.cmsverify.CMSDataObject; /** * Encapsulates information required to create a single signature. - * + * * @version $Id$ */ public interface DataObjectInfo { /** * Indicates that a detached signature will be created. */ - public static final String STRUCTURE_DETACHED = "detached"; + String STRUCTURE_DETACHED = "detached"; /** * Indicates that an enveloping signature will be created. */ - public static final String STRUCTURE_ENVELOPING = "enveloping"; + String STRUCTURE_ENVELOPING = "enveloping"; /** * Gets the structure of the signature. - * + * * @return The structure of the signature. */ - public String getStructure(); + String getStructure(); /** * Gets information related to a single data object. - * + * * @return Information related to a single data object. */ - public CMSDataObject getDataObject(); - + CMSDataObject getDataObject(); + } 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..2bff558 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 @@ -21,14 +21,11 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.api.cmssign; - - /** * Encapsulates data to create a single signature. - * + * * @author Patrick Peck * @author Stephan Grill * @version $Id$ @@ -36,16 +33,24 @@ package at.gv.egovernment.moa.spss.api.cmssign; public interface SingleSignatureInfo { /** * Gets the dataObjectInfo information. - * + * * @return The dataObjectInfo information. */ - public DataObjectInfo getDataObjectInfo(); - + DataObjectInfo getDataObjectInfo(); + /** * Check whether a Security Layer conform signature manifest will be created. - * - * @return <code>true</code>, if a Security Layer conform signature manifest - * will be created, <code>false</code> otherwise. + * + * @return <code>true</code>, if a Security Layer conform signature manifest + * will be created, <code>false</code> otherwise. + */ + boolean isSecurityLayerConform(); + + /** + * Check whether a PAdES conform CAdES signature will be created + * + * @return <code>true</code>, if a PAdES conform CAdES signature will be + * created, <code>false</code> otherwise. */ - public boolean isSecurityLayerConform(); + boolean isPAdESConform(); } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/cmsverify/CMSContent.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/cmsverify/CMSContent.java index 4c2c1cc..f240da8 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/cmsverify/CMSContent.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/cmsverify/CMSContent.java @@ -21,12 +21,11 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.api.cmsverify; /** * Base class for objects containing CMS content. - * + * * @author Patrick Peck * @author Stephan Grill * @version $Id$ @@ -35,18 +34,18 @@ public interface CMSContent { /** * Indicates that this object contains a reference to the CMS content. */ - public static final int REFERENCE_CONTENT = 0; + int REFERENCE_CONTENT = 0; /** * Indicates that this object contains the CMS content explicitly. */ - public static final int EXPLICIT_CONTENT = 1; - + int EXPLICIT_CONTENT = 1; + /** * Gets the type of the contained content. - * + * * @return The type of content, either <code>REFERENCE_CONTENT</code> or - * <code>EXPLICIT_CONTENT</code>. + * <code>EXPLICIT_CONTENT</code>. */ - public int getContentType(); - + int getContentType(); + } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/cmsverify/CMSContentExcplicit.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/cmsverify/CMSContentExcplicit.java index 7fc6029..1c6506c 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/cmsverify/CMSContentExcplicit.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/cmsverify/CMSContentExcplicit.java @@ -21,14 +21,13 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.api.cmsverify; import java.io.InputStream; /** * Encapsulates binary CMS content. - * + * * @author Patrick Peck * @author Stephan Grill * @version $Id$ @@ -36,8 +35,8 @@ import java.io.InputStream; public interface CMSContentExcplicit extends CMSContent { /** * Gets the content as a stream. - * + * * @return A stream containing the binary content. */ - public InputStream getBinaryContent(); + InputStream getBinaryContent(); } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/cmsverify/CMSContentReference.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/cmsverify/CMSContentReference.java index ade197d..c7366ff 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/cmsverify/CMSContentReference.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/cmsverify/CMSContentReference.java @@ -21,12 +21,11 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.api.cmsverify; /** * Encapsulates CMS content that is referenced by an URI. - * + * * @author Patrick Peck * @author Stephan Grill * @version $Id$ @@ -34,8 +33,8 @@ package at.gv.egovernment.moa.spss.api.cmsverify; public interface CMSContentReference extends CMSContent { /** * Gets the reference URI from wher the content can be retrieved. - * + * * @return The reference URI. */ - public String getReference(); + String getReference(); } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/cmsverify/CMSDataObject.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/cmsverify/CMSDataObject.java index f9a6846..ffd31e1 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/cmsverify/CMSDataObject.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/cmsverify/CMSDataObject.java @@ -21,7 +21,6 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.api.cmsverify; import java.math.BigDecimal; @@ -30,7 +29,7 @@ import at.gv.egovernment.moa.spss.api.common.MetaInfo; /** * A data object used for verification of CMS signatures. - * + * * @author Patrick Peck * @author Stephan Grill * @version $Id$ @@ -38,20 +37,20 @@ import at.gv.egovernment.moa.spss.api.common.MetaInfo; public interface CMSDataObject { /** * Gets the meta information of the content. - * + * * @return An object containig the meta information. */ - public MetaInfo getMetaInfo(); + MetaInfo getMetaInfo(); + /** * Gets the actual content of the data object. - * + * * @return The actual content. */ - public CMSContent getContent(); - - - public BigDecimal getExcludeByteRangeFrom(); - - public BigDecimal getExcludeByteRangeTo(); - - } + CMSContent getContent(); + + BigDecimal getExcludeByteRangeFrom(); + + BigDecimal getExcludeByteRangeTo(); + +} diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/cmsverify/VerifyCMSSignatureRequest.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/cmsverify/VerifyCMSSignatureRequest.java index 6294fb1..5ce51cf 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/cmsverify/VerifyCMSSignatureRequest.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/cmsverify/VerifyCMSSignatureRequest.java @@ -21,7 +21,6 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.api.cmsverify; import java.io.InputStream; @@ -29,7 +28,7 @@ import java.util.Date; /** * Object that encapsulates a request to verify a CMS signature. - * + * * @author Patrick Peck * @author Stephan Grill * @version $Id$ @@ -38,42 +37,48 @@ public interface VerifyCMSSignatureRequest { /** * Indicates, that signature checks for all signatories must be returned. */ - public static int[] ALL_SIGNATORIES = new int[] { -1 }; + int[] ALL_SIGNATORIES = new int[] { -1 }; + /** * Gets the positions of signatories whose signature must be verified. - * + * * @return The positions of signatories. */ - public int[] getSignatories(); + int[] getSignatories(); + /** - * Gets the date and time for which the signature verification has to - * be performed. - * - * @return Date and time for which the signature verification has - * to be performed. + * Gets the date and time for which the signature verification has to be + * performed. + * + * @return Date and time for which the signature verification has to be + * performed. */ - public Date getDateTime(); + Date getDateTime(); + /** * Gets the binary CMS signature. - * - * @return An <code>InputStream</code> from which the binary CMS signature - * can be read. + * + * @return An <code>InputStream</code> from which the binary CMS signature can + * be read. */ - public InputStream getCMSSignature(); - /** + InputStream getCMSSignature(); + + /** * Gets the data object necessary for the verification. - * + * * @return The data object necessary for verification. */ - public CMSDataObject getDataObject(); + CMSDataObject getDataObject(); + /** * Gets the profile ID of trusted certificates to be used for signature * verification. - * + * * @return The profile ID of trusted certificates. */ - public String getTrustProfileId(); - - public boolean isPDF(); - public boolean isExtended(); + String getTrustProfileId(); + + boolean isPDF(); + + boolean isExtended(); } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/cmsverify/VerifyCMSSignatureResponse.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/cmsverify/VerifyCMSSignatureResponse.java index 33924cb..9f58c43 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/cmsverify/VerifyCMSSignatureResponse.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/cmsverify/VerifyCMSSignatureResponse.java @@ -21,16 +21,13 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.api.cmsverify; import java.util.List; - /** - * Object that encapsulates the response on a request to verify a CMS - * signature. - * + * Object that encapsulates the response on a request to verify a CMS signature. + * * @author Patrick Peck * @author Stephan Grill * @version $Id$ @@ -38,8 +35,8 @@ import java.util.List; public interface VerifyCMSSignatureResponse { /** * Gets the response elements. - * - * @return The response elements. + * + * @return The response elements. */ - public List getResponseElements(); + List getResponseElements(); } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/cmsverify/VerifyCMSSignatureResponseElement.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/cmsverify/VerifyCMSSignatureResponseElement.java index 6b08471..35bdf6e 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/cmsverify/VerifyCMSSignatureResponseElement.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/cmsverify/VerifyCMSSignatureResponseElement.java @@ -21,7 +21,6 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.api.cmsverify; import java.util.List; @@ -32,7 +31,7 @@ import at.gv.egovernment.moa.spss.api.common.SignerInfo; /** * Contains detailed information about the verification of a signature. - * + * * @author Patrick Peck * @author Stephan Grill * @version $Id$ @@ -40,31 +39,39 @@ import at.gv.egovernment.moa.spss.api.common.SignerInfo; public interface VerifyCMSSignatureResponseElement { /** * Gets a SignerInfo element according to CMS. - * + * * @return The SignerInfo element according to CMS. */ - public SignerInfo getSignerInfo(); + SignerInfo getSignerInfo(); + /** * Gets the result of the signature verification. - * + * * @return The result of the signature verification. */ - public CheckResult getSignatureCheck(); + CheckResult getSignatureCheck(); + /** * Gets the result of the certificate verification. - * + * * @return The result of the certificate verification. */ - public CheckResult getCertificateCheck(); - + CheckResult getCertificateCheck(); + /** * Gets AdES Form results - * + * * This might be null! - * + * * @return The result of the AdES Form validation */ - public List getAdESFormResults(); - - public ExtendedCertificateCheckResult getExtendedCertificateCheck(); + List getAdESFormResults(); + + ExtendedCertificateCheckResult getExtendedCertificateCheck(); + + String getSignatureAlgorithm(); + + Boolean getCoversFullDocument(); + + int[] getByteRangeOfSignature(); } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/Base64Transform.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/Base64Transform.java index 6050d5b..e1c650f 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/Base64Transform.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/Base64Transform.java @@ -21,17 +21,16 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.api.common; /** * A <code>Transform</code> performing a Base64 decoding. - * + * * @author Patrick Peck * @version $Id$ */ public interface Base64Transform extends Transform { /** Algorithm URI of the Base64 <code>Transform</code> type. */ - public static final String BASE64_DECODING = - "http://www.w3.org/2000/09/xmldsig#base64"; + String BASE64_DECODING = + "http://www.w3.org/2000/09/xmldsig#base64"; } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/CanonicalizationTransform.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/CanonicalizationTransform.java index 05977c5..680061d 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/CanonicalizationTransform.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/CanonicalizationTransform.java @@ -21,21 +21,20 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.api.common; import at.gv.egovernment.moaspss.util.Constants; /** * A canonicalization type of <code>Transform</code>. - * + * * @author Patrick Peck * @version $Id$ */ public interface CanonicalizationTransform extends Transform { /** Algorithm URI of canonical XML. */ - public static final String CANONICAL_XML = Constants.C14N_URI; + String CANONICAL_XML = Constants.C14N_URI; /** Algorithm URI of canonical XML with comments. */ - public static final String CANONICAL_XML_WITH_COMMENTS = - Constants.C14N_WITH_COMMENTS_URI; + String CANONICAL_XML_WITH_COMMENTS = + Constants.C14N_WITH_COMMENTS_URI; } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/CheckResult.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/CheckResult.java index 5c94981..4a9ff27 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/CheckResult.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/CheckResult.java @@ -21,14 +21,13 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.api.common; import org.w3c.dom.NodeList; /** * Object encapsulating the result of a signature verification. - * + * * @author Patrick Peck * @author Stephan Grill * @version $Id$ @@ -36,14 +35,15 @@ import org.w3c.dom.NodeList; public interface CheckResult { /** * Gets the result code. - * + * * @return The result code. */ - public int getCode(); + int getCode(); + /** * Gets descriptive information. - * + * * @return Descriptive information. */ - public NodeList getInfo(); + NodeList getInfo(); } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/Content.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/Content.java index efde1eb..d9adb68 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/Content.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/Content.java @@ -21,12 +21,11 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.api.common; /** * Encapsulates content data. - * + * * @author Patrick Peck * @author Stephan Grill * @author Gregor Karlinger @@ -35,37 +34,38 @@ package at.gv.egovernment.moa.spss.api.common; public interface Content { /** - * Indicates that this object contains a URI reference to some content. + * Indicates that this object contains a URI reference to some content. */ - public static final int REFERENCE_CONTENT = 0; + int REFERENCE_CONTENT = 0; /** * Indicates that this object contains binary content. */ - public static final int BINARY_CONTENT = 1; + int BINARY_CONTENT = 1; /** * Indicates that this object contains XML content. */ - public static final int XML_CONTENT = 2; - + int XML_CONTENT = 2; + /** * Indicates that this object contains a location reference content. */ - public static final int LOCREF_CONTENT = 3; + int LOCREF_CONTENT = 3; /** * Gets the type of content contained in this object. - * - * @return The type of content, one of <code>BINARY_CONTENT</code>, <code>XML_CONTENT</code>, <code> + * + * @return The type of content, one of <code>BINARY_CONTENT</code>, + * <code>XML_CONTENT</code>, <code> * REFERENCE_CONTENT</code> or <code>LOCREF_CONTENT</code>. */ - public int getContentType(); + int getContentType(); /** * Gets the reference to the content data (a URI). - * + * * @return The reference to the content data. */ - public String getReference(); + String getReference(); } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/ContentBinary.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/ContentBinary.java index 77ec9dd..a30c5f8 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/ContentBinary.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/ContentBinary.java @@ -21,14 +21,13 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.api.common; import java.io.InputStream; /** * Encapsulates binary content. - * + * * @author Patrick Peck * @author Stephan Grill * @version $Id$ @@ -36,10 +35,10 @@ import java.io.InputStream; public interface ContentBinary extends Content { /** * Get the binary content. - * - * @return An <code>InputStream</code> from which the binary content can - * be read. + * + * @return An <code>InputStream</code> from which the binary content can be + * read. */ - public InputStream getBinaryContent(); - + InputStream getBinaryContent(); + } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/ContentLocRef.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/ContentLocRef.java index d1ef096..59c96cb 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/ContentLocRef.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/ContentLocRef.java @@ -21,21 +21,20 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.api.common; /** * Encapsulates location reference content. - * + * * @author Gregor Karlinger * @version $Id$ */ -public interface ContentLocRef extends Content -{ +public interface ContentLocRef extends Content { /** - * Gets the location reference URI pointing to the actual remote location of the content. - * + * Gets the location reference URI pointing to the actual remote location of the + * content. + * * @return the location reference URI. */ - public String getLocationReferenceURI(); + String getLocationReferenceURI(); } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/ContentReference.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/ContentReference.java index 8c4a658..5650939 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/ContentReference.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/ContentReference.java @@ -21,12 +21,11 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.api.common; /** * Content containing a reference to content data. - * + * * @author Patrick Peck * @version $Id$ */ diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/ContentXML.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/ContentXML.java index d41f6a6..1f294b1 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/ContentXML.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/ContentXML.java @@ -21,14 +21,13 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.api.common; import org.w3c.dom.NodeList; /** * Encapsulates arbitrary XML content. - * + * * @author Patrick Peck * @author Stephan Grill * @version $Id$ @@ -36,8 +35,8 @@ import org.w3c.dom.NodeList; public interface ContentXML extends Content { /** * Gets the XML content stored in this object. - * + * * @return The XML content. */ - public NodeList getXMLContent(); + NodeList getXMLContent(); } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/ElementSelector.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/ElementSelector.java index b446c5f..9d29d9b 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/ElementSelector.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/ElementSelector.java @@ -21,32 +21,32 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.api.common; import java.util.Map; /** - * A class containing data for selecting single elements using an XPath + * A class containing data for selecting single elements using an XPath * expression. - * + * * Derived classes are used to point to the <code>CreateSignatureLocation</code> * and the <code>VerifySignatureLocation</code>. - * + * * @author Patrick Peck * @version $Id$ */ public interface ElementSelector { /** * Gets the XPath expression pointing to a single element. - * + * * @return The XPath expression to select the signature parent element. */ - public String getXPathExpression(); + String getXPathExpression(); + /** * Gets the namespace prefix to URI mapping to use when evaluating the XPath. - * + * * @return The namespace prefix to URI mapping. */ - public Map getNamespaceDeclarations(); + Map getNamespaceDeclarations(); } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/EnvelopedSignatureTransform.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/EnvelopedSignatureTransform.java index 8e6de87..816576a 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/EnvelopedSignatureTransform.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/EnvelopedSignatureTransform.java @@ -21,12 +21,11 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.api.common; /** * An enveloped signature type of <code>Transform</code>. - * + * * @author Patrick Peck * @version $Id$ */ @@ -34,6 +33,6 @@ public interface EnvelopedSignatureTransform extends Transform { /** * Algorithm URI of the enveloped signature type of <code>Transform</code>. */ - public static final String ENVELOPED_SIGNATURE = - "http://www.w3.org/2000/09/xmldsig#enveloped-signature"; + String ENVELOPED_SIGNATURE = + "http://www.w3.org/2000/09/xmldsig#enveloped-signature"; } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/ExclusiveCanonicalizationTransform.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/ExclusiveCanonicalizationTransform.java index 557ff21..18e452c 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/ExclusiveCanonicalizationTransform.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/ExclusiveCanonicalizationTransform.java @@ -21,7 +21,6 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.api.common; import java.util.List; @@ -30,22 +29,22 @@ import at.gv.egovernment.moaspss.util.Constants; /** * An exclusive canonicalization type of <code>Transform</code>. - * + * * @author Patrick Peck * @version $Id$ */ public interface ExclusiveCanonicalizationTransform extends Transform { /** Algorithm URI of exclusive canonical XML. */ - public static final String EXCLUSIVE_CANONICAL_XML = Constants.EXC_C14N_URI; + String EXCLUSIVE_CANONICAL_XML = Constants.EXC_C14N_URI; /** Algorithm URI of exclusive canonical XML with comments. */ - public static final String EXCLUSIVE_CANONICAL_XML_WITH_COMMENTS = - Constants.EXC_C14N_WITH_COMMENTS_URI; + String EXCLUSIVE_CANONICAL_XML_WITH_COMMENTS = + Constants.EXC_C14N_WITH_COMMENTS_URI; /** * Sets the namespace prefixes that are handled in the same manner as in * canonical XML. - * + * * @return The inclusive namespace prefixes. */ - public List getInclusiveNamespacePrefixes(); + List getInclusiveNamespacePrefixes(); } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/ExtendedCertificateCheckResult.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/ExtendedCertificateCheckResult.java index 494b216..afc783e 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/ExtendedCertificateCheckResult.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/ExtendedCertificateCheckResult.java @@ -1,33 +1,31 @@ package at.gv.egovernment.moa.spss.api.common; -import org.w3c.dom.NodeList; - public interface ExtendedCertificateCheckResult { - /** - * Gets the result code. - * - * @return The result code. - */ - public int getMajorCode(); + /** + * Gets the result code. + * + * @return The result code. + */ + int getMajorCode(); - /** - * Gets descriptive information. - * - * @return Descriptive information. - */ - public String getMajorInfo(); + /** + * Gets descriptive information. + * + * @return Descriptive information. + */ + String getMajorInfo(); - /** - * Gets the result code. - * - * @return The result code. - */ - public int getMinorCode(); + /** + * Gets the result code. + * + * @return The result code. + */ + int getMinorCode(); - /** - * Gets descriptive information. - * - * @return Descriptive information. - */ - public String getMinorInfo(); + /** + * Gets descriptive information. + * + * @return Descriptive information. + */ + String getMinorInfo(); } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/InputData.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/InputData.java index 8c940cd..b9c75bb 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/InputData.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/InputData.java @@ -21,45 +21,42 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.api.common; /** - * Interface specifying accessors for two attributes needed for returning - * <code>HashInputData</code> and <code>ReferenceInputData</code> information - * as part of <code>VerifyXMLSignatureResponse</code>. - * + * Interface specifying accessors for two attributes needed for returning + * <code>HashInputData</code> and <code>ReferenceInputData</code> information as + * part of <code>VerifyXMLSignatureResponse</code>. + * * @author Gregor Karlinger - * + * * @version $Id$ */ -public interface InputData extends Content -{ +public interface InputData extends Content { /** - * Possible value returned by {@link #getPartOf}. + * Possible value returned by {@link #getPartOf}. */ - public static String CONTAINER_SIGNEDINFO_ = "SignedInfo"; + String CONTAINER_SIGNEDINFO_ = "SignedInfo"; /** - * Possible value returned by {@link #getPartOf}. + * Possible value returned by {@link #getPartOf}. */ - public static String CONTAINER_XMLDSIGMANIFEST_ = "XMLDSIGManifest"; - + String CONTAINER_XMLDSIGMANIFEST_ = "XMLDSIGManifest"; + /** * Value returned by {link getReferringReferenceNumber}, signalling that the * attribute is not used. */ - public static int REFERER_NONE_ = -1; - + int REFERER_NONE_ = -1; + /** - * Returns a <code>String</code> signalling what kind of container the - * XMLDSIG <code>Reference</code> this <code>InputData</code> belongs - * to is part of. - * - * @return the kind of container. + * Returns a <code>String</code> signalling what kind of container the XMLDSIG + * <code>Reference</code> this <code>InputData</code> belongs to is part of. + * + * @return the kind of container. */ - public String getPartOf(); - + String getPartOf(); + /** * If this <code>InputData</code> belongs to an XMLDSIG <code>Reference</code> * being part of either a XMLDSIGManifest or a SignatureManifest, this method @@ -67,5 +64,14 @@ public interface InputData extends Content * of the XMLDSIG <code>SignedInfo</code> referring to the XMLDSIGManifest or * SignatureManifest respectively. */ - public int getReferringReferenceNumber(); + int getReferringReferenceNumber(); + + /** + * Returns an identifier of the hash algorithm that is used to hash this + * {@link InputData} + * + * @return + */ + String getHashAlgorithm(); + } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/MetaInfo.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/MetaInfo.java index 2413229..8c1b270 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/MetaInfo.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/MetaInfo.java @@ -21,14 +21,13 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.api.common; import org.w3c.dom.NodeList; /** * Object encapsulating descriptive meta information. - * + * * @author Patrick Peck * @author Stephan Grill * @version $Id$ @@ -36,26 +35,29 @@ import org.w3c.dom.NodeList; public interface MetaInfo { /** * Gets the mime type of the associated object. - * + * * @return The mimetype of the associated object. */ - public String getMimeType(); + String getMimeType(); + /** * Gets the descriptive information (URI). - * + * * @return URI referencing the descriptive information. */ - public String getDescription(); + String getDescription(); + /** * Gets the elemental informations. - * + * * @return The elemental informations. - */ - public NodeList getAnyElements(); + */ + NodeList getAnyElements(); + /** * Gets the XML signature creation type information of the associated object. - * + * * @return the XML signature creation type information of the associated object. */ - public String getType(); + String getType(); } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/SignerInfo.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/SignerInfo.java index bb3dfdf..07b5f7f 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/SignerInfo.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/SignerInfo.java @@ -21,16 +21,14 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.api.common; import java.security.cert.X509Certificate; import java.util.Date; - /** * Contains information about the signer. - * + * * @author Patrick Peck * @author Stephan Grill * @version $Id$ @@ -38,65 +36,69 @@ import java.util.Date; public interface SignerInfo { /** * Gets the signer certificate. - * + * * @return The signer certificate. - */ - public X509Certificate getSignerCertificate(); + */ + X509Certificate getSignerCertificate(); + /** * Checks, whether the certificate contained in this object is qualified. - * + * * @return <code>true</code>, if the certificate is qualified, otherwise - * <code>false</code>. + * <code>false</code>. */ - public boolean isQualifiedCertificate(); - - + boolean isQualifiedCertificate(); + /** * Checks, whether the signature is based on a SSCD. - * + * * @return <code>true</code>, if the signature is based on a SSCD, otherwise - * <code>false</code>. + * <code>false</code>. */ - public boolean isSSCD(); - + boolean isSSCD(); + /** - * Returns the source of the SSCD check (TSL or Certificate) * + * Returns the source of the SSCD check (TSL or Certificate) * */ - public String getSSCDSource(); + String getSSCDSource(); /** - * Returns the source of the QC check (TSL or Certificate) * + * Returns the source of the QC check (TSL or Certificate) * */ - public String getQCSource(); + String getQCSource(); /** * Returns the signer certificate issuer country code + * * @return */ - public String getIssuerCountryCode(); + String getIssuerCountryCode(); + /** - * Checks, whether the certificate contained in this object is a - * public authority certificate. - * - * @return <code>true</code>, if the certificate is a public authority - * certificate, otherwise <code>false</code>. + * Checks, whether the certificate contained in this object is a public + * authority certificate. + * + * @return <code>true</code>, if the certificate is a public authority + * certificate, otherwise <code>false</code>. */ - public boolean isPublicAuthority(); + boolean isPublicAuthority(); + /** - * Gets the public authority ID, if the certificate contained in this - * object is from a public authority. - * + * Gets the public authority ID, if the certificate contained in this object is + * from a public authority. + * * @return The public authority ID. - */ - public String getPublicAuhtorityID(); + */ + String getPublicAuhtorityID(); + + Date getSigningTime(); - public Date getSigningTime(); - /** * Gets information from the Trust-Status List for this certificate - * - * @return {@link TslInfos} if the certificate is on the Trust-Status List, otherwise null + * + * @return {@link TslInfos} if the certificate is on the Trust-Status List, + * otherwise null */ - public TslInfos getTslInfos(); - + TslInfos getTslInfos(); + } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/TSLConfiguration.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/TSLConfiguration.java index 642c28d..8d0a9fa 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/TSLConfiguration.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/TSLConfiguration.java @@ -21,67 +21,64 @@ * that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.api.common;
-
-import iaik.xml.crypto.utils.URI;
-
import java.util.Date;
import java.util.List;
+import iaik.xml.crypto.utils.URI;
/**
* Contains TSL configuration information.
- *
+ *
* @author kstranacher
*/
public interface TSLConfiguration {
-
- /** Default URL of EU TSL */
- public String DEFAULT_EU_TSL_URL = "https://ec.europa.eu/information_society/policy/esignature/trusted-list/tl-mp.xml";
-
- /** Default period (1day=86400000 msec) for update schedule */
- public String DEFAULT_UPDATE_SCHEDULE_PERIOD = "86400000";
-
- /** Default start time (2:00 AM) for update schedule */
- public String DEFAULT_UPDATE_SCHEDULE_STARTTIME = "02:00:00";
-
- public String DEFAULT_WORKING_DIR = "tslworking";
-
+
+ /** Default URL of EU TSL */
+ String DEFAULT_EU_TSL_URL = "https://ec.europa.eu/tools/lotl/eu-lotl.xml";
+
+ /** Default period (1day=86400000 msec) for update schedule */
+ String DEFAULT_UPDATE_SCHEDULE_PERIOD = "86400000";
+
+ /** Default start time (2:00 AM) for update schedule */
+ String DEFAULT_UPDATE_SCHEDULE_STARTTIME = "02:00:00";
+
+ String DEFAULT_WORKING_DIR = "tslworking";
+
/**
* Gets the EU TSL URL.
- *
+ *
* @return The EU TSL URL.
- */
- public String getEuTSLUrl();
+ */
+ String getEuTSLUrl();
/**
- *
+ *
* @return
*/
- public Date getUpdateScheduleStartTime();
-
+ Date getUpdateScheduleStartTime();
+
/**
- *
+ *
* @return
*/
- public long getUpdateSchedulePeriod();
-
+ long getUpdateSchedulePeriod();
+
/**
- *
+ *
* @return
*/
- public String getWorkingDirectory();
-
+ String getWorkingDirectory();
+
/**
- *
+ *
* @return
*/
- public URI getWorkingDirectoryAsURI();
-
- public List<java.net.URI> getQualifierForQC();
+ URI getWorkingDirectoryAsURI();
+
+ List<java.net.URI> getQualifierForQC();
- public List<java.net.URI> getQualifierForSSCD();
+ List<java.net.URI> getQualifierForSSCD();
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/Transform.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/Transform.java index ad050b4..5b924c3 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/Transform.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/Transform.java @@ -21,20 +21,19 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.api.common; /** * Base class for XMLDsig <code>Transform</code> elements. - * + * * @author Patrick Peck * @version $Id$ */ public interface Transform { /** * Gets the algorithm URI of this <code>Transform</code>. - * + * * @return The algorithm URI of this <code>Transform</code>. */ - public String getAlgorithmURI(); + String getAlgorithmURI(); } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/TslInfos.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/TslInfos.java index 2a04f96..34d28c4 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/TslInfos.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/TslInfos.java @@ -3,47 +3,49 @@ package at.gv.egovernment.moa.spss.api.common; import java.util.List; /** - * Trust-Status list information for a specific certificate - * All informations and identifiers are according to the Trust-Status List specification - * + * Trust-Status list information for a specific certificate All informations and + * identifiers are according to the Trust-Status List specification + * * @author tlenz * */ public interface TslInfos { - /** - * Gets the issuer country of the TSL - * - * @return - */ - public String getTslIssuerCountry(); - - /** - * Gets the Service-Type Status of the TSP, which issues the analyzed certificate - * - * @return - */ - public String getServiceTypeStatus(); - - /** - * Gets the Service-Type Identifier of the TSP, which issues the analyzed certificate - * - * @return - */ - public String getServiceTypeIdentifier(); - - /** - * Gets additional qualifiers for the analyzed certificate - * - * @return - */ - public List<String> getQualifiers(); - - /** - * Gets additional service information for the analyzed certificate - * - * @return - */ - public List<String> getAdditionalServiceInformation(); - + /** + * Gets the issuer country of the TSL + * + * @return + */ + String getTslIssuerCountry(); + + /** + * Gets the Service-Type Status of the TSP, which issues the analyzed + * certificate + * + * @return + */ + String getServiceTypeStatus(); + + /** + * Gets the Service-Type Identifier of the TSP, which issues the analyzed + * certificate + * + * @return + */ + String getServiceTypeIdentifier(); + + /** + * Gets additional qualifiers for the analyzed certificate + * + * @return + */ + List<String> getQualifiers(); + + /** + * Gets additional service information for the analyzed certificate + * + * @return + */ + List<String> getAdditionalServiceInformation(); + } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/X509IssuerSerial.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/X509IssuerSerial.java index 39ec807..007fbe8 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/X509IssuerSerial.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/X509IssuerSerial.java @@ -21,14 +21,13 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.api.common; import java.math.BigInteger; /** * Contains an X.509 issuer distinguished name/serial number pair. - * + * * @author Patrick Peck * @author Stephan Grill * @version $Id$ @@ -36,14 +35,15 @@ import java.math.BigInteger; public interface X509IssuerSerial { /** * Gets the issuer distinguished name. - * + * * @return The issuer distinguished name. */ - public String getX509IssuerName(); + String getX509IssuerName(); + /** * Gets the issuer serial number. - * + * * @return The issuer serial number. */ - public BigInteger getX509SerialNumber(); + BigInteger getX509SerialNumber(); } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/XMLDataObjectAssociation.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/XMLDataObjectAssociation.java index fe2a795..7b3f830 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/XMLDataObjectAssociation.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/XMLDataObjectAssociation.java @@ -21,14 +21,12 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.api.common; - /** * Object encapsulating arbitrary content and optional descriptive meta * information. - * + * * @author Patrick Peck * @author Stephan Grill * @version $Id$ @@ -36,14 +34,15 @@ package at.gv.egovernment.moa.spss.api.common; public interface XMLDataObjectAssociation { /** * Gets descriptive meta information. - * + * * @return The descriptive meta information. */ - public MetaInfo getMetaInfo(); + MetaInfo getMetaInfo(); + /** * Gets the actual content. - * + * * @return The content of this association. */ - public Content getContent(); + Content getContent(); } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/XPathFilter.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/XPathFilter.java index 06a49a2..f3a12dc 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/XPathFilter.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/XPathFilter.java @@ -21,42 +21,43 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.api.common; import java.util.Map; /** * An XPath expression set operation. - * + * * @author Patrick Peck * @version $Id$ */ public interface XPathFilter { /** Subtract this filter's node set from the resulting node set. */ - public static final String SUBTRACT_TYPE = "subtract"; + String SUBTRACT_TYPE = "subtract"; /** Intersect this filter's node set with the resulting node set. */ - public static final String INTERSECT_TYPE = "intersect"; + String INTERSECT_TYPE = "intersect"; /** Compute the union of this filter's node set and the resulting node set. */ - public static final String UNION_TYPE = "union"; - + String UNION_TYPE = "union"; + /** * Gets the type of this <code>XPathFilter</code>. - * + * * @return The type of this <code>XPathFilter</code>. */ - public String getFilterType(); + String getFilterType(); + /** * Gets the XPath expression for selecting the nodes. - * + * * @return The XPath expression for selecting the nodes. */ - public String getXPathExpression(); + String getXPathExpression(); + /** - * Gets The namespace prefix to URI mapping used during evaluation of the - * XPath expression. - * + * Gets The namespace prefix to URI mapping used during evaluation of the XPath + * expression. + * * @return The namespace prefix to URI mapping. */ - public Map getNamespaceDeclarations(); + Map getNamespaceDeclarations(); } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/XPathFilter2Transform.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/XPathFilter2Transform.java index 6f05710..b5899a4 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/XPathFilter2Transform.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/XPathFilter2Transform.java @@ -21,29 +21,28 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.api.common; import java.util.List; /** * An XPath type of <code>Transform</code> containing multiple filters for - * performing set operations on XPath selections. - * + * performing set operations on XPath selections. + * * @author Patrick Peck * @version $Id$ */ public interface XPathFilter2Transform extends Transform { /** Algorithm URI for the XPath Filter2 <code>Transform</code>. */ - public static final String XPATH_FILTER2 = - "http://www.w3.org/2002/06/xmldsig-filter2"; + String XPATH_FILTER2 = + "http://www.w3.org/2002/06/xmldsig-filter2"; /** - * Gets the <code>XPathFilter</code>s contained in this + * Gets the <code>XPathFilter</code>s contained in this * <code>XPathFilter2Transform</code>. - * + * * @return The <code>XPathFilter</code>s. */ - public List getFilters(); + List getFilters(); } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/XPathTransform.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/XPathTransform.java index 99eda2a..41227c5 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/XPathTransform.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/XPathTransform.java @@ -21,34 +21,34 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.api.common; import java.util.Map; /** * A <code>Transform</code> performing an XPath selection. - * + * * @author Patrick Peck * @version $Id$ */ public interface XPathTransform extends Transform { /** Algorithm URI of the XPath <code>Transform</code>. */ - public static final String XPATH = - "http://www.w3.org/TR/1999/REC-xpath-19991116"; + String XPATH = + "http://www.w3.org/TR/1999/REC-xpath-19991116"; /** * Gets the XPath expression used for selection. - * + * * @return The XPath expression used for selection. */ - public String getXPathExpression(); + String getXPathExpression(); + /** - * Gets The namespace prefix to URI mapping used during evaluation of the - * XPath expression. - * + * Gets The namespace prefix to URI mapping used during evaluation of the XPath + * expression. + * * @return The namespace prefix to URI mapping. */ - public Map getNamespaceDeclarations(); - + Map getNamespaceDeclarations(); + } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/XSLTTransform.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/XSLTTransform.java index 8cb6c8e..bdfd2eb 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/XSLTTransform.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/XSLTTransform.java @@ -21,27 +21,26 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.api.common; import org.w3c.dom.Element; /** * A <code>Transform</code> containing an XSLT stylesheet. - * + * * @author Patrick Peck * @version $Id$ */ public interface XSLTTransform extends Transform { /** Algorithm URI for the XSLT type of <code>Transform</code>. */ - public static final String XSLT = - "http://www.w3.org/TR/1999/REC-xslt-19991116"; + String XSLT = + "http://www.w3.org/TR/1999/REC-xslt-19991116"; /** * Gets the XSLT stylesheet element used for the transformation. - * + * * @return The XSLT stylesheet element used for the transformation. */ - public Element getStylesheet(); + Element getStylesheet(); } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/AdESFormResultsImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/AdESFormResultsImpl.java index c186c54..46710c0 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/AdESFormResultsImpl.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/AdESFormResultsImpl.java @@ -4,39 +4,39 @@ import at.gv.egovernment.moa.spss.api.xmlverify.AdESFormResults; public class AdESFormResultsImpl implements AdESFormResults { - private Integer code; - private String info; - private String name; - - public synchronized void setCode(Integer code) { - this.code = code; - } - - public synchronized void setInfo(String info) { - this.info = info; - } - - public synchronized void setName(String name) { - this.name = name; - } - - @Override - public Integer getCode() { - return this.code; - } - - @Override - public String getInfo() { - return this.info; - } - - @Override - public String getName() { - return this.name; - } - - @Override - public String toString() { - return "AdESFormResultsImpl [code=" + code + ", info=" + info + ", name=" + name + "]"; - } + private Integer code; + private String info; + private String name; + + public synchronized void setCode(Integer code) { + this.code = code; + } + + public synchronized void setInfo(String info) { + this.info = info; + } + + public synchronized void setName(String name) { + this.name = name; + } + + @Override + public Integer getCode() { + return this.code; + } + + @Override + public String getInfo() { + return this.info; + } + + @Override + public String getName() { + return this.name; + } + + @Override + public String toString() { + return "AdESFormResultsImpl [code=" + code + ", info=" + info + ", name=" + name + "]"; + } } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/Base64TransformImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/Base64TransformImpl.java index f708bab..b08c74c 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/Base64TransformImpl.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/Base64TransformImpl.java @@ -21,20 +21,19 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.api.impl; import at.gv.egovernment.moa.spss.api.common.Base64Transform; /** * Default implementation of <code>Base64Transform</code>. - * + * * @author Fatemeh Philippi * @version $Id$ */ public class Base64TransformImpl - extends TransformImpl - implements Base64Transform { + extends TransformImpl + implements Base64Transform { /** * Create a new <code>Base64TransformImpl</code> object. diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/CMSContentExplicitImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/CMSContentExplicitImpl.java index 8dede90..f6c1574 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/CMSContentExplicitImpl.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/CMSContentExplicitImpl.java @@ -21,7 +21,6 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.api.impl; import java.io.InputStream; @@ -30,33 +29,35 @@ import at.gv.egovernment.moa.spss.api.cmsverify.CMSContentExcplicit; /** * Default implementation of <code>CMSContentExplicit</code>. - * + * * @author Fatemeh Philippi * @version $Id$ */ public class CMSContentExplicitImpl implements CMSContentExcplicit { - + /** The binary content, as a stream. */ private InputStream binaryContent; /** * Sets the binary content as a stream. - * + * * @param content The binary content as a stream. */ public void setBinaryContent(InputStream content) { this.binaryContent = content; } + @Override public InputStream getBinaryContent() { return binaryContent; } /** * Gets the type of content. - * + * * @return EXPLICIT_CONTENT */ + @Override public int getContentType() { return EXPLICIT_CONTENT; } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/CMSContentReferenceImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/CMSContentReferenceImpl.java index fb90c5f..a14ea90 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/CMSContentReferenceImpl.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/CMSContentReferenceImpl.java @@ -21,40 +21,41 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.api.impl; import at.gv.egovernment.moa.spss.api.cmsverify.CMSContentReference; /** * Default implementation of <code>CMSContentReference</code>. - * + * * @author Fatemeh Philippi * @version $Id$ */ public class CMSContentReferenceImpl implements CMSContentReference { - + /** The reference pointing to the actual data. */ private String reference; /** * Sets the reference URI. - * + * * @param referenceURI The URI pointing to the content data. */ public void setReference(String referenceURI) { this.reference = referenceURI; } + @Override public String getReference() { return reference; } /** * Gets the content type. - * + * * @return REFERENCE_CONTENT */ + @Override public int getContentType() { return REFERENCE_CONTENT; } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/CMSDataObjectImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/CMSDataObjectImpl.java index 20a9b56..e9b4fea 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/CMSDataObjectImpl.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/CMSDataObjectImpl.java @@ -21,7 +21,6 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.api.impl; import java.math.BigDecimal; @@ -32,60 +31,64 @@ import at.gv.egovernment.moa.spss.api.common.MetaInfo; /** * Default implementation of <code>CMLSDataObject</code>. - * + * * @author Fatemeh Philippi * @version $Id$ */ public class CMSDataObjectImpl implements CMSDataObject { - + /** The <code>MetaInfo</code> associated with the CMS data object. */ private MetaInfo metaInfo; /** The <code>CMSContent</code> contained in this data object. */ private CMSContent cmsContent; - + private BigDecimal excludeByteRangeFrom; private BigDecimal excludeByteRangeTo; /** * Sets the meta information associated with the CMS data object. - * + * * @param metaInfo The meta information. */ public void setMetaInfo(MetaInfo metaInfo) { this.metaInfo = metaInfo; } + @Override public MetaInfo getMetaInfo() { return metaInfo; } /** * Sets the data of this <code>CMSDataObject</code>. - * + * * @param cmsContent The actual data of this <code>CMSDataObject</code>. */ public void setContent(CMSContent cmsContent) { this.cmsContent = cmsContent; } + @Override public CMSContent getContent() { return cmsContent; } public void setExcludeByteRangeFrom(BigDecimal excludeByteRangeFrom) { - this.excludeByteRangeFrom = excludeByteRangeFrom; + this.excludeByteRangeFrom = excludeByteRangeFrom; } - + + @Override public BigDecimal getExcludeByteRangeFrom() { - return excludeByteRangeFrom; + return excludeByteRangeFrom; } - + public void setExcludeByteRangeTo(BigDecimal excludeByteRangeTo) { - this.excludeByteRangeTo = excludeByteRangeTo; + this.excludeByteRangeTo = excludeByteRangeTo; } - + + @Override public BigDecimal getExcludeByteRangeTo() { - return excludeByteRangeTo; - } - + return excludeByteRangeTo; + } + } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/CMSSignatureResponseImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/CMSSignatureResponseImpl.java index b512dd0..77ef137 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/CMSSignatureResponseImpl.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/CMSSignatureResponseImpl.java @@ -21,42 +21,41 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.api.impl; -import org.w3c.dom.Element; - import at.gv.egovernment.moa.spss.api.cmssign.CMSSignatureResponse; /** * Default implementation of <code>CMSSignatureResponse</code>. - * + * * @version $Id$ */ public class CMSSignatureResponseImpl - implements CMSSignatureResponse { + implements CMSSignatureResponse { /** The base64 value of the CMS signature. */ private String cmsSignature; - /** + /** * Sets the CMS signature. - * + * * @param cmsSignature The Base64 encoded value CMS signature. */ public void setCMSSignature(String cmsSignature) { this.cmsSignature = cmsSignature; } + @Override public String getCMSSignature() { return cmsSignature; } /** * Gets the type of <code>CreateCMSSignatureResponseElement</code>. - * + * * @return CMS_SIGNATURE */ + @Override public int getResponseType() { return CMS_SIGNATURE; } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/CanonicalizationTransformImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/CanonicalizationTransformImpl.java index f8efe26..e931c4b 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/CanonicalizationTransformImpl.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/CanonicalizationTransformImpl.java @@ -21,26 +21,25 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.api.impl; import at.gv.egovernment.moa.spss.api.common.CanonicalizationTransform; /** * Default implementation of <code>CanonicalizationTransform</code>. - * + * * @author Fatemeh Philippi * @version $Id$ */ public class CanonicalizationTransformImpl - extends TransformImpl - implements CanonicalizationTransform { - + extends TransformImpl + implements CanonicalizationTransform { + /** * Create a new <code>CanonicalizationTransformImpl</code> object. - * - * @param algorithmURI Algorithm URI of the canonicalization - * <code>Transform</code> type. + * + * @param algorithmURI Algorithm URI of the canonicalization + * <code>Transform</code> type. */ public CanonicalizationTransformImpl(String algorithmURI) { setAlgorithmURI(algorithmURI); diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/CheckResultImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/CheckResultImpl.java index 5bb6e60..a57c4e6 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/CheckResultImpl.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/CheckResultImpl.java @@ -21,7 +21,6 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.api.impl; import org.w3c.dom.NodeList; @@ -30,20 +29,20 @@ import at.gv.egovernment.moa.spss.api.common.CheckResult; /** * Default implementation of <code>CheckResult</code>. - * + * * @author Fatemeh Philippi * @version $Id$ */ public class CheckResultImpl implements CheckResult { /** The result code. */ private int code; - - /** Additional information. */ + + /** Additional information. */ private NodeList info; /** * Sets a result code. - * + * * @param code The result code. */ public void setCode(int code) { @@ -53,13 +52,14 @@ public class CheckResultImpl implements CheckResult { /** * @see at.gv.egovernment.moa.spss.api.common.CheckResult#getCode() */ + @Override public int getCode() { return code; } /** * Sets a descriptive information. - * + * * @param info The descriptive information. */ public void setInfo(NodeList info) { @@ -69,6 +69,7 @@ public class CheckResultImpl implements CheckResult { /** * @see at.gv.egovernment.moa.spss.api.common.CheckResult#getInfo() */ + @Override public NodeList getInfo() { return info; } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/ContentBinaryImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/ContentBinaryImpl.java index 7fe1cf9..aa49375 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/ContentBinaryImpl.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/ContentBinaryImpl.java @@ -21,7 +21,6 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.api.impl; import java.io.InputStream; @@ -30,33 +29,35 @@ import at.gv.egovernment.moa.spss.api.common.ContentBinary; /** * Default implementation of <code>ContentBinary</code>. - * + * * @author Fatemeh Philippi * @version $Id$ */ public class ContentBinaryImpl extends ContentImpl implements ContentBinary { - /** The binary content as a stream. */ + /** The binary content as a stream. */ private InputStream binaryContent; /** * Sets the binary content as a stream. - * + * * @param binaryContent The binary content as a stream. */ public void setBinaryContent(InputStream binaryContent) { this.binaryContent = binaryContent; } + @Override public InputStream getBinaryContent() { return binaryContent; } /** * Gets the type of content. - * + * * @return BINARY_CONTENT */ + @Override public int getContentType() { return BINARY_CONTENT; } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/ContentImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/ContentImpl.java index d061747..4c73795 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/ContentImpl.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/ContentImpl.java @@ -21,14 +21,13 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.api.impl; import at.gv.egovernment.moa.spss.api.common.Content; /** * Default base class for <code>Content</code> implementations. - * + * * @author Patrick Peck * @version $Id$ */ @@ -38,13 +37,14 @@ public abstract class ContentImpl implements Content { /** * Sets the reference pointing to the content data. - * + * * @param referenceURI The URI of the content data. */ public void setReference(String referenceURI) { this.reference = referenceURI; } + @Override public String getReference() { return reference; } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/ContentLocRefImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/ContentLocRefImpl.java index aa01a93..7d763c1 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/ContentLocRefImpl.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/ContentLocRefImpl.java @@ -21,47 +21,47 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.api.impl; import at.gv.egovernment.moa.spss.api.common.ContentLocRef; /** * Default implementation of <code>ContentLocRef</code>. - * + * * @author Gregor Karlinger * @version $Id$ */ -public class ContentLocRefImpl extends ContentImpl implements ContentLocRef -{ +public class ContentLocRefImpl extends ContentImpl implements ContentLocRef { /** - * The location reference URI pointing to the actual remote location of the content. + * The location reference URI pointing to the actual remote location of the + * content. */ private String locationReferenceURI_; - - /** + + /** * @see at.gv.egovernment.moa.spss.api.common.ContentLocRef#getLocationReferenceURI() */ - public String getLocationReferenceURI() - { + @Override + public String getLocationReferenceURI() { return locationReferenceURI_; } - + /** - * Sets the location reference URI pointing to the actual remote location of the content. - * + * Sets the location reference URI pointing to the actual remote location of the + * content. + * * @param locationReferenceURI the location reference URI. */ - public void setLocationReferenceURI(String locationReferenceURI) - { + public void setLocationReferenceURI(String locationReferenceURI) { locationReferenceURI_ = locationReferenceURI; } - + /** * Gets the type of content. - * + * * @return LOCREF_CONTENT. */ + @Override public int getContentType() { return LOCREF_CONTENT; } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/ContentReferenceImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/ContentReferenceImpl.java index ab5c3b4..de0e1cf 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/ContentReferenceImpl.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/ContentReferenceImpl.java @@ -21,26 +21,26 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.api.impl; import at.gv.egovernment.moa.spss.api.common.ContentReference; /** * Default implementation of <code>ContentReference</code>. - * + * * @author Patrick Peck * @version $Id$ */ public class ContentReferenceImpl - extends ContentImpl - implements ContentReference { + extends ContentImpl + implements ContentReference { /** * Gets the type of content. - * + * * @return REFERENCE_CONTENT */ + @Override public int getContentType() { return REFERENCE_CONTENT; } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/ContentXMLImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/ContentXMLImpl.java index dcc1935..496550f 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/ContentXMLImpl.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/ContentXMLImpl.java @@ -21,7 +21,6 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.api.impl; import org.w3c.dom.NodeList; @@ -30,7 +29,7 @@ import at.gv.egovernment.moa.spss.api.common.ContentXML; /** * Default implementation of <code>ContentXML</code>. - * + * * @author Fatemeh Philippi * @version $Id$ */ @@ -38,25 +37,27 @@ public class ContentXMLImpl extends ContentImpl implements ContentXML { /** The nodes making up the XML content. */ private NodeList xmlContent; - + /** * Sets the nodes making up the XML content. - * + * * @param xmlContent The XML content. */ public void setXMLContent(NodeList xmlContent) { this.xmlContent = xmlContent; } + @Override public NodeList getXMLContent() { return xmlContent; } /** * Gets the type of content. - * + * * @return XML_CONTENT */ + @Override public int getContentType() { return XML_CONTENT; } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/CreateCMSSignatureRequestImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/CreateCMSSignatureRequestImpl.java index e8408bc..dcdb77f 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/CreateCMSSignatureRequestImpl.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/CreateCMSSignatureRequestImpl.java @@ -21,7 +21,6 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.api.impl; import java.util.ArrayList; @@ -32,44 +31,46 @@ import at.gv.egovernment.moa.spss.api.cmssign.CreateCMSSignatureRequest; /** * Default implementation of <code>CreateCMSSignatureRequest</code>. - * + * * @author Fatemeh Philippi * @version $Id$ */ public class CreateCMSSignatureRequestImpl - implements CreateCMSSignatureRequest { + implements CreateCMSSignatureRequest { - /** The identifier for selecting the private keys for creating the signature.*/ + /** The identifier for selecting the private keys for creating the signature. */ private String keyIdentifier; /** Information for creating a single signature. */ private List singleSignatureInfos = new ArrayList(); /** - * Sets the identifier for selecting the private keys for creating the + * Sets the identifier for selecting the private keys for creating the * signature. - * + * * @param keyIdentifier The identifier for selecting the private keys. */ public void setKeyIdentifier(String keyIdentifier) { this.keyIdentifier = keyIdentifier; } + @Override public String getKeyIdentifier() { return keyIdentifier; } /** * Sets the information for creating single signatures. - * + * * @param singleSignaureInfos The information for creating single signatures. */ public void setSingleSignatureInfos(List singleSignaureInfos) { this.singleSignatureInfos = - singleSignaureInfos != null - ? Collections.unmodifiableList(new ArrayList(singleSignaureInfos)) - : null; + singleSignaureInfos != null + ? Collections.unmodifiableList(new ArrayList(singleSignaureInfos)) + : null; } + @Override public List getSingleSignatureInfos() { return singleSignatureInfos; } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/CreateCMSSignatureResponseImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/CreateCMSSignatureResponseImpl.java index d596058..ae64195 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/CreateCMSSignatureResponseImpl.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/CreateCMSSignatureResponseImpl.java @@ -21,7 +21,6 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.api.impl; import java.util.ArrayList; @@ -32,27 +31,28 @@ import at.gv.egovernment.moa.spss.api.cmssign.CreateCMSSignatureResponse; /** * Default implementation of <code>CreateCMSSignatureResponse</code>. - * + * * @version $Id$ */ public class CreateCMSSignatureResponseImpl - implements CreateCMSSignatureResponse { + implements CreateCMSSignatureResponse { /** The elements contained in the response. */ private List responseElements = new ArrayList(); /** * Sets the elements contained in the response. - * + * * @param responseElements The response elements. */ public void setResponseElements(List responseElements) { this.responseElements = - responseElements != null - ? Collections.unmodifiableList(new ArrayList(responseElements)) - : null; + responseElements != null + ? Collections.unmodifiableList(new ArrayList(responseElements)) + : null; } + @Override public List getResponseElements() { return responseElements; } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/CreateSignatureEnvironmentProfileExplicitImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/CreateSignatureEnvironmentProfileExplicitImpl.java index 9fe8eaf..3d5279f 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/CreateSignatureEnvironmentProfileExplicitImpl.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/CreateSignatureEnvironmentProfileExplicitImpl.java @@ -21,7 +21,6 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.api.impl; import java.util.ArrayList; @@ -32,14 +31,14 @@ import at.gv.egovernment.moa.spss.api.xmlsign.CreateSignatureEnvironmentProfileE import at.gv.egovernment.moa.spss.api.xmlsign.CreateSignatureLocation; /** - * Default implementation of + * Default implementation of * <codeCreateSignatureEnvironmentProfileExplicit</code>. - * + * * @author Patrick Peck * @version $Id$ */ public class CreateSignatureEnvironmentProfileExplicitImpl - implements CreateSignatureEnvironmentProfileExplicit { + implements CreateSignatureEnvironmentProfileExplicit { /** The insertion location of the signature to be created. */ private CreateSignatureLocation createSignatureLocation; @@ -49,40 +48,42 @@ public class CreateSignatureEnvironmentProfileExplicitImpl /** * Sets the insertion location of the signature to be created. - * - * @param createSignatureLocation The insertion location of the signature to - * be created. + * + * @param createSignatureLocation The insertion location of the signature to be + * created. */ public void setCreateSignatureLocation(CreateSignatureLocation createSignatureLocation) { this.createSignatureLocation = createSignatureLocation; } + @Override public CreateSignatureLocation getCreateSignatureLocation() { return createSignatureLocation; } /** - * Sets the supplemental information for evaluating the signature - * environment. - * + * Sets the supplemental information for evaluating the signature environment. + * * @param supplements The supplemental information. */ public void setSupplements(List supplements) { this.supplements = - supplements != null - ? Collections.unmodifiableList(new ArrayList(supplements)) - : null; + supplements != null + ? Collections.unmodifiableList(new ArrayList(supplements)) + : null; } + @Override public List getSupplements() { return supplements; } /** * Gets the type of profile. - * + * * @return EXPLICIT_CREATESIGNATUREENVIRONMENTPROFILE */ + @Override public int getCreateSignatureEnvironmentProfileType() { return EXPLICIT_CREATESIGNATUREENVIRONMENTPROFILE; } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/CreateSignatureEnvironmentProfileIDImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/CreateSignatureEnvironmentProfileIDImpl.java index 5edbf4f..4818f9e 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/CreateSignatureEnvironmentProfileIDImpl.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/CreateSignatureEnvironmentProfileIDImpl.java @@ -21,41 +21,42 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.api.impl; import at.gv.egovernment.moa.spss.api.xmlsign.CreateSignatureEnvironmentProfileID; /** * Default implementation of <code>CreateSignatureEnvironmentProfileID</code>. - * + * * @author Patrick Peck * @version $Id$ */ public class CreateSignatureEnvironmentProfileIDImpl - implements CreateSignatureEnvironmentProfileID { + implements CreateSignatureEnvironmentProfileID { /** The profile ID. */ private String createSignatureEnvironmentProfileID; /** * Sets the profile ID. - * + * * @param profileID The profile ID. */ public void setCreateSignatureEnvironmentProfileID(String profileID) { this.createSignatureEnvironmentProfileID = profileID; } + @Override public String getCreateSignatureEnvironmentProfileID() { return createSignatureEnvironmentProfileID; } /** * Gets the type of profile. - * + * * @return ID_CREATESIGNATUREENVIRONMENTPROFILE */ + @Override public int getCreateSignatureEnvironmentProfileType() { return ID_CREATESIGNATUREENVIRONMENTPROFILE; } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/CreateSignatureInfoImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/CreateSignatureInfoImpl.java index 7111633..7a97cd5 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/CreateSignatureInfoImpl.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/CreateSignatureInfoImpl.java @@ -21,7 +21,6 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.api.impl; import at.gv.egovernment.moa.spss.api.common.Content; @@ -30,29 +29,30 @@ import at.gv.egovernment.moa.spss.api.xmlsign.CreateSignatureInfo; /** * Default implementation of <code>CreateSignatureInfo</code>. - * + * * @author Fatemeh Philippi * @version $Id$ */ public class CreateSignatureInfoImpl implements CreateSignatureInfo { - - /** The signature environment that will contain the newly created - * signature. */ + + /** + * The signature environment that will contain the newly created signature. + */ private Content createSignatureEnvironment; /** Additional information about the signature environment. */ private CreateSignatureEnvironmentProfile createSignatureEnvironmentProfile; /** - * Sets the signature environment that will contain the newly created - * signature. - * + * Sets the signature environment that will contain the newly created signature. + * * @param createSignatureEnvironment The signature environment. */ public void setCreateSignatureEnvironment(Content createSignatureEnvironment) { this.createSignatureEnvironment = createSignatureEnvironment; } + @Override public Content getCreateSignatureEnvironment() { return createSignatureEnvironment; } @@ -60,13 +60,14 @@ public class CreateSignatureInfoImpl implements CreateSignatureInfo { /** * Sets the signature environment profile containing additional information * about the signature environment. - * + * * @param profile The signature environment profile. */ public void setCreateSignatureEnvironmentProfile(CreateSignatureEnvironmentProfile profile) { this.createSignatureEnvironmentProfile = profile; } + @Override public CreateSignatureEnvironmentProfile getCreateSignatureEnvironmentProfile() { return createSignatureEnvironmentProfile; } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/CreateSignatureLocationImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/CreateSignatureLocationImpl.java index 6f3101f..121dcf0 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/CreateSignatureLocationImpl.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/CreateSignatureLocationImpl.java @@ -21,33 +21,33 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.api.impl; import at.gv.egovernment.moa.spss.api.xmlsign.CreateSignatureLocation; /** * Default implementation of <code>CreateSignatureLocation</code>. - * + * * @author Fatemeh Philippi * @version $Id$ */ public class CreateSignatureLocationImpl - extends ElementSelectorImpl - implements CreateSignatureLocation { + extends ElementSelectorImpl + implements CreateSignatureLocation { /** The index of the newly created signature. */ private int index; /** * Sets the index of the newly created signature. - * + * * @param index The index of the newly created signature. */ public void setIndex(int index) { this.index = index; } + @Override public int getIndex() { return index; } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/CreateTransformsInfoImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/CreateTransformsInfoImpl.java index d53f103..24e4abc 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/CreateTransformsInfoImpl.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/CreateTransformsInfoImpl.java @@ -21,7 +21,6 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.api.impl; import java.util.ArrayList; @@ -33,7 +32,7 @@ import at.gv.egovernment.moa.spss.api.xmlsign.CreateTransformsInfo; /** * Default implementation of <code>CreateTransformsInfo</code>. - * + * * @author Fatemeh Philippi * @version $Id$ */ @@ -45,29 +44,31 @@ public class CreateTransformsInfoImpl implements CreateTransformsInfo { /** * Sets the transforms. - * + * * @param transforms The transforms. */ public void setTransforms(List transforms) { this.transforms = - transforms != null - ? Collections.unmodifiableList(new ArrayList(transforms)) - : null; + transforms != null + ? Collections.unmodifiableList(new ArrayList(transforms)) + : null; } + @Override public List getTransforms() { return transforms; } /** * Sets the meta information about the data resulting from the transforms. - * + * * @param finalDataMetaInfo The meta information. */ public void setFinalDataMetaInfo(MetaInfo finalDataMetaInfo) { this.finalDataMetaInfo = finalDataMetaInfo; } + @Override public MetaInfo getFinalDataMetaInfo() { return finalDataMetaInfo; } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/CreateTransformsInfoProfileExplicitImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/CreateTransformsInfoProfileExplicitImpl.java index b6b9d52..3ffc8e3 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/CreateTransformsInfoProfileExplicitImpl.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/CreateTransformsInfoProfileExplicitImpl.java @@ -21,7 +21,6 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.api.impl; import java.util.ArrayList; @@ -33,12 +32,12 @@ import at.gv.egovernment.moa.spss.api.xmlsign.CreateTransformsInfoProfileExplici /** * Default implementation of <code>CreateTransformsInfoProfileExplicit</code>. - * + * * @author Fatemeh Philippi * @version $Id$ */ public class CreateTransformsInfoProfileExplicitImpl - implements CreateTransformsInfoProfileExplicit { + implements CreateTransformsInfoProfileExplicit { /** Transformation information. */ private CreateTransformsInfo transformsInfo; @@ -47,38 +46,41 @@ public class CreateTransformsInfoProfileExplicitImpl /** * Sets the transformation information. - * + * * @param transformsInfo The transformation information. */ public void setCreateTransformsInfo(CreateTransformsInfo transformsInfo) { this.transformsInfo = transformsInfo; } + @Override public CreateTransformsInfo getCreateTransformsInfo() { return transformsInfo; } /** * Sets the additional data for the transformations. - * + * * @param supplements The additional data. */ public void setSupplements(List supplements) { this.supplements = - supplements != null - ? Collections.unmodifiableList(new ArrayList(supplements)) - : null; + supplements != null + ? Collections.unmodifiableList(new ArrayList(supplements)) + : null; } + @Override public List getSupplements() { return supplements; } /** * Gets the type of profile. - * + * * @return EXPLICIT_CREATETRANSFORMSINFOPROFILE */ + @Override public int getCreateTransformsInfoProfileType() { return EXPLICIT_CREATETRANSFORMSINFOPROFILE; } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/CreateTransformsInfoProfileIDImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/CreateTransformsInfoProfileIDImpl.java index 55d0ca6..e86c7de 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/CreateTransformsInfoProfileIDImpl.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/CreateTransformsInfoProfileIDImpl.java @@ -21,40 +21,42 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.api.impl; import at.gv.egovernment.moa.spss.api.xmlsign.CreateTransformsInfoProfileID; /** * Default implementation of <code>CreateTransformsInfoProfileID</code>. - * + * * @author Fatemeh Philippi * @version $Id$ */ public class CreateTransformsInfoProfileIDImpl - implements CreateTransformsInfoProfileID { + implements CreateTransformsInfoProfileID { /** The profile ID. */ private String createTransformsID; /** * Sets the profile ID. + * * @param createTransformsID The profile ID. */ public void setCreateTransformsInfoProfileID(String createTransformsID) { this.createTransformsID = createTransformsID; } + @Override public String getCreateTransformsInfoProfileID() { return createTransformsID; } /** * Gets the type of profile. - * + * * @return ID_CREATETRANSFORMSINFOPROFILE */ + @Override public int getCreateTransformsInfoProfileType() { return ID_CREATETRANSFORMSINFOPROFILE; } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/CreateXMLSignatureRequestImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/CreateXMLSignatureRequestImpl.java index aaffaa7..30779a3 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/CreateXMLSignatureRequestImpl.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/CreateXMLSignatureRequestImpl.java @@ -21,7 +21,6 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.api.impl; import java.util.ArrayList; @@ -32,44 +31,46 @@ import at.gv.egovernment.moa.spss.api.xmlsign.CreateXMLSignatureRequest; /** * Default implementation of <code>CreateXMLSignatureRequest</code>. - * + * * @author Fatemeh Philippi * @version $Id$ */ public class CreateXMLSignatureRequestImpl - implements CreateXMLSignatureRequest { + implements CreateXMLSignatureRequest { - /** The identifier for selecting the private keys for creating the signature.*/ + /** The identifier for selecting the private keys for creating the signature. */ private String keyIdentifier; /** Information for creating a single signature. */ private List singleSignatureInfos = new ArrayList(); /** - * Sets the identifier for selecting the private keys for creating the + * Sets the identifier for selecting the private keys for creating the * signature. - * + * * @param keyIdentifier The identifier for selecting the private keys. */ public void setKeyIdentifier(String keyIdentifier) { this.keyIdentifier = keyIdentifier; } + @Override public String getKeyIdentifier() { return keyIdentifier; } /** * Sets the information for creating single signatures. - * + * * @param singleSignaureInfos The information for creating single signatures. */ public void setSingleSignatureInfos(List singleSignaureInfos) { this.singleSignatureInfos = - singleSignaureInfos != null - ? Collections.unmodifiableList(new ArrayList(singleSignaureInfos)) - : null; + singleSignaureInfos != null + ? Collections.unmodifiableList(new ArrayList(singleSignaureInfos)) + : null; } + @Override public List getSingleSignatureInfos() { return singleSignatureInfos; } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/CreateXMLSignatureResponseImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/CreateXMLSignatureResponseImpl.java index 7a8359f..80cd6dc 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/CreateXMLSignatureResponseImpl.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/CreateXMLSignatureResponseImpl.java @@ -21,7 +21,6 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.api.impl; import java.util.ArrayList; @@ -32,28 +31,29 @@ import at.gv.egovernment.moa.spss.api.xmlsign.CreateXMLSignatureResponse; /** * Default implementation of <code>CreateXMLSignatureResponse</code>. - * + * * @author Fatemeh Philippi * @version $Id$ */ public class CreateXMLSignatureResponseImpl - implements CreateXMLSignatureResponse { + implements CreateXMLSignatureResponse { /** The elements contained in the response. */ private List responseElements = new ArrayList(); /** * Sets the elements contained in the response. - * + * * @param responseElements The response elements. */ public void setResponseElements(List responseElements) { this.responseElements = - responseElements != null - ? Collections.unmodifiableList(new ArrayList(responseElements)) - : null; + responseElements != null + ? Collections.unmodifiableList(new ArrayList(responseElements)) + : null; } + @Override public List getResponseElements() { return responseElements; } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/DataObjectInfoCMSImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/DataObjectInfoCMSImpl.java index 702086b..f65816a 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/DataObjectInfoCMSImpl.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/DataObjectInfoCMSImpl.java @@ -21,7 +21,6 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.api.impl; import at.gv.egovernment.moa.spss.api.cmssign.DataObjectInfo; @@ -29,7 +28,7 @@ import at.gv.egovernment.moa.spss.api.cmsverify.CMSDataObject; /** * Default implementation of <code>DataObjectInfo</code> for CMS. - * + * * @author Fatemeh Philippi * @version $Id$ */ @@ -41,27 +40,28 @@ public class DataObjectInfoCMSImpl implements DataObjectInfo { /** * Sets the signature structure type. - * + * * @param structure The signature structure type. */ public void setStructure(String structure) { this.stucture = structure; } + @Override public String getStructure() { return stucture; } - /** * Sets the data object to be signed. - * + * * @param dataObject The data object to be signed. */ public void setDataObject(CMSDataObject dataObject) { this.dataObject = dataObject; } + @Override public CMSDataObject getDataObject() { return dataObject; } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/DataObjectInfoImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/DataObjectInfoImpl.java index 7a25a97..4099d89 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/DataObjectInfoImpl.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/DataObjectInfoImpl.java @@ -21,7 +21,6 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.api.impl; import at.gv.egovernment.moa.spss.api.common.Content; @@ -30,15 +29,16 @@ import at.gv.egovernment.moa.spss.api.xmlsign.DataObjectInfo; /** * Default implementation of <code>DataObjectInfo</code>. - * + * * @author Fatemeh Philippi * @version $Id$ */ public class DataObjectInfoImpl implements DataObjectInfo { /** The signature structure type. */ private String stucture; - /** Whether a reference will be placed in the signature itself or in the - * manifest */ + /** + * Whether a reference will be placed in the signature itself or in the manifest + */ private boolean childOfManifest; /** The data object to be signed. */ private Content dataObject; @@ -47,13 +47,14 @@ public class DataObjectInfoImpl implements DataObjectInfo { /** * Sets the signature structure type. - * + * * @param structure The signature structure type. */ public void setStructure(String structure) { this.stucture = structure; } + @Override public String getStructure() { return stucture; } @@ -61,41 +62,44 @@ public class DataObjectInfoImpl implements DataObjectInfo { /** * Sets whether a reference will be placed in the signature itself or in the * manifest. - * - * @param childOfManifest Whether to put the reference in the signature of - * in the manifest. + * + * @param childOfManifest Whether to put the reference in the signature of in + * the manifest. */ public void setChildOfManifest(boolean childOfManifest) { this.childOfManifest = childOfManifest; } + @Override public boolean isChildOfManifest() { return childOfManifest; } /** * Sets the data object to be signed. - * + * * @param dataObject The data object to be signed. */ public void setDataObject(Content dataObject) { this.dataObject = dataObject; } + @Override public Content getDataObject() { return dataObject; } /** * Sets additional information for the transformations. - * + * * @param profile The profile containing additional information for the - * transformations. + * transformations. */ public void setCreateTransformsInfoProfile(CreateTransformsInfoProfile profile) { this.createTransformsInfoProfile = profile; } + @Override public CreateTransformsInfoProfile getCreateTransformsInfoProfile() { return createTransformsInfoProfile; } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/ElementSelectorImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/ElementSelectorImpl.java index 7de0660..e505440 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/ElementSelectorImpl.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/ElementSelectorImpl.java @@ -21,7 +21,6 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.api.impl; import java.util.HashMap; @@ -31,7 +30,7 @@ import at.gv.egovernment.moa.spss.api.common.ElementSelector; /** * Default implementation of <code>ElementSelector</code>. - * + * * @author Fatemeh Philippi * @version $Id$ */ @@ -43,27 +42,29 @@ public class ElementSelectorImpl implements ElementSelector { /** * Sets the XPath expression pointing to the element. - * + * * @param xPathExpression XPath expression pointing to the element. */ public void setXPathExpression(String xPathExpression) { this.xPathExpression = xPathExpression; } + @Override public String getXPathExpression() { return xPathExpression; } /** * Sets namespace declarations to apply for evaluating the XPath. - * - * @param namespaceDeclarations The namespace declarations to apply for - * evaluating the XPath. + * + * @param namespaceDeclarations The namespace declarations to apply for + * evaluating the XPath. */ public void setNamespaceDeclarations(Map namespaceDeclarations) { this.namespaceDeclarations = namespaceDeclarations; } + @Override public Map getNamespaceDeclarations() { return namespaceDeclarations; } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/EnvelopedSignatureTransformImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/EnvelopedSignatureTransformImpl.java index 121037f..40a579b 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/EnvelopedSignatureTransformImpl.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/EnvelopedSignatureTransformImpl.java @@ -21,20 +21,19 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.api.impl; import at.gv.egovernment.moa.spss.api.common.EnvelopedSignatureTransform; /** * Default implementation of <code>EnvelopedSignatureTransform</code>. - * + * * @author Fatemeh Philippi * @version $Id$ */ public class EnvelopedSignatureTransformImpl - extends TransformImpl - implements EnvelopedSignatureTransform { + extends TransformImpl + implements EnvelopedSignatureTransform { /** * Create a <code>EnvelopedSignatureTransformImpl</code>. diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/ErrorResponseImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/ErrorResponseImpl.java index a2a59a7..e55b69b 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/ErrorResponseImpl.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/ErrorResponseImpl.java @@ -21,14 +21,13 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.api.impl; import at.gv.egovernment.moa.spss.api.xmlsign.ErrorResponse; /** * Default implementation of <code>ErrorResponse</code>. - * + * * @author Fatemeh Philippi * @version $Id$ */ @@ -40,35 +39,38 @@ public class ErrorResponseImpl implements ErrorResponse { /** * Sets the error code. - * + * * @param code The error code. */ public void setErrorCode(int code) { this.code = code; } + @Override public int getErrorCode() { return code; } /** * Sets the verbose error information. - * + * * @param info The verbose error information. */ public void setInfo(String info) { this.info = info; } + @Override public String getInfo() { return info; } /** * Gets the response type. - * - * @return ERROR_RESPONSE + * + * @return ERROR_RESPONSE */ + @Override public int getResponseType() { return ERROR_RESPONSE; } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/ExclusiveCanonicalizationTransformImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/ExclusiveCanonicalizationTransformImpl.java index eea09c0..fd0e276 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/ExclusiveCanonicalizationTransformImpl.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/ExclusiveCanonicalizationTransformImpl.java @@ -21,7 +21,6 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.api.impl; import java.util.ArrayList; @@ -32,22 +31,22 @@ import at.gv.egovernment.moa.spss.api.common.ExclusiveCanonicalizationTransform; /** * Default implementation of <code>ExclusiveCanonicalizationTransform</code>. - * + * * @author Patrick Peck * @version $Id$ */ public class ExclusiveCanonicalizationTransformImpl - extends TransformImpl - implements ExclusiveCanonicalizationTransform { + extends TransformImpl + implements ExclusiveCanonicalizationTransform { /** The namespaces to treat according to canonical XML. */ private List inclusiveNamespacePrefixes; - - /** + + /** * Create a <code>ExclusiveCanonicalizationTransformImpl</code> object. - * + * * @param algorithmURI The algorithm URI identifying the transformation - * algorithm. + * algorithm. */ public ExclusiveCanonicalizationTransformImpl(String algorithmURI) { setAlgorithmURI(algorithmURI); @@ -55,16 +54,18 @@ public class ExclusiveCanonicalizationTransformImpl /** * Sets the namespaces to treat according to canonical XML. - * @param inclusiveNamespacePrefixes The namespaces to treat according to - * canonical XML. + * + * @param inclusiveNamespacePrefixes The namespaces to treat according to + * canonical XML. */ public void setInclusiveNamespacePrefixes(List inclusiveNamespacePrefixes) { this.inclusiveNamespacePrefixes = - inclusiveNamespacePrefixes != null - ? Collections.unmodifiableList(new ArrayList(inclusiveNamespacePrefixes)) - : null; + inclusiveNamespacePrefixes != null + ? Collections.unmodifiableList(new ArrayList(inclusiveNamespacePrefixes)) + : null; } + @Override public List getInclusiveNamespacePrefixes() { return inclusiveNamespacePrefixes; } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/ExtendedCertificateCheckResultImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/ExtendedCertificateCheckResultImpl.java index f36760c..21db8e0 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/ExtendedCertificateCheckResultImpl.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/ExtendedCertificateCheckResultImpl.java @@ -3,42 +3,42 @@ package at.gv.egovernment.moa.spss.api.impl; import at.gv.egovernment.moa.spss.api.common.ExtendedCertificateCheckResult; public class ExtendedCertificateCheckResultImpl implements ExtendedCertificateCheckResult { - private int majorCode; - private String majorInfo; - - private int minorCode; - private String minorInfo; - - public ExtendedCertificateCheckResultImpl(int majorCode, String majorInfo) { - this(majorCode, majorInfo, -1, ""); - } - - public ExtendedCertificateCheckResultImpl(int majorCode, String majorInfo, - int minorCode, String minorInfo) { - this.majorCode = majorCode; - this.majorInfo = majorInfo; - this.minorCode = minorCode; - this.minorInfo = minorInfo; - } - - @Override - public int getMajorCode() { - return this.majorCode; - } - - @Override - public String getMajorInfo() { - return this.majorInfo; - } - - @Override - public int getMinorCode() { - return this.minorCode; - } - - @Override - public String getMinorInfo() { - return this.minorInfo; - } + private final int majorCode; + private final String majorInfo; + + private final int minorCode; + private final String minorInfo; + + public ExtendedCertificateCheckResultImpl(int majorCode, String majorInfo) { + this(majorCode, majorInfo, -1, ""); + } + + public ExtendedCertificateCheckResultImpl(int majorCode, String majorInfo, + int minorCode, String minorInfo) { + this.majorCode = majorCode; + this.majorInfo = majorInfo; + this.minorCode = minorCode; + this.minorInfo = minorInfo; + } + + @Override + public int getMajorCode() { + return this.majorCode; + } + + @Override + public String getMajorInfo() { + return this.majorInfo; + } + + @Override + public int getMinorCode() { + return this.minorCode; + } + + @Override + public String getMinorInfo() { + return this.minorInfo; + } } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/InputDataBinaryImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/InputDataBinaryImpl.java index 27f6f85..a806f16 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/InputDataBinaryImpl.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/InputDataBinaryImpl.java @@ -21,7 +21,6 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.api.impl; import java.io.InputStream; @@ -32,92 +31,104 @@ import at.gv.egovernment.moa.spss.api.common.ContentBinary; import at.gv.egovernment.moa.spss.api.common.InputData; /** - * Content wrapper decorating a binary content with two additional attributes + * Content wrapper decorating a binary content with two additional attributes * needed for returning <code>HashInputData</code> and <code>ReferenceInputData * </code> information as part of <code>VerifyXMLSignatureResponse</code>. - * + * * @author Gregor Karlinger - * + * * @version $Id$ */ -public class InputDataBinaryImpl implements ContentBinary, InputData -{ +public class InputDataBinaryImpl implements ContentBinary, InputData { /** * The wrapped <code>Content</code>. */ protected ContentBinary wrapped_; - + /** - * This attribute signals what kind of container the XMLDSIG <code>Reference</code> - * this <code>InputData</code> belongs to is part of. + * This attribute signals what kind of container the XMLDSIG + * <code>Reference</code> this <code>InputData</code> belongs to is part of. */ protected String partOf_; - + /** * If this <code>InputData</code> belongs to an XMLDSIG <code>Reference</code> * being part of either a XMLDSIGManifest or a SignatureManifest, this attribute - * (a positive int) signals the particular <code>Reference</code> of the XMLDSIG + * (a positive int) signals the particular <code>Reference</code> of the XMLDSIG * <code>SignedInfo</code> referring to the XMLDSIGManifest or SignatureManifest * respectively. */ protected int referringReferenceNumber_; - + + protected String hashAlg = null; + /** * Creates a new instance. - * - * @param wrapped The wrapped <code>Content</code>. Must be of type {@link Content#BINARY_CONTENT}. - * - * @param partOf see {@link InputData} - * + * + * @param wrapped The wrapped <code>Content</code>. Must be of + * type {@link Content#BINARY_CONTENT}. + * + * @param partOf see {@link InputData} + * * @param referringReferenceNumber see {@link InputData} + * + * @param hashAlg see {@link InputData} */ - public InputDataBinaryImpl(Content wrapped, String partOf, int referringReferenceNumber) throws MOARuntimeException - { - if (wrapped.getContentType() != Content.BINARY_CONTENT) throw new MOARuntimeException("9901", null); - + public InputDataBinaryImpl(Content wrapped, String partOf, int referringReferenceNumber, String hashAlg) + throws MOARuntimeException { + if (wrapped.getContentType() != Content.BINARY_CONTENT) { + throw new MOARuntimeException("9901", null); + } + wrapped_ = (ContentBinary) wrapped; - partOf_ = partOf; + partOf_ = partOf; referringReferenceNumber_ = referringReferenceNumber; + this.hashAlg = hashAlg; } - - /** + + /** * @see at.gv.egovernment.moa.spss.api.common.Content#getContentType() */ - public int getContentType() - { + @Override + public int getContentType() { return wrapped_.getContentType(); } /** * @see at.gv.egovernment.moa.spss.api.common.Content#getReference() */ - public String getReference() - { + @Override + public String getReference() { return wrapped_.getReference(); } /** * @see at.gv.egovernment.moa.spss.api.common.ContentBinary#getBinaryContent() */ - public InputStream getBinaryContent() - { + @Override + public InputStream getBinaryContent() { return wrapped_.getBinaryContent(); } /** * @see at.gv.egovernment.moa.spss.api.common.InputData#getPartOf() */ - public String getPartOf() - { + @Override + public String getPartOf() { return partOf_; } /** * @see at.gv.egovernment.moa.spss.api.common.InputData#getReferringReferenceNumber() */ - public int getReferringReferenceNumber() - { + @Override + public int getReferringReferenceNumber() { return referringReferenceNumber_; } + @Override + public String getHashAlgorithm() { + return this.hashAlg; + } + } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/InputDataXMLImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/InputDataXMLImpl.java index 432e1a2..fd97bf8 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/InputDataXMLImpl.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/InputDataXMLImpl.java @@ -21,7 +21,6 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.api.impl; import org.w3c.dom.NodeList; @@ -32,92 +31,103 @@ import at.gv.egovernment.moa.spss.api.common.ContentXML; import at.gv.egovernment.moa.spss.api.common.InputData; /** - * Content wrapper decorating an XML content with two additional attributes + * Content wrapper decorating an XML content with two additional attributes * needed for returning <code>HashInputData</code> and <code>ReferenceInputData * </code> information as part of <code>VerifyXMLSignatureResponse</code>. - * + * * @author Gregor Karlinger - * + * * @version $Id$ */ -public class InputDataXMLImpl implements ContentXML, InputData -{ +public class InputDataXMLImpl implements ContentXML, InputData { /** * The wrapped <code>ContentXML</code>. */ protected ContentXML wrapped_; - + /** - * This attribute signals what kind of container the XMLDSIG <code>Reference</code> - * this <code>InputData</code> belongs to is part of. + * This attribute signals what kind of container the XMLDSIG + * <code>Reference</code> this <code>InputData</code> belongs to is part of. */ protected String partOf_; - + /** * If this <code>InputData</code> belongs to an XMLDSIG <code>Reference</code> * being part of either a XMLDSIGManifest or a SignatureManifest, this attribute - * (a positive int) signals the particular <code>Reference</code> of the XMLDSIG + * (a positive int) signals the particular <code>Reference</code> of the XMLDSIG * <code>SignedInfo</code> referring to the XMLDSIGManifest or SignatureManifest * respectively. */ protected int referringReferenceNumber_; - + + protected String hashAlg = null; + /** * Creates a new instance. - * - * @param wrapped The wrapped <code>ContentBinary</code>. Must be of type {@link Content#XML_CONTENT}. - * - * @param partOf see {@link InputData} - * + * + * @param wrapped The wrapped <code>ContentBinary</code>. Must + * be of type {@link Content#XML_CONTENT}. + * + * @param partOf see {@link InputData} + * * @param referringReferenceNumber see {@link InputData} + * + * @param hashAlg see {@link InputData} */ - public InputDataXMLImpl(Content wrapped, String partOf, int referringReferenceNumber) - { - if (wrapped.getContentType() != Content.XML_CONTENT) throw new MOARuntimeException("9901", null); + public InputDataXMLImpl(Content wrapped, String partOf, int referringReferenceNumber, String hashAlg) { + if (wrapped.getContentType() != Content.XML_CONTENT) { + throw new MOARuntimeException("9901", null); + } wrapped_ = (ContentXML) wrapped; - partOf_ = partOf; + partOf_ = partOf; referringReferenceNumber_ = referringReferenceNumber; + this.hashAlg = hashAlg; } - - /** + + /** * @see at.gv.egovernment.moa.spss.api.common.Content#getContentType() */ - public int getContentType() - { + @Override + public int getContentType() { return wrapped_.getContentType(); } /** * @see at.gv.egovernment.moa.spss.api.common.Content#getReference() */ - public String getReference() - { + @Override + public String getReference() { return wrapped_.getReference(); } /** * @see at.gv.egovernment.moa.spss.api.common.ContentXML#getXMLContent() */ - public NodeList getXMLContent() - { + @Override + public NodeList getXMLContent() { return wrapped_.getXMLContent(); } /** * @see at.gv.egovernment.moa.spss.api.common.InputData#getPartOf() */ - public String getPartOf() - { + @Override + public String getPartOf() { return partOf_; } /** * @see at.gv.egovernment.moa.spss.api.common.InputData#getReferringReferenceNumber() */ - public int getReferringReferenceNumber() - { + @Override + public int getReferringReferenceNumber() { return referringReferenceNumber_; } + @Override + public String getHashAlgorithm() { + return this.hashAlg; + } + } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/ManifestRefsCheckResultImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/ManifestRefsCheckResultImpl.java index e5b7f40..752fec0 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/ManifestRefsCheckResultImpl.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/ManifestRefsCheckResultImpl.java @@ -21,7 +21,6 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.api.impl; import at.gv.egovernment.moa.spss.api.xmlverify.ManifestRefsCheckResult; @@ -29,7 +28,7 @@ import at.gv.egovernment.moa.spss.api.xmlverify.ManifestRefsCheckResultInfo; /** * Default implementation of <code>ManifestRefsCheckResult</code>. - * + * * @author Fatemeh Philippi * @version $Id$ */ @@ -41,26 +40,28 @@ public class ManifestRefsCheckResultImpl implements ManifestRefsCheckResult { /** * Sets the check code. - * + * * @param code A numerical representation of the result of the manifest check. */ public void setCode(int code) { this.code = code; } + @Override public int getCode() { return code; } /** * Sets a reference to the manifest. - * + * * @param info The reference to the manifest. */ public void setInfo(ManifestRefsCheckResultInfo info) { this.info = info; } + @Override public ManifestRefsCheckResultInfo getInfo() { return info; } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/ManifestRefsCheckResultInfoImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/ManifestRefsCheckResultInfoImpl.java index f0ef1c5..68405a1 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/ManifestRefsCheckResultInfoImpl.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/ManifestRefsCheckResultInfoImpl.java @@ -21,34 +21,37 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.api.impl; import at.gv.egovernment.moa.spss.api.xmlverify.ManifestRefsCheckResultInfo; /** * Default implementation of <code>ManifestRefsCheckResultInfo</code>. - * + * * @author Fatemeh Philippi * @version $Id$ */ public class ManifestRefsCheckResultInfoImpl - extends ReferencesCheckResultInfoImpl - implements ManifestRefsCheckResultInfo { + extends ReferencesCheckResultInfoImpl + implements ManifestRefsCheckResultInfo { - /** The position of the signature reference containing the reference to the - * manifest being described by this object.*/ + /** + * The position of the signature reference containing the reference to the + * manifest being described by this object. + */ private int referringSignatureReference; /** - * Sets the position of the signature reference containing the reference to - * the manifest being described by this object. + * Sets the position of the signature reference containing the reference to the + * manifest being described by this object. + * * @param referringSignatureReference The position of the signature reference. */ public void setReferringSignatureReference(int referringSignatureReference) { this.referringSignatureReference = referringSignatureReference; } + @Override public int getReferringSignatureReference() { return referringSignatureReference; } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/MetaInfoImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/MetaInfoImpl.java index e3a06c6..9f6d882 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/MetaInfoImpl.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/MetaInfoImpl.java @@ -21,7 +21,6 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.api.impl; import org.w3c.dom.NodeList; @@ -30,6 +29,7 @@ import at.gv.egovernment.moa.spss.api.common.MetaInfo; /** * Default implementation of <code>MetaInfo</code>. + * * @author Fatemeh Philippi * @version $Id$ */ @@ -45,55 +45,58 @@ public class MetaInfoImpl implements MetaInfo { /** * Sets the MIME type. - * + * * @param mimeType The MIME type to set. */ public void setMimeType(String mimeType) { this.mimeType = mimeType; } + @Override public String getMimeType() { return mimeType; } /** * Sets the URI pointing to a description of the content. - * + * * @param description The URI pointing to a description of the content. */ public void setDescription(String description) { this.description = description; } + @Override public String getDescription() { return description; } /** * Sets descriptive XML content. - * + * * @param anyElements The elements to set. */ public void setAnyElements(NodeList anyElements) { - this.anyElements = anyElements; + this.anyElements = anyElements; } + @Override public NodeList getAnyElements() { return anyElements; } /** * Sets the XML signature creation type information. - * + * * @param type the XML signature creation type information to set. */ public void setType(String type) { this.type = type; } + @Override public String getType() { return type; } - } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/ReferenceInfoImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/ReferenceInfoImpl.java index 8bd81a7..c9e44f1 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/ReferenceInfoImpl.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/ReferenceInfoImpl.java @@ -21,7 +21,6 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.api.impl; import java.util.ArrayList; @@ -32,7 +31,7 @@ import at.gv.egovernment.moa.spss.api.xmlverify.ReferenceInfo; /** * Default implementation of <code>ReferenceInfo</code>. - * + * * @author Fatemeh Philippi * @version $Id$ */ @@ -41,20 +40,21 @@ public class ReferenceInfoImpl implements ReferenceInfo { private List verifyTransformsInfoProfiles; /** - * Sets the transforms profile used for verifying the transforms contained - * in the signature. - * + * Sets the transforms profile used for verifying the transforms contained in + * the signature. + * * @param verifyTransformsInfoProfiles The profiles containing the transforms - * allowed in the signature. + * allowed in the signature. */ public void setVerifyTransformsInfoProfiles(List verifyTransformsInfoProfiles) { this.verifyTransformsInfoProfiles = - verifyTransformsInfoProfiles != null - ? Collections.unmodifiableList( - new ArrayList(verifyTransformsInfoProfiles)) - : null; + verifyTransformsInfoProfiles != null + ? Collections.unmodifiableList( + new ArrayList(verifyTransformsInfoProfiles)) + : null; } + @Override public List getVerifyTransformsInfoProfiles() { return verifyTransformsInfoProfiles; } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/ReferencesCheckResultImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/ReferencesCheckResultImpl.java index d4cbab0..02e8634 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/ReferencesCheckResultImpl.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/ReferencesCheckResultImpl.java @@ -21,7 +21,6 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.api.impl; import at.gv.egovernment.moa.spss.api.xmlverify.ReferencesCheckResult; @@ -29,7 +28,7 @@ import at.gv.egovernment.moa.spss.api.xmlverify.ReferencesCheckResultInfo; /** * Default implementation of <code>ReferencesCheckResult</code>. - * + * * @author Patrick Peck * @version $Id$ */ @@ -41,30 +40,31 @@ public class ReferencesCheckResultImpl implements ReferencesCheckResult { /** * Sets the check code. - * - * @param code A numerical representation of the result of the reference - * check. + * + * @param code A numerical representation of the result of the reference check. */ public void setCode(int code) { this.code = code; } - + + @Override public int getCode() { return code; } /** * Sets additional information about the reference check. - * - * @param manifestRefsCheckResultInfo Additional information about the - * reference check. + * + * @param manifestRefsCheckResultInfo Additional information about the reference + * check. */ public void setInfo(ReferencesCheckResultInfo manifestRefsCheckResultInfo) { this.info = manifestRefsCheckResultInfo; } - + + @Override public ReferencesCheckResultInfo getInfo() { return info; - } + } } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/ReferencesCheckResultInfoImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/ReferencesCheckResultInfoImpl.java index a696988..a9073ed 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/ReferencesCheckResultInfoImpl.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/ReferencesCheckResultInfoImpl.java @@ -21,7 +21,6 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.api.impl; import org.w3c.dom.NodeList; @@ -30,39 +29,42 @@ import at.gv.egovernment.moa.spss.api.xmlverify.ReferencesCheckResultInfo; /** * Default implementation of <code>ReferencesCheckResultInfo</code>. - * + * * @author Patrick Peck * @version $Id$ */ public class ReferencesCheckResultInfoImpl - implements ReferencesCheckResultInfo { + implements ReferencesCheckResultInfo { /** Additional information about the references check. */ private NodeList anyOtherInfo; /** The indexes of the failed references. */ private int[] failedReferences = new int[0]; - + /** * Sets additional information about the references check. + * * @param anyOtherInfo Additional information about the references check. */ public void setAnyOtherInfo(NodeList anyOtherInfo) { this.anyOtherInfo = anyOtherInfo; } - + + @Override public NodeList getAnyOtherInfo() { return anyOtherInfo; } /** * Sets the indexes of the failed references. - * + * * @param failedReferences The indexes of the failed references. */ public void setFailedReferences(int[] failedReferences) { this.failedReferences = failedReferences; } + @Override public int[] getFailedReferences() { return failedReferences; } 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..0831aec 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 @@ -80,485 +80,577 @@ import at.gv.egovernment.moa.spss.api.xmlverify.VerifyXMLSignatureResponse; /** * Default implementation of <code>SPSSFactory</code>. - * + * * @author Patrick Peck * @version $Id$ */ public class SPSSFactoryImpl extends SPSSFactory { - public CreateXMLSignatureRequest createCreateXMLSignatureRequest(String keyIdentifier, List singleSignatureInfos) { - CreateXMLSignatureRequestImpl createXMLSignatureRequest = new CreateXMLSignatureRequestImpl(); - createXMLSignatureRequest.setKeyIdentifier(keyIdentifier); - createXMLSignatureRequest.setSingleSignatureInfos(singleSignatureInfos); - return createXMLSignatureRequest; - } - - public CreateCMSSignatureRequest createCreateCMSSignatureRequest(String keyIdentifier, List singleSignatureInfos) { - CreateCMSSignatureRequestImpl createCMSSignatureRequest = new CreateCMSSignatureRequestImpl(); - createCMSSignatureRequest.setKeyIdentifier(keyIdentifier); - createCMSSignatureRequest.setSingleSignatureInfos(singleSignatureInfos); - return createCMSSignatureRequest; - - } - - public CreateCMSSignatureResponse createCreateCMSSignatureResponse(List responseElements) { - CreateCMSSignatureResponseImpl createCMSSignatureResponse = new CreateCMSSignatureResponseImpl(); - createCMSSignatureResponse.setResponseElements(responseElements); - return createCMSSignatureResponse; - } - - public CMSSignatureResponse createCMSSignatureResponse(String base64value) { - CMSSignatureResponseImpl cmsSignatureResponse = new CMSSignatureResponseImpl(); - cmsSignatureResponse.setCMSSignature(base64value); - - return cmsSignatureResponse; - } - - public SingleSignatureInfo createSingleSignatureInfo(List dataObjectInfos, CreateSignatureInfo createSignatureInfo, - boolean securityLayerConform) { - SingleSignatureInfoImpl singleSignatureInfo = new SingleSignatureInfoImpl(); - singleSignatureInfo.setDataObjectInfos(dataObjectInfos); - singleSignatureInfo.setCreateSignatureInfo(createSignatureInfo); - singleSignatureInfo.setSecurityLayerConform(securityLayerConform); - return singleSignatureInfo; - } - - public at.gv.egovernment.moa.spss.api.cmssign.SingleSignatureInfo createSingleSignatureInfoCMS( - at.gv.egovernment.moa.spss.api.cmssign.DataObjectInfo dataObjectInfo, boolean securityLayerConform) { - SingleSignatureInfoCMSImpl singleSignatureInfo = new SingleSignatureInfoCMSImpl(); - singleSignatureInfo.setDataObjectInfo(dataObjectInfo); - singleSignatureInfo.setSecurityLayerConform(securityLayerConform); - return singleSignatureInfo; - } - - public DataObjectInfo createDataObjectInfo(String structure, boolean childOfManifest, Content dataObject, - CreateTransformsInfoProfile createTransformsInfoProfile) { - DataObjectInfoImpl dataObjectInfo = new DataObjectInfoImpl(); - dataObjectInfo.setStructure(structure); - dataObjectInfo.setChildOfManifest(childOfManifest); - dataObjectInfo.setDataObject(dataObject); - dataObjectInfo.setCreateTransformsInfoProfile(createTransformsInfoProfile); - return dataObjectInfo; - } - - public at.gv.egovernment.moa.spss.api.cmssign.DataObjectInfo createDataObjectInfo(String structure, - CMSDataObject dataObject) { - DataObjectInfoCMSImpl dataObjectInfo = new DataObjectInfoCMSImpl(); - dataObjectInfo.setStructure(structure); - dataObjectInfo.setDataObject(dataObject); - return dataObjectInfo; - } - - public CreateTransformsInfoProfile createCreateTransformsInfoProfile(String profileID) { - - CreateTransformsInfoProfileIDImpl createTransformsInfoProfile = new CreateTransformsInfoProfileIDImpl(); - createTransformsInfoProfile.setCreateTransformsInfoProfileID(profileID); - return createTransformsInfoProfile; - } - - public CreateTransformsInfoProfile createCreateTransformsInfoProfile(CreateTransformsInfo transformsInfo, - List supplements) { - CreateTransformsInfoProfileExplicitImpl createTransformsInfoProfile = new CreateTransformsInfoProfileExplicitImpl(); - createTransformsInfoProfile.setCreateTransformsInfo(transformsInfo); - createTransformsInfoProfile.setSupplements(supplements); - return createTransformsInfoProfile; - } - - public CreateTransformsInfo createCreateTransformsInfo(List transforms, MetaInfo finalDataMetaInfo) { - CreateTransformsInfoImpl createTransformsInfo = new CreateTransformsInfoImpl(); - - createTransformsInfo.setTransforms(transforms); - createTransformsInfo.setFinalDataMetaInfo(finalDataMetaInfo); - return createTransformsInfo; - } - - public CreateSignatureInfo createCreateSignatureInfo(Content createSignatureEnvironment, - CreateSignatureEnvironmentProfile createSignatureEnvironmentProfile) { - CreateSignatureInfoImpl createSignatureInfo = new CreateSignatureInfoImpl(); - createSignatureInfo.setCreateSignatureEnvironment(createSignatureEnvironment); - createSignatureInfo.setCreateSignatureEnvironmentProfile(createSignatureEnvironmentProfile); - return createSignatureInfo; - } - - public CreateSignatureEnvironmentProfile createCreateSignatureEnvironmentProfile( - CreateSignatureLocation createSignatureLocation, List supplements) { - CreateSignatureEnvironmentProfileExplicitImpl createSignatureEnvironmentProfile = new CreateSignatureEnvironmentProfileExplicitImpl(); - createSignatureEnvironmentProfile.setCreateSignatureLocation(createSignatureLocation); - createSignatureEnvironmentProfile.setSupplements(supplements); - return createSignatureEnvironmentProfile; - } - - public CreateSignatureLocation createCreateSignatureLocation(String signatureLocationXPath, - int signatureLocationIndex, Map namespaceDeclarations) { - CreateSignatureLocationImpl createSignatureLocation = new CreateSignatureLocationImpl(); - createSignatureLocation.setIndex(signatureLocationIndex); - createSignatureLocation.setNamespaceDeclarations(namespaceDeclarations); - createSignatureLocation.setXPathExpression(signatureLocationXPath); - return createSignatureLocation; - } - - public CreateSignatureEnvironmentProfile createCreateSignatureEnvironmentProfile(String profileID) { - CreateSignatureEnvironmentProfileIDImpl createSignatureEnvironmentProfile = new CreateSignatureEnvironmentProfileIDImpl(); - createSignatureEnvironmentProfile.setCreateSignatureEnvironmentProfileID(profileID); - return createSignatureEnvironmentProfile; - } - - public CreateXMLSignatureResponse createCreateXMLSignatureResponse(List responseElements) { - CreateXMLSignatureResponseImpl createXMLSignatureResponse = new CreateXMLSignatureResponseImpl(); - createXMLSignatureResponse.setResponseElements(responseElements); - return createXMLSignatureResponse; - } - - public SignatureEnvironmentResponse createSignatureEnvironmentResponse(Element signatureEnvironment) { - SignatureEnvironmentResponseImpl signatureEnvironmentResponse = new SignatureEnvironmentResponseImpl(); - signatureEnvironmentResponse.setSignatureEnvironment(signatureEnvironment); - return signatureEnvironmentResponse; - } - - public ErrorResponse createErrorResponse(int code, String info) { - ErrorResponseImpl errorResponse = new ErrorResponseImpl(); - errorResponse.setErrorCode(code); - errorResponse.setInfo(info); - return errorResponse; - } - - public VerifyCMSSignatureRequest createVerifyCMSSignatureRequest(int[] signatories, Date dateTime, - InputStream cmsSignature, CMSDataObject dataObject, String trustProfileID, boolean pdf) { - return this.createVerifyCMSSignatureRequest(signatories, dateTime, cmsSignature, dataObject, trustProfileID, pdf, false); - } - - public VerifyCMSSignatureRequest createVerifyCMSSignatureRequest(int[] signatories, Date dateTime, - InputStream cmsSignature, CMSDataObject dataObject, String trustProfileID, boolean pdf, boolean extended) { - VerifyCMSSignatureRequestImpl verifyCMSSignatureRequest = new VerifyCMSSignatureRequestImpl(); - verifyCMSSignatureRequest.setDateTime(dateTime); - verifyCMSSignatureRequest.setCMSSignature(cmsSignature); - verifyCMSSignatureRequest.setDataObject(dataObject); - verifyCMSSignatureRequest.setTrustProfileId(trustProfileID); - verifyCMSSignatureRequest.setSignatories(signatories); - verifyCMSSignatureRequest.setPDF(pdf); - verifyCMSSignatureRequest.setExtended(extended); - return verifyCMSSignatureRequest; - } - - public CMSDataObject createCMSDataObject(MetaInfo metaInfo, CMSContent content, BigDecimal excludeByteRangeFrom, - BigDecimal excludeByteRangeTo) { - - CMSDataObjectImpl cmsDataObject = new CMSDataObjectImpl(); - cmsDataObject.setMetaInfo(metaInfo); - cmsDataObject.setContent(content); - cmsDataObject.setExcludeByteRangeFrom(excludeByteRangeFrom); - cmsDataObject.setExcludeByteRangeTo(excludeByteRangeTo); - - return cmsDataObject; - } - - public CMSContent createCMSContent(InputStream binaryContent) { - CMSContentExplicitImpl cmsContent = new CMSContentExplicitImpl(); - - cmsContent.setBinaryContent(binaryContent); - return cmsContent; - } - - public CMSContent createCMSContent(String referenceURI) { - CMSContentReferenceImpl cmsContent = new CMSContentReferenceImpl(); - - cmsContent.setReference(referenceURI); - return cmsContent; - } - - public CMSDataObject createCMSDataObject(MetaInfo metaInfo, String referenceURI) { - CMSDataObjectImpl cmsDataObject = new CMSDataObjectImpl(); - CMSContentReferenceImpl cmsContent = new CMSContentReferenceImpl(); - cmsDataObject.setMetaInfo(metaInfo); - cmsContent.setReference(referenceURI); - return cmsDataObject; - } - - public VerifyCMSSignatureResponse createVerifyCMSSignatureResponse(List responseElements) { - VerifyCMSSinatureResponseImpl verifyCMSSignatureResponse = new VerifyCMSSinatureResponseImpl(); - verifyCMSSignatureResponse.setResponseElements(responseElements); - return verifyCMSSignatureResponse; - } - - public VerifyCMSSignatureResponseElement createVerifyCMSSignatureResponseElement(SignerInfo signerInfo, - CheckResult signatureCheck, CheckResult certificateCheck, List adesResult, - ExtendedCertificateCheckResult extendedCertificateCheckResult) { - VerifyCMSSignatureResponseElementImpl verifyCMSSignatureResponseElement = new VerifyCMSSignatureResponseElementImpl(); - verifyCMSSignatureResponseElement.setSignerInfo(signerInfo); - verifyCMSSignatureResponseElement.setSignatureCheck(signatureCheck); - verifyCMSSignatureResponseElement.setCertificateCheck(certificateCheck); - verifyCMSSignatureResponseElement.setAdESFormResults(adesResult); - verifyCMSSignatureResponseElement.setExtendedCertificateCheck(extendedCertificateCheckResult); - return verifyCMSSignatureResponseElement; - } - - public VerifyXMLSignatureRequest createVerifyXMLSignatureRequest(Date dateTime, - VerifySignatureInfo verifySignatureInfo, List supplementProfiles, - SignatureManifestCheckParams signatureManifestParams, boolean returnHashInputData, String trustProfileID) { - return this.createVerifyXMLSignatureRequest(dateTime, verifySignatureInfo, supplementProfiles, - signatureManifestParams, returnHashInputData, trustProfileID, false); - } - - public VerifySignatureInfo createVerifySignatureInfo(Content verifySignatureEnvironment, - VerifySignatureLocation verifySignatureLocation) { - VerifySignatureInfoImpl verifySignatureInfo = new VerifySignatureInfoImpl(); - verifySignatureInfo.setVerifySignatureEnvironment(verifySignatureEnvironment); - verifySignatureInfo.setVerifySignatureLocation(verifySignatureLocation); - return verifySignatureInfo; - } - - public VerifySignatureLocation createVerifySignatureLocation(String xPathExpression, Map namespaceDeclarations) { - VerifySignatureLocationImpl verifySignatureLocation = new VerifySignatureLocationImpl(); - verifySignatureLocation.setXPathExpression(xPathExpression); - verifySignatureLocation.setNamespaceDeclarations(namespaceDeclarations); - return verifySignatureLocation; - } - - public SupplementProfile createSupplementProfile(String profileID) { - SupplementProfileIDImpl supplementProfileID = new SupplementProfileIDImpl(); - supplementProfileID.setSupplementProfileID(profileID); - return supplementProfileID; - } - - public SupplementProfile createSupplementProfile(XMLDataObjectAssociation supplementProfile) { - SupplementProfileExplicitImpl supplementProfileExplicit = new SupplementProfileExplicitImpl(); - supplementProfileExplicit.setSupplementProfile(supplementProfile); - return supplementProfileExplicit; - } - - public SignatureManifestCheckParams createSignatureManifestCheckParams(List referenceInfos, - boolean returnReferenceInputData) { - SignatureManifestCheckParamsImpl signatureManifestCheckParams = new SignatureManifestCheckParamsImpl(); - signatureManifestCheckParams.setReferenceInfos(referenceInfos); - signatureManifestCheckParams.setReturnReferenceInputData(returnReferenceInputData); - return signatureManifestCheckParams; - } - - public ReferenceInfo createReferenceInfo(List verifyTransformsInfoProfiles) { - ReferenceInfoImpl referenceInfo = new ReferenceInfoImpl(); - referenceInfo.setVerifyTransformsInfoProfiles(verifyTransformsInfoProfiles); - return referenceInfo; - } - - public VerifyTransformsInfoProfile createVerifyTransformsInfoProfile(List transforms, List transformParameters) { - VerifyTransformsInfoProfileExplicitImpl verifyTransformsInfoProfile = new VerifyTransformsInfoProfileExplicitImpl(); - - verifyTransformsInfoProfile.setTransforms(transforms); - verifyTransformsInfoProfile.setTransformParameters(transformParameters); - - return verifyTransformsInfoProfile; - } - - public VerifyTransformsInfoProfile createVerifyTransformsInfoProfile(String profileID) { - VerifyTransformsInfoProfileIDImpl verifyTransformsInfoProfile = new VerifyTransformsInfoProfileIDImpl(); - verifyTransformsInfoProfile.setVerifyTransformsInfoProfileID(profileID); - return verifyTransformsInfoProfile; - } - - public TransformParameter createTransformParameter(String URI, String digestMethod, byte[] digestValue) { - TransformPatameterHashImpl transformParameter = new TransformPatameterHashImpl(); - transformParameter.setURI(URI); - transformParameter.setDigestMethod(digestMethod); - transformParameter.setDigestValue(digestValue); - return transformParameter; - } - - public TransformParameter createTransformParameter(String URI, InputStream binaryData) { - TransformParameterBinaryImpl transformParameter = new TransformParameterBinaryImpl(); - transformParameter.setURI(URI); - transformParameter.setBinaryContent(binaryData); - return transformParameter; - } - - public TransformParameter createTransformParameter(String URI) { - TransformParameterURIImpl transformParameter = new TransformParameterURIImpl(); - transformParameter.setURI(URI); - return transformParameter; - } - - public VerifyXMLSignatureResponse createVerifyXMLSignatureResponse(SignerInfo signerInfo, List hashInputDatas, - List referenceInputDatas, ReferencesCheckResult signatureCheck, - ReferencesCheckResult signatureManifestCheck, List xmlDsigManifestChecks, CheckResult certificateCheck, - List adesFormResults, ExtendedCertificateCheckResult extCheckResult) { - VerifyXMLSignatureResponseImpl verifyXMLSignatureResponse = new VerifyXMLSignatureResponseImpl(); - verifyXMLSignatureResponse.setSignerInfo(signerInfo); - verifyXMLSignatureResponse.setHashInputDatas(hashInputDatas); - verifyXMLSignatureResponse.setReferenceInputDatas(referenceInputDatas); - verifyXMLSignatureResponse.setSignatureCheck(signatureCheck); - verifyXMLSignatureResponse.setSignatureManifestCheck(signatureManifestCheck); - verifyXMLSignatureResponse.setXMLDsigManifestChecks(xmlDsigManifestChecks); - verifyXMLSignatureResponse.setCertificateCheck(certificateCheck); - verifyXMLSignatureResponse.setAdESFormResults(adesFormResults); - verifyXMLSignatureResponse.setExtendedCertificateCheck(extCheckResult); - return verifyXMLSignatureResponse; - } - - public ReferencesCheckResult createReferencesCheckResult(int code, ReferencesCheckResultInfo info) { - ReferencesCheckResultImpl referencesCheckResult = new ReferencesCheckResultImpl(); - referencesCheckResult.setCode(code); - referencesCheckResult.setInfo(info); - return referencesCheckResult; - } - - public ReferencesCheckResultInfo createReferencesCheckResultInfo(NodeList anyOtherInfo, int[] failedReferences) { - ReferencesCheckResultInfoImpl referencesCheckResultInfo = new ReferencesCheckResultInfoImpl(); - referencesCheckResultInfo.setAnyOtherInfo(anyOtherInfo); - referencesCheckResultInfo.setFailedReferences(failedReferences); - return referencesCheckResultInfo; - } - - public ManifestRefsCheckResult createManifestRefsCheckResult(int code, ManifestRefsCheckResultInfo info) { - ManifestRefsCheckResultImpl manifestRefsCheckResult = new ManifestRefsCheckResultImpl(); - manifestRefsCheckResult.setCode(code); - manifestRefsCheckResult.setInfo(info); - return manifestRefsCheckResult; - } - - public ManifestRefsCheckResultInfo createManifestRefsCheckResultInfo(NodeList anyOtherInfo, int[] failedReferences, - int referringSigReference) { - ManifestRefsCheckResultInfoImpl manifestRefsCheckResultInfo = new ManifestRefsCheckResultInfoImpl(); - manifestRefsCheckResultInfo.setAnyOtherInfo(anyOtherInfo); - manifestRefsCheckResultInfo.setReferringSignatureReference(referringSigReference); - manifestRefsCheckResultInfo.setFailedReferences(failedReferences); - return manifestRefsCheckResultInfo; - } - - public Content createContent(InputStream binaryData, String referenceURI) { - ContentBinaryImpl content = new ContentBinaryImpl(); - content.setBinaryContent(binaryData); - content.setReference(referenceURI); - return content; - } - - public Content createContent(String locationReferenceURI, String referenceURI) { - ContentLocRefImpl content = new ContentLocRefImpl(); - content.setLocationReferenceURI(locationReferenceURI); - content.setReference(referenceURI); - return content; - } - - public Content createContent(String referenceURI) { - ContentReferenceImpl content = new ContentReferenceImpl(); - content.setReference(referenceURI); - return content; - } - - public Content createContent(NodeList xmlData, String referenceURI) { - ContentXMLImpl content = new ContentXMLImpl(); - content.setXMLContent(xmlData); - content.setReference(referenceURI); - return content; - } - - public XMLDataObjectAssociation createXMLDataObjectAssociation(MetaInfo metaInfo, Content xmlContent) { - XMLDataObjectAssociationImpl xmlDataObjectAssociation = new XMLDataObjectAssociationImpl(); - xmlDataObjectAssociation.setMetaInfo(metaInfo); - xmlDataObjectAssociation.setContent(xmlContent); - return xmlDataObjectAssociation; - } - - public MetaInfo createMetaInfo(String mimeType, String description, NodeList otherInfo, String type) { - MetaInfoImpl metaInfo = new MetaInfoImpl(); - metaInfo.setMimeType(mimeType); - metaInfo.setDescription(description); - metaInfo.setAnyElements(otherInfo); - metaInfo.setType(type); - return metaInfo; - } - - public Transform createCanonicalizationTransform(String algorithmURI) { - CanonicalizationTransformImpl transform = new CanonicalizationTransformImpl(algorithmURI); - return transform; - } - - public Transform createExclusiveCanonicalizationTransform(String algorithmURI, List inclusiveNamespacePrefixes) { - ExclusiveCanonicalizationTransformImpl transform = new ExclusiveCanonicalizationTransformImpl(algorithmURI); - transform.setInclusiveNamespacePrefixes(inclusiveNamespacePrefixes); - return transform; - } - - public Transform createBase64Transform() { - Base64TransformImpl transform = new Base64TransformImpl(); - return transform; - } - - public Transform createEnvelopedSignatureTransform() { - EnvelopedSignatureTransformImpl transform = new EnvelopedSignatureTransformImpl(); - return transform; - } - - public Transform createXSLTTransform(Element styleSheet) { - XSLTransformImpl transform = new XSLTransformImpl(); - transform.setStylesheet(styleSheet); - return transform; - } - - public Transform createXPathTransform(String xPathExpression, Map namespaceDeclarations) { - XPathTransformImpl transform = new XPathTransformImpl(); - transform.setXPathExpression(xPathExpression); - transform.setNamespaceDelcarations(namespaceDeclarations); - return transform; - } - - public Transform createXPathFilter2Transform(List xPathFilters) { - XPathFilter2TransformImpl transform = new XPathFilter2TransformImpl(); - transform.setFilters(xPathFilters); - return transform; - } - - public XPathFilter createXPathFilter(String filterType, String xPathExpression, Map namespaceDeclarations) { - XPathFilterImpl xPathFilter = new XPathFilterImpl(); - xPathFilter.setFilterType(filterType); - xPathFilter.setXPathExpression(xPathExpression); - xPathFilter.setNamespaceDelcarations(namespaceDeclarations); - return xPathFilter; - } - - public CheckResult createCheckResult(int code, NodeList info) { - CheckResultImpl checkResult = new CheckResultImpl(); - checkResult.setCode(code); - checkResult.setInfo(info); - return checkResult; - } - - public SignerInfo createSignerInfo(X509Certificate signerCertificate, boolean qualifiedCertificate, - boolean qcSourceTSL, boolean publicAuthority, String publicAuthorityID, boolean sscd, boolean sscdSourceTSL, - String issuerCountryCode, Date signingTime, TslInfos tslInfos) { - SignerInfoImpl signerInfo = new SignerInfoImpl(); - signerInfo.setSignerCertificate(signerCertificate); - signerInfo.setQualifiedCertificate(qualifiedCertificate); - signerInfo.setQCSourceTSL(qcSourceTSL); - signerInfo.setPublicAuthority(publicAuthority); - signerInfo.setPublicAuhtorityID(publicAuthorityID); - signerInfo.setSSCD(sscd); - signerInfo.setSSCDSourceTSL(sscdSourceTSL); - signerInfo.setIssuerCountryCode(issuerCountryCode); - signerInfo.setSigningTime(signingTime); - signerInfo.setTslInfos(tslInfos); - return signerInfo; - } - - public X509IssuerSerial createX509IssuerSerial(String issuerName, BigInteger serialNumber) { - X509IssuerSerialImpl x509IssuerSerial = new X509IssuerSerialImpl(); - x509IssuerSerial.setX509IssuerName(issuerName); - x509IssuerSerial.setX509SerialNumber(serialNumber); - return x509IssuerSerial; - } - - @Override - public VerifyXMLSignatureRequest createVerifyXMLSignatureRequest(Date dateTime, - VerifySignatureInfo verifySignatureInfo, List supplementProfiles, - SignatureManifestCheckParams signatureManifestParams, boolean returnHashInputData, String trustProfileID, - boolean extendedValidation) { - VerifyXMLSignatureRequestImpl verifyXMLSignatureRequest = new VerifyXMLSignatureRequestImpl(); - verifyXMLSignatureRequest.setDateTime(dateTime); - verifyXMLSignatureRequest.setSignatureInfo(verifySignatureInfo); - verifyXMLSignatureRequest.setSupplementProfiles(supplementProfiles); - verifyXMLSignatureRequest.setSignatureManifestCheckParams(signatureManifestParams); - verifyXMLSignatureRequest.setReturnHashInputData(returnHashInputData); - verifyXMLSignatureRequest.setTrustProfileId(trustProfileID); - verifyXMLSignatureRequest.setExtendedValidation(extendedValidation); - return verifyXMLSignatureRequest; - } + @Override + public CreateXMLSignatureRequest createCreateXMLSignatureRequest(String keyIdentifier, + List singleSignatureInfos) { + final CreateXMLSignatureRequestImpl createXMLSignatureRequest = new CreateXMLSignatureRequestImpl(); + createXMLSignatureRequest.setKeyIdentifier(keyIdentifier); + createXMLSignatureRequest.setSingleSignatureInfos(singleSignatureInfos); + return createXMLSignatureRequest; + } + + @Override + public CreateCMSSignatureRequest createCreateCMSSignatureRequest(String keyIdentifier, + List singleSignatureInfos) { + final CreateCMSSignatureRequestImpl createCMSSignatureRequest = new CreateCMSSignatureRequestImpl(); + createCMSSignatureRequest.setKeyIdentifier(keyIdentifier); + createCMSSignatureRequest.setSingleSignatureInfos(singleSignatureInfos); + return createCMSSignatureRequest; + + } + + @Override + public CreateCMSSignatureResponse createCreateCMSSignatureResponse(List responseElements) { + final CreateCMSSignatureResponseImpl createCMSSignatureResponse = new CreateCMSSignatureResponseImpl(); + createCMSSignatureResponse.setResponseElements(responseElements); + return createCMSSignatureResponse; + } + + @Override + public CMSSignatureResponse createCMSSignatureResponse(String base64value) { + final CMSSignatureResponseImpl cmsSignatureResponse = new CMSSignatureResponseImpl(); + cmsSignatureResponse.setCMSSignature(base64value); + + return cmsSignatureResponse; + } + + @Override + public SingleSignatureInfo createSingleSignatureInfo(List dataObjectInfos, + CreateSignatureInfo createSignatureInfo, + boolean securityLayerConform) { + final SingleSignatureInfoImpl singleSignatureInfo = new SingleSignatureInfoImpl(); + singleSignatureInfo.setDataObjectInfos(dataObjectInfos); + singleSignatureInfo.setCreateSignatureInfo(createSignatureInfo); + singleSignatureInfo.setSecurityLayerConform(securityLayerConform); + return singleSignatureInfo; + } + + @Override + public at.gv.egovernment.moa.spss.api.cmssign.SingleSignatureInfo createSingleSignatureInfoCMS( + at.gv.egovernment.moa.spss.api.cmssign.DataObjectInfo dataObjectInfo, boolean securityLayerConform, + boolean isPAdESConform) { + final SingleSignatureInfoCMSImpl singleSignatureInfo = new SingleSignatureInfoCMSImpl(); + singleSignatureInfo.setDataObjectInfo(dataObjectInfo); + singleSignatureInfo.setSecurityLayerConform(securityLayerConform); + singleSignatureInfo.setPAdESConform(isPAdESConform); + return singleSignatureInfo; + } + + @Override + public DataObjectInfo createDataObjectInfo(String structure, boolean childOfManifest, Content dataObject, + CreateTransformsInfoProfile createTransformsInfoProfile) { + final DataObjectInfoImpl dataObjectInfo = new DataObjectInfoImpl(); + dataObjectInfo.setStructure(structure); + dataObjectInfo.setChildOfManifest(childOfManifest); + dataObjectInfo.setDataObject(dataObject); + dataObjectInfo.setCreateTransformsInfoProfile(createTransformsInfoProfile); + return dataObjectInfo; + } + + @Override + public at.gv.egovernment.moa.spss.api.cmssign.DataObjectInfo createDataObjectInfo(String structure, + CMSDataObject dataObject) { + final DataObjectInfoCMSImpl dataObjectInfo = new DataObjectInfoCMSImpl(); + dataObjectInfo.setStructure(structure); + dataObjectInfo.setDataObject(dataObject); + return dataObjectInfo; + } + + @Override + public CreateTransformsInfoProfile createCreateTransformsInfoProfile(String profileID) { + + final CreateTransformsInfoProfileIDImpl createTransformsInfoProfile = + new CreateTransformsInfoProfileIDImpl(); + createTransformsInfoProfile.setCreateTransformsInfoProfileID(profileID); + return createTransformsInfoProfile; + } + + @Override + public CreateTransformsInfoProfile createCreateTransformsInfoProfile(CreateTransformsInfo transformsInfo, + List supplements) { + final CreateTransformsInfoProfileExplicitImpl createTransformsInfoProfile = + new CreateTransformsInfoProfileExplicitImpl(); + createTransformsInfoProfile.setCreateTransformsInfo(transformsInfo); + createTransformsInfoProfile.setSupplements(supplements); + return createTransformsInfoProfile; + } + + @Override + public CreateTransformsInfo createCreateTransformsInfo(List transforms, MetaInfo finalDataMetaInfo) { + final CreateTransformsInfoImpl createTransformsInfo = new CreateTransformsInfoImpl(); + + createTransformsInfo.setTransforms(transforms); + createTransformsInfo.setFinalDataMetaInfo(finalDataMetaInfo); + return createTransformsInfo; + } + + @Override + public CreateSignatureInfo createCreateSignatureInfo(Content createSignatureEnvironment, + CreateSignatureEnvironmentProfile createSignatureEnvironmentProfile) { + final CreateSignatureInfoImpl createSignatureInfo = new CreateSignatureInfoImpl(); + createSignatureInfo.setCreateSignatureEnvironment(createSignatureEnvironment); + createSignatureInfo.setCreateSignatureEnvironmentProfile(createSignatureEnvironmentProfile); + return createSignatureInfo; + } + + @Override + public CreateSignatureEnvironmentProfile createCreateSignatureEnvironmentProfile( + CreateSignatureLocation createSignatureLocation, List supplements) { + final CreateSignatureEnvironmentProfileExplicitImpl createSignatureEnvironmentProfile = + new CreateSignatureEnvironmentProfileExplicitImpl(); + createSignatureEnvironmentProfile.setCreateSignatureLocation(createSignatureLocation); + createSignatureEnvironmentProfile.setSupplements(supplements); + return createSignatureEnvironmentProfile; + } + + @Override + public CreateSignatureLocation createCreateSignatureLocation(String signatureLocationXPath, + int signatureLocationIndex, Map namespaceDeclarations) { + final CreateSignatureLocationImpl createSignatureLocation = new CreateSignatureLocationImpl(); + createSignatureLocation.setIndex(signatureLocationIndex); + createSignatureLocation.setNamespaceDeclarations(namespaceDeclarations); + createSignatureLocation.setXPathExpression(signatureLocationXPath); + return createSignatureLocation; + } + + @Override + public CreateSignatureEnvironmentProfile createCreateSignatureEnvironmentProfile(String profileID) { + final CreateSignatureEnvironmentProfileIDImpl createSignatureEnvironmentProfile = + new CreateSignatureEnvironmentProfileIDImpl(); + createSignatureEnvironmentProfile.setCreateSignatureEnvironmentProfileID(profileID); + return createSignatureEnvironmentProfile; + } + + @Override + public CreateXMLSignatureResponse createCreateXMLSignatureResponse(List responseElements) { + final CreateXMLSignatureResponseImpl createXMLSignatureResponse = new CreateXMLSignatureResponseImpl(); + createXMLSignatureResponse.setResponseElements(responseElements); + return createXMLSignatureResponse; + } + + @Override + public SignatureEnvironmentResponse createSignatureEnvironmentResponse(Element signatureEnvironment) { + final SignatureEnvironmentResponseImpl signatureEnvironmentResponse = + new SignatureEnvironmentResponseImpl(); + signatureEnvironmentResponse.setSignatureEnvironment(signatureEnvironment); + return signatureEnvironmentResponse; + } + + @Override + public ErrorResponse createErrorResponse(int code, String info) { + final ErrorResponseImpl errorResponse = new ErrorResponseImpl(); + errorResponse.setErrorCode(code); + errorResponse.setInfo(info); + return errorResponse; + } + + @Override + public VerifyCMSSignatureRequest createVerifyCMSSignatureRequest(int[] signatories, Date dateTime, + InputStream cmsSignature, CMSDataObject dataObject, String trustProfileID, boolean pdf) { + return this.createVerifyCMSSignatureRequest(signatories, dateTime, cmsSignature, dataObject, + trustProfileID, pdf, false); + } + + @Override + public VerifyCMSSignatureRequest createVerifyCMSSignatureRequest(int[] signatories, Date dateTime, + InputStream cmsSignature, CMSDataObject dataObject, String trustProfileID, boolean pdf, + boolean extended) { + final VerifyCMSSignatureRequestImpl verifyCMSSignatureRequest = new VerifyCMSSignatureRequestImpl(); + verifyCMSSignatureRequest.setDateTime(dateTime); + verifyCMSSignatureRequest.setCMSSignature(cmsSignature); + verifyCMSSignatureRequest.setDataObject(dataObject); + verifyCMSSignatureRequest.setTrustProfileId(trustProfileID); + verifyCMSSignatureRequest.setSignatories(signatories); + verifyCMSSignatureRequest.setPDF(pdf); + verifyCMSSignatureRequest.setExtended(extended); + return verifyCMSSignatureRequest; + } + + @Override + public CMSDataObject createCMSDataObject(MetaInfo metaInfo, CMSContent content, + BigDecimal excludeByteRangeFrom, + BigDecimal excludeByteRangeTo) { + + final CMSDataObjectImpl cmsDataObject = new CMSDataObjectImpl(); + cmsDataObject.setMetaInfo(metaInfo); + cmsDataObject.setContent(content); + cmsDataObject.setExcludeByteRangeFrom(excludeByteRangeFrom); + cmsDataObject.setExcludeByteRangeTo(excludeByteRangeTo); + + return cmsDataObject; + } + + @Override + public CMSContent createCMSContent(InputStream binaryContent) { + final CMSContentExplicitImpl cmsContent = new CMSContentExplicitImpl(); + + cmsContent.setBinaryContent(binaryContent); + return cmsContent; + } + + @Override + public CMSContent createCMSContent(String referenceURI) { + final CMSContentReferenceImpl cmsContent = new CMSContentReferenceImpl(); + + cmsContent.setReference(referenceURI); + return cmsContent; + } + + public CMSDataObject createCMSDataObject(MetaInfo metaInfo, String referenceURI) { + final CMSDataObjectImpl cmsDataObject = new CMSDataObjectImpl(); + final CMSContentReferenceImpl cmsContent = new CMSContentReferenceImpl(); + cmsDataObject.setMetaInfo(metaInfo); + cmsContent.setReference(referenceURI); + return cmsDataObject; + } + + @Override + public VerifyCMSSignatureResponse createVerifyCMSSignatureResponse(List responseElements) { + final VerifyCMSSinatureResponseImpl verifyCMSSignatureResponse = new VerifyCMSSinatureResponseImpl(); + verifyCMSSignatureResponse.setResponseElements(responseElements); + return verifyCMSSignatureResponse; + } + + @Override + public VerifyCMSSignatureResponseElement createVerifyCMSSignatureResponseElement(SignerInfo signerInfo, + CheckResult signatureCheck, CheckResult certificateCheck, List adesResult, + ExtendedCertificateCheckResult extendedCertificateCheckResult, String usedAlgorithm, + Boolean coversFullDocument, + int[] byteRangeOfSignature) { + final VerifyCMSSignatureResponseElementImpl verifyCMSSignatureResponseElement = + new VerifyCMSSignatureResponseElementImpl(); + verifyCMSSignatureResponseElement.setSignerInfo(signerInfo); + verifyCMSSignatureResponseElement.setSignatureCheck(signatureCheck); + verifyCMSSignatureResponseElement.setCertificateCheck(certificateCheck); + verifyCMSSignatureResponseElement.setAdESFormResults(adesResult); + verifyCMSSignatureResponseElement.setExtendedCertificateCheck(extendedCertificateCheckResult); + verifyCMSSignatureResponseElement.setSignatureAlgorithm(usedAlgorithm); + verifyCMSSignatureResponseElement.setCoversFullDocument(coversFullDocument); + verifyCMSSignatureResponseElement.setByteRangeOfSignature(byteRangeOfSignature); + return verifyCMSSignatureResponseElement; + } + + @Override + public VerifyXMLSignatureRequest createVerifyXMLSignatureRequest(Date dateTime, + VerifySignatureInfo verifySignatureInfo, List supplementProfiles, + SignatureManifestCheckParams signatureManifestParams, boolean returnHashInputData, + String trustProfileID) { + return this.createVerifyXMLSignatureRequest(dateTime, verifySignatureInfo, supplementProfiles, + signatureManifestParams, returnHashInputData, trustProfileID, false); + } + + @Override + public VerifySignatureInfo createVerifySignatureInfo(Content verifySignatureEnvironment, + VerifySignatureLocation verifySignatureLocation) { + final VerifySignatureInfoImpl verifySignatureInfo = new VerifySignatureInfoImpl(); + verifySignatureInfo.setVerifySignatureEnvironment(verifySignatureEnvironment); + verifySignatureInfo.setVerifySignatureLocation(verifySignatureLocation); + return verifySignatureInfo; + } + + @Override + public VerifySignatureLocation createVerifySignatureLocation(String xPathExpression, + Map namespaceDeclarations) { + final VerifySignatureLocationImpl verifySignatureLocation = new VerifySignatureLocationImpl(); + verifySignatureLocation.setXPathExpression(xPathExpression); + verifySignatureLocation.setNamespaceDeclarations(namespaceDeclarations); + return verifySignatureLocation; + } + + @Override + public SupplementProfile createSupplementProfile(String profileID) { + final SupplementProfileIDImpl supplementProfileID = new SupplementProfileIDImpl(); + supplementProfileID.setSupplementProfileID(profileID); + return supplementProfileID; + } + + @Override + public SupplementProfile createSupplementProfile(XMLDataObjectAssociation supplementProfile) { + final SupplementProfileExplicitImpl supplementProfileExplicit = new SupplementProfileExplicitImpl(); + supplementProfileExplicit.setSupplementProfile(supplementProfile); + return supplementProfileExplicit; + } + + @Override + public SignatureManifestCheckParams createSignatureManifestCheckParams(List referenceInfos, + boolean returnReferenceInputData) { + final SignatureManifestCheckParamsImpl signatureManifestCheckParams = + new SignatureManifestCheckParamsImpl(); + signatureManifestCheckParams.setReferenceInfos(referenceInfos); + signatureManifestCheckParams.setReturnReferenceInputData(returnReferenceInputData); + return signatureManifestCheckParams; + } + + @Override + public ReferenceInfo createReferenceInfo(List verifyTransformsInfoProfiles) { + final ReferenceInfoImpl referenceInfo = new ReferenceInfoImpl(); + referenceInfo.setVerifyTransformsInfoProfiles(verifyTransformsInfoProfiles); + return referenceInfo; + } + + @Override + public VerifyTransformsInfoProfile createVerifyTransformsInfoProfile(List transforms, + List transformParameters) { + final VerifyTransformsInfoProfileExplicitImpl verifyTransformsInfoProfile = + new VerifyTransformsInfoProfileExplicitImpl(); + + verifyTransformsInfoProfile.setTransforms(transforms); + verifyTransformsInfoProfile.setTransformParameters(transformParameters); + + return verifyTransformsInfoProfile; + } + + @Override + public VerifyTransformsInfoProfile createVerifyTransformsInfoProfile(String profileID) { + final VerifyTransformsInfoProfileIDImpl verifyTransformsInfoProfile = + new VerifyTransformsInfoProfileIDImpl(); + verifyTransformsInfoProfile.setVerifyTransformsInfoProfileID(profileID); + return verifyTransformsInfoProfile; + } + + @Override + public TransformParameter createTransformParameter(String URI, String digestMethod, byte[] digestValue) { + final TransformPatameterHashImpl transformParameter = new TransformPatameterHashImpl(); + transformParameter.setURI(URI); + transformParameter.setDigestMethod(digestMethod); + transformParameter.setDigestValue(digestValue); + return transformParameter; + } + + @Override + public TransformParameter createTransformParameter(String URI, InputStream binaryData) { + final TransformParameterBinaryImpl transformParameter = new TransformParameterBinaryImpl(); + transformParameter.setURI(URI); + transformParameter.setBinaryContent(binaryData); + return transformParameter; + } + + @Override + public TransformParameter createTransformParameter(String URI) { + final TransformParameterURIImpl transformParameter = new TransformParameterURIImpl(); + transformParameter.setURI(URI); + return transformParameter; + } + + @Override + public VerifyXMLSignatureResponse createVerifyXMLSignatureResponse(SignerInfo signerInfo, + List hashInputDatas, + List referenceInputDatas, ReferencesCheckResult signatureCheck, + ReferencesCheckResult signatureManifestCheck, List xmlDsigManifestChecks, CheckResult certificateCheck, + List adesFormResults, ExtendedCertificateCheckResult extCheckResult, String signatureAlgorithm) { + final VerifyXMLSignatureResponseImpl verifyXMLSignatureResponse = new VerifyXMLSignatureResponseImpl(); + verifyXMLSignatureResponse.setSignerInfo(signerInfo); + verifyXMLSignatureResponse.setHashInputDatas(hashInputDatas); + verifyXMLSignatureResponse.setReferenceInputDatas(referenceInputDatas); + verifyXMLSignatureResponse.setSignatureAlgorithm(signatureAlgorithm); + verifyXMLSignatureResponse.setSignatureCheck(signatureCheck); + verifyXMLSignatureResponse.setSignatureManifestCheck(signatureManifestCheck); + verifyXMLSignatureResponse.setXMLDsigManifestChecks(xmlDsigManifestChecks); + verifyXMLSignatureResponse.setCertificateCheck(certificateCheck); + verifyXMLSignatureResponse.setAdESFormResults(adesFormResults); + verifyXMLSignatureResponse.setExtendedCertificateCheck(extCheckResult); + return verifyXMLSignatureResponse; + } + + @Override + public ReferencesCheckResult createReferencesCheckResult(int code, ReferencesCheckResultInfo info) { + final ReferencesCheckResultImpl referencesCheckResult = new ReferencesCheckResultImpl(); + referencesCheckResult.setCode(code); + referencesCheckResult.setInfo(info); + return referencesCheckResult; + } + + @Override + public ReferencesCheckResultInfo createReferencesCheckResultInfo(NodeList anyOtherInfo, + int[] failedReferences) { + final ReferencesCheckResultInfoImpl referencesCheckResultInfo = new ReferencesCheckResultInfoImpl(); + referencesCheckResultInfo.setAnyOtherInfo(anyOtherInfo); + referencesCheckResultInfo.setFailedReferences(failedReferences); + return referencesCheckResultInfo; + } + + @Override + public ManifestRefsCheckResult createManifestRefsCheckResult(int code, ManifestRefsCheckResultInfo info) { + final ManifestRefsCheckResultImpl manifestRefsCheckResult = new ManifestRefsCheckResultImpl(); + manifestRefsCheckResult.setCode(code); + manifestRefsCheckResult.setInfo(info); + return manifestRefsCheckResult; + } + + @Override + public ManifestRefsCheckResultInfo createManifestRefsCheckResultInfo(NodeList anyOtherInfo, + int[] failedReferences, + int referringSigReference) { + final ManifestRefsCheckResultInfoImpl manifestRefsCheckResultInfo = new ManifestRefsCheckResultInfoImpl(); + manifestRefsCheckResultInfo.setAnyOtherInfo(anyOtherInfo); + manifestRefsCheckResultInfo.setReferringSignatureReference(referringSigReference); + manifestRefsCheckResultInfo.setFailedReferences(failedReferences); + return manifestRefsCheckResultInfo; + } + + @Override + public Content createContent(InputStream binaryData, String referenceURI) { + final ContentBinaryImpl content = new ContentBinaryImpl(); + content.setBinaryContent(binaryData); + content.setReference(referenceURI); + return content; + } + + @Override + public Content createContent(String locationReferenceURI, String referenceURI) { + final ContentLocRefImpl content = new ContentLocRefImpl(); + content.setLocationReferenceURI(locationReferenceURI); + content.setReference(referenceURI); + return content; + } + + @Override + public Content createContent(String referenceURI) { + final ContentReferenceImpl content = new ContentReferenceImpl(); + content.setReference(referenceURI); + return content; + } + + @Override + public Content createContent(NodeList xmlData, String referenceURI) { + final ContentXMLImpl content = new ContentXMLImpl(); + content.setXMLContent(xmlData); + content.setReference(referenceURI); + return content; + } + + @Override + public XMLDataObjectAssociation createXMLDataObjectAssociation(MetaInfo metaInfo, Content xmlContent) { + final XMLDataObjectAssociationImpl xmlDataObjectAssociation = new XMLDataObjectAssociationImpl(); + xmlDataObjectAssociation.setMetaInfo(metaInfo); + xmlDataObjectAssociation.setContent(xmlContent); + return xmlDataObjectAssociation; + } + + @Override + public MetaInfo createMetaInfo(String mimeType, String description, NodeList otherInfo, String type) { + final MetaInfoImpl metaInfo = new MetaInfoImpl(); + metaInfo.setMimeType(mimeType); + metaInfo.setDescription(description); + metaInfo.setAnyElements(otherInfo); + metaInfo.setType(type); + return metaInfo; + } + + @Override + public Transform createCanonicalizationTransform(String algorithmURI) { + final CanonicalizationTransformImpl transform = new CanonicalizationTransformImpl(algorithmURI); + return transform; + } + + @Override + public Transform createExclusiveCanonicalizationTransform(String algorithmURI, + List inclusiveNamespacePrefixes) { + final ExclusiveCanonicalizationTransformImpl transform = new ExclusiveCanonicalizationTransformImpl( + algorithmURI); + transform.setInclusiveNamespacePrefixes(inclusiveNamespacePrefixes); + return transform; + } + + @Override + public Transform createBase64Transform() { + final Base64TransformImpl transform = new Base64TransformImpl(); + return transform; + } + + @Override + public Transform createEnvelopedSignatureTransform() { + final EnvelopedSignatureTransformImpl transform = new EnvelopedSignatureTransformImpl(); + return transform; + } + + @Override + public Transform createXSLTTransform(Element styleSheet) { + final XSLTransformImpl transform = new XSLTransformImpl(); + transform.setStylesheet(styleSheet); + return transform; + } + + @Override + public Transform createXPathTransform(String xPathExpression, Map namespaceDeclarations) { + final XPathTransformImpl transform = new XPathTransformImpl(); + transform.setXPathExpression(xPathExpression); + transform.setNamespaceDelcarations(namespaceDeclarations); + return transform; + } + + @Override + public Transform createXPathFilter2Transform(List xPathFilters) { + final XPathFilter2TransformImpl transform = new XPathFilter2TransformImpl(); + transform.setFilters(xPathFilters); + return transform; + } + + @Override + public XPathFilter createXPathFilter(String filterType, String xPathExpression, Map namespaceDeclarations) { + final XPathFilterImpl xPathFilter = new XPathFilterImpl(); + xPathFilter.setFilterType(filterType); + xPathFilter.setXPathExpression(xPathExpression); + xPathFilter.setNamespaceDelcarations(namespaceDeclarations); + return xPathFilter; + } + + @Override + public CheckResult createCheckResult(int code, NodeList info) { + final CheckResultImpl checkResult = new CheckResultImpl(); + checkResult.setCode(code); + checkResult.setInfo(info); + return checkResult; + } + + @Override + public SignerInfo createSignerInfo(X509Certificate signerCertificate, boolean qualifiedCertificate, + boolean qcSourceTSL, boolean publicAuthority, String publicAuthorityID, boolean sscd, + boolean sscdSourceTSL, + String issuerCountryCode, Date signingTime, TslInfos tslInfos) { + final SignerInfoImpl signerInfo = new SignerInfoImpl(); + signerInfo.setSignerCertificate(signerCertificate); + signerInfo.setQualifiedCertificate(qualifiedCertificate); + signerInfo.setQCSourceTSL(qcSourceTSL); + signerInfo.setPublicAuthority(publicAuthority); + signerInfo.setPublicAuhtorityID(publicAuthorityID); + signerInfo.setSSCD(sscd); + signerInfo.setSSCDSourceTSL(sscdSourceTSL); + signerInfo.setIssuerCountryCode(issuerCountryCode); + signerInfo.setSigningTime(signingTime); + signerInfo.setTslInfos(tslInfos); + return signerInfo; + } + + @Override + public X509IssuerSerial createX509IssuerSerial(String issuerName, BigInteger serialNumber) { + final X509IssuerSerialImpl x509IssuerSerial = new X509IssuerSerialImpl(); + x509IssuerSerial.setX509IssuerName(issuerName); + x509IssuerSerial.setX509SerialNumber(serialNumber); + return x509IssuerSerial; + } + + @Override + public VerifyXMLSignatureRequest createVerifyXMLSignatureRequest(Date dateTime, + VerifySignatureInfo verifySignatureInfo, List supplementProfiles, + SignatureManifestCheckParams signatureManifestParams, boolean returnHashInputData, + String trustProfileID, + boolean extendedValidation) { + final VerifyXMLSignatureRequestImpl verifyXMLSignatureRequest = new VerifyXMLSignatureRequestImpl(); + verifyXMLSignatureRequest.setDateTime(dateTime); + verifyXMLSignatureRequest.setSignatureInfo(verifySignatureInfo); + verifyXMLSignatureRequest.setSupplementProfiles(supplementProfiles); + verifyXMLSignatureRequest.setSignatureManifestCheckParams(signatureManifestParams); + verifyXMLSignatureRequest.setReturnHashInputData(returnHashInputData); + verifyXMLSignatureRequest.setTrustProfileId(trustProfileID); + verifyXMLSignatureRequest.setExtendedValidation(extendedValidation); + return verifyXMLSignatureRequest; + } } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/SignatureEnvironmentResponseImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/SignatureEnvironmentResponseImpl.java index 4b50d89..1fc3cdc 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/SignatureEnvironmentResponseImpl.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/SignatureEnvironmentResponseImpl.java @@ -21,7 +21,6 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.api.impl; import org.w3c.dom.Element; @@ -30,34 +29,36 @@ import at.gv.egovernment.moa.spss.api.xmlsign.SignatureEnvironmentResponse; /** * Default implementation of <code>SignatureEnvironmentResponse</code>. - * + * * @author Fatemeh Philippi * @version $Id$ */ public class SignatureEnvironmentResponseImpl - implements SignatureEnvironmentResponse { + implements SignatureEnvironmentResponse { /** The signature environment containing the XML signature. */ private Element signatureEnvironment; - /** + /** * Sets the XML structure which contains the signature. - * + * * @param signatureEnvironment A general XML structure containing the signature. */ public void setSignatureEnvironment(Element signatureEnvironment) { this.signatureEnvironment = signatureEnvironment; } + @Override public Element getSignatureEnvironment() { return signatureEnvironment; } /** * Gets the type of <code>CreateXMLSignatureResponseElement</code>. - * + * * @return SIGNATURE_ENVIRONMENT_RESPONSE */ + @Override public int getResponseType() { return SIGNATURE_ENVIRONMENT_RESPONSE; } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/SignatureManifestCheckParamsImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/SignatureManifestCheckParamsImpl.java index 40e87e7..4d4fb64 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/SignatureManifestCheckParamsImpl.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/SignatureManifestCheckParamsImpl.java @@ -21,7 +21,6 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.api.impl; import java.util.ArrayList; @@ -32,12 +31,12 @@ import at.gv.egovernment.moa.spss.api.xmlverify.SignatureManifestCheckParams; /** * Default implementation of <code>SignatureManifestCheckParams</code>. - * + * * @author Fatemeh Philippi * @version $Id$ */ public class SignatureManifestCheckParamsImpl - implements SignatureManifestCheckParams { + implements SignatureManifestCheckParams { /** Referential information. */ private List referenceInfos; @@ -46,29 +45,31 @@ public class SignatureManifestCheckParamsImpl /** * Sets the referantial information. - * + * * @param referenceInfos The referential information. */ public void setReferenceInfos(List referenceInfos) { this.referenceInfos = - referenceInfos != null - ? Collections.unmodifiableList(new ArrayList(referenceInfos)) - : null; + referenceInfos != null + ? Collections.unmodifiableList(new ArrayList(referenceInfos)) + : null; } + @Override public List getReferenceInfos() { return referenceInfos; } - + /** * Sets whether to return signature source data. - * + * * @param returnReferenceInputData Whether to return signature source data. */ public void setReturnReferenceInputData(boolean returnReferenceInputData) { this.returnReferenceInputData = returnReferenceInputData; } + @Override public boolean getReturnReferenceInputData() { return returnReferenceInputData; } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/SignerInfoImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/SignerInfoImpl.java index 57a60a6..988ae00 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/SignerInfoImpl.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/SignerInfoImpl.java @@ -21,7 +21,6 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.api.impl; import java.security.cert.X509Certificate; @@ -32,7 +31,7 @@ import at.gv.egovernment.moa.spss.api.common.TslInfos; /** * Default implementation of <code>SignerInfo</code>. - * + * * @author Fatemeh Philippi * @version $Id$ */ @@ -40,145 +39,161 @@ public class SignerInfoImpl implements SignerInfo { /** The signer certificate. */ private X509Certificate signerCertificate; - /** Determines, whether <code>signerCertificate</code> is a qualified - * certificate. */ + /** + * Determines, whether <code>signerCertificate</code> is a qualified + * certificate. + */ private boolean qualifiedCertificate; - /** Determines, whether <code>signerCertificate</code> is from a public - * authority. */ + /** + * Determines, whether <code>signerCertificate</code> is from a public + * authority. + */ private boolean publicAuthority; /** The public authority ID of the <code>signerCertificate</code>. */ private String publicAuthorityID; /** Determines, whether the signature is based on an SSCD */ private boolean sscd; - + /** Determines, if the SSCD check bases upon on TSL */ private boolean sscdSourceTSL; - + /** Determines, if the QC check bases upon on TSL */ private boolean qcSourceTSL; - + /** The certificate issuer country code */ private String issuerCountryCode; - private Date signingTime; - private TslInfos tslInfos; + private Date signingTime; + private TslInfos tslInfos; /** - * Sets the signer certificate. - * - * @param signerCertificate The signer certificate. - */ + * Sets the signer certificate. + * + * @param signerCertificate The signer certificate. + */ public void setSignerCertificate(X509Certificate signerCertificate) { this.signerCertificate = signerCertificate; } + @Override public X509Certificate getSignerCertificate() { return signerCertificate; } /** * Sets, whether the certificate contained in this object is qualified or not. - * - * @param qualifiedCertificate Is <code>true</code>, if the certificate is - * qualified, otherwise <code>false</code>. + * + * @param qualifiedCertificate Is <code>true</code>, if the certificate is + * qualified, otherwise <code>false</code>. */ public void setQualifiedCertificate(boolean qualifiedCertificate) { this.qualifiedCertificate = qualifiedCertificate; } + @Override public boolean isQualifiedCertificate() { return qualifiedCertificate; } /** * Sets, whether the signature is based on an SSCS or not. - * - * @param sscd Is <code>true</code>, if the signature is - * based on an SSCD, otherwise <code>false</code>. + * + * @param sscd Is <code>true</code>, if the signature is based on an SSCD, + * otherwise <code>false</code>. */ public void setSSCD(boolean sscd) { this.sscd = sscd; } + + @Override public boolean isSSCD() { - return sscd; + return sscd; } - + public void setSSCDSourceTSL(boolean sscdSourceTSL) { - this.sscdSourceTSL = sscdSourceTSL; + this.sscdSourceTSL = sscdSourceTSL; } - + + @Override public String getSSCDSource() { - if (sscdSourceTSL) - return "TSL"; - else - return "Certificate"; + if (sscdSourceTSL) { + return "TSL"; + } else { + return "Certificate"; + } } - public Date getSigningTime() { - return signingTime; - } + @Override + public Date getSigningTime() { + return signingTime; + } - public void setSigningTime(Date signingTime) { - this.signingTime = signingTime; - } + public void setSigningTime(Date signingTime) { + this.signingTime = signingTime; + } - public void setQCSourceTSL(boolean qcSourceTSL) { - this.qcSourceTSL = qcSourceTSL; + public void setQCSourceTSL(boolean qcSourceTSL) { + this.qcSourceTSL = qcSourceTSL; } - + + @Override public String getQCSource() { - if (this.qcSourceTSL) - return "TSL"; - else - return "Certificate"; + if (this.qcSourceTSL) { + return "TSL"; + } else { + return "Certificate"; + } } - + public void setIssuerCountryCode(String issuerCountryCode) { - this.issuerCountryCode = issuerCountryCode; + this.issuerCountryCode = issuerCountryCode; } - public String getIssuerCountryCode() { - return issuerCountryCode; - } - + + @Override + public String getIssuerCountryCode() { + return issuerCountryCode; + } + /** - * Sets, whether the certificate contained in this object is an - * e-government certificate or not. - * - * @param publicAuthority Is <code>true</code>, if the certificate is - * public authority certificate, otherwise <code>false</code>. + * Sets, whether the certificate contained in this object is an e-government + * certificate or not. + * + * @param publicAuthority Is <code>true</code>, if the certificate is public + * authority certificate, otherwise <code>false</code>. */ public void setPublicAuthority(boolean publicAuthority) { this.publicAuthority = publicAuthority; } + @Override public boolean isPublicAuthority() { return publicAuthority; } /** * Sets the public authority ID of the signer certificate. - * + * * @param publicAuhtorityID The public authority ID of the signer certificate. */ public void setPublicAuhtorityID(String publicAuhtorityID) { this.publicAuthorityID = publicAuhtorityID; } + @Override public String getPublicAuhtorityID() { return publicAuthorityID; } @Override public TslInfos getTslInfos() { - return this.tslInfos; - - } + return this.tslInfos; + } public void setTslInfos(TslInfos tslInfos) { - this.tslInfos = tslInfos; - + this.tslInfos = tslInfos; + } - - } + +} 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..bbe3ea5 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 @@ -21,13 +21,8 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.api.impl; -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; - import at.gv.egovernment.moa.spss.api.cmssign.DataObjectInfo; import at.gv.egovernment.moa.spss.api.cmssign.SingleSignatureInfo; @@ -38,23 +33,32 @@ public class SingleSignatureInfoCMSImpl implements SingleSignatureInfo { private DataObjectInfo dataObjectInfo = null; - private boolean securityLayerConform = true; + private boolean padesConform = false; public void setDataObjectInfo(DataObjectInfo dataObjectInfo) { this.dataObjectInfo = dataObjectInfo; } + @Override public DataObjectInfo getDataObjectInfo() { return dataObjectInfo; } + @Override + public boolean isPAdESConform() { + return padesConform; + } + public void setPAdESConform(boolean padesConform) { + this.padesConform = padesConform; + } public void setSecurityLayerConform(boolean securityLayerConform) { this.securityLayerConform = securityLayerConform; } + @Override public boolean isSecurityLayerConform() { return securityLayerConform; } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/SingleSignatureInfoImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/SingleSignatureInfoImpl.java index 3d43068..1fc20a0 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/SingleSignatureInfoImpl.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/SingleSignatureInfoImpl.java @@ -21,7 +21,6 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.api.impl; import java.util.ArrayList; @@ -45,11 +44,12 @@ public class SingleSignatureInfoImpl implements SingleSignatureInfo { public void setDataObjectInfos(List dataObjectInfos) { this.dataObjectInfos = - dataObjectInfos != null - ? Collections.unmodifiableList(new ArrayList(dataObjectInfos)) - : null; + dataObjectInfos != null + ? Collections.unmodifiableList(new ArrayList(dataObjectInfos)) + : null; } + @Override public List getDataObjectInfos() { return dataObjectInfos; } @@ -58,6 +58,7 @@ public class SingleSignatureInfoImpl implements SingleSignatureInfo { this.createSignatureInfo = createSignatureInfo; } + @Override public CreateSignatureInfo getCreateSignatureInfo() { return createSignatureInfo; } @@ -66,6 +67,7 @@ public class SingleSignatureInfoImpl implements SingleSignatureInfo { this.securityLayerConform = securityLayerConform; } + @Override public boolean isSecurityLayerConform() { return securityLayerConform; } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/SupplementProfileExplicitImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/SupplementProfileExplicitImpl.java index 7f80388..82a1a0d 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/SupplementProfileExplicitImpl.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/SupplementProfileExplicitImpl.java @@ -21,7 +21,6 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.api.impl; import at.gv.egovernment.moa.spss.api.common.XMLDataObjectAssociation; @@ -29,7 +28,7 @@ import at.gv.egovernment.moa.spss.api.xmlverify.SupplementProfileExplicit; /** * Default implementation of <code>SupplementProfileExplicit</code>. - * + * * @author Fatemeh Philippi * @version $Id$ */ @@ -40,22 +39,24 @@ public class SupplementProfileExplicitImpl implements SupplementProfileExplicit /** * Sets the supplemental information for verifying a signature. - * + * * @param supplement The supplemental information for verifying a signature. */ public void setSupplementProfile(XMLDataObjectAssociation supplement) { this.supplement = supplement; } - + + @Override public XMLDataObjectAssociation getSupplementProfile() { return supplement; } /** * Gets the type of <code>SupplementProfile</code>. - * + * * @return EXPLICIT_SUPPLEMENTPROFILE */ + @Override public int getSupplementProfileType() { return EXPLICIT_SUPPLEMENTPROFILE; } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/SupplementProfileIDImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/SupplementProfileIDImpl.java index e73ce60..7e64c93 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/SupplementProfileIDImpl.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/SupplementProfileIDImpl.java @@ -21,39 +21,40 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.api.impl; import at.gv.egovernment.moa.spss.api.xmlverify.SupplementProfileID; /** * Default implementation of <code>SupplementProfileID</code>. - * + * * @author Fatemeh Philippi * @version $Id$ */ public class SupplementProfileIDImpl implements SupplementProfileID { /** The profile ID. */ private String profileID; - + /** * Sets the <code>SupplementProfile</code> profile ID. - * + * * @param profileID The profile ID. */ public void setSupplementProfileID(String profileID) { this.profileID = profileID; } + @Override public String getSupplementProfileID() { return profileID; } /** * Gets the type of <code>SupplementProfile</code>. - * + * * @return ID_SUPPLEMENTPROFILE */ + @Override public int getSupplementProfileType() { return ID_SUPPLEMENTPROFILE; } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/TSLConfigurationImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/TSLConfigurationImpl.java index 6fa813f..cf3bfc7 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/TSLConfigurationImpl.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/TSLConfigurationImpl.java @@ -21,99 +21,101 @@ * that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.api.impl;
-import iaik.xml.crypto.utils.URI;
-
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import at.gv.egovernment.moa.spss.api.common.TSLConfiguration;
+import iaik.xml.crypto.utils.URI;
/**
* Default implementation of <code>TSLConfiguration</code>.
- *
+ *
* @author kstranacher
*/
public class TSLConfigurationImpl implements TSLConfiguration {
-
-
- /** The EU TSL URL. */
- private String euTSLUrl;
-
- /** update period in milliseconds */
- private long updateSchedulePeriod;
-
- /** Time of the first update */
- private Date updateScheduleStartTime;
-
- /** Working directory */
- private String workingDirectory;
-
- /** Working directory */
- private URI workingDirectoryAsURI;
-
- private List<java.net.URI> qualifierForQC = new ArrayList<java.net.URI>();
- private List<java.net.URI> qualifierForSSCD = new ArrayList<java.net.URI>();
-
+ /** The EU TSL URL. */
+ private String euTSLUrl;
+
+ /** update period in milliseconds */
+ private long updateSchedulePeriod;
+
+ /** Time of the first update */
+ private Date updateScheduleStartTime;
+
+ /** Working directory */
+ private String workingDirectory;
+
+ /** Working directory */
+ private URI workingDirectoryAsURI;
+
+ private final List<java.net.URI> qualifierForQC = new ArrayList<>();
+ private final List<java.net.URI> qualifierForSSCD = new ArrayList<>();
+
+ @Override
public String getEuTSLUrl() {
- return this.euTSLUrl;
+ return this.euTSLUrl;
}
+ @Override
public long getUpdateSchedulePeriod() {
- return this.updateSchedulePeriod;
+ return this.updateSchedulePeriod;
}
+ @Override
public Date getUpdateScheduleStartTime() {
- return this.updateScheduleStartTime;
+ return this.updateScheduleStartTime;
}
+ @Override
public String getWorkingDirectory() {
- return this.workingDirectory;
+ return this.workingDirectory;
}
-
+
+ @Override
public URI getWorkingDirectoryAsURI() {
- return this.workingDirectoryAsURI;
+ return this.workingDirectoryAsURI;
}
- public void setEuTSLUrl(String euTSLUrl) {
- this.euTSLUrl = euTSLUrl;
- }
-
- public void setUpdateSchedulePeriod(long updateSchedulePeriod) {
- this.updateSchedulePeriod = updateSchedulePeriod;
- }
-
- public void setUpdateScheduleStartTime(Date updateScheduleStartTime) {
- this.updateScheduleStartTime = updateScheduleStartTime;
- }
-
- public void setWorkingDirectory(String workingDirectory) {
- this.workingDirectory = workingDirectory;
- }
-
- public void setWorkingDirectoryURI(URI workingDirectoryAsURI) {
- this.workingDirectoryAsURI = workingDirectoryAsURI;
- }
-
- public List<java.net.URI> getQualifierForQC() {
- return qualifierForQC;
- }
-
- public List<java.net.URI> getQualifierForSSCD() {
- return qualifierForSSCD;
- }
-
- public void addQualifierForQC(java.net.URI qualifier) {
- qualifierForQC.add(qualifier);
- }
-
- public void addQualifierForSSCD(java.net.URI qualifier) {
- qualifierForSSCD.add(qualifier);
- }
-
+ public void setEuTSLUrl(String euTSLUrl) {
+ this.euTSLUrl = euTSLUrl;
+ }
+
+ public void setUpdateSchedulePeriod(long updateSchedulePeriod) {
+ this.updateSchedulePeriod = updateSchedulePeriod;
+ }
+
+ public void setUpdateScheduleStartTime(Date updateScheduleStartTime) {
+ this.updateScheduleStartTime = updateScheduleStartTime;
+ }
+
+ public void setWorkingDirectory(String workingDirectory) {
+ this.workingDirectory = workingDirectory;
+ }
+
+ public void setWorkingDirectoryURI(URI workingDirectoryAsURI) {
+ this.workingDirectoryAsURI = workingDirectoryAsURI;
+ }
+
+ @Override
+ public List<java.net.URI> getQualifierForQC() {
+ return qualifierForQC;
+ }
+
+ @Override
+ public List<java.net.URI> getQualifierForSSCD() {
+ return qualifierForSSCD;
+ }
+
+ public void addQualifierForQC(java.net.URI qualifier) {
+ qualifierForQC.add(qualifier);
+ }
+
+ public void addQualifierForSSCD(java.net.URI qualifier) {
+ qualifierForSSCD.add(qualifier);
+ }
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/TransformImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/TransformImpl.java index 37a05f9..c72a445 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/TransformImpl.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/TransformImpl.java @@ -21,7 +21,6 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.api.impl; import at.gv.egovernment.moa.spss.api.common.Transform; @@ -36,13 +35,14 @@ public class TransformImpl implements Transform { /** * Sets the URI identifying the transformation algorithm. - * + * * @param algorithmURI The URI identifying the transformation algorithm. */ public void setAlgorithmURI(String algorithmURI) { this.algorithmURI = algorithmURI; } + @Override public String getAlgorithmURI() { return algorithmURI; } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/TransformParameterBinaryImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/TransformParameterBinaryImpl.java index 691f3a9..915aff3 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/TransformParameterBinaryImpl.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/TransformParameterBinaryImpl.java @@ -21,7 +21,6 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.api.impl; import java.io.InputStream; @@ -30,35 +29,37 @@ import at.gv.egovernment.moa.spss.api.xmlverify.TransformParameterBinary; /** * Default implementation of <code>TransformParameterBinary</code>. - * + * * @author Fatemeh Philippi * @version $Id$ */ public class TransformParameterBinaryImpl - extends TransformParameterImpl - implements TransformParameterBinary { - + extends TransformParameterImpl + implements TransformParameterBinary { + /** The binary content as a stream. */ private InputStream binaryContent; /** * Sets the binary content as a stream. - * + * * @param binaryContent The binary content as a stream. */ public void setBinaryContent(InputStream binaryContent) { this.binaryContent = binaryContent; } + @Override public InputStream getBinaryContent() { return binaryContent; } /** * Gets the <code>TransformParameter</code> type. - * + * * @return BINARY_TRANSFORMPARAMETER */ + @Override public int getTransformParameterType() { return BINARY_TRANSFORMPARAMETER; } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/TransformParameterImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/TransformParameterImpl.java index 1399c6e..1837d0f 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/TransformParameterImpl.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/TransformParameterImpl.java @@ -21,12 +21,11 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.api.impl; /** * Default base implementation of <code>TransformParameter</code>. - * + * * @author Patrick Peck * @version $Id$ */ @@ -36,6 +35,7 @@ public abstract class TransformParameterImpl { /** * Sets the URI identifying the <code>TransformParameter</code>. + * * @param uri The URI identifying the <code>TransformParameter</code>. */ public void setURI(String uri) { diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/TransformParameterURIImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/TransformParameterURIImpl.java index 77810be..2671623 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/TransformParameterURIImpl.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/TransformParameterURIImpl.java @@ -21,26 +21,26 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.api.impl; import at.gv.egovernment.moa.spss.api.xmlverify.TransformParameterURI; /** * Default implementation of <code>TransformParameterURI</code>. - * + * * @author Fatemeh Philippi * @version $Id$ */ public class TransformParameterURIImpl - extends TransformParameterImpl - implements TransformParameterURI { + extends TransformParameterImpl + implements TransformParameterURI { /** * Gets the type of <code>TransformParameter</code>. - * + * * @return URI_TRANSFORMPARAMETER */ + @Override public int getTransformParameterType() { return URI_TRANSFORMPARAMETER; } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/TransformPatameterHashImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/TransformPatameterHashImpl.java index 7fcd72c..79fd640 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/TransformPatameterHashImpl.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/TransformPatameterHashImpl.java @@ -21,20 +21,19 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.api.impl; import at.gv.egovernment.moa.spss.api.xmlverify.TransformParameterHash; /** * Default implementation of <code>TransformParameterHash</code> - * + * * @author Fatemeh Philippi * @version $Id$ */ public class TransformPatameterHashImpl - extends TransformParameterImpl - implements TransformParameterHash { + extends TransformParameterImpl + implements TransformParameterHash { /** The method used to calculate the digest value. */ private String digestMethod; @@ -43,34 +42,38 @@ public class TransformPatameterHashImpl /** * Sets method used to calculate the digest value. + * * @param digestMethod The method used to calculate the digest value. */ public void setDigestMethod(String digestMethod) { this.digestMethod = digestMethod; } + @Override public String getDigestMethod() { return digestMethod; } /** * Sets the digest value. - * + * * @param digestValue The digest value. */ public void setDigestValue(byte[] digestValue) { this.digestValue = digestValue; } - + + @Override public byte[] getDigestValue() { return digestValue; } /** * Gets the type of <code>TransformParameter</code>. - * + * * @return HASH_TRANSFORMPARAMETER */ + @Override public int getTransformParameterType() { return HASH_TRANSFORMPARAMETER; } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/TslInfosImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/TslInfosImpl.java index fad42e6..26905c2 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/TslInfosImpl.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/TslInfosImpl.java @@ -8,55 +8,55 @@ import at.gv.egovernment.moa.spss.api.common.TslInfos; public class TslInfosImpl implements TslInfos { - private String tslServiceTypeIdentifier; - private String tslServiceTypeStatus; - private List<String> tslServiceQualifier = new ArrayList<String>(); - private List<String> tslAdditionalServiceInformation = new ArrayList<String>(); - private String tslCountry; - - public TslInfosImpl(String country, String tslServiceTypeStatus, String tslServiceTypeIdentifier, - List<URI> tslCertificateQualifier, List<String> additionalServiceInformation) { - this.tslCountry = country; - this.tslServiceTypeStatus = tslServiceTypeStatus; - this.tslServiceTypeIdentifier = tslServiceTypeIdentifier; - - if (tslCertificateQualifier != null) { - for (URI el : tslCertificateQualifier) - this.tslServiceQualifier.add(el.toString()); - - } - - if (additionalServiceInformation != null) - this.tslAdditionalServiceInformation.addAll(additionalServiceInformation); - - } - - - @Override - public String getTslIssuerCountry() { - return tslCountry; - } - - @Override - public String getServiceTypeStatus() { - return tslServiceTypeStatus; - } - - @Override - public String getServiceTypeIdentifier() { - return tslServiceTypeIdentifier; - } - - @Override - public List<String> getQualifiers() { - return tslServiceQualifier; - } - - - @Override - public List<String> getAdditionalServiceInformation() { - return this.tslAdditionalServiceInformation; - - } + private final String tslServiceTypeIdentifier; + private final String tslServiceTypeStatus; + private final List<String> tslServiceQualifier = new ArrayList<>(); + private final List<String> tslAdditionalServiceInformation = new ArrayList<>(); + private final String tslCountry; + + public TslInfosImpl(String country, String tslServiceTypeStatus, String tslServiceTypeIdentifier, + List<URI> tslCertificateQualifier, List<String> additionalServiceInformation) { + this.tslCountry = country; + this.tslServiceTypeStatus = tslServiceTypeStatus; + this.tslServiceTypeIdentifier = tslServiceTypeIdentifier; + + if (tslCertificateQualifier != null) { + for (final URI el : tslCertificateQualifier) { + this.tslServiceQualifier.add(el.toString()); + } + + } + + if (additionalServiceInformation != null) { + this.tslAdditionalServiceInformation.addAll(additionalServiceInformation); + } + + } + + @Override + public String getTslIssuerCountry() { + return tslCountry; + } + + @Override + public String getServiceTypeStatus() { + return tslServiceTypeStatus; + } + + @Override + public String getServiceTypeIdentifier() { + return tslServiceTypeIdentifier; + } + + @Override + public List<String> getQualifiers() { + return tslServiceQualifier; + } + + @Override + public List<String> getAdditionalServiceInformation() { + return this.tslAdditionalServiceInformation; + + } } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/VerifyCMSSignatureRequestImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/VerifyCMSSignatureRequestImpl.java index e16717d..f041835 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/VerifyCMSSignatureRequestImpl.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/VerifyCMSSignatureRequestImpl.java @@ -21,7 +21,6 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.api.impl; import java.io.InputStream; @@ -32,12 +31,12 @@ import at.gv.egovernment.moa.spss.api.cmsverify.VerifyCMSSignatureRequest; /** * Default implementation of <code>VerifyCMSSignatureRequest</code>. - * + * * @author Fatemeh Philippi * @version $Id$ */ public class VerifyCMSSignatureRequestImpl - implements VerifyCMSSignatureRequest { + implements VerifyCMSSignatureRequest { /** The indexes of the signatories whose signature should be verified. */ private int[] signatories; @@ -49,39 +48,42 @@ public class VerifyCMSSignatureRequestImpl private InputStream cmsSignature; /** The date for which to verify the signature. */ private Date dateTime; - + private boolean pdf = false; private boolean extended = false; /** * Sets the indexes of the signatories whose signature should be verified. - * - * @param signatories The indexes of the signatories whose signature should be - * verified. + * + * @param signatories The indexes of the signatories whose signature should be + * verified. */ public void setSignatories(int[] signatories) { this.signatories = signatories; } + @Override public int[] getSignatories() { return signatories; } /** * Sets the date for which to verify the signature. - * + * * @param dateTime The date for which to verify the signature. */ public void setDateTime(Date dateTime) { this.dateTime = dateTime; } + @Override public Date getDateTime() { return dateTime; } /** * Sets the CMS signature to verify. + * * @param signature The CMS signature to verify. */ public void setCMSSignature(InputStream signature) { @@ -89,48 +91,55 @@ public class VerifyCMSSignatureRequestImpl } + @Override public InputStream getCMSSignature() { return cmsSignature; } /** * Sets the data object necessary for signature verification. + * * @param dataObject The data object necessary for signature verification. */ public void setDataObject(CMSDataObject dataObject) { this.dataObject = dataObject; } + @Override public CMSDataObject getDataObject() { return dataObject; } /** * Sets the profile ID of trusted certificates. + * * @param trustProfileId The profile ID of trusted certificates. */ public void setTrustProfileId(String trustProfileId) { this.trustProfileId = trustProfileId; } + @Override public String getTrustProfileId() { return trustProfileId; } public void setPDF(boolean value) { - this.pdf = value; + this.pdf = value; } - + + @Override public boolean isPDF() { - return this.pdf; + return this.pdf; } -public synchronized boolean isExtended() { - return extended; -} + @Override + public synchronized boolean isExtended() { + return extended; + } -public synchronized void setExtended(boolean extended) { - this.extended = extended; -} + public synchronized void setExtended(boolean extended) { + this.extended = extended; + } } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/VerifyCMSSignatureResponseElementImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/VerifyCMSSignatureResponseElementImpl.java index 9b7881c..f9e8e4d 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/VerifyCMSSignatureResponseElementImpl.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/VerifyCMSSignatureResponseElementImpl.java @@ -21,7 +21,6 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.api.impl; import java.util.List; @@ -33,12 +32,12 @@ import at.gv.egovernment.moa.spss.api.common.SignerInfo; /** * Default implementation of <code>VerifyCMSSignatureResponseElement</code>. - * + * * @author Fatemeh Philippi * @version $Id$ */ public class VerifyCMSSignatureResponseElementImpl - implements VerifyCMSSignatureResponseElement { + implements VerifyCMSSignatureResponseElement { /** Information about the signer certificate. */ private SignerInfo signerInfo; @@ -46,65 +45,102 @@ public class VerifyCMSSignatureResponseElementImpl private CheckResult signatureCheck; /** Information about the certificate check. */ private CheckResult certificateCheck; - + private ExtendedCertificateCheckResult extendedResult; - + private List adesResults = null; - + + private String usedAlgorithm = null; + + private Boolean coversFullDocument = null; + + private int[] byteRangeOfSignature = null; + /** * Sets a SignerInfo element according to CMS. - * + * * @param signerInfo The SignerInfo element according to CMS. */ public void setSignerInfo(SignerInfo signerInfo) { this.signerInfo = signerInfo; } + @Override public SignerInfo getSignerInfo() { return signerInfo; } /** * Sets a result of the signature verification. - * + * * @param signatureCheck The result of the signature verification. */ public void setSignatureCheck(CheckResult signatureCheck) { this.signatureCheck = signatureCheck; } + @Override public CheckResult getSignatureCheck() { return signatureCheck; } /** * Sets a result of the certificate verification. - * + * * @param certificateCheck The result of the certificate verification. */ public void setCertificateCheck(CheckResult certificateCheck) { this.certificateCheck = certificateCheck; } + @Override public CheckResult getCertificateCheck() { return certificateCheck; } public void setAdESFormResults(List adesResults) { - this.adesResults = adesResults; + this.adesResults = adesResults; } - + + @Override public List getAdESFormResults() { - return adesResults; + return adesResults; } public void setExtendedCertificateCheck(ExtendedCertificateCheckResult r) { - this.extendedResult = r; - } - - @Override - public ExtendedCertificateCheckResult getExtendedCertificateCheck() { - return extendedResult; - } - + this.extendedResult = r; + } + + @Override + public ExtendedCertificateCheckResult getExtendedCertificateCheck() { + return extendedResult; + } + + @Override + public String getSignatureAlgorithm() { + return usedAlgorithm; + } + + public void setSignatureAlgorithm(String usedAlgorithm) { + this.usedAlgorithm = usedAlgorithm; + } + + @Override + public Boolean getCoversFullDocument() { + return coversFullDocument; + } + + public void setCoversFullDocument(Boolean coversFullDocument) { + this.coversFullDocument = coversFullDocument; + } + + @Override + public int[] getByteRangeOfSignature() { + return byteRangeOfSignature; + } + + public void setByteRangeOfSignature(int[] byteRangeOfSignature) { + this.byteRangeOfSignature = byteRangeOfSignature; + } + } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/VerifyCMSSinatureResponseImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/VerifyCMSSinatureResponseImpl.java index 44fb474..c7fd29f 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/VerifyCMSSinatureResponseImpl.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/VerifyCMSSinatureResponseImpl.java @@ -21,7 +21,6 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.api.impl; import java.util.ArrayList; @@ -32,28 +31,29 @@ import at.gv.egovernment.moa.spss.api.cmsverify.VerifyCMSSignatureResponse; /** * Default implementation of <code>VerifyCMSSignatureResponse</code>. - * + * * @author Fatemeh Philippi * @version $Id$ */ public class VerifyCMSSinatureResponseImpl - implements VerifyCMSSignatureResponse { + implements VerifyCMSSignatureResponse { /** The elements contained in the response. */ private List responseElements; /** * Sets the elements contained in the response. - * + * * @param responseElements The elements contained in the response. */ public void setResponseElements(List responseElements) { this.responseElements = - responseElements != null - ? Collections.unmodifiableList(new ArrayList(responseElements)) - : null; + responseElements != null + ? Collections.unmodifiableList(new ArrayList(responseElements)) + : null; } + @Override public List getResponseElements() { return responseElements; } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/VerifySignatureInfoImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/VerifySignatureInfoImpl.java index d022ae4..f8ab10d 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/VerifySignatureInfoImpl.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/VerifySignatureInfoImpl.java @@ -21,7 +21,6 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.api.impl; import at.gv.egovernment.moa.spss.api.common.Content; @@ -30,7 +29,7 @@ import at.gv.egovernment.moa.spss.api.xmlverify.VerifySignatureLocation; /** * Default implementation of <code>VerifySignatureInfo</code>. - * + * * @author Fatemeh Philippi * @version $Id$ */ @@ -42,28 +41,29 @@ public class VerifySignatureInfoImpl implements VerifySignatureInfo { /** * Sets the location of the signature to be verified. - * - * @param verifySignatureLocation The location of the signature to be - * verified. + * + * @param verifySignatureLocation The location of the signature to be verified. */ public void setVerifySignatureLocation(VerifySignatureLocation verifySignatureLocation) { this.verifySignatureLocation = verifySignatureLocation; } + @Override public VerifySignatureLocation getVerifySignatureLocation() { return verifySignatureLocation; } /** * Sets the signature environment containing the signature to be verified. - * - * @param verifySignatureEnvironment The signature environment containing the - * signature to be verified. + * + * @param verifySignatureEnvironment The signature environment containing the + * signature to be verified. */ public void setVerifySignatureEnvironment(Content verifySignatureEnvironment) { this.verifySignatureEnvironment = verifySignatureEnvironment; } + @Override public Content getVerifySignatureEnvironment() { return verifySignatureEnvironment; } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/VerifySignatureLocationImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/VerifySignatureLocationImpl.java index 8e183bb..7f3b381 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/VerifySignatureLocationImpl.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/VerifySignatureLocationImpl.java @@ -21,19 +21,18 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.api.impl; import at.gv.egovernment.moa.spss.api.xmlverify.VerifySignatureLocation; /** * Default implementation of <code>VerifySignatureLocation</code>. - * + * * @author Fatemeh Philippi * @version $Id$ */ public class VerifySignatureLocationImpl - extends ElementSelectorImpl - implements VerifySignatureLocation { + extends ElementSelectorImpl + implements VerifySignatureLocation { } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/VerifyTransformsDataImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/VerifyTransformsDataImpl.java index 25b5c39..d1eebca 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/VerifyTransformsDataImpl.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/VerifyTransformsDataImpl.java @@ -21,7 +21,6 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.api.impl; import java.util.ArrayList; @@ -32,7 +31,7 @@ import at.gv.egovernment.moa.spss.api.xmlverify.ReferenceInfo; /** * Default implementation of <codeReferenceInfo</code>. - * + * * @author Fatemeh Philippi * @version $Id$ */ @@ -42,18 +41,19 @@ public class VerifyTransformsDataImpl implements ReferenceInfo { /** * Sets the information about the transformations contained in the signature. - * + * * @param verifyTransformsInfoProfiles The profiles containing transformation - * information. + * information. */ public void setVerifyTransformsInfoProfiles(List verifyTransformsInfoProfiles) { this.verifyTransformsInfoProfiles = - verifyTransformsInfoProfiles != null - ? Collections.unmodifiableList( - new ArrayList(verifyTransformsInfoProfiles)) - : null; + verifyTransformsInfoProfiles != null + ? Collections.unmodifiableList( + new ArrayList(verifyTransformsInfoProfiles)) + : null; } + @Override public List getVerifyTransformsInfoProfiles() { return verifyTransformsInfoProfiles; } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/VerifyTransformsInfoProfileExplicitImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/VerifyTransformsInfoProfileExplicitImpl.java index 2ce5f39..0e1e46e 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/VerifyTransformsInfoProfileExplicitImpl.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/VerifyTransformsInfoProfileExplicitImpl.java @@ -21,7 +21,6 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.api.impl; import java.util.ArrayList; @@ -32,12 +31,12 @@ import at.gv.egovernment.moa.spss.api.xmlverify.VerifyTransformsInfoProfileExpli /** * Default implementation of <code>VerifyTransformsInfoProfileExplicit</code>. - * + * * @author Fatemeh Philippi * @version $Id$ */ public class VerifyTransformsInfoProfileExplicitImpl - implements VerifyTransformsInfoProfileExplicit { + implements VerifyTransformsInfoProfileExplicit { /** The transforms contained in this profile. */ private List transforms; @@ -46,38 +45,41 @@ public class VerifyTransformsInfoProfileExplicitImpl /** * Sets the transforms contained in this profile. - * + * * @param transforms The transforms contained in this profile. */ public void setTransforms(List transforms) { this.transforms = - transforms != null - ? Collections.unmodifiableList(new ArrayList(transforms)) - : null; + transforms != null + ? Collections.unmodifiableList(new ArrayList(transforms)) + : null; } + @Override public List getTransforms() { return transforms; } /** * Sets additional information for the transforms. - * + * * @param transformParameters Additional information for the transforms. */ public void setTransformParameters(List transformParameters) { this.transformParameters = new ArrayList(transformParameters); } + @Override public List getTransformParameters() { return transformParameters; } /** * Gets the type of <code>VerifyTransformsInfoProfile</code>. - * + * * @return EXPLICIT_VERIFYTRANSFORMSINFOPROFILE */ + @Override public int getVerifyTransformsInfoProfileType() { return EXPLICIT_VERIFYTRANSFORMSINFOPROFILE; } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/VerifyTransformsInfoProfileIDImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/VerifyTransformsInfoProfileIDImpl.java index a545535..56fc9e2 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/VerifyTransformsInfoProfileIDImpl.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/VerifyTransformsInfoProfileIDImpl.java @@ -21,14 +21,13 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.api.impl; import at.gv.egovernment.moa.spss.api.xmlverify.VerifyTransformsInfoProfileID; /** * Default implementation of <code>VerifyTransformsInfoProfileID</code>. - * + * * @author Fatemeh Philippi * @version $Id$ */ @@ -39,22 +38,24 @@ public class VerifyTransformsInfoProfileIDImpl implements VerifyTransformsInfoPr /** * Sets the profile ID. - * + * * @param profileID The profile ID. */ public void setVerifyTransformsInfoProfileID(String profileID) { this.verifyTransformsInfoProfileID = profileID; } + @Override public String getVerifyTransformsInfoProfileID() { return verifyTransformsInfoProfileID; } /** * Gets the type of <code>VerifyTransformsInfoProfile</code>. - * + * * @return ID_VERIFYTRANSFORMSINFOPROFILE */ + @Override public int getVerifyTransformsInfoProfileType() { return ID_VERIFYTRANSFORMSINFOPROFILE; } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/VerifyXMLSignatureRequestImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/VerifyXMLSignatureRequestImpl.java index 91d1917..b5094b4 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/VerifyXMLSignatureRequestImpl.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/VerifyXMLSignatureRequestImpl.java @@ -34,118 +34,120 @@ import at.gv.egovernment.moa.spss.api.xmlverify.VerifyXMLSignatureRequest; /** * Default implementation of <code>VerifyXMLSignatureRequest</code>. - * + * * @author Fatemeh Philippi * @version $Id$ */ public class VerifyXMLSignatureRequestImpl implements VerifyXMLSignatureRequest { - /** Date and time for signature verification. */ - private Date dateTime; - /** The signature to be verified. */ - private VerifySignatureInfo verifySignatureInfo; - /** Supplemental information about the singature. */ - private List supplementProfiles; - /** Additional parameters for checking the signature manifest. */ - private SignatureManifestCheckParams signatureManifestCheckParams; - /** Whether to return the hash input data. */ - private boolean returnHashInputData; - private boolean extendedValidation; - /** - * The profile ID of the trust profile containing the trusted certificates. - */ - private String trustProfileId; - - /** - * Sets the date and time for signature verification. - * - * @param dateTime - * The date and time for signature verification. - */ - public void setDateTime(Date dateTime) { - this.dateTime = dateTime; - } - - public Date getDateTime() { - return dateTime; - } - - /** - * Sets the signature to be verified. - * - * @param signatureInfo - * The signature to be verified. - */ - public void setSignatureInfo(VerifySignatureInfo signatureInfo) { - this.verifySignatureInfo = signatureInfo; - } - - public VerifySignatureInfo getSignatureInfo() { - return verifySignatureInfo; - } - - /** - * Sets supplemental information about the singature. - * - * @param supplementProfiles - */ - public void setSupplementProfiles(List supplementProfiles) { - this.supplementProfiles = supplementProfiles != null - ? Collections.unmodifiableList(new ArrayList(supplementProfiles)) : null; - } - - public List getSupplementProfiles() { - return supplementProfiles; - } - - /** - * Sets supplemental information about the singature. - * - * @param params - * Supplemental information about the singature. - */ - public void setSignatureManifestCheckParams(SignatureManifestCheckParams params) { - this.signatureManifestCheckParams = params; - } - - public SignatureManifestCheckParams getSignatureManifestCheckParams() { - return signatureManifestCheckParams; - } - - /** - * Sets whether to return hash input data. - * - * @param returnSignedData - * Whether to return hash input data. - */ - public void setReturnHashInputData(boolean returnSignedData) { - this.returnHashInputData = returnSignedData; - } - - public boolean getReturnHashInputData() { - return returnHashInputData; - } - - /** - * Sets the profile ID of trusted certificates. - * - * @param trustProfileId - * The profile ID of trusted certificates. - */ - public void setTrustProfileId(String trustProfileId) { - this.trustProfileId = trustProfileId; - } - - public String getTrustProfileId() { - return trustProfileId; - } - - public synchronized void setExtendedValidation(boolean extendedValidation) { - this.extendedValidation = extendedValidation; - } - - @Override - public boolean getExtendedValidaiton() { - return extendedValidation; - } + /** Date and time for signature verification. */ + private Date dateTime; + /** The signature to be verified. */ + private VerifySignatureInfo verifySignatureInfo; + /** Supplemental information about the singature. */ + private List supplementProfiles; + /** Additional parameters for checking the signature manifest. */ + private SignatureManifestCheckParams signatureManifestCheckParams; + /** Whether to return the hash input data. */ + private boolean returnHashInputData; + private boolean extendedValidation; + /** + * The profile ID of the trust profile containing the trusted certificates. + */ + private String trustProfileId; + + /** + * Sets the date and time for signature verification. + * + * @param dateTime The date and time for signature verification. + */ + public void setDateTime(Date dateTime) { + this.dateTime = dateTime; + } + + @Override + public Date getDateTime() { + return dateTime; + } + + /** + * Sets the signature to be verified. + * + * @param signatureInfo The signature to be verified. + */ + public void setSignatureInfo(VerifySignatureInfo signatureInfo) { + this.verifySignatureInfo = signatureInfo; + } + + @Override + public VerifySignatureInfo getSignatureInfo() { + return verifySignatureInfo; + } + + /** + * Sets supplemental information about the singature. + * + * @param supplementProfiles + */ + public void setSupplementProfiles(List supplementProfiles) { + this.supplementProfiles = supplementProfiles != null + ? Collections.unmodifiableList(new ArrayList(supplementProfiles)) + : null; + } + + @Override + public List getSupplementProfiles() { + return supplementProfiles; + } + + /** + * Sets supplemental information about the singature. + * + * @param params Supplemental information about the singature. + */ + public void setSignatureManifestCheckParams(SignatureManifestCheckParams params) { + this.signatureManifestCheckParams = params; + } + + @Override + public SignatureManifestCheckParams getSignatureManifestCheckParams() { + return signatureManifestCheckParams; + } + + /** + * Sets whether to return hash input data. + * + * @param returnSignedData Whether to return hash input data. + */ + public void setReturnHashInputData(boolean returnSignedData) { + this.returnHashInputData = returnSignedData; + } + + @Override + public boolean getReturnHashInputData() { + return returnHashInputData; + } + + /** + * Sets the profile ID of trusted certificates. + * + * @param trustProfileId The profile ID of trusted certificates. + */ + public void setTrustProfileId(String trustProfileId) { + this.trustProfileId = trustProfileId; + } + + @Override + public String getTrustProfileId() { + return trustProfileId; + } + + public synchronized void setExtendedValidation(boolean extendedValidation) { + this.extendedValidation = extendedValidation; + } + + @Override + public boolean getExtendedValidaiton() { + return extendedValidation; + } } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/VerifyXMLSignatureResponseImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/VerifyXMLSignatureResponseImpl.java index 60ac3be..85af8d4 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/VerifyXMLSignatureResponseImpl.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/VerifyXMLSignatureResponseImpl.java @@ -39,154 +39,168 @@ import at.gv.egovernment.moa.spss.api.xmlverify.VerifyXMLSignatureResponse; */ public class VerifyXMLSignatureResponseImpl implements VerifyXMLSignatureResponse { - /** Information about the signer certificate. */ - private SignerInfo signerInfo; - - private ExtendedCertificateCheckResult extendedResult; - - /** - * The hash input data objects. The list consists of - * {@link at.gv.egovernment.moa.spss.api.common.InputData}s. - */ - private List hashInputDatas = new ArrayList(); - - /** - * The reference input data objects. The list consists of - * {@link at.gv.egovernment.moa.spss.api.common.InputData}s. - */ - private List referenceInputDatas = new ArrayList(); - - /** - * The list of form validation results - */ - private List adesFormResults = new ArrayList(); - - /** Information about the signature check. */ - private ReferencesCheckResult signatureCheck; - /** Information about the signature manifest check. */ - private ReferencesCheckResult signatureManifestCheck; - /** Information about the XMLDsig manifest check. */ - private List xmlDsigManifestChecks = new ArrayList(); - /** Information about the certificate check. */ - private CheckResult certificateCheck; - - /** - * Sets information about the signer certificate. - * - * @param signerInfo - * Information about the signer certificate. - */ - public void setSignerInfo(SignerInfo signerInfo) { - this.signerInfo = signerInfo; - } - - public SignerInfo getSignerInfo() { - return signerInfo; - } - - /** - * Sets data signed by the signatory. - * - * @param hashInputDatas - * The signed datas. - */ - public void setHashInputDatas(List hashInputDatas) { - this.hashInputDatas = hashInputDatas != null ? Collections.unmodifiableList(new ArrayList(hashInputDatas)) - : null; - } - - public List getHashInputDatas() { - return hashInputDatas; - } - - /** - * Sets the source data elements. - * - * @param referenceInputDatas - * The source data elements. - */ - public void setReferenceInputDatas(List referenceInputDatas) { - this.referenceInputDatas = referenceInputDatas != null - ? Collections.unmodifiableList(new ArrayList(referenceInputDatas)) : null; - } - - public List getReferenceInputDatas() { - return referenceInputDatas; - } - - /** - * Sets the result of the signature verification. - * - * @param signatureCheck - * The result of the signature verification. - */ - public void setSignatureCheck(ReferencesCheckResult signatureCheck) { - this.signatureCheck = signatureCheck; - } - - public ReferencesCheckResult getSignatureCheck() { - return signatureCheck; - } - - /** - * Sets the result of the signature manifest verification. - * - * @param signatureManifestCheck - * The result of the signature manifest verification. - */ - public void setSignatureManifestCheck(ReferencesCheckResult signatureManifestCheck) { - this.signatureManifestCheck = signatureManifestCheck; - } - - public ReferencesCheckResult getSignatureManifestCheck() { - return signatureManifestCheck; - } - - /** - * Sets the result of the certification verification. - * - * @param certificateCheck - * The result of the certificate verification. - */ - public void setCertificateCheck(CheckResult certificateCheck) { - this.certificateCheck = certificateCheck; - } - - public CheckResult getCertificateCheck() { - return certificateCheck; - } - - /** - * Sets the XMLDSigManifestChecks. - * - * @param xmlDsigManifestChecks - * The XMLDSigManifestChecks. - */ - public void setXMLDsigManifestChecks(List xmlDsigManifestChecks) { - this.xmlDsigManifestChecks = xmlDsigManifestChecks != null - ? Collections.unmodifiableList(new ArrayList(xmlDsigManifestChecks)) : null; - } - - public List getXMLDsigManifestChecks() { - return xmlDsigManifestChecks; - } - - public void setAdESFormResults(List adesFormResults) { - this.adesFormResults = adesFormResults; - } - - @Override - public List getAdESFormResults() { - return this.adesFormResults; - } - - public void setExtendedCertificateCheck(ExtendedCertificateCheckResult r) { - this.extendedResult = r; - } - - @Override - public ExtendedCertificateCheckResult getExtendedCertificateCheck() { - return extendedResult; - } + /** Information about the signer certificate. */ + private SignerInfo signerInfo; + + private ExtendedCertificateCheckResult extendedResult; + + /** + * The hash input data objects. The list consists of + * {@link at.gv.egovernment.moa.spss.api.common.InputData}s. + */ + private List hashInputDatas = new ArrayList(); + + /** + * The reference input data objects. The list consists of + * {@link at.gv.egovernment.moa.spss.api.common.InputData}s. + */ + private List referenceInputDatas = new ArrayList(); + + /** + * The list of form validation results + */ + private List adesFormResults = new ArrayList(); + + /** Information about the signature check. */ + private ReferencesCheckResult signatureCheck; + /** Information about the signature manifest check. */ + private ReferencesCheckResult signatureManifestCheck; + /** Information about the XMLDsig manifest check. */ + private List xmlDsigManifestChecks = new ArrayList(); + /** Information about the certificate check. */ + private CheckResult certificateCheck; + + private String signatureAlgorithm = null; + + /** + * Sets information about the signer certificate. + * + * @param signerInfo Information about the signer certificate. + */ + public void setSignerInfo(SignerInfo signerInfo) { + this.signerInfo = signerInfo; + } + + @Override + public SignerInfo getSignerInfo() { + return signerInfo; + } + + /** + * Sets data signed by the signatory. + * + * @param hashInputDatas The signed datas. + */ + public void setHashInputDatas(List hashInputDatas) { + this.hashInputDatas = hashInputDatas != null ? Collections.unmodifiableList(new ArrayList(hashInputDatas)) + : null; + } + + @Override + public List getHashInputDatas() { + return hashInputDatas; + } + + /** + * Sets the source data elements. + * + * @param referenceInputDatas The source data elements. + */ + public void setReferenceInputDatas(List referenceInputDatas) { + this.referenceInputDatas = referenceInputDatas != null + ? Collections.unmodifiableList(new ArrayList(referenceInputDatas)) + : null; + } + + @Override + public List getReferenceInputDatas() { + return referenceInputDatas; + } + + /** + * Sets the result of the signature verification. + * + * @param signatureCheck The result of the signature verification. + */ + public void setSignatureCheck(ReferencesCheckResult signatureCheck) { + this.signatureCheck = signatureCheck; + } + + @Override + public ReferencesCheckResult getSignatureCheck() { + return signatureCheck; + } + + /** + * Sets the result of the signature manifest verification. + * + * @param signatureManifestCheck The result of the signature manifest + * verification. + */ + public void setSignatureManifestCheck(ReferencesCheckResult signatureManifestCheck) { + this.signatureManifestCheck = signatureManifestCheck; + } + + @Override + public ReferencesCheckResult getSignatureManifestCheck() { + return signatureManifestCheck; + } + + /** + * Sets the result of the certification verification. + * + * @param certificateCheck The result of the certificate verification. + */ + public void setCertificateCheck(CheckResult certificateCheck) { + this.certificateCheck = certificateCheck; + } + + @Override + public CheckResult getCertificateCheck() { + return certificateCheck; + } + + /** + * Sets the XMLDSigManifestChecks. + * + * @param xmlDsigManifestChecks The XMLDSigManifestChecks. + */ + public void setXMLDsigManifestChecks(List xmlDsigManifestChecks) { + this.xmlDsigManifestChecks = xmlDsigManifestChecks != null + ? Collections.unmodifiableList(new ArrayList(xmlDsigManifestChecks)) + : null; + } + + @Override + public List getXMLDsigManifestChecks() { + return xmlDsigManifestChecks; + } + + public void setAdESFormResults(List adesFormResults) { + this.adesFormResults = adesFormResults; + } + + @Override + public List getAdESFormResults() { + return this.adesFormResults; + } + + public void setExtendedCertificateCheck(ExtendedCertificateCheckResult r) { + this.extendedResult = r; + } + + @Override + public ExtendedCertificateCheckResult getExtendedCertificateCheck() { + return extendedResult; + } + + @Override + public String getSignatureAlgorithm() { + return signatureAlgorithm; + } + + public void setSignatureAlgorithm(String signatureAlgorithm) { + this.signatureAlgorithm = signatureAlgorithm; + } } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/X509IssuerSerialImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/X509IssuerSerialImpl.java index aff7e10..ac2886c 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/X509IssuerSerialImpl.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/X509IssuerSerialImpl.java @@ -21,7 +21,6 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.api.impl; import java.math.BigInteger; @@ -30,7 +29,7 @@ import at.gv.egovernment.moa.spss.api.common.X509IssuerSerial; /** * Default implementation of <code>X509IssuerSerial</code>. - * + * * @author Fatemeh Philippi * @version $Id$ */ @@ -42,26 +41,28 @@ public class X509IssuerSerialImpl implements X509IssuerSerial { /** * Sets the issuer distinguished name. - * + * * @param x509IssuerName The issuer distinguished name. */ public void setX509IssuerName(String x509IssuerName) { this.x509IssuerName = x509IssuerName; } + @Override public String getX509IssuerName() { return x509IssuerName; } /** * Sets the certificate serial number. - * + * * @param x509SerialNumber The issuer serial number. */ public void setX509SerialNumber(BigInteger x509SerialNumber) { this.x509SerialNumber = x509SerialNumber; } + @Override public BigInteger getX509SerialNumber() { return x509SerialNumber; } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/XMLDataObjectAssociationImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/XMLDataObjectAssociationImpl.java index dabf29d..7769e5a 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/XMLDataObjectAssociationImpl.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/XMLDataObjectAssociationImpl.java @@ -21,7 +21,6 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.api.impl; import at.gv.egovernment.moa.spss.api.common.Content; @@ -30,7 +29,7 @@ import at.gv.egovernment.moa.spss.api.common.XMLDataObjectAssociation; /** * Default implementation of <code>XMLDataObjectAssociation</code>. - * + * * @author Fatemeh Philippi * @version $Id$ */ @@ -43,25 +42,28 @@ public class XMLDataObjectAssociationImpl implements XMLDataObjectAssociation { /** * Sets meta information about the <code>Content</code> object. + * * @param metaInfo Meta information about the <code>Content</code> object. */ public void setMetaInfo(MetaInfo metaInfo) { this.metaInfo = metaInfo; } + @Override public MetaInfo getMetaInfo() { return metaInfo; } /** * Sets the actual data contained in this object. - * + * * @param content The actual data contained in this object. */ public void setContent(Content content) { this.content = content; } + @Override public Content getContent() { return content; } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/XPathFilter2TransformImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/XPathFilter2TransformImpl.java index 175de3a..9eb4df1 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/XPathFilter2TransformImpl.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/XPathFilter2TransformImpl.java @@ -21,7 +21,6 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.api.impl; import java.util.ArrayList; @@ -31,17 +30,17 @@ import at.gv.egovernment.moa.spss.api.common.XPathFilter2Transform; /** * Default implementation of <code>XPathFilter2Transform</code>. - * + * * @author Fatemeh Philippi * @version $Id$ */ public class XPathFilter2TransformImpl - extends TransformImpl - implements XPathFilter2Transform { - + extends TransformImpl + implements XPathFilter2Transform { + /** The XPath filters. */ private List filters; - + /** * Create a new <code>XPathFilter2TransformImpl</code> object. */ @@ -50,16 +49,16 @@ public class XPathFilter2TransformImpl } /** - * Sets the XPath filters contained in this - * <code>XPathFilter2Transform</code>. - * - * @param filters The XPath filters contained in this - * <code>XPathFilter2Transform</code>. - */ + * Sets the XPath filters contained in this <code>XPathFilter2Transform</code>. + * + * @param filters The XPath filters contained in this + * <code>XPathFilter2Transform</code>. + */ public void setFilters(List filters) { this.filters = new ArrayList(filters); } + @Override public List getFilters() { return filters; } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/XPathFilterImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/XPathFilterImpl.java index 6615e9f..800270f 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/XPathFilterImpl.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/XPathFilterImpl.java @@ -21,7 +21,6 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.api.impl; import java.util.HashMap; @@ -31,7 +30,7 @@ import at.gv.egovernment.moa.spss.api.common.XPathFilter; /** * Default implementation of <code>XPathFilter</code>. - * + * * @author Fatemeh Philippi * @version $Id$ */ @@ -40,47 +39,51 @@ public class XPathFilterImpl implements XPathFilter { private String filterType; /** The XPath expression of the filter. */ private String xPathExpression; - /** The namespace prefix to URI mapping to while evaluating the XPath - * expression. */ + /** + * The namespace prefix to URI mapping to while evaluating the XPath expression. + */ private Map namespaceDeclarations = new HashMap(); /** * Sets the type of filter. - * + * * @param filterType The type of filter. */ public void setFilterType(String filterType) { this.filterType = filterType; } + @Override public String getFilterType() { return filterType; } /** * Sets the XPath expression of the filter. - * + * * @param xPathExpression The XPath expression of the filter. */ public void setXPathExpression(String xPathExpression) { this.xPathExpression = xPathExpression; } + @Override public String getXPathExpression() { return xPathExpression; } /** - * Sets the namespace prefix to URI mapping to while evaluating the XPath + * Sets the namespace prefix to URI mapping to while evaluating the XPath * expression. - * - * @param namespaceDeclarations The namespace prefix to URI mapping to while - * evaluating the XPath expression. + * + * @param namespaceDeclarations The namespace prefix to URI mapping to while + * evaluating the XPath expression. */ public void setNamespaceDelcarations(Map namespaceDeclarations) { this.namespaceDeclarations = namespaceDeclarations; } + @Override public Map getNamespaceDeclarations() { return namespaceDeclarations; } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/XPathTransformImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/XPathTransformImpl.java index f626a95..92f7170 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/XPathTransformImpl.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/XPathTransformImpl.java @@ -21,7 +21,6 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.api.impl; import java.util.HashMap; @@ -31,18 +30,19 @@ import at.gv.egovernment.moa.spss.api.common.XPathTransform; /** * Default implementation of <code>XPathTransform</code>. - * + * * @author Fatemeh Philippi * @version $Id$ */ public class XPathTransformImpl - extends TransformImpl - implements XPathTransform { - + extends TransformImpl + implements XPathTransform { + /** The XPath expression to evaluate. */ private String xPathExpression; - /** The namespace prefix to URI mapping to while evaluating the XPath - * expression. */ + /** + * The namespace prefix to URI mapping to while evaluating the XPath expression. + */ private Map namespaceDeclarations = new HashMap(); /** @@ -54,28 +54,30 @@ public class XPathTransformImpl /** * Sets the XPath expression to evaluate. - * + * * @param xPathExpression The XPath expression to evaluate. */ public void setXPathExpression(String xPathExpression) { this.xPathExpression = xPathExpression; } + @Override public String getXPathExpression() { return xPathExpression; } /** - * Sets the namespace prefix to URI mapping to while evaluating the XPath + * Sets the namespace prefix to URI mapping to while evaluating the XPath * expression. - * - * @param namespaceDeclarations The namespace prefix to URI mapping to while - * evaluating the XPath expression. + * + * @param namespaceDeclarations The namespace prefix to URI mapping to while + * evaluating the XPath expression. */ public void setNamespaceDelcarations(Map namespaceDeclarations) { this.namespaceDeclarations = namespaceDeclarations; } + @Override public Map getNamespaceDeclarations() { return namespaceDeclarations; } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/XSLTransformImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/XSLTransformImpl.java index 3fd4cc1..5995c73 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/XSLTransformImpl.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/XSLTransformImpl.java @@ -21,7 +21,6 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.api.impl; import org.w3c.dom.Element; @@ -30,14 +29,14 @@ import at.gv.egovernment.moa.spss.api.common.XSLTTransform; /** * Default implementation of <code>XSLTTransform</code>. - * + * * @author Fatemeh Philippi * @version $Id$ */ public class XSLTransformImpl extends TransformImpl implements XSLTTransform { /** The XSLT stylesheet to apply. */ private Element styleSheet; - + /** * Create a new <code>XSLTransformImpl</code> object. */ @@ -47,13 +46,14 @@ public class XSLTransformImpl extends TransformImpl implements XSLTTransform { /** * Sets the XSLT stylesheet to apply. - * + * * @param styleSheet The XSLT stylesheet to apply. */ public void setStylesheet(Element styleSheet) { this.styleSheet = styleSheet; } + @Override public Element getStylesheet() { return styleSheet; } 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..579fb51 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 @@ -21,7 +21,6 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.api.xmlbind; import java.io.InputStream; @@ -49,7 +48,7 @@ import at.gv.egovernment.moaspss.util.XPathUtils; /** * A parser to parse <code>CreateCMSSignatureRequest</code> DOM trees into * <code>CreateCMSSignatureRequest</code> API objects. - * + * * @author Patrick Peck * @version $Id$ */ @@ -60,24 +59,23 @@ public class CreateCMSSignatureRequestParser { // private static final String MOA = Constants.MOA_PREFIX + ":"; private static final String KEY_IDENTIFIER_XPATH = - "/" + MOA + "CreateCMSSignatureRequest/" + MOA + "KeyIdentifier"; + "/" + MOA + "CreateCMSSignatureRequest/" + MOA + "KeyIdentifier"; private static final String SINGLE_SIGNATURE_INFO_XPATH = - "/" + MOA + "CreateCMSSignatureRequest/" + MOA + "SingleSignatureInfo"; + "/" + MOA + "CreateCMSSignatureRequest/" + MOA + "SingleSignatureInfo"; private static final String DATA_OBJECT_INFO_XPATH = MOA + "DataObjectInfo"; 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"; private static final String BASE64_CONTENT_XPATH = MOA + "Base64Content"; private static final String EXCLUDEBYTERANGE_FROM_XPATH = MOA + "ExcludedByteRange/" + MOA + "From"; private static final String EXCLUDEBYTERANGE_TO_XPATH = MOA + "ExcludedByteRange/" + MOA + "To"; - - /** The factory to create API objects. */ - private SPSSFactory factory; + private final SPSSFactory factory; /** * Create a new <code>CreateCMSSignatureRequestParser</code>. @@ -87,44 +85,43 @@ public class CreateCMSSignatureRequestParser { } /** - * Parse a <code>CreateCMSSignatureRequest</code> DOM element, as defined - * by the MOA schema. - * + * Parse a <code>CreateCMSSignatureRequest</code> DOM element, as defined by the + * MOA schema. + * * @param requestElem The <code>CreateCMSSignatureRequest</code> to parse. The - * request must have been successfully parsed against the schema for this - * method to succeed. - * @return A <code>CreateCMSSignatureRequest</code> API object containing - * the data from the DOM element. + * request must have been successfully parsed against the + * schema for this method to succeed. + * @return A <code>CreateCMSSignatureRequest</code> API object containing the + * data from the DOM element. * @throws MOAApplicationException An error occurred parsing the request. */ public CreateCMSSignatureRequest parse(Element requestElem) - throws MOAApplicationException { + throws MOAApplicationException { - List singleSignatureInfos = parseSingleSignatureInfos(requestElem); - String keyIdentifier = - XPathUtils.getElementValue(requestElem, KEY_IDENTIFIER_XPATH, null); + final List singleSignatureInfos = parseSingleSignatureInfos(requestElem); + final String keyIdentifier = + XPathUtils.getElementValue(requestElem, KEY_IDENTIFIER_XPATH, null); return factory.createCreateCMSSignatureRequest( - keyIdentifier, - singleSignatureInfos); + keyIdentifier, + singleSignatureInfos); } /** - * Parse all <code>SingleSignatureInfo</code> elements of the + * Parse all <code>SingleSignatureInfo</code> elements of the * <code>CreateCMSSignatureRequest</code>. - * + * * @param requestElem The <code>CreateCMSSignatureRequest</code> to parse. - * @return A <code>List</code> of <code>SingleSignatureInfo</code> API - * objects. - * @throws MOAApplicationException An error occurred parsing on of the - * <code>SingleSignatureInfo</code> elements. + * @return A <code>List</code> of <code>SingleSignatureInfo</code> API objects. + * @throws MOAApplicationException An error occurred parsing on of the + * <code>SingleSignatureInfo</code> elements. */ private List parseSingleSignatureInfos(Element requestElem) - throws MOAApplicationException { + throws MOAApplicationException { - List singleSignatureInfos = new ArrayList(); - NodeIterator sigInfoElems = - XPathUtils.selectNodeIterator(requestElem, SINGLE_SIGNATURE_INFO_XPATH); + final List singleSignatureInfos = new ArrayList(); + final NodeIterator sigInfoElems = + XPathUtils.selectNodeIterator(requestElem, SINGLE_SIGNATURE_INFO_XPATH); Element sigInfoElem; while ((sigInfoElem = (Element) sigInfoElems.nextNode()) != null) { @@ -136,126 +133,130 @@ public class CreateCMSSignatureRequestParser { /** * Parse a <code>SingleSignatureInfo</code> DOM element. - * - * @param sigInfoElem The <code>SingleSignatureInfo</code> DOM element to - * parse. - * @return A <code>SingleSignatureInfo</code> API object containing the - * information of <code>sigInfoElem</code>. - * @throws MOAApplicationException An error occurred parsing the - * <code>SingleSignatureInfo</code>. + * + * @param sigInfoElem The <code>SingleSignatureInfo</code> DOM element to parse. + * @return A <code>SingleSignatureInfo</code> API object containing the + * information of <code>sigInfoElem</code>. + * @throws MOAApplicationException An error occurred parsing the + * <code>SingleSignatureInfo</code>. */ private SingleSignatureInfo parseSingleSignatureInfo(Element sigInfoElem) - throws MOAApplicationException { + throws MOAApplicationException { - DataObjectInfo dataObjectInfo = parseDataObjectInfo(sigInfoElem); + final DataObjectInfo dataObjectInfo = parseDataObjectInfo(sigInfoElem); boolean securityLayerConform; + boolean isPAdESSignature = false; if (sigInfoElem.hasAttribute(SL_CONFORM_ATTR_NAME)) { securityLayerConform = - BoolUtils.valueOf(sigInfoElem.getAttribute(SL_CONFORM_ATTR_NAME)); + BoolUtils.valueOf(sigInfoElem.getAttribute(SL_CONFORM_ATTR_NAME)); } else { 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); + dataObjectInfo, + securityLayerConform, + isPAdESSignature); } /** * Parse the <code>DataObjectInfo</code> DOM elements contained in the given * <code>SingleSignatureInfo</code> DOM element. - * - * @param sigInfoElem The <code>SingleSignatureInfo</code> DOM element - * whose <code>DataObjectInfo</code>s to parse. + * + * @param sigInfoElem The <code>SingleSignatureInfo</code> DOM element whose + * <code>DataObjectInfo</code>s to parse. * @return A <code>List</code> of <code>DataObjectInfo</code> API objects - * containing the data from the <code>DataObjectInfo</code> DOM elements. + * containing the data from the <code>DataObjectInfo</code> DOM + * elements. * @throws MOAApplicationException An error occurred parsing one of the - * <code>DataObjectInfo</code>s. + * <code>DataObjectInfo</code>s. */ private DataObjectInfo parseDataObjectInfo(Element sigInfoElem) - throws MOAApplicationException { - - Element dataObjInfoElem = (Element)XPathUtils.selectSingleNode(sigInfoElem, DATA_OBJECT_INFO_XPATH); - - String structure = dataObjInfoElem.getAttribute("Structure"); - Element dataObjectElem = - (Element) XPathUtils.selectSingleNode(dataObjInfoElem, DATA_OBJECT_XPATH); - - CMSDataObject dataObject = parseDataObject(dataObjectElem); - - return factory.createDataObjectInfo( - structure, - dataObject); - - } - - + throws MOAApplicationException { + + final Element dataObjInfoElem = (Element) XPathUtils.selectSingleNode(sigInfoElem, + DATA_OBJECT_INFO_XPATH); + + final String structure = dataObjInfoElem.getAttribute("Structure"); + final Element dataObjectElem = + (Element) XPathUtils.selectSingleNode(dataObjInfoElem, DATA_OBJECT_XPATH); - + final CMSDataObject dataObject = parseDataObject(dataObjectElem); + + return factory.createDataObjectInfo( + structure, + dataObject); + + } /** - * Parse a the <code>DataObject</code> DOM element contained in a given + * Parse a the <code>DataObject</code> DOM element contained in a given * <code>CreateCMSSignatureRequest</code> DOM element. - * - * @param requestElem The DataObject DOM element of the <code>VerifyCMSSignatureRequest</code> - * to parse. - * @return The <code>CMSDataObject</code> API object containing the data - * from the <code>DataObject</code> DOM element. + * + * @param requestElem The DataObject DOM element of the + * <code>VerifyCMSSignatureRequest</code> to parse. + * @return The <code>CMSDataObject</code> API object containing the data from + * the <code>DataObject</code> DOM element. */ private CMSDataObject parseDataObject(Element dataObjectElem) { if (dataObjectElem != null) { - Element metaInfoElem = (Element) XPathUtils.selectSingleNode(dataObjectElem, META_INFO_XPATH); + final Element metaInfoElem = (Element) XPathUtils.selectSingleNode(dataObjectElem, META_INFO_XPATH); MetaInfo metaInfo = null; - Element contentElem = (Element) XPathUtils.selectSingleNode(dataObjectElem, CONTENT_XPATH); - CMSContent content = parseContent(contentElem); + final Element contentElem = (Element) XPathUtils.selectSingleNode(dataObjectElem, CONTENT_XPATH); + final CMSContent content = parseContent(contentElem); if (metaInfoElem != null) { metaInfo = RequestParserUtils.parseMetaInfo(metaInfoElem); } - String excludeByteRangeFromStr = XPathUtils.getElementValue(dataObjectElem, EXCLUDEBYTERANGE_FROM_XPATH, null); - String excludeByteRangeToStr = XPathUtils.getElementValue(dataObjectElem, EXCLUDEBYTERANGE_TO_XPATH, null); - + final String excludeByteRangeFromStr = XPathUtils.getElementValue(dataObjectElem, + EXCLUDEBYTERANGE_FROM_XPATH, null); + final String excludeByteRangeToStr = XPathUtils.getElementValue(dataObjectElem, + EXCLUDEBYTERANGE_TO_XPATH, null); + BigDecimal excludeByteRangeFrom = null; BigDecimal excludeByteRangeTo = null; - - if (excludeByteRangeFromStr != null) - excludeByteRangeFrom = new BigDecimal(excludeByteRangeFromStr); - if (excludeByteRangeToStr != null) - excludeByteRangeTo = new BigDecimal(excludeByteRangeToStr); - + + if (excludeByteRangeFromStr != null) { + excludeByteRangeFrom = new BigDecimal(excludeByteRangeFromStr); + } + if (excludeByteRangeToStr != null) { + excludeByteRangeTo = new BigDecimal(excludeByteRangeToStr); + } + return factory.createCMSDataObject(metaInfo, content, excludeByteRangeFrom, excludeByteRangeTo); - } - else { + } else { return null; } } - - - /** - * Parse the content contained in a <code>CMSContentBaseType</code> kind of - * DOM element. - * - * @param contentElem The <code>CMSContentBaseType</code> kind of element to - * parse. - * @return A <code>CMSDataObject</code> API object containing the data - * from the given DOM element. - */ - private CMSContent parseContent(Element contentElem) { - Element base64ContentElem = + /** + * Parse the content contained in a <code>CMSContentBaseType</code> kind of DOM + * element. + * + * @param contentElem The <code>CMSContentBaseType</code> kind of element to + * parse. + * @return A <code>CMSDataObject</code> API object containing the data from the + * given DOM element. + */ + private CMSContent parseContent(Element contentElem) { + final Element base64ContentElem = (Element) XPathUtils.selectSingleNode(contentElem, BASE64_CONTENT_XPATH); - if (base64ContentElem != null) { - String base64Str = DOMUtils.getText(base64ContentElem); - InputStream binaryContent = Base64Utils.decodeToStream(base64Str, true); - return factory.createCMSContent(binaryContent); - } else { - return factory.createCMSContent( + if (base64ContentElem != null) { + final String base64Str = DOMUtils.getText(base64ContentElem); + final InputStream binaryContent = Base64Utils.decodeToStream(base64Str, true); + return factory.createCMSContent(binaryContent); + } else { + return factory.createCMSContent( contentElem.getAttribute("Reference")); - } - } + } + } }
\ No newline at end of file diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlbind/CreateCMSSignatureResponseBuilder.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlbind/CreateCMSSignatureResponseBuilder.java index d808f2b..12b408b 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlbind/CreateCMSSignatureResponseBuilder.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlbind/CreateCMSSignatureResponseBuilder.java @@ -21,14 +21,10 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.api.xmlbind; -import java.io.IOException; import java.util.Iterator; -import javax.xml.transform.TransformerException; - import org.w3c.dom.Document; import org.w3c.dom.Element; @@ -37,102 +33,108 @@ import at.gv.egovernment.moa.spss.api.cmssign.CMSSignatureResponse; import at.gv.egovernment.moa.spss.api.cmssign.CreateCMSSignatureResponse; import at.gv.egovernment.moa.spss.api.cmssign.CreateCMSSignatureResponseElement; import at.gv.egovernment.moa.spss.api.xmlsign.ErrorResponse; -import at.gv.egovernment.moa.spss.api.xmlsign.SignatureEnvironmentResponse; import at.gv.egovernment.moaspss.util.Constants; -import at.gv.egovernment.moaspss.util.DOMUtils; /** - * Convert a <code>CreateCMSSignatureResponse</code> API object into its - * XML representation, according to the MOA XML schema. - * + * Convert a <code>CreateCMSSignatureResponse</code> API object into its XML + * representation, according to the MOA XML schema. + * * @version $Id$ */ public class CreateCMSSignatureResponseBuilder { private static final String MOA_NS_URI = Constants.MOA_NS_URI; /** The XML document containing the response element. */ - private Document responseDoc; + private final Document responseDoc; /** The response <code>CreateCMSSignatureResponse</code> DOM element. */ - private Element responseElem; + private final Element responseElem; /** * Create a new <code>CreateCMSSignatureResponseBuilder</code>: - * - * @throws MOASystemException An error occurred setting up the resulting - * XML document. + * + * @throws MOASystemException An error occurred setting up the resulting XML + * document. */ public CreateCMSSignatureResponseBuilder() throws MOASystemException { responseDoc = - ResponseBuilderUtils.createResponse("CreateCMSSignatureResponse"); + ResponseBuilderUtils.createResponse("CreateCMSSignatureResponse"); responseElem = responseDoc.getDocumentElement(); } /** - * Build a document containing a <code>CreateCMSSignatureResponse</code> - * DOM element being the XML representation of the given + * Build a document containing a <code>CreateCMSSignatureResponse</code> DOM + * element being the XML representation of the given * <code>CreateCMSSignatureResponse</code> API object. - * - * @param response The <code>CreateCMSSignatureResponse</code> to convert - * to XML. - * @return A document containing the <code>CreateCMSSignatureResponse</code> - * DOM element. + * + * @param response The <code>CreateCMSSignatureResponse</code> to convert to + * XML. + * @return A document containing the <code>CreateCMSSignatureResponse</code> DOM + * element. */ public Document build(CreateCMSSignatureResponse response) { Iterator iter; - for (iter = response.getResponseElements().iterator(); iter.hasNext();) { - CreateCMSSignatureResponseElement responseElement = - (CreateCMSSignatureResponseElement) iter.next(); - - switch (responseElement.getResponseType()) { - case CreateCMSSignatureResponseElement.CMS_SIGNATURE : - CMSSignatureResponse cmsSignatureResponse = (CMSSignatureResponse) responseElement; - addCMSSignature(cmsSignatureResponse); - break; - - case CreateCMSSignatureResponseElement.ERROR_RESPONSE : - ErrorResponse errorResponse = (ErrorResponse) responseElement; - addErrorResponse(errorResponse); - break; + + final Object responseObj = iter.next(); + + if (responseObj instanceof ErrorResponse) { + final ErrorResponse errorResponse = (ErrorResponse) responseObj; + addErrorResponse(errorResponse); + + } else if (responseObj instanceof CreateCMSSignatureResponseElement) { + final CMSSignatureResponse cmsSignatureResponse = (CMSSignatureResponse) responseObj; + addCMSSignature(cmsSignatureResponse); + } +// CreateCMSSignatureResponseElement responseElement = +// (CreateCMSSignatureResponseElement) iter.next(); +// +// switch (responseElement.getResponseType()) { +// case CreateCMSSignatureResponseElement.CMS_SIGNATURE : +// +// break; +// +// case CreateCMSSignatureResponseElement.ERROR_RESPONSE : +// +// break; +// } + } return responseDoc; } - - /** * Add a <code>CMSSignature</code> element to the response. - * + * * @param cmsSignatureResponse The content to put under the - * <code>CMSSignature</code> element. + * <code>CMSSignature</code> element. */ private void addCMSSignature(CMSSignatureResponse cmsSignatureResponse) { - String base64Value = cmsSignatureResponse.getCMSSignature(); - - Element cmsSignature = responseDoc.createElementNS(MOA_NS_URI, "CMSSignature"); - cmsSignature.setTextContent(base64Value); - - responseElem.appendChild(cmsSignature); - -} - + final String base64Value = cmsSignatureResponse.getCMSSignature(); + + final Element cmsSignature = responseDoc.createElementNS(MOA_NS_URI, "CMSSignature"); + cmsSignature.setTextContent(base64Value); + + responseElem.appendChild(cmsSignature); + + } + /** * Add a <code>ErrorResponse</code> element to the response. - * + * * @param errorResponse The API object containing the information to put into - * the <code>ErrorResponse</code> DOM element. + * the <code>ErrorResponse</code> DOM element. */ private void addErrorResponse(ErrorResponse errorResponse) { - Element errorElem = - responseDoc.createElementNS(MOA_NS_URI, "ErrorResponse"); - Element errorCodeElem = - responseDoc.createElementNS(MOA_NS_URI, "ErrorCode"); - Element infoElem = responseDoc.createElementNS(MOA_NS_URI, "Info"); - String errorCodeStr = Integer.toString(errorResponse.getErrorCode()); + final Element errorElem = + responseDoc.createElementNS(MOA_NS_URI, "ErrorResponse"); + final Element errorCodeElem = + responseDoc.createElementNS(MOA_NS_URI, "ErrorCode"); + final Element infoElem = responseDoc.createElementNS(MOA_NS_URI, "Info"); + final String errorCodeStr = Integer.toString(errorResponse.getErrorCode()); errorCodeElem.appendChild(responseDoc.createTextNode(errorCodeStr)); errorElem.appendChild(errorCodeElem); diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlbind/CreateXMLSignatureRequestParser.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlbind/CreateXMLSignatureRequestParser.java index d677f88..8898aaf 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlbind/CreateXMLSignatureRequestParser.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlbind/CreateXMLSignatureRequestParser.java @@ -21,7 +21,6 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.api.xmlbind; import java.util.ArrayList; @@ -47,7 +46,7 @@ import at.gv.egovernment.moaspss.util.XPathUtils; /** * A parser to parse <code>CreateXMLSignatureRequest</code> DOM trees into * <code>CreateXMLSignatureRequest</code> API objects. - * + * * @author Patrick Peck * @version $Id$ */ @@ -58,25 +57,25 @@ public class CreateXMLSignatureRequestParser { // private static final String MOA = Constants.MOA_PREFIX + ":"; private static final String KEY_IDENTIFIER_XPATH = - "/" + MOA + "CreateXMLSignatureRequest/" + MOA + "KeyIdentifier"; + "/" + MOA + "CreateXMLSignatureRequest/" + MOA + "KeyIdentifier"; private static final String SINGLE_SIGNATURE_INFO_XPATH = - "/" + MOA + "CreateXMLSignatureRequest/" + MOA + "SingleSignatureInfo"; + "/" + MOA + "CreateXMLSignatureRequest/" + MOA + "SingleSignatureInfo"; private static final String DATA_OBJECT_INFO_XPATH = MOA + "DataObjectInfo"; private static final String DATA_OBJECT_XPATH = MOA + "DataObject"; private static final String CREATE_SIGNATURE_INFO_XPATH = - MOA + "CreateSignatureInfo"; + MOA + "CreateSignatureInfo"; private static final String CREATE_TRANSFORMS_INFO_PROFILE_XPATH = - (MOA + "CreateTransformsInfoProfile | ") - + (MOA + "CreateTransformsInfoProfileID"); + MOA + "CreateTransformsInfoProfile | " + + MOA + "CreateTransformsInfoProfileID"; private static final String CREATE_SIGNATURE_ENVIRONMENT_XPATH = - MOA + "CreateSignatureEnvironment"; + MOA + "CreateSignatureEnvironment"; private static final String CREATE_SIGNATURE_ENVIRONMENT_PROFILE_XPATH = - (MOA + "CreateSignatureEnvironmentProfile | ") - + (MOA + "CreateSignatureEnvironmentProfileID"); + MOA + "CreateSignatureEnvironmentProfile | " + + MOA + "CreateSignatureEnvironmentProfileID"; private static final String SL_CONFORM_ATTR_NAME = "SecurityLayerConformity"; - + /** The factory to create API objects. */ - private SPSSFactory factory; + private final SPSSFactory factory; /** * Create a new <code>CreateXMLSignatureRequestParser</code>. @@ -86,44 +85,43 @@ public class CreateXMLSignatureRequestParser { } /** - * Parse a <code>CreateXMLSignatureRequest</code> DOM element, as defined - * by the MOA schema. - * + * Parse a <code>CreateXMLSignatureRequest</code> DOM element, as defined by the + * MOA schema. + * * @param requestElem The <code>CreateXMLSignatureRequest</code> to parse. The - * request must have been successfully parsed against the schema for this - * method to succeed. - * @return A <code>CreateXMLSignatureRequest</code> API object containing - * the data from the DOM element. + * request must have been successfully parsed against the + * schema for this method to succeed. + * @return A <code>CreateXMLSignatureRequest</code> API object containing the + * data from the DOM element. * @throws MOAApplicationException An error occurred parsing the request. */ public CreateXMLSignatureRequest parse(Element requestElem) - throws MOAApplicationException { + throws MOAApplicationException { - List singleSignatureInfos = parseSingleSignatureInfos(requestElem); - String keyIdentifier = - XPathUtils.getElementValue(requestElem, KEY_IDENTIFIER_XPATH, null); + final List singleSignatureInfos = parseSingleSignatureInfos(requestElem); + final String keyIdentifier = + XPathUtils.getElementValue(requestElem, KEY_IDENTIFIER_XPATH, null); return factory.createCreateXMLSignatureRequest( - keyIdentifier, - singleSignatureInfos); + keyIdentifier, + singleSignatureInfos); } /** - * Parse all <code>SingleSignatureInfo</code> elements of the + * Parse all <code>SingleSignatureInfo</code> elements of the * <code>CreateXMLSignatureRequest</code>. - * + * * @param requestElem The <code>CreateXMLSignatureRequest</code> to parse. - * @return A <code>List</code> of <code>SingleSignatureInfo</code> API - * objects. - * @throws MOAApplicationException An error occurred parsing on of the - * <code>SingleSignatureInfo</code> elements. + * @return A <code>List</code> of <code>SingleSignatureInfo</code> API objects. + * @throws MOAApplicationException An error occurred parsing on of the + * <code>SingleSignatureInfo</code> elements. */ private List parseSingleSignatureInfos(Element requestElem) - throws MOAApplicationException { + throws MOAApplicationException { - List singleSignatureInfos = new ArrayList(); - NodeIterator sigInfoElems = - XPathUtils.selectNodeIterator(requestElem, SINGLE_SIGNATURE_INFO_XPATH); + final List singleSignatureInfos = new ArrayList(); + final NodeIterator sigInfoElems = + XPathUtils.selectNodeIterator(requestElem, SINGLE_SIGNATURE_INFO_XPATH); Element sigInfoElem; while ((sigInfoElem = (Element) sigInfoElems.nextNode()) != null) { @@ -135,52 +133,52 @@ public class CreateXMLSignatureRequestParser { /** * Parse a <code>SingleSignatureInfo</code> DOM element. - * - * @param sigInfoElem The <code>SingleSignatureInfo</code> DOM element to - * parse. - * @return A <code>SingleSignatureInfo</code> API object containing the - * information of <code>sigInfoElem</code>. - * @throws MOAApplicationException An error occurred parsing the - * <code>SingleSignatureInfo</code>. + * + * @param sigInfoElem The <code>SingleSignatureInfo</code> DOM element to parse. + * @return A <code>SingleSignatureInfo</code> API object containing the + * information of <code>sigInfoElem</code>. + * @throws MOAApplicationException An error occurred parsing the + * <code>SingleSignatureInfo</code>. */ private SingleSignatureInfo parseSingleSignatureInfo(Element sigInfoElem) - throws MOAApplicationException { + throws MOAApplicationException { - List dataObjectInfos = parseDataObjectInfos(sigInfoElem); - CreateSignatureInfo createSignatureInfo = - parseCreateSignatureInfo(sigInfoElem); + final List dataObjectInfos = parseDataObjectInfos(sigInfoElem); + final CreateSignatureInfo createSignatureInfo = + parseCreateSignatureInfo(sigInfoElem); boolean securityLayerConform; if (sigInfoElem.hasAttribute(SL_CONFORM_ATTR_NAME)) { securityLayerConform = - BoolUtils.valueOf(sigInfoElem.getAttribute(SL_CONFORM_ATTR_NAME)); + BoolUtils.valueOf(sigInfoElem.getAttribute(SL_CONFORM_ATTR_NAME)); } else { securityLayerConform = true; } return factory.createSingleSignatureInfo( - dataObjectInfos, - createSignatureInfo, - securityLayerConform); + dataObjectInfos, + createSignatureInfo, + securityLayerConform); } /** * Parse the <code>DataObjectInfo</code> DOM elements contained in the given * <code>SingleSignatureInfo</code> DOM element. - * - * @param sigInfoElem The <code>SingleSignatureInfo</code> DOM element - * whose <code>DataObjectInfo</code>s to parse. + * + * @param sigInfoElem The <code>SingleSignatureInfo</code> DOM element whose + * <code>DataObjectInfo</code>s to parse. * @return A <code>List</code> of <code>DataObjectInfo</code> API objects - * containing the data from the <code>DataObjectInfo</code> DOM elements. + * containing the data from the <code>DataObjectInfo</code> DOM + * elements. * @throws MOAApplicationException An error occurred parsing one of the - * <code>DataObjectInfo</code>s. + * <code>DataObjectInfo</code>s. */ private List parseDataObjectInfos(Element sigInfoElem) - throws MOAApplicationException { + throws MOAApplicationException { - List dataObjectInfos = new ArrayList(); - NodeIterator dataObjInfoElems = - XPathUtils.selectNodeIterator(sigInfoElem, DATA_OBJECT_INFO_XPATH); + final List dataObjectInfos = new ArrayList(); + final NodeIterator dataObjInfoElems = + XPathUtils.selectNodeIterator(sigInfoElem, DATA_OBJECT_INFO_XPATH); Element dataObjInfoElem; while ((dataObjInfoElem = (Element) dataObjInfoElems.nextNode()) != null) { @@ -191,91 +189,91 @@ public class CreateXMLSignatureRequestParser { /** * Parse a <code>DataObjectInfo</code> DOM element. - * - * @param dataObjInfoElem The <code>DataObjectInfo</code> DOM element to - * parse. - * @return A <code>DataObjectInfo</code> API element containing the data - * from <code>dataObjInfoElem</code>. + * + * @param dataObjInfoElem The <code>DataObjectInfo</code> DOM element to parse. + * @return A <code>DataObjectInfo</code> API element containing the data from + * <code>dataObjInfoElem</code>. * @throws MOAApplicationException An error occurred parsing the - * <code>DataObjectInfo</code>. + * <code>DataObjectInfo</code>. */ private DataObjectInfo parseDataObjectInfo(Element dataObjInfoElem) - throws MOAApplicationException { - - String structure = dataObjInfoElem.getAttribute("Structure"); - Element dataObjectElem = - (Element) XPathUtils.selectSingleNode(dataObjInfoElem, DATA_OBJECT_XPATH); - Content dataObject = RequestParserUtils.parseContent(dataObjectElem); - CreateTransformsInfoProfile createTransformsInfoProfile = - parseCreateTransformsInfoProfile(dataObjInfoElem); + throws MOAApplicationException { + + final String structure = dataObjInfoElem.getAttribute("Structure"); + final Element dataObjectElem = + (Element) XPathUtils.selectSingleNode(dataObjInfoElem, DATA_OBJECT_XPATH); + final Content dataObject = RequestParserUtils.parseContent(dataObjectElem); + final CreateTransformsInfoProfile createTransformsInfoProfile = + parseCreateTransformsInfoProfile(dataObjInfoElem); boolean childOfManifest; if (dataObjInfoElem.hasAttribute("ChildOfManifest")) { childOfManifest = - BoolUtils.valueOf(dataObjInfoElem.getAttribute("ChildOfManifest")); + BoolUtils.valueOf(dataObjInfoElem.getAttribute("ChildOfManifest")); } else { childOfManifest = false; } return factory.createDataObjectInfo( - structure, - childOfManifest, - dataObject, - createTransformsInfoProfile); + structure, + childOfManifest, + dataObject, + createTransformsInfoProfile); } /** * Parse a <code>CreateTransformsInfoProfile</code> DOM element. - * - * @param dataObjInfoElem The <code>DataObjectInfo</code> DOM element - * containing the <code>CreateTransformsInfoProfile</code>. + * + * @param dataObjInfoElem The <code>DataObjectInfo</code> DOM element containing + * the <code>CreateTransformsInfoProfile</code>. * @return The <code>CreateTransformsInfoProfile</code> API object containing - * the profile found in <code>dataObjInfoElem</code>. - * @throws MOAApplicationException An error occurred parsing the - * <code>CreateTransformsInfoProfile</code>. + * the profile found in <code>dataObjInfoElem</code>. + * @throws MOAApplicationException An error occurred parsing the + * <code>CreateTransformsInfoProfile</code>. */ private CreateTransformsInfoProfile parseCreateTransformsInfoProfile(Element dataObjInfoElem) - throws MOAApplicationException { + throws MOAApplicationException { - Element profileElem = - (Element) XPathUtils.selectSingleNode( - dataObjInfoElem, - CREATE_TRANSFORMS_INFO_PROFILE_XPATH); + final Element profileElem = + (Element) XPathUtils.selectSingleNode( + dataObjInfoElem, + CREATE_TRANSFORMS_INFO_PROFILE_XPATH); if ("CreateTransformsInfoProfile".equals(profileElem.getLocalName())) { - ProfileParser profileParser = new ProfileParser(); + final ProfileParser profileParser = new ProfileParser(); return profileParser.parseCreateTransformsInfoProfile(profileElem); } else { - String profileID = DOMUtils.getText(profileElem); + final String profileID = DOMUtils.getText(profileElem); return factory.createCreateTransformsInfoProfile(profileID); } } /** - * Parse the <code>CreateSignatureInfo</code> DOM element contained in - * a <code>SingleSignatureInfo</code>. - * + * Parse the <code>CreateSignatureInfo</code> DOM element contained in a + * <code>SingleSignatureInfo</code>. + * * @param sigInfoElem The <code>SingleSignatureInfo</code> DOM element - * containing the <code>CreateSignatureInfo</code> to be parsed. - * @return A <code>CreateSignatureInfo</code> API object containing the - * data from the <code>CreateSignatureInfo</code> DOM element, or - * <code>null</code>, if none was found. + * containing the <code>CreateSignatureInfo</code> to be + * parsed. + * @return A <code>CreateSignatureInfo</code> API object containing the data + * from the <code>CreateSignatureInfo</code> DOM element, or + * <code>null</code>, if none was found. */ private CreateSignatureInfo parseCreateSignatureInfo(Element sigInfoElem) { - Element createInfoElem = - (Element) XPathUtils.selectSingleNode( - sigInfoElem, - CREATE_SIGNATURE_INFO_XPATH); + final Element createInfoElem = + (Element) XPathUtils.selectSingleNode( + sigInfoElem, + CREATE_SIGNATURE_INFO_XPATH); if (createInfoElem != null) { - Element environmentElem = - (Element) XPathUtils.selectSingleNode( - createInfoElem, - CREATE_SIGNATURE_ENVIRONMENT_XPATH); - Content environment = RequestParserUtils.parseContent(environmentElem); - CreateSignatureEnvironmentProfile environmentProfile = - parseCreateSignatureEnvironmentProfile(createInfoElem); + final Element environmentElem = + (Element) XPathUtils.selectSingleNode( + createInfoElem, + CREATE_SIGNATURE_ENVIRONMENT_XPATH); + final Content environment = RequestParserUtils.parseContent(environmentElem); + final CreateSignatureEnvironmentProfile environmentProfile = + parseCreateSignatureEnvironmentProfile(createInfoElem); return factory.createCreateSignatureInfo(environment, environmentProfile); } else { @@ -284,26 +282,25 @@ public class CreateXMLSignatureRequestParser { } /** - * Parse the <code>CreateSignatureEnvironmentProfile</code> contained in - * the given <code>CreateSignatureInfo</code> DOM element. - * - * @param createInfoElem <code>CreateSignatureInfo</code> DOM element to - * parse. - * @return The <code>CreateSignatureEnvironmentProfile</code> contained - * in the given <code>CreateSignatureInfo</code> DOM element.. + * Parse the <code>CreateSignatureEnvironmentProfile</code> contained in the + * given <code>CreateSignatureInfo</code> DOM element. + * + * @param createInfoElem <code>CreateSignatureInfo</code> DOM element to parse. + * @return The <code>CreateSignatureEnvironmentProfile</code> contained in the + * given <code>CreateSignatureInfo</code> DOM element.. */ private CreateSignatureEnvironmentProfile parseCreateSignatureEnvironmentProfile(Element createInfoElem) { - Element profileElem = - (Element) XPathUtils.selectSingleNode( - createInfoElem, - CREATE_SIGNATURE_ENVIRONMENT_PROFILE_XPATH); + final Element profileElem = + (Element) XPathUtils.selectSingleNode( + createInfoElem, + CREATE_SIGNATURE_ENVIRONMENT_PROFILE_XPATH); if ("CreateSignatureEnvironmentProfile" - .equals(profileElem.getLocalName())) { - ProfileParser profileParser = new ProfileParser(); + .equals(profileElem.getLocalName())) { + final ProfileParser profileParser = new ProfileParser(); return profileParser.parseCreateSignatureEnvironmentProfile(profileElem); } else { - String profileID = DOMUtils.getText(profileElem); + final String profileID = DOMUtils.getText(profileElem); return factory.createCreateSignatureEnvironmentProfile(profileID); } } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlbind/CreateXMLSignatureResponseBuilder.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlbind/CreateXMLSignatureResponseBuilder.java index 3c93fce..d6af889 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlbind/CreateXMLSignatureResponseBuilder.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlbind/CreateXMLSignatureResponseBuilder.java @@ -21,7 +21,6 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.api.xmlbind; import java.util.Iterator; @@ -38,9 +37,9 @@ import at.gv.egovernment.moa.spss.api.xmlsign.SignatureEnvironmentResponse; import at.gv.egovernment.moaspss.util.Constants; /** - * Convert a <code>CreateXMLSignatureResponse</code> API object into its - * XML representation, according to the MOA XML schema. - * + * Convert a <code>CreateXMLSignatureResponse</code> API object into its XML + * representation, according to the MOA XML schema. + * * @author Patrick Peck * @version $Id$ */ @@ -48,48 +47,48 @@ public class CreateXMLSignatureResponseBuilder { private static final String MOA_NS_URI = Constants.MOA_NS_URI; /** The XML document containing the response element. */ - private Document responseDoc; + private final Document responseDoc; /** The response <code>CreateXMLSignatureResponse</code> DOM element. */ - private Element responseElem; + private final Element responseElem; /** * Create a new <code>CreateXMLSignatureResponseBuilder</code>: - * - * @throws MOASystemException An error occurred setting up the resulting - * XML document. + * + * @throws MOASystemException An error occurred setting up the resulting XML + * document. */ public CreateXMLSignatureResponseBuilder() throws MOASystemException { responseDoc = - ResponseBuilderUtils.createResponse("CreateXMLSignatureResponse"); + ResponseBuilderUtils.createResponse("CreateXMLSignatureResponse"); responseElem = responseDoc.getDocumentElement(); } /** - * Build a document containing a <code>CreateXMLSignatureResponse</code> - * DOM element being the XML representation of the given + * Build a document containing a <code>CreateXMLSignatureResponse</code> DOM + * element being the XML representation of the given * <code>CreateXMLSignatureResponse</code> API object. - * - * @param response The <code>CreateXMLSignatureResponse</code> to convert - * to XML. - * @return A document containing the <code>CreateXMLSignatureResponse</code> - * DOM element. + * + * @param response The <code>CreateXMLSignatureResponse</code> to convert to + * XML. + * @return A document containing the <code>CreateXMLSignatureResponse</code> DOM + * element. */ public Document build(CreateXMLSignatureResponse response) { Iterator iter; for (iter = response.getResponseElements().iterator(); iter.hasNext();) { - CreateXMLSignatureResponseElement responseElement = - (CreateXMLSignatureResponseElement) iter.next(); + final CreateXMLSignatureResponseElement responseElement = + (CreateXMLSignatureResponseElement) iter.next(); switch (responseElement.getResponseType()) { - case CreateXMLSignatureResponseElement.SIGNATURE_ENVIRONMENT_RESPONSE : - SignatureEnvironmentResponse envResponse = - (SignatureEnvironmentResponse) responseElement; + case CreateXMLSignatureResponseElement.SIGNATURE_ENVIRONMENT_RESPONSE: + final SignatureEnvironmentResponse envResponse = + (SignatureEnvironmentResponse) responseElement; addSignatureEnvironment(envResponse); break; - case CreateXMLSignatureResponseElement.ERROR_RESPONSE : - ErrorResponse errorResponse = (ErrorResponse) responseElement; + case CreateXMLSignatureResponseElement.ERROR_RESPONSE: + final ErrorResponse errorResponse = (ErrorResponse) responseElement; addErrorResponse(errorResponse); break; } @@ -101,35 +100,36 @@ public class CreateXMLSignatureResponseBuilder { /** * Add a <code>SignatureEnvironment</code> element to the response. - * + * * @param envResponse The content to put under the - * <code>SignatureEnvironment</code> element. This should either be a - * <code>dsig:Signature</code> element (in case of a detached signature) or - * the signature environment containing the signature (in case of - * an enveloping signature). + * <code>SignatureEnvironment</code> element. This should + * either be a <code>dsig:Signature</code> element (in case + * of a detached signature) or the signature environment + * containing the signature (in case of an enveloping + * signature). */ private void addSignatureEnvironment(SignatureEnvironmentResponse envResponse) { - Element content = envResponse.getSignatureEnvironment(); - Node importedSignature = responseDoc.importNode(content, true); - Element signatureEnvironment = - responseDoc.createElementNS(MOA_NS_URI, "SignatureEnvironment"); + final Element content = envResponse.getSignatureEnvironment(); + final Node importedSignature = responseDoc.importNode(content, true); + final Element signatureEnvironment = + responseDoc.createElementNS(MOA_NS_URI, "SignatureEnvironment"); signatureEnvironment.appendChild(importedSignature); responseElem.appendChild(signatureEnvironment); } /** * Add a <code>ErrorResponse</code> element to the response. - * + * * @param errorResponse The API object containing the information to put into - * the <code>ErrorResponse</code> DOM element. + * the <code>ErrorResponse</code> DOM element. */ private void addErrorResponse(ErrorResponse errorResponse) { - Element errorElem = - responseDoc.createElementNS(MOA_NS_URI, "ErrorResponse"); - Element errorCodeElem = - responseDoc.createElementNS(MOA_NS_URI, "ErrorCode"); - Element infoElem = responseDoc.createElementNS(MOA_NS_URI, "Info"); - String errorCodeStr = Integer.toString(errorResponse.getErrorCode()); + final Element errorElem = + responseDoc.createElementNS(MOA_NS_URI, "ErrorResponse"); + final Element errorCodeElem = + responseDoc.createElementNS(MOA_NS_URI, "ErrorCode"); + final Element infoElem = responseDoc.createElementNS(MOA_NS_URI, "Info"); + final String errorCodeStr = Integer.toString(errorResponse.getErrorCode()); errorCodeElem.appendChild(responseDoc.createTextNode(errorCodeStr)); errorElem.appendChild(errorCodeElem); diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlbind/ProfileParser.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlbind/ProfileParser.java index 6b34922..b8cb361 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlbind/ProfileParser.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlbind/ProfileParser.java @@ -21,7 +21,6 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.api.xmlbind; import java.io.IOException; @@ -52,85 +51,86 @@ import at.gv.egovernment.moaspss.util.XPathUtils; /** * Parse the various profile elements contained in the MOA web service requests * and given as separate files in the MOA configuration. - * + * * The profiles parsed must be schema valid according to the MOA XML schema. - * + * * @author Patrick Peck * @version $Id$ */ public class ProfileParser { - + // // XPath expressions to select parts of the profiles // private static final String MOA = Constants.MOA_PREFIX + ":"; private static final String DSIG = Constants.DSIG_PREFIX + ":"; private static final String CREATE_TRANSFORMS_XPATH = - MOA + "CreateTransformsInfo/" + DSIG + "Transforms"; + MOA + "CreateTransformsInfo/" + DSIG + "Transforms"; private static final String FINAL_DATA_META_INFO_XPATH = - MOA + "CreateTransformsInfo/" + MOA + "FinalDataMetaInfo"; + MOA + "CreateTransformsInfo/" + MOA + "FinalDataMetaInfo"; private static final String CREATE_SIGNATURE_LOCATION_XPATH = - MOA + "CreateSignatureLocation"; + MOA + "CreateSignatureLocation"; private static final String SUPPLEMENT_XPATH = MOA + "Supplement"; private static final String VERIFY_TRANSFORMS_XPATH = DSIG + "Transforms"; private static final String TRANSFORM_PARAMETER_XPATH = - MOA + "TransformParameter"; + MOA + "TransformParameter"; private static final String TRANSFORM_PARAMETER_CONTENT_XPATH = - MOA + "Base64Content | " + MOA + "Hash"; + MOA + "Base64Content | " + MOA + "Hash"; private static final String DIGEST_METHOD_XPATH = DSIG + "DigestMethod"; private static final String DIGEST_VALUE_XPATH = DSIG + "DigestValue"; /** The factory used to create API objects. */ - private SPSSFactory factory = SPSSFactory.getInstance(); + private final SPSSFactory factory = SPSSFactory.getInstance(); /** * Parse a <code>CreateTransformsInfoProfile</code> DOM element. - * - * @param profileElem The <code>CreateTransformsInfoProfile</code> element - * to parse. + * + * @param profileElem The <code>CreateTransformsInfoProfile</code> element to + * parse. * @return The <code>CreateTransformsInfoProfile</code> API object containing - * the data from the <code>profileElem</code>. - * @throws MOAApplicationException An error occurred parsing the DOM element. + * the data from the <code>profileElem</code>. + * @throws MOAApplicationException An error occurred parsing the DOM element. */ public CreateTransformsInfoProfile parseCreateTransformsInfoProfile(Element profileElem) - throws MOAApplicationException { - CreateTransformsInfo createTransformsInfo = - parseCreateTransformsInfo(profileElem); - List supplements = parseSupplements(profileElem); + throws MOAApplicationException { + final CreateTransformsInfo createTransformsInfo = + parseCreateTransformsInfo(profileElem); + final List supplements = parseSupplements(profileElem); return factory.createCreateTransformsInfoProfile( - createTransformsInfo, - supplements); + createTransformsInfo, + supplements); } /** - * Parse the <code>CreateTransformsInfo</code> DOM element contained in a + * Parse the <code>CreateTransformsInfo</code> DOM element contained in a * <code>CreateTransformsInfoProfile</code>. - * - * @param profileElem The <code>CreateTransformsInfoProfile</code> DOM - * element containing the <code>CreateTransformsInfo</code>. - * @return The <code>CreateTransformsInfo</code> API object containinig the - * data from the <code>CreateTransformsInfo</code> DOM element. + * + * @param profileElem The <code>CreateTransformsInfoProfile</code> DOM element + * containing the <code>CreateTransformsInfo</code>. + * @return The <code>CreateTransformsInfo</code> API object containinig the data + * from the <code>CreateTransformsInfo</code> DOM element. * @throws MOAApplicationException An error occurred parsing the - * <code>CreateTransformsInfo</code> DOM element. + * <code>CreateTransformsInfo</code> DOM + * element. */ private CreateTransformsInfo parseCreateTransformsInfo(Element profileElem) - throws MOAApplicationException { + throws MOAApplicationException { - Element transformsElem = - (Element) XPathUtils.selectSingleNode( - profileElem, - CREATE_TRANSFORMS_XPATH); - Element metaInfoElem = - (Element) XPathUtils.selectSingleNode( - profileElem, - FINAL_DATA_META_INFO_XPATH); + final Element transformsElem = + (Element) XPathUtils.selectSingleNode( + profileElem, + CREATE_TRANSFORMS_XPATH); + final Element metaInfoElem = + (Element) XPathUtils.selectSingleNode( + profileElem, + FINAL_DATA_META_INFO_XPATH); MetaInfo finalDataMetaInfo; List transforms; - // parse the dsig:Transforms + // parse the dsig:Transforms if (transformsElem != null) { - TransformParser transformsParser = new TransformParser(); + final TransformParser transformsParser = new TransformParser(); transforms = transformsParser.parseTransforms(transformsElem); } else { transforms = null; @@ -144,65 +144,66 @@ public class ProfileParser { /** * Parse a <code>CreateSignatureEnvironmentProfile</code> DOM element. - * - * @param profileElem The <code>CreateSignatureEnvironmentProfile</code> - * DOM element to parse. + * + * @param profileElem The <code>CreateSignatureEnvironmentProfile</code> DOM + * element to parse. * @return The <code>CreateSignatureEnvironmentProfile</code> API object - * containing the data from the <code>profileElem</code>. + * containing the data from the <code>profileElem</code>. */ public CreateSignatureEnvironmentProfile parseCreateSignatureEnvironmentProfile(Element profileElem) { - CreateSignatureLocation createSignatureLocation = - parseCreateSignatureLocation(profileElem); - List supplements = parseSupplements(profileElem); + final CreateSignatureLocation createSignatureLocation = + parseCreateSignatureLocation(profileElem); + final List supplements = parseSupplements(profileElem); return factory.createCreateSignatureEnvironmentProfile( - createSignatureLocation, - supplements); + createSignatureLocation, + supplements); } /** - * Parse a <code>CreateSignatureLocation</code> DOM element contained in - * a <code>CreateSignatureEnvironmentProfile</code>. - * + * Parse a <code>CreateSignatureLocation</code> DOM element contained in a + * <code>CreateSignatureEnvironmentProfile</code>. + * * @param profileElem The <code>CreateSignatureEnvironmentProfile</code> DOM - * element containing the <code>CreateSignatureLocation</code>. - * @return The <code>CreateSignatureLocation</code> API object containing - * the data from the <code>CreateSignatureLocation</code> DOM element. + * element containing the + * <code>CreateSignatureLocation</code>. + * @return The <code>CreateSignatureLocation</code> API object containing the + * data from the <code>CreateSignatureLocation</code> DOM element. */ private CreateSignatureLocation parseCreateSignatureLocation(Element profileElem) { - Element locationElem = - (Element) XPathUtils.selectSingleNode( - profileElem, - CREATE_SIGNATURE_LOCATION_XPATH); - String xPathExpression = DOMUtils.getText(locationElem); - Map namespaceDeclarations = DOMUtils.getNamespaceDeclarations(locationElem); - String indexStr = locationElem.getAttribute("Index"); - int index = Integer.parseInt(indexStr); + final Element locationElem = + (Element) XPathUtils.selectSingleNode( + profileElem, + CREATE_SIGNATURE_LOCATION_XPATH); + final String xPathExpression = DOMUtils.getText(locationElem); + final Map namespaceDeclarations = DOMUtils.getNamespaceDeclarations(locationElem); + final String indexStr = locationElem.getAttribute("Index"); + final int index = Integer.parseInt(indexStr); return factory.createCreateSignatureLocation( - xPathExpression, - index, - namespaceDeclarations); + xPathExpression, + index, + namespaceDeclarations); } /** - * Parse all <code>Supplement</code> DOM elements contained in a given - * parent DOM element. - * + * Parse all <code>Supplement</code> DOM elements contained in a given parent + * DOM element. + * * @param supplementsParentElem The DOM element being the parent of the - * <code>Supplement</code>s. - * @return A <code>List</code> of <code>Supplement</code> API objects - * containing the data from the <code>Supplement</code> DOM elements. + * <code>Supplement</code>s. + * @return A <code>List</code> of <code>Supplement</code> API objects containing + * the data from the <code>Supplement</code> DOM elements. */ private List parseSupplements(Element supplementsParentElem) { - List supplements = new ArrayList(); - NodeIterator supplementElems = - XPathUtils.selectNodeIterator(supplementsParentElem, SUPPLEMENT_XPATH); + final List supplements = new ArrayList(); + final NodeIterator supplementElems = + XPathUtils.selectNodeIterator(supplementsParentElem, SUPPLEMENT_XPATH); Element supplementElem; while ((supplementElem = (Element) supplementElems.nextNode()) != null) { - XMLDataObjectAssociation supplement = - RequestParserUtils.parseXMLDataObjectAssociation(supplementElem); + final XMLDataObjectAssociation supplement = + RequestParserUtils.parseXMLDataObjectAssociation(supplementElem); supplements.add(supplement); } return supplements; @@ -210,44 +211,44 @@ public class ProfileParser { /** * Parse a <code>SupplementProfile</code> DOM element. - * + * * @param profileElem The <code>SupplementProfile</code> DOM element to parse. - * @return The <code>SupplementProfile</code> API object containing the - * data from the <code>SupplementProfile</code> DOM element. + * @return The <code>SupplementProfile</code> API object containing the data + * from the <code>SupplementProfile</code> DOM element. */ public SupplementProfile parseSupplementProfile(Element profileElem) { - XMLDataObjectAssociation supplementProfile = - RequestParserUtils.parseXMLDataObjectAssociation(profileElem); + final XMLDataObjectAssociation supplementProfile = + RequestParserUtils.parseXMLDataObjectAssociation(profileElem); return factory.createSupplementProfile(supplementProfile); } /** - * Parse a <code>VerifyTransformsInfoProfile</code> DOM element. - * - * @param profileElem The <code>VerifyTransformsInfoProfile</code> DOM - * element to parse. - * @return A <code>VerifyTransformsInfoProfile</code> API object containing - * the information from the <code>VerifyTransformsInfoProfile</code> DOM - * element. + * Parse a <code>VerifyTransformsInfoProfile</code> DOM element. + * + * @param profileElem The <code>VerifyTransformsInfoProfile</code> DOM element + * to parse. + * @return A <code>VerifyTransformsInfoProfile</code> API object containing the + * information from the <code>VerifyTransformsInfoProfile</code> DOM + * element. * @throws MOAApplicationException An error occurred parsing the - * <code>VerifyTransformsInfoProfile</code>. + * <code>VerifyTransformsInfoProfile</code>. */ public VerifyTransformsInfoProfile parseVerifyTransformsInfoProfile(Element profileElem) - throws MOAApplicationException { - Element transformsElem = - (Element) XPathUtils.selectSingleNode( - profileElem, - VERIFY_TRANSFORMS_XPATH); + throws MOAApplicationException { + final Element transformsElem = + (Element) XPathUtils.selectSingleNode( + profileElem, + VERIFY_TRANSFORMS_XPATH); List transforms = null; - NodeIterator paramElems = - XPathUtils.selectNodeIterator(profileElem, TRANSFORM_PARAMETER_XPATH); + final NodeIterator paramElems = + XPathUtils.selectNodeIterator(profileElem, TRANSFORM_PARAMETER_XPATH); Element paramElem; - List transformParameters = new ArrayList(); + final List transformParameters = new ArrayList(); // parse the dsig:Transforms if (transformsElem != null) { - TransformParser transformsParser = new TransformParser(); + final TransformParser transformsParser = new TransformParser(); transforms = transformsParser.parseTransforms(transformsElem); } @@ -257,51 +258,50 @@ public class ProfileParser { } return factory.createVerifyTransformsInfoProfile( - transforms, - transformParameters); + transforms, + transformParameters); } /** * Parse a <code>TransformParameter</code> DOM element. - * - * @param paramElem The <code>TransformParameter</code> DOM element to - * parse. + * + * @param paramElem The <code>TransformParameter</code> DOM element to parse. * @return The <code>TransformParameter</code> API object containing the - * information from the <code>TransformParameter</code> DOM element. + * information from the <code>TransformParameter</code> DOM element. * @throws MOAApplicationException An error occurred parsing the - * <code>TransformParameter</code> DOM element. + * <code>TransformParameter</code> DOM element. */ - private TransformParameter parseTransformParameter(Element paramElem) - throws MOAApplicationException { - String uri = paramElem.getAttribute("URI"); - Element contentElem = - (Element) XPathUtils.selectSingleNode( - paramElem, - TRANSFORM_PARAMETER_CONTENT_XPATH); + private TransformParameter parseTransformParameter(Element paramElem) + throws MOAApplicationException { + final String uri = paramElem.getAttribute("URI"); + final Element contentElem = + (Element) XPathUtils.selectSingleNode( + paramElem, + TRANSFORM_PARAMETER_CONTENT_XPATH); if (contentElem == null) { return factory.createTransformParameter(uri); } else if ("Base64Content".equals(contentElem.getLocalName())) { - String base64Str = DOMUtils.getText(contentElem); - InputStream binaryContent = Base64Utils.decodeToStream(base64Str, true); + final String base64Str = DOMUtils.getText(contentElem); + final InputStream binaryContent = Base64Utils.decodeToStream(base64Str, true); return factory.createTransformParameter(uri, binaryContent); } else { // "Hash".equals(contentElem.getLocalName()) - String digestMethodStr = - XPathUtils.getElementValue(contentElem, DIGEST_METHOD_XPATH, ""); - String digestValueStr = - XPathUtils.getElementValue(contentElem, DIGEST_VALUE_XPATH, ""); + final String digestMethodStr = + XPathUtils.getElementValue(contentElem, DIGEST_METHOD_XPATH, ""); + final String digestValueStr = + XPathUtils.getElementValue(contentElem, DIGEST_VALUE_XPATH, ""); byte[] digestValue = null; try { digestValue = Base64Utils.decode(digestValueStr, true); - } catch (IOException e) { - throw new MOAApplicationException("2270", null); + } catch (final IOException e) { + throw new MOAApplicationException("2270", null); } return factory.createTransformParameter( - uri, - digestMethodStr, - digestValue); + uri, + digestMethodStr, + digestValue); } } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlbind/RequestParserUtils.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlbind/RequestParserUtils.java index 99a64d9..173ecbf 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlbind/RequestParserUtils.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlbind/RequestParserUtils.java @@ -42,165 +42,163 @@ import at.gv.egovernment.moaspss.util.XPathUtils; /** * Utility methods for parsing XML requests definied in the MOA XML schema. - * + * * @author Patrick Peck * @version $Id$ */ public class RequestParserUtils { - // - // XPath expressions for parsing parts of a request - // - private static final String MOA = Constants.MOA_PREFIX + ":"; - private static final String REFERENCE_ATTR_NAME = "Reference"; - private static final String MIME_TYPE_XPATH = MOA + "MimeType"; - private static final String DESCRIPTION_XPATH = MOA + "Description"; - private static final String TYPE_XPATH = MOA + "Type"; - private static final String XML_ASSOC_CONTENT_XPATH = MOA + "Content"; - private static final String CONTENT_XPATH = MOA + "Base64Content | " + MOA + "XMLContent |" + MOA + "LocRefContent"; - private static final String ANY_OTHER_XPATH = "*[namespace-uri() != \"" + Constants.MOA_NS_URI + "\"]"; - - /** - * Parse a <code>XMLDataObjectAssociationType</code> kind of DOM element. - * - * @param assocElem - * The <code>XMLDataObjectAssociationType</code> kind of DOM - * elmeent to parse. - * @return The <code>XMLDataObjectAssociation</code> API object containing - * the data from the <code>XMLDataObjectAssociationType</code> DOM - * element. - */ - public static XMLDataObjectAssociation parseXMLDataObjectAssociation(Element assocElem) { - SPSSFactory factory = SPSSFactory.getInstance(); - MetaInfo metaInfo = parseMetaInfo(assocElem); - Element contentElem = (Element) XPathUtils.selectSingleNode(assocElem, XML_ASSOC_CONTENT_XPATH); - Content content = parseContent(contentElem); - - return factory.createXMLDataObjectAssociation(metaInfo, content); - } - - /** - * Parse a <code>MetaInfoType</code> kind of DOM element. - * - * @param metaInfoElem - * The <code>MetaInfoType</code> kind of DOM element. - * @return The <code>MetaInfo</code> API object containing the data from the - * <code>metaInfoElem</code>. - */ - public static MetaInfo parseMetaInfo(Element metaInfoElem) { - SPSSFactory factory = SPSSFactory.getInstance(); - String mimeType = XPathUtils.getElementValue(metaInfoElem, MIME_TYPE_XPATH, null); - String description = XPathUtils.getElementValue(metaInfoElem, DESCRIPTION_XPATH, null); - NodeList anyOther = XPathUtils.selectNodeList(metaInfoElem, ANY_OTHER_XPATH); - String type = XPathUtils.getElementValue(metaInfoElem, TYPE_XPATH, null); - - return factory.createMetaInfo(mimeType, description, anyOther, type); - } - - /** - * Parse a <code>ContentOptionalRefType</code> or - * <code>ContentRequiredRefType</code> kind of DOM element. - * - * @param contentParentElem - * The DOM element being the parent of the content element. - * @return The <code>Content</code> API object containing the data from the - * given DOM element. - */ - public static Content parseContent(Element contentParentElem) { - SPSSFactory factory = SPSSFactory.getInstance(); - String referenceURI = contentParentElem.hasAttribute(REFERENCE_ATTR_NAME) - ? contentParentElem.getAttribute(REFERENCE_ATTR_NAME) : null; - Element contentElem = (Element) XPathUtils.selectSingleNode(contentParentElem, CONTENT_XPATH); - - if (contentElem == null) { - return factory.createContent(referenceURI); - } - - if ("Base64Content".equals(contentElem.getLocalName())) { - String base64String = DOMUtils.getText(contentElem); - return factory.createContent(Base64Utils.decodeToStream(base64String, true), referenceURI); - } else if ("LocRefContent".equals(contentElem.getLocalName())) { - String locationReferenceURI = DOMUtils.getText(contentElem); - return factory.createContent(locationReferenceURI, referenceURI); - } else { // "XMLContent".equals(contentElem.getLocalName()) - return factory.createContent(contentElem.getChildNodes(), referenceURI); - } - } - - /** - * Get the signing time from a Verfiy(CMS|XML)SignatureRequest. - * - * @param requestElem - * A <code>Verify(CMS|XML)SignatureRequest</code> DOM element. - * @param dateTimeXPath - * The XPath to lookup the <code>DateTime</code> element within - * the request. - * @return Date The date and time corresponding to the <code>DateTime</code> - * element in the request. If no <code>DateTime</code> element - * exists in the request, <code>null</code> is returned. - * @throws MOAApplicationException - * An error occurred during a parsing the <code>DateTime</code> - * element or creating the return value. - */ - public static Date parseDateTime(Element requestElem, String dateTimeXPath) throws MOAApplicationException { - - Element dateTimeElem; - String dateTimeText; - - // select the DateTime element - dateTimeElem = (Element) XPathUtils.selectSingleNode(requestElem, dateTimeXPath); - - // parse a date from the element value - if (dateTimeElem != null) { - dateTimeText = DOMUtils.getText(dateTimeElem); - try { - return DateTimeUtils.parseDateTime(dateTimeText); - } catch (ParseException e) { - throw new MOAApplicationException("1104", new Object[] { dateTimeText }); - } - } else { - return null; - } - } - - /** - * Get the signing time from a Verfiy(CMS|XML)SignatureRequest. - * - * @param requestElem - * A <code>Verify(CMS|XML)SignatureRequest</code> DOM element. - * @param dateTimeXPath - * The XPath to lookup the <code>DateTime</code> element within - * the request. - * @return Date The date and time corresponding to the <code>DateTime</code> - * element in the request. If no <code>DateTime</code> element - * exists in the request, <code>null</code> is returned. - * @throws MOAApplicationException - * An error occurred during a parsing the <code>DateTime</code> - * element or creating the return value. - */ - public static boolean parseExtendedValidation(Element requestElem, String extendedValidationXPath, - boolean defaultValue) throws MOAApplicationException { - - Element dateTimeElem; - String dateTimeText; - - // select the DateTime element - dateTimeElem = (Element) XPathUtils.selectSingleNode(requestElem, extendedValidationXPath); - - // parse a date from the element value - if (dateTimeElem != null) { - dateTimeText = DOMUtils.getText(dateTimeElem); - String xsdBoolean = dateTimeText.trim(); - if ("".equals(xsdBoolean)) - return defaultValue; - if("true".equalsIgnoreCase(xsdBoolean) || - "1".equalsIgnoreCase(xsdBoolean)) { - return true; - } else { - return false; - } - } else { - return defaultValue; - } - } + // + // XPath expressions for parsing parts of a request + // + private static final String MOA = Constants.MOA_PREFIX + ":"; + private static final String REFERENCE_ATTR_NAME = "Reference"; + private static final String MIME_TYPE_XPATH = MOA + "MimeType"; + private static final String DESCRIPTION_XPATH = MOA + "Description"; + private static final String TYPE_XPATH = MOA + "Type"; + private static final String XML_ASSOC_CONTENT_XPATH = MOA + "Content"; + private static final String CONTENT_XPATH = MOA + "Base64Content | " + MOA + "XMLContent |" + MOA + + "LocRefContent"; + private static final String ANY_OTHER_XPATH = "*[namespace-uri() != \"" + Constants.MOA_NS_URI + "\"]"; + + /** + * Parse a <code>XMLDataObjectAssociationType</code> kind of DOM element. + * + * @param assocElem The <code>XMLDataObjectAssociationType</code> kind of DOM + * elmeent to parse. + * @return The <code>XMLDataObjectAssociation</code> API object containing the + * data from the <code>XMLDataObjectAssociationType</code> DOM element. + */ + public static XMLDataObjectAssociation parseXMLDataObjectAssociation(Element assocElem) { + final SPSSFactory factory = SPSSFactory.getInstance(); + final MetaInfo metaInfo = parseMetaInfo(assocElem); + final Element contentElem = (Element) XPathUtils.selectSingleNode(assocElem, XML_ASSOC_CONTENT_XPATH); + final Content content = parseContent(contentElem); + + return factory.createXMLDataObjectAssociation(metaInfo, content); + } + + /** + * Parse a <code>MetaInfoType</code> kind of DOM element. + * + * @param metaInfoElem The <code>MetaInfoType</code> kind of DOM element. + * @return The <code>MetaInfo</code> API object containing the data from the + * <code>metaInfoElem</code>. + */ + public static MetaInfo parseMetaInfo(Element metaInfoElem) { + final SPSSFactory factory = SPSSFactory.getInstance(); + final String mimeType = XPathUtils.getElementValue(metaInfoElem, MIME_TYPE_XPATH, null); + final String description = XPathUtils.getElementValue(metaInfoElem, DESCRIPTION_XPATH, null); + final NodeList anyOther = XPathUtils.selectNodeList(metaInfoElem, ANY_OTHER_XPATH); + final String type = XPathUtils.getElementValue(metaInfoElem, TYPE_XPATH, null); + + return factory.createMetaInfo(mimeType, description, anyOther, type); + } + + /** + * Parse a <code>ContentOptionalRefType</code> or + * <code>ContentRequiredRefType</code> kind of DOM element. + * + * @param contentParentElem The DOM element being the parent of the content + * element. + * @return The <code>Content</code> API object containing the data from the + * given DOM element. + */ + public static Content parseContent(Element contentParentElem) { + final SPSSFactory factory = SPSSFactory.getInstance(); + final String referenceURI = contentParentElem.hasAttribute(REFERENCE_ATTR_NAME) + ? contentParentElem.getAttribute(REFERENCE_ATTR_NAME) + : null; + final Element contentElem = (Element) XPathUtils.selectSingleNode(contentParentElem, CONTENT_XPATH); + + if (contentElem == null) { + return factory.createContent(referenceURI); + } + + if ("Base64Content".equals(contentElem.getLocalName())) { + final String base64String = DOMUtils.getText(contentElem); + return factory.createContent(Base64Utils.decodeToStream(base64String, true), referenceURI); + } else if ("LocRefContent".equals(contentElem.getLocalName())) { + final String locationReferenceURI = DOMUtils.getText(contentElem); + return factory.createContent(locationReferenceURI, referenceURI); + } else { // "XMLContent".equals(contentElem.getLocalName()) + return factory.createContent(contentElem.getChildNodes(), referenceURI); + } + } + + /** + * Get the signing time from a Verfiy(CMS|XML)SignatureRequest. + * + * @param requestElem A <code>Verify(CMS|XML)SignatureRequest</code> DOM + * element. + * @param dateTimeXPath The XPath to lookup the <code>DateTime</code> element + * within the request. + * @return Date The date and time corresponding to the <code>DateTime</code> + * element in the request. If no <code>DateTime</code> element exists in + * the request, <code>null</code> is returned. + * @throws MOAApplicationException An error occurred during a parsing the + * <code>DateTime</code> element or creating the + * return value. + */ + public static Date parseDateTime(Element requestElem, String dateTimeXPath) throws MOAApplicationException { + + Element dateTimeElem; + String dateTimeText; + + // select the DateTime element + dateTimeElem = (Element) XPathUtils.selectSingleNode(requestElem, dateTimeXPath); + + // parse a date from the element value + if (dateTimeElem != null) { + dateTimeText = DOMUtils.getText(dateTimeElem); + try { + return DateTimeUtils.parseDateTime(dateTimeText); + } catch (final ParseException e) { + throw new MOAApplicationException("1104", new Object[] { dateTimeText }); + } + } else { + return null; + } + } + + /** + * Get the signing time from a Verfiy(CMS|XML)SignatureRequest. + * + * @param requestElem A <code>Verify(CMS|XML)SignatureRequest</code> DOM + * element. + * @param dateTimeXPath The XPath to lookup the <code>DateTime</code> element + * within the request. + * @return Date The date and time corresponding to the <code>DateTime</code> + * element in the request. If no <code>DateTime</code> element exists in + * the request, <code>null</code> is returned. + * @throws MOAApplicationException An error occurred during a parsing the + * <code>DateTime</code> element or creating the + * return value. + */ + public static boolean parseExtendedValidation(Element requestElem, String extendedValidationXPath, + boolean defaultValue) throws MOAApplicationException { + + Element dateTimeElem; + String dateTimeText; + + // select the DateTime element + dateTimeElem = (Element) XPathUtils.selectSingleNode(requestElem, extendedValidationXPath); + + // parse a date from the element value + if (dateTimeElem != null) { + dateTimeText = DOMUtils.getText(dateTimeElem); + final String xsdBoolean = dateTimeText.trim(); + if ("".equals(xsdBoolean)) { + return defaultValue; + } + if ("true".equalsIgnoreCase(xsdBoolean) || + "1".equalsIgnoreCase(xsdBoolean)) { + return true; + } else { + return false; + } + } else { + return defaultValue; + } + } } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlbind/ResponseBuilderUtils.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlbind/ResponseBuilderUtils.java index 91dc6b9..dff1fcc 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlbind/ResponseBuilderUtils.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlbind/ResponseBuilderUtils.java @@ -21,16 +21,14 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.api.xmlbind; import java.io.IOException; import java.security.cert.CertificateEncodingException; import java.security.cert.X509Certificate; -import java.text.SimpleDateFormat; +import java.util.Calendar; import java.util.Date; import java.util.GregorianCalendar; -import java.util.Calendar; import java.util.TimeZone; import javax.xml.bind.DatatypeConverter; @@ -38,13 +36,12 @@ import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfigurationException; +import org.apache.commons.lang3.StringUtils; import org.w3c.dom.DOMImplementation; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.NodeList; -import iaik.utils.RFC2253NameParser; -import iaik.utils.RFC2253NameParserException; import at.gv.egovernment.moa.spss.MOAApplicationException; import at.gv.egovernment.moa.spss.MOASystemException; import at.gv.egovernment.moa.spss.api.common.ExtendedCertificateCheckResult; @@ -52,10 +49,12 @@ import at.gv.egovernment.moa.spss.api.common.TslInfos; import at.gv.egovernment.moaspss.util.Base64Utils; import at.gv.egovernment.moaspss.util.Constants; import at.gv.egovernment.moaspss.util.MiscUtil; +import iaik.utils.RFC2253NameParser; +import iaik.utils.RFC2253NameParserException; /** * Utility methods used by the verious <code>ResponseBuilder</code> classes. - * + * * @author Patrick Peck * @version $Id$ */ @@ -70,35 +69,35 @@ public class ResponseBuilderUtils { /** * Add an DOM element with a specific name as child to a root element - * + * * @param elementName Name of the DOM element - * @param response Full document with namespace information + * @param response Full document with namespace information * @param rootElement Root element * @return new child DOM element */ public static Element addChildElement(String elementName, Document response, - Element rootElement) { - Element childElement = response.createElementNS(MOA_NS_URI, elementName); - rootElement.appendChild(childElement); - return childElement; - + Element rootElement) { + final Element childElement = response.createElementNS(MOA_NS_URI, elementName); + rootElement.appendChild(childElement); + return childElement; + } - + /** * Create a response element with all the namespaces set. - * + * * @param responseName The name of the response root element. * @return A DOM document containing the response root element and predefined - * MOA, DSIG and XML namespace declarations. + * MOA, DSIG and XML namespace declarations. * @throws MOASystemException An error building the response document. */ public static Document createResponse(String responseName) - throws MOASystemException { + throws MOASystemException { try { - DocumentBuilder docBuilder = - DocumentBuilderFactory.newInstance().newDocumentBuilder(); - DOMImplementation impl = docBuilder.getDOMImplementation(); + final DocumentBuilder docBuilder = + DocumentBuilderFactory.newInstance().newDocumentBuilder(); + final DOMImplementation impl = docBuilder.getDOMImplementation(); Document response; Element root; String attrValue; @@ -112,159 +111,170 @@ public class ResponseBuilderUtils { root.setAttributeNS(XMLNS_NS_URI, attrValue, DSIG_NS_URI); return response; - } catch (ParserConfigurationException e) { + } catch (final ParserConfigurationException e) { throw new MOASystemException("2200", null, e); } } /** * Add a <code>SignerInfo</code> element to the response. - * - * @param response The response document, in order to create new elements in - * it. - * @param root The root element into which the <code>SignerInfo</code> element - * will be inserted. - * @param cert The signer certificate to add. - * @param isQualified Indicates, whether <code>cert</code> is a qualified - * certificate. - * @param isPublicAuthority Indicates, whether <code>cert</code> is - * certificate owned by a public authority. + * + * @param response The response document, in order to create new + * elements in it. + * @param root The root element into which the + * <code>SignerInfo</code> element will be inserted. + * @param cert The signer certificate to add. + * @param isQualified Indicates, whether <code>cert</code> is a qualified + * certificate. + * @param isPublicAuthority Indicates, whether <code>cert</code> is certificate + * owned by a public authority. * @param publicAuthorityID Information about the public authority owning - * <code>cert</code>. Must not be <code>null</code>, if - * <code>isPublicAuthority ! = null</code>. + * <code>cert</code>. Must not be <code>null</code>, if + * <code>isPublicAuthority ! = null</code>. * @throws MOAApplicationException An error occurred reading data from the - * certificate. + * certificate. */ public static void addSignerInfo( - Document response, - Element root, - X509Certificate cert, - boolean isQualified, - String qcSource, - boolean isPublicAuthority, - String publicAuthorityID, - boolean isSSCD, - String sscdSource, - String issuerCountryCode, - TslInfos tslInfos) - throws MOAApplicationException { - - Element signerInfoElem = response.createElementNS(MOA_NS_URI, "SignerInfo"); - Element x509DataElem = - response.createElementNS(DSIG_NS_URI, DSIG + "X509Data"); - Element x509IssuerSerialElem = - response.createElementNS(DSIG_NS_URI, DSIG + "X509IssuerSerial"); - Element x509IssuerElem = - response.createElementNS(DSIG_NS_URI, DSIG + "X509IssuerName"); - String issuer = cert.getIssuerDN().getName(); - Element x509SerialNumberElem = - response.createElementNS(DSIG_NS_URI, DSIG + "X509SerialNumber"); - String serialNumber = cert.getSerialNumber().toString(); - Element x509SubjectNameElem = - response.createElementNS(DSIG_NS_URI, DSIG + "X509SubjectName"); - Element x509CertificateElem = - response.createElementNS(DSIG_NS_URI, DSIG + "X509Certificate"); - Element qualifiedCertificateElem = - isQualified - ? response.createElementNS(MOA_NS_URI, "QualifiedCertificate") - : null; - Element sscdElem = - isSSCD - ? response.createElementNS(MOA_NS_URI, "SecureSignatureCreationDevice") - : null; + Document response, + Element root, + X509Certificate cert, + boolean isQualified, + String qcSource, + boolean isPublicAuthority, + String publicAuthorityID, + boolean isSSCD, + String sscdSource, + String issuerCountryCode, + TslInfos tslInfos) + throws MOAApplicationException { + + final Element signerInfoElem = response.createElementNS(MOA_NS_URI, "SignerInfo"); + final Element x509DataElem = + response.createElementNS(DSIG_NS_URI, DSIG + "X509Data"); + final Element x509IssuerSerialElem = + response.createElementNS(DSIG_NS_URI, DSIG + "X509IssuerSerial"); + final Element x509IssuerElem = + response.createElementNS(DSIG_NS_URI, DSIG + "X509IssuerName"); + final String issuer = cert.getIssuerDN().getName(); + final Element x509SerialNumberElem = + response.createElementNS(DSIG_NS_URI, DSIG + "X509SerialNumber"); + final String serialNumber = cert.getSerialNumber().toString(); + final Element x509SubjectNameElem = + response.createElementNS(DSIG_NS_URI, DSIG + "X509SubjectName"); + final Element x509CertificateElem = + response.createElementNS(DSIG_NS_URI, DSIG + "X509Certificate"); + final Element qualifiedCertificateElem = + isQualified + ? response.createElementNS(MOA_NS_URI, "QualifiedCertificate") + : null; + final Element sscdElem = + isSSCD + ? response.createElementNS(MOA_NS_URI, "SecureSignatureCreationDevice") + : null; Element issuerCountryCodeElem = null; if (issuerCountryCode != null) { - issuerCountryCodeElem = response.createElementNS(MOA_NS_URI, "IssuerCountryCode"); - issuerCountryCodeElem.setTextContent(issuerCountryCode); + issuerCountryCodeElem = response.createElementNS(MOA_NS_URI, "IssuerCountryCode"); + issuerCountryCodeElem.setTextContent(issuerCountryCode); } - - //add TSL infos + + // add TSL infos Element tslInfoElement = null; if (tslInfos != null) { - tslInfoElement = response.createElementNS(MOA_NS_URI, "TSLInformation"); - - //append TSL issuer country-code - if (MiscUtil.isNotEmpty(tslInfos.getTslIssuerCountry())); { - Element tslIssuerCountryCodeElem = response.createElementNS(MOA_NS_URI, "TSLIssuerCountryCode"); - tslIssuerCountryCodeElem.setTextContent(tslInfos.getTslIssuerCountry()); - tslInfoElement.appendChild(tslIssuerCountryCodeElem); - - } - - //append Service-Type Status - if (MiscUtil.isNotEmpty(tslInfos.getServiceTypeStatus())); { - Element tslServiceInfo = response.createElementNS(MOA_NS_URI, "ServiceTypeStatus"); - tslServiceInfo.setTextContent(tslInfos.getServiceTypeStatus()); - tslInfoElement.appendChild(tslServiceInfo); - - } - - //append Service-Type Identifier - if (MiscUtil.isNotEmpty(tslInfos.getServiceTypeIdentifier())); { - Element tslServiceInfo = response.createElementNS(MOA_NS_URI, "ServiceTypeIdentifier"); - tslServiceInfo.setTextContent(tslInfos.getServiceTypeIdentifier()); - tslInfoElement.appendChild(tslServiceInfo); - - } - - //append qualifiers - if (tslInfos.getQualifiers() != null && tslInfos.getQualifiers().size() > 0) { - Element tslQualifiers = response.createElementNS(MOA_NS_URI, "Qualifiers"); - - for (String el : tslInfos.getQualifiers()) { - Element tslQualifier = response.createElementNS(MOA_NS_URI, "Qualifier"); - tslQualifier.setTextContent(el); - tslQualifiers.appendChild(tslQualifier); - - } - - tslInfoElement.appendChild(tslQualifiers); - - } - - //append additional service information - if (tslInfos.getAdditionalServiceInformation() != null - && tslInfos.getAdditionalServiceInformation().size() > 0) { - Element tslAdditionalServiceInformations = response.createElementNS(MOA_NS_URI, "AdditionalServiceInformations"); - - for (String el : tslInfos.getAdditionalServiceInformation()) { - Element tslAdditionalServiceInformation = response.createElementNS(MOA_NS_URI, "AdditionalServiceInformation"); - tslAdditionalServiceInformation.setTextContent(el); - tslAdditionalServiceInformations.appendChild(tslAdditionalServiceInformation); - - } - tslInfoElement.appendChild(tslAdditionalServiceInformations); - - } + tslInfoElement = response.createElementNS(MOA_NS_URI, "TSLInformation"); + + // append TSL issuer country-code + if (MiscUtil.isNotEmpty(tslInfos.getTslIssuerCountry())) { + ; + } + { + final Element tslIssuerCountryCodeElem = response.createElementNS(MOA_NS_URI, "TSLIssuerCountryCode"); + tslIssuerCountryCodeElem.setTextContent(tslInfos.getTslIssuerCountry()); + tslInfoElement.appendChild(tslIssuerCountryCodeElem); + + } + + // append Service-Type Status + if (MiscUtil.isNotEmpty(tslInfos.getServiceTypeStatus())) { + ; + } + { + final Element tslServiceInfo = response.createElementNS(MOA_NS_URI, "ServiceTypeStatus"); + tslServiceInfo.setTextContent(tslInfos.getServiceTypeStatus()); + tslInfoElement.appendChild(tslServiceInfo); + + } + + // append Service-Type Identifier + if (MiscUtil.isNotEmpty(tslInfos.getServiceTypeIdentifier())) { + ; + } + { + final Element tslServiceInfo = response.createElementNS(MOA_NS_URI, "ServiceTypeIdentifier"); + tslServiceInfo.setTextContent(tslInfos.getServiceTypeIdentifier()); + tslInfoElement.appendChild(tslServiceInfo); + + } + + // append qualifiers + if (tslInfos.getQualifiers() != null && tslInfos.getQualifiers().size() > 0) { + final Element tslQualifiers = response.createElementNS(MOA_NS_URI, "Qualifiers"); + + for (final String el : tslInfos.getQualifiers()) { + final Element tslQualifier = response.createElementNS(MOA_NS_URI, "Qualifier"); + tslQualifier.setTextContent(el); + tslQualifiers.appendChild(tslQualifier); + + } + + tslInfoElement.appendChild(tslQualifiers); + + } + + // append additional service information + if (tslInfos.getAdditionalServiceInformation() != null + && tslInfos.getAdditionalServiceInformation().size() > 0) { + final Element tslAdditionalServiceInformations = response.createElementNS(MOA_NS_URI, + "AdditionalServiceInformations"); + + for (final String el : tslInfos.getAdditionalServiceInformation()) { + final Element tslAdditionalServiceInformation = response.createElementNS(MOA_NS_URI, + "AdditionalServiceInformation"); + tslAdditionalServiceInformation.setTextContent(el); + tslAdditionalServiceInformations.appendChild(tslAdditionalServiceInformation); + + } + tslInfoElement.appendChild(tslAdditionalServiceInformations); + + } } - - Element publicAuthorityElem = - isPublicAuthority - ? response.createElementNS(MOA_NS_URI, "PublicAuthority") - : null; - Element codeElem = - publicAuthorityID != null - ? response.createElementNS(MOA_NS_URI, "Code") - : null; + + final Element publicAuthorityElem = + isPublicAuthority + ? response.createElementNS(MOA_NS_URI, "PublicAuthority") + : null; + final Element codeElem = + publicAuthorityID != null + ? response.createElementNS(MOA_NS_URI, "Code") + : null; // fill in text x509IssuerElem.appendChild(response.createTextNode(issuer)); x509SerialNumberElem.appendChild(response.createTextNode(serialNumber)); try { - RFC2253NameParser parser = - new RFC2253NameParser(cert.getSubjectDN().getName()); - String subjectRfc2253 = parser.parse().getRFC2253String(); + final RFC2253NameParser parser = + new RFC2253NameParser(cert.getSubjectDN().getName()); + final String subjectRfc2253 = parser.parse().getRFC2253String(); x509SubjectNameElem.appendChild(response.createTextNode(subjectRfc2253)); - } catch (RFC2253NameParserException e) { + } catch (final RFC2253NameParserException e) { x509SubjectNameElem.appendChild( - response.createTextNode(cert.getSubjectDN().getName())); + response.createTextNode(cert.getSubjectDN().getName())); } try { x509CertificateElem.appendChild( - response.createTextNode(Base64Utils.encode(cert.getEncoded()))); - } catch (CertificateEncodingException e) { + response.createTextNode(Base64Utils.encode(cert.getEncoded()))); + } catch (final CertificateEncodingException e) { throw new MOAApplicationException("2245", null, e); - } catch (IOException e) { + } catch (final IOException e) { throw new MOAApplicationException("2245", null, e); } @@ -275,10 +285,11 @@ public class ResponseBuilderUtils { x509DataElem.appendChild(x509IssuerSerialElem); x509DataElem.appendChild(x509CertificateElem); if (isQualified) { - if (qcSource.compareToIgnoreCase("TSL") == 0) - qualifiedCertificateElem.setAttributeNS(MOA_NS_URI, "Source", qcSource); - - x509DataElem.appendChild(qualifiedCertificateElem); + if (qcSource.compareToIgnoreCase("TSL") == 0) { + qualifiedCertificateElem.setAttributeNS(MOA_NS_URI, "Source", qcSource); + } + + x509DataElem.appendChild(qualifiedCertificateElem); } if (isPublicAuthority) { x509DataElem.appendChild(publicAuthorityElem); @@ -288,16 +299,18 @@ public class ResponseBuilderUtils { } } if (isSSCD) { - sscdElem.setAttributeNS(MOA_NS_URI, "Source", sscdSource); - x509DataElem.appendChild(sscdElem); - } - if (issuerCountryCodeElem != null) - x509DataElem.appendChild(issuerCountryCodeElem); - - //add TSL infos to X509Date if TSL infos exists - if (tslInfoElement != null) - x509DataElem.appendChild(tslInfoElement); - + sscdElem.setAttributeNS(MOA_NS_URI, "Source", sscdSource); + x509DataElem.appendChild(sscdElem); + } + if (issuerCountryCodeElem != null) { + x509DataElem.appendChild(issuerCountryCodeElem); + } + + // add TSL infos to X509Date if TSL infos exists + if (tslInfoElement != null) { + x509DataElem.appendChild(tslInfoElement); + } + signerInfoElem.appendChild(x509DataElem); root.appendChild(signerInfoElem); } @@ -305,24 +318,24 @@ public class ResponseBuilderUtils { /** * Add an element containing <code>Code</code> and <code>Info</code> * subelements. - * - * @param response The response document, in order to create new elements in - * it. - * @param root The root element into which to insert the newly created - * element. + * + * @param response The response document, in order to create new elements in + * it. + * @param root The root element into which to insert the newly created + * element. * @param elementName The name of the newly created element. - * @param code The content of the <code>Code</code> subelement. - * @param info The content of the <code>Info</code> subelement. + * @param code The content of the <code>Code</code> subelement. + * @param info The content of the <code>Info</code> subelement. */ public static void addCodeInfoElement( - Document response, - Element root, - String elementName, - int code, - NodeList info) { - - Element codeInfoElem = response.createElementNS(MOA_NS_URI, elementName); - Element codeElem = response.createElementNS(MOA_NS_URI, "Code"); + Document response, + Element root, + String elementName, + int code, + NodeList info) { + + final Element codeInfoElem = response.createElementNS(MOA_NS_URI, elementName); + final Element codeElem = response.createElementNS(MOA_NS_URI, "Code"); Element infoElem; int i; @@ -338,34 +351,34 @@ public class ResponseBuilderUtils { } root.appendChild(codeInfoElem); } - + /** * Add an element containing <code>Code</code> and <code>Info</code> * subelements. - * - * @param response The response document, in order to create new elements in - * it. - * @param root The root element into which to insert the newly created - * element. + * + * @param response The response document, in order to create new elements in + * it. + * @param root The root element into which to insert the newly created + * element. * @param elementName The name of the newly created element. - * @param code The content of the <code>Code</code> subelement. - * @param info The content of the <code>Info</code> subelement. + * @param code The content of the <code>Code</code> subelement. + * @param info The content of the <code>Info</code> subelement. */ public static void addCodeInfoElement( - Document response, - Element root, - String elementName, - int code, - String info) { - - Element codeInfoElem = response.createElementNS(MOA_NS_URI, elementName); - Element codeElem = response.createElementNS(MOA_NS_URI, "Code"); + Document response, + Element root, + String elementName, + int code, + String info) { + + final Element codeInfoElem = response.createElementNS(MOA_NS_URI, elementName); + final Element codeElem = response.createElementNS(MOA_NS_URI, "Code"); Element infoElem; - int i; + final int i; codeElem.appendChild(response.createTextNode(Integer.toString(code))); codeInfoElem.appendChild(codeElem); - + if (info != null) { infoElem = response.createElementNS(MOA_NS_URI, "Info"); infoElem.appendChild(response.createTextNode(info)); @@ -375,86 +388,138 @@ public class ResponseBuilderUtils { } public static void addSigningTime(Document response, - Element root, - Date signingTime) { - if(signingTime != null) { - Element extElem = response.createElementNS(MOA_NS_URI, "SigningTime"); - TimeZone tz = TimeZone.getTimeZone("UTC"); - Calendar calendar = new GregorianCalendar(); + Element root, + Date signingTime) { + if (signingTime != null) { + final Element extElem = response.createElementNS(MOA_NS_URI, "SigningTime"); + final TimeZone tz = TimeZone.getTimeZone("UTC"); + final Calendar calendar = new GregorianCalendar(); calendar.setTimeZone(tz); calendar.setTime(signingTime); - String date = DatatypeConverter.printDateTime(calendar); + final String date = DatatypeConverter.printDateTime(calendar); extElem.appendChild(response.createTextNode(date)); root.appendChild(extElem); } } + public static void addSignatureAlgorithm(Document response, + Element root, + String algorithm) { + if (algorithm != null) { + final Element extElem = response.createElementNS(MOA_NS_URI, "SignatureAlgorithm"); + extElem.appendChild(response.createTextNode(algorithm)); + root.appendChild(extElem); + } + } + + public static void addSignatureCoversFullPDF(Document response, + Element root, + Boolean coversFull) { + if (coversFull != null) { + final Element extElem = response.createElementNS(MOA_NS_URI, "SignatureCoversFullPDF"); + extElem.appendChild(response.createTextNode(String.valueOf(coversFull))); + root.appendChild(extElem); + } + } + + public static void addSignatureByteRange(Document response, + Element root, + int[] byteRange) { + if (byteRange != null) { + String byteRangeTextual = StringUtils.EMPTY; + for (final int el : byteRange) { + byteRangeTextual += "," + String.valueOf(el); + } + + final Element extElem = response.createElementNS(MOA_NS_URI, "SignatureByteRange"); + extElem.appendChild(response.createTextNode(byteRangeTextual.substring(1))); + root.appendChild(extElem); + } + } + + public static Element createAndAddChildElement(Document response, Element root, String name) { + final Element element = response.createElementNS(MOA_NS_URI, name); + root.appendChild(element); + return element; + + } + + public static void addHashAlgorithm(Document response, + Element root, + String algorithm) { + if (algorithm != null) { + final Element extElem = response.createElementNS(MOA_NS_URI, "HashAlgorithm"); + extElem.appendChild(response.createTextNode(algorithm)); + root.appendChild(extElem); + } + } + public static void addExtendendResult(Document response, - Element root, - ExtendedCertificateCheckResult result) { - Element extElem = response.createElementNS(MOA_NS_URI, "ExtendedCertificateCheck"); - - Element extMajorElem = response.createElementNS(MOA_NS_URI, "Major"); - - Element codeMajorCodeElem = response.createElementNS(MOA_NS_URI, "Code"); - Element codeMajorNameElem = response.createElementNS(MOA_NS_URI, "Name"); - codeMajorCodeElem.appendChild(response.createTextNode(Integer.toString( - result.getMajorCode()))); - codeMajorNameElem.appendChild(response.createTextNode(result.getMajorInfo())); - - extMajorElem.appendChild(codeMajorCodeElem); - extMajorElem.appendChild(codeMajorNameElem); - - extElem.appendChild(extMajorElem); - - if(result.getMinorCode() >= 0) { - Element extMinorElem = response.createElementNS(MOA_NS_URI, "Minor"); - Element codeMinorCodeElem = response.createElementNS(MOA_NS_URI, "Code"); - Element codeMinorNameElem = response.createElementNS(MOA_NS_URI, "Name"); - codeMinorCodeElem.appendChild(response.createTextNode(Integer.toString( - result.getMinorCode()))); - codeMinorNameElem.appendChild(response.createTextNode(result.getMinorInfo())); - - extMinorElem.appendChild(codeMinorCodeElem); - extMinorElem.appendChild(codeMinorNameElem); - - extElem.appendChild(extMinorElem); - } - - root.appendChild(extElem); + Element root, + ExtendedCertificateCheckResult result) { + final Element extElem = response.createElementNS(MOA_NS_URI, "ExtendedCertificateCheck"); + + final Element extMajorElem = response.createElementNS(MOA_NS_URI, "Major"); + + final Element codeMajorCodeElem = response.createElementNS(MOA_NS_URI, "Code"); + final Element codeMajorNameElem = response.createElementNS(MOA_NS_URI, "Name"); + codeMajorCodeElem.appendChild(response.createTextNode(Integer.toString( + result.getMajorCode()))); + codeMajorNameElem.appendChild(response.createTextNode(result.getMajorInfo())); + + extMajorElem.appendChild(codeMajorCodeElem); + extMajorElem.appendChild(codeMajorNameElem); + + extElem.appendChild(extMajorElem); + + if (result.getMinorCode() >= 0) { + final Element extMinorElem = response.createElementNS(MOA_NS_URI, "Minor"); + final Element codeMinorCodeElem = response.createElementNS(MOA_NS_URI, "Code"); + final Element codeMinorNameElem = response.createElementNS(MOA_NS_URI, "Name"); + codeMinorCodeElem.appendChild(response.createTextNode(Integer.toString( + result.getMinorCode()))); + codeMinorNameElem.appendChild(response.createTextNode(result.getMinorInfo())); + + extMinorElem.appendChild(codeMinorCodeElem); + extMinorElem.appendChild(codeMinorNameElem); + + extElem.appendChild(extMinorElem); + } + + root.appendChild(extElem); } - + /** * Add an element containing <code>Code</code> and <code>Info</code> * subelements. - * - * @param response The response document, in order to create new elements in - * it. - * @param root The root element into which to insert the newly created - * element. + * + * @param response The response document, in order to create new elements in + * it. + * @param root The root element into which to insert the newly created + * element. * @param elementName The name of the newly created element. - * @param code The content of the <code>Code</code> subelement. - * @param info The content of the <code>Info</code> subelement. + * @param code The content of the <code>Code</code> subelement. + * @param info The content of the <code>Info</code> subelement. */ public static void addFormCheckElement( - Document response, - Element root, - String elementName, - int code, - String name) { - - Element codeInfoElem = response.createElementNS(MOA_NS_URI, elementName); - Element codeElem = response.createElementNS(MOA_NS_URI, "Code"); + Document response, + Element root, + String elementName, + int code, + String name) { + + final Element codeInfoElem = response.createElementNS(MOA_NS_URI, elementName); + final Element codeElem = response.createElementNS(MOA_NS_URI, "Code"); Element infoElem; - + codeElem.appendChild(response.createTextNode(Integer.toString(code))); codeInfoElem.appendChild(codeElem); - + infoElem = response.createElementNS(MOA_NS_URI, "Name"); infoElem.appendChild(response.createTextNode(name)); codeInfoElem.appendChild(infoElem); - + root.appendChild(codeInfoElem); } - + } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlbind/TransformParser.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlbind/TransformParser.java index 6dc4803..7a246d6 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlbind/TransformParser.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlbind/TransformParser.java @@ -21,7 +21,6 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.api.xmlbind; import java.util.ArrayList; @@ -48,9 +47,9 @@ import at.gv.egovernment.moaspss.util.DOMUtils; import at.gv.egovernment.moaspss.util.XPathUtils; /** - * A parser to parse XMLDsig <code>Transform</code> DOM elements into their - * MOA SPSS API representation. - * + * A parser to parse XMLDsig <code>Transform</code> DOM elements into their MOA + * SPSS API representation. + * * @author Patrick Peck * @version $Id$ */ @@ -60,39 +59,38 @@ public class TransformParser { // private static final String DSIG = Constants.DSIG_PREFIX + ":"; private static final String DSIG_FILTER2 = - Constants.DSIG_FILTER2_PREFIX + ":"; + Constants.DSIG_FILTER2_PREFIX + ":"; private static final String XSLT = Constants.XSLT_PREFIX + ":"; private static final String EC = Constants.DSIG_EC_PREFIX + ":"; private static final String TRANSFORM_XPATH = DSIG + "Transform"; private static final String XPATH_XPATH = DSIG + "XPath"; private static final String XSLT_ELEMENT_XPATH = XSLT + "stylesheet"; private static final String XPATH2_XPATH = - (DSIG_FILTER2 + "XPath[@Filter=\"intersect\"] | ") - + (DSIG_FILTER2 + "XPath[@Filter=\"subtract\"] | ") - + (DSIG_FILTER2 + "XPath[@Filter=\"union\"]"); + DSIG_FILTER2 + "XPath[@Filter=\"intersect\"] | " + + DSIG_FILTER2 + "XPath[@Filter=\"subtract\"] | " + + DSIG_FILTER2 + "XPath[@Filter=\"union\"]"; private static final String INCLUSIVE_NAMESPACES_XPATH = - EC + "InclusiveNamespaces"; + EC + "InclusiveNamespaces"; /** * The <code>SPSSFactory</code> to use for creating new API objects. */ - private SPSSFactory factory = SPSSFactory.getInstance(); + private final SPSSFactory factory = SPSSFactory.getInstance(); /** * Parse an XMLDsig <code>Transforms</code> DOM element. - * + * * @param transformsElem The <code>Transforms</code> DOM element to parse. - * @return A <code>List</code> of <code>Transform</code> API objects - * containing the data from the individual <code>Transform</code> DOM - * elements. - * @throws MOAApplicationException An error occurred parsing the - * <code>Transforms</code> DOM element. + * @return A <code>List</code> of <code>Transform</code> API objects containing + * the data from the individual <code>Transform</code> DOM elements. + * @throws MOAApplicationException An error occurred parsing the + * <code>Transforms</code> DOM element. */ public List parseTransforms(Element transformsElem) - throws MOAApplicationException { - List transforms = new ArrayList(); - NodeIterator transformElems = - XPathUtils.selectNodeIterator(transformsElem, TRANSFORM_XPATH); + throws MOAApplicationException { + final List transforms = new ArrayList(); + final NodeIterator transformElems = + XPathUtils.selectNodeIterator(transformsElem, TRANSFORM_XPATH); Element transformElem; Transform transform; @@ -106,34 +104,31 @@ public class TransformParser { /** * Parse an XMLDsig <code>Transform</code> DOM element. - * + * * @param transformElem <code>Transform</code> DOM element to parse. - * @return The <code>Transform</code> API object containing the data - * from the <code>Transform</code> DOM element. - * @throws MOAApplicationException An error occurred parsing the - * <code>Transform</code> DOM element. + * @return The <code>Transform</code> API object containing the data from the + * <code>Transform</code> DOM element. + * @throws MOAApplicationException An error occurred parsing the + * <code>Transform</code> DOM element. */ public Transform parseTransform(Element transformElem) - throws MOAApplicationException { + throws MOAApplicationException { - String algorithmUri = transformElem.getAttribute("Algorithm"); + final String algorithmUri = transformElem.getAttribute("Algorithm"); if (CanonicalizationTransform.CANONICAL_XML.equals(algorithmUri) - || CanonicalizationTransform.CANONICAL_XML_WITH_COMMENTS.equals( - algorithmUri)) { + || CanonicalizationTransform.CANONICAL_XML_WITH_COMMENTS.equals( + algorithmUri)) { return factory.createCanonicalizationTransform(algorithmUri); - } else if ( - ExclusiveCanonicalizationTransform.EXCLUSIVE_CANONICAL_XML.equals( + } else if (ExclusiveCanonicalizationTransform.EXCLUSIVE_CANONICAL_XML.equals( algorithmUri) - || ExclusiveCanonicalizationTransform - .EXCLUSIVE_CANONICAL_XML_WITH_COMMENTS - .equals( - algorithmUri)) { + || ExclusiveCanonicalizationTransform.EXCLUSIVE_CANONICAL_XML_WITH_COMMENTS + .equals( + algorithmUri)) { return parseExclusiveC14nTransform(algorithmUri, transformElem); } else if (Base64Transform.BASE64_DECODING.equals(algorithmUri)) { return factory.createBase64Transform(); - } else if ( - EnvelopedSignatureTransform.ENVELOPED_SIGNATURE.equals(algorithmUri)) { + } else if (EnvelopedSignatureTransform.ENVELOPED_SIGNATURE.equals(algorithmUri)) { return factory.createEnvelopedSignatureTransform(); } else if (XPathTransform.XPATH.equals(algorithmUri)) { return parseXPathTransform(transformElem); @@ -148,49 +143,47 @@ public class TransformParser { /** * Parse an exclusive canonicalization type of transform. - * - * @param algorithmUri The algorithm URI of the canonicalization algorithm. + * + * @param algorithmUri The algorithm URI of the canonicalization algorithm. * @param transformElem The <code>Transform</code> DOM element to parse. * @return An <code>ExclusiveCanonicalizationTransform</code> API object - * containing the data from the <code>transformElem</code>. + * containing the data from the <code>transformElem</code>. */ private Transform parseExclusiveC14nTransform( - String algorithmUri, - Element transformElem) - { + String algorithmUri, + Element transformElem) { - Element inclusiveNamespacesElem = - (Element) XPathUtils.selectSingleNode( - transformElem, - INCLUSIVE_NAMESPACES_XPATH); + final Element inclusiveNamespacesElem = + (Element) XPathUtils.selectSingleNode( + transformElem, + INCLUSIVE_NAMESPACES_XPATH); - List inclusiveNamespaces = new ArrayList(); - if (inclusiveNamespacesElem != null) - { - StringTokenizer tokenizer = new StringTokenizer(inclusiveNamespacesElem.getAttribute("PrefixList")); - while (tokenizer.hasMoreTokens()) - { + final List inclusiveNamespaces = new ArrayList(); + if (inclusiveNamespacesElem != null) { + final StringTokenizer tokenizer = new StringTokenizer(inclusiveNamespacesElem.getAttribute( + "PrefixList")); + while (tokenizer.hasMoreTokens()) { inclusiveNamespaces.add(tokenizer.nextToken()); } } return factory.createExclusiveCanonicalizationTransform( - algorithmUri, - inclusiveNamespaces); + algorithmUri, + inclusiveNamespaces); } /** * Parse an <code>XPath</code> type of <code>Transform</code>. - * + * * @param transformElem The <code>Transform</code> DOM element to parse. * @return The <code>Transform</code> API object representation of the - * <code>Transform</code> DOM element. - * @throws MOAApplicationException An error occurred parsing the - * <code>Transform</code> DOM element. + * <code>Transform</code> DOM element. + * @throws MOAApplicationException An error occurred parsing the + * <code>Transform</code> DOM element. */ private Transform parseXPathTransform(Element transformElem) - throws MOAApplicationException { - Element xPathElem = - (Element) XPathUtils.selectSingleNode(transformElem, XPATH_XPATH); + throws MOAApplicationException { + final Element xPathElem = + (Element) XPathUtils.selectSingleNode(transformElem, XPATH_XPATH); Map nsDecls; if (xPathElem == null) { @@ -205,22 +198,22 @@ public class TransformParser { /** * Parse an <code>XPathFilter2</code> type of <code>Transform</code>. - * + * * @param transformElem The <code>Transform</code> DOM element to parse. * @return The <code>Transform</code> API object representation of the - * <code>Transform</code> DOM element. - * @throws MOAApplicationException An error occurred parsing the - * <code>Transform</code> DOM element. + * <code>Transform</code> DOM element. + * @throws MOAApplicationException An error occurred parsing the + * <code>Transform</code> DOM element. */ private Transform parseXPathFilter2Transform(Element transformElem) - throws MOAApplicationException { - List filters = new ArrayList(); - NodeIterator iter = - XPathUtils.selectNodeIterator(transformElem, XPATH2_XPATH); + throws MOAApplicationException { + final List filters = new ArrayList(); + final NodeIterator iter = + XPathUtils.selectNodeIterator(transformElem, XPATH2_XPATH); Element filterElem; while ((filterElem = (Element) iter.nextNode()) != null) { - String filterAttr = filterElem.getAttribute("Filter"); + final String filterAttr = filterElem.getAttribute("Filter"); String filterType; String expression; Map nsDecls; @@ -247,17 +240,17 @@ public class TransformParser { /** * Parse an <code>XSLT</code> type of <code>Transform</code>. - * + * * @param transformElem The <code>Transform</code> DOM element to parse. * @return The <code>Transform</code> API object representation of the - * <code>Transform</code> DOM element. - * @throws MOAApplicationException An error occurred parsing the - * <code>Transform</code> DOM element. + * <code>Transform</code> DOM element. + * @throws MOAApplicationException An error occurred parsing the + * <code>Transform</code> DOM element. */ private Transform parseXSLTTransform(Element transformElem) - throws MOAApplicationException { - Element xsltElem = - (Element) XPathUtils.selectSingleNode(transformElem, XSLT_ELEMENT_XPATH); + throws MOAApplicationException { + final Element xsltElem = + (Element) XPathUtils.selectSingleNode(transformElem, XSLT_ELEMENT_XPATH); if (xsltElem == null) { throw new MOAApplicationException("2215", null); diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlbind/VerifyCMSSignatureRequestParser.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlbind/VerifyCMSSignatureRequestParser.java index cb07b34..bcab978 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlbind/VerifyCMSSignatureRequestParser.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlbind/VerifyCMSSignatureRequestParser.java @@ -21,7 +21,6 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.api.xmlbind; import java.io.InputStream; @@ -39,7 +38,6 @@ import at.gv.egovernment.moa.spss.api.cmsverify.CMSContent; import at.gv.egovernment.moa.spss.api.cmsverify.CMSDataObject; import at.gv.egovernment.moa.spss.api.cmsverify.VerifyCMSSignatureRequest; import at.gv.egovernment.moa.spss.api.common.MetaInfo; -import at.gv.egovernment.moaspss.logging.Logger; import at.gv.egovernment.moaspss.util.Base64Utils; import at.gv.egovernment.moaspss.util.CollectionUtils; import at.gv.egovernment.moaspss.util.Constants; @@ -49,7 +47,7 @@ import at.gv.egovernment.moaspss.util.XPathUtils; /** * A parser to parse <code>VerifyCMSSignatureRequest</code> DOM trees into * <code>VerifyCMSSignatureRequest</code> API objects. - * + * * @author Patrick Peck * @version $Id$ */ @@ -63,7 +61,7 @@ public class VerifyCMSSignatureRequestParser { private static final String EXTENDED_VALIDATION_XPATH = MOA + "ExtendedValidation"; private static final String CMS_SIGNATURE_XPATH = MOA + "CMSSignature"; private static final String PDF_SIGNATURE_XPATH = MOA + "PDFSignature"; - + private static final String TRUST_PROFILE_ID_XPATH = MOA + "TrustProfileID"; private static final String DATA_OBJECT_XPATH = MOA + "DataObject"; private static final String META_INFO_XPATH = MOA + "MetaInfo"; @@ -72,110 +70,109 @@ public class VerifyCMSSignatureRequestParser { private static final String EXCLUDEBYTERANGE_FROM_XPATH = MOA + "ExcludedByteRange/" + MOA + "From"; private static final String EXCLUDEBYTERANGE_TO_XPATH = MOA + "ExcludedByteRange/" + MOA + "To"; - /** The <code>SPSSFactory</code> for creating new API objects. */ - private SPSSFactory factory = SPSSFactory.getInstance(); + private final SPSSFactory factory = SPSSFactory.getInstance(); /** - * Parse a <code>VerifyCMSSignatureRequest</code> DOM element, as defined - * by the MOA schema. - * + * Parse a <code>VerifyCMSSignatureRequest</code> DOM element, as defined by the + * MOA schema. + * * @param requestElem The <code>VerifyCMSSignatureRequest</code> to parse. The - * request must have been successfully parsed against the schema for this - * method to succeed. - * @return A <code>VerifyCMSSignatureRequest</code> API objects containing - * the data from the DOM element. + * request must have been successfully parsed against the + * schema for this method to succeed. + * @return A <code>VerifyCMSSignatureRequest</code> API objects containing the + * data from the DOM element. * @throws MOAApplicationException An error occurred parsing the request. */ public VerifyCMSSignatureRequest parsePDF(Element requestElem) - throws MOAApplicationException { - - int[] signatories = parseSignatories(requestElem); - Date dateTime = - RequestParserUtils.parseDateTime(requestElem, DATE_TIME_XPATH); - boolean extendedValidation = - RequestParserUtils.parseExtendedValidation(requestElem, EXTENDED_VALIDATION_XPATH, false); - - String cmsSignatureStr = - XPathUtils.getElementValue(requestElem, PDF_SIGNATURE_XPATH, ""); - CMSDataObject dataObject = parseDataObject(requestElem); - String trustProfileID = - XPathUtils.getElementValue(requestElem, TRUST_PROFILE_ID_XPATH, null); - //Logger.info("CMSSignature: " + cmsSignatureStr); - InputStream cmsSignature = - Base64Utils.decodeToStream(cmsSignatureStr, true); + throws MOAApplicationException { + + final int[] signatories = parseSignatories(requestElem); + final Date dateTime = + RequestParserUtils.parseDateTime(requestElem, DATE_TIME_XPATH); + final boolean extendedValidation = + RequestParserUtils.parseExtendedValidation(requestElem, EXTENDED_VALIDATION_XPATH, false); + + final String cmsSignatureStr = + XPathUtils.getElementValue(requestElem, PDF_SIGNATURE_XPATH, ""); + final CMSDataObject dataObject = parseDataObject(requestElem); + final String trustProfileID = + XPathUtils.getElementValue(requestElem, TRUST_PROFILE_ID_XPATH, null); + // Logger.info("CMSSignature: " + cmsSignatureStr); + final InputStream cmsSignature = + Base64Utils.decodeToStream(cmsSignatureStr, true); return factory.createVerifyCMSSignatureRequest( - signatories, - dateTime, - cmsSignature, - dataObject, - trustProfileID, - true, - extendedValidation); + signatories, + dateTime, + cmsSignature, + dataObject, + trustProfileID, + true, + extendedValidation); } - + /** - * Parse a <code>VerifyCMSSignatureRequest</code> DOM element, as defined - * by the MOA schema. - * + * Parse a <code>VerifyCMSSignatureRequest</code> DOM element, as defined by the + * MOA schema. + * * @param requestElem The <code>VerifyCMSSignatureRequest</code> to parse. The - * request must have been successfully parsed against the schema for this - * method to succeed. - * @return A <code>VerifyCMSSignatureRequest</code> API objects containing - * the data from the DOM element. + * request must have been successfully parsed against the + * schema for this method to succeed. + * @return A <code>VerifyCMSSignatureRequest</code> API objects containing the + * data from the DOM element. * @throws MOAApplicationException An error occurred parsing the request. */ public VerifyCMSSignatureRequest parse(Element requestElem) - throws MOAApplicationException { - - int[] signatories = parseSignatories(requestElem); - Date dateTime = - RequestParserUtils.parseDateTime(requestElem, DATE_TIME_XPATH); - boolean extendedValidation = - RequestParserUtils.parseExtendedValidation(requestElem, EXTENDED_VALIDATION_XPATH, false); - - String cmsSignatureStr = - XPathUtils.getElementValue(requestElem, CMS_SIGNATURE_XPATH, ""); - CMSDataObject dataObject = parseDataObject(requestElem); - String trustProfileID = - XPathUtils.getElementValue(requestElem, TRUST_PROFILE_ID_XPATH, null); - InputStream cmsSignature = - Base64Utils.decodeToStream(cmsSignatureStr, true); + throws MOAApplicationException { + + final int[] signatories = parseSignatories(requestElem); + final Date dateTime = + RequestParserUtils.parseDateTime(requestElem, DATE_TIME_XPATH); + final boolean extendedValidation = + RequestParserUtils.parseExtendedValidation(requestElem, EXTENDED_VALIDATION_XPATH, false); + + final String cmsSignatureStr = + XPathUtils.getElementValue(requestElem, CMS_SIGNATURE_XPATH, ""); + final CMSDataObject dataObject = parseDataObject(requestElem); + final String trustProfileID = + XPathUtils.getElementValue(requestElem, TRUST_PROFILE_ID_XPATH, null); + final InputStream cmsSignature = + Base64Utils.decodeToStream(cmsSignatureStr, true); return factory.createVerifyCMSSignatureRequest( - signatories, - dateTime, - cmsSignature, - dataObject, - trustProfileID, - false, - extendedValidation); + signatories, + dateTime, + cmsSignature, + dataObject, + trustProfileID, + false, + extendedValidation); } /** - * Parse the <code>Signatories</code> attribute contained in the + * Parse the <code>Signatories</code> attribute contained in the * <code>VerifyCMSSignatureRequest</code> DOM element. - * + * * @param requestElem The <code>VerifyCMSSignatureRequest</code> DOM element. - * @return The signatories contained in the given - * <code>VerifyCMSSignatureRequest</code> DOM element. + * @return The signatories contained in the given + * <code>VerifyCMSSignatureRequest</code> DOM element. */ private int[] parseSignatories(Element requestElem) { - String signatoriesStr = requestElem.getAttribute("Signatories"); + final String signatoriesStr = requestElem.getAttribute("Signatories"); if ("all".equals(signatoriesStr)) { return VerifyCMSSignatureRequest.ALL_SIGNATORIES; } else { - StringTokenizer tokenizer = new StringTokenizer(signatoriesStr); - List signatoriesList = new ArrayList(); + final StringTokenizer tokenizer = new StringTokenizer(signatoriesStr); + final List signatoriesList = new ArrayList(); int[] signatories; // put the signatories into a List while (tokenizer.hasMoreTokens()) { try { signatoriesList.add(new Integer(tokenizer.nextToken())); - } catch (NumberFormatException e) { + } catch (final NumberFormatException e) { // this cannot occur if the request has been validated } } @@ -188,44 +185,47 @@ public class VerifyCMSSignatureRequestParser { } /** - * Parse a the <code>DataObject</code> DOM element contained in a given + * Parse a the <code>DataObject</code> DOM element contained in a given * <code>VerifyCMSSignatureRequest</code> DOM element. - * - * @param requestElem The <code>VerifyCMSSignatureRequest</code> DOM element - * to parse. - * @return The <code>CMSDataObject</code> API object containing the data - * from the <code>DataObject</code> DOM element. + * + * @param requestElem The <code>VerifyCMSSignatureRequest</code> DOM element to + * parse. + * @return The <code>CMSDataObject</code> API object containing the data from + * the <code>DataObject</code> DOM element. */ private CMSDataObject parseDataObject(Element requestElem) { - Element dataObjectElem = - (Element) XPathUtils.selectSingleNode(requestElem, DATA_OBJECT_XPATH); + final Element dataObjectElem = + (Element) XPathUtils.selectSingleNode(requestElem, DATA_OBJECT_XPATH); if (dataObjectElem != null) { - Element metaInfoElem = - (Element) XPathUtils.selectSingleNode(dataObjectElem, META_INFO_XPATH); + final Element metaInfoElem = + (Element) XPathUtils.selectSingleNode(dataObjectElem, META_INFO_XPATH); MetaInfo metaInfo = null; - Element contentElem = - (Element) XPathUtils.selectSingleNode(dataObjectElem, CONTENT_XPATH); - CMSContent content = parseContent(contentElem); + final Element contentElem = + (Element) XPathUtils.selectSingleNode(dataObjectElem, CONTENT_XPATH); + final CMSContent content = parseContent(contentElem); if (metaInfoElem != null) { metaInfo = RequestParserUtils.parseMetaInfo(metaInfoElem); } - String excludeByteRangeFromStr = XPathUtils.getElementValue(dataObjectElem, EXCLUDEBYTERANGE_FROM_XPATH, null); - String excludeByteRangeToStr = XPathUtils.getElementValue(dataObjectElem, EXCLUDEBYTERANGE_TO_XPATH, null); - + final String excludeByteRangeFromStr = XPathUtils.getElementValue(dataObjectElem, + EXCLUDEBYTERANGE_FROM_XPATH, null); + final String excludeByteRangeToStr = XPathUtils.getElementValue(dataObjectElem, + EXCLUDEBYTERANGE_TO_XPATH, null); + BigDecimal excludeByteRangeFrom = null; BigDecimal excludeByteRangeTo = null; - - if (excludeByteRangeFromStr != null) - excludeByteRangeFrom = new BigDecimal(excludeByteRangeFromStr); - if (excludeByteRangeToStr != null) - excludeByteRangeTo = new BigDecimal(excludeByteRangeToStr); + + if (excludeByteRangeFromStr != null) { + excludeByteRangeFrom = new BigDecimal(excludeByteRangeFromStr); + } + if (excludeByteRangeToStr != null) { + excludeByteRangeTo = new BigDecimal(excludeByteRangeToStr); + } return factory.createCMSDataObject(metaInfo, content, excludeByteRangeFrom, excludeByteRangeTo); - - + } else { return null; } @@ -233,25 +233,25 @@ public class VerifyCMSSignatureRequestParser { } /** - * Parse the content contained in a <code>CMSContentBaseType</code> kind of - * DOM element. - * + * Parse the content contained in a <code>CMSContentBaseType</code> kind of DOM + * element. + * * @param contentElem The <code>CMSContentBaseType</code> kind of element to - * parse. - * @return A <code>CMSDataObject</code> API object containing the data - * from the given DOM element. + * parse. + * @return A <code>CMSDataObject</code> API object containing the data from the + * given DOM element. */ private CMSContent parseContent(Element contentElem) { - Element base64ContentElem = - (Element) XPathUtils.selectSingleNode(contentElem, BASE64_CONTENT_XPATH); + final Element base64ContentElem = + (Element) XPathUtils.selectSingleNode(contentElem, BASE64_CONTENT_XPATH); if (base64ContentElem != null) { - String base64Str = DOMUtils.getText(base64ContentElem); - InputStream binaryContent = Base64Utils.decodeToStream(base64Str, true); + final String base64Str = DOMUtils.getText(base64ContentElem); + final InputStream binaryContent = Base64Utils.decodeToStream(base64Str, true); return factory.createCMSContent(binaryContent); } else { return factory.createCMSContent( - contentElem.getAttribute("Reference")); + contentElem.getAttribute("Reference")); } } } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlbind/VerifyCMSSignatureResponseBuilder.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlbind/VerifyCMSSignatureResponseBuilder.java index 30bf3c4..265d0f3 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlbind/VerifyCMSSignatureResponseBuilder.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlbind/VerifyCMSSignatureResponseBuilder.java @@ -21,13 +21,10 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.api.xmlbind; import java.util.Iterator; -import at.gv.egovernment.moa.spss.api.xmlverify.VerifyXMLSignatureResponse; -import at.gv.egovernment.moaspss.util.Constants; import org.w3c.dom.Document; import org.w3c.dom.Element; @@ -38,132 +35,138 @@ import at.gv.egovernment.moa.spss.api.cmsverify.VerifyCMSSignatureResponseElemen import at.gv.egovernment.moa.spss.api.common.CheckResult; import at.gv.egovernment.moa.spss.api.common.SignerInfo; import at.gv.egovernment.moa.spss.api.xmlverify.AdESFormResults; +import at.gv.egovernment.moaspss.util.Constants; /** - * Convert a <code>VerifyCMSSignatureResponse</code> API object into its - * XML representation, according to the MOA XML schema. - * + * Convert a <code>VerifyCMSSignatureResponse</code> API object into its XML + * representation, according to the MOA XML schema. + * * @author Patrick Peck * @version $Id$ */ public class VerifyCMSSignatureResponseBuilder { /** The XML document containing the response element. */ - private Document responseDoc; + private final Document responseDoc; /** The response <code>VerifyCMSSignatureResponse</code> DOM element. */ - private Element responseElem; + private final Element responseElem; private boolean includeSigningTime = false; /** * Create a new <code>VerifyCMSSignatureResponseBuilder</code>: - * - * @throws MOASystemException An error occurred setting up the resulting - * XML document. + * + * @throws MOASystemException An error occurred setting up the resulting XML + * document. */ public VerifyCMSSignatureResponseBuilder() throws MOASystemException { responseDoc = - ResponseBuilderUtils.createResponse("VerifyCMSSignatureResponse"); + ResponseBuilderUtils.createResponse("VerifyCMSSignatureResponse"); responseElem = responseDoc.getDocumentElement(); } - public VerifyCMSSignatureResponseBuilder(Document responseDoc, String name, boolean includeSigningTime) throws MOASystemException { - this.responseDoc = responseDoc; - responseElem = responseDoc.createElementNS(Constants.MOA_NS_URI, name); - this.includeSigningTime = includeSigningTime; - } + public VerifyCMSSignatureResponseBuilder(Document responseDoc, String name, boolean includeSigningTime) + throws MOASystemException { + this.responseDoc = responseDoc; + responseElem = responseDoc.createElementNS(Constants.MOA_NS_URI, name); + this.includeSigningTime = includeSigningTime; + } + + public Element buildElement(VerifyCMSSignatureResponse response) throws MOAApplicationException { + this.build(response); + return responseElem; + } - public Element buildElement(VerifyCMSSignatureResponse response) throws MOAApplicationException { - this.build(response); - return responseElem; - } - /** - * Build a document containing a <code>VerifyCMSSignatureResponse</code> - * DOM element being the XML representation of the given + * Build a document containing a <code>VerifyCMSSignatureResponse</code> DOM + * element being the XML representation of the given * <code>VerifyCMSSignatureResponse</code> API object. - * - * @param response The <code>VerifyCMSSignatureResponse</code> to convert - * to XML. - * @return A document containing the <code>VerifyCMSSignatureResponse</code> - * DOM element. + * + * @param response The <code>VerifyCMSSignatureResponse</code> to convert to + * XML. + * @return A document containing the <code>VerifyCMSSignatureResponse</code> DOM + * element. * @throws MOAApplicationException An error occurred building the response. */ public Document build(VerifyCMSSignatureResponse response) - throws MOAApplicationException { + throws MOAApplicationException { Iterator iter; for (iter = response.getResponseElements().iterator(); iter.hasNext();) { - VerifyCMSSignatureResponseElement responseElement = - (VerifyCMSSignatureResponseElement) iter.next(); + final VerifyCMSSignatureResponseElement responseElement = + (VerifyCMSSignatureResponseElement) iter.next(); addResponseElement(responseElement); } - + return responseDoc; } /** * Add an element to the response. - * + * * @param responseElement The element to add to the response. * @throws MOAApplicationException An error occurred adding the element. */ private void addResponseElement(VerifyCMSSignatureResponseElement responseElement) - throws MOAApplicationException { + throws MOAApplicationException { + + final SignerInfo signerInfo = responseElement.getSignerInfo(); + final CheckResult signatureCheck = responseElement.getSignatureCheck(); + final CheckResult certCheck = responseElement.getCertificateCheck(); - SignerInfo signerInfo = responseElement.getSignerInfo(); - CheckResult signatureCheck = responseElement.getSignatureCheck(); - CheckResult certCheck = responseElement.getCertificateCheck(); - ResponseBuilderUtils.addSignerInfo( - responseDoc, - responseElem, - signerInfo.getSignerCertificate(), - signerInfo.isQualifiedCertificate(), - signerInfo.getQCSource(), - signerInfo.isPublicAuthority(), - signerInfo.getPublicAuhtorityID(), - signerInfo.isSSCD(), - signerInfo.getSSCDSource(), - signerInfo.getIssuerCountryCode(), - signerInfo.getTslInfos()); - - if(this.includeSigningTime) { + responseDoc, + responseElem, + signerInfo.getSignerCertificate(), + signerInfo.isQualifiedCertificate(), + signerInfo.getQCSource(), + signerInfo.isPublicAuthority(), + signerInfo.getPublicAuhtorityID(), + signerInfo.isSSCD(), + signerInfo.getSSCDSource(), + signerInfo.getIssuerCountryCode(), + signerInfo.getTslInfos()); + + if (this.includeSigningTime) { ResponseBuilderUtils.addSigningTime(responseDoc, - responseElem, signerInfo.getSigningTime()); + responseElem, signerInfo.getSigningTime()); } + ResponseBuilderUtils.addSignatureAlgorithm(responseDoc, + responseElem, + responseElement.getSignatureAlgorithm()); + ResponseBuilderUtils.addCodeInfoElement( - responseDoc, - responseElem, - "SignatureCheck", - signatureCheck.getCode(), - signatureCheck.getInfo()); + responseDoc, + responseElem, + "SignatureCheck", + signatureCheck.getCode(), + signatureCheck.getInfo()); ResponseBuilderUtils.addCodeInfoElement( - responseDoc, - responseElem, - "CertificateCheck", - certCheck.getCode(), - certCheck.getInfo()); - + responseDoc, + responseElem, + "CertificateCheck", + certCheck.getCode(), + certCheck.getInfo()); if (responseElement.getAdESFormResults() != null) { - Iterator formIterator = responseElement.getAdESFormResults().iterator(); - - while (formIterator.hasNext()) { - AdESFormResults adESFormResult = (AdESFormResults) formIterator.next(); - // add the CertificateCheck - ResponseBuilderUtils.addFormCheckElement(responseDoc, responseElem, "FormCheckResult", - adESFormResult.getCode().intValue(), adESFormResult.getName()); - - } - } - - if(responseElement.getExtendedCertificateCheck() != null) { - ResponseBuilderUtils.addExtendendResult(responseDoc, responseElem, responseElement.getExtendedCertificateCheck()); - } - + final Iterator formIterator = responseElement.getAdESFormResults().iterator(); + + while (formIterator.hasNext()) { + final AdESFormResults adESFormResult = (AdESFormResults) formIterator.next(); + // add the CertificateCheck + ResponseBuilderUtils.addFormCheckElement(responseDoc, responseElem, "FormCheckResult", + adESFormResult.getCode().intValue(), adESFormResult.getName()); + + } + } + + if (responseElement.getExtendedCertificateCheck() != null) { + ResponseBuilderUtils.addExtendendResult(responseDoc, responseElem, responseElement + .getExtendedCertificateCheck()); + } + } } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlbind/VerifyPDFSignatureResponseBuilder.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlbind/VerifyPDFSignatureResponseBuilder.java index 0ca6f8f..b9b7d26 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlbind/VerifyPDFSignatureResponseBuilder.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlbind/VerifyPDFSignatureResponseBuilder.java @@ -21,7 +21,6 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.api.xmlbind; import java.util.Iterator; @@ -39,127 +38,144 @@ import at.gv.egovernment.moa.spss.api.xmlverify.AdESFormResults; import at.gv.egovernment.moaspss.logging.Logger; /** - * Convert a <code>VerifyCMSSignatureResponse</code> API object into its - * XML representation, according to the MOA XML schema. - * + * Convert a <code>VerifyCMSSignatureResponse</code> API object into its XML + * representation, according to the MOA XML schema. + * * @author Patrick Peck * @version $Id$ */ public class VerifyPDFSignatureResponseBuilder { /** The XML document containing the response element. */ - private Document responseDoc; + private final Document responseDoc; /** The response <code>VerifyCMSSignatureResponse</code> DOM element. */ - private Element responseRootElem; + private final Element responseRootElem; /** * Create a new <code>VerifyCMSSignatureResponseBuilder</code>: - * - * @throws MOASystemException An error occurred setting up the resulting - * XML document. + * + * @throws MOASystemException An error occurred setting up the resulting XML + * document. */ public VerifyPDFSignatureResponseBuilder() throws MOASystemException { responseDoc = - ResponseBuilderUtils.createResponse("VerifyPDFSignatureResponse"); + ResponseBuilderUtils.createResponse("VerifyPDFSignatureResponse"); responseRootElem = responseDoc.getDocumentElement(); } - + /** - * Build a document containing a <code>VerifyCMSSignatureResponse</code> - * DOM element being the XML representation of the given + * Build a document containing a <code>VerifyCMSSignatureResponse</code> DOM + * element being the XML representation of the given * <code>VerifyCMSSignatureResponse</code> API object. - * - * @param response The <code>VerifyCMSSignatureResponse</code> to convert - * to XML. - * @return A document containing the <code>VerifyCMSSignatureResponse</code> - * DOM element. + * + * @param response The <code>VerifyCMSSignatureResponse</code> to convert to + * XML. + * @return A document containing the <code>VerifyCMSSignatureResponse</code> DOM + * element. * @throws MOAApplicationException An error occurred building the response. */ public Document build(VerifyCMSSignatureResponse response) - throws MOAApplicationException { + throws MOAApplicationException { Iterator iter; - for (iter = response.getResponseElements().iterator(); iter.hasNext();) { - VerifyCMSSignatureResponseElement responseElement = - (VerifyCMSSignatureResponseElement) iter.next(); - Element signatureResult = ResponseBuilderUtils.addChildElement("SignatureResult", responseDoc, responseRootElem); + final VerifyCMSSignatureResponseElement responseElement = + (VerifyCMSSignatureResponseElement) iter.next(); + final Element signatureResult = ResponseBuilderUtils.addChildElement("SignatureResult", responseDoc, + responseRootElem); addResponseElement(responseElement, signatureResult); - + } - + return responseDoc; } /** * Add an element to the response. - * + * * @param responseElement The element to add to the response. - * @param signatureResult + * @param signatureResult * @throws MOAApplicationException An error occurred adding the element. */ private void addResponseElement(VerifyCMSSignatureResponseElement responseElement, Element responseElem) - throws MOAApplicationException { + throws MOAApplicationException { + + final SignerInfo signerInfo = responseElement.getSignerInfo(); + final CheckResult signatureCheck = responseElement.getSignatureCheck(); + final CheckResult certCheck = responseElement.getCertificateCheck(); - SignerInfo signerInfo = responseElement.getSignerInfo(); - CheckResult signatureCheck = responseElement.getSignatureCheck(); - CheckResult certCheck = responseElement.getCertificateCheck(); - if (signerInfo != null) { - ResponseBuilderUtils.addSignerInfo( - responseDoc, - responseElem, - signerInfo.getSignerCertificate(), - signerInfo.isQualifiedCertificate(), - signerInfo.getQCSource(), - signerInfo.isPublicAuthority(), - signerInfo.getPublicAuhtorityID(), - signerInfo.isSSCD(), - signerInfo.getSSCDSource(), - signerInfo.getIssuerCountryCode(), - signerInfo.getTslInfos()); - - ResponseBuilderUtils.addSigningTime(responseDoc, - responseElem, - signerInfo.getSigningTime()); - + ResponseBuilderUtils.addSignerInfo( + responseDoc, + responseElem, + signerInfo.getSignerCertificate(), + signerInfo.isQualifiedCertificate(), + signerInfo.getQCSource(), + signerInfo.isPublicAuthority(), + signerInfo.getPublicAuhtorityID(), + signerInfo.isSSCD(), + signerInfo.getSSCDSource(), + signerInfo.getIssuerCountryCode(), + signerInfo.getTslInfos()); + + ResponseBuilderUtils.addSigningTime(responseDoc, + responseElem, + signerInfo.getSigningTime()); + } else { - Logger.info("Find signature result with no 'SignerInfo'. Maybe a signature verification Failed"); - + Logger.info("Find signature result with no 'SignerInfo'. Maybe a signature verification Failed"); + } + ResponseBuilderUtils.addSignatureAlgorithm(responseDoc, + responseElem, + responseElement.getSignatureAlgorithm()); + ResponseBuilderUtils.addCodeInfoElement( - responseDoc, - responseElem, - "SignatureCheck", - signatureCheck.getCode(), - signatureCheck.getInfo()); + responseDoc, + responseElem, + "SignatureCheck", + signatureCheck.getCode(), + signatureCheck.getInfo()); ResponseBuilderUtils.addCodeInfoElement( - responseDoc, - responseElem, - "CertificateCheck", - certCheck.getCode(), - certCheck.getInfo()); - + responseDoc, + responseElem, + "CertificateCheck", + certCheck.getCode(), + certCheck.getInfo()); if (responseElement.getAdESFormResults() != null) { - Iterator formIterator = responseElement.getAdESFormResults().iterator(); - - while (formIterator.hasNext()) { - AdESFormResults adESFormResult = (AdESFormResults) formIterator.next(); - // add the CertificateCheck - ResponseBuilderUtils.addFormCheckElement(responseDoc, responseElem, "FormCheckResult", - adESFormResult.getCode().intValue(), adESFormResult.getName()); - - } - } - - if(responseElement.getExtendedCertificateCheck() != null) { - ResponseBuilderUtils.addExtendendResult(responseDoc, responseElem, responseElement.getExtendedCertificateCheck()); - } - + final Iterator formIterator = responseElement.getAdESFormResults().iterator(); + + while (formIterator.hasNext()) { + final AdESFormResults adESFormResult = (AdESFormResults) formIterator.next(); + // add the CertificateCheck + ResponseBuilderUtils.addFormCheckElement(responseDoc, responseElem, "FormCheckResult", + adESFormResult.getCode().intValue(), adESFormResult.getName()); + + } + } + + if (responseElement.getExtendedCertificateCheck() != null) { + ResponseBuilderUtils.addExtendendResult(responseDoc, responseElem, responseElement + .getExtendedCertificateCheck()); + } + + // add additional PDF signature properteis + if (responseElement.getCoversFullDocument() != null || + responseElement.getByteRangeOfSignature() != null) { + final Element pdfSigProps = ResponseBuilderUtils.createAndAddChildElement(responseDoc, responseElem, + "SignatureProperties"); + ResponseBuilderUtils.addSignatureCoversFullPDF(responseDoc, + pdfSigProps, + responseElement.getCoversFullDocument()); + ResponseBuilderUtils.addSignatureByteRange(responseDoc, + pdfSigProps, + responseElement.getByteRangeOfSignature()); + } + } } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlbind/VerifyXMLSignatureRequestParser.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlbind/VerifyXMLSignatureRequestParser.java index f1bb1d7..1360c5f 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlbind/VerifyXMLSignatureRequestParser.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlbind/VerifyXMLSignatureRequestParser.java @@ -51,236 +51,230 @@ import at.gv.egovernment.moaspss.util.XPathUtils; */ public class VerifyXMLSignatureRequestParser { - // - // XPath expressions for parsing parts of the request - // - private static final String MOA = Constants.MOA_PREFIX + ":"; - private static final String DATE_TIME_XPATH = MOA + "DateTime"; - private static final String EXTENDED_VALIDATION_XPATH = MOA + "ExtendedValidation"; - private static final String RETURN_HASH_INPUT_DATA_XPATH = MOA + "ReturnHashInputData"; - private static final String TRUST_PROFILE_ID_XPATH = MOA + "TrustProfileID"; - private static final String VERIFY_SIGNATURE_ENVIRONMENT_XPATH = MOA + "VerifySignatureInfo/" + MOA - + "VerifySignatureEnvironment"; - private static final String VERIFY_SIGNATURE_LOCATION_XPATH = MOA + "VerifySignatureInfo/" + MOA - + "VerifySignatureLocation"; - private static final String SUPPLEMENT_PROFILE_XPATH = MOA + "SupplementProfile | " + MOA + "SupplementProfileID"; - private static final String SIGNATURE_MANIFEST_CHECK_PARAMS_XPATH = MOA + "SignatureManifestCheckParams"; - private static final String VERIFY_TRANSFORMS_INFO_PROFILE_XPATH = (MOA + "VerifyTransformsInfoProfile | ") - + (MOA + "VerifyTransformsInfoProfileID"); - private static final String REFERENCE_INFO_XPATH = MOA + "ReferenceInfo"; - - /** The <code>SPSSFactory</code> for creating new API objects. */ - private SPSSFactory factory = SPSSFactory.getInstance(); - - /** - * Parse a <code>VerifyXMLSignatureRequest</code> DOM element, as defined - * by the MOA schema. - * + // + // XPath expressions for parsing parts of the request + // + private static final String MOA = Constants.MOA_PREFIX + ":"; + private static final String DATE_TIME_XPATH = MOA + "DateTime"; + private static final String EXTENDED_VALIDATION_XPATH = MOA + "ExtendedValidation"; + private static final String RETURN_HASH_INPUT_DATA_XPATH = MOA + "ReturnHashInputData"; + private static final String TRUST_PROFILE_ID_XPATH = MOA + "TrustProfileID"; + private static final String VERIFY_SIGNATURE_ENVIRONMENT_XPATH = MOA + "VerifySignatureInfo/" + MOA + + "VerifySignatureEnvironment"; + private static final String VERIFY_SIGNATURE_LOCATION_XPATH = MOA + "VerifySignatureInfo/" + MOA + + "VerifySignatureLocation"; + private static final String SUPPLEMENT_PROFILE_XPATH = MOA + "SupplementProfile | " + MOA + + "SupplementProfileID"; + private static final String SIGNATURE_MANIFEST_CHECK_PARAMS_XPATH = MOA + "SignatureManifestCheckParams"; + private static final String VERIFY_TRANSFORMS_INFO_PROFILE_XPATH = MOA + "VerifyTransformsInfoProfile | " + + MOA + "VerifyTransformsInfoProfileID"; + private static final String REFERENCE_INFO_XPATH = MOA + "ReferenceInfo"; + + /** The <code>SPSSFactory</code> for creating new API objects. */ + private final SPSSFactory factory = SPSSFactory.getInstance(); + + /** + * Parse a <code>VerifyXMLSignatureRequest</code> DOM element, as defined by the + * MOA schema. + * * @param requestElem The <code>VerifyXMLSignatureRequest</code> to parse. The - * request must have been successfully parsed against the schema for this - * method to succeed. - * @return A <code>VerifyXMLSignatureRequest</code> API object containing - * the data from the DOM element. + * request must have been successfully parsed against the + * schema for this method to succeed. + * @return A <code>VerifyXMLSignatureRequest</code> API object containing the + * data from the DOM element. * @throws MOAApplicationException An error occurred parsing the request. */ public VerifyXMLSignatureRequest parse(Element requestElem) - throws MOAApplicationException { - - Date dateTime = - RequestParserUtils.parseDateTime(requestElem, DATE_TIME_XPATH); - - boolean extendedValidation = - RequestParserUtils.parseExtendedValidation(requestElem, EXTENDED_VALIDATION_XPATH, false); - - VerifySignatureInfo verifySignatureInfo = - parseVerifySignatureInfo(requestElem); - List supplementProfiles = parseSupplementProfiles(requestElem); - SignatureManifestCheckParams signatureManifestCheckParams = - parseSignatureManifestCheckParams(requestElem); - boolean returnHashInputData = - XPathUtils.selectSingleNode(requestElem, RETURN_HASH_INPUT_DATA_XPATH) - != null; - String trustProfileID = - XPathUtils.getElementValue(requestElem, TRUST_PROFILE_ID_XPATH, null); + throws MOAApplicationException { + + final Date dateTime = + RequestParserUtils.parseDateTime(requestElem, DATE_TIME_XPATH); + + final boolean extendedValidation = + RequestParserUtils.parseExtendedValidation(requestElem, EXTENDED_VALIDATION_XPATH, false); + + final VerifySignatureInfo verifySignatureInfo = + parseVerifySignatureInfo(requestElem); + final List supplementProfiles = parseSupplementProfiles(requestElem); + final SignatureManifestCheckParams signatureManifestCheckParams = + parseSignatureManifestCheckParams(requestElem); + final boolean returnHashInputData = + XPathUtils.selectSingleNode(requestElem, RETURN_HASH_INPUT_DATA_XPATH) != null; + final String trustProfileID = + XPathUtils.getElementValue(requestElem, TRUST_PROFILE_ID_XPATH, null); return factory.createVerifyXMLSignatureRequest( - dateTime, - verifySignatureInfo, - supplementProfiles, - signatureManifestCheckParams, - returnHashInputData, - trustProfileID, - extendedValidation); + dateTime, + verifySignatureInfo, + supplementProfiles, + signatureManifestCheckParams, + returnHashInputData, + trustProfileID, + extendedValidation); } - /** - * Parse the <code>VerifySignatureInfo</code> DOM element contained in the - * <code>VerifyXMLSignatureRequest</code> DOM element. - * - * @param requestElem - * The <code>VerifyXMLSignatureRequest</code> DOM element - * containing the <code>VerifySignatureInfo</code> DOM element. - * @return The <code>VerifySignatureInfo</code> API object containing the - * data from the DOM element. - */ - private VerifySignatureInfo parseVerifySignatureInfo(Element requestElem) { - Element verifySignatureEnvironmentElem = (Element) XPathUtils.selectSingleNode(requestElem, - VERIFY_SIGNATURE_ENVIRONMENT_XPATH); - Content verifySignatureEnvironment = RequestParserUtils.parseContent(verifySignatureEnvironmentElem); - VerifySignatureLocation verifySignatureLocation = parseVerifySignatureLocation(requestElem); - - return factory.createVerifySignatureInfo(verifySignatureEnvironment, verifySignatureLocation); - } - - /** - * Parse the <code>VerifySignatureLocation</code> DOM element contained in - * the given <code>VerifyXMLSignatureRequest</code> DOM element. - * - * @param requestElem - * The <code>VerifyXMLSignatureRequst</code> DOM element. - * @return The <code>VerifySignatureLocation</code> API object containing - * the data from the DOM element. - */ - private VerifySignatureLocation parseVerifySignatureLocation(Element requestElem) { - Element locationElem = (Element) XPathUtils.selectSingleNode(requestElem, VERIFY_SIGNATURE_LOCATION_XPATH); - String xPathExpression = DOMUtils.getText(locationElem); - Map namespaceDeclarations = DOMUtils.getNamespaceDeclarations(locationElem); - - return factory.createVerifySignatureLocation(xPathExpression, namespaceDeclarations); - } - - /** - * Parse the supplement profiles contained in the given - * <code>VerifyXMLSignatureRequest</code> DOM element. - * - * @param requestElem - * The <code>VerifyXMLSignatureRequest</code> DOM element. - * @return A <code>List</code> of <code>SupplementProfile</code> API objects - * containing the data from the <code>SupplementProfile</code> DOM - * elements. - */ - private List parseSupplementProfiles(Element requestElem) { - List supplementProfiles = new ArrayList(); - NodeIterator profileElems = XPathUtils.selectNodeIterator(requestElem, SUPPLEMENT_PROFILE_XPATH); - Element profileElem; - - while ((profileElem = (Element) profileElems.nextNode()) != null) { - SupplementProfile profile; - - if ("SupplementProfile".equals(profileElem.getLocalName())) { - ProfileParser profileParser = new ProfileParser(); - profile = profileParser.parseSupplementProfile(profileElem); - } else { - String profileID = DOMUtils.getText(profileElem); - profile = factory.createSupplementProfile(profileID); - } - supplementProfiles.add(profile); - } - return supplementProfiles; - } - - /** - * Parse the <code>SignatureManifestCheckParams</code> DOM element contained - * in the given <code>VerifyXMLSignatureRequest</code> DOM element. - * - * @param requestElem - * The <code>VerifyXMLSignatureRequest</code> DOM element. - * @return The <code>SignatureManifestCheckParams</code> API object - * containing the data from the - * <code>SignatureManifestCheckParams</code> DOM element. - * @throws MOAApplicationException - * An error occurred parsing the - * <code>SignatureManifestCheckParams</code> DOM element. - */ - private SignatureManifestCheckParams parseSignatureManifestCheckParams(Element requestElem) - throws MOAApplicationException { - Element paramsElem = (Element) XPathUtils.selectSingleNode(requestElem, SIGNATURE_MANIFEST_CHECK_PARAMS_XPATH); - - if (paramsElem != null) { - String returnReferenceInputDataStr = paramsElem.getAttribute("ReturnReferenceInputData"); - boolean returnReferencInputData = BoolUtils.valueOf(returnReferenceInputDataStr); - List referenceInfos = parseReferenceInfos(paramsElem); - - return factory.createSignatureManifestCheckParams(referenceInfos, returnReferencInputData); - } else { - return null; - } - } - - /** - * Parse the <code>ReferenceInfo</code> DOM elements contained in a - * <code>SignatureManifestCheckParams</code> DOM element. - * - * @param paramsElem - * The <code>SignatureManifestCheckParams</code> DOM element - * containing the <code>ReferenceInfo</code> DOM elements. - * @return A <code>List</code> of <code>RefernceInfo</code> API objects - * containing the data from the <code>ReferenceInfo</code> DOM - * elements. - * @throws MOAApplicationException - * An error occurred parsing the <code>ReferenceInfo</code> DOM - * elements. - */ - private List parseReferenceInfos(Element paramsElem) throws MOAApplicationException { - - List referenceInfos = new ArrayList(); - NodeIterator refInfoElems = XPathUtils.selectNodeIterator(paramsElem, REFERENCE_INFO_XPATH); - Element refInfoElem; - - while ((refInfoElem = (Element) refInfoElems.nextNode()) != null) { - ReferenceInfo referenceInfo = parseReferenceInfo(refInfoElem); - - referenceInfos.add(referenceInfo); - } - - return referenceInfos; - } - - /** - * Parse a <code>ReferenceInfo</code> DOM element. - * - * @param refInfoElem - * The <code>ReferenceInfo</code> DOM element to parse. - * @return The <code>ReferenceInfo</code> API object containing the data - * from the given <code>ReferenceInfo</code> DOM element. - * @throws MOAApplicationException - * An error occurred parsing the <code>ReferenceInfo</code> DOM - * element. - */ - private ReferenceInfo parseReferenceInfo(Element refInfoElem) throws MOAApplicationException { - List profiles = parseVerifyTransformsInfoProfiles(refInfoElem); - return factory.createReferenceInfo(profiles); - } - - /** - * Parse the <code>VerifyTransformsInfoProfile</code> DOM elements contained - * in a <code>ReferenceInfo</code> DOM element. - * - * @param refInfoElem - * <code>ReferenceInfo</code> DOM element containing the - * <code>VerifyTransformsInfoProfile</code> DOM elements. - * @return A <code>List</code> of <code>VerifyTransformsInfoProfile</code> - * API objects containing the profile data. - * @throws MOAApplicationException - * An error occurred building the - * <code>VerifyTransformsInfoProfile</code>s. - */ - private List parseVerifyTransformsInfoProfiles(Element refInfoElem) throws MOAApplicationException { - - List profiles = new ArrayList(); - NodeIterator profileElems = XPathUtils.selectNodeIterator(refInfoElem, VERIFY_TRANSFORMS_INFO_PROFILE_XPATH); - Element profileElem; - - while ((profileElem = (Element) profileElems.nextNode()) != null) { - if ("VerifyTransformsInfoProfile".equals(profileElem.getLocalName())) { - ProfileParser profileParser = new ProfileParser(); - profiles.add(profileParser.parseVerifyTransformsInfoProfile(profileElem)); - } else { - String profileID = DOMUtils.getText(profileElem); - profiles.add(factory.createVerifyTransformsInfoProfile(profileID)); - } - } - return profiles; - } + /** + * Parse the <code>VerifySignatureInfo</code> DOM element contained in the + * <code>VerifyXMLSignatureRequest</code> DOM element. + * + * @param requestElem The <code>VerifyXMLSignatureRequest</code> DOM element + * containing the <code>VerifySignatureInfo</code> DOM + * element. + * @return The <code>VerifySignatureInfo</code> API object containing the data + * from the DOM element. + */ + private VerifySignatureInfo parseVerifySignatureInfo(Element requestElem) { + final Element verifySignatureEnvironmentElem = (Element) XPathUtils.selectSingleNode(requestElem, + VERIFY_SIGNATURE_ENVIRONMENT_XPATH); + final Content verifySignatureEnvironment = RequestParserUtils.parseContent( + verifySignatureEnvironmentElem); + final VerifySignatureLocation verifySignatureLocation = parseVerifySignatureLocation(requestElem); + + return factory.createVerifySignatureInfo(verifySignatureEnvironment, verifySignatureLocation); + } + + /** + * Parse the <code>VerifySignatureLocation</code> DOM element contained in the + * given <code>VerifyXMLSignatureRequest</code> DOM element. + * + * @param requestElem The <code>VerifyXMLSignatureRequst</code> DOM element. + * @return The <code>VerifySignatureLocation</code> API object containing the + * data from the DOM element. + */ + private VerifySignatureLocation parseVerifySignatureLocation(Element requestElem) { + final Element locationElem = (Element) XPathUtils.selectSingleNode(requestElem, + VERIFY_SIGNATURE_LOCATION_XPATH); + final String xPathExpression = DOMUtils.getText(locationElem); + final Map namespaceDeclarations = DOMUtils.getNamespaceDeclarations(locationElem); + + return factory.createVerifySignatureLocation(xPathExpression, namespaceDeclarations); + } + + /** + * Parse the supplement profiles contained in the given + * <code>VerifyXMLSignatureRequest</code> DOM element. + * + * @param requestElem The <code>VerifyXMLSignatureRequest</code> DOM element. + * @return A <code>List</code> of <code>SupplementProfile</code> API objects + * containing the data from the <code>SupplementProfile</code> DOM + * elements. + */ + private List parseSupplementProfiles(Element requestElem) { + final List supplementProfiles = new ArrayList(); + final NodeIterator profileElems = XPathUtils.selectNodeIterator(requestElem, SUPPLEMENT_PROFILE_XPATH); + Element profileElem; + + while ((profileElem = (Element) profileElems.nextNode()) != null) { + SupplementProfile profile; + + if ("SupplementProfile".equals(profileElem.getLocalName())) { + final ProfileParser profileParser = new ProfileParser(); + profile = profileParser.parseSupplementProfile(profileElem); + } else { + final String profileID = DOMUtils.getText(profileElem); + profile = factory.createSupplementProfile(profileID); + } + supplementProfiles.add(profile); + } + return supplementProfiles; + } + + /** + * Parse the <code>SignatureManifestCheckParams</code> DOM element contained in + * the given <code>VerifyXMLSignatureRequest</code> DOM element. + * + * @param requestElem The <code>VerifyXMLSignatureRequest</code> DOM element. + * @return The <code>SignatureManifestCheckParams</code> API object containing + * the data from the <code>SignatureManifestCheckParams</code> DOM + * element. + * @throws MOAApplicationException An error occurred parsing the + * <code>SignatureManifestCheckParams</code> DOM + * element. + */ + private SignatureManifestCheckParams parseSignatureManifestCheckParams(Element requestElem) + throws MOAApplicationException { + final Element paramsElem = (Element) XPathUtils.selectSingleNode(requestElem, + SIGNATURE_MANIFEST_CHECK_PARAMS_XPATH); + + if (paramsElem != null) { + final String returnReferenceInputDataStr = paramsElem.getAttribute("ReturnReferenceInputData"); + final boolean returnReferencInputData = BoolUtils.valueOf(returnReferenceInputDataStr); + final List referenceInfos = parseReferenceInfos(paramsElem); + + return factory.createSignatureManifestCheckParams(referenceInfos, returnReferencInputData); + } else { + return null; + } + } + + /** + * Parse the <code>ReferenceInfo</code> DOM elements contained in a + * <code>SignatureManifestCheckParams</code> DOM element. + * + * @param paramsElem The <code>SignatureManifestCheckParams</code> DOM element + * containing the <code>ReferenceInfo</code> DOM elements. + * @return A <code>List</code> of <code>RefernceInfo</code> API objects + * containing the data from the <code>ReferenceInfo</code> DOM elements. + * @throws MOAApplicationException An error occurred parsing the + * <code>ReferenceInfo</code> DOM elements. + */ + private List parseReferenceInfos(Element paramsElem) throws MOAApplicationException { + + final List referenceInfos = new ArrayList(); + final NodeIterator refInfoElems = XPathUtils.selectNodeIterator(paramsElem, REFERENCE_INFO_XPATH); + Element refInfoElem; + + while ((refInfoElem = (Element) refInfoElems.nextNode()) != null) { + final ReferenceInfo referenceInfo = parseReferenceInfo(refInfoElem); + + referenceInfos.add(referenceInfo); + } + + return referenceInfos; + } + + /** + * Parse a <code>ReferenceInfo</code> DOM element. + * + * @param refInfoElem The <code>ReferenceInfo</code> DOM element to parse. + * @return The <code>ReferenceInfo</code> API object containing the data from + * the given <code>ReferenceInfo</code> DOM element. + * @throws MOAApplicationException An error occurred parsing the + * <code>ReferenceInfo</code> DOM element. + */ + private ReferenceInfo parseReferenceInfo(Element refInfoElem) throws MOAApplicationException { + final List profiles = parseVerifyTransformsInfoProfiles(refInfoElem); + return factory.createReferenceInfo(profiles); + } + + /** + * Parse the <code>VerifyTransformsInfoProfile</code> DOM elements contained in + * a <code>ReferenceInfo</code> DOM element. + * + * @param refInfoElem <code>ReferenceInfo</code> DOM element containing the + * <code>VerifyTransformsInfoProfile</code> DOM elements. + * @return A <code>List</code> of <code>VerifyTransformsInfoProfile</code> API + * objects containing the profile data. + * @throws MOAApplicationException An error occurred building the + * <code>VerifyTransformsInfoProfile</code>s. + */ + private List parseVerifyTransformsInfoProfiles(Element refInfoElem) throws MOAApplicationException { + + final List profiles = new ArrayList(); + final NodeIterator profileElems = XPathUtils.selectNodeIterator(refInfoElem, + VERIFY_TRANSFORMS_INFO_PROFILE_XPATH); + Element profileElem; + + while ((profileElem = (Element) profileElems.nextNode()) != null) { + if ("VerifyTransformsInfoProfile".equals(profileElem.getLocalName())) { + final ProfileParser profileParser = new ProfileParser(); + profiles.add(profileParser.parseVerifyTransformsInfoProfile(profileElem)); + } else { + final String profileID = DOMUtils.getText(profileElem); + profiles.add(factory.createVerifyTransformsInfoProfile(profileID)); + } + } + return profiles; + } } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlbind/VerifyXMLSignatureResponseBuilder.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlbind/VerifyXMLSignatureResponseBuilder.java index 0042464..48206c9 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlbind/VerifyXMLSignatureResponseBuilder.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlbind/VerifyXMLSignatureResponseBuilder.java @@ -32,9 +32,6 @@ import org.w3c.dom.DocumentFragment; import org.w3c.dom.Element; import org.w3c.dom.NodeList; -import at.gv.egovernment.moaspss.logging.Logger; -import at.gv.egovernment.moaspss.util.Base64Utils; -import at.gv.egovernment.moaspss.util.Constants; import at.gv.egovernment.moa.spss.MOAApplicationException; import at.gv.egovernment.moa.spss.MOASystemException; import at.gv.egovernment.moa.spss.api.common.Content; @@ -45,303 +42,315 @@ import at.gv.egovernment.moa.spss.api.xmlverify.AdESFormResults; import at.gv.egovernment.moa.spss.api.xmlverify.ManifestRefsCheckResult; import at.gv.egovernment.moa.spss.api.xmlverify.ReferencesCheckResult; import at.gv.egovernment.moa.spss.api.xmlverify.VerifyXMLSignatureResponse; -import at.gv.egovernment.moa.spss.server.config.ConfigurationException; -import at.gv.egovernment.moa.spss.server.config.ConfigurationProvider; +import at.gv.egovernment.moaspss.util.Base64Utils; +import at.gv.egovernment.moaspss.util.Constants; +import at.gv.egovernment.moaspss.util.MiscUtil; /** * Convert a <code>VerifyXMLSignatureResponse</code> API object into its XML * representation, according to the MOA XML schema. - * + * * @author Patrick Peck * @version $Id$ */ public class VerifyXMLSignatureResponseBuilder { - private static final String MOA_NS_URI = Constants.MOA_NS_URI; - - /** The XML document containing the response element. */ - private Document responseDoc; - /** The response <code>VerifyXMLSignatureResponse</code> DOM element. */ - private Element responseElem; - - private boolean includeSigningTime = false; - /** - * Create a new <code>VerifyXMLSignatureResponseBuilder</code>: - * - * @throws MOASystemException - * An error occurred setting up the resulting XML document. - */ - public VerifyXMLSignatureResponseBuilder() throws MOASystemException { - responseDoc = ResponseBuilderUtils.createResponse("VerifyXMLSignatureResponse"); - responseElem = responseDoc.getDocumentElement(); - } - - public VerifyXMLSignatureResponseBuilder(Document responseDoc, String name, boolean includeSigningTime) throws MOASystemException { - this.responseDoc = responseDoc; - responseElem = responseDoc.createElementNS(MOA_NS_URI, name); - this.includeSigningTime = includeSigningTime; - } - - public Element buildElement(VerifyXMLSignatureResponse response) throws MOAApplicationException { - this.build(response); - return responseElem; - } - - /** - * Build a document containing a <code>VerifyXMLSignatureResponse</code> DOM - * element being the XML representation of the given - * <code>VerifyXMLSignatureResponse</code> API object. - * - * @param response - * The <code>VerifyXMLSignatureResponse</code> to convert to XML. - * @return A document containing the <code>VerifyXMLSignatureResponse</code> - * DOM element. - * @throws MOAApplicationException - * An error occurred building the response. - */ - public Document build(VerifyXMLSignatureResponse response) throws MOAApplicationException { - - Iterator iter; - List responseData; - - // add the SignerInfo - ResponseBuilderUtils.addSignerInfo(responseDoc, responseElem, response.getSignerInfo().getSignerCertificate(), - response.getSignerInfo().isQualifiedCertificate(), response.getSignerInfo().getQCSource(), - response.getSignerInfo().isPublicAuthority(), response.getSignerInfo().getPublicAuhtorityID(), - response.getSignerInfo().isSSCD(), response.getSignerInfo().getSSCDSource(), - response.getSignerInfo().getIssuerCountryCode(), - response.getSignerInfo().getTslInfos()); - - if(this.includeSigningTime) { - ResponseBuilderUtils.addSigningTime(responseDoc, - responseElem, response.getSignerInfo().getSigningTime()); - } - - // add HashInputData elements - responseData = response.getHashInputDatas(); - if (responseData != null && !responseData.isEmpty()) { - for (iter = responseData.iterator(); iter.hasNext();) { - InputData inputData = (InputData) iter.next(); - addContent("HashInputData", inputData); - } - } - - // add ReferenceInputData elements - responseData = response.getReferenceInputDatas(); - if (responseData != null && !responseData.isEmpty()) { - for (iter = responseData.iterator(); iter.hasNext();) { - InputData inputData = (InputData) iter.next(); - addContent("ReferenceInputData", inputData); - } - } - - // add the SignatureCheck - addReferencesCheckResult("SignatureCheck", response.getSignatureCheck()); - - // add the SignatureManifestCheck - if (response.getSignatureManifestCheck() != null) { - addReferencesCheckResult("SignatureManifestCheck", response.getSignatureManifestCheck()); - } - - // add the XMLDsigManifestChecks - responseData = response.getXMLDsigManifestChecks(); - if (responseData != null && !responseData.isEmpty()) { - for (iter = responseData.iterator(); iter.hasNext();) { - ManifestRefsCheckResult checkResult = (ManifestRefsCheckResult) iter.next(); - addManifestRefsCheckResult("XMLDSIGManifestCheck", checkResult); - } - } - - // add the CertificateCheck - ResponseBuilderUtils.addCodeInfoElement(responseDoc, responseElem, "CertificateCheck", - response.getCertificateCheck().getCode(), response.getCertificateCheck().getInfo()); - - if (response.getAdESFormResults() != null) { - - Iterator formIterator = response.getAdESFormResults().iterator(); - - while (formIterator.hasNext()) { - AdESFormResults adESFormResult = (AdESFormResults) formIterator.next(); - // add the CertificateCheck - ResponseBuilderUtils.addFormCheckElement(responseDoc, responseElem, "FormCheckResult", - adESFormResult.getCode().intValue(), adESFormResult.getName()); - - } - } - - if(response.getExtendedCertificateCheck() != null) { - ResponseBuilderUtils.addExtendendResult(responseDoc, responseElem, response.getExtendedCertificateCheck()); - } - - return responseDoc; - } - - /** - * Add an element of type <code>ContentBaseType</code> to the response. - * - * @param elementName - * The name of the element. - * - * @param inputData - * The <code>InputData</code> to add. Based on the type of - * - * the <code>InputData</code>, either a - * <code>Base64Content</code> element or a - * <code>XMLContent</code> subelement will be added. An <code> - * InputDataBinaryImpl</code> will be added as a <code>Base64Content</code> - * child element. An<code>InputDataXMLImpl</code> will be added - * as <code> - * XMLContent</code> child element. - * - * @throws MOAApplicationException - * An error occurred adding the content. - */ - private void addContent(String elementName, InputData inputData) throws MOAApplicationException { - - Element contentElem = responseDoc.createElementNS(MOA_NS_URI, elementName); - - contentElem.setAttributeNS(null, "PartOf", inputData.getPartOf()); - if (inputData.getReferringReferenceNumber() != InputData.REFERER_NONE_) - contentElem.setAttributeNS(null, "ReferringSigReference", - Integer.toString(inputData.getReferringReferenceNumber())); - - switch (inputData.getContentType()) { - case Content.XML_CONTENT: - ContentXML contentXml = (ContentXML) inputData; - NodeList nodes = contentXml.getXMLContent(); - Element xmlElem; - int i; - - xmlElem = responseDoc.createElementNS(MOA_NS_URI, "XMLContent"); - // xmlElem.setAttributeNS(XML_NS_URI, "xml:space", "preserve"); - xmlElem.setAttribute("xml:space", "preserve"); - - for (i = 0; i < nodes.getLength(); i++) { - xmlElem.appendChild(responseDoc.importNode(nodes.item(i), true)); - } - contentElem.appendChild(xmlElem); - responseElem.appendChild(contentElem); - break; - case Content.BINARY_CONTENT: - Element binaryElem = responseDoc.createElementNS(MOA_NS_URI, "Base64Content"); - ContentBinary contentBinary = (ContentBinary) inputData; - String base64Str; - - try { - base64Str = Base64Utils.encode(contentBinary.getBinaryContent()); - } catch (IOException e) { - throw new MOAApplicationException("2200", null, e); - } - binaryElem.appendChild(responseDoc.createTextNode(base64Str)); - contentElem.appendChild(binaryElem); - responseElem.appendChild(contentElem); - break; - } - } - - /** - * Add a <code>ReferencesCheckResult</code> to the response. - * - * @param elementName - * The DOM element name to use. - * @param checkResult - * The <code>ReferencesCheckResult</code> to add. - */ - private void addReferencesCheckResult(String elementName, ReferencesCheckResult checkResult) { - - NodeList info = null; - - if (checkResult.getInfo() != null) { - DocumentFragment fragment = responseDoc.createDocumentFragment(); - NodeList anyOtherInfo = checkResult.getInfo().getAnyOtherInfo(); - int[] failedReferences = checkResult.getInfo().getFailedReferences(); - - if (anyOtherInfo != null) { - addAnyOtherInfo(fragment, checkResult.getInfo().getAnyOtherInfo()); - } - - if (failedReferences != null) { - addFailedReferences(fragment, failedReferences); - } - - info = fragment.getChildNodes(); - } - - ResponseBuilderUtils.addCodeInfoElement(responseDoc, responseElem, elementName, checkResult.getCode(), info); - } - - /** - * Add a <code>ManifestRefsCheckResult</code> to the response. - * - * @param elementName - * The DOM element name to use. - * @param checkResult - * The <code>ManifestRefsCheckResult</code> to add. - */ - private void addManifestRefsCheckResult(String elementName, ManifestRefsCheckResult checkResult) { - - DocumentFragment fragment = responseDoc.createDocumentFragment(); - NodeList anyOtherInfo = checkResult.getInfo().getAnyOtherInfo(); - int[] failedReferences = checkResult.getInfo().getFailedReferences(); - Element referringSigRefElem; - String referringSigRefStr; - - // add any other elements - if (anyOtherInfo != null) { - addAnyOtherInfo(fragment, checkResult.getInfo().getAnyOtherInfo()); - } - - // add the failed references - if (failedReferences != null) { - addFailedReferences(fragment, failedReferences); - } - - // add the ReferringSigReference - referringSigRefElem = responseDoc.createElementNS(MOA_NS_URI, "ReferringSigReference"); - referringSigRefStr = Integer.toString(checkResult.getInfo().getReferringSignatureReference()); - referringSigRefElem.appendChild(responseDoc.createTextNode(referringSigRefStr)); - fragment.appendChild(referringSigRefElem); - - // add XMLDSIGManifestCheckResult to the response - ResponseBuilderUtils.addCodeInfoElement(responseDoc, responseElem, elementName, checkResult.getCode(), - fragment.getChildNodes()); - } - - /** - * Add arbitrary XML content to a DOM <code>DocumentFragment</code>. - * - * @param fragment - * The fragment to add the XML content to. - * @param anyOtherInfo - * The XML content to add. - */ - private void addAnyOtherInfo(DocumentFragment fragment, NodeList anyOtherInfo) { - - int i; - - for (i = 0; i < anyOtherInfo.getLength(); i++) { - fragment.appendChild(responseDoc.importNode(anyOtherInfo.item(i), true)); - } - } - - /** - * Add the failed references as <code>FailedReference</code> DOM elements to - * the fragment. - * - * @param fragment - * The DOM document fragment to add the - * <code>FailedReference</code> elements to. - * @param failedReferences - * The indexes of the failed references. - */ - private void addFailedReferences(DocumentFragment fragment, int[] failedReferences) { - Element failedReferenceElem; - int i; - - for (i = 0; i < failedReferences.length; i++) { - failedReferenceElem = responseDoc.createElementNS(MOA_NS_URI, "FailedReference"); - failedReferenceElem.appendChild(responseDoc.createTextNode(Integer.toString(failedReferences[i]))); - fragment.appendChild(failedReferenceElem); - } - } + private static final String MOA_NS_URI = Constants.MOA_NS_URI; + + /** The XML document containing the response element. */ + private final Document responseDoc; + /** The response <code>VerifyXMLSignatureResponse</code> DOM element. */ + private final Element responseElem; + + private boolean includeSigningTime = false; + + /** + * Create a new <code>VerifyXMLSignatureResponseBuilder</code>: + * + * @throws MOASystemException An error occurred setting up the resulting XML + * document. + */ + public VerifyXMLSignatureResponseBuilder() throws MOASystemException { + responseDoc = ResponseBuilderUtils.createResponse("VerifyXMLSignatureResponse"); + responseElem = responseDoc.getDocumentElement(); + } + + public VerifyXMLSignatureResponseBuilder(boolean includeSigningTime) throws MOASystemException { + responseDoc = ResponseBuilderUtils.createResponse("VerifyXMLSignatureResponse"); + responseElem = responseDoc.getDocumentElement(); + this.includeSigningTime = includeSigningTime; + } + + public VerifyXMLSignatureResponseBuilder(Document responseDoc, String name, boolean includeSigningTime) + throws MOASystemException { + this.responseDoc = responseDoc; + responseElem = responseDoc.createElementNS(MOA_NS_URI, name); + this.includeSigningTime = includeSigningTime; + } + + public Element buildElement(VerifyXMLSignatureResponse response) throws MOAApplicationException { + this.build(response); + return responseElem; + } + + /** + * Build a document containing a <code>VerifyXMLSignatureResponse</code> DOM + * element being the XML representation of the given + * <code>VerifyXMLSignatureResponse</code> API object. + * + * @param response The <code>VerifyXMLSignatureResponse</code> to convert to + * XML. + * @return A document containing the <code>VerifyXMLSignatureResponse</code> DOM + * element. + * @throws MOAApplicationException An error occurred building the response. + */ + public Document build(VerifyXMLSignatureResponse response) throws MOAApplicationException { + + Iterator iter; + List responseData; + + // add the SignerInfo + ResponseBuilderUtils.addSignerInfo(responseDoc, responseElem, response.getSignerInfo() + .getSignerCertificate(), + response.getSignerInfo().isQualifiedCertificate(), response.getSignerInfo().getQCSource(), + response.getSignerInfo().isPublicAuthority(), response.getSignerInfo().getPublicAuhtorityID(), + response.getSignerInfo().isSSCD(), response.getSignerInfo().getSSCDSource(), + response.getSignerInfo().getIssuerCountryCode(), + response.getSignerInfo().getTslInfos()); + + if (this.includeSigningTime) { + ResponseBuilderUtils.addSigningTime(responseDoc, + responseElem, response.getSignerInfo().getSigningTime()); + } + + // add HashInputData elements + responseData = response.getHashInputDatas(); + if (responseData != null && !responseData.isEmpty()) { + for (iter = responseData.iterator(); iter.hasNext();) { + final InputData inputData = (InputData) iter.next(); + addContent("HashInputData", inputData); + } + } + + // add ReferenceInputData elements + responseData = response.getReferenceInputDatas(); + if (responseData != null && !responseData.isEmpty()) { + for (iter = responseData.iterator(); iter.hasNext();) { + final InputData inputData = (InputData) iter.next(); + addContent("ReferenceInputData", inputData); + } + } + + // add hash algorithm + ResponseBuilderUtils.addSignatureAlgorithm(responseDoc, responseElem, response.getSignatureAlgorithm()); + + // add the SignatureCheck + addReferencesCheckResult("SignatureCheck", response.getSignatureCheck()); + + // add the SignatureManifestCheck + if (response.getSignatureManifestCheck() != null) { + addReferencesCheckResult("SignatureManifestCheck", response.getSignatureManifestCheck()); + } + + // add the XMLDsigManifestChecks + responseData = response.getXMLDsigManifestChecks(); + if (responseData != null && !responseData.isEmpty()) { + for (iter = responseData.iterator(); iter.hasNext();) { + final ManifestRefsCheckResult checkResult = (ManifestRefsCheckResult) iter.next(); + addManifestRefsCheckResult("XMLDSIGManifestCheck", checkResult); + } + } + + // add the CertificateCheck + ResponseBuilderUtils.addCodeInfoElement(responseDoc, responseElem, "CertificateCheck", + response.getCertificateCheck().getCode(), response.getCertificateCheck().getInfo()); + + if (response.getAdESFormResults() != null) { + + final Iterator formIterator = response.getAdESFormResults().iterator(); + + while (formIterator.hasNext()) { + final AdESFormResults adESFormResult = (AdESFormResults) formIterator.next(); + // add the CertificateCheck + ResponseBuilderUtils.addFormCheckElement(responseDoc, responseElem, "FormCheckResult", + adESFormResult.getCode().intValue(), adESFormResult.getName()); + + } + } + + if (response.getExtendedCertificateCheck() != null) { + ResponseBuilderUtils.addExtendendResult(responseDoc, responseElem, response + .getExtendedCertificateCheck()); + } + + return responseDoc; + } + + /** + * Add an element of type <code>ContentBaseType</code> to the response. + * + * @param elementName The name of the element. + * + * @param inputData The <code>InputData</code> to add. Based on the type of + * + * the <code>InputData</code>, either a + * <code>Base64Content</code> element or a + * <code>XMLContent</code> subelement will be added. An + * <code> + * InputDataBinaryImpl</code> will be added as a <code>Base64Content</code> + * child element. An<code>InputDataXMLImpl</code> will be + * added as <code> + * XMLContent</code> child element. + * + * @throws MOAApplicationException An error occurred adding the content. + */ + private void addContent(String elementName, InputData inputData) throws MOAApplicationException { + + final Element contentElem = responseDoc.createElementNS(MOA_NS_URI, elementName); + + contentElem.setAttributeNS(null, "PartOf", inputData.getPartOf()); + if (inputData.getReferringReferenceNumber() != InputData.REFERER_NONE_) { + contentElem.setAttributeNS(null, "ReferringSigReference", + Integer.toString(inputData.getReferringReferenceNumber())); + } + + if (MiscUtil.isNotEmpty(inputData.getHashAlgorithm())) { + contentElem.setAttribute("HashAlgorithm", inputData.getHashAlgorithm()); + + } + + switch (inputData.getContentType()) { + case Content.XML_CONTENT: + final ContentXML contentXml = (ContentXML) inputData; + final NodeList nodes = contentXml.getXMLContent(); + Element xmlElem; + int i; + + xmlElem = responseDoc.createElementNS(MOA_NS_URI, "XMLContent"); + // xmlElem.setAttributeNS(XML_NS_URI, "xml:space", "preserve"); + xmlElem.setAttribute("xml:space", "preserve"); + + for (i = 0; i < nodes.getLength(); i++) { + xmlElem.appendChild(responseDoc.importNode(nodes.item(i), true)); + } + contentElem.appendChild(xmlElem); + responseElem.appendChild(contentElem); + break; + case Content.BINARY_CONTENT: + final Element binaryElem = responseDoc.createElementNS(MOA_NS_URI, "Base64Content"); + final ContentBinary contentBinary = (ContentBinary) inputData; + String base64Str; + + try { + base64Str = Base64Utils.encode(contentBinary.getBinaryContent()); + } catch (final IOException e) { + throw new MOAApplicationException("2200", null, e); + } + binaryElem.appendChild(responseDoc.createTextNode(base64Str)); + contentElem.appendChild(binaryElem); + responseElem.appendChild(contentElem); + break; + } + + } + + /** + * Add a <code>ReferencesCheckResult</code> to the response. + * + * @param elementName The DOM element name to use. + * @param checkResult The <code>ReferencesCheckResult</code> to add. + */ + private void addReferencesCheckResult(String elementName, ReferencesCheckResult checkResult) { + + NodeList info = null; + + if (checkResult.getInfo() != null) { + final DocumentFragment fragment = responseDoc.createDocumentFragment(); + final NodeList anyOtherInfo = checkResult.getInfo().getAnyOtherInfo(); + final int[] failedReferences = checkResult.getInfo().getFailedReferences(); + + if (anyOtherInfo != null) { + addAnyOtherInfo(fragment, checkResult.getInfo().getAnyOtherInfo()); + } + + if (failedReferences != null) { + addFailedReferences(fragment, failedReferences); + } + + info = fragment.getChildNodes(); + } + + ResponseBuilderUtils.addCodeInfoElement(responseDoc, responseElem, elementName, checkResult.getCode(), + info); + + } + + /** + * Add a <code>ManifestRefsCheckResult</code> to the response. + * + * @param elementName The DOM element name to use. + * @param checkResult The <code>ManifestRefsCheckResult</code> to add. + */ + private void addManifestRefsCheckResult(String elementName, ManifestRefsCheckResult checkResult) { + + final DocumentFragment fragment = responseDoc.createDocumentFragment(); + final NodeList anyOtherInfo = checkResult.getInfo().getAnyOtherInfo(); + final int[] failedReferences = checkResult.getInfo().getFailedReferences(); + Element referringSigRefElem; + String referringSigRefStr; + + // add any other elements + if (anyOtherInfo != null) { + addAnyOtherInfo(fragment, checkResult.getInfo().getAnyOtherInfo()); + } + + // add the failed references + if (failedReferences != null) { + addFailedReferences(fragment, failedReferences); + } + + // add the ReferringSigReference + referringSigRefElem = responseDoc.createElementNS(MOA_NS_URI, "ReferringSigReference"); + referringSigRefStr = Integer.toString(checkResult.getInfo().getReferringSignatureReference()); + referringSigRefElem.appendChild(responseDoc.createTextNode(referringSigRefStr)); + fragment.appendChild(referringSigRefElem); + + // add XMLDSIGManifestCheckResult to the response + ResponseBuilderUtils.addCodeInfoElement(responseDoc, responseElem, elementName, checkResult.getCode(), + fragment.getChildNodes()); + } + + /** + * Add arbitrary XML content to a DOM <code>DocumentFragment</code>. + * + * @param fragment The fragment to add the XML content to. + * @param anyOtherInfo The XML content to add. + */ + private void addAnyOtherInfo(DocumentFragment fragment, NodeList anyOtherInfo) { + + int i; + + for (i = 0; i < anyOtherInfo.getLength(); i++) { + fragment.appendChild(responseDoc.importNode(anyOtherInfo.item(i), true)); + } + } + + /** + * Add the failed references as <code>FailedReference</code> DOM elements to the + * fragment. + * + * @param fragment The DOM document fragment to add the + * <code>FailedReference</code> elements to. + * @param failedReferences The indexes of the failed references. + */ + private void addFailedReferences(DocumentFragment fragment, int[] failedReferences) { + Element failedReferenceElem; + int i; + + for (i = 0; i < failedReferences.length; i++) { + failedReferenceElem = responseDoc.createElementNS(MOA_NS_URI, "FailedReference"); + failedReferenceElem.appendChild(responseDoc.createTextNode(Integer.toString(failedReferences[i]))); + fragment.appendChild(failedReferenceElem); + } + } } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlsign/CreateSignatureEnvironmentProfile.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlsign/CreateSignatureEnvironmentProfile.java index 4b40b9c..3b98dc4 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlsign/CreateSignatureEnvironmentProfile.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlsign/CreateSignatureEnvironmentProfile.java @@ -21,13 +21,12 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.api.xmlsign; /** - * Base class for signature environment profile data used in XML signature + * Base class for signature environment profile data used in XML signature * creation. - * + * * @author Patrick Peck * @version $Id$ */ @@ -35,20 +34,20 @@ public interface CreateSignatureEnvironmentProfile { /** * Indicates that the profile data is given explicitly. */ - public static int EXPLICIT_CREATESIGNATUREENVIRONMENTPROFILE = 0; + int EXPLICIT_CREATESIGNATUREENVIRONMENTPROFILE = 0; /** - * Indicates that the profile data is stored in the configuration and resolved + * Indicates that the profile data is stored in the configuration and resolved * using an ID. */ - public static int ID_CREATESIGNATUREENVIRONMENTPROFILE = 1; - + int ID_CREATESIGNATUREENVIRONMENTPROFILE = 1; + /** * Gets the type of this object. - * - * @return The type of <code>CreateSignatureEnvironmentProfile</code> denoted - * by this object. Either - * <code>EXPLICIT_CREATESIGNATUREENVIRONMENTPROFILE</code> or - * <code>ID_CREATESIGNATUREENVIRONMENTPROFILE</code>. + * + * @return The type of <code>CreateSignatureEnvironmentProfile</code> denoted by + * this object. Either + * <code>EXPLICIT_CREATESIGNATUREENVIRONMENTPROFILE</code> or + * <code>ID_CREATESIGNATUREENVIRONMENTPROFILE</code>. */ - public int getCreateSignatureEnvironmentProfileType(); + int getCreateSignatureEnvironmentProfileType(); } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlsign/CreateSignatureEnvironmentProfileExplicit.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlsign/CreateSignatureEnvironmentProfileExplicit.java index 0bce94c..5f761f1 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlsign/CreateSignatureEnvironmentProfileExplicit.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlsign/CreateSignatureEnvironmentProfileExplicit.java @@ -21,34 +21,33 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.api.xmlsign; import java.util.List; /** - * A <code>CreateSignatureEnvironmentProfile</code> containing the profile - * data explicitly. - * + * A <code>CreateSignatureEnvironmentProfile</code> containing the profile data + * explicitly. + * * @author Patrick Peck * @version $Id$ */ public interface CreateSignatureEnvironmentProfileExplicit - extends CreateSignatureEnvironmentProfile { - + extends CreateSignatureEnvironmentProfile { + /** * Gets the location and index of where to insert the signature into the * signature environment. - * - * @return The location and index of the signature in the signature - * environment. + * + * @return The location and index of the signature in the signature environment. */ - public CreateSignatureLocation getCreateSignatureLocation(); + CreateSignatureLocation getCreateSignatureLocation(); + /** * Gets the supplemental information. - * + * * @return The supplemental information. */ - public List getSupplements(); + List getSupplements(); } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlsign/CreateSignatureEnvironmentProfileID.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlsign/CreateSignatureEnvironmentProfileID.java index 73e4f52..8066d37 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlsign/CreateSignatureEnvironmentProfileID.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlsign/CreateSignatureEnvironmentProfileID.java @@ -21,24 +21,23 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.api.xmlsign; /** * A <code>CreateSignatureEnvironmentProfile</code> containing a profile ID * pointing to locally stored profile data. - * + * * @author Patrick Peck * @version $Id$ */ public interface CreateSignatureEnvironmentProfileID - extends CreateSignatureEnvironmentProfile { + extends CreateSignatureEnvironmentProfile { /** * Gets the profile ID. - * + * * @return The profile ID. */ - public String getCreateSignatureEnvironmentProfileID(); - + String getCreateSignatureEnvironmentProfileID(); + } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlsign/CreateSignatureInfo.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlsign/CreateSignatureInfo.java index 9363408..e26ca1e 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlsign/CreateSignatureInfo.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlsign/CreateSignatureInfo.java @@ -21,14 +21,13 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.api.xmlsign; import at.gv.egovernment.moa.spss.api.common.Content; /** * Encapsulates a signature object used during signature creation. - * + * * @author Patrick Peck * @author Stephan Grill * @version $Id$ @@ -39,11 +38,12 @@ public interface CreateSignatureInfo { * * @return The XML structure where the signature will be inserted. */ - public Content getCreateSignatureEnvironment(); + Content getCreateSignatureEnvironment(); + /** * Gets the supplemental data for the signature environment. * * @return The supplemental data for the signature envoronment. */ - public CreateSignatureEnvironmentProfile getCreateSignatureEnvironmentProfile(); + CreateSignatureEnvironmentProfile getCreateSignatureEnvironmentProfile(); } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlsign/CreateSignatureLocation.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlsign/CreateSignatureLocation.java index 9a0b798..39a85b4 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlsign/CreateSignatureLocation.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlsign/CreateSignatureLocation.java @@ -21,18 +21,17 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.api.xmlsign; import at.gv.egovernment.moa.spss.api.common.ElementSelector; /** * Specifies where to insert the newly created signature. - * + * * An XPath expression is used to select the signature parent element. An - * additional index specifies the node index after which to insert the - * signature into the parent element. - * + * additional index specifies the node index after which to insert the signature + * into the parent element. + * * @author Patrick Peck * @version $Id$ */ @@ -40,8 +39,8 @@ public interface CreateSignatureLocation extends ElementSelector { /** * Gets the node index, after which the signature will be inserted into the * parent elemen. - * + * * @return The index of the node after which the signature will be inserted. */ - public int getIndex(); + int getIndex(); } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlsign/CreateTransformsInfo.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlsign/CreateTransformsInfo.java index fbb0000..1793365 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlsign/CreateTransformsInfo.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlsign/CreateTransformsInfo.java @@ -21,7 +21,6 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.api.xmlsign; import java.util.List; @@ -30,7 +29,7 @@ import at.gv.egovernment.moa.spss.api.common.MetaInfo; /** * Encapsulates information used for the transformation of the data object. - * + * * @author Patrick Peck * @author Stephan Grill * @version $Id$ @@ -38,14 +37,15 @@ import at.gv.egovernment.moa.spss.api.common.MetaInfo; public interface CreateTransformsInfo { /** * Gets the XMLDSig transforms. - * + * * @return A <code>List</code> of <code>Transform</code> objects. */ - public List getTransforms(); + List getTransforms(); + /** * Gets meta information about the data resulting from the transformation. - * + * * @return Meta information about the resulting data. */ - public MetaInfo getFinalDataMetaInfo(); + MetaInfo getFinalDataMetaInfo(); } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlsign/CreateTransformsInfoProfile.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlsign/CreateTransformsInfoProfile.java index 5babdae..9832972 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlsign/CreateTransformsInfoProfile.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlsign/CreateTransformsInfoProfile.java @@ -21,12 +21,11 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.api.xmlsign; /** * Base class for transformation informations used in signature creation. - * + * * @author Patrick Peck * @author Stephan Grill * @version $Id$ @@ -35,18 +34,18 @@ public interface CreateTransformsInfoProfile { /** * Indicates transformation information given explicitly. */ - public static final int EXPLICIT_CREATETRANSFORMSINFOPROFILE = 0; + int EXPLICIT_CREATETRANSFORMSINFOPROFILE = 0; /** * Indicates transformation information given as an ID. */ - public static final int ID_CREATETRANSFORMSINFOPROFILE = 1; - + int ID_CREATETRANSFORMSINFOPROFILE = 1; + /** * Gets the type of profile information this object contains. - * + * * @return The type of transformation information, either - * <code>EXPLICIT_CREATETRANSFORMSINFOPROFILE</code> or - * <code>ID_CREATETRANSFORMSINFOPROFILE</code>. + * <code>EXPLICIT_CREATETRANSFORMSINFOPROFILE</code> or + * <code>ID_CREATETRANSFORMSINFOPROFILE</code>. */ - public int getCreateTransformsInfoProfileType(); + int getCreateTransformsInfoProfileType(); } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlsign/CreateTransformsInfoProfileExplicit.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlsign/CreateTransformsInfoProfileExplicit.java index 9aae8cb..39580d6 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlsign/CreateTransformsInfoProfileExplicit.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlsign/CreateTransformsInfoProfileExplicit.java @@ -21,30 +21,30 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.api.xmlsign; import java.util.List; /** * Encapsulates explicit transformation informations. - * + * * @author Patrick Peck * @author Stephan Grill * @version $Id$ */ public interface CreateTransformsInfoProfileExplicit - extends CreateTransformsInfoProfile { + extends CreateTransformsInfoProfile { /** * Gets the transformation information of the data object. - * + * * @return Transformation information of the data object. */ - public CreateTransformsInfo getCreateTransformsInfo(); + CreateTransformsInfo getCreateTransformsInfo(); + /** * Gets the supplemental information. - * + * * @return The supplemental information. */ - public List getSupplements(); + List getSupplements(); } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlsign/CreateTransformsInfoProfileID.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlsign/CreateTransformsInfoProfileID.java index 69c3629..fc9d869 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlsign/CreateTransformsInfoProfileID.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlsign/CreateTransformsInfoProfileID.java @@ -21,22 +21,21 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.api.xmlsign; /** * Encapsulates transformation information given via an identifier. - * + * * @author Patrick Peck * @author Stephan Grill * @version $Id$ */ public interface CreateTransformsInfoProfileID - extends CreateTransformsInfoProfile { + extends CreateTransformsInfoProfile { /** * Gets the ID of the transformation. - * + * * @return The transformation profile ID. */ - public String getCreateTransformsInfoProfileID(); + String getCreateTransformsInfoProfileID(); } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlsign/CreateXMLSignatureRequest.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlsign/CreateXMLSignatureRequest.java index 351b16e..0f8c8a2 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlsign/CreateXMLSignatureRequest.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlsign/CreateXMLSignatureRequest.java @@ -21,15 +21,13 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.api.xmlsign; import java.util.List; - /** * Object that encapsulates a request to create an XML Signature. - * + * * @author Patrick Peck * @author Stephan Grill * @version $Id$ @@ -37,14 +35,15 @@ import java.util.List; public interface CreateXMLSignatureRequest { /** * Gets the identifier for the keys to be used for the signature. - * + * * @return The identifier for the keys to be used. */ - public String getKeyIdentifier(); + String getKeyIdentifier(); + /** - * Gets the information of the singleSignatureInfo elements. - * + * Gets the information of the singleSignatureInfo elements. + * * @return The information of singleSignatureInfo elements. */ - public List getSingleSignatureInfos(); + List getSingleSignatureInfos(); } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlsign/CreateXMLSignatureResponse.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlsign/CreateXMLSignatureResponse.java index c1b1c30..1b59d7d 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlsign/CreateXMLSignatureResponse.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlsign/CreateXMLSignatureResponse.java @@ -21,15 +21,14 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.api.xmlsign; import java.util.List; /** - * Object that encapsulates the response on to a + * Object that encapsulates the response on to a * <code>CreateXMLSignatureRequest</code> to create an XML signature. - * + * * @author Patrick Peck * @author Stephan Grill * @version $Id$ @@ -37,8 +36,8 @@ import java.util.List; public interface CreateXMLSignatureResponse { /** * Gets the response elements. - * + * * @return The response elements. */ - public List getResponseElements(); + List getResponseElements(); } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlsign/CreateXMLSignatureResponseElement.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlsign/CreateXMLSignatureResponseElement.java index b9bd334..fe6cbbb 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlsign/CreateXMLSignatureResponseElement.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlsign/CreateXMLSignatureResponseElement.java @@ -21,14 +21,13 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.api.xmlsign; /** - * Base class for <code>SignatureEnvironmentResponse</code> and - * <code>ErrorResponse</code> elements in a + * Base class for <code>SignatureEnvironmentResponse</code> and + * <code>ErrorResponse</code> elements in a * <code>CreateXMLSignatureResponse</code>. - * + * * @author Patrick Peck * @author Stephan Grill * @version $Id$ @@ -37,17 +36,18 @@ public interface CreateXMLSignatureResponseElement { /** * Indicates that this object contains a <code>SignatureEnvironment</code>. */ - public static final int SIGNATURE_ENVIRONMENT_RESPONSE = 0; + int SIGNATURE_ENVIRONMENT_RESPONSE = 0; /** * Indicates that this objet contains an <code>ErrorResponse</code>. */ - public static final int ERROR_RESPONSE = 1; - + int ERROR_RESPONSE = 1; + /** * Gets the type of response object. - * - * @return The type of response object, either - * <code>SIGNATURE_ENVIRONMENT_RESPONSE</code> or <code>ERROR_RESPONSE</code>. + * + * @return The type of response object, either + * <code>SIGNATURE_ENVIRONMENT_RESPONSE</code> or + * <code>ERROR_RESPONSE</code>. */ - public int getResponseType(); + int getResponseType(); } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlsign/DataObjectInfo.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlsign/DataObjectInfo.java index 620e3b3..053ff00 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlsign/DataObjectInfo.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlsign/DataObjectInfo.java @@ -21,14 +21,13 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.api.xmlsign; import at.gv.egovernment.moa.spss.api.common.Content; /** * Encapsulates information required to create a single signature. - * + * * @author Patrick Peck * @author Stephan Grill * @version $Id$ @@ -37,36 +36,39 @@ public interface DataObjectInfo { /** * Indicates that a detached signature will be created. */ - public static final String STRUCTURE_DETACHED = "detached"; + String STRUCTURE_DETACHED = "detached"; /** * Indicates that an enveloping signature will be created. */ - public static final String STRUCTURE_ENVELOPING = "enveloping"; + String STRUCTURE_ENVELOPING = "enveloping"; /** * Gets the structure of the signature. - * + * * @return The structure of the signature. */ - public String getStructure(); + String getStructure(); + /** - * Checks whether a refercence will be placed in the signature itself or - * in the manifest. - * + * Checks whether a refercence will be placed in the signature itself or in the + * manifest. + * * @return <code>true</code> if a reference will be placed in the manifest, - * <code>false</code> if it will be placed in the signature. + * <code>false</code> if it will be placed in the signature. */ - public boolean isChildOfManifest(); + boolean isChildOfManifest(); + /** * Gets information related to a single data object. - * + * * @return Information related to a single data object. */ - public Content getDataObject(); + Content getDataObject(); + /** * Gets information for the transformation of the data object. - * + * * @return The transformation information. */ - public CreateTransformsInfoProfile getCreateTransformsInfoProfile(); + CreateTransformsInfoProfile getCreateTransformsInfoProfile(); } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlsign/ErrorResponse.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlsign/ErrorResponse.java index 6dfa843..d1b838d 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlsign/ErrorResponse.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlsign/ErrorResponse.java @@ -21,13 +21,11 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.api.xmlsign; - /** * Object containing detailed error information. - * + * * @author Patrick Peck * @author Stephan Grill * @version $Id$ @@ -35,14 +33,15 @@ package at.gv.egovernment.moa.spss.api.xmlsign; public interface ErrorResponse extends CreateXMLSignatureResponseElement { /** * Gets the error code. - * + * * @return The error code. */ - public int getErrorCode(); + int getErrorCode(); + /** * Gets verbose error information. - * + * * @return Verbose error information. */ - public String getInfo(); + String getInfo(); } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlsign/SignatureEnvironmentResponse.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlsign/SignatureEnvironmentResponse.java index 47c4ce7..ecf57ce 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlsign/SignatureEnvironmentResponse.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlsign/SignatureEnvironmentResponse.java @@ -21,24 +21,23 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.api.xmlsign; import org.w3c.dom.Element; /** * Contains the signature if the signature creation was successful. - * + * * @author Patrick Peck * @author Stephan Grill * @version $Id$ */ public interface SignatureEnvironmentResponse - extends CreateXMLSignatureResponseElement { - /** + extends CreateXMLSignatureResponseElement { + /** * Gets the XML structure which contains the signature. - * + * * @return A general XML structure containing the signature. */ - public Element getSignatureEnvironment(); + Element getSignatureEnvironment(); } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlsign/SingleSignatureInfo.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlsign/SingleSignatureInfo.java index 3355739..7b94bc0 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlsign/SingleSignatureInfo.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlsign/SingleSignatureInfo.java @@ -21,14 +21,13 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.api.xmlsign; import java.util.List; /** * Encapsulates data to create a single signature. - * + * * @author Patrick Peck * @author Stephan Grill * @version $Id$ @@ -36,21 +35,23 @@ import java.util.List; public interface SingleSignatureInfo { /** * Gets the dataObjectInfo information. - * + * * @return The dataObjectInfo information. */ - public List getDataObjectInfos(); + List getDataObjectInfos(); + /** * Gets the signature object. - * + * * @return The signature object used during signature creation. */ - public CreateSignatureInfo getCreateSignatureInfo(); + CreateSignatureInfo getCreateSignatureInfo(); + /** * Check whether a Security Layer conform signature manifest will be created. - * - * @return <code>true</code>, if a Security Layer conform signature manifest - * will be created, <code>false</code> otherwise. + * + * @return <code>true</code>, if a Security Layer conform signature manifest + * will be created, <code>false</code> otherwise. */ - public boolean isSecurityLayerConform(); + boolean isSecurityLayerConform(); } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlverify/AdESFormResults.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlverify/AdESFormResults.java index e12c39b..2730c18 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlverify/AdESFormResults.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlverify/AdESFormResults.java @@ -1,7 +1,9 @@ package at.gv.egovernment.moa.spss.api.xmlverify; public interface AdESFormResults { - public Integer getCode(); - public String getInfo(); - public String getName(); + Integer getCode(); + + String getInfo(); + + String getName(); } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlverify/ManifestRefsCheckResult.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlverify/ManifestRefsCheckResult.java index 8ff4617..6e5aeda 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlverify/ManifestRefsCheckResult.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlverify/ManifestRefsCheckResult.java @@ -21,13 +21,11 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.api.xmlverify; - /** * Contains the results of manifest checks according to XMLDsig. - * + * * @author Patrick Peck * @author Stephan Grill * @version $Id$ @@ -35,14 +33,15 @@ package at.gv.egovernment.moa.spss.api.xmlverify; public interface ManifestRefsCheckResult { /** * Gets the check code. - * + * * @return A numerical representation of the result of the manifest check. */ - public int getCode(); + int getCode(); + /** * Gets the reference to the manifest. - * + * * @return The reference to the manifest. */ - public ManifestRefsCheckResultInfo getInfo(); + ManifestRefsCheckResultInfo getInfo(); } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlverify/ManifestRefsCheckResultInfo.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlverify/ManifestRefsCheckResultInfo.java index 4b0a4fb..f8973b2 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlverify/ManifestRefsCheckResultInfo.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlverify/ManifestRefsCheckResultInfo.java @@ -21,23 +21,21 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.api.xmlverify; - /** * Encapsulates information referring to the manifest of the check. - * + * * @author Patrick Peck * @author Stephan Grill * @version $Id$ */ public interface ManifestRefsCheckResultInfo extends ReferencesCheckResultInfo { /** - * Gets the position of the signature reference containing the - * reference to the manifest being described by this object. - * + * Gets the position of the signature reference containing the reference to the + * manifest being described by this object. + * * @return The position of the signature reference. */ - public int getReferringSignatureReference(); + int getReferringSignatureReference(); } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlverify/ReferenceInfo.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlverify/ReferenceInfo.java index 95a2b92..40bfe48 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlverify/ReferenceInfo.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlverify/ReferenceInfo.java @@ -21,14 +21,13 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.api.xmlverify; import java.util.List; /** * Contains transformation parameters which are locally available. - * + * * @author Patrick Peck * @author Stephan Grill * @version $Id$ @@ -36,8 +35,8 @@ import java.util.List; public interface ReferenceInfo { /** * Gets the transformation info. - * + * * @return The transformation info. */ - public List getVerifyTransformsInfoProfiles(); + List getVerifyTransformsInfoProfiles(); } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlverify/ReferencesCheckResult.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlverify/ReferencesCheckResult.java index dd1f482..bf41109 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlverify/ReferencesCheckResult.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlverify/ReferencesCheckResult.java @@ -21,27 +21,27 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.api.xmlverify; /** - * Contains information about the verification status of references contained - * in the signature. - * + * Contains information about the verification status of references contained in + * the signature. + * * @author Patrick Peck * @version $Id$ */ public interface ReferencesCheckResult { /** * Gets the check code. - * + * * @return A numerical representation of the result of the reference check. */ - public int getCode(); + int getCode(); + /** * Gets the additional information about the result. - * + * * @return Additional information about the result. */ - public ReferencesCheckResultInfo getInfo(); + ReferencesCheckResultInfo getInfo(); } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlverify/ReferencesCheckResultInfo.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlverify/ReferencesCheckResultInfo.java index fc87c98..2a2511e 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlverify/ReferencesCheckResultInfo.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlverify/ReferencesCheckResultInfo.java @@ -21,29 +21,29 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.api.xmlverify; import org.w3c.dom.NodeList; /** * Additional information contained in a <code>ReferencesCheckResult</code>. - * + * * @author Patrick Peck * @version $Id$ */ public interface ReferencesCheckResultInfo { /** * Gets the additional info of the failed <code>dsig:reference</code> element. - * + * * @return The info elements. */ - public NodeList getAnyOtherInfo(); + NodeList getAnyOtherInfo(); + /** * Gets the positions of the failed signature references containing the * references to the manifests being described by this object. - * - * @return The positions of the failed signature references. + * + * @return The positions of the failed signature references. */ - public int[] getFailedReferences(); + int[] getFailedReferences(); } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlverify/SignatureManifestCheckParams.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlverify/SignatureManifestCheckParams.java index 524d4b8..d1e621e 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlverify/SignatureManifestCheckParams.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlverify/SignatureManifestCheckParams.java @@ -21,14 +21,13 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.api.xmlverify; import java.util.List; /** * Contains parameters used to check the signature manifest. - * + * * @author Patrick Peck * @author Stephan Grill * @version $Id$ @@ -36,15 +35,16 @@ import java.util.List; public interface SignatureManifestCheckParams { /** * Gets the referential information. - * + * * @return The referential information. */ - public List getReferenceInfos(); + List getReferenceInfos(); + /** * Gets information on whether signature source data should be returned. - * + * * @return <code>true</code>, if signature source data should be returned, - * otherwise <code>false</code>. + * otherwise <code>false</code>. */ - public boolean getReturnReferenceInputData(); + boolean getReturnReferenceInputData(); } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlverify/SupplementProfile.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlverify/SupplementProfile.java index 934e7c6..a906195 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlverify/SupplementProfile.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlverify/SupplementProfile.java @@ -21,12 +21,11 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.api.xmlverify; /** * Base class for supplementary information. - * + * * @author Patrick Peck * @author Stephan Grill * @version $Id$ @@ -35,18 +34,19 @@ public interface SupplementProfile { /** * Indicates that this object contains explicit supplementary information. */ - public static final int EXPLICIT_SUPPLEMENTPROFILE = 0; + int EXPLICIT_SUPPLEMENTPROFILE = 0; /** * Indicates that this object contains a profile id where supplementary * information can be found. */ - public static final int ID_SUPPLEMENTPROFILE = 1; + int ID_SUPPLEMENTPROFILE = 1; /** * Gets the type of supplementary information contained in this object. - * + * * @return The type of supplementary information contained in this object, - * either <code>EXPLICIT_SUPPLEMENT</code> or <code>ID_SUPPLEMENT</code>. + * either <code>EXPLICIT_SUPPLEMENT</code> or + * <code>ID_SUPPLEMENT</code>. */ - public int getSupplementProfileType(); + int getSupplementProfileType(); } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlverify/SupplementProfileExplicit.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlverify/SupplementProfileExplicit.java index d01abec..e0da05d 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlverify/SupplementProfileExplicit.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlverify/SupplementProfileExplicit.java @@ -21,14 +21,13 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.api.xmlverify; import at.gv.egovernment.moa.spss.api.common.XMLDataObjectAssociation; /** * Encapsulates explicit supplementary information. - * + * * @author Patrick Peck * @author Stephan Grill * @version $Id$ @@ -36,8 +35,8 @@ import at.gv.egovernment.moa.spss.api.common.XMLDataObjectAssociation; public interface SupplementProfileExplicit extends SupplementProfile { /** * Gets the supplemental object. - * + * * @return The supplemental object. */ - public XMLDataObjectAssociation getSupplementProfile(); + XMLDataObjectAssociation getSupplementProfile(); } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlverify/SupplementProfileID.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlverify/SupplementProfileID.java index beeb2f0..b890c3a 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlverify/SupplementProfileID.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlverify/SupplementProfileID.java @@ -21,22 +21,20 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.api.xmlverify; /** * Encapsulates supplementary information stored in a profile. - * + * * @author Patrick Peck * @author Stephan Grill * @version $Id$ */ public interface SupplementProfileID extends SupplementProfile { /** - * Gets the id of the profile where the supplementary information can be - * found. - * + * Gets the id of the profile where the supplementary information can be found. + * * @return The profile id. */ - public String getSupplementProfileID(); + String getSupplementProfileID(); } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlverify/TransformParameter.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlverify/TransformParameter.java index 7ecd1b8..6eeb759 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlverify/TransformParameter.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlverify/TransformParameter.java @@ -21,44 +21,44 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.api.xmlverify; /** - * Object encapsulating transform parameters either as a URI, binary or - * hashed. - * + * Object encapsulating transform parameters either as a URI, binary or hashed. + * * @author Patrick Peck * @author Stephan Grill * @version $Id$ */ public interface TransformParameter { /** - * Indicates that this object contains a transform parameter given as - * a URI. + * Indicates that this object contains a transform parameter given as a URI. */ - public static final int URI_TRANSFORMPARAMETER = 0; + int URI_TRANSFORMPARAMETER = 0; /** * Indicates that this object contains binary transform parameter. */ - public static final int BINARY_TRANSFORMPARAMETER = 1; + int BINARY_TRANSFORMPARAMETER = 1; /** * Indicatest that this object contains a binary hash of the transform * parameter. */ - public static final int HASH_TRANSFORMPARAMETER = 2; - + int HASH_TRANSFORMPARAMETER = 2; + /** * Gets the type of transform parameter contained in this object. - * - * @return The type of transform parameter, being one of - * <code>URI_TRANSFORMPARAMETER</code>, <code>BINARY_TRANSFORMPARAMETER</code> - * or <code>HASH_TRANSFORMPARAMETER</code>. + * + * @return The type of transform parameter, being one of + * <code>URI_TRANSFORMPARAMETER</code>, + * <code>BINARY_TRANSFORMPARAMETER</code> or + * <code>HASH_TRANSFORMPARAMETER</code>. */ - public int getTransformParameterType(); + int getTransformParameterType(); + /** * Gets the transform parameter URI. - * + * * @return The transform parameter URI. */ - public String getURI();} + String getURI(); +} diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlverify/TransformParameterBinary.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlverify/TransformParameterBinary.java index 388c5d0..afd3a89 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlverify/TransformParameterBinary.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlverify/TransformParameterBinary.java @@ -21,14 +21,13 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.api.xmlverify; import java.io.InputStream; /** * Encapsulates a binary transform parameter. - * + * * @author Patrick Peck * @author Stephan Grill * @version $Id$ @@ -36,10 +35,10 @@ import java.io.InputStream; public interface TransformParameterBinary extends TransformParameter { /** * Gets the binary transform parameter. - * - * @return An <code>InputStream</code> from which the binary content can - * be read. + * + * @return An <code>InputStream</code> from which the binary content can be + * read. */ - public InputStream getBinaryContent(); + InputStream getBinaryContent(); } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlverify/TransformParameterHash.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlverify/TransformParameterHash.java index 2ff6f39..11ad51e 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlverify/TransformParameterHash.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlverify/TransformParameterHash.java @@ -21,13 +21,11 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.api.xmlverify; - /** * Contains a hash of the transform parameter. - * + * * @author Patrick Peck * @author Stephan Grill * @version $Id$ @@ -35,16 +33,16 @@ package at.gv.egovernment.moa.spss.api.xmlverify; public interface TransformParameterHash extends TransformParameter { /** * Gets the method used for calculating the digest value. - * + * * @return The digest method. */ - public String getDigestMethod(); + String getDigestMethod(); + /** * Gets the binary hash of the transform parameter. - * + * * @return A binary representation of the hash. */ - public byte[] getDigestValue(); - + byte[] getDigestValue(); } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlverify/TransformParameterURI.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlverify/TransformParameterURI.java index bc73e95..743ecb1 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlverify/TransformParameterURI.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlverify/TransformParameterURI.java @@ -21,12 +21,11 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.api.xmlverify; /** * Encapsulates a transform parameter given as a URI. - * + * * @author Patrick Peck * @author Stephan Grill * @version $Id$ diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlverify/VerifySignatureInfo.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlverify/VerifySignatureInfo.java index 5d6e0eb..f910747 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlverify/VerifySignatureInfo.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlverify/VerifySignatureInfo.java @@ -21,14 +21,13 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.api.xmlverify; import at.gv.egovernment.moa.spss.api.common.Content; /** * Encapsulates a signature. - * + * * @author Patrick Peck * @author Stephan Grill * @version $Id$ @@ -36,16 +35,17 @@ import at.gv.egovernment.moa.spss.api.common.Content; public interface VerifySignatureInfo { /** * Gets the content of the <code>VerifySignatureEnvironment</code> element. - * - * @return A <code>MOAElement</code> containing the - * <code>VerifySignatureEnvironment</code> in a DOM-like structure. + * + * @return A <code>MOAElement</code> containing the + * <code>VerifySignatureEnvironment</code> in a DOM-like structure. */ - public Content getVerifySignatureEnvironment(); + Content getVerifySignatureEnvironment(); + /** * Gets the location of the signature. - * + * * @return The location of the signature within the signature environment. - */ - public VerifySignatureLocation getVerifySignatureLocation(); + */ + VerifySignatureLocation getVerifySignatureLocation(); } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlverify/VerifySignatureLocation.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlverify/VerifySignatureLocation.java index 56a2567..8cd1d4a 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlverify/VerifySignatureLocation.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlverify/VerifySignatureLocation.java @@ -21,14 +21,13 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.api.xmlverify; import at.gv.egovernment.moa.spss.api.common.ElementSelector; /** * Specifies where to find the signature to be verified. - * + * * @author Patrick Peck * @version $Id$ */ diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlverify/VerifyTransformsInfoProfile.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlverify/VerifyTransformsInfoProfile.java index a55d55e..8a821d6 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlverify/VerifyTransformsInfoProfile.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlverify/VerifyTransformsInfoProfile.java @@ -21,12 +21,11 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.api.xmlverify; /** * Object for explicitly specifying a transformation path. - * + * * @author Patrick Peck * @author Stephan Grill * @version $Id$ @@ -35,18 +34,18 @@ public interface VerifyTransformsInfoProfile { /** * Indicates that this object contains the transformation path explicitly. */ - public static final int EXPLICIT_VERIFYTRANSFORMSINFOPROFILE = 0; + int EXPLICIT_VERIFYTRANSFORMSINFOPROFILE = 0; /** * Indicatest that this object contains a transformation info id. */ - public static final int ID_VERIFYTRANSFORMSINFOPROFILE = 1; - + int ID_VERIFYTRANSFORMSINFOPROFILE = 1; + /** * Gets the type of transformation information contained in this object. - * - * @return The type of transformation information, either - * <code>EXPLICIT_VERIFYTRANSFORMSINFOPROFILE</code> or - * <code>ID_VERIFYTRANSFORMSINFOPROFILE</code>. + * + * @return The type of transformation information, either + * <code>EXPLICIT_VERIFYTRANSFORMSINFOPROFILE</code> or + * <code>ID_VERIFYTRANSFORMSINFOPROFILE</code>. */ - public int getVerifyTransformsInfoProfileType(); + int getVerifyTransformsInfoProfileType(); } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlverify/VerifyTransformsInfoProfileExplicit.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlverify/VerifyTransformsInfoProfileExplicit.java index cc29ace..bd91a28 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlverify/VerifyTransformsInfoProfileExplicit.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlverify/VerifyTransformsInfoProfileExplicit.java @@ -21,14 +21,13 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.api.xmlverify; import java.util.List; /** * Encapsulates explicit transformation information. - * + * * @author Patrick Peck * @author Stephan Grill * @version $Id$ @@ -36,14 +35,15 @@ import java.util.List; public interface VerifyTransformsInfoProfileExplicit extends VerifyTransformsInfoProfile { /** * Gets the XMLDSig transforms element. - * + * * @return The <code>List</code> of <code>Transform</code>s. */ - public List getTransforms(); + List getTransforms(); + /** * Gets the transformation parameters. - * + * * @return The transformation parameters. */ - public List getTransformParameters(); + List getTransformParameters(); } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlverify/VerifyTransformsInfoProfileID.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlverify/VerifyTransformsInfoProfileID.java index eeb28da..ef083ba 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlverify/VerifyTransformsInfoProfileID.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlverify/VerifyTransformsInfoProfileID.java @@ -21,12 +21,11 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.api.xmlverify; /** * Encapsulates transformation info id for signature verification. - * + * * @author Patrick Peck * @author Stephan Grill * @version $Id$ @@ -34,9 +33,9 @@ package at.gv.egovernment.moa.spss.api.xmlverify; public interface VerifyTransformsInfoProfileID extends VerifyTransformsInfoProfile { /** * Gets the identifier referencing the transformation info. - * + * * @return The identifier referencing the transformation info. */ - public String getVerifyTransformsInfoProfileID(); + String getVerifyTransformsInfoProfileID(); } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlverify/VerifyXMLSignatureRequest.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlverify/VerifyXMLSignatureRequest.java index c4a0fd1..666164a 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlverify/VerifyXMLSignatureRequest.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlverify/VerifyXMLSignatureRequest.java @@ -21,67 +21,70 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.api.xmlverify; import java.util.Date; import java.util.List; - /** * Object that encapsulates a request to verify an XML signature. - * + * * @author Patrick Peck * @author Stephan Grill * @version $Id$ */ public interface VerifyXMLSignatureRequest { /** - * Gets the date and time for which the signature verification has to - * be performed. - * - * @return Date and time for which the signature verification has - * to be performed. + * Gets the date and time for which the signature verification has to be + * performed. + * + * @return Date and time for which the signature verification has to be + * performed. */ - public Date getDateTime(); + Date getDateTime(); + /** * Gets the signature to be verified. - * + * * @return The signature to be verified. */ - public VerifySignatureInfo getSignatureInfo(); + VerifySignatureInfo getSignatureInfo(); + /** * Gets the supplemental information. - * + * * @return The supplemental information. - */ - public List getSupplementProfiles(); + */ + List getSupplementProfiles(); + /** * Gets parameters for Security Layer signature verification. - * + * * @return Parameters for Security Layer signature verification. */ - public SignatureManifestCheckParams getSignatureManifestCheckParams(); + SignatureManifestCheckParams getSignatureManifestCheckParams(); + /** * Checks, whether actually signed data shall be returned. - * - * @return <code>true</code>, if signed data will be returned, - * otherwise <code>false</code>. + * + * @return <code>true</code>, if signed data will be returned, otherwise + * <code>false</code>. */ - public boolean getReturnHashInputData(); + boolean getReturnHashInputData(); + /** * Gets the profile id of the set of trusted certificates to be used for * signature verification. - * + * * @return The id of the trusted certificates. */ - public String getTrustProfileId(); - + String getTrustProfileId(); + /** * Should perform extended validation - * - * @return <code>true</code>, if signed data will be returned, - * otherwise <code>false</code>. + * + * @return <code>true</code>, if signed data will be returned, otherwise + * <code>false</code>. */ - public boolean getExtendedValidaiton(); + boolean getExtendedValidaiton(); } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlverify/VerifyXMLSignatureResponse.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlverify/VerifyXMLSignatureResponse.java index 0ed12bf..33fcf24 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlverify/VerifyXMLSignatureResponse.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlverify/VerifyXMLSignatureResponse.java @@ -21,7 +21,6 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.api.xmlverify; import java.util.List; @@ -33,7 +32,7 @@ import at.gv.egovernment.moa.spss.api.common.SignerInfo; /** * Object that encapsulates the response on a request to verify an XML * signature. - * + * * @author Patrick Peck * @author Stephan Grill * @version $Id$ @@ -41,55 +40,63 @@ import at.gv.egovernment.moa.spss.api.common.SignerInfo; public interface VerifyXMLSignatureResponse { /** * Gets a <code>SignerInfo</code> element according to XMLDSig. - * + * * @return A <code>SignerInfo</code> element according to XMLDSig. */ - public SignerInfo getSignerInfo(); + SignerInfo getSignerInfo(); + /** * Gets datas signed by the signatory. - * + * * @return The signed datas. */ - public List getHashInputDatas(); + List getHashInputDatas(); + /** * Gets source datas elements. - * + * * @return The source datas elements. */ - public List getReferenceInputDatas(); + List getReferenceInputDatas(); + /** - * Gets the result of the signature verification. - * - * @return The result of the signature verification. - */ - public ReferencesCheckResult getSignatureCheck(); + * Gets the result of the signature verification. + * + * @return The result of the signature verification. + */ + ReferencesCheckResult getSignatureCheck(); + /** * Gets the result of the signature manifest verification. - * + * * @return The result of the signature manifest verification. */ - public ReferencesCheckResult getSignatureManifestCheck(); + ReferencesCheckResult getSignatureManifestCheck(); + /** * Gets XMLDSigManifestCheck elements. - * + * * @return The XMLDSigManifestCheck elements. */ - public List getXMLDsigManifestChecks(); + List getXMLDsigManifestChecks(); + /** * Gets the result of the certification verification. - * + * * @return The result of the certificate verification. */ - public CheckResult getCertificateCheck(); - + CheckResult getCertificateCheck(); + /** * Gets AdES Form results - * + * * This might be null! - * + * * @return The result of the AdES Form validation */ - public List getAdESFormResults(); - - public ExtendedCertificateCheckResult getExtendedCertificateCheck(); + List getAdESFormResults(); + + ExtendedCertificateCheckResult getExtendedCertificateCheck(); + + String getSignatureAlgorithm(); } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/config/CRLDistributionPoint.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/config/CRLDistributionPoint.java index b2389a4..bf11240 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/config/CRLDistributionPoint.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/config/CRLDistributionPoint.java @@ -23,10 +23,6 @@ package at.gv.egovernment.moa.spss.server.config; -import iaik.asn1.structures.Name; -import iaik.pki.revocation.RevocationSourceTypes; -import iaik.utils.RFC2253NameParserException; - import java.util.HashMap; import java.util.Map; import java.util.StringTokenizer; @@ -34,144 +30,151 @@ import java.util.StringTokenizer; import at.gv.egovernment.moa.spss.util.MessageProvider; import at.gv.egovernment.moaspss.logging.LogMsg; import at.gv.egovernment.moaspss.logging.Logger; +import iaik.asn1.structures.Name; +import iaik.pki.revocation.RevocationSourceTypes; +import iaik.utils.RFC2253NameParserException; /** * A class representing a CRL distribution point. - * + * * @author Sven Aigner * @author Patrick Peck * @version $Id$ */ -public class CRLDistributionPoint extends DistributionPoint implements iaik.pki.revocation.CRLDistributionPoint { - - private static Map RC_MAPPING = new HashMap(); - - static { - - // create the mapping between reason code strings and their integer - // values - RC_MAPPING.put("unused", new Integer(iaik.asn1.structures.DistributionPoint.unused)); - RC_MAPPING.put("keyCompromise", new Integer(iaik.asn1.structures.DistributionPoint.keyCompromise)); - RC_MAPPING.put("cACompromise", new Integer(iaik.asn1.structures.DistributionPoint.cACompromise)); - RC_MAPPING.put("affiliationChanged", new Integer(iaik.asn1.structures.DistributionPoint.affiliationChanged)); - RC_MAPPING.put("superseded", new Integer(iaik.asn1.structures.DistributionPoint.superseded)); - RC_MAPPING.put("cessationOfOperation", - new Integer(iaik.asn1.structures.DistributionPoint.cessationOfOperation)); - RC_MAPPING.put("certificateHold", new Integer(iaik.asn1.structures.DistributionPoint.certificateHold)); - RC_MAPPING.put("privilegeWithdrawn", new Integer(iaik.asn1.structures.DistributionPoint.privilegeWithdrawn)); - RC_MAPPING.put("aACompromise", new Integer(iaik.asn1.structures.DistributionPoint.aACompromise)); - } - - /** - * The name of the CA issuing the CRL referred to by this DP. - */ - private String issuerName_; - - /** - * The reason codes applicable for the distribution point. - */ - private int reasonCodes; - - /** - * Create a <code>CRLDistributionPoint</code>. - * - * @param issuerName - * The name of the CA issuing the CRL referred to by this DP. - * - * @param uri - * The URI of the distribution point. - * - * @param reasonCodeStr - * A list of reason codes (a space-separated enumeration). - */ - public CRLDistributionPoint(String issuerName, String uri, String reasonCodeStr) { - super(uri); - issuerName_ = issuerName; - this.reasonCodes = extractReasonCodes(reasonCodeStr); - } - - /** - * @see DistributionPoint#getType() - */ - public String getType() { - return RevocationSourceTypes.CRL; - } - - /** - * Convert a list of reason codes provided as a <code>String</code> to a - * binary representation. - * - * @param reasonCodeStr - * A <code>String</code> containing a blank-separated, textual - * representation of reason codes. - * @return int A binary representation of reason codes. - * @see iaik.asn1.structures.DistributionPoint - */ - private int extractReasonCodes(String reasonCodeStr) { - int codes = 0; - StringTokenizer tokenizer = new StringTokenizer(reasonCodeStr); - String token; - Integer reasonCode; - - while (tokenizer.hasMoreTokens()) { - token = tokenizer.nextToken(); - reasonCode = (Integer) RC_MAPPING.get(token); - if (reasonCode != null) { - codes |= reasonCode.intValue(); - } else { - MessageProvider msg = MessageProvider.getInstance(); - Logger.warn(new LogMsg(msg.getMessage("config.07", new Object[] { token }))); - } - } - - // If reasonCodeStr is empty, set all possible reason codes - if (codes == 0) - codes = iaik.asn1.structures.DistributionPoint.unused | iaik.asn1.structures.DistributionPoint.keyCompromise - | iaik.asn1.structures.DistributionPoint.cACompromise - | iaik.asn1.structures.DistributionPoint.affiliationChanged - | iaik.asn1.structures.DistributionPoint.superseded - | iaik.asn1.structures.DistributionPoint.cessationOfOperation - | iaik.asn1.structures.DistributionPoint.certificateHold - | iaik.asn1.structures.DistributionPoint.privilegeWithdrawn - | iaik.asn1.structures.DistributionPoint.aACompromise; - - return codes; - } - - /** - * Return a binary representation of the reason codes of this distribution - * point. - * - * @return The binary representation of the reason codes. - */ - public int getReasonCodes() { - return reasonCodes; - } - - /** - * Return a <code>String</code> representation of this distribution point. - * - * @return The <code>String</code> representation of this distribution - * point. - * @see java.lang.Object#toString() - */ - public String toString() { - return "(DistributionPoint - " + ("URI<" + getUri()) + ("> REASONCODES<" + getReasonCodes() + ">)"); - } - - /** - * @see iaik.pki.revocation.CRLDistributionPoint#getIssuerName() - */ - public String getIssuerName() { - return issuerName_; - } - - @Override - public Name getIssuerDN() { - try { - return new Name(this.issuerName_); - } catch (RFC2253NameParserException e) { - throw new RuntimeException(e); - } - } +public class CRLDistributionPoint extends DistributionPoint implements + iaik.pki.revocation.CRLDistributionPoint { + + private static Map RC_MAPPING = new HashMap(); + + static { + + // create the mapping between reason code strings and their integer + // values + RC_MAPPING.put("unused", new Integer(iaik.asn1.structures.DistributionPoint.unused)); + RC_MAPPING.put("keyCompromise", new Integer(iaik.asn1.structures.DistributionPoint.keyCompromise)); + RC_MAPPING.put("cACompromise", new Integer(iaik.asn1.structures.DistributionPoint.cACompromise)); + RC_MAPPING.put("affiliationChanged", new Integer( + iaik.asn1.structures.DistributionPoint.affiliationChanged)); + RC_MAPPING.put("superseded", new Integer(iaik.asn1.structures.DistributionPoint.superseded)); + RC_MAPPING.put("cessationOfOperation", + new Integer(iaik.asn1.structures.DistributionPoint.cessationOfOperation)); + RC_MAPPING.put("certificateHold", new Integer(iaik.asn1.structures.DistributionPoint.certificateHold)); + RC_MAPPING.put("privilegeWithdrawn", new Integer( + iaik.asn1.structures.DistributionPoint.privilegeWithdrawn)); + RC_MAPPING.put("aACompromise", new Integer(iaik.asn1.structures.DistributionPoint.aACompromise)); + } + + /** + * The name of the CA issuing the CRL referred to by this DP. + */ + private final String issuerName_; + + /** + * The reason codes applicable for the distribution point. + */ + private final int reasonCodes; + + /** + * Create a <code>CRLDistributionPoint</code>. + * + * @param issuerName The name of the CA issuing the CRL referred to by this + * DP. + * + * @param uri The URI of the distribution point. + * + * @param reasonCodeStr A list of reason codes (a space-separated enumeration). + */ + public CRLDistributionPoint(String issuerName, String uri, String reasonCodeStr) { + super(uri); + issuerName_ = issuerName; + this.reasonCodes = extractReasonCodes(reasonCodeStr); + } + + /** + * @see DistributionPoint#getType() + */ + @Override + public String getType() { + return RevocationSourceTypes.CRL; + } + + /** + * Convert a list of reason codes provided as a <code>String</code> to a binary + * representation. + * + * @param reasonCodeStr A <code>String</code> containing a blank-separated, + * textual representation of reason codes. + * @return int A binary representation of reason codes. + * @see iaik.asn1.structures.DistributionPoint + */ + private int extractReasonCodes(String reasonCodeStr) { + int codes = 0; + final StringTokenizer tokenizer = new StringTokenizer(reasonCodeStr); + String token; + Integer reasonCode; + + while (tokenizer.hasMoreTokens()) { + token = tokenizer.nextToken(); + reasonCode = (Integer) RC_MAPPING.get(token); + if (reasonCode != null) { + codes |= reasonCode.intValue(); + } else { + final MessageProvider msg = MessageProvider.getInstance(); + Logger.warn(new LogMsg(msg.getMessage("config.07", new Object[] { token }))); + } + } + + // If reasonCodeStr is empty, set all possible reason codes + if (codes == 0) { + codes = iaik.asn1.structures.DistributionPoint.unused + | iaik.asn1.structures.DistributionPoint.keyCompromise + | iaik.asn1.structures.DistributionPoint.cACompromise + | iaik.asn1.structures.DistributionPoint.affiliationChanged + | iaik.asn1.structures.DistributionPoint.superseded + | iaik.asn1.structures.DistributionPoint.cessationOfOperation + | iaik.asn1.structures.DistributionPoint.certificateHold + | iaik.asn1.structures.DistributionPoint.privilegeWithdrawn + | iaik.asn1.structures.DistributionPoint.aACompromise; + } + + return codes; + } + + /** + * Return a binary representation of the reason codes of this distribution + * point. + * + * @return The binary representation of the reason codes. + */ + @Override + public int getReasonCodes() { + return reasonCodes; + } + + /** + * Return a <code>String</code> representation of this distribution point. + * + * @return The <code>String</code> representation of this distribution point. + * @see java.lang.Object#toString() + */ + @Override + public String toString() { + return "(DistributionPoint - " + "URI<" + getUri() + "> REASONCODES<" + getReasonCodes() + ">)"; + } + + /** + * @see iaik.pki.revocation.CRLDistributionPoint#getIssuerName() + */ + public String getIssuerName() { + return issuerName_; + } + + @Override + public Name getIssuerDN() { + try { + return new Name(this.issuerName_); + } catch (final RFC2253NameParserException e) { + throw new RuntimeException(e); + } + } } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/config/ConfigurationException.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/config/ConfigurationException.java index 6546e88..13f1de9 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/config/ConfigurationException.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/config/ConfigurationException.java @@ -21,27 +21,26 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.server.config; import at.gv.egovernment.moa.spss.MOASystemException; /** * Exception signalling an error in the configuration. - * + * * @author Patrick Peck * @version $Id$ */ public class ConfigurationException extends MOASystemException { /** - * - */ - private static final long serialVersionUID = -1934466124930228755L; + * + */ + private static final long serialVersionUID = -1934466124930228755L; -/** + /** * Create a <code>ConfigurationException</code>. - * + * * @see at.gv.egovernment.moa.spss.MOAException#MOAException(String, Object[]) */ public ConfigurationException(String messageId, Object[] parameters) { @@ -50,12 +49,14 @@ public class ConfigurationException extends MOASystemException { /** * Create a <code>ConfigurationException</code>. - * @see at.gv.egovernment.moa.spss.MOAException#MOAException(String, Object[], Throwable) + * + * @see at.gv.egovernment.moa.spss.MOAException#MOAException(String, Object[], + * Throwable) */ public ConfigurationException( - String messageId, - Object[] parameters, - Throwable wrapped) { + String messageId, + Object[] parameters, + Throwable wrapped) { super(messageId, parameters, wrapped); } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/config/ConfigurationPartsBuilder.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/config/ConfigurationPartsBuilder.java index 15e44eb..8fe31c5 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/config/ConfigurationPartsBuilder.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/config/ConfigurationPartsBuilder.java @@ -20,22 +20,8 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.server.config; -import iaik.asn1.structures.Name; -//import iaik.ixsil.exceptions.URIException; -//import iaik.ixsil.util.URI; -import iaik.pki.pathvalidation.ChainingModes; -import iaik.pki.revocation.RevocationSourceTypes; -import iaik.server.modules.xml.BlackListEntry; -import iaik.server.modules.xml.ExternalReferenceChecker; -import iaik.server.modules.xml.WhiteListEntry; -import iaik.utils.RFC2253NameParser; -import iaik.utils.RFC2253NameParserException; -import iaik.xml.crypto.utils.URI; -import iaik.xml.crypto.utils.URIException; - import java.io.File; import java.io.FileInputStream; import java.io.IOException; @@ -70,14 +56,25 @@ import at.gv.egovernment.moaspss.logging.LogMsg; import at.gv.egovernment.moaspss.logging.Logger; import at.gv.egovernment.moaspss.util.Constants; import at.gv.egovernment.moaspss.util.DOMUtils; -import at.gv.egovernment.moaspss.util.FileUtils; import at.gv.egovernment.moaspss.util.MiscUtil; import at.gv.egovernment.moaspss.util.StringUtils; import at.gv.egovernment.moaspss.util.XPathUtils; +import iaik.asn1.structures.Name; +//import iaik.ixsil.exceptions.URIException; +//import iaik.ixsil.util.URI; +import iaik.pki.pathvalidation.ChainingModes; +import iaik.pki.revocation.RevocationSourceTypes; +import iaik.server.modules.xml.BlackListEntry; +import iaik.server.modules.xml.ExternalReferenceChecker; +import iaik.server.modules.xml.WhiteListEntry; +import iaik.utils.RFC2253NameParser; +import iaik.utils.RFC2253NameParserException; +import iaik.xml.crypto.utils.URI; +import iaik.xml.crypto.utils.URIException; /** * A class that builds configuration data from a DOM based representation. - * + * * @author Patrick Peck * @version $Id$ */ @@ -102,264 +99,274 @@ public class ConfigurationPartsBuilder { // private static final String ROOT = "/" + CONF + "MOAConfiguration/"; - + private static final String PDFAS_CONFIGURATION_XPATH = - ROOT + CONF + "Common/" + CONF + "PDFASConfig"; - + ROOT + CONF + "Common/" + CONF + "PDFASConfig"; + private static final String FORMRESULT_CONFIGURATION_XPATH = - ROOT + CONF + "Common/" + CONF + "AdESFormResult"; - + ROOT + CONF + "Common/" + CONF + "AdESFormResult"; + private static final String DIGEST_METHOD_XPATH = - ROOT + CONF + "SignatureCreation/" - + CONF + "XMLDSig/" - + CONF + "DigestMethodAlgorithm"; + ROOT + CONF + "SignatureCreation/" + + CONF + "XMLDSig/" + + CONF + "DigestMethodAlgorithm"; private static final String XADES_VERSION_XPATH = - ROOT + CONF + "SignatureCreation/" - + CONF + "XAdES/" - + CONF + "Version"; + ROOT + CONF + "SignatureCreation/" + + CONF + "XAdES/" + + CONF + "Version"; private static final String C14N_ALGORITHM_XPATH = - ROOT + CONF + "SignatureCreation/" - + CONF + "XMLDSig/" - + CONF + "CanonicalizationAlgorithm"; + ROOT + CONF + "SignatureCreation/" + + CONF + "XMLDSig/" + + CONF + "CanonicalizationAlgorithm"; private static final String HARDWARE_CRYPTO_MODULE_XPATH = - ROOT + CONF + "Common/" - + CONF + "HardwareCryptoModule"; + ROOT + CONF + "Common/" + + CONF + "HardwareCryptoModule"; private static final String PERMIT_EXTERNAL_URIS_XPATH = - ROOT + CONF + "Common/" - + CONF + "PermitExternalUris"; + ROOT + CONF + "Common/" + + CONF + "PermitExternalUris"; private static final String BLACK_LIST_URIS_XPATH = - ROOT + CONF + "Common/" - + CONF + "PermitExternalUris/" - + CONF + "BlackListUri"; + ROOT + CONF + "Common/" + + CONF + "PermitExternalUris/" + + CONF + "BlackListUri"; private static final String FORBID_EXTERNAL_URIS_XPATH = - ROOT + CONF + "Common/" - + CONF + "ForbidExternalUris"; + ROOT + CONF + "Common/" + + CONF + "ForbidExternalUris"; private static final String WHITE_LIST_URIS_XPATH = - ROOT + CONF + "Common/" - + CONF + "ForbidExternalUris/" - + CONF + "WhiteListUri"; - + ROOT + CONF + "Common/" + + CONF + "ForbidExternalUris/" + + CONF + "WhiteListUri"; + private static final String HARDWARE_KEY_XPATH = - ROOT + CONF + "SignatureCreation/" - + CONF + "KeyModules/" - + CONF + "HardwareKeyModule"; + ROOT + CONF + "SignatureCreation/" + + CONF + "KeyModules/" + + CONF + "HardwareKeyModule"; private static final String SOFTWARE_KEY_XPATH = - ROOT + CONF + "SignatureCreation/" - + CONF + "KeyModules/" - + CONF + "SoftwareKeyModule"; - private static final String KEYGROUP_XPATH = - ROOT + CONF + "SignatureCreation/" - + CONF + "KeyGroup"; + ROOT + CONF + "SignatureCreation/" + + CONF + "KeyModules/" + + CONF + "SoftwareKeyModule"; + private static final String KEYGROUP_XPATH = + ROOT + CONF + "SignatureCreation/" + + CONF + "KeyGroup"; private static final String KEYGROUP_MAPPING_XPATH = - ROOT + CONF + "SignatureCreation/" - + CONF + "KeyGroupMapping"; - private static final String ISSUER_XPATH = - DSIG + "X509IssuerName"; - private static final String SERIAL_XPATH = - DSIG + "X509SerialNumber"; + ROOT + CONF + "SignatureCreation/" + + CONF + "KeyGroupMapping"; + private static final String ISSUER_XPATH = + DSIG + "X509IssuerName"; + private static final String SERIAL_XPATH = + DSIG + "X509SerialNumber"; private static final String CERTSTORE_LOCATION_XPATH = - ROOT + CONF + "SignatureVerification/" - + CONF + "CertificateValidation/" - + CONF + "PathConstruction/" - + CONF + "CertificateStore/" - + CONF + "DirectoryStore/" - + CONF + "Location"; - private static final String AUTO_ADD_CERTIFICATES_XPATH_ = - ROOT + CONF + "SignatureVerification/" - + CONF + "CertificateValidation/" - + CONF + "PathConstruction/" - + CONF + "AutoAddCertificates"; + ROOT + CONF + "SignatureVerification/" + + CONF + "CertificateValidation/" + + CONF + "PathConstruction/" + + CONF + "CertificateStore/" + + CONF + "DirectoryStore/" + + CONF + "Location"; + private static final String AUTO_ADD_CERTIFICATES_XPATH_ = + ROOT + CONF + "SignatureVerification/" + + CONF + "CertificateValidation/" + + CONF + "PathConstruction/" + + CONF + "AutoAddCertificates"; + + private static final String AUTO_ADD_EE_CERTIFICATES_XPATH_ = + ROOT + CONF + "SignatureVerification/" + + CONF + "CertificateValidation/" + + CONF + "PathConstruction/" + + CONF + "AutoAddEECertificates"; + private static final String USE_AUTHORITY_INFO_ACCESS_XPATH_ = - ROOT + CONF + "SignatureVerification/" - + CONF + "CertificateValidation/" - + CONF + "PathConstruction/" - + CONF + "UseAuthorityInformationAccess"; + ROOT + CONF + "SignatureVerification/" + + CONF + "CertificateValidation/" + + CONF + "PathConstruction/" + + CONF + "UseAuthorityInformationAccess"; private static final String CHAINING_MODES_XPATH = - ROOT + CONF + "SignatureVerification/" - + CONF + "CertificateValidation/" - + CONF + "PathValidation/" - + CONF + "ChainingMode"; + ROOT + CONF + "SignatureVerification/" + + CONF + "CertificateValidation/" + + CONF + "PathValidation/" + + CONF + "ChainingMode"; private static final String CHAINING_MODES_DEFAULT_XPATH = - CHAINING_MODES_XPATH + "/" - + CONF + "DefaultMode"; + CHAINING_MODES_XPATH + "/" + + CONF + "DefaultMode"; private static final String TRUST_ANCHOR_XPATH = - CHAINING_MODES_XPATH + "/" - + CONF + "TrustAnchor"; + CHAINING_MODES_XPATH + "/" + + CONF + "TrustAnchor"; private static final String TRUST_PROFILE_XPATH = - ROOT + CONF + "SignatureVerification/" - + CONF + "CertificateValidation/" - + CONF + "PathValidation/" - + CONF + "TrustProfile"; + ROOT + CONF + "SignatureVerification/" + + CONF + "CertificateValidation/" + + CONF + "PathValidation/" + + CONF + "TrustProfile"; private static final String DISTRIBUTION_POINTS_XPATH = - ROOT + CONF + "SignatureVerification/" - + CONF + "CertificateValidation/" - + CONF + "RevocationChecking/" - + CONF + "DistributionPoint"; + ROOT + CONF + "SignatureVerification/" + + CONF + "CertificateValidation/" + + CONF + "RevocationChecking/" + + CONF + "DistributionPoint"; private static final String CRL_RETENTION_INTERVALS_CA_XPATH = - ROOT + CONF + "SignatureVerification/" - + CONF + "CertificateValidation/" - + CONF + "RevocationChecking/" - + CONF + "CrlRetentionIntervals/" - + CONF + "CA"; - private static final String ENABLE_REVOCATION_CHECKING_XPATH_ = - ROOT + CONF + "SignatureVerification/" - + CONF + "CertificateValidation/" - + CONF + "RevocationChecking/" - + CONF + "EnableChecking"; + ROOT + CONF + "SignatureVerification/" + + CONF + "CertificateValidation/" + + CONF + "RevocationChecking/" + + CONF + "CrlRetentionIntervals/" + + CONF + "CA"; + private static final String ENABLE_REVOCATION_CHECKING_XPATH_ = + ROOT + CONF + "SignatureVerification/" + + CONF + "CertificateValidation/" + + CONF + "RevocationChecking/" + + CONF + "EnableChecking"; private static final String MAX_REVOCATION_AGE_XPATH_ = - ROOT + CONF + "SignatureVerification/" - + CONF + "CertificateValidation/" - + CONF + "RevocationChecking/" - + CONF + "MaxRevocationAge"; - private static final String REVOCATION_SERVICEORDER_XPATH_ = - ROOT + CONF + "SignatureVerification/" - + CONF + "CertificateValidation/" - + CONF + "RevocationChecking/" - + CONF + "ServiceOrder/" - + CONF + "Service"; - private static final String ENABLE_ARCHIVING_XPATH = - ROOT + CONF + "SignatureVerification/" - + CONF + "CertificateValidation/" - + CONF + "RevocationChecking/" - + CONF + "Archiving/" - + CONF + "EnableArchiving"; - private static final String CRL_ARCHIVE_DURATION_XPATH = - ROOT + CONF + "SignatureVerification/" - + CONF + "CertificateValidation/" - + CONF + "RevocationChecking/" - + CONF + "Archiving/" - + CONF + "ArchiveDuration"; - private static final String ACHIVE_JDBC_URL_ = - ROOT + CONF + "SignatureVerification/" - + CONF + "CertificateValidation/" - + CONF + "RevocationChecking/" - + CONF + "Archiving/" - + CONF + "Archive/" - + CONF + "DatabaseArchive/" - + CONF + "JDBCURL"; - private static final String ACHIVE_JDBC_DRIVER_CLASS_ = - ROOT + CONF + "SignatureVerification/" - + CONF + "CertificateValidation/" - + CONF + "RevocationChecking/" - + CONF + "Archiving/" - + CONF + "Archive/" - + CONF + "DatabaseArchive/" - + CONF + "JDBCDriverClassName"; + ROOT + CONF + "SignatureVerification/" + + CONF + "CertificateValidation/" + + CONF + "RevocationChecking/" + + CONF + "MaxRevocationAge"; + private static final String REVOCATION_SERVICEORDER_XPATH_ = + ROOT + CONF + "SignatureVerification/" + + CONF + "CertificateValidation/" + + CONF + "RevocationChecking/" + + CONF + "ServiceOrder/" + + CONF + "Service"; + private static final String ENABLE_ARCHIVING_XPATH = + ROOT + CONF + "SignatureVerification/" + + CONF + "CertificateValidation/" + + CONF + "RevocationChecking/" + + CONF + "Archiving/" + + CONF + "EnableArchiving"; + private static final String CRL_ARCHIVE_DURATION_XPATH = + ROOT + CONF + "SignatureVerification/" + + CONF + "CertificateValidation/" + + CONF + "RevocationChecking/" + + CONF + "Archiving/" + + CONF + "ArchiveDuration"; + private static final String ACHIVE_JDBC_URL_ = + ROOT + CONF + "SignatureVerification/" + + CONF + "CertificateValidation/" + + CONF + "RevocationChecking/" + + CONF + "Archiving/" + + CONF + "Archive/" + + CONF + "DatabaseArchive/" + + CONF + "JDBCURL"; + private static final String ACHIVE_JDBC_DRIVER_CLASS_ = + ROOT + CONF + "SignatureVerification/" + + CONF + "CertificateValidation/" + + CONF + "RevocationChecking/" + + CONF + "Archiving/" + + CONF + "Archive/" + + CONF + "DatabaseArchive/" + + CONF + "JDBCDriverClassName"; private static final String CREATE_TRANSFORMS_INFO_PROFILE_XPATH = - ROOT + CONF + "SignatureCreation/" - + CONF + "CreateTransformsInfoProfile"; + ROOT + CONF + "SignatureCreation/" + + CONF + "CreateTransformsInfoProfile"; private static final String CREATE_SIGNATURE_ENVIRONMENT_PROFILE_XPATH = - ROOT + CONF + "SignatureCreation/" - + CONF + "CreateSignatureEnvironmentProfile"; + ROOT + CONF + "SignatureCreation/" + + CONF + "CreateSignatureEnvironmentProfile"; private static final String VERIFY_TRANSFORMS_INFO_PROFILE_XPATH = - ROOT + CONF + "SignatureVerification/" - + CONF + "VerifyTransformsInfoProfile"; + ROOT + CONF + "SignatureVerification/" + + CONF + "VerifyTransformsInfoProfile"; private static final String SUPPLEMENT_PROFILE_XPATH = - ROOT + CONF + "SignatureVerification/" - + CONF + "SupplementProfile"; + ROOT + CONF + "SignatureVerification/" + + CONF + "SupplementProfile"; private static final String PERMIT_FILE_URIS_XPATH = - ROOT + CONF + "SignatureVerification/" - + CONF + "PermitFileURIs"; - + ROOT + CONF + "SignatureVerification/" + + CONF + "PermitFileURIs"; + private static final String CONNECTION_TIMEOUT_XPATH_ = - ROOT + CONF + "SignatureVerification/" - + CONF + "CertificateValidation/" - + CONF + "ConnectionTimeout"; - + ROOT + CONF + "SignatureVerification/" + + CONF + "CertificateValidation/" + + CONF + "ConnectionTimeout"; + private static final String READ_TIMEOUT_XPATH_ = - ROOT + CONF + "SignatureVerification/" - + CONF + "CertificateValidation/" - + CONF + "ReadTimeout"; - - private static final String TSL_CONFIGURATION_XPATH = - ROOT + CONF + "SignatureVerification/" - + CONF + "CertificateValidation/" - + CONF + "TSLConfiguration/"; + ROOT + CONF + "SignatureVerification/" + + CONF + "CertificateValidation/" + + CONF + "ReadTimeout"; + + private static final String TSL_CONFIGURATION_XPATH = + ROOT + CONF + "SignatureVerification/" + + CONF + "CertificateValidation/" + + CONF + "TSLConfiguration/"; // - // default values for configuration parameters + // default values for configuration parameters // /** The accepted canonicalization algorithm URIs, as an array */ private static final String[] ACCEPTED_C14N_ALGORITHMS_ARRAY = - { - Constants.C14N_URI, - Constants.C14N_WITH_COMMENTS_URI, - Constants.EXC_C14N_URI, - Constants.EXC_C14N_WITH_COMMENTS_URI }; + { + Constants.C14N_URI, + Constants.C14N_WITH_COMMENTS_URI, + Constants.EXC_C14N_URI, + Constants.EXC_C14N_WITH_COMMENTS_URI }; /** The accepted canonicalization algorithm URIs, as a Set */ private static final Set ACCEPTED_C14N_ALGORITHMS = - new HashSet(Arrays.asList(ACCEPTED_C14N_ALGORITHMS_ARRAY)); + new HashSet(Arrays.asList(ACCEPTED_C14N_ALGORITHMS_ARRAY)); /** Default canonicalization algorithm, if none/illegal has been configured */ private static final String C14N_ALGORITHM_DEFAULT = Constants.C14N_URI; /** The accepted digest method algorithm URIs, as an array */ private static final String[] ACCEPTED_DIGEST_ALGORITHMS_ARRAY = - { Constants.SHA1_URI, - Constants.SHA256_URI, - Constants.SHA384_URI, - Constants.SHA512_URI}; + { Constants.SHA1_URI, + Constants.SHA256_URI, + Constants.SHA384_URI, + Constants.SHA512_URI }; /** The accepted digest method algorithm URIs, as a Set */ private static final Set ACCEPTED_DIGEST_ALGORITHMS = - new HashSet(Arrays.asList(ACCEPTED_DIGEST_ALGORITHMS_ARRAY)); - - - /** Default digest algorithm URI, if none/illegal has been configured (for XAdES 1.1.1) */ + new HashSet(Arrays.asList(ACCEPTED_DIGEST_ALGORITHMS_ARRAY)); + + /** + * Default digest algorithm URI, if none/illegal has been configured (for XAdES + * 1.1.1) + */ private static final String DIGEST_ALGORITHM_DEFAULT_XADES_1_1_1 = Constants.SHA1_URI; - - /** Default digest algorithm URI, if none/illegal has been configured (for XAdES 1.4.2) */ + + /** + * Default digest algorithm URI, if none/illegal has been configured (for XAdES + * 1.4.2) + */ private static final String DIGEST_ALGORITHM_DEFAULT_XADES_1_4_2 = Constants.SHA256_URI; - + /** The root element of the MOA configuration */ - private Element configElem; - + private final Element configElem; + /** * The directory containing the underlying configuration file. */ - private File configRoot_; + private final File configRoot_; /** Whether any warnings were encountered building the configuration. */ - private List warnings = new ArrayList(); + private final List warnings = new ArrayList(); /** * Create a new <code>ConfigurationPartsBuilder</code>. - * + * * @param configElem The root element of the MOA configuration. - * + * * @param configRoot The directory containing the underlying configuration file. */ - public ConfigurationPartsBuilder(Element configElem, File configRoot) - { + public ConfigurationPartsBuilder(Element configElem, File configRoot) { this.configElem = configElem; configRoot_ = configRoot; } /** - * Returns the root element of the MOA configuration. - * + * Returns the root element of the MOA configuration. + * * @return The root element of the MOA configuration. */ public Element getConfigElem() { return configElem; } - - /** + + /** * Returns the directory containing the underlying configuration file. - * + * * @return the directory containing the underlying configuration file. */ - public File getConfigRoot() - { + public File getConfigRoot() { return configRoot_; } /** * Returns the warnings encountered during building the configuration. - * - * @return A <code>List</code> of <code>String</code>s, containing the - * warning messages. + * + * @return A <code>List</code> of <code>String</code>s, containing the warning + * messages. */ public List getWarnings() { return warnings; @@ -367,129 +374,115 @@ public class ConfigurationPartsBuilder { /** * Returns the digest method algorithm name. - * + * * @return The digest method algorithm name from the configuration. */ - public String getDigestMethodAlgorithmName() - { + public String getDigestMethodAlgorithmName() { String digestMethod = getElementValue(getConfigElem(), DIGEST_METHOD_XPATH, null); - - if (digestMethod == null || !ACCEPTED_DIGEST_ALGORITHMS.contains(digestMethod)) - { - String xadesVersion = this.getXAdESVersion(); - if (xadesVersion == null) { - info( - "config.23", - new Object[] { "DigestMethodAlgorithm", DIGEST_ALGORITHM_DEFAULT_XADES_1_1_1 }); - digestMethod = DIGEST_ALGORITHM_DEFAULT_XADES_1_1_1; - } - else { - info( - "config.23", - new Object[] { "DigestMethodAlgorithm", DIGEST_ALGORITHM_DEFAULT_XADES_1_4_2 }); - digestMethod = DIGEST_ALGORITHM_DEFAULT_XADES_1_4_2; - } - - + + if (digestMethod == null || !ACCEPTED_DIGEST_ALGORITHMS.contains(digestMethod)) { + final String xadesVersion = this.getXAdESVersion(); + if (xadesVersion == null) { + info( + "config.23", + new Object[] { "DigestMethodAlgorithm", DIGEST_ALGORITHM_DEFAULT_XADES_1_1_1 }); + digestMethod = DIGEST_ALGORITHM_DEFAULT_XADES_1_1_1; + } else { + info( + "config.23", + new Object[] { "DigestMethodAlgorithm", DIGEST_ALGORITHM_DEFAULT_XADES_1_4_2 }); + digestMethod = DIGEST_ALGORITHM_DEFAULT_XADES_1_4_2; + } + } return digestMethod; } - + /** * Returns the digest method algorithm name. - * + * * @return The digest method algorithm name from the configuration. */ - public String getXAdESVersion() - { - String xadesVersion = getElementValue(getConfigElem(), XADES_VERSION_XPATH, null); - + public String getXAdESVersion() { + final String xadesVersion = getElementValue(getConfigElem(), XADES_VERSION_XPATH, null); + return xadesVersion; } - + /** * Returns the digest method algorithm name. - * + * * @return The digest method algorithm name from the configuration. */ - public String getPDFASConfiguration() - { - String pdfasConfiguration = getElementValue(getConfigElem(), PDFAS_CONFIGURATION_XPATH, null); - + public String getPDFASConfiguration() { + final String pdfasConfiguration = getElementValue(getConfigElem(), PDFAS_CONFIGURATION_XPATH, null); + return pdfasConfiguration; } - + /** * Get the connection timeout to set-up a network connection * * @return timeout in milliseconds [ms] */ - public int getConnectionTimeout() - { - String connectionTimeout = getElementValue(getConfigElem(), CONNECTION_TIMEOUT_XPATH_, "30"); + public int getConnectionTimeout() { + final String connectionTimeout = getElementValue(getConfigElem(), CONNECTION_TIMEOUT_XPATH_, "30"); int defaultConnectionTimeout = 30; - - if(connectionTimeout != null) { - try { - defaultConnectionTimeout = Integer.parseInt(connectionTimeout); - } catch(NumberFormatException e) { - Logger.warn("Configuration value " + CONNECTION_TIMEOUT_XPATH_ + " should be a number defaulting to 30"); - } + + if (connectionTimeout != null) { + try { + defaultConnectionTimeout = Integer.parseInt(connectionTimeout); + } catch (final NumberFormatException e) { + Logger.warn("Configuration value " + CONNECTION_TIMEOUT_XPATH_ + + " should be a number defaulting to 30"); + } } - - if(defaultConnectionTimeout < 0) { - defaultConnectionTimeout = 30; + + if (defaultConnectionTimeout < 0) { + defaultConnectionTimeout = 30; } - + return defaultConnectionTimeout * 1000; } - /** - * Get the timeout to receive data from a network connection that is already open - * - * @return timeout in milliseconds [ms] - */ - public int getReadTimeout() - { - String connectionTimeout = getElementValue(getConfigElem(), READ_TIMEOUT_XPATH_, "30"); + public int getReadTimeout() { + final String connectionTimeout = getElementValue(getConfigElem(), READ_TIMEOUT_XPATH_, "30"); + int defaultConnectionTimeout = 30; - - if(connectionTimeout != null) { - try { - defaultConnectionTimeout = Integer.parseInt(connectionTimeout); - } catch(NumberFormatException e) { - Logger.warn("Configuration value " + READ_TIMEOUT_XPATH_ + " should be a number defaulting to 30"); - } + + if (connectionTimeout != null) { + try { + defaultConnectionTimeout = Integer.parseInt(connectionTimeout); + } catch (final NumberFormatException e) { + Logger.warn("Configuration value " + READ_TIMEOUT_XPATH_ + " should be a number defaulting to 30"); + } } - - if(defaultConnectionTimeout < 0) { - defaultConnectionTimeout = 30; + + if (defaultConnectionTimeout < 0) { + defaultConnectionTimeout = 30; } - + return defaultConnectionTimeout * 1000; } - - public boolean getAdesFormResult() - { - String enableArchiving = getElementValue(getConfigElem(), FORMRESULT_CONFIGURATION_XPATH, null); - return Boolean.valueOf(enableArchiving).booleanValue(); + + public boolean getAdesFormResult() { + final String enableArchiving = getElementValue(getConfigElem(), FORMRESULT_CONFIGURATION_XPATH, null); + return Boolean.valueOf(enableArchiving).booleanValue(); } - + /** * Returns the canonicalization algorithm name. - * + * * @return The canonicalization algorithm name from the configuration. */ - public String getCanonicalizationAlgorithmName() - { + public String getCanonicalizationAlgorithmName() { String c14nAlgorithm = getElementValue(getConfigElem(), C14N_ALGORITHM_XPATH, null); - if (c14nAlgorithm == null || !ACCEPTED_C14N_ALGORITHMS.contains(c14nAlgorithm)) - { + if (c14nAlgorithm == null || !ACCEPTED_C14N_ALGORITHMS.contains(c14nAlgorithm)) { info( - "config.23", - new Object[] { "CanonicalizationAlgorithm", C14N_ALGORITHM_DEFAULT }); + "config.23", + new Object[] { "CanonicalizationAlgorithm", C14N_ALGORITHM_DEFAULT }); c14nAlgorithm = C14N_ALGORITHM_DEFAULT; } @@ -498,189 +491,172 @@ public class ConfigurationPartsBuilder { /** * Build the configured hardware crypto modules. - * + * * @return The hardware crypto modules from the configuration. */ - public List buildHardwareCryptoModules() - { - List modules = new ArrayList(); - NodeIterator modIter = XPathUtils.selectNodeIterator( - getConfigElem(), - HARDWARE_CRYPTO_MODULE_XPATH); + public List buildHardwareCryptoModules() { + final List modules = new ArrayList(); + final NodeIterator modIter = XPathUtils.selectNodeIterator( + getConfigElem(), + HARDWARE_CRYPTO_MODULE_XPATH); Element modElem; while ((modElem = (Element) modIter.nextNode()) != null) { - String name = getElementValue(modElem, CONF + "Name", null); - String slotId = getElementValue(modElem, CONF + "SlotId", null); - String userPIN = getElementValue(modElem, CONF + "UserPIN", null); - HardwareCryptoModule module = new HardwareCryptoModule(name, slotId, userPIN); + final String name = getElementValue(modElem, CONF + "Name", null); + final String slotId = getElementValue(modElem, CONF + "SlotId", null); + final String userPIN = getElementValue(modElem, CONF + "UserPIN", null); + final HardwareCryptoModule module = new HardwareCryptoModule(name, slotId, userPIN); modules.add(module); } return modules; } - + /** - * + * * @return */ public boolean allowExternalUris() { - Element permitExtUris = (Element)XPathUtils.selectSingleNode(getConfigElem(), PERMIT_EXTERNAL_URIS_XPATH); - - // if PermitExternalUris element does not exist - don't allow external uris - if (permitExtUris == null) { - // set permitExtUris for iaik-moa - ExternalReferenceChecker.setPermitExternalURLs(false); - return false; - } - else { - // set permitExtUris for iaik-moa - ExternalReferenceChecker.setPermitExternalURLs(true); - return true; - } + final Element permitExtUris = (Element) XPathUtils.selectSingleNode(getConfigElem(), + PERMIT_EXTERNAL_URIS_XPATH); + + // if PermitExternalUris element does not exist - don't allow external uris + if (permitExtUris == null) { + // set permitExtUris for iaik-moa + ExternalReferenceChecker.setPermitExternalURLs(false); + return false; + } else { + // set permitExtUris for iaik-moa + ExternalReferenceChecker.setPermitExternalURLs(true); + return true; + } } - - + /** - * + * * @return */ public List buildPermitExternalUris() { - - info("config.33", null); - - List blacklist = new ArrayList(); - List blackListIaikMoa = new ArrayList(); - - NodeIterator permitExtIter = XPathUtils.selectNodeIterator( - getConfigElem(), - BLACK_LIST_URIS_XPATH); - - Element permitExtElem = null; - while ((permitExtElem = (Element) permitExtIter.nextNode()) != null) { - String host = getElementValue(permitExtElem, CONF + "IP", null); - String port = getElementValue(permitExtElem, CONF + "Port", null); - - BlackListEntry entry =null; - if (port == null) { - entry = new BlackListEntry(host, -1); - info("config.34", new Object[]{host}); - } - else { - entry = new BlackListEntry(host, new Integer(port).intValue()); - info("config.34", new Object[]{host + ":" + port}); - } - - // add entry to iaik-moa blacklist - blackListIaikMoa.add(entry); - - - String array[] = new String[2]; - array[0] = host; - array[1] = port; - blacklist.add(array); - - } - - - // set blacklist for iaik-moa - ExternalReferenceChecker.setBlacklist(blackListIaikMoa); - - - if(blacklist.isEmpty()) // no blacklisted uris given - info("config.36", null); - - - return blacklist; + + info("config.33", null); + + final List blacklist = new ArrayList(); + final List blackListIaikMoa = new ArrayList(); + + final NodeIterator permitExtIter = XPathUtils.selectNodeIterator( + getConfigElem(), + BLACK_LIST_URIS_XPATH); + + Element permitExtElem = null; + while ((permitExtElem = (Element) permitExtIter.nextNode()) != null) { + final String host = getElementValue(permitExtElem, CONF + "IP", null); + final String port = getElementValue(permitExtElem, CONF + "Port", null); + + BlackListEntry entry = null; + if (port == null) { + entry = new BlackListEntry(host, -1); + info("config.34", new Object[] { host }); + } else { + entry = new BlackListEntry(host, new Integer(port).intValue()); + info("config.34", new Object[] { host + ":" + port }); + } + + // add entry to iaik-moa blacklist + blackListIaikMoa.add(entry); + + final String array[] = new String[2]; + array[0] = host; + array[1] = port; + blacklist.add(array); + + } + + // set blacklist for iaik-moa + ExternalReferenceChecker.setBlacklist(blackListIaikMoa); + + if (blacklist.isEmpty()) { + info("config.36", null); + } + + return blacklist; } - + /** - * + * * @return */ public List buildForbidExternalUris() { - - //info("config.47", null); - - List whitelist = new ArrayList(); - List whiteListIaikMoa = new ArrayList(); - - NodeIterator forbidExtIter = XPathUtils.selectNodeIterator( - getConfigElem(), - WHITE_LIST_URIS_XPATH); - - Element permitExtElem = null; - while ((permitExtElem = (Element) forbidExtIter.nextNode()) != null) { - String host = getElementValue(permitExtElem, CONF + "IP", null); - String port = getElementValue(permitExtElem, CONF + "Port", null); - - // WhiteListeEntry - WhiteListEntry entry =null; - if (port == null) { - entry = new WhiteListEntry(host, -1); - info("config.49", new Object[]{host}); + + // info("config.47", null); + + final List whitelist = new ArrayList(); + final List whiteListIaikMoa = new ArrayList(); + + final NodeIterator forbidExtIter = XPathUtils.selectNodeIterator( + getConfigElem(), + WHITE_LIST_URIS_XPATH); + + Element permitExtElem = null; + while ((permitExtElem = (Element) forbidExtIter.nextNode()) != null) { + final String host = getElementValue(permitExtElem, CONF + "IP", null); + final String port = getElementValue(permitExtElem, CONF + "Port", null); + + // WhiteListeEntry + WhiteListEntry entry = null; + if (port == null) { + entry = new WhiteListEntry(host, -1); + info("config.49", new Object[] { host }); + } else { + entry = new WhiteListEntry(host, new Integer(port).intValue()); + info("config.49", new Object[] { host + ":" + port }); } - else { - entry = new WhiteListEntry(host, new Integer(port).intValue()); - info("config.49", new Object[]{host + ":" + port}); - } - - // add entry to iaik-moa whitelist - whiteListIaikMoa.add(entry); - - - String array[] = new String[2]; - array[0] = host; - array[1] = port; - whitelist.add(array); - - } - - - // set whitelist for iaik-moa - ExternalReferenceChecker.setWhitelist(whiteListIaikMoa); - - - if(whitelist.isEmpty()) // no whitelisted uris given - info("config.48", null); - - - return whitelist; + + // add entry to iaik-moa whitelist + whiteListIaikMoa.add(entry); + + final String array[] = new String[2]; + array[0] = host; + array[1] = port; + whitelist.add(array); + + } + + // set whitelist for iaik-moa + ExternalReferenceChecker.setWhitelist(whiteListIaikMoa); + + if (whitelist.isEmpty()) { + info("config.48", null); + } + + return whitelist; } - - /** - * Build the configured hardware keys. - * - * @param keyModules The keyModules that the configuration already knows about. To - * prevent multiple key modules with the same ID. + * Build the configured hardware keys. + * + * @param keyModules The keyModules that the configuration already knows about. + * To prevent multiple key modules with the same ID. * @return The hardware keys contained in the configuration. */ - public List buildHardwareKeyModules(List keyModules) - { - Set existingIds = toIdSet(keyModules); - List hardwareKeys = new ArrayList(); - NodeIterator hkIter = - XPathUtils.selectNodeIterator(getConfigElem(), HARDWARE_KEY_XPATH); + public List buildHardwareKeyModules(List keyModules) { + final Set existingIds = toIdSet(keyModules); + final List hardwareKeys = new ArrayList(); + final NodeIterator hkIter = + XPathUtils.selectNodeIterator(getConfigElem(), HARDWARE_KEY_XPATH); Element keyElem; - while ((keyElem = (Element) hkIter.nextNode()) != null) - { - String id = getElementValue(keyElem, CONF + "Id", null); - String name = getElementValue(keyElem, CONF + "Name", null); - String slotId = getElementValue(keyElem, CONF + "SlotId", null); - String userPIN = getElementValue(keyElem, CONF + "UserPIN", null); + while ((keyElem = (Element) hkIter.nextNode()) != null) { + final String id = getElementValue(keyElem, CONF + "Id", null); + final String name = getElementValue(keyElem, CONF + "Name", null); + final String slotId = getElementValue(keyElem, CONF + "SlotId", null); + final String userPIN = getElementValue(keyElem, CONF + "UserPIN", null); - if (existingIds.contains(id)) - { + if (existingIds.contains(id)) { warn( - "config.04", - new Object[] { "Hardware- oder SoftwareKeyModule", id }); - } - else - { - KeyModule key = new HardwareKeyModule(id, name, slotId, userPIN); + "config.04", + new Object[] { "Hardware- oder SoftwareKeyModule", id }); + } else { + final KeyModule key = new HardwareKeyModule(id, name, slotId, userPIN); hardwareKeys.add(key); existingIds.add(id); } @@ -692,34 +668,29 @@ public class ConfigurationPartsBuilder { /** * Build the configured software keys. - * - * @param keyModules The keyModules that the configuration already knows about. To - * prevent multiple key modules with the same ID. + * + * @param keyModules The keyModules that the configuration already knows about. + * To prevent multiple key modules with the same ID. * * @return The software keys contained in the configuration. */ - public List buildSoftwareKeyModules(List keyModules) - { - Set existingIds = toIdSet(keyModules); - List softwareKeys = new ArrayList(); - NodeIterator skIter = - XPathUtils.selectNodeIterator(getConfigElem(), SOFTWARE_KEY_XPATH); + public List buildSoftwareKeyModules(List keyModules) { + final Set existingIds = toIdSet(keyModules); + final List softwareKeys = new ArrayList(); + final NodeIterator skIter = + XPathUtils.selectNodeIterator(getConfigElem(), SOFTWARE_KEY_XPATH); Element keyElem; - while ((keyElem = (Element) skIter.nextNode()) != null) - { - String id = getElementValue(keyElem, CONF + "Id", null); - String fileName = getElementValue(keyElem, CONF + "FileName", null); - String passWord = getElementValue(keyElem, CONF + "Password", null); + while ((keyElem = (Element) skIter.nextNode()) != null) { + final String id = getElementValue(keyElem, CONF + "Id", null); + final String fileName = getElementValue(keyElem, CONF + "FileName", null); + final String passWord = getElementValue(keyElem, CONF + "Password", null); - if (existingIds.contains(id)) - { + if (existingIds.contains(id)) { warn( - "config.04", - new Object[] { "Hardware- oder SoftwareKeyModule", id }); - } - else - { + "config.04", + new Object[] { "Hardware- oder SoftwareKeyModule", id }); + } else { File keyFile; KeyModule key; @@ -731,7 +702,7 @@ public class ConfigurationPartsBuilder { // check for existence if (!keyFile.exists() || keyFile.isDirectory()) { - warn("config.25", new Object[] { id, keyFile.getAbsolutePath()}); + warn("config.25", new Object[] { id, keyFile.getAbsolutePath() }); } else { // create a new key module key = new SoftwareKeyModule(id, keyFile.getAbsolutePath(), passWord); @@ -746,39 +717,36 @@ public class ConfigurationPartsBuilder { /** * Build the key group configuration. - * - * @param keyModules The <code>KeyModule</code>s that the configuration - * knows about. Used to check for errors in the configuration. + * + * @param keyModules The <code>KeyModule</code>s that the configuration knows + * about. Used to check for errors in the configuration. * @return The mapping between key group IDs and key groups. */ - public Map buildKeyGroups(List keyModules) - { - Set keyModuleIds = toIdSet(keyModules); - Map keyGroups = new HashMap(); + public Map buildKeyGroups(List keyModules) { + final Set keyModuleIds = toIdSet(keyModules); + final Map keyGroups = new HashMap(); NodeIterator kgIter; Element keyGroupElem; // select all KeyGroup elements and build the KeyGroup objects from them kgIter = XPathUtils.selectNodeIterator(getConfigElem(), KEYGROUP_XPATH); - while ((keyGroupElem = (Element) kgIter.nextNode()) != null) - { + while ((keyGroupElem = (Element) kgIter.nextNode()) != null) { String keyGroupId = getElementValue(keyGroupElem, CONF + "Id", null); - //switch all keyGroupIds to lower case, only - if (MiscUtil.isNotEmpty(keyGroupId)) - keyGroupId = keyGroupId.trim().toLowerCase(); - - String keyGroupDigestMethodAlgorithm = getElementValue(keyGroupElem, CONF + "DigestMethodAlgorithm", null); - Set keyGroupEntries = - buildKeyGroupEntries(keyGroupId, keyModuleIds, keyGroupElem); - KeyGroup keyGroup = new KeyGroup(keyGroupId, keyGroupEntries, keyGroupDigestMethodAlgorithm); + // switch all keyGroupIds to lower case, only + if (MiscUtil.isNotEmpty(keyGroupId)) { + keyGroupId = keyGroupId.trim().toLowerCase(); + } - if (keyGroups.containsKey(keyGroupId)) - { + final String keyGroupDigestMethodAlgorithm = getElementValue(keyGroupElem, CONF + + "DigestMethodAlgorithm", null); + final Set keyGroupEntries = + buildKeyGroupEntries(keyGroupId, keyModuleIds, keyGroupElem); + final KeyGroup keyGroup = new KeyGroup(keyGroupId, keyGroupEntries, keyGroupDigestMethodAlgorithm); + + if (keyGroups.containsKey(keyGroupId)) { warn("config.04", new Object[] { "KeyGroup", keyGroupId }); - } - else - { + } else { keyGroups.put(keyGroup.getId(), keyGroup); } } @@ -788,17 +756,16 @@ public class ConfigurationPartsBuilder { /** * Return the set of IDs contained in the given <code>KeyModule</code>s. - * - * @param keyModules The <code>KeyModule</code>s from which to extract the - * IDs. + * + * @param keyModules The <code>KeyModule</code>s from which to extract the IDs. * @return The IDs from the given <code>KeyModule</code>s. */ private Set toIdSet(List keyModules) { - Set ids = new HashSet(); + final Set ids = new HashSet(); Iterator iter; for (iter = keyModules.iterator(); iter.hasNext();) { - KeyModule keyModule = (KeyModule) iter.next(); + final KeyModule keyModule = (KeyModule) iter.next(); ids.add(keyModule.getId()); } @@ -807,35 +774,36 @@ public class ConfigurationPartsBuilder { /** * Build the key entries belonging to a key group. - * - * @param keyGroupId The ID of the key group we are building here. Passed - * for logging purposes. + * + * @param keyGroupId The ID of the key group we are building here. Passed for + * logging purposes. * @param keyModuleIds The IDs of the <code>HardwareKeyModule</code>s and - * <code>SoftwareKeyModule</code>s that exist in the configuration. + * <code>SoftwareKeyModule</code>s that exist in the + * configuration. * @param keyGroupElem The <code>KeyGroup</code> DOM element to parse. * @return A <code>Set</code> of <code>KeyGroupEntry</code> objects. */ private Set buildKeyGroupEntries( - String keyGroupId, - Set keyModuleIds, - Element keyGroupElem) { + String keyGroupId, + Set keyModuleIds, + Element keyGroupElem) { - Set entries = new HashSet(); + final Set entries = new HashSet(); NodeIterator keyEntryIter; Element keyEntryElem; // select all Key elements and put them into the Map keyEntryIter = XPathUtils.selectNodeIterator(keyGroupElem, CONF + "Key"); - while ((keyEntryElem = (Element) keyEntryIter.nextNode()) != null) - { - String keyModuleId = getElementValue(keyEntryElem, CONF + "KeyModuleId", ""); - Element keyCertElem = (Element) XPathUtils.selectSingleNode(keyEntryElem, CONF + "KeyCertIssuerSerial"); - IssuerAndSerial issuerSerial = buildIssuerAndSerial(keyCertElem); + while ((keyEntryElem = (Element) keyEntryIter.nextNode()) != null) { + final String keyModuleId = getElementValue(keyEntryElem, CONF + "KeyModuleId", ""); + final Element keyCertElem = (Element) XPathUtils.selectSingleNode(keyEntryElem, CONF + + "KeyCertIssuerSerial"); + final IssuerAndSerial issuerSerial = buildIssuerAndSerial(keyCertElem); if (!keyModuleIds.contains(keyModuleId)) { warn("config.26", new Object[] { keyGroupId, keyModuleId }); } else if (issuerSerial != null) { - KeyGroupEntry entry = new KeyGroupEntry(keyModuleId, issuerSerial); + final KeyGroupEntry entry = new KeyGroupEntry(keyModuleId, issuerSerial); entries.add(entry); } } @@ -844,34 +812,31 @@ public class ConfigurationPartsBuilder { /** * Build the key group mapping. - * + * * @param keyGroups The available key groups. * @param anonymous The <code>IssuerAndSerial</code> to be used for key group - * mappings not protected by a certificate. + * mappings not protected by a certificate. * @return The key group mapping. */ public Map buildKeyGroupMappings(Map keyGroups, IssuerAndSerial anonymous) { - Map mappings = new HashMap(); + final Map mappings = new HashMap(); NodeIterator mappingIter; Element mappingElem; // select all KeyGroupMapping elements mappingIter = - XPathUtils.selectNodeIterator(getConfigElem(), KEYGROUP_MAPPING_XPATH); + XPathUtils.selectNodeIterator(getConfigElem(), KEYGROUP_MAPPING_XPATH); // build the mapping for each KeyGroupMapping element - while ((mappingElem = (Element) mappingIter.nextNode()) != null) - { - Element issuerSerialElem = (Element) XPathUtils.selectSingleNode(mappingElem, CONF + "CustomerId"); + while ((mappingElem = (Element) mappingIter.nextNode()) != null) { + final Element issuerSerialElem = (Element) XPathUtils.selectSingleNode(mappingElem, CONF + + "CustomerId"); // build the IssuerAndSerial who has access to the key groups IssuerAndSerial issuerAndSerial; - if (issuerSerialElem != null) - { + if (issuerSerialElem != null) { issuerAndSerial = buildIssuerAndSerial(issuerSerialElem); - } - else - { + } else { // IssuerSerial element: the keygroup is generally available issuerAndSerial = anonymous; } @@ -882,8 +847,7 @@ public class ConfigurationPartsBuilder { NodeIterator keyGroupIter; Element keyGroupElem; - if (groups == null) - { + if (groups == null) { // no mapping exist -> build one groups = new HashMap(); mappings.put(issuerAndSerial, groups); @@ -891,16 +855,13 @@ public class ConfigurationPartsBuilder { // select the available key groups and add them to the mapping keyGroupIter = XPathUtils.selectNodeIterator(mappingElem, CONF + "KeyGroupId"); - while ((keyGroupElem = (Element) keyGroupIter.nextNode()) != null) - { - String keyGroupId = getElementValue(keyGroupElem, ".", null); - KeyGroup keyGroup = (KeyGroup) keyGroups.get(keyGroupId.trim().toLowerCase()); - - if (keyGroup != null) - { + while ((keyGroupElem = (Element) keyGroupIter.nextNode()) != null) { + final String keyGroupId = getElementValue(keyGroupElem, ".", null); + final KeyGroup keyGroup = (KeyGroup) keyGroups.get(keyGroupId.trim().toLowerCase()); + + if (keyGroup != null) { groups.put(keyGroupId, keyGroup); - } else - { + } else { warn("config.00", new Object[] { keyGroupId }); } } @@ -912,15 +873,14 @@ public class ConfigurationPartsBuilder { /** * Returns the default chaining mode from the configuration. - * + * * @return The default chaining mode. */ - public String getDefaultChainingMode() - { - String defaultChaining = getElementValue( - getConfigElem(), - CHAINING_MODES_DEFAULT_XPATH, - CM_PKIX); + public String getDefaultChainingMode() { + final String defaultChaining = getElementValue( + getConfigElem(), + CHAINING_MODES_DEFAULT_XPATH, + CM_PKIX); return translateChainingMode(defaultChaining); @@ -928,23 +888,20 @@ public class ConfigurationPartsBuilder { /** * Build the chaining modes for all configured trust anchors. - * + * * @return The mapping from trust anchors to chaining modes. */ - public Map buildChainingModes() - { - Map chainingModes = new HashMap(); - NodeIterator trustIter = XPathUtils.selectNodeIterator(getConfigElem(), TRUST_ANCHOR_XPATH); + public Map buildChainingModes() { + final Map chainingModes = new HashMap(); + final NodeIterator trustIter = XPathUtils.selectNodeIterator(getConfigElem(), TRUST_ANCHOR_XPATH); Element trustAnchorElem; - while ((trustAnchorElem = (Element) trustIter.nextNode()) != null) - { - IssuerAndSerial issuerAndSerial = buildIssuerAndSerial( - (Element)XPathUtils.selectSingleNode(trustAnchorElem, CONF + "Identification")); - String mode = getElementValue(trustAnchorElem, CONF + "Mode", null); + while ((trustAnchorElem = (Element) trustIter.nextNode()) != null) { + final IssuerAndSerial issuerAndSerial = buildIssuerAndSerial( + (Element) XPathUtils.selectSingleNode(trustAnchorElem, CONF + "Identification")); + final String mode = getElementValue(trustAnchorElem, CONF + "Mode", null); - if (issuerAndSerial != null) - { + if (issuerAndSerial != null) { chainingModes.put(issuerAndSerial, translateChainingMode(mode)); } } @@ -954,26 +911,26 @@ public class ConfigurationPartsBuilder { /** * Build an <code>IssuerAndSerial</code> from the DOM representation. - * + * * @param root The root element (being of type <code>dsig: * X509IssuerSerialType</code>. * @return The issuer and serial number contained in the <code>root</code> - * element or <code>null</code> if could not be built for any reason. + * element or <code>null</code> if could not be built for any reason. */ private IssuerAndSerial buildIssuerAndSerial(Element root) { - String issuer = getElementValue(root, ISSUER_XPATH, null); - String serial = getElementValue(root, SERIAL_XPATH, null); + final String issuer = getElementValue(root, ISSUER_XPATH, null); + final String serial = getElementValue(root, SERIAL_XPATH, null); if (issuer != null && serial != null) { try { - RFC2253NameParser nameParser = new RFC2253NameParser(issuer); - Principal issuerDN = nameParser.parse(); + final RFC2253NameParser nameParser = new RFC2253NameParser(issuer); + final Principal issuerDN = nameParser.parse(); return new IssuerAndSerial(issuerDN, new BigInteger(serial)); - } catch (RFC2253NameParserException e) { + } catch (final RFC2253NameParserException e) { warn("config.16", new Object[] { issuer, serial }, e); return null; - } catch (NumberFormatException e) { + } catch (final NumberFormatException e) { warn("config.16", new Object[] { issuer, serial }, e); return null; } @@ -984,10 +941,10 @@ public class ConfigurationPartsBuilder { /** * Translate the chaining mode from the configuration file to one used in the * IAIK MOA API. - * + * * @param chainingMode The chaining mode from the configuration. * @return The chaining mode as provided by the <code>ChainingModes</code> - * interface. + * interface. * @see iaik.pki.pathvalidation.ChainingModes */ private String translateChainingMode(String chainingMode) { @@ -1002,55 +959,50 @@ public class ConfigurationPartsBuilder { /** * Build the distribution points mapping. - * + * * @return The mapping from certificate authorities to distribution points. */ - public Map buildDistributionPoints() - { - Map dPs = new HashMap(); + public Map buildDistributionPoints() { + final Map dPs = new HashMap(); NodeIterator dPIter; Element dPElem; - // select all DistributionPoint elements + // select all DistributionPoint elements dPIter = XPathUtils.selectNodeIterator(getConfigElem(), DISTRIBUTION_POINTS_XPATH); - // build the mapping of CA name to distribution points + // build the mapping of CA name to distribution points while ((dPElem = (Element) dPIter.nextNode()) != null) { - String caIssuerDNText = getElementValue(dPElem, CONF + "CAIssuerDN", ""); - RFC2253NameParser nameParser = new RFC2253NameParser(caIssuerDNText); - NodeIterator cRLDPIter = XPathUtils.selectNodeIterator(dPElem, CONF + "CRLDP"); - NodeIterator oCSPDPPIter = XPathUtils.selectNodeIterator(dPElem, CONF + "OCSPDP"); + final String caIssuerDNText = getElementValue(dPElem, CONF + "CAIssuerDN", ""); + final RFC2253NameParser nameParser = new RFC2253NameParser(caIssuerDNText); + final NodeIterator cRLDPIter = XPathUtils.selectNodeIterator(dPElem, CONF + "CRLDP"); + final NodeIterator oCSPDPPIter = XPathUtils.selectNodeIterator(dPElem, CONF + "OCSPDP"); - try - { - String caIssuerDN = nameParser.parse().getName(); + try { + final String caIssuerDN = nameParser.parse().getName(); - // check, if a mapping exists or make a new mapping + // check, if a mapping exists or make a new mapping Set dPsForCA = (Set) dPs.get(caIssuerDN); - if (dPsForCA == null) - { + if (dPsForCA == null) { dPsForCA = new HashSet(); dPs.put(caIssuerDN, dPsForCA); } // add the CRL distribution points of this CA to the set Element cRLDPElem; - while ((cRLDPElem = (Element) cRLDPIter.nextNode()) != null) - { - CRLDistributionPoint cRLDP = (CRLDistributionPoint) buildDistributionPoint(cRLDPElem, caIssuerDN); + while ((cRLDPElem = (Element) cRLDPIter.nextNode()) != null) { + final CRLDistributionPoint cRLDP = (CRLDistributionPoint) buildDistributionPoint(cRLDPElem, + caIssuerDN); dPsForCA.add(cRLDP); } // add the OCSP distribution points of this CA to the set Element oCSPPElem; - while ((oCSPPElem = (Element) oCSPDPPIter.nextNode()) != null) - { - OCSPDistributionPoint oCSPDP = (OCSPDistributionPoint) buildDistributionPoint(oCSPPElem, null); + while ((oCSPPElem = (Element) oCSPDPPIter.nextNode()) != null) { + final OCSPDistributionPoint oCSPDP = (OCSPDistributionPoint) buildDistributionPoint(oCSPPElem, + null); dPsForCA.add(oCSPDP); } -} - catch (RFC2253NameParserException e) - { + } catch (final RFC2253NameParserException e) { warn("config.13", new Object[] { caIssuerDNText }, e); } @@ -1061,143 +1013,126 @@ public class ConfigurationPartsBuilder { /** * Build a distribution point from the DOM representation. - * - * @param dpElem The root element of the distribution point. - * - * @param issuerName The name of the CA issuing the CRL referred to by this DP, or <code>null</code> - * if this DP refers to an OCSP responder. - * + * + * @param dpElem The root element of the distribution point. + * + * @param issuerName The name of the CA issuing the CRL referred to by this DP, + * or <code>null</code> if this DP refers to an OCSP + * responder. + * * @return The distribution point. */ - private DistributionPoint buildDistributionPoint(Element dpElem, String issuerName) - { - String uri = getElementValue(dpElem, CONF + "Location", null); - - if ("CRLDP".equals(dpElem.getLocalName())) - { - NodeIterator reasonCodesIter = XPathUtils.selectNodeIterator(dpElem, CONF + "ReasonCode"); + private DistributionPoint buildDistributionPoint(Element dpElem, String issuerName) { + final String uri = getElementValue(dpElem, CONF + "Location", null); + + if ("CRLDP".equals(dpElem.getLocalName())) { + final NodeIterator reasonCodesIter = XPathUtils.selectNodeIterator(dpElem, CONF + "ReasonCode"); Element reasonCodeElem; - StringBuffer reasonCodesSB = new StringBuffer(); - while ((reasonCodeElem = (Element)reasonCodesIter.nextNode()) != null) - { - if (reasonCodesSB.length() > 0) reasonCodesSB.append(" "); + final StringBuffer reasonCodesSB = new StringBuffer(); + while ((reasonCodeElem = (Element) reasonCodesIter.nextNode()) != null) { + if (reasonCodesSB.length() > 0) { + reasonCodesSB.append(" "); + } reasonCodesSB.append(getElementValue(reasonCodeElem, ".", "").trim()); } return new CRLDistributionPoint(issuerName, uri, reasonCodesSB.toString()); - } - else - { + } else { return new OCSPDistributionPoint(uri); } } /** * Return the CRL archive duration. - * - * @return The value of the CRL archive duration setting from the configuration, or <code>0</code> if - * no value is set in the configuration. + * + * @return The value of the CRL archive duration setting from the configuration, + * or <code>0</code> if no value is set in the configuration. */ - public int getRevocationArchiveDuration() - { - String archiveDuration = getElementValue(getConfigElem(), CRL_ARCHIVE_DURATION_XPATH, null); - try - { + public int getRevocationArchiveDuration() { + final String archiveDuration = getElementValue(getConfigElem(), CRL_ARCHIVE_DURATION_XPATH, null); + try { return Integer.parseInt(archiveDuration); - } - catch (NumberFormatException e) - { + } catch (final NumberFormatException e) { warn("config.01", null); return 365; } } /** - * Build the <code>CreateTransformsInfoProfile</code>s. - * + * Build the <code>CreateTransformsInfoProfile</code>s. + * * @return The mapping from profile ID to profile. */ - public Map buildCreateTransformsInfoProfiles() - { + public Map buildCreateTransformsInfoProfiles() { return loadProfiles(CREATE_TRANSFORMS_INFO_PROFILE_XPATH, "CreateTransformsInfoProfile"); } /** * Build the <code>CreateSignatureEnvironmentProfile</code>s. - * + * * @return The mapping from profile ID to profile. */ - public Map buildCreateSignatureEnvironmentProfiles() - { + public Map buildCreateSignatureEnvironmentProfiles() { return loadProfiles(CREATE_SIGNATURE_ENVIRONMENT_PROFILE_XPATH, "CreateSignatureEnvironmentProfile"); } /** * Build the <code>VerifyTransformsInfoProfile</code>s. - * + * * @return The mapping from profile ID to profile. */ - public Map buildVerifyTransformsInfoProfiles() - { + public Map buildVerifyTransformsInfoProfiles() { return loadProfiles(VERIFY_TRANSFORMS_INFO_PROFILE_XPATH, "VerifyTransformsInfoProfile"); } /** * Build the <code>SupplementProfile</code>s. - * + * * @return The mapping from profile ID to profile. */ - public Map buildSupplementProfiles() - { + public Map buildSupplementProfiles() { return loadProfiles(SUPPLEMENT_PROFILE_XPATH, "SupplementProfile"); } /** * Load a profile mapping. - * - * @param xpath The XPath to select the profiles from the configuration. - * + * + * @param xpath The XPath to select the profiles from the configuration. + * * @param profileRoot The name of the profile root element. - * + * * @return Map The profile ID to profile mapping. */ - private Map loadProfiles(String xpath, String profileRoot) - { - Map profiles = new HashMap(); - NodeIterator profileIter = XPathUtils.selectNodeIterator(getConfigElem(), xpath); + private Map loadProfiles(String xpath, String profileRoot) { + final Map profiles = new HashMap(); + final NodeIterator profileIter = XPathUtils.selectNodeIterator(getConfigElem(), xpath); Element profileElem; - while ((profileElem = (Element) profileIter.nextNode()) != null) - { - String id = getElementValue(profileElem, CONF + "Id", null); - String fileName = getElementValue(profileElem, CONF + "Location", null); + while ((profileElem = (Element) profileIter.nextNode()) != null) { + final String id = getElementValue(profileElem, CONF + "Id", null); + final String fileName = getElementValue(profileElem, CONF + "Location", null); - if (profiles.containsKey(id)) - { + if (profiles.containsKey(id)) { warn("config.04", new Object[] { profileRoot, id }); - } - else - { - try - { + } else { + try { File profileFile = new File(fileName); // make profileFile absolute - if (!profileFile.isAbsolute()) profileFile = new File(configRoot_, fileName); + if (!profileFile.isAbsolute()) { + profileFile = new File(configRoot_, fileName); + } // load the profile - info("config.22", new Object[] { profileRoot, id, profileFile.getAbsoluteFile()}); - Element profile = loadProfile(profileFile); + info("config.22", new Object[] { profileRoot, id, profileFile.getAbsoluteFile() }); + final Element profile = loadProfile(profileFile); - if (Constants.MOA_NS_URI.equals(profile.getNamespaceURI()) && - profile.getLocalName().equals(profileRoot)) - { + if (Constants.MOA_NS_URI.equals(profile.getNamespaceURI()) && + profile.getLocalName().equals(profileRoot)) { profiles.put(id, profile); - } - else - { + } else { warn("config.02", new Object[] { profileRoot, id, fileName }); } - } catch (ConfigurationException e) { + } catch (final ConfigurationException e) { warn("config.03", new Object[] { profileRoot, id }); } } @@ -1208,8 +1143,9 @@ public class ConfigurationPartsBuilder { /** * Load a profile from a file. - * - * @param root The absolute directory path of the main configuration file. + * + * @param root The absolute directory path of the main configuration + * file. * @param profileFile The file containing the profile. * @return The profile in its DOM representation. * @throws ConfigurationException An error occurred loading the profile. @@ -1220,7 +1156,7 @@ public class ConfigurationPartsBuilder { try { profile = parseXml(new FileInputStream(profileFile)); - } catch (Exception e) { + } catch (final Exception e) { throw new ConfigurationException("config.12", null, e); } @@ -1229,146 +1165,136 @@ public class ConfigurationPartsBuilder { /** * Build the trust profile mapping. - * + * * @return The profile ID to profile mapping. */ - - public Map buildTrustProfiles() - { - Map trustProfiles = new HashMap(); - NodeIterator profileIter = XPathUtils.selectNodeIterator(getConfigElem(), TRUST_PROFILE_XPATH); + + public Map buildTrustProfiles() { + final Map trustProfiles = new HashMap(); + final NodeIterator profileIter = XPathUtils.selectNodeIterator(getConfigElem(), TRUST_PROFILE_XPATH); Element profileElem; - while ((profileElem = (Element) profileIter.nextNode()) != null) { - //load basic TrustProfile information - - //check TrustProfileId - String id = getElementValue(profileElem, CONF + "Id", null); - if (MiscUtil.isEmpty(id)) { - warn("config.52", new Object[]{"Id des TrustProfiles ist leer."}); - continue; - - } - //cast profileId to lowercase (changed in 3.0.1) - id = id.trim().toLowerCase(); - if (trustProfiles.containsKey(id)) { - warn("config.04", new Object[] { "TrustProfile", id }); + while ((profileElem = (Element) profileIter.nextNode()) != null) { + // load basic TrustProfile information + + // check TrustProfileId + String id = getElementValue(profileElem, CONF + "Id", null); + if (MiscUtil.isEmpty(id)) { + warn("config.52", new Object[] { "Id des TrustProfiles ist leer." }); + continue; + + } + // cast profileId to lowercase (changed in 3.0.1) + id = id.trim().toLowerCase(); + if (trustProfiles.containsKey(id)) { + warn("config.04", new Object[] { "TrustProfile", id }); + continue; + } + + // check location of TrustAnchor directory + final String trustAnchorsLocStr = getElementValue(profileElem, CONF + "TrustAnchorsLocation", null); + URI trustAnchorsLocURI = null; + try { + trustAnchorsLocURI = new URI(trustAnchorsLocStr); + if (!trustAnchorsLocURI.isAbsolute()) { // make it absolute to the config file + trustAnchorsLocURI = new URI(configRoot_.toURL() + trustAnchorsLocStr); + } + } catch (final URIException e) { + warn("config.14", new Object[] { "uri", id, trustAnchorsLocStr }, e); + continue; + } catch (final MalformedURLException e) { + warn("config.15", new Object[] { id }, e); + continue; + } + final File profileDir = new File(trustAnchorsLocURI.getPath()); + if (!profileDir.exists() || !profileDir.isDirectory()) { + warn("config.27", new Object[] { "uri", id }); + continue; + } + + // check signerCertsLocation URL + String signerCertsLocStr = getElementValue(profileElem, CONF + "SignerCertsLocation", null); + URI signerCertsLocURI = null; + if (signerCertsLocStr != null && !"".equals(signerCertsLocStr)) { + try { + signerCertsLocURI = new URI(signerCertsLocStr); + if (!signerCertsLocURI.isAbsolute()) { + signerCertsLocURI = new URI(configRoot_.toURL() + signerCertsLocStr); + } + + final File signerCertsDir = new File(signerCertsLocURI.getPath()); + if (!signerCertsDir.exists() || !signerCertsDir.isDirectory()) { + warn("config.27", new Object[] { "signerCertsUri", id }); continue; - } - - //check location of TrustAnchor directory - String trustAnchorsLocStr = getElementValue(profileElem, CONF + "TrustAnchorsLocation", null); - URI trustAnchorsLocURI = null; - try - { - trustAnchorsLocURI = new URI(trustAnchorsLocStr); - if (!trustAnchorsLocURI.isAbsolute()) { // make it absolute to the config file - trustAnchorsLocURI = new URI(configRoot_.toURL() + trustAnchorsLocStr); } - } - catch (URIException e) { - warn("config.14", new Object[] { "uri", id, trustAnchorsLocStr }, e); - continue; - } - catch (MalformedURLException e) - { - warn("config.15", new Object[] {id}, e); + } catch (final URIException e) { + warn("config.14", new Object[] { "signerCertsUri", id, trustAnchorsLocStr }, e); continue; - } - File profileDir = new File(trustAnchorsLocURI.getPath()); - if (!profileDir.exists() || !profileDir.isDirectory()) { - warn("config.27", new Object[] { "uri", id }); + } catch (final MalformedURLException e) { + warn("config.15", new Object[] { id }, e); continue; } + } + signerCertsLocStr = signerCertsLocURI != null ? signerCertsLocURI.toString() : null; + + // check if TSL support is enabled + final Element eutslElem = (Element) XPathUtils.selectSingleNode(profileElem, CONF + "EUTSL"); + boolean tslEnabled = false; + if (eutslElem != null) { + tslEnabled = true; + } + + // load TSL configuration + final String countries = getElementValue(profileElem, CONF + "EUTSL" + "/" + CONF + "CountrySelection", + null); + final String allowedTspStatus = getElementValue(profileElem, CONF + "EUTSL" + "/" + CONF + + "AllowedTSPStatus", null); + final String allowedTspServiceTypes = getElementValue(profileElem, CONF + "EUTSL" + "/" + CONF + + "AllowedTSPServiceTypes", null); + + // create profile configuration + final TrustProfile profile = new TrustProfile(id, trustAnchorsLocURI.toString(), signerCertsLocStr, + tslEnabled, countries, allowedTspStatus, allowedTspServiceTypes); + trustProfiles.put(id, profile); - //check signerCertsLocation URL - String signerCertsLocStr = getElementValue(profileElem, CONF + "SignerCertsLocation", null); - URI signerCertsLocURI = null; - if (signerCertsLocStr != null && !"".equals(signerCertsLocStr)) - { - try - { - signerCertsLocURI = new URI(signerCertsLocStr); - if (!signerCertsLocURI.isAbsolute()) signerCertsLocURI = new URI(configRoot_.toURL() + signerCertsLocStr); - - File signerCertsDir = new File(signerCertsLocURI.getPath()); - if (!signerCertsDir.exists() || !signerCertsDir.isDirectory()) { - warn("config.27", new Object[] { "signerCertsUri", id }); - continue; - } - } - catch (URIException e) { - warn("config.14", new Object[] { "signerCertsUri", id, trustAnchorsLocStr }, e); - continue; - } - catch (MalformedURLException e) { - warn("config.15", new Object[] {id}, e); - continue; - } - } - signerCertsLocStr = (signerCertsLocURI != null) ? signerCertsLocURI.toString() : null; - - - //check if TSL support is enabled - Element eutslElem = (Element) XPathUtils.selectSingleNode(profileElem, CONF + "EUTSL"); - boolean tslEnabled = false; - if (eutslElem != null) //EUTSL element found --> TSL enabled - tslEnabled = true; - - //load TSL configuration - String countries = getElementValue(profileElem, CONF + "EUTSL" + "/" + CONF + "CountrySelection", null); - String allowedTspStatus = getElementValue(profileElem, CONF + "EUTSL" + "/" + CONF + "AllowedTSPStatus", null); - String allowedTspServiceTypes = getElementValue(profileElem, CONF + "EUTSL" + "/" + CONF + "AllowedTSPServiceTypes", null); - - - //create profile configuration - TrustProfile profile = new TrustProfile(id, trustAnchorsLocURI.toString(), signerCertsLocStr, - tslEnabled, countries, allowedTspStatus, allowedTspServiceTypes); - trustProfiles.put(id, profile); - } return trustProfiles; } - + /** * Returns the location of the certificate store. - * + * * @return the location of the certificate store. */ - public String getCertStoreLocation() - { - String certStoreLocStr = getElementValue(getConfigElem(), CERTSTORE_LOCATION_XPATH, null); + public String getCertStoreLocation() { + final String certStoreLocStr = getElementValue(getConfigElem(), CERTSTORE_LOCATION_XPATH, null); File certStoreLocFile; - - // No value specified in configuration file: Set it to a reasonable (absolute) default - if (certStoreLocStr == null) - return new File(configRoot_, "certstore").getAbsolutePath(); - + + // No value specified in configuration file: Set it to a reasonable (absolute) + // default + if (certStoreLocStr == null) { + return new File(configRoot_, "certstore").getAbsolutePath(); + } + // Make cert store location an absolute value certStoreLocFile = new File(certStoreLocStr); - if (!certStoreLocFile.isAbsolute()) - { + if (!certStoreLocFile.isAbsolute()) { certStoreLocFile = new File(configRoot_, certStoreLocStr); } - + // Check if cert store location exists, eventually try to create it - if (!certStoreLocFile.isDirectory()) - { + if (!certStoreLocFile.isDirectory()) { boolean created = false; - try - { + try { created = certStoreLocFile.mkdirs(); - } - finally - { - if (!created) - { + } finally { + if (!created) { warn("config.32", new Object[] { certStoreLocFile.getAbsolutePath() }); } } } - + return certStoreLocFile.getAbsolutePath(); } @@ -1378,428 +1304,429 @@ public class ConfigurationPartsBuilder { /** * Parse a configuration XML file. - * + * * @param inputStream The stream from which to read the XML data. * @return The DOM representation of the XML data. * @throws ParserConfigurationException XML parser not configured properly. - * @throws SAXException An error parsing the XML file. - * @throws IOException An error reading the stream. + * @throws SAXException An error parsing the XML file. + * @throws IOException An error reading the stream. */ private static Element parseXml(InputStream inputStream) - throws ParserConfigurationException, SAXException, IOException { + throws ParserConfigurationException, SAXException, IOException { return DOMUtils - .parseDocument(inputStream, true, Constants.ALL_SCHEMA_LOCATIONS, null) - .getDocumentElement(); + .parseDocument(inputStream, true, Constants.ALL_SCHEMA_LOCATIONS, null) + .getDocumentElement(); } /** * Return the value of an element located by an XPath. - * - * @param root The root element from which to evaluate the <code>xpath</code>. + * + * @param root The root element from which to evaluate the <code>xpath</code>. * @param xpath The XPath pointing to the element. - * @param def The default value, if no element can be found with the given - * <code>xpath</code>. + * @param def The default value, if no element can be found with the given + * <code>xpath</code>. * @return The element value or <code>def</code>, if the element cannot be - * found. + * found. */ private String getElementValue(Element root, String xpath, String def) { - Element elem = (Element) XPathUtils.selectSingleNode(root, xpath); + final Element elem = (Element) XPathUtils.selectSingleNode(root, xpath); return elem != null ? DOMUtils.getText(elem) : def; } /** * Return the value of an attribute located by an XPath. - * - * @param root The root element from which to evaluate the <code>xpath</code>. + * + * @param root The root element from which to evaluate the <code>xpath</code>. * @param xpath The XPath pointing to the attribute. - * @param def The default value, if no attribute can be found with the given - * <code>xpath</code>. + * @param def The default value, if no attribute can be found with the given + * <code>xpath</code>. * @return The element value or <code>def</code>, if the attribute cannot be - * found. + * found. */ private String getAttributeValue(Element root, String xpath, String def) { - Attr attr = (Attr) XPathUtils.selectSingleNode(root, xpath); + final Attr attr = (Attr) XPathUtils.selectSingleNode(root, xpath); return attr != null ? attr.getValue() : def; } /** * Log an info message. - * - * @param messageId The message ID. + * + * @param messageId The message ID. * @param parameters Additional parameters for the message. * @see at.gv.egovernment.moa.spss.server.util.MessageProvider */ private static void info(String messageId, Object[] parameters) { - MessageProvider msg = MessageProvider.getInstance(); + final MessageProvider msg = MessageProvider.getInstance(); Logger.info(new LogMsg(msg.getMessage(messageId, parameters))); } /** * Log a warning. - * + * * @param messageId The message ID. - * @param args Additional parameters for the message. + * @param args Additional parameters for the message. * @see at.gv.egovernment.moa.spss.server.util.MessageProvider */ private void warn(String messageId, Object[] args) { - MessageProvider msg = MessageProvider.getInstance(); - String txt = msg.getMessage(messageId, args); + final MessageProvider msg = MessageProvider.getInstance(); + final String txt = msg.getMessage(messageId, args); Logger.warn(new LogMsg(txt)); warnings.add(txt); } - + /** * Log a warning. - * + * * @param messageId The message ID. - * @param args Additional parameters for the message. + * @param args Additional parameters for the message. * @see at.gv.egovernment.moa.spss.server.util.MessageProvider */ private void debug(String messageId, Object[] args) { - MessageProvider msg = MessageProvider.getInstance(); - String txt = msg.getMessage(messageId, args); + final MessageProvider msg = MessageProvider.getInstance(); + final String txt = msg.getMessage(messageId, args); Logger.debug(new LogMsg(txt)); - + } - /** * Log a debug message. - * + * * @param messageId The message ID. - * @param args Additional parameters for the message. + * @param args Additional parameters for the message. * @see at.gv.egovernment.moa.spss.server.util.MessageProvider */ private void debug(String message) { Logger.debug(new LogMsg(message)); } - + /** * Log a warning. - * + * * @param messageId The message ID. - * @param args Additional parameters for the message. - * @param t An exception being the cause of the warning. + * @param args Additional parameters for the message. + * @param t An exception being the cause of the warning. * @see at.gv.egovernment.moa.spss.server.util.MessageProvider */ private void warn(String messageId, Object[] args, Throwable t) { - MessageProvider msg = MessageProvider.getInstance(); - String txt = msg.getMessage(messageId, args); + final MessageProvider msg = MessageProvider.getInstance(); + final String txt = msg.getMessage(messageId, args); - Logger.warn(new LogMsg(txt), t); + Logger.warn(new LogMsg(txt), t); warnings.add(txt); } /** * Log an error. - * + * * @param messageId The message ID. - * @param args Additional parameters for the message. + * @param args Additional parameters for the message. * @see at.gv.egovernment.moa.spss.server.util.MessageProvider */ private void error(String messageId, Object[] args) { - MessageProvider msg = MessageProvider.getInstance(); - String txt = msg.getMessage(messageId, args); + final MessageProvider msg = MessageProvider.getInstance(); + final String txt = msg.getMessage(messageId, args); Logger.error(new LogMsg(txt)); warnings.add(txt); } - + /** * Log an error. - * + * * @param messageId The message ID. - * @param args Additional parameters for the message. - * @param t An exception being the cause of the warning. + * @param args Additional parameters for the message. + * @param t An exception being the cause of the warning. * @see at.gv.egovernment.moa.spss.server.util.MessageProvider */ private void error(String messageId, Object[] args, Throwable t) { - MessageProvider msg = MessageProvider.getInstance(); - String txt = msg.getMessage(messageId, args); + final MessageProvider msg = MessageProvider.getInstance(); + final String txt = msg.getMessage(messageId, args); - Logger.error(new LogMsg(txt), t); + Logger.error(new LogMsg(txt), t); warnings.add(txt); } - + /** * Returns whether revocation information should be archived. - * + * * @return whether revocation information should be archived. */ - public boolean getEnableRevocationArchiving() - { - String enableArchiving = getElementValue(getConfigElem(), ENABLE_ARCHIVING_XPATH, null); + public boolean getEnableRevocationArchiving() { + final String enableArchiving = getElementValue(getConfigElem(), ENABLE_ARCHIVING_XPATH, null); return Boolean.valueOf(enableArchiving).booleanValue(); } /** * Returns the JDBC URL for the revocation archive database. - * - * @return the JDBC URL for the revocation archive database, or <code>null</code, if the corresponding - * parameter is not set in the configuration. + * + * @return the JDBC URL for the revocation archive database, or + * <code>null</code, if the corresponding parameter is not set in the + * configuration. */ - public String getRevocationArchiveJDBCURL() - { - String jDBCURL = getElementValue(getConfigElem(), ACHIVE_JDBC_URL_, null); + public String getRevocationArchiveJDBCURL() { + final String jDBCURL = getElementValue(getConfigElem(), ACHIVE_JDBC_URL_, null); return jDBCURL; } /** * Returns the JDBC driver class name for the revocation archive database. - * - * @return the JDBC driver class name for the revocation archive database, or <code>null</code, - * if the corresponding parameter is not set in the configuration. + * + * @return the JDBC driver class name for the revocation archive database, or + * <code>null</code, if the corresponding parameter is not set in the + * configuration. */ - public String getRevocationArchiveJDBCDriverClass() - { - String jDBCDriverClass = getElementValue(getConfigElem(), ACHIVE_JDBC_DRIVER_CLASS_, null); + public String getRevocationArchiveJDBCDriverClass() { + final String jDBCDriverClass = getElementValue(getConfigElem(), ACHIVE_JDBC_DRIVER_CLASS_, null); return jDBCDriverClass; } /** * Returns whether revocation information should be archived. */ - public boolean getEnableRevocationChecking() - { - String enableChecking = getElementValue(getConfigElem(), ENABLE_REVOCATION_CHECKING_XPATH_, null); + public boolean getEnableRevocationChecking() { + final String enableChecking = getElementValue(getConfigElem(), ENABLE_REVOCATION_CHECKING_XPATH_, null); return Boolean.valueOf(enableChecking).booleanValue(); } /** - * Returns the maximum age of a revocation information for considering it - * still as valid. - * - * @return the maximum age of a revocation information for considering it - * still as valid. + * Returns the maximum age of a revocation information for considering it still + * as valid. + * + * @return the maximum age of a revocation information for considering it still + * as valid. */ - public long getMaxRevocationAge() - { - String maxRevocationAge = getElementValue(getConfigElem(), MAX_REVOCATION_AGE_XPATH_, null); - if (maxRevocationAge == null) return 0; + public long getMaxRevocationAge() { + final String maxRevocationAge = getElementValue(getConfigElem(), MAX_REVOCATION_AGE_XPATH_, null); + if (maxRevocationAge == null) { + return 0; + } return Long.valueOf(maxRevocationAge).longValue(); } /** * Returns the service order for revocation checking. - * + * * @return the service order for revocation checking. Valid array entries are - * {@link RevocationSourceTypes#OCSP} and {@link RevocationSourceTypes#CRL}. - * An empty array will be returned if no service order is specified in the - * configuration. + * {@link RevocationSourceTypes#OCSP} and + * {@link RevocationSourceTypes#CRL}. An empty array will be returned if + * no service order is specified in the configuration. */ - public String[] getServiceOrder() - { - ArrayList list = new ArrayList(); - NodeIterator serviceIter = XPathUtils.selectNodeIterator(getConfigElem(), REVOCATION_SERVICEORDER_XPATH_); + public String[] getServiceOrder() { + final ArrayList list = new ArrayList(); + final NodeIterator serviceIter = XPathUtils.selectNodeIterator(getConfigElem(), + REVOCATION_SERVICEORDER_XPATH_); Element currentServiceNode; - while ((currentServiceNode = (Element)serviceIter.nextNode()) != null) - { + while ((currentServiceNode = (Element) serviceIter.nextNode()) != null) { list.add(getElementValue(currentServiceNode, ".", null)); } - Object[] serviceOrder = list.toArray(); - String[] returnValue = new String[serviceOrder.length]; - for (int i = 0; i < serviceOrder.length; i++) - { - if (((String)serviceOrder[i]).equalsIgnoreCase(RevocationSourceTypes.CRL)) { + final Object[] serviceOrder = list.toArray(); + final String[] returnValue = new String[serviceOrder.length]; + for (int i = 0; i < serviceOrder.length; i++) { + if (((String) serviceOrder[i]).equalsIgnoreCase(RevocationSourceTypes.CRL)) { returnValue[i] = RevocationSourceTypes.CRL; - } else if (((String)serviceOrder[i]).equalsIgnoreCase(RevocationSourceTypes.OCSP)) { + } else if (((String) serviceOrder[i]).equalsIgnoreCase(RevocationSourceTypes.OCSP)) { returnValue[i] = RevocationSourceTypes.OCSP; } - + } return returnValue; } /** - * Returns whether the certificate extension Authority Info Access should - * be used during certificate path construction. - * - * @return whether the certificate extension Authority Info Access should - * be used during certificate path construction. + * Returns whether the certificate extension Authority Info Access should be + * used during certificate path construction. + * + * @return whether the certificate extension Authority Info Access should be + * used during certificate path construction. */ - public boolean getUseAuthorityInfoAccess() - { - String useAIA = getElementValue(getConfigElem(), USE_AUTHORITY_INFO_ACCESS_XPATH_, null); + public boolean getUseAuthorityInfoAccess() { + final String useAIA = getElementValue(getConfigElem(), USE_AUTHORITY_INFO_ACCESS_XPATH_, null); return Boolean.valueOf(useAIA).booleanValue(); } /** - * Returns whether certificates found during certificate path construction + * Returns whether certificates found during certificate path construction * should be added to the certificate store. - * - * @return whether certificates found during certificate path construction + * + * @return whether certificates found during certificate path construction * should be added to the certificate store. */ - public boolean getAutoAddCertificates() - { - String autoAdd = getElementValue(getConfigElem(), AUTO_ADD_CERTIFICATES_XPATH_, null); + public boolean getAutoAddCertificates() { + final String autoAdd = getElementValue(getConfigElem(), AUTO_ADD_CERTIFICATES_XPATH_, null); return Boolean.valueOf(autoAdd).booleanValue(); } - + + public boolean getAutoEEAddCertificates() { + final String autoAdd = getElementValue(getConfigElem(), AUTO_ADD_EE_CERTIFICATES_XPATH_, null); + if (autoAdd != null) { + return Boolean.valueOf(autoAdd).booleanValue(); + } else { + return false; + } + + } + /** - * Returns whether file URIs are permitted + * Returns whether file URIs are permitted + * * @return whether file URIs are permitted */ - public boolean getPermitFileURIs() - { - String permitFileURIs = getElementValue(getConfigElem(), PERMIT_FILE_URIS_XPATH, "false"); + public boolean getPermitFileURIs() { + final String permitFileURIs = getElementValue(getConfigElem(), PERMIT_FILE_URIS_XPATH, "false"); return Boolean.valueOf(permitFileURIs).booleanValue(); } - + /** * Returns the TSL configuration from the config file + * * @return */ public TSLConfiguration getTSLConfiguration() { - TSLConfigurationImpl tslconfiguration = new TSLConfigurationImpl(); - - - String euTSLUrl = getElementValue(getConfigElem(), TSL_CONFIGURATION_XPATH + CONF + "EUTSLUrl", null); - if (StringUtils.isEmpty(euTSLUrl)) { - euTSLUrl = TSLConfiguration.DEFAULT_EU_TSL_URL; - debug("config.39", new Object[] { "EUTSL", euTSLUrl }); - } - - String updateSchedulePeriod = getElementValue(getConfigElem(), TSL_CONFIGURATION_XPATH + CONF + "UpdateSchedule/" + CONF + "Period" , null); - - if (StringUtils.isEmpty(updateSchedulePeriod)) { - updateSchedulePeriod = TSLConfiguration.DEFAULT_UPDATE_SCHEDULE_PERIOD; - debug("config.39", new Object[] { "UpdateSchedule/Period", updateSchedulePeriod }); - } - - String updateScheduleStartTime = getElementValue(getConfigElem(), TSL_CONFIGURATION_XPATH + CONF + "UpdateSchedule/" + CONF + "StartTime", null); - if (StringUtils.isEmpty(updateScheduleStartTime)) { - updateScheduleStartTime = TSLConfiguration.DEFAULT_UPDATE_SCHEDULE_STARTTIME; - debug("config.39", new Object[] { "UpdateSchedule/StartTime", updateScheduleStartTime }); - - } - - String workingDirectoryStr = getElementValue(getConfigElem(), TSL_CONFIGURATION_XPATH + CONF + "WorkingDirectory", null); - if (StringUtils.isEmpty(workingDirectoryStr)) { - workingDirectoryStr = TSLConfiguration.DEFAULT_WORKING_DIR; - debug("config.39", new Object[] { "WorkingDirectory", workingDirectoryStr }); - } - - String qcQualifier = getElementValue(getConfigElem(), TSL_CONFIGURATION_XPATH + CONF + "Evaluation/" + CONF + "QCQualifier", null); - if (MiscUtil.isEmpty(qcQualifier)) - info("config.39", new Object[] { "Evaluation/QCQualifier", " EMPTY" }); - - else { - String[] qcQualList = qcQualifier.split(","); - for (String el : qcQualList) { - try { - tslconfiguration.addQualifierForQC(new java.net.URI(el.trim())); - //info("config.39", new Object[] { "Evaluation/QCQualifier", el.trim() }); - - } catch (URISyntaxException e) { - warn("config.39", new Object[] { "Evaluation/QCQualifier", el.trim() }, e); - - } - - } - } - - String sscdQualifier = getElementValue(getConfigElem(), TSL_CONFIGURATION_XPATH + CONF + "Evaluation/" + CONF + "SSCDQualifier", null); - if (MiscUtil.isEmpty(qcQualifier)) - info("config.39", new Object[] { "Evaluation/SSCDQualifier", " EMPTY" }); - - else { - String[] sscdQualList = sscdQualifier.split(","); - for (String el : sscdQualList) { - try { - tslconfiguration.addQualifierForSSCD(new java.net.URI(el.trim())); - //info("config.39", new Object[] { "Evaluation/SSCDQualifier", el.trim() }); - - } catch (URISyntaxException e) { - warn("config.39", new Object[] { "Evaluation/SSCDQualifier", el.trim() }, e); - - } - - } - } - - // convert update schedule starting time to Date object - Calendar Cal = DatatypeConverter.parseDateTime(updateScheduleStartTime); - Date updateScheduleStartTimeDate = Cal.getTime(); - - // convert working directory - URI workingDirectoryURI = null; - try - { - workingDirectoryURI = new URI(workingDirectoryStr); - if (!workingDirectoryURI.isAbsolute()) { // make it absolute to the config file - workingDirectoryURI = new URI(configRoot_.toURL() + workingDirectoryStr); + final TSLConfigurationImpl tslconfiguration = new TSLConfigurationImpl(); + + String euTSLUrl = getElementValue(getConfigElem(), TSL_CONFIGURATION_XPATH + CONF + "EUTSLUrl", null); + if (StringUtils.isEmpty(euTSLUrl)) { + euTSLUrl = TSLConfiguration.DEFAULT_EU_TSL_URL; + debug("config.39", new Object[] { "EUTSL", euTSLUrl }); + } + + String updateSchedulePeriod = getElementValue(getConfigElem(), TSL_CONFIGURATION_XPATH + CONF + + "UpdateSchedule/" + CONF + "Period", null); + + if (StringUtils.isEmpty(updateSchedulePeriod)) { + updateSchedulePeriod = TSLConfiguration.DEFAULT_UPDATE_SCHEDULE_PERIOD; + debug("config.39", new Object[] { "UpdateSchedule/Period", updateSchedulePeriod }); + } + + String updateScheduleStartTime = getElementValue(getConfigElem(), TSL_CONFIGURATION_XPATH + CONF + + "UpdateSchedule/" + CONF + "StartTime", null); + if (StringUtils.isEmpty(updateScheduleStartTime)) { + updateScheduleStartTime = TSLConfiguration.DEFAULT_UPDATE_SCHEDULE_STARTTIME; + debug("config.39", new Object[] { "UpdateSchedule/StartTime", updateScheduleStartTime }); + + } + + String workingDirectoryStr = getElementValue(getConfigElem(), TSL_CONFIGURATION_XPATH + CONF + + "WorkingDirectory", null); + if (StringUtils.isEmpty(workingDirectoryStr)) { + workingDirectoryStr = TSLConfiguration.DEFAULT_WORKING_DIR; + debug("config.39", new Object[] { "WorkingDirectory", workingDirectoryStr }); + } + + final String qcQualifier = getElementValue(getConfigElem(), TSL_CONFIGURATION_XPATH + CONF + "Evaluation/" + + CONF + "QCQualifier", null); + if (MiscUtil.isEmpty(qcQualifier)) { + info("config.39", new Object[] { "Evaluation/QCQualifier", " EMPTY" }); + } else { + final String[] qcQualList = qcQualifier.split(","); + for (final String el : qcQualList) { + try { + tslconfiguration.addQualifierForQC(new java.net.URI(el.trim())); + // info("config.39", new Object[] { "Evaluation/QCQualifier", el.trim() }); + + } catch (final URISyntaxException e) { + warn("config.39", new Object[] { "Evaluation/QCQualifier", el.trim() }, e); + } + } - catch (URIException e) { - warn("config.37", new Object[] { workingDirectoryStr }, e); - workingDirectoryStr = TSLConfiguration.DEFAULT_WORKING_DIR; - warn("config.39", new Object[] { "WorkingDirectory", workingDirectoryStr }); - } - catch (MalformedURLException e) - { - warn("config.37", new Object[] { workingDirectoryStr }, e); - workingDirectoryStr = TSLConfiguration.DEFAULT_WORKING_DIR; - warn("config.39", new Object[] { "WorkingDirectory", workingDirectoryStr }); - } + } + + final String sscdQualifier = getElementValue(getConfigElem(), TSL_CONFIGURATION_XPATH + CONF + + "Evaluation/" + CONF + "SSCDQualifier", null); + if (MiscUtil.isEmpty(qcQualifier)) { + info("config.39", new Object[] { "Evaluation/SSCDQualifier", " EMPTY" }); + } else { + final String[] sscdQualList = sscdQualifier.split(","); + for (final String el : sscdQualList) { + try { + tslconfiguration.addQualifierForSSCD(new java.net.URI(el.trim())); + // info("config.39", new Object[] { "Evaluation/SSCDQualifier", el.trim() }); + + } catch (final URISyntaxException e) { + warn("config.39", new Object[] { "Evaluation/SSCDQualifier", el.trim() }, e); + + } - File tslWorkingDir = new File(workingDirectoryURI.getPath()); - if (!tslWorkingDir.exists()) { - tslWorkingDir.mkdir(); } - if (!tslWorkingDir.isDirectory()) { - error("config.38", new Object[] { workingDirectoryStr }); - return null; + } + + // convert update schedule starting time to Date object + final Calendar Cal = DatatypeConverter.parseDateTime(updateScheduleStartTime); + final Date updateScheduleStartTimeDate = Cal.getTime(); + + // convert working directory + URI workingDirectoryURI = null; + try { + workingDirectoryURI = new URI(workingDirectoryStr); + if (!workingDirectoryURI.isAbsolute()) { // make it absolute to the config file + workingDirectoryURI = new URI(configRoot_.toURL() + workingDirectoryStr); } - - - debug("TSL Konfiguration - EUTSLUrl: " + euTSLUrl); - debug("TSL Konfiguration - UpdateSchedule/Period: " + updateSchedulePeriod); - debug("TSL Konfiguration - UpdateSchedule/StartTime: " + updateScheduleStartTime); - debug("TSL Konfiguration - TSLWorkingDirectory: " + tslWorkingDir.getAbsolutePath()); - - - // set TSL configuration - tslconfiguration.setEuTSLUrl(euTSLUrl); - tslconfiguration.setUpdateSchedulePeriod(Long.valueOf(updateSchedulePeriod).longValue()); - tslconfiguration.setUpdateScheduleStartTime(updateScheduleStartTimeDate); - tslconfiguration.setWorkingDirectory(tslWorkingDir.getAbsolutePath()); - tslconfiguration.setWorkingDirectoryURI(workingDirectoryURI); - - return tslconfiguration; + } catch (final URIException e) { + warn("config.37", new Object[] { workingDirectoryStr }, e); + workingDirectoryStr = TSLConfiguration.DEFAULT_WORKING_DIR; + warn("config.39", new Object[] { "WorkingDirectory", workingDirectoryStr }); + } catch (final MalformedURLException e) { + warn("config.37", new Object[] { workingDirectoryStr }, e); + workingDirectoryStr = TSLConfiguration.DEFAULT_WORKING_DIR; + warn("config.39", new Object[] { "WorkingDirectory", workingDirectoryStr }); + } + + final File tslWorkingDir = new File(workingDirectoryURI.getPath()); + if (!tslWorkingDir.exists()) { + tslWorkingDir.mkdir(); + } + if (!tslWorkingDir.isDirectory()) { + error("config.38", new Object[] { workingDirectoryStr }); + return null; + } + + debug("TSL Konfiguration - EUTSLUrl: " + euTSLUrl); + debug("TSL Konfiguration - UpdateSchedule/Period: " + updateSchedulePeriod); + debug("TSL Konfiguration - UpdateSchedule/StartTime: " + updateScheduleStartTime); + debug("TSL Konfiguration - TSLWorkingDirectory: " + tslWorkingDir.getAbsolutePath()); + + // set TSL configuration + tslconfiguration.setEuTSLUrl(euTSLUrl); + tslconfiguration.setUpdateSchedulePeriod(Long.valueOf(updateSchedulePeriod).longValue()); + tslconfiguration.setUpdateScheduleStartTime(updateScheduleStartTimeDate); + tslconfiguration.setWorkingDirectory(tslWorkingDir.getAbsolutePath()); + tslconfiguration.setWorkingDirectoryURI(workingDirectoryURI); + + return tslconfiguration; } - + /** * Returns a map of CRL retention intervals + * * @return */ public Map getCrlRetentionIntervals() { - Map map = new HashMap(); - NodeIterator modIter = XPathUtils.selectNodeIterator( - getConfigElem(), - CRL_RETENTION_INTERVALS_CA_XPATH); - - Element modElem; - while ((modElem = (Element) modIter.nextNode()) != null) { - String x509IssuerName = getElementValue(modElem, CONF + "X509IssuerName", null); - String i = getElementValue(modElem, CONF + "Interval", null); - Integer interval = new Integer(i); - try { - RFC2253NameParser parser = new RFC2253NameParser(x509IssuerName); - Name name = parser.parse(); - map.put(name.getRFC2253String(), interval); - } catch (RFC2253NameParserException e) { - map.put(x509IssuerName, interval); - } + final Map map = new HashMap(); + final NodeIterator modIter = XPathUtils.selectNodeIterator( + getConfigElem(), + CRL_RETENTION_INTERVALS_CA_XPATH); - } + Element modElem; + while ((modElem = (Element) modIter.nextNode()) != null) { + final String x509IssuerName = getElementValue(modElem, CONF + "X509IssuerName", null); + final String i = getElementValue(modElem, CONF + "Interval", null); + final Integer interval = new Integer(i); + try { + final RFC2253NameParser parser = new RFC2253NameParser(x509IssuerName); + final Name name = parser.parse(); + map.put(name.getRFC2253String(), interval); + } catch (final RFC2253NameParserException e) { + map.put(x509IssuerName, interval); + } - return map; + } + + return map; } - - + } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/config/ConfigurationProvider.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/config/ConfigurationProvider.java index 7ae83cb..bffa489 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/config/ConfigurationProvider.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/config/ConfigurationProvider.java @@ -21,14 +21,8 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.server.config; -import iaik.asn1.structures.Name; -import iaik.pki.revocation.RevocationSourceTypes; -import iaik.utils.RFC2253NameParser; -import iaik.utils.RFC2253NameParserException; - import java.io.File; import java.io.FileInputStream; import java.io.IOException; @@ -41,7 +35,6 @@ import java.util.Collections; import java.util.Iterator; import java.util.List; import java.util.Map; -import java.util.Map.Entry; import java.util.Set; import org.w3c.dom.Element; @@ -52,39 +45,45 @@ import at.gv.egovernment.moaspss.logging.LogMsg; import at.gv.egovernment.moaspss.logging.Logger; import at.gv.egovernment.moaspss.util.DOMUtils; import at.gv.egovernment.moaspss.util.MiscUtil; +import iaik.asn1.structures.Name; +import iaik.pki.revocation.RevocationSourceTypes; +import iaik.utils.RFC2253NameParser; +import iaik.utils.RFC2253NameParserException; /** * A class providing access to the MOA configuration data. - * - * <p>Configuration data is read from an XML file, whose location is given by - * the <code>moa.spss.server.configuration</code> system property.</p> - * <p>This class implements the Singleton pattern. The <code>reload()</code> - * method can be used to update the configuration data. Therefore, it is not - * guaranteed that consecutive calls to <code>getInstance()</code> will return - * the same <code>ConfigurationProvider</code> all the time. During the - * processing of a web service request, the current - * <code>TransactionContext</code> should be used to obtain the - * <code>ConfigurationProvider</code> local to that request.</p> - * + * + * <p> + * Configuration data is read from an XML file, whose location is given by the + * <code>moa.spss.server.configuration</code> system property. + * </p> + * <p> + * This class implements the Singleton pattern. The <code>reload()</code> method + * can be used to update the configuration data. Therefore, it is not guaranteed + * that consecutive calls to <code>getInstance()</code> will return the same + * <code>ConfigurationProvider</code> all the time. During the processing of a + * web service request, the current <code>TransactionContext</code> should be + * used to obtain the <code>ConfigurationProvider</code> local to that request. + * </p> + * * @author Patrick Peck * @author Sven Aigner * @version $Id$ */ -public class ConfigurationProvider -{ - /** - * The name of the system property which contains the file name of the +public class ConfigurationProvider { + /** + * The name of the system property which contains the file name of the * configuration file. */ public static final String CONFIG_PROPERTY_NAME = - "moa.spss.server.configuration"; + "moa.spss.server.configuration"; - /** + /** * A fake <code>IssuerAndSerial</code> object for storing KeyGroup information * accessible by all clients. */ private static final IssuerAndSerial ANONYMOUS_ISSUER_SERIAL = - new IssuerAndSerial(new Name(), new BigInteger("0")); + new IssuerAndSerial(new Name(), new BigInteger("0")); /** Singleton instance. <code>null</code>, if none has been created. */ private static ConfigurationProvider instance; @@ -101,23 +100,23 @@ public class ConfigurationProvider /** The default canonicalization algorithm name */ private String canonicalizationAlgorithmName; - + /** The XAdES version used for signature creation */ private String xadesVersion; - + /** PDF AS Configuration */ private String pdfAsConfiguration; - + private int connectionTimeout; private int readTimeout; - - /** - * A <code>List</code> of <code>HardwareCryptoModule</code> objects for + + /** + * A <code>List</code> of <code>HardwareCryptoModule</code> objects for * configuring hardware modules. */ private List hardwareCryptoModules; - /** + /** * A <code>List</code> of <code>HardwareKey</code> objects containing the * configuration data for hardware keys. */ @@ -144,29 +143,29 @@ public class ConfigurationProvider /** The default chaining mode. */ private String defaultChainingMode; - /** + /** * A <code>Map</code> which contains the <code>IssuerAndSerial</code> to * chaining mode (a <code>String</code>) mapping. */ private Map chainingModes; /** - * A <code>Map</code> which contains the CAIssuerDN (a <code>String</code>) - * to distribution points (a <code>Set</code> of - * <code>DistributionPoint</code>s) mapping. + * A <code>Map</code> which contains the CAIssuerDN (a <code>String</code>) to + * distribution points (a <code>Set</code> of <code>DistributionPoint</code>s) + * mapping. */ private Map distributionPoints; - /** - * The CRL archive duration. + /** + * The CRL archive duration. */ private int cRLArchiveDuration; - + /** * Indicates whether revocation information should be archived. */ private boolean enableRevocationArchiving_; - + /** * The location of the certificate store. */ @@ -180,29 +179,29 @@ public class ConfigurationProvider private Map createSignatureEnvironmentProfiles; /** - * A <code>Map</code> which contains a mapping from - * CreateTransformsInfoProfile Ids (<code>String</code>) to - * CreateTransformsInfoProfile elements (an <code>Element</code>). + * A <code>Map</code> which contains a mapping from CreateTransformsInfoProfile + * Ids (<code>String</code>) to CreateTransformsInfoProfile elements (an + * <code>Element</code>). */ private Map createTransformsInfoProfiles; /** - * A <code>Map</code> which contains a mapping from - * VerifyTransformsInfoProfile Ids (<code>String</code>) to - * VerifyTransformsInfoProfile elements (an <code>Element</code>). + * A <code>Map</code> which contains a mapping from VerifyTransformsInfoProfile + * Ids (<code>String</code>) to VerifyTransformsInfoProfile elements (an + * <code>Element</code>). */ private Map verifyTransformsInfoProfiles; /** - * A <code>Map</code> which contains a mapping from - * SupplementProfile Ids (<code>String</code>) to SupplementProfile elements - * (an <code>Element</code>). + * A <code>Map</code> which contains a mapping from SupplementProfile Ids + * (<code>String</code>) to SupplementProfile elements (an + * <code>Element</code>). */ private Map supplementProfiles; /** - * A <code>Map</code> which contains a TrustProfile Id (a <code>String</code> - * to trust profile (a <code>TrustProfile</code>) mapping. + * A <code>Map</code> which contains a TrustProfile Id (a <code>String</code> to + * trust profile (a <code>TrustProfile</code>) mapping. */ private Map trustProfiles; @@ -222,7 +221,8 @@ public class ConfigurationProvider private boolean enableRevocationChecking_; /** - * The maximum age of a revocation information for considering it still as valid. + * The maximum age of a revocation information for considering it still as + * valid. */ private long maxRevocationAge_; @@ -232,57 +232,58 @@ public class ConfigurationProvider private String[] serviceOrder_; private boolean adesFormResults; - + /** - * Indicates whether certificates found during certificate path construction + * Indicates whether certificates found during certificate path construction * should be added to the certificate store. */ private boolean autoAddCertificates_; + private boolean autoAddEECertificates_; + /** - * Indicates whether the certificate extension Authority Info Access should - * be used during certificate path construction. + * Indicates whether the certificate extension Authority Info Access should be + * used during certificate path construction. */ private boolean useAuthorityInfoAccess_; /** - * Indicates whether file URIs are allowed or not + * Indicates whether file URIs are allowed or not */ private boolean permitFileURIs; - + /** * Indicates the CRL retention intervals */ private Map crlRetentionIntervals; - + /** * Indicates wether external URIs are allowed or not */ private boolean allowExternalUris_; - + /** * A <code>List</code> of black listed URIs (host and port) */ private List blackListedUris_; - + /** * A <code>List</code> of white listed URIs (host and port) */ private List whiteListedUris_; - + /** * A <code>TSLConfiguration</code> that represents the global TSL configuration */ private TSLConfiguration tslconfiguration_; - - + /** * Return the single instance of configuration data. - * + * * @return MOAConfigurationProvider The current configuration data. * @throws ConfigurationException Failure to load the configuration data. */ public static synchronized ConfigurationProvider getInstance() - throws ConfigurationException { + throws ConfigurationException { if (instance == null) { reload(); @@ -292,21 +293,21 @@ public class ConfigurationProvider /** * Reload the configuration data and set it if successful. - * + * * @return MOAConfigurationProvider The loaded configuration data. * @throws ConfigurationException Failure to load the configuration data. */ public static synchronized ConfigurationProvider reload() - throws ConfigurationException { + throws ConfigurationException { String fileName = System.getProperty(CONFIG_PROPERTY_NAME); if (fileName == null) { // find out where we are running and use the configuration provided // under WEB-INF/conf/moa-spss/MOA-SPSSConfiguration - URL url = ConfigurationProvider.class.getResource("/"); + final URL url = ConfigurationProvider.class.getResource("/"); fileName = - new File(url.getPath()).getParent() - + "/conf/moa-spss/MOA-SPSSConfiguration.xml"; + new File(url.getPath()).getParent() + + "/conf/moa-spss/MOA-SPSSConfiguration.xml"; info("config.05", new Object[] { CONFIG_PROPERTY_NAME }); } @@ -316,7 +317,7 @@ public class ConfigurationProvider /** * Constructor for ConfigurationProvider. - * + * * @param fileName The name of the configuration file. * @throws ConfigurationException An error occurred loading the configuration. */ @@ -325,12 +326,11 @@ public class ConfigurationProvider } /** - * Load the configuration data from XML file with the given name and build - * the internal data structures representing the MOA configuration. - * + * Load the configuration data from XML file with the given name and build the + * internal data structures representing the MOA configuration. + * * @param fileName The name of the XML file to load. - * @throws ConfigurationException The MOA configuration could not be - * read/built. + * @throws ConfigurationException The MOA configuration could not be read/built. */ private void load(String fileName) throws ConfigurationException { FileInputStream stream = null; @@ -339,16 +339,15 @@ public class ConfigurationProvider Element configElem; ConfigurationPartsBuilder builder; List allKeyModules; - // load the main config file try { configFile = new File(fileName); configRoot = new File(configFile.getParent()); - info("config.21", new Object[] { configFile.getAbsoluteFile()}); + info("config.21", new Object[] { configFile.getAbsoluteFile() }); stream = new FileInputStream(fileName); configElem = DOMUtils.parseXmlValidating(new FileInputStream(fileName)); - } catch (Throwable t) { + } catch (final Throwable t) { throw new ConfigurationException("config.10", null, t); } @@ -356,29 +355,27 @@ public class ConfigurationProvider try { builder = new ConfigurationPartsBuilder(configElem, configRoot); - //build TSL configuration + // build TSL configuration tslconfiguration_ = builder.getTSLConfiguration(); - - //build TrustProfile configuration - trustProfiles = builder.buildTrustProfiles(); - - //check TSL configuration + + // build TrustProfile configuration + trustProfiles = builder.buildTrustProfiles(); + + // check TSL configuration checkTSLConfiguration(); - - + digestMethodAlgorithmName = builder.getDigestMethodAlgorithmName(); canonicalizationAlgorithmName = - builder.getCanonicalizationAlgorithmName(); + builder.getCanonicalizationAlgorithmName(); hardwareCryptoModules = builder.buildHardwareCryptoModules(); hardwareKeyModules = - builder.buildHardwareKeyModules(Collections.EMPTY_LIST); + builder.buildHardwareKeyModules(Collections.EMPTY_LIST); softwareKeyModules = - builder.buildSoftwareKeyModules(hardwareKeyModules); + builder.buildSoftwareKeyModules(hardwareKeyModules); allKeyModules = new ArrayList(hardwareKeyModules); allKeyModules.addAll(softwareKeyModules); keyGroups = builder.buildKeyGroups(allKeyModules); - keyGroupMappings = - builder.buildKeyGroupMappings(keyGroups, ANONYMOUS_ISSUER_SERIAL); + builder.buildKeyGroupMappings(keyGroups, ANONYMOUS_ISSUER_SERIAL); this.connectionTimeout = builder.getConnectionTimeout(); Logger.debug("Set 'Connection-Timeout' to " + String.valueOf(this.connectionTimeout) + "[ms]"); @@ -393,9 +390,10 @@ public class ConfigurationProvider chainingModes = builder.buildChainingModes(); useAuthorityInfoAccess_ = builder.getUseAuthorityInfoAccess(); autoAddCertificates_ = builder.getAutoAddCertificates(); - //trustProfiles = builder.buildTrustProfiles(tslconfiguration_.getWorkingDirectory()); - - + autoAddEECertificates_ = builder.getAutoEEAddCertificates(); + // trustProfiles = + // builder.buildTrustProfiles(tslconfiguration_.getWorkingDirectory()); + distributionPoints = builder.buildDistributionPoints(); enableRevocationChecking_ = builder.getEnableRevocationChecking(); maxRevocationAge_ = builder.getMaxRevocationAge(); @@ -404,12 +402,10 @@ public class ConfigurationProvider cRLArchiveDuration = builder.getRevocationArchiveDuration(); revocationArchiveJDBCURL_ = builder.getRevocationArchiveJDBCURL(); revocationArchiveJDBCDriverClass_ = builder.getRevocationArchiveJDBCDriverClass(); - - - //TODO!!!! + + // TODO!!!! certStoreLocation_ = builder.getCertStoreLocation(); - - + createTransformsInfoProfiles = builder.buildCreateTransformsInfoProfiles(); createSignatureEnvironmentProfiles = builder.buildCreateSignatureEnvironmentProfiles(); verifyTransformsInfoProfiles = builder.buildVerifyTransformsInfoProfiles(); @@ -418,41 +414,37 @@ public class ConfigurationProvider permitFileURIs = builder.getPermitFileURIs(); crlRetentionIntervals = builder.getCrlRetentionIntervals(); - allowExternalUris_= builder.allowExternalUris(); - - if (allowExternalUris_) { - blackListedUris_ = builder.buildPermitExternalUris(); - whiteListedUris_ = null; - } - else { - info("config.35", null); - blackListedUris_ = null; - whiteListedUris_ = builder.buildForbidExternalUris(); + allowExternalUris_ = builder.allowExternalUris(); + + if (allowExternalUris_) { + blackListedUris_ = builder.buildPermitExternalUris(); + whiteListedUris_ = null; + } else { + info("config.35", null); + blackListedUris_ = null; + whiteListedUris_ = builder.buildForbidExternalUris(); } - - - + // Set set = crlRetentionIntervals.entrySet(); // Iterator i = set.iterator(); // while(i.hasNext()){ // Map.Entry me = (Map.Entry)i.next(); // System.out.println("Key: " + me.getKey() + " - Value: " + me.getValue() ); // } - - - } catch (Throwable t) { + + } catch (final Throwable t) { throw new ConfigurationException("config.11", null, t); } finally { try { if (stream != null) { stream.close(); } - } catch (IOException e) { + } catch (final IOException e) { // don't complain about this } } } - + // private boolean checkTSLenableTrustprofilesExist()throws ConfigurationException { // boolean bTSLEnabledTPExist = false; // Iterator it = trustProfiles.entrySet().iterator(); @@ -462,78 +454,75 @@ public class ConfigurationProvider // if (tp.isTSLEnabled()) // bTSLEnabledTPExist = bTSLEnabledTPExist || true; // } -// +// // return bTSLEnabledTPExist; -// +// // } - - private void checkTSLConfiguration() throws ConfigurationException { - boolean bTSLEnabledTPExist = false; - Iterator it = trustProfiles.entrySet().iterator(); - while (it.hasNext()) { - Map.Entry pairs = (Map.Entry)it.next(); - TrustProfile tp = (TrustProfile) pairs.getValue(); - if (tp.isTSLEnabled()) - bTSLEnabledTPExist = bTSLEnabledTPExist || true; - } - - if (!bTSLEnabledTPExist) { - // if no trustprofile has TSL support enabled, delete TSL configuration - tslconfiguration_ = null; - return; - } - - if (bTSLEnabledTPExist && (tslconfiguration_ == null)) { - error("config.40", null); - throw new ConfigurationException("config.40", null); - } - - File workingDir = new File(tslconfiguration_.getWorkingDirectory()); - File eu_trust = new File(workingDir.getAbsolutePath() + "/trust/eu"); - if (!eu_trust.exists()) { - error("config.51", new Object[] {"Verzeichnis \"trust/eu\" existiert nicht"}); - throw new ConfigurationException("config.51", new Object[] {"Verzeichnis \"trust/eu\" existiert nicht"}); - } - else { - File[] eutrustFiles = eu_trust.listFiles(); - if (eutrustFiles == null) { - error("config.51", new Object[] {"Verzeichnis \"trust/eu\" ist leer"}); - throw new ConfigurationException("config.51", new Object[] {"Verzeichnis \"trust/eu\" ist leer"}); - } - else { - if (eutrustFiles.length == 0) { - error("config.51", new Object[] {"Verzeichnis \"trust/eu\" ist leer"}); - throw new ConfigurationException("config.51", new Object[] {"Verzeichnis \"trust/eu\" ist leer"}); - } - } - - } - - File hashcache = new File(tslconfiguration_.getWorkingDirectory(), "hashcache"); - if (!hashcache.exists()) { - hashcache.mkdir(); + + private void checkTSLConfiguration() throws ConfigurationException { + boolean bTSLEnabledTPExist = false; + final Iterator it = trustProfiles.entrySet().iterator(); + while (it.hasNext()) { + final Map.Entry pairs = (Map.Entry) it.next(); + final TrustProfile tp = (TrustProfile) pairs.getValue(); + if (tp.isTSLEnabled()) { + bTSLEnabledTPExist = bTSLEnabledTPExist || true; } - if (!hashcache.isDirectory()) { - error("config.38", new Object[] { hashcache.getAbsolutePath() }); - return; + } + + if (!bTSLEnabledTPExist) { + // if no trustprofile has TSL support enabled, delete TSL configuration + tslconfiguration_ = null; + return; + } + + if (bTSLEnabledTPExist && tslconfiguration_ == null) { + error("config.40", null); + throw new ConfigurationException("config.40", null); + } + + final File workingDir = new File(tslconfiguration_.getWorkingDirectory()); + final File eu_trust = new File(workingDir.getAbsolutePath() + "/trust/eu"); + if (!eu_trust.exists()) { + error("config.51", new Object[] { "Verzeichnis \"trust/eu\" existiert nicht" }); + throw new ConfigurationException("config.51", new Object[] { + "Verzeichnis \"trust/eu\" existiert nicht" }); + } else { + final File[] eutrustFiles = eu_trust.listFiles(); + if (eutrustFiles == null) { + error("config.51", new Object[] { "Verzeichnis \"trust/eu\" ist leer" }); + throw new ConfigurationException("config.51", new Object[] { "Verzeichnis \"trust/eu\" ist leer" }); + } else { + if (eutrustFiles.length == 0) { + error("config.51", new Object[] { "Verzeichnis \"trust/eu\" ist leer" }); + throw new ConfigurationException("config.51", new Object[] { "Verzeichnis \"trust/eu\" ist leer" }); + } } + } + + final File hashcache = new File(tslconfiguration_.getWorkingDirectory(), "hashcache"); + if (!hashcache.exists()) { + hashcache.mkdir(); + } + if (!hashcache.isDirectory()) { + error("config.38", new Object[] { hashcache.getAbsolutePath() }); + return; + } + // System.setProperty("iaik.xml.crypto.tsl.BinaryHashCache.DIR", hashcache.getAbsolutePath()); // String hashcachedir = System.getProperty("iaik.xml.crypto.tsl.BinaryHashCache.DIR"); // System.out.println("Hashcache: " + hashcachedir); + Logger.debug("TSL Konfiguration - Hashcache: " + hashcache.getAbsolutePath()); - Logger.debug("TSL Konfiguration - Hashcache: " + hashcache.getAbsolutePath()); - - } - /** * Returns the warnings encountered during building the configuration. - * - * @return A <code>List</code> of <code>String</code>s, containing the - * warning messages. + * + * @return A <code>List</code> of <code>String</code>s, containing the warning + * messages. */ public List getWarnings() { return warnings; @@ -541,57 +530,58 @@ public class ConfigurationProvider /** * Return the name of the digest algorithm used during signature creation. - * - * @return The digest method algorithm name, or an empty <code>String</code>, - * if none has been configured. + * + * @return The digest method algorithm name, or an empty <code>String</code>, if + * none has been configured. */ public String getDigestMethodAlgorithmName() { return digestMethodAlgorithmName; } - + /** * Return the XAdES version used for signature creation. - * - * @return The XAdES version used for signature creation, or an empty <code>String</code>, - * if none has been configured. + * + * @return The XAdES version used for signature creation, or an empty + * <code>String</code>, if none has been configured. */ public String getXAdESVersion() { return xadesVersion; } - + public String getPDFASConfiguration() { - return pdfAsConfiguration; + return pdfAsConfiguration; } - + public int getConnectionTimeout() { - return this.connectionTimeout; + return this.connectionTimeout; } - + public int getReadTimeout() { - return this.readTimeout; + return this.readTimeout; } - + public boolean getAdesFormResults() { - return this.adesFormResults; + return this.adesFormResults; } - + public boolean getAllowExternalUris() { - return this.allowExternalUris_; + return this.allowExternalUris_; } - + public List getBlackListedUris() { - return this.blackListedUris_; + return this.blackListedUris_; } + public List getWhiteListedUris() { - return this.whiteListedUris_; + return this.whiteListedUris_; } - + /** * Return the name of the canonicalization algorithm used during signature * creation. - * - * @return The canonicalization algorithm name, or an empty - * <code>String</code> if none has been configured. + * + * @return The canonicalization algorithm name, or an empty <code>String</code> + * if none has been configured. */ public String getCanonicalizationAlgorithmName() { return canonicalizationAlgorithmName; @@ -599,9 +589,9 @@ public class ConfigurationProvider /** * Return the configured hardware crypto modules. - * + * * @return A <code>List</code> of <code>HardwareCryptoModule</code> objects - * containing the hardware crypto module configurations. + * containing the hardware crypto module configurations. */ public List getHardwareCryptoModules() { return hardwareCryptoModules; @@ -609,9 +599,9 @@ public class ConfigurationProvider /** * Return the hardware key modules configuration. - * + * * @return A <code>List</code> of <code>HardwareKeyModule</code> objects - * containing the configuration of the hardware key modules. + * containing the configuration of the hardware key modules. */ public List getHardwareKeyModules() { return hardwareKeyModules; @@ -619,9 +609,9 @@ public class ConfigurationProvider /** * Return the software key module configuration. - * + * * @return A <code>List</code> of <code>SoftwareKeyModule</code> objects - * containing the configuration of the software key modules. + * containing the configuration of the software key modules. */ public List getSoftwareKeyModules() { return softwareKeyModules; @@ -629,38 +619,38 @@ public class ConfigurationProvider /** * Return the key group mapping. - * - * @return A mapping from key group ID (a <code>String</code>) to - * <code>KeyGroup</code> mapping. + * + * @return A mapping from key group ID (a <code>String</code>) to + * <code>KeyGroup</code> mapping. */ public Map getKeyGroups() { return keyGroups; } - + public KeyGroup getKeyGroup(String keyGroupId) { - if (MiscUtil.isNotEmpty(keyGroupId)) - return (KeyGroup) keyGroups.get(keyGroupId.trim().toLowerCase()); - - else - return null; + if (MiscUtil.isNotEmpty(keyGroupId)) { + return (KeyGroup) keyGroups.get(keyGroupId.trim().toLowerCase()); + } else { + return null; + } } /** * Return the set of <code>KeyGroupEntry</code>s of a given key group, which a * client (identified by an issuer/serial pair) may access. - * - * @param issuer The issuer of the client certificate. - * @param serial The serial number of the client certificate. + * + * @param issuer The issuer of the client certificate. + * @param serial The serial number of the client certificate. * @param keyGroupId The ID of the key group. * @return A <code>Set</code> of all the <code>KeyGroupEntry</code>s in the - * given key group, if the user may access them. Returns <code>null</code>, if - * the user may not access the given key group or if the key group does not - * exist. + * given key group, if the user may access them. Returns + * <code>null</code>, if the user may not access the given key group or + * if the key group does not exist. */ public Set getKeyGroupEntries( - Principal issuer, - BigInteger serial, - String keyGroupId) { + Principal issuer, + BigInteger serial, + String keyGroupId) { IssuerAndSerial issuerAndSerial; Map mapping; @@ -673,118 +663,115 @@ public class ConfigurationProvider // System.out.println("Issuer: " + issuer); // System.out.println("serial: " + serial); -// +// // Iterator entries = keyGroupMappings.entrySet().iterator(); // while (entries.hasNext()) { // Entry thisEntry = (Entry) entries.next(); // System.out.println("Entry: " + thisEntry.getKey()); // System.out.println("Value: " + thisEntry.getValue()); // } - + mapping = (Map) keyGroupMappings.get(issuerAndSerial); if (mapping != null) { - KeyGroup keyGroup = (KeyGroup) mapping.get(keyGroupId); + final KeyGroup keyGroup = (KeyGroup) mapping.get(keyGroupId); if (keyGroup != null) { return keyGroup.getKeyGroupEntries(); } } - + // If no key group is available for a client identified by a certificate, // try to find a key group in the anonymous key group mapping - if (issuer != null || serial != null) - { + if (issuer != null || serial != null) { mapping = (Map) keyGroupMappings.get(ANONYMOUS_ISSUER_SERIAL); - if (mapping != null) - { - KeyGroup keyGroup = (KeyGroup) mapping.get(keyGroupId); - if (keyGroup != null) return keyGroup.getKeyGroupEntries(); + if (mapping != null) { + final KeyGroup keyGroup = (KeyGroup) mapping.get(keyGroupId); + if (keyGroup != null) { + return keyGroup.getKeyGroupEntries(); + } } } - + return null; } /** * Return the chaining mode for a given trust anchor. - * + * * @param trustAnchor The trust anchor for which the chaining mode should be - * returned. - * @return The chaining mode for the given trust anchor. If the trust anchor - * has not been configured separately, the system default will be returned. + * returned. + * @return The chaining mode for the given trust anchor. If the trust anchor has + * not been configured separately, the system default will be returned. */ public String getChainingMode(X509Certificate trustAnchor) { - Principal issuer = trustAnchor.getIssuerDN(); - BigInteger serial = trustAnchor.getSerialNumber(); - IssuerAndSerial issuerAndSerial = new IssuerAndSerial(issuer, serial); + final Principal issuer = trustAnchor.getIssuerDN(); + final BigInteger serial = trustAnchor.getSerialNumber(); + final IssuerAndSerial issuerAndSerial = new IssuerAndSerial(issuer, serial); - String mode = (String) chainingModes.get(issuerAndSerial); + final String mode = (String) chainingModes.get(issuerAndSerial); return mode != null ? mode : defaultChainingMode; } /** * Return the distribution points for a given CA. - * + * * @param cert The certificate for which the distribution points should be * looked up. The issuer information is used to perform the lookup. - * - * @return A <code>Set</code> of <code>DistributionPoint</code> objects. The - * set will be empty, if no distribution points have been configured - * for this certificate. + * + * @return A <code>Set</code> of <code>DistributionPoint</code> objects. The set + * will be empty, if no distribution points have been configured for + * this certificate. */ - public Set getDistributionPoints(X509Certificate cert) - { + public Set getDistributionPoints(X509Certificate cert) { try { - RFC2253NameParser nameParser = - new RFC2253NameParser(cert.getIssuerDN().toString()); - String caIssuerDN = nameParser.parse().getName(); - Set dps = (Set) distributionPoints.get(caIssuerDN); + final RFC2253NameParser nameParser = + new RFC2253NameParser(cert.getIssuerDN().toString()); + final String caIssuerDN = nameParser.parse().getName(); + final Set dps = (Set) distributionPoints.get(caIssuerDN); if (dps == null) { return Collections.EMPTY_SET; } return dps; - } catch (RFC2253NameParserException e) { + } catch (final RFC2253NameParserException e) { return Collections.EMPTY_SET; } } /** * Return the CRL archive duration. - * + * * @return The duration of how long to keep CRL archive entries (measured in - * days). + * days). */ public int getCRLArchiveDuration() { return cRLArchiveDuration; } - + /** * Returns whether revocation information should be archived. - * + * * @return whether revocation information should be archived. */ - public boolean getEnableRevocationArchiving() - { + public boolean getEnableRevocationArchiving() { return enableRevocationArchiving_; } - + /** * Returns the location of the certificate store. - * + * * @return the location of the certificate store. */ - public String getCertStoreLocation() - { + public String getCertStoreLocation() { return certStoreLocation_; } /** * Return a <code>CreateTransformsInfoProfile</code> with the given ID. - * + * * @param id The <code>CreateTransformsInfoProfile</code> ID. - * @return The <code>CreateTransformsInfoProfile</code> with the given - * ID or <code>null</code>, if none exists. + * @return The <code>CreateTransformsInfoProfile</code> with the given ID or + * <code>null</code>, if none exists. */ public Element getCreateTransformsInfoProfile(String id) { return (Element) createTransformsInfoProfiles.get(id); @@ -792,10 +779,10 @@ public class ConfigurationProvider /** * Return a <code>CreateSignatureEnvironmentProfile</code> with the given ID. - * + * * @param id The <code>CreateSignatureEnvironmentProfile</code> ID. - * @return The <code>CreateSignatureEnvironmentProfile</code> with the given - * ID or <code>null</code>, if none exists. + * @return The <code>CreateSignatureEnvironmentProfile</code> with the given ID + * or <code>null</code>, if none exists. */ public Element getCreateSignatureEnvironmentProfile(String id) { return (Element) createSignatureEnvironmentProfiles.get(id); @@ -803,10 +790,10 @@ public class ConfigurationProvider /** * Return a <code>VerifyTransformsInfoProfile</code> with the given ID. - * + * * @param id The <code>VerifyTransformsInfoProfile</code> ID. * @return The <code>VerifyTransformsInfoProfile</code> with the given ID or - * <code>null</code>, if none exists. + * <code>null</code>, if none exists. */ public Element getVerifyTransformsInfoProfile(String id) { return (Element) verifyTransformsInfoProfiles.get(id); @@ -814,10 +801,10 @@ public class ConfigurationProvider /** * Return a <code>SupplementProfile</code> with the given ID. - * + * * @param id The <code>SupplementProfile</code> ID. * @return The <code>SupplementProfile</code> with the given ID or - * <code>null</code>, if none exists. + * <code>null</code>, if none exists. */ public Element getSupplementProfile(String id) { return (Element) supplementProfiles.get(id); @@ -825,63 +812,64 @@ public class ConfigurationProvider /** * Return a <code>TrustProfile</code> with the given ID. - * + * * @param id The <code>TrustProfile</code> ID. - * @return The <code>TrustProfile</code> with the given ID or - * <code>null</code>, if none exists. + * @return The <code>TrustProfile</code> with the given ID or <code>null</code>, + * if none exists. */ public TrustProfile getTrustProfile(String id) { - if (MiscUtil.isNotEmpty(id)) { - id = id.trim().toLowerCase(); - return (TrustProfile) trustProfiles.get(id); - - } - - return null; + if (MiscUtil.isNotEmpty(id)) { + id = id.trim().toLowerCase(); + return (TrustProfile) trustProfiles.get(id); + + } + + return null; } - + /** * Returns a map of <code>TrustProfiles</code> + * * @return */ public Map getTrustProfiles() { - return trustProfiles; + return trustProfiles; } /** * Log a warning. - * - * @param messageId The message ID. + * + * @param messageId The message ID. * @param parameters Additional parameters for the message. * @see at.gv.egovernment.moa.spss.server.util.MessageProvider */ private static void info(String messageId, Object[] parameters) { - MessageProvider msg = MessageProvider.getInstance(); + final MessageProvider msg = MessageProvider.getInstance(); Logger.info(new LogMsg(msg.getMessage(messageId, parameters))); } - + /** * Log a debug message. - * - * @param messageId The message ID. + * + * @param messageId The message ID. * @param parameters Additional parameters for the message. * @see at.gv.egovernment.moa.spss.server.util.MessageProvider */ private static void debug(String message) { Logger.debug(message); } - - /** + + /** * Log a warning. - * + * * @param messageId The message ID. - * @param args Additional parameters for the message. + * @param args Additional parameters for the message. * @see at.gv.egovernment.moa.spss.server.util.MessageProvider */ private void warn(String messageId, Object[] args) { - MessageProvider msg = MessageProvider.getInstance(); - String txt = msg.getMessage(messageId, args); + final MessageProvider msg = MessageProvider.getInstance(); + final String txt = msg.getMessage(messageId, args); Logger.warn(new LogMsg(txt)); warnings.add(txt); @@ -889,119 +877,126 @@ public class ConfigurationProvider /** * Log an error. - * + * * @param messageId The message ID. - * @param args Additional parameters for the message. + * @param args Additional parameters for the message. * @see at.gv.egovernment.moa.spss.server.util.MessageProvider */ private void error(String messageId, Object[] args) { - MessageProvider msg = MessageProvider.getInstance(); - String txt = msg.getMessage(messageId, args); + final MessageProvider msg = MessageProvider.getInstance(); + final String txt = msg.getMessage(messageId, args); Logger.warn(new LogMsg(txt)); // warnings.add(txt); } - + /** * Returns the JDBC URL for the revocation archive database. - * + * * @return the JDBC URL for the revocation archive database. */ - public String getRevocationArchiveJDBCURL() - { + public String getRevocationArchiveJDBCURL() { return revocationArchiveJDBCURL_; } /** * Returns the JDBC driver class name for the revocation archive database. - * + * * @return the JDBC driver class name for the revocation archive database. */ - public String getRevocationArchiveJDBCDriverClass() - { + public String getRevocationArchiveJDBCDriverClass() { return revocationArchiveJDBCDriverClass_; } /** * Returns whether revocation checking should be done. - * + * * @return whether revocation checking should be done. */ - public boolean getEnableRevocationChecking() - { + public boolean getEnableRevocationChecking() { return enableRevocationChecking_; } /** - * Returns the maximum age of a revocation information for considering it - * still as valid. - * - * @return the maximum age of a revocation information for considering it - * still as valid. + * Returns the maximum age of a revocation information for considering it still + * as valid. + * + * @return the maximum age of a revocation information for considering it still + * as valid. */ - public long getMaxRevocationAge() - { + public long getMaxRevocationAge() { return maxRevocationAge_; } /** * Returns the service order for revocation checking. - * + * * @return the service order for revocation checking. Valid array entries are - * {@link RevocationSourceTypes#OCSP} and {@link RevocationSourceTypes#CRL}. + * {@link RevocationSourceTypes#OCSP} and + * {@link RevocationSourceTypes#CRL}. */ - public String[] getServiceOrder() - { + public String[] getServiceOrder() { return serviceOrder_; } /** - * Returns whether certificates found during certificate path construction + * Returns whether certificates found during certificate path construction * should be added to the certificate store. - * - * @return whether certificates found during certificate path construction + * + * @return whether certificates found during certificate path construction * should be added to the certificate store. */ - public boolean getAutoAddCertificates() - { + public boolean getAutoAddCertificates() { return autoAddCertificates_; } /** - * Returns whether the certificate extension Authority Info Access should - * be used during certificate path construction. - * - * @return whether the certificate extension Authority Info Access should - * be used during certificate path construction. + * Returns whether EE certificates found during certificate path construction + * should be added to the certificate store. + * + * @return whether certificates found during certificate path construction + * should be added to the certificate store. + */ + public boolean getAutoAddEECertificates() { + return autoAddEECertificates_; + } + + /** + * Returns whether the certificate extension Authority Info Access should be + * used during certificate path construction. + * + * @return whether the certificate extension Authority Info Access should be + * used during certificate path construction. */ - public boolean getUseAuthorityInfoAccess() - { + public boolean getUseAuthorityInfoAccess() { return useAuthorityInfoAccess_; } - + /** * Returns whether the file URIs are permitted or not + * * @return whether the file URIs are permitted or not */ - public boolean getPermitFileURIs() - { - return permitFileURIs; + public boolean getPermitFileURIs() { + return permitFileURIs; } - + /** * Returns the map of retention intervals + * * @return The map of retention intervals */ public Map getCrlRetentionIntervals() { - return crlRetentionIntervals; + return crlRetentionIntervals; } - + /** * Returns the global TSL configuration + * * @return The global TSL configuration */ public TSLConfiguration getTSLConfiguration() { - return tslconfiguration_; + return tslconfiguration_; } - + }
\ No newline at end of file diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/config/DistributionPoint.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/config/DistributionPoint.java index a2e5b93..bf911df 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/config/DistributionPoint.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/config/DistributionPoint.java @@ -21,42 +21,40 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.server.config; /** * Abstract base class for distribution points. - * + * * @author Gregor Karlinger * @version $Id$ - * */ -public abstract class DistributionPoint implements iaik.pki.revocation.DistributionPoint -{ - /** - * The distribution point URI. + */ +public abstract class DistributionPoint implements iaik.pki.revocation.DistributionPoint { + /** + * The distribution point URI. */ - private String uri_; + private final String uri_; /** * Create a <code>DistributionPoint</code> with a URI. - * + * * @param uri The URI of the distribution point. */ - public DistributionPoint(String uri) - { + public DistributionPoint(String uri) { uri_ = uri; } - + /** * @see iaik.pki.revocation.DistributionPoint#getType() */ + @Override public abstract String getType(); /** * @see iaik.pki.revocation.DistributionPoint#getUri() */ - public String getUri() - { + @Override + public String getUri() { return uri_; } } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/config/HardwareCryptoModule.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/config/HardwareCryptoModule.java index c0487f6..99ca1c3 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/config/HardwareCryptoModule.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/config/HardwareCryptoModule.java @@ -21,40 +21,38 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.server.config; /** * Contains configuration data for a hardware crypto module. - * + * * @author Patrick Peck * @version $Id$ */ public class HardwareCryptoModule { /** The name of the module. */ - private String name; + private final String name; /** The slod ID of the module. */ - private String slotID; + private final String slotID; /** The user PIN of the module. */ - private String userPIN; - + private final String userPIN; + /** * Create a new <code>HardwareCryptoModule</code>. - * - * @param name The name of this <code>HardwareCryptoModule</code>. - * @param slotID The slot ID of this <code>HardwareCryptoModule</code>. - * @param userPIN The user PIN to access this - * <code>HardwareCryptoModule</code>. + * + * @param name The name of this <code>HardwareCryptoModule</code>. + * @param slotID The slot ID of this <code>HardwareCryptoModule</code>. + * @param userPIN The user PIN to access this <code>HardwareCryptoModule</code>. */ public HardwareCryptoModule(String name, String slotID, String userPIN) { this.name = name; this.slotID = slotID; this.userPIN = userPIN; } - + /** * Returns the name of this <code>HardwareCryptoModule</code>. - * + * * @return The name of this <code>HardwareCryptoModule</code>. */ public String getName() { @@ -63,22 +61,20 @@ public class HardwareCryptoModule { /** * Returns the slot ID of this <code>HardwareCryptoModule</code>. - * + * * @return The slot ID. */ public String getSlotID() { return slotID; } - /** * Returns the user PIN of this <code>HardwareCryptoModule</code>. - * + * * @return The user PIN used to access the module. */ public String getUserPIN() { return userPIN; } - } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/config/HardwareKeyModule.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/config/HardwareKeyModule.java index 18fd085..5fa408c 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/config/HardwareKeyModule.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/config/HardwareKeyModule.java @@ -21,60 +21,59 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.server.config; /** * A class that contains information about a hardware key module. - * + * * @author Patrick Peck * @version $Id$ */ public class HardwareKeyModule extends KeyModule { /** The name of the module. */ - private String name; + private final String name; /** The slod ID of the module. */ - private String slotID; + private final String slotID; /** The user PIN of the module. */ - private String userPIN; - + private final String userPIN; + /** * Create a new <code>HardwareKey</code>. - * - * @param id The key module ID. - * @param name The name of the key. - * @param slotID The slot ID of the key within the hardware module. May be - * <code>null</code>. + * + * @param id The key module ID. + * @param name The name of the key. + * @param slotID The slot ID of the key within the hardware module. May be + * <code>null</code>. * @param userPIN The user PIN to access the key. */ public HardwareKeyModule(String id, String name, String slotID, String userPIN) { super(id); this.name = name; this.slotID = slotID; - this.userPIN = userPIN; + this.userPIN = userPIN; } - + /** * Return the name of this <code>HardwareKey</code>. - * + * * @return The name of this <code>HardwareKey</code>. */ public String getName() { return name; } - + /** * Return the slot ID of this <code>HardwareKey</code>. - * + * * @return The slot ID of this <code>HardwareKey</code>. */ public String getSlotID() { return slotID; } - + /** * Return the user PIN to access this <code>HardwareKey</code>. - * + * * @return The user PIN to access this <code>HardwareKey</code>. */ public String getUserPIN() { diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/config/IssuerAndSerial.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/config/IssuerAndSerial.java index 38a3ae9..03827f2 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/config/IssuerAndSerial.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/config/IssuerAndSerial.java @@ -21,7 +21,6 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.server.config; import java.math.BigInteger; @@ -34,25 +33,25 @@ import iaik.utils.RFC2253NameParserException; /** * A class containing the issuer and serial number of a certificate, which can * be used to uniquely identify the certificate. - * + * * The issuer is contained as an RFC2253 encoded <code>String</code>. - * + * * @author Patrick Peck * @version $Id$ */ public class IssuerAndSerial { /** The issuer distinguished name. */ - private String issuerDN; + private final String issuerDN; /** The certificate serial number. */ - private BigInteger serial; + private final BigInteger serial; /** * Create an <code>IssuerAndSerial</code> object. - * + * * The name of the issuer is converted to RFC2253. If it cannot be parsed, the - * DN contained in the <code>issuer</code> is set. - * + * DN contained in the <code>issuer</code> is set. + * * @param issuer The isser of a certificate. * @param serial The serial number of the certificate. */ @@ -60,28 +59,28 @@ public class IssuerAndSerial { String issuerDN = null; if (issuer instanceof Name) { try { - issuerDN = ((Name)issuer).getRFC2253String(); - } catch (RFC2253NameParserException e) { + issuerDN = ((Name) issuer).getRFC2253String(); + } catch (final RFC2253NameParserException e) { // do nothing } } if (issuerDN == null) { - RFC2253NameParser parser = new RFC2253NameParser(issuer.getName()); + final RFC2253NameParser parser = new RFC2253NameParser(issuer.getName()); try { - issuerDN = ((Name)parser.parse()).getRFC2253String(); - } catch (RFC2253NameParserException e) { + issuerDN = parser.parse().getRFC2253String(); + } catch (final RFC2253NameParserException e) { issuerDN = issuer.getName(); } } this.serial = serial; this.issuerDN = issuerDN; } - + /** * Create an <code>IssuerAndSerial</code> object. - * + * * @param issuerDN The issuer distinguished name. Should be an RFC2253 name. - * @param serial The serial number of the certificate. + * @param serial The serial number of the certificate. */ public IssuerAndSerial(String issuerDN, BigInteger serial) { this.issuerDN = issuerDN; @@ -90,7 +89,7 @@ public class IssuerAndSerial { /** * Return the issuer DN in RFC2253 format. - * + * * @return The issuer part of this object. */ public String getIssuerDN() { @@ -99,7 +98,7 @@ public class IssuerAndSerial { /** * Return the serial number. - * + * * @return The serial number of this object. */ public BigInteger getSerial() { @@ -108,28 +107,31 @@ public class IssuerAndSerial { /** * Compare this <code>IssuerAndSerial</code> to another object. - * + * * @param other The object to compare this <code>IssuerAndSerial</code> to. * @return <code>true</code>, if <code>other</code> is an - * <code>IssuerAndSerial</code> object and the <code>issuer</code> and - * <code>serial</code> fields are both equal. <code>false</code> otherwise. + * <code>IssuerAndSerial</code> object and the <code>issuer</code> and + * <code>serial</code> fields are both equal. <code>false</code> + * otherwise. * @see java.lang.Object#equals(java.lang.Object) */ + @Override public boolean equals(Object other) { if (other instanceof IssuerAndSerial) { - IssuerAndSerial ias = (IssuerAndSerial) other; + final IssuerAndSerial ias = (IssuerAndSerial) other; return getIssuerDN().equals(ias.getIssuerDN()) - && getSerial().equals(ias.getSerial()); + && getSerial().equals(ias.getSerial()); } return false; } /** * Return the hash code of this <code>IssuerAndSerial</code>. - * + * * @return The hash code of this <code>IssuerAndSerial</code>. * @see java.lang.Object#hashCode() */ + @Override public int hashCode() { return issuerDN.hashCode() ^ serial.hashCode(); } @@ -137,13 +139,14 @@ public class IssuerAndSerial { /** * Return a <code>String</code> representation of this * <code>IssuerAndSerial</code> object. - * + * * @return The <code>String</code> representation. * @see java.lang.Object#toString() */ + @Override public String toString() { - return ("(IssuerAndSerial - Issuer<" + getIssuerDN()) - + ("> Serial<" + serial.toString() + ">)"); + return "(IssuerAndSerial - Issuer<" + getIssuerDN() + + "> Serial<" + serial.toString() + ">)"; } } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/config/KeyGroup.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/config/KeyGroup.java index c2490f9..faeaf82 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/config/KeyGroup.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/config/KeyGroup.java @@ -21,7 +21,6 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.server.config; import java.util.Iterator; @@ -29,7 +28,7 @@ import java.util.Set; /** * A collection of <code>KeyGroupEntry</code>s with its own ID. - * + * * @author Sven Aigner * @author Patrick Peck * @version $Id$ @@ -37,59 +36,62 @@ import java.util.Set; public class KeyGroup { /** The keys belonging to this key group. */ - private Set keyGroupEntries; + private final Set keyGroupEntries; /** The key group ID. */ - private String id; + private final String id; /** The digest method algorithm for the key group */ - private String digestMethodAlgorithm; + private final String digestMethodAlgorithm; /** * Create a <code>KeyGroup</code>. - * - * @param id The ID of this <code>KeyGroup</code>. - * @param keyGroupEntries The keys belonging to this <code>KeyGroup</code>. + * + * @param id The ID of this <code>KeyGroup</code>. + * @param keyGroupEntries The keys belonging to this + * <code>KeyGroup</code>. * @param digestMethodAlgorithm The signature algorithm used for this key group */ public KeyGroup(String id, Set keyGroupEntries, String digestMethodAlgorithm) { this.id = id; this.keyGroupEntries = keyGroupEntries; - this.digestMethodAlgorithm = digestMethodAlgorithm; + this.digestMethodAlgorithm = digestMethodAlgorithm; } /** * Return the <code>KeyEntry</code>s contained in this <code>KeyGroup</code>. - * + * * @return The <code>KeyEntry</code>s contained in this <code>KeyGroup</code>. */ public Set getKeyGroupEntries() { return keyGroupEntries; } - + /** * Returnd the digest method algorithm used for this key group + * * @return The digest method signature algorithm used for this key group */ public String getDigestMethodAlgorithm() { - return digestMethodAlgorithm; + return digestMethodAlgorithm; } /** * Return the ID of this <code>KeyGroup</code>. - * + * * @return The <code>KeyGroup</code> ID. */ public String getId() { return id; } - /** + /** * Return a <code>String</code> representation of this <code>KeyGroup</code>. - * + * * @return The <code>String</code> representation. * @see java.lang.Object#toString() */ + @Override public String toString() { - StringBuffer sb = new StringBuffer(); + final StringBuffer sb = new StringBuffer(); Iterator i; if (getKeyGroupEntries() != null) { @@ -99,7 +101,8 @@ public class KeyGroup { sb.append(" " + i.next()); } } - return "(KeyGroup - ID:" + id + " " + sb.toString() + ")" + "DigestMethodAlgorithm: " + digestMethodAlgorithm; + return "(KeyGroup - ID:" + id + " " + sb.toString() + ")" + "DigestMethodAlgorithm: " + + digestMethodAlgorithm; } } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/config/KeyGroupEntry.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/config/KeyGroupEntry.java index fcedfb0..d73b755 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/config/KeyGroupEntry.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/config/KeyGroupEntry.java @@ -21,31 +21,30 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.server.config; import java.math.BigInteger; /** * A class containing information about an entry in a key group. - * + * * @author Patrick Peck * @version $Id$ */ public class KeyGroupEntry { /** The module ID of the key. */ - private String moduleID; + private final String moduleID; /** The issuer DN of the certificate identifying the key. */ - private String issuerDN; + private final String issuerDN; /** The serial number of the certificate identifying the key. */ - private BigInteger serialNumber; + private final BigInteger serialNumber; /** * Create a new <code>KeyGroupEntry</code>. - * - * @param moduleID The key module ID to which this entry belongs to. - * @param issuerAndSerial The issuer and serial number which uniquely - * identifies a certificate within the key module. + * + * @param moduleID The key module ID to which this entry belongs to. + * @param issuerAndSerial The issuer and serial number which uniquely identifies + * a certificate within the key module. */ public KeyGroupEntry(String moduleID, IssuerAndSerial issuerAndSerial) { this.moduleID = moduleID; @@ -55,25 +54,24 @@ public class KeyGroupEntry { /** * Create a new <code>KeyGroupEntry</code>. - * - * @param moduleID The key module ID to which this entry belongs to. - * @param issuerDN The isser DN of the certificate within the key module. + * + * @param moduleID The key module ID to which this entry belongs to. + * @param issuerDN The isser DN of the certificate within the key module. * @param serialNumber The serial number of the certificate within the key - * module. + * module. */ public KeyGroupEntry( - String moduleID, - String issuerDN, - BigInteger serialNumber) { + String moduleID, + String issuerDN, + BigInteger serialNumber) { this.moduleID = moduleID; this.issuerDN = issuerDN; this.serialNumber = serialNumber; } /** - * Return the key module ID to which this <code>KeyGroupEntry</code> belongs - * to. - * + * Return the key module ID to which this <code>KeyGroupEntry</code> belongs to. + * * @return The key module ID. */ public String getModuleID() { @@ -83,7 +81,7 @@ public class KeyGroupEntry { /** * Return the issuer DN of this <code>KeyGroupEntry</code> for identifying the * certificate within the key module. - * + * * @return The issuer DN of the certificate. */ public String getIssuerDN() { @@ -93,7 +91,7 @@ public class KeyGroupEntry { /** * Return the serial number of this <code>KeyGroupEntry</code> for identifying * the certificate within the key module. - * + * * @return The serial number of the certificate. */ public BigInteger getSerialNumber() { @@ -105,26 +103,28 @@ public class KeyGroupEntry { * * @param other The <code>KeyGroupEntry</code> to compare to. * @return <code>true</code>, if module ID, isser DN and serial number of - * <code>other</code> match the ones contained in this object, otherwise - * <code>false</code>. + * <code>other</code> match the ones contained in this object, otherwise + * <code>false</code>. * @see java.lang.Object#equals(Object) */ + @Override public boolean equals(Object other) { if (other instanceof KeyGroupEntry) { - KeyGroupEntry entry = (KeyGroupEntry) other; + final KeyGroupEntry entry = (KeyGroupEntry) other; return getModuleID().equals(entry.getModuleID()) - && getIssuerDN().equals(entry.getIssuerDN()) - && getSerialNumber().equals(entry.getSerialNumber()); + && getIssuerDN().equals(entry.getIssuerDN()) + && getSerialNumber().equals(entry.getSerialNumber()); } return false; } - + /** * @see java.lang.Object#hashCode() */ + @Override public int hashCode() { return getModuleID().hashCode() - ^ getIssuerDN().hashCode() - ^ getSerialNumber().hashCode(); + ^ getIssuerDN().hashCode() + ^ getSerialNumber().hashCode(); } } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/config/KeyModule.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/config/KeyModule.java index 45d8d7e..6a665d6 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/config/KeyModule.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/config/KeyModule.java @@ -21,23 +21,22 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.server.config; /** * A class that contains information about a key module. - * + * * @author Patrick Peck * @version $Id$ */ public class KeyModule { /** The key module ID. */ - private String id; + private final String id; /** * Create a <code>Key</code> object. - * + * * @param id The key module ID. */ public KeyModule(String id) { @@ -46,7 +45,7 @@ public class KeyModule { /** * Return the key ID. - * + * * @return The key ID. */ public String getId() { @@ -55,10 +54,11 @@ public class KeyModule { /** * Return a <code>String</code> representation of this <code>Key</code>. - * + * * @return The <code>String</code> representation. * @see java.lang.Object#toString() */ + @Override public String toString() { return "(Key - Id<" + id + ">)"; } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/config/OCSPDistributionPoint.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/config/OCSPDistributionPoint.java index 2e91c6b..97ced05 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/config/OCSPDistributionPoint.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/config/OCSPDistributionPoint.java @@ -21,36 +21,33 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.server.config; import iaik.pki.revocation.RevocationSourceTypes; /** * A class representing a CRL distribution point. - * + * * @author Gregor Karlinger * @version $Id$ */ -public class OCSPDistributionPoint - extends DistributionPoint - implements iaik.pki.revocation.DistributionPoint -{ +public class OCSPDistributionPoint + extends DistributionPoint + implements iaik.pki.revocation.DistributionPoint { /** * Create a <code>OCSPDistributionPoint</code> with a URI. - * + * * @param uri The URI of the ocsp distribution point. */ - public OCSPDistributionPoint(String uri) - { + public OCSPDistributionPoint(String uri) { super(uri); } /** * @see iaik.pki.revocation.DistributionPoint#getType() */ - public String getType() - { + @Override + public String getType() { return RevocationSourceTypes.OCSP; } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/config/SoftwareKeyModule.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/config/SoftwareKeyModule.java index 0ed83bb..3c038cf 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/config/SoftwareKeyModule.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/config/SoftwareKeyModule.java @@ -21,25 +21,24 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.server.config; /** * A class containing information about a software key, stored in PKCS12 format. - * + * * @author Patrick Peck * @version $Id$ */ public class SoftwareKeyModule extends KeyModule { /** The name of the file containing the keys. */ - private String fileName; + private final String fileName; /** The password for accessing the file. */ - private String passWord; - + private final String passWord; + /** * Create a new <code>SoftwareKey</code>. - * - * @param id The key ID. + * + * @param id The key ID. * @param fileName The name of the PKCS12 keystore file containing the key. * @param passWord The password to access the keystore file. */ @@ -48,25 +47,24 @@ public class SoftwareKeyModule extends KeyModule { this.fileName = fileName; this.passWord = passWord; } - + /** * Return the name of the PKCS12 keystore file containing this * <code>SoftwareKey</code>. - * + * * @return The name of the PKCS12 keystore file. */ public String getFileName() { return fileName; } - + /** * Return the password to access the keystore file. - * + * * @return The password to access the keystore file. */ public String getPassWord() { return passWord; } - } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/config/TrustProfile.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/config/TrustProfile.java index 0063c7f..94155d6 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/config/TrustProfile.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/config/TrustProfile.java @@ -21,7 +21,6 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.server.config; import java.net.URI; @@ -35,129 +34,139 @@ import java.util.regex.PatternSyntaxException; import at.gv.egovernment.moa.sig.tsl.TslConstants; import at.gv.egovernment.moaspss.logging.Logger; import at.gv.egovernment.moaspss.util.MiscUtil; -import iaik.x509.X509Certificate; /** * Information about a trust profile. - * + * * @author Patrick Peck * @version $Id$ */ public class TrustProfile { /** The ID of the trust profile. */ - private String id; + private final String id; /** The URI giving the location of the trust profile. */ - private String uri; + private final String uri; /** The URI giving the location of the allowed signer certificates. */ - private String signerCertsUri; - - /** Defines if Trustprofile makes use of EU TSL*/ - private boolean tslEnabled; - /** The countries given */ - private List<String> countries = new ArrayList<String>(); - - private List<URI> allowedTspStatus = new ArrayList<URI>(); - private List<Pattern> allowedTspServiceTypes = new ArrayList<Pattern>(); - - + private final String signerCertsUri; + + /** Defines if Trustprofile makes use of EU TSL */ + private final boolean tslEnabled; + /** The countries given */ + private final List<String> countries = new ArrayList<>(); + + private final List<URI> allowedTspStatus = new ArrayList<>(); + private final List<Pattern> allowedTspServiceTypes = new ArrayList<>(); + /** * Create a <code>TrustProfile</code>. - * - * @param id The ID of the <code>TrustProfile</code> to create. - * @param uri The URI of the <code>TrustProfile</code> to create. - * @param signerCertsUri The URI of the location of the allowed signer - * certificates of the <code>TrustProfile</code> to create. - * @param allowedTspServiceTypes - * @param allowedTspStatus + * + * @param id The ID of the <code>TrustProfile</code> to + * create. + * @param uri The URI of the <code>TrustProfile</code> to + * create. + * @param signerCertsUri The URI of the location of the allowed signer + * certificates of the <code>TrustProfile</code> + * to create. + * @param allowedTspServiceTypes + * @param allowedTspStatus */ - public TrustProfile(String id, String uri, String signerCertsUri, - boolean tslEnabled, String countries, String allowedTspStatus, String allowedTspServiceTypes) { + public TrustProfile(String id, String uri, String signerCertsUri, + boolean tslEnabled, String countries, String allowedTspStatus, String allowedTspServiceTypes) { this.id = id; this.uri = uri; this.signerCertsUri = signerCertsUri; - - //TSL configuration parameters + + // TSL configuration parameters this.tslEnabled = tslEnabled; - if (tslEnabled) { - setCountries(countries); - if (!this.countries.isEmpty()) - Logger.info("TrustProfile "+ id + " allows " + Arrays.toString(this.countries.toArray()) + " TSL countries"); - else - Logger.info("TrustProfile "+ id + " allows " + "ALL" + " TSL countries"); - - setAllowedTspStatus(allowedTspStatus); - Logger.info("TrustProfile "+ id + " allows " + Arrays.toString(this.allowedTspStatus.toArray()) + " TSP status identifier"); - - setAllowedTspServiceTypes(allowedTspServiceTypes); - Logger.info("TrustProfile "+ id + " allows " + Arrays.toString(this.allowedTspServiceTypes.toArray()) + " TSL service-type identifier"); - - } + if (tslEnabled) { + setCountries(countries); + if (!this.countries.isEmpty()) { + Logger.info("TrustProfile " + id + " allows " + Arrays.toString(this.countries.toArray()) + + " TSL countries"); + } else { + Logger.info("TrustProfile " + id + " allows " + "ALL" + " TSL countries"); + } + + setAllowedTspStatus(allowedTspStatus); + Logger.info("TrustProfile " + id + " allows " + Arrays.toString(this.allowedTspStatus.toArray()) + + " TSP status identifier"); + + setAllowedTspServiceTypes(allowedTspServiceTypes); + Logger.info("TrustProfile " + id + " allows " + Arrays.toString(this.allowedTspServiceTypes.toArray()) + + " TSL service-type identifier"); + + } } private void setCountries(String countries) { - if (MiscUtil.isNotEmpty(countries)) { - String[] ccArray = countries.split(","); - for (String el : ccArray) - this.countries.add(el.trim()); - - } + if (MiscUtil.isNotEmpty(countries)) { + final String[] ccArray = countries.split(","); + for (final String el : ccArray) { + this.countries.add(el.trim()); + } + + } } - + private void setAllowedTspStatus(String allowedTspStatus) { - if (MiscUtil.isNotEmpty(allowedTspStatus)) { - String[] ccArray = allowedTspStatus.split(","); - for (String el : ccArray) { - try { - this.allowedTspStatus.add(new URI(el.trim())); - - } catch (URISyntaxException e) { - Logger.warn("TrustProfile: " + this.id + " contains a non-valid TSP Status identifier (" + el + ")"); - - } - - } - - } else { - Logger.debug("Use default set of TSP Status identifier"); - this.allowedTspStatus.addAll( - Arrays.asList( - TslConstants.SERVICE_STATUS_SORT_TO_URI.get(TslConstants.SERVICE_STATUS_SHORT.granted), - TslConstants.SERVICE_STATUS_SORT_TO_URI.get(TslConstants.SERVICE_STATUS_SHORT.recognisedatnationallevel), - TslConstants.SERVICE_STATUS_SORT_TO_URI.get(TslConstants.SERVICE_STATUS_SHORT.accredited), - TslConstants.SERVICE_STATUS_SORT_TO_URI.get(TslConstants.SERVICE_STATUS_SHORT.undersupervision))); - - } - + if (MiscUtil.isNotEmpty(allowedTspStatus)) { + final String[] ccArray = allowedTspStatus.split(","); + for (final String el : ccArray) { + try { + this.allowedTspStatus.add(new URI(el.trim())); + + } catch (final URISyntaxException e) { + Logger.warn("TrustProfile: " + this.id + " contains a non-valid TSP Status identifier (" + el + + ")"); + + } + + } + + } else { + Logger.debug("Use default set of TSP Status identifier"); + this.allowedTspStatus.addAll( + Arrays.asList( + TslConstants.SERVICE_STATUS_SORT_TO_URI.get(TslConstants.SERVICE_STATUS_SHORT.granted), + TslConstants.SERVICE_STATUS_SORT_TO_URI.get( + TslConstants.SERVICE_STATUS_SHORT.recognisedatnationallevel), + TslConstants.SERVICE_STATUS_SORT_TO_URI.get(TslConstants.SERVICE_STATUS_SHORT.accredited), + TslConstants.SERVICE_STATUS_SORT_TO_URI.get( + TslConstants.SERVICE_STATUS_SHORT.undersupervision))); + + } + } - + private void setAllowedTspServiceTypes(String allowedTspServiceTypes) { - if (MiscUtil.isNotEmpty(allowedTspServiceTypes)) { - String[] ccArray = allowedTspServiceTypes.split(","); - for (String el : ccArray) { - try { - this.allowedTspServiceTypes.add(Pattern.compile(el.trim())); - - } catch (PatternSyntaxException e) { - Logger.warn("TrustProfile: " + this.id + " contains a non-valid TSP Service-Type identifier Regex pattern(" + el + ")"); - - } - - } - - } else { - Logger.debug("Use default set of TSP Service-Type identifier"); - this.allowedTspServiceTypes.addAll( - Arrays.asList( - Pattern.compile(TslConstants.DEFAULT_REGEX_PATTERN_ALLOW_ALL))); - - } - + if (MiscUtil.isNotEmpty(allowedTspServiceTypes)) { + final String[] ccArray = allowedTspServiceTypes.split(","); + for (final String el : ccArray) { + try { + this.allowedTspServiceTypes.add(Pattern.compile(el.trim())); + + } catch (final PatternSyntaxException e) { + Logger.warn("TrustProfile: " + this.id + + " contains a non-valid TSP Service-Type identifier Regex pattern(" + el + ")"); + + } + + } + + } else { + Logger.debug("Use default set of TSP Service-Type identifier"); + this.allowedTspServiceTypes.addAll( + Arrays.asList( + Pattern.compile(TslConstants.DEFAULT_REGEX_PATTERN_ALLOW_ALL))); + + } + } - + /** * Return the ID of this <code>TrustProfile</code>. - * + * * @return The <code>TrustProfile</code> ID. */ public String getId() { @@ -166,49 +175,51 @@ public class TrustProfile { /** * Return the URI of this <code>TrustProfile</code>. - * + * * @return The URI of <code>TrustProfile</code>. */ public String getUri() { return uri; } - /** - * Return the URI giving the location of the allowed signer certificates - * of this <code>TrustProfile</code>. - * + * Return the URI giving the location of the allowed signer certificates of this + * <code>TrustProfile</code>. + * * @return The URI of <code>TrustProfile</code>. */ public String getSignerCertsUri() { return signerCertsUri; } + /** * Returns if Trustprofile is TSL enabled + * * @return */ public boolean isTSLEnabled() { - return tslEnabled; + return tslEnabled; } + /** * Returns the given countries + * * @return Given countries */ public List<String> getCountries() { - if (!tslEnabled) - return null; - else - return countries; + if (!tslEnabled) { + return null; + } else { + return countries; + } } public List<URI> getAllowedTspStatus() { - return allowedTspStatus; + return allowedTspStatus; } public List<Pattern> getAllowedTspServiceTypes() { - return allowedTspServiceTypes; + return allowedTspServiceTypes; } - - - + } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/cmssign/CMSSignatureCreationProfileImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/cmssign/CMSSignatureCreationProfileImpl.java index 2dc047a..d660c7a 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/cmssign/CMSSignatureCreationProfileImpl.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/cmssign/CMSSignatureCreationProfileImpl.java @@ -21,17 +21,8 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.server.iaik.cmssign; -import iaik.server.modules.algorithms.SignatureAlgorithms; -import iaik.server.modules.cmssign.CMSSignatureCreationProfile; -import iaik.server.modules.keys.AlgorithmUnavailableException; -import iaik.server.modules.keys.KeyEntryID; -import iaik.server.modules.keys.KeyModule; -import iaik.server.modules.keys.KeyModuleFactory; -import iaik.server.modules.keys.UnknownKeyException; - import java.util.List; import java.util.Set; @@ -39,58 +30,71 @@ import at.gv.egovernment.moa.spss.server.logging.TransactionId; import at.gv.egovernment.moa.spss.server.transaction.TransactionContext; import at.gv.egovernment.moa.spss.server.transaction.TransactionContextManager; import at.gv.egovernment.moaspss.logging.Logger; +import iaik.server.modules.algorithms.SignatureAlgorithms; +import iaik.server.modules.cmssign.CMSSignatureCreationProfile; +import iaik.server.modules.keys.AlgorithmUnavailableException; +import iaik.server.modules.keys.KeyEntryID; +import iaik.server.modules.keys.KeyModule; +import iaik.server.modules.keys.KeyModuleFactory; +import iaik.server.modules.keys.UnknownKeyException; /** * An object providing auxiliary information for creating a CMS signature. - * + * * @author Patrick Peck * @version $Id$ */ public class CMSSignatureCreationProfileImpl - implements CMSSignatureCreationProfile { + implements CMSSignatureCreationProfile { /** The set of keys available to the signing process. */ private Set keySet; - /** The MIME type of the data to be signed*/ - private String mimeType; - /** Whether the created signature is to be Security Layer conform. */ + /** The MIME type of the data to be signed */ + private final String mimeType; + /** Whether the created signature is to be Security Layer conform. */ private boolean securityLayerConform; - /** Properties to be signed during signature creation. */ - private List signedProperties; - /** Specifies whether the content data shall be included in the CMS SignedData or shall be not included. */ - private boolean includeData; - /** Digest Method algorithm */ + /** Properties to be signed during signature creation. */ + private final List signedProperties; + /** + * Specifies whether the content data shall be included in the CMS SignedData or + * shall be not included. + */ + private final boolean includeData; + /** Digest Method algorithm */ private String digestMethod; - - + private final boolean isPAdESConform; + /** * Create a new <code>XMLSignatureCreationProfileImpl</code>. - * - * @param createProfileCount Provides external information about the - * number of calls to the signature creation module, using the same request. - * @param reservedIDs The set of IDs that must not be used while generating - * new IDs. + * + * @param createProfileCount Provides external information about the number of + * calls to the signature creation module, using the + * same request. + * @param reservedIDs The set of IDs that must not be used while + * generating new IDs. */ public CMSSignatureCreationProfileImpl( - Set keySet, - String digestMethod, - List signedProperties, - boolean securityLayerConform, - boolean includeData, - String mimeType) { - this.keySet = keySet; - this.signedProperties = signedProperties; - this.securityLayerConform = securityLayerConform; - this.includeData = includeData; - this.mimeType = mimeType; - this.digestMethod = digestMethod; + Set keySet, + String digestMethod, + List signedProperties, + boolean securityLayerConform, + boolean includeData, + String mimeType, + boolean isPAdESConform) { + this.keySet = keySet; + this.signedProperties = signedProperties; + this.securityLayerConform = securityLayerConform; + this.includeData = includeData; + this.mimeType = mimeType; + this.digestMethod = digestMethod; + this.isPAdESConform = isPAdESConform; } - /** * @see iaik.server.modules.xmlsign.XMLSignatureCreationProfile#getKeySet() */ + @Override public Set getKeySet() { return keySet; } @@ -98,119 +102,116 @@ public class CMSSignatureCreationProfileImpl /** * Set the set of <code>KeyEntryID</code>s which may be used for signature * creation. - * + * * @param keySet The set of <code>KeyEntryID</code>s to set. */ public void setKeySet(Set keySet) { this.keySet = keySet; } - /** * @see iaik.server.modules.xmlsign.XMLSignatureCreationProfile#getSignatureAlgorithmName(KeyEntryID) */ + @Override public String getSignatureAlgorithmName(KeyEntryID selectedKeyID) - throws AlgorithmUnavailableException { + throws AlgorithmUnavailableException { - - TransactionContext context = - TransactionContextManager.getInstance().getTransactionContext(); - TransactionId tid = new TransactionId(context.getTransactionID()); - KeyModule module = KeyModuleFactory.getInstance(tid); + final TransactionContext context = + TransactionContextManager.getInstance().getTransactionContext(); + final TransactionId tid = new TransactionId(context.getTransactionID()); + final KeyModule module = KeyModuleFactory.getInstance(tid); Set algorithms; try { algorithms = module.getSupportedSignatureAlgorithms(selectedKeyID); - } catch (UnknownKeyException e) { + } catch (final UnknownKeyException e) { throw new AlgorithmUnavailableException( - "Unknown key entry: " + selectedKeyID, - e, - null); + "Unknown key entry: " + selectedKeyID, + e, + null); } - - if (digestMethod.compareTo("SHA-1") == 0) { - Logger.warn("SHA-1 is configured as digest algorithm. Please revise a use of a more secure digest algorithm out of the SHA-2 family (e.g. SHA-256, SHA-384, SHA-512)"); - - if (algorithms.contains(SignatureAlgorithms.SHA1_WITH_RSA)) { - return SignatureAlgorithms.SHA1_WITH_RSA; - - } else if (algorithms.contains(SignatureAlgorithms.ECDSA)) { - return SignatureAlgorithms.ECDSA; - - } else if (algorithms.contains(SignatureAlgorithms.DSA)) { - return SignatureAlgorithms.DSA; - - } else { - throw new AlgorithmUnavailableException( - "No algorithm for key entry: " + selectedKeyID, - null, - null); - } - - } else if (digestMethod.compareTo("SHA-256") == 0) { - if (algorithms.contains(SignatureAlgorithms.SHA256_WITH_RSA)) { - return SignatureAlgorithms.SHA256_WITH_RSA; - - } else if (algorithms.contains(SignatureAlgorithms.SHA256_WITH_ECDSA)) { - return SignatureAlgorithms.SHA256_WITH_ECDSA; - - } else if (algorithms.contains(SignatureAlgorithms.DSA)) { - return SignatureAlgorithms.DSA; - - } else { - throw new AlgorithmUnavailableException( - "No algorithm for key entry: " + selectedKeyID, - null, - null); - } - } else if (digestMethod.compareTo("SHA-384") == 0) { - if (algorithms.contains(SignatureAlgorithms.SHA384_WITH_RSA)) { - return SignatureAlgorithms.SHA384_WITH_RSA; - - } else if (algorithms.contains(SignatureAlgorithms.SHA384_WITH_ECDSA)) { - return SignatureAlgorithms.SHA384_WITH_ECDSA; - - } else if (algorithms.contains(SignatureAlgorithms.DSA)) { - return SignatureAlgorithms.DSA; - - } else { - throw new AlgorithmUnavailableException( - "No algorithm for key entry: " + selectedKeyID, - null, - null); - } - } else if (digestMethod.compareTo("SHA-512") == 0) { - if (algorithms.contains(SignatureAlgorithms.SHA512_WITH_RSA)) { - return SignatureAlgorithms.SHA512_WITH_RSA; - - } else if (algorithms.contains(SignatureAlgorithms.SHA512_WITH_ECDSA)) { - return SignatureAlgorithms.SHA512_WITH_ECDSA; - - } else if (algorithms.contains(SignatureAlgorithms.DSA)) { - return SignatureAlgorithms.DSA; - - } else { - throw new AlgorithmUnavailableException( - "No algorithm for key entry: " + selectedKeyID, - null, - null); - } - } - else { - throw new AlgorithmUnavailableException( - "No signature algorithm found for digest algorithm '" + digestMethod, - null, - null); - } - - } + if (digestMethod.compareTo("SHA-1") == 0) { + Logger.warn( + "SHA-1 is configured as digest algorithm. Please revise a use of a more secure digest algorithm out of the SHA-2 family (e.g. SHA-256, SHA-384, SHA-512)"); + + if (algorithms.contains(SignatureAlgorithms.SHA1_WITH_RSA)) { + return SignatureAlgorithms.SHA1_WITH_RSA; + + } else if (algorithms.contains(SignatureAlgorithms.ECDSA)) { + return SignatureAlgorithms.ECDSA; + + } else if (algorithms.contains(SignatureAlgorithms.DSA)) { + return SignatureAlgorithms.DSA; + + } else { + throw new AlgorithmUnavailableException( + "No algorithm for key entry: " + selectedKeyID, + null, + null); + } + + } else if (digestMethod.compareTo("SHA-256") == 0) { + if (algorithms.contains(SignatureAlgorithms.SHA256_WITH_RSA)) { + return SignatureAlgorithms.SHA256_WITH_RSA; + + } else if (algorithms.contains(SignatureAlgorithms.SHA256_WITH_ECDSA)) { + return SignatureAlgorithms.SHA256_WITH_ECDSA; + + } else if (algorithms.contains(SignatureAlgorithms.DSA)) { + return SignatureAlgorithms.DSA; + + } else { + throw new AlgorithmUnavailableException( + "No algorithm for key entry: " + selectedKeyID, + null, + null); + } + } else if (digestMethod.compareTo("SHA-384") == 0) { + if (algorithms.contains(SignatureAlgorithms.SHA384_WITH_RSA)) { + return SignatureAlgorithms.SHA384_WITH_RSA; + + } else if (algorithms.contains(SignatureAlgorithms.SHA384_WITH_ECDSA)) { + return SignatureAlgorithms.SHA384_WITH_ECDSA; + } else if (algorithms.contains(SignatureAlgorithms.DSA)) { + return SignatureAlgorithms.DSA; + + } else { + throw new AlgorithmUnavailableException( + "No algorithm for key entry: " + selectedKeyID, + null, + null); + } + } else if (digestMethod.compareTo("SHA-512") == 0) { + if (algorithms.contains(SignatureAlgorithms.SHA512_WITH_RSA)) { + return SignatureAlgorithms.SHA512_WITH_RSA; + + } else if (algorithms.contains(SignatureAlgorithms.SHA512_WITH_ECDSA)) { + return SignatureAlgorithms.SHA512_WITH_ECDSA; + + } else if (algorithms.contains(SignatureAlgorithms.DSA)) { + return SignatureAlgorithms.DSA; + + } else { + throw new AlgorithmUnavailableException( + "No algorithm for key entry: " + selectedKeyID, + null, + null); + } + } else { + throw new AlgorithmUnavailableException( + "No signature algorithm found for digest algorithm '" + digestMethod, + null, + null); + } + + } - /** * @see iaik.server.modules.xmlsign.XMLSignatureCreationProfile#getSignedProperties() */ + @Override public List getSignedProperties() { return signedProperties; } @@ -218,32 +219,38 @@ public class CMSSignatureCreationProfileImpl /** * @see iaik.server.modules.xmlsign.XMLSignatureCreationProfile#isSecurityLayerConform() */ + @Override public boolean isSecurityLayerConform() { return securityLayerConform; } /** * Sets the security layer conformity. - * - * @param securityLayerConform <code>true</code>, if the created signature - * is to be conform to the Security Layer specification. + * + * @param securityLayerConform <code>true</code>, if the created signature is to + * be conform to the Security Layer specification. */ public void setSecurityLayerConform(boolean securityLayerConform) { this.securityLayerConform = securityLayerConform; } - public void setDigestMethod(String digestMethod) { - this.digestMethod = digestMethod; + this.digestMethod = digestMethod; } - + @Override public String getMimeType() { - return mimeType; + return mimeType; } + @Override public boolean includeData() { - return this.includeData; + return this.includeData; + } + + @Override + public boolean isPAdESConform() { + return this.isPAdESConform; } } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/cmsverify/CMSSignatureVerificationProfileImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/cmsverify/CMSSignatureVerificationProfileImpl.java index ab807ae..2247090 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/cmsverify/CMSSignatureVerificationProfileImpl.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/cmsverify/CMSSignatureVerificationProfileImpl.java @@ -24,40 +24,42 @@ package at.gv.egovernment.moa.spss.server.iaik.cmsverify; import iaik.pki.PKIProfile; +import iaik.server.modules.SignatureVerificationProfile; import iaik.server.modules.cmsverify.CMSSignatureVerificationProfile; /** * An implementation of the <code>CMSSignatureVerificationProfile</code> * interface. - * + * * @see iaik.server.modules.cmsverify.CMSSignatureVerificationProfile * @author Patrick Peck * @version $Id$ */ public class CMSSignatureVerificationProfileImpl implements CMSSignatureVerificationProfile { - /** The profile for validating the certificate. */ - private PKIProfile certificateValidationProfile; + /** The profile for validating the certificate. */ + private PKIProfile certificateValidationProfile; - /** - * @see iaik.server.modules.cmsverify.CMSSignatureVerificationProfile#getCertificateValidationProfile() - */ - public PKIProfile getCertificateValidationProfile() { - return certificateValidationProfile; - } + /** + * @see iaik.server.modules.cmsverify.CMSSignatureVerificationProfile#getCertificateValidationProfile() + */ + @Override + public PKIProfile getCertificateValidationProfile() { + return certificateValidationProfile; + } - /** - * Sets the profile for validating the signer certificate. - * - * @param certificateValidationProfile - * The certificate validation profile to set. - */ - public void setCertificateValidationProfile(PKIProfile certificateValidationProfile) { - this.certificateValidationProfile = certificateValidationProfile; - } + /** + * Sets the profile for validating the signer certificate. + * + * @param certificateValidationProfile The certificate validation profile to + * set. + */ + public void setCertificateValidationProfile(PKIProfile certificateValidationProfile) { + this.certificateValidationProfile = certificateValidationProfile; + } - @Override - public String getTargetLevel() { - return CMSSignatureVerificationProfile.LEVEL_LTA; - } + @Override + public String getTargetLevel() { + return SignatureVerificationProfile.LEVEL_LTA; + } } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/cmsverify/PDFSignatureVerificationProfileImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/cmsverify/PDFSignatureVerificationProfileImpl.java index 785c85b..18a9f9c 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/cmsverify/PDFSignatureVerificationProfileImpl.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/cmsverify/PDFSignatureVerificationProfileImpl.java @@ -3,6 +3,6 @@ package at.gv.egovernment.moa.spss.server.iaik.cmsverify; import iaik.server.modules.pdfverify.PDFSignatureVerificationProfile; public class PDFSignatureVerificationProfileImpl extends CMSSignatureVerificationProfileImpl - implements PDFSignatureVerificationProfile { + implements PDFSignatureVerificationProfile { } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/config/AbstractKeyModuleConfigurationImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/config/AbstractKeyModuleConfigurationImpl.java index 90e6793..1cd4b64 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/config/AbstractKeyModuleConfigurationImpl.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/config/AbstractKeyModuleConfigurationImpl.java @@ -21,7 +21,6 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.server.iaik.config; import iaik.server.modules.keys.KeyModuleConfiguration; @@ -29,22 +28,22 @@ import iaik.server.modules.keys.KeyModuleConfiguration; /** * Base implementation class for the <code>KeyModuleConfiguration</code> * interface and the interfaces derived from it. - * + * * @see iaik.server.modules.keys.KeyModuleConfiguration * @author Patrick Peck * @version $Id$ */ public abstract class AbstractKeyModuleConfigurationImpl - implements KeyModuleConfiguration { + implements KeyModuleConfiguration { + + /** The module ID. */ + private final String moduleID; - /** The module ID. */ - private String moduleID; - /** * Creata new <code>AbstractKeyModuleConfigurationImpl</code>. - * + * * @param moduleID The key module ID of this - * <code>KeyModuleConfiguration</code>. + * <code>KeyModuleConfiguration</code>. */ public AbstractKeyModuleConfigurationImpl(String moduleID) { this.moduleID = moduleID; @@ -53,6 +52,7 @@ public abstract class AbstractKeyModuleConfigurationImpl /** * @see iaik.server.modules.keys.KeyModuleConfiguration#getModuleID() */ + @Override public String getModuleID() { return moduleID; } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/config/AbstractObservableConfiguration.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/config/AbstractObservableConfiguration.java index e2d828b..a9dfe2d 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/config/AbstractObservableConfiguration.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/config/AbstractObservableConfiguration.java @@ -21,7 +21,6 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.server.iaik.config; import java.util.ArrayList; @@ -34,18 +33,19 @@ import iaik.pki.store.observer.Observer; /** * A base class for observable configuration data. - * + * * @author Patrick Peck * @version $Id$ */ public abstract class AbstractObservableConfiguration implements Observable { /** The observers registered with this <code>Observable</code>. */ - private List observers = new ArrayList(); + private final List observers = new ArrayList(); /** * @see iaik.pki.store.observer.Observable#addObserver(iaik.pki.store.observer.Observer) */ + @Override public void addObserver(Observer observer) { observers.add(observer); } @@ -53,6 +53,7 @@ public abstract class AbstractObservableConfiguration implements Observable { /** * @see iaik.pki.store.observer.Observable#removeObserver(iaik.pki.store.observer.Observer) */ + @Override public boolean removeObserver(Observer observer) { return observers.remove(observer); } @@ -60,13 +61,14 @@ public abstract class AbstractObservableConfiguration implements Observable { /** * @see iaik.pki.store.observer.Observable#notify(iaik.pki.store.observer.NotificationData) */ + @Override public void notify(NotificationData data) { Iterator iter = observers.iterator(); for (iter = observers.iterator(); iter.hasNext();) { - Observer observer = (Observer) iter.next(); + final Observer observer = (Observer) iter.next(); observer.notify(data); } } - + } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/config/ArchiveConfigurationImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/config/ArchiveConfigurationImpl.java index 4a300a2..ff9927b 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/config/ArchiveConfigurationImpl.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/config/ArchiveConfigurationImpl.java @@ -21,76 +21,68 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.server.iaik.config; -import iaik.pki.store.revocation.archive.ArchiveConfiguration; -import iaik.pki.store.revocation.archive.ArchiveParameters; -import iaik.pki.store.revocation.archive.ArchiveTypes; - import java.sql.Driver; import java.sql.DriverManager; import java.util.Enumeration; import at.gv.egovernment.moa.spss.server.config.ConfigurationProvider; +import iaik.pki.store.revocation.archive.ArchiveConfiguration; +import iaik.pki.store.revocation.archive.ArchiveParameters; +import iaik.pki.store.revocation.archive.ArchiveTypes; /** - * An implementation of the <code>ArchiveConfiguration</code> interface - * using configuration data provided by the MOA configuration file. - * + * An implementation of the <code>ArchiveConfiguration</code> interface using + * configuration data provided by the MOA configuration file. + * * @see iaik.pki.store.revocation.archive.ArchiveConfiguration * @author Patrick Peck * @version $Id$ */ public class ArchiveConfigurationImpl - extends AbstractObservableConfiguration - implements ArchiveConfiguration { - + extends AbstractObservableConfiguration + implements ArchiveConfiguration { + /** The configuration parameters of the archive. */ - private ArchiveParameters archiveParameters; + private final ArchiveParameters archiveParameters; /** * Create a new <code>ArchiveConfigurationImpl</code>. - * - * @param config The MOA configuration from which the configuration data is being read. + * + * @param config The MOA configuration from which the configuration data is + * being read. */ - public ArchiveConfigurationImpl(ConfigurationProvider config) - { - String jdbcUrl = config.getRevocationArchiveJDBCURL(); + public ArchiveConfigurationImpl(ConfigurationProvider config) { + final String jdbcUrl = config.getRevocationArchiveJDBCURL(); this.archiveParameters = new DataBaseArchiveParameterImpl(jdbcUrl); - - // Register JDBC driver class - if (jdbcUrl != null) - { - String jdbcDriverClass = config.getRevocationArchiveJDBCDriverClass(); - try - { + + // Register JDBC driver class + if (jdbcUrl != null) { + final String jdbcDriverClass = config.getRevocationArchiveJDBCDriverClass(); + try { Class.forName(jdbcDriverClass); - } - catch (ClassNotFoundException e) - { + } catch (final ClassNotFoundException e) { // TODO 20030709 GK Improve exception handling - throw new RuntimeException("JDBC driver class \"" + jdbcDriverClass + " could not be found."); + throw new RuntimeException("JDBC driver class \"" + jdbcDriverClass + " could not be found."); } - - Enumeration regDrivers = DriverManager.getDrivers(); + + final Enumeration regDrivers = DriverManager.getDrivers(); boolean isRegistered = false; - while (regDrivers.hasMoreElements()) - { - Object currentDriver = regDrivers.nextElement(); - if (jdbcDriverClass.equals(currentDriver.getClass().getName())) isRegistered = true; - } - if (!isRegistered) - { - // Workaround for a driver which does not register itselve at invocation of Class.forName(drvname) - try - { - DriverManager.registerDriver((Driver)Class.forName(jdbcDriverClass).newInstance()); + while (regDrivers.hasMoreElements()) { + final Object currentDriver = regDrivers.nextElement(); + if (jdbcDriverClass.equals(currentDriver.getClass().getName())) { + isRegistered = true; } - catch (Exception e) - { + } + if (!isRegistered) { + // Workaround for a driver which does not register itselve at invocation of + // Class.forName(drvname) + try { + DriverManager.registerDriver((Driver) Class.forName(jdbcDriverClass).newInstance()); + } catch (final Exception e) { // TODO 20030709 GK Improve exception handling - throw new RuntimeException("Registering JDBC driver \"" + jdbcDriverClass + " failed."); + throw new RuntimeException("Registering JDBC driver \"" + jdbcDriverClass + " failed."); } } } @@ -98,11 +90,13 @@ public class ArchiveConfigurationImpl /** * Return the type of archive. - * + * * This will always return <code>ArchiveTypes.DATABASE</code>. + * * @return <code>ArchiveTypes.DATABASE</code>. * @see iaik.pki.store.revocation.archive.ArchiveConfiguration#getType() */ + @Override public String getType() { return ArchiveTypes.DATABASE; } @@ -110,10 +104,11 @@ public class ArchiveConfigurationImpl /** * Return the <code>ArchiveParameters</code> describing this * <code>ArchiveConfiguration</code>. - * + * * @return The archive parameters. * @see iaik.pki.store.revocation.archive.ArchiveConfiguration#getArchiveParameters() */ + @Override public ArchiveParameters getArchiveParameters() { return archiveParameters; } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/config/CRLRetriever.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/config/CRLRetriever.java index d752a63..d1b776b 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/config/CRLRetriever.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/config/CRLRetriever.java @@ -23,13 +23,6 @@ package at.gv.egovernment.moa.spss.server.iaik.config; -import iaik.logging.TransactionId; -import iaik.pki.revocation.RevocationSourceTypes; -import iaik.pki.store.revocation.RevocationInfoRetriever; -import iaik.pki.store.revocation.RevocationSource; -import iaik.pki.store.revocation.RevocationStoreException; -import iaik.pki.ldap.Handler; - import java.io.InputStream; import java.net.MalformedURLException; import java.net.URL; @@ -39,6 +32,12 @@ import java.util.Collection; import java.util.Date; import at.gv.egovernment.moaspss.logging.Logger; +import iaik.logging.TransactionId; +import iaik.pki.ldap.Handler; +import iaik.pki.revocation.RevocationSourceTypes; +import iaik.pki.store.revocation.RevocationInfoRetriever; +import iaik.pki.store.revocation.RevocationSource; +import iaik.pki.store.revocation.RevocationStoreException; /** * A customized implementation of @@ -47,55 +46,56 @@ import at.gv.egovernment.moaspss.logging.Logger; * {@link iaik.pki.store.revocation.CRLRetriever} to overcome a classloader * problem in connection with the {@link java.net.URL} class in a Tomcat * deployment environment. - * + * * @author Gregor Karlinger * @version $$ */ public class CRLRetriever implements RevocationInfoRetriever { - - private int connectTimeout = 5; - private int readTimeout = 5; - - - public void update(RevocationSource source, Collection supplementalRequestData, TransactionId tid) - throws RevocationStoreException { - if (source == null) { - throw new NullPointerException("RevocationSource parameter mustn't be null."); - } - Logger.info("Downloading crl from " + source.getUri()); - if (!source.getType().equals(RevocationSourceTypes.CRL)) { - throw new RevocationStoreException(source.getType() + " not supported", null, getClass().getName() + ":1"); - } - try { - URL crlUrl; - try { - crlUrl = new URL(source.getUri()); - } catch (MalformedURLException e) { - // Workaround for classloader problem with deployment in Tomcat - // 4.1 - URLStreamHandler handler = new Handler(); - crlUrl = new URL(null, source.getUri(), handler); - } - URLConnection con = crlUrl.openConnection(); - con.setConnectTimeout(connectTimeout); - con.setReadTimeout(readTimeout); - InputStream crlInputStream = con.getInputStream(); - source.readFrom(crlInputStream, tid); - source.setDownloadTime(new Date()); - crlInputStream.close(); - } catch (Exception iox) { - Logger.warn("Cannot retrieve crl", iox); - throw new RevocationStoreException("Cannot retrieve CRL", iox, getClass().getName() + ":1"); - } - } - @Override - public void setConnectTimeout(int arg0) { - this.connectTimeout = arg0; - } + private int connectTimeout = 5; + private int readTimeout = 5; + + @Override + public void update(RevocationSource source, Collection supplementalRequestData, TransactionId tid) + throws RevocationStoreException { + if (source == null) { + throw new NullPointerException("RevocationSource parameter mustn't be null."); + } + Logger.info("Downloading crl from " + source.getUri()); + if (!source.getType().equals(RevocationSourceTypes.CRL)) { + throw new RevocationStoreException(source.getType() + " not supported", null, getClass().getName() + + ":1"); + } + try { + URL crlUrl; + try { + crlUrl = new URL(source.getUri()); + } catch (final MalformedURLException e) { + // Workaround for classloader problem with deployment in Tomcat + // 4.1 + final URLStreamHandler handler = new Handler(); + crlUrl = new URL(null, source.getUri(), handler); + } + final URLConnection con = crlUrl.openConnection(); + con.setConnectTimeout(connectTimeout); + con.setReadTimeout(readTimeout); + final InputStream crlInputStream = con.getInputStream(); + source.readFrom(crlInputStream, tid); + source.setDownloadTime(new Date()); + crlInputStream.close(); + } catch (final Exception iox) { + Logger.warn("Cannot retrieve crl", iox); + throw new RevocationStoreException("Cannot retrieve CRL", iox, getClass().getName() + ":1"); + } + } + + @Override + public void setConnectTimeout(int arg0) { + this.connectTimeout = arg0; + } - @Override - public void setReadTimeout(int arg0) { - this.readTimeout = arg0; - } + @Override + public void setReadTimeout(int arg0) { + this.readTimeout = arg0; + } } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/config/CertStoreConfigurationImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/config/CertStoreConfigurationImpl.java index 1aa5f6a..052a3c5 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/config/CertStoreConfigurationImpl.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/config/CertStoreConfigurationImpl.java @@ -23,74 +23,71 @@ package at.gv.egovernment.moa.spss.server.iaik.config; -import java.io.File; -import java.io.IOException; - -import org.apache.commons.io.FileUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import at.gv.egovernment.moa.sig.tsl.exception.TslException; import at.gv.egovernment.moa.spss.server.config.ConfigurationProvider; -import at.gv.egovernment.moa.spss.server.logging.IaikLog; -import at.gv.egovernment.moa.spss.server.logging.TransactionId; import at.gv.egovernment.moa.spss.tsl.TSLServiceFactory; -import iaik.logging.Log; import iaik.pki.store.certstore.CertStoreConfiguration; import iaik.pki.store.certstore.CertStoreParameters; import iaik.pki.store.certstore.directory.DirectoryCertStoreParameters; -import iaik.pki.store.certstore.directory.DirectoryStoreException; -import iaik.pki.store.certstore.utils.DirectoryCertStoreConverter; /** * An implementation of the <code>CertStoreConfiguration</code> interface based * on MOA configuration data. - * + * * @see iaik.pki.store.certstore.CertStoreConfiguration * @author Patrick Peck * @version $Id$ */ -public class CertStoreConfigurationImpl extends AbstractObservableConfiguration implements CertStoreConfiguration { +public class CertStoreConfigurationImpl extends AbstractObservableConfiguration implements + CertStoreConfiguration { + + private static final Logger logger = LoggerFactory.getLogger(CertStoreConfigurationImpl.class); + + /** The configuration parameters of the <code>CertStore</code>. */ + private CertStoreParameters[] parameters; + + /** + * Create a new <code>CertStoreConfigurationImpl</code>. + * + * @param config The MOA configuration from which the configuration data is + * being read. + */ + public CertStoreConfigurationImpl(ConfigurationProvider config) { + final String certStoreRoot = config.getCertStoreLocation(); + + final DirectoryCertStoreParameters dirParameters = new DirectoryCertStoreParametersImpl( + "MOA Directory CertStore", + certStoreRoot, true, false); - private static final Logger logger = LoggerFactory.getLogger(CertStoreConfigurationImpl.class); + if (TSLServiceFactory.isInitialized()) { + try { + final CertStoreParameters tslCertStore = TSLServiceFactory.getTSLServiceClient() + .getCertStoreWithTSLCertificates(); + parameters = new CertStoreParameters[] { dirParameters, tslCertStore }; - /** The configuration parameters of the <code>CertStore</code>. */ - private CertStoreParameters[] parameters; + } catch (final TslException e) { + logger.warn("TSL based CertStore initialisation FAILED.", e); + logger.warn("Only Directory based CertStore is used ... "); + parameters = new CertStoreParameters[] { dirParameters }; + } - /** - * Create a new <code>CertStoreConfigurationImpl</code>. - * - * @param config - * The MOA configuration from which the configuration data is - * being read. - */ - public CertStoreConfigurationImpl(ConfigurationProvider config) { - String certStoreRoot = config.getCertStoreLocation(); + } else { + logger.info("Trust-Status List support is not active. Use only Directory based CertStore."); + parameters = new CertStoreParameters[] { dirParameters }; - DirectoryCertStoreParameters dirParameters = new DirectoryCertStoreParametersImpl("MOA Directory CertStore", - certStoreRoot, true, false); + } - if (TSLServiceFactory.isInitialized()) { - try { - CertStoreParameters tslCertStore = TSLServiceFactory.getTSLServiceClient().getCertStoreWithTSLCertificates(); - parameters = new CertStoreParameters[] { dirParameters, tslCertStore}; - - } catch (TslException e) { - logger.warn("TSL based CertStore initialisation FAILED.", e); - logger.warn("Only Directory based CertStore is used ... "); - parameters = new CertStoreParameters[] { dirParameters }; - } - - } else - parameters = new CertStoreParameters[] { dirParameters }; - - } + } - /** - * @see iaik.pki.store.certstore.CertStoreConfiguration#getParameters() - */ - public CertStoreParameters[] getParameters() { - return parameters; - } + /** + * @see iaik.pki.store.certstore.CertStoreConfiguration#getParameters() + */ + @Override + public CertStoreParameters[] getParameters() { + return parameters; + } } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/config/ConfigurationDataImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/config/ConfigurationDataImpl.java index dff78d6..891f078 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/config/ConfigurationDataImpl.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/config/ConfigurationDataImpl.java @@ -21,43 +21,41 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.server.iaik.config; import java.util.ArrayList; import java.util.Iterator; import java.util.List; -import iaik.logging.LoggerConfig; -import iaik.pki.PKIConfiguration; -import iaik.server.ConfigurationData; - +import at.gv.egovernment.moa.spss.server.config.ConfigurationProvider; import at.gv.egovernment.moa.spss.server.config.HardwareCryptoModule; import at.gv.egovernment.moa.spss.server.config.HardwareKeyModule; -import at.gv.egovernment.moa.spss.server.config.ConfigurationProvider; import at.gv.egovernment.moa.spss.server.config.SoftwareKeyModule; +import iaik.logging.LoggerConfig; +import iaik.pki.PKIConfiguration; +import iaik.server.ConfigurationData; /** - * An implementation of the <code>ConfigurationData</code> interface using - * MOA configuration data. - * + * An implementation of the <code>ConfigurationData</code> interface using MOA + * configuration data. + * * @see iaik.server.ConfigurationData * @author Patrick Peck * @version $Id$ */ public class ConfigurationDataImpl implements ConfigurationData { /** PKI configuration data. */ - private PKIConfiguration pkiConfiguration; + private final PKIConfiguration pkiConfiguration; /** Crypto modules configuration data. */ - private List cryptoModuleConfigurations; + private final List cryptoModuleConfigurations; /** Key modules configuration data. */ - private List keyModuleConfigurations; + private final List keyModuleConfigurations; /** Logging configuration data. */ - private LoggerConfig loggerConfig; + private final LoggerConfig loggerConfig; /** * Create a new <code>ConfigurationDataImpl</code>. - * + * * @param config The underlying MOA configuration data. */ public ConfigurationDataImpl(ConfigurationProvider config) { @@ -69,54 +67,55 @@ public class ConfigurationDataImpl implements ConfigurationData { /** * Build the list of <code>CryptoModuleConfiguration</code>s. - * + * * @param config The underlying MOA configuration data. - * @return The list of <code>CryptoModuleConfiguration</code>s configured in - * the MOA configuration. + * @return The list of <code>CryptoModuleConfiguration</code>s configured in the + * MOA configuration. */ private List buildCryptoModuleConfigurations(ConfigurationProvider config) { - List modules = new ArrayList(); - Iterator iter = config.getHardwareCryptoModules().iterator(); - + final List modules = new ArrayList(); + final Iterator iter = config.getHardwareCryptoModules().iterator(); + while (iter.hasNext()) { - HardwareCryptoModule module = (HardwareCryptoModule) iter.next(); + final HardwareCryptoModule module = (HardwareCryptoModule) iter.next(); modules.add(new HardwareCryptoModuleConfigurationImpl(module)); } - + return modules; } - + /** * Build the list of <code>KeyModuleConfiguration</code>s. - * + * * @param config The underlying MOA configuration data. * @return The list of <code>KeyModuleConfiguration</code>s configured in the - * MOA configuration. + * MOA configuration. */ private List buildKeyModuleConfigurations(ConfigurationProvider config) { - List keys = new ArrayList(); + final List keys = new ArrayList(); Iterator iter; - + // add the hardware keys iter = config.getHardwareKeyModules().iterator(); while (iter.hasNext()) { - HardwareKeyModule key = (HardwareKeyModule) iter.next(); + final HardwareKeyModule key = (HardwareKeyModule) iter.next(); keys.add(new HardwareKeyModuleConfigurationImpl(key)); } - + // add the software keys iter = config.getSoftwareKeyModules().iterator(); while (iter.hasNext()) { - SoftwareKeyModule key = (SoftwareKeyModule) iter.next(); + final SoftwareKeyModule key = (SoftwareKeyModule) iter.next(); keys.add(new SoftwareKeyModuleConfigurationImpl(key)); } - + return keys; } /** * @see iaik.server.ConfigurationData#getPKIConfiguration() */ + @Override public PKIConfiguration getPKIConfiguration() { return pkiConfiguration; } @@ -124,6 +123,7 @@ public class ConfigurationDataImpl implements ConfigurationData { /** * @see iaik.server.ConfigurationData#getCryptoModuleConfigurations() */ + @Override public List getCryptoModuleConfigurations() { return cryptoModuleConfigurations; } @@ -131,6 +131,7 @@ public class ConfigurationDataImpl implements ConfigurationData { /** * @see iaik.server.ConfigurationData#getKeyModuleConfigurations() */ + @Override public List getKeyModuleConfigurations() { return keyModuleConfigurations; } @@ -138,6 +139,7 @@ public class ConfigurationDataImpl implements ConfigurationData { /** * @see iaik.server.ConfigurationData#getLoggerConfig() */ + @Override public LoggerConfig getLoggerConfig() { return loggerConfig; } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/config/DataBaseArchiveParameterImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/config/DataBaseArchiveParameterImpl.java index f4658a2..22cceeb 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/config/DataBaseArchiveParameterImpl.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/config/DataBaseArchiveParameterImpl.java @@ -21,14 +21,13 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.server.iaik.config; import iaik.pki.store.revocation.archive.DataBaseArchiveParameters; /** * An implementation of the <code>DataBaseArchiveParameter</code> interface. - * + * * @see iaik.pki.store.revocation.archive.db.DataBaseArchiveParameter * @author Patrick Peck * @version $Id$ @@ -36,11 +35,11 @@ import iaik.pki.store.revocation.archive.DataBaseArchiveParameters; public class DataBaseArchiveParameterImpl implements DataBaseArchiveParameters { /** The JDBC URL for accessing the archive. */ - private String jDBCUrl; + private final String jDBCUrl; /** * Create a new <code>DataBaseArchiveParameterImpl</code>. - * + * * @param jDBCUrl The JDBC URL of the archive. */ public DataBaseArchiveParameterImpl(String jDBCUrl) { @@ -50,6 +49,7 @@ public class DataBaseArchiveParameterImpl implements DataBaseArchiveParameters { /** * @see iaik.pki.store.revocation.archive.db.DataBaseArchiveParameter#getJDBCUrl() */ + @Override public String getJDBCUrl() { return jDBCUrl; } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/config/DirectoryCertStoreParametersImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/config/DirectoryCertStoreParametersImpl.java index 39da9cf..e48c7e7 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/config/DirectoryCertStoreParametersImpl.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/config/DirectoryCertStoreParametersImpl.java @@ -21,50 +21,48 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.server.iaik.config; import java.util.Collections; import java.util.Set; -import iaik.pki.store.certstore.CertStoreParameters; import iaik.pki.store.certstore.CertStoreTypes; import iaik.pki.store.certstore.directory.DirectoryCertStoreParameters; /** * An implementation of the <code>DirectoryCertStoreParameters</code> interface. - * + * * @see iaik.pki.store.certstore.directory.DirectoryCertStoreParameters * @author Patrick Peck * @version $Id$ */ public class DirectoryCertStoreParametersImpl - implements DirectoryCertStoreParameters { + implements DirectoryCertStoreParameters { /** The root directory of the <code>CertStore</code>. */ - private String rootDirectory; + private final String rootDirectory; /** Whether a new directory may be created. */ - private boolean createNew; + private final boolean createNew; /** The <code>CertStore</code> ID. */ - private String id; + private final String id; /** Whether the <code>CertStore</code> is read-only. */ - private boolean readOnly; + private final boolean readOnly; /** * Create a new <code>DirectoryCertStoreParameterImpl</code>. - * - * @param id The <code>CertStore</code> ID. + * + * @param id The <code>CertStore</code> ID. * @param rootDirectory The root directory of the <code>CertStore</code>. - * @param createNew Whether a new directory may be created. - * @param readOnly Whether the <code>CertStore</code> is read-only. + * @param createNew Whether a new directory may be created. + * @param readOnly Whether the <code>CertStore</code> is read-only. */ public DirectoryCertStoreParametersImpl( - String id, - String rootDirectory, - boolean createNew, - boolean readOnly) { - - this.id = id; + String id, + String rootDirectory, + boolean createNew, + boolean readOnly) { + + this.id = id; this.rootDirectory = rootDirectory; this.createNew = createNew; this.readOnly = readOnly; @@ -73,6 +71,7 @@ public class DirectoryCertStoreParametersImpl /** * @see iaik.pki.store.certstore.directory.DirectoryCertStoreParameters#getRootDirectory() */ + @Override public String getRootDirectory() { return rootDirectory; } @@ -80,6 +79,7 @@ public class DirectoryCertStoreParametersImpl /** * @see iaik.pki.store.certstore.directory.DirectoryCertStoreParameters#createNew() */ + @Override public boolean createNew() { return createNew; } @@ -87,6 +87,7 @@ public class DirectoryCertStoreParametersImpl /** * @see iaik.pki.store.certstore.CertStoreParameters#getId() */ + @Override public String getId() { return id; } @@ -94,6 +95,7 @@ public class DirectoryCertStoreParametersImpl /** * @see iaik.pki.store.certstore.CertStoreParameters#isReadOnly() */ + @Override public boolean isReadOnly() { return readOnly; } @@ -102,14 +104,15 @@ public class DirectoryCertStoreParametersImpl * @return <code>CertStoreTypes.DIRECTORY</code> * @see iaik.pki.store.certstore.CertStoreParameters#getType() */ + @Override public String getType() { return CertStoreTypes.DIRECTORY; } -@Override -public Set getVirtualStores() { - // TODO AFITZEK IMPLEMENT THIS METHOD - return Collections.EMPTY_SET; -} + @Override + public Set getVirtualStores() { + // TODO AFITZEK IMPLEMENT THIS METHOD + return Collections.EMPTY_SET; + } } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/config/HardwareCryptoModuleConfigurationImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/config/HardwareCryptoModuleConfigurationImpl.java index c9904c5..6275e08 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/config/HardwareCryptoModuleConfigurationImpl.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/config/HardwareCryptoModuleConfigurationImpl.java @@ -21,32 +21,30 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.server.iaik.config; -import iaik.server.modules.crypto.HardwareCryptoModuleConfiguration; - import at.gv.egovernment.moa.spss.server.config.HardwareCryptoModule; +import iaik.server.modules.crypto.HardwareCryptoModuleConfiguration; /** * An implementation of the <code>HardwareCryptoModuleConfiguration</code> * wrapping a <code>HardwareCryptoModule</code> from the MOA configuration. - * + * * @author Patrick Peck * @version $Id$ */ public class HardwareCryptoModuleConfigurationImpl - implements HardwareCryptoModuleConfiguration { - - /** The wrapped <code>HardwareCryptoModule</code>. */ - private HardwareCryptoModule module; - + implements HardwareCryptoModuleConfiguration { + + /** The wrapped <code>HardwareCryptoModule</code>. */ + private final HardwareCryptoModule module; + /** * Create a new <code>HardwareCryptoModuleConfigurationImpl</code>. - * + * * @param module The <code>HardwareCryptoModule</code> from the underlying MOA - * configuration. - */ + * configuration. + */ public HardwareCryptoModuleConfigurationImpl(HardwareCryptoModule module) { this.module = module; } @@ -54,6 +52,7 @@ public class HardwareCryptoModuleConfigurationImpl /** * @see iaik.server.modules.crypto.HardwareCryptoModuleConfiguration#getModuleName() */ + @Override public String getModuleName() { return module.getName(); } @@ -61,6 +60,7 @@ public class HardwareCryptoModuleConfigurationImpl /** * @see iaik.server.modules.crypto.HardwareCryptoModuleConfiguration#getSlotID() */ + @Override public String getSlotID() { return module.getSlotID(); } @@ -68,6 +68,7 @@ public class HardwareCryptoModuleConfigurationImpl /** * @see iaik.server.modules.crypto.HardwareCryptoModuleConfiguration#getUserPIN() */ + @Override public char[] getUserPIN() { return module.getUserPIN().toCharArray(); } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/config/HardwareKeyModuleConfigurationImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/config/HardwareKeyModuleConfigurationImpl.java index 05f5633..9b37c60 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/config/HardwareKeyModuleConfigurationImpl.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/config/HardwareKeyModuleConfigurationImpl.java @@ -21,34 +21,32 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.server.iaik.config; -import iaik.server.modules.keys.HardwareKeyModuleConfiguration; - import at.gv.egovernment.moa.spss.server.config.HardwareKeyModule; +import iaik.server.modules.keys.HardwareKeyModuleConfiguration; /** * An implementation of the <code>HardwareKeyModuleConfiguration</code> * interface wrapping a <code>HardwareKeyModule</code> from the MOA * configuration. - * + * * @see iaik.server.modules.keys.HardwareKeyModuleConfiguration * @author Patrick Peck * @version $Id$ */ public class HardwareKeyModuleConfigurationImpl - extends AbstractKeyModuleConfigurationImpl - implements HardwareKeyModuleConfiguration { + extends AbstractKeyModuleConfigurationImpl + implements HardwareKeyModuleConfiguration { /** The wrapped <code>HardwareKeyModule</code>. */ - private HardwareKeyModule keyModule; + private final HardwareKeyModule keyModule; /** * Create a new <code>HardwareKeyModuleConfigurationImpl</code>. - * - * @param keyModule The <code>HardwareKeyModule</code> from the underlying - * MOA configuration. + * + * @param keyModule The <code>HardwareKeyModule</code> from the underlying MOA + * configuration. */ public HardwareKeyModuleConfigurationImpl(HardwareKeyModule keyModule) { super(keyModule.getId()); @@ -58,6 +56,7 @@ public class HardwareKeyModuleConfigurationImpl /** * @see iaik.server.modules.keys.HardwareKeyModuleConfiguration#getModuleName() */ + @Override public String getModuleName() { return keyModule.getName(); } @@ -65,6 +64,7 @@ public class HardwareKeyModuleConfigurationImpl /** * @see iaik.server.modules.keys.HardwareKeyModuleConfiguration#getSlotID() */ + @Override public String getSlotID() { return keyModule.getSlotID(); } @@ -72,6 +72,7 @@ public class HardwareKeyModuleConfigurationImpl /** * @see iaik.server.modules.keys.HardwareKeyModuleConfiguration#getUserPIN() */ + @Override public char[] getUserPIN() { return keyModule.getUserPIN().toCharArray(); } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/config/IaikConfigurator.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/config/IaikConfigurator.java index 44600db..8ca19e4 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/config/IaikConfigurator.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/config/IaikConfigurator.java @@ -21,29 +21,18 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.server.iaik.config; -import iaik.cms.IaikCCProvider; -import iaik.esi.sva.Configuration; -import iaik.pki.store.revocation.RevocationFactory; -import iaik.pki.store.revocation.RevocationSourceStore; -import iaik.pki.store.truststore.TrustStoreFactory; -import iaik.security.ec.provider.ECCelerate; -import iaik.server.ConfigurationData; -import iaik.server.Configurator; -import iaik.server.modules.keys.KeyEntryID; -import iaik.server.modules.keys.KeyModule; -import iaik.server.modules.keys.KeyModuleFactory; - -import java.security.Provider; -import java.security.Security; +import java.io.PrintWriter; +import java.io.StringWriter; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Set; +import org.slf4j.LoggerFactory; + import at.gv.egovernment.moa.spss.server.config.ConfigurationException; import at.gv.egovernment.moa.spss.server.config.ConfigurationProvider; import at.gv.egovernment.moa.spss.server.config.KeyGroup; @@ -54,76 +43,103 @@ import at.gv.egovernment.moa.spss.util.MessageProvider; import at.gv.egovernment.moa.spss.util.SecProviderUtils; import at.gv.egovernment.moaspss.logging.LogMsg; import at.gv.egovernment.moaspss.logging.Logger; +import iaik.logging.LogFactory; +import iaik.pki.store.revocation.RevocationFactory; +import iaik.pki.store.revocation.RevocationSourceStore; +import iaik.pki.store.truststore.TrustStoreFactory; +import iaik.server.ConfigurationData; +import iaik.server.Configurator; +import iaik.server.modules.keys.KeyEntryID; +import iaik.server.modules.keys.KeyModule; +import iaik.server.modules.keys.KeyModuleFactory; /** * A class responsible for configuring the IAIK MOA modules. - * + * * @author Patrick Peck * @version $Id$ */ public class IaikConfigurator { + private static final org.slf4j.Logger logger = LoggerFactory.getLogger(IaikConfigurator.class); + /** The warnings encountered during configuration. */ private List warnings = new ArrayList(); /** * Configure the IAIK MOA subsystem. - * - * + * + * * @param moaConfig The underlying MOA configuration. * @return Returns the config data of the underlying MOA subsystem - * @throws ConfigurationException An error occurred configuring the IAIK - * MOA subsystem. + * @throws ConfigurationException An error occurred configuring the IAIK MOA + * subsystem. */ public ConfigurationData configure(ConfigurationProvider moaConfig) - throws ConfigurationException { - ConfigurationData configData = new ConfigurationDataImpl(moaConfig); - + throws ConfigurationException { + final ConfigurationData configData = new ConfigurationDataImpl(moaConfig); + warnings = new ArrayList(); try { - TransactionId transId = new TransactionId("IaikConfigurator"); - - //iaik.esi.sva.Configuration config = new Configuration(IaikConfigurator.class.getResourceAsStream("/sva.config")); - - //SecProviderUtils.dumpSecProviders("Starting configuration"); - + final TransactionId transId = new TransactionId("IaikConfigurator"); + + // iaik.esi.sva.Configuration config = new + // Configuration(IaikConfigurator.class.getResourceAsStream("/sva.config")); + + // SecProviderUtils.dumpSecProviders("Starting configuration"); + + LogFactory.configure(configData.getLoggerConfig()); + try { - iaik.pki.Configurator.initCommon(configData.getLoggerConfig(), - transId); - //SecProviderUtils.dumpSecProviders("initCommon"); - String certStoreRoot = moaConfig.getCertStoreLocation(); - CertStoreConverter.convert(certStoreRoot, transId); + iaik.pki.Configurator.initCommon(configData.getLoggerConfig(), + transId); + // SecProviderUtils.dumpSecProviders("initCommon"); + final String certStoreRoot = moaConfig.getCertStoreLocation(); + CertStoreConverter.convert(certStoreRoot, transId); } finally { - //Security.removeProvider(ECCelerate.getInstance().getName()); + // Security.removeProvider(ECCelerate.getInstance().getName()); } - + Configurator.init(configData, transId); - + SecProviderUtils.dumpSecProviders("Fully configured!"); - - // Set customized CRL retriever to overcome a classloader problem when MOA is deployed in Tomcat - RevocationSourceStore rss = RevocationFactory.getInstance(transId).getRevocationSourceStore(); - //rss.setRetriever(new CRLRetriever(), RevocationSourceTypes.CRL); - if ((moaConfig.getSoftwareKeyModules().size() > 0) || (moaConfig.getHardwareKeyModules().size() > 0)) { + + // Set customized CRL retriever to overcome a classloader problem when MOA is + // deployed in Tomcat + final RevocationSourceStore rss = RevocationFactory.getInstance(transId).getRevocationSourceStore(); + // rss.setRetriever(new CRLRetriever(), RevocationSourceTypes.CRL); + if (moaConfig.getSoftwareKeyModules().size() > 0 || moaConfig.getHardwareKeyModules().size() > 0) { dumpKeyEntryIDs(); } checkKeyGroupConfig(moaConfig); TrustStoreFactory.reset(); - + return configData; - } catch (iaik.server.ConfigurationException e) { + } catch (final iaik.server.ConfigurationException e) { + logException(e); throw new ConfigurationException("config.08", null, e); - } catch (Throwable t) { + + } catch (final Throwable t) { + logException(t); throw new ConfigurationException("config.08", null, t); + } } + private void logException(Throwable e) { + final StringWriter out = new StringWriter(); + final PrintWriter writer = new PrintWriter(out); + e.printStackTrace(writer); + logger.error("IAIK_Module error: {}", out.toString()); + + } + /** * Return the warnings encountered during configuration. - * + * * @return The warnings. - */ + */ public List getWarnings() { return warnings; } @@ -133,71 +149,71 @@ public class IaikConfigurator { * <code>KeyModule</code>s to the log file. */ private void dumpKeyEntryIDs() { - MessageProvider msg = MessageProvider.getInstance(); - KeyModule module = KeyModuleFactory.getInstance(new TransactionId("dump")); - Set keyEntryIds = module.getPrivateKeyEntryIDs(); + final MessageProvider msg = MessageProvider.getInstance(); + final KeyModule module = KeyModuleFactory.getInstance(new TransactionId("dump")); + final Set keyEntryIds = module.getPrivateKeyEntryIDs(); Iterator iter; for (iter = keyEntryIds.iterator(); iter.hasNext();) { - KeyEntryID keyEntryId = (KeyEntryID) iter.next(); + final KeyEntryID keyEntryId = (KeyEntryID) iter.next(); Logger.info( - new LogMsg(msg.getMessage("config.19", new Object[] { keyEntryId }))); + new LogMsg(msg.getMessage("config.19", new Object[] { keyEntryId }))); } } /** - * Check that each key group entry in each key group can be resolved to a + * Check that each key group entry in each key group can be resolved to a * KeyEntryID. - * + * * Logs a warning for each key group entry that cannot be resolved. - * + * * @param moaConfig The MOA configuration to check. */ private void checkKeyGroupConfig(ConfigurationProvider moaConfig) { - Map keyGroups = moaConfig.getKeyGroups(); + final Map keyGroups = moaConfig.getKeyGroups(); Iterator iter; for (iter = keyGroups.values().iterator(); iter.hasNext();) { - KeyGroup keyGroup = (KeyGroup) iter.next(); - Set keyGroupEntries = keyGroup.getKeyGroupEntries(); + final KeyGroup keyGroup = (KeyGroup) iter.next(); + final Set keyGroupEntries = keyGroup.getKeyGroupEntries(); Iterator kgIter; for (kgIter = keyGroupEntries.iterator(); kgIter.hasNext();) { - KeyGroupEntry entry = (KeyGroupEntry) kgIter.next(); + final KeyGroupEntry entry = (KeyGroupEntry) kgIter.next(); if (!findKeyEntryID(entry)) { warn( - "config.31", - new Object[] { - keyGroup.getId(), - entry.getModuleID(), - entry.getIssuerDN(), - entry.getSerialNumber()}); + "config.31", + new Object[] { + keyGroup.getId(), + entry.getModuleID(), + entry.getIssuerDN(), + entry.getSerialNumber() }); } } } } /** - * Find out that a certain KeyGroupEntry could be resolved to a KeyEntryID - * by the Configurator. + * Find out that a certain KeyGroupEntry could be resolved to a KeyEntryID by + * the Configurator. * * @param keyGroupEntry The key group entry to find. * @return <code>true</code>, if the <code>keyGroupEntry</code> could be - * resolved to a <code>KeyEntryID</code>; otherwise <code>false</code>. + * resolved to a <code>KeyEntryID</code>; otherwise <code>false</code>. */ private boolean findKeyEntryID(KeyGroupEntry keyGroupEntry) { - KeyModule module = KeyModuleFactory.getInstance(new TransactionId("check")); - Set keyEntryIDs = module.getPrivateKeyEntryIDs(); + final KeyModule module = KeyModuleFactory.getInstance(new TransactionId("check")); + final Set keyEntryIDs = module.getPrivateKeyEntryIDs(); Iterator iter; for (iter = keyEntryIDs.iterator(); iter.hasNext();) { - KeyEntryID entry = (KeyEntryID) iter.next(); + final KeyEntryID entry = (KeyEntryID) iter.next(); if (entry.getCertificateIssuer().equals(keyGroupEntry.getIssuerDN()) - && entry.getCertificateSerialNumber().equals( - keyGroupEntry.getSerialNumber()) - && entry.getModuleID().equals(keyGroupEntry.getModuleID())) { + && entry.getCertificateSerialNumber().equals( + keyGroupEntry.getSerialNumber()) + && entry.getModuleID().equals(keyGroupEntry.getModuleID())) { return true; } } @@ -207,14 +223,14 @@ public class IaikConfigurator { /** * Log a warning. - * + * * @param messageId The message ID. - * @param args Additional parameters for the message. + * @param args Additional parameters for the message. * @see at.gv.egovernment.moa.spss.server.util.MessageProvider */ private void warn(String messageId, Object[] args) { - MessageProvider msg = MessageProvider.getInstance(); - String txt = msg.getMessage(messageId, args); + final MessageProvider msg = MessageProvider.getInstance(); + final String txt = msg.getMessage(messageId, args); Logger.warn(new LogMsg(txt)); warnings.add(txt); diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/config/LoggerConfigImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/config/LoggerConfigImpl.java index 317fcca..7ba2122 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/config/LoggerConfigImpl.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/config/LoggerConfigImpl.java @@ -21,7 +21,6 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.server.iaik.config; import java.util.Properties; @@ -32,24 +31,27 @@ import iaik.logging.LoggerConfig; /** * Default implementation of the <code>LoggerConfig</code> interface. - * + * * @author Patrick Peck * @version $Id$ */ public class LoggerConfigImpl implements LoggerConfig { - + /** The implementation of iaik.logging.LogFactory. */ - private static final String DEFAULT_IMPLEMENTATION = - "at.gv.egovernment.moa.spss.server.logging.IaikLogFactory"; + private static final String DEFAULT_IMPLEMENTATION = + "at.gv.egovernment.moa.spss.server.logging.IaikLogFactory"; + @Override public String getFactory() { return DEFAULT_IMPLEMENTATION; } + @Override public Properties getProperties() throws LogConfigurationException { return new Properties(); } + @Override public String getNodeId() { return LoggingContextManager.getInstance().getLoggingContext().getNodeID(); } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/config/PKIConfigurationImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/config/PKIConfigurationImpl.java index 6341609..d54bcfd 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/config/PKIConfigurationImpl.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/config/PKIConfigurationImpl.java @@ -23,93 +23,96 @@ package at.gv.egovernment.moa.spss.server.iaik.config; +import at.gv.egovernment.moa.spss.server.config.ConfigurationProvider; import iaik.pki.PKIConfiguration; import iaik.pki.pathvalidation.ValidationConfiguration; import iaik.pki.revocation.RevocationConfiguration; import iaik.pki.store.certstore.CertStoreConfiguration; import iaik.pki.store.revocation.archive.ArchiveConfiguration; -import at.gv.egovernment.moa.spss.server.config.ConfigurationProvider; /** * An implementation of the <code>PKIConfiguration</code> interface using data * from the MOA configuration. - * + * * @see iaik.pki.PKIConfiguration * @author Patrick Peck * @version $Id$ */ public class PKIConfigurationImpl implements PKIConfiguration { - /** The <code>CertStore</code> configuration. */ - private CertStoreConfiguration certStoreConfiguration; - /** The revocation checking configuration. */ - private RevocationConfiguration revocationConfiguration; - /** The revocation archive configuration. */ - private ArchiveConfiguration archiveConfiguration; - /** The certificate validation configuration. */ - private ValidationConfiguration validationConfiguration; - private int connectionTimeout; - private int readTimeout; + /** The <code>CertStore</code> configuration. */ + private final CertStoreConfiguration certStoreConfiguration; + /** The revocation checking configuration. */ + private final RevocationConfiguration revocationConfiguration; + /** The revocation archive configuration. */ + private ArchiveConfiguration archiveConfiguration; + /** The certificate validation configuration. */ + private final ValidationConfiguration validationConfiguration; + private final int connectionTimeout; + private final int readTimeout; - /** - * Create a new <code>PKIConfigurationImpl</code>. - * - * @param config - * The underlying MOA configuration which will be used to build - * the configuration data contained in this object. - */ - public PKIConfigurationImpl(ConfigurationProvider config) { + /** + * Create a new <code>PKIConfigurationImpl</code>. + * + * @param config The underlying MOA configuration which will be used to build + * the configuration data contained in this object. + */ + public PKIConfigurationImpl(ConfigurationProvider config) { - this.certStoreConfiguration = new CertStoreConfigurationImpl(config); - this.revocationConfiguration = new RevocationConfigurationImpl(config); + this.certStoreConfiguration = new CertStoreConfigurationImpl(config); + this.revocationConfiguration = new RevocationConfigurationImpl(config); - boolean archiveInfo = config.getEnableRevocationArchiving(); - if (archiveInfo) { - this.archiveConfiguration = new ArchiveConfigurationImpl(config); - } else { - this.archiveConfiguration = null; - } + final boolean archiveInfo = config.getEnableRevocationArchiving(); + if (archiveInfo) { + this.archiveConfiguration = new ArchiveConfigurationImpl(config); + } else { + this.archiveConfiguration = null; + } - this.validationConfiguration = new ValidationConfigurationImpl(config); - this.connectionTimeout = config.getConnectionTimeout(); - this.readTimeout = config.getReadTimeout(); - } + this.validationConfiguration = new ValidationConfigurationImpl(config); + this.connectionTimeout = config.getConnectionTimeout(); + this.readTimeout = config.getReadTimeout(); + } - /** - * @see iaik.pki.PKIConfiguration#getCertStoreConfiguration() - */ - public CertStoreConfiguration getCertStoreConfiguration() { - return certStoreConfiguration; - } + /** + * @see iaik.pki.PKIConfiguration#getCertStoreConfiguration() + */ + @Override + public CertStoreConfiguration getCertStoreConfiguration() { + return certStoreConfiguration; + } - /** - * @see iaik.pki.PKIConfiguration#getRevocationConfiguration() - */ - public RevocationConfiguration getRevocationConfiguration() { - return revocationConfiguration; - } + /** + * @see iaik.pki.PKIConfiguration#getRevocationConfiguration() + */ + @Override + public RevocationConfiguration getRevocationConfiguration() { + return revocationConfiguration; + } - /** - * @see iaik.pki.PKIConfiguration#getArchiveConfiguration() - */ - public ArchiveConfiguration getArchiveConfiguration() { - return archiveConfiguration; - } + /** + * @see iaik.pki.PKIConfiguration#getArchiveConfiguration() + */ + @Override + public ArchiveConfiguration getArchiveConfiguration() { + return archiveConfiguration; + } - /** - * @see iaik.pki.PKIConfiguration#getValidationConfiguration() - */ - public ValidationConfiguration getValidationConfiguration() { - return validationConfiguration; - } + /** + * @see iaik.pki.PKIConfiguration#getValidationConfiguration() + */ + @Override + public ValidationConfiguration getValidationConfiguration() { + return validationConfiguration; + } - @Override - public int getConnectTimeout() { - return this.connectionTimeout; - } + @Override + public int getConnectTimeout() { + return this.connectionTimeout; + } - @Override - public int getReadTimeout() { - return this.readTimeout; - } + @Override + public int getReadTimeout() { + return this.readTimeout; + } } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/config/RevocationConfigurationImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/config/RevocationConfigurationImpl.java index 5df84c9..6aa20cf 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/config/RevocationConfigurationImpl.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/config/RevocationConfigurationImpl.java @@ -23,9 +23,6 @@ package at.gv.egovernment.moa.spss.server.iaik.config; -import iaik.pki.revocation.RevocationConfiguration; -import iaik.pki.revocation.dbcrl.config.DBCrlConfig; - import java.security.cert.X509Certificate; import java.util.Collections; import java.util.Date; @@ -33,81 +30,85 @@ import java.util.Map; import java.util.Set; import at.gv.egovernment.moa.spss.server.config.ConfigurationProvider; +import iaik.pki.revocation.RevocationConfiguration; +import iaik.pki.revocation.dbcrl.config.DBCrlConfig; /** * An implementation of the <code>RevocationConfiguration</code> interface using * MOA configuration data. - * + * * @see iaik.pki.revocation.RevocationConfiguration * @author Patrick Peck * @version $Id$ */ -public class RevocationConfigurationImpl extends AbstractObservableConfiguration implements RevocationConfiguration { - - /** - * The <code>ConfigurationProvider</code> to read the configuration data - * from. - */ - private ConfigurationProvider config; - - /** - * Create a new <code>RevocationConfigurationImpl</code>. - * - * @param config - * The underlying MOA configuration containing the configuration - * data. - */ - public RevocationConfigurationImpl(ConfigurationProvider config) { - this.config = config; - } - - /** - * @see iaik.pki.revocation.RevocationConfiguration#getAlternativeDistributionPoints - */ - public Set getAlternativeDistributionPoints(X509Certificate cert, X509Certificate issuer, Date date) { - return config.getDistributionPoints(cert); - } - - /** - * @see iaik.pki.revocation.RevocationConfiguration#archiveRevocationInfo(java.lang.String, - * java.lang.String) - */ - public boolean archiveRevocationInfo(String type, String uri) { - return config.getEnableRevocationArchiving(); - } - - /** - * @see iaik.pki.revocation.RevocationConfiguration#getCrlRetentionInterval(java.lang.String) - */ - public Integer getCrlRetentionInterval(String issuername) { - Map map = config.getCrlRetentionIntervals(); - Integer interval = (Integer) map.get(issuername); - - return interval; - } - - @Override - public DBCrlConfig getDataBaseCRLConfig() { - // TODO AFITZEK IMPLEMENT THIS METHOD - return null; - } - - @Override - public boolean getKeepRevocationInfo() { - // TODO AFITZEK IMPLEMENT THIS METHOD - return false; - } - - @Override - public Set getPositiveOCSPResponders() { - // TODO AFITZEK IMPLEMENT THIS METHOD - return Collections.EMPTY_SET; - } - - @Override - public boolean skipIndirectCRLCheckForAlternativeDistributionPoints() { - // TODO AFITZEK IMPLEMENT THIS METHOD - return false; - } +public class RevocationConfigurationImpl extends AbstractObservableConfiguration implements + RevocationConfiguration { + + /** + * The <code>ConfigurationProvider</code> to read the configuration data from. + */ + private final ConfigurationProvider config; + + /** + * Create a new <code>RevocationConfigurationImpl</code>. + * + * @param config The underlying MOA configuration containing the configuration + * data. + */ + public RevocationConfigurationImpl(ConfigurationProvider config) { + this.config = config; + } + + /** + * @see iaik.pki.revocation.RevocationConfiguration#getAlternativeDistributionPoints + */ + @Override + public Set getAlternativeDistributionPoints(X509Certificate cert, X509Certificate issuer, Date date) { + return config.getDistributionPoints(cert); + } + + /** + * @see iaik.pki.revocation.RevocationConfiguration#archiveRevocationInfo(java.lang.String, + * java.lang.String) + */ + @Override + public boolean archiveRevocationInfo(String type, String uri) { + return config.getEnableRevocationArchiving(); + } + + /** + * @see iaik.pki.revocation.RevocationConfiguration#getCrlRetentionInterval(java.lang.String) + */ + @Override + public Integer getCrlRetentionInterval(String issuername) { + final Map map = config.getCrlRetentionIntervals(); + final Integer interval = (Integer) map.get(issuername); + + return interval; + } + + @Override + public DBCrlConfig getDataBaseCRLConfig() { + // TODO AFITZEK IMPLEMENT THIS METHOD + return null; + } + + @Override + public boolean getKeepRevocationInfo() { + // TODO AFITZEK IMPLEMENT THIS METHOD + return false; + } + + @Override + public Set getPositiveOCSPResponders() { + // TODO AFITZEK IMPLEMENT THIS METHOD + return Collections.EMPTY_SET; + } + + @Override + public boolean skipIndirectCRLCheckForAlternativeDistributionPoints() { + // TODO AFITZEK IMPLEMENT THIS METHOD + return false; + } } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/config/SoftwareKeyModuleConfigurationImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/config/SoftwareKeyModuleConfigurationImpl.java index 1aed76e..767b3f2 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/config/SoftwareKeyModuleConfigurationImpl.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/config/SoftwareKeyModuleConfigurationImpl.java @@ -21,40 +21,39 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.server.iaik.config; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.InputStream; -import iaik.server.modules.keys.ConfigurationException; -import iaik.server.modules.keys.SoftwareKeyModuleConfiguration; import at.gv.egovernment.moa.spss.server.config.SoftwareKeyModule; import at.gv.egovernment.moa.spss.util.MessageProvider; import at.gv.egovernment.moaspss.logging.LogMsg; import at.gv.egovernment.moaspss.logging.Logger; +import iaik.server.modules.keys.ConfigurationException; +import iaik.server.modules.keys.SoftwareKeyModuleConfiguration; /** * An implementation of the <code>SoftwareKeyModuleConfiguration</code> wrapping * a <code>SoftwareKeyModule</code> from the MOA configuration. - * + * * @see iaik.server.modules.keys.SoftwareKeyModuleConfiguration * @author Patrick Peck * @version $Id$ */ public class SoftwareKeyModuleConfigurationImpl - extends AbstractKeyModuleConfigurationImpl - implements SoftwareKeyModuleConfiguration { + extends AbstractKeyModuleConfigurationImpl + implements SoftwareKeyModuleConfiguration { /** The wrapped <code>SoftwareKeyModule</code>. */ - private SoftwareKeyModule keyModule; + private final SoftwareKeyModule keyModule; /** * Create a new <code>SoftwareKeyModuleConfigurationImpl</code>. - * + * * @param keyModule The <code>SoftwareKeyModule</code> from the underlying MOA - * configuration. + * configuration. */ public SoftwareKeyModuleConfigurationImpl(SoftwareKeyModule keyModule) { super(keyModule.getId()); @@ -64,6 +63,7 @@ public class SoftwareKeyModuleConfigurationImpl /** * @see iaik.server.modules.keys.SoftwareKeyModuleConfiguration#getKeyStoreTypeName() */ + @Override public String getKeyStoreTypeName() { return KEY_STORE_TYPE_NAME_PKCS12; } @@ -71,17 +71,18 @@ public class SoftwareKeyModuleConfigurationImpl /** * @see iaik.server.modules.keys.SoftwareKeyModuleConfiguration#getKeyStoreAsStream() */ + @Override public InputStream getKeyStoreAsStream() { - MessageProvider msg = MessageProvider.getInstance(); + final MessageProvider msg = MessageProvider.getInstance(); try { - String message = - msg.getMessage("config.18", new Object[] { keyModule.getFileName()}); + final String message = + msg.getMessage("config.18", new Object[] { keyModule.getFileName() }); Logger.info(new LogMsg(message)); return new FileInputStream(keyModule.getFileName()); - } catch (FileNotFoundException e) { - String message = - msg.getMessage("config.09", new Object[] { keyModule.getFileName()}); + } catch (final FileNotFoundException e) { + final String message = + msg.getMessage("config.09", new Object[] { keyModule.getFileName() }); throw new ConfigurationException(message, e, null); } @@ -90,6 +91,7 @@ public class SoftwareKeyModuleConfigurationImpl /** * @see iaik.server.modules.keys.SoftwareKeyModuleConfiguration#getKeyStoreAuthenticationData() */ + @Override public char[] getKeyStoreAuthenticationData() { return keyModule.getPassWord().toCharArray(); } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/config/ValidationConfigurationImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/config/ValidationConfigurationImpl.java index 9e26fb8..50c3926 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/config/ValidationConfigurationImpl.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/config/ValidationConfigurationImpl.java @@ -21,35 +21,34 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.server.iaik.config; import java.security.cert.X509Certificate; import java.security.spec.AlgorithmParameterSpec; -import iaik.pki.pathvalidation.ValidationConfiguration; - import at.gv.egovernment.moa.spss.server.config.ConfigurationProvider; +import iaik.pki.pathvalidation.ValidationConfiguration; /** * An implementation of the <code>ValidationConfiguration</code> interface using * MOA configuration data. - * + * * @see iaik.pki.pathvalidation.ValidationConfiguration * @author Patrick Peck * @version $Id$ */ public class ValidationConfigurationImpl - extends AbstractObservableConfiguration - implements ValidationConfiguration { + extends AbstractObservableConfiguration + implements ValidationConfiguration { - /** The <code>ConfigurationProvider</code> to read the configuration data - * from. */ - private ConfigurationProvider config; + /** + * The <code>ConfigurationProvider</code> to read the configuration data from. + */ + private final ConfigurationProvider config; /** * Create a new <code>ValidationConfigurationImpl</code>. - * + * * @param config The underlying MOA configuration data. */ public ValidationConfigurationImpl(ConfigurationProvider config) { @@ -59,6 +58,7 @@ public class ValidationConfigurationImpl /** * @see iaik.pki.pathvalidation.ValidationConfiguration#getChainingMode(java.security.cert.X509Certificate) */ + @Override public String getChainingMode(X509Certificate cert) { return config.getChainingMode(cert); } @@ -66,6 +66,7 @@ public class ValidationConfigurationImpl /** * @see iaik.pki.pathvalidation.ValidationConfiguration#getPublicKeyParamsAsSpec(java.security.cert.X509Certificate) */ + @Override public AlgorithmParameterSpec getPublicKeyParamsAsSpec(X509Certificate cert) { return null; } @@ -73,6 +74,7 @@ public class ValidationConfigurationImpl /** * @see iaik.pki.pathvalidation.ValidationConfiguration#getPublicKeyParamsAsCert(java.security.cert.X509Certificate) */ + @Override public X509Certificate getPublicKeyParamsAsCert(X509Certificate cert) { return null; } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/pki/PKIProfileImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/pki/PKIProfileImpl.java index b776255..0032dc6 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/pki/PKIProfileImpl.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/pki/PKIProfileImpl.java @@ -23,12 +23,6 @@ package at.gv.egovernment.moa.spss.server.iaik.pki; -import iaik.pki.PKIProfile; -import iaik.pki.pathvalidation.ValidationProfile; -import iaik.pki.revocation.RevocationProfile; -import iaik.pki.store.truststore.TrustStoreProfile; -import iaik.pki.store.truststore.TrustStoreTypes; - import java.util.Arrays; import at.gv.egovernment.moa.sig.tsl.exception.TslPKIException; @@ -42,179 +36,195 @@ import at.gv.egovernment.moa.spss.server.iaik.pki.revocation.RevocationProfileIm import at.gv.egovernment.moa.spss.server.iaik.pki.store.truststore.TrustStoreProfileImpl; import at.gv.egovernment.moa.spss.tsl.TSLServiceFactory; import at.gv.egovernment.moaspss.logging.Logger; +import iaik.pki.PKIProfile; +import iaik.pki.pathvalidation.ValidationProfile; +import iaik.pki.revocation.RevocationProfile; +import iaik.pki.store.truststore.TrustStoreProfile; /** * Implementation of the <code>PKIProfile</code> interface containing * information needed for certificate path validation. It uses configuration * data from the MOA configuration. - * + * * @author Patrick Peck * @version $Id$ */ public class PKIProfileImpl implements PKIProfile { - /** Profile information for revocation checking. */ - private RevocationProfile revocationProfile; - /** Profile information about the trust profile to use. */ - private TrustStoreProfile trustStoreProfile; - /** Profile information about the certificate validation. */ - private ValidationProfile validationProfile; - /** - * The <code>ConfigurationProvider</code> to read the MOA configuration data - * from. - */ - private ConfigurationProvider config; - - /** - * Create a new <code>PKIProfileImpl</code>. - * - * @param config - * The MOA configuration providing configuration data about - * certificate path validation. - * @param trustProfileID - * The trust profile ID denoting the location of the trust store. - * @throws MOAApplicationException - * An error occurred building the profile. - */ - public PKIProfileImpl(ConfigurationProvider config, String trustProfileID) throws MOAApplicationException { - - this.config = config; - setRevocationProfile(new RevocationProfileImpl(config)); - setValidationProfile(new ValidationProfileImpl(config)); - - //generate TrustStoreProfile from TrustStore configuration - internalTrustProfileBuilder(trustProfileID); - - } - - - private void internalTrustProfileBuilder(String trustProfileId) throws MOAApplicationException { - TrustProfile tp = (TrustProfile) config.getTrustProfile(trustProfileId); - if (tp != null) { - //build directory based trust store as default - - - if (tp.isTSLEnabled()) { - //build TSL truststore if enabled - TslTrustStoreProfile tslTrustStore; - try { - tslTrustStore = TSLServiceFactory.getTSLServiceClient(). - buildTrustStoreProfile( - tp.getCountries(), - tp.getAllowedTspStatus(), - tp.getAllowedTspServiceTypes(), - trustProfileId + "_TSL"); - - //build Directory based TrustStore - TrustStoreProfileImpl directoryTrustStore = new TrustStoreProfileImpl(trustProfileId + "_Directory", tp.getUri()); - - //generate a virtual truststore that concatenates the TSL TrustStore and the directory TrustStore - ChainingTrustStoreProfile chainedProfile = new ChainingTrustStoreProfile( - Arrays.asList(tslTrustStore, directoryTrustStore), - trustProfileId); - - //set this virtual truststore - setTrustStoreProfile(chainedProfile); - - } catch (TslPKIException e) { - Logger.error("Virtual TSL based TrustProfile generation FAILED.", e); - throw new MOAApplicationException("2900", new Object[] { trustProfileId }); - - } - - } else - setTrustStoreProfile(new TrustStoreProfileImpl(trustProfileId, tp.getUri())); - - } else { - throw new MOAApplicationException("2203", new Object[] { trustProfileId }); - - } - - } - - /** - * @see iaik.pki.PKIProfile#autoAddCertificates() - */ - /*public boolean autoAddCertificates() { - return useAuthorityInfoAccess() ? true : config.getAutoAddCertificates(); - }*/ - - /** - * @see iaik.pki.PKIProfile#getRevocationProfile() - */ - public RevocationProfile getRevocationProfile() { - return revocationProfile; - } - - /** - * Sets the <code>RevocationProfile</code>. - * - * @param revocationProfile - * The <code>RevocationProfile</code> used for revocation - * checking. - */ - protected void setRevocationProfile(RevocationProfile revocationProfile) { - this.revocationProfile = revocationProfile; - } - - /** - * @see iaik.pki.PKIProfile#getTrustStoreProfile() - */ - public TrustStoreProfile getTrustStoreProfile() { - return trustStoreProfile; - } - - /** - * Sets the <code>TrustStoreProfile</code>. - * - * @param trustStoreProfile - * The <code>TrustStoreProfile</code>. - */ - protected void setTrustStoreProfile(TrustStoreProfile trustStoreProfile) { - this.trustStoreProfile = trustStoreProfile; - } - - /** - * @see iaik.pki.PKIProfile#getValidationProfile() - */ - public ValidationProfile getValidationProfile() { - return validationProfile; - } - - /** - * Sets the <code>ValidationProfile</code>. - * - * @param validationProfile - * The <code>ValidationProfile</code> to set. - */ - protected void setValidationProfile(ValidationProfile validationProfile) { - this.validationProfile = validationProfile; - } - - /** - * @see iaik.pki.PKIProfile#useAuthorityInfoAccess() - */ - public boolean useAuthorityInfoAccess() { - return config.getUseAuthorityInfoAccess(); - } - - /** - * @see iaik.pki.PKIProfile#autoAddCertificates() - */ - @Override - public int autoAddCertificates() { - if(config.getAutoAddCertificates()) { - return PKIProfile.AUTO_ADD_EE_DISABLE; - } else { - return PKIProfile.AUTO_ADD_DISABLE; - } - // TODO AFITZEK allow saving of end entity certificates - } - - @Override - public TrustStoreProfile getIndirectRevocationTrustStoreProfile() { - // TODO AFITZEK IMPLEMENT THIS METHOD - return null; - } + /** Profile information for revocation checking. */ + private RevocationProfile revocationProfile; + /** Profile information about the trust profile to use. */ + private TrustStoreProfile trustStoreProfile; + /** Profile information about the certificate validation. */ + private ValidationProfile validationProfile; + /** + * The <code>ConfigurationProvider</code> to read the MOA configuration data + * from. + */ + private final ConfigurationProvider config; + + /** + * Create a new <code>PKIProfileImpl</code>. + * + * @param config The MOA configuration providing configuration data + * about certificate path validation. + * @param trustProfileID The trust profile ID denoting the location of the trust + * store. + * @throws MOAApplicationException An error occurred building the profile. + */ + public PKIProfileImpl(ConfigurationProvider config, String trustProfileID) throws MOAApplicationException { + + this.config = config; + setRevocationProfile(new RevocationProfileImpl(config)); + setValidationProfile(new ValidationProfileImpl(config)); + + // generate TrustStoreProfile from TrustStore configuration + internalTrustProfileBuilder(trustProfileID); + + } + + private void internalTrustProfileBuilder(String trustProfileId) throws MOAApplicationException { + final TrustProfile tp = config.getTrustProfile(trustProfileId); + if (tp != null) { + // build directory based trust store as default + + if (tp.isTSLEnabled()) { + TslTrustStoreProfile tslTrustStore; + try { + if (!TSLServiceFactory.isInitialized()) { + Logger.error("Can not build TrustProfile:" + trustProfileId + + " Reason: TrustProfile needs TSL support but TSL client NOT initialized."); + throw new TslPKIException("Trust Status-List service client is NOT initialized"); + + } + + // build TSL truststore if enabled + tslTrustStore = TSLServiceFactory.getTSLServiceClient().buildTrustStoreProfile( + tp.getCountries(), + tp.getAllowedTspStatus(), + tp.getAllowedTspServiceTypes(), + trustProfileId + "_TSL"); + + // build Directory based TrustStore + final TrustStoreProfileImpl directoryTrustStore = new TrustStoreProfileImpl(trustProfileId + + "_Directory", tp.getUri()); + + // generate a virtual truststore that concatenates the TSL TrustStore and the + // directory TrustStore + final ChainingTrustStoreProfile chainedProfile = new ChainingTrustStoreProfile( + Arrays.asList(tslTrustStore, directoryTrustStore), + trustProfileId); + + // set this virtual truststore + setTrustStoreProfile(chainedProfile); + + } catch (final TslPKIException e) { + Logger.error("Virtual TSL based TrustProfile generation FAILED.", e); + throw new MOAApplicationException("2900", new Object[] { trustProfileId }); + + } + + } else { + setTrustStoreProfile(new TrustStoreProfileImpl(trustProfileId, tp.getUri())); + } + + } else { + throw new MOAApplicationException("2203", new Object[] { trustProfileId }); + + } + + } + + /** + * @see iaik.pki.PKIProfile#autoAddCertificates() + */ + /* + * public boolean autoAddCertificates() { return useAuthorityInfoAccess() ? true + * : config.getAutoAddCertificates(); } + */ + + /** + * @see iaik.pki.PKIProfile#getRevocationProfile() + */ + @Override + public RevocationProfile getRevocationProfile() { + return revocationProfile; + } + + /** + * Sets the <code>RevocationProfile</code>. + * + * @param revocationProfile The <code>RevocationProfile</code> used for + * revocation checking. + */ + protected void setRevocationProfile(RevocationProfile revocationProfile) { + this.revocationProfile = revocationProfile; + } + + /** + * @see iaik.pki.PKIProfile#getTrustStoreProfile() + */ + @Override + public TrustStoreProfile getTrustStoreProfile() { + return trustStoreProfile; + } + + /** + * Sets the <code>TrustStoreProfile</code>. + * + * @param trustStoreProfile The <code>TrustStoreProfile</code>. + */ + protected void setTrustStoreProfile(TrustStoreProfile trustStoreProfile) { + this.trustStoreProfile = trustStoreProfile; + } + + /** + * @see iaik.pki.PKIProfile#getValidationProfile() + */ + @Override + public ValidationProfile getValidationProfile() { + return validationProfile; + } + + /** + * Sets the <code>ValidationProfile</code>. + * + * @param validationProfile The <code>ValidationProfile</code> to set. + */ + protected void setValidationProfile(ValidationProfile validationProfile) { + this.validationProfile = validationProfile; + } + + /** + * @see iaik.pki.PKIProfile#useAuthorityInfoAccess() + */ + @Override + public boolean useAuthorityInfoAccess() { + return config.getUseAuthorityInfoAccess(); + } + + /** + * @see iaik.pki.PKIProfile#autoAddCertificates() + */ + @Override + public int autoAddCertificates() { + if (config.getAutoAddCertificates()) { + if (config.getAutoAddEECertificates()) { + return PKIProfile.AUTO_ADD_ENABLE; + } else { + return PKIProfile.AUTO_ADD_EE_DISABLE; + } + + } else { + return PKIProfile.AUTO_ADD_DISABLE; + } + + } + + @Override + public TrustStoreProfile getIndirectRevocationTrustStoreProfile() { + // TODO AFITZEK IMPLEMENT THIS METHOD + return null; + } } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/pki/pathvalidation/ValidationProfileImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/pki/pathvalidation/ValidationProfileImpl.java index 7e62d60..76e1ed0 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/pki/pathvalidation/ValidationProfileImpl.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/pki/pathvalidation/ValidationProfileImpl.java @@ -21,40 +21,39 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.server.iaik.pki.pathvalidation; -import iaik.pki.pathvalidation.ValidationProfile; - import java.util.Collections; import java.util.Set; import at.gv.egovernment.moa.spss.server.config.ConfigurationProvider; +import iaik.pki.pathvalidation.ValidationProfile; /** * An implementation of the <code>ValidationProfile</code> interface providing - * information about certificat path validation. - * + * information about certificat path validation. + * * @author Patrick Peck * @version $Id$ */ public class ValidationProfileImpl implements ValidationProfile { - /** The <code>ConfigurationProvider</code> to read the configuration data - * from. */ - private ConfigurationProvider config; - private boolean initialAnyPolicyInhibit; - private boolean initialExplicitPolicy; - private boolean initialPolicyMappingInhibit; - private Set initialPolicySet; - private boolean nameConstraintsProcessing; - private boolean policyProcessing; + /** + * The <code>ConfigurationProvider</code> to read the configuration data from. + */ + private final ConfigurationProvider config; + private final boolean initialAnyPolicyInhibit; + private final boolean initialExplicitPolicy; + private final boolean initialPolicyMappingInhibit; + private final Set initialPolicySet; + private final boolean nameConstraintsProcessing; + private final boolean policyProcessing; /** * Create a new <code>ValidationProfileImpl</code> object. - * + * * This objects's fields are preset to the following values: - * + * * <ul> * <li><code>initialAnyPolicyInhibit = true</code></li> * <li><code>initialExplicitPoliy = true</code></li> @@ -64,9 +63,9 @@ public class ValidationProfileImpl implements ValidationProfile { * <li><code>nameConstraintsProcessing = false</code></li> * <li><code>revocationChecking = false</code></li> * </ul> - * - * @param config MOA configuration data for additional configuration - * information (currently unused). + * + * @param config MOA configuration data for additional configuration information + * (currently unused). */ public ValidationProfileImpl(ConfigurationProvider config) { this.config = config; @@ -81,6 +80,7 @@ public class ValidationProfileImpl implements ValidationProfile { /** * @see iaik.pki.pathvalidation.ValidationProfile#getInitialAnyPolicyInhibit() */ + @Override public boolean getInitialAnyPolicyInhibit() { return initialAnyPolicyInhibit; } @@ -88,6 +88,7 @@ public class ValidationProfileImpl implements ValidationProfile { /** * @see iaik.pki.pathvalidation.ValidationProfile#getInitialExplicitPolicy() */ + @Override public boolean getInitialExplicitPolicy() { return initialExplicitPolicy; } @@ -95,6 +96,7 @@ public class ValidationProfileImpl implements ValidationProfile { /** * @see iaik.pki.pathvalidation.ValidationProfile#getInitialPolicyMappingInhibit() */ + @Override public boolean getInitialPolicyMappingInhibit() { return initialPolicyMappingInhibit; } @@ -102,6 +104,7 @@ public class ValidationProfileImpl implements ValidationProfile { /** * @see iaik.pki.pathvalidation.ValidationProfile#getInitialPolicySet() */ + @Override public Set getInitialPolicySet() { return initialPolicySet; } @@ -109,6 +112,7 @@ public class ValidationProfileImpl implements ValidationProfile { /** * @see iaik.pki.pathvalidation.ValidationProfile#getPolicyProcessing() */ + @Override public boolean getPolicyProcessing() { return policyProcessing; } @@ -116,6 +120,7 @@ public class ValidationProfileImpl implements ValidationProfile { /** * @see iaik.pki.pathvalidation.ValidationProfile#getNameConstraintsProcessing() */ + @Override public boolean getNameConstraintsProcessing() { return nameConstraintsProcessing; } @@ -123,8 +128,8 @@ public class ValidationProfileImpl implements ValidationProfile { /** * @see iaik.pki.pathvalidation.ValidationProfile#getRevocationChecking() */ - public boolean getRevocationChecking() - { + @Override + public boolean getRevocationChecking() { return config.getEnableRevocationChecking(); } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/pki/revocation/RevocationProfileImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/pki/revocation/RevocationProfileImpl.java index 14627b2..5215131 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/pki/revocation/RevocationProfileImpl.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/pki/revocation/RevocationProfileImpl.java @@ -21,37 +21,37 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.server.iaik.pki.revocation; import java.security.cert.X509Certificate; +import at.gv.egovernment.moa.spss.server.config.ConfigurationProvider; import iaik.pki.revocation.RevocationProfile; import iaik.pki.revocation.RevocationSourceTypes; -import at.gv.egovernment.moa.spss.server.config.ConfigurationProvider; - /** * An implementation of the <code>RevocationProfile</code> interface providing * information about revocation status checking, based on MOA configuration * data. - * + * * @author Patrick Peck * @version $Id$ */ public class RevocationProfileImpl implements RevocationProfile { /** The default service order. */ private static final String[] DEFAULT_SERVICE_ORDER = - { RevocationSourceTypes.CRL, RevocationSourceTypes.OCSP }; - /** The <code>ConfigurationProvider</code> to read the MOA configuration data - * from. */ - private ConfigurationProvider config; + { RevocationSourceTypes.CRL, RevocationSourceTypes.OCSP }; + /** + * The <code>ConfigurationProvider</code> to read the MOA configuration data + * from. + */ + private final ConfigurationProvider config; /** The OCSP request hash algorithm. Currently only "SHA" is supported. */ private static final String oCSPRequestHashAlgorithm = "SHA"; /** * Create a new <code>RevocationProfileImpl</code>. - * + * * @param config The MOA configuration data. */ public RevocationProfileImpl(ConfigurationProvider config) { @@ -63,14 +63,15 @@ public class RevocationProfileImpl implements RevocationProfile { /** * @see iaik.pki.revocation.RevocationProfile#getMaxRevocationAge(String) */ - public long getMaxRevocationAge(String distributionPointUri) - { + @Override + public long getMaxRevocationAge(String distributionPointUri) { return config.getMaxRevocationAge(); } /** * @see iaik.pki.revocation.RevocationProfile#getOCSPRequestHashAlgorithm() */ + @Override public String getOCSPRequestHashAlgorithm() { return oCSPRequestHashAlgorithm; } @@ -78,10 +79,12 @@ public class RevocationProfileImpl implements RevocationProfile { /** * @see iaik.pki.revocation.RevocationProfile#getPreferredServiceOrder(java.security.cert.X509Certificate) */ - public String[] getPreferredServiceOrder(X509Certificate cert) - { - String[] serviceOrder = config.getServiceOrder(); - if (serviceOrder == null || serviceOrder.length == 0) return DEFAULT_SERVICE_ORDER; + @Override + public String[] getPreferredServiceOrder(X509Certificate cert) { + final String[] serviceOrder = config.getServiceOrder(); + if (serviceOrder == null || serviceOrder.length == 0) { + return DEFAULT_SERVICE_ORDER; + } return serviceOrder; } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/pki/store/truststore/TrustStoreProfileImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/pki/store/truststore/TrustStoreProfileImpl.java index c9f4f28..9ef3764 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/pki/store/truststore/TrustStoreProfileImpl.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/pki/store/truststore/TrustStoreProfileImpl.java @@ -21,89 +21,82 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.server.iaik.pki.store.truststore; import java.util.ArrayList; -import java.util.Iterator; import java.util.List; -import iaik.pki.store.truststore.TrustStoreProfile; -import iaik.pki.store.truststore.TrustStoreTypes; -import iaik.pki.store.observer.NotificationData; -import iaik.pki.store.observer.Observer; - import at.gv.egovernment.moa.spss.MOAApplicationException; import at.gv.egovernment.moa.spss.server.config.ConfigurationProvider; import at.gv.egovernment.moa.spss.server.config.TrustProfile; +import iaik.pki.store.observer.NotificationData; +import iaik.pki.store.observer.Observer; +import iaik.pki.store.truststore.TrustStoreProfile; +import iaik.pki.store.truststore.TrustStoreTypes; /** * An implementation of the <code>TrustStoreProfile</code> interface, using data * from the MOA configuration. - * - * @see iaik.pki.store.truststore.TrustStoreProfile + * + * @see iaik.pki.store.truststore.TrustStoreProfile * @author Patrick Peck * @version $Id$ */ public class TrustStoreProfileImpl implements TrustStoreProfile { /** The observers of this profile. */ - private List observers = new ArrayList(); - + private final List observers = new ArrayList(); + /** - * The trust profile identifier. + * The trust profile identifier. */ private String id_; - + /** The type of the trust profile. */ private String type; - /** The URI of the trust profile.*/ + /** The URI of the trust profile. */ private String URI; - /** * Create a new <code>TrustStoreProfileImpl</code>. - * - * @param config The MOA configuration data, from which trust store - * configuration data is read. + * + * @param config The MOA configuration data, from which trust store + * configuration data is read. * @param trustProfileId The trust profile id on which this - * <code>TrustStoreProfile</code> is based. - * @throws MOAApplicationException The <code>trustProfileId</code> could not - * be found in the MOA configuration. + * <code>TrustStoreProfile</code> is based. + * @throws MOAApplicationException The <code>trustProfileId</code> could not be + * found in the MOA configuration. */ public TrustStoreProfileImpl(String trustProfileId, String trustProfileUri) - throws MOAApplicationException { - id_ = trustProfileId; - setURI(trustProfileUri); - setType(TrustStoreTypes.DIRECTORY); - + throws MOAApplicationException { + id_ = trustProfileId; + setURI(trustProfileUri); + setType(TrustStoreTypes.DIRECTORY); + } - + /** * Create a new <code>TrustStoreProfileImpl</code>. - * - * @param config The MOA configuration data, from which trust store - * configuration data is read. + * + * @param config The MOA configuration data, from which trust store + * configuration data is read. * @param trustProfileId The trust profile id on which this - * <code>TrustStoreProfile</code> is based. - * @throws MOAApplicationException The <code>trustProfileId</code> could not - * be found in the MOA configuration. + * <code>TrustStoreProfile</code> is based. + * @throws MOAApplicationException The <code>trustProfileId</code> could not be + * found in the MOA configuration. */ @Deprecated public TrustStoreProfileImpl( - ConfigurationProvider config, - String trustProfileId) - throws MOAApplicationException { + ConfigurationProvider config, + String trustProfileId) + throws MOAApplicationException { - TrustProfile tp = (TrustProfile) config.getTrustProfile(trustProfileId); - if (tp != null) - { + final TrustProfile tp = config.getTrustProfile(trustProfileId); + if (tp != null) { id_ = trustProfileId; setURI(tp.getUri()); setType(TrustStoreTypes.DIRECTORY); - } - else - { + } else { throw new MOAApplicationException("2203", new Object[] { trustProfileId }); } } @@ -111,14 +104,15 @@ public class TrustStoreProfileImpl implements TrustStoreProfile { /** * @see iaik.pki.store.truststore.TrustStoreProfile#getType() */ + @Override public String getType() { return type; } /** * Sets the the trust store type. - * - * @param type The trust store type to set. + * + * @param type The trust store type to set. */ protected void setType(String type) { this.type = type; @@ -127,13 +121,14 @@ public class TrustStoreProfileImpl implements TrustStoreProfile { /** * @see iaik.pki.store.truststore.TrustStoreProfile#getURI() */ + @Override public String getURI() { return URI; } /** * Sets the trust store URI. - * + * * @param URI The trust store URI to set. */ protected void setURI(String URI) { @@ -162,8 +157,8 @@ public class TrustStoreProfileImpl implements TrustStoreProfile { * @see iaik.pki.store.observer.Observable#notify(iaik.pki.store.observer.NotificationData) */ public void notify(NotificationData notificationData) { - for (Iterator iter = observers.iterator(); iter.hasNext();) { - Observer observer = (Observer) iter.next(); + for (final Object observer2 : observers) { + final Observer observer = (Observer) observer2; observer.notify(notificationData); } } @@ -171,8 +166,8 @@ public class TrustStoreProfileImpl implements TrustStoreProfile { /** * @see iaik.pki.store.truststore.TrustStoreProfile#getId() */ - public String getId() - { + @Override + public String getId() { return id_; } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/xml/Base64TransformationImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/xml/Base64TransformationImpl.java index cc12861..1bba712 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/xml/Base64TransformationImpl.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/xml/Base64TransformationImpl.java @@ -21,7 +21,6 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.server.iaik.xml; import iaik.server.modules.xml.Base64Transformation; @@ -29,39 +28,39 @@ import iaik.server.modules.xml.Base64Transformation; /** * An implementation of the <code>Base64Transformation</code> * <code>Transformation</code> type. - * + * * @author Patrick Peck * @version $Id$ */ public class Base64TransformationImpl - extends TransformationImpl - implements Base64Transformation { - + extends TransformationImpl + implements Base64Transformation { + /** * Create a new <code>Base64TransformationImpl</code>. - * + * * @see java.lang.Object#Object() - */ + */ public Base64TransformationImpl() { setAlgorithmURI(Base64Transformation.BASE64_DECODING); } /** * Compare this <code>Base64Transformation</code> to another. - * - * @param other The object to compare this<code>Base64Transformation</code> - * to. + * + * @param other The object to compare this<code>Base64Transformation</code> to. * @return <code>true</code>, if <code>other</code> is a - * <code>Base64Transformation</code> and the algorithm URIs match, otherwise - * <code>false</code>. + * <code>Base64Transformation</code> and the algorithm URIs match, + * otherwise <code>false</code>. * @see java.lang.Object#equals(Object) - */ + */ + @Override public boolean equals(Object other) { if (other instanceof Base64Transformation) { - Base64Transformation transform = (Base64Transformation) other; + final Base64Transformation transform = (Base64Transformation) other; return getAlgorithmURI().equals(transform.getAlgorithmURI()); } return false; } - + } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/xml/ByteArrayDataObjectImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/xml/ByteArrayDataObjectImpl.java index 4d627d7..e498842 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/xml/ByteArrayDataObjectImpl.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/xml/ByteArrayDataObjectImpl.java @@ -21,7 +21,6 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.server.iaik.xml; import java.io.ByteArrayInputStream; @@ -31,22 +30,21 @@ import iaik.server.modules.xml.BinaryDataObject; /** * A <code>BinaryDataObject</code> encapsulating Base64 data. - * + * * @author Patrick Peck * @version $Id$ */ public class ByteArrayDataObjectImpl - extends DataObjectImpl - implements BinaryDataObject { + extends DataObjectImpl + implements BinaryDataObject { /** The binary data contained in this <code>BinaryDataObject</code>. */ private byte[] bytes; /** * Create a new <code>ByteArrayDataObjectImpl</code>. - * - * @param bytes The binary data contained in this - * <code>BinaryDataObject</code>. + * + * @param bytes The binary data contained in this <code>BinaryDataObject</code>. */ public ByteArrayDataObjectImpl(byte[] bytes) { setBytes(bytes); @@ -54,23 +52,22 @@ public class ByteArrayDataObjectImpl /** * Set the Base64 data. - * - * @param bytes The binary data contained in this - * <code>BinaryDataObject</code>. + * + * @param bytes The binary data contained in this <code>BinaryDataObject</code>. */ public void setBytes(byte[] bytes) { this.bytes = bytes; } /** - * Return the binary data encoded in the Base64 <code>String</code> as a - * stream. - * + * Return the binary data encoded in the Base64 <code>String</code> as a stream. + * * @return The binary data contained in this object, as a - * <code>InputStream</code>. Repeated calls to this function will return a - * new stream to the Base64 data. + * <code>InputStream</code>. Repeated calls to this function will return + * a new stream to the Base64 data. * @see iaik.server.modules.xml.BinaryDataObject#getInputStream() */ + @Override public InputStream getInputStream() { return new ByteArrayInputStream(bytes); } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/xml/ByteStreamDataObjectImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/xml/ByteStreamDataObjectImpl.java index b982c8e..af8ee66 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/xml/ByteStreamDataObjectImpl.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/xml/ByteStreamDataObjectImpl.java @@ -21,7 +21,6 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.server.iaik.xml; import java.io.InputStream; @@ -29,21 +28,21 @@ import java.io.InputStream; import iaik.server.modules.xml.BinaryDataObject; /** - * A <code>BinaryDataObject</code> encapsulating binary data from a stream. - * + * A <code>BinaryDataObject</code> encapsulating binary data from a stream. + * * @author Patrick Peck * @version $Id$ */ public class ByteStreamDataObjectImpl - extends DataObjectImpl - implements BinaryDataObject { + extends DataObjectImpl + implements BinaryDataObject { /** The <code>InputStream</code> containing the binary data. */ private InputStream inputStream; /** * Create a new <code>ByteStreamDataObjectImpl</code>. - * + * * @param inputStream The stream from which to read the binary data. */ public ByteStreamDataObjectImpl(InputStream inputStream) { @@ -52,7 +51,7 @@ public class ByteStreamDataObjectImpl /** * Set the input stream from which to read the binary data. - * + * * @param inputStream The input stream from which to read the binary data. */ public void setInputStream(InputStream inputStream) { @@ -61,11 +60,12 @@ public class ByteStreamDataObjectImpl /** * Return the binary data from this object as a stream. - * + * * @return The stream containing the binary data. Calling this function - * repeatedly will always return the same <code>InputStream</code>. + * repeatedly will always return the same <code>InputStream</code>. * @see iaik.server.modules.xml.BinaryDataObject#getInputStream() */ + @Override public InputStream getInputStream() { return inputStream; } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/xml/CanonicalizationImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/xml/CanonicalizationImpl.java index 0c3a8da..1e2a651 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/xml/CanonicalizationImpl.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/xml/CanonicalizationImpl.java @@ -21,7 +21,6 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.server.iaik.xml; import iaik.server.modules.xml.Canonicalization; @@ -29,36 +28,36 @@ import iaik.server.modules.xml.Canonicalization; /** * An implementation of the <code>CanonicalizationTransform</code> * <code>Transformation</code> type. - * + * * @author Patrick Peck * @version $Id$ */ public class CanonicalizationImpl - extends TransformationImpl - implements Canonicalization { - + extends TransformationImpl + implements Canonicalization { + /** * Create a new <code>CanonicalizationTransformImpl</code> object. - * + * * @param algorithmURI The canonicalization algorithm URI. - */ + */ public CanonicalizationImpl(String algorithmURI) { setAlgorithmURI(algorithmURI); } - + /** * Compare this object to another <code>Canonicalization</code>. - * - * @param other The object to compare this - * <code>Canonicalization</code> to. + * + * @param other The object to compare this <code>Canonicalization</code> to. * @return <code>true</code>, if <code>other</code> is a - * <code>Canonicalization</code> and the algorithm URIs match, otherwise - * <code>false</code>. + * <code>Canonicalization</code> and the algorithm URIs match, otherwise + * <code>false</code>. * @see java.lang.Object#equals(Object) */ + @Override public boolean equals(Object other) { if (other instanceof Canonicalization) { - Canonicalization c14n = (Canonicalization) other; + final Canonicalization c14n = (Canonicalization) other; return getAlgorithmURI().equals(c14n.getAlgorithmURI()); } return false; diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/xml/DataObjectImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/xml/DataObjectImpl.java index 702caaf..ac36875 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/xml/DataObjectImpl.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/xml/DataObjectImpl.java @@ -21,7 +21,6 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.server.iaik.xml; import iaik.server.modules.xml.DataObject; @@ -29,12 +28,12 @@ import iaik.server.modules.xml.DataObject; /** * Abstract base implementation for the classes derived from * <code>DataObject</code>. - * + * * @author Patrick Peck * @version $Id$ */ public abstract class DataObjectImpl implements DataObject { - + /** The MIME type of the data object. */ private String mimeType; /** The refernce ID. */ @@ -43,33 +42,35 @@ public abstract class DataObjectImpl implements DataObject { private String typeURI; /** The URI identifying the data. */ private String URI; - + /** * @see iaik.server.modules.xml.DataObject#getMimeType() */ + @Override public String getMimeType() { return mimeType; } /** * Set the mime type. - * + * * @param mimeType The mime type to set. */ public void setMimeType(String mimeType) { this.mimeType = mimeType; } - + /** * @see iaik.server.modules.xml.DataObject#getReferenceID() */ + @Override public String getReferenceID() { return referenceID; } - + /** * Set the reference ID. - * + * * @param referenceID The reference ID. */ public void setReferenceID(String referenceID) { @@ -79,13 +80,14 @@ public abstract class DataObjectImpl implements DataObject { /** * @see iaik.server.modules.xml.DataObject#getTypeURI() */ + @Override public String getTypeURI() { return typeURI; } /** * Set the type URI. - * + * * @param typeURI The type URI. */ public void setTypeURI(String typeURI) { @@ -95,13 +97,14 @@ public abstract class DataObjectImpl implements DataObject { /** * @see iaik.server.modules.xml.DataObject#getURI() */ + @Override public String getURI() { return URI; } - + /** * Set the URI. - * + * * @param URI The URI. */ public void setURI(String URI) { diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/xml/EnvelopedSignatureTransformationImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/xml/EnvelopedSignatureTransformationImpl.java index d582594..2c9f0e3 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/xml/EnvelopedSignatureTransformationImpl.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/xml/EnvelopedSignatureTransformationImpl.java @@ -21,7 +21,6 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.server.iaik.xml; import iaik.server.modules.xml.EnvelopedSignatureTransformation; @@ -29,13 +28,13 @@ import iaik.server.modules.xml.EnvelopedSignatureTransformation; /** * An implementation of the <code>EnvelopedSignatureTransformation</code> * <code>Transformation</code> type. - * + * * @author Patrick Peck * @version $Id$ */ public class EnvelopedSignatureTransformationImpl - extends TransformationImpl - implements EnvelopedSignatureTransformation { + extends TransformationImpl + implements EnvelopedSignatureTransformation { /** * Create a new <code>EnvelopedSignatureTransformationImpl</code>. @@ -46,18 +45,19 @@ public class EnvelopedSignatureTransformationImpl /** * Compare this object to another <code>EnvelopedSignatureTransformation</code>. - * - * @param other The object to compare this - * <code>EnvelopedSignatureTransformation</code> to. + * + * @param other The object to compare this + * <code>EnvelopedSignatureTransformation</code> to. * @return <code>true</code>, if <code>other</code> is a - * <code>EnvelopedSignatureTransformation</code>, otherwise - * <code>false</code>. + * <code>EnvelopedSignatureTransformation</code>, otherwise + * <code>false</code>. * @see java.lang.Object#equals(Object) */ + @Override public boolean equals(Object other) { if (other instanceof EnvelopedSignatureTransformation) { - EnvelopedSignatureTransformation transform = - (EnvelopedSignatureTransformation) other; + final EnvelopedSignatureTransformation transform = + (EnvelopedSignatureTransformation) other; return getAlgorithmURI().equals(transform.getAlgorithmURI()); } return false; diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/xml/ExclusiveCanonicalizationImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/xml/ExclusiveCanonicalizationImpl.java index dfadf0c..ce98e7f 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/xml/ExclusiveCanonicalizationImpl.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/xml/ExclusiveCanonicalizationImpl.java @@ -21,7 +21,6 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.server.iaik.xml; import java.util.List; @@ -29,38 +28,39 @@ import java.util.List; import iaik.server.modules.xml.ExclusiveCanonicalization; /** - * An implementation of the <code>ExclusiveCanonicalization</code> type - * of <code>Transformation</code>. - * + * An implementation of the <code>ExclusiveCanonicalization</code> type of + * <code>Transformation</code>. + * * @author Patrick Peck * @version $Id$ */ public class ExclusiveCanonicalizationImpl - extends TransformationImpl - implements ExclusiveCanonicalization { + extends TransformationImpl + implements ExclusiveCanonicalization { /** The prefixes of the namespaces to treat according to canonical XML. */ private List inclusiveNamespacePrefixes; /** * Create a new <code>ExclusiveCanonicalizationImpl</code> object. - * - * @param algorithmURI The exclusive canonicalization algorithm URI. + * + * @param algorithmURI The exclusive canonicalization algorithm + * URI. * @param inclusiveNamespacePrefixes The namespace prefixes to be processed - * according to canonical XML. + * according to canonical XML. */ public ExclusiveCanonicalizationImpl( - String algorithmURI, - List inclusiveNamespacePrefixes) { + String algorithmURI, + List inclusiveNamespacePrefixes) { setAlgorithmURI(algorithmURI); setInclusiveNamespacePrefixes(inclusiveNamespacePrefixes); } /** * Sets the namespace prefixes to be processed according to canonical XML. - * + * * @param inclusiveNamespacePrefixes The prefixes of the namespaces to treat - * according to canonical XML. + * according to canonical XML. */ protected void setInclusiveNamespacePrefixes(List inclusiveNamespacePrefixes) { this.inclusiveNamespacePrefixes = inclusiveNamespacePrefixes; @@ -69,29 +69,32 @@ public class ExclusiveCanonicalizationImpl /** * @see iaik.server.modules.xml.ExclusiveCanonicalization#getInclusiveNamespacePrefixes() */ + @Override public List getInclusiveNamespacePrefixes() { return inclusiveNamespacePrefixes; } /** * Compare this object to another <code>CanonicalizationTransform</code>. - * - * @param other The object to compare this - * <code>ExclusiveCanonicalization</code> to. + * + * @param other The object to compare this + * <code>ExclusiveCanonicalization</code> to. * @return <code>true</code>, if <code>other</code> is a - * <code>ExclusiveCanonicalization</code> and the algorithm URIs match, - * otherwise <code>false</code>. + * <code>ExclusiveCanonicalization</code> and the algorithm URIs match, + * otherwise <code>false</code>. * @see java.lang.Object#equals(Object) */ + @Override public boolean equals(Object other) { if (other instanceof ExclusiveCanonicalization) { - ExclusiveCanonicalization eC14n = - (ExclusiveCanonicalization) other; - boolean algURIEquals = getAlgorithmURI().equals(eC14n.getAlgorithmURI()); - boolean inclNSPrefs = - (getInclusiveNamespacePrefixes() == null || getInclusiveNamespacePrefixes().isEmpty()) - ? eC14n.getInclusiveNamespacePrefixes() == null || eC14n.getInclusiveNamespacePrefixes().isEmpty() - : getInclusiveNamespacePrefixes().equals(eC14n.getInclusiveNamespacePrefixes()); + final ExclusiveCanonicalization eC14n = + (ExclusiveCanonicalization) other; + final boolean algURIEquals = getAlgorithmURI().equals(eC14n.getAlgorithmURI()); + final boolean inclNSPrefs = + getInclusiveNamespacePrefixes() == null || getInclusiveNamespacePrefixes().isEmpty() + ? eC14n.getInclusiveNamespacePrefixes() == null || eC14n.getInclusiveNamespacePrefixes() + .isEmpty() + : getInclusiveNamespacePrefixes().equals(eC14n.getInclusiveNamespacePrefixes()); return algURIEquals && inclNSPrefs; } return false; diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/xml/SigningTimeImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/xml/SigningTimeImpl.java index 9026d33..9f4e22d 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/xml/SigningTimeImpl.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/xml/SigningTimeImpl.java @@ -21,7 +21,6 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.server.iaik.xml; import java.util.Date; @@ -30,18 +29,18 @@ import iaik.server.modules.xml.SigningTime; /** * An implementation of the <code>SigningTime</code> <code>Property</code>. - * + * * @author Patrick Peck * @version $Id$ */ public class SigningTimeImpl implements SigningTime { - + /** The signing time. */ - private Date signingTime; - + private final Date signingTime; + /** * Create a new <code>SigningTimeImpl</code>. - * + * * @param signingTime The signing time. */ public SigningTimeImpl(Date signingTime) { @@ -51,6 +50,7 @@ public class SigningTimeImpl implements SigningTime { /** * @see iaik.server.modules.xml.SigningTime#getSigningTime() */ + @Override public Date getSigningTime() { return signingTime; } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/xml/TransformationImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/xml/TransformationImpl.java index 1595446..fa3401e 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/xml/TransformationImpl.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/xml/TransformationImpl.java @@ -21,14 +21,13 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.server.iaik.xml; import iaik.server.modules.xml.Transformation; /** * Base implementation class for <code>Transformation</code> derived classes. - * + * * @author Patrick Peck * @version $Id$ */ @@ -36,32 +35,34 @@ public abstract class TransformationImpl implements Transformation { /** The algorithm URI identifying the transformation algorithm. */ private String algorithmURI; - + /** * @see iaik.server.modules.xml.Transformation#getAlgorithmURI() */ + @Override public String getAlgorithmURI() { return algorithmURI; } /** * Sets the algorithm URI. - * + * * @param algorithmURI The algorithm URI to set. */ protected void setAlgorithmURI(String algorithmURI) { this.algorithmURI = algorithmURI; } - + /** * Returns the hash code of the algorithm URI. Should be overridden if a * transformation distinguishes itself from others by more than just the * algorithm URI. - * + * * @see java.lang.Object#hashCode() */ + @Override public int hashCode() { return getAlgorithmURI().hashCode(); } - + } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/xml/XMLDataObjectImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/xml/XMLDataObjectImpl.java index e8444b9..0688d0e 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/xml/XMLDataObjectImpl.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/xml/XMLDataObjectImpl.java @@ -21,7 +21,6 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.server.iaik.xml; import org.w3c.dom.Element; @@ -30,22 +29,21 @@ import iaik.server.modules.xml.XMLDataObject; /** * A <code>DataObject</code> containing a single DOM element. - * + * * @author Patrick Peck * @version $Id$ */ public class XMLDataObjectImpl - extends DataObjectImpl - implements XMLDataObject { - - /** The XML data contained in this <code>XMLDataObject</code>. */ + extends DataObjectImpl + implements XMLDataObject { + + /** The XML data contained in this <code>XMLDataObject</code>. */ private Element element; - + /** * Create a new <code>XMLDataObjectImpl</code>. - * - * @param element The DOM element contained in this - * <code>XMLDataObject</code>. + * + * @param element The DOM element contained in this <code>XMLDataObject</code>. */ public XMLDataObjectImpl(Element element) { setElement(element); @@ -54,13 +52,14 @@ public class XMLDataObjectImpl /** * @see iaik.server.modules.xml.XMLDataObject#getElement() */ + @Override public Element getElement() { return element; } /** * Set the DOM element contained in this <code>XMLDataObject</code>. - * + * * @param element The DOM element to set. */ public void setElement(Element element) { diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/xml/XMLNodeListDataObjectImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/xml/XMLNodeListDataObjectImpl.java index 2fb9df9..51f96f0 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/xml/XMLNodeListDataObjectImpl.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/xml/XMLNodeListDataObjectImpl.java @@ -21,7 +21,6 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.server.iaik.xml; import org.w3c.dom.NodeList; @@ -30,22 +29,22 @@ import iaik.server.modules.xml.XMLNodeListDataObject; /** * A <code>DataObject</code> containing a list of DOM nodes. - * + * * @author Patrick Peck * @version $Id$ */ public class XMLNodeListDataObjectImpl - extends DataObjectImpl - implements XMLNodeListDataObject { + extends DataObjectImpl + implements XMLNodeListDataObject { /** The nodes contained in this <code>XMLNodeListDataObject</code>. */ private NodeList nodeList; /** * Create a new <code>XMLNodeListDataObjectImpl</code>. - * + * * @param nodeList The list of DOM nodes contained in this - * <code>XMLNodeListDataObject</code>. + * <code>XMLNodeListDataObject</code>. */ public XMLNodeListDataObjectImpl(NodeList nodeList) { setNodeList(nodeList); @@ -54,7 +53,7 @@ public class XMLNodeListDataObjectImpl /** * Set the list of DOM nodes contained in this * <code>XMLNodeListDataObject</code>. - * + * * @param nodeList The list of DOM nodes to set. */ public void setNodeList(NodeList nodeList) { @@ -64,6 +63,7 @@ public class XMLNodeListDataObjectImpl /** * @see iaik.server.modules.xml.XMLNodeListDataObject#getNodeList() */ + @Override public NodeList getNodeList() { return nodeList; } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/xml/XMLSignatureImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/xml/XMLSignatureImpl.java index 0774726..1844780 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/xml/XMLSignatureImpl.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/xml/XMLSignatureImpl.java @@ -21,7 +21,6 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.server.iaik.xml; import org.w3c.dom.Element; @@ -29,28 +28,28 @@ import org.w3c.dom.Element; import iaik.server.modules.xml.XMLSignature; /** - * An object containing an XMLDsig signature in the form of a + * An object containing an XMLDsig signature in the form of a * <code>dsig:Signature</code> DOM element. - * + * * @author Patrick Peck * @version $Id$ */ public class XMLSignatureImpl implements XMLSignature { /** The signature DOM element. */ private Element element; - + /** * Create a new <code>XMLSignatureImpl</code>. - * + * * @param element The <code>dsig:Signature</code> DOM element. */ public XMLSignatureImpl(Element element) { setElement(element); } - + /** * Set the <code>dsig:Signature</code> DOM element. - * + * * @param element The <code>dsig:Signature</code> element to set. */ public void setElement(Element element) { @@ -60,6 +59,7 @@ public class XMLSignatureImpl implements XMLSignature { /** * @see iaik.server.modules.xml.XMLSignature#getElement() */ + @Override public Element getElement() { return element; } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/xml/XPath2FilterImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/xml/XPath2FilterImpl.java index d309302..a44196a 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/xml/XPath2FilterImpl.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/xml/XPath2FilterImpl.java @@ -21,7 +21,6 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.server.iaik.xml; import java.util.Map; @@ -31,7 +30,7 @@ import iaik.server.modules.xml.XPath2Transformation.XPath2Filter; /** * An object encapsulating an XPath-Filter2 expression. - * + * * @author Patrick Peck * @version $Id$ */ @@ -46,17 +45,18 @@ public class XPath2FilterImpl implements XPath2Filter { /** * Create a new <code>XPath2FilterImpl</code> object. - * - * @param filterType The type of filter. Must be one of the filter type - * constants declared in <code>iaik.server.modules.xml.XPath2Transformation.XPath2Filter</code> - * @param xPathExpression The XPath expression belonging to this filter. + * + * @param filterType The type of filter. Must be one of the filter + * type constants declared in + * <code>iaik.server.modules.xml.XPath2Transformation.XPath2Filter</code> + * @param xPathExpression The XPath expression belonging to this filter. * @param namespaceDeclarations The namespace declarations visible for this - * XPath2Filter. + * XPath2Filter. */ public XPath2FilterImpl( - String filterType, - String xPathExpression, - Map namespaceDeclarations) { + String filterType, + String xPathExpression, + Map namespaceDeclarations) { setFilterType(filterType); setXPathExpression(xPathExpression); @@ -66,13 +66,14 @@ public class XPath2FilterImpl implements XPath2Filter { /** * @see iaik.server.modules.xml.XPath2Transformation.XPath2Filter#getFilterType() */ + @Override public String getFilterType() { return filterType; } /** * Set the filter type. - * + * * @param filterType The filter type to set. */ protected void setFilterType(String filterType) { @@ -82,13 +83,14 @@ public class XPath2FilterImpl implements XPath2Filter { /** * @see iaik.server.modules.xml.XPath2Transformation.XPath2Filter#getXPathExpression() */ + @Override public String getXPathExpression() { return xPathExpression; } /** * Set the XPath expression. - * + * * @param xPathExpression The XPath expression to set. */ protected void setXPathExpression(String xPathExpression) { @@ -98,15 +100,16 @@ public class XPath2FilterImpl implements XPath2Filter { /** * @see iaik.server.modules.xml.XPath2Transformation.XPath2Filter#getNamespaceDeclarations() */ + @Override public Map getNamespaceDeclarations() { return namespaceDeclarations; } /** * Set the namespace declarations. - * - * @param namespaceDeclarations The mapping between namespace prefixes and - * their associated URI. + * + * @param namespaceDeclarations The mapping between namespace prefixes and their + * associated URI. */ protected void setNamespaceDeclarations(Map namespaceDeclarations) { this.namespaceDeclarations = namespaceDeclarations; @@ -114,18 +117,19 @@ public class XPath2FilterImpl implements XPath2Filter { /** * Compare this object to another. - * + * * @param other The object to compare this <code>XPath2Filter</code> to. * @return <code>true</code>, if <code>other</code> is a - * <code>XPath2Filter</code> and the filter types match and the XPath - * expressions match. Otherwise <code>false</code> is returned. + * <code>XPath2Filter</code> and the filter types match and the XPath + * expressions match. Otherwise <code>false</code> is returned. * @see java.lang.Object#equals(java.lang.Object) */ + @Override public boolean equals(Object other) { if (other instanceof XPath2Transformation.XPath2Filter) { - XPath2Filter filter = (XPath2Transformation.XPath2Filter) other; + final XPath2Filter filter = (XPath2Transformation.XPath2Filter) other; return getFilterType().equals(filter.getFilterType()) - && getXPathExpression().equals(filter.getXPathExpression()); + && getXPathExpression().equals(filter.getXPathExpression()); } return false; } @@ -133,6 +137,7 @@ public class XPath2FilterImpl implements XPath2Filter { /** * @see java.lang.Object#hashCode() */ + @Override public int hashCode() { return getXPathExpression().hashCode() * 31 + getFilterType().hashCode(); } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/xml/XPath2TransformationImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/xml/XPath2TransformationImpl.java index f483b18..b49bd64 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/xml/XPath2TransformationImpl.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/xml/XPath2TransformationImpl.java @@ -21,7 +21,6 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.server.iaik.xml; import java.util.ArrayList; @@ -33,20 +32,20 @@ import iaik.server.modules.xml.XPath2Transformation; /** * An object encapsulating a <code>Transformation</code> containing several * XPath-Filter2 expressions. - * + * * @author Patrick Peck * @version $Id$ */ public class XPath2TransformationImpl - extends TransformationImpl - implements XPath2Transformation { + extends TransformationImpl + implements XPath2Transformation { /** The filters contained in this <code>XPath2Transformation</code> */ - private List xPathFilters = new ArrayList(); + private final List xPathFilters = new ArrayList(); /** * Create a new <code>XPath2TransformationImpl</code>. - * + * * The list of XPath-Filter2 expression is initially empty. */ public XPath2TransformationImpl() { @@ -56,13 +55,14 @@ public class XPath2TransformationImpl /** * @see iaik.server.modules.xml.XPath2Transformation#getXPathFilters() */ + @Override public List getXPathFilters() { return xPathFilters; } /** * Add an XPath-Filter2 expression to the list of filters. - * + * * @param filter The filter to add. */ public void addXPathFilter(XPath2Filter filter) { @@ -71,18 +71,18 @@ public class XPath2TransformationImpl /** * Compare this <code>XPath2Transformation</code> to another. - * - * @param other The object to compare this - * <code>XPath2Transformation</code> to. + * + * @param other The object to compare this <code>XPath2Transformation</code> to. * @return <code>true</code>, if <code>other</code> is an - * <code>XPath2Transformation</code> and <code>getXPathFilters()</code> equals - * <code>other.getXPathFilters()</code>. Otherwise <code>false</code> is - * returned. + * <code>XPath2Transformation</code> and <code>getXPathFilters()</code> + * equals <code>other.getXPathFilters()</code>. Otherwise + * <code>false</code> is returned. * @see java.lang.Object#equals(Object) */ + @Override public boolean equals(Object other) { if (other instanceof XPath2Transformation) { - XPath2Transformation transform = (XPath2Transformation) other; + final XPath2Transformation transform = (XPath2Transformation) other; return getXPathFilters().equals(transform.getXPathFilters()); } @@ -92,8 +92,9 @@ public class XPath2TransformationImpl /** * @see java.lang.Object#hashCode() */ + @Override public int hashCode() { - Iterator iter = getXPathFilters().iterator(); + final Iterator iter = getXPathFilters().iterator(); int hashCode = 0; while (iter.hasNext()) { diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/xml/XPathTransformationImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/xml/XPathTransformationImpl.java index 06cc319..65b33f4 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/xml/XPathTransformationImpl.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/xml/XPathTransformationImpl.java @@ -21,7 +21,6 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.server.iaik.xml; import java.util.Map; @@ -30,13 +29,13 @@ import iaik.server.modules.xml.XPathTransformation; /** * A <code>Transformation</code> containing an XPath expression. - * + * * @author Patrick Peck * @version $Id$ */ public class XPathTransformationImpl - extends TransformationImpl - implements XPathTransformation { + extends TransformationImpl + implements XPathTransformation { /** The XPath expression. */ private String xPathExpression; @@ -45,16 +44,16 @@ public class XPathTransformationImpl /** * Create a new <code>XPathTransformationImpl</code>. - * + * * The namespace declarations are initialized empty. - * - * @param xPathExpression The XPath expression this object will contain. + * + * @param xPathExpression The XPath expression this object will contain. * @param namespaceDeclarations The namespace declarations visible for this - * XPath. + * XPath. */ public XPathTransformationImpl( - String xPathExpression, - Map namespaceDeclarations) { + String xPathExpression, + Map namespaceDeclarations) { setAlgorithmURI(XPathTransformation.XPATH); setXPathExpression(xPathExpression); @@ -63,7 +62,7 @@ public class XPathTransformationImpl /** * Set the XPath expression. - * + * * @param xPathExpression The XPath expression. */ protected void setXPathExpression(String xPathExpression) { @@ -73,6 +72,7 @@ public class XPathTransformationImpl /** * @see iaik.server.modules.xml.XPathTransformation#getXPathExpression() */ + @Override public String getXPathExpression() { return xPathExpression; } @@ -80,15 +80,16 @@ public class XPathTransformationImpl /** * @see iaik.server.modules.xml.XPathTransformation#getNamespaceDeclarations() */ + @Override public Map getNamespaceDeclarations() { return namespaceDeclarations; } /** * Set the namespace declarations. - * - * @param namespaceDeclarations The mapping between namespace prefixes and - * their associated URI. + * + * @param namespaceDeclarations The mapping between namespace prefixes and their + * associated URI. */ protected void setNamespaceDeclarations(Map namespaceDeclarations) { this.namespaceDeclarations = namespaceDeclarations; @@ -96,17 +97,18 @@ public class XPathTransformationImpl /** * Compare this <code>XPathTransformation</code> to another. - * - * @param other The object to compare this - * <code>XPathTransformation</code> to. + * + * @param other The object to compare this <code>XPathTransformation</code> to. * @return <code>true</code>, if <code>other</code> is an - * <code>XPathTransformation</code> and if this object contains the same XPath - * expression as <code>other</code>. Otherwise <code>false</code> is returned. + * <code>XPathTransformation</code> and if this object contains the same + * XPath expression as <code>other</code>. Otherwise <code>false</code> + * is returned. * @see java.lang.Object#equals(Object) */ + @Override public boolean equals(Object other) { if (other instanceof XPathTransformation) { - XPathTransformation transform = (XPathTransformation) other; + final XPathTransformation transform = (XPathTransformation) other; return getXPathExpression().equals(transform.getXPathExpression()); } return false; @@ -115,6 +117,7 @@ public class XPathTransformationImpl /** * @see java.lang.Object#hashCode() */ + @Override public int hashCode() { return getXPathExpression().hashCode(); } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/xml/XSLTTransformationImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/xml/XSLTTransformationImpl.java index 9dc45fc..6c71f42 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/xml/XSLTTransformationImpl.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/xml/XSLTTransformationImpl.java @@ -45,204 +45,194 @@ import at.gv.egovernment.moaspss.util.XPathException; import at.gv.egovernment.moaspss.util.XPathUtils; import iaik.server.modules.xml.MOAXSecProvider; import iaik.server.modules.xml.XSLTTransformation; -import iaik.xml.crypto.dsig.XMLSignatureFactory; -import iaik.xml.filter.impl.dsig.CanonInputStream; -import iaik.xml.filter.impl.dsig.Canonicalizer; -import iaik.xml.filter.impl.dsig.Traverser; /** * A <code>Transformation</code> containing an XSLT transformation. - * + * * @author Patrick Peck * @version $Id$ */ public class XSLTTransformationImpl extends TransformationImpl implements XSLTTransformation { - /** The XSLT stylesheet. */ - private Element styleSheetElement; - /** - * The hash code of the canonicalized stylesheet. If calculated, this value - * should be != 0. - */ - private int hashCode; - - /** - * Create a new <code>XSLTTransformationImpl</code> object. - * - * @param styleSheetElement - * The XSLT stylesheet element. - */ - public XSLTTransformationImpl(Element styleSheetElement) { - setAlgorithmURI(XSLTTransformation.XSLT); - setStyleSheetElement(styleSheetElement); - } - - /** - * Set the XSLT stylesheet element. - * - * @param styleSheetElement - * The XSLT stylesheet element to set. - */ - protected void setStyleSheetElement(Element styleSheetElement) { - this.styleSheetElement = styleSheetElement; - this.hashCode = 0; - } - - /** - * @see iaik.server.modules.xml.XSLTTransformation#getStylesheetElement() - */ - public Element getStylesheetElement() { - return styleSheetElement; - } - - /** - * Compare this <code>XSLTTransformation</code> to another. - * - * @param other - * The object to compare this <code>XSLTTransformation</code> to. - * @return <code>true</code>, if <code>other</code> is an - * <code>XSLTTransformation</code> and if the canonicalized - * representations of the stylesheets contained in <code>this</code> - * and <code>other</code> match. Otherwise, <code>false</code> is - * returned. - * @see java.lang.Object#equals(Object) - */ - public boolean equals(Object other) { - if (other instanceof XSLTTransformation) { - XSLTTransformation xslt = (XSLTTransformation) other; - - return compareElements(getStylesheetElement(), xslt.getStylesheetElement()); - } - return false; - } - - /** - * @see java.lang.Object#hashCode() - */ - public int hashCode() { - if (hashCode == 0) { - hashCode = calculateHashCode(getStylesheetElement()); - } - return hashCode; - } - - /** - * Calculate the hash code for a DOM element by canonicalizing it. - * - * @param element - * The DOM element for which the hash code is to be calculated. - * @return int The hash code, or <code>0</code>, if it could not be - * calculated. - */ - private static int calculateHashCode(Element element) { - try { - InputStream is = canonicalize(element); - byte[] buf = new byte[256]; - int hashCode = 1; - int length; - int i; - - while ((length = is.read(buf)) > 0) { - for (i = 0; i < length; i++) { - hashCode += buf[i] * 31 + i; - } - } - is.close(); - return hashCode; - } catch (IOException e) { - return 0; - } catch (NoSuchAlgorithmException e) { - return 0; - } catch (InvalidAlgorithmParameterException e) { - return 0; - } catch (TransformException e) { - return 0; - } - } - - /** - * Compare two DOM elements by canonicalizing their contents and comparing - * the resulting byte stream. - * - * @param elem1 - * The 1st element to compare. - * @param elem2 - * The 2nd element to compare. - * @return boolean <code>true</code>, if the elements are considered equal - * after canonicalization. Otherwise <code>false</code> is returned. - */ - private static boolean compareElements(Element elem1, Element elem2) { - try { - InputStream is1 = canonicalize(elem1); - InputStream is2 = canonicalize(elem2); - return StreamUtils.compareStreams(is1, is2); - } catch (IOException e) { - return false; - } catch (NoSuchAlgorithmException e) { - return false; - } catch (InvalidAlgorithmParameterException e) { - return false; - } catch (TransformException e) { - return false; - } - } - - /** - * Canonicalize a DOM element. + /** The XSLT stylesheet. */ + private Element styleSheetElement; + /** + * The hash code of the canonicalized stylesheet. If calculated, this value + * should be != 0. + */ + private int hashCode; + + /** + * Create a new <code>XSLTTransformationImpl</code> object. + * + * @param styleSheetElement The XSLT stylesheet element. + */ + public XSLTTransformationImpl(Element styleSheetElement) { + setAlgorithmURI(XSLTTransformation.XSLT); + setStyleSheetElement(styleSheetElement); + } + + /** + * Set the XSLT stylesheet element. + * + * @param styleSheetElement The XSLT stylesheet element to set. + */ + protected void setStyleSheetElement(Element styleSheetElement) { + this.styleSheetElement = styleSheetElement; + this.hashCode = 0; + } + + /** + * @see iaik.server.modules.xml.XSLTTransformation#getStylesheetElement() + */ + @Override + public Element getStylesheetElement() { + return styleSheetElement; + } + + /** + * Compare this <code>XSLTTransformation</code> to another. + * + * @param other The object to compare this <code>XSLTTransformation</code> to. + * @return <code>true</code>, if <code>other</code> is an + * <code>XSLTTransformation</code> and if the canonicalized + * representations of the stylesheets contained in <code>this</code> and + * <code>other</code> match. Otherwise, <code>false</code> is returned. + * @see java.lang.Object#equals(Object) + */ + @Override + public boolean equals(Object other) { + if (other instanceof XSLTTransformation) { + final XSLTTransformation xslt = (XSLTTransformation) other; + + return compareElements(getStylesheetElement(), xslt.getStylesheetElement()); + } + return false; + } + + /** + * @see java.lang.Object#hashCode() + */ + @Override + public int hashCode() { + if (hashCode == 0) { + hashCode = calculateHashCode(getStylesheetElement()); + } + return hashCode; + } + + /** + * Calculate the hash code for a DOM element by canonicalizing it. * + * @param element The DOM element for which the hash code is to be calculated. + * @return int The hash code, or <code>0</code>, if it could not be calculated. + */ + private static int calculateHashCode(Element element) { + try { + final InputStream is = canonicalize(element); + final byte[] buf = new byte[256]; + int hashCode = 1; + int length; + int i; + + while ((length = is.read(buf)) > 0) { + for (i = 0; i < length; i++) { + hashCode += buf[i] * 31 + i; + } + } + is.close(); + return hashCode; + } catch (final IOException e) { + return 0; + } catch (final NoSuchAlgorithmException e) { + return 0; + } catch (final InvalidAlgorithmParameterException e) { + return 0; + } catch (final TransformException e) { + return 0; + } + } + + /** + * Compare two DOM elements by canonicalizing their contents and comparing the + * resulting byte stream. + * + * @param elem1 The 1st element to compare. + * @param elem2 The 2nd element to compare. + * @return boolean <code>true</code>, if the elements are considered equal after + * canonicalization. Otherwise <code>false</code> is returned. + */ + private static boolean compareElements(Element elem1, Element elem2) { + try { + final InputStream is1 = canonicalize(elem1); + final InputStream is2 = canonicalize(elem2); + return StreamUtils.compareStreams(is1, is2); + } catch (final IOException e) { + return false; + } catch (final NoSuchAlgorithmException e) { + return false; + } catch (final InvalidAlgorithmParameterException e) { + return false; + } catch (final TransformException e) { + return false; + } + } + + /** + * Canonicalize a DOM element. + * * @param element The element to canonicalize. * @return InputStream A stream with the canonicalized data. - * @throws InvalidAlgorithmParameterException - * @throws IOException - * @throws TransformException - * @throws AlgorithmException An error occurred canonicalizing the element. + * @throws InvalidAlgorithmParameterException + * @throws IOException + * @throws TransformException + * @throws AlgorithmException An error occurred canonicalizing + * the element. */ private static InputStream canonicalize(Element element) - throws NoSuchAlgorithmException, InvalidAlgorithmParameterException, IOException, TransformException { - // CanonicalizationMethod canonicalizationMethod = - // MOAXSecProvider.getXMLSignatureFactory().newCanonicalizationMethod( - // CanonicalizationMethod.EXCLUSIVE, new ExcC14NParameterSpec()); - - //CanonicalizationAlgorithm c14n = - // new CanonicalizationAlgorithmImplExclusiveCanonicalXML(); - //Traverser traverser = new Traverser(element, true, true); - //Canonicalizer canonicalizer = new Canonicalizer(traverser, false, true, null); - - //return new CanonInputStream(canonicalizer); - - CanonicalizationMethod canonicalizationMethod = - MOAXSecProvider.getXMLSignatureFactory().newCanonicalizationMethod( - CanonicalizationMethod.EXCLUSIVE, new ExcC14NParameterSpec()); - - //CanonicalizationAlgorithm c14n = - // new CanonicalizationAlgorithmImplExclusiveCanonicalXML(); - NodeList nodeList; - - try { - nodeList = XPathUtils.selectNodeList(element, - XPathUtils.ALL_NODES_XPATH); - } catch (XPathException e) { - nodeList = new NodeListAdapter(Collections.EMPTY_LIST); - } - //c14n.setInput(nodeList); - ByteArrayOutputStream baos = new ByteArrayOutputStream(); - canonicalizationMethod.transform(new - NodeListToNodeSetDataAdapter(nodeList), null, baos); - baos.close(); - return new ByteArrayInputStream(baos.toByteArray()); - /* - NodeList nodeList; - + throws NoSuchAlgorithmException, InvalidAlgorithmParameterException, IOException, TransformException { + // CanonicalizationMethod canonicalizationMethod = + // MOAXSecProvider.getXMLSignatureFactory().newCanonicalizationMethod( + // CanonicalizationMethod.EXCLUSIVE, new ExcC14NParameterSpec()); + + // CanonicalizationAlgorithm c14n = + // new CanonicalizationAlgorithmImplExclusiveCanonicalXML(); + // Traverser traverser = new Traverser(element, true, true); + // Canonicalizer canonicalizer = new Canonicalizer(traverser, false, true, + // null); + + // return new CanonInputStream(canonicalizer); + + final CanonicalizationMethod canonicalizationMethod = + MOAXSecProvider.getXMLSignatureFactory().newCanonicalizationMethod( + CanonicalizationMethod.EXCLUSIVE, new ExcC14NParameterSpec()); + + // CanonicalizationAlgorithm c14n = + // new CanonicalizationAlgorithmImplExclusiveCanonicalXML(); + NodeList nodeList; + try { - nodeList = XPathUtils.selectNodeList(element, XPathUtils.ALL_NODES_XPATH); - } catch (XPathException e) { + nodeList = XPathUtils.selectNodeList(element, + XPathUtils.ALL_NODES_XPATH); + } catch (final XPathException e) { nodeList = new NodeListAdapter(Collections.EMPTY_LIST); } - //c14n.setInput(nodeList); - ByteArrayOutputStream baos = new ByteArrayOutputStream(); + // c14n.setInput(nodeList); + final ByteArrayOutputStream baos = new ByteArrayOutputStream(); canonicalizationMethod.transform(new NodeListToNodeSetDataAdapter(nodeList), null, baos); baos.close(); - return new ByteArrayInputStream(baos.toByteArray());*/ + return new ByteArrayInputStream(baos.toByteArray()); + /* + * NodeList nodeList; + * + * try { nodeList = XPathUtils.selectNodeList(element, + * XPathUtils.ALL_NODES_XPATH); } catch (XPathException e) { nodeList = new + * NodeListAdapter(Collections.EMPTY_LIST); } //c14n.setInput(nodeList); + * ByteArrayOutputStream baos = new ByteArrayOutputStream(); + * canonicalizationMethod.transform(new NodeListToNodeSetDataAdapter(nodeList), + * null, baos); baos.close(); return new + * ByteArrayInputStream(baos.toByteArray()); + */ } } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/xmlsign/DataObjectTreatmentImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/xmlsign/DataObjectTreatmentImpl.java index 310f2dd..6eb565a 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/xmlsign/DataObjectTreatmentImpl.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/xmlsign/DataObjectTreatmentImpl.java @@ -21,19 +21,17 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.server.iaik.xmlsign; import java.util.List; -import iaik.server.modules.xmlsign.DataObjectTreatment; - import at.gv.egovernment.moa.spss.server.util.IdGenerator; +import iaik.server.modules.xmlsign.DataObjectTreatment; /** * An object encapsulating how to treat an associated <code>DataObject</code> * when creating a signature. - * + * * @author Patrick Peck * @version $Id$ */ @@ -51,29 +49,30 @@ public class DataObjectTreatmentImpl implements DataObjectTreatment { /** Whether to include the associated data object in the manifest. */ private boolean referenceInManifest; /** The object ID generator. */ - private IdGenerator objIdGen; - + private final IdGenerator objIdGen; + /** * Create a new <code>DataObjectTreatmentImpl</code>. - * + * * @param objIdGen The <code>IdGenerator</code> for unique object IDs. */ public DataObjectTreatmentImpl(IdGenerator objIdGen) { this.objIdGen = objIdGen; } - + /** * @see iaik.server.modules.xmlsign.DataObjectTreatment#getFinalContentType() */ + @Override public String getFinalContentType() { return finalContentType; } /** * Sets the final content type. - * + * * @param finalContentType The final content type to set (a MIME-type type of - * <code>String</code>). + * <code>String</code>). */ public void setFinalContentType(String finalContentType) { this.finalContentType = finalContentType; @@ -82,13 +81,14 @@ public class DataObjectTreatmentImpl implements DataObjectTreatment { /** * @see iaik.server.modules.xmlsign.DataObjectTreatment#getHashAlgorithmName() */ + @Override public String getHashAlgorithmName() { return hashAlgorithmName; } /** * Sets the hash algorithm name. - * + * * @param hashAlgorithmName The hash algorithm name to set. */ public void setHashAlgorithmName(String hashAlgorithmName) { @@ -98,16 +98,18 @@ public class DataObjectTreatmentImpl implements DataObjectTreatment { /** * @see iaik.server.modules.xmlsign.DataObjectTreatment#isIncludedInSignature() */ + @Override public boolean isIncludedInSignature() { return includedInSignature; } /** - * Sets whether the associated <code>DataObject</code> is to be included in - * the signature. - * + * Sets whether the associated <code>DataObject</code> is to be included in the + * signature. + * * @param includedInSignature If <code>true</code>, the associated - * <code>DataObject</code> will be included in the signature, otherwise not. + * <code>DataObject</code> will be included in the + * signature, otherwise not. */ public void setIncludedInSignature(boolean includedInSignature) { this.includedInSignature = includedInSignature; @@ -116,16 +118,18 @@ public class DataObjectTreatmentImpl implements DataObjectTreatment { /** * @see iaik.server.modules.xmlsign.DataObjectTreatment#isReferenceInManifest() */ + @Override public boolean isReferenceInManifest() { return referenceInManifest; } /** - * Sets whether the associated <code>DataObject</code> is - * to be included in the <code>dsig:Manifest</code>. - * + * Sets whether the associated <code>DataObject</code> is to be included in the + * <code>dsig:Manifest</code>. + * * @param referenceInManifest If <code>true</code>, the associated - * <code>DataObject</code> will be included in the manifest, otherwise not. + * <code>DataObject</code> will be included in the + * manifest, otherwise not. */ public void setReferenceInManifest(boolean referenceInManifest) { this.referenceInManifest = referenceInManifest; @@ -134,13 +138,14 @@ public class DataObjectTreatmentImpl implements DataObjectTreatment { /** * @see iaik.server.modules.xmlsign.DataObjectTreatment#getTransformationList() */ + @Override public List getTransformationList() { return transformationList; } /** * Set the list of transformations for the associated <code>DataObject</code>. - * + * * @param transformationList The transformations to set. */ public void setTransformationList(List transformationList) { @@ -150,6 +155,7 @@ public class DataObjectTreatmentImpl implements DataObjectTreatment { /** * @see iaik.server.modules.xmlsign.DataObjectTreatment#getTransformationSupplements() */ + @Override public List getTransformationSupplements() { return transformationSupplements; } @@ -157,16 +163,17 @@ public class DataObjectTreatmentImpl implements DataObjectTreatment { /** * Sets the transformation supplements for the associated * <code>DataObject</code>. - * + * * @param transformationSupplements The transformation supplements to set. */ public void setTransformationSupplements(List transformationSupplements) { this.transformationSupplements = transformationSupplements; } - + /** * @see iaik.server.modules.xmlsign.DataObjectTreatment#getDsigDataObjectID() */ + @Override public String getDsigDataObjectID() { return objIdGen.uniqueId(); } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/xmlsign/XMLSignatureCreationProfileImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/xmlsign/XMLSignatureCreationProfileImpl.java index 9d6e3d2..516e3d8 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/xmlsign/XMLSignatureCreationProfileImpl.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/xmlsign/XMLSignatureCreationProfileImpl.java @@ -21,9 +21,16 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.server.iaik.xmlsign; +import java.util.List; +import java.util.Set; + +import at.gv.egovernment.moa.spss.server.logging.TransactionId; +import at.gv.egovernment.moa.spss.server.transaction.TransactionContext; +import at.gv.egovernment.moa.spss.server.transaction.TransactionContextManager; +import at.gv.egovernment.moa.spss.server.util.IdGenerator; +import at.gv.egovernment.moaspss.logging.Logger; import iaik.server.modules.algorithms.SignatureAlgorithms; import iaik.server.modules.keys.AlgorithmUnavailableException; import iaik.server.modules.keys.KeyEntryID; @@ -34,23 +41,14 @@ import iaik.server.modules.xml.Canonicalization; import iaik.server.modules.xmlsign.XMLSignatureCreationProfile; import iaik.server.modules.xmlsign.XMLSignatureInsertionLocation; -import java.util.List; -import java.util.Set; - -import at.gv.egovernment.moa.spss.server.logging.TransactionId; -import at.gv.egovernment.moa.spss.server.transaction.TransactionContext; -import at.gv.egovernment.moa.spss.server.transaction.TransactionContextManager; -import at.gv.egovernment.moa.spss.server.util.IdGenerator; -import at.gv.egovernment.moaspss.logging.Logger; - /** * An object providing auxiliary information for creating an XML signature. - * + * * @author Patrick Peck * @version $Id$ */ public class XMLSignatureCreationProfileImpl - implements XMLSignatureCreationProfile { + implements XMLSignatureCreationProfile { /** The transformations to apply to a data object. */ private List dataObjectTreatmentList; @@ -58,7 +56,7 @@ public class XMLSignatureCreationProfileImpl private Set keySet; /** The type URI of the signature manifest. */ private String securityLayerManifestTypeURI; - /** Whether the created signature is to be Security Layer conform. */ + /** Whether the created signature is to be Security Layer conform. */ private boolean securityLayerConform; /** Where to insert the signature into the signature environment. */ private XMLSignatureInsertionLocation signatureInsertionLocation; @@ -66,55 +64,55 @@ public class XMLSignatureCreationProfileImpl private String signatureStructureType; /** The type of <code>Canonicalization</code> to use for the signed info. */ private Canonicalization signedInfoCanonicalization; - /** Properties to be signed during signature creation. */ + /** Properties to be signed during signature creation. */ private List signedProperties; /** The ID generator for signature IDs. */ - private IdGenerator signatureIDGenerator; + private final IdGenerator signatureIDGenerator; /** The ID generator for manifst IDs. */ - private IdGenerator manifestIDGenerator; + private final IdGenerator manifestIDGenerator; /** The ID generator for XMLDsig manifest IDs. */ - private IdGenerator dsigManifestIDGenerator; + private final IdGenerator dsigManifestIDGenerator; /** The ID generator for signed property IDs. */ - private IdGenerator propertyIDGenerator; - /** The selected digest method algorithm if XAdES 1.4.2 is used */ - private String digestMethodXAdES142; - - + private final IdGenerator propertyIDGenerator; + /** The selected digest method algorithm if XAdES 1.4.2 is used */ + private final String digestMethodXAdES142; + /** * Create a new <code>XMLSignatureCreationProfileImpl</code>. - * - * @param createProfileCount Provides external information about the - * number of calls to the signature creation module, using the same request. - * @param reservedIDs The set of IDs that must not be used while generating - * new IDs. + * + * @param createProfileCount Provides external information about the number of + * calls to the signature creation module, using the + * same request. + * @param reservedIDs The set of IDs that must not be used while + * generating new IDs. */ public XMLSignatureCreationProfileImpl( - int createProfileCount, - Set reservedIDs, - String digestMethodXAdES142) { + int createProfileCount, + Set reservedIDs, + String digestMethodXAdES142) { signatureIDGenerator = - new IdGenerator("signature-" + createProfileCount, reservedIDs); + new IdGenerator("signature-" + createProfileCount, reservedIDs); manifestIDGenerator = - new IdGenerator("manifest-" + createProfileCount, reservedIDs); + new IdGenerator("manifest-" + createProfileCount, reservedIDs); dsigManifestIDGenerator = - new IdGenerator("dsig-manifest-" + createProfileCount, reservedIDs); + new IdGenerator("dsig-manifest-" + createProfileCount, reservedIDs); propertyIDGenerator = - new IdGenerator("etsi-signed-" + createProfileCount, reservedIDs); + new IdGenerator("etsi-signed-" + createProfileCount, reservedIDs); this.digestMethodXAdES142 = digestMethodXAdES142; } /** * @see iaik.server.modules.xmlsign.XMLSignatureCreationProfile#getDataObjectTreatmentList() */ + @Override public List getDataObjectTreatmentList() { return dataObjectTreatmentList; } /** * Sets the list of <code>DataObjectTreatment</code>s. - * - * @param dataObjectTreatmentList The <code>DataObjectTreatment</code>s to - * set. + * + * @param dataObjectTreatmentList The <code>DataObjectTreatment</code>s to set. */ public void setDataObjectTreatmentList(List dataObjectTreatmentList) { this.dataObjectTreatmentList = dataObjectTreatmentList; @@ -123,6 +121,7 @@ public class XMLSignatureCreationProfileImpl /** * @see iaik.server.modules.xmlsign.XMLSignatureCreationProfile#getKeySet() */ + @Override public Set getKeySet() { return keySet; } @@ -130,7 +129,7 @@ public class XMLSignatureCreationProfileImpl /** * Set the set of <code>KeyEntryID</code>s which may be used for signature * creation. - * + * * @param keySet The set of <code>KeyEntryID</code>s to set. */ public void setKeySet(Set keySet) { @@ -140,15 +139,15 @@ public class XMLSignatureCreationProfileImpl /** * @see iaik.server.modules.xmlsign.XMLSignatureCreationProfile#getSecurityLayerManifestTypeURI() */ + @Override public String getSecurityLayerManifestTypeURI() { return securityLayerManifestTypeURI; } /** * Set the SecurityLayerManifestTypeURI. - * - * @param securityLayerManifestTypeURI The SecurityLayerManifestTypeURI to - * set. + * + * @param securityLayerManifestTypeURI The SecurityLayerManifestTypeURI to set. */ public void setSecurityLayerManifestTypeURI(String securityLayerManifestTypeURI) { this.securityLayerManifestTypeURI = securityLayerManifestTypeURI; @@ -157,132 +156,131 @@ public class XMLSignatureCreationProfileImpl /** * @see iaik.server.modules.xmlsign.XMLSignatureCreationProfile#getSignatureAlgorithmName(KeyEntryID) */ + @Override public String getSignatureAlgorithmName(KeyEntryID selectedKeyID) - throws AlgorithmUnavailableException { + throws AlgorithmUnavailableException { - TransactionContext context = - TransactionContextManager.getInstance().getTransactionContext(); - TransactionId tid = new TransactionId(context.getTransactionID()); - KeyModule module = KeyModuleFactory.getInstance(tid); + final TransactionContext context = + TransactionContextManager.getInstance().getTransactionContext(); + final TransactionId tid = new TransactionId(context.getTransactionID()); + final KeyModule module = KeyModuleFactory.getInstance(tid); Set algorithms; try { algorithms = module.getSupportedSignatureAlgorithms(selectedKeyID); - } catch (UnknownKeyException e) { + } catch (final UnknownKeyException e) { throw new AlgorithmUnavailableException( - "Unknown key entry: " + selectedKeyID, - e, - null); + "Unknown key entry: " + selectedKeyID, + e, + null); } - + if (digestMethodXAdES142 == null) { - // XAdES 1.4.2 not enabled - legacy MOA - if (algorithms.contains(SignatureAlgorithms.MD2_WITH_RSA) - || algorithms.contains(SignatureAlgorithms.MD5_WITH_RSA) - || algorithms.contains(SignatureAlgorithms.RIPEMD128_WITH_RSA) - || algorithms.contains(SignatureAlgorithms.RIPEMD160_WITH_RSA) - || algorithms.contains(SignatureAlgorithms.SHA1_WITH_RSA) - || algorithms.contains(SignatureAlgorithms.SHA256_WITH_RSA)) { - - return SignatureAlgorithms.SHA1_WITH_RSA; - } else if ( - algorithms.contains(SignatureAlgorithms.ECDSA)) { - return SignatureAlgorithms.ECDSA; - } else if ( - algorithms.contains(SignatureAlgorithms.DSA)) { - return SignatureAlgorithms.DSA; + // XAdES 1.4.2 not enabled - legacy MOA + if (algorithms.contains(SignatureAlgorithms.MD2_WITH_RSA) + || algorithms.contains(SignatureAlgorithms.MD5_WITH_RSA) + || algorithms.contains(SignatureAlgorithms.RIPEMD128_WITH_RSA) + || algorithms.contains(SignatureAlgorithms.RIPEMD160_WITH_RSA) + || algorithms.contains(SignatureAlgorithms.SHA1_WITH_RSA) + || algorithms.contains(SignatureAlgorithms.SHA256_WITH_RSA)) { + + return SignatureAlgorithms.SHA1_WITH_RSA; + } else if (algorithms.contains(SignatureAlgorithms.ECDSA)) { + return SignatureAlgorithms.ECDSA; + } else if (algorithms.contains(SignatureAlgorithms.DSA)) { + return SignatureAlgorithms.DSA; + } else { + throw new AlgorithmUnavailableException( + "No algorithm for key entry: " + selectedKeyID, + null, + null); + } + } else { + // XAdES 1.4.2 is enabled: select signature algorithm according to selected + // digest method + if (digestMethodXAdES142.compareTo("SHA-1") == 0) { + Logger.warn( + "XAdES version 1.4.2 is enabled, but SHA-1 is configured as digest algorithm. Please revise a use of a more secure digest algorithm out of the SHA-2 family (e.g. SHA-256, SHA-384, SHA-512)"); + + if (algorithms.contains(SignatureAlgorithms.SHA1_WITH_RSA)) { + return SignatureAlgorithms.SHA1_WITH_RSA; + + } else if (algorithms.contains(SignatureAlgorithms.ECDSA)) { + return SignatureAlgorithms.ECDSA; + + } else if (algorithms.contains(SignatureAlgorithms.DSA)) { + return SignatureAlgorithms.DSA; + } else { - throw new AlgorithmUnavailableException( - "No algorithm for key entry: " + selectedKeyID, - null, - null); + throw new AlgorithmUnavailableException( + "No algorithm for key entry: " + selectedKeyID, + null, + null); } + + } else if (digestMethodXAdES142.compareTo("SHA-256") == 0) { + if (algorithms.contains(SignatureAlgorithms.SHA256_WITH_RSA)) { + return SignatureAlgorithms.SHA256_WITH_RSA; + + } else if (algorithms.contains(SignatureAlgorithms.SHA256_WITH_ECDSA)) { + return SignatureAlgorithms.SHA256_WITH_ECDSA; + + } else if (algorithms.contains(SignatureAlgorithms.DSA)) { + return SignatureAlgorithms.DSA; + + } else { + throw new AlgorithmUnavailableException( + "No algorithm for key entry: " + selectedKeyID, + null, + null); + } + } else if (digestMethodXAdES142.compareTo("SHA-384") == 0) { + if (algorithms.contains(SignatureAlgorithms.SHA384_WITH_RSA)) { + return SignatureAlgorithms.SHA384_WITH_RSA; + + } else if (algorithms.contains(SignatureAlgorithms.SHA384_WITH_ECDSA)) { + return SignatureAlgorithms.SHA384_WITH_ECDSA; + + } else if (algorithms.contains(SignatureAlgorithms.DSA)) { + return SignatureAlgorithms.DSA; + + } else { + throw new AlgorithmUnavailableException( + "No algorithm for key entry: " + selectedKeyID, + null, + null); + } + } else if (digestMethodXAdES142.compareTo("SHA-512") == 0) { + if (algorithms.contains(SignatureAlgorithms.SHA512_WITH_RSA)) { + return SignatureAlgorithms.SHA512_WITH_RSA; + + } else if (algorithms.contains(SignatureAlgorithms.SHA512_WITH_ECDSA)) { + return SignatureAlgorithms.SHA512_WITH_ECDSA; + + } else if (algorithms.contains(SignatureAlgorithms.DSA)) { + return SignatureAlgorithms.DSA; + + } else { + throw new AlgorithmUnavailableException( + "No algorithm for key entry: " + selectedKeyID, + null, + null); + } + } else { + throw new AlgorithmUnavailableException( + "No signature algorithm found for digest algorithm '" + digestMethodXAdES142, + null, + null); + } + } - else { - // XAdES 1.4.2 is enabled: select signature algorithm according to selected digest method - if (digestMethodXAdES142.compareTo("SHA-1") == 0) { - Logger.warn("XAdES version 1.4.2 is enabled, but SHA-1 is configured as digest algorithm. Please revise a use of a more secure digest algorithm out of the SHA-2 family (e.g. SHA-256, SHA-384, SHA-512)"); - - if (algorithms.contains(SignatureAlgorithms.SHA1_WITH_RSA)) { - return SignatureAlgorithms.SHA1_WITH_RSA; - - } else if (algorithms.contains(SignatureAlgorithms.ECDSA)) { - return SignatureAlgorithms.ECDSA; - - } else if (algorithms.contains(SignatureAlgorithms.DSA)) { - return SignatureAlgorithms.DSA; - - } else { - throw new AlgorithmUnavailableException( - "No algorithm for key entry: " + selectedKeyID, - null, - null); - } - - } else if (digestMethodXAdES142.compareTo("SHA-256") == 0) { - if (algorithms.contains(SignatureAlgorithms.SHA256_WITH_RSA)) { - return SignatureAlgorithms.SHA256_WITH_RSA; - - } else if (algorithms.contains(SignatureAlgorithms.SHA256_WITH_ECDSA)) { - return SignatureAlgorithms.SHA256_WITH_ECDSA; - - } else if (algorithms.contains(SignatureAlgorithms.DSA)) { - return SignatureAlgorithms.DSA; - - } else { - throw new AlgorithmUnavailableException( - "No algorithm for key entry: " + selectedKeyID, - null, - null); - } - } else if (digestMethodXAdES142.compareTo("SHA-384") == 0) { - if (algorithms.contains(SignatureAlgorithms.SHA384_WITH_RSA)) { - return SignatureAlgorithms.SHA384_WITH_RSA; - - } else if (algorithms.contains(SignatureAlgorithms.SHA384_WITH_ECDSA)) { - return SignatureAlgorithms.SHA384_WITH_ECDSA; - - } else if (algorithms.contains(SignatureAlgorithms.DSA)) { - return SignatureAlgorithms.DSA; - - } else { - throw new AlgorithmUnavailableException( - "No algorithm for key entry: " + selectedKeyID, - null, - null); - } - } else if (digestMethodXAdES142.compareTo("SHA-512") == 0) { - if (algorithms.contains(SignatureAlgorithms.SHA512_WITH_RSA)) { - return SignatureAlgorithms.SHA512_WITH_RSA; - - } else if (algorithms.contains(SignatureAlgorithms.SHA512_WITH_ECDSA)) { - return SignatureAlgorithms.SHA512_WITH_ECDSA; - - } else if (algorithms.contains(SignatureAlgorithms.DSA)) { - return SignatureAlgorithms.DSA; - - } else { - throw new AlgorithmUnavailableException( - "No algorithm for key entry: " + selectedKeyID, - null, - null); - } - } - else { - throw new AlgorithmUnavailableException( - "No signature algorithm found for digest algorithm '" + digestMethodXAdES142, - null, - null); - } - - } - } /** * @see iaik.server.modules.xmlsign.XMLSignatureCreationProfile#getSignatureInsertionLocation() */ + @Override public XMLSignatureInsertionLocation getSignatureInsertionLocation() { return signatureInsertionLocation; } @@ -290,7 +288,7 @@ public class XMLSignatureCreationProfileImpl /** * Set the location where the signature is to be inserted into the signature * parent. - * + * * @param signatureInsertionLocation The location to set. */ public void setSignatureInsertionLocation(XMLSignatureInsertionLocation signatureInsertionLocation) { @@ -300,12 +298,14 @@ public class XMLSignatureCreationProfileImpl /** * @see iaik.server.modules.xmlsign.XMLSignatureCreationProfile#getSignatureStructureType() */ + @Override public String getSignatureStructureType() { return signatureStructureType; } /** * Set the signature structure type. + * * @param signatureStructureType The signature structure type to set. */ public void setSignatureStructureType(String signatureStructureType) { @@ -315,13 +315,14 @@ public class XMLSignatureCreationProfileImpl /** * @see iaik.server.modules.xmlsign.XMLSignatureCreationProfile#getSignedInfoCanonicalization() */ + @Override public Canonicalization getSignedInfoCanonicalization() { return signedInfoCanonicalization; } /** * Sets the canonicalization method to use for the SignedInfo object. - * + * * @param signedInfoCanonicalization The canonicalization method to set. */ public void setSignedInfoCanonicalization(Canonicalization signedInfoCanonicalization) { @@ -331,13 +332,14 @@ public class XMLSignatureCreationProfileImpl /** * @see iaik.server.modules.xmlsign.XMLSignatureCreationProfile#getSignedProperties() */ + @Override public List getSignedProperties() { return signedProperties; } /** * Set the signed properties. - * + * * @param signedProperties The signed properties to set. */ public void setSignedProperties(List signedProperties) { @@ -347,15 +349,16 @@ public class XMLSignatureCreationProfileImpl /** * @see iaik.server.modules.xmlsign.XMLSignatureCreationProfile#isSecurityLayerConform() */ + @Override public boolean isSecurityLayerConform() { return securityLayerConform; } /** * Sets the security layer conformity. - * - * @param securityLayerConform <code>true</code>, if the created signature - * is to be conform to the Security Layer specification. + * + * @param securityLayerConform <code>true</code>, if the created signature is to + * be conform to the Security Layer specification. */ public void setSecurityLayerConform(boolean securityLayerConform) { this.securityLayerConform = securityLayerConform; @@ -364,6 +367,7 @@ public class XMLSignatureCreationProfileImpl /** * @see iaik.server.modules.xmlsign.XMLSignatureCreationProfile#getSignatureID() */ + @Override public String getSignatureID() { return signatureIDGenerator.uniqueId(); } @@ -371,6 +375,7 @@ public class XMLSignatureCreationProfileImpl /** * @see iaik.server.modules.xmlsign.XMLSignatureCreationProfile#getSecurityLayerManifestID() */ + @Override public String getSecurityLayerManifestID() { return manifestIDGenerator.uniqueId(); } @@ -378,6 +383,7 @@ public class XMLSignatureCreationProfileImpl /** * @see iaik.server.modules.xmlsign.XMLSignatureCreationProfile#getDsigManifestID() */ + @Override public String getDsigManifestID() { return dsigManifestIDGenerator.uniqueId(); } @@ -385,13 +391,15 @@ public class XMLSignatureCreationProfileImpl /** * @see iaik.server.modules.xmlsign.XMLSignatureCreationProfile#getSignedPropertiesID() */ + @Override public String getSignedPropertiesID() { return propertyIDGenerator.uniqueId(); } - + /** * @see iaik.server.modules.xmlsign.XMLSignatureCreationProfile#getPermitFileURIs() */ + @Override public boolean getPermitFileURIs() { return false; } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/xmlsign/XMLSignatureInsertionLocationImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/xmlsign/XMLSignatureInsertionLocationImpl.java index 90c1f49..a5290a7 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/xmlsign/XMLSignatureInsertionLocationImpl.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/xmlsign/XMLSignatureInsertionLocationImpl.java @@ -21,29 +21,28 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.server.iaik.xmlsign; import iaik.server.modules.xmlsign.XMLSignatureInsertionLocation; /** - * An object giving the location of where the signature will be - * inserted into the parent element. - * + * An object giving the location of where the signature will be inserted into + * the parent element. + * * @author Patrick Peck * @version $Id$ */ public class XMLSignatureInsertionLocationImpl - implements XMLSignatureInsertionLocation { + implements XMLSignatureInsertionLocation { /** Where to put the signature into the signature parent element. */ private int signatureChildIndex; - + /** * Create a new <code>XMLSignatureInsertLocationImpl</code>. - * + * * @param signatureChildIndex The position index at which to append the - * signature to the parent element. + * signature to the parent element. */ public XMLSignatureInsertionLocationImpl(int signatureChildIndex) { setSignatureChildIndex(signatureChildIndex); @@ -52,6 +51,7 @@ public class XMLSignatureInsertionLocationImpl /** * @see iaik.server.modules.xmlsign.XMLSignatureInsertionLocation#getSignatureChildIndex() */ + @Override public int getSignatureChildIndex() { return signatureChildIndex; } @@ -59,7 +59,7 @@ public class XMLSignatureInsertionLocationImpl /** * Sets the position index at which to append the signature to the parent * element. - * + * * @param signatureChildIndex The position index to set. */ public void setSignatureChildIndex(int signatureChildIndex) { diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/xmlverify/XMLSignatureVerificationProfileImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/xmlverify/XMLSignatureVerificationProfileImpl.java index 0ad3d79..6e4883f 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/xmlverify/XMLSignatureVerificationProfileImpl.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/xmlverify/XMLSignatureVerificationProfileImpl.java @@ -21,22 +21,22 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.server.iaik.xmlverify; import java.util.List; import iaik.pki.PKIProfile; +import iaik.server.modules.SignatureVerificationProfile; import iaik.server.modules.xmlverify.XMLSignatureVerificationProfile; /** * An object providing auxiliary information for verifying an XML signature. - * + * * @author Patrick Peck * @version $Id$ */ public class XMLSignatureVerificationProfileImpl - implements XMLSignatureVerificationProfile { + implements XMLSignatureVerificationProfile { /** Whether to check the Security Layer manifest. */ private boolean checkSecurityLayerManifest; @@ -52,18 +52,20 @@ public class XMLSignatureVerificationProfileImpl private boolean includeReferenceInputData; /** Whether the file URIs are permitted */ private boolean permitFileURIs; + /** * @see iaik.server.modules.xmlverify.XMLSignatureVerificationProfile#checkSecurityLayerManifest() */ + @Override public boolean checkSecurityLayerManifest() { return checkSecurityLayerManifest; } /** * Set whether to check the references in the Security Layer manifest. - * - * @param checkSecurityLayerManifest <code>true</code>, if the references - * in the Security Layer manifest must be checked. + * + * @param checkSecurityLayerManifest <code>true</code>, if the references in the + * Security Layer manifest must be checked. */ public void setCheckSecurityLayerManifest(boolean checkSecurityLayerManifest) { this.checkSecurityLayerManifest = checkSecurityLayerManifest; @@ -72,15 +74,16 @@ public class XMLSignatureVerificationProfileImpl /** * @see iaik.server.modules.xmlverify.XMLSignatureVerificationProfile#checkXMLDsigManifests() */ + @Override public boolean checkXMLDsigManifests() { return checkXMLDsigManifests; } /** * Sets whether to check the references of all XML Dsig manifests. - * - * @param checkXMLDSigManifests <code>true</code>, if the references in the - * XML Dsig manifest must be checked. + * + * @param checkXMLDSigManifests <code>true</code>, if the references in the XML + * Dsig manifest must be checked. */ public void setCheckXMLDsigManifests(boolean checkXMLDSigManifests) { this.checkXMLDsigManifests = checkXMLDSigManifests; @@ -89,15 +92,16 @@ public class XMLSignatureVerificationProfileImpl /** * @see iaik.server.modules.xmlverify.XMLSignatureVerificationProfile#getCertificateValidationProfile() */ + @Override public PKIProfile getCertificateValidationProfile() { return certificateValidationProfile; } /** * Sets the profile for validating the signer certificate. - * + * * @param certificateValidationProfile The certificate validation profile to - * set. + * set. */ public void setCertificateValidationProfile(PKIProfile certificateValidationProfile) { this.certificateValidationProfile = certificateValidationProfile; @@ -106,13 +110,14 @@ public class XMLSignatureVerificationProfileImpl /** * @see iaik.server.modules.xmlverify.XMLSignatureVerificationProfile#getTransformationSupplements() */ + @Override public List getTransformationSupplements() { return transformationSupplements; } /** * Sets the transformation supplements. - * + * * @param transformationSupplements The transformation supplements to set. */ public void setTransformationSupplements(List transformationSupplements) { @@ -122,15 +127,16 @@ public class XMLSignatureVerificationProfileImpl /** * @see iaik.server.modules.xmlverify.XMLSignatureVerificationProfile#includeHashInputData() */ + @Override public boolean includeHashInputData() { return includeHashInputData; } /** * Set whether to include the hash input data in the result. - * - * @param includeHashInputData If <code>true</code>, the hash input data - * will be returned in the result. + * + * @param includeHashInputData If <code>true</code>, the hash input data will be + * returned in the result. */ public void setIncludeHashInputData(boolean includeHashInputData) { this.includeHashInputData = includeHashInputData; @@ -139,39 +145,40 @@ public class XMLSignatureVerificationProfileImpl /** * @see iaik.server.modules.xmlverify.XMLSignatureVerificationProfile#includeReferenceInputData() */ + @Override public boolean includeReferenceInputData() { return includeReferenceInputData; } /** * Set whether to include the reference input data in the result. - * - * @param includeReferenceInputData If <code>true</code>, the reference - * input data will be included in the result. + * + * @param includeReferenceInputData If <code>true</code>, the reference input + * data will be included in the result. */ public void setIncludeReferenceInputData(boolean includeReferenceInputData) { this.includeReferenceInputData = includeReferenceInputData; } - + /** - * @see iaik.server.modules.xmlverify.XMLSignatureVerificationProfile#getPermitFileURIs() + * @see iaik.server.modules.xmlverify.XMLSignatureVerificationProfile#getPermitFileURIs() */ + @Override public boolean getPermitFileURIs() { return permitFileURIs; } - + /** * Set whether the file URIs are permitted or not - * + * * @param permitFileURIs whether the file URIs are permitted or not */ - public void setPermitFileURIs(boolean permitFileURIs) - { + public void setPermitFileURIs(boolean permitFileURIs) { this.permitFileURIs = permitFileURIs; } @Override public String getTargetLevel() { - return XMLSignatureVerificationProfile.LEVEL_LTA; + return SignatureVerificationProfile.LEVEL_LTA; } } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/init/ConfiguratorImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/init/ConfiguratorImpl.java index 8ab01d6..5726220 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/init/ConfiguratorImpl.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/init/ConfiguratorImpl.java @@ -21,7 +21,6 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.server.init; import at.gv.egovernment.moa.spss.MOAException; @@ -29,10 +28,11 @@ import at.gv.egovernment.moa.spss.api.Configurator; import at.gv.egovernment.moa.spss.server.config.ConfigurationException; import at.gv.egovernment.moa.spss.server.config.ConfigurationProvider; import at.gv.egovernment.moa.spss.server.iaik.config.IaikConfigurator; +import iaik.server.ConfigurationData; /** * Default implementation of <code>Configurator</code>. - * + * * @author Patrick Peck * @version $Id$ */ @@ -40,26 +40,45 @@ public class ConfiguratorImpl extends Configurator { /** whether the configuration has been initialized */ private boolean initialized = false; - public void init() throws MOAException { + StartupConfigurationHolder result; + + @Override + public StartupConfigurationHolder getCurrentConfiguration() { + return result; + + } + + @Override + public StartupConfigurationHolder init() throws MOAException { if (!initialized) { - SystemInitializer.init(); + result = SystemInitializer.init(); initialized = true; + } + + return result; + } - public void update() throws MOAException { + @Override + public StartupConfigurationHolder update() throws MOAException { if (!initialized) { - return; + return null; } - + try { // reconfigure the system - ConfigurationProvider config = ConfigurationProvider.reload(); - new IaikConfigurator().configure(config); - } catch (MOAException e) { + final ConfigurationProvider config = ConfigurationProvider.reload(); + final ConfigurationData iaikConfig = new IaikConfigurator().configure(config); + result = new StartupConfigurationHolder(config, iaikConfig); + return result; + + } catch (final MOAException e) { throw e; - } catch (Throwable t) { - throw new ConfigurationException("", null, t); + + } catch (final Throwable t) { + throw new ConfigurationException("MOA-SPSS initialization FAILED with a generic error", null, t); + } } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/init/ExternalInitializer.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/init/ExternalInitializer.java index 692ee53..73a183f 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/init/ExternalInitializer.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/init/ExternalInitializer.java @@ -3,5 +3,5 @@ package at.gv.egovernment.moa.spss.server.init; import at.gv.egovernment.moa.spss.server.config.ConfigurationProvider; public interface ExternalInitializer { - public void initialize(ConfigurationProvider configurationProvider); + void initialize(ConfigurationProvider configurationProvider); } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/init/StartupConfigurationHolder.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/init/StartupConfigurationHolder.java new file mode 100644 index 0000000..903b08b --- /dev/null +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/init/StartupConfigurationHolder.java @@ -0,0 +1,40 @@ +package at.gv.egovernment.moa.spss.server.init; + +import at.gv.egovernment.moa.spss.server.config.ConfigurationProvider; +import iaik.server.ConfigurationData; + +public class StartupConfigurationHolder { + + private final ConfigurationProvider moaSpssConfig; + private final ConfigurationData iaikConfiguration; + + /** + * Holder for IAIK and MOA-SPSS related configuration object. + * + * @param config MOA-SPSS specific configuration + * @param iaikConfig Internal IAIK module configuration + */ + public StartupConfigurationHolder(ConfigurationProvider config, ConfigurationData iaikConfig) { + this.moaSpssConfig = config; + this.iaikConfiguration = iaikConfig; + } + + /** + * Get MOA-SPSS configuration object from start-up process. + * + * @return MOA-SPSS configuration + */ + public ConfigurationProvider getMoaSpssConfig() { + return moaSpssConfig; + } + + /** + * Get configuration object for IAIK modules from start-up process. + * + * @return IAIK module configuration + */ + public ConfigurationData getIaikConfiguration() { + return iaikConfiguration; + } + +} diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/init/SystemInitializer.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/init/SystemInitializer.java index 0e592f0..28231e6 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/init/SystemInitializer.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/init/SystemInitializer.java @@ -21,15 +21,11 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.server.init; -import java.io.FileNotFoundException; import java.io.IOException; -import java.security.cert.CertificateException; import java.util.Calendar; import java.util.Date; -import java.util.GregorianCalendar; import java.util.Iterator; import java.util.ServiceLoader; import java.util.Timer; @@ -52,13 +48,13 @@ import at.gv.egovernment.moaspss.logging.LoggingContextManager; import at.gv.egovernment.moaspss.util.Constants; import at.gv.egovernment.moaspss.util.DOMUtils; import iaik.asn1.ObjectID; -import iaik.pki.store.certstore.CertStoreException; -import iaik.pki.store.truststore.TrustStoreException; +import iaik.pkcs.pkcs12.PKCS12KeyStore; import iaik.server.ConfigurationData; +import iaik.utils.RFC2253NameParser; /** * MOA SP/SS web service initialization. - * + * * @author Patrick Peck * @version $Id$ */ @@ -69,37 +65,40 @@ public class SystemInitializer { private static final String LOGGING_HIERARCHY = "moa.spss.server"; /** Whether XML schema grammars have been initialized. */ private static boolean grammarsInitialized = false; - + private static final org.slf4j.Logger logger = LoggerFactory.getLogger(SystemInitializer.class); - private static ServiceLoader<ExternalInitializer> initializerServices = - ServiceLoader.load(ExternalInitializer.class); - - + private static ServiceLoader<ExternalInitializer> initializerServices = + ServiceLoader.load(ExternalInitializer.class); + private static ConfigurationData iaikConfiguration; + private static ConfigurationProvider config; + private static void runInitializer(ConfigurationProvider configurationProvider) { - Iterator<ExternalInitializer> initializerIterator = initializerServices.iterator(); - logger.info("Running external initializers"); - while(initializerIterator.hasNext()) { - ExternalInitializer externalInitializer = initializerIterator.next(); - externalInitializer.initialize(configurationProvider); - } + final Iterator<ExternalInitializer> initializerIterator = initializerServices.iterator(); + logger.info("Running external initializers"); + while (initializerIterator.hasNext()) { + final ExternalInitializer externalInitializer = initializerIterator.next(); + externalInitializer.initialize(configurationProvider); + } } - + /** * Initialize the MOA SP/SS webservice. + * + * @return */ - public static void init() { - - logger.info("##############################################################################"); - logger.info("##############################################################################"); - logger.info("### ###"); - logger.info("### LOADING MOA-SPSS ###"); - logger.info("### ================ ###"); - logger.info("### ###"); - logger.info("##############################################################################"); - logger.info("##############################################################################"); - - MessageProvider msg = MessageProvider.getInstance(); + public static StartupConfigurationHolder init() { + + logger.info("##############################################################################"); + logger.info("##############################################################################"); + logger.info("### ###"); + logger.info("### LOADING MOA-SPSS ###"); + logger.info("### ================ ###"); + logger.info("### ###"); + logger.info("##############################################################################"); + logger.info("##############################################################################"); + + final MessageProvider msg = MessageProvider.getInstance(); Thread archiveCleaner; @@ -108,91 +107,99 @@ public class SystemInitializer { // set up a logging context for logging the startup LoggingContextManager.getInstance().setLoggingContext( - new LoggingContext("startup")); - + new LoggingContext("startup")); + // AxisProperties.setProperty("enableNamespacePrefixOptimization","false"); // AxisProperties.setProperty("disablePrettyXML", "true"); // AxisProperties.setProperty("axis.doAutoTypes", "true"); - - // initialize preparsed Xerces grammar pool for faster XML + + // initialize preparsed Xerces grammar pool for faster XML // parsing/validating try { if (!grammarsInitialized) { - Class clazz = SystemInitializer.class; + final Class clazz = SystemInitializer.class; // preparse XML schema DOMUtils.addSchemaToPool( - clazz.getResourceAsStream(Constants.XML_SCHEMA_LOCATION), - Constants.XML_NS_URI); + clazz.getResourceAsStream(Constants.XML_SCHEMA_LOCATION), + Constants.XML_NS_URI); // preparse XMLDsig Filter2 schema DOMUtils.addSchemaToPool( - clazz.getResourceAsStream(Constants.DSIG_FILTER2_SCHEMA_LOCATION), - Constants.DSIG_FILTER2_NS_URI); + clazz.getResourceAsStream(Constants.DSIG_FILTER2_SCHEMA_LOCATION), + Constants.DSIG_FILTER2_NS_URI); // preparse XMLDsig schema DOMUtils.addSchemaToPool( - clazz.getResourceAsStream(Constants.DSIG_SCHEMA_LOCATION), - Constants.DSIG_NS_URI); + clazz.getResourceAsStream(Constants.DSIG_SCHEMA_LOCATION), + Constants.DSIG_NS_URI); // preparse MOA schema DOMUtils.addSchemaToPool( - clazz.getResourceAsStream(Constants.MOA_SCHEMA_LOCATION), - Constants.MOA_NS_URI); + clazz.getResourceAsStream(Constants.MOA_SCHEMA_LOCATION), + Constants.MOA_NS_URI); grammarsInitialized = true; } - } catch (IOException e) { + } catch (final IOException e) { Logger.warn(new LogMsg(msg.getMessage("init.04", null)), e); } - + // initialize configuration try { - Logger.info("Initialize MOA-SP/SS configuration ... "); - ConfigurationProvider config = ConfigurationProvider.getInstance(); - - //initialize TSL module - TSLConfiguration moaSPTslConfig = config.getTSLConfiguration(); - if (moaSPTslConfig != null) { - Logger.debug("Starting TSL-Service initialization ... "); - TslConfigurationImpl tslConfig = new TslConfigurationImpl(); - tslConfig.setEuTslURL(moaSPTslConfig.getEuTSLUrl()); - tslConfig.setTslWorkingDirectory(moaSPTslConfig.getWorkingDirectory()); - tslConfig.setNetworkReadTimeout(config.getReadTimeout() / 1000); - - Logger.info(new LogMsg(msg.getMessage("config.41", null))); - TSLServiceFactory.initialize(tslConfig); - Logger.info("TSL-Service client initialization finished"); - - //initialize TSL Update Task - initTSLUpdateTask(moaSPTslConfig); - - } + Logger.info("Initialize MOA-SP/SS configuration ... "); + config = ConfigurationProvider.getInstance(); + + // initialize TSL module + final TSLConfiguration moaSPTslConfig = config.getTSLConfiguration(); + if (moaSPTslConfig != null) { + Logger.debug("Starting TSL-Service initialization ... "); + final TslConfigurationImpl tslConfig = new TslConfigurationImpl(); + tslConfig.setEuTslURL(moaSPTslConfig.getEuTSLUrl()); + tslConfig.setTslWorkingDirectory(moaSPTslConfig.getWorkingDirectory()); + tslConfig.setNetworkReadTimeout(config.getReadTimeout() / 1000); + + Logger.info(new LogMsg(msg.getMessage("config.41", null))); + TSLServiceFactory.initialize(tslConfig); + Logger.info("TSL-Service client initialization finished"); + + // initialize TSL Update Task + initTSLUpdateTask(moaSPTslConfig); + + } + + Logger.info("Register additional RFC2253 Object identifier"); + RFC2253NameParser.register( + "organizationIdentifier", + new ObjectID("2.5.4.97", "organizationIdentifier", (String) null, false)); + + Logger.info("Building IAIK-MOA configuration ... "); + iaikConfiguration = new IaikConfigurator().configure(config); + + runInitializer(config); - Logger.info("Building IAIK-MOA configuration ... "); - new IaikConfigurator().configure(config); - - runInitializer(config); - Logger.info(new LogMsg(msg.getMessage("init.01", null))); - - } catch (MOAException e) { - Logger.fatal(new LogMsg(msg.getMessage("init.00", null)), e); + // set Fallback mode in IAIK KeyStore implementation to 'true' to fix problems default behavior of JVM + PKCS12KeyStore.setUseJKSFallBack(true); + Logger.info("Set fallback mode in: " + PKCS12KeyStore.class.getSimpleName() + + " to :" + PKCS12KeyStore.getUseJKSFallBack()); - } catch (Throwable e) { - Logger.fatal(new LogMsg(msg.getMessage("init.00", null)), e); - throw new RuntimeException(e); - - } finally { - logger.info("Configuration initialized"); - } - - - + Logger.info(new LogMsg(msg.getMessage("init.01", null))); + + } catch (final MOAException e) { + Logger.fatal(new LogMsg(msg.getMessage("init.00", null)), e); + throw new RuntimeException(e); + + } catch (final Throwable e) { + Logger.fatal(new LogMsg(msg.getMessage("init.00", null)), e); + throw new RuntimeException(e); + + } + // CHANGE IXSIL to XSECT // set IXSIL debug output - //IXSILInit.setPrintDebugLog( - // Logger.isDebugEnabled(IaikLog.IAIK_LOG_HIERARCHY)); - //Logger.info("Registering XSECT"); - //XSecProvider.addAsProvider(true); - + // IXSILInit.setPrintDebugLog( + // Logger.isDebugEnabled(IaikLog.IAIK_LOG_HIERARCHY)); + // Logger.info("Registering XSECT"); + // XSecProvider.addAsProvider(true); + // start the archive cleanup thread archiveCleaner = - new Thread(new RevocationArchiveCleaner(ARCHIVE_CLEANUP_INTERVAL)); + new Thread(new RevocationArchiveCleaner(ARCHIVE_CLEANUP_INTERVAL)); archiveCleaner.setName("RevocationArchiveCleaner"); archiveCleaner.setDaemon(true); archiveCleaner.setPriority(Thread.MIN_PRIORITY); @@ -203,42 +210,57 @@ public class SystemInitializer { logger.info("=============================================================================="); logger.info("=== CONFIGURATION DONE ==="); logger.info("=============================================================================="); + + return new StartupConfigurationHolder(config, iaikConfiguration); + + } + + /** + * Get configuration object from IAIK modules. + * + * @return Configuration or <code>null</code> of it was not configurated yet + */ + public static ConfigurationData getIaikConfiguration() { + return iaikConfiguration; + } - + private static void initTSLUpdateTask(TSLConfiguration tslconfig) { - MessageProvider msg = MessageProvider.getInstance(); - if (tslconfig != null) { - // get start time and period from config - long period = tslconfig.getUpdateSchedulePeriod(); - Date startConfig = tslconfig.getUpdateScheduleStartTime(); - - // get hh:mm:ss from config date - Calendar calendar = GregorianCalendar.getInstance(); // creates a new calendar instance - calendar.setTime(startConfig); // assigns calendar to given date - int hour = calendar.get(Calendar.HOUR_OF_DAY); - int min = calendar.get(Calendar.MINUTE); - int sec = calendar.get(Calendar.SECOND); - - // create date with today and time from config - Calendar cal = Calendar.getInstance(); - Date now = cal.getTime(); - cal.set(Calendar.HOUR_OF_DAY, hour); - cal.set(Calendar.MINUTE, min); - cal.set(Calendar.SECOND, sec); - - // proposed start time - Date start = cal.getTime(); - - // if start time has already passed today - add one day (86400000 milliseconds = 1 day) - if (start.before(now)) - start = new Date(start.getTime() + 86400000); - - Logger.debug(new LogMsg(msg.getMessage("config.46", new String[]{start.toString(), "" + period}))); - - // start TSL updater task - Timer timer = new Timer(); - timer.schedule(new TSLUpdaterTimerTask(), start, period); + final MessageProvider msg = MessageProvider.getInstance(); + if (tslconfig != null) { + // get start time and period from config + final long period = tslconfig.getUpdateSchedulePeriod(); + final Date startConfig = tslconfig.getUpdateScheduleStartTime(); + + // get hh:mm:ss from config date + final Calendar calendar = Calendar.getInstance(); // creates a new calendar instance + calendar.setTime(startConfig); // assigns calendar to given date + final int hour = calendar.get(Calendar.HOUR_OF_DAY); + final int min = calendar.get(Calendar.MINUTE); + final int sec = calendar.get(Calendar.SECOND); + + // create date with today and time from config + final Calendar cal = Calendar.getInstance(); + final Date now = cal.getTime(); + cal.set(Calendar.HOUR_OF_DAY, hour); + cal.set(Calendar.MINUTE, min); + cal.set(Calendar.SECOND, sec); + + // proposed start time + Date start = cal.getTime(); + + // if start time has already passed today - add one day (86400000 milliseconds = + // 1 day) + if (start.before(now)) { + start = new Date(start.getTime() + 86400000); } + + Logger.debug(new LogMsg(msg.getMessage("config.46", new String[] { start.toString(), "" + period }))); + + // start TSL updater task + final Timer timer = new Timer("TSL_DB_Updater"); + timer.schedule(new TSLUpdaterTimerTask(), start, period); + } } } 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..2e7445e 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 @@ -21,19 +21,8 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.server.invoke; -import iaik.server.modules.algorithms.HashAlgorithms; -import iaik.server.modules.cmssign.CMSSignature; -import iaik.server.modules.cmssign.CMSSignatureCreationException; -import iaik.server.modules.cmssign.CMSSignatureCreationModule; -import iaik.server.modules.cmssign.CMSSignatureCreationModuleFactory; -import iaik.server.modules.cmssign.CMSSignatureCreationProfile; -import iaik.server.modules.keys.KeyEntryID; -import iaik.server.modules.keys.KeyModule; -import iaik.server.modules.keys.KeyModuleFactory; - import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; @@ -76,38 +65,46 @@ import at.gv.egovernment.moa.spss.util.MessageProvider; import at.gv.egovernment.moaspss.logging.LogMsg; import at.gv.egovernment.moaspss.logging.Logger; import at.gv.egovernment.moaspss.util.Constants; +import iaik.server.modules.algorithms.HashAlgorithms; +import iaik.server.modules.cmssign.CMSSignature; +import iaik.server.modules.cmssign.CMSSignatureCreationException; +import iaik.server.modules.cmssign.CMSSignatureCreationModule; +import iaik.server.modules.cmssign.CMSSignatureCreationModuleFactory; +import iaik.server.modules.cmssign.CMSSignatureCreationProfile; +import iaik.server.modules.keys.KeyEntryID; +import iaik.server.modules.keys.KeyModule; +import iaik.server.modules.keys.KeyModuleFactory; /** * A class providing an API based interface to the * <code>CMSSignatureCreationModule</code>. - * - * This class performs the invocation of the + * + * This class performs the invocation of the * <code>iaik.server.modules.cmssign.CMSSignatureCreationModule</code> from a * <code>CreateCMSSignatureRequest</code> given as an API object. The result of * the invocation is integrated into a <code>CreateCMSSignatureResponse</code> * and returned. - * + * * @version $Id$ */ public class CMSSignatureCreationInvoker { - - private static Map HASH_ALGORITHM_MAPPING; - - static { - HASH_ALGORITHM_MAPPING = new HashMap(); - HASH_ALGORITHM_MAPPING.put(Constants.SHA1_URI, HashAlgorithms.SHA1); - HASH_ALGORITHM_MAPPING.put(Constants.SHA256_URI, HashAlgorithms.SHA256); - HASH_ALGORITHM_MAPPING.put(Constants.SHA384_URI, HashAlgorithms.SHA384); - HASH_ALGORITHM_MAPPING.put(Constants.SHA512_URI, HashAlgorithms.SHA512); - } - + + private static Map HASH_ALGORITHM_MAPPING; + + static { + HASH_ALGORITHM_MAPPING = new HashMap(); + HASH_ALGORITHM_MAPPING.put(Constants.SHA1_URI, HashAlgorithms.SHA1); + HASH_ALGORITHM_MAPPING.put(Constants.SHA256_URI, HashAlgorithms.SHA256); + HASH_ALGORITHM_MAPPING.put(Constants.SHA384_URI, HashAlgorithms.SHA384); + HASH_ALGORITHM_MAPPING.put(Constants.SHA512_URI, HashAlgorithms.SHA512); + } /** The single instance of this class. */ private static CMSSignatureCreationInvoker instance = null; /** * Get the only instance of this class. - * + * * @return The only instance of this class. */ public static synchronized CMSSignatureCreationInvoker getInstance() { @@ -119,290 +116,271 @@ public class CMSSignatureCreationInvoker { /** * Create a new <code>CMSSignatureCreationInvoker</code>. - * + * * Protected to disallow multiple instances. */ protected CMSSignatureCreationInvoker() { } - - /** * Process the <code>CreateCMSSignatureRequest<code> message and invoke the * <code>XMLSignatureCreationModule</code> for every * <code>SingleSignatureInfo</code> contained in the request. - * + * * @param request A <code>CreateCMSSignatureRequest<code> API object * containing the information for creating the signature(s). - * @param reserved A <code>Set</code> of reserved object IDs. - * - * @return A <code>CreateCMSSignatureResponse</code> API object containing - * the created signature(s). The response contains either a - * <code>SignatureEnvironment</code> or a <code>ErrorResponse</code> - * for each <code>SingleSignatureInfo</code> in the request. - * @throws MOAException An error occurred during signature creation. + * @param reserved A <code>Set</code> of reserved object IDs. + * + * @return A <code>CreateCMSSignatureResponse</code> API object containing the + * created signature(s). The response contains either a + * <code>SignatureEnvironment</code> or a <code>ErrorResponse</code> for + * each <code>SingleSignatureInfo</code> in the request. + * @throws MOAException An error occurred during signature creation. */ public CreateCMSSignatureResponse createCMSSignature( - CreateCMSSignatureRequest request, - Set reserved) - throws MOAException { + CreateCMSSignatureRequest request, + Set reserved) + throws MOAException { + + final TransactionContext context = TransactionContextManager.getInstance().getTransactionContext(); + // LoggingContext loggingCtx = + // LoggingContextManager.getInstance().getLoggingContext(); - TransactionContext context = TransactionContextManager.getInstance().getTransactionContext(); - //LoggingContext loggingCtx = LoggingContextManager.getInstance().getLoggingContext(); + final CreateCMSSignatureResponseBuilder responseBuilder = new CreateCMSSignatureResponseBuilder(); + final CreateCMSSignatureResponse response = new CreateCMSSignatureResponseImpl(); - CreateCMSSignatureResponseBuilder responseBuilder = new CreateCMSSignatureResponseBuilder(); - CreateCMSSignatureResponse response = new CreateCMSSignatureResponseImpl(); + boolean isSecurityLayerConform = false; + boolean isPAdESConformRequired = false; + String structure = null; + String mimetype = null; - boolean isSecurityLayerConform = false; - String structure = null; - String mimetype = null; - - // select the SingleSignatureInfo elements - Iterator singleSignatureInfoIter = request.getSingleSignatureInfos().iterator(); + // select the SingleSignatureInfo elements + final Iterator singleSignatureInfoIter = request.getSingleSignatureInfos().iterator(); // iterate over all the SingleSignatureInfo elements in the request - while (singleSignatureInfoIter.hasNext()) { - SingleSignatureInfo singleSignatureInfo = (SingleSignatureInfo) singleSignatureInfoIter.next(); - isSecurityLayerConform = singleSignatureInfo.isSecurityLayerConform(); - - - DataObjectInfo dataObjectInfo = singleSignatureInfo.getDataObjectInfo(); - structure = dataObjectInfo.getStructure(); - - CMSDataObject dataobject = dataObjectInfo.getDataObject(); - MetaInfo metainfo = dataobject.getMetaInfo(); - mimetype = metainfo.getMimeType(); - - CMSContent content = dataobject.getContent(); - InputStream contentIs = null; - // build the content data - switch (content.getContentType()) { - case CMSContent.EXPLICIT_CONTENT : - contentIs = ((CMSContentExcplicit) content).getBinaryContent(); - break; - case CMSContent.REFERENCE_CONTENT : - String reference = ((CMSContentReference) content).getReference(); - if (!"".equals(reference)) { - ExternalURIResolver resolver = new ExternalURIResolver(); - contentIs = resolver.resolve(reference); - } else { - throw new MOAApplicationException("2301", null); - } - break; - default : { - throw new MOAApplicationException("2301", null); - } - } - - // create CMSSignatureCreationModuleFactory - CMSSignatureCreationModule module = CMSSignatureCreationModuleFactory.getInstance(); - - List signedProperties = null; - boolean includeData = true; - if (structure.compareTo("enveloping") == 0) - includeData = true; - if (structure.compareTo("detached") == 0) - includeData = false; - - ConfigurationProvider config = context.getConfiguration(); - - // get the key group id - String keyGroupID = request.getKeyIdentifier(); - // set the key set - Set keySet = buildKeySet(keyGroupID); - if (keySet == null) { - throw new MOAApplicationException("2231", null); - } else if (keySet.size() == 0) { - throw new MOAApplicationException("2232", null); - } - - // get digest algorithm - String digestAlgorithm = getDigestAlgorithm(config, keyGroupID); - - // create CMSSignatureCreation profile: - CMSSignatureCreationProfile profile = new CMSSignatureCreationProfileImpl( - keySet, - digestAlgorithm, - signedProperties, - isSecurityLayerConform, - includeData, - mimetype); - - // create CMSSignature from the CMSSignatureCreationModule - // build the additionalSignedProperties - List additionalSignedProperties = buildAdditionalSignedProperties(); - TransactionId tid = new TransactionId(context.getTransactionID()); - try { - CMSSignature signature = module.createSignature(profile, additionalSignedProperties, tid); - ByteArrayOutputStream out = new ByteArrayOutputStream(); - // get CMS SignedData output stream from the CMSSignature and wrap it around out - 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); - */ - // Stream based, this should have a better performance - FilteredOutputStream filteredOuputStream = new FilteredOutputStream( - signedDataStream, 4096, dataobject.getExcludeByteRangeFrom(), - dataobject.getExcludeByteRangeTo()); - - 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(); - - responseBuilder.addCMSSignature(base64value); - - - } catch (CMSSignatureCreationException e) { - MOAException moaException = IaikExceptionMapper.getInstance().map(e); - - responseBuilder.addError( - moaException.getMessageId(), - moaException.getMessage()); - Logger.warn(moaException.getMessage(), e); - - } - catch (IOException e) { - throw new MOAApplicationException("2301", null, e); - } - - } - + while (singleSignatureInfoIter.hasNext()) { + final 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"); + + } + + final DataObjectInfo dataObjectInfo = singleSignatureInfo.getDataObjectInfo(); + structure = dataObjectInfo.getStructure(); + + final CMSDataObject dataobject = dataObjectInfo.getDataObject(); + final MetaInfo metainfo = dataobject.getMetaInfo(); + + /* + * TODO: do 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"); + } + + final CMSContent content = dataobject.getContent(); + InputStream contentIs = null; + // build the content data + switch (content.getContentType()) { + case CMSContent.EXPLICIT_CONTENT: + contentIs = ((CMSContentExcplicit) content).getBinaryContent(); + break; + case CMSContent.REFERENCE_CONTENT: + final String reference = ((CMSContentReference) content).getReference(); + if (!"".equals(reference)) { + final ExternalURIResolver resolver = new ExternalURIResolver(); + contentIs = resolver.resolve(reference); + } else { + throw new MOAApplicationException("2301", null); + } + break; + default: { + throw new MOAApplicationException("2301", null); + } + } + + // create CMSSignatureCreationModuleFactory + final CMSSignatureCreationModule module = CMSSignatureCreationModuleFactory.getInstance(); + + final List signedProperties = null; + boolean includeData = true; + if (structure.compareTo("enveloping") == 0) { + includeData = true; + } + if (structure.compareTo("detached") == 0) { + includeData = false; + } + + final ConfigurationProvider config = context.getConfiguration(); + + // get the key group id + final String keyGroupID = request.getKeyIdentifier(); + // set the key set + final Set keySet = buildKeySet(keyGroupID); + if (keySet == null) { + throw new MOAApplicationException("2231", null); + } else if (keySet.size() == 0) { + throw new MOAApplicationException("2232", null); + } + + // get digest algorithm + final String digestAlgorithm = getDigestAlgorithm(config, keyGroupID); + + // create CMSSignatureCreation profile: + final CMSSignatureCreationProfile profile = new CMSSignatureCreationProfileImpl( + keySet, + digestAlgorithm, + signedProperties, + isSecurityLayerConform, + includeData, + mimetype, + isPAdESConformRequired); + + // create CMSSignature from the CMSSignatureCreationModule + // build the additionalSignedProperties + final List additionalSignedProperties = buildAdditionalSignedProperties(); + final TransactionId tid = new TransactionId(context.getTransactionID()); + try { + final CMSSignature signature = module.createSignature(profile, additionalSignedProperties, tid); + final ByteArrayOutputStream out = new ByteArrayOutputStream(); + // get CMS SignedData output stream from the CMSSignature and wrap it around out + final boolean base64 = true; + final OutputStream signedDataStream = signature.getSignature(out, base64); + + // now write the data to be signed to the signedDataStream + // Stream based, this should have a better performance + final FilteredOutputStream filteredOuputStream = new FilteredOutputStream( + signedDataStream, 4096, dataobject.getExcludeByteRangeFrom(), + dataobject.getExcludeByteRangeTo()); + + IOUtils.copyLarge(contentIs, filteredOuputStream); + filteredOuputStream.flush(); + + // finish SignedData processing by closing signedDataStream + signedDataStream.close(); + final String base64value = out.toString(); + + responseBuilder.addCMSSignature(base64value); + + } catch (final CMSSignatureCreationException e) { + final MOAException moaException = IaikExceptionMapper.getInstance().map(e); + + responseBuilder.addError( + moaException.getMessageId(), + moaException.getMessage()); + Logger.warn(moaException.getMessage(), e); + + } catch (final IOException e) { + throw new MOAApplicationException("2301", null, e); + } + + } return responseBuilder.getResponse(); } - + private boolean inRange(BigDecimal counter, CMSDataObject dataobject) { - BigDecimal from = dataobject.getExcludeByteRangeFrom(); - BigDecimal to = dataobject.getExcludeByteRangeTo(); - - if ( (from == null) || (to == null)) - return false; - - int compare = counter.compareTo(from); - if (compare == -1) - return false; - else { - compare = counter.compareTo(to); - if (compare == 1) - return false; - else - return true; - } - - - + final BigDecimal from = dataobject.getExcludeByteRangeFrom(); + final BigDecimal to = dataobject.getExcludeByteRangeTo(); + + if (from == null || to == null) { + return false; + } + + int compare = counter.compareTo(from); + if (compare == -1) { + return false; + } else { + compare = counter.compareTo(to); + if (compare == 1) { + return false; + } else { + return true; + } + } + } - - private String getDigestAlgorithm(ConfigurationProvider config, String keyGroupID) throws MOASystemException { - // get digest method on key group level (if configured) - String configDigestMethodKG = config.getKeyGroup(keyGroupID).getDigestMethodAlgorithm(); - // get default digest method (if configured) - String configDigestMethod = config.getDigestMethodAlgorithmName(); - - - String digestMethod = null; - if (configDigestMethodKG != null) { - // if KG specific digest method is configured - digestMethod = (String) HASH_ALGORITHM_MAPPING.get(configDigestMethodKG); - if (digestMethod == null) { - error( - "config.17", - new Object[] { configDigestMethodKG}); - throw new MOASystemException("2900", null); - } - Logger.debug("Digest algorithm: " + digestMethod + "(configured in KeyGroup)"); - } - else { - // else get default configured digest method - digestMethod = (String) HASH_ALGORITHM_MAPPING.get(configDigestMethod); - if (digestMethod == null) { - error( - "config.17", - new Object[] { configDigestMethod}); - throw new MOASystemException("2900", null); - } - Logger.debug("Digest algorithm: " + digestMethod + "(default)"); - - } - return digestMethod; + private String getDigestAlgorithm(ConfigurationProvider config, String keyGroupID) + throws MOASystemException { + // get digest method on key group level (if configured) + final String configDigestMethodKG = config.getKeyGroup(keyGroupID).getDigestMethodAlgorithm(); + // get default digest method (if configured) + final String configDigestMethod = config.getDigestMethodAlgorithmName(); + + String digestMethod = null; + if (configDigestMethodKG != null) { + // if KG specific digest method is configured + digestMethod = (String) HASH_ALGORITHM_MAPPING.get(configDigestMethodKG); + if (digestMethod == null) { + error( + "config.17", + new Object[] { configDigestMethodKG }); + throw new MOASystemException("2900", null); + } + Logger.debug("Digest algorithm: " + digestMethod + "(configured in KeyGroup)"); + } else { + // else get default configured digest method + digestMethod = (String) HASH_ALGORITHM_MAPPING.get(configDigestMethod); + if (digestMethod == null) { + error( + "config.17", + new Object[] { configDigestMethod }); + throw new MOASystemException("2900", null); + } + Logger.debug("Digest algorithm: " + digestMethod + "(default)"); + + } + return digestMethod; } - + /** * Utility function to issue an error message to the log. - * - * @param messageId The ID of the message to log. + * + * @param messageId The ID of the message to log. * @param parameters Additional message parameters. */ private static void error(String messageId, Object[] parameters) { - MessageProvider msg = MessageProvider.getInstance(); + final MessageProvider msg = MessageProvider.getInstance(); Logger.error(new LogMsg(msg.getMessage(messageId, parameters))); } - + /** * Build the set of <code>KeyEntryID</code>s available to the given * <code>keyGroupID</code>. - * + * * @param keyGroupID The keygroup ID for which the available keys should be - * returned. - * @return The <code>Set</code> of <code>KeyEntryID</code>s - * identifying the available keys. + * returned. + * @return The <code>Set</code> of <code>KeyEntryID</code>s identifying the + * available keys. */ private Set buildKeySet(String keyGroupID) { - TransactionContext context = - TransactionContextManager.getInstance().getTransactionContext(); - ConfigurationProvider config = context.getConfiguration(); + final TransactionContext context = + TransactionContextManager.getInstance().getTransactionContext(); + final ConfigurationProvider config = context.getConfiguration(); Set keyGroupEntries; // get the KeyGroup entries from the configuration if (context.getClientCertificate() != null) { - X509Certificate cert = context.getClientCertificate()[0]; - Principal issuer = cert.getIssuerDN(); - BigInteger serialNumber = cert.getSerialNumber(); + final X509Certificate cert = context.getClientCertificate()[0]; + final Principal issuer = cert.getIssuerDN(); + final BigInteger serialNumber = cert.getSerialNumber(); keyGroupEntries = - config.getKeyGroupEntries(issuer, serialNumber, keyGroupID); + config.getKeyGroupEntries(issuer, serialNumber, keyGroupID); } else { keyGroupEntries = config.getKeyGroupEntries(null, null, keyGroupID); } @@ -413,23 +391,23 @@ public class CMSSignatureCreationInvoker { } else if (keyGroupEntries.size() == 0) { return Collections.EMPTY_SET; } else { - KeyModule module = - KeyModuleFactory.getInstance( - new TransactionId(context.getTransactionID())); - Set keyEntryIDs = module.getPrivateKeyEntryIDs(); - Set keySet = new HashSet(); + final KeyModule module = + KeyModuleFactory.getInstance( + new TransactionId(context.getTransactionID())); + final Set keyEntryIDs = module.getPrivateKeyEntryIDs(); + final Set keySet = new HashSet(); Iterator iter; // filter out the keys that do not exist in the IAIK configuration // by walking through the key entries and checking if the exist in the // keyGroupEntries for (iter = keyEntryIDs.iterator(); iter.hasNext();) { - KeyEntryID entryID = (KeyEntryID) iter.next(); - KeyGroupEntry entry = - new KeyGroupEntry( - entryID.getModuleID(), - entryID.getCertificateIssuer(), - entryID.getCertificateSerialNumber()); + final KeyEntryID entryID = (KeyEntryID) iter.next(); + final KeyGroupEntry entry = + new KeyGroupEntry( + entryID.getModuleID(), + entryID.getCertificateIssuer(), + entryID.getCertificateSerialNumber()); if (keyGroupEntries.contains(entry)) { keySet.add(entryID); } @@ -440,18 +418,18 @@ public class CMSSignatureCreationInvoker { /** * Build the list of additional signed properties. - * + * * Based on the generic configuration setting - * <code>ConfigurationProvider.TEST_SIGNING_TIME_PROPERTY</code>, a - * constant <code>SigningTime</code> will be added to the properties. - * + * <code>ConfigurationProvider.TEST_SIGNING_TIME_PROPERTY</code>, a constant + * <code>SigningTime</code> will be added to the properties. + * * @return The <code>List</code> of additional signed properties. */ private List buildAdditionalSignedProperties() { - TransactionContext context = - TransactionContextManager.getInstance().getTransactionContext(); - ConfigurationProvider config = context.getConfiguration(); - List additionalSignedProperties = Collections.EMPTY_LIST; + final TransactionContext context = + TransactionContextManager.getInstance().getTransactionContext(); + final ConfigurationProvider config = context.getConfiguration(); + final List additionalSignedProperties = Collections.EMPTY_LIST; return additionalSignedProperties; } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/CMSSignatureVerificationInvoker.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/CMSSignatureVerificationInvoker.java index c0beced..e18f957 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/CMSSignatureVerificationInvoker.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/CMSSignatureVerificationInvoker.java @@ -28,11 +28,11 @@ import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; import java.math.BigDecimal; -import java.util.ArrayList; import java.util.Date; import java.util.Iterator; import java.util.List; +import at.gv.egovernment.moa.sig.tsl.utils.MiscUtil; import at.gv.egovernment.moa.spss.MOAApplicationException; import at.gv.egovernment.moa.spss.MOAException; import at.gv.egovernment.moa.spss.api.cmsverify.CMSContent; @@ -54,12 +54,8 @@ import at.gv.egovernment.moa.spss.util.QCSSCDResult; import at.gv.egovernment.moaspss.logging.Logger; import at.gv.egovernment.moaspss.logging.LoggingContext; import at.gv.egovernment.moaspss.logging.LoggingContextManager; -import iaik.server.ConfigurationException; -import iaik.server.modules.AdESConstants; -import iaik.server.modules.AdESFormVerificationResult; import iaik.server.modules.IAIKException; import iaik.server.modules.IAIKRuntimeException; -import iaik.server.modules.SignatureVerificationProfile; import iaik.server.modules.cmsverify.CMSSignatureVerificationModule; import iaik.server.modules.cmsverify.CMSSignatureVerificationModuleFactory; import iaik.server.modules.cmsverify.CMSSignatureVerificationProfile; @@ -74,474 +70,459 @@ import iaik.x509.X509Certificate; /** * A class providing an interface to the * <code>CMSSignatureVerificationModule</code>. - * + * * This class performs the invocation of the * <code>iaik.server.modules.cmsverify.CMSSignatureVerificationModule</code> * from a <code>VerifyCMSSignatureRequest</code>. The result of the invocation * is integrated into a <code>VerifyCMSSignatureResponse</code> returned. - * + * * @author Patrick Peck * @version $Id$ */ public class CMSSignatureVerificationInvoker { - /** The single instance of this class. */ - private static CMSSignatureVerificationInvoker instance = null; - - /** - * Return the only instance of this class. - * - * @return The only instance of this class. - */ - public static synchronized CMSSignatureVerificationInvoker getInstance() { - if (instance == null) { - instance = new CMSSignatureVerificationInvoker(); - } - return instance; - } - - /** - * Create a new <code>CMSSignatureVerificationInvoker</code>. - * - * Protected to disallow multiple instances. - */ - protected CMSSignatureVerificationInvoker() { - } - - /** - * Verify a CMS signature. - * - * @param request - * The <code>VerifyCMSSignatureRequest</code> containing the CMS - * signature, as well as additional data needed for verification. - * @return Element A <code>VerifyCMSSignatureResponse</code> containing the - * answer to the <code>VerifyCMSSignatureRequest</code>. - * @throws MOAException - * An error occurred while processing the request. - */ - public VerifyCMSSignatureResponse verifyCMSSignature(VerifyCMSSignatureRequest request) throws MOAException { - - CMSSignatureVerificationProfileFactory profileFactory = new CMSSignatureVerificationProfileFactory(request); - VerifyCMSSignatureResponseBuilder responseBuilder = new VerifyCMSSignatureResponseBuilder(); - TransactionContext context = TransactionContextManager.getInstance().getTransactionContext(); - LoggingContext loggingCtx = LoggingContextManager.getInstance().getLoggingContext(); - InputStream signature; - InputStream signedContent = null; - Date signingTime; - List results; - int[] signatories; - InputStream input; - byte[] buf = new byte[2048]; - - // get the signature - signature = request.getCMSSignature(); - - // get the actual trustprofile - TrustProfile trustProfile = context.getConfiguration().getTrustProfile(request.getTrustProfileId()); - - try { - // get the signing time - signingTime = request.getDateTime(); - - // build the profile - if (request.isPDF()) { - PDFSignatureVerificationProfile profile = profileFactory.createPDFProfile(); - Logger.info("Sending PDFSignatureVerificationProfile to IAIK-MOA"); - - PDFSignatureVerificationModule module = iaik.server.modules.pdfverify.PDFSignatureVerificationModuleFactory - .getInstance(); - - module.setLog(new IaikLog(loggingCtx.getNodeID())); - //Logger.info(" Available: " + signature.available()); - module.init(signature, profile, new TransactionId(context.getTransactionID())); - - // input = module.getInputStream(); - - // while (input.read(buf) > 0); - if(request.isExtended()) { - Logger.info("Running extended validation"); - results = module.verifyPAdESSignature(signingTime); - } else { - Logger.info("Running not extended validation"); - results = module.verifySignature(signingTime); - } - - } else { - // get the signed content - signedContent = getSignedContent(request); - CMSSignatureVerificationProfile profile = profileFactory.createProfile(); - Logger.info("Sending CMSSignatureVerificationProfile to IAIK-MOA"); - - // verify the signature - CMSSignatureVerificationModule module = CMSSignatureVerificationModuleFactory.getInstance(); - - module.setLog(new IaikLog(loggingCtx.getNodeID())); - - module.init(signature, signedContent, profile, new TransactionId(context.getTransactionID())); - input = module.getInputStream(); - - while (input.read(buf) > 0) - ; - - if(request.isExtended()) { - Logger.info("Running extended validation"); - results = module.verifyCAdESSignature(signingTime); - } else { - Logger.info("Running not extended validation"); - results = module.verifySignature(signingTime); - } - // results = module.verifySignature(signingTime); - } - - } catch (IAIKException e) { - MOAException moaException = IaikExceptionMapper.getInstance().map(e); - throw moaException; - } catch (IAIKRuntimeException e) { - MOAException moaException = IaikExceptionMapper.getInstance().map(e); - throw moaException; - } catch (IOException e) { - throw new MOAApplicationException("2244", null, e); - } catch (MOAException e) { - throw e; - } finally { - try { - if (signedContent != null) - signedContent.close(); - } catch (Throwable t) { - // Intentionally do nothing here - } - } - - QCSSCDResult qcsscdresult = new QCSSCDResult(); - - // build the response: for each signatory add the result to the response - signatories = request.getSignatories(); - if (signatories == VerifyCMSSignatureRequest.ALL_SIGNATORIES) { - Iterator resultIter; - - for (resultIter = results.iterator(); resultIter.hasNext();) { - Object resultObject = resultIter.next(); - if (!request.isPDF()) { - handleCMSResult(resultObject, responseBuilder, trustProfile); - } else { - handlePDFResult(resultObject, responseBuilder, trustProfile); - } - } - } else { - int i; - - for (i = 0; i < signatories.length; i++) { - int sigIndex = signatories[i] - 1; - - try { - Object resultObject = results.get(signatories[i] - 1); - if (!request.isPDF()) { - handleCMSResult(resultObject, responseBuilder, trustProfile); - } else { - handlePDFResult(resultObject, responseBuilder, trustProfile); - } - } catch (IndexOutOfBoundsException e) { - throw new MOAApplicationException("2249", new Object[] { new Integer(sigIndex) }); - } - } - } - - return responseBuilder.getResponse(); - } - - private void handleCMSResult(Object resultObject, VerifyCMSSignatureResponseBuilder responseBuilder, - TrustProfile trustProfile) throws MOAException { - QCSSCDResult qcsscdresult = new QCSSCDResult(); - - if(resultObject == null) { - Logger.warn("Result Object is null!"); - return; - } - - CMSSignatureVerificationResult cmsResult = null; - List adesResults = null; - ExtendedCertificateCheckResult extCheckResult = null; - if (resultObject instanceof ExtendedCMSSignatureVerificationResult) { - Logger.info("Got ExtendedCMSSignatureVerificationResult"); - ExtendedCMSSignatureVerificationResult result = (ExtendedCMSSignatureVerificationResult) resultObject; - cmsResult = result.getCMSSignatureVerificationResult(); - adesResults = AdESResultUtils.getAdESResult(result.getFormVerificationResult()); - - - if (adesResults != null) { - Iterator adesIterator = adesResults.iterator(); - while (adesIterator.hasNext()) { - Logger.info("ADES Formresults: " + adesIterator.next().toString()); - } - } - try { - //Logger.info("Extended Validation Report: " + result.getName()); - Logger.info("Extended Validation Code: " + result.getResultCode().toString()); - Logger.info("Extended Validation Info: " + result.getInfo()); - - extCheckResult = AdESResultUtils.getExtendedResult(result.getResultCode()); - } catch (ConfigurationException e) { - Logger.warn("Cannot generate Extendend Result. Check SVA Configuration!", e); - } catch (NullPointerException e) { - Logger.info("No extendend validation result available."); - } - } else { - Logger.info("Got CMSSignatureVerificationResult"); - cmsResult = (CMSSignatureVerificationResult) resultObject; - } - - String issuerCountryCode = null; - // QC/SSCD check - - if(cmsResult.getCertificateValidationResult() != null) { - List list = cmsResult.getCertificateValidationResult().getCertificateChain(); - if (list != null) { - X509Certificate[] chain = new X509Certificate[list.size()]; - - Iterator it = list.iterator(); - int i = 0; - while (it.hasNext()) { - chain[i] = (X509Certificate) it.next(); - i++; - } - - qcsscdresult = CertificateUtils.checkQCSSCD(chain, cmsResult.getSigningTime(), trustProfile.isTSLEnabled(), ConfigurationProvider.getInstance()); - - // get signer certificate issuer country code - issuerCountryCode = CertificateUtils.getIssuerCountry((X509Certificate) list.get(0)); - } - } - - responseBuilder.addResult(cmsResult, trustProfile, qcsscdresult.isQC(), qcsscdresult.isQCSourceTSL(), - qcsscdresult.isSSCD(), qcsscdresult.isSSCDSourceTSL(), issuerCountryCode, adesResults, extCheckResult, - qcsscdresult.getTslInfos()); - } - - private void handlePDFResult(Object resultObject, VerifyCMSSignatureResponseBuilder responseBuilder, - TrustProfile trustProfile) throws MOAException { - QCSSCDResult qcsscdresult = new QCSSCDResult(); - - if(resultObject == null) { - Logger.warn("Result Object is null!"); - return; - } - - PDFSignatureVerificationResult cmsResult = null; - List adesResults = null; - - ExtendedCertificateCheckResult extCheckResult = null; - if (resultObject instanceof ExtendedPDFSignatureVerificationResult) { - Logger.info("Got ExtendedPDFSignatureVerificationResult"); - ExtendedPDFSignatureVerificationResult result = (ExtendedPDFSignatureVerificationResult) resultObject; - cmsResult = result.getPDFSignatureVerificationResult(); - adesResults = AdESResultUtils.getAdESResult(result.getFormVerificationResult()); - - if (adesResults != null) { - Iterator adesIterator = adesResults.iterator(); - while (adesIterator.hasNext()) { - Logger.info("ADES Formresults: " + adesIterator.next().toString()); - } - } - cmsResult = result.getPDFSignatureVerificationResult(); - try { - //Logger.info("Extended Validation Report: " + result.getName()); - Logger.info("Extended Validation Code: " + result.getResultCode().toString()); - Logger.info("Extended Validation Info: " + result.getInfo()); - - extCheckResult = AdESResultUtils.getExtendedResult(result.getResultCode()); - } catch (ConfigurationException e) { - Logger.warn("Cannot generate Extendend Result. Check SVA Configuration!", e); - } catch (NullPointerException e) { - Logger.info("No extendend validation result available."); - } - } else { - Logger.info("Got PDFSignatureVerificationResult"); - cmsResult = (PDFSignatureVerificationResult) resultObject; - } - - String issuerCountryCode = null; - // QC/SSCD check - - if (cmsResult.getCertificateValidationResult() != null) { - List list = cmsResult.getCertificateValidationResult().getCertificateChain(); - if (list != null) { - X509Certificate[] chain = new X509Certificate[list.size()]; - - Iterator it = list.iterator(); - int i = 0; - while (it.hasNext()) { - chain[i] = (X509Certificate) it.next(); - i++; - } - - qcsscdresult = CertificateUtils.checkQCSSCD(chain, cmsResult.getSigningTime(), trustProfile.isTSLEnabled(), ConfigurationProvider.getInstance()); - - // get signer certificate issuer country code - issuerCountryCode = CertificateUtils.getIssuerCountry((X509Certificate) list.get(0)); - - } - } - - responseBuilder.addResult(cmsResult, trustProfile, qcsscdresult.isQC(), qcsscdresult.isQCSourceTSL(), - qcsscdresult.isSSCD(), qcsscdresult.isSSCDSourceTSL(), issuerCountryCode, adesResults, - extCheckResult, qcsscdresult.getTslInfos()); - } - - /** - * Get the signed content contained either in the request itself or given as - * a reference to external data. - * - * @param request - * The <code>VerifyCMSSignatureRequest</code> containing the - * signed content (or the reference to the signed content). - * @return InputStream A stream providing the signed content data, or - * <code>null</code> if no signed content was provided with the - * request. - * @throws MOAApplicationException - * An error occurred building the stream. - */ - private InputStream getSignedContent(VerifyCMSSignatureRequest request) throws MOAApplicationException { - - InputStream is = null; - CMSDataObject dataObj; - CMSContent content; - - // select the Content element - dataObj = request.getDataObject(); - if (dataObj == null) { - return null; - } - content = dataObj.getContent(); - - // build the content data - switch (content.getContentType()) { - case CMSContent.EXPLICIT_CONTENT: - is = ((CMSContentExcplicit) content).getBinaryContent(); - is = excludeByteRange(is, request); - return is; - case CMSContent.REFERENCE_CONTENT: - String reference = ((CMSContentReference) content).getReference(); - if (!"".equals(reference)) { - ExternalURIResolver resolver = new ExternalURIResolver(); - is = resolver.resolve(reference); - is = excludeByteRange(is, request); - return is; - } else { - return null; - } - default: - return null; - } - - } - - private InputStream excludeByteRange(InputStream contentIs, VerifyCMSSignatureRequest request) - throws MOAApplicationException { - - int byteRead; - - ByteArrayOutputStream contentOs = new ByteArrayOutputStream(); - - CMSDataObject dataobject = request.getDataObject(); - BigDecimal from = dataobject.getExcludeByteRangeFrom(); - BigDecimal to = dataobject.getExcludeByteRangeTo(); - - if ((from == null) || (to == null)) - return contentIs; - - BigDecimal counter = new BigDecimal("0"); - BigDecimal one = new BigDecimal("1"); - - try { - while ((byteRead = contentIs.read()) >= 0) { - - if (inRange(counter, dataobject)) { - // if byte is in byte range, set byte to 0x00 - contentOs.write(0); - } else - contentOs.write(byteRead); - - counter = counter.add(one); - } - - InputStream is = new ByteArrayInputStream(contentOs.toByteArray()); - - return is; - - } catch (IOException e) { - throw new MOAApplicationException("2301", null, e); - } - - } - - private boolean inRange(BigDecimal counter, CMSDataObject dataobject) { - BigDecimal from = dataobject.getExcludeByteRangeFrom(); - BigDecimal to = dataobject.getExcludeByteRangeTo(); - - if ((from == null) || (to == null)) - return false; - - int compare = counter.compareTo(from); - if (compare == -1) - return false; - else { - compare = counter.compareTo(to); - if (compare == 1) - return false; - else - return true; - } - - } - - private List getAdESResult(ExtendedCMSSignatureVerificationResult adesFormVerification) throws ConfigurationException { - if (adesFormVerification == null) { - // no form information - return null; - } - - List adesList = new ArrayList(); - Logger.info("Checking AdES Results:"); - - //AdESResultUtils.buildResult(adesFormVerification.getDetailedExtendedReport(), adesList); - - //AdESResultUtils.checkSubResult(adesFormVerification.getSubResult(AdESConstants.LONG_TERM_VALIDATION), - // SignatureVerificationProfile.LEVEL_LTA, adesList); - AdESResultUtils.checkSubResult(adesFormVerification.getSubResult(AdESConstants.LONG_TERM_VALIDATION), - SignatureVerificationProfile.LEVEL_LT, adesList); - AdESResultUtils.checkSubResult(adesFormVerification.getSubResult(AdESConstants.ADES_T_VALIDATION), - SignatureVerificationProfile.LEVEL_T, adesList); - AdESResultUtils.checkSubResult(adesFormVerification.getSubResult("basic report"), - SignatureVerificationProfile.LEVEL_B, adesList); - - return adesList; - } - - private List getAdESResult(ExtendedPDFSignatureVerificationResult adesFormVerification) throws ConfigurationException { - if (adesFormVerification == null) { - // no form information - return null; - } - - List adesList = new ArrayList(); - - /*checkSubResult(adesFormVerification.getSubResult(SignatureVerificationProfile.LEVEL_LTA), - SignatureVerificationProfile.LEVEL_LTA, adesList); - checkSubResult(adesFormVerification.getSubResult(SignatureVerificationProfile.LEVEL_LT), - SignatureVerificationProfile.LEVEL_LT, adesList); - checkSubResult(adesFormVerification.getSubResult(SignatureVerificationProfile.LEVEL_T), - SignatureVerificationProfile.LEVEL_T, adesList); - checkSubResult(adesFormVerification.getSubResult(SignatureVerificationProfile.LEVEL_B), - SignatureVerificationProfile.LEVEL_B, adesList); - */ - - AdESResultUtils.checkSubResult(adesFormVerification.getSubResult(AdESConstants.LONG_TERM_VALIDATION), - SignatureVerificationProfile.LEVEL_LT, adesList); - AdESResultUtils.checkSubResult(adesFormVerification.getSubResult(AdESConstants.ADES_T_VALIDATION), - SignatureVerificationProfile.LEVEL_T, adesList); - AdESResultUtils.checkSubResult(adesFormVerification.getSubResult("basic report"), - SignatureVerificationProfile.LEVEL_B, adesList); - - return adesList; - } + /** The single instance of this class. */ + private static CMSSignatureVerificationInvoker instance = null; + + /** + * Return the only instance of this class. + * + * @return The only instance of this class. + */ + public static synchronized CMSSignatureVerificationInvoker getInstance() { + if (instance == null) { + instance = new CMSSignatureVerificationInvoker(); + } + return instance; + } + + /** + * Create a new <code>CMSSignatureVerificationInvoker</code>. + * + * Protected to disallow multiple instances. + */ + protected CMSSignatureVerificationInvoker() { + } + + /** + * Verify a CMS signature. + * + * @param request The <code>VerifyCMSSignatureRequest</code> containing the CMS + * signature, as well as additional data needed for verification. + * @return Element A <code>VerifyCMSSignatureResponse</code> containing the + * answer to the <code>VerifyCMSSignatureRequest</code>. + * @throws MOAException An error occurred while processing the request. + */ + public VerifyCMSSignatureResponse verifyCMSSignature(VerifyCMSSignatureRequest request) + throws MOAException { + + final CMSSignatureVerificationProfileFactory profileFactory = new CMSSignatureVerificationProfileFactory( + request); + final VerifyCMSSignatureResponseBuilder responseBuilder = new VerifyCMSSignatureResponseBuilder(); + final TransactionContext context = TransactionContextManager.getInstance().getTransactionContext(); + final LoggingContext loggingCtx = LoggingContextManager.getInstance().getLoggingContext(); + InputStream signature; + InputStream signedContent = null; + Date signingTime; + List results; + int[] signatories; + InputStream input; + final byte[] buf = new byte[2048]; + + // get the signature + signature = request.getCMSSignature(); + + // get the actual trustprofile + final TrustProfile trustProfile = context.getConfiguration().getTrustProfile(request.getTrustProfileId()); + + try { + // get the signing time + signingTime = request.getDateTime(); + + // build the profile + if (request.isPDF()) { + final PDFSignatureVerificationProfile profile = profileFactory.createPDFProfile(); + Logger.debug("Sending PDFSignatureVerificationProfile to IAIK-MOA"); + + final PDFSignatureVerificationModule module = + iaik.server.modules.pdfverify.PDFSignatureVerificationModuleFactory + .getInstance(); + + module.setLog(new IaikLog(loggingCtx.getNodeID())); + // Logger.info(" Available: " + signature.available()); + module.init(signature, profile, new TransactionId(context.getTransactionID())); + + // input = module.getInputStream(); + + // while (input.read(buf) > 0); + if (request.isExtended()) { + Logger.info("Running extended validation"); + results = module.verifyPAdESSignature(signingTime); + } else { + Logger.info("Running not extended validation"); + results = module.verifySignature(signingTime); + } + + // PAdES module had to be closed manually + module.closeModule(); + + } else { + // get the signed content + signedContent = getSignedContent(request); + final CMSSignatureVerificationProfile profile = profileFactory.createProfile(); + Logger.debug("Sending CMSSignatureVerificationProfile to IAIK-MOA"); + + // verify the signature + final CMSSignatureVerificationModule module = CMSSignatureVerificationModuleFactory.getInstance(); + + module.setLog(new IaikLog(loggingCtx.getNodeID())); + + module.init(signature, signedContent, profile, new TransactionId(context.getTransactionID())); + input = module.getInputStream(); + + while (input.read(buf) > 0) { + ; + } + + if (request.isExtended()) { + Logger.info("Running extended validation"); + results = module.verifyCAdESSignature(signingTime); + } else { + Logger.info("Running not extended validation"); + results = module.verifySignature(signingTime); + } + // results = module.verifySignature(signingTime); + } + + } catch (final IAIKException e) { + final MOAException moaException = IaikExceptionMapper.getInstance().map(e); + throw moaException; + } catch (final IAIKRuntimeException e) { + final MOAException moaException = IaikExceptionMapper.getInstance().map(e); + throw moaException; + } catch (final IOException e) { + throw new MOAApplicationException("2244", null, e); + } catch (final MOAException e) { + throw e; + } finally { + try { + if (signedContent != null) { + signedContent.close(); + } + + if (signature != null) { + signature.close(); + } + + } catch (final Throwable t) { + // Intentionally do nothing here + } + } + + final QCSSCDResult qcsscdresult = new QCSSCDResult(); + + // build the response: for each signatory add the result to the response + signatories = request.getSignatories(); + if (signatories == VerifyCMSSignatureRequest.ALL_SIGNATORIES) { + Iterator resultIter; + + for (resultIter = results.iterator(); resultIter.hasNext();) { + final Object resultObject = resultIter.next(); + if (!request.isPDF()) { + handleCMSResult(resultObject, responseBuilder, trustProfile); + } else { + handlePDFResult(resultObject, responseBuilder, trustProfile); + } + } + } else { + int i; + + for (i = 0; i < signatories.length; i++) { + final int sigIndex = signatories[i] - 1; + + try { + final Object resultObject = results.get(signatories[i] - 1); + if (!request.isPDF()) { + handleCMSResult(resultObject, responseBuilder, trustProfile); + } else { + handlePDFResult(resultObject, responseBuilder, trustProfile); + } + } catch (final IndexOutOfBoundsException e) { + throw new MOAApplicationException("2249", new Object[] { new Integer(sigIndex) }); + } + } + } + + return responseBuilder.getResponse(); + } + + private void handleCMSResult(Object resultObject, VerifyCMSSignatureResponseBuilder responseBuilder, + TrustProfile trustProfile) throws MOAException { + QCSSCDResult qcsscdresult = new QCSSCDResult(); + + if (resultObject == null) { + Logger.warn("Result Object is null!"); + return; + } + + CMSSignatureVerificationResult cmsResult = null; + List adesResults = null; + boolean extendedVerification = false; + + ExtendedCertificateCheckResult extCheckResult = null; + if (resultObject instanceof ExtendedCMSSignatureVerificationResult) { + Logger.info("Got ExtendedCMSSignatureVerificationResult"); + extendedVerification = true; + final ExtendedCMSSignatureVerificationResult result = + (ExtendedCMSSignatureVerificationResult) resultObject; + cmsResult = result.getCMSSignatureVerificationResult(); + adesResults = AdESResultUtils.getAdESResult(result.getFormVerificationResult()); + + if (Logger.isDebugEnabled() && adesResults != null) { + final Iterator adesIterator = adesResults.iterator(); + while (adesIterator.hasNext()) { + Logger.debug("ADES Formresults: " + adesIterator.next().toString()); + } + + } + + try { + // Logger.info("Extended Validation Report: " + result.getName()); + Logger.debug("Extended Validation Code: " + result.getResultCode().toString()); + Logger.debug("Extended Validation Info: " + result.getInfo()); + + extCheckResult = AdESResultUtils.getExtendedResult(result.getResultCode()); + + } catch (final NullPointerException e) { + Logger.info("No extendend validation result available."); + + } + } else { + Logger.debug("Got CMSSignatureVerificationResult"); + cmsResult = (CMSSignatureVerificationResult) resultObject; + + } + + String issuerCountryCode = null; + // QC/SSCD check + + if (cmsResult.getCertificateValidationResult() != null) { + final List list = cmsResult.getCertificateValidationResult().getCertificateChain(); + if (list != null) { + final X509Certificate[] chain = new X509Certificate[list.size()]; + + final Iterator it = list.iterator(); + int i = 0; + while (it.hasNext()) { + chain[i] = (X509Certificate) it.next(); + i++; + } + + qcsscdresult = CertificateUtils.checkQCSSCD(chain, cmsResult.getSigningTime(), trustProfile + .isTSLEnabled(), ConfigurationProvider.getInstance()); + + // get signer certificate issuer country code + issuerCountryCode = CertificateUtils.getIssuerCountry((X509Certificate) list.get(0)); + } + } + + responseBuilder.addResult(cmsResult, trustProfile, qcsscdresult.isQC(), qcsscdresult.isQCSourceTSL(), + qcsscdresult.isSSCD(), qcsscdresult.isSSCDSourceTSL(), issuerCountryCode, adesResults, extCheckResult, + qcsscdresult.getTslInfos(), extendedVerification); + } + + private void handlePDFResult(Object resultObject, VerifyCMSSignatureResponseBuilder responseBuilder, + TrustProfile trustProfile) throws MOAException { + QCSSCDResult qcsscdresult = new QCSSCDResult(); + + if (resultObject == null) { + Logger.warn("Result Object is null!"); + return; + } + + PDFSignatureVerificationResult cmsResult = null; + List adesResults = null; + boolean extendedVerification = false; + final Boolean coversFullDoc = null; + final int[] sigByteRange = null; + + ExtendedCertificateCheckResult extCheckResult = null; + if (resultObject instanceof ExtendedPDFSignatureVerificationResult) { + Logger.info("Got ExtendedPDFSignatureVerificationResult"); + extendedVerification = true; + final ExtendedPDFSignatureVerificationResult result = + (ExtendedPDFSignatureVerificationResult) resultObject; + cmsResult = result.getPDFSignatureVerificationResult(); + adesResults = AdESResultUtils.getAdESResult(result.getFormVerificationResult()); + + if (Logger.isDebugEnabled() && adesResults != null) { + final Iterator adesIterator = adesResults.iterator(); + while (adesIterator.hasNext()) { + Logger.debug("ADES Formresults: " + adesIterator.next().toString()); + } + + } + + try { + Logger.debug("Extended Validation Code: " + result.getResultCode().toString()); + + if (result.getDetailedExtendedReport() != null) { + Logger.debug("Extended Validation Info: " + result.getDetailedExtendedReport().getMessage()); + } else { + Logger.debug("Extended Validation Info: " + result.getInfo()); + } + + Logger.debug("Full extended Validation Infos: " + result.getInfo()); + extCheckResult = AdESResultUtils.getExtendedResult(result.getResultCode()); + + } catch (final NullPointerException e) { + Logger.info("No extendend validation result available."); + + } + + } else { + Logger.debug("Got PDFSignatureVerificationResult"); + cmsResult = (PDFSignatureVerificationResult) resultObject; + } + + if (MiscUtil.isNotEmpty(cmsResult.getError())) { + Logger.info("Signature validation stopped with an error: " + cmsResult.getError()); + } + + String issuerCountryCode = null; + // QC/SSCD check + + if (cmsResult.getCertificateValidationResult() != null) { + final List list = cmsResult.getCertificateValidationResult().getCertificateChain(); + if (list != null) { + final X509Certificate[] chain = new X509Certificate[list.size()]; + + final Iterator it = list.iterator(); + int i = 0; + while (it.hasNext()) { + chain[i] = (X509Certificate) it.next(); + i++; + } + + qcsscdresult = CertificateUtils.checkQCSSCD(chain, cmsResult.getSigningTime(), trustProfile + .isTSLEnabled(), ConfigurationProvider.getInstance()); + + // get signer certificate issuer country code + issuerCountryCode = CertificateUtils.getIssuerCountry((X509Certificate) list.get(0)); + + } + } + + responseBuilder.addResult(cmsResult, trustProfile, qcsscdresult.isQC(), qcsscdresult.isQCSourceTSL(), + qcsscdresult.isSSCD(), qcsscdresult.isSSCDSourceTSL(), issuerCountryCode, adesResults, + extCheckResult, qcsscdresult.getTslInfos(), extendedVerification); + } + + /** + * Get the signed content contained either in the request itself or given as a + * reference to external data. + * + * @param request The <code>VerifyCMSSignatureRequest</code> containing the + * signed content (or the reference to the signed content). + * @return InputStream A stream providing the signed content data, or + * <code>null</code> if no signed content was provided with the request. + * @throws MOAApplicationException An error occurred building the stream. + */ + private InputStream getSignedContent(VerifyCMSSignatureRequest request) throws MOAApplicationException { + + InputStream is = null; + CMSDataObject dataObj; + CMSContent content; + + // select the Content element + dataObj = request.getDataObject(); + if (dataObj == null) { + return null; + } + content = dataObj.getContent(); + + // build the content data + switch (content.getContentType()) { + case CMSContent.EXPLICIT_CONTENT: + is = ((CMSContentExcplicit) content).getBinaryContent(); + is = excludeByteRange(is, request); + return is; + case CMSContent.REFERENCE_CONTENT: + final String reference = ((CMSContentReference) content).getReference(); + if (!"".equals(reference)) { + final ExternalURIResolver resolver = new ExternalURIResolver(); + is = resolver.resolve(reference); + is = excludeByteRange(is, request); + return is; + } else { + return null; + } + default: + return null; + } + + } + + private InputStream excludeByteRange(InputStream contentIs, VerifyCMSSignatureRequest request) + throws MOAApplicationException { + + int byteRead; + + final ByteArrayOutputStream contentOs = new ByteArrayOutputStream(); + + final CMSDataObject dataobject = request.getDataObject(); + final BigDecimal from = dataobject.getExcludeByteRangeFrom(); + final BigDecimal to = dataobject.getExcludeByteRangeTo(); + + if (from == null || to == null) { + return contentIs; + } + + BigDecimal counter = new BigDecimal("0"); + final BigDecimal one = new BigDecimal("1"); + + try { + while ((byteRead = contentIs.read()) >= 0) { + + if (inRange(counter, dataobject)) { + // if byte is in byte range, set byte to 0x00 + contentOs.write(0); + } else { + contentOs.write(byteRead); + } + + counter = counter.add(one); + } + + final InputStream is = new ByteArrayInputStream(contentOs.toByteArray()); + + return is; + + } catch (final IOException e) { + throw new MOAApplicationException("2301", null, e); + } + + } + + private boolean inRange(BigDecimal counter, CMSDataObject dataobject) { + final BigDecimal from = dataobject.getExcludeByteRangeFrom(); + final BigDecimal to = dataobject.getExcludeByteRangeTo(); + + if (from == null || to == null) { + return false; + } + + int compare = counter.compareTo(from); + if (compare == -1) { + return false; + } else { + compare = counter.compareTo(to); + if (compare == 1) { + return false; + } else { + return true; + } + } + + } } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/CMSSignatureVerificationProfileFactory.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/CMSSignatureVerificationProfileFactory.java index bd5db6d..5e343c4 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/CMSSignatureVerificationProfileFactory.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/CMSSignatureVerificationProfileFactory.java @@ -21,7 +21,6 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.server.invoke; import at.gv.egovernment.moa.spss.MOAException; @@ -39,71 +38,71 @@ import iaik.server.modules.pdfverify.PDFSignatureVerificationProfile; * A factory to create a <code>CMSSignatureVerificationProfile</code> from a * <code>VerifyCMSSignatureRequest</code> and the current MOA configuration * data. - * + * * @author Patrick Peck * @version $Id$ */ public class CMSSignatureVerificationProfileFactory { - /** The <code>VerifyCMSSignatureRequest</code> to draw profile data from. */ - private VerifyCMSSignatureRequest request; + /** The <code>VerifyCMSSignatureRequest</code> to draw profile data from. */ + private final VerifyCMSSignatureRequest request; /** * Create a new <code>CMSSignatureVerificationProfileFactory</code>. * - * @param request The <code>VerifyCMSSignatureRequest</code> to draw profile - * data from. + * @param request The <code>VerifyCMSSignatureRequest</code> to draw profile + * data from. */ public CMSSignatureVerificationProfileFactory(VerifyCMSSignatureRequest request) { this.request = request; } /** - * Create a <code>CMSSignatureVerificationProfile</code> from the given - * request and the current MOA configuration. - * + * Create a <code>CMSSignatureVerificationProfile</code> from the given request + * and the current MOA configuration. + * * @return The <code>CMSSignatureVerificationProfile</code> for the - * <code>request</code>, based on the current configuration. + * <code>request</code>, based on the current configuration. * @throws MOAException An error occurred creating the profile. */ public PDFSignatureVerificationProfile createPDFProfile() - throws MOAException { - TransactionContext context = - TransactionContextManager.getInstance().getTransactionContext(); - ConfigurationProvider config = context.getConfiguration(); - PDFSignatureVerificationProfileImpl profile = - new PDFSignatureVerificationProfileImpl(); + throws MOAException { + final TransactionContext context = + TransactionContextManager.getInstance().getTransactionContext(); + final ConfigurationProvider config = context.getConfiguration(); + final PDFSignatureVerificationProfileImpl profile = + new PDFSignatureVerificationProfileImpl(); String trustProfileID; // set the certificate validation profile trustProfileID = request.getTrustProfileId(); profile.setCertificateValidationProfile( - new PKIProfileImpl(config, trustProfileID)); + new PKIProfileImpl(config, trustProfileID)); return profile; } - + /** - * Create a <code>CMSSignatureVerificationProfile</code> from the given - * request and the current MOA configuration. - * + * Create a <code>CMSSignatureVerificationProfile</code> from the given request + * and the current MOA configuration. + * * @return The <code>CMSSignatureVerificationProfile</code> for the - * <code>request</code>, based on the current configuration. + * <code>request</code>, based on the current configuration. * @throws MOAException An error occurred creating the profile. */ public CMSSignatureVerificationProfile createProfile() - throws MOAException { - TransactionContext context = - TransactionContextManager.getInstance().getTransactionContext(); - ConfigurationProvider config = context.getConfiguration(); - CMSSignatureVerificationProfileImpl profile = - new CMSSignatureVerificationProfileImpl(); + throws MOAException { + final TransactionContext context = + TransactionContextManager.getInstance().getTransactionContext(); + final ConfigurationProvider config = context.getConfiguration(); + final CMSSignatureVerificationProfileImpl profile = + new CMSSignatureVerificationProfileImpl(); String trustProfileID; // set the certificate validation profile trustProfileID = request.getTrustProfileId(); profile.setCertificateValidationProfile( - new PKIProfileImpl(config, trustProfileID)); + new PKIProfileImpl(config, trustProfileID)); return profile; } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/CreateCMSSignatureResponseBuilder.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/CreateCMSSignatureResponseBuilder.java index aa52fe0..bc5d884 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/CreateCMSSignatureResponseBuilder.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/CreateCMSSignatureResponseBuilder.java @@ -21,7 +21,6 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.server.invoke; import java.util.ArrayList; @@ -34,29 +33,33 @@ import at.gv.egovernment.moa.spss.api.xmlsign.ErrorResponse; /** * A class to build a <code>CreateCMSSignatureResponse</code>. - * - * <p>The methods <code>addSignature()</code> and <code>addError()</code> may be + * + * <p> + * The methods <code>addSignature()</code> and <code>addError()</code> may be * called in any combination to add <code>CMSignature</code> and * <code>ErrorResponse</code> elements to the response. One of these functions - * must be called at least once to produce a - * <code>CreateCMSSignatureResponse</code>.</p> - * - * <p>The <code>getResponseElement()</code> method then returns the - * <code>CreateXMLSignatureResponse</code> built so far.</p> - * + * must be called at least once to produce a + * <code>CreateCMSSignatureResponse</code>. + * </p> + * + * <p> + * The <code>getResponseElement()</code> method then returns the + * <code>CreateXMLSignatureResponse</code> built so far. + * </p> + * * @author Patrick Peck * @version $Id$ */ public class CreateCMSSignatureResponseBuilder { /** The <code>SPSSFactory</code> for creating API objects. */ - private SPSSFactory factory = SPSSFactory.getInstance(); + private final SPSSFactory factory = SPSSFactory.getInstance(); /** The elements to add to the response. */ - private List responseElements = new ArrayList(); + private final List responseElements = new ArrayList(); /** * Get the <code>CreateCMSSignatureResponse</code> built so far. - * + * * @return The <code>CreateCMSSignatureResponse</code> built so far. */ public CreateCMSSignatureResponse getResponse() { @@ -65,28 +68,29 @@ public class CreateCMSSignatureResponseBuilder { /** * Add a <code>SignatureEnvironment</code> element to the response. - * + * * @param signatureEnvironment The content to put under the - * <code>SignatureEnvironment</code> element. This should either be a - * <code>dsig:Signature</code> element (in case of a detached signature) or - * the signature environment containing the signature (in case of - * an enveloping signature). + * <code>SignatureEnvironment</code> element. This + * should either be a <code>dsig:Signature</code> + * element (in case of a detached signature) or the + * signature environment containing the signature + * (in case of an enveloping signature). */ public void addCMSSignature(String base64value) { - CMSSignatureResponse responseElement = - factory.createCMSSignatureResponse(base64value); + final CMSSignatureResponse responseElement = + factory.createCMSSignatureResponse(base64value); responseElements.add(responseElement); } /** * Add a <code>ErrorResponse</code> element to the response. - * + * * @param errorCode The error code. - * @param info Additional information about the error. + * @param info Additional information about the error. */ public void addError(String errorCode, String info) { - ErrorResponse errorResponse = - factory.createErrorResponse(Integer.parseInt(errorCode), info); + final ErrorResponse errorResponse = + factory.createErrorResponse(Integer.parseInt(errorCode), info); responseElements.add(errorResponse); } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/CreateXMLSignatureResponseBuilder.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/CreateXMLSignatureResponseBuilder.java index 7a7161d..0a7e70d 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/CreateXMLSignatureResponseBuilder.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/CreateXMLSignatureResponseBuilder.java @@ -21,7 +21,6 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.server.invoke; import java.util.ArrayList; @@ -36,29 +35,33 @@ import at.gv.egovernment.moa.spss.api.xmlsign.SignatureEnvironmentResponse; /** * A class to build a <code>CreateXMLSignatureResponse</code>. - * - * <p>The methods <code>addSignature()</code> and <code>addError()</code> may be + * + * <p> + * The methods <code>addSignature()</code> and <code>addError()</code> may be * called in any combination to add <code>SignatureEnvironment</code> and * <code>ErrorResponse</code> elements to the response. One of these functions - * must be called at least once to produce a - * <code>CreateXMLSignatureResponse</code>.</p> - * - * <p>The <code>getResponseElement()</code> method then returns the - * <code>CreateXMLSignatureResponse</code> built so far.</p> - * + * must be called at least once to produce a + * <code>CreateXMLSignatureResponse</code>. + * </p> + * + * <p> + * The <code>getResponseElement()</code> method then returns the + * <code>CreateXMLSignatureResponse</code> built so far. + * </p> + * * @author Patrick Peck * @version $Id$ */ public class CreateXMLSignatureResponseBuilder { /** The <code>SPSSFactory</code> for creating API objects. */ - private SPSSFactory factory = SPSSFactory.getInstance(); + private final SPSSFactory factory = SPSSFactory.getInstance(); /** The elements to add to the response. */ - private List responseElements = new ArrayList(); + private final List responseElements = new ArrayList(); /** * Get the <code>CreateXMLSignatureResponse</code> built so far. - * + * * @return The <code>CreateXMLSignatureResponse</code> built so far. */ public CreateXMLSignatureResponse getResponse() { @@ -67,28 +70,29 @@ public class CreateXMLSignatureResponseBuilder { /** * Add a <code>SignatureEnvironment</code> element to the response. - * + * * @param signatureEnvironment The content to put under the - * <code>SignatureEnvironment</code> element. This should either be a - * <code>dsig:Signature</code> element (in case of a detached signature) or - * the signature environment containing the signature (in case of - * an enveloping signature). + * <code>SignatureEnvironment</code> element. This + * should either be a <code>dsig:Signature</code> + * element (in case of a detached signature) or the + * signature environment containing the signature + * (in case of an enveloping signature). */ public void addSignatureEnvironment(Element signatureEnvironment) { - SignatureEnvironmentResponse responseElement = - factory.createSignatureEnvironmentResponse(signatureEnvironment); + final SignatureEnvironmentResponse responseElement = + factory.createSignatureEnvironmentResponse(signatureEnvironment); responseElements.add(responseElement); } /** * Add a <code>ErrorResponse</code> element to the response. - * + * * @param errorCode The error code. - * @param info Additional information about the error. + * @param info Additional information about the error. */ public void addError(String errorCode, String info) { - ErrorResponse errorResponse = - factory.createErrorResponse(Integer.parseInt(errorCode), info); + final ErrorResponse errorResponse = + factory.createErrorResponse(Integer.parseInt(errorCode), info); responseElements.add(errorResponse); } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/DataObjectFactory.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/DataObjectFactory.java index 0740a73..b8d4df5 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/DataObjectFactory.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/DataObjectFactory.java @@ -21,10 +21,8 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.server.invoke; - import java.io.ByteArrayInputStream; import java.io.IOException; import java.io.InputStream; @@ -84,8 +82,8 @@ import iaik.server.modules.xml.XMLDataObject; import iaik.xml.crypto.utils.URIDereferencerImpl; /** - * A class to create <code>DataObject</code>s contained in different - * locations of the MOA XML request format. + * A class to create <code>DataObject</code>s contained in different locations + * of the MOA XML request format. * * @author Patrick Peck * @author Gregor Karlinger @@ -94,15 +92,15 @@ import iaik.xml.crypto.utils.URIDereferencerImpl; public class DataObjectFactory { /** - * XPATH for registering ID attributes of known schemas if - * validating parsing fails. + * XPATH for registering ID attributes of known schemas if validating parsing + * fails. */ private static final String XPATH = - "descendant-or-self::node()[" + - "namespace-uri()='http://www.w3.org/2000/09/xmldsig#' " + - "or namespace-uri()='http://reference.e-government.gv.at/namespace/persondata/20020228#' " + - "or starts-with(namespace-uri(), 'http://uri.etsi.org/01903/')" + - "]/attribute::Id"; + "descendant-or-self::node()[" + + "namespace-uri()='http://www.w3.org/2000/09/xmldsig#' " + + "or namespace-uri()='http://reference.e-government.gv.at/namespace/persondata/20020228#' " + + "or starts-with(namespace-uri(), 'http://uri.etsi.org/01903/')" + + "]/attribute::Id"; /** The single instance of this class. */ private static DataObjectFactory instance = null; @@ -128,26 +126,27 @@ public class DataObjectFactory { } /** - * Return the signature environment, i.e., the root element of the - * document, into which the signature will be inserted (if created) or which - * contains the signature (if verified). + * Return the signature environment, i.e., the root element of the document, + * into which the signature will be inserted (if created) or which contains the + * signature (if verified). * - * @param content The <code>Content</code> object containing the signature - * environment. + * @param content The <code>Content</code> object containing the signature + * environment. * @param supplements Additional schema or DTD information. - * @return The signature environment or <code>null</code>, if no - * signature environment exists. - * @throws MOASystemException A system error occurred building the signature - * environment (see message for details). + * @return The signature environment or <code>null</code>, if no signature + * environment exists. + * @throws MOASystemException A system error occurred building the + * signature environment (see message for + * details). * @throws MOAApplicationException An error occurred building the signature - * environment (see message for details). + * environment (see message for details). */ public XMLDataObject createSignatureEnvironment( - Content content, - List supplements) - throws MOASystemException, MOAApplicationException { + Content content, + List supplements) + throws MOASystemException, MOAApplicationException { - String reference = content.getReference(); + final String reference = content.getReference(); EntityResolver entityResolver; byte[] contentBytes; @@ -155,10 +154,10 @@ public class DataObjectFactory { checkAllowContentAndReference(content, false); // build the EntityResolver for validating parsing - if ((supplements == null) || supplements.isEmpty()) { + if (supplements == null || supplements.isEmpty()) { entityResolver = new MOASPSSEntityResolver(); } else { - EntityResolverChain chain = new EntityResolverChain(); + final EntityResolverChain chain = new EntityResolverChain(); chain.addEntityResolver(buildSupplementEntityResolver(supplements)); chain.addEntityResolver(new MOASPSSEntityResolver()); @@ -168,83 +167,70 @@ public class DataObjectFactory { // convert the content into a byte array try { switch (content.getContentType()) { - case Content.BINARY_CONTENT : - { - InputStream is = ((ContentBinary) content).getBinaryContent(); - contentBytes = StreamUtils.readStream(is); - break; - } - case Content.LOCREF_CONTENT: - { - String locRefURI = ((ContentLocRef) content).getLocationReferenceURI(); - InputStream is = null; - try - { - TransactionContext context = TransactionContextManager.getInstance().getTransactionContext(); - is = context.ResolveURI(locRefURI); - if (is == null) { - ExternalURIResolver uriResolver = new ExternalURIResolver(); - is = uriResolver.resolve(locRefURI); - } - contentBytes = StreamUtils.readStream(is); - } - catch (MOAApplicationException e) - { - throw new MOAApplicationException("3203", new Object[]{reference, locRefURI}, e); - } - finally - { - closeInputStream(is); + case Content.BINARY_CONTENT: { + final InputStream is = ((ContentBinary) content).getBinaryContent(); + contentBytes = StreamUtils.readStream(is); + break; + } + case Content.LOCREF_CONTENT: { + final String locRefURI = ((ContentLocRef) content).getLocationReferenceURI(); + InputStream is = null; + try { + final TransactionContext context = TransactionContextManager.getInstance() + .getTransactionContext(); + is = context.ResolveURI(locRefURI); + if (is == null) { + final ExternalURIResolver uriResolver = new ExternalURIResolver(); + is = uriResolver.resolve(locRefURI); } - break; + contentBytes = StreamUtils.readStream(is); + } catch (final MOAApplicationException e) { + throw new MOAApplicationException("3203", new Object[] { reference, locRefURI }, e); + } finally { + closeInputStream(is); } - case Content.REFERENCE_CONTENT : - { - ExternalURIResolver uriResolver = new ExternalURIResolver(); - InputStream is = null; - try - { - is = uriResolver.resolve(reference); - contentBytes = StreamUtils.readStream(is); - } - catch (Exception e) - { - throw e; - } - finally - { - closeInputStream(is); - } - break; + break; + } + case Content.REFERENCE_CONTENT: { + final ExternalURIResolver uriResolver = new ExternalURIResolver(); + InputStream is = null; + try { + is = uriResolver.resolve(reference); + contentBytes = StreamUtils.readStream(is); + } catch (final Exception e) { + throw e; + } finally { + closeInputStream(is); } - case Content.XML_CONTENT : - { - Element element = + break; + } + case Content.XML_CONTENT: { + final Element element = checkForSingleElement(((ContentXML) content).getXMLContent()); - contentBytes = DOMUtils.serializeNode(element, "UTF-8"); + contentBytes = DOMUtils.serializeNode(element, "UTF-8"); - break; - } - default : { + break; + } + default: { contentBytes = null; // this will not happen } } - } catch (MOAApplicationException e) { + } catch (final MOAApplicationException e) { throw e; - } catch (Exception e) { + } catch (final Exception e) { throw new MOAApplicationException("2219", null); } if (Logger.isTraceEnabled()) { // For logging in Debug-Mode: Mask baseid with xxx - String logString = new String(contentBytes); + final String logString = new String(contentBytes); // TODO use RegExp - String startS = "<pr:Identification><pr:Value>"; - String endS = "</pr:Value><pr:Type>urn:publicid:gv.at:baseid</pr:Type>"; + final String startS = "<pr:Identification><pr:Value>"; + final String endS = "</pr:Value><pr:Type>urn:publicid:gv.at:baseid</pr:Type>"; String logWithMaskedBaseid = logString; - int start = logString.indexOf(startS); + final int start = logString.indexOf(startS); if (start > -1) { - int end = logString.indexOf(endS); + final int end = logString.indexOf(endS); if (end > -1) { logWithMaskedBaseid = logString.substring(0, start); logWithMaskedBaseid += startS; @@ -257,37 +243,37 @@ public class DataObjectFactory { Logger.trace(">>> parsing the following content: \n" + logWithMaskedBaseid); } try { - ByteArrayInputStream is = new ByteArrayInputStream(contentBytes); - Document doc = - DOMUtils.parseDocument( - is, - true, - Constants.ALL_SCHEMA_LOCATIONS, - null, - entityResolver, - new MOAErrorHandler()); + final ByteArrayInputStream is = new ByteArrayInputStream(contentBytes); + final Document doc = + DOMUtils.parseDocument( + is, + true, + Constants.ALL_SCHEMA_LOCATIONS, + null, + entityResolver, + new MOAErrorHandler()); Logger.trace("<<< parsed"); return new XMLDataObjectImpl(doc.getDocumentElement()); - } catch (Exception e) { + } catch (final Exception e) { // never mind, we'll try non-validating - MessageProvider msg = MessageProvider.getInstance(); + final MessageProvider msg = MessageProvider.getInstance(); Logger.info(new LogMsg(msg.getMessage("invoker.00", null))); Logger.info(new LogMsg(e.getMessage())); } // try to parse non-validating try { - ByteArrayInputStream is = new ByteArrayInputStream(contentBytes); - Document doc = DOMUtils.parseDocument(is, false, null, null); + final ByteArrayInputStream is = new ByteArrayInputStream(contentBytes); + final Document doc = DOMUtils.parseDocument(is, false, null, null); // Since the parse tree will not contain any post schema validation information, // we need to register any attributes known to be of type xsd:Id manually. - NodeList idAttributes = XPathUtils.selectNodeList(doc.getDocumentElement(), XPATH); + final NodeList idAttributes = XPathUtils.selectNodeList(doc.getDocumentElement(), XPATH); for (int i = 0; i < idAttributes.getLength(); i++) { - Node item = idAttributes.item(i); + final Node item = idAttributes.item(i); if (item instanceof Attr) { - Attr attr = (Attr) item; - Element owner = attr.getOwnerElement(); + final Attr attr = (Attr) item; + final Element owner = attr.getOwnerElement(); // Only available in DOM-Level 3 (Java 1.5): // owner.setIdAttributeNode(attr, true); if (doc instanceof CoreDocumentImpl) { @@ -296,7 +282,7 @@ public class DataObjectFactory { } } return new XMLDataObjectImpl(doc.getDocumentElement()); - } catch (Exception e) { + } catch (final Exception e) { throw new MOAApplicationException("2218", null); } } @@ -305,68 +291,69 @@ public class DataObjectFactory { * Create an <code>XMLDataObject</code> from the given signature environment. * * @param signatureEnvironment The signature environment contained in the - * result. - * @param uri The URI identifying the data. This must be either the empty - * URI, an URI starting with <code>"#xpointer"</code>, <code>"#xmlns"</code> - * or <code>"#element"</code>; or an URI starting with <code>"#"</code> and - * followed by an element ID. - * @param referenceID The reference ID to set for the data object. + * result. + * @param uri The URI identifying the data. This must be either + * the empty URI, an URI starting with + * <code>"#xpointer"</code>, <code>"#xmlns"</code> + * or <code>"#element"</code>; or an URI starting + * with <code>"#"</code> and followed by an element + * ID. + * @param referenceID The reference ID to set for the data object. * @return A data object containing the signature environment. */ public DataObject createFromSignatureEnvironment( - Element signatureEnvironment, - String uri, - String referenceID) - throws MOAApplicationException { + Element signatureEnvironment, + String uri, + String referenceID) + throws MOAApplicationException { DataObjectImpl dataObject = null; if ("".equals(uri)) { dataObject = new XMLDataObjectImpl(signatureEnvironment); - } else if ( - uri.startsWith("#xpointer") + } else if (uri.startsWith("#xpointer") || uri.startsWith("#xmlns") || uri.startsWith("#element")) { try { - // CHANGE IXSIL to XSECT - // maybe use URIDereferencerImpl or XPath ...?? - //XPointerReferenceResolver resolver = new XPointerReferenceResolver(); - URIDereferencerImpl uriDereferencer = new URIDereferencerImpl(); - URIReference uriReference = new URIReferenceImpl(uri, null, signatureEnvironment); - Data returnedData = uriDereferencer.dereference(uriReference, null); - - if(returnedData instanceof NodeSetData) { - NodeSetData nodeSetData = (NodeSetData)returnedData; - Iterator nodesIterator = nodeSetData.iterator(); - List nodeList = new ArrayList(); - - while(nodesIterator.hasNext()) { - nodeList.add(nodesIterator.next()); - } - - NodeList nodes = new NodeListImplementation(nodeList); - dataObject = new XMLNodeListDataObjectImpl(nodes); - } else if(returnedData instanceof OctetStreamData) { - OctetStreamData streamData = (OctetStreamData)returnedData; - dataObject = new ByteStreamDataObjectImpl(streamData.getOctetStream()); + // CHANGE IXSIL to XSECT + // maybe use URIDereferencerImpl or XPath ...?? + // XPointerReferenceResolver resolver = new XPointerReferenceResolver(); + final URIDereferencerImpl uriDereferencer = new URIDereferencerImpl(); + final URIReference uriReference = new URIReferenceImpl(uri, null, signatureEnvironment); + final Data returnedData = uriDereferencer.dereference(uriReference, null); + + if (returnedData instanceof NodeSetData) { + final NodeSetData nodeSetData = (NodeSetData) returnedData; + final Iterator nodesIterator = nodeSetData.iterator(); + final List nodeList = new ArrayList(); + + while (nodesIterator.hasNext()) { + nodeList.add(nodesIterator.next()); + } + + final NodeList nodes = new NodeListImplementation(nodeList); + dataObject = new XMLNodeListDataObjectImpl(nodes); + } else if (returnedData instanceof OctetStreamData) { + final OctetStreamData streamData = (OctetStreamData) returnedData; + dataObject = new ByteStreamDataObjectImpl(streamData.getOctetStream()); } else { - throw new MOAApplicationException("2237", new Object[] { uri }); + throw new MOAApplicationException("2237", new Object[] { uri }); } - - //URI uriObj = new URI(uri); - //NodeList nodes = - // resolver.resolveForest( - // uriObj, - // signatureEnvironment.getOwnerDocument(), - // null); - - } catch (Exception e) { + + // URI uriObj = new URI(uri); + // NodeList nodes = + // resolver.resolveForest( + // uriObj, + // signatureEnvironment.getOwnerDocument(), + // null); + + } catch (final Exception e) { throw new MOAApplicationException("2237", new Object[] { uri }); } } else if (uri.startsWith("#")) { - String id = uri.substring(1); - Element refElem = - signatureEnvironment.getOwnerDocument().getElementById(id); + final String id = uri.substring(1); + final Element refElem = + signatureEnvironment.getOwnerDocument().getElementById(id); if (refElem == null) { throw new MOAApplicationException("2237", new Object[] { id }); @@ -385,87 +372,75 @@ public class DataObjectFactory { * supplements. * * @param supplements The supplements, given as - * <code>XMLDataObjectAssociation</code>s. - * @return A <code>StreamEntityResolver</code> mapping the supplements by - * their reference URI to an <code>InputStream</code> of their respective - * content. + * <code>XMLDataObjectAssociation</code>s. + * @return A <code>StreamEntityResolver</code> mapping the supplements by their + * reference URI to an <code>InputStream</code> of their respective + * content. */ private static StreamEntityResolver buildSupplementEntityResolver(List supplements) - throws MOAApplicationException - { - Map entities = new HashMap(); + throws MOAApplicationException { + final Map entities = new HashMap(); Iterator iter; for (iter = supplements.iterator(); iter.hasNext();) { - XMLDataObjectAssociation supplement = - (XMLDataObjectAssociation) iter.next(); - Content content = supplement.getContent(); - String reference = content.getReference(); + final XMLDataObjectAssociation supplement = + (XMLDataObjectAssociation) iter.next(); + final Content content = supplement.getContent(); + final String reference = content.getReference(); switch (content.getContentType()) { - case Content.BINARY_CONTENT : - { - entities.put(reference, ((ContentBinary) content).getBinaryContent()); - break; + case Content.BINARY_CONTENT: { + entities.put(reference, ((ContentBinary) content).getBinaryContent()); + break; + } + case Content.LOCREF_CONTENT: { + final String locRefURI = ((ContentLocRef) content).getLocationReferenceURI(); + + final TransactionContext context = TransactionContextManager.getInstance().getTransactionContext(); + if (context.FindResolvedEntity(locRefURI) == null) { + + final ExternalURIResolver uriResolver = new ExternalURIResolver(); + InputStream uriStream = null; + byte[] contentBytes; + String contentType = null; + try { + uriStream = uriResolver.resolve(locRefURI); + contentBytes = StreamUtils.readStream(uriStream); + contentType = uriResolver.getContentType(); + } catch (final Exception e) { + throw new MOAApplicationException("3202", new Object[] { reference, locRefURI }, e); + } finally { + closeInputStream(uriStream); + } + context.PutResolvedEntity(locRefURI, contentBytes, contentType); } - case Content.LOCREF_CONTENT: - { - String locRefURI = ((ContentLocRef) content).getLocationReferenceURI(); - - TransactionContext context = TransactionContextManager.getInstance().getTransactionContext(); - if (context.FindResolvedEntity(locRefURI)==null) { - - ExternalURIResolver uriResolver = new ExternalURIResolver(); - InputStream uriStream = null; - byte[] contentBytes; - String contentType = null; - try - { - uriStream = uriResolver.resolve(locRefURI); - contentBytes = StreamUtils.readStream(uriStream); - contentType = uriResolver.getContentType(); - } - catch (Exception e) - { - throw new MOAApplicationException("3202", new Object[]{reference, locRefURI}, e); - } - finally - { - closeInputStream(uriStream); - } - context.PutResolvedEntity(locRefURI, contentBytes, contentType); - } - InputStream contentIS = context.ResolveURI(locRefURI); - entities.put(reference, contentIS); - break; + final InputStream contentIS = context.ResolveURI(locRefURI); + entities.put(reference, contentIS); + break; + } + case Content.XML_CONTENT: { + // serialize the first element node that is found in the supplement + // and make it available as a stream + final NodeList nodes = ((ContentXML) content).getXMLContent(); + int i = 0; + + // find the first element node + while (i < nodes.getLength() + && nodes.item(i).getNodeType() != Node.ELEMENT_NODE) { + i++; } - case Content.XML_CONTENT : - { - // serialize the first element node that is found in the supplement - // and make it available as a stream - NodeList nodes = ((ContentXML) content).getXMLContent(); - int i = 0; - - // find the first element node - while ((i < nodes.getLength()) - && (nodes.item(i).getNodeType() != Node.ELEMENT_NODE)) { - i++; - } - // serialize the node - if (i < nodes.getLength()) { - try - { - byte[] serialized = DOMUtils.serializeNode(nodes.item(i), "UTF-8"); - entities.put(reference, new ByteArrayInputStream(serialized)); - } - catch (Exception e) - { - throw new MOAApplicationException("2281", new Object[]{reference}, e); - } + // serialize the node + if (i < nodes.getLength()) { + try { + final byte[] serialized = DOMUtils.serializeNode(nodes.item(i), "UTF-8"); + entities.put(reference, new ByteArrayInputStream(serialized)); + } catch (final Exception e) { + throw new MOAApplicationException("2281", new Object[] { reference }, e); } - break; } + break; + } } } @@ -475,82 +450,87 @@ public class DataObjectFactory { /** * Create a <code>DataObject</code> from a <code>Content</code> object. * - * @param content The <code>Content</code> object containing the data. - * @param finalDataMetaInfo The meta information corresponding with <code>content</code>. - * @param referenceID The reference ID to set in the resulting - * <code>DataObject</code>. May be <code>null</code>. + * @param content The <code>Content</code> object containing + * the data. + * @param finalDataMetaInfo The meta information corresponding with + * <code>content</code>. + * @param referenceID The reference ID to set in the resulting + * <code>DataObject</code>. May be + * <code>null</code>. * @param allowContentAndReference If <code>true</code>, then - * <code>content</code> is allowed to contain both a <code>Reference</code> - * attribute and content. Otherwise, either a <code>Reference</code> - * attribute or content must be set. - * @param binaryAsXml If <code>true</code>, a content child given as - * <code>Base64Content</code> must contain XML data. - * @param xmlAsNodeList If <code>true</code>, the children of a - * <code>XMLContent</code> child element are returned as a - * <code>XMLNodeListDataObject</code>. Otherwise, <code>XMLContent</code> may - * only contain a single child node, which must be an element and which is - * returned as an <code>XMLDataObject</code>. - * @param referenceAsXml If <code>true</code>, then content loaded from the - * URI given as the <code>Reference</code> attribute must be XML data. - * If <code>false</code>, an attempt is made to parse the data as XML and - * return an <code>XMLDataObject</code> but if this fails, a - * <code>BinaryDataObject</code> is returned containing a byte stream to the - * data. + * <code>content</code> is allowed to contain + * both a <code>Reference</code> attribute and + * content. Otherwise, either a + * <code>Reference</code> attribute or content + * must be set. + * @param binaryAsXml If <code>true</code>, a content child given + * as <code>Base64Content</code> must contain + * XML data. + * @param xmlAsNodeList If <code>true</code>, the children of a + * <code>XMLContent</code> child element are + * returned as a + * <code>XMLNodeListDataObject</code>. + * Otherwise, <code>XMLContent</code> may only + * contain a single child node, which must be an + * element and which is returned as an + * <code>XMLDataObject</code>. + * @param referenceAsXml If <code>true</code>, then content loaded + * from the URI given as the + * <code>Reference</code> attribute must be XML + * data. If <code>false</code>, an attempt is + * made to parse the data as XML and return an + * <code>XMLDataObject</code> but if this fails, + * a <code>BinaryDataObject</code> is returned + * containing a byte stream to the data. * @return A <code>DataObject</code> representing the data in - * <code>content</code>. If <code>base64AsXml==true</code> and - * <code>xmlAsNodeList==false</code> and <code>referenceAsXml==true</code>, - * then the result can safely be cast to an <code>XMLDataObject</code>. - * @throws MOASystemException An error indicating an internal problem. See the - * wrapped exception for details. + * <code>content</code>. If <code>base64AsXml==true</code> and + * <code>xmlAsNodeList==false</code> and + * <code>referenceAsXml==true</code>, then the result can safely be cast + * to an <code>XMLDataObject</code>. + * @throws MOASystemException An error indicating an internal problem. See + * the wrapped exception for details. * @throws MOAApplicationException An error occurred handling the content - * (probably while opening a reference or parsing the data). See the wrapped - * exception for details. + * (probably while opening a reference or + * parsing the data). See the wrapped exception + * for details. */ public DataObject createFromContentOptionalRefType( - Content content, - MetaInfo finalDataMetaInfo, - String referenceID, - boolean allowContentAndReference, - boolean binaryAsXml, - boolean xmlAsNodeList, - boolean referenceAsXml) - throws MOASystemException, MOAApplicationException { - - String reference = content.getReference(); + Content content, + MetaInfo finalDataMetaInfo, + String referenceID, + boolean allowContentAndReference, + boolean binaryAsXml, + boolean xmlAsNodeList, + boolean referenceAsXml) + throws MOASystemException, MOAApplicationException { + + final String reference = content.getReference(); DataObjectImpl dataObject = null; checkAllowContentAndReference(content, allowContentAndReference); // ok, build the data object; use content first, if available - switch (content.getContentType()) - { - case Content.XML_CONTENT : - { - ContentXML contentXml = (ContentXML) content; + switch (content.getContentType()) { + case Content.XML_CONTENT: { + final ContentXML contentXml = (ContentXML) content; dataObject = createFromXmlContent(contentXml, xmlAsNodeList); break; } - case Content.BINARY_CONTENT : - { - ContentBinary contentBinary = (ContentBinary) content; + case Content.BINARY_CONTENT: { + final ContentBinary contentBinary = (ContentBinary) content; dataObject = createFromBinaryContent(contentBinary, binaryAsXml, false); break; } - case Content.LOCREF_CONTENT : - { - String locRefURI = ((ContentLocRef) content).getLocationReferenceURI(); - try - { + case Content.LOCREF_CONTENT: { + final String locRefURI = ((ContentLocRef) content).getLocationReferenceURI(); + try { dataObject = createFromURIImpl(locRefURI, referenceAsXml); - } - catch (MOAApplicationException e) - { - throw new MOAApplicationException("3201", new Object[]{reference, locRefURI}, e); + } catch (final MOAApplicationException e) { + throw new MOAApplicationException("3201", new Object[] { reference, locRefURI }, e); } break; } - case Content.REFERENCE_CONTENT : - { + case Content.REFERENCE_CONTENT: { dataObject = createFromURIImpl(reference, referenceAsXml); break; } @@ -567,97 +547,91 @@ public class DataObjectFactory { } /** - * Check, if content and reference URIs are allowed in the content an throw - * an exception if an illegal combination of the two occurs. + * Check, if content and reference URIs are allowed in the content an throw an + * exception if an illegal combination of the two occurs. * - * @param content The <code>Content</code> to check. - * @param allowContentAndReference Whether explicit content and a reference - * are allowed at the same time. - * @throws MOAApplicationException If <code>allowContentAndRefernece</code> - * is <code>false</code> and both explicit content and reference are set, - * an exception is thrown. + * @param content The <code>Content</code> to check. + * @param allowContentAndReference Whether explicit content and a reference are + * allowed at the same time. + * @throws MOAApplicationException If <code>allowContentAndRefernece</code> is + * <code>false</code> and both explicit content + * and reference are set, an exception is + * thrown. */ private static void checkAllowContentAndReference( - Content content, - boolean allowContentAndReference) - throws MOAApplicationException { - String reference = content.getReference(); + Content content, + boolean allowContentAndReference) + throws MOAApplicationException { + final String reference = content.getReference(); // check for content and reference not being set - if ((content.getContentType() == Content.REFERENCE_CONTENT) - && (reference == null)) { - String errorCode = allowContentAndReference ? "1111" : "1110"; + if (content.getContentType() == Content.REFERENCE_CONTENT + && reference == null) { + final String errorCode = allowContentAndReference ? "1111" : "1110"; throw new MOAApplicationException(errorCode, null); } // if we only allow either content or reference being set at once, check if (!allowContentAndReference - && (content.getContentType() != Content.REFERENCE_CONTENT) - && (reference != null)) { + && content.getContentType() != Content.REFERENCE_CONTENT + && reference != null) { throw new MOAApplicationException("1110", null); } } /** - * Create a <code>DataObject</code> from a - * <code>XMLDataObjectAssociation</code> object. + * Create a <code>DataObject</code> from a <code>XMLDataObjectAssociation</code> + * object. * - * @param xmlDataObjAssoc The <code>XMLDataObjectAssociation</code> object. - * @param xmlContentAllowed Whether the content contained in the - * <code>xmlDataObjAssoc</code> is allowed to be of type - * <code>XML_CONTENT</code>. + * @param xmlDataObjAssoc The <code>XMLDataObjectAssociation</code> + * object. + * @param xmlContentAllowed Whether the content contained in the + * <code>xmlDataObjAssoc</code> is allowed to be + * of type <code>XML_CONTENT</code>. * @param binaryContentRepeatable If binary content must be provided as a - * <code>DataObject</code> that can be read multiple times. + * <code>DataObject</code> that can be read + * multiple times. * @return A <code>DataObject</code> representing the data in - * <code>xmlDataObjAssoc</code>. - * @throws MOASystemException An error indicating an internal problem. See the - * wrapped exception for details. + * <code>xmlDataObjAssoc</code>. + * @throws MOASystemException An error indicating an internal problem. See + * the wrapped exception for details. * @throws MOAApplicationException An error occurred handling the content - * (probably while parsing the data). See the wrapped exception for details. + * (probably while parsing the data). See the + * wrapped exception for details. */ public DataObject createFromXmlDataObjectAssociation( - XMLDataObjectAssociation xmlDataObjAssoc, - boolean xmlContentAllowed, - boolean binaryContentRepeatable) - throws MOASystemException, MOAApplicationException { - - Content content = xmlDataObjAssoc.getContent(); - MetaInfo metaInfo = xmlDataObjAssoc.getMetaInfo(); - String mimeType = metaInfo != null ? metaInfo.getMimeType() : null; + XMLDataObjectAssociation xmlDataObjAssoc, + boolean xmlContentAllowed, + boolean binaryContentRepeatable) + throws MOASystemException, MOAApplicationException { + + final Content content = xmlDataObjAssoc.getContent(); + final MetaInfo metaInfo = xmlDataObjAssoc.getMetaInfo(); + final String mimeType = metaInfo != null ? metaInfo.getMimeType() : null; DataObjectImpl dataObject = null; - switch (content.getContentType()) - { - case Content.XML_CONTENT : - { - if (xmlContentAllowed) - { + switch (content.getContentType()) { + case Content.XML_CONTENT: { + if (xmlContentAllowed) { dataObject = createFromXmlContent((ContentXML) content, true); - } - else - { + } else { throw new MOAApplicationException("2280", null); } break; } - case Content.BINARY_CONTENT : - { + case Content.BINARY_CONTENT: { dataObject = createFromBinaryContent( - (ContentBinary) content, - false, - binaryContentRepeatable); + (ContentBinary) content, + false, + binaryContentRepeatable); break; } - case Content.LOCREF_CONTENT : - { - String locRefURI = ((ContentLocRef) content).getLocationReferenceURI(); - try - { + case Content.LOCREF_CONTENT: { + final String locRefURI = ((ContentLocRef) content).getLocationReferenceURI(); + try { dataObject = createFromURIImpl(locRefURI, false); - } - catch (MOAApplicationException e) - { - throw new MOAApplicationException("3201", new Object[]{content.getReference(), locRefURI}, e); + } catch (final MOAApplicationException e) { + throw new MOAApplicationException("3201", new Object[] { content.getReference(), locRefURI }, e); } break; } @@ -673,53 +647,49 @@ public class DataObjectFactory { * object. * * @param transformParameter The <code>TransformParameter</code> object - * containing the data. - * @return A <code>DataObject</code> representing the data in - * <code>root</code>. - * @throws MOASystemException An error indicating an internal problem. See the - * wrapped exception for details. + * containing the data. + * @return A <code>DataObject</code> representing the data in <code>root</code>. + * @throws MOASystemException An error indicating an internal problem. See + * the wrapped exception for details. * @throws MOAApplicationException An error occurred handling the content - * (probably while opening a reference or parsing the data). See the wrapped - * exception for details. + * (probably while opening a reference or + * parsing the data). See the wrapped exception + * for details. */ public DataObject createFromTransformParameter(TransformParameter transformParameter) - throws MOASystemException, MOAApplicationException { + throws MOASystemException, MOAApplicationException { DataObjectImpl dataObject; switch (transformParameter.getTransformParameterType()) { - case TransformParameter.BINARY_TRANSFORMPARAMETER : - TransformParameterBinary tpBinary = - (TransformParameterBinary) transformParameter; + case TransformParameter.BINARY_TRANSFORMPARAMETER: + final TransformParameterBinary tpBinary = + (TransformParameterBinary) transformParameter; try { - //dataObject = new ByteArrayDataObjectImpl(Base64Utils.encode(tpBinary.getBinaryContent())); + // dataObject = new + // ByteArrayDataObjectImpl(Base64Utils.encode(tpBinary.getBinaryContent())); dataObject = - new ByteArrayDataObjectImpl( - StreamUtils.readStream(tpBinary.getBinaryContent())); - } catch (Exception e) { + new ByteArrayDataObjectImpl( + StreamUtils.readStream(tpBinary.getBinaryContent())); + } catch (final Exception e) { return null; } - //dataObject = new ByteStreamDataObjectImpl(tpBinary.getBinaryContent()); + // dataObject = new ByteStreamDataObjectImpl(tpBinary.getBinaryContent()); break; - default : + default: // resolve uri and build the content - ExternalURIResolver resolver = new ExternalURIResolver(); - InputStream is = resolver.resolve(transformParameter.getURI()); + final ExternalURIResolver resolver = new ExternalURIResolver(); + final InputStream is = resolver.resolve(transformParameter.getURI()); ByteArrayInputStream bis; - try - { + try { bis = new ByteArrayInputStream(StreamUtils.readStream(is)); - } - catch (IOException e) - { - throw new MOAApplicationException("2238", new Object[] {transformParameter.getURI()}, e); - } - finally - { + } catch (final IOException e) { + throw new MOAApplicationException("2238", new Object[] { transformParameter.getURI() }, e); + } finally { closeInputStream(is); } - String contentType = resolver.getContentType(); + final String contentType = resolver.getContentType(); dataObject = new ByteStreamDataObjectImpl(bis); dataObject.setMimeType(contentType); break; @@ -733,62 +703,65 @@ public class DataObjectFactory { /** * Create a <code>DataObject</code> from data located at the given URI. * - * @param uri The <code>URI</code> where the data is located. This method uses - * an <code>ExternalURIResolver</code> to resolve URIs. + * @param uri The <code>URI</code> where the data is located. This method uses + * an <code>ExternalURIResolver</code> to resolve URIs. * @param asXml If <code>true</code>, a <code>DataObject</code> is only - * returned, if the content consists of XML data. If it does not consist of - * XML data, an <code>MOAApplicationException</code> will be thrown. If this - * parameter is <code>false</code> and the content consists of XML data, this - * method will still attempt to parse it. + * returned, if the content consists of XML data. If it does not + * consist of XML data, an <code>MOAApplicationException</code> + * will be thrown. If this parameter is <code>false</code> and the + * content consists of XML data, this method will still attempt to + * parse it. * @return The <code>DataObject</code> contained at the URI. - * @throws MOASystemException A system error parsing the XML content. + * @throws MOASystemException A system error parsing the XML content. * @throws MOAApplicationException An error occurred on opening, reading or - * parsing the data behind the URI. + * parsing the data behind the URI. */ public DataObject createFromURI(String uri, boolean asXml) - throws MOASystemException, MOAApplicationException { + throws MOASystemException, MOAApplicationException { return createFromURIImpl(uri, asXml); } /** * Create a <code>DataObject</code> from data located at the given URI. * - * @param uri The <code>URI</code> where the data is located. This method uses - * an <code>ExternalURIResolver</code> to resolve URIs. + * @param uri The <code>URI</code> where the data is located. This method uses + * an <code>ExternalURIResolver</code> to resolve URIs. * @param asXml If <code>true</code>, a <code>DataObject</code> is only - * returned, if the content consists of XML data. If it does not consist of - * XML data, an <code>MOAApplicationException</code> will be thrown. If this - * parameter is <code>false</code> and the content type is detected as being - * XML data, this method will still attemt to parse it. + * returned, if the content consists of XML data. If it does not + * consist of XML data, an <code>MOAApplicationException</code> + * will be thrown. If this parameter is <code>false</code> and the + * content type is detected as being XML data, this method will + * still attemt to parse it. * @return The <code>DataObject</code> contained at the URI. - * @throws MOASystemException A system error parsing the XML content. + * @throws MOASystemException A system error parsing the XML content. * @throws MOAApplicationException An error occurred on opening, reading or - * parsing the data behind the URI. + * parsing the data behind the URI. */ private DataObjectImpl createFromURIImpl(String uri, boolean asXml) - throws MOASystemException, MOAApplicationException { + throws MOASystemException, MOAApplicationException { Logger.trace(">>> resolving uri \"" + uri + "\""); - ExternalURIResolver resolver = new ExternalURIResolver(); + final ExternalURIResolver resolver = new ExternalURIResolver(); - TransactionContext context = TransactionContextManager.getInstance().getTransactionContext(); + final TransactionContext context = TransactionContextManager.getInstance().getTransactionContext(); InputStream is = context.ResolveURI(uri); String contentType = null; boolean foundURI = false; if (is == null) { - is = resolver.resolve(uri); - contentType = resolver.getContentType(); + is = resolver.resolve(uri); + contentType = resolver.getContentType(); } else { - foundURI = true; - contentType = (String) context.FindResolvedEntity(uri).get(1); - Logger.trace("found \"" + uri + "\" InputStream in preread Supplements!, do not read any more. Content=" + contentType); + foundURI = true; + contentType = (String) context.FindResolvedEntity(uri).get(1); + Logger.trace("found \"" + uri + "\" InputStream in preread Supplements!, do not read any more. Content=" + + contentType); } DataObjectImpl dataObject; // read the content - if ((contentType != null) && contentTypeIsXml(contentType)) { + if (contentType != null && contentTypeIsXml(contentType)) { Document doc; if (asXml) { @@ -798,15 +771,13 @@ public class DataObjectFactory { is = resolver.resolve(uri); doc = DOMUtils.parseDocument(is, false, null, null); dataObject = new XMLDataObjectImpl(doc.getDocumentElement()); - } catch (ParserConfigurationException e) { + } catch (final ParserConfigurationException e) { throw new MOASystemException("1106", null, e); - } catch (SAXException e) { + } catch (final SAXException e) { throw new MOAApplicationException("2209", null, e); - } catch (IOException e) { + } catch (final IOException e) { throw new MOAApplicationException("2210", null, e); - } - finally - { + } finally { closeInputStream(is); } } else { @@ -816,22 +787,17 @@ public class DataObjectFactory { doc = DOMUtils.parseDocument(is, false, null, null); closeInputStream(is); dataObject = new XMLDataObjectImpl(doc.getDocumentElement()); - } catch (Exception e) { + } catch (final Exception e) { // this is the last chance: return the data as a byte stream Logger.trace(">>> reading stream for \"" + uri + "\""); is = resolver.resolve(uri); ByteArrayInputStream bis; - try - { + try { bis = new ByteArrayInputStream(StreamUtils.readStream(is)); dataObject = new ByteStreamDataObjectImpl(bis); - } - catch (IOException e1) - { + } catch (final IOException e1) { throw new MOAApplicationException("2210", new Object[] { uri }, e1); - } - finally - { + } finally { closeInputStream(is); } Logger.trace(">>> read stream for \"" + uri + "\""); @@ -839,34 +805,26 @@ public class DataObjectFactory { } } - else if (asXml) - { + else if (asXml) { // if we need XML data, we're in the wrong place here closeInputStream(is); throw new MOAApplicationException("2211", new Object[] { uri }); - } - else - { + } else { // content is binary: make it available as a binary input stream Logger.trace(">>> getting binary input for \"" + uri + "\""); byte[] contentBytes; ByteArrayInputStream bis; - try - { - contentBytes = StreamUtils.readStream(is); - bis = new ByteArrayInputStream(contentBytes); - } - catch (IOException e) - { + try { + contentBytes = StreamUtils.readStream(is); + bis = new ByteArrayInputStream(contentBytes); + } catch (final IOException e) { throw new MOAApplicationException("2210", null, e); - } - finally - { + } finally { closeInputStream(is); } - if (!foundURI) { - context.PutResolvedEntity(uri, contentBytes, contentType); - } + if (!foundURI) { + context.PutResolvedEntity(uri, contentBytes, contentType); + } dataObject = new ByteStreamDataObjectImpl(bis); Logger.trace("<<< got binary input for \"" + uri + "\""); } @@ -884,16 +842,12 @@ public class DataObjectFactory { * * @param is The input stream to be closed. */ - private static void closeInputStream(InputStream is) - { - try - { + private static void closeInputStream(InputStream is) { + try { if (is != null) { is.close(); } - } - catch (Throwable t) - { + } catch (final Throwable t) { // Intentionally do nothing here } } @@ -905,42 +859,43 @@ public class DataObjectFactory { * <code>application/xml</code>. * * @param contentType The content MIME type. - * @return boolean If <code>true</code>, the content type is XML, otherwise - * not. + * @return boolean If <code>true</code>, the content type is XML, otherwise not. */ private static boolean contentTypeIsXml(String contentType) { return contentType.startsWith("text/xml") - || (contentType.startsWith("application/xml")); + || contentType.startsWith("application/xml"); } /** * Create a <code>DataObject</code> from a <code>ContentXML</code> object. * - * @param xmlContent The <code>ContentXML</code> object from - * which the <code>DataObject</code> is to be built. + * @param xmlContent The <code>ContentXML</code> object from which the + * <code>DataObject</code> is to be built. * @param xmlAsNodeList If <code>true</code>, the children of - * <code>xmlContent</code> are returned as a - * <code>XMLNodeListDataObject</code>. Otherwise, - * <code>xmlContent</code> may only contain a single child node, which must be - * an element and which is returned as an <code>XMLDataObject</code>. + * <code>xmlContent</code> are returned as a + * <code>XMLNodeListDataObject</code>. Otherwise, + * <code>xmlContent</code> may only contain a single child + * node, which must be an element and which is returned as + * an <code>XMLDataObject</code>. * @return A <code>DataObject</code> representing the XML content in - * <code>xmlContent</code>. + * <code>xmlContent</code>. * @throws MOAApplicationException If <code>xmlAsNodeList</code> is - * <code>false</code> and <code>xmlContent</code> does not have a single child - * element. + * <code>false</code> and + * <code>xmlContent</code> does not have a + * single child element. */ private DataObjectImpl createFromXmlContent( - ContentXML xmlContent, - boolean xmlAsNodeList) - throws MOAApplicationException { + ContentXML xmlContent, + boolean xmlAsNodeList) + throws MOAApplicationException { DataObjectImpl dataObject; if (xmlAsNodeList) { dataObject = new XMLNodeListDataObjectImpl(xmlContent.getXMLContent()); } else { - NodeList nodes = xmlContent.getXMLContent(); - Element element = checkForSingleElement(nodes); + final NodeList nodes = xmlContent.getXMLContent(); + final Element element = checkForSingleElement(nodes); // build the XMLDataObject dataObject = new XMLDataObjectImpl(element); @@ -955,10 +910,10 @@ public class DataObjectFactory { * @param nodes The <code>NodeList</code> to check for a single element. * @return The single element contained in <code>nodes</code>. * @throws MOAApplicationException Thrown, if <code>nodes</code> does not - * contain exactly 1 element node. + * contain exactly 1 element node. */ private Element checkForSingleElement(NodeList nodes) - throws MOAApplicationException { + throws MOAApplicationException { Element element = null; int i; @@ -986,26 +941,28 @@ public class DataObjectFactory { * Create a <code>DataObject</code> from a <code>ContentBinary</code> object. * * @param binaryContent The <code>ContentBinary</code> object containing the - * data. - * @param asXml If <code>true</code>, <code>binaryContent</code> must - * contain XML data. Otherwise, a <code>BinaryDataObject</code> will be - * returned containing a byte stream to the decoded Base64 data. - * @param repeatable If multiple calls to <code>getInputStream()</code> must - * repeatedly return the content of the data object. + * data. + * @param asXml If <code>true</code>, <code>binaryContent</code> must + * contain XML data. Otherwise, a + * <code>BinaryDataObject</code> will be returned + * containing a byte stream to the decoded Base64 data. + * @param repeatable If multiple calls to <code>getInputStream()</code> must + * repeatedly return the content of the data object. * @return A <code>DataObject</code> representing the content contained in - * <code>binaryContent</code>. - * @throws MOASystemException An error indicating an internal problem. See the - * wrapped exception for details. + * <code>binaryContent</code>. + * @throws MOASystemException An error indicating an internal problem. See + * the wrapped exception for details. * @throws MOAApplicationException An error occurred handling the content - * (probably while parsing the data). See the wrapped exception for details. + * (probably while parsing the data). See the + * wrapped exception for details. */ private DataObjectImpl createFromBinaryContent( - ContentBinary binaryContent, - boolean asXml, - boolean repeatable) - throws MOASystemException, MOAApplicationException { + ContentBinary binaryContent, + boolean asXml, + boolean repeatable) + throws MOASystemException, MOAApplicationException { - InputStream byteStream = binaryContent.getBinaryContent(); + final InputStream byteStream = binaryContent.getBinaryContent(); DataObjectImpl dataObject; if (asXml) { @@ -1014,19 +971,19 @@ public class DataObjectFactory { try { doc = DOMUtils.parseDocument(byteStream, false, null, null); dataObject = new XMLDataObjectImpl(doc.getDocumentElement()); - } catch (ParserConfigurationException e) { + } catch (final ParserConfigurationException e) { throw new MOASystemException("1106", null, e); - } catch (SAXException e) { + } catch (final SAXException e) { throw new MOAApplicationException("2209", null, e); - } catch (IOException e) { + } catch (final IOException e) { throw new MOAApplicationException("2210", null, e); } } else { if (repeatable) { try { dataObject = - new ByteArrayDataObjectImpl(StreamUtils.readStream(byteStream)); - } catch (IOException e) { + new ByteArrayDataObjectImpl(StreamUtils.readStream(byteStream)); + } catch (final IOException e) { throw new MOAApplicationException("2210", null); } } else { diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/ExternalURIResolver.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/ExternalURIResolver.java index 933d058..5668a36 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/ExternalURIResolver.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/ExternalURIResolver.java @@ -21,12 +21,8 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.server.invoke; -import iaik.xml.crypto.utils.URI; -import iaik.xml.crypto.utils.URIException; - import java.io.IOException; import java.io.InputStream; import java.net.HttpURLConnection; @@ -38,10 +34,12 @@ import at.gv.egovernment.moa.spss.MOAApplicationException; import at.gv.egovernment.moa.spss.server.transaction.TransactionContext; import at.gv.egovernment.moa.spss.server.transaction.TransactionContextManager; import at.gv.egovernment.moa.spss.util.ExternalURIVerifier; +import iaik.xml.crypto.utils.URI; +import iaik.xml.crypto.utils.URIException; /** * Resolve external URIs and provide them as a stream. - * + * * @author Patrick Peck * @version $Id$ */ @@ -52,14 +50,15 @@ public class ExternalURIResolver { /** * Return a stream to data at the given URI. - * - * This method will try to open an <code>URLConnection</code> to the given - * URI. Access to the file system is disallowed. - * + * + * This method will try to open an <code>URLConnection</code> to the given URI. + * Access to the file system is disallowed. + * * @param uriStr The URI to resolve. * @return InputStream The data contained at the URI. * @throws MOAApplicationException An error occurred resolving the URI (e.g., - * the URI is syntactically incorrect or the stream could not be opened). + * the URI is syntactically incorrect or the + * stream could not be opened). */ public InputStream resolve(String uriStr) throws MOAApplicationException { URI uri; @@ -70,7 +69,7 @@ public class ExternalURIResolver { // build the URI try { uri = new URI(uriStr); - } catch (URIException e) { + } catch (final URIException e) { throw new MOAApplicationException("2207", new Object[] { uriStr }); } @@ -81,30 +80,30 @@ public class ExternalURIResolver { // if we have local content (SOAP with attachments) if ("formdata".equals(uri.getScheme())) { - TransactionContext context = TransactionContextManager.getInstance().getTransactionContext(); - if (context==null) { - //no transaction + final TransactionContext context = TransactionContextManager.getInstance().getTransactionContext(); + if (context == null) { + // no transaction throw new MOAApplicationException("2282", new Object[] { uri }); } else { - InputStream attachmentIs = context.getAttachmentInputStream(uri); + final InputStream attachmentIs = context.getAttachmentInputStream(uri); if (attachmentIs != null) { setContentType(context.getAttachmentContentType(uri.getPath())); return attachmentIs; } else { - //maybe attachments provided but no suiting attachment found + // maybe attachments provided but no suiting attachment found throw new MOAApplicationException("2282", new Object[] { uri }); } - } - } - + } + } + // convert URI to URL try { // create the URL url = new URL(uriStr); - //System.out.println("ExternalURIResolver: " + url); + // System.out.println("ExternalURIResolver: " + url); ExternalURIVerifier.verify(url.getHost(), url.getPort()); - - } catch (MalformedURLException e) { + + } catch (final MalformedURLException e) { throw new MOAApplicationException("2214", new Object[] { uriStr }); } @@ -112,7 +111,7 @@ public class ExternalURIResolver { try { connection = url.openConnection(); if ("http".equals(url.getProtocol())) { - HttpURLConnection httpConnection = (HttpURLConnection) connection; + final HttpURLConnection httpConnection = (HttpURLConnection) connection; // disallow redirects httpConnection.setInstanceFollowRedirects(false); @@ -121,33 +120,31 @@ public class ExternalURIResolver { throw new MOAApplicationException("2208", new Object[] { uri }); } } else if ("https".equals(url.getProtocol())) { - /* - * this doesn't work because of some interaction between the IAIK - * JCE and Sun JSSE that results in an "Invalid AVA format" exception + /* + * this doesn't work because of some interaction between the IAIK JCE and Sun + * JSSE that results in an "Invalid AVA format" exception */ /* - HttpsURLConnection httpsConnection = (HttpsURLConnection) connection; - InputStream trustStore = - getClass().getResourceAsStream(DEFAULT_TRUST_STORE); - SSLSocketFactory factory = - SSLUtils.getSSLSocketFactory("jks", trustStore, "changeit"); - httpsConnection.setSSLSocketFactory(factory); - httpsConnection.connect(); - if (httpConnection.getResponseCode() != HttpURLConnection.HTTP_OK) { - throw new MOAApplicationException("2208", new Object[] { uri }); - } - */ + * HttpsURLConnection httpsConnection = (HttpsURLConnection) connection; + * InputStream trustStore = getClass().getResourceAsStream(DEFAULT_TRUST_STORE); + * SSLSocketFactory factory = SSLUtils.getSSLSocketFactory("jks", trustStore, + * "changeit"); httpsConnection.setSSLSocketFactory(factory); + * httpsConnection.connect(); if (httpConnection.getResponseCode() != + * HttpURLConnection.HTTP_OK) { throw new MOAApplicationException("2208", new + * Object[] { uri }); } + */ connection.connect(); } else { connection.connect(); } is = connection.getInputStream(); - } catch (IOException e) { + } catch (final IOException e) { throw new MOAApplicationException("2208", new Object[] { uri }, e); - } /*catch (GeneralSecurityException e) { - throw new MOAApplicationException("2208", new Object[] { uri }, e); - }*/ + } /* + * catch (GeneralSecurityException e) { throw new + * MOAApplicationException("2208", new Object[] { uri }, e); } + */ // set the content type setContentType(connection.getContentType()); @@ -157,7 +154,7 @@ public class ExternalURIResolver { /** * Set the content type of the data at the URI. - * + * * @param contentType The content type to set. */ protected void setContentType(String contentType) { @@ -167,7 +164,7 @@ public class ExternalURIResolver { /** * Return the content type of the data detected at the URI from the previous * call of <code>resolve()</code>. - * + * * @return String The content type. */ public String getContentType() { diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/IaikExceptionMapper.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/IaikExceptionMapper.java index 6e8448b..8817937 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/IaikExceptionMapper.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/IaikExceptionMapper.java @@ -21,12 +21,8 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.server.invoke; -import iaik.server.modules.IAIKException; -import iaik.server.modules.IAIKRuntimeException; - import java.lang.reflect.Constructor; import java.util.HashMap; import java.util.Map; @@ -34,12 +30,13 @@ import java.util.Map; import at.gv.egovernment.moa.spss.MOAApplicationException; import at.gv.egovernment.moa.spss.MOAException; import at.gv.egovernment.moa.spss.MOASystemException; - +import iaik.server.modules.IAIKException; +import iaik.server.modules.IAIKRuntimeException; /** * Map an exception from the <code>iaik</code> namespace to a * <code>MOAException</code>. - * + * * @author Patrick Peck * @version $Id$ */ @@ -47,57 +44,80 @@ public class IaikExceptionMapper { /** The argument classes for <code>MOAException</code>s. */ private static final Class[] CONSTRUCTOR_ARGS = - new Class[] { String.class, Object[].class, Throwable.class }; + new Class[] { String.class, Object[].class, Throwable.class }; /** The exception mapping, as an array. */ private static final Object[][] MESSAGES = - { - { iaik.server.modules.IAIKException.class, "9900", MOASystemException.class }, - { iaik.server.modules.IAIKRuntimeException.class, "9901", MOASystemException.class }, - { iaik.server.modules.xmlsign.XMLSignatureCreationException.class, "2220", MOAApplicationException.class }, - { iaik.server.modules.xmlsign.XMLSignatureCreationRuntimeException.class, "2220", MOAApplicationException.class }, - { iaik.server.modules.xmlsign.InvalidKeyException.class, "2221", MOAApplicationException.class }, - { iaik.server.modules.xmlsign.ManifestException.class, "2222", MOAApplicationException.class }, - { iaik.server.modules.xmlsign.ReferenceException.class, "2223", MOAApplicationException.class }, - { iaik.server.modules.xmlsign.HashUnavailableException.class, "2224", MOAApplicationException.class }, - { iaik.server.modules.xmlsign.SignatureAlgorithmException.class, "2225", MOAApplicationException.class }, - { iaik.server.modules.xmlsign.SignatureEmbeddingException.class, "2226", MOAApplicationException.class }, - { iaik.server.modules.xmlsign.SignatureValueException.class, "2227", MOAApplicationException.class }, - { iaik.server.modules.xmlsign.SignedPropertyException.class, "2228", MOAApplicationException.class }, - { iaik.server.modules.xmlsign.SignerCertificateUnavailableException.class, "2229", MOAApplicationException.class }, - { iaik.server.modules.xmlsign.SupplementException.class, "2230", MOAApplicationException.class }, - { iaik.server.modules.xmlsign.TransformationException.class, "2233", MOAApplicationException.class }, - { iaik.server.modules.cmsverify.CMSSignatureVerificationException.class, "2240", MOAApplicationException.class }, - { iaik.server.modules.cmsverify.CMSSignatureVerificationRuntimeException.class, "2240", MOAApplicationException.class }, - { iaik.server.modules.cmsverify.AlgorithmNotSupportedException.class, "2241", MOAApplicationException.class }, - { iaik.server.modules.cmsverify.CMSSignatureParsingException.class, "2242", MOAApplicationException.class }, - { iaik.server.modules.cmsverify.SignerCertificateUnavailableException.class, "2243", MOAApplicationException.class }, - { iaik.server.modules.cmsverify.CMSSignatureVerificationRuntimeException.class, "2247", MOAApplicationException.class }, - { iaik.server.modules.cmsverify.InitException.class, "2248", MOAApplicationException.class }, - { iaik.server.modules.xmlverify.XMLSignatureVerificationException.class, "2240", MOAApplicationException.class }, - { iaik.server.modules.xmlverify.XMLSignatureVerificationRuntimeException.class, "2240", MOAApplicationException.class }, - { iaik.server.modules.xmlverify.AlgorithmNotSupportedException.class, "2241", MOAApplicationException.class }, - { iaik.server.modules.xmlverify.ManifestException.class, "2262", MOAApplicationException.class }, - { iaik.server.modules.xmlverify.PropertiesException.class, "2263", MOAApplicationException.class }, - { iaik.server.modules.xmlverify.ReferenceException.class, "2264", MOAApplicationException.class }, - { iaik.server.modules.xmlverify.HashUnavailableException.class, "2224", MOAApplicationException.class }, - { iaik.server.modules.xmlverify.SignerCertificateUnavailableException.class, "2243", MOAApplicationException.class }, - { iaik.server.modules.xmlverify.SupplementException.class, "2230", MOAApplicationException.class }, - { iaik.server.modules.xmlverify.TransformationException.class, "2265", MOAApplicationException.class }, - { iaik.server.modules.xmlverify.TransformationParsingException.class, "2269", MOAApplicationException.class }, - { at.gv.egovernment.moa.sig.tsl.exception.TslException.class, "2290", MOAApplicationException.class }, - { iaik.server.modules.cmssign.CMSSignatureCreationException.class, "2300", MOAApplicationException.class } , - - - }; - + { + { iaik.server.modules.IAIKException.class, "9900", MOASystemException.class }, + { iaik.server.modules.IAIKRuntimeException.class, "9901", MOASystemException.class }, + { iaik.server.modules.xmlsign.XMLSignatureCreationException.class, "2220", + MOAApplicationException.class }, + { iaik.server.modules.xmlsign.XMLSignatureCreationRuntimeException.class, "2220", + MOAApplicationException.class }, + { iaik.server.modules.xmlsign.InvalidKeyException.class, "2221", MOAApplicationException.class }, + { iaik.server.modules.xmlsign.ManifestException.class, "2222", MOAApplicationException.class }, + { iaik.server.modules.xmlsign.ReferenceException.class, "2223", MOAApplicationException.class }, + { iaik.server.modules.xmlsign.HashUnavailableException.class, "2224", + MOAApplicationException.class }, + { iaik.server.modules.xmlsign.SignatureAlgorithmException.class, "2225", + MOAApplicationException.class }, + { iaik.server.modules.xmlsign.SignatureEmbeddingException.class, "2226", + MOAApplicationException.class }, + { iaik.server.modules.xmlsign.SignatureValueException.class, "2227", + MOAApplicationException.class }, + { iaik.server.modules.xmlsign.SignedPropertyException.class, "2228", + MOAApplicationException.class }, + { iaik.server.modules.xmlsign.SignerCertificateUnavailableException.class, "2229", + MOAApplicationException.class }, + { iaik.server.modules.xmlsign.SupplementException.class, "2230", MOAApplicationException.class }, + { iaik.server.modules.xmlsign.TransformationException.class, "2233", + MOAApplicationException.class }, + { iaik.server.modules.cmsverify.CMSSignatureVerificationException.class, "2240", + MOAApplicationException.class }, + { iaik.server.modules.cmsverify.CMSSignatureVerificationRuntimeException.class, "2240", + MOAApplicationException.class }, + { iaik.server.modules.cmsverify.AlgorithmNotSupportedException.class, "2241", + MOAApplicationException.class }, + { iaik.server.modules.cmsverify.CMSSignatureParsingException.class, "2242", + MOAApplicationException.class }, + { iaik.server.modules.cmsverify.SignerCertificateUnavailableException.class, "2243", + MOAApplicationException.class }, + { iaik.server.modules.cmsverify.CMSSignatureVerificationRuntimeException.class, "2247", + MOAApplicationException.class }, + { iaik.server.modules.cmsverify.InitException.class, "2248", MOAApplicationException.class }, + { iaik.server.modules.xmlverify.XMLSignatureVerificationException.class, "2240", + MOAApplicationException.class }, + { iaik.server.modules.xmlverify.XMLSignatureVerificationRuntimeException.class, "2240", + MOAApplicationException.class }, + { iaik.server.modules.xmlverify.AlgorithmNotSupportedException.class, "2241", + MOAApplicationException.class }, + { iaik.server.modules.xmlverify.ManifestException.class, "2262", MOAApplicationException.class }, + { iaik.server.modules.xmlverify.PropertiesException.class, "2263", MOAApplicationException.class }, + { iaik.server.modules.xmlverify.ReferenceException.class, "2264", MOAApplicationException.class }, + { iaik.server.modules.xmlverify.HashUnavailableException.class, "2224", + MOAApplicationException.class }, + { iaik.server.modules.xmlverify.SignerCertificateUnavailableException.class, "2243", + MOAApplicationException.class }, + { iaik.server.modules.xmlverify.SupplementException.class, "2230", MOAApplicationException.class }, + { iaik.server.modules.xmlverify.TransformationException.class, "2265", + MOAApplicationException.class }, + { iaik.server.modules.xmlverify.TransformationParsingException.class, "2269", + MOAApplicationException.class }, + { at.gv.egovernment.moa.sig.tsl.exception.TslException.class, "2290", + MOAApplicationException.class }, + { iaik.server.modules.cmssign.CMSSignatureCreationException.class, "2300", + MOAApplicationException.class }, + + }; + /** The single instance of this class. */ private static IaikExceptionMapper instance; /** The exception mapping, as a <code>Map</code> for fast lookup. */ - private Map messages = new HashMap(); + private final Map messages = new HashMap(); /** * Get the single instance of this class. - * + * * @return The single instance of this class. */ public static synchronized IaikExceptionMapper getInstance() { @@ -109,7 +129,7 @@ public class IaikExceptionMapper { /** * Create a new <code>IaikExceptionMapper</code>. - * + * * Protected to disallow multple instances. */ protected IaikExceptionMapper() { @@ -124,59 +144,63 @@ public class IaikExceptionMapper { for (i = 0; i < MESSAGES.length; i++) { registerMessage( - (Class) MESSAGES[i][0], - (String) MESSAGES[i][1], - (Class) MESSAGES[i][2]); + (Class) MESSAGES[i][0], + (String) MESSAGES[i][1], + (Class) MESSAGES[i][2]); } } /** * Register a single <code>IAIKException</code> to message mapping. - * - * @param iaikExceptionClass An exception from the <code>iaik</code> package. - * @param messageId The corresponding error message id. - * @param moaExceptionClass The type of <code>MOAException</code> that the - * <code>IAIKException</code> is mapped to (usually - * <code>MOAApplicationException</code> or <code>MOASystemException</code>). + * + * @param iaikExceptionClass An exception from the <code>iaik</code> package. + * @param messageId The corresponding error message id. + * @param moaExceptionClass The type of <code>MOAException</code> that the + * <code>IAIKException</code> is mapped to (usually + * <code>MOAApplicationException</code> or + * <code>MOASystemException</code>). */ protected void registerMessage( - Class iaikExceptionClass, - String messageId, - Class moaExceptionClass) { + Class iaikExceptionClass, + String messageId, + Class moaExceptionClass) { messages.put( - iaikExceptionClass, - new ExceptionMappingInfo(messageId, moaExceptionClass)); + iaikExceptionClass, + new ExceptionMappingInfo(messageId, moaExceptionClass)); } /** - * Map an <code>iaik.xml.crypto.tsl.ex.TSLSearchException</code> to a <code>MOAException</code>. - * - * @param tslSearchException The <code>iaik.xml.crypto.tsl.ex.TSLSearchException</code> to map. - * @return A <code>MOAException</code> containing the message for the - * given <code>IAIKException</code>. + * Map an <code>iaik.xml.crypto.tsl.ex.TSLSearchException</code> to a + * <code>MOAException</code>. + * + * @param tslSearchException The + * <code>iaik.xml.crypto.tsl.ex.TSLSearchException</code> + * to map. + * @return A <code>MOAException</code> containing the message for the given + * <code>IAIKException</code>. */ public MOAException map(at.gv.egovernment.moa.sig.tsl.exception.TslException tslSearchException) { return mapImpl(tslSearchException); } - + /** * Map an <code>IAIKException</code> to a <code>MOAException</code>. - * - * @param iaikException The <code>IAIKException</code> to map. - * @return A <code>MOAException</code> containing the message for the - * given <code>IAIKException</code>. + * + * @param iaikException The <code>IAIKException</code> to map. + * @return A <code>MOAException</code> containing the message for the given + * <code>IAIKException</code>. */ public MOAException map(IAIKException iaikException) { return mapImpl(iaikException); } - + /** * Map an <code>IAIKRuntimeException</code> to a <code>MOAException</code>. - * - * @param iaikException The <code>IAIKException</code> to map. - * @return A <code>MOAException</code> containing the message for the - * given <code>IAIKRuntimeException</code>. + * + * @param iaikException The <code>IAIKException</code> to map. + * @return A <code>MOAException</code> containing the message for the given + * <code>IAIKRuntimeException</code>. */ public MOAException map(IAIKRuntimeException iaikException) { return mapImpl(iaikException); @@ -185,14 +209,14 @@ public class IaikExceptionMapper { /** * Map an <code>IAIKException</code> or <code>IAIKRuntimeException</code> to a * <code>MOAException</code>. - * + * * @param iaikException The <code>IAIKException</code> or - * <code>IAIKRuntimeException</code> to map. - * @return A <code>MOAException</code> containing the message for the - * given <code>IAIKRuntimeException</code>. + * <code>IAIKRuntimeException</code> to map. + * @return A <code>MOAException</code> containing the message for the given + * <code>IAIKRuntimeException</code>. */ private MOAException mapImpl(Exception iaikException) { - MOAException moaException = createMoaException(iaikException); + final MOAException moaException = createMoaException(iaikException); if (moaException == null) { return new MOASystemException("9999", null, iaikException); @@ -201,16 +225,16 @@ public class IaikExceptionMapper { } /** - * Create a <code>MOAException</code> from a given <code>IAIKException</code> - * by looking it up in the mapping. - * + * Create a <code>MOAException</code> from a given <code>IAIKException</code> by + * looking it up in the mapping. + * * @param iaikException The <code>IAIKException</code> to map. - * @return A <code>MOAException</code> with an error code corresponding to - * the given <code>IAIKException</code>. Returns <code>null</code>, if no - * mapping could be found. + * @return A <code>MOAException</code> with an error code corresponding to the + * given <code>IAIKException</code>. Returns <code>null</code>, if no + * mapping could be found. */ protected MOAException createMoaException(Exception iaikException) { - ExceptionMappingInfo info = lookupMessage(iaikException.getClass()); + final ExceptionMappingInfo info = lookupMessage(iaikException.getClass()); Constructor constructor; if (info == null) { @@ -220,13 +244,13 @@ public class IaikExceptionMapper { // instantiate the proper MOAException and return it try { constructor = - info.getMoaExceptionClass().getConstructor(CONSTRUCTOR_ARGS); + info.getMoaExceptionClass().getConstructor(CONSTRUCTOR_ARGS); return (MOAException) constructor.newInstance( - new Object[] { - info.getMessageId(), - new Object[] { iaikException.getMessage()}, - iaikException }); - } catch (Exception e) { + new Object[] { + info.getMessageId(), + new Object[] { iaikException.getMessage() }, + iaikException }); + } catch (final Exception e) { return null; } } @@ -234,19 +258,19 @@ public class IaikExceptionMapper { /** * Recursively look up the message associated with an * <code>IAIKException</code>. - * + * * This method walks up the exception inheritance hierarchy until it finds a * mapping. - * + * * @param iaikExceptionClass The <code>IAIKException</code> to look up. - * @return Information about the message id and - * <code>MOAException</code> class that the <code>iaikExceptionClass</code> - * maps to. If no mapping could be found, <code>null</code> is returned. + * @return Information about the message id and <code>MOAException</code> class + * that the <code>iaikExceptionClass</code> maps to. If no mapping could + * be found, <code>null</code> is returned. */ protected ExceptionMappingInfo lookupMessage(Class iaikExceptionClass) { ExceptionMappingInfo info; - // break if + // break if if (iaikExceptionClass.equals(Exception.class)) { return null; } @@ -264,21 +288,21 @@ public class IaikExceptionMapper { /** * A class containing a mapping from an error message ID to a * <code>MOAException</code> class. - * + * * @author Patrick Peck * @version $Id$ */ class ExceptionMappingInfo { /** The message ID. */ - private String messageId; + private final String messageId; /** The <code>MOAException</code> class. */ - private Class moaExceptionClass; + private final Class moaExceptionClass; /** * Create a new <code>ExceptionMappingInfo</code>. - * - * @param messageId The message ID. - * @param moaExceptionClass The <code>MOAException</code> class. + * + * @param messageId The message ID. + * @param moaExceptionClass The <code>MOAException</code> class. */ public ExceptionMappingInfo(String messageId, Class moaExceptionClass) { this.messageId = messageId; @@ -287,7 +311,7 @@ class ExceptionMappingInfo { /** * Return the message ID. - * + * * @return The message ID. */ public String getMessageId() { @@ -296,7 +320,7 @@ class ExceptionMappingInfo { /** * Returns the <code>MOAException</code> class that the message ID maps to. - * + * * @return The <code>MOAException</code> class. */ public Class getMoaExceptionClass() { diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/InvokerUtils.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/InvokerUtils.java index 0128e6a..43c993b 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/InvokerUtils.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/InvokerUtils.java @@ -21,7 +21,6 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.server.invoke; import org.w3c.dom.Element; @@ -35,7 +34,7 @@ import at.gv.egovernment.moaspss.util.XPathUtils; /** * Utility methods for invoking the IAIK MOA modules. - * + * * @author Patrick Peck * @version $Id$ */ @@ -43,44 +42,44 @@ public class InvokerUtils { /** * Select the signature parent element. - * - * @param root The root DOM element which contains the signature parent - * element somewhere in its subtree. - * @param location The <code>ElementSelector</code> containing the XPath - * expression to select the signature parent element from the document. - * It is also contains the namespace prefix to URI mapping. + * + * @param root The root DOM element which contains the signature parent + * element somewhere in its subtree. + * @param location The <code>ElementSelector</code> containing the XPath + * expression to select the signature parent element from the + * document. It is also contains the namespace prefix to URI + * mapping. * @return Element The signature parent element. * @throws MOAApplicationException An error occurred evaluating the - * <code>location</code>. + * <code>location</code>. */ public static Element evaluateSignatureLocation( - Element root, - ElementSelector location) - throws MOAApplicationException { + Element root, + ElementSelector location) + throws MOAApplicationException { NodeList nodes; try { nodes = - XPathUtils.selectNodeList( - root, - location.getNamespaceDeclarations(), - location.getXPathExpression()); - } catch (XPathException e) { + XPathUtils.selectNodeList( + root, + location.getNamespaceDeclarations(), + location.getXPathExpression()); + } catch (final XPathException e) { throw new MOAApplicationException( - "2212", - new Object[] { location.getXPathExpression()}, - e); + "2212", + new Object[] { location.getXPathExpression() }, + e); } if (nodes.getLength() != 1 - || !(nodes.item(0).getNodeType() == Node.ELEMENT_NODE)) { + || !(nodes.item(0).getNodeType() == Node.ELEMENT_NODE)) { throw new MOAApplicationException( - "2212", - new Object[] { location.getXPathExpression()}); + "2212", + new Object[] { location.getXPathExpression() }); } return (Element) nodes.item(0); } - } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/ProfileMapper.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/ProfileMapper.java index c6eaa4f..474e74b 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/ProfileMapper.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/ProfileMapper.java @@ -21,7 +21,6 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.server.invoke; import java.util.ArrayList; @@ -48,7 +47,7 @@ import at.gv.egovernment.moa.spss.server.config.ConfigurationProvider; /** * Map ProfileID objects to their explicit represantation. - * + * * @author Patrick Peck * @version $Id$ */ @@ -58,83 +57,79 @@ public class ProfileMapper { private static ProfileParser profileParser = new ProfileParser(); /** - * Map a <code>CreateTransformsInfoProfile</code> to a + * Map a <code>CreateTransformsInfoProfile</code> to a * <code>CreateTransformsInfoProfileExplicit</code>. - * + * * @param profile The profile object to map. - * @param config The MOA configuration to use for looking up the profile. + * @param config The MOA configuration to use for looking up the profile. * @return <code>profile</code>, if the given profile is of type - * <code>EXPLICIT_CREATETRANSFORMSINFOPROFILE</code>, otherwise the profile - * that is looked up and parsed from the configuration. + * <code>EXPLICIT_CREATETRANSFORMSINFOPROFILE</code>, otherwise the + * profile that is looked up and parsed from the configuration. * @throws MOAApplicationException An error occurred parsing the profile. */ public static CreateTransformsInfoProfileExplicit mapCreateTransformsInfoProfile( - CreateTransformsInfoProfile profile, - ConfigurationProvider config) - throws MOAApplicationException { + CreateTransformsInfoProfile profile, + ConfigurationProvider config) + throws MOAApplicationException { switch (profile.getCreateTransformsInfoProfileType()) { - case CreateTransformsInfoProfile.EXPLICIT_CREATETRANSFORMSINFOPROFILE : + case CreateTransformsInfoProfile.EXPLICIT_CREATETRANSFORMSINFOPROFILE: return (CreateTransformsInfoProfileExplicit) profile; - case CreateTransformsInfoProfile.ID_CREATETRANSFORMSINFOPROFILE : - CreateTransformsInfoProfileID profileIdObj = - (CreateTransformsInfoProfileID) profile; - String profileID = profileIdObj.getCreateTransformsInfoProfileID(); - Element profileElem = config.getCreateTransformsInfoProfile(profileID); + case CreateTransformsInfoProfile.ID_CREATETRANSFORMSINFOPROFILE: + final CreateTransformsInfoProfileID profileIdObj = + (CreateTransformsInfoProfileID) profile; + final String profileID = profileIdObj.getCreateTransformsInfoProfileID(); + final Element profileElem = config.getCreateTransformsInfoProfile(profileID); if (profileElem == null) { throw new MOAApplicationException("2234", new Object[] { profileID }); } - return ( - CreateTransformsInfoProfileExplicit) profileParser + return (CreateTransformsInfoProfileExplicit) profileParser .parseCreateTransformsInfoProfile( - profileElem); + profileElem); } return null; // this will not happen } /** - * Map a <code>CreateSignatureEnvironmentProfile</code> to a + * Map a <code>CreateSignatureEnvironmentProfile</code> to a * <code>CreateSignatureEnvironmentProfileExplicit</code>. - * + * * @param profile The profile object to map. - * @param config The MOA configuration to use for looking up the profile. + * @param config The MOA configuration to use for looking up the profile. * @return <code>profile</code>, if the given profile is of type - * <code>EXPLICIT_CREATESIGNATUREENVIRONMENTPROFILE</code>, otherwise the - * profile that is looked up and parsed from the configuration. + * <code>EXPLICIT_CREATESIGNATUREENVIRONMENTPROFILE</code>, otherwise + * the profile that is looked up and parsed from the configuration. * @throws MOAApplicationException An error occurred parsing the profile. */ public static CreateSignatureEnvironmentProfileExplicit mapCreateSignatureEnvironmentProfile( - CreateSignatureEnvironmentProfile profile, - ConfigurationProvider config) - throws MOAApplicationException { + CreateSignatureEnvironmentProfile profile, + ConfigurationProvider config) + throws MOAApplicationException { switch (profile.getCreateSignatureEnvironmentProfileType()) { - case CreateSignatureEnvironmentProfile - .EXPLICIT_CREATESIGNATUREENVIRONMENTPROFILE : + case CreateSignatureEnvironmentProfile.EXPLICIT_CREATESIGNATUREENVIRONMENTPROFILE: return (CreateSignatureEnvironmentProfileExplicit) profile; - case CreateSignatureEnvironmentProfile - .ID_CREATESIGNATUREENVIRONMENTPROFILE : + case CreateSignatureEnvironmentProfile.ID_CREATESIGNATUREENVIRONMENTPROFILE: - CreateSignatureEnvironmentProfileID profileIdObj = - (CreateSignatureEnvironmentProfileID) profile; - String profileID = - profileIdObj.getCreateSignatureEnvironmentProfileID(); - Element profileElem = - config.getCreateSignatureEnvironmentProfile(profileID); + final CreateSignatureEnvironmentProfileID profileIdObj = + (CreateSignatureEnvironmentProfileID) profile; + final String profileID = + profileIdObj.getCreateSignatureEnvironmentProfileID(); + final Element profileElem = + config.getCreateSignatureEnvironmentProfile(profileID); if (profileElem == null) { throw new MOAApplicationException("2236", new Object[] { profileID }); } - return ( - CreateSignatureEnvironmentProfileExplicit) profileParser + return (CreateSignatureEnvironmentProfileExplicit) profileParser .parseCreateSignatureEnvironmentProfile( - profileElem); + profileElem); } return null; @@ -142,25 +137,25 @@ public class ProfileMapper { } /** - * Map a <code>List</code> of <code>SupplementProfile</code>s to their - * explicit representation. - * + * Map a <code>List</code> of <code>SupplementProfile</code>s to their explicit + * representation. + * * @param profiles The profiles to map. - * @param config The MOA configuration to use for looking up profiles. + * @param config The MOA configuration to use for looking up profiles. * @return The mapped profiles. * @throws MOAApplicationException An error occurred mapping one of the - * profiles. + * profiles. */ public static List mapSupplementProfiles( - List profiles, - ConfigurationProvider config) - throws MOAApplicationException { + List profiles, + ConfigurationProvider config) + throws MOAApplicationException { - List mappedProfiles = new ArrayList(); + final List mappedProfiles = new ArrayList(); Iterator iter; for (iter = profiles.iterator(); iter.hasNext();) { - SupplementProfile profile = (SupplementProfile) iter.next(); + final SupplementProfile profile = (SupplementProfile) iter.next(); mappedProfiles.add(mapSupplementProfile(profile, config)); } @@ -168,63 +163,62 @@ public class ProfileMapper { } /** - * Map a <code>SupplementProfile</code> to a + * Map a <code>SupplementProfile</code> to a * <code>SupplementProfileExplicit</code>. - * + * * @param profile The profile object to map. - * @param config The MOA configuration to use for looking up the profile. + * @param config The MOA configuration to use for looking up the profile. * @return <code>profile</code>, if the given profile is of type - * <code>EXPLICIT_SUPPLEMENTPROFILE</code>, otherwise the - * profile that is looked up and parsed from the configuration. + * <code>EXPLICIT_SUPPLEMENTPROFILE</code>, otherwise the profile that + * is looked up and parsed from the configuration. * @throws MOAApplicationException An error occurred parsing the profile. */ public static SupplementProfileExplicit mapSupplementProfile( - SupplementProfile profile, - ConfigurationProvider config) - throws MOAApplicationException { + SupplementProfile profile, + ConfigurationProvider config) + throws MOAApplicationException { switch (profile.getSupplementProfileType()) { - case SupplementProfile.EXPLICIT_SUPPLEMENTPROFILE : + case SupplementProfile.EXPLICIT_SUPPLEMENTPROFILE: return (SupplementProfileExplicit) profile; - case SupplementProfile.ID_SUPPLEMENTPROFILE : - SupplementProfileID profileIdObj = (SupplementProfileID) profile; - String profileID = profileIdObj.getSupplementProfileID(); - Element profileElem = config.getSupplementProfile(profileID); + case SupplementProfile.ID_SUPPLEMENTPROFILE: + final SupplementProfileID profileIdObj = (SupplementProfileID) profile; + final String profileID = profileIdObj.getSupplementProfileID(); + final Element profileElem = config.getSupplementProfile(profileID); if (profileElem == null) { throw new MOAApplicationException("2267", new Object[] { profileID }); } - return ( - SupplementProfileExplicit) profileParser.parseSupplementProfile( - profileElem); + return (SupplementProfileExplicit) profileParser.parseSupplementProfile( + profileElem); } return null; } /** - * Map a <code>List</code> of <code>VerifyTransformsInfoProfile</code>s to - * their explicit representation. - * + * Map a <code>List</code> of <code>VerifyTransformsInfoProfile</code>s to their + * explicit representation. + * * @param profiles The profiles to map. - * @param config The MOA configuration to use for looking up profiles. + * @param config The MOA configuration to use for looking up profiles. * @return The mapped profiles. * @throws MOAApplicationException An error occurred mapping one of the - * profiles. + * profiles. */ public static List mapVerifyTransformsInfoProfiles( - List profiles, - ConfigurationProvider config) - throws MOAApplicationException { + List profiles, + ConfigurationProvider config) + throws MOAApplicationException { - List mappedProfiles = new ArrayList(); + final List mappedProfiles = new ArrayList(); Iterator iter; for (iter = profiles.iterator(); iter.hasNext();) { - VerifyTransformsInfoProfile profile = - (VerifyTransformsInfoProfile) iter.next(); + final VerifyTransformsInfoProfile profile = + (VerifyTransformsInfoProfile) iter.next(); mappedProfiles.add(mapVerifyTransformsInfoProfile(profile, config)); } @@ -232,40 +226,39 @@ public class ProfileMapper { } /** - * Map a <code>VerifyTransformsInfoProfile</code> to a + * Map a <code>VerifyTransformsInfoProfile</code> to a * <code>VerifyTransformsInfoProfileExplicit</code>. - * + * * @param profile The profile object to map. - * @param config The MOA configuration to use for looking up the profile. + * @param config The MOA configuration to use for looking up the profile. * @return <code>profile</code>, if the given profile is of type - * <code>EXPLICIT_VERIFYTRANSFORMSINFOPROFILE</code>, otherwise the - * profile that is looked up and parsed from the configuration. + * <code>EXPLICIT_VERIFYTRANSFORMSINFOPROFILE</code>, otherwise the + * profile that is looked up and parsed from the configuration. * @throws MOAApplicationException An error occurred parsing the profile. */ public static VerifyTransformsInfoProfileExplicit mapVerifyTransformsInfoProfile( - VerifyTransformsInfoProfile profile, - ConfigurationProvider config) - throws MOAApplicationException { + VerifyTransformsInfoProfile profile, + ConfigurationProvider config) + throws MOAApplicationException { switch (profile.getVerifyTransformsInfoProfileType()) { - case VerifyTransformsInfoProfile.EXPLICIT_VERIFYTRANSFORMSINFOPROFILE : + case VerifyTransformsInfoProfile.EXPLICIT_VERIFYTRANSFORMSINFOPROFILE: return (VerifyTransformsInfoProfileExplicit) profile; - case VerifyTransformsInfoProfile.ID_VERIFYTRANSFORMSINFOPROFILE : - VerifyTransformsInfoProfileID profileIdObj = - (VerifyTransformsInfoProfileID) profile; - String profileID = profileIdObj.getVerifyTransformsInfoProfileID(); - Element profileElem = - config.getVerifyTransformsInfoProfile(profileID); - + case VerifyTransformsInfoProfile.ID_VERIFYTRANSFORMSINFOPROFILE: + final VerifyTransformsInfoProfileID profileIdObj = + (VerifyTransformsInfoProfileID) profile; + final String profileID = profileIdObj.getVerifyTransformsInfoProfileID(); + final Element profileElem = + config.getVerifyTransformsInfoProfile(profileID); + if (profileElem == null) { - throw new MOAApplicationException("2268", new Object[] { profileID }); + throw new MOAApplicationException("2268", new Object[] { profileID }); } - return ( - VerifyTransformsInfoProfileExplicit) profileParser + return (VerifyTransformsInfoProfileExplicit) profileParser .parseVerifyTransformsInfoProfile( - profileElem); + profileElem); } return null; diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/ServiceContextUtils.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/ServiceContextUtils.java index 330ffdd..0674103 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/ServiceContextUtils.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/ServiceContextUtils.java @@ -21,7 +21,6 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.server.invoke; import at.gv.egovernment.moa.spss.server.config.ConfigurationException; @@ -32,37 +31,38 @@ import at.gv.egovernment.moaspss.logging.LoggingContext; import at.gv.egovernment.moaspss.logging.LoggingContextManager; /** - * A utility class for setting up and tearing down thread-local context + * A utility class for setting up and tearing down thread-local context * information needed for calling the <code>Invoker</code> classes. - * + * * @author Patrick Peck * @version $Id$ */ public class ServiceContextUtils { - + /** - * Set up the thread-local context information needed for calling the various + * Set up the thread-local context information needed for calling the various * <code>Invoker</code> classes. - * - * @throws ConfigurationException An error occurred setting up the - * configuration in the <code>TransactionContext</code>. + * + * @throws ConfigurationException An error occurred setting up the configuration + * in the <code>TransactionContext</code>. */ public static void setUpContexts() throws ConfigurationException { - TransactionContextManager txMgr = TransactionContextManager.getInstance(); - LoggingContextManager logMgr = LoggingContextManager.getInstance(); - String transactionID = Thread.currentThread().getName(); - + final TransactionContextManager txMgr = TransactionContextManager.getInstance(); + final LoggingContextManager logMgr = LoggingContextManager.getInstance(); + final String transactionID = Thread.currentThread().getName(); + if (txMgr.getTransactionContext() == null) { - TransactionContext ctx = new TransactionContext(transactionID, null, ConfigurationProvider.getInstance()); + final TransactionContext ctx = new TransactionContext(transactionID, null, ConfigurationProvider + .getInstance()); txMgr.setTransactionContext(ctx); } - + if (logMgr.getLoggingContext() == null) { - LoggingContext ctx = new LoggingContext(transactionID); + final LoggingContext ctx = new LoggingContext(transactionID); logMgr.setLoggingContext(ctx); } } - + /** * Tear down thread-local context information. */ diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/SignatureCreationServiceImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/SignatureCreationServiceImpl.java index b746333..ec4bdd9 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/SignatureCreationServiceImpl.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/SignatureCreationServiceImpl.java @@ -21,7 +21,6 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.server.invoke; import java.util.Collections; @@ -33,9 +32,9 @@ import at.gv.egovernment.moa.spss.api.xmlsign.CreateXMLSignatureRequest; import at.gv.egovernment.moa.spss.api.xmlsign.CreateXMLSignatureResponse; /** - * An implementation of the <code>SignatureCreationService</code>, using - * the <code>XMLSignatureCreationInvoker</code>. - * + * An implementation of the <code>SignatureCreationService</code>, using the + * <code>XMLSignatureCreationInvoker</code>. + * * @author Patrick Peck * @version $Id$ */ @@ -43,25 +42,26 @@ public class SignatureCreationServiceImpl extends SignatureCreationService { /** * Create an XML signature. - * + * * @param request The <code>CreateXMLSignatureRequest</code> containing - * information about the signature(s) to create. + * information about the signature(s) to create. * @return The created signature(s). * @throws MOAException An error occurred creating the signature(s). */ + @Override public CreateXMLSignatureResponse createXMLSignature(CreateXMLSignatureRequest request) - throws MOAException { + throws MOAException { - XMLSignatureCreationInvoker invoker = - XMLSignatureCreationInvoker.getInstance(); + final XMLSignatureCreationInvoker invoker = + XMLSignatureCreationInvoker.getInstance(); CreateXMLSignatureResponse response; try { - + Configurator.getInstance().init(); ServiceContextUtils.setUpContexts(); response = invoker.createXMLSignature(request, Collections.EMPTY_SET); - + return response; } finally { ServiceContextUtils.tearDownContexts(); diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/SignatureVerificationServiceImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/SignatureVerificationServiceImpl.java index 5b6033c..50b7c53 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/SignatureVerificationServiceImpl.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/SignatureVerificationServiceImpl.java @@ -21,7 +21,6 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.server.invoke; import at.gv.egovernment.moa.spss.MOAException; @@ -33,36 +32,37 @@ import at.gv.egovernment.moa.spss.api.xmlverify.VerifyXMLSignatureRequest; import at.gv.egovernment.moa.spss.api.xmlverify.VerifyXMLSignatureResponse; /** - * An implementation of the <code>SignatureVerificationService</code> using - * the <code>XMLSignatureVerificationInvoker</code> and the + * An implementation of the <code>SignatureVerificationService</code> using the + * <code>XMLSignatureVerificationInvoker</code> and the * <code>CMSSignatureVerificationInvoker</code>. - * + * * @author Patrick Peck * @version $Id$ */ public class SignatureVerificationServiceImpl - extends SignatureVerificationService { + extends SignatureVerificationService { /** * Verify a CMS signature. - * - * @param request The <code>VerifyCMSSignatureRequest</code> containing - * information about the signature verification. + * + * @param request The <code>VerifyCMSSignatureRequest</code> containing + * information about the signature verification. * @return The result of the signature verification. * @throws MOAException An error occurred during signature verification. */ + @Override public VerifyCMSSignatureResponse verifyCMSSignature(VerifyCMSSignatureRequest request) - throws MOAException { + throws MOAException { - CMSSignatureVerificationInvoker invoker = - CMSSignatureVerificationInvoker.getInstance(); + final CMSSignatureVerificationInvoker invoker = + CMSSignatureVerificationInvoker.getInstance(); VerifyCMSSignatureResponse response; try { Configurator.getInstance().init(); ServiceContextUtils.setUpContexts(); response = invoker.verifyCMSSignature(request); - + return response; } finally { ServiceContextUtils.tearDownContexts(); @@ -71,26 +71,26 @@ public class SignatureVerificationServiceImpl /** * Verify an XML signature. - * + * * @param request The <code>VerifyXMLSignatureRequest</code> containinig - * information about the signature verification. + * information about the signature verification. * @return The result of the signature verification. * @throws MOAException An error occurred during signature verification. */ + @Override public VerifyXMLSignatureResponse verifyXMLSignature(VerifyXMLSignatureRequest request) - throws MOAException { + throws MOAException { - XMLSignatureVerificationInvoker invoker = - XMLSignatureVerificationInvoker.getInstance(); + final XMLSignatureVerificationInvoker invoker = + XMLSignatureVerificationInvoker.getInstance(); VerifyXMLSignatureResponse response; try { - Configurator.getInstance().init(); ServiceContextUtils.setUpContexts(); response = invoker.verifyXMLSignature(request); - + return response; } finally { ServiceContextUtils.tearDownContexts(); diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/TransformationFactory.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/TransformationFactory.java index 7842f14..1eec502 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/TransformationFactory.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/TransformationFactory.java @@ -21,7 +21,6 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.server.invoke; import java.util.ArrayList; @@ -30,14 +29,6 @@ import java.util.Iterator; import java.util.List; import java.util.Map; -import iaik.server.modules.xml.Base64Transformation; -import iaik.server.modules.xml.Canonicalization; -import iaik.server.modules.xml.EnvelopedSignatureTransformation; -import iaik.server.modules.xml.Transformation; -import iaik.server.modules.xml.XPath2Transformation; -import iaik.server.modules.xml.XPathTransformation; -import iaik.server.modules.xml.XSLTTransformation; - import at.gv.egovernment.moa.spss.MOAApplicationException; import at.gv.egovernment.moa.spss.api.common.ExclusiveCanonicalizationTransform; import at.gv.egovernment.moa.spss.api.common.Transform; @@ -53,41 +44,49 @@ import at.gv.egovernment.moa.spss.server.iaik.xml.XPath2FilterImpl; import at.gv.egovernment.moa.spss.server.iaik.xml.XPath2TransformationImpl; import at.gv.egovernment.moa.spss.server.iaik.xml.XPathTransformationImpl; import at.gv.egovernment.moa.spss.server.iaik.xml.XSLTTransformationImpl; +import iaik.server.modules.xml.Base64Transformation; +import iaik.server.modules.xml.Canonicalization; +import iaik.server.modules.xml.EnvelopedSignatureTransformation; +import iaik.server.modules.xml.Transformation; +import iaik.server.modules.xml.XPath2Transformation; +import iaik.server.modules.xml.XPathTransformation; +import iaik.server.modules.xml.XSLTTransformation; /** - * A factory to create <code>Transformation</code> objects from + * A factory to create <code>Transformation</code> objects from * <code>Transform</code> objects. - * + * * @author Patrick Peck * @version $Id$ */ public class TransformationFactory { - /** The single instance of this class. */ private static TransformationFactory instance = null; - /** Maps <code>XPathFilter</code> filter types to - * <code>XPath2Transformation</code> filter types. */ + /** + * Maps <code>XPathFilter</code> filter types to + * <code>XPath2Transformation</code> filter types. + */ private static Map FILTER_TYPE_MAPPING; static { FILTER_TYPE_MAPPING = new HashMap(); FILTER_TYPE_MAPPING.put( - XPathFilter.INTERSECT_TYPE, - XPath2Transformation.XPath2Filter.INTERSECTION); + XPathFilter.INTERSECT_TYPE, + XPath2Transformation.XPath2Filter.INTERSECTION); FILTER_TYPE_MAPPING.put( - XPathFilter.SUBTRACT_TYPE, - XPath2Transformation.XPath2Filter.SUBTRACTION); + XPathFilter.SUBTRACT_TYPE, + XPath2Transformation.XPath2Filter.SUBTRACTION); FILTER_TYPE_MAPPING.put( - XPathFilter.UNION_TYPE, - XPath2Transformation.XPath2Filter.UNION); + XPathFilter.UNION_TYPE, + XPath2Transformation.XPath2Filter.UNION); } /** * Get the single instance of the factory. - * + * * @return TransformationFactory The single instance. */ public static synchronized TransformationFactory getInstance() { @@ -99,37 +98,36 @@ public class TransformationFactory { /** * Create a new <code>TransformationFactory</code>. - * + * * Protected to disallow multiple instances. */ protected TransformationFactory() { } /** - * Create a <code>Transformation</code> based on a - * <code>Transform</code> object. - * - * @param transform The <code>Transform</code> object to extract - * transformation data from. - * @return The transformation contained in the <code>transform</code> + * Create a <code>Transformation</code> based on a <code>Transform</code> * object. + * + * @param transform The <code>Transform</code> object to extract transformation + * data from. + * @return The transformation contained in the <code>transform</code> object. * @throws MOAApplicationException An error occured creating the - * <code>Transformation</code>. See exception message for details. + * <code>Transformation</code>. See exception + * message for details. */ public Transformation createTransformation(Transform transform) - throws MOAApplicationException { - String algorithmUri = transform.getAlgorithmURI(); + throws MOAApplicationException { + final String algorithmUri = transform.getAlgorithmURI(); if (Canonicalization.CANONICAL_XML.equals(algorithmUri) - || Canonicalization.CANONICAL_XML_WITH_COMMENTS.equals(algorithmUri)) { + || Canonicalization.CANONICAL_XML_WITH_COMMENTS.equals(algorithmUri)) { return createC14nTransformation(algorithmUri); - } else if ( - Canonicalization.EXCLUSIVE_CANONICAL_XML.equals(algorithmUri) + } else if (Canonicalization.EXCLUSIVE_CANONICAL_XML.equals(algorithmUri) || Canonicalization.EXCLUSIVE_CANONICAL_XML_WITH_COMMENTS.equals( - algorithmUri)) { + algorithmUri)) { return createExclusiveC14nTransformation( - (ExclusiveCanonicalizationTransform) transform); + (ExclusiveCanonicalizationTransform) transform); } else if (Base64Transformation.ALL.contains(algorithmUri)) { return createBase64Transformation(); @@ -147,23 +145,24 @@ public class TransformationFactory { } /** - * Create a <code>List</code> of <code>Transformation</code>s from a + * Create a <code>List</code> of <code>Transformation</code>s from a * <code>List</code> of <code>Transform</code>s. - * - * @param transforms The <code>List</code> containing the - * <code>Transform</code>s. + * + * @param transforms The <code>List</code> containing the + * <code>Transform</code>s. * @return The <code>List</code> of <code>Transformation</code>s corresponding - * to the <code>transforms</code>. + * to the <code>transforms</code>. * @throws MOAApplicationException An error occurred building one of the - * transformations. See exception message for details. + * transformations. See exception message for + * details. */ public List createTransformationList(List transforms) - throws MOAApplicationException { - List transformationList = new ArrayList(); + throws MOAApplicationException { + final List transformationList = new ArrayList(); Iterator trIter; for (trIter = transforms.iterator(); trIter.hasNext();) { - Transform transform = (Transform) trIter.next(); + final Transform transform = (Transform) trIter.next(); transformationList.add(createTransformation(transform)); } @@ -172,7 +171,7 @@ public class TransformationFactory { /** * Create a <code>Canonicalization</code>. - * + * * @param algorithmUri The algorithm URI of the canonicalization. * @return The <code>Canonicalization</code>. */ @@ -182,20 +181,20 @@ public class TransformationFactory { /** * Create a <code>ExclusiveCanonicalization</code>. - * - * @param transform The <code>ExclusiveCanonicalizationTransform</code> - * containing the transformation data. + * + * @param transform The <code>ExclusiveCanonicalizationTransform</code> + * containing the transformation data. * @return The <code>ExclusiveCanonicalization</code>. */ private Transformation createExclusiveC14nTransformation(ExclusiveCanonicalizationTransform transform) { return new ExclusiveCanonicalizationImpl( - transform.getAlgorithmURI(), - transform.getInclusiveNamespacePrefixes()); + transform.getAlgorithmURI(), + transform.getInclusiveNamespacePrefixes()); } /** * Create a <code>Base64Transformation</code>. - * + * * @return The <code></code> */ private Transformation createBase64Transformation() { @@ -204,7 +203,7 @@ public class TransformationFactory { /** * Create an <code>EnvelopedSignatureTransformation</code>. - * + * * @return An <code>EnvelopedSignatureTransformation</code>. */ private Transformation createEnvelopedSignatureTransformation() { @@ -213,47 +212,47 @@ public class TransformationFactory { /** * Create an <code>XPathTransformation</code>. - * - * @param transform The <code>Transform</code> object containing the - * XPath transformation. - * @return An <code>XPathTransformation</code> corresponding the - * transformation given in <code>transform</code>. - * @throws MOAApplicationException An error occurred creating the - * <code>Transformation</code>. + * + * @param transform The <code>Transform</code> object containing the XPath + * transformation. + * @return An <code>XPathTransformation</code> corresponding the transformation + * given in <code>transform</code>. + * @throws MOAApplicationException An error occurred creating the + * <code>Transformation</code>. */ private Transformation createXPathTransformation(XPathTransform transform) - throws MOAApplicationException { + throws MOAApplicationException { return new XPathTransformationImpl( - transform.getXPathExpression(), - transform.getNamespaceDeclarations()); + transform.getXPathExpression(), + transform.getNamespaceDeclarations()); } /** * Create an <code>XPath2Transformation</code>. - * - * @param transform The <code>Transform</code> object containing the - * XPath filter transformation. - * @return An <code>XPath2Transformation</code> corresponding the - * transformation given in <code>transform</code>. + * + * @param transform The <code>Transform</code> object containing the XPath + * filter transformation. + * @return An <code>XPath2Transformation</code> corresponding the transformation + * given in <code>transform</code>. * @throws MOAApplicationException An error occurred creating the - * <code>Transformation</code>. + * <code>Transformation</code>. */ private Transformation createXPath2Transformation(XPathFilter2Transform transform) - throws MOAApplicationException { + throws MOAApplicationException { - XPath2TransformationImpl xpath2 = new XPath2TransformationImpl(); + final XPath2TransformationImpl xpath2 = new XPath2TransformationImpl(); Iterator iter; for (iter = transform.getFilters().iterator(); iter.hasNext();) { - XPathFilter filter = (XPathFilter) iter.next(); - String mappedFilterType = - (String) FILTER_TYPE_MAPPING.get(filter.getFilterType()); - XPath2FilterImpl mappedFilter = - new XPath2FilterImpl( - mappedFilterType, - filter.getXPathExpression(), - filter.getNamespaceDeclarations()); + final XPathFilter filter = (XPathFilter) iter.next(); + final String mappedFilterType = + (String) FILTER_TYPE_MAPPING.get(filter.getFilterType()); + final XPath2FilterImpl mappedFilter = + new XPath2FilterImpl( + mappedFilterType, + filter.getXPathExpression(), + filter.getNamespaceDeclarations()); xpath2.addXPathFilter(mappedFilter); } @@ -266,15 +265,15 @@ public class TransformationFactory { /** * Create an <code>XSLTTransformation</code>. - * + * * @param transform The <code>Transform</code> containing the XSLT stylesheet. * @return An <code>XSLTTransformation</code> corresponding the transformation - * given in <code>transform</code>. + * given in <code>transform</code>. * @throws MOAApplicationException An error occurred creating the - * <code>Transformation</code>. + * <code>Transformation</code>. */ private Transformation createXSLTTransformation(XSLTTransform transform) - throws MOAApplicationException { + throws MOAApplicationException { return new XSLTTransformationImpl(transform.getStylesheet()); } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/VerifyCMSSignatureResponseBuilder.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/VerifyCMSSignatureResponseBuilder.java index f4121b0..813d28e 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/VerifyCMSSignatureResponseBuilder.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/VerifyCMSSignatureResponseBuilder.java @@ -21,13 +21,8 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.server.invoke; -import iaik.server.modules.cmsverify.CMSSignatureVerificationResult; -import iaik.server.modules.pdfverify.PDFSignatureVerificationResult; -import iaik.server.cmspdfverify.CertificateValidationResult; - import java.security.cert.X509Certificate; import java.util.ArrayList; import java.util.List; @@ -41,28 +36,35 @@ import at.gv.egovernment.moa.spss.api.common.ExtendedCertificateCheckResult; import at.gv.egovernment.moa.spss.api.common.SignerInfo; import at.gv.egovernment.moa.spss.api.common.TslInfos; import at.gv.egovernment.moa.spss.server.config.TrustProfile; +import iaik.server.cmspdfverify.CertificateValidationResult; +import iaik.server.modules.cmsverify.CMSSignatureVerificationResult; +import iaik.server.modules.pdfverify.PDFSignatureVerificationResult; /** * A class to build a <code>VerifyCMSSignatureResponse</code> object. - * - * <p>Via subsequent calls to <code>addResult()</code> a number of results from - * a CMS signature verification can be added to the response.</p> - * - * <p>The <code>getResponseElement()</code> method then returns the - * <code>VerifyCMSSignatureResponse</code> built so far.</p> - * + * + * <p> + * Via subsequent calls to <code>addResult()</code> a number of results from a + * CMS signature verification can be added to the response. + * </p> + * + * <p> + * The <code>getResponseElement()</code> method then returns the + * <code>VerifyCMSSignatureResponse</code> built so far. + * </p> + * * @author Patrick Peck * @version $Id$ */ public class VerifyCMSSignatureResponseBuilder { /** The <code>SPSSFactory</code> for creating API objects. */ - private SPSSFactory factory = SPSSFactory.getInstance(); + private final SPSSFactory factory = SPSSFactory.getInstance(); /** The elements making up the response. */ - private List responseElements = new ArrayList(); + private final List responseElements = new ArrayList(); /** * Get the <code>VerifyCMSSignatureResponse</code> built so far. - * + * * @return The <code>VerifyCMSSignatureResponse</code> built so far. */ public VerifyCMSSignatureResponse getResponse() { @@ -71,112 +73,146 @@ public class VerifyCMSSignatureResponseBuilder { /** * Add a verification result to the response. - * - * @param result The result to add. - * @param trustprofile The actual trustprofile - * @param checkQCFromTSL <code>true</code>, if the TSL check verifies the - * certificate as qualified, otherwise <code>false</code>. - * @param checkSSCD <code>true</code>, if the TSL check verifies the - * signature based on a SSDC, otherwise <code>false</code>. - * @param sscdSourceTSL <code>true</code>, if the SSCD information comes from the TSL, - * otherwise <code>false</code>. - * @throws MOAException + * + * @param result The result to add. + * @param trustprofile The actual trustprofile + * @param checkQCFromTSL <code>true</code>, if the TSL check verifies the + * certificate as qualified, otherwise <code>false</code>. + * @param checkSSCD <code>true</code>, if the TSL check verifies the + * signature based on a SSDC, otherwise + * <code>false</code>. + * @param sscdSourceTSL <code>true</code>, if the SSCD information comes from + * the TSL, otherwise <code>false</code>. + * @throws MOAException */ - public void addResult(CMSSignatureVerificationResult result, TrustProfile trustProfile, boolean checkQC, boolean qcSourceTSL, boolean checkSSCD, boolean sscdSourceTSL, String issuerCountryCode, List adesResults, - ExtendedCertificateCheckResult extendedCertificateCheckResult, TslInfos tslInfos) - throws MOAException { - - CertificateValidationResult certResult = - result.getCertificateValidationResult(); - int signatureCheckCode = - result.getSignatureValueVerificationCode().intValue(); - int certificateCheckCode = certResult.getValidationResultCode().intValue(); - + public void addResult(CMSSignatureVerificationResult result, TrustProfile trustProfile, boolean checkQC, + boolean qcSourceTSL, boolean checkSSCD, boolean sscdSourceTSL, String issuerCountryCode, + List adesResults, + ExtendedCertificateCheckResult extendedCertificateCheckResult, TslInfos tslInfos, + boolean extendedVerification) + throws MOAException { + + final int signatureCheckCode = result.getSignatureValueVerificationCode().intValue(); + final CertificateValidationResult certResult = result.getCertificateValidationResult(); + VerifyCMSSignatureResponseElement responseElement; - SignerInfo signerInfo; + SignerInfo signerInfo = null; CheckResult signatureCheck; CheckResult certificateCheck; - boolean qualifiedCertificate = checkQC; - - // add SignerInfo element - signerInfo = - factory.createSignerInfo( - (X509Certificate) certResult.getCertificateChain().get(0), - qualifiedCertificate, - qcSourceTSL, - certResult.isPublicAuthorityCertificate(), - certResult.getPublicAuthorityID(), - checkSSCD, - sscdSourceTSL, - issuerCountryCode, - result.getSigningTime(), - tslInfos); + final boolean qualifiedCertificate = checkQC; + + // add signature algorithm name in case of extended validation + String sigAlgName = null; + if (extendedVerification) { + sigAlgName = result.getSignatureAlgorithmName(); + + } + + // set code 99 if not certcheckresult exists + int certificateCheckCode = 99; + if (certResult != null) { + certificateCheckCode = certResult.getValidationResultCode().intValue(); + + // add SignerInfo element + signerInfo = + factory.createSignerInfo( + (X509Certificate) certResult.getCertificateChain().get(0), + qualifiedCertificate, + qcSourceTSL, + certResult.isPublicAuthorityCertificate(), + certResult.getPublicAuthorityID(), + checkSSCD, + sscdSourceTSL, + issuerCountryCode, + result.getSigningTime(), + tslInfos); + } // add SignatureCheck element signatureCheck = factory.createCheckResult(signatureCheckCode, null); // add CertificateCheck element certificateCheck = factory.createCheckResult(certificateCheckCode, null); - + // build the response element responseElement = - factory.createVerifyCMSSignatureResponseElement( - signerInfo, - signatureCheck, - certificateCheck, - adesResults, - extendedCertificateCheckResult); + factory.createVerifyCMSSignatureResponseElement( + signerInfo, + signatureCheck, + certificateCheck, + adesResults, + extendedCertificateCheckResult, + sigAlgName, + null, + null); responseElements.add(responseElement); } - + /** - * Add a verification result to the response. * - * @param result The result to add. - * @param trustprofile The actual trustprofile - * @param checkQCFromTSL <code>true</code>, if the TSL check verifies the - * certificate as qualified, otherwise <code>false</code>. - * @param checkSSCD <code>true</code>, if the TSL check verifies the - * signature based on a SSDC, otherwise <code>false</code>. - * @param sscdSourceTSL <code>true</code>, if the SSCD information comes from the TSL, - * otherwise <code>false</code>. - * @throws MOAException + * @param result + * @param trustProfile + * @param checkQC + * @param qcSourceTSL + * @param checkSSCD + * @param sscdSourceTSL + * @param issuerCountryCode + * @param adesResults + * @param extendedCertificateCheckResult + * @param tslInfos + * @param extendedVerification + * @throws MOAException */ - public void addResult(PDFSignatureVerificationResult result, TrustProfile trustProfile, boolean checkQC, boolean qcSourceTSL, boolean checkSSCD, boolean sscdSourceTSL, String issuerCountryCode, List adesResults, - ExtendedCertificateCheckResult extendedCertificateCheckResult, TslInfos tslInfos) - throws MOAException { - - CertificateValidationResult certResult = - result.getCertificateValidationResult(); - int signatureCheckCode = - result.getSignatureValueVerificationCode().intValue(); - + public void addResult(PDFSignatureVerificationResult result, TrustProfile trustProfile, boolean checkQC, + boolean qcSourceTSL, boolean checkSSCD, boolean sscdSourceTSL, String issuerCountryCode, + List adesResults, + ExtendedCertificateCheckResult extendedCertificateCheckResult, TslInfos tslInfos, + boolean extendedVerification) + throws MOAException { + + final CertificateValidationResult certResult = + result.getCertificateValidationResult(); + final int signatureCheckCode = + result.getSignatureValueVerificationCode().intValue(); + VerifyCMSSignatureResponseElement responseElement; SignerInfo signerInfo = null; CheckResult signatureCheck; CheckResult certificateCheck; - boolean qualifiedCertificate = checkQC; - - //set code 99 if not certcheckresult exists + final boolean qualifiedCertificate = checkQC; + + // add signature algorithm name in case of extended validation + String sigAlgName = null; + Boolean coversFullDoc = null; + int[] sigByteRange = null; + + if (extendedVerification) { + sigAlgName = result.getSignatureAlgorithmName(); + coversFullDoc = result.byteRangeCoversWholeDocument(); + sigByteRange = result.getByteRange(); + + } + + // set code 99 if not certcheckresult exists int certificateCheckCode = 99; if (certResult != null) { - certificateCheckCode = certResult.getValidationResultCode().intValue(); - - // add SignerInfo element - signerInfo = - factory.createSignerInfo( - (X509Certificate) certResult.getCertificateChain().get(0), - qualifiedCertificate, - qcSourceTSL, - certResult.isPublicAuthorityCertificate(), - certResult.getPublicAuthorityID(), - checkSSCD, - sscdSourceTSL, - issuerCountryCode, - result.getSigningTime(), - tslInfos); + certificateCheckCode = certResult.getValidationResultCode().intValue(); + + // add SignerInfo element + signerInfo = + factory.createSignerInfo( + (X509Certificate) certResult.getCertificateChain().get(0), + qualifiedCertificate, + qcSourceTSL, + certResult.isPublicAuthorityCertificate(), + certResult.getPublicAuthorityID(), + checkSSCD, + sscdSourceTSL, + issuerCountryCode, + result.getSigningTime(), + tslInfos); } // add SignatureCheck element @@ -184,15 +220,18 @@ public class VerifyCMSSignatureResponseBuilder { // add CertificateCheck element certificateCheck = factory.createCheckResult(certificateCheckCode, null); - + // build the response element responseElement = - factory.createVerifyCMSSignatureResponseElement( - signerInfo, - signatureCheck, - certificateCheck, - adesResults, - extendedCertificateCheckResult); + factory.createVerifyCMSSignatureResponseElement( + signerInfo, + signatureCheck, + certificateCheck, + adesResults, + extendedCertificateCheckResult, + sigAlgName, + coversFullDoc, + sigByteRange); responseElements.add(responseElement); } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/VerifyXMLSignatureResponseBuilder.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/VerifyXMLSignatureResponseBuilder.java index d8ebd85..7e882ed 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/VerifyXMLSignatureResponseBuilder.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/VerifyXMLSignatureResponseBuilder.java @@ -21,16 +21,15 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.server.invoke; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.InputStream; import java.util.ArrayList; +import java.util.Date; import java.util.Iterator; import java.util.List; -import java.util.Date; import javax.xml.crypto.OctetStreamData; import javax.xml.crypto.dsig.CanonicalizationMethod; @@ -69,25 +68,28 @@ import iaik.server.modules.xmlverify.SecurityLayerManifest; import iaik.server.modules.xmlverify.XMLSignatureVerificationProfile; import iaik.server.modules.xmlverify.XMLSignatureVerificationResult; import iaik.x509.X509Certificate; -import iaik.xml.crypto.alg.transform.C14NTransformService; import iaik.xml.crypto.dsig.CanonicalizationMethodImpl; /** * A class to build a <code>VerifyXMLSignatureResponse</code> object. - * - * <p>Via a call to <code>addResult()</code> the only result of the - * signature verification must be added.</p> - * - * <p>The <code>getResponseElement()</code> method then returns the - * <code>VerifyXMLSignatureResponse</code> built so far.</p> - * + * + * <p> + * Via a call to <code>addResult()</code> the only result of the signature + * verification must be added. + * </p> + * + * <p> + * The <code>getResponseElement()</code> method then returns the + * <code>VerifyXMLSignatureResponse</code> built so far. + * </p> + * * @author Patrick Peck * @version $Id$ */ public class VerifyXMLSignatureResponseBuilder { /** The <code>SPSSFactory</code> for creating API objects. */ - private SPSSFactory factory = SPSSFactory.getInstance(); + private final SPSSFactory factory = SPSSFactory.getInstance(); /** Information about the signer certificate. */ private SignerInfo signerInfo; @@ -106,205 +108,203 @@ public class VerifyXMLSignatureResponseBuilder { private List adesFormResults = null; private ExtendedCertificateCheckResult extCheckResult = null; private Date signingTime; + + private String signatureAlgorithm = null; + /** * Get the <code>VerifyMLSignatureResponse</code> built so far. - * + * * @return The <code>VerifyXMLSignatureResponse</code> built so far. */ public VerifyXMLSignatureResponse getResponse() { return factory.createVerifyXMLSignatureResponse( - signerInfo, - hashInputDatas, - referenceInputDatas, - signatureCheck, - signatureManifestCheck, - xmlDsigManifestChecks, - certificateCheck, - adesFormResults, - extCheckResult); + signerInfo, + hashInputDatas, + referenceInputDatas, + signatureCheck, + signatureManifestCheck, + xmlDsigManifestChecks, + certificateCheck, + adesFormResults, + extCheckResult, + signatureAlgorithm); } - + public void setExtendedCertificateCheckResult(ExtendedCertificateCheckResult extCheckResult) { - this.extCheckResult = extCheckResult; + this.extCheckResult = extCheckResult; } - + public void setAdESFormResults(List adesForm) { - this.adesFormResults = adesForm; + this.adesFormResults = adesForm; } /** * Sets the verification result to the response. - * + * * This method must be called exactly once to ensure a valid * <code>VerifyXMLSignatureResponse</code>. - * - * @param result The result to set for the response. - * @param profile The profile used for verifying the signature. - * @param transformsSignatureManifestCheck The overall result for the signature - * manifest check. - * @param certificateCheck The overall result for the certificate check. - * @param checkQC <code>true</code>, if the certificate is QC, otherwise <code>false</code>. - * @param qcSourceTSL <code>true</code>, if the QC information comes from the TSL, - * otherwise <code>false</code>. - * @param checkSSCD <code>true</code>, if the signature is created by an SSCD, otherwise <code>false</code>. - * @param sscdSourceTSL <code>true</code>, if the SSCD information comes from the TSL, - * otherwise <code>false</code>. + * + * @param result The result to set for the response. + * @param profile The profile used for verifying the + * signature. + * @param transformsSignatureManifestCheck The overall result for the signature + * manifest check. + * @param certificateCheck The overall result for the + * certificate check. + * @param checkQC <code>true</code>, if the certificate + * is QC, otherwise <code>false</code>. + * @param qcSourceTSL <code>true</code>, if the QC + * information comes from the TSL, + * otherwise <code>false</code>. + * @param checkSSCD <code>true</code>, if the signature + * is created by an SSCD, otherwise + * <code>false</code>. + * @param sscdSourceTSL <code>true</code>, if the SSCD + * information comes from the TSL, + * otherwise <code>false</code>. * @throws MOAApplicationException An error occurred adding the result. */ public void setResult( - XMLSignatureVerificationResult result, - XMLSignatureVerificationProfile profile, - ReferencesCheckResult transformsSignatureManifestCheck, - CheckResult certificateCheck, - boolean checkQC, - boolean qcSourceTSL, - boolean checkSSCD, - boolean sscdSourceTSL, - boolean isTSLEnabledTrustprofile, - String issuerCountryCode, - TslInfos tslInfos) - throws MOAApplicationException { - - CertificateValidationResult certResult = - result.getCertificateValidationResult(); + XMLSignatureVerificationResult result, + XMLSignatureVerificationProfile profile, + ReferencesCheckResult transformsSignatureManifestCheck, + CheckResult certificateCheck, + boolean checkQC, + boolean qcSourceTSL, + boolean checkSSCD, + boolean sscdSourceTSL, + boolean isTSLEnabledTrustprofile, + String issuerCountryCode, + TslInfos tslInfos, + boolean isExtendedValidation) + throws MOAApplicationException { + + final CertificateValidationResult certResult = + result.getCertificateValidationResult(); List referenceDataList; - ReferenceData referenceData; + final ReferenceData referenceData; List dsigManifestList; ReferencesCheckResultInfo checkResultInfo; int[] failedReferences; Iterator iter; boolean qualifiedCertificate = false; - + qualifiedCertificate = checkQC; - + + if (isExtendedValidation) { + signatureAlgorithm = result.getSignatureAlgorithmName(); + } + // create the SignerInfo; signerInfo = - factory.createSignerInfo( - (X509Certificate) certResult.getCertificateChain().get(0), - qualifiedCertificate, - qcSourceTSL, - certResult.isPublicAuthorityCertificate(), - certResult.getPublicAuthorityID(), - checkSSCD, - sscdSourceTSL, - issuerCountryCode, - result.getSigningTime(), - tslInfos); - + factory.createSignerInfo( + (X509Certificate) certResult.getCertificateChain().get(0), + qualifiedCertificate, + qcSourceTSL, + certResult.isPublicAuthorityCertificate(), + certResult.getPublicAuthorityID(), + checkSSCD, + sscdSourceTSL, + issuerCountryCode, + result.getSigningTime(), + tslInfos); + + // TODO: add hash algo. infos // Create HashInputData Content objects referenceDataList = result.getReferenceDataList(); if (profile.includeHashInputData()) { hashInputDatas = new ArrayList(); - + // Include SignedInfo references addHashInputDatas( - hashInputDatas, - referenceDataList, - InputData.CONTAINER_SIGNEDINFO_, - InputData.REFERER_NONE_); - + hashInputDatas, + referenceDataList, + InputData.CONTAINER_SIGNEDINFO_, + InputData.REFERER_NONE_); + // Include XMLDSIGManifest references - List xMLDSIGManifests = result.getDsigManifestList(); - for (iter = xMLDSIGManifests.iterator(); iter.hasNext();) - { - DsigManifest currentMF = (DsigManifest) iter.next(); - List xMLDSIGMFReferenceDataList = currentMF.getReferenceDataList(); + final List xMLDSIGManifests = result.getDsigManifestList(); + for (iter = xMLDSIGManifests.iterator(); iter.hasNext();) { + final DsigManifest currentMF = (DsigManifest) iter.next(); + final List xMLDSIGMFReferenceDataList = currentMF.getReferenceDataList(); addHashInputDatas( - hashInputDatas, - xMLDSIGMFReferenceDataList, - InputData.CONTAINER_XMLDSIGMANIFEST_, - currentMF.getReferringReferenceInfo().getReferenceIndex()); + hashInputDatas, + xMLDSIGMFReferenceDataList, + InputData.CONTAINER_XMLDSIGMANIFEST_, + currentMF.getReferringReferenceInfo().getReferenceIndex()); } } // Create the ReferenceInputData Content objects if (profile.includeReferenceInputData()) { referenceInputDatas = new ArrayList(); - + // Include SignedInfo references addReferenceInputDatas( - referenceInputDatas, - referenceDataList, - InputData.CONTAINER_SIGNEDINFO_, - InputData.REFERER_NONE_); + referenceInputDatas, + referenceDataList, + InputData.CONTAINER_SIGNEDINFO_, + InputData.REFERER_NONE_); // Include XMLDSIGManifest references - List xMLDSIGManifests = result.getDsigManifestList(); - for (iter = xMLDSIGManifests.iterator(); iter.hasNext();) - { - DsigManifest currentMF = (DsigManifest) iter.next(); - List xMLDSIGMFReferenceDataList = currentMF.getReferenceDataList(); + final List xMLDSIGManifests = result.getDsigManifestList(); + for (iter = xMLDSIGManifests.iterator(); iter.hasNext();) { + final DsigManifest currentMF = (DsigManifest) iter.next(); + final List xMLDSIGMFReferenceDataList = currentMF.getReferenceDataList(); addReferenceInputDatas( - referenceInputDatas, - xMLDSIGMFReferenceDataList, - InputData.CONTAINER_XMLDSIGMANIFEST_, - currentMF.getReferringReferenceInfo().getReferenceIndex()); + referenceInputDatas, + xMLDSIGMFReferenceDataList, + InputData.CONTAINER_XMLDSIGMANIFEST_, + currentMF.getReferringReferenceInfo().getReferenceIndex()); } } // create the signature check failedReferences = buildFailedReferences(result.getReferenceDataList()); checkResultInfo = - failedReferences != null - ? factory.createReferencesCheckResultInfo(null, failedReferences) - : null; + failedReferences != null + ? factory.createReferencesCheckResultInfo(null, failedReferences) + : null; signatureCheck = - factory.createReferencesCheckResult( - result.getSignatureValueVerificationCode().intValue(), - checkResultInfo); + factory.createReferencesCheckResult( + result.getSignatureValueVerificationCode().intValue(), + checkResultInfo); // create the signature manifest check - if (profile.checkSecurityLayerManifest()) - { - if (transformsSignatureManifestCheck.getCode() == 1) - { + if (profile.checkSecurityLayerManifest()) { + if (transformsSignatureManifestCheck.getCode() == 1) { // checking the transforms failed signatureManifestCheck = transformsSignatureManifestCheck; - } - else if (result.isSecurityLayerManifestRequired()) - { - if (!result.containsSecurityLayerManifest()) - { + } else if (result.isSecurityLayerManifestRequired()) { + if (!result.containsSecurityLayerManifest()) { // required security layer manifest is missing in signature signatureManifestCheck = factory.createReferencesCheckResult(2, null); - } - else - { + } else { // security layer manifest exists, so we have to check its validity - SecurityLayerManifest slManifest = result.getSecurityLayerManifest(); - int verificationResult = slManifest.getManifestVerificationResult().intValue(); + final SecurityLayerManifest slManifest = result.getSecurityLayerManifest(); + final int verificationResult = slManifest.getManifestVerificationResult().intValue(); - if (SecurityLayerManifest.CODE_MANIFEST_VALID.intValue() == verificationResult) - { + if (SecurityLayerManifest.CODE_MANIFEST_VALID.intValue() == verificationResult) { // security layer manifest exists and is free of errors signatureManifestCheck = factory.createReferencesCheckResult(0, null); - } - else - { + } else { // security layer manifest exists, but has errors failedReferences = buildFailedReferences(slManifest.getReferenceDataList()); - checkResultInfo = (failedReferences != null) - ? factory.createReferencesCheckResultInfo(null, failedReferences) - : null; - if (SecurityLayerManifest.CODE_MANIFEST_INCOMPLETE.intValue() == verificationResult) - { - signatureManifestCheck = factory.createReferencesCheckResult(3, checkResultInfo); - } - else if (SecurityLayerManifest.CODE_REFERENCE_HASH_INVALID.intValue() == verificationResult) - { - signatureManifestCheck = factory.createReferencesCheckResult(4, checkResultInfo); - } - else - { + checkResultInfo = failedReferences != null + ? factory.createReferencesCheckResultInfo(null, failedReferences) + : null; + if (SecurityLayerManifest.CODE_MANIFEST_INCOMPLETE.intValue() == verificationResult) { + signatureManifestCheck = factory.createReferencesCheckResult(3, checkResultInfo); + } else if (SecurityLayerManifest.CODE_REFERENCE_HASH_INVALID.intValue() == verificationResult) { + signatureManifestCheck = factory.createReferencesCheckResult(4, checkResultInfo); + } else { // Should not happen throw new RuntimeException("Unexpected result from security layer manifest verification."); } } } - } - else - { + } else { // no security layer manifest is required, so the signature manifest check is ok signatureManifestCheck = factory.createReferencesCheckResult(0, null); } @@ -315,165 +315,181 @@ public class VerifyXMLSignatureResponseBuilder { xmlDsigManifestChecks = new ArrayList(); dsigManifestList = result.getDsigManifestList(); for (iter = dsigManifestList.iterator(); iter.hasNext();) { - DsigManifest dsigManifest = (DsigManifest) iter.next(); - int refIndex = - dsigManifest.getReferringReferenceInfo().getReferenceIndex(); + final DsigManifest dsigManifest = (DsigManifest) iter.next(); + final int refIndex = + dsigManifest.getReferringReferenceInfo().getReferenceIndex(); ManifestRefsCheckResultInfo manifestCheckResultInfo; failedReferences = - buildFailedReferences(dsigManifest.getReferenceDataList()); + buildFailedReferences(dsigManifest.getReferenceDataList()); manifestCheckResultInfo = - factory.createManifestRefsCheckResultInfo( - null, - failedReferences, - refIndex); + factory.createManifestRefsCheckResultInfo( + null, + failedReferences, + refIndex); xmlDsigManifestChecks.add( - factory.createManifestRefsCheckResult( - dsigManifest.getManifestVerificationResult().intValue(), - manifestCheckResultInfo)); + factory.createManifestRefsCheckResult( + dsigManifest.getManifestVerificationResult().intValue(), + manifestCheckResultInfo)); } } - // create the certificate check + // create the certificate check this.certificateCheck = certificateCheck; - + this.signingTime = result.getSigningTime(); - + } /** - * Adds {@link InputData} entries to the specified <code>inputDatas</code> list. The content of the entry will - * be created from {@link ReferenceData#getHashInputData()}. - * - * @param inputDatas The list to be amended. - * - * @param referenceDataList The list of {@link ReferenceData} objects to be investigated. - * - * @param containerType The type of container of the {@link InputData} objects to be created. - * - * @param refererNumber The number of the referring reference for the {@link InputData} objects to be created. - * - * @throws MOAApplicationException if creating an {@link InputData} fails. + * Adds {@link InputData} entries to the specified <code>inputDatas</code> list. + * The content of the entry will be created from + * {@link ReferenceData#getHashInputData()}. + * + * @param inputDatas The list to be amended. + * + * @param referenceDataList The list of {@link ReferenceData} objects to be + * investigated. + * + * @param containerType The type of container of the {@link InputData} + * objects to be created. + * + * @param refererNumber The number of the referring reference for the + * {@link InputData} objects to be created. + * + * @throws MOAApplicationException if creating an {@link InputData} fails. */ - private void addHashInputDatas(List inputDatas, List referenceDataList, String containerType, int refererNumber) - throws MOAApplicationException - { - for (Iterator iter = referenceDataList.iterator(); iter.hasNext();) - { - ReferenceData referenceData = (ReferenceData) iter.next(); + private void addHashInputDatas(List inputDatas, List referenceDataList, String containerType, + int refererNumber) + throws MOAApplicationException { + for (final Object element : referenceDataList) { + final ReferenceData referenceData = (ReferenceData) element; inputDatas.add(buildInputData( - referenceData.getHashInputData(), - containerType, - refererNumber)); + referenceData.getHashInputData(), + containerType, + refererNumber, + referenceData.getHashAlgorithmName())); } } - + /** - * Adds {@link InputData} entries to the specified <code>inputDatas</code> list. The content of the entry will - * be created from {@link ReferenceData#getReferenceInputData()}. - * - * @param inputDatas The list to be amended. - * - * @param referenceDataList The list of {@link ReferenceData} objects to be investigated. - * - * @param containerType The type of container of the {@link InputData} objects to be created. - * - * @param refererNumber The number of the referring reference for the {@link InputData} objects to be created. - * - * @throws MOAApplicationException if creating an {@link InputData} fails. + * Adds {@link InputData} entries to the specified <code>inputDatas</code> list. + * The content of the entry will be created from + * {@link ReferenceData#getReferenceInputData()}. + * + * @param inputDatas The list to be amended. + * + * @param referenceDataList The list of {@link ReferenceData} objects to be + * investigated. + * + * @param containerType The type of container of the {@link InputData} + * objects to be created. + * + * @param refererNumber The number of the referring reference for the + * {@link InputData} objects to be created. + * + * @throws MOAApplicationException if creating an {@link InputData} fails. */ - private void addReferenceInputDatas(List inputDatas, List referenceDataList, String containerType, int refererNumber) - throws MOAApplicationException - { - for (Iterator iter = referenceDataList.iterator(); iter.hasNext();) - { - ReferenceData referenceData = (ReferenceData) iter.next(); + private void addReferenceInputDatas(List inputDatas, List referenceDataList, String containerType, + int refererNumber) + throws MOAApplicationException { + for (final Object element : referenceDataList) { + final ReferenceData referenceData = (ReferenceData) element; inputDatas.add(buildInputData( - referenceData.getReferenceInputData(), - containerType, - refererNumber)); + referenceData.getReferenceInputData(), + containerType, + refererNumber, + referenceData.getHashAlgorithmName())); } } /** * Build a <code>InputDataBinaryImpl</code> or an <code>InputDataXMLImpl</code> * object from the given <code>DataObject</code> and the given attributes. - * - * @param dataObject The <code>DataObject</code> from which to build the result. - * Based on the type of this parameter, the type of the result will either be - * <code>InputDataBinaryImpl</code> or <code>InputDataXMLImpl</code>. - * - * @param partof see {@link InputData} - * + * + * @param dataObject The <code>DataObject</code> from which to + * build the result. Based on the type of this + * parameter, the type of the result will either + * be <code>InputDataBinaryImpl</code> or + * <code>InputDataXMLImpl</code>. + * + * @param partof see {@link InputData} + * * @param referringReferenceNumber see {@link InputData} - * + * + * @param hashAlg see {@link InputData} + * * @return The corresponinding input data implementation. - * * @throws MOAApplicationException An error occurred creating the result. */ - private Content buildInputData(DataObject dataObject, String partOf, int referringReferenceNumber) - throws MOAApplicationException { + private Content buildInputData(DataObject dataObject, String partOf, int referringReferenceNumber, + String hashAlg) + throws MOAApplicationException { if (dataObject instanceof BinaryDataObject) { - BinaryDataObject binaryData = (BinaryDataObject) dataObject; + final BinaryDataObject binaryData = (BinaryDataObject) dataObject; return new InputDataBinaryImpl( - factory.createContent(binaryData.getInputStream(), null), - partOf, - referringReferenceNumber); + factory.createContent(binaryData.getInputStream(), null), + partOf, + referringReferenceNumber, + hashAlg); } else if (dataObject instanceof XMLDataObject) { - XMLDataObject xmlData = (XMLDataObject) dataObject; - List nodes = new ArrayList(); + final XMLDataObject xmlData = (XMLDataObject) dataObject; + final List nodes = new ArrayList(); nodes.add(xmlData.getElement()); return new InputDataXMLImpl( - factory.createContent(new NodeListAdapter(nodes), null), - partOf, - referringReferenceNumber); + factory.createContent(new NodeListAdapter(nodes), null), + partOf, + referringReferenceNumber, + hashAlg); } else { // dataObject instanceof XMLNodeListDataObject // if the data in the NodeList can be converted back to valid XML, - // write it as XMLContent; otherwise, write it as Base64Content - XMLNodeListDataObject nodeData = (XMLNodeListDataObject) dataObject; - NodeList nodes = nodeData.getNodeList(); - + // write it as XMLContent; otherwise, write it as Base64Content + final XMLNodeListDataObject nodeData = (XMLNodeListDataObject) dataObject; + final NodeList nodes = nodeData.getNodeList(); + if (DOMUtils.checkAttributeParentsInNodeList(nodes)) { // insert as XMLContent try { - DocumentFragment fragment = DOMUtils.nodeList2DocumentFragment(nodes); + final DocumentFragment fragment = DOMUtils.nodeList2DocumentFragment(nodes); return new InputDataXMLImpl( - factory.createContent(fragment.getChildNodes(), null), - partOf, - referringReferenceNumber); - } catch (Exception e) { + factory.createContent(fragment.getChildNodes(), null), + partOf, + referringReferenceNumber, + hashAlg); + } catch (final Exception e) { // not successful -> fall through to the Base64Content } } - + // insert canonicalized NodeList as binary content try { - ByteArrayOutputStream baos = new ByteArrayOutputStream(); - for(int i = 0; i < nodes.getLength(); i++) { - baos.write(DOMUtils.nodeToByteArray(nodes.item(i))); - } - baos.close(); - ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray()); - OctetStreamData inputData = new OctetStreamData(bais); - - CanonicalizationMethodImpl canonicalizationMethodImpl = new CanonicalizationMethodImpl( - CanonicalizationMethod.EXCLUSIVE_WITH_COMMENTS, new ExcC14NParameterSpec()); - OctetStreamData data = (OctetStreamData)canonicalizationMethodImpl.transform(inputData, null); - bais.close(); - //CanonicalizationAlgorithm c14n = - //new CanonicalizationAlgorithmImplExclusiveCanonicalXMLWithComments(); - InputStream is = data.getOctetStream(); - - //c14n.setInput(nodes); - //is = c14n.canonicalize(); + final ByteArrayOutputStream baos = new ByteArrayOutputStream(); + for (int i = 0; i < nodes.getLength(); i++) { + baos.write(DOMUtils.nodeToByteArray(nodes.item(i))); + } + baos.close(); + final ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray()); + final OctetStreamData inputData = new OctetStreamData(bais); + + final CanonicalizationMethodImpl canonicalizationMethodImpl = new CanonicalizationMethodImpl( + CanonicalizationMethod.EXCLUSIVE_WITH_COMMENTS, new ExcC14NParameterSpec()); + final OctetStreamData data = (OctetStreamData) canonicalizationMethodImpl.transform(inputData, null); + bais.close(); + // CanonicalizationAlgorithm c14n = + // new CanonicalizationAlgorithmImplExclusiveCanonicalXMLWithComments(); + final InputStream is = data.getOctetStream(); + + // c14n.setInput(nodes); + // is = c14n.canonicalize(); return new InputDataBinaryImpl( - factory.createContent(is, null), - partOf, - referringReferenceNumber); - } catch (Exception e) { + factory.createContent(is, null), + partOf, + referringReferenceNumber, + hashAlg); + } catch (final Exception e) { throw new MOAApplicationException("2200", null); } } @@ -481,27 +497,27 @@ public class VerifyXMLSignatureResponseBuilder { /** * Build the failed references. - * + * * Failed references are references for which the <code>isHashValid()</code> * method returns <code>false</code>. - * - * @param refInfos A <code>List</code> containing the - * <code>ReferenceInfo</code> objects to be checked. - * @return The indexes of the failed references. + * + * @param refInfos A <code>List</code> containing the <code>ReferenceInfo</code> + * objects to be checked. + * @return The indexes of the failed references. */ private int[] buildFailedReferences(List refInfos) { - List failedReferencesList = new ArrayList(); + final List failedReferencesList = new ArrayList(); int i; // find out the failed references for (i = 0; i < refInfos.size(); i++) { - ReferenceInfo refInfo = (ReferenceInfo) refInfos.get(i); + final ReferenceInfo refInfo = (ReferenceInfo) refInfos.get(i); try { if (refInfo.isHashCalculated() && !refInfo.isHashValid()) { failedReferencesList.add(new Integer(i + 1)); } - } catch (HashUnavailableException e) { + } catch (final HashUnavailableException e) { // nothing to do here because we called refInfo.isHashCalculated first } } @@ -510,7 +526,7 @@ public class VerifyXMLSignatureResponseBuilder { if (failedReferencesList.isEmpty()) { return null; } else { - int[] failedReferences = CollectionUtils.toIntArray(failedReferencesList); + final int[] failedReferences = CollectionUtils.toIntArray(failedReferencesList); return failedReferences; } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/XMLSignatureCreationInvoker.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/XMLSignatureCreationInvoker.java index ecdd811..e039cb9 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/XMLSignatureCreationInvoker.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/XMLSignatureCreationInvoker.java @@ -21,18 +21,8 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.server.invoke; -import iaik.server.modules.IAIKException; -import iaik.server.modules.IAIKRuntimeException; -import iaik.server.modules.xml.DataObject; -import iaik.server.modules.xml.XMLDataObject; -import iaik.server.modules.xml.XMLSignature; -import iaik.server.modules.xmlsign.XMLSignatureCreationModule; -import iaik.server.modules.xmlsign.XMLSignatureCreationModuleFactory; -import iaik.server.modules.xmlsign.XMLSignatureCreationProfile; - import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; @@ -71,17 +61,25 @@ import at.gv.egovernment.moaspss.logging.LoggingContext; import at.gv.egovernment.moaspss.logging.LoggingContextManager; import at.gv.egovernment.moaspss.util.Constants; import at.gv.egovernment.moaspss.util.XPathUtils; +import iaik.server.modules.IAIKException; +import iaik.server.modules.IAIKRuntimeException; +import iaik.server.modules.xml.DataObject; +import iaik.server.modules.xml.XMLDataObject; +import iaik.server.modules.xml.XMLSignature; +import iaik.server.modules.xmlsign.XMLSignatureCreationModule; +import iaik.server.modules.xmlsign.XMLSignatureCreationModuleFactory; +import iaik.server.modules.xmlsign.XMLSignatureCreationProfile; /** * A class providing an API based interface to the * <code>XMLSignatureCreationModule</code>. - * - * This class performs the invocation of the + * + * This class performs the invocation of the * <code>iaik.server.modules.xmlsign.XMLSignatureCreationModule</code> from a * <code>CreateXMLSignatureRequest</code> given as an API object. The result of * the invocation is integrated into a <code>CreateXMLSignatureResponse</code> * and returned. - * + * * @author Patrick Peck * @version $Id$ */ @@ -92,7 +90,7 @@ public class XMLSignatureCreationInvoker { /** * Get the only instance of this class. - * + * * @return The only instance of this class. */ public static synchronized XMLSignatureCreationInvoker getInstance() { @@ -104,7 +102,7 @@ public class XMLSignatureCreationInvoker { /** * Create a new <code>XMLSignatureCreationInvoker</code>. - * + * * Protected to disallow multiple instances. */ protected XMLSignatureCreationInvoker() { @@ -114,31 +112,31 @@ public class XMLSignatureCreationInvoker { * Process the <code>CreateXMLSignatureRequest<code> message and invoke the * <code>XMLSignatureCreationModule</code> for every * <code>SingleSignatureInfo</code> contained in the request. - * + * * @param request A <code>CreateXMLSignatureRequest<code> API object * containing the information for creating the signature(s). - * @param reserved A <code>Set</code> of reserved object IDs. - * - * @return A <code>CreateXMLSignatureResponse</code> API object containing - * the created signature(s). The response contains either a - * <code>SignatureEnvironment</code> or a <code>ErrorResponse</code> - * for each <code>SingleSignatureInfo</code> in the request. - * @throws MOAException An error occurred during signature creation. + * @param reserved A <code>Set</code> of reserved object IDs. + * + * @return A <code>CreateXMLSignatureResponse</code> API object containing the + * created signature(s). The response contains either a + * <code>SignatureEnvironment</code> or a <code>ErrorResponse</code> for + * each <code>SingleSignatureInfo</code> in the request. + * @throws MOAException An error occurred during signature creation. */ public CreateXMLSignatureResponse createXMLSignature( - CreateXMLSignatureRequest request, - Set reserved) - throws MOAException { - - TransactionContext context = - TransactionContextManager.getInstance().getTransactionContext(); - LoggingContext loggingCtx = - LoggingContextManager.getInstance().getLoggingContext(); + CreateXMLSignatureRequest request, + Set reserved) + throws MOAException { + + final TransactionContext context = + TransactionContextManager.getInstance().getTransactionContext(); + final LoggingContext loggingCtx = + LoggingContextManager.getInstance().getLoggingContext(); reserved = new HashSet(reserved); - XMLSignatureCreationProfileFactory profileFactory = - new XMLSignatureCreationProfileFactory(request, reserved); - CreateXMLSignatureResponseBuilder responseBuilder = - new CreateXMLSignatureResponseBuilder(); + final XMLSignatureCreationProfileFactory profileFactory = + new XMLSignatureCreationProfileFactory(request, reserved); + final CreateXMLSignatureResponseBuilder responseBuilder = + new CreateXMLSignatureResponseBuilder(); int createCount = 1; IdGenerator refIdGen; XMLSignatureCreationModule module; @@ -153,8 +151,8 @@ public class XMLSignatureCreationInvoker { // iterate over all the SingleSignatureInfo elements in the request while (singleSignatureInfoIter.hasNext()) { - SingleSignatureInfo singleSignatureInfo = - (SingleSignatureInfo) singleSignatureInfoIter.next(); + final SingleSignatureInfo singleSignatureInfo = + (SingleSignatureInfo) singleSignatureInfoIter.next(); CreateSignatureInfo createSignatureInfo; List dataObjectList; XMLSignatureCreationProfile profile; @@ -170,44 +168,47 @@ public class XMLSignatureCreationInvoker { // build the signature environment createSignatureInfo = singleSignatureInfo.getCreateSignatureInfo(); if (createSignatureInfo != null) { - DataObjectFactory dataObjFactory = DataObjectFactory.getInstance(); + final DataObjectFactory dataObjFactory = DataObjectFactory.getInstance(); signatureEnvironment = - dataObjFactory.createSignatureEnvironment( - createSignatureInfo.getCreateSignatureEnvironment(), - getCreateSignatureEnvironmentProfileSupplements(singleSignatureInfo)); + dataObjFactory.createSignatureEnvironment( + createSignatureInfo.getCreateSignatureEnvironment(), + getCreateSignatureEnvironmentProfileSupplements(singleSignatureInfo)); } else { signatureEnvironment = null; } - - HashSet sigInfoReservedIDs = new HashSet(); - if (signatureEnvironment != null) - { + + final HashSet sigInfoReservedIDs = new HashSet(); + if (signatureEnvironment != null) { // Find Id attributes of existing XML signatures in signature environment - HashMap nSMap = new HashMap(); - String dsp = Constants.DSIG_PREFIX; - nSMap.put(dsp, Constants.DSIG_NS_URI); - String xPathExpr = "//" + dsp + ":Signature/@Id | //" + dsp + ":Reference/@Id | //" - + dsp + ":Object/@Id | //" + dsp + ":Manifest/@Id"; - NodeList idAttrs = XPathUtils.selectNodeList(signatureEnvironment.getElement(), nSMap, xPathExpr); - - // Add found Id attributes to set of reserved IDs - for (int i = 0; i < idAttrs.getLength(); i++) sigInfoReservedIDs.add(idAttrs.item(i).getNodeValue()); + final HashMap nSMap = new HashMap(); + final String dsp = Constants.DSIG_PREFIX; + nSMap.put(dsp, Constants.DSIG_NS_URI); + final String xPathExpr = "//" + dsp + ":Signature/@Id | //" + dsp + ":Reference/@Id | //" + + dsp + ":Object/@Id | //" + dsp + ":Manifest/@Id"; + final NodeList idAttrs = XPathUtils.selectNodeList(signatureEnvironment.getElement(), nSMap, + xPathExpr); + + // Add found Id attributes to set of reserved IDs + for (int i = 0; i < idAttrs.getLength(); i++) { + sigInfoReservedIDs.add(idAttrs.item(i).getNodeValue()); + } } // create the reference id generator - HashSet allReservedIDs = new HashSet(reserved); + final HashSet allReservedIDs = new HashSet(reserved); allReservedIDs.addAll(sigInfoReservedIDs); refIdGen = new IdGenerator("reference-" + createCount++, allReservedIDs); // build the list of DataObjects - List createTransformsProfiles = profileFactory.getCreateTransformsInfoProfiles(singleSignatureInfo); + final List createTransformsProfiles = profileFactory.getCreateTransformsInfoProfiles( + singleSignatureInfo); dataObjectList = - buildDataObjectList( - singleSignatureInfo, - createTransformsProfiles, - signatureEnvironment, - refIdGen); + buildDataObjectList( + singleSignatureInfo, + createTransformsProfiles, + signatureEnvironment, + refIdGen); // build the XMLSignatureCreationProfile profile = profileFactory.createProfile(singleSignatureInfo, sigInfoReservedIDs); @@ -218,78 +219,78 @@ public class XMLSignatureCreationInvoker { // build the signatureParentElement if (signatureEnvironment != null) { signatureParent = - buildSignatureParentElement( - signatureEnvironment.getElement(), - singleSignatureInfo); + buildSignatureParentElement( + signatureEnvironment.getElement(), + singleSignatureInfo); } else { signatureParent = null; } - // make the signature environment the root of the document, if it is - // not a separate document anyway; this is done to assure that - // canonicalization of the signature environment contains the correct + // make the signature environment the root of the document, if it is + // not a separate document anyway; this is done to assure that + // canonicalization of the signature environment contains the correct // namespace declarations if (signatureEnvironment != null) { - Document requestDoc = - signatureEnvironment.getElement().getOwnerDocument(); + final Document requestDoc = + signatureEnvironment.getElement().getOwnerDocument(); requestElement = requestDoc.getDocumentElement(); if (requestElement != signatureEnvironment.getElement()) { signatureEnvironmentParent = - signatureEnvironment.getElement().getParentNode(); + signatureEnvironment.getElement().getParentNode(); requestElement.getOwnerDocument().replaceChild( - signatureEnvironment.getElement(), - requestElement); + signatureEnvironment.getElement(), + requestElement); } } try { - ConfigurationProvider config = context.getConfiguration(); - String xadesVersion = config.getXAdESVersion(); - - if (xadesVersion!= null && xadesVersion.compareTo(XMLSignatureCreationModule.XADES_VERSION_1_4_2) == 0) { - // create the signature (XAdES 1.4.2) - signature = - module.createSignature( + final ConfigurationProvider config = context.getConfiguration(); + final String xadesVersion = config.getXAdESVersion(); + + if (xadesVersion != null && xadesVersion.compareTo( + XMLSignatureCreationModule.XADES_VERSION_1_4_2) == 0) { + // create the signature (XAdES 1.4.2) + signature = + module.createSignature( dataObjectList, profile, additionalSignedProperties, signatureParent, XMLSignatureCreationModule.XADES_VERSION_1_4_2, new TransactionId(context.getTransactionID())); - } - else { - // create the signature (XAdES 1.1.1 = default) - signature = - module.createSignature( + } else { + // create the signature (XAdES 1.1.1 = default) + signature = + module.createSignature( dataObjectList, profile, additionalSignedProperties, signatureParent, XMLSignatureCreationModule.XADES_VERSION_1_1_1, new TransactionId(context.getTransactionID())); - } + } // insert the result into the response if (signatureParent != null) { responseBuilder.addSignatureEnvironment( - signatureEnvironment.getElement()); + signatureEnvironment.getElement()); } else { responseBuilder.addSignatureEnvironment(signature.getElement()); } - } catch (IAIKException e) { - MOAException moaException = IaikExceptionMapper.getInstance().map(e); + } catch (final IAIKException e) { + final MOAException moaException = IaikExceptionMapper.getInstance().map(e); responseBuilder.addError( - moaException.getMessageId(), - moaException.getMessage()); + moaException.getMessageId(), + moaException.getMessage()); Logger.warn(moaException.getMessage(), e); - } catch (IAIKRuntimeException e) { - MOAException moaException = IaikExceptionMapper.getInstance().map(e); + } catch (final IAIKRuntimeException e) { + final MOAException moaException = IaikExceptionMapper.getInstance().map(e); responseBuilder.addError( - moaException.getMessageId(), - moaException.getMessage()); + moaException.getMessageId(), + moaException.getMessage()); Logger.warn(moaException.getMessage(), e); } @@ -297,14 +298,14 @@ public class XMLSignatureCreationInvoker { if (signatureEnvironment != null) { if (requestElement != signatureEnvironment.getElement()) { requestElement.getOwnerDocument().replaceChild( - requestElement, - signatureEnvironment.getElement()); + requestElement, + signatureEnvironment.getElement()); signatureEnvironmentParent.appendChild( - signatureEnvironment.getElement()); + signatureEnvironment.getElement()); } } - } catch (MOAException e) { + } catch (final MOAException e) { responseBuilder.addError(e.getMessageId(), e.getMessage()); Logger.warn(e.getMessage(), e); } @@ -317,85 +318,88 @@ public class XMLSignatureCreationInvoker { /** * Build the list of <code>DataObject</code>s from the given * <code>SingleSignatureInfo</code> object. - * + * * <p> - * Only the following cases of <code>DataObject</code>s are - * valid in case of an enveloping signature: - * + * Only the following cases of <code>DataObject</code>s are valid in case of an + * enveloping signature: + * * <ul> - * <li><code>Reference == null && Content != null</code>: The + * <li><code>Reference == null && Content != null</code>: The * <code>Content</code> will be used in the <code>DataObject</code>.</li> * <li><code>Reference != null && Content == null</code>: Resolve the - * <code>Reference</code> and use it as <code>DataObject</code>. - * Set the <code>Reference</code> in the <code>DataObject</code> as well.</li> + * <code>Reference</code> and use it as <code>DataObject</code>. Set the + * <code>Reference</code> in the <code>DataObject</code> as well.</li> * </ul> * </p> - * + * * <p> - * Only the following cases of <code>DataObject</code>s are valid in case - * of a detached signature: - * + * Only the following cases of <code>DataObject</code>s are valid in case of a + * detached signature: + * * <ul> * <li><code>Reference != null && Content == null</code>: Resolve the - * <code>Reference</code> and use it as <code>DataObject</code>. - * Set the <code>Reference</code> in the <code>DataObject</code> as well.</li> + * <code>Reference</code> and use it as <code>DataObject</code>. Set the + * <code>Reference</code> in the <code>DataObject</code> as well.</li> * <li><code>Reference != null && Content != null</code>: The - * <code>Content</code> will be used in the <code>DataObject</code>. - * Set the <code>Reference</code> in the <code>DataObject</code> as well.</li> + * <code>Content</code> will be used in the <code>DataObject</code>. Set the + * <code>Reference</code> in the <code>DataObject</code> as well.</li> * </ul> * </p> - * + * * <p> * All other cases will lead to an error. * </p> - * - * @param singleSignatureInfo The <code>SingleSignatureInfo</code> object - * containing the <code>DataObjectInfo</code> objects. - * @param createTransformsProfiles A list of objects of type {@link CreateTransformsInfoProfileExplicit}, - * each representing the transforms info profile information for the corresponding <code>DataObject</code>. - * @param signatureEnvironment The - * @param idGen The ID generator for <code>DataObject</code> references. + * + * @param singleSignatureInfo The <code>SingleSignatureInfo</code> object + * containing the <code>DataObjectInfo</code> + * objects. + * @param createTransformsProfiles A list of objects of type + * {@link CreateTransformsInfoProfileExplicit}, + * each representing the transforms info profile + * information for the corresponding + * <code>DataObject</code>. + * @param signatureEnvironment The + * @param idGen The ID generator for <code>DataObject</code> + * references. * @return The <code>List</code> of <code>DataObject</code>s contained in the - * given <code>singleSignatureInfo</code>. - * @throws MOASystemException A system error occurred building the data - * objects. - * @throws MOAApplicationException An error occurred building the data - * objects. + * given <code>singleSignatureInfo</code>. + * @throws MOASystemException A system error occurred building the data + * objects. + * @throws MOAApplicationException An error occurred building the data objects. */ private List buildDataObjectList( - SingleSignatureInfo singleSignatureInfo, - List createTransformsProfiles, - XMLDataObject signatureEnvironment, - IdGenerator idGen) - throws MOASystemException, MOAApplicationException { - - List dataObjInfos = singleSignatureInfo.getDataObjectInfos(); - List dataObjects = new ArrayList(); + SingleSignatureInfo singleSignatureInfo, + List createTransformsProfiles, + XMLDataObject signatureEnvironment, + IdGenerator idGen) + throws MOASystemException, MOAApplicationException { + + final List dataObjInfos = singleSignatureInfo.getDataObjectInfos(); + final List dataObjects = new ArrayList(); Iterator dtIter; - Iterator ctpIter = createTransformsProfiles.iterator(); + final Iterator ctpIter = createTransformsProfiles.iterator(); - for (dtIter = dataObjInfos.iterator(); dtIter.hasNext();) - { - DataObjectInfo dataObjInfo = (DataObjectInfo) dtIter.next(); - String structure = dataObjInfo.getStructure(); - - CreateTransformsInfoProfileExplicit transformsProfile = - (CreateTransformsInfoProfileExplicit) ctpIter.next(); - MetaInfo finalDataMetaInfo = transformsProfile.getCreateTransformsInfo().getFinalDataMetaInfo(); + for (dtIter = dataObjInfos.iterator(); dtIter.hasNext();) { + final DataObjectInfo dataObjInfo = (DataObjectInfo) dtIter.next(); + final String structure = dataObjInfo.getStructure(); + + final CreateTransformsInfoProfileExplicit transformsProfile = + (CreateTransformsInfoProfileExplicit) ctpIter.next(); + final MetaInfo finalDataMetaInfo = transformsProfile.getCreateTransformsInfo().getFinalDataMetaInfo(); if (DataObjectInfo.STRUCTURE_ENVELOPING.equals(structure)) { dataObjects.add( - buildEnvelopingDataObject( - dataObjInfo.getDataObject(), - finalDataMetaInfo, - idGen.uniqueId())); + buildEnvelopingDataObject( + dataObjInfo.getDataObject(), + finalDataMetaInfo, + idGen.uniqueId())); } else if (DataObjectInfo.STRUCTURE_DETACHED.equals(structure)) { dataObjects.add( - buildDetachedDataObject( - dataObjInfo.getDataObject(), - finalDataMetaInfo, - signatureEnvironment, - idGen.uniqueId())); + buildDetachedDataObject( + dataObjInfo.getDataObject(), + finalDataMetaInfo, + signatureEnvironment, + idGen.uniqueId())); } else { throw new MOAApplicationException("1103", new Object[] { structure }); } @@ -406,126 +410,128 @@ public class XMLSignatureCreationInvoker { } /** - * Build a <code>DataObject</code> to be used in an enveloping - * signature. - * - * @param content The <code>Content</code> object containing the data object. - * <code>ContentOptionalRefType</code>. - * @param finalDataMetaInfo The meta information corresponding with <code>content</code>. - * @param referenceID The reference ID to use in the signature for the - * <code>DataObject</code> created. + * Build a <code>DataObject</code> to be used in an enveloping signature. + * + * @param content The <code>Content</code> object containing the data + * object. <code>ContentOptionalRefType</code>. + * @param finalDataMetaInfo The meta information corresponding with + * <code>content</code>. + * @param referenceID The reference ID to use in the signature for the + * <code>DataObject</code> created. * @return The <code>DataObject</code> representing the data contained in - * <code>dataObjectElem</code>. - * @throws MOAApplicationException An error occurred during the creation of - * the <code>DataObject</code>. - * @throws MOASystemException A system error occurred during the creation of - * the <code>DataObject</code>. + * <code>dataObjectElem</code>. + * @throws MOAApplicationException An error occurred during the creation of the + * <code>DataObject</code>. + * @throws MOASystemException A system error occurred during the creation + * of the <code>DataObject</code>. */ private DataObject buildEnvelopingDataObject( - Content content, - MetaInfo finalDataMetaInfo, - String referenceID) - throws MOASystemException, MOAApplicationException { + Content content, + MetaInfo finalDataMetaInfo, + String referenceID) + throws MOASystemException, MOAApplicationException { - DataObjectFactory factory = DataObjectFactory.getInstance(); + final DataObjectFactory factory = DataObjectFactory.getInstance(); DataObject dataObject; dataObject = - factory.createFromContentOptionalRefType( - content, - finalDataMetaInfo, - referenceID, - false, - false, - true, - false); + factory.createFromContentOptionalRefType( + content, + finalDataMetaInfo, + referenceID, + false, + false, + true, + false); return dataObject; } /** * Build a <code>DataObject</code> to be used in a detached signature. - * - * @param content The <code>Content</code> object containing an the data. - * @param finalDataMetaInfo The meta information corresponding with <code>content</code>. + * + * @param content The <code>Content</code> object containing an the + * data. + * @param finalDataMetaInfo The meta information corresponding with + * <code>content</code>. * @param signatureEnvironment The signature environment where the signature - * will be inserted. - * @param referenceID The reference ID to use in the signature for the - * <code>DataObject</code> created. + * will be inserted. + * @param referenceID The reference ID to use in the signature for the + * <code>DataObject</code> created. * @return The <code>DataObject</code> representing the data contained in - * <code>dataObjectElem</code>. - * @throws MOAApplicationException An error occurred during the creation of - * the <code>DataObject</code>. - * @throws MOASystemException A system error occurred during the creation of - * the <code>DataObject</code>. + * <code>dataObjectElem</code>. + * @throws MOAApplicationException An error occurred during the creation of the + * <code>DataObject</code>. + * @throws MOASystemException A system error occurred during the creation + * of the <code>DataObject</code>. */ private DataObject buildDetachedDataObject( - Content content, - MetaInfo finalDataMetaInfo, - XMLDataObject signatureEnvironment, - String referenceID) - throws MOASystemException, MOAApplicationException { - - String reference = content.getReference(); - DataObjectFactory factory = DataObjectFactory.getInstance(); + Content content, + MetaInfo finalDataMetaInfo, + XMLDataObject signatureEnvironment, + String referenceID) + throws MOASystemException, MOAApplicationException { + + final String reference = content.getReference(); + final DataObjectFactory factory = DataObjectFactory.getInstance(); DataObject dataObject; if (reference == null) { throw new MOAApplicationException("1102", null); } else if ("".equals(reference) || reference.startsWith("#")) { dataObject = - factory.createFromSignatureEnvironment( - signatureEnvironment.getElement(), - reference, - referenceID); + factory.createFromSignatureEnvironment( + signatureEnvironment.getElement(), + reference, + referenceID); } else { dataObject = - factory.createFromContentOptionalRefType( - content, - finalDataMetaInfo, - referenceID, - true, - false, - true, - false); + factory.createFromContentOptionalRefType( + content, + finalDataMetaInfo, + referenceID, + true, + false, + true, + false); } return dataObject; } /** * Build the signature parent element. - * - * @param signatureEnvironment The signature environment containing the - * document in which to insert the signature. - * @param singleSignatureInfo The <code>SingleSignatureInfo</code> - * containing the signature parent element. - * @return An <code>XMLDataObject</code> containing the signature parent - * element or <code>null</code>, if the <code>CreateSignatureInfo</code> is - * <code>null</code>. - * @throws MOAApplicationException An error occurred during the creation of - * the signature parent. + * + * @param signatureEnvironment The signature environment containing the document + * in which to insert the signature. + * @param singleSignatureInfo The <code>SingleSignatureInfo</code> containing + * the signature parent element. + * @return An <code>XMLDataObject</code> containing the signature parent element + * or <code>null</code>, if the <code>CreateSignatureInfo</code> is + * <code>null</code>. + * @throws MOAApplicationException An error occurred during the creation of the + * signature parent. */ private XMLDataObject buildSignatureParentElement( - Element signatureEnvironment, - SingleSignatureInfo singleSignatureInfo) - throws MOAApplicationException { + Element signatureEnvironment, + SingleSignatureInfo singleSignatureInfo) + throws MOAApplicationException { - CreateSignatureInfo createInfo = - singleSignatureInfo.getCreateSignatureInfo(); + final CreateSignatureInfo createInfo = + singleSignatureInfo.getCreateSignatureInfo(); // evaluate the CreateSignatureLocation if (createInfo != null) { - TransactionContext context = - TransactionContextManager.getInstance().getTransactionContext(); - ConfigurationProvider config = context.getConfiguration(); - CreateSignatureEnvironmentProfileExplicit createProfile = - ProfileMapper.mapCreateSignatureEnvironmentProfile( - createInfo.getCreateSignatureEnvironmentProfile(), - config); - CreateSignatureLocation location = - createProfile.getCreateSignatureLocation(); - Element signatureParent = - InvokerUtils.evaluateSignatureLocation(signatureEnvironment, location); + final TransactionContext context = + TransactionContextManager.getInstance().getTransactionContext(); + final ConfigurationProvider config = context.getConfiguration(); + final CreateSignatureEnvironmentProfileExplicit createProfile = + ProfileMapper.mapCreateSignatureEnvironmentProfile( + createInfo.getCreateSignatureEnvironmentProfile(), + config); + final CreateSignatureLocation location = + createProfile.getCreateSignatureLocation(); + final Element signatureParent = + InvokerUtils.evaluateSignatureLocation(signatureEnvironment, location); return new XMLDataObjectImpl(signatureParent); } else { @@ -534,31 +540,31 @@ public class XMLSignatureCreationInvoker { } /** - * Get the supplements contained in the - * <code>CreateSignatureEnvironmentProfile</code> of the given + * Get the supplements contained in the + * <code>CreateSignatureEnvironmentProfile</code> of the given * <code>SingleSignatureInfo</code>. - * - * @param singleSigInfo The <code>SingleSignatureInfo</code> from which - * to extract the supplements. - * @return A <code>List</code> of <code>XMLDataObjectAssociation</code>s - * or <code>null</code>, if the <code>singleSigInfo</code> does not contain - * supplements. - * @throws MOAApplicationException An error occurred parsing the - * <code>CreateSignatureEnvironmentProfile</code>. + * + * @param singleSigInfo The <code>SingleSignatureInfo</code> from which to + * extract the supplements. + * @return A <code>List</code> of <code>XMLDataObjectAssociation</code>s or + * <code>null</code>, if the <code>singleSigInfo</code> does not contain + * supplements. + * @throws MOAApplicationException An error occurred parsing the + * <code>CreateSignatureEnvironmentProfile</code>. */ private List getCreateSignatureEnvironmentProfileSupplements(SingleSignatureInfo singleSigInfo) - throws MOAApplicationException { - CreateSignatureInfo sigInfo = singleSigInfo.getCreateSignatureInfo(); + throws MOAApplicationException { + final CreateSignatureInfo sigInfo = singleSigInfo.getCreateSignatureInfo(); if (sigInfo != null) { - TransactionContext context = - TransactionContextManager.getInstance().getTransactionContext(); - ConfigurationProvider config = context.getConfiguration(); - CreateSignatureEnvironmentProfileExplicit profile = - ProfileMapper.mapCreateSignatureEnvironmentProfile( - sigInfo.getCreateSignatureEnvironmentProfile(), - config); - List supplements = profile.getSupplements(); + final TransactionContext context = + TransactionContextManager.getInstance().getTransactionContext(); + final ConfigurationProvider config = context.getConfiguration(); + final CreateSignatureEnvironmentProfileExplicit profile = + ProfileMapper.mapCreateSignatureEnvironmentProfile( + sigInfo.getCreateSignatureEnvironmentProfile(), + config); + final List supplements = profile.getSupplements(); return supplements; } @@ -567,18 +573,18 @@ public class XMLSignatureCreationInvoker { /** * Build the list of additional signed properties. - * + * * Based on the generic configuration setting - * <code>ConfigurationProvider.TEST_SIGNING_TIME_PROPERTY</code>, a - * constant <code>SigningTime</code> will be added to the properties. - * + * <code>ConfigurationProvider.TEST_SIGNING_TIME_PROPERTY</code>, a constant + * <code>SigningTime</code> will be added to the properties. + * * @return The <code>List</code> of additional signed properties. */ private List buildAdditionalSignedProperties() { - TransactionContext context = - TransactionContextManager.getInstance().getTransactionContext(); - ConfigurationProvider config = context.getConfiguration(); - List additionalSignedProperties = Collections.EMPTY_LIST; + final TransactionContext context = + TransactionContextManager.getInstance().getTransactionContext(); + final ConfigurationProvider config = context.getConfiguration(); + final List additionalSignedProperties = Collections.EMPTY_LIST; return additionalSignedProperties; } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/XMLSignatureCreationProfileFactory.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/XMLSignatureCreationProfileFactory.java index 32eab9e..c097b0c 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/XMLSignatureCreationProfileFactory.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/XMLSignatureCreationProfileFactory.java @@ -21,18 +21,8 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.server.invoke; -import iaik.server.modules.algorithms.HashAlgorithms; -import iaik.server.modules.keys.KeyEntryID; -import iaik.server.modules.keys.KeyModule; -import iaik.server.modules.keys.KeyModuleFactory; -import iaik.server.modules.xml.Canonicalization; -import iaik.server.modules.xmlsign.SignatureStructureTypes; -import iaik.server.modules.xmlsign.XMLSignatureCreationProfile; -import iaik.server.modules.xmlsign.XMLSignatureInsertionLocation; - import java.math.BigInteger; import java.security.Principal; import java.security.cert.X509Certificate; @@ -70,12 +60,20 @@ import at.gv.egovernment.moa.spss.util.MessageProvider; import at.gv.egovernment.moaspss.logging.LogMsg; import at.gv.egovernment.moaspss.logging.Logger; import at.gv.egovernment.moaspss.util.Constants; +import iaik.server.modules.algorithms.HashAlgorithms; +import iaik.server.modules.keys.KeyEntryID; +import iaik.server.modules.keys.KeyModule; +import iaik.server.modules.keys.KeyModuleFactory; +import iaik.server.modules.xml.Canonicalization; +import iaik.server.modules.xmlsign.SignatureStructureTypes; +import iaik.server.modules.xmlsign.XMLSignatureCreationProfile; +import iaik.server.modules.xmlsign.XMLSignatureInsertionLocation; /** * A factory to create <code>XMLSignatureCreationProfile</code>s from a * <code>CreateXMLSignatureRequest</code>, based on the current MOA * configuration. - * + * * @author Patrick Peck * @version $Id$ */ @@ -91,24 +89,25 @@ public class XMLSignatureCreationProfileFactory { HASH_ALGORITHM_MAPPING.put(Constants.SHA512_URI, HashAlgorithms.SHA512); } - /** The <code>CreateXMLSignatureRequest</code> for which to create the - * profile.*/ - private CreateXMLSignatureRequest request; + /** + * The <code>CreateXMLSignatureRequest</code> for which to create the profile. + */ + private final CreateXMLSignatureRequest request; /** How many profiles have been created based on the same request. */ private int createProfileCount; - /** The <code>Set</code> of reserved object IDs.*/ - private Set reserved; + /** The <code>Set</code> of reserved object IDs. */ + private final Set reserved; /** * Create a new <code>XMLSignatureCreationProfileFactory</code>. - * - * @param request The request for which to create profiles. - * @param reserved The <code>Set</code> of reserved object IDs. IDs will - * be added during signature creation. + * + * @param request The request for which to create profiles. + * @param reserved The <code>Set</code> of reserved object IDs. IDs will be + * added during signature creation. */ public XMLSignatureCreationProfileFactory( - CreateXMLSignatureRequest request, - Set reserved) { + CreateXMLSignatureRequest request, + Set reserved) { this.request = request; this.reserved = reserved; createProfileCount = 1; @@ -117,98 +116,98 @@ public class XMLSignatureCreationProfileFactory { /** * Create a <code>XMLSignatureCreationProfile</code> for the given * <code>SingleSignatureInfo</code> object.. - * + * * @param singleSignatureInfo The <code>SingleSignatureInfo</code> object - * containing information about the creation of a signature. - * @param sigInfoReservedIDs The <code>Set</code> of reserved ID attribue values - * for the particular <code>singleSignatureInfo</code>. + * containing information about the creation of a + * signature. + * @param sigInfoReservedIDs The <code>Set</code> of reserved ID attribue + * values for the particular + * <code>singleSignatureInfo</code>. * @return The <code>XMLSignatureCreationProfile</code> containing additional - * information for creating an XML signature. - * @throws MOASystemException A system error occurred during creation of the - * profile. See message for details - * @throws MOAApplicationException An application error occurred during - * creation of the profile. See message for details. + * information for creating an XML signature. + * @throws MOASystemException A system error occurred during creation of + * the profile. See message for details + * @throws MOAApplicationException An application error occurred during creation + * of the profile. See message for details. */ public XMLSignatureCreationProfile createProfile(SingleSignatureInfo singleSignatureInfo, - Set sigInfoReservedIDs) throws MOASystemException, MOAApplicationException { + Set sigInfoReservedIDs) throws MOASystemException, MOAApplicationException { - HashSet allReservedIDs = new HashSet(reserved); + final HashSet allReservedIDs = new HashSet(reserved); allReservedIDs.addAll(sigInfoReservedIDs); - TransactionContext context = - TransactionContextManager.getInstance().getTransactionContext(); - ConfigurationProvider config = context.getConfiguration(); + final TransactionContext context = + TransactionContextManager.getInstance().getTransactionContext(); + final ConfigurationProvider config = context.getConfiguration(); List dataObjectTreatmentList; Set keySet; List transformationSupplements; List createTransformsProfiles; // get the key group id - String keyGroupID = request.getKeyIdentifier(); + final String keyGroupID = request.getKeyIdentifier(); // get digest method on key group level (if configured) - KeyGroup keygroup = config.getKeyGroup(keyGroupID); - if(null == keygroup) { - Logger.error("Could not find key group '" + keyGroupID + "'"); - throw new MOAApplicationException("2231", null); + final KeyGroup keygroup = config.getKeyGroup(keyGroupID); + if (null == keygroup) { + Logger.error("Could not find key group '" + keyGroupID + "'"); + throw new MOAApplicationException("2231", null); } - String configDigestMethodKG = keygroup.getDigestMethodAlgorithm(); + final String configDigestMethodKG = keygroup.getDigestMethodAlgorithm(); // get default digest method (if configured) - String configDigestMethod = config.getDigestMethodAlgorithmName(); - - String xadesVersion = config.getXAdESVersion(); - + final String configDigestMethod = config.getDigestMethodAlgorithmName(); + + final String xadesVersion = config.getXAdESVersion(); + String digestMethodXAdES142 = null; boolean isXAdES142 = false; // if XAdES Version 1.4.2 is configured if (xadesVersion != null && xadesVersion.compareTo("1.4.2") == 0) { - isXAdES142 = true; - Logger.debug("XAdES version '" + xadesVersion + "' used"); + isXAdES142 = true; + Logger.debug("XAdES version '" + xadesVersion + "' used"); } - + if (isXAdES142) { - if (configDigestMethodKG != null) { - // if KG specific digest method is configured - digestMethodXAdES142 = (String) HASH_ALGORITHM_MAPPING.get(configDigestMethodKG); - if (digestMethodXAdES142 == null) { - error( - "config.17", - new Object[] { configDigestMethodKG}); - throw new MOASystemException("2900", null); - } - Logger.debug("Digest algorithm: " + digestMethodXAdES142 + "(configured in KeyGroup)"); - } - else { - // else get default configured digest method - digestMethodXAdES142 = (String) HASH_ALGORITHM_MAPPING.get(configDigestMethod); - if (digestMethodXAdES142 == null) { - error( - "config.17", - new Object[] { configDigestMethod}); - throw new MOASystemException("2900", null); - } - Logger.debug("Digest algorithm: " + digestMethodXAdES142 + "(default)"); - - } + if (configDigestMethodKG != null) { + // if KG specific digest method is configured + digestMethodXAdES142 = (String) HASH_ALGORITHM_MAPPING.get(configDigestMethodKG); + if (digestMethodXAdES142 == null) { + error( + "config.17", + new Object[] { configDigestMethodKG }); + throw new MOASystemException("2900", null); + } + Logger.debug("Digest algorithm: " + digestMethodXAdES142 + "(configured in KeyGroup)"); + } else { + // else get default configured digest method + digestMethodXAdES142 = (String) HASH_ALGORITHM_MAPPING.get(configDigestMethod); + if (digestMethodXAdES142 == null) { + error( + "config.17", + new Object[] { configDigestMethod }); + throw new MOASystemException("2900", null); + } + Logger.debug("Digest algorithm: " + digestMethodXAdES142 + "(default)"); + + } } - - XMLSignatureCreationProfileImpl profile = - new XMLSignatureCreationProfileImpl(createProfileCount, allReservedIDs, digestMethodXAdES142); - + final XMLSignatureCreationProfileImpl profile = + new XMLSignatureCreationProfileImpl(createProfileCount, allReservedIDs, digestMethodXAdES142); + // build the transformation supplements createTransformsProfiles = - getCreateTransformsInfoProfiles(singleSignatureInfo); + getCreateTransformsInfoProfiles(singleSignatureInfo); transformationSupplements = - buildTransformationSupplements(createTransformsProfiles); + buildTransformationSupplements(createTransformsProfiles); // build and set the data object treatment list dataObjectTreatmentList = - buildDataObjectTreatmentList( - singleSignatureInfo, - createTransformsProfiles, - transformationSupplements, - allReservedIDs, - digestMethodXAdES142); + buildDataObjectTreatmentList( + singleSignatureInfo, + createTransformsProfiles, + transformationSupplements, + allReservedIDs, + digestMethodXAdES142); profile.setDataObjectTreatmentList(dataObjectTreatmentList); // set the key set @@ -232,27 +231,28 @@ public class XMLSignatureCreationProfileFactory { // set insertion location profile.setSignatureInsertionLocation( - getSignatureInsertionLocationIndex(singleSignatureInfo)); + getSignatureInsertionLocationIndex(singleSignatureInfo)); // set the canonicalization algorithm - String canonicalizationURI = config.getCanonicalizationAlgorithmName(); + final String canonicalizationURI = config.getCanonicalizationAlgorithmName(); if (Canonicalization.ALL_EXCLUSIVE.contains(canonicalizationURI)) { - ExclusiveCanonicalizationImpl canonicalization = new ExclusiveCanonicalizationImpl(config.getCanonicalizationAlgorithmName(), null); - profile.setSignedInfoCanonicalization(canonicalization); - + final ExclusiveCanonicalizationImpl canonicalization = new ExclusiveCanonicalizationImpl(config + .getCanonicalizationAlgorithmName(), null); + profile.setSignedInfoCanonicalization(canonicalization); + } else { - CanonicalizationImpl canonicalization = - new CanonicalizationImpl(config.getCanonicalizationAlgorithmName()); - profile.setSignedInfoCanonicalization(canonicalization); - + final CanonicalizationImpl canonicalization = + new CanonicalizationImpl(config.getCanonicalizationAlgorithmName()); + profile.setSignedInfoCanonicalization(canonicalization); + } - + // set the signed properties profile.setSignedProperties(Collections.EMPTY_LIST); // set security layer conformity profile.setSecurityLayerConform( - singleSignatureInfo.isSecurityLayerConform()); + singleSignatureInfo.isSecurityLayerConform()); // update the createProfileCount createProfileCount++; @@ -262,31 +262,32 @@ public class XMLSignatureCreationProfileFactory { /** * Get the <code>List</code> of all <code>CreateTransformsInfoProfile</code>s - * contained in all the <code>DataObjectInfo</code>s of the given + * contained in all the <code>DataObjectInfo</code>s of the given * <code>SingleSignatureInfo</code>. - * + * * @param singleSignatureInfo The <code>SingleSignatureInfo</code> object from - * which to extract the <code>CreateTransformsInfoProfile</code>s. - * @return All <code>CreateTransformsInfoProfile</code>s of all - * <code>DataObjectInfo</code>s of <code>singleSignatureInfo</code>. + * which to extract the + * <code>CreateTransformsInfoProfile</code>s. + * @return All <code>CreateTransformsInfoProfile</code>s of all + * <code>DataObjectInfo</code>s of <code>singleSignatureInfo</code>. * @throws MOAApplicationException An error occurred creating one of the - * profiles. + * profiles. */ List getCreateTransformsInfoProfiles(SingleSignatureInfo singleSignatureInfo) - throws MOAApplicationException { - TransactionContext context = - TransactionContextManager.getInstance().getTransactionContext(); - ConfigurationProvider config = context.getConfiguration(); - List dataObjInfos = singleSignatureInfo.getDataObjectInfos(); - List profiles = new ArrayList(); + throws MOAApplicationException { + final TransactionContext context = + TransactionContextManager.getInstance().getTransactionContext(); + final ConfigurationProvider config = context.getConfiguration(); + final List dataObjInfos = singleSignatureInfo.getDataObjectInfos(); + final List profiles = new ArrayList(); Iterator dtIter; for (dtIter = dataObjInfos.iterator(); dtIter.hasNext();) { - DataObjectInfo dataObjInfo = (DataObjectInfo) dtIter.next(); - CreateTransformsInfoProfileExplicit profile = - ProfileMapper.mapCreateTransformsInfoProfile( - dataObjInfo.getCreateTransformsInfoProfile(), - config); + final DataObjectInfo dataObjInfo = (DataObjectInfo) dtIter.next(); + final CreateTransformsInfoProfileExplicit profile = + ProfileMapper.mapCreateTransformsInfoProfile( + dataObjInfo.getCreateTransformsInfoProfile(), + config); profiles.add(profile); } @@ -296,41 +297,42 @@ public class XMLSignatureCreationProfileFactory { /** * Build the <code>List</code> of transformation supplements contained in a * <code>SingleSignatureInfo</code> object. - * - * @param createTransformsInfoProfiles The - * <code>CreateTransformsInfoProfile</code> object from which to extract the - * transformation supplements. + * + * @param createTransformsInfoProfiles The + * <code>CreateTransformsInfoProfile</code> + * object from which to extract the + * transformation supplements. * @return A <code>List</code> of <code>DataObject</code>s containing the - * transformation supplements. - * @throws MOASystemException A system error occurred creating one of the - * transformation supplements. + * transformation supplements. + * @throws MOASystemException A system error occurred creating one of the + * transformation supplements. * @throws MOAApplicationException An error occurred creating one of the - * transformation supplements. + * transformation supplements. */ private List buildTransformationSupplements(List createTransformsInfoProfiles) - throws MOASystemException, MOAApplicationException { + throws MOASystemException, MOAApplicationException { - List transformationSupplements = new ArrayList(); - DataObjectFactory factory = DataObjectFactory.getInstance(); + final List transformationSupplements = new ArrayList(); + final DataObjectFactory factory = DataObjectFactory.getInstance(); Iterator iter; for (iter = createTransformsInfoProfiles.iterator(); iter.hasNext();) { - CreateTransformsInfoProfileExplicit profile = - (CreateTransformsInfoProfileExplicit) iter.next(); - List supplements = profile.getSupplements(); + final CreateTransformsInfoProfileExplicit profile = + (CreateTransformsInfoProfileExplicit) iter.next(); + final List supplements = profile.getSupplements(); if (supplements != null) { Iterator supplIter; for (supplIter = supplements.iterator(); supplIter.hasNext();) { - XMLDataObjectAssociation supplement = - (XMLDataObjectAssociation) supplIter.next(); + final XMLDataObjectAssociation supplement = + (XMLDataObjectAssociation) supplIter.next(); transformationSupplements.add( - factory.createFromXmlDataObjectAssociation( - supplement, - false, - true)); + factory.createFromXmlDataObjectAssociation( + supplement, + false, + true)); } } } @@ -341,35 +343,40 @@ public class XMLSignatureCreationProfileFactory { /** * Build the <code>List</code> of <code>DataObjectTreatment</code>s for the * given <code>SingleSignatureInfo</code> object.. - * - * @param singleSignatureInfo The <code>SingleSignatureInfo</code> object - * from which to exctract the <code>CreateTransformsInfoProfile</code>s - * containing the data for the <code>DataObjectTreatment</code>s. - * @param createTransformsInfoProfiles The - * <code>CreateTransformsInfoProfile</code>s contained in the - * <code>singleSignatureInfo</code>. - * @param transformationSupplements Additional parameters for - * transformations contained in <code>DataObjectTreatment</code>s. - * @param reservedIDs The <code>Set</code> of reserved object IDs. + * + * @param singleSignatureInfo The <code>SingleSignatureInfo</code> + * object from which to exctract the + * <code>CreateTransformsInfoProfile</code>s + * containing the data for the + * <code>DataObjectTreatment</code>s. + * @param createTransformsInfoProfiles The + * <code>CreateTransformsInfoProfile</code>s + * contained in the + * <code>singleSignatureInfo</code>. + * @param transformationSupplements Additional parameters for transformations + * contained in + * <code>DataObjectTreatment</code>s. + * @param reservedIDs The <code>Set</code> of reserved object + * IDs. * @return A <code>List</code> of <code>DataObjectTreatment</code> objects. * @throws MOAApplicationException An error occurred building one of the - * <code>DataObjectTreatment</code>s. - * @throws MOASystemException A system error occurred building one of the - * <code>DataObjectTreatment</code>s. + * <code>DataObjectTreatment</code>s. + * @throws MOASystemException A system error occurred building one of the + * <code>DataObjectTreatment</code>s. */ private List buildDataObjectTreatmentList( - SingleSignatureInfo singleSignatureInfo, - List createTransformsInfoProfiles, - List transformationSupplements, - Set reservedIDs, - String digestMethodXAdES142) - throws MOASystemException, MOAApplicationException { - - TransactionContext context = - TransactionContextManager.getInstance().getTransactionContext(); - ConfigurationProvider config = context.getConfiguration(); - List treatments = new ArrayList(); - List dataObjInfos = singleSignatureInfo.getDataObjectInfos(); + SingleSignatureInfo singleSignatureInfo, + List createTransformsInfoProfiles, + List transformationSupplements, + Set reservedIDs, + String digestMethodXAdES142) + throws MOASystemException, MOAApplicationException { + + final TransactionContext context = + TransactionContextManager.getInstance().getTransactionContext(); + final ConfigurationProvider config = context.getConfiguration(); + final List treatments = new ArrayList(); + final List dataObjInfos = singleSignatureInfo.getDataObjectInfos(); int dataObjectTreatmentCount = 1; String hashAlgorithmName; Iterator dtIter; @@ -377,44 +384,40 @@ public class XMLSignatureCreationProfileFactory { prIter = createTransformsInfoProfiles.iterator(); for (dtIter = dataObjInfos.iterator(); dtIter.hasNext();) { - CreateTransformsInfoProfileExplicit profile = - (CreateTransformsInfoProfileExplicit) prIter.next(); - DataObjectInfo dataObjInfo = (DataObjectInfo) dtIter.next(); - IdGenerator objIdGen = - new IdGenerator( - ("signed-data-" + createProfileCount) - + ("-" + dataObjectTreatmentCount++), - reservedIDs); - DataObjectTreatmentImpl treatment = new DataObjectTreatmentImpl(objIdGen); + final CreateTransformsInfoProfileExplicit profile = + (CreateTransformsInfoProfileExplicit) prIter.next(); + final DataObjectInfo dataObjInfo = (DataObjectInfo) dtIter.next(); + final IdGenerator objIdGen = + new IdGenerator( + "signed-data-" + createProfileCount + + "-" + dataObjectTreatmentCount++, + reservedIDs); + final DataObjectTreatmentImpl treatment = new DataObjectTreatmentImpl(objIdGen); treatment.setFinalContentType( - profile.getCreateTransformsInfo().getFinalDataMetaInfo().getMimeType()); + profile.getCreateTransformsInfo().getFinalDataMetaInfo().getMimeType()); treatment.setTransformationList(buildTransformationList(profile)); treatment.setReferenceInManifest(dataObjInfo.isChildOfManifest()); // if XAdES version is 1.4.2 if (digestMethodXAdES142 != null) { - // use configured digest algorithm - hashAlgorithmName = digestMethodXAdES142; - } - else { - // stay as it is - hashAlgorithmName = (String) HASH_ALGORITHM_MAPPING.get( - config.getDigestMethodAlgorithmName()); - if (hashAlgorithmName == null) { - error( - "config.17", - new Object[] { config.getDigestMethodAlgorithmName()}); - throw new MOASystemException("2900", null); - } + // use configured digest algorithm + hashAlgorithmName = digestMethodXAdES142; + } else { + // stay as it is + hashAlgorithmName = (String) HASH_ALGORITHM_MAPPING.get( + config.getDigestMethodAlgorithmName()); + if (hashAlgorithmName == null) { + error( + "config.17", + new Object[] { config.getDigestMethodAlgorithmName() }); + throw new MOASystemException("2900", null); + } } - - - treatment.setHashAlgorithmName(hashAlgorithmName); treatment.setIncludedInSignature( - DataObjectInfo.STRUCTURE_ENVELOPING.equals(dataObjInfo.getStructure())); + DataObjectInfo.STRUCTURE_ENVELOPING.equals(dataObjInfo.getStructure())); treatment.setTransformationSupplements(transformationSupplements); treatments.add(treatment); @@ -427,48 +430,48 @@ public class XMLSignatureCreationProfileFactory { /** * Build the <code>List</code> of transformations contained in a * <code>CreateTransformsInfoProfile</code> object. - * - * @param profile The <code>CreateTransformsInfoProfile</code> object - * from which to extract the <code>Transform</code>s. - * @return A <code>List</code> of <code>Transformation</code>s contained in - * the given <code>CreateTransformsInfoProfile</code>. + * + * @param profile The <code>CreateTransformsInfoProfile</code> object from which + * to extract the <code>Transform</code>s. + * @return A <code>List</code> of <code>Transformation</code>s contained in the + * given <code>CreateTransformsInfoProfile</code>. * @throws MOAApplicationException An error occurred building one of the - * <code>Transformation</code>s. + * <code>Transformation</code>s. */ private List buildTransformationList(CreateTransformsInfoProfileExplicit profile) - throws MOAApplicationException { + throws MOAApplicationException { - TransformationFactory factory = TransformationFactory.getInstance(); - List transforms = profile.getCreateTransformsInfo().getTransforms(); + final TransformationFactory factory = TransformationFactory.getInstance(); + final List transforms = profile.getCreateTransformsInfo().getTransforms(); return transforms != null - ? factory.createTransformationList(transforms) - : Collections.EMPTY_LIST; + ? factory.createTransformationList(transforms) + : Collections.EMPTY_LIST; } /** * Build the set of <code>KeyEntryID</code>s available to the given * <code>keyGroupID</code>. - * + * * @param keyGroupID The keygroup ID for which the available keys should be - * returned. - * @return The <code>Set</code> of <code>KeyEntryID</code>s - * identifying the available keys. + * returned. + * @return The <code>Set</code> of <code>KeyEntryID</code>s identifying the + * available keys. */ private Set buildKeySet(String keyGroupID) { - TransactionContext context = - TransactionContextManager.getInstance().getTransactionContext(); - ConfigurationProvider config = context.getConfiguration(); + final TransactionContext context = + TransactionContextManager.getInstance().getTransactionContext(); + final ConfigurationProvider config = context.getConfiguration(); Set keyGroupEntries; // get the KeyGroup entries from the configuration if (context.getClientCertificate() != null) { - X509Certificate cert = context.getClientCertificate()[0]; - Principal issuer = cert.getIssuerDN(); - BigInteger serialNumber = cert.getSerialNumber(); + final X509Certificate cert = context.getClientCertificate()[0]; + final Principal issuer = cert.getIssuerDN(); + final BigInteger serialNumber = cert.getSerialNumber(); keyGroupEntries = - config.getKeyGroupEntries(issuer, serialNumber, keyGroupID); + config.getKeyGroupEntries(issuer, serialNumber, keyGroupID); } else { keyGroupEntries = config.getKeyGroupEntries(null, null, keyGroupID); } @@ -479,23 +482,23 @@ public class XMLSignatureCreationProfileFactory { } else if (keyGroupEntries.size() == 0) { return Collections.EMPTY_SET; } else { - KeyModule module = - KeyModuleFactory.getInstance( - new TransactionId(context.getTransactionID())); - Set keyEntryIDs = module.getPrivateKeyEntryIDs(); - Set keySet = new HashSet(); + final KeyModule module = + KeyModuleFactory.getInstance( + new TransactionId(context.getTransactionID())); + final Set keyEntryIDs = module.getPrivateKeyEntryIDs(); + final Set keySet = new HashSet(); Iterator iter; // filter out the keys that do not exist in the IAIK configuration // by walking through the key entries and checking if the exist in the // keyGroupEntries for (iter = keyEntryIDs.iterator(); iter.hasNext();) { - KeyEntryID entryID = (KeyEntryID) iter.next(); - KeyGroupEntry entry = - new KeyGroupEntry( - entryID.getModuleID(), - entryID.getCertificateIssuer(), - entryID.getCertificateSerialNumber()); + final KeyEntryID entryID = (KeyEntryID) iter.next(); + final KeyGroupEntry entry = + new KeyGroupEntry( + entryID.getModuleID(), + entryID.getCertificateIssuer(), + entryID.getCertificateSerialNumber()); if (keyGroupEntries.contains(entry)) { keySet.add(entryID); } @@ -507,29 +510,31 @@ public class XMLSignatureCreationProfileFactory { /** * Get the signature location index where the signature will be inserted into * the signature parent element. - * + * * @param singleSignatureInfo The <code>SingleSignatureInfo</code> object - * containing the <code>CreateSignatureLocation</code>. + * containing the + * <code>CreateSignatureLocation</code>. * @return The index at which to insert the signature into the signature - * environment. - * @throws MOAApplicationException An error occurred parsing the - * <code>CreateSignatureEnvironmentProfile</code>. + * environment. + * @throws MOAApplicationException An error occurred parsing the + * <code>CreateSignatureEnvironmentProfile</code>. */ - private XMLSignatureInsertionLocation getSignatureInsertionLocationIndex(SingleSignatureInfo singleSignatureInfo) - throws MOAApplicationException { + private XMLSignatureInsertionLocation getSignatureInsertionLocationIndex( + SingleSignatureInfo singleSignatureInfo) + throws MOAApplicationException { - CreateSignatureInfo createInfo = - singleSignatureInfo.getCreateSignatureInfo(); + final CreateSignatureInfo createInfo = + singleSignatureInfo.getCreateSignatureInfo(); if (createInfo != null) { - TransactionContext context = - TransactionContextManager.getInstance().getTransactionContext(); - ConfigurationProvider config = context.getConfiguration(); - CreateSignatureEnvironmentProfileExplicit profile = - ProfileMapper.mapCreateSignatureEnvironmentProfile( - createInfo.getCreateSignatureEnvironmentProfile(), - config); - int index = profile.getCreateSignatureLocation().getIndex(); + final TransactionContext context = + TransactionContextManager.getInstance().getTransactionContext(); + final ConfigurationProvider config = context.getConfiguration(); + final CreateSignatureEnvironmentProfileExplicit profile = + ProfileMapper.mapCreateSignatureEnvironmentProfile( + createInfo.getCreateSignatureEnvironmentProfile(), + config); + final int index = profile.getCreateSignatureLocation().getIndex(); return new XMLSignatureInsertionLocationImpl(index); } else { @@ -539,12 +544,12 @@ public class XMLSignatureCreationProfileFactory { /** * Utility function to issue an error message to the log. - * - * @param messageId The ID of the message to log. + * + * @param messageId The ID of the message to log. * @param parameters Additional message parameters. */ private static void error(String messageId, Object[] parameters) { - MessageProvider msg = MessageProvider.getInstance(); + final MessageProvider msg = MessageProvider.getInstance(); Logger.error(new LogMsg(msg.getMessage(messageId, parameters))); } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/XMLSignatureVerificationInvoker.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/XMLSignatureVerificationInvoker.java index 827728c..b97cc95 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/XMLSignatureVerificationInvoker.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/XMLSignatureVerificationInvoker.java @@ -37,8 +37,6 @@ import java.util.List; import java.util.Map; import java.util.Set; -import javax.xml.ws.soap.AddressingFeature.Responses; - import org.w3c.dom.Element; import org.w3c.dom.Node; @@ -49,7 +47,6 @@ import at.gv.egovernment.moa.spss.api.SPSSFactory; import at.gv.egovernment.moa.spss.api.common.CheckResult; import at.gv.egovernment.moa.spss.api.common.ExtendedCertificateCheckResult; import at.gv.egovernment.moa.spss.api.common.XMLDataObjectAssociation; -import at.gv.egovernment.moa.spss.api.impl.AdESFormResultsImpl; import at.gv.egovernment.moa.spss.api.xmlverify.ReferenceInfo; import at.gv.egovernment.moa.spss.api.xmlverify.ReferencesCheckResult; import at.gv.egovernment.moa.spss.api.xmlverify.ReferencesCheckResultInfo; @@ -78,12 +75,9 @@ import at.gv.egovernment.moaspss.logging.LoggingContextManager; import at.gv.egovernment.moaspss.util.CollectionUtils; import at.gv.egovernment.moaspss.util.Constants; import iaik.server.ConfigurationException; -import iaik.server.modules.AdESConstants; -import iaik.server.modules.AdESFormVerificationResult; import iaik.server.modules.IAIKException; import iaik.server.modules.IAIKRuntimeException; import iaik.server.modules.SignatureVerificationProfile; -import iaik.server.modules.SignatureVerificationResult; import iaik.server.modules.xml.DataObject; import iaik.server.modules.xml.XMLDataObject; import iaik.server.modules.xml.XMLSignature; @@ -103,666 +97,667 @@ import iaik.xml.crypto.utils.URIException; /** * A class providing a DOM based interface to the * <code>XMLSignatureVerificationModule</code>. - * + * * This class performs the invocation of the * <code>iaik.server.modules.xmlverify.XMLSignatureVerificationModule</code> * from a <code>VerifyXMLSignatureRequest</code> given as a DOM element. The * result of the invocation is integrated into a * <code>VerifyXMLSignatureResponse</code> and returned. - * + * * @author Patrick Peck * @version $Id$ */ public class XMLSignatureVerificationInvoker { - /** The single instance of this class. */ - private static XMLSignatureVerificationInvoker instance = null; - - private static Set FILTERED_REF_TYPES; - - static { - FILTERED_REF_TYPES = new HashSet(); - FILTERED_REF_TYPES.add(DsigManifest.XML_DSIG_MANIFEST_TYPE); - FILTERED_REF_TYPES.add(SecurityLayerManifest.SECURITY_LAYER_MANIFEST_TYPE); - FILTERED_REF_TYPES.add(SecurityLayerManifest.SECURITY_LAYER_MANIFEST_TYPE_OLD); - FILTERED_REF_TYPES.add(XMLConstants.NAMESPACE_ETSI_STRING + "SignedProperties"); - FILTERED_REF_TYPES.add("http://uri.etsi.org/01903#SignedProperties"); - } - - /** - * Get the single instance of this class. - * - * @return The single instance of this class. - */ - public static synchronized XMLSignatureVerificationInvoker getInstance() { - if (instance == null) { - instance = new XMLSignatureVerificationInvoker(); - } - return instance; - } - - /** - * Create a new <code>XMLSignatureCreationInvoker</code>. - * - * Protected to disallow multiple instances. - */ - protected XMLSignatureVerificationInvoker() { - } - - /** - * Process the <code>VerifyXMLSignatureRequest<code> message and invoke the - * <code>XMLSignatureVerificationModule</code>. - * - * @param request - * A <code>VerifyXMLSignatureRequest<code> API object - * containing the data for verifying an XML signature. - * @return A <code>VerifyXMLSignatureResponse</code> containing the answert - * to the <code>VerifyXMLSignatureRequest</code>. MOA schema - * definition. - * @throws MOAException - * An error occurred during signature verification. - */ - public VerifyXMLSignatureResponse verifyXMLSignature(VerifyXMLSignatureRequest request) throws MOAException { - - TransactionContext context = TransactionContextManager.getInstance().getTransactionContext(); - LoggingContext loggingCtx = LoggingContextManager.getInstance().getLoggingContext(); - XMLSignatureVerificationProfileFactory profileFactory = new XMLSignatureVerificationProfileFactory(request); - VerifyXMLSignatureResponseBuilder responseBuilder = new VerifyXMLSignatureResponseBuilder(); - ExtendedXMLSignatureVerificationResult result = null; - XMLSignatureVerificationResult plainResult; - XMLSignatureVerificationProfile profile; - ReferencesCheckResult signatureManifestCheck; - DataObjectFactory dataObjFactory; - XMLDataObject signatureEnvironment; - Node signatureEnvironmentParent = null; - Element requestElement = null; - XMLSignature xmlSignature; - Date signingTime; - List supplements; - List dataObjectList; - - // get the supplements - supplements = getSupplements(request); - - // build XMLSignature - dataObjFactory = DataObjectFactory.getInstance(); - signatureEnvironment = dataObjFactory - .createSignatureEnvironment(request.getSignatureInfo().getVerifySignatureEnvironment(), supplements); - xmlSignature = buildXMLSignature(signatureEnvironment, request); - - // build the list of DataObjects - dataObjectList = buildDataObjectList(supplements); - - // build profile - profile = profileFactory.createProfile(); - - // get the signingTime - signingTime = request.getDateTime(); - - // make the signature environment the root of the document, if it is not - // a - // separate document anyway; this is done to assure that - // canonicalization - // of the signature environment contains the correct namespace - // declarations - requestElement = signatureEnvironment.getElement().getOwnerDocument().getDocumentElement(); - if (requestElement != signatureEnvironment.getElement()) { - signatureEnvironmentParent = signatureEnvironment.getElement().getParentNode(); - requestElement.getOwnerDocument().replaceChild(signatureEnvironment.getElement(), requestElement); - } - - QCSSCDResult qcsscdresult = new QCSSCDResult(); - String tpID = profile.getCertificateValidationProfile().getTrustStoreProfile().getId(); - ConfigurationProvider config = ConfigurationProvider.getInstance(); - TrustProfile tp = config.getTrustProfile(tpID); - - // verify the signature - try { - XMLSignatureVerificationModule module = XMLSignatureVerificationModuleFactory.getInstance(); - - module.setLog(new IaikLog(loggingCtx.getNodeID())); - - if(request.getExtendedValidaiton()) { - result = module.verifyXAdESSignature(xmlSignature, dataObjectList, profile, signingTime, - new TransactionId(context.getTransactionID())); - plainResult = result.getXMLSignatureVerificationResult(); - } else { - plainResult = module.verifySignature(xmlSignature, dataObjectList, profile, signingTime, - new TransactionId(context.getTransactionID())); - } - } catch (IAIKException e) { - MOAException moaException = IaikExceptionMapper.getInstance().map(e); - throw moaException; - } catch (IAIKRuntimeException e) { - MOAException moaException = IaikExceptionMapper.getInstance().map(e); - throw moaException; - } - - ExtendedCertificateCheckResult extCheckResult; - if(result != null) { - List adesResults = null;// - - adesResults = AdESResultUtils.getAdESResult(result.getFormVerificationResult()); - - if (adesResults != null) { - Iterator adesIterator = adesResults.iterator(); - while (adesIterator.hasNext()) { - Logger.info("ADES Formresults: " + adesIterator.next().toString()); - } - } - - responseBuilder.setAdESFormResults(adesResults); - - try { - //Logger.info("Extended Validation Report: " + result.getName()); - Logger.info("Extended Validation Code: " + result.getResultCode().toString()); - Logger.info("Extended Validation Info: " + result.getInfo()); - - extCheckResult = AdESResultUtils.getExtendedResult(result.getResultCode()); - responseBuilder.setExtendedCertificateCheckResult(extCheckResult); - } catch (ConfigurationException e) { - Logger.warn("Cannot generate Extendend Result. Check SVA Configuration!", e); - } catch (NullPointerException e) { - Logger.info("No extendend validation result available."); - } - } - // QC/SSCD check - List list = plainResult.getCertificateValidationResult().getCertificateChain(); - if (list != null) { - X509Certificate[] chain = new X509Certificate[list.size()]; - - Iterator it = list.iterator(); - int i = 0; - while (it.hasNext()) { - chain[i] = (X509Certificate) it.next(); - i++; - } - - qcsscdresult = CertificateUtils.checkQCSSCD(chain, plainResult.getSigningTime(), tp.isTSLEnabled(), config); - } - - // get signer certificate issuer country code - String issuerCountryCode = CertificateUtils.getIssuerCountry((X509Certificate) list.get(0)); - - // swap back in the request as root document - if (requestElement != signatureEnvironment.getElement()) { - requestElement.getOwnerDocument().replaceChild(requestElement, signatureEnvironment.getElement()); - signatureEnvironmentParent.appendChild(signatureEnvironment.getElement()); - } - - // check the result - signatureManifestCheck = validateSignatureManifest(request, plainResult, - profile); - - // Check if signer certificate is in trust profile's allowed signer - // certificates pool - TrustProfile trustProfile = context.getConfiguration().getTrustProfile(request.getTrustProfileId()); - CheckResult certificateCheck = validateSignerCertificate(plainResult, - trustProfile); - - // build the response - responseBuilder.setResult(plainResult, profile, signatureManifestCheck, - certificateCheck, qcsscdresult.isQC(), qcsscdresult.isQCSourceTSL(), qcsscdresult.isSSCD(), - qcsscdresult.isSSCDSourceTSL(), tp.isTSLEnabled(), issuerCountryCode, qcsscdresult.getTslInfos()); - return responseBuilder.getResponse(); - } - - /** - * Checks if the signer certificate matches one of the allowed signer - * certificates specified in the provided <code>trustProfile</code>. - * - * @param result - * The result produced by the - * <code>XMLSignatureVerificationModule</code>. - * - * @param trustProfile - * The trust profile the signer certificate is validated against. - * - * @return The overal result of the certificate validation for the signer - * certificate. - * - * @throws MOAException - * if one of the signer certificates specified in the - * <code>trustProfile</code> cannot be read from the file - * system. - */ - private CheckResult validateSignerCertificate(XMLSignatureVerificationResult result, - TrustProfile trustProfile) - throws MOAException { - MessageProvider msg = MessageProvider.getInstance(); - - int resultCode = result.getCertificateValidationResult().getValidationResultCode().intValue(); - - if (resultCode == 0 && trustProfile.getSignerCertsUri() != null) { - X509Certificate signerCertificate = (X509Certificate) result.getCertificateValidationResult() - .getCertificateChain().get(0); - - File signerCertsDir = null; - try { - signerCertsDir = new File(new URI(trustProfile.getSignerCertsUri()).getPath()); - } catch (URIException e) { - throw new MOASystemException("2900", null, e); // Should not - // happen, - // already - // checked at - // loading the - // MOA - // configuration - } - - File[] files = signerCertsDir.listFiles(); - if (files == null) - resultCode = 1; - int i; - for (i = 0; i < files.length; i++) { - if (!files[i].isDirectory()) { - FileInputStream currentFIS = null; - try { - currentFIS = new FileInputStream(files[i]); - } catch (FileNotFoundException e) { - throw new MOASystemException("2900", null, e); - } - - try { - X509Certificate currentCert = new X509Certificate(currentFIS); - currentFIS.close(); - if (currentCert.equals(signerCertificate)) - break; - } catch (Exception e) { - // Simply ignore file if it cannot be interpreted as - // certificate - String logMsg = msg.getMessage("invoker.03", - new Object[] { trustProfile.getId(), files[i].getName() }); - Logger.warn(logMsg); - try { - currentFIS.close(); - } catch (IOException e1) { - // If clean-up fails, do nothing - } - } - } - } - if (i >= files.length) { - resultCode = 1; // No signer certificate from the trustprofile - // pool matches the actual signer certificate - } - } - - SPSSFactory factory = SPSSFactory.getInstance(); - return factory.createCheckResult(resultCode, null); - } - - /** - * Select the <code>dsig:Signature</code> DOM element within the signature - * environment. - * - * @param signatureEnvironment - * The signature environment containing the - * <code>dsig:Signature</code>. - * @param request - * The <code>VerifyXMLSignatureRequest</code> containing the - * signature environment. - * @return The <code>dsig:Signature</code> element wrapped in a - * <code>XMLSignature</code> object. - * @throws MOAApplicationException - * An error occurred locating the <code>dsig:Signature</code>. - */ - private XMLSignature buildXMLSignature(XMLDataObject signatureEnvironment, VerifyXMLSignatureRequest request) - throws MOAApplicationException { - - VerifySignatureLocation signatureLocation = request.getSignatureInfo().getVerifySignatureLocation(); - Element signatureParent; - - // evaluate the VerifySignatureLocation to get the signature parent - signatureParent = InvokerUtils.evaluateSignatureLocation(signatureEnvironment.getElement(), signatureLocation); - - // check for signatureParent to be a dsig:Signature element - if (!"Signature".equals(signatureParent.getLocalName()) - || !Constants.DSIG_NS_URI.equals(signatureParent.getNamespaceURI())) { - throw new MOAApplicationException("2266", null); - } - - return new XMLSignatureImpl(signatureParent); - } - - /** - * Build the supplemental data objects contained in the - * <code>VerifyXMLSignatureRequest</code>. - * - * @param supplements - * A <code>List</code> of <code>XMLDataObjectAssociation</code>s - * containing the supplement data. - * @return A <code>List</code> of <code>DataObject</code>s representing the - * supplemental data objects. - * @throws MOASystemException - * A system error occurred building one of the data objects. - * @throws MOAApplicationException - * An error occurred building one of the data objects. - */ - private List buildDataObjectList(List supplements) throws MOASystemException, MOAApplicationException { - List dataObjectList = new ArrayList(); - - DataObjectFactory factory = DataObjectFactory.getInstance(); - DataObject dataObject; - Iterator iter; - - if (supplements != null) { - for (iter = supplements.iterator(); iter.hasNext();) { - XMLDataObjectAssociation supplement = (XMLDataObjectAssociation) iter.next(); - dataObject = factory.createFromXmlDataObjectAssociation(supplement, true, false); - dataObjectList.add(dataObject); - } - } - - return dataObjectList; - - } - - /** - * Get the supplemental data contained in the - * <code>VerifyXMLSignatureRequest</code>. - * - * @param request - * The <code>VerifyXMLSignatureRequest</code> containing the - * supplemental data. - * @return A <code>List</code> of <code>XMLDataObjectAssociation</code> - * objects containing the supplemental data. - * @throws MOAApplicationException - * An error occurred resolving one of the supplement profiles. - */ - private List getSupplements(VerifyXMLSignatureRequest request) throws MOAApplicationException { - TransactionContext context = TransactionContextManager.getInstance().getTransactionContext(); - ConfigurationProvider config = context.getConfiguration(); - List supplementProfiles = request.getSupplementProfiles(); - - List supplements = new ArrayList(); - - if (supplementProfiles != null) { - - List mappedProfiles = ProfileMapper.mapSupplementProfiles(supplementProfiles, config); - Iterator iter; - - for (iter = mappedProfiles.iterator(); iter.hasNext();) { - SupplementProfileExplicit profile = (SupplementProfileExplicit) iter.next(); - supplements.add(profile.getSupplementProfile()); - } - - } - return supplements; - } - - /** - * Perform additional validations of the - * <code>XMLSignatureVerificationResult</code>. - * - * <p> - * In particular, it is verified that: - * <ul> - * <li>Each <code>ReferenceData</code> object contains transformation chain - * that matches one of the <code>Transforms</code> given in the - * corresponding <code>SignatureManifestCheckParams/ReferenceInfo</code> - * </li> - * <li>The hash values of the <code>TransformParameter</code>s are valid. - * </li> - * </ul> - * </p> - * - * @param request - * The <code>VerifyXMLSignatureRequest</code> containing the - * signature to verify. - * @param result - * The result produced by - * <code>XMLSignatureVerificationModule</code>. - * @param profile - * The profile used for validating the <code>request</code>. - * @return The result of additional validations of the signature manifest. - * @throws MOAApplicationException - * Post-validation of the - * <code>XMLSignatureVerificaitonResult</code> failed. - */ - private ReferencesCheckResult validateSignatureManifest(VerifyXMLSignatureRequest request, - XMLSignatureVerificationResult result, XMLSignatureVerificationProfile profile) - throws MOAApplicationException { - - SPSSFactory factory = SPSSFactory.getInstance(); - MessageProvider msg = MessageProvider.getInstance(); - - // validate that each ReferenceData object contains transforms specified - // in the corresponding SignatureManifestCheckParams/ReferenceInfo - if (request.getSignatureManifestCheckParams() != null) { - List refInfos = request.getSignatureManifestCheckParams().getReferenceInfos(); - List refDatas = filterReferenceInfos(result.getReferenceDataList()); - List failedReferencesList = new ArrayList(); - Iterator refInfoIter; - Iterator refDataIter; - - if (refInfos.size() != refDatas.size()) { - return factory.createReferencesCheckResult(1, null); - } - - refInfoIter = refInfos.iterator(); - refDataIter = filterReferenceInfos(result.getReferenceDataList()).iterator(); - - while (refInfoIter.hasNext()) { - ReferenceInfo refInfo = (ReferenceInfo) refInfoIter.next(); - ReferenceData refData = (ReferenceData) refDataIter.next(); - List transforms = buildTransformsList(refInfo); - boolean found = false; - Iterator trIter; - - for (trIter = transforms.iterator(); trIter.hasNext() && !found;) { - found = trIter.next().equals(refData.getTransformationList()); - } - - if (!found) { - Integer refIndex = new Integer(refData.getReferenceIndex()); - String logMsg = msg.getMessage("invoker.01", new Object[] { refIndex }); - - failedReferencesList.add(refIndex); - Logger.debug(new LogMsg(logMsg)); - } - } - - if (!failedReferencesList.isEmpty()) { - // at least one reference failed - return their indexes and - // check code 1 - int[] failedReferences = CollectionUtils.toIntArray(failedReferencesList); - ReferencesCheckResultInfo checkInfo = factory.createReferencesCheckResultInfo(null, failedReferences); - - return factory.createReferencesCheckResult(1, checkInfo); - } - } - - // validate the hashes contained in all the ReferenceInfo objects of the - // security layer manifest - if (request.getSignatureManifestCheckParams() != null && result.containsSecurityLayerManifest()) { - Map hashValues = buildTransformParameterHashValues(request); - Set transformParameterURIs = buildTransformParameterURIs(profile.getTransformationSupplements()); - List referenceInfoList = result.getSecurityLayerManifest().getReferenceDataList(); - Iterator refIter; - - for (refIter = referenceInfoList.iterator(); refIter.hasNext();) { - iaik.server.modules.xmlverify.ReferenceInfo ref = (iaik.server.modules.xmlverify.ReferenceInfo) refIter - .next(); - byte[] hash = (byte[]) hashValues.get(ref.getURI()); - - if (!transformParameterURIs.contains(ref.getURI()) - || (hash != null && !Arrays.equals(hash, ref.getHashValue()))) { - - // the transform parameter doesn't exist or the hashs do not - // match - // return the index of the failed reference and check code 1 - int[] failedReferences = new int[] { ref.getReferenceIndex() }; - ReferencesCheckResultInfo checkInfo = factory.createReferencesCheckResultInfo(null, - failedReferences); - String logMsg = msg.getMessage("invoker.02", new Object[] { new Integer(ref.getReferenceIndex()) }); - - Logger.debug(new LogMsg(logMsg)); - - return factory.createReferencesCheckResult(1, checkInfo); - } - } - } - - return factory.createReferencesCheckResult(0, null); - } - - /** - * Get all <code>Transform</code>s contained in all the - * <code>VerifyTransformsInfoProfile</code>s of the given - * <code>ReferenceInfo</code>. - * - * @param refInfo - * The <code>ReferenceInfo</code> object containing the - * transformations. - * @return A <code>List</code> of <code>List</code>s. Each of the - * <code>List</code>s contains <code>Transformation</code> objects. - * @throws MOAApplicationException - * An error occurred building one of the - * <code>Transformation</code>s. - */ - private List buildTransformsList(ReferenceInfo refInfo) throws MOAApplicationException { - - TransactionContext context = TransactionContextManager.getInstance().getTransactionContext(); - ConfigurationProvider config = context.getConfiguration(); - List profiles = refInfo.getVerifyTransformsInfoProfiles(); - List mappedProfiles = ProfileMapper.mapVerifyTransformsInfoProfiles(profiles, config); - List transformsList = new ArrayList(); - TransformationFactory factory = TransformationFactory.getInstance(); - Iterator iter; - - for (iter = mappedProfiles.iterator(); iter.hasNext();) { - VerifyTransformsInfoProfileExplicit profile = (VerifyTransformsInfoProfileExplicit) iter.next(); - List transforms = profile.getTransforms(); - - if (transforms != null) { - transformsList.add(factory.createTransformationList(transforms)); - } - } - - return transformsList; - } - - /** - * Build the <code>Set</code> of all <code>TransformParameter</code> URIs. - * - * @param transformParameters - * The <code>List</code> of <code>TransformParameter</code>s, as - * provided to the verification. - * @return The <code>Set</code> of all <code>TransformParameter</code> URIs. - */ - private Set buildTransformParameterURIs(List transformParameters) { - Set uris = new HashSet(); - Iterator iter; - - for (iter = transformParameters.iterator(); iter.hasNext();) { - DataObject transformParameter = (DataObject) iter.next(); - uris.add(transformParameter.getURI()); - } - - return uris; - } - - /** - * Build a mapping between <code>TransformParameter</code> URIs (a - * <code>String</code> and <code>dsig:HashValue</code> (a - * <code>byte[]</code>). - * - * @param request - * The <code>VerifyXMLSignatureRequest</code>. - * @return Map The resulting mapping. - * @throws MOAApplicationException - * An error occurred accessing one of the profiles. - */ - private Map buildTransformParameterHashValues(VerifyXMLSignatureRequest request) throws MOAApplicationException { - - TransactionContext context = TransactionContextManager.getInstance().getTransactionContext(); - ConfigurationProvider config = context.getConfiguration(); - Map hashValues = new HashMap(); - List refInfos = request.getSignatureManifestCheckParams().getReferenceInfos(); - Iterator refIter; - - for (refIter = refInfos.iterator(); refIter.hasNext();) { - ReferenceInfo refInfo = (ReferenceInfo) refIter.next(); - List profiles = refInfo.getVerifyTransformsInfoProfiles(); - List mappedProfiles = ProfileMapper.mapVerifyTransformsInfoProfiles(profiles, config); - Iterator prIter; - - for (prIter = mappedProfiles.iterator(); prIter.hasNext();) { - VerifyTransformsInfoProfileExplicit profile = (VerifyTransformsInfoProfileExplicit) prIter.next(); - List trParameters = profile.getTransformParameters(); - Iterator trIter; - - for (trIter = trParameters.iterator(); trIter.hasNext();) { - TransformParameter transformParameter = (TransformParameter) trIter.next(); - String uri = transformParameter.getURI(); - - if (transformParameter.getTransformParameterType() == TransformParameter.HASH_TRANSFORMPARAMETER) { - hashValues.put(uri, ((TransformParameterHash) transformParameter).getDigestValue()); - } - - } - } - } - return hashValues; - } - - /** - * Filter the <code>ReferenceInfo</code>s returned by the - * <code>VerifyXMLSignatureResult</code> for comparison with the - * <code>ReferenceInfo</code> elements in the request. - * - * @param referenceInfos - * The <code>ReferenceInfo</code>s from the - * <code>VerifyXMLSignatureResult</code>. - * @return A <code>List</code> of all <code>ReferenceInfo</code>s whose type - * is not a XMLDsig manifest, Security Layer manifest, or ETSI - * signed property. - */ - private List filterReferenceInfos(List referenceInfos) { - List filtered = new ArrayList(); - Iterator iter; - - for (iter = referenceInfos.iterator(); iter.hasNext();) { - iaik.server.modules.xmlverify.ReferenceInfo refInfo = (iaik.server.modules.xmlverify.ReferenceInfo) iter - .next(); - String refType = refInfo.getReferenceType(); - - if (refType == null || !FILTERED_REF_TYPES.contains(refType)) { - filtered.add(refInfo); - } - } - - return filtered; - } - - private List getAdESResult(ExtendedXMLSignatureVerificationResult adesFormVerification) throws ConfigurationException { - if (adesFormVerification == null) { - // no form information - return null; - } - - List adesList = new ArrayList(); - - /* - checkSubResult(adesFormVerification.getSubResult(SignatureVerificationProfile.LEVEL_LTA), - SignatureVerificationProfile.LEVEL_LTA, adesList); - checkSubResult(adesFormVerification.getSubResult(SignatureVerificationProfile.LEVEL_LT), - SignatureVerificationProfile.LEVEL_LT, adesList); - checkSubResult(adesFormVerification.getSubResult(SignatureVerificationProfile.LEVEL_T), - SignatureVerificationProfile.LEVEL_T, adesList); - checkSubResult(adesFormVerification.getSubResult(SignatureVerificationProfile.LEVEL_B), - SignatureVerificationProfile.LEVEL_B, adesList); - */ - - AdESResultUtils.checkSubResult(adesFormVerification.getSubResult(AdESConstants.LONG_TERM_VALIDATION), - SignatureVerificationProfile.LEVEL_LT, adesList); - AdESResultUtils.checkSubResult(adesFormVerification.getSubResult(AdESConstants.ADES_T_VALIDATION), - SignatureVerificationProfile.LEVEL_T, adesList); - AdESResultUtils.checkSubResult(adesFormVerification.getSubResult("basic report"), - SignatureVerificationProfile.LEVEL_B, adesList); - - return adesList; - } + /** The single instance of this class. */ + private static XMLSignatureVerificationInvoker instance = null; + + private static Set FILTERED_REF_TYPES; + + static { + FILTERED_REF_TYPES = new HashSet(); + FILTERED_REF_TYPES.add(DsigManifest.XML_DSIG_MANIFEST_TYPE); + FILTERED_REF_TYPES.add(SecurityLayerManifest.SECURITY_LAYER_MANIFEST_TYPE); + FILTERED_REF_TYPES.add(SecurityLayerManifest.SECURITY_LAYER_MANIFEST_TYPE_OLD); + FILTERED_REF_TYPES.add(XMLConstants.NAMESPACE_ETSI_STRING + "SignedProperties"); + FILTERED_REF_TYPES.add("http://uri.etsi.org/01903#SignedProperties"); + } + + /** + * Get the single instance of this class. + * + * @return The single instance of this class. + */ + public static synchronized XMLSignatureVerificationInvoker getInstance() { + if (instance == null) { + instance = new XMLSignatureVerificationInvoker(); + } + return instance; + } + + /** + * Create a new <code>XMLSignatureCreationInvoker</code>. + * + * Protected to disallow multiple instances. + */ + protected XMLSignatureVerificationInvoker() { + } + + /** + * Process the <code>VerifyXMLSignatureRequest<code> message and invoke the + * <code>XMLSignatureVerificationModule</code>. + * + * @param request A <code>VerifyXMLSignatureRequest<code> API object + * containing the data for verifying an XML signature. + * @return A <code>VerifyXMLSignatureResponse</code> containing the answert + * to the <code>VerifyXMLSignatureRequest</code>. MOA schema + * definition. + * @throws MOAException An error occurred during signature verification. + */ + public VerifyXMLSignatureResponse verifyXMLSignature(VerifyXMLSignatureRequest request) + throws MOAException { + + final TransactionContext context = TransactionContextManager.getInstance().getTransactionContext(); + final LoggingContext loggingCtx = LoggingContextManager.getInstance().getLoggingContext(); + final XMLSignatureVerificationProfileFactory profileFactory = new XMLSignatureVerificationProfileFactory( + request); + final VerifyXMLSignatureResponseBuilder responseBuilder = new VerifyXMLSignatureResponseBuilder(); + ExtendedXMLSignatureVerificationResult result = null; + XMLSignatureVerificationResult plainResult; + XMLSignatureVerificationProfile profile; + ReferencesCheckResult signatureManifestCheck; + DataObjectFactory dataObjFactory; + XMLDataObject signatureEnvironment; + Node signatureEnvironmentParent = null; + Element requestElement = null; + XMLSignature xmlSignature; + Date signingTime; + List supplements; + List dataObjectList; + + // get the supplements + supplements = getSupplements(request); + + // build XMLSignature + dataObjFactory = DataObjectFactory.getInstance(); + signatureEnvironment = dataObjFactory + .createSignatureEnvironment(request.getSignatureInfo().getVerifySignatureEnvironment(), supplements); + xmlSignature = buildXMLSignature(signatureEnvironment, request); + + // build the list of DataObjects + dataObjectList = buildDataObjectList(supplements); + + // build profile + profile = profileFactory.createProfile(); + + // get the signingTime + signingTime = request.getDateTime(); + + // make the signature environment the root of the document, if it is not + // a + // separate document anyway; this is done to assure that + // canonicalization + // of the signature environment contains the correct namespace + // declarations + requestElement = signatureEnvironment.getElement().getOwnerDocument().getDocumentElement(); + if (requestElement != signatureEnvironment.getElement()) { + signatureEnvironmentParent = signatureEnvironment.getElement().getParentNode(); + requestElement.getOwnerDocument().replaceChild(signatureEnvironment.getElement(), requestElement); + } + + QCSSCDResult qcsscdresult = new QCSSCDResult(); + final String tpID = profile.getCertificateValidationProfile().getTrustStoreProfile().getId(); + final ConfigurationProvider config = ConfigurationProvider.getInstance(); + final TrustProfile tp = config.getTrustProfile(tpID); + + // verify the signature + try { + final XMLSignatureVerificationModule module = XMLSignatureVerificationModuleFactory.getInstance(); + + module.setLog(new IaikLog(loggingCtx.getNodeID())); + + if (request.getExtendedValidaiton()) { + result = module.verifyXAdESSignature(xmlSignature, dataObjectList, profile, signingTime, + new TransactionId(context.getTransactionID())); + plainResult = result.getXMLSignatureVerificationResult(); + } else { + plainResult = module.verifySignature(xmlSignature, dataObjectList, profile, signingTime, + new TransactionId(context.getTransactionID())); + } + } catch (final IAIKException e) { + final MOAException moaException = IaikExceptionMapper.getInstance().map(e); + throw moaException; + } catch (final IAIKRuntimeException e) { + final MOAException moaException = IaikExceptionMapper.getInstance().map(e); + throw moaException; + } + + ExtendedCertificateCheckResult extCheckResult; + if (result != null) { + List adesResults = null;// + + adesResults = AdESResultUtils.getAdESResult(result.getFormVerificationResult()); + + if (Logger.isDebugEnabled()) { + if (adesResults != null) { + final Iterator adesIterator = adesResults.iterator(); + while (adesIterator.hasNext()) { + Logger.debug("ADES Formresults: " + adesIterator.next().toString()); + } + } + } + + responseBuilder.setAdESFormResults(adesResults); + + try { + // Logger.info("Extended Validation Report: " + result.getName()); + Logger.debug("Extended Validation Code: " + result.getResultCode().toString()); + Logger.debug("Extended Validation Info: " + result.getInfo()); + + extCheckResult = AdESResultUtils.getExtendedResult(result.getResultCode()); + responseBuilder.setExtendedCertificateCheckResult(extCheckResult); + + } catch (final NullPointerException e) { + Logger.info("No extendend validation result available."); + } + } + // QC/SSCD check + final List list = plainResult.getCertificateValidationResult().getCertificateChain(); + if (list != null) { + final X509Certificate[] chain = new X509Certificate[list.size()]; + + final Iterator it = list.iterator(); + int i = 0; + while (it.hasNext()) { + chain[i] = (X509Certificate) it.next(); + i++; + } + + qcsscdresult = CertificateUtils.checkQCSSCD(chain, plainResult.getSigningTime(), tp.isTSLEnabled(), + config); + } + + // get signer certificate issuer country code + final String issuerCountryCode = CertificateUtils.getIssuerCountry((X509Certificate) list.get(0)); + + // swap back in the request as root document + if (requestElement != signatureEnvironment.getElement()) { + requestElement.getOwnerDocument().replaceChild(requestElement, signatureEnvironment.getElement()); + signatureEnvironmentParent.appendChild(signatureEnvironment.getElement()); + } + + // check the result + signatureManifestCheck = validateSignatureManifest(request, plainResult, + profile); + + // Check if signer certificate is in trust profile's allowed signer + // certificates pool + final TrustProfile trustProfile = context.getConfiguration().getTrustProfile(request.getTrustProfileId()); + final CheckResult certificateCheck = validateSignerCertificate(plainResult, + trustProfile); + + // build the response + responseBuilder.setResult(plainResult, profile, signatureManifestCheck, + certificateCheck, qcsscdresult.isQC(), qcsscdresult.isQCSourceTSL(), qcsscdresult.isSSCD(), + qcsscdresult.isSSCDSourceTSL(), tp.isTSLEnabled(), issuerCountryCode, qcsscdresult.getTslInfos(), + request.getExtendedValidaiton()); + return responseBuilder.getResponse(); + } + + /** + * Checks if the signer certificate matches one of the allowed signer + * certificates specified in the provided <code>trustProfile</code>. + * + * @param result The result produced by the + * <code>XMLSignatureVerificationModule</code>. + * + * @param trustProfile The trust profile the signer certificate is validated + * against. + * + * @return The overal result of the certificate validation for the signer + * certificate. + * + * @throws MOAException if one of the signer certificates specified in the + * <code>trustProfile</code> cannot be read from the file + * system. + */ + private CheckResult validateSignerCertificate(XMLSignatureVerificationResult result, + TrustProfile trustProfile) + throws MOAException { + final MessageProvider msg = MessageProvider.getInstance(); + + int resultCode = result.getCertificateValidationResult().getValidationResultCode().intValue(); + + if (resultCode == 0 && trustProfile.getSignerCertsUri() != null) { + final X509Certificate signerCertificate = (X509Certificate) result.getCertificateValidationResult() + .getCertificateChain().get(0); + + File signerCertsDir = null; + try { + signerCertsDir = new File(new URI(trustProfile.getSignerCertsUri()).getPath()); + } catch (final URIException e) { + throw new MOASystemException("2900", null, e); // Should not + // happen, + // already + // checked at + // loading the + // MOA + // configuration + } + + final File[] files = signerCertsDir.listFiles(); + if (files == null) { + resultCode = 1; + } + int i; + for (i = 0; i < files.length; i++) { + if (!files[i].isDirectory()) { + FileInputStream currentFIS = null; + try { + currentFIS = new FileInputStream(files[i]); + } catch (final FileNotFoundException e) { + throw new MOASystemException("2900", null, e); + } + + try { + final X509Certificate currentCert = new X509Certificate(currentFIS); + currentFIS.close(); + if (currentCert.equals(signerCertificate)) { + break; + } + } catch (final Exception e) { + // Simply ignore file if it cannot be interpreted as + // certificate + final String logMsg = msg.getMessage("invoker.03", + new Object[] { trustProfile.getId(), files[i].getName() }); + Logger.warn(logMsg); + try { + currentFIS.close(); + } catch (final IOException e1) { + // If clean-up fails, do nothing + } + } + } + } + if (i >= files.length) { + resultCode = 1; // No signer certificate from the trustprofile + // pool matches the actual signer certificate + } + } + + final SPSSFactory factory = SPSSFactory.getInstance(); + return factory.createCheckResult(resultCode, null); + } + + /** + * Select the <code>dsig:Signature</code> DOM element within the signature + * environment. + * + * @param signatureEnvironment The signature environment containing the + * <code>dsig:Signature</code>. + * @param request The <code>VerifyXMLSignatureRequest</code> + * containing the signature environment. + * @return The <code>dsig:Signature</code> element wrapped in a + * <code>XMLSignature</code> object. + * @throws MOAApplicationException An error occurred locating the + * <code>dsig:Signature</code>. + */ + private XMLSignature buildXMLSignature(XMLDataObject signatureEnvironment, + VerifyXMLSignatureRequest request) + throws MOAApplicationException { + + final VerifySignatureLocation signatureLocation = request.getSignatureInfo().getVerifySignatureLocation(); + Element signatureParent; + + // evaluate the VerifySignatureLocation to get the signature parent + signatureParent = InvokerUtils.evaluateSignatureLocation(signatureEnvironment.getElement(), + signatureLocation); + + // check for signatureParent to be a dsig:Signature element + if (!"Signature".equals(signatureParent.getLocalName()) + || !Constants.DSIG_NS_URI.equals(signatureParent.getNamespaceURI())) { + throw new MOAApplicationException("2266", null); + } + + return new XMLSignatureImpl(signatureParent); + } + + /** + * Build the supplemental data objects contained in the + * <code>VerifyXMLSignatureRequest</code>. + * + * @param supplements A <code>List</code> of + * <code>XMLDataObjectAssociation</code>s containing the + * supplement data. + * @return A <code>List</code> of <code>DataObject</code>s representing the + * supplemental data objects. + * @throws MOASystemException A system error occurred building one of the + * data objects. + * @throws MOAApplicationException An error occurred building one of the data + * objects. + */ + private List buildDataObjectList(List supplements) throws MOASystemException, MOAApplicationException { + final List dataObjectList = new ArrayList(); + + final DataObjectFactory factory = DataObjectFactory.getInstance(); + DataObject dataObject; + Iterator iter; + + if (supplements != null) { + for (iter = supplements.iterator(); iter.hasNext();) { + final XMLDataObjectAssociation supplement = (XMLDataObjectAssociation) iter.next(); + dataObject = factory.createFromXmlDataObjectAssociation(supplement, true, false); + dataObjectList.add(dataObject); + } + } + + return dataObjectList; + + } + + /** + * Get the supplemental data contained in the + * <code>VerifyXMLSignatureRequest</code>. + * + * @param request The <code>VerifyXMLSignatureRequest</code> containing the + * supplemental data. + * @return A <code>List</code> of <code>XMLDataObjectAssociation</code> objects + * containing the supplemental data. + * @throws MOAApplicationException An error occurred resolving one of the + * supplement profiles. + */ + private List getSupplements(VerifyXMLSignatureRequest request) throws MOAApplicationException { + final TransactionContext context = TransactionContextManager.getInstance().getTransactionContext(); + final ConfigurationProvider config = context.getConfiguration(); + final List supplementProfiles = request.getSupplementProfiles(); + + final List supplements = new ArrayList(); + + if (supplementProfiles != null) { + + final List mappedProfiles = ProfileMapper.mapSupplementProfiles(supplementProfiles, config); + Iterator iter; + + for (iter = mappedProfiles.iterator(); iter.hasNext();) { + final SupplementProfileExplicit profile = (SupplementProfileExplicit) iter.next(); + supplements.add(profile.getSupplementProfile()); + } + + } + return supplements; + } + + /** + * Perform additional validations of the + * <code>XMLSignatureVerificationResult</code>. + * + * <p> + * In particular, it is verified that: + * <ul> + * <li>Each <code>ReferenceData</code> object contains transformation chain that + * matches one of the <code>Transforms</code> given in the corresponding + * <code>SignatureManifestCheckParams/ReferenceInfo</code></li> + * <li>The hash values of the <code>TransformParameter</code>s are valid.</li> + * </ul> + * </p> + * + * @param request The <code>VerifyXMLSignatureRequest</code> containing the + * signature to verify. + * @param result The result produced by + * <code>XMLSignatureVerificationModule</code>. + * @param profile The profile used for validating the <code>request</code>. + * @return The result of additional validations of the signature manifest. + * @throws MOAApplicationException Post-validation of the + * <code>XMLSignatureVerificaitonResult</code> + * failed. + */ + private ReferencesCheckResult validateSignatureManifest(VerifyXMLSignatureRequest request, + XMLSignatureVerificationResult result, XMLSignatureVerificationProfile profile) + throws MOAApplicationException { + + final SPSSFactory factory = SPSSFactory.getInstance(); + final MessageProvider msg = MessageProvider.getInstance(); + + // validate that each ReferenceData object contains transforms specified + // in the corresponding SignatureManifestCheckParams/ReferenceInfo + if (request.getSignatureManifestCheckParams() != null) { + final List refInfos = request.getSignatureManifestCheckParams().getReferenceInfos(); + final List refDatas = filterReferenceInfos(result.getReferenceDataList()); + final List failedReferencesList = new ArrayList(); + Iterator refInfoIter; + Iterator refDataIter; + + if (refInfos.size() != refDatas.size()) { + return factory.createReferencesCheckResult(1, null); + } + + refInfoIter = refInfos.iterator(); + refDataIter = filterReferenceInfos(result.getReferenceDataList()).iterator(); + + while (refInfoIter.hasNext()) { + final ReferenceInfo refInfo = (ReferenceInfo) refInfoIter.next(); + final ReferenceData refData = (ReferenceData) refDataIter.next(); + final List transforms = buildTransformsList(refInfo); + boolean found = false; + Iterator trIter; + + for (trIter = transforms.iterator(); trIter.hasNext() && !found;) { + found = trIter.next().equals(refData.getTransformationList()); + } + + if (!found) { + final Integer refIndex = new Integer(refData.getReferenceIndex()); + final String logMsg = msg.getMessage("invoker.01", new Object[] { refIndex }); + + failedReferencesList.add(refIndex); + Logger.debug(new LogMsg(logMsg)); + } + } + + if (!failedReferencesList.isEmpty()) { + // at least one reference failed - return their indexes and + // check code 1 + final int[] failedReferences = CollectionUtils.toIntArray(failedReferencesList); + final ReferencesCheckResultInfo checkInfo = factory.createReferencesCheckResultInfo(null, + failedReferences); + + return factory.createReferencesCheckResult(1, checkInfo); + } + } + + // validate the hashes contained in all the ReferenceInfo objects of the + // security layer manifest + if (request.getSignatureManifestCheckParams() != null && result.containsSecurityLayerManifest()) { + final Map hashValues = buildTransformParameterHashValues(request); + final Set transformParameterURIs = buildTransformParameterURIs(profile.getTransformationSupplements()); + final List referenceInfoList = result.getSecurityLayerManifest().getReferenceDataList(); + Iterator refIter; + + for (refIter = referenceInfoList.iterator(); refIter.hasNext();) { + final iaik.server.modules.xmlverify.ReferenceInfo ref = + (iaik.server.modules.xmlverify.ReferenceInfo) refIter + .next(); + final byte[] hash = (byte[]) hashValues.get(ref.getURI()); + + if (!transformParameterURIs.contains(ref.getURI()) + || hash != null && !Arrays.equals(hash, ref.getHashValue())) { + + // the transform parameter doesn't exist or the hashs do not + // match + // return the index of the failed reference and check code 1 + final int[] failedReferences = new int[] { ref.getReferenceIndex() }; + final ReferencesCheckResultInfo checkInfo = factory.createReferencesCheckResultInfo(null, + failedReferences); + final String logMsg = msg.getMessage("invoker.02", new Object[] { new Integer(ref + .getReferenceIndex()) }); + + Logger.debug(new LogMsg(logMsg)); + + return factory.createReferencesCheckResult(1, checkInfo); + } + } + } + + return factory.createReferencesCheckResult(0, null); + } + + /** + * Get all <code>Transform</code>s contained in all the + * <code>VerifyTransformsInfoProfile</code>s of the given + * <code>ReferenceInfo</code>. + * + * @param refInfo The <code>ReferenceInfo</code> object containing the + * transformations. + * @return A <code>List</code> of <code>List</code>s. Each of the + * <code>List</code>s contains <code>Transformation</code> objects. + * @throws MOAApplicationException An error occurred building one of the + * <code>Transformation</code>s. + */ + private List buildTransformsList(ReferenceInfo refInfo) throws MOAApplicationException { + + final TransactionContext context = TransactionContextManager.getInstance().getTransactionContext(); + final ConfigurationProvider config = context.getConfiguration(); + final List profiles = refInfo.getVerifyTransformsInfoProfiles(); + final List mappedProfiles = ProfileMapper.mapVerifyTransformsInfoProfiles(profiles, config); + final List transformsList = new ArrayList(); + final TransformationFactory factory = TransformationFactory.getInstance(); + Iterator iter; + + for (iter = mappedProfiles.iterator(); iter.hasNext();) { + final VerifyTransformsInfoProfileExplicit profile = (VerifyTransformsInfoProfileExplicit) iter.next(); + final List transforms = profile.getTransforms(); + + if (transforms != null) { + transformsList.add(factory.createTransformationList(transforms)); + } + } + + return transformsList; + } + + /** + * Build the <code>Set</code> of all <code>TransformParameter</code> URIs. + * + * @param transformParameters The <code>List</code> of + * <code>TransformParameter</code>s, as provided to + * the verification. + * @return The <code>Set</code> of all <code>TransformParameter</code> URIs. + */ + private Set buildTransformParameterURIs(List transformParameters) { + final Set uris = new HashSet(); + Iterator iter; + + for (iter = transformParameters.iterator(); iter.hasNext();) { + final DataObject transformParameter = (DataObject) iter.next(); + uris.add(transformParameter.getURI()); + } + + return uris; + } + + /** + * Build a mapping between <code>TransformParameter</code> URIs (a + * <code>String</code> and <code>dsig:HashValue</code> (a <code>byte[]</code>). + * + * @param request The <code>VerifyXMLSignatureRequest</code>. + * @return Map The resulting mapping. + * @throws MOAApplicationException An error occurred accessing one of the + * profiles. + */ + private Map buildTransformParameterHashValues(VerifyXMLSignatureRequest request) + throws MOAApplicationException { + + final TransactionContext context = TransactionContextManager.getInstance().getTransactionContext(); + final ConfigurationProvider config = context.getConfiguration(); + final Map hashValues = new HashMap(); + final List refInfos = request.getSignatureManifestCheckParams().getReferenceInfos(); + Iterator refIter; + + for (refIter = refInfos.iterator(); refIter.hasNext();) { + final ReferenceInfo refInfo = (ReferenceInfo) refIter.next(); + final List profiles = refInfo.getVerifyTransformsInfoProfiles(); + final List mappedProfiles = ProfileMapper.mapVerifyTransformsInfoProfiles(profiles, config); + Iterator prIter; + + for (prIter = mappedProfiles.iterator(); prIter.hasNext();) { + final VerifyTransformsInfoProfileExplicit profile = (VerifyTransformsInfoProfileExplicit) prIter + .next(); + final List trParameters = profile.getTransformParameters(); + Iterator trIter; + + for (trIter = trParameters.iterator(); trIter.hasNext();) { + final TransformParameter transformParameter = (TransformParameter) trIter.next(); + final String uri = transformParameter.getURI(); + + if (transformParameter.getTransformParameterType() == TransformParameter.HASH_TRANSFORMPARAMETER) { + hashValues.put(uri, ((TransformParameterHash) transformParameter).getDigestValue()); + } + + } + } + } + return hashValues; + } + + /** + * Filter the <code>ReferenceInfo</code>s returned by the + * <code>VerifyXMLSignatureResult</code> for comparison with the + * <code>ReferenceInfo</code> elements in the request. + * + * @param referenceInfos The <code>ReferenceInfo</code>s from the + * <code>VerifyXMLSignatureResult</code>. + * @return A <code>List</code> of all <code>ReferenceInfo</code>s whose type is + * not a XMLDsig manifest, Security Layer manifest, or ETSI signed + * property. + */ + private List filterReferenceInfos(List referenceInfos) { + final List filtered = new ArrayList(); + Iterator iter; + + for (iter = referenceInfos.iterator(); iter.hasNext();) { + final iaik.server.modules.xmlverify.ReferenceInfo refInfo = + (iaik.server.modules.xmlverify.ReferenceInfo) iter + .next(); + final String refType = refInfo.getReferenceType(); + + if (refType == null || !FILTERED_REF_TYPES.contains(refType)) { + filtered.add(refInfo); + } + } + + return filtered; + } + + private List getAdESResult(ExtendedXMLSignatureVerificationResult adesFormVerification) + throws ConfigurationException { + if (adesFormVerification == null) { + // no form information + return null; + } + + final List adesList = new ArrayList(); + + /* + * checkSubResult(adesFormVerification.getSubResult(SignatureVerificationProfile + * .LEVEL_LTA), SignatureVerificationProfile.LEVEL_LTA, adesList); + * checkSubResult(adesFormVerification.getSubResult(SignatureVerificationProfile + * .LEVEL_LT), SignatureVerificationProfile.LEVEL_LT, adesList); + * checkSubResult(adesFormVerification.getSubResult(SignatureVerificationProfile + * .LEVEL_T), SignatureVerificationProfile.LEVEL_T, adesList); + * checkSubResult(adesFormVerification.getSubResult(SignatureVerificationProfile + * .LEVEL_B), SignatureVerificationProfile.LEVEL_B, adesList); + */ + + AdESResultUtils.checkSubResult(adesFormVerification.getSubResult( + iaik.esi.sva.util.Constants.LONG_TERM_VALIDATION), + SignatureVerificationProfile.LEVEL_LT, adesList); + AdESResultUtils.checkSubResult(adesFormVerification.getSubResult( + iaik.esi.sva.util.Constants.ADES_T_VALIDATION), + SignatureVerificationProfile.LEVEL_T, adesList); + AdESResultUtils.checkSubResult(adesFormVerification.getSubResult("basic report"), + SignatureVerificationProfile.LEVEL_B, adesList); + + return adesList; + } } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/XMLSignatureVerificationProfileFactory.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/XMLSignatureVerificationProfileFactory.java index 3e4c712..7fcd0e9 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/XMLSignatureVerificationProfileFactory.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/XMLSignatureVerificationProfileFactory.java @@ -21,7 +21,6 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.server.invoke; import java.util.ArrayList; @@ -29,8 +28,6 @@ import java.util.Collections; import java.util.Iterator; import java.util.List; -import iaik.server.modules.xmlverify.XMLSignatureVerificationProfile; - import at.gv.egovernment.moa.spss.MOAApplicationException; import at.gv.egovernment.moa.spss.MOASystemException; import at.gv.egovernment.moa.spss.api.xmlverify.ReferenceInfo; @@ -43,26 +40,29 @@ import at.gv.egovernment.moa.spss.server.iaik.pki.PKIProfileImpl; import at.gv.egovernment.moa.spss.server.iaik.xmlverify.XMLSignatureVerificationProfileImpl; import at.gv.egovernment.moa.spss.server.transaction.TransactionContext; import at.gv.egovernment.moa.spss.server.transaction.TransactionContextManager; +import iaik.server.modules.xmlverify.XMLSignatureVerificationProfile; /** * A factory to create a <code>XMLSignatureVerificationProfile</code> from a * <code>VerifyXMLSignatureRequest</code>, based on the current MOA * configuration. - * + * * @author Patrick Peck * @version $Id$ */ public class XMLSignatureVerificationProfileFactory { - /** The <code>VerifyXMLSignatureRequest</code> for which to create profile - * information. */ - private VerifyXMLSignatureRequest request; + /** + * The <code>VerifyXMLSignatureRequest</code> for which to create profile + * information. + */ + private final VerifyXMLSignatureRequest request; /** * Create a new <code>XMLSignatureVerificationProfileFactory</code>. - * - * @param request The <code>VerifyXMLSignatureRequest</code> to extract - * profile data from. + * + * @param request The <code>VerifyXMLSignatureRequest</code> to extract profile + * data from. */ public XMLSignatureVerificationProfileFactory(VerifyXMLSignatureRequest request) { this.request = request; @@ -71,19 +71,19 @@ public class XMLSignatureVerificationProfileFactory { /** * Create a <code>XMLSignatureCreationProfile</code> from the * <code>VerifyXMLSignaturesRequest</code> and the current MOA configuration. - * + * * @return The <code>XMLSignatureVerificationProfile</code> containing - * additional information for verifying an XML signature. - * @throws MOASystemException A system error occurred building the profile. + * additional information for verifying an XML signature. + * @throws MOASystemException A system error occurred building the profile. * @throws MOAApplicationException An error occurred building the profile. */ public XMLSignatureVerificationProfile createProfile() - throws MOASystemException, MOAApplicationException { - TransactionContext context = - TransactionContextManager.getInstance().getTransactionContext(); - ConfigurationProvider config = context.getConfiguration(); - XMLSignatureVerificationProfileImpl profile = - new XMLSignatureVerificationProfileImpl(); + throws MOASystemException, MOAApplicationException { + final TransactionContext context = + TransactionContextManager.getInstance().getTransactionContext(); + final ConfigurationProvider config = context.getConfiguration(); + final XMLSignatureVerificationProfileImpl profile = + new XMLSignatureVerificationProfileImpl(); SignatureManifestCheckParams checkParams; String trustProfileID; @@ -93,49 +93,50 @@ public class XMLSignatureVerificationProfileFactory { // set the certificate validation profile trustProfileID = request.getTrustProfileId(); profile.setCertificateValidationProfile( - new PKIProfileImpl(config, trustProfileID)); + new PKIProfileImpl(config, trustProfileID)); // set whether hash input data is to be included profile.setIncludeHashInputData(request.getReturnHashInputData()); // set the security layer manifest check parameters - // and transformation supplements (if present) + // and transformation supplements (if present) checkParams = request.getSignatureManifestCheckParams(); profile.setCheckSecurityLayerManifest(true); - profile.setIncludeReferenceInputData(checkParams != null ? checkParams.getReturnReferenceInputData() : false); + profile.setIncludeReferenceInputData(checkParams != null ? checkParams.getReturnReferenceInputData() + : false); if (checkParams != null) { - List transformationSupplements; - transformationSupplements = buildTransformationSupplements(); - profile.setTransformationSupplements(transformationSupplements); + List transformationSupplements; + transformationSupplements = buildTransformationSupplements(); + profile.setTransformationSupplements(transformationSupplements); } else { - profile.setTransformationSupplements(Collections.EMPTY_LIST); + profile.setTransformationSupplements(Collections.EMPTY_LIST); } - + profile.setPermitFileURIs(config.getPermitFileURIs()); - + return profile; } /** * Build supplemental data objects used in the transformations. - * + * * @return A <code>List</code> of <code>DataObject</code>s providing - * supplemental data to the transformations. - * @throws MOASystemException A system error occurred building one of the - * transformations. + * supplemental data to the transformations. + * @throws MOASystemException A system error occurred building one of the + * transformations. * @throws MOAApplicationException An error occurred building one of the - * transformations. + * transformations. */ public List buildTransformationSupplements() - throws MOASystemException, MOAApplicationException { - TransactionContext context = - TransactionContextManager.getInstance().getTransactionContext(); - ConfigurationProvider config = context.getConfiguration(); - SignatureManifestCheckParams checkParams = - request.getSignatureManifestCheckParams(); - List transformsProfiles = new ArrayList(); - List transformationSupplements = new ArrayList(); - DataObjectFactory factory = DataObjectFactory.getInstance(); + throws MOASystemException, MOAApplicationException { + final TransactionContext context = + TransactionContextManager.getInstance().getTransactionContext(); + final ConfigurationProvider config = context.getConfiguration(); + final SignatureManifestCheckParams checkParams = + request.getSignatureManifestCheckParams(); + final List transformsProfiles = new ArrayList(); + final List transformationSupplements = new ArrayList(); + final DataObjectFactory factory = DataObjectFactory.getInstance(); List refInfos = checkParams.getReferenceInfos(); Iterator refIter; Iterator prIter; @@ -144,26 +145,26 @@ public class XMLSignatureVerificationProfileFactory { // build the list of all VerifyTransformsInfoProfiles in all ReferenceInfos refInfos = checkParams.getReferenceInfos(); for (refIter = refInfos.iterator(); refIter.hasNext();) { - ReferenceInfo refInfo = (ReferenceInfo) refIter.next(); - List profiles = refInfo.getVerifyTransformsInfoProfiles(); + final ReferenceInfo refInfo = (ReferenceInfo) refIter.next(); + final List profiles = refInfo.getVerifyTransformsInfoProfiles(); transformsProfiles.addAll( - ProfileMapper.mapVerifyTransformsInfoProfiles(profiles, config)); + ProfileMapper.mapVerifyTransformsInfoProfiles(profiles, config)); } // build the DataObjects for (prIter = transformsProfiles.iterator(); prIter.hasNext();) { - VerifyTransformsInfoProfileExplicit profile = - (VerifyTransformsInfoProfileExplicit) prIter.next(); - List transformParameters = profile.getTransformParameters(); + final VerifyTransformsInfoProfileExplicit profile = + (VerifyTransformsInfoProfileExplicit) prIter.next(); + final List transformParameters = profile.getTransformParameters(); for (trIter = transformParameters.iterator(); trIter.hasNext();) { - TransformParameter trParam = (TransformParameter) trIter.next(); + final TransformParameter trParam = (TransformParameter) trIter.next(); transformationSupplements.add( - factory.createFromTransformParameter(trParam)); + factory.createFromTransformParameter(trParam)); } } - + return transformationSupplements; } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/logging/IaikLog.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/logging/IaikLog.java index dcb1397..f477588 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/logging/IaikLog.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/logging/IaikLog.java @@ -21,20 +21,17 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.server.logging; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import iaik.logging.TransactionId; /** - * An implementation of the <code>iaik.logging.Log</code> - * interface that is based on Jakarta Commons-Logging. - * + * An implementation of the <code>iaik.logging.Log</code> interface that is + * based on Jakarta Commons-Logging. + * * @author Fatemeh Philippi * @version $Id$ */ @@ -45,11 +42,11 @@ public class IaikLog implements iaik.logging.Log { private static Logger log = LoggerFactory.getLogger(IAIK_LOG_HIERARCHY); /** The node ID to use. */ private String nodeId; - + /** * Create a new <code>IaikLog</code>. - * - * @param nodeId The node ID for this <code>Log</code> object. + * + * @param nodeId The node ID for this <code>Log</code> object. */ public IaikLog(String nodeId) { this.nodeId = nodeId; @@ -58,6 +55,7 @@ public class IaikLog implements iaik.logging.Log { /** * @see iaik.logging.Log#isDebugEnabled() */ + @Override public boolean isDebugEnabled() { return log.isDebugEnabled(); } @@ -65,8 +63,9 @@ public class IaikLog implements iaik.logging.Log { /** * @see iaik.logging.Log#debug(TransactionId, Object, Throwable) */ + @Override public void debug(TransactionId transactionId, Object message, Throwable t) { - IaikLogMsg msg = new IaikLogMsg(transactionId, nodeId, message); + final IaikLogMsg msg = new IaikLogMsg(transactionId, nodeId, message); log.debug(msg.toString(), t); } @@ -74,6 +73,7 @@ public class IaikLog implements iaik.logging.Log { /** * @see iaik.logging.Log#isInfoEnabled() */ + @Override public boolean isInfoEnabled() { return log.isInfoEnabled(); } @@ -81,8 +81,9 @@ public class IaikLog implements iaik.logging.Log { /** * @see iaik.logging.Log#info(TransactionId, Object, Throwable) */ + @Override public void info(TransactionId transactionId, Object message, Throwable t) { - IaikLogMsg msg = new IaikLogMsg(transactionId, nodeId, message); + final IaikLogMsg msg = new IaikLogMsg(transactionId, nodeId, message); log.info(msg.toString(), t); } @@ -90,6 +91,7 @@ public class IaikLog implements iaik.logging.Log { /** * @see iaik.logging.Log#isWarnEnabled() */ + @Override public boolean isWarnEnabled() { return log.isWarnEnabled(); } @@ -97,8 +99,9 @@ public class IaikLog implements iaik.logging.Log { /** * @see iaik.logging.Log#warn(TransactionId, Object, Throwable) */ + @Override public void warn(TransactionId transactionId, Object message, Throwable t) { - IaikLogMsg msg = new IaikLogMsg(transactionId, nodeId, message); + final IaikLogMsg msg = new IaikLogMsg(transactionId, nodeId, message); log.warn(msg.toString(), t); } @@ -106,6 +109,7 @@ public class IaikLog implements iaik.logging.Log { /** * @see iaik.logging.Log#isErrorEnabled() */ + @Override public boolean isErrorEnabled() { return log.isErrorEnabled(); } @@ -113,8 +117,9 @@ public class IaikLog implements iaik.logging.Log { /** * @see iaik.logging.Log#error(TransactionId, Object, Throwable) */ + @Override public void error(TransactionId transactionId, Object message, Throwable t) { - IaikLogMsg msg = new IaikLogMsg(transactionId, nodeId, message); + final IaikLogMsg msg = new IaikLogMsg(transactionId, nodeId, message); log.error(msg.toString(), t); } @@ -122,6 +127,7 @@ public class IaikLog implements iaik.logging.Log { /** * @see iaik.logging.Log#isFatalEnabled() */ + @Override public boolean isFatalEnabled() { return log.isErrorEnabled(); } @@ -129,8 +135,9 @@ public class IaikLog implements iaik.logging.Log { /** * @see iaik.logging.Log#fatal(TransactionId, Object, Throwable) */ + @Override public void fatal(TransactionId transactionId, Object message, Throwable t) { - IaikLogMsg msg = new IaikLogMsg(transactionId, nodeId, message); + final IaikLogMsg msg = new IaikLogMsg(transactionId, nodeId, message); log.error(msg.toString(), t); } @@ -138,6 +145,7 @@ public class IaikLog implements iaik.logging.Log { /** * @see iaik.logging.Log#setNodeId(String) */ + @Override public void setNodeId(String nodeId) { this.nodeId = nodeId; } @@ -145,6 +153,7 @@ public class IaikLog implements iaik.logging.Log { /** * @see iaik.logging.Log#getNodeId() */ + @Override public String getNodeId() { return nodeId; } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/logging/IaikLogFactory.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/logging/IaikLogFactory.java index cca9117..e0a4ea6 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/logging/IaikLogFactory.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/logging/IaikLogFactory.java @@ -21,43 +21,49 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.server.logging; +import at.gv.egovernment.moaspss.logging.LoggingContext; import at.gv.egovernment.moaspss.logging.LoggingContextManager; import iaik.logging.Log; import iaik.logging.LogConfigurationException; import iaik.logging.LogFactory; /** - * An implementation of the <code>iaik.logging.LogFactory</code> abstract - * class to log messages to the MOA logging subsystem. - * + * An implementation of the <code>iaik.logging.LogFactory</code> abstract class + * to log messages to the MOA logging subsystem. + * * @author Patrick Peck * @version $Id$ */ public class IaikLogFactory extends LogFactory { + @Override public Log getInstance(Class clazz) throws LogConfigurationException { - return getInstanceImpl(); + return getInstanceImpl(clazz.getName()); } + @Override public Log getInstance(String name) throws LogConfigurationException { - return getInstanceImpl(); + return getInstanceImpl(name); } /** * Return an instance of <code>iaik.logging.Log</code>. - * + * * @return The <code>iaik.logging.Log</code> object to log messages to. - */ - private Log getInstanceImpl() { - String nodeID = - LoggingContextManager.getInstance().getLoggingContext().getNodeID(); - - return new IaikLog(nodeID); + */ + private Log getInstanceImpl(String name) { + final LoggingContext context = LoggingContextManager.getInstance().getLoggingContext(); + if (context != null) { + return new IaikLog(context.getNodeID()); + } else { + return new IaikLog("Internal"); + } + } + @Override public void release() { // we do not hold any resources } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/logging/IaikLogMsg.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/logging/IaikLogMsg.java index 7e4ff84..d096b2e 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/logging/IaikLogMsg.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/logging/IaikLogMsg.java @@ -21,34 +21,33 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.server.logging; import iaik.logging.TransactionId; /** * A unified message type to log messages from the IAIK subsystem. - * + * * @author Patrick Peck * @version $Id$ */ public class IaikLogMsg { - + /** The transaction ID of this message. */ - private TransactionId transactionId; + private final TransactionId transactionId; /** The node ID of this message. */ - private String nodeId; + private final String nodeId; /** The message to log. */ - private Object message; - + private final Object message; + /** * Create a <code>IaikLogMsg</code> object. - * - * @param transactionId The transaction id of the transaction which - * generated this log message. May be <code>null</code>. - * @param nodeId The node id where this message was generated. May be - * <code>null</code>. - * @param message The actual message to log. May be <code>null</code>. + * + * @param transactionId The transaction id of the transaction which generated + * this log message. May be <code>null</code>. + * @param nodeId The node id where this message was generated. May be + * <code>null</code>. + * @param message The actual message to log. May be <code>null</code>. */ public IaikLogMsg(TransactionId transactionId, String nodeId, Object message) { this.transactionId = transactionId; @@ -56,22 +55,22 @@ public class IaikLogMsg { this.message = message; } - /** * Convert this log message to a <code>String</code>. - * - * @return The <code>String</code> representation of this log message. + * + * @return The <code>String</code> representation of this log message. */ + @Override public String toString() { - StringBuffer msg = new StringBuffer(); - + final StringBuffer msg = new StringBuffer(); + msg.append("TID="); msg.append(transactionId != null ? transactionId.getLogID() : "<null>"); msg.append(" NID="); msg.append(nodeId != null ? nodeId : "<null>"); msg.append(" MSG="); msg.append(message != null ? message.toString() : "<null>"); - + return msg.toString(); } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/logging/TransactionId.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/logging/TransactionId.java index ba76c0b..75623fd 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/logging/TransactionId.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/logging/TransactionId.java @@ -21,25 +21,24 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.server.logging; /** * An implementation of the <code>iaik.logging.TransactionId</code> interface. - * + * * @author Patrick Peck * @version $Id$ */ public class TransactionId implements iaik.logging.TransactionId { - + /** The String representation for logging the transaction ID. */ - private String logID; - + private final String logID; + /** * Create a <code>TransactionId</code> object. - * + * * @param logID The transaction id as it should be presented to the logging - * subsystem. + * subsystem. */ public TransactionId(String logID) { this.logID = logID; @@ -48,13 +47,15 @@ public class TransactionId implements iaik.logging.TransactionId { /** * @see iaik.logging.TransactionId#getLogID() */ + @Override public String getLogID() { return logID; } - + /** * @see java.lang.Object#toString() */ + @Override public String toString() { return getLogID(); } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/monitoring/ServiceStatusContainer.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/monitoring/ServiceStatusContainer.java new file mode 100644 index 0000000..9c5bef3 --- /dev/null +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/monitoring/ServiceStatusContainer.java @@ -0,0 +1,44 @@ +package at.gv.egovernment.moa.spss.server.monitoring; + +import java.util.List; + +import at.gv.egovernment.moa.sig.tsl.engine.data.TSLProcessingResultElement; +import at.gv.egovernment.moa.spss.tsl.TSLServiceFactory; + +public class ServiceStatusContainer { + + public static final String STATUS_NOT_SET = "no status message"; + public static final String STATUS_OK = "ok"; + + private static boolean TSLStatusValid = false; + private static String TSLStatusMsg = STATUS_NOT_SET; + private static List<TSLProcessingResultElement> tslDetailStatus = null; + + public static boolean getStatus() { + return TSLStatusValid; + + } + + public static String getStatusMsg() { + return TSLStatusMsg; + + } + + public static List<TSLProcessingResultElement> getTslDetailStatus() { + return tslDetailStatus; + } + + public static void setStatus(boolean currentStatus) { + TSLStatusValid = currentStatus; + + if (TSLServiceFactory.isInitialized()) { + tslDetailStatus = TSLServiceFactory.getTSLServiceClient().getCurrentTSLClientStatus(); + } + + } + + public static void setStatusMsg(String msg) { + TSLStatusMsg = msg; + } + +} diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/service/RevocationArchiveCleaner.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/service/RevocationArchiveCleaner.java index d3a930c..1d85d66 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/service/RevocationArchiveCleaner.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/service/RevocationArchiveCleaner.java @@ -21,13 +21,8 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.server.service; -import iaik.pki.revocation.RevocationSourceTypes; -import iaik.pki.store.revocation.archive.Archive; -import iaik.pki.store.revocation.archive.ArchiveFactory; - import java.util.Date; import at.gv.egovernment.moa.spss.server.config.ConfigurationProvider; @@ -35,64 +30,67 @@ import at.gv.egovernment.moa.spss.server.logging.TransactionId; import at.gv.egovernment.moa.spss.util.MessageProvider; import at.gv.egovernment.moaspss.logging.LogMsg; import at.gv.egovernment.moaspss.logging.Logger; +import iaik.pki.revocation.RevocationSourceTypes; +import iaik.pki.store.revocation.archive.Archive; +import iaik.pki.store.revocation.archive.ArchiveFactory; /** - * A <code>Runnable</code> for periodically cleaning up the revocation archive. + * A <code>Runnable</code> for periodically cleaning up the revocation archive. + * * @author Patrick Peck * @version $Id$ */ public class RevocationArchiveCleaner implements Runnable { /** The inverval between two clean-ups of the revocation archive. */ - private long archiveCleanupInterval; + private final long archiveCleanupInterval; /** * Create a new <code>RevocationArchiveCleaner</code>. - * + * * @param archiveCleanupInterval The interval between two clean-ups of the - * revocation archive. + * revocation archive. */ public RevocationArchiveCleaner(long archiveCleanupInterval) { this.archiveCleanupInterval = archiveCleanupInterval; } /** - * Run the <code>RevocationArchiveCleaner</code> in its own - * <code>Thread</code>. + * Run the <code>RevocationArchiveCleaner</code> in its own <code>Thread</code>. */ + @Override public void run() { while (true) { try { - ConfigurationProvider config = ConfigurationProvider.getInstance(); - boolean enableArchiving = config.getEnableRevocationArchiving(); + final ConfigurationProvider config = ConfigurationProvider.getInstance(); + final boolean enableArchiving = config.getEnableRevocationArchiving(); - if (enableArchiving) - { - Archive archive = ArchiveFactory.getInstance().getArchive(); - long archiveDurationMillis = - (long) config.getCRLArchiveDuration() * 86400000; + if (enableArchiving) { + final Archive archive = ArchiveFactory.getInstance().getArchive(); + final long archiveDurationMillis = + (long) config.getCRLArchiveDuration() * 86400000; // delete old archive data if (archiveDurationMillis > 0) { - Date olderThan = - new Date(System.currentTimeMillis() - archiveDurationMillis); + final Date olderThan = + new Date(System.currentTimeMillis() - archiveDurationMillis); archive.deleteOldArchiveEntries( - RevocationSourceTypes.CRL, - olderThan, - new TransactionId("RevocationArchiveCleaner")); + RevocationSourceTypes.CRL, + olderThan, + new TransactionId("RevocationArchiveCleaner")); } } - } catch (Exception e) { - MessageProvider msg = MessageProvider.getInstance(); + } catch (final Exception e) { + final MessageProvider msg = MessageProvider.getInstance(); Logger.error(new LogMsg(msg.getMessage("init.02", null)), e); } - // sleep + // sleep try { Thread.sleep(archiveCleanupInterval * 1000); - } catch (InterruptedException e) { + } catch (final InterruptedException e) { // ok to do nothing here } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/transaction/DeleteableDataSource.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/transaction/DeleteableDataSource.java index a5ea592..335bf68 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/transaction/DeleteableDataSource.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/transaction/DeleteableDataSource.java @@ -3,5 +3,5 @@ package at.gv.egovernment.moa.spss.server.transaction; import javax.activation.DataSource; public interface DeleteableDataSource extends DataSource { - public void delete(); + void delete(); } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/transaction/TransactionContext.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/transaction/TransactionContext.java index 4e0d9f6..5746657 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/transaction/TransactionContext.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/transaction/TransactionContext.java @@ -21,11 +21,8 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.server.transaction; -import iaik.xml.crypto.utils.URI; - import java.io.ByteArrayInputStream; import java.io.File; import java.io.IOException; @@ -33,23 +30,23 @@ import java.io.InputStream; import java.security.cert.X509Certificate; import java.util.HashMap; import java.util.Iterator; +import java.util.Map.Entry; import java.util.Vector; import javax.activation.DataSource; -import java.util.Map.Entry; - import org.w3c.dom.Element; import at.gv.egovernment.moa.spss.MOAApplicationException; import at.gv.egovernment.moa.spss.server.config.ConfigurationProvider; import at.gv.egovernment.moaspss.logging.Logger; +import iaik.xml.crypto.utils.URI; /** * Contains information about the current request. - * + * * @author Stefan Knirsch - * @author Patrick Peck + * @author Patrick Peck */ public class TransactionContext { @@ -69,18 +66,19 @@ public class TransactionContext { private HashMap resolvedEntities = null; /** The configuration to use throughout the request. */ private ConfigurationProvider configuration = null; - + /** * Create a <code>TransactionContext</code> object. - * - * @param transactionID A unique ID for this <code>TransactionContext</code>. + * + * @param transactionID A unique ID for this + * <code>TransactionContext</code>. * @param clientCertificate The client certificate chain. - * @param configuration The MOA configuration to use for this transaction. + * @param configuration The MOA configuration to use for this transaction. */ public TransactionContext( - String transactionID, - X509Certificate[] clientCertificate, - ConfigurationProvider configuration) { + String transactionID, + X509Certificate[] clientCertificate, + ConfigurationProvider configuration) { this.transactionID = transactionID; this.clientCertificate = clientCertificate; @@ -89,18 +87,19 @@ public class TransactionContext { /** * Create a <code>TransactionContext</code> object. - * - * @param transactionID A unique ID for this <code>TransactionContext</code>. + * + * @param transactionID A unique ID for this + * <code>TransactionContext</code>. * @param clientCertificate The client certificate chain. - * @param configuration The MOA configuration to use for this transaction. - * @param attachments to use for this transaction. + * @param configuration The MOA configuration to use for this transaction. + * @param attachments to use for this transaction. */ public TransactionContext( - String transactionID, - X509Certificate[] clientCertificate, - ConfigurationProvider configuration, - Element request, - HashMap attachments) { + String transactionID, + X509Certificate[] clientCertificate, + ConfigurationProvider configuration, + Element request, + HashMap attachments) { this.transactionID = transactionID; this.clientCertificate = clientCertificate; @@ -108,14 +107,14 @@ public class TransactionContext { this.request = request; this.attachments = attachments; } - + /** * Returns the client certificate. - * + * * @return The client certificate chain, if SSL client authentication has been - * configured in the web server and has been used by the client. The 0th - * element of the array contains the client certificate. <code>null</code> - * otherwise. + * configured in the web server and has been used by the client. The 0th + * element of the array contains the client certificate. + * <code>null</code> otherwise. */ public X509Certificate[] getClientCertificate() { return clientCertificate; @@ -123,7 +122,7 @@ public class TransactionContext { /** * Returns the unique transaction ID. - * + * * @return The transaction ID. */ public String getTransactionID() { @@ -132,7 +131,7 @@ public class TransactionContext { /** * Returns the name of the request. - * + * * @return The name of the request. */ public String getRequestName() { @@ -141,7 +140,7 @@ public class TransactionContext { /** * Sets the name of the request. - * + * * @param requestName The request name to set. */ public void setRequestName(String requestName) { @@ -150,7 +149,7 @@ public class TransactionContext { /** * Sets the the request. - * + * * @param request The request to set. */ public void setRequest(Element request) { @@ -159,7 +158,7 @@ public class TransactionContext { /** * Returns the request. - * + * * @return The request. */ public Element getRequest() { @@ -168,7 +167,7 @@ public class TransactionContext { /** * Sets the the response. - * + * * @param response The response to set. */ public void setResponse(Element response) { @@ -177,23 +176,26 @@ public class TransactionContext { /** * Returns the response. - * + * * @return The response. */ public Element getResponse() { return response; } - + /** * Adds an attachment to the transactions list of SOAP attachments. - * + * * @param referenceId Identification value for the SOAP attachment. * @param contentType MIME type of the SOAP attachment. - * @param is Handle to the ManagedMemoryDataSource of the SOAP attachment. + * @param is Handle to the ManagedMemoryDataSource of the SOAP + * attachment. */ public void addAttachment(String referenceId, String contentType, DataSource is) { - if (this.attachments == null) this.attachments = new HashMap(); - Vector entry = new Vector(2); + if (this.attachments == null) { + this.attachments = new HashMap(); + } + final Vector entry = new Vector(2); entry.add(contentType); entry.add(is); this.attachments.put(referenceId, entry); @@ -201,185 +203,198 @@ public class TransactionContext { /** * Adds an attachment to the transactions list of SOAP attachments. - * + * * @param referenceId Identification value for the SOAP attachment. * @param contentType MIME type of the SOAP attachment. - * @param is Handle to the InputStream of the SOAP attachment. - * @param filename Filename of the temporary file the InputStream belongs to + * @param is Handle to the InputStream of the SOAP attachment. + * @param filename Filename of the temporary file the InputStream belongs to */ public void addAttachment(String referenceId, String contentType, InputStream is, String filename) { - if (this.attachments == null) this.attachments = new HashMap(); - Vector entry = new Vector(3); + if (this.attachments == null) { + this.attachments = new HashMap(); + } + final Vector entry = new Vector(3); entry.add(contentType); entry.add(is); entry.add(filename); this.attachments.put(referenceId, entry); } - + /** - * Returns the ManagedMemoryDataSource to a specific SOAP attachment identified by referenceId. - * + * Returns the ManagedMemoryDataSource to a specific SOAP attachment identified + * by referenceId. + * * @param referenceId Identification value for the SOAP attachment. */ public DataSource getAttachment(String referenceId) { - if (attachments==null) { + if (attachments == null) { return null; } - Vector entry = (Vector) attachments.get(referenceId); - if (entry==null) { + final Vector entry = (Vector) attachments.get(referenceId); + if (entry == null) { return null; } - Object object = entry.get(1); + final Object object = entry.get(1); if (object instanceof DataSource) { - return (DataSource) object; + return (DataSource) object; } else { - return null; + return null; } } - + /** * Returns the InputStream to a specific SOAP attachment identified by uri. - * + * * @param uri Identification value for the SOAP attachment. */ public InputStream getAttachmentInputStream(URI uri) throws MOAApplicationException { - if (attachments==null) { + if (attachments == null) { return null; } - String referenceId = uri.getPath(); - Vector entry = (Vector) attachments.get(referenceId); - if (entry==null) { + final String referenceId = uri.getPath(); + final Vector entry = (Vector) attachments.get(referenceId); + if (entry == null) { return null; } InputStream attachmentIs = null; - Object object = entry.get(1); - + final Object object = entry.get(1); + if (object instanceof DataSource) { - try { - attachmentIs = (InputStream) ( ((DataSource)object).getInputStream()); - } catch (IOException e) { - throw new MOAApplicationException("2208", new Object[] { uri }, e); - } + try { + attachmentIs = ((DataSource) object).getInputStream(); + } catch (final IOException e) { + throw new MOAApplicationException("2208", new Object[] { uri }, e); + } } else { - attachmentIs = (InputStream) object; + attachmentIs = (InputStream) object; } return attachmentIs; - //If we would return the whole mmds: return (ManagedMemoryDataSource) entry.get(1); + // If we would return the whole mmds: return (ManagedMemoryDataSource) + // entry.get(1); } - + /** - * Returns the content type to a specific SOAP attachment identified by referenceId. - * + * Returns the content type to a specific SOAP attachment identified by + * referenceId. + * * @param referenceId Identification value for the SOAP attachment. */ public String getAttachmentContentType(String referenceId) { - Vector entry = (Vector) attachments.get(referenceId); - if (entry==null) { + final Vector entry = (Vector) attachments.get(referenceId); + if (entry == null) { return null; } return (String) entry.get(0); } - + /** * Delete the temporary attachment files. */ -public void cleanAttachmentCache() { - if (null==attachments) { + public void cleanAttachmentCache() { + if (null == attachments) { return; } - Iterator iterator = attachments.entrySet().iterator(); + final Iterator iterator = attachments.entrySet().iterator(); while (iterator.hasNext()) { - Entry hmEntry = (Entry) iterator.next(); - Vector entry = (Vector)hmEntry.getValue(); - Object object = entry.get(1); + final Entry hmEntry = (Entry) iterator.next(); + final Vector entry = (Vector) hmEntry.getValue(); + final Object object = entry.get(1); if (object instanceof DataSource) { - DataSource mmds = (DataSource)object; - try { - if (mmds!=null) { - InputStream is = mmds.getInputStream(); - if (is!=null) is.close(); -// not available in Axis 1.0 to 1.1 + final DataSource mmds = (DataSource) object; + try { + if (mmds != null) { + final InputStream is = mmds.getInputStream(); + if (is != null) { + is.close(); + } +// not available in Axis 1.0 to 1.1 // File f = mmds.getDiskCacheFile(); // if (f!=null) f.delete(); - if(mmds instanceof DeleteableDataSource) { - ((DeleteableDataSource)mmds).delete(); - } - //mmds..delete(); - } - } catch (IOException e) { - // ok to do nothing here - } + if (mmds instanceof DeleteableDataSource) { + ((DeleteableDataSource) mmds).delete(); + } + // mmds..delete(); + } + } catch (final IOException e) { + // ok to do nothing here + } } else if (object instanceof InputStream) { - InputStream is = (InputStream)object; - try { - if (is!=null) is.close(); - String tempFile = (String) entry.get(2); - if (tempFile!=null){ - File f = new File(tempFile); - f.delete(); - } - } catch (IOException e) { - // ok to do nothing here - } + final InputStream is = (InputStream) object; + try { + if (is != null) { + is.close(); + } + final String tempFile = (String) entry.get(2); + if (tempFile != null) { + final File f = new File(tempFile); + f.delete(); + } + } catch (final IOException e) { + // ok to do nothing here + } } } } - + /** * Returns the <code>ConfigurationProvider</code> associated with this * transaction. - * - * @return The ConfigurationProvider associated with this transaction. + * + * @return The ConfigurationProvider associated with this transaction. */ public ConfigurationProvider getConfiguration() { return configuration; } - + /** * Search an uri content in cashed map. - * + * * @param uri The value to look for. * @return If found the cached entity, <code>null<code> otherwise. */ public Vector FindResolvedEntity(String uri) { - if (resolvedEntities==null) return null; - return (Vector) resolvedEntities.get(uri); + if (resolvedEntities == null) { + return null; + } + return (Vector) resolvedEntities.get(uri); } - + /** * Get a new InputStream of a cached entity. - * + * * @param uri The value to look for. * @return A new InputStream of the cached entity. */ public InputStream ResolveURI(String uri) { - InputStream is = null; - Vector entity = FindResolvedEntity(uri); - if (entity!=null) { - byte[] contentBytes = (byte[]) entity.get(0); - if (contentBytes!=null) { - is = new ByteArrayInputStream(contentBytes); - } - } - return is; + InputStream is = null; + final Vector entity = FindResolvedEntity(uri); + if (entity != null) { + final byte[] contentBytes = (byte[]) entity.get(0); + if (contentBytes != null) { + is = new ByteArrayInputStream(contentBytes); + } + } + return is; } /** - * Put a read entity (supplement, detached content, data object) on - * transactions entity cash, to prevent repeated reading on slower channels. - * - * @param uri A transaction-wide unique URI used as key of the entity cash - * table. + * Put a read entity (supplement, detached content, data object) on transactions + * entity cash, to prevent repeated reading on slower channels. + * + * @param uri A transaction-wide unique URI used as key of the entity + * cash table. * @param contentBytes The cached content belonging to the uri. - * @param contentType If known, the MIME-type of the cashed content. + * @param contentType If known, the MIME-type of the cashed content. */ public void PutResolvedEntity(String uri, byte[] contentBytes, String contentType) { - Logger.trace(" storing uri content of uri \"" + uri + "\" for future references"); - if (resolvedEntities==null) resolvedEntities = new HashMap(); - Vector entity = new Vector(); - entity.add(contentBytes); - entity.add(contentType); - resolvedEntities.put(uri, entity); + Logger.trace(" storing uri content of uri \"" + uri + "\" for future references"); + if (resolvedEntities == null) { + resolvedEntities = new HashMap(); + } + final Vector entity = new Vector(); + entity.add(contentBytes); + entity.add(contentType); + resolvedEntities.put(uri, entity); } } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/transaction/TransactionContextManager.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/transaction/TransactionContextManager.java index 8a45ddf..080f801 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/transaction/TransactionContextManager.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/transaction/TransactionContextManager.java @@ -21,30 +21,29 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.server.transaction; /** * Provides each thread with an instance of <code>TransactionContext</code>. - * + * * The single instance of the <code>TransactionContextManager</code> should be * used to access contextual information for each web service transaction, e.g. * the transaction ID, MOA configuration, client certificate, etc. - * + * * @author Stefan Knirsch * @author Patrick Peck */ public class TransactionContextManager { - /** The single instance of <code>TransactionContextManager</code> */ + /** The single instance of <code>TransactionContextManager</code> */ private static TransactionContextManager instance = null; - + /** Contains a single <code>TransactionContext</code> for each thread. */ private ThreadLocal context = null; /** * Get the single instance of <code>TransactionContextManager</code>. - * + * * @return The single instanc of <code>TransactionContextManager</code>. */ public static synchronized TransactionContextManager getInstance() { @@ -56,7 +55,7 @@ public class TransactionContextManager { /** * Creates a new <code>TransactionContextManager</code>. - * + * * Protected to disallow direct instantiation. */ protected TransactionContextManager() { @@ -65,7 +64,7 @@ public class TransactionContextManager { /** * Set the <code>TransactionContext</code> for the current thread. - * + * * @param txContext The <code>TransactionContext</code> for this thread. */ public void setTransactionContext(TransactionContext txContext) { @@ -74,10 +73,10 @@ public class TransactionContextManager { /** * Get the <code>TransactionContext</code> for the current thread. - * + * * @return The <code>TransactionContext</code> for the current thread or - * <code>null</code>, if none has been set (or if this method is being invoked - * outside the bounds of a transaction). + * <code>null</code>, if none has been set (or if this method is being + * invoked outside the bounds of a transaction). */ public TransactionContext getTransactionContext() { return (TransactionContext) context.get(); diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/transaction/TransactionIDGenerator.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/transaction/TransactionIDGenerator.java index b173308..463785b 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/transaction/TransactionIDGenerator.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/transaction/TransactionIDGenerator.java @@ -21,27 +21,28 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.server.transaction; - /** * A generator for unique transaction IDs. - * - * <p>The transaction IDs are of the form "<base>-<counter>", where: - * <ul> + * + * <p> + * The transaction IDs are of the form "<base>-<counter>", where: + * <ul> * <li><code>base</code> is initialized with the system time when this class is * being loaded</li> * <li><code>counter</code> is incremented sequentially on each call to * <code>nextID()</code></li> * </ul> * </p> - * - * <p> Assuming that it is highly unlikely that MOA servers are started at - * exactly the same time instant, the mechanism provided by this class should - * guarantee unique transaction IDs across multiple restarts and/or instances of - * the server.</p> - * + * + * <p> + * Assuming that it is highly unlikely that MOA servers are started at exactly + * the same time instant, the mechanism provided by this class should guarantee + * unique transaction IDs across multiple restarts and/or instances of the + * server. + * </p> + * * @author Patrick Peck * @author Stefan Knirsch */ @@ -63,13 +64,13 @@ public class TransactionIDGenerator { /** * Returns the next transaction ID. - * + * * @return The next transaction ID. */ public static synchronized String nextID() { counter++; - return (base + "-" + counter); + return base + "-" + counter; } } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/util/IdGenerator.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/util/IdGenerator.java index a8d9e1b..a6bc653 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/util/IdGenerator.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/util/IdGenerator.java @@ -21,65 +21,66 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.server.util; import java.util.Set; /** * Generate unique ID values for various objects in the response. - * + * * @author Patrick Peck * @version $Id$ */ public class IdGenerator { /** The base value to append the counter to. */ - private String base; + private final String base; /** The <code>Set</code> of reserved ID values. */ - private Set reserved; + private final Set reserved; /** The sequence number. */ private int count; - + /** * Create a new <code>IdGenerator</code>. - * - * @param base A base value to append the IDs to. The creator of this object - * should provide a base value, so that appending the counter leads to unique - * IDs. - * @param reserved The <code>Set</code> of reserved IDs. A call to - * <code>uniqueId()</code> will respect the reserved IDs. + * + * @param base A base value to append the IDs to. The creator of this object + * should provide a base value, so that appending the counter + * leads to unique IDs. + * @param reserved The <code>Set</code> of reserved IDs. A call to + * <code>uniqueId()</code> will respect the reserved IDs. */ public IdGenerator(String base, Set reserved) { this.base = base; this.reserved = reserved; count = 1; } - + /** * Create the next ID value in the sequence. - * + * * @return The next ID value in the sequence. */ protected String nextId() { return base + "-" + count++; } - + /** * Create the next unique ID value which is unique in the reserved ID set. - * + * * The created ID is added to the set of reserved IDs. - * + * * @return The next ID value. */ public String uniqueId() { String nextId; - while (reserved.contains(nextId = nextId())); - + while (reserved.contains(nextId = nextId())) { + ; + } + reserved.add(nextId); - + return nextId; - + } - + } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/tsl/TSLServiceFactory.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/tsl/TSLServiceFactory.java index 223361d..d75240e 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/tsl/TSLServiceFactory.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/tsl/TSLServiceFactory.java @@ -5,6 +5,7 @@ import at.gv.egovernment.moa.sig.tsl.api.ITslService; import at.gv.egovernment.moa.sig.tsl.config.TslConfigurationImpl; import at.gv.egovernment.moa.sig.tsl.exception.TslException; import at.gv.egovernment.moa.sig.tsl.pki.chaining.ChainingTrustStoreHandler; +import at.gv.egovernment.moa.spss.server.monitoring.ServiceStatusContainer; import at.gv.egovernment.moa.spss.util.MessageProvider; import at.gv.egovernment.moaspss.logging.LogMsg; import at.gv.egovernment.moaspss.logging.Logger; @@ -12,40 +13,59 @@ import iaik.pki.store.truststore.TrustStoreFactory; public class TSLServiceFactory { - private static ITslService tslClient = null; - - - public static void initialize(TslConfigurationImpl config) { - if (tslClient == null) { - try { - tslClient = TslClientFactory.buildTslService(config ); - - TrustStoreFactory.addTrustStoreHandler(new ChainingTrustStoreHandler()); - - } catch (TslException e) { - Logger.fatal(new LogMsg(MessageProvider.getInstance().getMessage("init.05", new Object[]{e.getMessage()})), e); - - } - - } else { - Logger.error("TSL-Service client can only be initialized once."); - throw new IllegalStateException("TSL-Service client can only be initialized once."); - - } - - } - - public static boolean isInitialized() { - if (tslClient == null) - return false; - else - return true; - - } - - public static ITslService getTSLServiceClient() { - return tslClient; - - } - + private static ITslService tslClient = null; + private static TslConfigurationImpl interalConfig; + + public static void initialize(TslConfigurationImpl config) { + if (tslClient == null) { + try { + interalConfig = config; + tslClient = TslClientFactory.buildTslService(interalConfig); + + TrustStoreFactory.addTrustStoreHandler(new ChainingTrustStoreHandler()); + + // set global TSL client status + ServiceStatusContainer.setStatus(true); + ServiceStatusContainer.setStatusMsg(ServiceStatusContainer.STATUS_OK); + + } catch (final TslException e) { + Logger.fatal(new LogMsg(MessageProvider.getInstance().getMessage("init.05", new Object[] { e + .getMessage() })), e); + + // set global TSL client status + ServiceStatusContainer.setStatus(false); + ServiceStatusContainer.setStatusMsg( + new LogMsg(MessageProvider.getInstance().getMessage("init.05", new Object[] { e.getMessage() })) + .toString()); + + } + + } else { + Logger.error("TSL-Service client can only be initialized once."); + throw new IllegalStateException("TSL-Service client can only be initialized once."); + + } + + } + + public static boolean isInitialized() { + if (tslClient == null) { + return false; + } else { + return true; + } + + } + + public static ITslService getTSLServiceClient() { + if (!isInitialized()) { + Logger.warn( + "TSL client is not initialized but config is available. Starting new initialization process ..."); + initialize(interalConfig); + } + + return tslClient; + + } + } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/tsl/timer/TSLUpdaterTimerTask.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/tsl/timer/TSLUpdaterTimerTask.java index 300bcae..1a377b6 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/tsl/timer/TSLUpdaterTimerTask.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/tsl/timer/TSLUpdaterTimerTask.java @@ -1,62 +1,49 @@ package at.gv.egovernment.moa.spss.tsl.timer;
-import iaik.asn1.ObjectID;
-import iaik.pki.store.certstore.CertStoreException;
-import iaik.pki.store.certstore.CertStoreParameters;
-import iaik.pki.store.truststore.TrustStoreException;
-import iaik.pki.store.truststore.TrustStoreProfile;
-import iaik.pki.store.utils.StoreUpdater;
-import iaik.server.ConfigurationData;
-import iaik.x509.X509Certificate;
-
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileNotFoundException;
-import java.io.IOException;
-import java.security.cert.CertificateException;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.Iterator;
-import java.util.Map;
import java.util.TimerTask;
import at.gv.egovernment.moa.sig.tsl.exception.TslException;
import at.gv.egovernment.moa.sig.tsl.exception.TslUpdateException;
-import at.gv.egovernment.moa.spss.MOAApplicationException;
-import at.gv.egovernment.moa.spss.api.common.TSLConfiguration;
-import at.gv.egovernment.moa.spss.server.config.ConfigurationException;
-import at.gv.egovernment.moa.spss.server.config.ConfigurationProvider;
-import at.gv.egovernment.moa.spss.server.config.TrustProfile;
-import at.gv.egovernment.moa.spss.server.iaik.config.IaikConfigurator;
-import at.gv.egovernment.moa.spss.server.iaik.pki.store.truststore.TrustStoreProfileImpl;
-import at.gv.egovernment.moa.spss.server.logging.TransactionId;
+import at.gv.egovernment.moa.spss.server.monitoring.ServiceStatusContainer;
import at.gv.egovernment.moa.spss.tsl.TSLServiceFactory;
import at.gv.egovernment.moa.spss.util.MessageProvider;
import at.gv.egovernment.moaspss.logging.LogMsg;
import at.gv.egovernment.moaspss.logging.Logger;
-import at.gv.egovernment.moaspss.util.StringUtils;
-
public class TSLUpdaterTimerTask extends TimerTask {
-
- @Override
- public void run() {
-
- try {
- Logger.info("Start TSL Update");
- TSLServiceFactory.getTSLServiceClient().updateTSLInformation();
- Logger.info("Finished TSL Update");
-
- } catch (TslUpdateException e) {
- MessageProvider msg = MessageProvider.getInstance();
- Logger.error(new LogMsg(msg.getMessage("tsl.00", null)), e);
-
- } catch (TslException e) {
- MessageProvider msg = MessageProvider.getInstance();
- Logger.error(new LogMsg(msg.getMessage("tsl.00", null)), e);
-
- }
-
- }
+
+ @Override
+ public void run() {
+
+ try {
+ Logger.info("Start TSL Update");
+ TSLServiceFactory.getTSLServiceClient().updateTSLInformation();
+ Logger.info("Finished TSL Update");
+
+ // set global TSL client status
+ ServiceStatusContainer.setStatus(true);
+ ServiceStatusContainer.setStatusMsg(ServiceStatusContainer.STATUS_OK);
+
+ } catch (final TslUpdateException e) {
+ final MessageProvider msg = MessageProvider.getInstance();
+ Logger.error(new LogMsg(msg.getMessage("tsl.00", null)), e);
+
+ // set global TSL client status
+ ServiceStatusContainer.setStatus(false);
+ ServiceStatusContainer.setStatusMsg(
+ new LogMsg(msg.getMessage("tsl.00", null)).toString());
+
+ } catch (final TslException e) {
+ final MessageProvider msg = MessageProvider.getInstance();
+ Logger.error(new LogMsg(msg.getMessage("tsl.00", null)), e);
+
+ // set global TSL client status
+ ServiceStatusContainer.setStatus(false);
+ ServiceStatusContainer.setStatusMsg(
+ new LogMsg(msg.getMessage("tsl.00", null)).toString());
+
+ }
+
+ }
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/tsl/utils/CertificateReader.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/tsl/utils/CertificateReader.java index 763382a..eeff27c 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/tsl/utils/CertificateReader.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/tsl/utils/CertificateReader.java @@ -1,10 +1,4 @@ package at.gv.egovernment.moa.spss.tsl.utils;
-import iaik.pkcs.PKCS7CertList;
-import iaik.pkcs.PKCSParsingException;
-import iaik.security.provider.IAIK;
-import iaik.utils.Util;
-import iaik.x509.X509Certificate;
-import iaik.xml.crypto.EccProviderAdapter;
import java.io.BufferedInputStream;
import java.io.File;
@@ -18,6 +12,13 @@ import java.util.Arrays; import java.util.Iterator;
import java.util.List;
+import iaik.pkcs.PKCS7CertList;
+import iaik.pkcs.PKCSParsingException;
+import iaik.security.provider.IAIK;
+import iaik.utils.Util;
+import iaik.x509.X509Certificate;
+import iaik.xml.crypto.EccProviderAdapter;
+
// Copyright (C) 2011 IAIK
// http://jce.iaik.at
//
@@ -49,107 +50,106 @@ import java.util.List; public class CertificateReader {
+ /**
+ * Filter for reading certificate files from a directory. The filter accepts a
+ * file if its name ends with ".cer", ".der",
+ * ".crt" or ".pem".
+ *
+ * @author Harald Bratko
+ * @author Konrad Lanz
+ */
+ static class CertificateFileFilter implements FileFilter {
+
/**
- * Filter for reading certificate files from a directory.
- * The filter accepts a file if its name ends with
- * ".cer", ".der", ".crt"
- * or ".pem".
+ * Accepts a file if it is not a directory and its name ends with
+ * ".cer", ".der", ".crt" or ".pem".
*
- * @author Harald Bratko
- * @author Konrad Lanz
+ * @see java.io.FileFilter#accept(java.io.File)
*/
- static class CertificateFileFilter implements FileFilter {
-
- /**
- * Accepts a file if it is not a directory and its name ends with
- * ".cer", ".der", ".crt" or ".pem".
- *
- * @see java.io.FileFilter#accept(java.io.File)
- */
- public boolean accept(File file) {
- String name = file.getName();
- if (name.endsWith(".der") ||
+ @Override
+ public boolean accept(File file) {
+ final String name = file.getName();
+ if (name.endsWith(".der") ||
name.endsWith(".cer") ||
name.endsWith(".crt") ||
- name.endsWith(".pem"))
- {
- return true;
- } else {
- return false;
- }
+ name.endsWith(".pem")) {
+ return true;
+ } else {
+ return false;
}
}
-
-
-
- /**
- * Reads the certificates from the given directory and
- * returns the certificates as sorted list (end user certificate first).
- * @param directory
- * @return
- * @throws IOException
- * @throws FileNotFoundException
- * @throws CertificateException
- * @throws Exception
- */
- public static X509Certificate[] readCertificatesIntoArray(String directory) throws CertificateException, FileNotFoundException, IOException{
- File file = new File(directory);
- File[] certificateFiles = file.listFiles(new CertificateFileFilter());
- int l = certificateFiles.length;
- X509Certificate[] certs = new X509Certificate[l];
- for (int i=0; i<certificateFiles.length; i++) {
- X509Certificate certificate = new X509Certificate(new FileInputStream(certificateFiles[i]));
- certs[i] = certificate;
- }
- return Util.arrangeCertificateChain(certs, false);
+ }
+
+ /**
+ * Reads the certificates from the given directory and returns the certificates
+ * as sorted list (end user certificate first).
+ *
+ * @param directory
+ * @return
+ * @throws IOException
+ * @throws FileNotFoundException
+ * @throws CertificateException
+ * @throws Exception
+ */
+ public static X509Certificate[] readCertificatesIntoArray(String directory) throws CertificateException,
+ FileNotFoundException, IOException {
+ final File file = new File(directory);
+ final File[] certificateFiles = file.listFiles(new CertificateFileFilter());
+ final int l = certificateFiles.length;
+ final X509Certificate[] certs = new X509Certificate[l];
+ for (int i = 0; i < certificateFiles.length; i++) {
+ final X509Certificate certificate = new X509Certificate(new FileInputStream(certificateFiles[i]));
+ certs[i] = certificate;
}
-
- /**
- * Reads the certificates from the given directory and
- * returns the certificates as sorted list (end user certificate first).
- * @param directory
- * @return
- * @throws IOException
- * @throws FileNotFoundException
- * @throws CertificateException
- * @throws Exception
- */
- public static List<X509Certificate> readCertificates(String directory) throws CertificateException, FileNotFoundException, IOException{
-
- return Arrays.asList(readCertificatesIntoArray(directory));
- }
-
- public static void main(String[] args) {
- try {
-
- IAIK.addAsJDK14Provider();
- //IAIK.addAsProvider();
- //Security.addProvider(new IAIK());
-
- // install ECC provider
- Security.addProvider(EccProviderAdapter.getEccProvider());
-
- String dir = "spec/examples/EU/AT/certs/on-tsl/chain/";
- List l = readCertificates(dir);
- Iterator<X509Certificate> it = l.iterator();
- while (it.hasNext()) {
- System.out.println(((X509Certificate)it.next()).getSubjectDN().getName());
- }
- } catch (Exception e) {
- e.printStackTrace();
- System.exit(1);
+ return Util.arrangeCertificateChain(certs, false);
+ }
+
+ /**
+ * Reads the certificates from the given directory and returns the certificates
+ * as sorted list (end user certificate first).
+ *
+ * @param directory
+ * @return
+ * @throws IOException
+ * @throws FileNotFoundException
+ * @throws CertificateException
+ * @throws Exception
+ */
+ public static List<X509Certificate> readCertificates(String directory) throws CertificateException,
+ FileNotFoundException, IOException {
+
+ return Arrays.asList(readCertificatesIntoArray(directory));
+ }
+
+ public static void main(String[] args) {
+ try {
+
+ IAIK.addAsJDK14Provider();
+ // IAIK.addAsProvider();
+ // Security.addProvider(new IAIK());
+
+ // install ECC provider
+ Security.addProvider(EccProviderAdapter.getEccProvider());
+
+ final String dir = "spec/examples/EU/AT/certs/on-tsl/chain/";
+ final List l = readCertificates(dir);
+ final Iterator<X509Certificate> it = l.iterator();
+ while (it.hasNext()) {
+ System.out.println(it.next().getSubjectDN().getName());
}
-
+ } catch (final Exception e) {
+ e.printStackTrace();
+ System.exit(1);
}
- public static X509Certificate[] p7read(File path) throws PKCSParsingException, FileNotFoundException, IOException {
- PKCS7CertList p7certList = new PKCS7CertList(
- new BufferedInputStream(
- new FileInputStream(
- path
- )
- )
- );
- return p7certList.getCertificateList();
- }
- }
\ No newline at end of file + }
+
+ public static X509Certificate[] p7read(File path) throws PKCSParsingException, FileNotFoundException,
+ IOException {
+ final PKCS7CertList p7certList = new PKCS7CertList(
+ new BufferedInputStream(
+ new FileInputStream(
+ path)));
+ return p7certList.getCertificateList();
+ }
+}
\ No newline at end of file diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/util/AdESResultUtils.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/util/AdESResultUtils.java index 4903391..23570cc 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/util/AdESResultUtils.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/util/AdESResultUtils.java @@ -11,185 +11,238 @@ import at.gv.egovernment.moaspss.logging.Logger; import iaik.esi.sva.validation.ValidationReport; import iaik.server.ConfigurationException; import iaik.server.modules.AdESVerificationResult; -import iaik.server.modules.ResultCode; -import iaik.server.modules.ResultCodeInvalid; -import iaik.server.modules.ResultCodeValid; import iaik.server.modules.SignatureVerificationProfile; import iaik.server.modules.SignatureVerificationResult; +import iaik.server.modules.resultcodes.ResultCode; +import iaik.server.modules.resultcodes.ResultCodeError; +import iaik.server.modules.resultcodes.ResultCodeInvalid; +import iaik.server.modules.resultcodes.ResultCodeSkipped; +import iaik.server.modules.resultcodes.ResultCodeValid; public class AdESResultUtils { - public static Integer getResultCode(Integer adesCode) { - return adesCode; - } - - public static ExtendedCertificateCheckResult getExtendedResult(iaik.server.modules.ResultCode resultCode) { - ExtendedCertificateCheckResult check = null; - - int majorCode = -1; - String majorInfo = ""; - int minorCode = -1; - String minorInfo = ""; - - Logger.debug("Generating extendend validation result: " + resultCode.toString()); - - if (resultCode instanceof ResultCodeValid) { - majorCode = SignatureVerificationResult.VALID; - majorInfo = "VALID"; - } else if (resultCode instanceof ResultCodeInvalid) { - majorCode = SignatureVerificationResult.INVALID; - majorInfo = "INVALID"; - } else { - majorCode = SignatureVerificationResult.INDETERMINATE; - majorInfo = "INDETERMINATE"; - } - - if (resultCode.getCode() != null) { - minorCode = resultCode.getCode(); - if (resultCode.getCode().equals(ResultCode.CODE_CHAIN_CONSTRAINTS_FAILURE)) { - minorInfo = "CHAIN_CONSTRAINTS_FAILURE"; - } else if (resultCode.getCode().equals(ResultCode.CODE_CRYPTO_CONSTRAINTS_FAILURE)) { - minorInfo = "CRYPTO_CONSTRAINTS_FAILURE"; - } else if (resultCode.getCode().equals(ResultCode.CODE_CRYPTO_CONSTRAINTS_FAILURE_NO_POE)) { - minorInfo = "CRYPTO_CONSTRAINTS_FAILURE_NO_POE"; - } else if (resultCode.getCode().equals(ResultCode.CODE_EXPIRED)) { - minorInfo = "EXPIRED"; - } else if (resultCode.getCode().equals(ResultCode.CODE_FORMAT_FAILURE)) { - minorInfo = "FORMAT_FAILURE"; - } else if (resultCode.getCode().equals(ResultCode.CODE_GENERIC)) { - minorInfo = "GENERIC"; - } else if (resultCode.getCode().equals(ResultCode.CODE_HASH_FAILURE)) { - minorInfo = "HASH_FAILURE"; - } else if (resultCode.getCode().equals(ResultCode.CODE_NO_CERTIFICATE_CHAIN_FOUND)) { - minorInfo = "NO_CERTIFICATE_CHAIN_FOUND"; - } else if (resultCode.getCode().equals(ResultCode.CODE_NO_POE)) { - minorInfo = "NO_POE"; - } else if (resultCode.getCode().equals(ResultCode.CODE_NO_POLICY)) { - minorInfo = "NO_POLICY"; - } else if (resultCode.getCode().equals(ResultCode.CODE_NOT_YET_VALID)) { - minorInfo = "NOT_YET_VALID"; - } else if (resultCode.getCode().equals(ResultCode.CODE_OUT_OF_BOUNDS_NO_POE)) { - minorInfo = "OUT_OF_BOUNDS_NO_POE"; - } else if (resultCode.getCode().equals(ResultCode.CODE_POLICY_PROCESSING_ERROR)) { - minorInfo = "POLICY_PROCESSING_ERROR"; - } else if (resultCode.getCode().equals(ResultCode.CODE_REVOKED)) { - minorInfo = "REVOKED"; - } else if (resultCode.getCode().equals(ResultCode.CODE_REVOKED_CA_NO_POE)) { - minorInfo = "REVOKED_CA_NO_POE"; - } else if (resultCode.getCode().equals(ResultCode.CODE_REVOKED_NO_POE)) { - minorInfo = "REVOKED_NO_POE"; - } else if (resultCode.getCode().equals(ResultCode.CODE_SIG_CONSTRAINTS_FAILURE)) { - minorInfo = "SIG_CONSTRAINTS_FAILURE"; - } else if (resultCode.getCode().equals(ResultCode.CODE_SIG_CRYPTO_FAILURE)) { - minorInfo = "SIG_CRYPTO_FAILURE"; - } else if (resultCode.getCode().equals(ResultCode.CODE_SIGNED_DATA_NOT_FOUND)) { - minorInfo = "SIGNED_DATA_NOT_FOUND"; - } else if (resultCode.getCode().equals(ResultCode.CODE_TIMESTAMP_ORDER_FAILURE)) { - minorInfo = "TIMESTAMP_ORDER_FAILURE"; - } else if (resultCode.getCode().equals(ResultCode.CODE_TRY_LATER)) { - minorInfo = "TRY_LATER"; - } else if (resultCode.getCode().equals(ResultCode.CODE_UNKNOWN_COMMITMENT_TYPE)) { - minorInfo = "UNKNOWN_COMMITMENT_TYPE"; - } else if (resultCode.getCode().equals(ResultCode.SUCCESS)) { - minorInfo = "SUCCESS"; - } - } - - check = new ExtendedCertificateCheckResultImpl(majorCode, majorInfo, minorCode, - minorInfo); - - return check; - - } - - public static List getAdESResult(iaik.server.modules.AdESFormVerificationResult adesFormVerification) { - if (adesFormVerification == null) { - // no form information - return null; - } - - List adesList = new ArrayList(); - - checkSubResult(adesFormVerification.getSubResult(SignatureVerificationProfile.LEVEL_LTA), - SignatureVerificationProfile.LEVEL_LTA, adesList); - checkSubResult(adesFormVerification.getSubResult(SignatureVerificationProfile.LEVEL_LT), - SignatureVerificationProfile.LEVEL_LT, adesList); - checkSubResult(adesFormVerification.getSubResult(SignatureVerificationProfile.LEVEL_T), - SignatureVerificationProfile.LEVEL_T, adesList); - checkSubResult(adesFormVerification.getSubResult(SignatureVerificationProfile.LEVEL_B), - SignatureVerificationProfile.LEVEL_B, adesList); - - return adesList; - } - - public static void buildResult(ValidationReport report, List adesList) { - - if (report == null) { - return; - } - - AdESFormResultsImpl adESFormResultsImpl = new AdESFormResultsImpl(); - adESFormResultsImpl.setCode(report.getStatus().ordinal()); - adESFormResultsImpl.setInfo(report.getLongText()); - adESFormResultsImpl.setName(report.getValidationName()); - - adesList.add(adESFormResultsImpl); - - if (report.getSubValidationReports() != null && !report.getSubValidationReports().isEmpty()) { - Iterator<ValidationReport> reportIt = report.getSubValidationReports().iterator(); - while (reportIt.hasNext()) { - buildResult(reportIt.next(), adesList); - } - } - - } - - public static void checkSubResult(AdESVerificationResult subResult, String level, List adesList) { - if (subResult != null) { - Logger.info("Checking Level: " + level); - try { - - AdESFormResultsImpl adESFormResultsImpl = new AdESFormResultsImpl(); - adESFormResultsImpl.setCode(subResult.getResultCode()); - Logger.info("RESULT: " + String.valueOf(subResult.getResultCode())); - adESFormResultsImpl.setInfo(subResult.getInfo()); - adESFormResultsImpl.setName(level); - - adesList.add(adESFormResultsImpl); - } catch (NullPointerException e) { - Logger.warn("Catching NullPointer Exception, of invalid Form Results", e); - } - } else { - Logger.info("Subresult Level: " + level + " not available"); - } - } - - public static void checkSubResult(SignatureVerificationResult subResult, String level, List adesList) - throws ConfigurationException { - if (subResult != null) { - Logger.info("Checking Level: " + level); - try { - - AdESFormResultsImpl adESFormResultsImpl = new AdESFormResultsImpl(); - ResultCode resultCode = subResult.getResultCode(); - if (resultCode instanceof ResultCodeValid) { - adESFormResultsImpl.setCode(SignatureVerificationResult.VALID);// .getResultCode().getCode())); - } else if (resultCode instanceof ResultCodeInvalid) { - adESFormResultsImpl.setCode(SignatureVerificationResult.INVALID); - } else { - adESFormResultsImpl.setCode(SignatureVerificationResult.INDETERMINATE); - } - Logger.info("RESULT: " + resultCode.toString()); - adESFormResultsImpl.setInfo(subResult.getInfo()); - adESFormResultsImpl.setName(level); - - adesList.add(adESFormResultsImpl); - } catch (NullPointerException e) { - Logger.warn("Catching NullPointer Exception, of invalid? Form Results", e); - } - } else { - Logger.info("Subresult Level: " + level + " not available"); - } - } + private static final int MAJORRESULTCODESKIPPED = new Integer(3); + private static final int MAJORRESULTCODEERROR = new Integer(4); + + public static Integer getResultCode(Integer adesCode) { + return adesCode; + } + + public static ExtendedCertificateCheckResult getExtendedResult( + iaik.server.modules.resultcodes.ResultCode resultCode) { + ExtendedCertificateCheckResult check = null; + + int majorCode = -1; + String majorInfo = ""; + int minorCode = -1; + String minorInfo = ""; + + Logger.debug("Generating extendend validation result: " + resultCode.toString()); + + if (resultCode instanceof ResultCodeValid) { + majorCode = SignatureVerificationResult.VALID; + majorInfo = "VALID"; + + } else if (resultCode instanceof ResultCodeInvalid) { + majorCode = SignatureVerificationResult.INVALID; + majorInfo = "INVALID"; + + } else if (resultCode instanceof ResultCodeSkipped) { + majorCode = MAJORRESULTCODESKIPPED; + majorInfo = "SKIPPED"; + + } else if (resultCode instanceof ResultCodeError) { + majorCode = MAJORRESULTCODEERROR; + majorInfo = "ERROR"; + + } else { + majorCode = SignatureVerificationResult.INDETERMINATE; + majorInfo = "INDETERMINATE"; + } + + if (resultCode.getCode() != null) { + minorCode = resultCode.getCode(); + if (resultCode.getCode().equals(ResultCode.CODE_CHAIN_CONSTRAINTS_FAILURE)) { + minorInfo = "CHAIN_CONSTRAINTS_FAILURE"; + } else if (resultCode.getCode().equals(ResultCode.CODE_CRYPTO_CONSTRAINTS_FAILURE)) { + minorInfo = "CRYPTO_CONSTRAINTS_FAILURE"; + } else if (resultCode.getCode().equals(ResultCode.CODE_CRYPTO_CONSTRAINTS_FAILURE_NO_POE)) { + minorInfo = "CRYPTO_CONSTRAINTS_FAILURE_NO_POE"; + } else if (resultCode.getCode().equals(ResultCode.CODE_EXPIRED)) { + minorInfo = "EXPIRED"; + } else if (resultCode.getCode().equals(ResultCode.CODE_FORMAT_FAILURE)) { + minorInfo = "FORMAT_FAILURE"; + } else if (resultCode.getCode().equals(ResultCode.CODE_GENERIC)) { + minorInfo = "GENERIC"; + } else if (resultCode.getCode().equals(ResultCode.CODE_HASH_FAILURE)) { + minorInfo = "HASH_FAILURE"; + } else if (resultCode.getCode().equals(ResultCode.CODE_NO_CERTIFICATE_CHAIN_FOUND)) { + minorInfo = "NO_CERTIFICATE_CHAIN_FOUND"; + } else if (resultCode.getCode().equals(ResultCode.CODE_NO_POE)) { + minorInfo = "NO_POE"; + } else if (resultCode.getCode().equals(ResultCode.CODE_NO_POLICY)) { + minorInfo = "NO_POLICY"; + } else if (resultCode.getCode().equals(ResultCode.CODE_NOT_YET_VALID)) { + minorInfo = "NOT_YET_VALID"; + } else if (resultCode.getCode().equals(ResultCode.CODE_OUT_OF_BOUNDS_NO_POE)) { + minorInfo = "OUT_OF_BOUNDS_NO_POE"; + } else if (resultCode.getCode().equals(ResultCode.CODE_POLICY_PROCESSING_ERROR)) { + minorInfo = "POLICY_PROCESSING_ERROR"; + } else if (resultCode.getCode().equals(ResultCode.CODE_REVOKED)) { + minorInfo = "REVOKED"; + } else if (resultCode.getCode().equals(ResultCode.CODE_REVOKED_CA_NO_POE)) { + minorInfo = "REVOKED_CA_NO_POE"; + } else if (resultCode.getCode().equals(ResultCode.CODE_REVOKED_NO_POE)) { + minorInfo = "REVOKED_NO_POE"; + } else if (resultCode.getCode().equals(ResultCode.CODE_SIG_CONSTRAINTS_FAILURE)) { + minorInfo = "SIG_CONSTRAINTS_FAILURE"; + } else if (resultCode.getCode().equals(ResultCode.CODE_SIG_CRYPTO_FAILURE)) { + minorInfo = "SIG_CRYPTO_FAILURE"; + } else if (resultCode.getCode().equals(ResultCode.CODE_SIGNED_DATA_NOT_FOUND)) { + minorInfo = "SIGNED_DATA_NOT_FOUND"; + } else if (resultCode.getCode().equals(ResultCode.CODE_TIMESTAMP_ORDER_FAILURE)) { + minorInfo = "TIMESTAMP_ORDER_FAILURE"; + } else if (resultCode.getCode().equals(ResultCode.CODE_TRY_LATER)) { + minorInfo = "TRY_LATER"; + } else if (resultCode.getCode().equals(ResultCode.CODE_UNKNOWN_COMMITMENT_TYPE)) { + minorInfo = "UNKNOWN_COMMITMENT_TYPE"; + } else if (resultCode.getCode().equals(ResultCode.SUCCESS)) { + minorInfo = "SUCCESS"; + } else if (resultCode.getCode().equals(ResultCode.ERROR)) { + minorInfo = "ERROR"; + } else if (resultCode.getCode().equals(ResultCode.UNKNOWN_SUBFILTER)) { + minorInfo = "UNKNOWN_SUBFILTER"; + + // pdf-as 3.x detection is removed from MOA-SP since 3.1.2 + } else if (resultCode.getCode().equals(ResultCode.PDF_AS_SIGNATURE)) { + // minorInfo = "PDF_AS_SIGNATURE"; + minorInfo = "UNKNOWN_SUBFILTER"; + minorCode = ResultCode.UNKNOWN_SUBFILTER; + } + + } + + check = new ExtendedCertificateCheckResultImpl(majorCode, majorInfo, minorCode, + minorInfo); + + return check; + + } + + public static List getAdESResult(iaik.server.modules.AdESFormVerificationResult adesFormVerification) { + if (adesFormVerification == null) { + // no form information + return null; + } + + final List adesList = new ArrayList(); + + // add only the completed form result to response + final String completedForm = adesFormVerification.getCompleteForm(); + Logger.info("Find complete Form: " + completedForm); + + /* + * This code only returns the result of the completed form + */ +// if (MiscUtil.isNotEmpty(completedForm)) { +// Logger.info("Form-validation found completed form: " + completedForm); +// AdESVerificationResult subResult = adesFormVerification.getSubResult(completedForm); +// checkSubResult(subResult, completedForm, adesList); +// if (Logger.isDebugEnabled()) +// Logger.debug("Detailed Result: \n" + subResult.getInfo()); +// +// } else +// Logger.info("Form-valdition found NO completed form."); +// +// if (Logger.isDebugEnabled()) +// Logger.debug("Full form-validation result: \n" + adesFormVerification.getInfo()); + + /* + * This code returns the result for all forms + */ + // add results for all form types to response + checkSubResult(adesFormVerification.getSubResult(SignatureVerificationProfile.LEVEL_LTA), + SignatureVerificationProfile.LEVEL_LTA, adesList); + checkSubResult(adesFormVerification.getSubResult(SignatureVerificationProfile.LEVEL_LT), + SignatureVerificationProfile.LEVEL_LT, adesList); + checkSubResult(adesFormVerification.getSubResult(SignatureVerificationProfile.LEVEL_T), + SignatureVerificationProfile.LEVEL_T, adesList); + checkSubResult(adesFormVerification.getSubResult(SignatureVerificationProfile.LEVEL_B), + SignatureVerificationProfile.LEVEL_B, adesList); + + return adesList; + } + + public static void buildResult(ValidationReport report, List adesList) { + + if (report == null) { + return; + } + + final AdESFormResultsImpl adESFormResultsImpl = new AdESFormResultsImpl(); + adESFormResultsImpl.setCode(report.getStatus().ordinal()); + adESFormResultsImpl.setInfo(report.getLongText()); + adESFormResultsImpl.setName(report.getValidationName()); + + adesList.add(adESFormResultsImpl); + + if (report.getSubValidationReports() != null && !report.getSubValidationReports().isEmpty()) { + final Iterator<ValidationReport> reportIt = report.getSubValidationReports().iterator(); + while (reportIt.hasNext()) { + buildResult(reportIt.next(), adesList); + } + } + + } + + public static void checkSubResult(AdESVerificationResult subResult, String level, List adesList) { + if (subResult != null) { + Logger.debug("Checking Level: " + level); + try { + + final AdESFormResultsImpl adESFormResultsImpl = new AdESFormResultsImpl(); + adESFormResultsImpl.setCode(subResult.getResultCode()); + Logger.debug("RESULT: " + String.valueOf(subResult.getResultCode())); + adESFormResultsImpl.setInfo(subResult.getInfo()); + adESFormResultsImpl.setName(level); + + adesList.add(adESFormResultsImpl); + } catch (final NullPointerException e) { + Logger.warn("Catching NullPointer Exception, of invalid Form Results", e); + + } + } else { + Logger.info("Subresult Level: " + level + " not available"); + + } + } + + public static void checkSubResult(SignatureVerificationResult subResult, String level, List adesList) + throws ConfigurationException { + if (subResult != null) { + Logger.debug("Checking Level: " + level); + try { + + final AdESFormResultsImpl adESFormResultsImpl = new AdESFormResultsImpl(); + final iaik.server.modules.resultcodes.ResultCode resultCode = subResult.getResultCode(); + if (resultCode instanceof ResultCodeValid) { + adESFormResultsImpl.setCode(SignatureVerificationResult.VALID);// .getResultCode().getCode())); + } else if (resultCode instanceof ResultCodeInvalid) { + adESFormResultsImpl.setCode(SignatureVerificationResult.INVALID); + } else { + adESFormResultsImpl.setCode(SignatureVerificationResult.INDETERMINATE); + } + Logger.debug("RESULT: " + resultCode.toString()); + adESFormResultsImpl.setInfo(subResult.getInfo()); + adESFormResultsImpl.setName(level); + + adesList.add(adESFormResultsImpl); + } catch (final NullPointerException e) { + Logger.warn("Catching NullPointer Exception, of invalid? Form Results", e); + } + } else { + Logger.info("Subresult Level: " + level + " not available"); + } + } } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/util/CertStoreConverter.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/util/CertStoreConverter.java index 0956617..59db5db 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/util/CertStoreConverter.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/util/CertStoreConverter.java @@ -14,96 +14,96 @@ import iaik.pki.store.certstore.utils.DirectoryCertStoreConverter; public class CertStoreConverter { - private static final Logger logger = LoggerFactory.getLogger(CertStoreConverter.class); - - public static boolean convert(String certStoreRoot, TransactionId transId) { - String certStoreSubjectDN = certStoreRoot + File.separator + "subjectdn"; - - logger.error("checking for new cert store format {} -> {}", certStoreRoot, certStoreSubjectDN); - - File certStoreDirectory = new File(certStoreRoot); - if (certStoreDirectory.isDirectory() && certStoreDirectory.exists()) { - - File file = new File(certStoreSubjectDN); - - if (file.isDirectory() && file.exists()) { - // Is new Format! - logger.error("Cert store is allready new format!"); - return false; - } else { - try { - logger.error( - "###########################################################################################"); - logger.error( - "###########################################################################################"); - logger.error("The certificate store @ {} will now be converted into the new format!", - certStoreDirectory.getAbsolutePath()); - - String backup = certStoreRoot; - - if (certStoreRoot.endsWith(File.separator)) { - backup = certStoreRoot.substring(0, certStoreRoot.length() - File.separator.length()); - } - - String timestamp = String.valueOf(System.currentTimeMillis()); - backup = backup + "_" + timestamp; - - logger.error("Creating a backup of the certstore @ {}", backup); - - File backupDirectory = new File(backup); - try { - FileUtils.copyDirectory(certStoreDirectory, backupDirectory); - } catch (IOException e) { - logger.error("Failed to create certstore backup!", e); - throw new RuntimeException("Failed to create certstore backup!", e); - } - - logger.error("deleting original certstore @ {}", certStoreRoot); - - try { - FileUtils.deleteDirectory(certStoreDirectory); - } catch (IOException e1) { - logger.error("Failed to delete old certstore!", e1); - throw new RuntimeException("Failed to delete old certstore!", e1); - } - certStoreDirectory.mkdir(); - - DirectoryCertStoreConverter directoryCertStoreConverter = new DirectoryCertStoreConverter(); - - try { - logger.error("running conversion of certstore @ {}", certStoreRoot); - directoryCertStoreConverter.convert(backupDirectory.getAbsolutePath(), - certStoreDirectory.getAbsolutePath(), true, false, - new IaikLog("DirectoryCertStoreConverter"), transId); - } catch (DirectoryStoreException e) { - logger.error("Failed to run conversion of old certstore!", e); - - try { - FileUtils.copyDirectory(backupDirectory, certStoreDirectory); - } catch (IOException e1) { - logger.error("!!!!Failed to restore original certstore!!!! CHECK LOGS", e1); - throw new RuntimeException("!!!!Failed to restore original certstore!!!! CHECK LOGS", e); - - } - throw new RuntimeException("Failed to run conversion of old certstore!", e); - } - - logger.error("Conversion of certstore succseeded"); - logger.error("Certstore in new format is located @ {}", certStoreDirectory.getAbsolutePath()); - logger.error("Backup of Certstore in old format is located @ {}", - certStoreDirectory.getAbsolutePath()); - } finally { - logger.error( - "###########################################################################################"); - logger.error( - "###########################################################################################"); - } - return true; - } - } else { - logger.error("Certstore does not exist yet"); - } - return false; - } - + private static final Logger logger = LoggerFactory.getLogger(CertStoreConverter.class); + + public static boolean convert(String certStoreRoot, TransactionId transId) { + final String certStoreSubjectDN = certStoreRoot + File.separator + "subjectdn"; + + logger.info("checking for new cert store format {} -> {}", certStoreRoot, certStoreSubjectDN); + + final File certStoreDirectory = new File(certStoreRoot); + if (certStoreDirectory.isDirectory() && certStoreDirectory.exists()) { + + final File file = new File(certStoreSubjectDN); + + if (file.isDirectory() && file.exists()) { + // Is new Format! + logger.debug("Cert store is allready new format!"); + return false; + } else { + try { + logger.info( + "###########################################################################################"); + logger.info( + "###########################################################################################"); + logger.info("The certificate store @ {} will now be converted into the new format!", + certStoreDirectory.getAbsolutePath()); + + String backup = certStoreRoot; + + if (certStoreRoot.endsWith(File.separator)) { + backup = certStoreRoot.substring(0, certStoreRoot.length() - File.separator.length()); + } + + final String timestamp = String.valueOf(System.currentTimeMillis()); + backup = backup + "_" + timestamp; + + logger.info("Creating a backup of the certstore @ {}", backup); + + final File backupDirectory = new File(backup); + try { + FileUtils.copyDirectory(certStoreDirectory, backupDirectory); + } catch (final IOException e) { + logger.error("Failed to create certstore backup!", e); + throw new RuntimeException("Failed to create certstore backup!", e); + } + + logger.info("deleting original certstore @ {}", certStoreRoot); + + try { + FileUtils.deleteDirectory(certStoreDirectory); + } catch (final IOException e1) { + logger.error("Failed to delete old certstore!", e1); + throw new RuntimeException("Failed to delete old certstore!", e1); + } + certStoreDirectory.mkdir(); + + final DirectoryCertStoreConverter directoryCertStoreConverter = new DirectoryCertStoreConverter(); + + try { + logger.info("running conversion of certstore @ {}", certStoreRoot); + directoryCertStoreConverter.convert(backupDirectory.getAbsolutePath(), + certStoreDirectory.getAbsolutePath(), true, false, + new IaikLog("DirectoryCertStoreConverter"), transId); + } catch (final DirectoryStoreException e) { + logger.error("Failed to run conversion of old certstore!", e); + + try { + FileUtils.copyDirectory(backupDirectory, certStoreDirectory); + } catch (final IOException e1) { + logger.error("!!!!Failed to restore original certstore!!!! CHECK LOGS", e1); + throw new RuntimeException("!!!!Failed to restore original certstore!!!! CHECK LOGS", e); + + } + throw new RuntimeException("Failed to run conversion of old certstore!", e); + } + + logger.info("Conversion of certstore succseeded"); + logger.info("Certstore in new format is located @ {}", certStoreDirectory.getAbsolutePath()); + logger.info("Backup of Certstore in old format is located @ {}", + certStoreDirectory.getAbsolutePath()); + } finally { + logger.info( + "###########################################################################################"); + logger.info( + "###########################################################################################"); + } + return true; + } + } else { + logger.error("Certstore does not exist yet"); + } + return false; + } + } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/util/CertificateUtils.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/util/CertificateUtils.java index ce78580..b7580ac 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/util/CertificateUtils.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/util/CertificateUtils.java @@ -1,18 +1,5 @@ package at.gv.egovernment.moa.spss.util; -import iaik.asn1.ObjectID; -import iaik.asn1.structures.Name; -import iaik.asn1.structures.PolicyInformation; -import iaik.utils.RFC2253NameParser; -import iaik.utils.RFC2253NameParserException; -import iaik.x509.X509Certificate; -import iaik.x509.X509ExtensionInitException; -import iaik.x509.extensions.CertificatePolicies; -import iaik.x509.extensions.qualified.QCStatements; -import iaik.x509.extensions.qualified.structures.QCStatement; -import iaik.x509.extensions.qualified.structures.etsi.QcEuCompliance; -import iaik.x509.extensions.qualified.structures.etsi.QcEuSSCD; - import java.net.URI; import java.security.Principal; import java.util.Arrays; @@ -22,370 +9,387 @@ import java.util.List; import at.gv.egovernment.moa.sig.tsl.TslConstants; import at.gv.egovernment.moa.sig.tsl.engine.data.ITslEndEntityResult; import at.gv.egovernment.moa.sig.tsl.exception.TslException; -import at.gv.egovernment.moa.sig.tsl.utils.MiscUtil; import at.gv.egovernment.moa.spss.api.common.TslInfos; import at.gv.egovernment.moa.spss.api.impl.TslInfosImpl; import at.gv.egovernment.moa.spss.server.config.ConfigurationProvider; import at.gv.egovernment.moa.spss.tsl.TSLServiceFactory; import at.gv.egovernment.moaspss.logging.LogMsg; import at.gv.egovernment.moaspss.logging.Logger; +import iaik.asn1.ObjectID; +import iaik.asn1.structures.Name; +import iaik.asn1.structures.PolicyInformation; +import iaik.utils.RFC2253NameParser; +import iaik.utils.RFC2253NameParserException; +import iaik.x509.X509Certificate; +import iaik.x509.X509ExtensionInitException; +import iaik.x509.extensions.CertificatePolicies; +import iaik.x509.extensions.qualified.QCStatements; +import iaik.x509.extensions.qualified.structures.QCStatement; +import iaik.x509.extensions.qualified.structures.etsi.QcEuCompliance; +import iaik.x509.extensions.qualified.structures.etsi.QcEuSSCD; public class CertificateUtils { - - - /** - * Verifies if the given certificate contains QCP+ statement - * @param cert X509Certificate - * @return true if the given certificate contains QCP+ statement, else false - */ - private static boolean checkQCPPlus(X509Certificate cert) { - Logger.debug("Checking QCP+ extension"); - String OID_QCPPlus = "0.4.0.1456.1.1"; - try { - CertificatePolicies certPol = (CertificatePolicies) cert.getExtension(CertificatePolicies.oid); - if (certPol == null) { - Logger.debug("No CertificatePolicies extension found"); - return false; - } - - PolicyInformation[] polInfo = certPol.getPolicyInformation(); - if (polInfo == null) { - Logger.debug("No policy information found"); - return false; - } - - for (int i = 0; i < polInfo.length; i++) { - ObjectID oid = polInfo[i].getPolicyIdentifier(); - String oidStr = oid.getID(); - if (oidStr.compareToIgnoreCase(OID_QCPPlus) == 0) { - Logger.debug("QCP+ extension found"); - return true; - } - } - - Logger.debug("No QCP+ extension found"); - - return false; - } catch (X509ExtensionInitException e) { - Logger.debug("No QCP+ extension found"); - - return false; - } - - } - - /** - * Verifies if the given certificate contains QCP statement - * @param cert X509Certificate - * @return true if the given certificate contains QCP statement, else false - */ - private static boolean checkQCP(X509Certificate cert) { - Logger.debug("Checking QCP extension"); - String OID_QCP = "0.4.0.1456.1.2"; - try { - CertificatePolicies certPol = (CertificatePolicies) cert.getExtension(CertificatePolicies.oid); - if (certPol == null) { - Logger.debug("No CertificatePolicies extension found"); - return false; - } - - PolicyInformation[] polInfo = certPol.getPolicyInformation(); - if (polInfo == null) { - Logger.debug("No policy information found"); - return false; - } - - for (int i = 0; i < polInfo.length; i++) { - ObjectID oid = polInfo[i].getPolicyIdentifier(); - String oidStr = oid.getID(); - if (oidStr.compareToIgnoreCase(OID_QCP) == 0) { - Logger.debug("QCP extension found"); - return true; - } - - } - - Logger.debug("No QCP extension found"); - return false; - - } catch (X509ExtensionInitException e) { - Logger.debug("No QCP extension found"); - return false; - } - - } - - /** - * Verifies if the given certificate contains QcEuCompliance statement - * @param cert X509Certificate - * @return true if the given certificate contains QcEuCompliance statement, else false - */ - private static boolean checkQcEuCompliance(X509Certificate cert) { - Logger.debug("Checking QcEUCompliance extension"); - try { - QCStatements qcStatements = (QCStatements) cert.getExtension(QCStatements.oid); - - if (qcStatements == null) { - Logger.debug("No QcStatements extension found"); - return false; - } - - QCStatement qcEuCompliance = qcStatements.getQCStatements(QcEuCompliance.statementID); - - if (qcEuCompliance != null) { - Logger.debug("QcEuCompliance extension found"); - return true; - } - - Logger.debug("No QcEuCompliance extension found"); - return false; - - } catch (X509ExtensionInitException e) { - Logger.debug("No QcEuCompliance extension found"); - return false; - } - - } - - /** - * Verifies if the given certificate contains QcEuSSCD statement - * @param cert X509Certificate - * @return true if the given certificate contains QcEuSSCD statement, else false - */ - private static boolean checkQcEuSSCD(X509Certificate cert) { - Logger.debug("Checking QcEuSSCD extension"); - try { - QCStatements qcStatements = (QCStatements) cert.getExtension(QCStatements.oid); - if (qcStatements == null) { - Logger.debug("No QcStatements extension found"); - return false; - } - - QCStatement qcEuSSCD = qcStatements.getQCStatements(QcEuSSCD.statementID); - - if (qcEuSSCD != null) { - Logger.debug("QcEuSSCD extension found"); - return true; - } - - Logger.debug("No QcEuSSCD extension found"); - return false; - - } catch (X509ExtensionInitException e) { - Logger.debug("No QcEuSSCD extension found"); - return false; - } - - } - - public static QCSSCDResult checkQCSSCD(X509Certificate[] chain, Date signingTime, boolean isTSLenabledTrustprofile, ConfigurationProvider config) { - - try { - if (isTSLenabledTrustprofile) { - if (signingTime == null) { - signingTime = new Date(); - Logger.debug("TSL check without signingTime --> use current time for evaluation"); - - } - - ITslEndEntityResult tslCheckResult = - TSLServiceFactory.getTSLServiceClient().evaluate( - Arrays.asList(chain), - signingTime, - TslConstants.CHAIN_MODEL); - - if (tslCheckResult != null) { - URI tslServiceTypeIdentifier = tslCheckResult.getEvaluatedServiceTypeIdentifier(); - List<URI> tslCertificateQualifier = tslCheckResult.getEvaluatedQualifier(); - - // QC evaluation flags - boolean qc = false; - boolean qcSourceTSL = false; - boolean qcDisallowedFromTSL = false; - - // SSCD/QSCD evaluation flags - boolean sscd = false; - boolean sscdSourceTSL = false; - - - //check QC - List<URI> allowedQCQualifier = config.getTSLConfiguration().getQualifierForQC(); - for (URI el : allowedQCQualifier) { - if (el.equals(tslServiceTypeIdentifier)) { - qcSourceTSL = true; - qc = true; - - } - - } - - //check SSCD/QSCD qualifiers and mark result acording this check - List<URI> allowedSSCDQualifier = config.getTSLConfiguration().getQualifierForSSCD(); - if (tslCertificateQualifier != null && allowedSSCDQualifier != null) { - for (URI allowedSSCD : allowedSSCDQualifier) { - for (URI certSSCD : tslCertificateQualifier) { - if (allowedSSCD.equals(certSSCD)) { - sscdSourceTSL = true; - sscd = true; - - } - } - } - } - - //check additional flags in TSP qualifiers for this certificate - if (tslCertificateQualifier != null) { - for (URI qEl : tslCertificateQualifier) { - //check if SSCD/QSCD status must be used from cert - if (qEl.equals( - TslConstants.SSCD_QUALIFIER_SORT_TO_URI.get( - TslConstants.SSCD_QUALIFIER_SHORT.QCQSCDStatusAsInCert)) - || qEl.equals(TslConstants.SSCD_QUALIFIER_SORT_TO_URI.get( - TslConstants.SSCD_QUALIFIER_SHORT.QCSSCDStatusAsInCert))) { - - sscdSourceTSL = false; - sscd = false; - - //check if extentsion includes a NotQualified flag - } else if (qEl.equals( - TslConstants.SSCD_QUALIFIER_SORT_TO_URI.get( - TslConstants.SSCD_QUALIFIER_SHORT.NotQualified))) { - qc = false; - qcSourceTSL = false; - qcDisallowedFromTSL = true; - Logger.info("TSL mark this certificate explicitly as 'NotQualified'!"); - - } - } - } - - /* - * This block is removes with MOA-SP 3.1 because if TSL support is enabled for the requested TrustProfile - * QC evaluation is ONLY allowed from TSL information!!! Because with eIDAS regulation and July 01. 2016 - * the Trust-Status List is constitutive. - */ -// //evaluate QC statement according previous selected information -// if (qcSourceTSL) + + /** + * Verifies if the given certificate contains QCP+ statement + * + * @param cert X509Certificate + * @return true if the given certificate contains QCP+ statement, else false + */ + private static boolean checkQCPPlus(X509Certificate cert) { + Logger.debug("Checking QCP+ extension"); + final String OID_QCPPlus = "0.4.0.1456.1.1"; + try { + final CertificatePolicies certPol = (CertificatePolicies) cert.getExtension(CertificatePolicies.oid); + if (certPol == null) { + Logger.debug("No CertificatePolicies extension found"); + return false; + } + + final PolicyInformation[] polInfo = certPol.getPolicyInformation(); + if (polInfo == null) { + Logger.debug("No policy information found"); + return false; + } + + for (final PolicyInformation element : polInfo) { + final ObjectID oid = element.getPolicyIdentifier(); + final String oidStr = oid.getID(); + if (oidStr.compareToIgnoreCase(OID_QCPPlus) == 0) { + Logger.debug("QCP+ extension found"); + return true; + } + } + + Logger.debug("No QCP+ extension found"); + + return false; + } catch (final X509ExtensionInitException e) { + Logger.debug("No QCP+ extension found"); + + return false; + } + + } + + /** + * Verifies if the given certificate contains QCP statement + * + * @param cert X509Certificate + * @return true if the given certificate contains QCP statement, else false + */ + private static boolean checkQCP(X509Certificate cert) { + Logger.debug("Checking QCP extension"); + final String OID_QCP = "0.4.0.1456.1.2"; + try { + final CertificatePolicies certPol = (CertificatePolicies) cert.getExtension(CertificatePolicies.oid); + if (certPol == null) { + Logger.debug("No CertificatePolicies extension found"); + return false; + } + + final PolicyInformation[] polInfo = certPol.getPolicyInformation(); + if (polInfo == null) { + Logger.debug("No policy information found"); + return false; + } + + for (final PolicyInformation element : polInfo) { + final ObjectID oid = element.getPolicyIdentifier(); + final String oidStr = oid.getID(); + if (oidStr.compareToIgnoreCase(OID_QCP) == 0) { + Logger.debug("QCP extension found"); + return true; + } + + } + + Logger.debug("No QCP extension found"); + return false; + + } catch (final X509ExtensionInitException e) { + Logger.debug("No QCP extension found"); + return false; + } + + } + + /** + * Verifies if the given certificate contains QcEuCompliance statement + * + * @param cert X509Certificate + * @return true if the given certificate contains QcEuCompliance statement, else + * false + */ + private static boolean checkQcEuCompliance(X509Certificate cert) { + Logger.debug("Checking QcEUCompliance extension"); + try { + final QCStatements qcStatements = (QCStatements) cert.getExtension(QCStatements.oid); + + if (qcStatements == null) { + Logger.debug("No QcStatements extension found"); + return false; + } + + final QCStatement qcEuCompliance = qcStatements.getQCStatements(QcEuCompliance.statementID); + + if (qcEuCompliance != null) { + Logger.debug("QcEuCompliance extension found"); + return true; + } + + Logger.debug("No QcEuCompliance extension found"); + return false; + + } catch (final X509ExtensionInitException e) { + Logger.debug("No QcEuCompliance extension found"); + return false; + } + + } + + /** + * Verifies if the given certificate contains QcEuSSCD statement + * + * @param cert X509Certificate + * @return true if the given certificate contains QcEuSSCD statement, else false + */ + private static boolean checkQcEuSSCD(X509Certificate cert) { + Logger.debug("Checking QcEuSSCD extension"); + try { + final QCStatements qcStatements = (QCStatements) cert.getExtension(QCStatements.oid); + if (qcStatements == null) { + Logger.debug("No QcStatements extension found"); + return false; + } + + final QCStatement qcEuSSCD = qcStatements.getQCStatements(QcEuSSCD.statementID); + + if (qcEuSSCD != null) { + Logger.debug("QcEuSSCD extension found"); + return true; + } + + Logger.debug("No QcEuSSCD extension found"); + return false; + + } catch (final X509ExtensionInitException e) { + Logger.debug("No QcEuSSCD extension found"); + return false; + } + + } + + public static QCSSCDResult checkQCSSCD(X509Certificate[] chain, Date signingTime, + boolean isTSLenabledTrustprofile, ConfigurationProvider config) { + + try { + if (isTSLenabledTrustprofile) { + if (signingTime == null) { + signingTime = new Date(); + Logger.debug("TSL check without signingTime --> use current time for evaluation"); + + } + + final ITslEndEntityResult tslCheckResult = + TSLServiceFactory.getTSLServiceClient().evaluate( + Arrays.asList(chain), + signingTime, + TslConstants.PKIX_MODEL); + + if (tslCheckResult != null) { + final URI tslServiceTypeIdentifier = tslCheckResult.getEvaluatedServiceTypeIdentifier(); + final List<URI> tslCertificateQualifier = tslCheckResult.getEvaluatedQualifier(); + + // QC evaluation flags + boolean qc = false; + boolean qcSourceTSL = false; + boolean qcDisallowedFromTSL = false; + + // SSCD/QSCD evaluation flags + boolean sscd = false; + boolean sscdSourceTSL = false; + + // check QC + final List<URI> allowedQCQualifier = config.getTSLConfiguration().getQualifierForQC(); + for (final URI el : allowedQCQualifier) { + if (el.equals(tslServiceTypeIdentifier)) { + qcSourceTSL = true; + qc = true; + + } + + } + + // check SSCD/QSCD qualifiers and mark result acording this check + final List<URI> allowedSSCDQualifier = config.getTSLConfiguration().getQualifierForSSCD(); + if (tslCertificateQualifier != null && allowedSSCDQualifier != null) { + for (final URI allowedSSCD : allowedSSCDQualifier) { + for (final URI certSSCD : tslCertificateQualifier) { + if (allowedSSCD.equals(certSSCD)) { + sscdSourceTSL = true; + sscd = true; + + } + } + } + } + + // check additional flags in TSP qualifiers for this certificate + if (tslCertificateQualifier != null) { + for (final URI qEl : tslCertificateQualifier) { + // check if SSCD/QSCD status must be used from cert + if (qEl.equals( + TslConstants.SSCD_QUALIFIER_SORT_TO_URI.get( + TslConstants.SSCD_QUALIFIER_SHORT.QCQSCDStatusAsInCert)) + || qEl.equals(TslConstants.SSCD_QUALIFIER_SORT_TO_URI.get( + TslConstants.SSCD_QUALIFIER_SHORT.QCSSCDStatusAsInCert))) { + + sscdSourceTSL = false; + sscd = false; + + // check if extentsion includes a NotQualified flag + } else if (qEl.equals( + TslConstants.SSCD_QUALIFIER_SORT_TO_URI.get( + TslConstants.SSCD_QUALIFIER_SHORT.NotQualified))) { + qc = false; + qcSourceTSL = false; + qcDisallowedFromTSL = true; + Logger.info("TSL mark this certificate explicitly as 'NotQualified'!"); + + } + } + } + + /* + * This block is removes with MOA-SP 3.1 because if TSL support is enabled for + * the requested TrustProfile QC evaluation is ONLY allowed from TSL + * information!!! Because with eIDAS regulation and July 01. 2016 the + * Trust-Status List is constitutive. + */ +// //evaluate QC statement according previous selected information +// if (qcSourceTSL) // Logger.debug("Certificate is QC (Source: TSL)"); -// +// // else { -// -// +// +// // // if TSL return no service-type identifier us information from certificate -// if (tslServiceTypeIdentifier == null || +// if (tslServiceTypeIdentifier == null || // MiscUtil.isEmpty(tslServiceTypeIdentifier.toString())) { // // try certificate extensions QCP and QcEuCompliance // Logger.debug("QC check via TSL returned false - checking certificate extensions"); // boolean checkQCP = CertificateUtils.checkQCP(chain[0]); // boolean checkQcEuCompliance = CertificateUtils.checkQcEuCompliance(chain[0]); -// +// // if ((checkQCP || checkQcEuCompliance) && !qcDisallowedFromTSL) { // Logger.debug("Certificate is QC (Source: Certificate)"); // qc = true; -// +// // } -// } +// } // } - - - //evaluate SSCD/QSCD results according previous selected information - if (sscdSourceTSL) - Logger.debug("Certificate is SSCD (Source: TSL)"); - - else { - // if SSCD check via TSL returns false - // try certificate extensions QCP+ and QcEuSSCD - Logger.debug("SSCD check via TSL returned false - checking certificate extensions"); - boolean checkQCPPlus = CertificateUtils.checkQCPPlus(chain[0]); - boolean checkQcEuSSCD = CertificateUtils.checkQcEuSSCD(chain[0]); - - if (checkQCPPlus || checkQcEuSSCD) { - Logger.debug("Certificate is SSCD (Source: Certificate)"); - sscd = true; - } - } - - //build basic result - QCSSCDResult result = new QCSSCDResult(qc, qcSourceTSL, sscd, sscdSourceTSL); - - //add additinal information - TslInfos extTslInfos = new TslInfosImpl( - tslCheckResult.getTerritory(), - tslCheckResult.getTspStatus(), - tslServiceTypeIdentifier.toString(), - tslCertificateQualifier, - tslCheckResult.getAdditionalServiceInformation()); - result.setTslInfos(extTslInfos); - - return result; - - } else { - Logger.debug("Qualifier check via TSL return null - checking certificate extensions without QC evaluation"); - return parseInfosFromCertificate(chain, false); - - } - - } else - Logger.info("TSL support is not enabled - checking certificate extensions with QC evaluation "); - return parseInfosFromCertificate(chain, true); - } - catch (TslException e) { - MessageProvider msg = MessageProvider.getInstance(); - Logger.error(new LogMsg(msg.getMessage("tsl.01", null)), e); - - return new QCSSCDResult(); - } - - } - - private static QCSSCDResult parseInfosFromCertificate(X509Certificate[] chain, boolean performQCEvaluation) { - boolean qc = false; - boolean sscd = false; - - // Trustprofile is not TSL enabled - use certificate extensions only - - if (performQCEvaluation) { - // perform QC check - // try certificate extensions QCP and QcEuCompliance - boolean checkQCP = CertificateUtils.checkQCP(chain[0]); - boolean checkQcEuCompliance = CertificateUtils.checkQcEuCompliance(chain[0]); - - if (checkQCP || checkQcEuCompliance) - qc = true; - - } - - // perform SSCD check - // try certificate extensions QCP+ and QcEuSSCD - boolean checkQCPPlus = CertificateUtils.checkQCPPlus(chain[0]); - boolean checkQcEuSSCD = CertificateUtils.checkQcEuSSCD(chain[0]); - - if (checkQCPPlus || checkQcEuSSCD) - sscd = true; - - return new QCSSCDResult(qc, false, sscd, false); - - } - - - /** - * Gets the country from the certificate issuer - * @param cert X509 certificate - * @return Country code from the certificate issuer - */ - public static String getIssuerCountry(X509Certificate cert) { - String country = null; - Principal issuerdn = cert.getIssuerX500Principal(); - RFC2253NameParser nameParser = new RFC2253NameParser(issuerdn.getName()); - - try { - Name name = nameParser.parse(); - country = name.getRDN(ObjectID.country); - } catch (RFC2253NameParserException e) { - Logger.warn("Could not get country code from issuer."); - } - - - return country; - } + + // evaluate SSCD/QSCD results according previous selected information + if (sscdSourceTSL) { + Logger.debug("Certificate is SSCD (Source: TSL)"); + } else { + // if SSCD check via TSL returns false + // try certificate extensions QCP+ and QcEuSSCD + Logger.debug("SSCD check via TSL returned false - checking certificate extensions"); + final boolean checkQCPPlus = CertificateUtils.checkQCPPlus(chain[0]); + final boolean checkQcEuSSCD = CertificateUtils.checkQcEuSSCD(chain[0]); + + if (checkQCPPlus || checkQcEuSSCD) { + Logger.debug("Certificate is SSCD (Source: Certificate)"); + sscd = true; + } + } + + // build basic result + final QCSSCDResult result = new QCSSCDResult(qc, qcSourceTSL, sscd, sscdSourceTSL); + + // add additinal information + final TslInfos extTslInfos = new TslInfosImpl( + tslCheckResult.getTerritory(), + tslCheckResult.getTspStatus(), + tslServiceTypeIdentifier.toString(), + tslCertificateQualifier, + tslCheckResult.getAdditionalServiceInformation()); + result.setTslInfos(extTslInfos); + + return result; + + } else { + Logger.debug( + "Qualifier check via TSL return null - checking certificate extensions without QC evaluation"); + return parseInfosFromCertificate(chain, false); + + } + + } else { + Logger.info("TSL support is not enabled - checking certificate extensions with QC evaluation "); + } + return parseInfosFromCertificate(chain, true); + } catch (final TslException e) { + final MessageProvider msg = MessageProvider.getInstance(); + Logger.error(new LogMsg(msg.getMessage("tsl.01", null)), e); + + return new QCSSCDResult(); + } + + } + + private static QCSSCDResult parseInfosFromCertificate(X509Certificate[] chain, + boolean performQCEvaluation) { + boolean qc = false; + boolean sscd = false; + + // Trustprofile is not TSL enabled - use certificate extensions only + + if (performQCEvaluation) { + // perform QC check + // try certificate extensions QCP and QcEuCompliance + final boolean checkQCP = CertificateUtils.checkQCP(chain[0]); + final boolean checkQcEuCompliance = CertificateUtils.checkQcEuCompliance(chain[0]); + + if (checkQCP || checkQcEuCompliance) { + qc = true; + } + + } + + // perform SSCD check + // try certificate extensions QCP+ and QcEuSSCD + final boolean checkQCPPlus = CertificateUtils.checkQCPPlus(chain[0]); + final boolean checkQcEuSSCD = CertificateUtils.checkQcEuSSCD(chain[0]); + + if (checkQCPPlus || checkQcEuSSCD) { + sscd = true; + } + + return new QCSSCDResult(qc, false, sscd, false); + + } + + /** + * Gets the country from the certificate issuer + * + * @param cert X509 certificate + * @return Country code from the certificate issuer + */ + public static String getIssuerCountry(X509Certificate cert) { + String country = null; + final Principal issuerdn = cert.getIssuerX500Principal(); + final RFC2253NameParser nameParser = new RFC2253NameParser(issuerdn.getName()); + + try { + final Name name = nameParser.parse(); + country = name.getRDN(ObjectID.country); + } catch (final RFC2253NameParserException e) { + Logger.warn("Could not get country code from issuer."); + } + + return country; + } } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/util/ExternalURIVerifier.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/util/ExternalURIVerifier.java index 859e7e9..be40a9e 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/util/ExternalURIVerifier.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/util/ExternalURIVerifier.java @@ -12,103 +12,103 @@ import at.gv.egovernment.moaspss.logging.LogMsg; import at.gv.egovernment.moaspss.logging.Logger;
public class ExternalURIVerifier {
-
- public static void verify(String host, int port) throws MOAApplicationException {
-
-
- if (host == null)
- return;
- if (host.equalsIgnoreCase(""))
- return;
-
- try {
- ConfigurationProvider config = ConfigurationProvider.getInstance();
-
- boolean allowExternalUris = config.getAllowExternalUris();
- List blacklist = config.getBlackListedUris();
- List whitelist = config.getWhiteListedUris();
-
- InetAddress hostInetAddress = InetAddress.getByName(host);
- String ip = hostInetAddress.getHostAddress();
-
-
- if (allowExternalUris) {
- // external URIs are allowed - check blacklist
- Iterator it = blacklist.iterator();
- while (it.hasNext()) {
- String[] array = (String[])it.next();
- String bhost = array[0];
- String bport = array[1];
- if (bport == null || port == -1) {
- // check only host
- if (ip.startsWith(bhost)) {
- Logger.debug(new LogMsg("Blacklist check: " + host + " (" + ip + ") blacklisted"));
- throw new MOAApplicationException("4002", new Object[]{host + "(" + ip + ")"});
- }
- }
- else {
- // check host and port
- int iport = new Integer(bport).intValue();
- if (ip.startsWith(bhost) && (iport == port)) {
- Logger.debug(new LogMsg("Blacklist check: " + host + ":" + port + " (" + ip + ":" + port + " blacklisted"));
- throw new MOAApplicationException("4002", new Object[]{host + ":" + port + " (" + ip + ":" + port + ")"});
- }
-
- }
- }
- }
- else {
- // external uris are forbidden - check whitelist
- Iterator it = whitelist.iterator();
- boolean allowed = false;
- while (it.hasNext()) {
- String[] array = (String[])it.next();
- String bhost = array[0];
- String bport = array[1];
- if (bport == null || port == -1) {
- // check only host
- if (ip.startsWith(bhost)) {
- Logger.debug(new LogMsg("Whitelist check: " + host + " (" + ip + ") whitelisted"));
- allowed = true;
- //throw new MOAApplicationException("4002", new Object[]{host + "(" + ip + ")"});
- }
- }
- else {
- // check host and port
- int iport = new Integer(bport).intValue();
- if (ip.startsWith(bhost) && (iport == port)) {
- Logger.debug(new LogMsg("Whitelist check: " + host + ":" + port + " (" + ip + ":" + port + " whitelisted"));
- //throw new MOAApplicationException("4002", new Object[]{host + ":" + port + " (" + ip + ":" + port + ")"});
- allowed = true;
- }
-
- }
- }
-
- if (!allowed) {
- if (port != -1) {
- Logger.debug(new LogMsg("No external URIs allowed (" + host + ")"));
- throw new MOAApplicationException("4001", new Object[]{host + "(" + ip + ")"});
- }
- else {
- Logger.debug(new LogMsg("No external URIs allowed (" + host + ":" + port + ")"));
- throw new MOAApplicationException("4001", new Object[]{host + ":" + port + " (" + ip + ":" + port + ")"});
- }
-
- }
-
- }
-
- Logger.debug(new LogMsg("URI allowed: " + ip + ":" + port));
-
- } catch (ConfigurationException e) {
- throw new MOAApplicationException("config.10", null);
- } catch (UnknownHostException e) {
- throw new MOAApplicationException("4003", new Object[]{host});
- }
-
-
-
- }
+
+ public static void verify(String host, int port) throws MOAApplicationException {
+
+ if (host == null) {
+ return;
+ }
+ if (host.equalsIgnoreCase("")) {
+ return;
+ }
+
+ try {
+ final ConfigurationProvider config = ConfigurationProvider.getInstance();
+
+ final boolean allowExternalUris = config.getAllowExternalUris();
+ final List blacklist = config.getBlackListedUris();
+ final List whitelist = config.getWhiteListedUris();
+
+ final InetAddress hostInetAddress = InetAddress.getByName(host);
+ final String ip = hostInetAddress.getHostAddress();
+
+ if (allowExternalUris) {
+ // external URIs are allowed - check blacklist
+ final Iterator it = blacklist.iterator();
+ while (it.hasNext()) {
+ final String[] array = (String[]) it.next();
+ final String bhost = array[0];
+ final String bport = array[1];
+ if (bport == null || port == -1) {
+ // check only host
+ if (ip.startsWith(bhost)) {
+ Logger.debug(new LogMsg("Blacklist check: " + host + " (" + ip + ") blacklisted"));
+ throw new MOAApplicationException("4002", new Object[] { host + "(" + ip + ")" });
+ }
+ } else {
+ // check host and port
+ final int iport = new Integer(bport).intValue();
+ if (ip.startsWith(bhost) && iport == port) {
+ Logger.debug(new LogMsg("Blacklist check: " + host + ":" + port + " (" + ip + ":" + port
+ + " blacklisted"));
+ throw new MOAApplicationException("4002", new Object[] { host + ":" + port + " (" + ip + ":"
+ + port + ")" });
+ }
+
+ }
+ }
+ } else {
+ // external uris are forbidden - check whitelist
+ final Iterator it = whitelist.iterator();
+ boolean allowed = false;
+ while (it.hasNext()) {
+ final String[] array = (String[]) it.next();
+ final String bhost = array[0];
+ final String bport = array[1];
+ if (bport == null || port == -1) {
+ // check only host
+ if (ip.startsWith(bhost)) {
+ Logger.debug(new LogMsg("Whitelist check: " + host + " (" + ip + ") whitelisted"));
+ allowed = true;
+ // throw new MOAApplicationException("4002", new Object[]{host + "(" + ip +
+ // ")"});
+ }
+ } else {
+ // check host and port
+ final int iport = new Integer(bport).intValue();
+ if (ip.startsWith(bhost) && iport == port) {
+ Logger.debug(new LogMsg("Whitelist check: " + host + ":" + port + " (" + ip + ":" + port
+ + " whitelisted"));
+ // throw new MOAApplicationException("4002", new Object[]{host + ":" + port + "
+ // (" + ip + ":" + port + ")"});
+ allowed = true;
+ }
+
+ }
+ }
+
+ if (!allowed) {
+ if (port != -1) {
+ Logger.debug(new LogMsg("No external URIs allowed (" + host + ")"));
+ throw new MOAApplicationException("4001", new Object[] { host + "(" + ip + ")" });
+ } else {
+ Logger.debug(new LogMsg("No external URIs allowed (" + host + ":" + port + ")"));
+ throw new MOAApplicationException("4001", new Object[] { host + ":" + port + " (" + ip + ":"
+ + port + ")" });
+ }
+
+ }
+
+ }
+
+ Logger.debug(new LogMsg("URI allowed: " + ip + ":" + port));
+
+ } catch (final ConfigurationException e) {
+ throw new MOAApplicationException("config.10", null);
+ } catch (final UnknownHostException e) {
+ throw new MOAApplicationException("4003", new Object[] { host });
+ }
+
+ }
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/util/FilteredOutputStream.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/util/FilteredOutputStream.java index 3a9fe51..4f33617 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/util/FilteredOutputStream.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/util/FilteredOutputStream.java @@ -6,71 +6,73 @@ import java.io.OutputStream; import java.math.BigDecimal; public class FilteredOutputStream extends BufferedOutputStream { - private BigDecimal from = null; - private BigDecimal to = null; - private BigDecimal counter = new BigDecimal("0"); - BigDecimal one = new BigDecimal("1"); - - public FilteredOutputStream(OutputStream innerStream, - int bufferSize, BigDecimal from, - BigDecimal to) { - super(innerStream, bufferSize); - this.from = from; - this.to = to; - } + private BigDecimal from = null; + private BigDecimal to = null; + private BigDecimal counter = new BigDecimal("0"); + BigDecimal one = new BigDecimal("1"); - @Override - public synchronized void write(int b) throws IOException { - if(!inRange(counter)) { - super.write(b); - } - counter = counter.add(one); - } + public FilteredOutputStream(OutputStream innerStream, + int bufferSize, BigDecimal from, + BigDecimal to) { + super(innerStream, bufferSize); + this.from = from; + this.to = to; + } - @Override - public synchronized void write(byte[] b, int off, int len) throws IOException { - this.filteredWrite(b, off, len); - } + @Override + public synchronized void write(int b) throws IOException { + if (!inRange(counter)) { + super.write(b); + } + counter = counter.add(one); + } - @Override - public synchronized void flush() throws IOException { - super.flush(); - } + @Override + public synchronized void write(byte[] b, int off, int len) throws IOException { + this.filteredWrite(b, off, len); + } - @Override - public void write(byte[] b) throws IOException { - if(b != null) { - this.filteredWrite(b, 0, b.length); - } - } + @Override + public synchronized void flush() throws IOException { + super.flush(); + } - @Override - public void close() throws IOException { - super.close(); - } - - private synchronized void filteredWrite(byte[] b, int off, int len) throws IOException { - for(int i = 0; i < len; i++) { - if(!inRange(counter)) { - super.write(b[off+i]); - } - counter = counter.add(one); - } - } - - private boolean inRange(BigDecimal counter) { - if ( (from == null) || (to == null)) - return false; - - int compare = counter.compareTo(from); - if (compare == -1) - return false; - else { - compare = counter.compareTo(to); - if (compare == 1) - return false; - else - return true; - } - } + @Override + public void write(byte[] b) throws IOException { + if (b != null) { + this.filteredWrite(b, 0, b.length); + } + } + + @Override + public void close() throws IOException { + super.close(); + } + + private synchronized void filteredWrite(byte[] b, int off, int len) throws IOException { + for (int i = 0; i < len; i++) { + if (!inRange(counter)) { + super.write(b[off + i]); + } + counter = counter.add(one); + } + } + + private boolean inRange(BigDecimal counter) { + if (from == null || to == null) { + return false; + } + + int compare = counter.compareTo(from); + if (compare == -1) { + return false; + } else { + compare = counter.compareTo(to); + if (compare == 1) { + return false; + } else { + return true; + } + } + } } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/util/MOASPSSEntityResolver.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/util/MOASPSSEntityResolver.java index ee6fe0a..047c2bf 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/util/MOASPSSEntityResolver.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/util/MOASPSSEntityResolver.java @@ -36,20 +36,21 @@ import at.gv.egovernment.moaspss.logging.LogMsg; import at.gv.egovernment.moaspss.logging.Logger;
import at.gv.egovernment.moaspss.util.Constants;
-
/**
- * An <code>EntityResolver</code> that looks up entities stored as
- * local resources.
- *
- * <p>The following DTDs are mapped to local resources:
+ * An <code>EntityResolver</code> that looks up entities stored as local
+ * resources.
+ *
+ * <p>
+ * The following DTDs are mapped to local resources:
* <ul>
* <li>The XMLSchema.dtd</li>
* <li>The datatypes.dtd</li>
* </ul>
* </p>
- * <p>For all other resources, an attempt is made to resolve them as resources,
+ * <p>
+ * For all other resources, an attempt is made to resolve them as resources,
* either absolute or relative to <code>Constants.SCHEMA_ROOT</code>.
- *
+ *
* @author Patrick Peck
* @author Sven Aigner
*/
@@ -57,65 +58,66 @@ public class MOASPSSEntityResolver implements EntityResolver { /**
* Resolve an entity.
- *
+ *
* The <code>systemId</code> parameter is used to perform the lookup of the
- * entity as a resource, either by interpreting the <code>systemId</code> as
- * an absolute resource path, or by appending the last path component of
+ * entity as a resource, either by interpreting the <code>systemId</code> as an
+ * absolute resource path, or by appending the last path component of
* <code>systemId</code> to <code>Constants.SCHEMA_ROOT</code>.
- *
+ *
* @param publicId The public ID of the resource.
* @param systemId The system ID of the resource.
* @return An <code>InputSource</code> from which the entity can be read, or
- * <code>null</code>, if the entity could not be found.
- * @see org.xml.sax.EntityResolver#resolveEntity(java.lang.String, java.lang.String)
+ * <code>null</code>, if the entity could not be found.
+ * @see org.xml.sax.EntityResolver#resolveEntity(java.lang.String,
+ * java.lang.String)
*/
+ @Override
public InputSource resolveEntity(String publicId, String systemId) throws SAXException {
InputStream stream;
int slashPos;
-
+
if (Logger.isDebugEnabled()) {
Logger.debug(
- new LogMsg("resolveEntity: p=" + publicId + " s=" + systemId));
+ new LogMsg("resolveEntity: p=" + publicId + " s=" + systemId));
}
if (publicId != null) {
// check if we can resolve some standard dtd's
if (publicId.equalsIgnoreCase("-//W3C//DTD XMLSchema 200102//EN")) {
return new InputSource(
- getClass().getResourceAsStream(
- Constants.SCHEMA_ROOT + "XMLSchema.dtd"));
+ getClass().getResourceAsStream(
+ Constants.SCHEMA_ROOT + "XMLSchema.dtd"));
} else if (publicId.equalsIgnoreCase("datatypes")) {
return new InputSource(
- getClass().getResourceAsStream(
- Constants.SCHEMA_ROOT + "datatypes.dtd"));
+ getClass().getResourceAsStream(
+ Constants.SCHEMA_ROOT + "datatypes.dtd"));
}
} else if (systemId != null) {
// get the URI path
try {
- URI uri = new URI(systemId);
+ final URI uri = new URI(systemId);
systemId = uri.getPath();
-
+
if ("".equals(systemId.trim())) {
return null;
}
-
+
// if (!"file".equals(uri.getScheme()) || "".equals(systemId.trim())) {
// return null;
// }
ExternalURIVerifier.verify(uri.getHost(), uri.getPort());
-
- } catch (MalformedURIException e) {
+
+ } catch (final MalformedURIException e) {
return null;
- }
- catch (MOAApplicationException e) {
- throw new SAXException(e);
+ } catch (final MOAApplicationException e) {
+ throw new SAXException(e);
}
-
+
// try to get the resource from the full path
stream = getClass().getResourceAsStream(systemId);
if (stream != null) {
- InputSource source = new InputSource(stream);
+ final InputSource source = new InputSource(stream);
source.setSystemId(systemId);
return source;
@@ -126,9 +128,9 @@ public class MOASPSSEntityResolver implements EntityResolver { if (slashPos >= 0 && systemId.length() > slashPos) {
systemId = systemId.substring(slashPos + 1, systemId.length());
stream =
- getClass().getResourceAsStream(Constants.SCHEMA_ROOT + systemId);
+ getClass().getResourceAsStream(Constants.SCHEMA_ROOT + systemId);
if (stream != null) {
- InputSource source = new InputSource(stream);
+ final InputSource source = new InputSource(stream);
source.setSystemId(systemId);
return source;
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/util/MessageProvider.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/util/MessageProvider.java index 47b8d36..cb83b3a 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/util/MessageProvider.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/util/MessageProvider.java @@ -21,7 +21,6 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.util; import java.util.Locale; @@ -30,45 +29,45 @@ import at.gv.egovernment.moaspss.util.Messages; /** * Singleton wrapper around a <code>Messages</code> object. - * + * * @author Patrick Peck * @version $Id$ */ public class MessageProvider { - - /** The resource names of the messages to load. */ + + /** The resource names of the messages to load. */ private static final String[] DEFAULT_MESSAGE_RESOURCES = - { "resources/properties/spss_messages" }; + { "resources/properties/spss_messages" }; /** The corresponding message locales. */ private static final Locale[] DEFAULT_MESSAGE_LOCALES = - new Locale[] { new Locale("de", "AT") }; + new Locale[] { new Locale("de", "AT") }; /** The single instance of this class. */ private static MessageProvider instance; - + /** The messages provided by the <code>MessageProvider</code>. */ - private Messages messages; - + private final Messages messages; + /** * Return the single instance of the <code>MessageProvider</code>. - * + * * Intialilizes the <code>MessageProvider</code> with the default message * locations: <code>/resources/properties/spss_messages</code>. - * + * * @return The single <code>MessageProvider</code>. */ public static synchronized MessageProvider getInstance() { if (instance == null) { instance = - new MessageProvider(DEFAULT_MESSAGE_RESOURCES, DEFAULT_MESSAGE_LOCALES); + new MessageProvider(DEFAULT_MESSAGE_RESOURCES, DEFAULT_MESSAGE_LOCALES); } return instance; } /** * Create a <code>MessageProvider</code>. - * + * * @param resourceNames The names of the resources containing the messages. - * @param locales The corresponding locales. + * @param locales The corresponding locales. */ protected MessageProvider(String[] resourceNames, Locale[] locales) { this.messages = new Messages(resourceNames, locales); @@ -77,13 +76,12 @@ public class MessageProvider { /** * Get the message corresponding to a given message ID. * - * @param messageId The ID of the message. + * @param messageId The ID of the message. * @param parameters The parameters to fill in into the message arguments. - * @return The formatted message. + * @return The formatted message. */ public String getMessage(String messageId, Object[] parameters) { return messages.getMessage(messageId, parameters); } - } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/util/NodeListToNodeSetDataAdapter.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/util/NodeListToNodeSetDataAdapter.java index e9b1f7d..9c684b1 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/util/NodeListToNodeSetDataAdapter.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/util/NodeListToNodeSetDataAdapter.java @@ -10,17 +10,17 @@ import org.w3c.dom.NodeList; public class NodeListToNodeSetDataAdapter implements NodeSetData { - private List list = new ArrayList(); - - public NodeListToNodeSetDataAdapter(NodeList list) { - for(int i = 0; i < list.getLength(); i++) { - this.list.add(list.item(i)); - } - } - - @Override - public Iterator iterator() { - return this.list.iterator(); - } + private final List list = new ArrayList(); + + public NodeListToNodeSetDataAdapter(NodeList list) { + for (int i = 0; i < list.getLength(); i++) { + this.list.add(list.item(i)); + } + } + + @Override + public Iterator iterator() { + return this.list.iterator(); + } } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/util/QCSSCDResult.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/util/QCSSCDResult.java index c00225d..3e8a7fd 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/util/QCSSCDResult.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/util/QCSSCDResult.java @@ -4,50 +4,50 @@ import at.gv.egovernment.moa.spss.api.common.TslInfos; public class QCSSCDResult { - private boolean qc; - private boolean qcSourceTSL; - - private boolean sscd; - private boolean sscdSourceTSL; - - private TslInfos tslInfos; - - - - public QCSSCDResult() { - this.qc = false; - this.qcSourceTSL = false; - this.sscd = false; - this.sscdSourceTSL = false; - } - - public QCSSCDResult(boolean qc, boolean qcSourceTSL, boolean sscd, boolean sscdSourceTSL) { - this.qc = qc; - this.qcSourceTSL = qcSourceTSL; - this.sscd = sscd; - this.sscdSourceTSL = sscdSourceTSL; - } - - public boolean isQC() { - return this.qc; - } - public boolean isQCSourceTSL() { - return this.qcSourceTSL; - } - public boolean isSSCD() { - return this.sscd; - } - public boolean isSSCDSourceTSL() { - return this.sscdSourceTSL; - } - - public TslInfos getTslInfos() { - return tslInfos; - } - - public void setTslInfos(TslInfos tslInfos) { - this.tslInfos = tslInfos; - } - - + private final boolean qc; + private final boolean qcSourceTSL; + + private final boolean sscd; + private final boolean sscdSourceTSL; + + private TslInfos tslInfos; + + public QCSSCDResult() { + this.qc = false; + this.qcSourceTSL = false; + this.sscd = false; + this.sscdSourceTSL = false; + } + + public QCSSCDResult(boolean qc, boolean qcSourceTSL, boolean sscd, boolean sscdSourceTSL) { + this.qc = qc; + this.qcSourceTSL = qcSourceTSL; + this.sscd = sscd; + this.sscdSourceTSL = sscdSourceTSL; + } + + public boolean isQC() { + return this.qc; + } + + public boolean isQCSourceTSL() { + return this.qcSourceTSL; + } + + public boolean isSSCD() { + return this.sscd; + } + + public boolean isSSCDSourceTSL() { + return this.sscdSourceTSL; + } + + public TslInfos getTslInfos() { + return tslInfos; + } + + public void setTslInfos(TslInfos tslInfos) { + this.tslInfos = tslInfos; + } + } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/util/ResetableInputStreamWrapper.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/util/ResetableInputStreamWrapper.java index 243cd5d..f0e5326 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/util/ResetableInputStreamWrapper.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/util/ResetableInputStreamWrapper.java @@ -6,54 +6,54 @@ import java.io.InputStream; public class ResetableInputStreamWrapper extends InputStream { - private ByteArrayInputStream bais; - - public ResetableInputStreamWrapper(ByteArrayInputStream bais) { - this.bais = bais; - } - - @Override - public int read() throws IOException { - return this.bais.read(); - } - - @Override - public int read(byte[] b) throws IOException { - return this.bais.read(b); - } - - @Override - public int read(byte[] b, int off, int len) throws IOException { - return this.bais.read(b, off, len); - } - - @Override - public long skip(long n) throws IOException { - return this.bais.skip(n); - } - - @Override - public int available() throws IOException { - return this.bais.available(); - } - - @Override - public void close() throws IOException { - this.bais.close(); - } - - @Override - public synchronized void mark(int readlimit) { - this.bais.mark(readlimit); - } - - @Override - public synchronized void reset() throws IOException { - this.bais.reset(); - } - - @Override - public boolean markSupported() { - return this.bais.markSupported(); - } + private final ByteArrayInputStream bais; + + public ResetableInputStreamWrapper(ByteArrayInputStream bais) { + this.bais = bais; + } + + @Override + public int read() throws IOException { + return this.bais.read(); + } + + @Override + public int read(byte[] b) throws IOException { + return this.bais.read(b); + } + + @Override + public int read(byte[] b, int off, int len) throws IOException { + return this.bais.read(b, off, len); + } + + @Override + public long skip(long n) throws IOException { + return this.bais.skip(n); + } + + @Override + public int available() throws IOException { + return this.bais.available(); + } + + @Override + public void close() throws IOException { + this.bais.close(); + } + + @Override + public synchronized void mark(int readlimit) { + this.bais.mark(readlimit); + } + + @Override + public synchronized void reset() throws IOException { + this.bais.reset(); + } + + @Override + public boolean markSupported() { + return this.bais.markSupported(); + } } diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/util/SecProviderUtils.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/util/SecProviderUtils.java index edcac97..12e3837 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/util/SecProviderUtils.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/util/SecProviderUtils.java @@ -7,16 +7,16 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class SecProviderUtils { - - private static final Logger logger = LoggerFactory.getLogger(SecProviderUtils.class); - - - public static void dumpSecProviders(String message) { - - logger.info("Security Providers: {}", message); - - for(Provider provider : Security.getProviders()) { - logger.info(" - {} - {}", provider.getName(), provider.getVersion()); - } - } + + private static final Logger logger = LoggerFactory.getLogger(SecProviderUtils.class); + + public static void dumpSecProviders(String message) { + if (logger.isDebugEnabled()) { + logger.info("Security Providers: {}", message); + for (final Provider provider : Security.getProviders()) { + logger.info(" - {} - {}", provider.getName(), provider.getVersion()); + + } + } + } } diff --git a/moaSig/moa-sig-lib/src/main/resources/resources/properties/spss_messages_de.properties b/moaSig/moa-sig-lib/src/main/resources/resources/properties/spss_messages_de.properties index 76a635a..6971f56 100644 --- a/moaSig/moa-sig-lib/src/main/resources/resources/properties/spss_messages_de.properties +++ b/moaSig/moa-sig-lib/src/main/resources/resources/properties/spss_messages_de.properties @@ -195,4 +195,5 @@ asic.0012=Evidence Record (XML) not supported asic.0013=Timestamp Tokens not supported
asic.0014=ASiC-S can only contain one data object file
asic.0015=ASiC-S can only contain one signature file
-asic.0016=Provided ASiC format is not supported for verification
\ No newline at end of file +asic.0016=Provided ASiC format is not supported for verification
+asic.0017=ASiC container is corrupt. More then one entry with name {0}
\ No newline at end of file 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..c76c4f5 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
-->
<definitions xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:tns="http://reference.e-government.gv.at/namespace/moa/20020822#" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:moa="http://reference.e-government.gv.at/namespace/moa/20020822#" xmlns:xsd="http://www.w3.org/1999/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" name="MOA" targetNamespace="http://reference.e-government.gv.at/namespace/moa/20020822#">
- <import namespace="http://reference.e-government.gv.at/namespace/moa/20020822#" location="../resources/schemas/MOA-SPSS-3.0.0.xsd"/>
+ <import namespace="http://reference.e-government.gv.at/namespace/moa/20020822#" location="../resources/schemas/MOA-SPSS-3.1.2.xsd"/>
<message name="CreateCMSSignatureInput">
<part name="body" element="moa:CreateCMSSignatureRequest"/>
</message>
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 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- MOA SP/SS 2.0.0 Schema --> +<xsd:schema xmlns:dsig="http://www.w3.org/2000/09/xmldsig#" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://reference.e-government.gv.at/namespace/moa/20020822#" targetNamespace="http://reference.e-government.gv.at/namespace/moa/20020822#" elementFormDefault="qualified" attributeFormDefault="unqualified" version="1.2"> + <xsd:import namespace="http://www.w3.org/2000/09/xmldsig#" schemaLocation="http://www.w3.org/TR/xmldsig-core/xmldsig-core-schema.xsd"/> + <xsd:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="http://www.w3.org/2001/xml.xsd"/> + <!--########## Create CMS Signature ### --> + <!--### Create CMS Signature Request ### --> + <xsd:element name="CreateCMSSignatureRequest"> + <xsd:complexType> + <xsd:complexContent> + <xsd:extension base="CreateCMSSignatureRequestType"/> + </xsd:complexContent> + </xsd:complexType> + </xsd:element> + <xsd:complexType name="CreateCMSSignatureRequestType"> + <xsd:sequence> + <xsd:element name="KeyIdentifier" type="KeyIdentifierType"/> + <xsd:element name="SingleSignatureInfo" maxOccurs="unbounded"> + <xsd:annotation> + <xsd:documentation>Ermöglichung der Stapelsignatur durch + wiederholte Angabe dieses Elements</xsd:documentation> + </xsd:annotation> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="DataObjectInfo"> + <xsd:complexType> + <xsd:complexContent> + <xsd:extension base="CMSDataObjectInfoType"/> + </xsd:complexContent> + </xsd:complexType> + </xsd:element> + </xsd:sequence> + <xsd:attribute name="SecurityLayerConformity" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="PAdESConformity" type="xsd:boolean" use="optional" default="false"/> + </xsd:complexType> + </xsd:element> + </xsd:sequence> + </xsd:complexType> + <!--### Create CMS Signature Response ### --> + <xsd:element name="CreateCMSSignatureResponse" type="CreateCMSSignatureResponseType"/> + <xsd:complexType name="CreateCMSSignatureResponseType"> + <xsd:choice maxOccurs="unbounded"> + <xsd:annotation> + <xsd:documentation>Kardinalität 1..oo erlaubt die Antwort auf eine + Stapelsignatur-Anfrage</xsd:documentation> + </xsd:annotation> + <xsd:element name="CMSSignature" type="xsd:base64Binary"> + <xsd:annotation> + <xsd:documentation>Resultat, falls die Signaturerstellung + erfolgreich war</xsd:documentation> + </xsd:annotation> + </xsd:element> + <xsd:element ref="ErrorResponse"/> + </xsd:choice> + </xsd:complexType> + <!--########## Create XML Signature ### --> + <!--### Create XML Signature Request ### --> + <xsd:element name="CreateXMLSignatureRequest"> + <xsd:complexType> + <xsd:complexContent> + <xsd:extension base="CreateXMLSignatureRequestType"/> + </xsd:complexContent> + </xsd:complexType> + </xsd:element> + <xsd:complexType name="CreateXMLSignatureRequestType"> + <xsd:sequence> + <xsd:element name="KeyIdentifier" type="KeyIdentifierType"/> + <xsd:element name="SingleSignatureInfo" maxOccurs="unbounded"> + <xsd:annotation> + <xsd:documentation>Ermöglichung der Stapelsignatur durch + wiederholte Angabe dieses Elements</xsd:documentation> + </xsd:annotation> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="DataObjectInfo" maxOccurs="unbounded"> + <xsd:complexType> + <xsd:complexContent> + <xsd:extension base="DataObjectInfoType"> + <xsd:attribute name="ChildOfManifest" type="xsd:boolean" use="optional" default="false"/> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + </xsd:element> + <xsd:element name="CreateSignatureInfo" minOccurs="0"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="CreateSignatureEnvironment" type="ContentOptionalRefType"/> + <xsd:choice> + <xsd:annotation> + <xsd:documentation>Auswahl: Entweder explizite Angabe des + Signaturorts sowie ggf. sinnvoller Supplements im Zshg. mit + der Signaturumgebung, oder Verweis auf ein benanntes Profil + </xsd:documentation> + </xsd:annotation> + <xsd:element ref="CreateSignatureEnvironmentProfile"/> + <xsd:element name="CreateSignatureEnvironmentProfileID" type="ProfileIdentifierType"/> + </xsd:choice> + </xsd:sequence> + </xsd:complexType> + </xsd:element> + </xsd:sequence> + <xsd:attribute name="SecurityLayerConformity" type="xsd:boolean" use="optional" default="true"/> + </xsd:complexType> + </xsd:element> + </xsd:sequence> + </xsd:complexType> + <!--### Create XML Signature Response ### --> + <xsd:complexType name="CreateXMLSignatureResponseType"> + <xsd:choice maxOccurs="unbounded"> + <xsd:annotation> + <xsd:documentation>Kardinalität 1..oo erlaubt die Antwort auf eine + Stapelsignatur-Anfrage</xsd:documentation> + </xsd:annotation> + <xsd:element name="SignatureEnvironment"> + <xsd:annotation> + <xsd:documentation>Resultat, falls die Signaturerstellung + erfolgreich war</xsd:documentation> + </xsd:annotation> + <xsd:complexType> + <xsd:sequence> + <xsd:any namespace="##any" processContents="lax"/> + </xsd:sequence> + </xsd:complexType> + </xsd:element> + <xsd:element ref="ErrorResponse"/> + </xsd:choice> + </xsd:complexType> + <xsd:element name="CreateXMLSignatureResponse" type="CreateXMLSignatureResponseType"/> + <!--########## Create PDF Signature ### --> + <!--### Create PDF Signature Request ### --> + <xsd:element name="CreatePDFSignatureRequest"> + <xsd:complexType> + <xsd:complexContent> + <xsd:extension base="CreatePDFSignatureRequestType"/> + </xsd:complexContent> + </xsd:complexType> + </xsd:element> + <xsd:complexType name="CreatePDFSignatureRequestType"> + <xsd:sequence> + <xsd:element name="KeyIdentifier" type="KeyIdentifierType"/> + <xsd:element name="SingleSignatureInfo" maxOccurs="unbounded"> + <xsd:annotation> + <xsd:documentation>Ermöglichung der Stapelsignatur durch + wiederholte Angabe dieses Elements</xsd:documentation> + </xsd:annotation> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="PDFDocument" type="xsd:base64Binary"/> + <xsd:element name="SignatureProfile" type="xsd:string" minOccurs="0" maxOccurs="1"/> + <xsd:element name="SignaturePosition" type="xsd:string" minOccurs="0" maxOccurs="1"/> + <xsd:element name="SignatureID" type="xsd:string" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + </xsd:element> + </xsd:sequence> + </xsd:complexType> + <!--### Create PDF Signature Response ### --> + <xsd:element name="CreatePDFSignatureResponse" type="CreatePDFSignatureResponseType"/> + <xsd:complexType name="CreatePDFSignatureResponseType"> + <xsd:sequence> + <xsd:element name="PDFSignature" type="PDFSignedRepsonse" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <!--########## Verify CMS Signature ### --> + <!--### Verifiy CMS Signature Request ### --> + <xsd:element name="VerifyCMSSignatureRequest"> + <xsd:complexType> + <xsd:complexContent> + <xsd:extension base="VerifyCMSSignatureRequestType"> + <xsd:attribute name="Signatories" type="SignatoriesType" use="optional" default="1"/> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + </xsd:element> + <xsd:complexType name="VerifyCMSSignatureRequestType"> + <xsd:sequence> + <xsd:element name="DateTime" type="xsd:dateTime" minOccurs="0"/> + <xsd:element name="ExtendedValidation" type="xsd:boolean" default="false" minOccurs="0"/> + <xsd:element name="CMSSignature" type="xsd:base64Binary"/> + <xsd:element name="DataObject" type="CMSDataObjectOptionalMetaType" minOccurs="0"/> + <xsd:element name="TrustProfileID" type="xsd:token"> + <xsd:annotation> + <xsd:documentation>mit diesem Profil wird eine Menge von + vertrauenswürdigen Wurzelzertifikaten spezifiziert + </xsd:documentation> + </xsd:annotation> + </xsd:element> + </xsd:sequence> + </xsd:complexType> + <!--### Verify CMS Signature Response ### --> + <xsd:element name="VerifyCMSSignatureResponse" type="VerifyCMSSignatureResponseType"/> + <xsd:complexType name="VerifyCMSSignatureResponseType"> + <xsd:sequence maxOccurs="unbounded"> + <xsd:element name="SignerInfo" type="dsig:KeyInfoType"> + <xsd:annotation> + <xsd:documentation>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</xsd:documentation> + </xsd:annotation> + </xsd:element> + <xsd:element name="SignatureCheck" type="CheckResultType"/> + <xsd:element name="CertificateCheck" type="CheckResultType"/> + <xsd:element name="FormCheckResult" type="FormResultType" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="ExtendedCertificateCheck" type="ExtendedCertificateCheckResultType" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="VerifyASICCMSSignatureResponseType"> + <xsd:sequence maxOccurs="unbounded"> + <xsd:element name="SignerInfo" type="dsig:KeyInfoType"> + <xsd:annotation> + <xsd:documentation>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</xsd:documentation> + </xsd:annotation> + </xsd:element> + <xsd:element name="SigningTime" type="xsd:dateTime" minOccurs="0"/> + <xsd:element name="SignatureCheck" type="CheckResultType"/> + <xsd:element name="CertificateCheck" type="CheckResultType"/> + <xsd:element name="FormCheckResult" type="FormResultType" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="ExtendedCertificateCheck" type="ExtendedCertificateCheckResultType" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <!--########## Verify PDF Signature ### --> + <!--### Verifiy PDF Signature Request ### --> + <xsd:element name="VerifyPDFSignatureRequest"> + <xsd:complexType> + <xsd:complexContent> + <xsd:extension base="VerifyPDFSignatureRequestType"> + <xsd:attribute name="Signatories" type="SignatoriesType" use="optional" default="1"/> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + </xsd:element> + <xsd:complexType name="VerifyPDFSignatureRequestType"> + <xsd:sequence> + <xsd:element name="DateTime" type="xsd:dateTime" minOccurs="0"/> + <xsd:element name="ExtendedValidation" type="xsd:boolean" default="false" minOccurs="0"/> + <xsd:element name="PDFSignature" type="xsd:base64Binary"/> + <xsd:element name="TrustProfileID" type="xsd:token"> + <xsd:annotation> + <xsd:documentation>mit diesem Profil wird eine Menge von + vertrauenswürdigen Wurzelzertifikaten spezifiziert + </xsd:documentation> + </xsd:annotation> + </xsd:element> + </xsd:sequence> + </xsd:complexType> + <!--########## Verify PDF Signature ### --> + <!--### Verifiy ASIC Signature Request ### --> + <xsd:element name="VerifyASICSignatureRequest"> + <xsd:complexType> + <xsd:complexContent> + <xsd:extension base="VerifyASICSignatureRequestType"/> + </xsd:complexContent> + </xsd:complexType> + </xsd:element> + <xsd:complexType name="VerifyASICSignatureRequestType"> + <xsd:sequence> + <xsd:element name="DateTime" type="xsd:dateTime" minOccurs="0"/> + <xsd:element name="ExtendedValidation" type="xsd:boolean" default="false" minOccurs="0"/> + <xsd:element name="ASICSignature" type="xsd:base64Binary"/> + <xsd:element name="ASICExtension" type="xsd:string"> + <xsd:annotation> + <xsd:documentation>asics or asice</xsd:documentation> + </xsd:annotation> + </xsd:element> + <xsd:element name="TrustProfileID" type="xsd:token"> + <xsd:annotation> + <xsd:documentation>mit diesem Profil wird eine Menge von + vertrauenswürdigen Wurzelzertifikaten spezifiziert + </xsd:documentation> + </xsd:annotation> + </xsd:element> + </xsd:sequence> + </xsd:complexType> + <!--### Verify ASIC Signature Response ### --> + <xsd:element name="VerifyASICSignatureResponse" type="VerifyASICSignatureResponseType"/> + <xsd:complexType name="VerifyASICSignatureResponseType"> + <xsd:sequence> + <xsd:element name="ASiCSignatureResult" type="ASICResultType" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="ASICResultType"> + <xsd:sequence> + <xsd:element name="signedFiles" type="xsd:string" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="XMLSignatureResult" type="VerifyASICXMLSignatureResponseType" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="CMSSignatureResult" type="VerifyASICCMSSignatureResponseType" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <!--### Verify CMS Signature Response ### --> + <xsd:element name="VerifyPDFSignatureResponse" type="VerifyPDFSignatureResponseType"/> + <xsd:complexType name="VerifyPDFSignatureResponseType"> + <xsd:sequence maxOccurs="unbounded"> + <xsd:element name="SignatureResult" type="PDFSignatureResultType"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="PDFSignatureResultType"> + <xsd:sequence> + <xsd:element name="SignerInfo" type="dsig:KeyInfoType" minOccurs="0"> + <xsd:annotation> + <xsd:documentation>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</xsd:documentation> + </xsd:annotation> + </xsd:element> + <xsd:element name="SigningTime" type="xsd:dateTime" minOccurs="0"/> + <xsd:element name="SignatureCheck" type="CheckResultType"/> + <xsd:element name="CertificateCheck" type="CheckResultType"/> + <xsd:element name="FormCheckResult" type="FormResultType" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="ExtendedCertificateCheck" type="ExtendedCertificateCheckResultType" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <!--########## Verify XML Signature ### --> + <!--### Verify XML Signature Request ### --> + <xsd:element name="VerifyXMLSignatureRequest" type="VerifyXMLSignatureRequestType"/> + <xsd:complexType name="VerifyXMLSignatureRequestType"> + <xsd:sequence> + <xsd:element name="DateTime" type="xsd:dateTime" minOccurs="0"/> + <xsd:element name="ExtendedValidation" type="xsd:boolean" default="false" minOccurs="0"/> + <xsd:element name="VerifySignatureInfo"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="VerifySignatureEnvironment" type="ContentOptionalRefType"/> + <xsd:element name="VerifySignatureLocation" type="xsd:token"/> + </xsd:sequence> + </xsd:complexType> + </xsd:element> + <xsd:choice minOccurs="0" maxOccurs="unbounded"> + <xsd:element ref="SupplementProfile"/> + <xsd:element name="SupplementProfileID" type="xsd:string"/> + </xsd:choice> + <xsd:element name="SignatureManifestCheckParams" minOccurs="0"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="ReferenceInfo" type="VerifyTransformsDataType" maxOccurs="unbounded"> + <xsd:annotation> + <xsd:documentation>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.</xsd:documentation> + </xsd:annotation> + </xsd:element> + </xsd:sequence> + <xsd:attribute name="ReturnReferenceInputData" type="xsd:boolean" use="optional" default="true"/> + </xsd:complexType> + </xsd:element> + <xsd:element name="ReturnHashInputData" minOccurs="0"/> + <xsd:element name="TrustProfileID" type="xsd:token"> + <xsd:annotation> + <xsd:documentation>mit diesem Profil wird eine Menge von + vertrauenswürdigen Wurzelzertifikaten spezifiziert + </xsd:documentation> + </xsd:annotation> + </xsd:element> + </xsd:sequence> + </xsd:complexType> + <!--### Verify XML Signature Response ### --> + <xsd:element name="VerifyXMLSignatureResponse" type="VerifyXMLSignatureResponseType"/> + <xsd:complexType name="VerifyXMLSignatureResponseType"> + <xsd:sequence> + <xsd:element name="SignerInfo" type="dsig:KeyInfoType"> + <xsd:annotation> + <xsd:documentation>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</xsd:documentation> + </xsd:annotation> + </xsd:element> + <xsd:element name="HashInputData" type="InputDataType" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="ReferenceInputData" type="InputDataType" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="SignatureCheck" type="ReferencesCheckResultType"/> + <xsd:element name="SignatureManifestCheck" type="ReferencesCheckResultType" minOccurs="0"/> + <xsd:element name="XMLDSIGManifestCheck" type="ManifestRefsCheckResultType" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="CertificateCheck" type="CheckResultType"/> + <xsd:element name="FormCheckResult" type="FormResultType" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="ExtendedCertificateCheck" type="ExtendedCertificateCheckResultType" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="VerifyASICXMLSignatureResponseType"> + <xsd:sequence> + <xsd:element name="SignerInfo" type="dsig:KeyInfoType"> + <xsd:annotation> + <xsd:documentation>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</xsd:documentation> + </xsd:annotation> + </xsd:element> + <xsd:element name="SigningTime" type="xsd:dateTime" minOccurs="0"/> + <xsd:element name="HashInputData" type="InputDataType" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="ReferenceInputData" type="InputDataType" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="SignatureCheck" type="ReferencesCheckResultType"/> + <xsd:element name="SignatureManifestCheck" type="ReferencesCheckResultType" minOccurs="0"/> + <xsd:element name="XMLDSIGManifestCheck" type="ManifestRefsCheckResultType" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="CertificateCheck" type="CheckResultType"/> + <xsd:element name="FormCheckResult" type="FormResultType" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="ExtendedCertificateCheck" type="ExtendedCertificateCheckResultType" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:simpleType name="ProfileIdentifierType"> + <xsd:restriction base="xsd:token"/> + </xsd:simpleType> + <xsd:complexType name="InputDataType"> + <xsd:complexContent> + <xsd:extension base="ContentExLocRefBaseType"> + <xsd:attribute name="PartOf" use="optional" default="SignedInfo"> + <xsd:simpleType> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="SignedInfo"/> + <xsd:enumeration value="XMLDSIGManifest"/> + </xsd:restriction> + </xsd:simpleType> + </xsd:attribute> + <xsd:attribute name="ReferringSigReference" type="xsd:nonNegativeInteger" use="optional"/> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + <xsd:complexType name="MetaInfoType"> + <xsd:sequence> + <xsd:element name="MimeType" type="MimeTypeType"/> + <xsd:element name="Description" type="xsd:anyURI" minOccurs="0"/> + <xsd:any namespace="##other" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="FinalDataMetaInfoType"> + <xsd:complexContent> + <xsd:extension base="MetaInfoType"> + <xsd:sequence> + <xsd:element name="Type" type="xsd:anyURI" minOccurs="0"/> + </xsd:sequence> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + <xsd:complexType name="DataObjectInfoType"> + <xsd:sequence> + <xsd:element name="DataObject"> + <xsd:complexType> + <xsd:complexContent> + <xsd:extension base="ContentOptionalRefType"/> + </xsd:complexContent> + </xsd:complexType> + </xsd:element> + <xsd:choice> + <xsd:annotation> + <xsd:documentation>Auswahl: Entweder explizite Angabe EINER + Transformationskette inklusive ggf. sinnvoller Supplements oder + Verweis auf ein benanntes Profil</xsd:documentation> + </xsd:annotation> + <xsd:element ref="CreateTransformsInfoProfile"/> + <xsd:element name="CreateTransformsInfoProfileID" type="ProfileIdentifierType"/> + </xsd:choice> + </xsd:sequence> + <xsd:attribute name="Structure" use="required"> + <xsd:simpleType> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="detached"/> + <xsd:enumeration value="enveloping"/> + </xsd:restriction> + </xsd:simpleType> + </xsd:attribute> + </xsd:complexType> + <xsd:complexType name="CMSDataObjectInfoType"> + <xsd:sequence> + <xsd:element name="DataObject"> + <xsd:complexType> + <xsd:complexContent> + <xsd:extension base="CMSDataObjectRequiredMetaType"/> + </xsd:complexContent> + </xsd:complexType> + </xsd:element> + </xsd:sequence> + <xsd:attribute name="Structure" use="required"> + <xsd:simpleType> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="detached"/> + <xsd:enumeration value="enveloping"/> + </xsd:restriction> + </xsd:simpleType> + </xsd:attribute> + </xsd:complexType> + <xsd:complexType name="TransformsInfoType"> + <xsd:sequence> + <xsd:element ref="dsig:Transforms" minOccurs="0"/> + <xsd:element name="FinalDataMetaInfo" type="FinalDataMetaInfoType"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="XMLDataObjectAssociationType"> + <xsd:sequence> + <xsd:element name="MetaInfo" type="MetaInfoType" minOccurs="0"/> + <xsd:element name="Content" type="ContentRequiredRefType"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="PDFSignedRepsonse"> + <xsd:sequence> + <xsd:element name="SignatureID" type="xsd:string" minOccurs="0" maxOccurs="1"/> + <xsd:choice maxOccurs="1"> + <xsd:element name="PDFSignature" type="xsd:base64Binary"> + <xsd:annotation> + <xsd:documentation>Resultat, falls die Signaturerstellung + erfolgreich war</xsd:documentation> + </xsd:annotation> + </xsd:element> + <xsd:element ref="ErrorResponse"/> + </xsd:choice> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CMSDataObjectOptionalMetaType"> + <xsd:sequence> + <xsd:element name="MetaInfo" type="MetaInfoType" minOccurs="0"/> + <xsd:element name="Content" type="CMSContentBaseType"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CMSDataObjectRequiredMetaType"> + <xsd:sequence> + <xsd:element name="MetaInfo" type="MetaInfoType"/> + <xsd:element name="Content" type="CMSContentBaseType"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CMSContentBaseType"> + <xsd:complexContent> + <xsd:restriction base="ContentOptionalRefType"> + <xsd:choice minOccurs="0"> + <xsd:element name="Base64Content" type="xsd:base64Binary"/> + </xsd:choice> + </xsd:restriction> + </xsd:complexContent> + </xsd:complexType> + <xsd:complexType name="CheckResultType"> + <xsd:sequence> + <xsd:element name="Code" type="xsd:nonNegativeInteger"/> + <xsd:element name="Info" type="AnyChildrenType" minOccurs="0"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="FormResultType"> + <xsd:sequence> + <xsd:element name="Code" type="xsd:nonNegativeInteger" minOccurs="1" maxOccurs="1"/> + <xsd:element name="Name" type="xsd:string" minOccurs="1" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="IndicationResultType"> + <xsd:sequence> + <xsd:element name="Code" type="xsd:nonNegativeInteger" minOccurs="1" maxOccurs="1"/> + <xsd:element name="Name" type="xsd:string" minOccurs="1" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="ExtendedCertificateCheckResultType"> + <xsd:sequence> + <xsd:element name="Major" type="IndicationResultType" minOccurs="1" maxOccurs="1"/> + <xsd:element name="Minor" type="IndicationResultType" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="ReferencesCheckResultType"> + <xsd:complexContent> + <xsd:restriction base="CheckResultType"> + <xsd:sequence> + <xsd:element name="Code" type="xsd:nonNegativeInteger"/> + <xsd:element name="Info" type="ReferencesCheckResultInfoType" minOccurs="0"/> + </xsd:sequence> + </xsd:restriction> + </xsd:complexContent> + </xsd:complexType> + <xsd:complexType name="ReferencesCheckResultInfoType" mixed="true"> + <xsd:complexContent> + <xsd:restriction base="AnyChildrenType"> + <xsd:sequence> + <xsd:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="FailedReference" type="xsd:positiveInteger" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:restriction> + </xsd:complexContent> + </xsd:complexType> + <xsd:complexType name="ManifestRefsCheckResultType"> + <xsd:complexContent> + <xsd:restriction base="CheckResultType"> + <xsd:sequence> + <xsd:element name="Code" type="xsd:nonNegativeInteger"/> + <xsd:element name="Info" type="ManifestRefsCheckResultInfoType"/> + </xsd:sequence> + </xsd:restriction> + </xsd:complexContent> + </xsd:complexType> + <xsd:complexType name="ManifestRefsCheckResultInfoType" mixed="true"> + <xsd:complexContent> + <xsd:restriction base="AnyChildrenType"> + <xsd:sequence> + <xsd:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="FailedReference" type="xsd:positiveInteger" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="ReferringSigReference" type="xsd:positiveInteger"/> + </xsd:sequence> + </xsd:restriction> + </xsd:complexContent> + </xsd:complexType> + <!--########## Error Response ### --> + <xsd:element name="ErrorResponse" type="ErrorResponseType"> + <xsd:annotation> + <xsd:documentation>Resultat, falls die Signaturerstellung gescheitert + ist</xsd:documentation> + </xsd:annotation> + </xsd:element> + <xsd:complexType name="ErrorResponseType"> + <xsd:sequence> + <xsd:element name="ErrorCode" type="xsd:integer"/> + <xsd:element name="Info" type="xsd:string"/> + </xsd:sequence> + </xsd:complexType> + <!--########## Auxiliary Types ### --> + <xsd:simpleType name="KeyIdentifierType"> + <xsd:restriction base="xsd:string"/> + </xsd:simpleType> + <xsd:simpleType name="KeyStorageType"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="Software"/> + <xsd:enumeration value="Hardware"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="MimeTypeType"> + <xsd:restriction base="xsd:token"/> + </xsd:simpleType> + <xsd:complexType name="AnyChildrenType" mixed="true"> + <xsd:sequence> + <xsd:any namespace="##any" processContents="lax" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="XMLContentType" mixed="true"> + <xsd:complexContent> + <xsd:extension base="AnyChildrenType"> + <xsd:attribute ref="xml:space" use="optional"/> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + <xsd:complexType name="ContentBaseType"> + <xsd:choice minOccurs="0"> + <xsd:element name="Base64Content" type="xsd:base64Binary"/> + <xsd:element name="XMLContent" type="XMLContentType"/> + <xsd:element name="LocRefContent" type="xsd:anyURI"/> + </xsd:choice> + </xsd:complexType> + <xsd:complexType name="ContentExLocRefBaseType"> + <xsd:complexContent> + <xsd:restriction base="ContentBaseType"> + <xsd:choice minOccurs="0"> + <xsd:element name="Base64Content" type="xsd:base64Binary"/> + <xsd:element name="XMLContent" type="XMLContentType"/> + </xsd:choice> + </xsd:restriction> + </xsd:complexContent> + </xsd:complexType> + <xsd:complexType name="ContentOptionalRefType"> + <xsd:complexContent> + <xsd:extension base="ContentBaseType"> + <xsd:attribute name="Reference" type="xsd:anyURI" use="optional"/> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + <xsd:complexType name="ContentRequiredRefType"> + <xsd:complexContent> + <xsd:restriction base="ContentOptionalRefType"> + <xsd:choice minOccurs="0"> + <xsd:element name="Base64Content" type="xsd:base64Binary"/> + <xsd:element name="XMLContent" type="XMLContentType"/> + <xsd:element name="LocRefContent" type="xsd:anyURI"/> + </xsd:choice> + <xsd:attribute name="Reference" type="xsd:anyURI" use="required"/> + </xsd:restriction> + </xsd:complexContent> + </xsd:complexType> + <xsd:complexType name="VerifyTransformsDataType"> + <xsd:choice maxOccurs="unbounded"> + <xsd:annotation> + <xsd:documentation>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. + </xsd:documentation> + </xsd:annotation> + <xsd:element ref="VerifyTransformsInfoProfile"/> + <xsd:element name="VerifyTransformsInfoProfileID" type="xsd:string"> + <xsd:annotation> + <xsd:documentation>Profilbezeichner für einen Transformationsweg + </xsd:documentation> + </xsd:annotation> + </xsd:element> + </xsd:choice> + </xsd:complexType> + <xsd:element name="QualifiedCertificate"> + <xsd:complexType> + <xsd:attribute name="source" use="optional"> + <xsd:simpleType> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="TSL"/> + <xsd:enumeration value="Certificate"/> + </xsd:restriction> + </xsd:simpleType> + </xsd:attribute> + </xsd:complexType> + </xsd:element> + <xsd:element name="SecureSignatureCreationDevice"> + <xsd:complexType> + <xsd:attribute name="source" use="optional"> + <xsd:simpleType> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="TSL"/> + <xsd:enumeration value="Certificate"/> + </xsd:restriction> + </xsd:simpleType> + </xsd:attribute> + </xsd:complexType> + </xsd:element> + <xsd:element name="IssuingCountry" type="xsd:token"/> + <xsd:element name="PublicAuthority" type="PublicAuthorityType"/> + <xsd:complexType name="PublicAuthorityType"> + <xsd:sequence> + <xsd:element name="Code" type="xsd:string" minOccurs="0"/> + </xsd:sequence> + </xsd:complexType> + <xsd:simpleType name="SignatoriesType"> + <xsd:union memberTypes="AllSignatoriesType"> + <xsd:simpleType> + <xsd:list itemType="xsd:positiveInteger"/> + </xsd:simpleType> + </xsd:union> + </xsd:simpleType> + <xsd:simpleType name="AllSignatoriesType"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="all"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CreateSignatureLocationType"> + <xsd:simpleContent> + <xsd:extension base="xsd:token"> + <xsd:attribute name="Index" type="xsd:integer" use="required"/> + </xsd:extension> + </xsd:simpleContent> + </xsd:complexType> + <xsd:complexType name="TransformParameterType"> + <xsd:choice minOccurs="0"> + <xsd:annotation> + <xsd:documentation>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.</xsd:documentation> + </xsd:annotation> + <xsd:element name="Base64Content" type="xsd:base64Binary"> + <xsd:annotation> + <xsd:documentation>Der Transformationsparameter explizit angegeben. + </xsd:documentation> + </xsd:annotation> + </xsd:element> + <xsd:element name="Hash"> + <xsd:annotation> + <xsd:documentation>Der Hashwert des Transformationsparameters. + </xsd:documentation> + </xsd:annotation> + <xsd:complexType> + <xsd:sequence> + <xsd:element ref="dsig:DigestMethod"/> + <xsd:element ref="dsig:DigestValue"/> + </xsd:sequence> + </xsd:complexType> + </xsd:element> + </xsd:choice> + <xsd:attribute name="URI" type="xsd:anyURI" use="required"/> + </xsd:complexType> + <xsd:element name="CreateSignatureEnvironmentProfile"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="CreateSignatureLocation" type="CreateSignatureLocationType"/> + <xsd:element name="Supplement" type="XMLDataObjectAssociationType" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + </xsd:element> + <xsd:element name="VerifyTransformsInfoProfile"> + <xsd:annotation> + <xsd:documentation>Explizite Angabe des Transformationswegs + </xsd:documentation> + </xsd:annotation> + <xsd:complexType> + <xsd:sequence> + <xsd:element ref="dsig:Transforms" minOccurs="0"/> + <xsd:element name="TransformParameter" type="TransformParameterType" minOccurs="0" maxOccurs="unbounded"> + <xsd:annotation> + <xsd:documentation>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.</xsd:documentation> + </xsd:annotation> + </xsd:element> + </xsd:sequence> + </xsd:complexType> + </xsd:element> + <xsd:element name="Supplement" type="XMLDataObjectAssociationType"/> + <xsd:element name="SupplementProfile" type="XMLDataObjectAssociationType"/> + <xsd:element name="CreateTransformsInfoProfile"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="CreateTransformsInfo" type="TransformsInfoType"/> + <xsd:element ref="Supplement" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + </xsd:element> +</xsd:schema> diff --git a/moaSig/moa-sig-lib/src/main/resources/resources/wsdl/MOA-SPSS-3.1.2.xsd b/moaSig/moa-sig-lib/src/main/resources/resources/wsdl/MOA-SPSS-3.1.2.xsd new file mode 100644 index 0000000..69834b2 --- /dev/null +++ b/moaSig/moa-sig-lib/src/main/resources/resources/wsdl/MOA-SPSS-3.1.2.xsd @@ -0,0 +1,839 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- MOA SP/SS 2.0.0 Schema --> +<xsd:schema xmlns:dsig="http://www.w3.org/2000/09/xmldsig#" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://reference.e-government.gv.at/namespace/moa/20020822#" targetNamespace="http://reference.e-government.gv.at/namespace/moa/20020822#" elementFormDefault="qualified" attributeFormDefault="unqualified" version="1.2"> + <xsd:import namespace="http://www.w3.org/2000/09/xmldsig#" schemaLocation="http://www.w3.org/TR/xmldsig-core/xmldsig-core-schema.xsd"/> + <xsd:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="http://www.w3.org/2001/xml.xsd"/> + <!--########## Create CMS Signature ### --> + <!--### Create CMS Signature Request ### --> + <xsd:element name="CreateCMSSignatureRequest"> + <xsd:complexType> + <xsd:complexContent> + <xsd:extension base="CreateCMSSignatureRequestType"/> + </xsd:complexContent> + </xsd:complexType> + </xsd:element> + <xsd:complexType name="CreateCMSSignatureRequestType"> + <xsd:sequence> + <xsd:element name="KeyIdentifier" type="KeyIdentifierType"/> + <xsd:element name="SingleSignatureInfo" maxOccurs="unbounded"> + <xsd:annotation> + <xsd:documentation>Ermöglichung der Stapelsignatur durch + wiederholte Angabe dieses Elements</xsd:documentation> + </xsd:annotation> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="DataObjectInfo"> + <xsd:complexType> + <xsd:complexContent> + <xsd:extension base="CMSDataObjectInfoType"/> + </xsd:complexContent> + </xsd:complexType> + </xsd:element> + </xsd:sequence> + <xsd:attribute name="SecurityLayerConformity" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="PAdESConformity" type="xsd:boolean" use="optional" default="false"/> + </xsd:complexType> + </xsd:element> + </xsd:sequence> + </xsd:complexType> + <!--### Create CMS Signature Response ### --> + <xsd:element name="CreateCMSSignatureResponse" type="CreateCMSSignatureResponseType"/> + <xsd:complexType name="CreateCMSSignatureResponseType"> + <xsd:choice maxOccurs="unbounded"> + <xsd:annotation> + <xsd:documentation>Kardinalität 1..oo erlaubt die Antwort auf eine + Stapelsignatur-Anfrage</xsd:documentation> + </xsd:annotation> + <xsd:element name="CMSSignature" type="xsd:base64Binary"> + <xsd:annotation> + <xsd:documentation>Resultat, falls die Signaturerstellung + erfolgreich war</xsd:documentation> + </xsd:annotation> + </xsd:element> + <xsd:element ref="ErrorResponse"/> + </xsd:choice> + </xsd:complexType> + <!--########## Create XML Signature ### --> + <!--### Create XML Signature Request ### --> + <xsd:element name="CreateXMLSignatureRequest"> + <xsd:complexType> + <xsd:complexContent> + <xsd:extension base="CreateXMLSignatureRequestType"/> + </xsd:complexContent> + </xsd:complexType> + </xsd:element> + <xsd:complexType name="CreateXMLSignatureRequestType"> + <xsd:sequence> + <xsd:element name="KeyIdentifier" type="KeyIdentifierType"/> + <xsd:element name="SingleSignatureInfo" maxOccurs="unbounded"> + <xsd:annotation> + <xsd:documentation>Ermöglichung der Stapelsignatur durch + wiederholte Angabe dieses Elements</xsd:documentation> + </xsd:annotation> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="DataObjectInfo" maxOccurs="unbounded"> + <xsd:complexType> + <xsd:complexContent> + <xsd:extension base="DataObjectInfoType"> + <xsd:attribute name="ChildOfManifest" type="xsd:boolean" use="optional" default="false"/> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + </xsd:element> + <xsd:element name="CreateSignatureInfo" minOccurs="0"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="CreateSignatureEnvironment" type="ContentOptionalRefType"/> + <xsd:choice> + <xsd:annotation> + <xsd:documentation>Auswahl: Entweder explizite Angabe des + Signaturorts sowie ggf. sinnvoller Supplements im Zshg. mit + der Signaturumgebung, oder Verweis auf ein benanntes Profil + </xsd:documentation> + </xsd:annotation> + <xsd:element ref="CreateSignatureEnvironmentProfile"/> + <xsd:element name="CreateSignatureEnvironmentProfileID" type="ProfileIdentifierType"/> + </xsd:choice> + </xsd:sequence> + </xsd:complexType> + </xsd:element> + </xsd:sequence> + <xsd:attribute name="SecurityLayerConformity" type="xsd:boolean" use="optional" default="true"/> + </xsd:complexType> + </xsd:element> + </xsd:sequence> + </xsd:complexType> + <!--### Create XML Signature Response ### --> + <xsd:complexType name="CreateXMLSignatureResponseType"> + <xsd:choice maxOccurs="unbounded"> + <xsd:annotation> + <xsd:documentation>Kardinalität 1..oo erlaubt die Antwort auf eine + Stapelsignatur-Anfrage</xsd:documentation> + </xsd:annotation> + <xsd:element name="SignatureEnvironment"> + <xsd:annotation> + <xsd:documentation>Resultat, falls die Signaturerstellung + erfolgreich war</xsd:documentation> + </xsd:annotation> + <xsd:complexType> + <xsd:sequence> + <xsd:any namespace="##any" processContents="lax"/> + </xsd:sequence> + </xsd:complexType> + </xsd:element> + <xsd:element ref="ErrorResponse"/> + </xsd:choice> + </xsd:complexType> + <xsd:element name="CreateXMLSignatureResponse" type="CreateXMLSignatureResponseType"/> + <!--########## Create PDF Signature ### --> + <!--### Create PDF Signature Request ### --> + <xsd:element name="CreatePDFSignatureRequest"> + <xsd:complexType> + <xsd:complexContent> + <xsd:extension base="CreatePDFSignatureRequestType"/> + </xsd:complexContent> + </xsd:complexType> + </xsd:element> + <xsd:complexType name="CreatePDFSignatureRequestType"> + <xsd:sequence> + <xsd:element name="KeyIdentifier" type="KeyIdentifierType"/> + <xsd:element name="SingleSignatureInfo" maxOccurs="unbounded"> + <xsd:annotation> + <xsd:documentation>Ermöglichung der Stapelsignatur durch + wiederholte Angabe dieses Elements</xsd:documentation> + </xsd:annotation> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="PDFDocument" type="xsd:base64Binary"/> + <xsd:element name="SignatureProfile" type="xsd:string" minOccurs="0" maxOccurs="1"/> + <xsd:element name="SignaturePosition" type="xsd:string" minOccurs="0" maxOccurs="1"/> + <xsd:element name="SignatureID" type="xsd:string" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + </xsd:element> + </xsd:sequence> + </xsd:complexType> + <!--### Create PDF Signature Response ### --> + <xsd:element name="CreatePDFSignatureResponse" type="CreatePDFSignatureResponseType"/> + <xsd:complexType name="CreatePDFSignatureResponseType"> + <xsd:sequence> + <xsd:element name="PDFSignature" type="PDFSignedRepsonse" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <!--########## Verify CMS Signature ### --> + <!--### Verifiy CMS Signature Request ### --> + <xsd:element name="VerifyCMSSignatureRequest"> + <xsd:complexType> + <xsd:complexContent> + <xsd:extension base="VerifyCMSSignatureRequestType"> + <xsd:attribute name="Signatories" type="SignatoriesType" use="optional" default="1"/> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + </xsd:element> + <xsd:complexType name="VerifyCMSSignatureRequestType"> + <xsd:sequence> + <xsd:element name="DateTime" type="xsd:dateTime" minOccurs="0"/> + <xsd:element name="ExtendedValidation" type="xsd:boolean" default="false" minOccurs="0"/> + <xsd:element name="CMSSignature" type="xsd:base64Binary"/> + <xsd:element name="DataObject" type="CMSDataObjectOptionalMetaType" minOccurs="0"/> + <xsd:element name="TrustProfileID" type="xsd:token"> + <xsd:annotation> + <xsd:documentation>mit diesem Profil wird eine Menge von + vertrauenswürdigen Wurzelzertifikaten spezifiziert + </xsd:documentation> + </xsd:annotation> + </xsd:element> + </xsd:sequence> + </xsd:complexType> + <!--### Verify CMS Signature Response ### --> + <xsd:element name="VerifyCMSSignatureResponse" type="VerifyCMSSignatureResponseType"/> + <xsd:complexType name="VerifyCMSSignatureResponseType"> + <xsd:sequence maxOccurs="unbounded"> + <xsd:element name="SignerInfo" type="dsig:KeyInfoType"> + <xsd:annotation> + <xsd:documentation>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</xsd:documentation> + </xsd:annotation> + </xsd:element> + <xsd:element name="SignatureAlgorithm" type="xsd:string" minOccurs="0" maxOccurs="1"/> + <xsd:element name="SignatureCheck" type="CheckResultType"/> + <xsd:element name="CertificateCheck" type="CheckResultType"/> + <xsd:element name="FormCheckResult" type="FormResultType" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="ExtendedCertificateCheck" type="ExtendedCertificateCheckResultType" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="VerifyASICCMSSignatureResponseType"> + <xsd:sequence maxOccurs="unbounded"> + <xsd:element name="SignerInfo" type="dsig:KeyInfoType"> + <xsd:annotation> + <xsd:documentation>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</xsd:documentation> + </xsd:annotation> + </xsd:element> + <xsd:element name="SigningTime" type="xsd:dateTime" minOccurs="0"/> + <xsd:element name="SignatureCheck" type="CheckResultType"/> + <xsd:element name="CertificateCheck" type="CheckResultType"/> + <xsd:element name="FormCheckResult" type="FormResultType" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="ExtendedCertificateCheck" type="ExtendedCertificateCheckResultType" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <!--########## Verify PDF Signature ### --> + <!--### Verifiy PDF Signature Request ### --> + <xsd:element name="VerifyPDFSignatureRequest"> + <xsd:complexType> + <xsd:complexContent> + <xsd:extension base="VerifyPDFSignatureRequestType"> + <xsd:attribute name="Signatories" type="SignatoriesType" use="optional" default="1"/> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + </xsd:element> + <xsd:complexType name="VerifyPDFSignatureRequestType"> + <xsd:sequence> + <xsd:element name="DateTime" type="xsd:dateTime" minOccurs="0"/> + <xsd:element name="ExtendedValidation" type="xsd:boolean" default="false" minOccurs="0"/> + <xsd:element name="PDFSignature" type="xsd:base64Binary"/> + <xsd:element name="TrustProfileID" type="xsd:token"> + <xsd:annotation> + <xsd:documentation>mit diesem Profil wird eine Menge von + vertrauenswürdigen Wurzelzertifikaten spezifiziert + </xsd:documentation> + </xsd:annotation> + </xsd:element> + </xsd:sequence> + </xsd:complexType> + <!--########## Verify PDF Signature ### --> + <!--### Verifiy ASIC Signature Request ### --> + <xsd:element name="VerifyASICSignatureRequest"> + <xsd:complexType> + <xsd:complexContent> + <xsd:extension base="VerifyASICSignatureRequestType"/> + </xsd:complexContent> + </xsd:complexType> + </xsd:element> + <xsd:complexType name="VerifyASICSignatureRequestType"> + <xsd:sequence> + <xsd:element name="DateTime" type="xsd:dateTime" minOccurs="0"/> + <xsd:element name="ExtendedValidation" type="xsd:boolean" default="false" minOccurs="0"/> + <xsd:element name="ASICSignature" type="xsd:base64Binary"/> + <xsd:element name="ASICExtension" type="xsd:string"> + <xsd:annotation> + <xsd:documentation>asics or asice</xsd:documentation> + </xsd:annotation> + </xsd:element> + <xsd:element name="TrustProfileID" type="xsd:token"> + <xsd:annotation> + <xsd:documentation>mit diesem Profil wird eine Menge von + vertrauenswürdigen Wurzelzertifikaten spezifiziert + </xsd:documentation> + </xsd:annotation> + </xsd:element> + </xsd:sequence> + </xsd:complexType> + <!--### Verify ASIC Signature Response ### --> + <xsd:element name="VerifyASICSignatureResponse" type="VerifyASICSignatureResponseType"/> + <xsd:complexType name="VerifyASICSignatureResponseType"> + <xsd:sequence> + <xsd:element name="ASiCSignatureResult" type="ASICResultType" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <!--xsd:complexType name="signedFilesType"> + <xsd:sequence> + <xsd:element name="signedFiles" type="xsd:string"> + </xsd:sequence> + <xsd:attribute name="hashAlgorithm" type="xsd:string" use="optional"/> + </xsd:complexType--> + <xsd:complexType name="ASICResultType"> + <xsd:sequence> + <xsd:element name="signedFiles" minOccurs="0" maxOccurs="unbounded"> + <xsd:complexType> + <xsd:simpleContent> + <xsd:extension base="xsd:string"> + <xsd:attribute name="hashAlgorithm" type="xsd:string" use="optional"/> + </xsd:extension> + </xsd:simpleContent> + </xsd:complexType> + </xsd:element> + <xsd:element name="XMLSignatureResult" type="VerifyASICXMLSignatureResponseType" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="CMSSignatureResult" type="VerifyASICCMSSignatureResponseType" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <!--### Verify CMS Signature Response ### --> + <xsd:element name="VerifyPDFSignatureResponse" type="VerifyPDFSignatureResponseType"/> + <xsd:complexType name="VerifyPDFSignatureResponseType"> + <xsd:sequence maxOccurs="unbounded"> + <xsd:element name="SignatureResult" type="PDFSignatureResultType"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="PDFSignatureResultType"> + <xsd:sequence> + <xsd:element name="SignerInfo" type="dsig:KeyInfoType" minOccurs="0"> + <xsd:annotation> + <xsd:documentation>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</xsd:documentation> + </xsd:annotation> + </xsd:element> + <xsd:element name="SigningTime" type="xsd:dateTime" minOccurs="0"/> + <xsd:element name="SignatureAlgorithm" type="xsd:string" minOccurs="0" maxOccurs="1"/> + <xsd:element name="SignatureCheck" type="CheckResultType"/> + <xsd:element name="CertificateCheck" type="CheckResultType"/> + <xsd:element name="FormCheckResult" type="FormResultType" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="ExtendedCertificateCheck" type="ExtendedCertificateCheckResultType" minOccurs="0" maxOccurs="1"/> + <xsd:element name="SignatureProperties" type="PDFSignatureProperties" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="PDFSignatureProperties"> + <xsd:sequence> + <xsd:element name="SignatureCoversFullPDF" type="xsd:boolean" minOccurs="0" maxOccurs="1"/> + <xsd:element name="SignatureByteRange" type="xsd:string" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <!--########## Verify XML Signature ### --> + <!--### Verify XML Signature Request ### --> + <xsd:element name="VerifyXMLSignatureRequest" type="VerifyXMLSignatureRequestType"/> + <xsd:complexType name="VerifyXMLSignatureRequestType"> + <xsd:sequence> + <xsd:element name="DateTime" type="xsd:dateTime" minOccurs="0"/> + <xsd:element name="ExtendedValidation" type="xsd:boolean" default="false" minOccurs="0"/> + <xsd:element name="VerifySignatureInfo"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="VerifySignatureEnvironment" type="ContentOptionalRefType"/> + <xsd:element name="VerifySignatureLocation" type="xsd:token"/> + </xsd:sequence> + </xsd:complexType> + </xsd:element> + <xsd:choice minOccurs="0" maxOccurs="unbounded"> + <xsd:element ref="SupplementProfile"/> + <xsd:element name="SupplementProfileID" type="xsd:string"/> + </xsd:choice> + <xsd:element name="SignatureManifestCheckParams" minOccurs="0"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="ReferenceInfo" type="VerifyTransformsDataType" maxOccurs="unbounded"> + <xsd:annotation> + <xsd:documentation>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.</xsd:documentation> + </xsd:annotation> + </xsd:element> + </xsd:sequence> + <xsd:attribute name="ReturnReferenceInputData" type="xsd:boolean" use="optional" default="true"/> + </xsd:complexType> + </xsd:element> + <xsd:element name="ReturnHashInputData" minOccurs="0"/> + <xsd:element name="TrustProfileID" type="xsd:token"> + <xsd:annotation> + <xsd:documentation>mit diesem Profil wird eine Menge von + vertrauenswürdigen Wurzelzertifikaten spezifiziert + </xsd:documentation> + </xsd:annotation> + </xsd:element> + </xsd:sequence> + </xsd:complexType> + <!--### Verify XML Signature Response ### --> + <xsd:element name="VerifyXMLSignatureResponse" type="VerifyXMLSignatureResponseType"/> + <xsd:complexType name="VerifyXMLSignatureResponseType"> + <xsd:sequence> + <xsd:element name="SignerInfo" type="dsig:KeyInfoType"> + <xsd:annotation> + <xsd:documentation>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</xsd:documentation> + </xsd:annotation> + </xsd:element> + <xsd:element name="HashInputData" type="InputDataType" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="ReferenceInputData" type="InputDataType" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="SignatureAlgorithm" type="xsd:string" minOccurs="0" maxOccurs="1"/> + <xsd:element name="SignatureCheck" type="ReferencesCheckResultType"/> + <xsd:element name="SignatureManifestCheck" type="ReferencesCheckResultType" minOccurs="0"/> + <xsd:element name="XMLDSIGManifestCheck" type="ManifestRefsCheckResultType" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="CertificateCheck" type="CheckResultType"/> + <xsd:element name="FormCheckResult" type="FormResultType" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="ExtendedCertificateCheck" type="ExtendedCertificateCheckResultType" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="VerifyASICXMLSignatureResponseType"> + <xsd:sequence> + <xsd:element name="SignerInfo" type="dsig:KeyInfoType"> + <xsd:annotation> + <xsd:documentation>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</xsd:documentation> + </xsd:annotation> + </xsd:element> + <xsd:element name="SigningTime" type="xsd:dateTime" minOccurs="0"/> + <xsd:element name="HashInputData" type="InputDataType" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="ReferenceInputData" type="InputDataType" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="SignatureCheck" type="ReferencesCheckResultType"/> + <xsd:element name="SignatureManifestCheck" type="ReferencesCheckResultType" minOccurs="0"/> + <xsd:element name="XMLDSIGManifestCheck" type="ManifestRefsCheckResultType" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="CertificateCheck" type="CheckResultType"/> + <xsd:element name="FormCheckResult" type="FormResultType" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="ExtendedCertificateCheck" type="ExtendedCertificateCheckResultType" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:simpleType name="ProfileIdentifierType"> + <xsd:restriction base="xsd:token"/> + </xsd:simpleType> + <xsd:complexType name="InputDataType"> + <xsd:complexContent> + <xsd:extension base="ContentExLocRefBaseType"> + <xsd:attribute name="PartOf" use="optional" default="SignedInfo"> + <xsd:simpleType> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="SignedInfo"/> + <xsd:enumeration value="XMLDSIGManifest"/> + </xsd:restriction> + </xsd:simpleType> + </xsd:attribute> + <xsd:attribute name="ReferringSigReference" type="xsd:nonNegativeInteger" use="optional"/> + <xsd:attribute name="HashAlgorithm" type="xsd:string" use="optional"/> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + <xsd:complexType name="MetaInfoType"> + <xsd:sequence> + <xsd:element name="MimeType" type="MimeTypeType"/> + <xsd:element name="Description" type="xsd:anyURI" minOccurs="0"/> + <xsd:any namespace="##other" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="FinalDataMetaInfoType"> + <xsd:complexContent> + <xsd:extension base="MetaInfoType"> + <xsd:sequence> + <xsd:element name="Type" type="xsd:anyURI" minOccurs="0"/> + </xsd:sequence> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + <xsd:complexType name="DataObjectInfoType"> + <xsd:sequence> + <xsd:element name="DataObject"> + <xsd:complexType> + <xsd:complexContent> + <xsd:extension base="ContentOptionalRefType"/> + </xsd:complexContent> + </xsd:complexType> + </xsd:element> + <xsd:choice> + <xsd:annotation> + <xsd:documentation>Auswahl: Entweder explizite Angabe EINER + Transformationskette inklusive ggf. sinnvoller Supplements oder + Verweis auf ein benanntes Profil</xsd:documentation> + </xsd:annotation> + <xsd:element ref="CreateTransformsInfoProfile"/> + <xsd:element name="CreateTransformsInfoProfileID" type="ProfileIdentifierType"/> + </xsd:choice> + </xsd:sequence> + <xsd:attribute name="Structure" use="required"> + <xsd:simpleType> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="detached"/> + <xsd:enumeration value="enveloping"/> + </xsd:restriction> + </xsd:simpleType> + </xsd:attribute> + </xsd:complexType> + <xsd:complexType name="CMSDataObjectInfoType"> + <xsd:sequence> + <xsd:element name="DataObject"> + <xsd:complexType> + <xsd:complexContent> + <xsd:extension base="CMSDataObjectRequiredMetaType"/> + </xsd:complexContent> + </xsd:complexType> + </xsd:element> + </xsd:sequence> + <xsd:attribute name="Structure" use="required"> + <xsd:simpleType> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="detached"/> + <xsd:enumeration value="enveloping"/> + </xsd:restriction> + </xsd:simpleType> + </xsd:attribute> + </xsd:complexType> + <xsd:complexType name="TransformsInfoType"> + <xsd:sequence> + <xsd:element ref="dsig:Transforms" minOccurs="0"/> + <xsd:element name="FinalDataMetaInfo" type="FinalDataMetaInfoType"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="XMLDataObjectAssociationType"> + <xsd:sequence> + <xsd:element name="MetaInfo" type="MetaInfoType" minOccurs="0"/> + <xsd:element name="Content" type="ContentRequiredRefType"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="PDFSignedRepsonse"> + <xsd:sequence> + <xsd:element name="SignatureID" type="xsd:string" minOccurs="0" maxOccurs="1"/> + <xsd:choice maxOccurs="1"> + <xsd:element name="PDFSignature" type="xsd:base64Binary"> + <xsd:annotation> + <xsd:documentation>Resultat, falls die Signaturerstellung + erfolgreich war</xsd:documentation> + </xsd:annotation> + </xsd:element> + <xsd:element ref="ErrorResponse"/> + </xsd:choice> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CMSDataObjectOptionalMetaType"> + <xsd:sequence> + <xsd:element name="MetaInfo" type="MetaInfoType" minOccurs="0"/> + <xsd:element name="Content" type="CMSContentBaseType"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CMSDataObjectRequiredMetaType"> + <xsd:sequence> + <xsd:element name="MetaInfo" type="MetaInfoType"/> + <xsd:element name="Content" type="CMSContentBaseType"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CMSContentBaseType"> + <xsd:complexContent> + <xsd:restriction base="ContentOptionalRefType"> + <xsd:choice minOccurs="0"> + <xsd:element name="Base64Content" type="xsd:base64Binary"/> + </xsd:choice> + </xsd:restriction> + </xsd:complexContent> + </xsd:complexType> + <xsd:complexType name="CheckResultType"> + <xsd:sequence> + <xsd:element name="Code" type="xsd:nonNegativeInteger"/> + <xsd:element name="Info" type="AnyChildrenType" minOccurs="0"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="FormResultType"> + <xsd:sequence> + <xsd:element name="Code" type="xsd:nonNegativeInteger" minOccurs="1" maxOccurs="1"/> + <xsd:element name="Name" type="xsd:string" minOccurs="1" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="IndicationResultType"> + <xsd:sequence> + <xsd:element name="Code" type="xsd:nonNegativeInteger" minOccurs="1" maxOccurs="1"/> + <xsd:element name="Name" type="xsd:string" minOccurs="1" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="ExtendedCertificateCheckResultType"> + <xsd:sequence> + <xsd:element name="Major" type="IndicationResultType" minOccurs="1" maxOccurs="1"/> + <xsd:element name="Minor" type="IndicationResultType" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="ReferencesCheckResultType"> + <xsd:complexContent> + <xsd:restriction base="CheckResultType"> + <xsd:sequence> + <xsd:element name="Code" type="xsd:nonNegativeInteger"/> + <xsd:element name="Info" type="ReferencesCheckResultInfoType" minOccurs="0"/> + </xsd:sequence> + </xsd:restriction> + </xsd:complexContent> + </xsd:complexType> + <xsd:complexType name="ReferencesCheckResultInfoType" mixed="true"> + <xsd:complexContent> + <xsd:restriction base="AnyChildrenType"> + <xsd:sequence> + <xsd:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="FailedReference" type="xsd:positiveInteger" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:restriction> + </xsd:complexContent> + </xsd:complexType> + <xsd:complexType name="ManifestRefsCheckResultType"> + <xsd:complexContent> + <xsd:restriction base="CheckResultType"> + <xsd:sequence> + <xsd:element name="Code" type="xsd:nonNegativeInteger"/> + <xsd:element name="Info" type="ManifestRefsCheckResultInfoType"/> + </xsd:sequence> + </xsd:restriction> + </xsd:complexContent> + </xsd:complexType> + <xsd:complexType name="ManifestRefsCheckResultInfoType" mixed="true"> + <xsd:complexContent> + <xsd:restriction base="AnyChildrenType"> + <xsd:sequence> + <xsd:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="FailedReference" type="xsd:positiveInteger" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="ReferringSigReference" type="xsd:positiveInteger"/> + </xsd:sequence> + </xsd:restriction> + </xsd:complexContent> + </xsd:complexType> + <!--########## Error Response ### --> + <xsd:element name="ErrorResponse" type="ErrorResponseType"> + <xsd:annotation> + <xsd:documentation>Resultat, falls die Signaturerstellung gescheitert + ist</xsd:documentation> + </xsd:annotation> + </xsd:element> + <xsd:complexType name="ErrorResponseType"> + <xsd:sequence> + <xsd:element name="ErrorCode" type="xsd:integer"/> + <xsd:element name="Info" type="xsd:string"/> + </xsd:sequence> + </xsd:complexType> + <!--########## Auxiliary Types ### --> + <xsd:simpleType name="KeyIdentifierType"> + <xsd:restriction base="xsd:string"/> + </xsd:simpleType> + <xsd:simpleType name="KeyStorageType"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="Software"/> + <xsd:enumeration value="Hardware"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="MimeTypeType"> + <xsd:restriction base="xsd:token"/> + </xsd:simpleType> + <xsd:complexType name="AnyChildrenType" mixed="true"> + <xsd:sequence> + <xsd:any namespace="##any" processContents="lax" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="XMLContentType" mixed="true"> + <xsd:complexContent> + <xsd:extension base="AnyChildrenType"> + <xsd:attribute ref="xml:space" use="optional"/> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + <xsd:complexType name="ContentBaseType"> + <xsd:choice minOccurs="0"> + <xsd:element name="Base64Content" type="xsd:base64Binary"/> + <xsd:element name="XMLContent" type="XMLContentType"/> + <xsd:element name="LocRefContent" type="xsd:anyURI"/> + </xsd:choice> + </xsd:complexType> + <xsd:complexType name="ContentExLocRefBaseType"> + <xsd:complexContent> + <xsd:restriction base="ContentBaseType"> + <xsd:choice minOccurs="0"> + <xsd:element name="Base64Content" type="xsd:base64Binary"/> + <xsd:element name="XMLContent" type="XMLContentType"/> + </xsd:choice> + </xsd:restriction> + </xsd:complexContent> + </xsd:complexType> + <xsd:complexType name="ContentOptionalRefType"> + <xsd:complexContent> + <xsd:extension base="ContentBaseType"> + <xsd:attribute name="Reference" type="xsd:anyURI" use="optional"/> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + <xsd:complexType name="ContentRequiredRefType"> + <xsd:complexContent> + <xsd:restriction base="ContentOptionalRefType"> + <xsd:choice minOccurs="0"> + <xsd:element name="Base64Content" type="xsd:base64Binary"/> + <xsd:element name="XMLContent" type="XMLContentType"/> + <xsd:element name="LocRefContent" type="xsd:anyURI"/> + </xsd:choice> + <xsd:attribute name="Reference" type="xsd:anyURI" use="required"/> + </xsd:restriction> + </xsd:complexContent> + </xsd:complexType> + <xsd:complexType name="VerifyTransformsDataType"> + <xsd:choice maxOccurs="unbounded"> + <xsd:annotation> + <xsd:documentation>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. + </xsd:documentation> + </xsd:annotation> + <xsd:element ref="VerifyTransformsInfoProfile"/> + <xsd:element name="VerifyTransformsInfoProfileID" type="xsd:string"> + <xsd:annotation> + <xsd:documentation>Profilbezeichner für einen Transformationsweg + </xsd:documentation> + </xsd:annotation> + </xsd:element> + </xsd:choice> + </xsd:complexType> + <xsd:element name="QualifiedCertificate"> + <xsd:complexType> + <xsd:attribute name="source" use="optional"> + <xsd:simpleType> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="TSL"/> + <xsd:enumeration value="Certificate"/> + </xsd:restriction> + </xsd:simpleType> + </xsd:attribute> + </xsd:complexType> + </xsd:element> + <xsd:element name="SecureSignatureCreationDevice"> + <xsd:complexType> + <xsd:attribute name="source" use="optional"> + <xsd:simpleType> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="TSL"/> + <xsd:enumeration value="Certificate"/> + </xsd:restriction> + </xsd:simpleType> + </xsd:attribute> + </xsd:complexType> + </xsd:element> + <xsd:element name="IssuingCountry" type="xsd:token"/> + <xsd:element name="PublicAuthority" type="PublicAuthorityType"/> + <xsd:complexType name="PublicAuthorityType"> + <xsd:sequence> + <xsd:element name="Code" type="xsd:string" minOccurs="0"/> + </xsd:sequence> + </xsd:complexType> + <xsd:simpleType name="SignatoriesType"> + <xsd:union memberTypes="AllSignatoriesType"> + <xsd:simpleType> + <xsd:list itemType="xsd:positiveInteger"/> + </xsd:simpleType> + </xsd:union> + </xsd:simpleType> + <xsd:simpleType name="AllSignatoriesType"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="all"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CreateSignatureLocationType"> + <xsd:simpleContent> + <xsd:extension base="xsd:token"> + <xsd:attribute name="Index" type="xsd:integer" use="required"/> + </xsd:extension> + </xsd:simpleContent> + </xsd:complexType> + <xsd:complexType name="TransformParameterType"> + <xsd:choice minOccurs="0"> + <xsd:annotation> + <xsd:documentation>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.</xsd:documentation> + </xsd:annotation> + <xsd:element name="Base64Content" type="xsd:base64Binary"> + <xsd:annotation> + <xsd:documentation>Der Transformationsparameter explizit angegeben. + </xsd:documentation> + </xsd:annotation> + </xsd:element> + <xsd:element name="Hash"> + <xsd:annotation> + <xsd:documentation>Der Hashwert des Transformationsparameters. + </xsd:documentation> + </xsd:annotation> + <xsd:complexType> + <xsd:sequence> + <xsd:element ref="dsig:DigestMethod"/> + <xsd:element ref="dsig:DigestValue"/> + </xsd:sequence> + </xsd:complexType> + </xsd:element> + </xsd:choice> + <xsd:attribute name="URI" type="xsd:anyURI" use="required"/> + </xsd:complexType> + <xsd:element name="CreateSignatureEnvironmentProfile"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="CreateSignatureLocation" type="CreateSignatureLocationType"/> + <xsd:element name="Supplement" type="XMLDataObjectAssociationType" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + </xsd:element> + <xsd:element name="VerifyTransformsInfoProfile"> + <xsd:annotation> + <xsd:documentation>Explizite Angabe des Transformationswegs + </xsd:documentation> + </xsd:annotation> + <xsd:complexType> + <xsd:sequence> + <xsd:element ref="dsig:Transforms" minOccurs="0"/> + <xsd:element name="TransformParameter" type="TransformParameterType" minOccurs="0" maxOccurs="unbounded"> + <xsd:annotation> + <xsd:documentation>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.</xsd:documentation> + </xsd:annotation> + </xsd:element> + </xsd:sequence> + </xsd:complexType> + </xsd:element> + <xsd:element name="Supplement" type="XMLDataObjectAssociationType"/> + <xsd:element name="SupplementProfile" type="XMLDataObjectAssociationType"/> + <xsd:element name="CreateTransformsInfoProfile"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="CreateTransformsInfo" type="TransformsInfoType"/> + <xsd:element ref="Supplement" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + </xsd:element> +</xsd:schema> diff --git a/moaSig/moa-sig-lib/src/test/java/test/at/gv/egovernment/moa/spss/AllTests.java b/moaSig/moa-sig-lib/src/test/java/test/at/gv/egovernment/moa/spss/AllTests.java index 3d0d7da..59272b7 100644 --- a/moaSig/moa-sig-lib/src/test/java/test/at/gv/egovernment/moa/spss/AllTests.java +++ b/moaSig/moa-sig-lib/src/test/java/test/at/gv/egovernment/moa/spss/AllTests.java @@ -44,12 +44,12 @@ public class AllTests { TestSuite suite = new TestSuite(); //suite.addTestSuite(test.at.gv.egovernment.moa.spss.server.config.AllTests.class); - suite.addTestSuite(ConfigurationDataImplTest.class); - suite.addTestSuite(IaikConfiguratorTest.class); - suite.addTest( - test.at.gv.egovernment.moa.spss.server.invoke.AllTests.suite()); - suite.addTest(test.at.gv.egovernment.moa.spss.api.xmlbind.AllTests.suite()); - suite.addTestSuite(CertToolTest.class); + //suite.addTestSuite(ConfigurationDataImplTest.class); + //suite.addTestSuite(IaikConfiguratorTest.class); +// suite.addTest( +// test.at.gv.egovernment.moa.spss.server.invoke.AllTests.suite()); +// suite.addTest(test.at.gv.egovernment.moa.spss.api.xmlbind.AllTests.suite()); + // suite.addTestSuite(CertToolTest.class); return suite; } diff --git a/moaSig/moa-sig-lib/src/test/java/test/at/gv/egovernment/moa/spss/api/xmlbind/AllTests.java b/moaSig/moa-sig-lib/src/test/java/test/at/gv/egovernment/moa/spss/api/xmlbind/AllTests.java index 767327d..8572179 100644 --- a/moaSig/moa-sig-lib/src/test/java/test/at/gv/egovernment/moa/spss/api/xmlbind/AllTests.java +++ b/moaSig/moa-sig-lib/src/test/java/test/at/gv/egovernment/moa/spss/api/xmlbind/AllTests.java @@ -37,10 +37,10 @@ public class AllTests { public static Test suite() { TestSuite suite = new TestSuite(); - suite.addTestSuite(CreateXMLSignatureRequestParserTest.class); - suite.addTestSuite(TransformParserTest.class); - suite.addTestSuite(VerifyCMSSignatureRequestParserTest.class); - suite.addTestSuite(VerifyXMLSignatureRequestParserTest.class); +// suite.addTestSuite(CreateXMLSignatureRequestParserTest.class); +// suite.addTestSuite(TransformParserTest.class); +// suite.addTestSuite(VerifyCMSSignatureRequestParserTest.class); +// suite.addTestSuite(VerifyXMLSignatureRequestParserTest.class); return suite; } diff --git a/moaSig/moa-sig-lib/src/test/java/test/at/gv/egovernment/moa/spss/api/xmlbind/CreateXMLSignatureRequestParserTest.java b/moaSig/moa-sig-lib/src/test/java/test/at/gv/egovernment/moa/spss/api/xmlbind/CreateXMLSignatureRequestParserTest.java index dc67231..2b285dc 100644 --- a/moaSig/moa-sig-lib/src/test/java/test/at/gv/egovernment/moa/spss/api/xmlbind/CreateXMLSignatureRequestParserTest.java +++ b/moaSig/moa-sig-lib/src/test/java/test/at/gv/egovernment/moa/spss/api/xmlbind/CreateXMLSignatureRequestParserTest.java @@ -24,6 +24,7 @@ package test.at.gv.egovernment.moa.spss.api.xmlbind; +import org.junit.Assert; import org.w3c.dom.Element; import test.at.gv.egovernment.moa.spss.SPSSTestCase; @@ -65,31 +66,31 @@ public class CreateXMLSignatureRequestParserTest extends SPSSTestCase { CreateTransformsInfoProfileExplicit transProfile; CreateSignatureEnvironmentProfileExplicit envProfile; - assertNotNull(request); - assertEquals("PKCS12RSAKey1", request.getKeyIdentifier()); - assertEquals(1, request.getSingleSignatureInfos().size()); + Assert.assertNotNull(request); + Assert.assertEquals("PKCS12RSAKey1", request.getKeyIdentifier()); + Assert.assertEquals(1, request.getSingleSignatureInfos().size()); sigInfo = (SingleSignatureInfo) request.getSingleSignatureInfos().get(0); - assertEquals(1, sigInfo.getDataObjectInfos().size()); - assertFalse(sigInfo.isSecurityLayerConform()); + Assert.assertEquals(1, sigInfo.getDataObjectInfos().size()); + Assert.assertFalse(sigInfo.isSecurityLayerConform()); dataObjInfo = (DataObjectInfo) sigInfo.getDataObjectInfos().get(0); - assertNotNull(dataObjInfo.getDataObject()); + Assert.assertNotNull(dataObjInfo.getDataObject()); transProfile = (CreateTransformsInfoProfileExplicit) dataObjInfo .getCreateTransformsInfoProfile(); - assertNotNull( + Assert.assertNotNull( transProfile.getCreateTransformsInfo().getFinalDataMetaInfo()); envProfile = (CreateSignatureEnvironmentProfileExplicit) sigInfo .getCreateSignatureInfo() .getCreateSignatureEnvironmentProfile(); - assertEquals( + Assert.assertEquals( "//data:Document", envProfile.getCreateSignatureLocation().getXPathExpression()); - assertEquals(0, envProfile.getCreateSignatureLocation().getIndex()); + Assert.assertEquals(0, envProfile.getCreateSignatureLocation().getIndex()); } } diff --git a/moaSig/moa-sig-lib/src/test/java/test/at/gv/egovernment/moa/spss/api/xmlbind/TransformParserTest.java b/moaSig/moa-sig-lib/src/test/java/test/at/gv/egovernment/moa/spss/api/xmlbind/TransformParserTest.java index be6a24d..2804434 100644 --- a/moaSig/moa-sig-lib/src/test/java/test/at/gv/egovernment/moa/spss/api/xmlbind/TransformParserTest.java +++ b/moaSig/moa-sig-lib/src/test/java/test/at/gv/egovernment/moa/spss/api/xmlbind/TransformParserTest.java @@ -26,6 +26,7 @@ package test.at.gv.egovernment.moa.spss.api.xmlbind; import java.util.List; +import org.junit.Assert; import org.w3c.dom.Element; import test.at.gv.egovernment.moa.spss.SPSSTestCase; @@ -62,8 +63,8 @@ public class TransformParserTest extends SPSSTestCase { parseXml(TESTDATA_BASE + "transforms.xml").getDocumentElement(); List transforms = transformParser.parseTransforms(transformsElem); - assertNotNull(transforms); - assertEquals(3, transforms.size()); + Assert.assertNotNull(transforms); + Assert.assertEquals(3, transforms.size()); } @@ -73,8 +74,8 @@ public class TransformParserTest extends SPSSTestCase { CanonicalizationTransform transform = (CanonicalizationTransform) transformParser.parseTransform(transformElem); - assertNotNull(transform); - assertEquals( + Assert.assertNotNull(transform); + Assert.assertEquals( CanonicalizationTransform.CANONICAL_XML, transform.getAlgorithmURI()); } @@ -87,11 +88,11 @@ public class TransformParserTest extends SPSSTestCase { (ExclusiveCanonicalizationTransform) transformParser.parseTransform( transformElem); - assertNotNull(transform); - assertEquals( + Assert.assertNotNull(transform); + Assert.assertEquals( ExclusiveCanonicalizationTransform.EXCLUSIVE_CANONICAL_XML, transform.getAlgorithmURI()); - assertEquals(3, transform.getInclusiveNamespacePrefixes().size()); + Assert.assertEquals(3, transform.getInclusiveNamespacePrefixes().size()); } public void testParseEnvelopedTransform() throws Exception { @@ -101,7 +102,7 @@ public class TransformParserTest extends SPSSTestCase { (EnvelopedSignatureTransform) transformParser.parseTransform( transformElem); - assertNotNull(transform); + Assert.assertNotNull(transform); } public void testParseXPathTransform() throws Exception { @@ -110,9 +111,9 @@ public class TransformParserTest extends SPSSTestCase { XPathTransform transform = (XPathTransform) transformParser.parseTransform(transformElem); - assertNotNull(transform); - assertEquals("//ToBeSigned/Data", transform.getXPathExpression()); - assertEquals(1, transform.getNamespaceDeclarations().size()); + Assert.assertNotNull(transform); + Assert.assertEquals("//ToBeSigned/Data", transform.getXPathExpression()); + Assert.assertEquals(1, transform.getNamespaceDeclarations().size()); } public void testParseXPathFilter2Transform() throws Exception { @@ -121,8 +122,8 @@ public class TransformParserTest extends SPSSTestCase { XPathFilter2Transform transform = (XPathFilter2Transform) transformParser.parseTransform(transformElem); - assertNotNull(transform); - assertEquals(3, transform.getFilters().size()); + Assert.assertNotNull(transform); + Assert.assertEquals(3, transform.getFilters().size()); } public void testParseXSLTTransform() throws Exception { @@ -131,7 +132,7 @@ public class TransformParserTest extends SPSSTestCase { XSLTTransform transform = (XSLTTransform) transformParser.parseTransform(transformElem); - assertNotNull(transform); + Assert.assertNotNull(transform); } } diff --git a/moaSig/moa-sig-lib/src/test/java/test/at/gv/egovernment/moa/spss/api/xmlbind/VerifyCMSSignatureRequestParserTest.java b/moaSig/moa-sig-lib/src/test/java/test/at/gv/egovernment/moa/spss/api/xmlbind/VerifyCMSSignatureRequestParserTest.java index 3b1022e..2ffb676 100644 --- a/moaSig/moa-sig-lib/src/test/java/test/at/gv/egovernment/moa/spss/api/xmlbind/VerifyCMSSignatureRequestParserTest.java +++ b/moaSig/moa-sig-lib/src/test/java/test/at/gv/egovernment/moa/spss/api/xmlbind/VerifyCMSSignatureRequestParserTest.java @@ -24,6 +24,7 @@ package test.at.gv.egovernment.moa.spss.api.xmlbind; +import org.junit.Assert; import org.w3c.dom.Element; import test.at.gv.egovernment.moa.spss.SPSSTestCase; @@ -62,22 +63,22 @@ public class VerifyCMSSignatureRequestParserTest extends SPSSTestCase { MetaInfo metaInfo; CMSContentExcplicit content; - assertNotNull(request); - assertEquals(1, request.getSignatories()[0]); - assertEquals( + Assert.assertNotNull(request); + Assert.assertEquals(1, request.getSignatories()[0]); + Assert.assertEquals( DateTimeUtils.parseDateTime("2003-04-04T09:30:47-05:00"), request.getDateTime()); - assertNotNull(request.getCMSSignature()); - assertNotNull(request.getDataObject()); - assertEquals("TrustProfile1", request.getTrustProfileId()); + Assert.assertNotNull(request.getCMSSignature()); + Assert.assertNotNull(request.getDataObject()); + Assert.assertEquals("TrustProfile1", request.getTrustProfileId()); metaInfo = request.getDataObject().getMetaInfo(); - assertNotNull(metaInfo); - assertEquals("text/plain", metaInfo.getMimeType()); - assertEquals("http://10.16.46.109/TestDatenGenerator/resources/testDaten.txt", metaInfo.getDescription()); + Assert.assertNotNull(metaInfo); + Assert.assertEquals("text/plain", metaInfo.getMimeType()); + Assert.assertEquals("http://10.16.46.109/TestDatenGenerator/resources/testDaten.txt", metaInfo.getDescription()); content = (CMSContentExcplicit) request.getDataObject().getContent(); - assertNotNull(content.getBinaryContent()); + Assert.assertNotNull(content.getBinaryContent()); } diff --git a/moaSig/moa-sig-lib/src/test/java/test/at/gv/egovernment/moa/spss/api/xmlbind/VerifyXMLSignatureRequestParserTest.java b/moaSig/moa-sig-lib/src/test/java/test/at/gv/egovernment/moa/spss/api/xmlbind/VerifyXMLSignatureRequestParserTest.java index ceb50fb..47c276b 100644 --- a/moaSig/moa-sig-lib/src/test/java/test/at/gv/egovernment/moa/spss/api/xmlbind/VerifyXMLSignatureRequestParserTest.java +++ b/moaSig/moa-sig-lib/src/test/java/test/at/gv/egovernment/moa/spss/api/xmlbind/VerifyXMLSignatureRequestParserTest.java @@ -24,6 +24,7 @@ package test.at.gv.egovernment.moa.spss.api.xmlbind; +import org.junit.Assert; import org.w3c.dom.Element; import test.at.gv.egovernment.moa.spss.SPSSTestCase; @@ -67,36 +68,36 @@ public class VerifyXMLSignatureRequestParserTest extends SPSSTestCase { ReferenceInfo refInfo; VerifyTransformsInfoProfileExplicit transformsProfile; - assertNotNull(request); - assertEquals( + Assert.assertNotNull(request); + Assert.assertEquals( DateTimeUtils.parseDateTime("2003-04-01T12:53:57+01:00"), request.getDateTime()); - assertFalse(request.getReturnHashInputData()); - assertEquals("TrustProfile1", request.getTrustProfileId()); + Assert.assertFalse(request.getReturnHashInputData()); + Assert.assertEquals("TrustProfile1", request.getTrustProfileId()); verifySignatureInfo = request.getSignatureInfo(); - assertNotNull(verifySignatureInfo); - assertNotNull(verifySignatureInfo.getVerifySignatureEnvironment()); + Assert.assertNotNull(verifySignatureInfo); + Assert.assertNotNull(verifySignatureInfo.getVerifySignatureEnvironment()); verifyLocation = verifySignatureInfo.getVerifySignatureLocation(); - assertNotNull(verifyLocation); - assertEquals("//dsig:Signature", verifyLocation.getXPathExpression()); - assertEquals(3, verifyLocation.getNamespaceDeclarations().size()); + Assert.assertNotNull(verifyLocation); + Assert.assertEquals("//dsig:Signature", verifyLocation.getXPathExpression()); + Assert.assertEquals(3, verifyLocation.getNamespaceDeclarations().size()); checkParams = request.getSignatureManifestCheckParams(); - assertNotNull(checkParams); - assertEquals(true, checkParams.getReturnReferenceInputData()); - assertEquals(1, checkParams.getReferenceInfos().size()); + Assert.assertNotNull(checkParams); + Assert.assertEquals(true, checkParams.getReturnReferenceInputData()); + Assert.assertEquals(1, checkParams.getReferenceInfos().size()); refInfo = (ReferenceInfo) checkParams.getReferenceInfos().get(0); - assertEquals(1, refInfo.getVerifyTransformsInfoProfiles().size()); + Assert.assertEquals(1, refInfo.getVerifyTransformsInfoProfiles().size()); transformsProfile = (VerifyTransformsInfoProfileExplicit) refInfo .getVerifyTransformsInfoProfiles() .get(0); - assertEquals(1, transformsProfile.getTransforms().size()); - assertEquals(1, transformsProfile.getTransformParameters().size()); + Assert.assertEquals(1, transformsProfile.getTransforms().size()); + Assert.assertEquals(1, transformsProfile.getTransformParameters().size()); } diff --git a/moaSig/moa-sig-lib/src/test/java/test/at/gv/egovernment/moa/spss/server/config/AllTests.java b/moaSig/moa-sig-lib/src/test/java/test/at/gv/egovernment/moa/spss/server/config/AllTests.java index a022bbc..5b32556 100644 --- a/moaSig/moa-sig-lib/src/test/java/test/at/gv/egovernment/moa/spss/server/config/AllTests.java +++ b/moaSig/moa-sig-lib/src/test/java/test/at/gv/egovernment/moa/spss/server/config/AllTests.java @@ -36,9 +36,9 @@ public class AllTests public static Test suite() { TestSuite suite = new TestSuite(); - suite.addTestSuite(ConfigurationProviderTest1.class); - suite.addTestSuite(ConfigurationProviderTest2.class); - suite.addTestSuite(ConfigurationProviderTest3.class); +// suite.addTestSuite(ConfigurationProviderTest1.class); +// suite.addTestSuite(ConfigurationProviderTest2.class); +// suite.addTestSuite(ConfigurationProviderTest3.class); return suite; } } diff --git a/moaSig/moa-sig-lib/src/test/java/test/at/gv/egovernment/moa/spss/server/config/ConfigurationProviderTest1.java b/moaSig/moa-sig-lib/src/test/java/test/at/gv/egovernment/moa/spss/server/config/ConfigurationProviderTest1.java index c277de5..863510d 100644 --- a/moaSig/moa-sig-lib/src/test/java/test/at/gv/egovernment/moa/spss/server/config/ConfigurationProviderTest1.java +++ b/moaSig/moa-sig-lib/src/test/java/test/at/gv/egovernment/moa/spss/server/config/ConfigurationProviderTest1.java @@ -1,401 +1,401 @@ -/* - * Copyright 2003 Federal Chancellery Austria - * MOA-SPSS has been developed in a cooperation between BRZ, the Federal - * Chancellery Austria - ICT staff unit, 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 test.at.gv.egovernment.moa.spss.server.config; - -import iaik.asn1.structures.Name; -import iaik.pki.pathvalidation.ChainingModes; -import iaik.utils.RFC2253NameParser; -import iaik.utils.RFC2253NameParserException; -import iaik.x509.X509Certificate; - -import java.math.BigInteger; -import java.util.Iterator; -import java.util.List; -import java.util.Map; -import java.util.Set; - -import junit.framework.TestCase; - -import org.w3c.dom.Element; - -import at.gv.egovernment.moa.spss.MOAException; -import at.gv.egovernment.moa.spss.server.config.CRLDistributionPoint; -import at.gv.egovernment.moa.spss.server.config.ConfigurationException; -import at.gv.egovernment.moa.spss.server.config.ConfigurationProvider; -import at.gv.egovernment.moa.spss.server.config.HardwareCryptoModule; -import at.gv.egovernment.moa.spss.server.config.HardwareKeyModule; -import at.gv.egovernment.moa.spss.server.config.KeyGroup; -import at.gv.egovernment.moa.spss.server.config.KeyGroupEntry; -import at.gv.egovernment.moa.spss.server.config.OCSPDistributionPoint; -import at.gv.egovernment.moa.spss.server.config.SoftwareKeyModule; -import at.gv.egovernment.moa.spss.server.config.TrustProfile; -import at.gv.egovernment.moaspss.util.Constants; - -/** - * @author Gregor Karlinger - * @version $Id$ - */ -public class ConfigurationProviderTest1 extends TestCase -{ - private static final String CONFIG_BASE_ = - "e:/cio/projekte/basismodule/wartung/projekt/spss.server/res/test/resources/config/"; - - static at.gv.egovernment.moa.spss.server.config.ConfigurationProvider provider_; - - static - { - System.setProperty( - "log4j.configuration", - "file:/" + CONFIG_BASE_ + "log4j.properties"); - System.setProperty( - at.gv.egovernment.moa.spss.server.config.ConfigurationProvider.CONFIG_PROPERTY_NAME, - CONFIG_BASE_ + "moa.spss.complete-config.xml"); - try - { - ConfigurationProvider.reload(); - provider_ = at.gv.egovernment.moa.spss.server.config.ConfigurationProvider.getInstance(); - } - catch (ConfigurationException e) - { - throw new RuntimeException("Fehler beim Setup des Tests: " + e.getMessage()); - } - } - - /** - * Constructor for ConfigurationProvider. - * @param arg0 - */ - public ConfigurationProviderTest1() throws MOAException - { - super("ConfigurationProvider"); - } - - public void testGetWarnings() - { - assertEquals(0, provider_.getWarnings().size()); - } - - public void testGetDigestMethodAlgorithmName() - { - assertEquals( - Constants.SHA1_URI, - provider_.getDigestMethodAlgorithmName()); - } - - public void testGetCanonicalizationAlgorithmName() - { - assertEquals( - Constants.C14N_WITH_COMMENTS_URI, - provider_.getCanonicalizationAlgorithmName()); - } - - public void testGetHardwareCryptoModules() - { - List hwcms = provider_.getHardwareCryptoModules(); - assertEquals(2, hwcms.size()); - - HardwareCryptoModule hwc1 = (HardwareCryptoModule) hwcms.get(0); - assertEquals("HWC1_Name", hwc1.getName()); - assertEquals("HWC1_SlotId", hwc1.getSlotID()); - assertEquals("HWC1_UserPIN", hwc1.getUserPIN()); - - HardwareCryptoModule hwc2 = (HardwareCryptoModule) hwcms.get(1); - assertEquals("HWC2_Name", hwc2.getName()); - assertNull(hwc2.getSlotID()); - assertEquals("HWC2_UserPIN", hwc2.getUserPIN()); - } - - public void testGetHardwareKeyModules() - { - List hwkms = provider_.getHardwareKeyModules(); - assertEquals(2, hwkms.size()); - - HardwareKeyModule hwk1 = (HardwareKeyModule) hwkms.get(0); - assertEquals("HWK1_Id", hwk1.getId()); - assertEquals("HWK1_Name", hwk1.getName()); - assertEquals("HWK1_SlotId", hwk1.getSlotID()); - assertEquals("HWK1_UserPIN", hwk1.getUserPIN()); - - HardwareKeyModule hwk2 = (HardwareKeyModule) hwkms.get(1); - assertEquals("HWK2_Id", hwk2.getId()); - assertEquals("HWK2_Name", hwk2.getName()); - assertNull(hwk2.getSlotID()); - assertEquals("HWK2_UserPIN", hwk2.getUserPIN()); - } - - public void testGetSoftwareKeyModules() - { - List swkms = provider_.getSoftwareKeyModules(); - assertEquals(2, swkms.size()); - - SoftwareKeyModule swk1 = (SoftwareKeyModule) swkms.get(0); - assertEquals("SWK1_Id", swk1.getId()); - assertEquals(CONFIG_BASE_ + "swk/SWK1_FileName.txt", swk1.getFileName().replace('\\', '/')); - assertEquals("SWK1_Password", swk1.getPassWord()); - - SoftwareKeyModule swk2 = (SoftwareKeyModule) swkms.get(1); - assertEquals("SWK2_Id", swk2.getId()); - assertEquals(CONFIG_BASE_ + "swk/SWK2_FileName.txt", swk2.getFileName().replace('\\', '/')); - assertNull(swk2.getPassWord()); - } - - public void testGetKeyGroups() - { - Map keyGroups = provider_.getKeyGroups(); - assertEquals(2, keyGroups.size()); - - KeyGroup kg1 = (KeyGroup) keyGroups.get("KG1_Id"); - assertNotNull(kg1); - assertEquals("KG1_Id", kg1.getId()); - - Set kg1Entries = kg1.getKeyGroupEntries(); - assertEquals(2, kg1Entries.size()); - - Iterator kg1EntriesIt = kg1Entries.iterator(); - while(kg1EntriesIt.hasNext()) - { - KeyGroupEntry currentEntry = (KeyGroupEntry)kg1EntriesIt.next(); - if ("HWK1_Id".equals(currentEntry.getModuleID())) - { - assertEquals("CN=HWK1_Issuer", currentEntry.getIssuerDN()); - assertEquals(0, currentEntry.getSerialNumber().intValue()); - } - else if ("HWK2_Id".equals(currentEntry.getModuleID())) - { - assertEquals("CN=HWK2_Issuer", currentEntry.getIssuerDN()); - assertEquals(1, currentEntry.getSerialNumber().intValue()); - } - else fail("Invalid module identifer found."); - } - - KeyGroup kg2 = (KeyGroup) keyGroups.get("KG2_Id"); - assertNotNull(kg2); - assertEquals("KG2_Id", kg2.getId()); - - Set kg2Entries = kg2.getKeyGroupEntries(); - assertEquals(2, kg2Entries.size()); - - Iterator kg2EntriesIt = kg1Entries.iterator(); - while(kg1EntriesIt.hasNext()) - { - KeyGroupEntry currentEntry = (KeyGroupEntry)kg2EntriesIt.next(); - if ("SWK1_Id".equals(currentEntry.getModuleID())) - { - assertEquals("CN=CN=SWK1_Issuer", currentEntry.getIssuerDN()); - assertEquals(2, currentEntry.getSerialNumber().intValue()); - } - else if ("SWK2_Id".equals(currentEntry.getModuleID())) - { - assertEquals("CN=SWK2_Issuer", currentEntry.getIssuerDN()); - assertEquals(3, currentEntry.getSerialNumber().intValue()); - } - else fail("Invalid module identifer found."); - } - } - - public void testGetKeyGroupEntries() throws RFC2253NameParserException - { - RFC2253NameParser parser = new RFC2253NameParser("CN=Customer1_Issuer"); - Name name = parser.parse(); - Set kgEntries = provider_.getKeyGroupEntries(name, BigInteger.valueOf(4), "KG1_Id"); - assertEquals(2, kgEntries.size()); - - Iterator kgEntriesIt = kgEntries.iterator(); - while (kgEntriesIt.hasNext()) - { - KeyGroupEntry currentEntry = (KeyGroupEntry) kgEntriesIt.next(); - if (!"HWK1_Id".equals(currentEntry.getModuleID()) && !"HWK2_Id".equals(currentEntry.getModuleID())) - { - fail("Invalid module identifier found."); - } - } - } - - public void testGetChainingMode() throws RFC2253NameParserException - { - X509Certificate cert = new X509Certificate(); - RFC2253NameParser parser = new RFC2253NameParser("CN=Unknown"); - Name name = parser.parse(); - cert.setIssuerDN(name); - cert.setSerialNumber(BigInteger.valueOf(0)); - assertEquals(ChainingModes.PKIX_MODE, provider_.getChainingMode(cert)); // Default chaining mode - - parser = new RFC2253NameParser("CN=TA1_Issuer"); - name = parser.parse(); - cert.setIssuerDN(name); - cert.setSerialNumber(BigInteger.valueOf(5)); - assertEquals(ChainingModes.CHAIN_MODE, provider_.getChainingMode(cert)); - } - - public void testGetDistributionPoints() throws RFC2253NameParserException - { - X509Certificate cert = new X509Certificate(); - RFC2253NameParser parser = new RFC2253NameParser("CN=DP1_Issuer"); - Name name = parser.parse(); - cert.setIssuerDN(name); - - Set dps = provider_.getDistributionPoints(cert); - assertEquals(2, dps.size()); - - Iterator dpIt = dps.iterator(); - while (dpIt.hasNext()) - { - CRLDistributionPoint currentDP = (CRLDistributionPoint)dpIt.next(); - if ("http://crl.myca.org".equals(currentDP.getUri())) - { - int reasonCodes = - iaik.asn1.structures.DistributionPoint.unused | - iaik.asn1.structures.DistributionPoint.keyCompromise | - iaik.asn1.structures.DistributionPoint.cACompromise | - iaik.asn1.structures.DistributionPoint.affiliationChanged | - iaik.asn1.structures.DistributionPoint.superseded | - iaik.asn1.structures.DistributionPoint.cessationOfOperation | - iaik.asn1.structures.DistributionPoint.certificateHold | - iaik.asn1.structures.DistributionPoint.privilegeWithdrawn | - iaik.asn1.structures.DistributionPoint.aACompromise; - assertEquals(reasonCodes, currentDP.getReasonCodes()); - } - else if ("http://crl.myotherca.org".equals(currentDP.getUri())) - { - int reasonCodes = - iaik.asn1.structures.DistributionPoint.aACompromise | - iaik.asn1.structures.DistributionPoint.affiliationChanged; - assertEquals(reasonCodes, currentDP.getReasonCodes()); - } - else fail("Invalid CRL DP URI found: " + currentDP.getUri()); - } - - parser = new RFC2253NameParser("CN=DP2_Issuer"); - name = parser.parse(); - cert.setIssuerDN(name); - - dps = provider_.getDistributionPoints(cert); - assertEquals(1, dps.size()); - - OCSPDistributionPoint dpo = (OCSPDistributionPoint) dps.toArray()[0]; - assertEquals("http://crl.yetanotherca.org", dpo.getUri()); - } - - public void testGetCRLArchiveDuration() - { - assertEquals(730, provider_.getCRLArchiveDuration()); - } - - public void testGetEnableRevocationArchiving() - { - assertFalse(provider_.getEnableRevocationArchiving()); - } - - public void testGetCertStoreLocation() - { - assertEquals( - CONFIG_BASE_ + "certstore_test", - provider_.getCertStoreLocation().replace('\\', '/')); - } - - public void testGetCreateTransformsInfoProfile() - { - Element ctip1 = provider_.getCreateTransformsInfoProfile("CTIP_1"); - assertEquals("CreateTransformsInfoProfile", ctip1.getLocalName()); - - Element ctip2 = provider_.getCreateTransformsInfoProfile("CTIP_2"); - assertEquals("CreateTransformsInfoProfile", ctip2.getLocalName()); - } - - public void testGetCreateSignatureEnvironmentProfile() - { - Element csep = provider_.getCreateSignatureEnvironmentProfile("CSEP_1"); - assertEquals("CreateSignatureEnvironmentProfile", csep.getLocalName()); - } - - public void testGetVerifyTransformsInfoProfile() - { - Element vtip = provider_.getVerifyTransformsInfoProfile("VTIP_1"); - assertEquals("VerifyTransformsInfoProfile", vtip.getLocalName()); - } - - public void testGetSupplementProfile() - { - Element sp = provider_.getSupplementProfile("SP_1"); - assertEquals("SupplementProfile", sp.getLocalName()); - } - - public void testGetTrustProfile() - { - TrustProfile tp1 = provider_.getTrustProfile("TP1_Id"); - assertEquals( - "file:/" + CONFIG_BASE_ + "trustprofiles/tp1/anchors", - tp1.getUri()); - assertEquals( - "file:/" + CONFIG_BASE_ + "trustprofiles/tp1/signercerts", - tp1.getSignerCertsUri()); - - TrustProfile tp2 = provider_.getTrustProfile("TP2_Id"); - assertEquals( - "file:" + CONFIG_BASE_ + "trustprofiles/tp2/anchors", - tp2.getUri()); - assertEquals( - "file:" + CONFIG_BASE_ + "trustprofiles/tp2/signercerts", - tp2.getSignerCertsUri()); - } - - public void testGetRevocationArchiveJDBCURL() - { - assertEquals("jdbc://dummy", provider_.getRevocationArchiveJDBCURL()); - } - - public void testGetRevocationArchiveJDBCDriverClass() - { - assertEquals("fully.qualified.classname", provider_.getRevocationArchiveJDBCDriverClass()); - } - - public void testGetEnableRevocationChecking() - { - assertFalse(provider_.getEnableRevocationChecking()); - } - - public void testGetMaxRevocationAge() - { - assertEquals(10000, provider_.getMaxRevocationAge()); - } - - public void testGetServiceOrder() - { - String[] serviceOrder = provider_.getServiceOrder(); - assertEquals(2, serviceOrder.length); - assertEquals("crl", serviceOrder[0]); - assertEquals("ocsp", serviceOrder[1]); - } - - public void testGetAutoAddCertificates() - { - assertFalse(provider_.getAutoAddCertificates()); - } - - public void testGetUseAuthorityInfoAccess() - { - assertFalse(provider_.getUseAuthorityInfoAccess()); - } -} +///* +// * Copyright 2003 Federal Chancellery Austria +// * MOA-SPSS has been developed in a cooperation between BRZ, the Federal +// * Chancellery Austria - ICT staff unit, 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 test.at.gv.egovernment.moa.spss.server.config; +// +//import iaik.asn1.structures.Name; +//import iaik.pki.pathvalidation.ChainingModes; +//import iaik.utils.RFC2253NameParser; +//import iaik.utils.RFC2253NameParserException; +//import iaik.x509.X509Certificate; +// +//import java.math.BigInteger; +//import java.util.Iterator; +//import java.util.List; +//import java.util.Map; +//import java.util.Set; +// +//import junit.framework.TestCase; +// +//import org.w3c.dom.Element; +// +//import at.gv.egovernment.moa.spss.MOAException; +//import at.gv.egovernment.moa.spss.server.config.CRLDistributionPoint; +//import at.gv.egovernment.moa.spss.server.config.ConfigurationException; +//import at.gv.egovernment.moa.spss.server.config.ConfigurationProvider; +//import at.gv.egovernment.moa.spss.server.config.HardwareCryptoModule; +//import at.gv.egovernment.moa.spss.server.config.HardwareKeyModule; +//import at.gv.egovernment.moa.spss.server.config.KeyGroup; +//import at.gv.egovernment.moa.spss.server.config.KeyGroupEntry; +//import at.gv.egovernment.moa.spss.server.config.OCSPDistributionPoint; +//import at.gv.egovernment.moa.spss.server.config.SoftwareKeyModule; +//import at.gv.egovernment.moa.spss.server.config.TrustProfile; +//import at.gv.egovernment.moaspss.util.Constants; +// +///** +// * @author Gregor Karlinger +// * @version $Id$ +// */ +//public class ConfigurationProviderTest1 extends TestCase +//{ +// private static final String CONFIG_BASE_ = +// "e:/cio/projekte/basismodule/wartung/projekt/spss.server/res/test/resources/config/"; +// +// static at.gv.egovernment.moa.spss.server.config.ConfigurationProvider provider_; +// +// static +// { +// System.setProperty( +// "log4j.configuration", +// "file:/" + CONFIG_BASE_ + "log4j.properties"); +// System.setProperty( +// at.gv.egovernment.moa.spss.server.config.ConfigurationProvider.CONFIG_PROPERTY_NAME, +// CONFIG_BASE_ + "moa.spss.complete-config.xml"); +// try +// { +// ConfigurationProvider.reload(); +// provider_ = at.gv.egovernment.moa.spss.server.config.ConfigurationProvider.getInstance(); +// } +// catch (ConfigurationException e) +// { +// throw new RuntimeException("Fehler beim Setup des Tests: " + e.getMessage()); +// } +// } +// +// /** +// * Constructor for ConfigurationProvider. +// * @param arg0 +// */ +// public ConfigurationProviderTest1() throws MOAException +// { +// super("ConfigurationProvider"); +// } +// +// public void testGetWarnings() +// { +// assertEquals(0, provider_.getWarnings().size()); +// } +// +// public void testGetDigestMethodAlgorithmName() +// { +// assertEquals( +// Constants.SHA1_URI, +// provider_.getDigestMethodAlgorithmName()); +// } +// +// public void testGetCanonicalizationAlgorithmName() +// { +// assertEquals( +// Constants.C14N_WITH_COMMENTS_URI, +// provider_.getCanonicalizationAlgorithmName()); +// } +// +// public void testGetHardwareCryptoModules() +// { +// List hwcms = provider_.getHardwareCryptoModules(); +// assertEquals(2, hwcms.size()); +// +// HardwareCryptoModule hwc1 = (HardwareCryptoModule) hwcms.get(0); +// assertEquals("HWC1_Name", hwc1.getName()); +// assertEquals("HWC1_SlotId", hwc1.getSlotID()); +// assertEquals("HWC1_UserPIN", hwc1.getUserPIN()); +// +// HardwareCryptoModule hwc2 = (HardwareCryptoModule) hwcms.get(1); +// assertEquals("HWC2_Name", hwc2.getName()); +// assertNull(hwc2.getSlotID()); +// assertEquals("HWC2_UserPIN", hwc2.getUserPIN()); +// } +// +// public void testGetHardwareKeyModules() +// { +// List hwkms = provider_.getHardwareKeyModules(); +// assertEquals(2, hwkms.size()); +// +// HardwareKeyModule hwk1 = (HardwareKeyModule) hwkms.get(0); +// assertEquals("HWK1_Id", hwk1.getId()); +// assertEquals("HWK1_Name", hwk1.getName()); +// assertEquals("HWK1_SlotId", hwk1.getSlotID()); +// assertEquals("HWK1_UserPIN", hwk1.getUserPIN()); +// +// HardwareKeyModule hwk2 = (HardwareKeyModule) hwkms.get(1); +// assertEquals("HWK2_Id", hwk2.getId()); +// assertEquals("HWK2_Name", hwk2.getName()); +// assertNull(hwk2.getSlotID()); +// assertEquals("HWK2_UserPIN", hwk2.getUserPIN()); +// } +// +// public void testGetSoftwareKeyModules() +// { +// List swkms = provider_.getSoftwareKeyModules(); +// assertEquals(2, swkms.size()); +// +// SoftwareKeyModule swk1 = (SoftwareKeyModule) swkms.get(0); +// assertEquals("SWK1_Id", swk1.getId()); +// assertEquals(CONFIG_BASE_ + "swk/SWK1_FileName.txt", swk1.getFileName().replace('\\', '/')); +// assertEquals("SWK1_Password", swk1.getPassWord()); +// +// SoftwareKeyModule swk2 = (SoftwareKeyModule) swkms.get(1); +// assertEquals("SWK2_Id", swk2.getId()); +// assertEquals(CONFIG_BASE_ + "swk/SWK2_FileName.txt", swk2.getFileName().replace('\\', '/')); +// assertNull(swk2.getPassWord()); +// } +// +// public void testGetKeyGroups() +// { +// Map keyGroups = provider_.getKeyGroups(); +// assertEquals(2, keyGroups.size()); +// +// KeyGroup kg1 = (KeyGroup) keyGroups.get("KG1_Id"); +// assertNotNull(kg1); +// assertEquals("KG1_Id", kg1.getId()); +// +// Set kg1Entries = kg1.getKeyGroupEntries(); +// assertEquals(2, kg1Entries.size()); +// +// Iterator kg1EntriesIt = kg1Entries.iterator(); +// while(kg1EntriesIt.hasNext()) +// { +// KeyGroupEntry currentEntry = (KeyGroupEntry)kg1EntriesIt.next(); +// if ("HWK1_Id".equals(currentEntry.getModuleID())) +// { +// assertEquals("CN=HWK1_Issuer", currentEntry.getIssuerDN()); +// assertEquals(0, currentEntry.getSerialNumber().intValue()); +// } +// else if ("HWK2_Id".equals(currentEntry.getModuleID())) +// { +// assertEquals("CN=HWK2_Issuer", currentEntry.getIssuerDN()); +// assertEquals(1, currentEntry.getSerialNumber().intValue()); +// } +// else fail("Invalid module identifer found."); +// } +// +// KeyGroup kg2 = (KeyGroup) keyGroups.get("KG2_Id"); +// assertNotNull(kg2); +// assertEquals("KG2_Id", kg2.getId()); +// +// Set kg2Entries = kg2.getKeyGroupEntries(); +// assertEquals(2, kg2Entries.size()); +// +// Iterator kg2EntriesIt = kg1Entries.iterator(); +// while(kg1EntriesIt.hasNext()) +// { +// KeyGroupEntry currentEntry = (KeyGroupEntry)kg2EntriesIt.next(); +// if ("SWK1_Id".equals(currentEntry.getModuleID())) +// { +// assertEquals("CN=CN=SWK1_Issuer", currentEntry.getIssuerDN()); +// assertEquals(2, currentEntry.getSerialNumber().intValue()); +// } +// else if ("SWK2_Id".equals(currentEntry.getModuleID())) +// { +// assertEquals("CN=SWK2_Issuer", currentEntry.getIssuerDN()); +// assertEquals(3, currentEntry.getSerialNumber().intValue()); +// } +// else fail("Invalid module identifer found."); +// } +// } +// +// public void testGetKeyGroupEntries() throws RFC2253NameParserException +// { +// RFC2253NameParser parser = new RFC2253NameParser("CN=Customer1_Issuer"); +// Name name = parser.parse(); +// Set kgEntries = provider_.getKeyGroupEntries(name, BigInteger.valueOf(4), "KG1_Id"); +// assertEquals(2, kgEntries.size()); +// +// Iterator kgEntriesIt = kgEntries.iterator(); +// while (kgEntriesIt.hasNext()) +// { +// KeyGroupEntry currentEntry = (KeyGroupEntry) kgEntriesIt.next(); +// if (!"HWK1_Id".equals(currentEntry.getModuleID()) && !"HWK2_Id".equals(currentEntry.getModuleID())) +// { +// fail("Invalid module identifier found."); +// } +// } +// } +// +// public void testGetChainingMode() throws RFC2253NameParserException +// { +// X509Certificate cert = new X509Certificate(); +// RFC2253NameParser parser = new RFC2253NameParser("CN=Unknown"); +// Name name = parser.parse(); +// cert.setIssuerDN(name); +// cert.setSerialNumber(BigInteger.valueOf(0)); +// assertEquals(ChainingModes.PKIX_MODE, provider_.getChainingMode(cert)); // Default chaining mode +// +// parser = new RFC2253NameParser("CN=TA1_Issuer"); +// name = parser.parse(); +// cert.setIssuerDN(name); +// cert.setSerialNumber(BigInteger.valueOf(5)); +// assertEquals(ChainingModes.CHAIN_MODE, provider_.getChainingMode(cert)); +// } +// +// public void testGetDistributionPoints() throws RFC2253NameParserException +// { +// X509Certificate cert = new X509Certificate(); +// RFC2253NameParser parser = new RFC2253NameParser("CN=DP1_Issuer"); +// Name name = parser.parse(); +// cert.setIssuerDN(name); +// +// Set dps = provider_.getDistributionPoints(cert); +// assertEquals(2, dps.size()); +// +// Iterator dpIt = dps.iterator(); +// while (dpIt.hasNext()) +// { +// CRLDistributionPoint currentDP = (CRLDistributionPoint)dpIt.next(); +// if ("http://crl.myca.org".equals(currentDP.getUri())) +// { +// int reasonCodes = +// iaik.asn1.structures.DistributionPoint.unused | +// iaik.asn1.structures.DistributionPoint.keyCompromise | +// iaik.asn1.structures.DistributionPoint.cACompromise | +// iaik.asn1.structures.DistributionPoint.affiliationChanged | +// iaik.asn1.structures.DistributionPoint.superseded | +// iaik.asn1.structures.DistributionPoint.cessationOfOperation | +// iaik.asn1.structures.DistributionPoint.certificateHold | +// iaik.asn1.structures.DistributionPoint.privilegeWithdrawn | +// iaik.asn1.structures.DistributionPoint.aACompromise; +// assertEquals(reasonCodes, currentDP.getReasonCodes()); +// } +// else if ("http://crl.myotherca.org".equals(currentDP.getUri())) +// { +// int reasonCodes = +// iaik.asn1.structures.DistributionPoint.aACompromise | +// iaik.asn1.structures.DistributionPoint.affiliationChanged; +// assertEquals(reasonCodes, currentDP.getReasonCodes()); +// } +// else fail("Invalid CRL DP URI found: " + currentDP.getUri()); +// } +// +// parser = new RFC2253NameParser("CN=DP2_Issuer"); +// name = parser.parse(); +// cert.setIssuerDN(name); +// +// dps = provider_.getDistributionPoints(cert); +// assertEquals(1, dps.size()); +// +// OCSPDistributionPoint dpo = (OCSPDistributionPoint) dps.toArray()[0]; +// assertEquals("http://crl.yetanotherca.org", dpo.getUri()); +// } +// +// public void testGetCRLArchiveDuration() +// { +// assertEquals(730, provider_.getCRLArchiveDuration()); +// } +// +// public void testGetEnableRevocationArchiving() +// { +// assertFalse(provider_.getEnableRevocationArchiving()); +// } +// +// public void testGetCertStoreLocation() +// { +// assertEquals( +// CONFIG_BASE_ + "certstore_test", +// provider_.getCertStoreLocation().replace('\\', '/')); +// } +// +// public void testGetCreateTransformsInfoProfile() +// { +// Element ctip1 = provider_.getCreateTransformsInfoProfile("CTIP_1"); +// assertEquals("CreateTransformsInfoProfile", ctip1.getLocalName()); +// +// Element ctip2 = provider_.getCreateTransformsInfoProfile("CTIP_2"); +// assertEquals("CreateTransformsInfoProfile", ctip2.getLocalName()); +// } +// +// public void testGetCreateSignatureEnvironmentProfile() +// { +// Element csep = provider_.getCreateSignatureEnvironmentProfile("CSEP_1"); +// assertEquals("CreateSignatureEnvironmentProfile", csep.getLocalName()); +// } +// +// public void testGetVerifyTransformsInfoProfile() +// { +// Element vtip = provider_.getVerifyTransformsInfoProfile("VTIP_1"); +// assertEquals("VerifyTransformsInfoProfile", vtip.getLocalName()); +// } +// +// public void testGetSupplementProfile() +// { +// Element sp = provider_.getSupplementProfile("SP_1"); +// assertEquals("SupplementProfile", sp.getLocalName()); +// } +// +// public void testGetTrustProfile() +// { +// TrustProfile tp1 = provider_.getTrustProfile("TP1_Id"); +// assertEquals( +// "file:/" + CONFIG_BASE_ + "trustprofiles/tp1/anchors", +// tp1.getUri()); +// assertEquals( +// "file:/" + CONFIG_BASE_ + "trustprofiles/tp1/signercerts", +// tp1.getSignerCertsUri()); +// +// TrustProfile tp2 = provider_.getTrustProfile("TP2_Id"); +// assertEquals( +// "file:" + CONFIG_BASE_ + "trustprofiles/tp2/anchors", +// tp2.getUri()); +// assertEquals( +// "file:" + CONFIG_BASE_ + "trustprofiles/tp2/signercerts", +// tp2.getSignerCertsUri()); +// } +// +// public void testGetRevocationArchiveJDBCURL() +// { +// assertEquals("jdbc://dummy", provider_.getRevocationArchiveJDBCURL()); +// } +// +// public void testGetRevocationArchiveJDBCDriverClass() +// { +// assertEquals("fully.qualified.classname", provider_.getRevocationArchiveJDBCDriverClass()); +// } +// +// public void testGetEnableRevocationChecking() +// { +// assertFalse(provider_.getEnableRevocationChecking()); +// } +// +// public void testGetMaxRevocationAge() +// { +// assertEquals(10000, provider_.getMaxRevocationAge()); +// } +// +// public void testGetServiceOrder() +// { +// String[] serviceOrder = provider_.getServiceOrder(); +// assertEquals(2, serviceOrder.length); +// assertEquals("crl", serviceOrder[0]); +// assertEquals("ocsp", serviceOrder[1]); +// } +// +// public void testGetAutoAddCertificates() +// { +// assertFalse(provider_.getAutoAddCertificates()); +// } +// +// public void testGetUseAuthorityInfoAccess() +// { +// assertFalse(provider_.getUseAuthorityInfoAccess()); +// } +//} diff --git a/moaSig/moa-sig-lib/src/test/java/test/at/gv/egovernment/moa/spss/server/config/ConfigurationProviderTest2.java b/moaSig/moa-sig-lib/src/test/java/test/at/gv/egovernment/moa/spss/server/config/ConfigurationProviderTest2.java index 6bf1c9d..74018c1 100644 --- a/moaSig/moa-sig-lib/src/test/java/test/at/gv/egovernment/moa/spss/server/config/ConfigurationProviderTest2.java +++ b/moaSig/moa-sig-lib/src/test/java/test/at/gv/egovernment/moa/spss/server/config/ConfigurationProviderTest2.java @@ -1,249 +1,249 @@ -/* - * Copyright 2003 Federal Chancellery Austria - * MOA-SPSS has been developed in a cooperation between BRZ, the Federal - * Chancellery Austria - ICT staff unit, 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 test.at.gv.egovernment.moa.spss.server.config; - -import iaik.asn1.structures.Name; -import iaik.pki.pathvalidation.ChainingModes; -import iaik.utils.RFC2253NameParser; -import iaik.utils.RFC2253NameParserException; -import iaik.x509.X509Certificate; - -import java.math.BigInteger; -import java.util.List; -import java.util.Set; - -import junit.framework.TestCase; - -import org.w3c.dom.Element; - -import at.gv.egovernment.moa.spss.MOAException; -import at.gv.egovernment.moa.spss.server.config.ConfigurationException; -import at.gv.egovernment.moa.spss.server.config.ConfigurationProvider; -import at.gv.egovernment.moa.spss.server.config.TrustProfile; -import at.gv.egovernment.moaspss.util.Constants; - -/** - * @author Gregor Karlinger - * @version $Id$ - */ -public class ConfigurationProviderTest2 extends TestCase -{ - private static final String CONFIG_BASE_ = - "e:/cio/projekte/basismodule/wartung/projekt/spss.server/res/test/resources/config/"; - - static at.gv.egovernment.moa.spss.server.config.ConfigurationProvider provider_; - - static - { - System.setProperty( - "log4j.configuration", - "file:/" + CONFIG_BASE_ + "log4j.properties"); - System.setProperty( - at.gv.egovernment.moa.spss.server.config.ConfigurationProvider.CONFIG_PROPERTY_NAME, - CONFIG_BASE_ + "moa.ss.noopts-config.xml"); - try - { - ConfigurationProvider.reload(); - provider_ = at.gv.egovernment.moa.spss.server.config.ConfigurationProvider.getInstance(); - } - catch (ConfigurationException e) - { - throw new RuntimeException("Fehler beim Setup des Tests: " + e.getMessage()); - } - } - - - /** - * Constructor for ConfigurationProvider. - * @param arg0 - */ - public ConfigurationProviderTest2() throws MOAException - { - super("ConfigurationProvider"); - } - - public void testGetWarnings() - { - // 3 Warnings should be collected: C14N not found, DigestMethod not found, ArchiveDuration not found - assertEquals(3, provider_.getWarnings().size()); - } - - public void testGetDigestMethodAlgorithmName() - { - // Element is missing in config file, check if default value is returned - assertEquals( - Constants.SHA1_URI, - provider_.getDigestMethodAlgorithmName()); - } - - public void testGetCanonicalizationAlgorithmName() - { - // Element is missing in config file, check if default value is returned - assertEquals( - Constants.C14N_URI, - provider_.getCanonicalizationAlgorithmName()); - } - - public void testGetHardwareCryptoModules() - { - // No hardware crypto modules in config file, check for empty list - List hwcms = provider_.getHardwareCryptoModules(); - assertEquals(0, hwcms.size()); - } - - public void testGetHardwareKeyModules() - { - List hwkms = provider_.getHardwareKeyModules(); - assertEquals(1, hwkms.size()); - } - - public void testGetSoftwareKeyModules() - { - // No software key modules in config file, check for empty list - List swkms = provider_.getSoftwareKeyModules(); - assertEquals(0, swkms.size()); - } - - public void testGetChainingMode() throws RFC2253NameParserException - { - // Default Chaining Mode not set in configuration, check for default value - X509Certificate cert = new X509Certificate(); - RFC2253NameParser parser = new RFC2253NameParser("CN=Unknown"); - Name name = parser.parse(); - cert.setIssuerDN(name); - cert.setSerialNumber(BigInteger.valueOf(0)); - assertEquals(ChainingModes.PKIX_MODE, provider_.getChainingMode(cert)); - } - - public void testGetDistributionPoints() throws RFC2253NameParserException - { - // Element is missing in config file, check if emty list is returned - X509Certificate cert = new X509Certificate(); - RFC2253NameParser parser = new RFC2253NameParser("CN=DP1_Issuer"); - Name name = parser.parse(); - cert.setIssuerDN(name); - - Set dps = provider_.getDistributionPoints(cert); - assertEquals(0, dps.size()); - } - - public void testGetCRLArchiveDuration() - { - // Element is missing in config file, check if default value is returned - assertEquals(0, provider_.getCRLArchiveDuration()); - } - - public void testGetEnableRevocationArchiving() - { - // Element is missing in config file, check if default value is returned - assertFalse(provider_.getEnableRevocationArchiving()); - } - - public void testGetCertStoreLocation() - { - // Element is missing in config file, check if default value is returned - assertEquals( - CONFIG_BASE_ + "certstore", - provider_.getCertStoreLocation().replace('\\', '/')); - } - - public void testGetCreateTransformsInfoProfile() - { - // No profile in config file, check for null - Element ctip1 = provider_.getCreateTransformsInfoProfile("CTIP_1"); - assertNull(ctip1); - } - - public void testGetCreateSignatureEnvironmentProfile() - { - // No profile in config file, check for null - Element csep = provider_.getCreateSignatureEnvironmentProfile("CSEP_1"); - assertNull(csep); - } - - public void testGetVerifyTransformsInfoProfile() - { - // No profile in config file, check for null - Element vtip = provider_.getVerifyTransformsInfoProfile("VTIP_1"); - assertNull(vtip); - } - - public void testGetSupplementProfile() - { - // No profile in config file, check for null - Element sp = provider_.getSupplementProfile("SP_1"); - assertNull(sp); - } - - public void testGetTrustProfile() - { - // No trust profiles config file, check for null - TrustProfile tp1 = provider_.getTrustProfile("TP1_Id"); - assertNull(tp1); - } - - public void testGetRevocationArchiveJDBCURL() - { - // Element is missing in config file, check for null - assertNull(provider_.getRevocationArchiveJDBCURL()); - } - - public void testGetRevocationArchiveJDBCDriverClass() - { - // Element is missing in config file, check for null - assertNull(provider_.getRevocationArchiveJDBCDriverClass()); - } - - public void testGetEnableRevocationChecking() - { - // Element is missing in config file, check for default value - assertFalse(provider_.getEnableRevocationChecking()); - } - - public void testGetMaxRevocationAge() - { - // Element is missing in config file, check for default value - assertEquals(0, provider_.getMaxRevocationAge()); - } - - public void testGetServiceOrder() - { - // Element is missing in config file, check for empty array - String[] serviceOrder = provider_.getServiceOrder(); - assertEquals(0, serviceOrder.length); - } - - public void testGetAutoAddCertificates() - { - // Element is missing in config file, check for default value - assertFalse(provider_.getAutoAddCertificates()); - } - - public void testGetUseAuthorityInfoAccess() - { - // Element is missing in config file, check for default value - assertFalse(provider_.getUseAuthorityInfoAccess()); - } -} +///* +// * Copyright 2003 Federal Chancellery Austria +// * MOA-SPSS has been developed in a cooperation between BRZ, the Federal +// * Chancellery Austria - ICT staff unit, 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 test.at.gv.egovernment.moa.spss.server.config; +// +//import iaik.asn1.structures.Name; +//import iaik.pki.pathvalidation.ChainingModes; +//import iaik.utils.RFC2253NameParser; +//import iaik.utils.RFC2253NameParserException; +//import iaik.x509.X509Certificate; +// +//import java.math.BigInteger; +//import java.util.List; +//import java.util.Set; +// +//import junit.framework.TestCase; +// +//import org.w3c.dom.Element; +// +//import at.gv.egovernment.moa.spss.MOAException; +//import at.gv.egovernment.moa.spss.server.config.ConfigurationException; +//import at.gv.egovernment.moa.spss.server.config.ConfigurationProvider; +//import at.gv.egovernment.moa.spss.server.config.TrustProfile; +//import at.gv.egovernment.moaspss.util.Constants; +// +///** +// * @author Gregor Karlinger +// * @version $Id$ +// */ +//public class ConfigurationProviderTest2 extends TestCase +//{ +// private static final String CONFIG_BASE_ = +// "e:/cio/projekte/basismodule/wartung/projekt/spss.server/res/test/resources/config/"; +// +// static at.gv.egovernment.moa.spss.server.config.ConfigurationProvider provider_; +// +// static +// { +// System.setProperty( +// "log4j.configuration", +// "file:/" + CONFIG_BASE_ + "log4j.properties"); +// System.setProperty( +// at.gv.egovernment.moa.spss.server.config.ConfigurationProvider.CONFIG_PROPERTY_NAME, +// CONFIG_BASE_ + "moa.ss.noopts-config.xml"); +// try +// { +// ConfigurationProvider.reload(); +// provider_ = at.gv.egovernment.moa.spss.server.config.ConfigurationProvider.getInstance(); +// } +// catch (ConfigurationException e) +// { +// throw new RuntimeException("Fehler beim Setup des Tests: " + e.getMessage()); +// } +// } +// +// +// /** +// * Constructor for ConfigurationProvider. +// * @param arg0 +// */ +// public ConfigurationProviderTest2() throws MOAException +// { +// super("ConfigurationProvider"); +// } +// +// public void testGetWarnings() +// { +// // 3 Warnings should be collected: C14N not found, DigestMethod not found, ArchiveDuration not found +// assertEquals(3, provider_.getWarnings().size()); +// } +// +// public void testGetDigestMethodAlgorithmName() +// { +// // Element is missing in config file, check if default value is returned +// assertEquals( +// Constants.SHA1_URI, +// provider_.getDigestMethodAlgorithmName()); +// } +// +// public void testGetCanonicalizationAlgorithmName() +// { +// // Element is missing in config file, check if default value is returned +// assertEquals( +// Constants.C14N_URI, +// provider_.getCanonicalizationAlgorithmName()); +// } +// +// public void testGetHardwareCryptoModules() +// { +// // No hardware crypto modules in config file, check for empty list +// List hwcms = provider_.getHardwareCryptoModules(); +// assertEquals(0, hwcms.size()); +// } +// +// public void testGetHardwareKeyModules() +// { +// List hwkms = provider_.getHardwareKeyModules(); +// assertEquals(1, hwkms.size()); +// } +// +// public void testGetSoftwareKeyModules() +// { +// // No software key modules in config file, check for empty list +// List swkms = provider_.getSoftwareKeyModules(); +// assertEquals(0, swkms.size()); +// } +// +// public void testGetChainingMode() throws RFC2253NameParserException +// { +// // Default Chaining Mode not set in configuration, check for default value +// X509Certificate cert = new X509Certificate(); +// RFC2253NameParser parser = new RFC2253NameParser("CN=Unknown"); +// Name name = parser.parse(); +// cert.setIssuerDN(name); +// cert.setSerialNumber(BigInteger.valueOf(0)); +// assertEquals(ChainingModes.PKIX_MODE, provider_.getChainingMode(cert)); +// } +// +// public void testGetDistributionPoints() throws RFC2253NameParserException +// { +// // Element is missing in config file, check if emty list is returned +// X509Certificate cert = new X509Certificate(); +// RFC2253NameParser parser = new RFC2253NameParser("CN=DP1_Issuer"); +// Name name = parser.parse(); +// cert.setIssuerDN(name); +// +// Set dps = provider_.getDistributionPoints(cert); +// assertEquals(0, dps.size()); +// } +// +// public void testGetCRLArchiveDuration() +// { +// // Element is missing in config file, check if default value is returned +// assertEquals(0, provider_.getCRLArchiveDuration()); +// } +// +// public void testGetEnableRevocationArchiving() +// { +// // Element is missing in config file, check if default value is returned +// assertFalse(provider_.getEnableRevocationArchiving()); +// } +// +// public void testGetCertStoreLocation() +// { +// // Element is missing in config file, check if default value is returned +// assertEquals( +// CONFIG_BASE_ + "certstore", +// provider_.getCertStoreLocation().replace('\\', '/')); +// } +// +// public void testGetCreateTransformsInfoProfile() +// { +// // No profile in config file, check for null +// Element ctip1 = provider_.getCreateTransformsInfoProfile("CTIP_1"); +// assertNull(ctip1); +// } +// +// public void testGetCreateSignatureEnvironmentProfile() +// { +// // No profile in config file, check for null +// Element csep = provider_.getCreateSignatureEnvironmentProfile("CSEP_1"); +// assertNull(csep); +// } +// +// public void testGetVerifyTransformsInfoProfile() +// { +// // No profile in config file, check for null +// Element vtip = provider_.getVerifyTransformsInfoProfile("VTIP_1"); +// assertNull(vtip); +// } +// +// public void testGetSupplementProfile() +// { +// // No profile in config file, check for null +// Element sp = provider_.getSupplementProfile("SP_1"); +// assertNull(sp); +// } +// +// public void testGetTrustProfile() +// { +// // No trust profiles config file, check for null +// TrustProfile tp1 = provider_.getTrustProfile("TP1_Id"); +// assertNull(tp1); +// } +// +// public void testGetRevocationArchiveJDBCURL() +// { +// // Element is missing in config file, check for null +// assertNull(provider_.getRevocationArchiveJDBCURL()); +// } +// +// public void testGetRevocationArchiveJDBCDriverClass() +// { +// // Element is missing in config file, check for null +// assertNull(provider_.getRevocationArchiveJDBCDriverClass()); +// } +// +// public void testGetEnableRevocationChecking() +// { +// // Element is missing in config file, check for default value +// assertFalse(provider_.getEnableRevocationChecking()); +// } +// +// public void testGetMaxRevocationAge() +// { +// // Element is missing in config file, check for default value +// assertEquals(0, provider_.getMaxRevocationAge()); +// } +// +// public void testGetServiceOrder() +// { +// // Element is missing in config file, check for empty array +// String[] serviceOrder = provider_.getServiceOrder(); +// assertEquals(0, serviceOrder.length); +// } +// +// public void testGetAutoAddCertificates() +// { +// // Element is missing in config file, check for default value +// assertFalse(provider_.getAutoAddCertificates()); +// } +// +// public void testGetUseAuthorityInfoAccess() +// { +// // Element is missing in config file, check for default value +// assertFalse(provider_.getUseAuthorityInfoAccess()); +// } +//} diff --git a/moaSig/moa-sig-lib/src/test/java/test/at/gv/egovernment/moa/spss/server/config/ConfigurationProviderTest3.java b/moaSig/moa-sig-lib/src/test/java/test/at/gv/egovernment/moa/spss/server/config/ConfigurationProviderTest3.java index 33be7f0..c553cec 100644 --- a/moaSig/moa-sig-lib/src/test/java/test/at/gv/egovernment/moa/spss/server/config/ConfigurationProviderTest3.java +++ b/moaSig/moa-sig-lib/src/test/java/test/at/gv/egovernment/moa/spss/server/config/ConfigurationProviderTest3.java @@ -1,190 +1,190 @@ -/* - * Copyright 2003 Federal Chancellery Austria - * MOA-SPSS has been developed in a cooperation between BRZ, the Federal - * Chancellery Austria - ICT staff unit, 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 test.at.gv.egovernment.moa.spss.server.config; - -import iaik.asn1.structures.Name; -import iaik.utils.RFC2253NameParser; -import iaik.utils.RFC2253NameParserException; -import iaik.x509.X509Certificate; - -import java.util.List; -import java.util.Set; - -import junit.framework.TestCase; - -import org.w3c.dom.Element; - -import at.gv.egovernment.moa.spss.MOAException; -import at.gv.egovernment.moa.spss.server.config.ConfigurationException; -import at.gv.egovernment.moa.spss.server.config.ConfigurationProvider; -import at.gv.egovernment.moaspss.util.Constants; - -/** - * @author Gregor Karlinger - * @version $Id$ - */ -public class ConfigurationProviderTest3 extends TestCase -{ - private static final String CONFIG_BASE_ = - "e:/cio/projekte/basismodule/wartung/projekt/spss.server/res/test/resources/config/"; - - static at.gv.egovernment.moa.spss.server.config.ConfigurationProvider provider_; - - static - { - System.setProperty( - "log4j.configuration", - "file:/" + CONFIG_BASE_ + "log4j.properties"); - System.setProperty( - at.gv.egovernment.moa.spss.server.config.ConfigurationProvider.CONFIG_PROPERTY_NAME, - CONFIG_BASE_ + "moa.sp.noopts-config.xml"); - try - { - ConfigurationProvider.reload(); - provider_ = at.gv.egovernment.moa.spss.server.config.ConfigurationProvider.getInstance(); - } - catch (ConfigurationException e) - { - throw new RuntimeException("Fehler beim Setup des Tests: " + e.getMessage()); - } - } - - /** - * Constructor for ConfigurationProvider. - * @param arg0 - */ - public ConfigurationProviderTest3() throws MOAException - { - super("ConfigurationProvider"); - } - - public void testGetWarnings() - { - // 3 Warnings should be collected: C14N not found, DigestMethod not found, ArchiveDuration not found - assertEquals(3, provider_.getWarnings().size()); - } - - public void testGetDigestMethodAlgorithmName() - { - // Element is missing in config file, check if default value is returned - assertEquals( - Constants.SHA1_URI, - provider_.getDigestMethodAlgorithmName()); - } - - public void testGetCanonicalizationAlgorithmName() - { - // Element is missing in config file, check if default value is returned - assertEquals( - Constants.C14N_URI, - provider_.getCanonicalizationAlgorithmName()); - } - - public void testGetHardwareCryptoModules() - { - // No hardware crypto modules in config file, check for empty list - List hwcms = provider_.getHardwareCryptoModules(); - assertEquals(0, hwcms.size()); - } - - public void testGetHardwareKeyModules() - { - // No hardware key modules in config file, check for empty list - List hwkms = provider_.getHardwareKeyModules(); - assertEquals(0, hwkms.size()); - } - - public void testGetSoftwareKeyModules() - { - // No software key modules in config file, check for empty list - List swkms = provider_.getSoftwareKeyModules(); - assertEquals(0, swkms.size()); - } - - public void testGetDistributionPoints() throws RFC2253NameParserException - { - // No distribution points in config file, check for emtpy set - X509Certificate cert = new X509Certificate(); - RFC2253NameParser parser = new RFC2253NameParser("CN=DP1_Issuer"); - Name name = parser.parse(); - cert.setIssuerDN(name); - - Set dps = provider_.getDistributionPoints(cert); - assertEquals(0, dps.size()); - } - - public void testGetCRLArchiveDuration() - { - // No archive duration in config file, check for default value - assertEquals(0, provider_.getCRLArchiveDuration()); - } - - public void testGetCreateTransformsInfoProfile() - { - // No profile in config file, check for null - Element ctip1 = provider_.getCreateTransformsInfoProfile("CTIP_1"); - assertNull(ctip1); - } - - public void testGetCreateSignatureEnvironmentProfile() - { - // No profile in config file, check for null - Element csep = provider_.getCreateSignatureEnvironmentProfile("CSEP_1"); - assertNull(csep); - } - - public void testGetVerifyTransformsInfoProfile() - { - // No profile in config file, check for null - Element vtip = provider_.getVerifyTransformsInfoProfile("VTIP_1"); - assertNull(vtip); - } - - public void testGetSupplementProfile() - { - // No profile in config file, check for null - Element sp = provider_.getSupplementProfile("SP_1"); - assertNull(sp); - } - - public void testGetRevocationArchiveJDBCURL() - { - // No archive in config file, check for null - assertNull(provider_.getRevocationArchiveJDBCURL()); - } - - public void testGetRevocationArchiveJDBCDriverClass() - { - // No archive in config file, check for null - assertNull(provider_.getRevocationArchiveJDBCDriverClass()); - } - - public void testGetServiceOrder() - { - // Element is missing in config file, check for empty array - String[] serviceOrder = provider_.getServiceOrder(); - assertEquals(0, serviceOrder.length); - } -} +///* +// * Copyright 2003 Federal Chancellery Austria +// * MOA-SPSS has been developed in a cooperation between BRZ, the Federal +// * Chancellery Austria - ICT staff unit, 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 test.at.gv.egovernment.moa.spss.server.config; +// +//import iaik.asn1.structures.Name; +//import iaik.utils.RFC2253NameParser; +//import iaik.utils.RFC2253NameParserException; +//import iaik.x509.X509Certificate; +// +//import java.util.List; +//import java.util.Set; +// +//import junit.framework.TestCase; +// +//import org.w3c.dom.Element; +// +//import at.gv.egovernment.moa.spss.MOAException; +//import at.gv.egovernment.moa.spss.server.config.ConfigurationException; +//import at.gv.egovernment.moa.spss.server.config.ConfigurationProvider; +//import at.gv.egovernment.moaspss.util.Constants; +// +///** +// * @author Gregor Karlinger +// * @version $Id$ +// */ +//public class ConfigurationProviderTest3 extends TestCase +//{ +// private static final String CONFIG_BASE_ = +// "e:/cio/projekte/basismodule/wartung/projekt/spss.server/res/test/resources/config/"; +// +// static at.gv.egovernment.moa.spss.server.config.ConfigurationProvider provider_; +// +// static +// { +// System.setProperty( +// "log4j.configuration", +// "file:/" + CONFIG_BASE_ + "log4j.properties"); +// System.setProperty( +// at.gv.egovernment.moa.spss.server.config.ConfigurationProvider.CONFIG_PROPERTY_NAME, +// CONFIG_BASE_ + "moa.sp.noopts-config.xml"); +// try +// { +// ConfigurationProvider.reload(); +// provider_ = at.gv.egovernment.moa.spss.server.config.ConfigurationProvider.getInstance(); +// } +// catch (ConfigurationException e) +// { +// throw new RuntimeException("Fehler beim Setup des Tests: " + e.getMessage()); +// } +// } +// +// /** +// * Constructor for ConfigurationProvider. +// * @param arg0 +// */ +// public ConfigurationProviderTest3() throws MOAException +// { +// super("ConfigurationProvider"); +// } +// +// public void testGetWarnings() +// { +// // 3 Warnings should be collected: C14N not found, DigestMethod not found, ArchiveDuration not found +// assertEquals(3, provider_.getWarnings().size()); +// } +// +// public void testGetDigestMethodAlgorithmName() +// { +// // Element is missing in config file, check if default value is returned +// assertEquals( +// Constants.SHA1_URI, +// provider_.getDigestMethodAlgorithmName()); +// } +// +// public void testGetCanonicalizationAlgorithmName() +// { +// // Element is missing in config file, check if default value is returned +// assertEquals( +// Constants.C14N_URI, +// provider_.getCanonicalizationAlgorithmName()); +// } +// +// public void testGetHardwareCryptoModules() +// { +// // No hardware crypto modules in config file, check for empty list +// List hwcms = provider_.getHardwareCryptoModules(); +// assertEquals(0, hwcms.size()); +// } +// +// public void testGetHardwareKeyModules() +// { +// // No hardware key modules in config file, check for empty list +// List hwkms = provider_.getHardwareKeyModules(); +// assertEquals(0, hwkms.size()); +// } +// +// public void testGetSoftwareKeyModules() +// { +// // No software key modules in config file, check for empty list +// List swkms = provider_.getSoftwareKeyModules(); +// assertEquals(0, swkms.size()); +// } +// +// public void testGetDistributionPoints() throws RFC2253NameParserException +// { +// // No distribution points in config file, check for emtpy set +// X509Certificate cert = new X509Certificate(); +// RFC2253NameParser parser = new RFC2253NameParser("CN=DP1_Issuer"); +// Name name = parser.parse(); +// cert.setIssuerDN(name); +// +// Set dps = provider_.getDistributionPoints(cert); +// assertEquals(0, dps.size()); +// } +// +// public void testGetCRLArchiveDuration() +// { +// // No archive duration in config file, check for default value +// assertEquals(0, provider_.getCRLArchiveDuration()); +// } +// +// public void testGetCreateTransformsInfoProfile() +// { +// // No profile in config file, check for null +// Element ctip1 = provider_.getCreateTransformsInfoProfile("CTIP_1"); +// assertNull(ctip1); +// } +// +// public void testGetCreateSignatureEnvironmentProfile() +// { +// // No profile in config file, check for null +// Element csep = provider_.getCreateSignatureEnvironmentProfile("CSEP_1"); +// assertNull(csep); +// } +// +// public void testGetVerifyTransformsInfoProfile() +// { +// // No profile in config file, check for null +// Element vtip = provider_.getVerifyTransformsInfoProfile("VTIP_1"); +// assertNull(vtip); +// } +// +// public void testGetSupplementProfile() +// { +// // No profile in config file, check for null +// Element sp = provider_.getSupplementProfile("SP_1"); +// assertNull(sp); +// } +// +// public void testGetRevocationArchiveJDBCURL() +// { +// // No archive in config file, check for null +// assertNull(provider_.getRevocationArchiveJDBCURL()); +// } +// +// public void testGetRevocationArchiveJDBCDriverClass() +// { +// // No archive in config file, check for null +// assertNull(provider_.getRevocationArchiveJDBCDriverClass()); +// } +// +// public void testGetServiceOrder() +// { +// // Element is missing in config file, check for empty array +// String[] serviceOrder = provider_.getServiceOrder(); +// assertEquals(0, serviceOrder.length); +// } +//} diff --git a/moaSig/moa-sig-lib/src/test/java/test/at/gv/egovernment/moa/spss/server/iaik/config/ConfigurationDataImplTest.java b/moaSig/moa-sig-lib/src/test/java/test/at/gv/egovernment/moa/spss/server/iaik/config/ConfigurationDataImplTest.java index 2deb180..e4c8020 100644 --- a/moaSig/moa-sig-lib/src/test/java/test/at/gv/egovernment/moa/spss/server/iaik/config/ConfigurationDataImplTest.java +++ b/moaSig/moa-sig-lib/src/test/java/test/at/gv/egovernment/moa/spss/server/iaik/config/ConfigurationDataImplTest.java @@ -34,6 +34,8 @@ import java.util.Iterator; import java.util.List; import java.util.Set; +import org.junit.Assert; + import test.at.gv.egovernment.moa.spss.SPSSTestCase; import iaik.asn1.structures.DistributionPoint; @@ -114,15 +116,15 @@ public class ConfigurationDataImplTest extends SPSSTestCase { "jdbc:postgresql://10.16.46.108/moa?user=moa&password=moatest"); */ // test cert store configuration - assertEquals(1, certStoreConfig.getParameters().length); - assertEquals( + Assert.assertEquals(1, certStoreConfig.getParameters().length); + Assert.assertEquals( CertStoreTypes.DIRECTORY, certStoreConfig.getParameters()[0].getType()); // test revocation configuration distributionPoints = revocationConfig.getAlternativeDistributionPoints(iaikCert, null, new Date()); - assertEquals(3, distributionPoints.size()); + Assert.assertEquals(3, distributionPoints.size()); found = false; for (iter = distributionPoints.iterator(); iter.hasNext();) { CRLDistributionPoint dp = (CRLDistributionPoint) iter.next(); @@ -133,10 +135,10 @@ public class ConfigurationDataImplTest extends SPSSTestCase { | DistributionPoint.affiliationChanged); } } - assertTrue(found); + Assert.assertTrue(found); // test validation configuration - assertEquals( + Assert.assertEquals( ChainingModes.PKIX_MODE, validationConfig.getChainingMode(iaikCert)); } @@ -159,13 +161,13 @@ public class ConfigurationDataImplTest extends SPSSTestCase { HardwareKeyModuleConfiguration hwKey; SoftwareKeyModuleConfiguration swKey; - assertEquals(7, keyConfigs.size()); + Assert.assertEquals(7, keyConfigs.size()); hwKey = (HardwareKeyModuleConfiguration) keyConfigs.get(0); - assertEquals("cryptoki.dll", hwKey.getModuleName()); - assertEquals("0", hwKey.getSlotID()); - assertEquals("0000", new String(hwKey.getUserPIN())); + Assert.assertEquals("cryptoki.dll", hwKey.getModuleName()); + Assert.assertEquals("0", hwKey.getSlotID()); + Assert.assertEquals("0000", new String(hwKey.getUserPIN())); swKey = (SoftwareKeyModuleConfiguration) keyConfigs.get(1); - assertEquals( + Assert.assertEquals( "buergerkarte", new String(swKey.getKeyStoreAuthenticationData())); } diff --git a/moaSig/moa-sig-lib/src/test/java/test/at/gv/egovernment/moa/spss/server/invoke/AllTests.java b/moaSig/moa-sig-lib/src/test/java/test/at/gv/egovernment/moa/spss/server/invoke/AllTests.java index dc15679..ca519f3 100644 --- a/moaSig/moa-sig-lib/src/test/java/test/at/gv/egovernment/moa/spss/server/invoke/AllTests.java +++ b/moaSig/moa-sig-lib/src/test/java/test/at/gv/egovernment/moa/spss/server/invoke/AllTests.java @@ -37,11 +37,11 @@ public class AllTests { public static Test suite() { TestSuite suite = new TestSuite(); - suite.addTestSuite(DataObjectFactoryTest.class); - suite.addTestSuite(TransformationFactoryTest.class); - suite.addTestSuite(XMLSignatureCreationInvokerTest.class); - suite.addTestSuite(CMSSignatureVerificationInvokerTest.class); - suite.addTestSuite(XMLSignatureVerificationInvokerTest.class); +// suite.addTestSuite(DataObjectFactoryTest.class); +// suite.addTestSuite(TransformationFactoryTest.class); +// suite.addTestSuite(XMLSignatureCreationInvokerTest.class); +// suite.addTestSuite(CMSSignatureVerificationInvokerTest.class); +// suite.addTestSuite(XMLSignatureVerificationInvokerTest.class); return suite; } diff --git a/moaSig/moa-sig-lib/src/test/java/test/at/gv/egovernment/moa/spss/server/invoke/CMSSignatureVerificationInvokerTest.java b/moaSig/moa-sig-lib/src/test/java/test/at/gv/egovernment/moa/spss/server/invoke/CMSSignatureVerificationInvokerTest.java index 4bdf62a..fce00c4 100644 --- a/moaSig/moa-sig-lib/src/test/java/test/at/gv/egovernment/moa/spss/server/invoke/CMSSignatureVerificationInvokerTest.java +++ b/moaSig/moa-sig-lib/src/test/java/test/at/gv/egovernment/moa/spss/server/invoke/CMSSignatureVerificationInvokerTest.java @@ -24,6 +24,7 @@ package test.at.gv.egovernment.moa.spss.server.invoke; +import org.junit.Assert; import org.w3c.dom.Document; import org.w3c.dom.Element; @@ -78,7 +79,7 @@ public class CMSSignatureVerificationInvokerTest extends SPSSTestCase { System.out.println(DOMUtils.serializeNode(result)); } catch (Exception e) { e.printStackTrace(); - fail(); + Assert.fail(); } } diff --git a/moaSig/moa-sig-lib/src/test/java/test/at/gv/egovernment/moa/spss/server/invoke/DataObjectFactoryTest.java b/moaSig/moa-sig-lib/src/test/java/test/at/gv/egovernment/moa/spss/server/invoke/DataObjectFactoryTest.java index c5f461c..f0ccd6d 100644 --- a/moaSig/moa-sig-lib/src/test/java/test/at/gv/egovernment/moa/spss/server/invoke/DataObjectFactoryTest.java +++ b/moaSig/moa-sig-lib/src/test/java/test/at/gv/egovernment/moa/spss/server/invoke/DataObjectFactoryTest.java @@ -27,6 +27,7 @@ package test.at.gv.egovernment.moa.spss.server.invoke; import java.io.InputStream; import java.security.Security; +import org.junit.Assert; import org.w3c.dom.Document; import org.w3c.dom.Element; @@ -52,7 +53,6 @@ import at.gv.egovernment.moaspss.util.Base64Utils; * @version $Id$ */ public class DataObjectFactoryTest extends SPSSTestCase { - private static final String HTTP_BINARY_CONTENT_URL = "http://www.google.com"; private static final String HTTP_XML_CONTENT_URL = "http://www.w3.org/TR/xmldsig-core/xmldsig-core-schema.xsd"; @@ -105,26 +105,26 @@ public class DataObjectFactoryTest extends SPSSTestCase { DataObject dataObject = factory.createFromURI(HTTP_BINARY_CONTENT_URL, false); - assertNotNull(dataObject); - assertTrue(dataObject instanceof ByteStreamDataObjectImpl); - assertNotNull(((BinaryDataObject) dataObject).getInputStream()); + Assert.assertNotNull(dataObject); + Assert.assertTrue(dataObject instanceof ByteStreamDataObjectImpl); + Assert.assertNotNull(((BinaryDataObject) dataObject).getInputStream()); } public void testCreateFromURIWithXmlHttp() throws Exception { DataObject dataObject = factory.createFromURI(HTTP_XML_CONTENT_URL, false); Element element; - assertNotNull(dataObject); - assertTrue(dataObject instanceof XMLDataObjectImpl); + Assert.assertNotNull(dataObject); + Assert.assertTrue(dataObject instanceof XMLDataObjectImpl); element = ((XMLDataObject) dataObject).getElement(); - assertNotNull(element); - assertEquals("schema", element.getTagName()); + Assert.assertNotNull(element); + Assert.assertEquals("schema", element.getTagName()); } public void testCreateFromURIWithMalformedURI() throws Exception { try { factory.createFromURI(MALFORMED_URL, false); - fail(); + Assert.fail(); } catch (MOAException e) { } } @@ -132,7 +132,7 @@ public class DataObjectFactoryTest extends SPSSTestCase { public void testCreateFromURIWithNonExistingHttpURL() throws Exception { try { factory.createFromURI(HTTP_UNKNOWN_HOST_URL, false); - fail(); + Assert.fail(); } catch (MOAException e) { } } @@ -140,14 +140,14 @@ public class DataObjectFactoryTest extends SPSSTestCase { public void testCreateFromURIWithHttps() throws Exception { DataObject dataObject = factory.createFromURI(HTTPS_BINARY_CONTENT_URL, false); - assertNotNull(dataObject); - assertTrue(dataObject instanceof BinaryDataObject); + Assert.assertNotNull(dataObject); + Assert.assertTrue(dataObject instanceof BinaryDataObject); } public void testCreateFromURIWithUntrustedHttps() throws Exception { try { factory.createFromURI(HTTPS_UNTRUSTED_URL, false); - fail(); + Assert.fail(); } catch (MOAException e) { } @@ -156,7 +156,7 @@ public class DataObjectFactoryTest extends SPSSTestCase { public void testCreateFromURIWithFile() throws Exception { try { factory.createFromURI(FILE_BINARY_CONTENT_URL, false); - fail(); + Assert.fail(); } catch (MOAException e) { } } @@ -178,7 +178,7 @@ public class DataObjectFactoryTest extends SPSSTestCase { true, false); - assertTrue(dataObject instanceof XMLNodeListDataObjectImpl); + Assert.assertTrue(dataObject instanceof XMLNodeListDataObjectImpl); } public void testCreateFromContentOptionalRefTypeWithBase64Content() @@ -195,8 +195,8 @@ public class DataObjectFactoryTest extends SPSSTestCase { true, false); - assertNotNull(dataObject); - assertTrue(dataObject instanceof ByteArrayDataObjectImpl); + Assert.assertNotNull(dataObject); + Assert.assertTrue(dataObject instanceof ByteArrayDataObjectImpl); } } diff --git a/moaSig/moa-sig-lib/src/test/java/test/at/gv/egovernment/moa/spss/server/invoke/TransformationFactoryTest.java b/moaSig/moa-sig-lib/src/test/java/test/at/gv/egovernment/moa/spss/server/invoke/TransformationFactoryTest.java index 64c0c8b..51d323b 100644 --- a/moaSig/moa-sig-lib/src/test/java/test/at/gv/egovernment/moa/spss/server/invoke/TransformationFactoryTest.java +++ b/moaSig/moa-sig-lib/src/test/java/test/at/gv/egovernment/moa/spss/server/invoke/TransformationFactoryTest.java @@ -27,6 +27,7 @@ package test.at.gv.egovernment.moa.spss.server.invoke; import java.util.List; import java.util.Map; +import org.junit.Assert; import org.w3c.dom.Document; import at.gv.egovernment.moa.spss.MOAApplicationException; @@ -76,8 +77,8 @@ public class TransformationFactoryTest extends SPSSTestCase { transformParser.parseTransform(transform.getDocumentElement()); Transformation t = factory.createTransformation(tr); - assertTrue(t instanceof Canonicalization); - assertEquals( + Assert.assertTrue(t instanceof Canonicalization); + Assert.assertEquals( "http://www.w3.org/TR/2001/REC-xml-c14n-20010315", t.getAlgorithmURI()); } @@ -89,8 +90,8 @@ public class TransformationFactoryTest extends SPSSTestCase { transformParser.parseTransform(transform.getDocumentElement()); Transformation t = factory.createTransformation(tr); - assertTrue(t instanceof Canonicalization); - assertEquals( + Assert.assertTrue(t instanceof Canonicalization); + Assert.assertEquals( "http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithComments", t.getAlgorithmURI()); } @@ -100,7 +101,7 @@ public class TransformationFactoryTest extends SPSSTestCase { Transform tr = transformParser.parseTransform(transform.getDocumentElement()); Transformation t = factory.createTransformation(tr); - assertTrue(t instanceof Base64Transformation); + Assert.assertTrue(t instanceof Base64Transformation); } public void testCreateEnvelopedSignature() throws Exception { @@ -108,7 +109,7 @@ public class TransformationFactoryTest extends SPSSTestCase { Transform tr = transformParser.parseTransform(transform.getDocumentElement()); Transformation t = factory.createTransformation(tr); - assertTrue(t instanceof EnvelopedSignatureTransformation); + Assert.assertTrue(t instanceof EnvelopedSignatureTransformation); } public void testXPathTransformation() throws Exception { @@ -118,10 +119,10 @@ public class TransformationFactoryTest extends SPSSTestCase { Transformation t = factory.createTransformation(tr); Map nsDecls; - assertTrue(t instanceof XPathTransformation); + Assert.assertTrue(t instanceof XPathTransformation); nsDecls = ((XPathTransformation) t).getNamespaceDeclarations(); - assertEquals(1, nsDecls.size()); - assertEquals(Constants.DSIG_NS_URI, nsDecls.get("dsig")); + Assert.assertEquals(1, nsDecls.size()); + Assert.assertEquals(Constants.DSIG_NS_URI, nsDecls.get("dsig")); } public void testCreateXPath2Transformation() throws Exception { @@ -129,7 +130,7 @@ public class TransformationFactoryTest extends SPSSTestCase { Transform tr = transformParser.parseTransform(transform.getDocumentElement()); Transformation t = factory.createTransformation(tr); - assertTrue(t instanceof XPath2Transformation); + Assert.assertTrue(t instanceof XPath2Transformation); } public void testCreateXSLTTransformation() throws Exception { @@ -138,7 +139,7 @@ public class TransformationFactoryTest extends SPSSTestCase { transformParser.parseTransform(transform.getDocumentElement()); XSLTTransformation t = (XSLTTransformation) factory.createTransformation(tr); - assertNotNull(t.getStylesheetElement()); + Assert.assertNotNull(t.getStylesheetElement()); } public void testCreateWithIllegalAlgorithm() throws Exception { @@ -147,7 +148,7 @@ public class TransformationFactoryTest extends SPSSTestCase { Transform tr = transformParser.parseTransform(transform.getDocumentElement()); factory.createTransformation(tr); - fail(); + Assert.fail(); } catch (MOAApplicationException e) { } } @@ -168,13 +169,13 @@ public class TransformationFactoryTest extends SPSSTestCase { Document canonicalization = parseXml(TESTDATA_BASE + "canonicalization.xml"); - assertTrue(trXslt.equals(trXsltEqu)); - assertFalse(trXslt.equals(trXsltDiff)); - assertFalse(trXsltEqu.equals(trXsltDiff)); - assertEquals(trXslt.hashCode(), trXsltEqu.hashCode()); - assertFalse(trXslt.hashCode() == trXsltDiff.hashCode()); - assertFalse(trXsltEqu.hashCode() == trXsltDiff.hashCode()); - assertFalse(trXslt.equals(canonicalization)); + Assert.assertTrue(trXslt.equals(trXsltEqu)); + Assert.assertFalse(trXslt.equals(trXsltDiff)); + Assert.assertFalse(trXsltEqu.equals(trXsltDiff)); + Assert.assertEquals(trXslt.hashCode(), trXsltEqu.hashCode()); + Assert.assertFalse(trXslt.hashCode() == trXsltDiff.hashCode()); + Assert.assertFalse(trXsltEqu.hashCode() == trXsltDiff.hashCode()); + Assert.assertFalse(trXslt.equals(canonicalization)); } public void testEqualsXPath() throws Exception { @@ -187,10 +188,10 @@ public class TransformationFactoryTest extends SPSSTestCase { tr = transformParser.parseTransform(xpathDiff.getDocumentElement()); Transformation trXpathDiff = factory.createTransformation(tr); - assertTrue(trXpath.equals(trXpathEqu)); - assertEquals(trXpath.hashCode(), trXpathEqu.hashCode()); - assertFalse(trXpath.equals(trXpathDiff)); - assertFalse(trXpath.hashCode() == trXpathDiff.hashCode()); + Assert.assertTrue(trXpath.equals(trXpathEqu)); + Assert.assertEquals(trXpath.hashCode(), trXpathEqu.hashCode()); + Assert.assertFalse(trXpath.equals(trXpathDiff)); + Assert.assertFalse(trXpath.hashCode() == trXpathDiff.hashCode()); } public void testEqualsXPath2() throws Exception { @@ -203,10 +204,10 @@ public class TransformationFactoryTest extends SPSSTestCase { tr = transformParser.parseTransform(xpath2Diff.getDocumentElement()); Transformation trXpath2Diff = factory.createTransformation(tr); - assertTrue(trXpath2.equals(trXpath2Equ)); - assertEquals(trXpath2.hashCode(), trXpath2Equ.hashCode()); - assertFalse(trXpath2.equals(trXpath2Diff)); - assertFalse(trXpath2.hashCode() == trXpath2Diff.hashCode()); + Assert.assertTrue(trXpath2.equals(trXpath2Equ)); + Assert.assertEquals(trXpath2.hashCode(), trXpath2Equ.hashCode()); + Assert.assertFalse(trXpath2.equals(trXpath2Diff)); + Assert.assertFalse(trXpath2.hashCode() == trXpath2Diff.hashCode()); } public void testCreateTransformationList() throws Exception { @@ -214,7 +215,7 @@ public class TransformationFactoryTest extends SPSSTestCase { List trs = transformParser.parseTransforms(transforms.getDocumentElement()); List transformationList = factory.createTransformationList(trs); - assertEquals(3, transformationList.size()); + Assert.assertEquals(3, transformationList.size()); } } diff --git a/moaSig/moa-sig-lib/src/test/java/test/at/gv/egovernment/moa/spss/server/invoke/XMLSignatureCreationInvokerTest.java b/moaSig/moa-sig-lib/src/test/java/test/at/gv/egovernment/moa/spss/server/invoke/XMLSignatureCreationInvokerTest.java index e862e2c..6eb746d 100644 --- a/moaSig/moa-sig-lib/src/test/java/test/at/gv/egovernment/moa/spss/server/invoke/XMLSignatureCreationInvokerTest.java +++ b/moaSig/moa-sig-lib/src/test/java/test/at/gv/egovernment/moa/spss/server/invoke/XMLSignatureCreationInvokerTest.java @@ -26,6 +26,7 @@ package test.at.gv.egovernment.moa.spss.server.invoke; import java.util.Collections; +import org.junit.Assert; import org.w3c.dom.Document; import org.w3c.dom.Element; @@ -78,7 +79,7 @@ public class XMLSignatureCreationInvokerTest extends SPSSTestCase { System.out.println(DOMUtils.serializeNode(result)); } catch (Exception e) { e.printStackTrace(); - fail(); + Assert.fail(); } } diff --git a/moaSig/moa-sig-lib/src/test/java/test/at/gv/egovernment/moa/spss/server/invoke/XMLSignatureVerificationInvokerTest.java b/moaSig/moa-sig-lib/src/test/java/test/at/gv/egovernment/moa/spss/server/invoke/XMLSignatureVerificationInvokerTest.java index 565ea27..56c2f14 100644 --- a/moaSig/moa-sig-lib/src/test/java/test/at/gv/egovernment/moa/spss/server/invoke/XMLSignatureVerificationInvokerTest.java +++ b/moaSig/moa-sig-lib/src/test/java/test/at/gv/egovernment/moa/spss/server/invoke/XMLSignatureVerificationInvokerTest.java @@ -24,6 +24,7 @@ package test.at.gv.egovernment.moa.spss.server.invoke; +import org.junit.Assert; import org.w3c.dom.Document; import test.at.gv.egovernment.moa.spss.SPSSTestCase; @@ -75,7 +76,7 @@ public class XMLSignatureVerificationInvokerTest extends SPSSTestCase { DOMUtils.serializeNode(responseBuilder.build(response))); } catch (Exception e) { e.printStackTrace(); - fail(); + Assert.fail(); } } diff --git a/moaSig/moa-sig-lib/src/test/java/test/at/gv/egovernment/moa/spss/server/tools/CertToolTest.java b/moaSig/moa-sig-lib/src/test/java/test/at/gv/egovernment/moa/spss/server/tools/CertToolTest.java index 9b2fd32..8dde623 100644 --- a/moaSig/moa-sig-lib/src/test/java/test/at/gv/egovernment/moa/spss/server/tools/CertToolTest.java +++ b/moaSig/moa-sig-lib/src/test/java/test/at/gv/egovernment/moa/spss/server/tools/CertToolTest.java @@ -27,6 +27,8 @@ package test.at.gv.egovernment.moa.spss.server.tools; import java.io.ByteArrayOutputStream; import java.io.PrintStream; +import org.junit.Assert; + //import at.gv.egovernment.moa.spss.server.tools.CertTool; import test.at.gv.egovernment.moa.MOATestCase; @@ -67,7 +69,7 @@ public class CertToolTest extends MOATestCase { //certTool.printCertInfo(TESTDATA_ROOT + "security/server.cer", ps); result = new String(bos.toByteArray()); System.out.println(result); - assertEquals(EXPECTED_RESULT, result); + Assert.assertEquals(EXPECTED_RESULT, result); } } diff --git a/moaSig/moa-sig/build.gradle b/moaSig/moa-sig/build.gradle index 016eebd..3ac9f32 100644 --- a/moaSig/moa-sig/build.gradle +++ b/moaSig/moa-sig/build.gradle @@ -1,30 +1,20 @@ apply plugin: 'war' apply plugin: 'eclipse' apply plugin: 'eclipse-wtp' -apply from: 'https://raw.github.com/akhikhl/gretty/master/pluginScripts/gretty.plugin' - -repositories { - maven { - url "http://joinup.ec.europa.eu/site/pdf-as/maven/" - } -} +apply plugin: 'distribution' +apply plugin: 'maven-publish' dependencies { - compile project(':moa-sig-lib') - compile project(':moa-asic') - compile fileTree(dir: 'libs', include: '*.jar') - providedCompile 'javax.servlet:servlet-api:2.4' - compile 'commons-discovery:commons-discovery:0.5' - compile 'org.slf4j:slf4j-log4j12:1.7.12' - - //compile 'org.apache.cxf:cxf-rt-frontend-jaxws:3.1.4' - //compile 'org.apache.cxf:cxf-rt-transports-http:3.1.4' - //compile 'org.aspectj:aspectjrt:1.8.7' - //compile 'org.aspectj:aspectjweaver:1.8.7' + implementation project(':common') + implementation project(':moa-sig-lib') + implementation project(':moa-asic') + implementation fileTree(dir: 'libs', include: '*.jar') + compileOnly 'javax.servlet:servlet-api:2.4' - //compile 'at.gv.egiz.pdfas:pdf-as-lib:4.0.7' - //compile 'at.gv.egiz.pdfas:pdf-as-pdfbox:4.0.7' - //compile 'at.gv.egiz.pdfas:sigs-pades:4.0.7' + implementation 'commons-discovery:commons-discovery:0.5' + implementation 'org.slf4j:slf4j-log4j12:1.7.30' + implementation group: 'javax.jws', name: 'javax.jws-api', version: '1.1' + } sourceSets { @@ -36,7 +26,8 @@ sourceSets { } war { - baseName = "moa-spss" + archiveBaseName = "moa-spss" + duplicatesStrategy = DuplicatesStrategy.EXCLUDE } configurations { @@ -45,58 +36,64 @@ configurations { dependencies { jaxb group: 'com.sun.xml.bind', name: 'jaxb-xjc', version: '2.2.4-1' - //compile 'ch.qos.logback:logback-classic:1.1.5' - //compile 'ch.qos.logback:logback-core:1.1.5' - //def tomcatVersion = '7.0.59' - //tomcat "org.apache.tomcat.embed:tomcat-embed-core:${tomcatVersion}", - // "org.apache.tomcat.embed:tomcat-embed-logging-juli:${tomcatVersion}", - // "org.apache.tomcat.embed:tomcat-embed-jasper:${tomcatVersion}" -} - -gretty { - jvmArgs = [ - '-Dmoa.spss.server.configuration=/home/afitzek/server/moa-spss/apache-tomcat-8.0.0-RC3/conf/moa-spss/spss.config.xml', - '-Dlog4j.configuration=/home/afitzek/server/moa-spss/apache-tomcat-8.0.0-RC3/conf/moa-spss/log4j.properties' - ] - loggingLevel = "TRACE" - servletContainer = 'tomcat8' + implementation group: 'ch.qos.logback', name: 'logback-core', version: '1.2.3' + implementation group: 'ch.qos.logback', name: 'logback-classic', version: '1.2.3' } task jaxb () { // output directory def jaxbTargetDir = file( "${projectDir}/src/generated/java" ) - //jaxbTargetDirMoaSig = file( jaxbTargetDir.path ) // perform actions doLast { jaxbTargetDir.mkdirs() ant.taskdef(name: 'xjc', classname: 'com.sun.tools.xjc.XJCTask', classpath: configurations.jaxb.asPath) - //ant.jaxbTargetDirMoaSig = jaxbTargetDir // MOA Sig ant.xjc( destdir: jaxbTargetDir.path, package: 'at.gv.egiz.moasig', - schema: 'src/main/resources/resources/schemas/MOA-SPSS-2.0.0.xsd' + schema: 'src/main/resources/resources/schemas/MOA-SPSS-3.1.2.xsd' ) } } -task releases(type: Copy) { - from war.outputs - into rootDir.toString() + "/releases/" + version +distributions { + main { + distributionBaseName = "moa-spss" + contents { + into('/') { // Copy the following jars to the lib/ directory in the distribution archive + from war.outputs + from "$rootDir/../release-infos/readme_" + "$version" + ".txt" + dirMode = 0755 + fileMode = 0644 + } + into('/handbook') { + from rootDir.toString() + "/../release-infos/handbook/" + } + into('/endorsed_libs') { + from findJar('serializer') + from findJar('xalan') + from findJar('xercesImpl') + from findJar('xml-apis') + } + into('/ext_libs') { + from findJar('iaik_jce_full') + from rootDir.toString() + "/../release-infos/ext_libs/" + + } + } + } } -//compileJava.dependsOn jaxb -// context where tomcat is deployed, by defautl localhost:8080/ - -//tomcat { -// stopKey = 'x' - //daemon = true -//} -//System.setProperty('moa.spss.server.configuration', '/home/afitzek/server/moa-spss/apache-tomcat-8.0.0-RC3/conf/moa-spss/spss.config.xml') -// System.setProperty('log4j.configuration', '/home/afitzek/server/moa-spss/apache-tomcat-8.0.0-RC3/conf/moa-spss/log4j.properties') +def findJar(prefix) { + configurations.runtimeClasspath.filter { it.name.startsWith(prefix) } + +} -//tomcatRun.contextPath = '/' -//tomcatRunWar.contextPath = '/' +task releases(type: Copy) { + from distZip.outputs + from distTar.outputs + into rootDir.toString() + "/releases/" + version +} diff --git a/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/initializer/PDFASInitializer.java b/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/initializer/PDFASInitializer.java index fb84293..dfc7bff 100644 --- a/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/initializer/PDFASInitializer.java +++ b/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/initializer/PDFASInitializer.java @@ -5,24 +5,23 @@ import org.slf4j.LoggerFactory; import at.gv.egovernment.moa.spss.server.config.ConfigurationProvider; import at.gv.egovernment.moa.spss.server.init.ExternalInitializer; -import at.gv.egovernment.moa.spss.server.invoke.PDFASInvoker; public class PDFASInitializer implements ExternalInitializer { - private static final Logger logger = LoggerFactory.getLogger(PDFASInitializer.class); - - @Override - public void initialize(ConfigurationProvider configurationProvider) { - logger.warn("Log4j Config: {}", System.getProperty("log4j.configuration")); - - /*String pdfAsConfiguration = configurationProvider.getPDFASConfiguration(); - - logger.info("Running PDFASInitializer with pdf as cfg: {}", pdfAsConfiguration); - - if(pdfAsConfiguration != null) { - PDFASInvoker - .init(pdfAsConfiguration); - }*/ - } + private static final Logger logger = LoggerFactory.getLogger(PDFASInitializer.class); + + @Override + public void initialize(ConfigurationProvider configurationProvider) { + logger.warn("Log4j Config: {}", System.getProperty("log4j.configuration")); + + /* + * String pdfAsConfiguration = configurationProvider.getPDFASConfiguration(); + * + * logger.info("Running PDFASInitializer with pdf as cfg: {}", + * pdfAsConfiguration); + * + * if(pdfAsConfiguration != null) { PDFASInvoker .init(pdfAsConfiguration); } + */ + } } diff --git a/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/invoke/PDFASInvoker.java b/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/invoke/PDFASInvoker.java index 1f7522b..94c2239 100644 --- a/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/invoke/PDFASInvoker.java +++ b/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/invoke/PDFASInvoker.java @@ -1,118 +1,82 @@ package at.gv.egovernment.moa.spss.server.invoke; -import java.io.ByteArrayOutputStream; -import java.io.File; -import java.util.Iterator; -import java.util.List; - -import org.apache.commons.io.IOUtils; - -import at.gv.egovernment.moa.spss.MOAApplicationException; -import at.gv.egovernment.moa.spss.MOAException; -import at.gv.egovernment.moa.spss.server.logging.TransactionId; -import at.gv.egovernment.moa.spss.server.pdfas.InternalMoaConnector; -import at.gv.egovernment.moa.spss.server.pdfas.InternalMoaVerifier; -import at.gv.egovernment.moa.spss.server.xmlbind.CreatePDFRequest; -import at.gv.egovernment.moa.spss.server.xmlbind.CreatePDFRespone; -import at.gv.egovernment.moa.spss.server.xmlbind.PDFSignatureInfo; -import at.gv.egovernment.moa.spss.server.xmlbind.SignedPDFInfo; -import at.gv.egovernment.moa.spss.server.xmlbind.VerifyPDFRequest; -import at.gv.egovernment.moa.spss.server.xmlbind.VerifyPDFResponse; -import at.gv.egovernment.moaspss.logging.Logger; - public class PDFASInvoker { - /* - private static PDFASInvoker instance = null; - - private PdfAs pdfAS; - - private PDFASInvoker(File configuration) { - pdfAS = PdfAsFactory.createPdfAs(configuration); - } - - public synchronized static void init(String pdfAsConfiguration) { - instance = new PDFASInvoker(new File(pdfAsConfiguration)); - } - - public synchronized static PDFASInvoker getInstance() { - if (instance == null) { - throw new RuntimeException("PDF PDFASInvoker not initialized"); - } - return instance; - } - - public VerifyPDFResponse verifyPDFSignature(VerifyPDFRequest verifyPDFRequest) throws MOAException { - Configuration pdfConfiguration = this.pdfAS.getConfiguration(); - - VerifyPDFResponse verifyPDFResponse = new VerifyPDFResponse(); - - VerifyParameter verifyParameter = PdfAsFactory.createVerifyParameter(pdfConfiguration, new ByteArrayDataSource( - verifyPDFRequest.getSignedPDF())); - - pdfConfiguration.setValue(InternalMoaVerifier.MOA_TRUSTPROFILE, verifyPDFRequest.getTrustProfileID()); - - try { - List<VerifyResult> verifyResults = this.pdfAS.verify(verifyParameter); - verifyPDFResponse.setVerificationResults(verifyResults); - } catch (Throwable e) { - Logger.warn("Failed to generate signed PDF document", e); - throw new MOAApplicationException("Failed to generate signed PDF document", null, e); - } - - return verifyPDFResponse; - } - - public CreatePDFRespone createPDFSignature(CreatePDFRequest createPDFRequest, String transactionId) { - Configuration pdfConfiguration = this.pdfAS.getConfiguration(); - - String keyIdentifier = createPDFRequest.getKeyIdentifier(); - - Iterator<PDFSignatureInfo> signatureInfoIterator = createPDFRequest.getSignatureInfoList().iterator(); - - CreatePDFRespone createPDFRespone = new CreatePDFRespone(); - - while (signatureInfoIterator.hasNext()) { - PDFSignatureInfo pdfSignatureInfo = signatureInfoIterator.next(); - SignedPDFInfo signedPDFInfo = new SignedPDFInfo(pdfSignatureInfo.getSignatureID()); - try { - ByteArrayOutputStream baos = new ByteArrayOutputStream(); - SignParameter signParameter = PdfAsFactory.createSignParameter(pdfConfiguration, - new ByteArrayDataSource(pdfSignatureInfo.getPdfDocument()), baos); - - signParameter.setSignaturePosition(pdfSignatureInfo.getSignaturePosition()); - signParameter.setSignatureProfileId(pdfSignatureInfo.getSignatureProfile()); - - IPlainSigner signer = new PAdESSigner( - new InternalMoaConnector(keyIdentifier, new TransactionId(transactionId), null)); - - signParameter.setPlainSigner(signer); - - try { - this.pdfAS.sign(signParameter); - signedPDFInfo.setPdfDocument(baos.toByteArray()); - signedPDFInfo.setResponseType(SignedPDFInfo.SUCCESS_SIGNATURE); - } catch (Throwable e) { - signedPDFInfo.setResponseType(SignedPDFInfo.ERROR_RESPONSE); - - if (e instanceof PDFASError) { - PDFASError pdfAsError = (PDFASError) e; - Logger.warn("Failed to generate signed PDF document", e); - signedPDFInfo.setErrorCode((int) pdfAsError.getCode()); - signedPDFInfo.setErrorInfo(pdfAsError.getInfo()); - } else { - Logger.error("Unknown exception!: ", e); - signedPDFInfo.setErrorCode(9999); - signedPDFInfo.setErrorInfo("Nicht klassifizierter Fehler"); - } - } finally { - IOUtils.closeQuietly(baos); - } - - } finally { - createPDFRespone.getSignatureInfoList().add(signedPDFInfo); - } - - } - return createPDFRespone; - }*/ + /* + * private static PDFASInvoker instance = null; + * + * private PdfAs pdfAS; + * + * private PDFASInvoker(File configuration) { pdfAS = + * PdfAsFactory.createPdfAs(configuration); } + * + * public synchronized static void init(String pdfAsConfiguration) { instance = + * new PDFASInvoker(new File(pdfAsConfiguration)); } + * + * public synchronized static PDFASInvoker getInstance() { if (instance == null) + * { throw new RuntimeException("PDF PDFASInvoker not initialized"); } return + * instance; } + * + * public VerifyPDFResponse verifyPDFSignature(VerifyPDFRequest + * verifyPDFRequest) throws MOAException { Configuration pdfConfiguration = + * this.pdfAS.getConfiguration(); + * + * VerifyPDFResponse verifyPDFResponse = new VerifyPDFResponse(); + * + * VerifyParameter verifyParameter = + * PdfAsFactory.createVerifyParameter(pdfConfiguration, new ByteArrayDataSource( + * verifyPDFRequest.getSignedPDF())); + * + * pdfConfiguration.setValue(InternalMoaVerifier.MOA_TRUSTPROFILE, + * verifyPDFRequest.getTrustProfileID()); + * + * try { List<VerifyResult> verifyResults = this.pdfAS.verify(verifyParameter); + * verifyPDFResponse.setVerificationResults(verifyResults); } catch (Throwable + * e) { Logger.warn("Failed to generate signed PDF document", e); throw new + * MOAApplicationException("Failed to generate signed PDF document", null, e); } + * + * return verifyPDFResponse; } + * + * public CreatePDFRespone createPDFSignature(CreatePDFRequest createPDFRequest, + * String transactionId) { Configuration pdfConfiguration = + * this.pdfAS.getConfiguration(); + * + * String keyIdentifier = createPDFRequest.getKeyIdentifier(); + * + * Iterator<PDFSignatureInfo> signatureInfoIterator = + * createPDFRequest.getSignatureInfoList().iterator(); + * + * CreatePDFRespone createPDFRespone = new CreatePDFRespone(); + * + * while (signatureInfoIterator.hasNext()) { PDFSignatureInfo pdfSignatureInfo = + * signatureInfoIterator.next(); SignedPDFInfo signedPDFInfo = new + * SignedPDFInfo(pdfSignatureInfo.getSignatureID()); try { ByteArrayOutputStream + * baos = new ByteArrayOutputStream(); SignParameter signParameter = + * PdfAsFactory.createSignParameter(pdfConfiguration, new + * ByteArrayDataSource(pdfSignatureInfo.getPdfDocument()), baos); + * + * signParameter.setSignaturePosition(pdfSignatureInfo.getSignaturePosition()); + * signParameter.setSignatureProfileId(pdfSignatureInfo.getSignatureProfile()); + * + * IPlainSigner signer = new PAdESSigner( new + * InternalMoaConnector(keyIdentifier, new TransactionId(transactionId), null)); + * + * signParameter.setPlainSigner(signer); + * + * try { this.pdfAS.sign(signParameter); + * signedPDFInfo.setPdfDocument(baos.toByteArray()); + * signedPDFInfo.setResponseType(SignedPDFInfo.SUCCESS_SIGNATURE); } catch + * (Throwable e) { signedPDFInfo.setResponseType(SignedPDFInfo.ERROR_RESPONSE); + * + * if (e instanceof PDFASError) { PDFASError pdfAsError = (PDFASError) e; + * Logger.warn("Failed to generate signed PDF document", e); + * signedPDFInfo.setErrorCode((int) pdfAsError.getCode()); + * signedPDFInfo.setErrorInfo(pdfAsError.getInfo()); } else { + * Logger.error("Unknown exception!: ", e); signedPDFInfo.setErrorCode(9999); + * signedPDFInfo.setErrorInfo("Nicht klassifizierter Fehler"); } } finally { + * IOUtils.closeQuietly(baos); } + * + * } finally { createPDFRespone.getSignatureInfoList().add(signedPDFInfo); } + * + * } return createPDFRespone; } + */ } diff --git a/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/pdfas/ExtendedVerifyResult.java b/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/pdfas/ExtendedVerifyResult.java index 705e124..2dbb239 100644 --- a/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/pdfas/ExtendedVerifyResult.java +++ b/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/pdfas/ExtendedVerifyResult.java @@ -1,61 +1,45 @@ package at.gv.egovernment.moa.spss.server.pdfas; + /* import at.gv.egiz.pdfas.lib.api.verify.VerifyResult; import at.gv.egiz.pdfas.lib.impl.verify.VerifyResultImpl; */ -public class ExtendedVerifyResult { /*extends VerifyResultImpl implements VerifyResult { - private String qcSource; - private boolean publicAuthority; - private String publicAuthorityID; - private boolean SSCD; - private String sscdSource; - private String issureCountryCode; - - public synchronized String getIssureCountryCode() { - return issureCountryCode; - } - - public synchronized void setIssureCountryCode(String issureCountryCode) { - this.issureCountryCode = issureCountryCode; - } - - public synchronized String getQcSource() { - return qcSource; - } - - public synchronized void setQcSource(String qcSource) { - this.qcSource = qcSource; - } - - public synchronized boolean isPublicAuthority() { - return publicAuthority; - } - - public synchronized void setPublicAuthority(boolean publicAuthority) { - this.publicAuthority = publicAuthority; - } - - public synchronized String getPublicAuthorityID() { - return publicAuthorityID; - } - - public synchronized void setPublicAuthorityID(String publicAuthorityID) { - this.publicAuthorityID = publicAuthorityID; - } - - public synchronized boolean isSSCD() { - return SSCD; - } - - public synchronized void setSSCD(boolean sSCD) { - SSCD = sSCD; - } - - public synchronized String getSscdSource() { - return sscdSource; - } - - public synchronized void setSscdSource(String sscdSource) { - this.sscdSource = sscdSource; - }*/ +public class ExtendedVerifyResult { /* + * extends VerifyResultImpl implements VerifyResult { private String + * qcSource; private boolean publicAuthority; private String + * publicAuthorityID; private boolean SSCD; private String sscdSource; + * private String issureCountryCode; + * + * public synchronized String getIssureCountryCode() { return + * issureCountryCode; } + * + * public synchronized void setIssureCountryCode(String issureCountryCode) + * { this.issureCountryCode = issureCountryCode; } + * + * public synchronized String getQcSource() { return qcSource; } + * + * public synchronized void setQcSource(String qcSource) { this.qcSource = + * qcSource; } + * + * public synchronized boolean isPublicAuthority() { return + * publicAuthority; } + * + * public synchronized void setPublicAuthority(boolean publicAuthority) { + * this.publicAuthority = publicAuthority; } + * + * public synchronized String getPublicAuthorityID() { return + * publicAuthorityID; } + * + * public synchronized void setPublicAuthorityID(String publicAuthorityID) + * { this.publicAuthorityID = publicAuthorityID; } + * + * public synchronized boolean isSSCD() { return SSCD; } + * + * public synchronized void setSSCD(boolean sSCD) { SSCD = sSCD; } + * + * public synchronized String getSscdSource() { return sscdSource; } + * + * public synchronized void setSscdSource(String sscdSource) { + * this.sscdSource = sscdSource; } + */ } diff --git a/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/pdfas/InternalMoaConnector.java b/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/pdfas/InternalMoaConnector.java index 0344346..efcd2ce 100644 --- a/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/pdfas/InternalMoaConnector.java +++ b/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/pdfas/InternalMoaConnector.java @@ -1,227 +1,170 @@ package at.gv.egovernment.moa.spss.server.pdfas; -import java.io.ByteArrayInputStream; -import java.io.IOException; -import java.math.BigInteger; -import java.security.Principal; -import java.security.cert.Certificate; -import java.security.cert.CertificateEncodingException; -import java.security.cert.CertificateException; -import java.util.Collections; -import java.util.HashSet; -import java.util.Iterator; -import java.util.List; -import java.util.Set; - -import at.gv.egovernment.moa.spss.MOAException; -import at.gv.egovernment.moa.spss.api.cmssign.CMSSignatureResponse; -import at.gv.egovernment.moa.spss.api.cmssign.CreateCMSSignatureResponse; -import at.gv.egovernment.moa.spss.api.cmssign.CreateCMSSignatureResponseElement; -import at.gv.egovernment.moa.spss.api.impl.CMSContentExplicitImpl; -import at.gv.egovernment.moa.spss.api.impl.CMSDataObjectImpl; -import at.gv.egovernment.moa.spss.api.impl.CreateCMSSignatureRequestImpl; -import at.gv.egovernment.moa.spss.api.impl.DataObjectInfoCMSImpl; -import at.gv.egovernment.moa.spss.api.impl.MetaInfoImpl; -import at.gv.egovernment.moa.spss.api.impl.SingleSignatureInfoCMSImpl; -import at.gv.egovernment.moa.spss.api.xmlsign.ErrorResponse; -import at.gv.egovernment.moa.spss.server.config.ConfigurationException; -import at.gv.egovernment.moa.spss.server.config.ConfigurationProvider; -import at.gv.egovernment.moa.spss.server.config.KeyGroupEntry; -import at.gv.egovernment.moa.spss.server.invoke.CMSSignatureCreationInvoker; -import at.gv.egovernment.moaspss.logging.Logger; -import at.gv.egovernment.moaspss.util.Base64Utils; -import iaik.logging.TransactionId; -import iaik.server.modules.keys.KeyEntryID; -import iaik.server.modules.keys.KeyModule; -import iaik.server.modules.keys.KeyModuleFactory; -import iaik.server.modules.keys.UnknownKeyException; -import iaik.x509.X509Certificate; - -public class InternalMoaConnector { /*implements ISignatureConnector { - - private String keyIdentifier; - private X509Certificate clientCert; - private TransactionId transactionId; - - public InternalMoaConnector(String keyIdentifier, TransactionId transactionId, X509Certificate clientCert) { - this.keyIdentifier = keyIdentifier; - this.transactionId = transactionId; - this.clientCert = clientCert; - } - @SuppressWarnings({ "rawtypes", "unchecked" }) - private Set buildKeySet(String keyGroupID, KeyModule module) throws ConfigurationException { - ConfigurationProvider config = ConfigurationProvider.getInstance(); - - Set keyGroupEntries; - - // get the KeyGroup entries from the configuration - if (clientCert != null) { - Principal issuer = clientCert.getIssuerDN(); - BigInteger serialNumber = clientCert.getSerialNumber(); - - keyGroupEntries = config.getKeyGroupEntries(issuer, serialNumber, keyGroupID); - } else { - keyGroupEntries = config.getKeyGroupEntries(null, null, keyGroupID); - } - - // map the KeyGroup entries to a set of KeyEntryIDs - if (keyGroupEntries == null) { - return Collections.EMPTY_SET; - } else if (keyGroupEntries.size() == 0) { - return Collections.EMPTY_SET; - } else { - - Set keyEntryIDs = module.getPrivateKeyEntryIDs(); - Set keySet = new HashSet(); - Iterator iter; - - // filter out the keys that do not exist in the IAIK configuration - // by walking through the key entries and checking if the exist in - // the - // keyGroupEntries - for (iter = keyEntryIDs.iterator(); iter.hasNext();) { - KeyEntryID entryID = (KeyEntryID) iter.next(); - KeyGroupEntry entry = new KeyGroupEntry(entryID.getModuleID(), entryID.getCertificateIssuer(), - entryID.getCertificateSerialNumber()); - if (keyGroupEntries.contains(entry)) { - keySet.add(entryID); - } - } - return keySet; - } - } - - @Override - @SuppressWarnings("rawtypes") - public X509Certificate getCertificate(SignParameter parameter) throws PdfAsException { - KeyModule module = KeyModuleFactory.getInstance(this.transactionId); - - Set keySet = null; - try { - keySet = buildKeySet(this.keyIdentifier, module); - } catch (ConfigurationException e2) { - Logger.warn("MOA not correctly configured!", e2); - throw new PdfAsException("MOA not correctly configured!"); - } - - if (keySet == null || keySet.isEmpty()) { - Logger.warn("No keys available for Key Identifier " + this.keyIdentifier + " and given authentication."); - throw new PdfAsException("Invalid Key Identifier: " + this.keyIdentifier); - } - - if (keySet.size() != 1) { - Logger.warn( - "Too many keys available for Key Identifier " + this.keyIdentifier + " and given authentication."); - throw new PdfAsException("Too many keys available for Key Identifier: " + this.keyIdentifier); - } - - Iterator iter; - - // filter out the keys that do not exist in the IAIK configuration - // by walking through the key entries and checking if the exist in - // the - // keyGroupEntries - for (iter = keySet.iterator(); iter.hasNext();) { - KeyEntryID entryID = (KeyEntryID) iter.next(); - - List certChain = null; - try { - certChain = module.getPrivateKeyEntry(entryID).getCertificateChain(); - } catch (UnknownKeyException e1) { - Logger.warn("Unknown KeyIdentifier found!", e1); - throw new PdfAsException("Unknown Key Identifier: " + this.keyIdentifier); - } - - if (certChain != null && !certChain.isEmpty()) { - Logger.trace("Returning Certificate!"); - Certificate keyCert = ((Certificate) certChain.get(0)); - if (keyCert instanceof X509Certificate) { - return (X509Certificate) keyCert; - } else { - try { - return new X509Certificate(keyCert.getEncoded()); - } catch (CertificateEncodingException e) { - Logger.warn("Invalid certificate found!", e); - throw new PdfAsException("Invalid certificate for Key Identifier: " + this.keyIdentifier); - } catch (CertificateException e) { - Logger.warn("Invalid certificate found!", e); - throw new PdfAsException("Invalid certificate for Key Identifier: " + this.keyIdentifier); - } - } - } - - break; - } - - // No Certificate could be found! - Logger.warn("Failed to find keys available for Key Identifier " + this.keyIdentifier - + " and given authentication."); - throw new PdfAsException("Failed to find keys available for Key Identifier: " + this.keyIdentifier); - } - - @SuppressWarnings("unchecked") - @Override - public byte[] sign(byte[] input, int[] byteRange, SignParameter parameter, RequestedSignature requestedSignature) - throws PdfAsException { - - CreateCMSSignatureRequestImpl createCMSSignatureRequest = new CreateCMSSignatureRequestImpl(); - createCMSSignatureRequest.setKeyIdentifier(this.keyIdentifier); - SingleSignatureInfoCMSImpl singleSignatureInfos = new SingleSignatureInfoCMSImpl(); - - DataObjectInfoCMSImpl dataObjectInfoCMSImpl = new DataObjectInfoCMSImpl(); - - dataObjectInfoCMSImpl.setStructure(DataObjectInfoCMSImpl.STRUCTURE_DETACHED); - - CMSDataObjectImpl cmsDataObjectImpl = new CMSDataObjectImpl(); - - CMSContentExplicitImpl cmsContent = new CMSContentExplicitImpl(); - cmsContent.setBinaryContent(new ByteArrayInputStream(input)); - - cmsDataObjectImpl.setContent(cmsContent); - - MetaInfoImpl metaInfoImpl = new MetaInfoImpl(); - - metaInfoImpl.setMimeType("application/pdf"); - - cmsDataObjectImpl.setMetaInfo(metaInfoImpl); - - dataObjectInfoCMSImpl.setDataObject(cmsDataObjectImpl); - - singleSignatureInfos.setDataObjectInfo(dataObjectInfoCMSImpl); - - createCMSSignatureRequest.getSingleSignatureInfos().add(singleSignatureInfos); - - try { - CreateCMSSignatureResponse createCMSSignatureResponse = CMSSignatureCreationInvoker.getInstance() - .createCMSSignature(createCMSSignatureRequest, Collections.EMPTY_SET); - - if (createCMSSignatureResponse.getResponseElements().isEmpty()) { - Logger.error("MOA CMS Signature response is empty!"); - throw new PdfAsException("MOA CMS Signature response is empty"); - } - - CreateCMSSignatureResponseElement createCMSSignatureResponseElement = (CreateCMSSignatureResponseElement) createCMSSignatureResponse - .getResponseElements().get(0); - - if(createCMSSignatureResponseElement.getResponseType() - == CreateCMSSignatureResponseElement.ERROR_RESPONSE) { - ErrorResponse errorResponse = (ErrorResponse) createCMSSignatureResponseElement; - Logger.error("Failed to create signature " + errorResponse.getErrorCode() + " " + errorResponse.getInfo()); - throw new PdfAsErrorCarrier(new PDFASError(errorResponse.getErrorCode(), errorResponse.getInfo())); - } else if(createCMSSignatureResponseElement.getResponseType() - == CreateCMSSignatureResponseElement.CMS_SIGNATURE ) { - CMSSignatureResponse cmsSignatureResponse = (CMSSignatureResponse) createCMSSignatureResponseElement; - return Base64Utils.decode(cmsSignatureResponse.getCMSSignature(), true); - } - } catch (MOAException e) { - Logger.error("Failed to create signature!", e); - throw new PdfAsException("Failed to create signature!", e); - } catch (IOException e) { - Logger.error("Failed to create signature!", e); - throw new PdfAsException("Failed to create signature!", e); - } - - return null; - } - */ +public class InternalMoaConnector { /* + * implements ISignatureConnector { + * + * private String keyIdentifier; private X509Certificate clientCert; + * private TransactionId transactionId; + * + * public InternalMoaConnector(String keyIdentifier, TransactionId + * transactionId, X509Certificate clientCert) { this.keyIdentifier = + * keyIdentifier; this.transactionId = transactionId; this.clientCert = + * clientCert; } + * + * @SuppressWarnings({ "rawtypes", "unchecked" }) private Set + * buildKeySet(String keyGroupID, KeyModule module) throws + * ConfigurationException { ConfigurationProvider config = + * ConfigurationProvider.getInstance(); + * + * Set keyGroupEntries; + * + * // get the KeyGroup entries from the configuration if (clientCert != + * null) { Principal issuer = clientCert.getIssuerDN(); BigInteger + * serialNumber = clientCert.getSerialNumber(); + * + * keyGroupEntries = config.getKeyGroupEntries(issuer, serialNumber, + * keyGroupID); } else { keyGroupEntries = config.getKeyGroupEntries(null, + * null, keyGroupID); } + * + * // map the KeyGroup entries to a set of KeyEntryIDs if (keyGroupEntries + * == null) { return Collections.EMPTY_SET; } else if + * (keyGroupEntries.size() == 0) { return Collections.EMPTY_SET; } else { + * + * Set keyEntryIDs = module.getPrivateKeyEntryIDs(); Set keySet = new + * HashSet(); Iterator iter; + * + * // filter out the keys that do not exist in the IAIK configuration // + * by walking through the key entries and checking if the exist in // the + * // keyGroupEntries for (iter = keyEntryIDs.iterator(); iter.hasNext();) + * { KeyEntryID entryID = (KeyEntryID) iter.next(); KeyGroupEntry entry = + * new KeyGroupEntry(entryID.getModuleID(), + * entryID.getCertificateIssuer(), entryID.getCertificateSerialNumber()); + * if (keyGroupEntries.contains(entry)) { keySet.add(entryID); } } return + * keySet; } } + * + * @Override + * + * @SuppressWarnings("rawtypes") public X509Certificate + * getCertificate(SignParameter parameter) throws PdfAsException { + * KeyModule module = KeyModuleFactory.getInstance(this.transactionId); + * + * Set keySet = null; try { keySet = buildKeySet(this.keyIdentifier, + * module); } catch (ConfigurationException e2) { + * Logger.warn("MOA not correctly configured!", e2); throw new + * PdfAsException("MOA not correctly configured!"); } + * + * if (keySet == null || keySet.isEmpty()) { + * Logger.warn("No keys available for Key Identifier " + + * this.keyIdentifier + " and given authentication."); throw new + * PdfAsException("Invalid Key Identifier: " + this.keyIdentifier); } + * + * if (keySet.size() != 1) { Logger.warn( + * "Too many keys available for Key Identifier " + this.keyIdentifier + + * " and given authentication."); throw new + * PdfAsException("Too many keys available for Key Identifier: " + + * this.keyIdentifier); } + * + * Iterator iter; + * + * // filter out the keys that do not exist in the IAIK configuration // + * by walking through the key entries and checking if the exist in // the + * // keyGroupEntries for (iter = keySet.iterator(); iter.hasNext();) { + * KeyEntryID entryID = (KeyEntryID) iter.next(); + * + * List certChain = null; try { certChain = + * module.getPrivateKeyEntry(entryID).getCertificateChain(); } catch + * (UnknownKeyException e1) { Logger.warn("Unknown KeyIdentifier found!", + * e1); throw new PdfAsException("Unknown Key Identifier: " + + * this.keyIdentifier); } + * + * if (certChain != null && !certChain.isEmpty()) { + * Logger.trace("Returning Certificate!"); Certificate keyCert = + * ((Certificate) certChain.get(0)); if (keyCert instanceof + * X509Certificate) { return (X509Certificate) keyCert; } else { try { + * return new X509Certificate(keyCert.getEncoded()); } catch + * (CertificateEncodingException e) { + * Logger.warn("Invalid certificate found!", e); throw new + * PdfAsException("Invalid certificate for Key Identifier: " + + * this.keyIdentifier); } catch (CertificateException e) { + * Logger.warn("Invalid certificate found!", e); throw new + * PdfAsException("Invalid certificate for Key Identifier: " + + * this.keyIdentifier); } } } + * + * break; } + * + * // No Certificate could be found! + * Logger.warn("Failed to find keys available for Key Identifier " + + * this.keyIdentifier + " and given authentication."); throw new + * PdfAsException("Failed to find keys available for Key Identifier: " + + * this.keyIdentifier); } + * + * @SuppressWarnings("unchecked") + * + * @Override public byte[] sign(byte[] input, int[] byteRange, + * SignParameter parameter, RequestedSignature requestedSignature) throws + * PdfAsException { + * + * CreateCMSSignatureRequestImpl createCMSSignatureRequest = new + * CreateCMSSignatureRequestImpl(); + * createCMSSignatureRequest.setKeyIdentifier(this.keyIdentifier); + * SingleSignatureInfoCMSImpl singleSignatureInfos = new + * SingleSignatureInfoCMSImpl(); + * + * DataObjectInfoCMSImpl dataObjectInfoCMSImpl = new + * DataObjectInfoCMSImpl(); + * + * dataObjectInfoCMSImpl.setStructure(DataObjectInfoCMSImpl. + * STRUCTURE_DETACHED); + * + * CMSDataObjectImpl cmsDataObjectImpl = new CMSDataObjectImpl(); + * + * CMSContentExplicitImpl cmsContent = new CMSContentExplicitImpl(); + * cmsContent.setBinaryContent(new ByteArrayInputStream(input)); + * + * cmsDataObjectImpl.setContent(cmsContent); + * + * MetaInfoImpl metaInfoImpl = new MetaInfoImpl(); + * + * metaInfoImpl.setMimeType("application/pdf"); + * + * cmsDataObjectImpl.setMetaInfo(metaInfoImpl); + * + * dataObjectInfoCMSImpl.setDataObject(cmsDataObjectImpl); + * + * singleSignatureInfos.setDataObjectInfo(dataObjectInfoCMSImpl); + * + * createCMSSignatureRequest.getSingleSignatureInfos().add( + * singleSignatureInfos); + * + * try { CreateCMSSignatureResponse createCMSSignatureResponse = + * CMSSignatureCreationInvoker.getInstance() + * .createCMSSignature(createCMSSignatureRequest, Collections.EMPTY_SET); + * + * if (createCMSSignatureResponse.getResponseElements().isEmpty()) { + * Logger.error("MOA CMS Signature response is empty!"); throw new + * PdfAsException("MOA CMS Signature response is empty"); } + * + * CreateCMSSignatureResponseElement createCMSSignatureResponseElement = + * (CreateCMSSignatureResponseElement) createCMSSignatureResponse + * .getResponseElements().get(0); + * + * if(createCMSSignatureResponseElement.getResponseType() == + * CreateCMSSignatureResponseElement.ERROR_RESPONSE) { ErrorResponse + * errorResponse = (ErrorResponse) createCMSSignatureResponseElement; + * Logger.error("Failed to create signature " + + * errorResponse.getErrorCode() + " " + errorResponse.getInfo()); throw + * new PdfAsErrorCarrier(new PDFASError(errorResponse.getErrorCode(), + * errorResponse.getInfo())); } else + * if(createCMSSignatureResponseElement.getResponseType() == + * CreateCMSSignatureResponseElement.CMS_SIGNATURE ) { + * CMSSignatureResponse cmsSignatureResponse = (CMSSignatureResponse) + * createCMSSignatureResponseElement; return + * Base64Utils.decode(cmsSignatureResponse.getCMSSignature(), true); } } + * catch (MOAException e) { Logger.error("Failed to create signature!", + * e); throw new PdfAsException("Failed to create signature!", e); } catch + * (IOException e) { Logger.error("Failed to create signature!", e); throw + * new PdfAsException("Failed to create signature!", e); } + * + * return null; } + */ } diff --git a/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/pdfas/InternalMoaVerifier.java b/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/pdfas/InternalMoaVerifier.java index 8d5a27e..c1d18bf 100644 --- a/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/pdfas/InternalMoaVerifier.java +++ b/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/pdfas/InternalMoaVerifier.java @@ -1,129 +1,101 @@ package at.gv.egovernment.moa.spss.server.pdfas; -import java.io.ByteArrayInputStream; -import java.security.cert.CertificateEncodingException; -import java.security.cert.CertificateException; -import java.util.ArrayList; -import java.util.Date; -import java.util.Iterator; -import java.util.List; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -/*import at.gv.egiz.pdfas.common.exceptions.PdfAsException; -import at.gv.egiz.pdfas.lib.api.Configuration; -import at.gv.egiz.pdfas.lib.api.verify.SignatureCheck; -import at.gv.egiz.pdfas.lib.api.verify.VerifyParameter.SignatureVerificationLevel; -import at.gv.egiz.pdfas.lib.api.verify.VerifyResult; -import at.gv.egiz.pdfas.lib.impl.verify.IVerifier; -import at.gv.egiz.pdfas.lib.impl.verify.SignatureCheckImpl; -*/ -import at.gv.egovernment.moa.spss.MOAException; -import at.gv.egovernment.moa.spss.api.cmsverify.VerifyCMSSignatureRequest; -import at.gv.egovernment.moa.spss.api.cmsverify.VerifyCMSSignatureResponse; -import at.gv.egovernment.moa.spss.api.cmsverify.VerifyCMSSignatureResponseElement; -import at.gv.egovernment.moa.spss.api.common.CheckResult; -import at.gv.egovernment.moa.spss.api.impl.CMSContentExplicitImpl; -import at.gv.egovernment.moa.spss.api.impl.CMSDataObjectImpl; -import at.gv.egovernment.moa.spss.api.impl.MetaInfoImpl; -import at.gv.egovernment.moa.spss.api.impl.VerifyCMSSignatureRequestImpl; -import at.gv.egovernment.moa.spss.server.invoke.CMSSignatureVerificationInvoker; -import iaik.x509.X509Certificate; - -public class InternalMoaVerifier { /*implements IVerifier { - - public static final String MOA_TRUSTPROFILE = "internal.moa.trustprofile"; - - private String trustProfile; - - private static final Logger logger = LoggerFactory.getLogger(InternalMoaVerifier.class); - - @Override - public List<VerifyResult> verify(byte[] signature, byte[] signatureContent, Date verificationTime) - throws PdfAsException { - - List<VerifyResult> verificationResultList = new ArrayList<VerifyResult>(); - - VerifyCMSSignatureRequestImpl verifyCMSSignatureRequest = new VerifyCMSSignatureRequestImpl(); - verifyCMSSignatureRequest.setDateTime(verificationTime); - verifyCMSSignatureRequest.setTrustProfileId(this.trustProfile); - verifyCMSSignatureRequest.setCMSSignature(new ByteArrayInputStream(signature)); - - CMSContentExplicitImpl cmsContentExplicitImpl = new CMSContentExplicitImpl(); - cmsContentExplicitImpl.setBinaryContent(new ByteArrayInputStream(signatureContent)); - - CMSDataObjectImpl cmsDataObjectImpl = new CMSDataObjectImpl(); - cmsDataObjectImpl.setContent(cmsContentExplicitImpl); - - MetaInfoImpl metaInfo = new MetaInfoImpl(); - metaInfo.setMimeType("application/pdf"); - metaInfo.setDescription("PDF Document"); - cmsDataObjectImpl.setMetaInfo(metaInfo); - - verifyCMSSignatureRequest.setDataObject(cmsDataObjectImpl); - - verifyCMSSignatureRequest.setSignatories(VerifyCMSSignatureRequest.ALL_SIGNATORIES); - - try { - VerifyCMSSignatureResponse verifyCMSSignatureResponse = CMSSignatureVerificationInvoker.getInstance() - .verifyCMSSignature(verifyCMSSignatureRequest); - @SuppressWarnings("rawtypes") - Iterator iter; - for (iter = verifyCMSSignatureResponse.getResponseElements().iterator(); iter.hasNext();) { - VerifyCMSSignatureResponseElement responseElement = (VerifyCMSSignatureResponseElement) iter.next(); - ExtendedVerifyResult verifyResult = new ExtendedVerifyResult(); - - verifyResult.setCertificateCheck(convertCheck(responseElement.getCertificateCheck())); - verifyResult.setValueCheckCode(convertCheck(responseElement.getSignatureCheck())); - verifyResult.setManifestCheckCode(new SignatureCheckImpl(99, null)); - verifyResult.setQualifiedCertificate(responseElement.getSignerInfo().isQualifiedCertificate()); - verifyResult.setVerificationDone(true); - - if (responseElement.getSignerInfo().getSignerCertificate() instanceof X509Certificate) { - verifyResult.setSignerCertificate( - (X509Certificate) responseElement.getSignerInfo().getSignerCertificate()); - } else { - verifyResult.setSignerCertificate( - new X509Certificate(responseElement.getSignerInfo().getSignerCertificate().getEncoded())); - } - - verifyResult.setQcSource(responseElement.getSignerInfo().getQCSource()); - - verifyResult.setPublicAuthority(responseElement.getSignerInfo().isPublicAuthority()); - verifyResult.setPublicAuthorityID(responseElement.getSignerInfo().getPublicAuhtorityID()); - verifyResult.setSSCD(responseElement.getSignerInfo().isSSCD()); - verifyResult.setSscdSource(responseElement.getSignerInfo().getSSCDSource()); - verifyResult.setIssureCountryCode(responseElement.getSignerInfo().getIssuerCountryCode()); - - verificationResultList.add(verifyResult); - } - } catch (MOAException e) { - logger.error("Failed to verify CMS Signature with MOA", e); - throw new PdfAsException("Failed to verify CMS Signature with MOA", e); - } catch (CertificateEncodingException e) { - logger.error("Failed to verify CMS Signature with MOA", e); - throw new PdfAsException("Failed to verify CMS Signature with MOA", e); - } catch (CertificateException e) { - logger.error("Failed to verify CMS Signature with MOA", e); - throw new PdfAsException("Failed to verify CMS Signature with MOA", e); - } - - return verificationResultList; - } - - private SignatureCheck convertCheck(CheckResult checkResult) { - return new SignatureCheckImpl(checkResult.getCode(), null); - } - - @Override - public void setConfiguration(Configuration config) { - this.trustProfile = config.getValue(MOA_TRUSTPROFILE); - } - - @Override - public SignatureVerificationLevel getLevel() { - return SignatureVerificationLevel.FULL_VERIFICATION; - } - */ +public class InternalMoaVerifier { /* + * implements IVerifier { + * + * public static final String MOA_TRUSTPROFILE = + * "internal.moa.trustprofile"; + * + * private String trustProfile; + * + * private static final Logger logger = + * LoggerFactory.getLogger(InternalMoaVerifier.class); + * + * @Override public List<VerifyResult> verify(byte[] signature, byte[] + * signatureContent, Date verificationTime) throws PdfAsException { + * + * List<VerifyResult> verificationResultList = new + * ArrayList<VerifyResult>(); + * + * VerifyCMSSignatureRequestImpl verifyCMSSignatureRequest = new + * VerifyCMSSignatureRequestImpl(); + * verifyCMSSignatureRequest.setDateTime(verificationTime); + * verifyCMSSignatureRequest.setTrustProfileId(this.trustProfile); + * verifyCMSSignatureRequest.setCMSSignature(new + * ByteArrayInputStream(signature)); + * + * CMSContentExplicitImpl cmsContentExplicitImpl = new + * CMSContentExplicitImpl(); cmsContentExplicitImpl.setBinaryContent(new + * ByteArrayInputStream(signatureContent)); + * + * CMSDataObjectImpl cmsDataObjectImpl = new CMSDataObjectImpl(); + * cmsDataObjectImpl.setContent(cmsContentExplicitImpl); + * + * MetaInfoImpl metaInfo = new MetaInfoImpl(); + * metaInfo.setMimeType("application/pdf"); + * metaInfo.setDescription("PDF Document"); + * cmsDataObjectImpl.setMetaInfo(metaInfo); + * + * verifyCMSSignatureRequest.setDataObject(cmsDataObjectImpl); + * + * verifyCMSSignatureRequest.setSignatories(VerifyCMSSignatureRequest. + * ALL_SIGNATORIES); + * + * try { VerifyCMSSignatureResponse verifyCMSSignatureResponse = + * CMSSignatureVerificationInvoker.getInstance() + * .verifyCMSSignature(verifyCMSSignatureRequest); + * + * @SuppressWarnings("rawtypes") Iterator iter; for (iter = + * verifyCMSSignatureResponse.getResponseElements().iterator(); + * iter.hasNext();) { VerifyCMSSignatureResponseElement responseElement = + * (VerifyCMSSignatureResponseElement) iter.next(); ExtendedVerifyResult + * verifyResult = new ExtendedVerifyResult(); + * + * verifyResult.setCertificateCheck(convertCheck(responseElement. + * getCertificateCheck())); + * verifyResult.setValueCheckCode(convertCheck(responseElement. + * getSignatureCheck())); verifyResult.setManifestCheckCode(new + * SignatureCheckImpl(99, null)); + * verifyResult.setQualifiedCertificate(responseElement.getSignerInfo(). + * isQualifiedCertificate()); verifyResult.setVerificationDone(true); + * + * if (responseElement.getSignerInfo().getSignerCertificate() instanceof + * X509Certificate) { verifyResult.setSignerCertificate( (X509Certificate) + * responseElement.getSignerInfo().getSignerCertificate()); } else { + * verifyResult.setSignerCertificate( new + * X509Certificate(responseElement.getSignerInfo().getSignerCertificate(). + * getEncoded())); } + * + * verifyResult.setQcSource(responseElement.getSignerInfo().getQCSource()); + * + * verifyResult.setPublicAuthority(responseElement.getSignerInfo(). + * isPublicAuthority()); + * verifyResult.setPublicAuthorityID(responseElement.getSignerInfo(). + * getPublicAuhtorityID()); + * verifyResult.setSSCD(responseElement.getSignerInfo().isSSCD()); + * verifyResult.setSscdSource(responseElement.getSignerInfo().getSSCDSource + * ()); verifyResult.setIssureCountryCode(responseElement.getSignerInfo(). + * getIssuerCountryCode()); + * + * verificationResultList.add(verifyResult); } } catch (MOAException e) { + * logger.error("Failed to verify CMS Signature with MOA", e); throw new + * PdfAsException("Failed to verify CMS Signature with MOA", e); } catch + * (CertificateEncodingException e) { + * logger.error("Failed to verify CMS Signature with MOA", e); throw new + * PdfAsException("Failed to verify CMS Signature with MOA", e); } catch + * (CertificateException e) { + * logger.error("Failed to verify CMS Signature with MOA", e); throw new + * PdfAsException("Failed to verify CMS Signature with MOA", e); } + * + * return verificationResultList; } + * + * private SignatureCheck convertCheck(CheckResult checkResult) { return + * new SignatureCheckImpl(checkResult.getCode(), null); } + * + * @Override public void setConfiguration(Configuration config) { + * this.trustProfile = config.getValue(MOA_TRUSTPROFILE); } + * + * @Override public SignatureVerificationLevel getLevel() { return + * SignatureVerificationLevel.FULL_VERIFICATION; } + */ } diff --git a/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/service/AxisHandler.java b/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/service/AxisHandler.java index 9fa99b1..804c7ad 100644 --- a/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/service/AxisHandler.java +++ b/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/service/AxisHandler.java @@ -28,14 +28,14 @@ import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; +import java.io.UnsupportedEncodingException; import java.security.cert.X509Certificate; +import java.util.Enumeration; import java.util.Iterator; import javax.servlet.http.HttpServletRequest; -import org.apache.axis.AxisEngine; import org.apache.axis.AxisFault; -import org.apache.axis.AxisProperties; import org.apache.axis.Message; import org.apache.axis.MessageContext; import org.apache.axis.attachments.AttachmentPart; @@ -46,6 +46,7 @@ import org.apache.axis.utils.XMLUtils; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.NodeList; +import org.xml.sax.SAXException; import at.gv.egovernment.moa.spss.MOASystemException; import at.gv.egovernment.moa.spss.server.config.ConfigurationProvider; @@ -62,417 +63,434 @@ import at.gv.egovernment.moaspss.util.DOMUtils; /** * An handler that is invoked on each web service request and performs some * central message handling. - * + * * Mainly sets up the <code>TransactionContext</code> for the current * transaction (i.e. web service request). - * + * * @author Patrick Peck * @author Stefan Knirsch * @version $Id$ */ public class AxisHandler extends BasicHandler { - /** - * - */ - private static final long serialVersionUID = 2520698947819506866L; - - /** The resource names of the messages to load. */ - private static final String MOA_SPSS_WSDL_RESOURCE_ = "/resources/wsdl/MOA-SPSS-2.0.0.wsdl"; - - /** The property name for accessing the HTTP request. */ - private static final String REQUEST_PROPERTY = HTTPConstants.MC_HTTP_SERVLETREQUEST; - - /** The property name for accessing the X509 client certificate chain. */ - private static final String X509_CERTIFICATE_PROPERTY = "javax.servlet.request.X509Certificate"; - - /** The property name for accessing the SOAP action header. */ - private static final String SOAP_ACTION_HEADER = "soapaction"; - - /** URI of the SOAP XML namespace. */ - public static final String SOAP_NS_URI = "http://schemas.xmlsoap.org/soap/envelope/"; - - /** Prefix used for the SOAP XML namespace */ - public static final String SOAP_PREFIX = "soapenv"; - - /** Simple string contains the front part of the enveloping SOAP wrapping */ - private static final String SOAP_PART_PRE = "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"><soapenv:Body>"; - - /** Simple string contains the post part of the enveloping SOAP wrapping */ - private static final String SOAP_PART_POST = "</soapenv:Body></soapenv:Envelope>"; - - /** - * Handle an invocation of this handler. - * - * @param msgContext - * Information about this request/response. - * @throws AxisFault - * An error occurred during processing of the request. - * @see org.apache.axis.Handler#invoke(MessageContext) - */ - public void invoke(MessageContext msgContext) throws AxisFault { - if (!msgContext.getPastPivot()) { - handleRequest(msgContext); - } else { - handleResponse(msgContext); - } - } - - /** - * This method is called by <code>invoke</code> to handle incoming requests. - * - * @param msgContext - * The context as provided to <code>invoke</code>. - * @throws AxisFault - * An error occurred during processing of the request. - */ - private void handleRequest(MessageContext msgContext) throws AxisFault { - try { - Logger.trace("---- Entering Axishandler"); - // generate a unique transaction id and build the TransactionContext - // for this request - HttpServletRequest request = (HttpServletRequest) msgContext.getProperty(REQUEST_PROPERTY); - - X509Certificate[] clientCert = (X509Certificate[]) request.getAttribute(X509_CERTIFICATE_PROPERTY); - - // Configure Axis - // AxisProperties.setProperty(AxisEngine.PROP_ENABLE_NAMESPACE_PREFIX_OPTIMIZATION,"false"); - // AxisProperties.setProperty(AxisEngine.PROP_DOMULTIREFS,"false"); - // AxisProperties.setProperty(AxisEngine.PROP_SEND_XSI,"true"); - // msgContext.setProperty(org.apache.axis.SOAPPart.ALLOW_FORM_OPTIMIZATION, - // Boolean.FALSE); - // msgContext.setProperty(org.apache.axis. - // AxisEngine.PROP_ENABLE_NAMESPACE_PREFIX_OPTIMIZATION,"false"); - //AxisProperties.setProperty(AxisEngine.PROP_ATTACHMENT_IMPLEMENTATION, AxisEngine.DEFAULT_ATTACHMENT_IMPL); - Message soapMessage = msgContext.getCurrentMessage(); - - ConfigurationProvider configuration = ConfigurationProvider.getInstance(); - - Element xmlRequest = null; - // log.info(soapMessage.getSOAPPartAsString()); - Element soapPart = DOMUtils - .parseDocument(new ByteArrayInputStream(soapMessage.getSOAPPartAsBytes()), false, null, null) - .getDocumentElement(); - if (soapPart != null) { - // TODO: check if DOM Version is intolerant when white spaces - // are between tags (preceding normalization would be necessary) - NodeList soapBodies = soapPart.getElementsByTagNameNS(SOAP_NS_URI, "Body"); - if (soapBodies != null && soapBodies.getLength() > 0) { - xmlRequest = DOMUtils.getElementFromNodeList(soapBodies.item(0).getChildNodes()); - } - // oder TODO: Evaluierung ob XPATH schneller - /* - * HashMap nSMap = new HashMap(); nSMap.put((String)SOAP_PREFIX, - * SOAP_NS_URI); Element soapBody = (Element) - * XPathUtils.selectSingleNode(soapPart, nSMap, - * "/"+SOAP_PREFIX+":Envelope/"+SOAP_PREFIX+":Body"); if - * (soapBody!=null) { xmlRequest = - * DOMUtils.getElementFromNodeList(soapBody.getChildNodes()); } - */ - } - - TransactionContext context = new TransactionContext(TransactionIDGenerator.nextID(), clientCert, - configuration, xmlRequest, null); - - String soapAction = (String) request.getHeader(SOAP_ACTION_HEADER); - if ("\"\"".equals(soapAction)) { - // if http soap action header is empty - soapAction = msgContext.getTargetService(); - } - context.setRequestName(soapAction); - - if (soapMessage.getAttachmentsImpl() != null) { - Logger.info("Attachments is NOT null!"); - Logger.trace(">>> Get AttachmentCount"); - int attachmentCount = soapMessage.getAttachmentsImpl().getAttachmentCount(); - Logger.trace("<<< Finished Get AttachmentCount"); - if (attachmentCount > 0) { - - // add SOAP attachments to transaction context - @SuppressWarnings("rawtypes") - Iterator iterator = soapMessage.getAttachments(); - while (iterator.hasNext()) { - AttachmentPart attachment = (AttachmentPart) iterator.next(); - String id = attachment.getContentId(); - String type = attachment.getContentType(); - - // Now get the InputStream (note: we could also get the - // content with Object content = - // attachment.getContent();) - InputStream is = null; - javax.activation.DataHandler datahandler = attachment.getDataHandler(); - - int TYPE = 2; - switch (TYPE) { - case 1: { - org.apache.axis.attachments.ManagedMemoryDataSource mmds = (org.apache.axis.attachments.ManagedMemoryDataSource) datahandler - .getDataSource(); - context.addAttachment(id, type, mmds); - break; - } - case 2: { - is = datahandler.getDataSource().getInputStream(); - context.addAttachment(id, type, is, datahandler.getDataSource().getName()); - break; - } - } - debug("handler.06", new Object[] { id, type }); - } - } - } else { - Logger.info("Attachments is null!"); - } - - setUpContexts(context); - - // log some information about the request - info("handler.00", new Object[] { context.getTransactionID(), msgContext.getTargetService() }); - info("handler.01", new Object[] { request.getRemoteAddr() }); - if (clientCert != null) { - info("handler.02", new Object[] { clientCert[0].getSubjectDN(), clientCert[0].getSerialNumber(), - clientCert[0].getIssuerDN() }); - - } else { - info("handler.03", null); - } - if (Logger.isTraceEnabled()) { - // OutputFormat format = new OutputFormat((Document) - // xmlRequest.getOwnerDocument()); - // format.setLineSeparator("\n"); - // format.setIndenting(false); - // format.setPreserveSpace(true); - // format.setOmitXMLDeclaration(false); - // format.setEncoding("UTF-8"); - // ByteArrayOutputStream baos = new ByteArrayOutputStream(); - // XMLSerializer conSerializer = new XMLSerializer(baos, - // format); - // conSerializer.serialize(xmlRequest); - // Logger.debug(new LogMsg("Request:" + baos.toString())); - - String msg = soapMessage.getSOAPPartAsString(); - Logger.trace(new LogMsg(msg)); - } - } catch (MOASystemException e) { - MOASystemException se = new MOASystemException("2900", null, e); - AxisFault fault = AxisFault.makeFault(se); - fault.setFaultDetail(new Element[] { se.toErrorResponse() }); - throw fault; - } catch (Throwable t) { - t.printStackTrace(); - Logger.info(new LogMsg(t.getStackTrace())); - MOASystemException e = new MOASystemException("2900", null, t); - AxisFault fault = AxisFault.makeFault(e); - fault.setFaultDetail(new Element[] { e.toErrorResponse() }); - throw fault; - } - Logger.trace("---- Leaving Axishandler"); - } - - /** - * This method is called by <code>invoke</code> to handle outgoing - * responses. - * - * @param msgContext - * The context as provided to <code>invoke</code>. - * @throws AxisFault - * An error occurred during processing of the response. - */ - private void handleResponse(MessageContext msgContext) throws AxisFault { - String xmlResponseString = null; - String soapResponseString = null; - - TransactionContext context = TransactionContextManager.getInstance().getTransactionContext(); - Element xmlResponse = context.getResponse(); - - if (xmlResponse != null) { - try { - xmlResponseString = DOMUtils.serializeNode(xmlResponse, true); - /* - * Soll die Antwort nur \n enthalten, so gibt es 2 - * Möglichkeiten: 1.) Xalan Version und xmlResponseString = - * DOMUtils.serializeNode(xmlResponse, true, "\n"); 2.) - * OutputFormat serializerFormat = new OutputFormat((Document) - * xmlResponse.getOwnerDocument()); - * serializerFormat.setLineSeparator("\n"); - * serializerFormat.setIndenting(false); - * serializerFormat.setPreserveSpace(true); - * serializerFormat.setOmitXMLDeclaration(true); - * serializerFormat.setEncoding("UTF-8"); ByteArrayOutputStream - * serializedBytes = new ByteArrayOutputStream(); XMLSerializer - * serializer = new XMLSerializer(serializedBytes, - * serializerFormat); serializer.serialize(xmlResponse); - * serializedBytes.close(); xmlResponseString = - * serializedBytes.toString("UTF-8"); - */ - if (Logger.isTraceEnabled()) { - Logger.trace(new LogMsg(xmlResponseString)); - } - soapResponseString = SOAP_PART_PRE + xmlResponseString + SOAP_PART_POST; - // override axis response-message - msgContext.setResponseMessage(new Message(soapResponseString)); - } catch (Throwable t) { - t.printStackTrace(); - Logger.info(new LogMsg(t.getStackTrace())); - MOASystemException e = new MOASystemException("2900", null, t); - AxisFault fault = AxisFault.makeFault(e); - fault.setFaultDetail(new Element[] { e.toErrorResponse() }); - throw fault; - } - - } else { - // Fallback: if functions do not set the resulting response in the - // transaction, the original one from axis will be used - soapResponseString = msgContext.getCurrentMessage().getSOAPPartAsString(); - } - - info("handler.04", null); - if (Logger.isDebugEnabled()) { - Logger.debug(new LogMsg(soapResponseString)); - } - tearDownContexts(); - } - - /** - * Called, when the processing of the web service fails. - * - * @param msgContext - * Information about the current request. - * @see org.apache.axis.Handler#onFault(org.apache.axis.MessageContext) - */ - public void onFault(MessageContext msgContext) { - info("handler.05", null); - tearDownContexts(); - } - - /** - * Set up the thread-local contexts (<code>TransactionContext</code> and - * <code>LoggingContext</code>). - * - * @param context - * The <code>TransactionContext</code> to set for the current - * request. - */ - private void setUpContexts(TransactionContext context) { - // set the transaction context in the TransactionContextManager - TransactionContextManager tcm = TransactionContextManager.getInstance(); - tcm.setTransactionContext(context); - - // set the logging context in the LoggingContextManager - LoggingContextManager lcm = LoggingContextManager.getInstance(); - LoggingContext lc = new LoggingContext(context.getTransactionID()); - lcm.setLoggingContext(lc); - } - - /** - * Tear down the thread-local contexts. - */ - private void tearDownContexts() { - TransactionContextManager tcm = TransactionContextManager.getInstance(); - - // delete temporary files - TransactionContext context = tcm.getTransactionContext(); - context.cleanAttachmentCache(); - - // unset the transaction context - tcm.setTransactionContext(null); - - // unset the logging context - LoggingContextManager lcm = LoggingContextManager.getInstance(); - lcm.setLoggingContext(null); - } - - /** - * Generate the WSDL into the <code>msgContext</code>. - * - * The code of this method is more or less copied from the - * <code>org.apache.axis.handlers.soap.SOAPService</code> class contained in - * the 1.1 release of Axis to allow for a missing <code>wsdlFile</code> (so - * that a resource by the same name is searched for in the classpath). The - * implementation of this method should be obsolete if Axis 1.1 or higher is - * used. - * - * @param msgContext - * The <code>MessageContext</code> that will contain the WSDL - * description of the current web service. - * @throws AxisFault - * An error occurred producing the WSDL. - */ - public void generateWSDL(MessageContext msgContext) throws AxisFault { - InputStream instream = null; - - try { - String filename = MOA_SPSS_WSDL_RESOURCE_; - - File file = new File(filename); - if (file.exists()) { - // if this resolves to a file, load it - instream = new FileInputStream(filename); - } else { - // else load a named resource in our classloader. - instream = this.getClass().getResourceAsStream(filename); - if (instream == null) { - String errorText = Messages.getMessage("wsdlFileMissing", filename); - throw new AxisFault(errorText); - } - } - Document doc = XMLUtils.newDocument(instream); - msgContext.setProperty("WSDL", doc); - } catch (Exception e) { - throw AxisFault.makeFault(e); - } finally { - if (instream != null) { - try { - instream.close(); - } catch (IOException e) { - // ok to do nothing here - } - } - } - } - - /** - * Utility function to issue an info message to the log. - * - * @param messageId - * The ID of the message to log. - * @param parameters - * Additional message parameters. - */ - private static void info(String messageId, Object[] parameters) { - MessageProvider msg = MessageProvider.getInstance(); - - Logger.info(new LogMsg(msg.getMessage(messageId, parameters))); - } - - /** - * Utility function to issue an debug message to the log. - * - * @param messageId - * The ID of the message to log. - * @param parameters - * Additional message parameters. - */ - private static void debug(String messageId, Object[] parameters) { - MessageProvider msg = MessageProvider.getInstance(); - - Logger.debug(new LogMsg(msg.getMessage(messageId, parameters))); - } - - // private byte[] toByteArray(AttachmentPart attachment) throws - // SOAPException, IOException - // { - // ByteArrayOutputStream outputStream = new - // ByteArrayOutputStream(attachment.getSize()); - // InputStream inputStream = (InputStream) attachment.getContent(); - // int currentByte = -1; - // while ((currentByte = inputStream.read()) != -1) - // outputStream.write(currentByte); - // - // inputStream.close(); - // outputStream.close(); - // - // return outputStream.toByteArray(); - // - // } + /** + * + */ + private static final long serialVersionUID = 2520698947819506866L; + + /** The resource names of the messages to load. */ + private static final String MOA_SPSS_WSDL_RESOURCE_ = "/resources/wsdl/MOA-SPSS-2.0.0.wsdl"; + + /** The property name for accessing the HTTP request. */ + private static final String REQUEST_PROPERTY = HTTPConstants.MC_HTTP_SERVLETREQUEST; + + /** The property name for accessing the X509 client certificate chain. */ + private static final String X509_CERTIFICATE_PROPERTY = "javax.servlet.request.X509Certificate"; + + /** The property name for accessing the SOAP action header. */ + private static final String SOAP_ACTION_HEADER = "soapaction"; + + /** URI of the SOAP XML namespace. */ + public static final String SOAP_NS_URI = "http://schemas.xmlsoap.org/soap/envelope/"; + + /** Prefix used for the SOAP XML namespace */ + public static final String SOAP_PREFIX = "soapenv"; + + /** Simple string contains the front part of the enveloping SOAP wrapping */ + private static final String SOAP_PART_PRE = + "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"><soapenv:Body>"; + + /** Simple string contains the post part of the enveloping SOAP wrapping */ + private static final String SOAP_PART_POST = "</soapenv:Body></soapenv:Envelope>"; + + /** + * Handle an invocation of this handler. + * + * @param msgContext Information about this request/response. + * @throws AxisFault An error occurred during processing of the request. + * @see org.apache.axis.Handler#invoke(MessageContext) + */ + @Override + public void invoke(MessageContext msgContext) throws AxisFault { + if (!msgContext.getPastPivot()) { + handleRequest(msgContext); + } else { + handleResponse(msgContext); + } + } + + /** + * This method is called by <code>invoke</code> to handle incoming requests. + * + * @param msgContext The context as provided to <code>invoke</code>. + * @throws AxisFault An error occurred during processing of the request. + */ + private void handleRequest(MessageContext msgContext) throws AxisFault { + Message soapMessage = null; + try { + Logger.trace("---- Entering Axishandler"); + // generate a unique transaction id and build the TransactionContext + // for this request + final HttpServletRequest request = (HttpServletRequest) msgContext.getProperty(REQUEST_PROPERTY); + + final X509Certificate[] clientCert = (X509Certificate[]) request.getAttribute( + X509_CERTIFICATE_PROPERTY); + + if (Logger.isTraceEnabled()) { + final Enumeration<String> allHeaders = request.getHeaderNames(); + if (allHeaders != null) { + while (allHeaders.hasMoreElements()) { + final String header = allHeaders.nextElement(); + Logger.trace("Header: " + header + " : " + request.getHeader(header)); + + } + } + } + + // Configure Axis + // AxisProperties.setProperty(AxisEngine.PROP_ENABLE_NAMESPACE_PREFIX_OPTIMIZATION,"false"); + // AxisProperties.setProperty(AxisEngine.PROP_DOMULTIREFS,"false"); + // AxisProperties.setProperty(AxisEngine.PROP_SEND_XSI,"true"); + // msgContext.setProperty(org.apache.axis.SOAPPart.ALLOW_FORM_OPTIMIZATION, + // Boolean.FALSE); + // msgContext.setProperty(org.apache.axis. + // AxisEngine.PROP_ENABLE_NAMESPACE_PREFIX_OPTIMIZATION,"false"); + // AxisProperties.setProperty(AxisEngine.PROP_ATTACHMENT_IMPLEMENTATION, + // AxisEngine.DEFAULT_ATTACHMENT_IMPL); + soapMessage = msgContext.getCurrentMessage(); + + final ConfigurationProvider configuration = ConfigurationProvider.getInstance(); + new String(soapMessage.getSOAPPartAsBytes()); + Element xmlRequest = null; + // log.info(soapMessage.getSOAPPartAsString()); + final Element soapPart = DOMUtils + .parseDocument(new ByteArrayInputStream(soapMessage.getSOAPPartAsBytes()), false, null, null) + .getDocumentElement(); + if (soapPart != null) { + // TODO: check if DOM Version is intolerant when white spaces + // are between tags (preceding normalization would be necessary) + final NodeList soapBodies = soapPart.getElementsByTagNameNS(SOAP_NS_URI, "Body"); + if (soapBodies != null && soapBodies.getLength() > 0) { + xmlRequest = DOMUtils.getElementFromNodeList(soapBodies.item(0).getChildNodes()); + } + // oder TODO: Evaluierung ob XPATH schneller + /* + * HashMap nSMap = new HashMap(); nSMap.put((String)SOAP_PREFIX, SOAP_NS_URI); + * Element soapBody = (Element) XPathUtils.selectSingleNode(soapPart, nSMap, + * "/"+SOAP_PREFIX+":Envelope/"+SOAP_PREFIX+":Body"); if (soapBody!=null) { + * xmlRequest = DOMUtils.getElementFromNodeList(soapBody.getChildNodes()); } + */ + } + + final TransactionContext context = new TransactionContext(TransactionIDGenerator.nextID(), clientCert, + configuration, xmlRequest, null); + + String soapAction = request.getHeader(SOAP_ACTION_HEADER); + if ("\"\"".equals(soapAction)) { + // if http soap action header is empty + soapAction = msgContext.getTargetService(); + } + context.setRequestName(soapAction); + + if (soapMessage.getAttachmentsImpl() != null) { + Logger.info("Attachments is NOT null!"); + Logger.trace(">>> Get AttachmentCount"); + final int attachmentCount = soapMessage.getAttachmentsImpl().getAttachmentCount(); + Logger.trace("<<< Finished Get AttachmentCount"); + if (attachmentCount > 0) { + + // add SOAP attachments to transaction context + @SuppressWarnings("rawtypes") + final Iterator iterator = soapMessage.getAttachments(); + while (iterator.hasNext()) { + final AttachmentPart attachment = (AttachmentPart) iterator.next(); + final String id = attachment.getContentId(); + final String type = attachment.getContentType(); + + // Now get the InputStream (note: we could also get the + // content with Object content = + // attachment.getContent();) + InputStream is = null; + final javax.activation.DataHandler datahandler = attachment.getDataHandler(); + + final int TYPE = 2; + switch (TYPE) { + case 1: { + final org.apache.axis.attachments.ManagedMemoryDataSource mmds = + (org.apache.axis.attachments.ManagedMemoryDataSource) datahandler + .getDataSource(); + context.addAttachment(id, type, mmds); + break; + } + case 2: { + is = datahandler.getDataSource().getInputStream(); + context.addAttachment(id, type, is, datahandler.getDataSource().getName()); + break; + } + } + debug("handler.06", new Object[] { id, type }); + } + } + } else { + Logger.info("Attachments is null!"); + } + + setUpContexts(context); + + // log some information about the request + info("handler.00", new Object[] { context.getTransactionID(), msgContext.getTargetService() }); + info("handler.01", new Object[] { request.getRemoteAddr() }); + if (clientCert != null) { + info("handler.02", new Object[] { clientCert[0].getSubjectDN(), clientCert[0].getSerialNumber(), + clientCert[0].getIssuerDN() }); + + } else { + info("handler.03", null); + } + if (Logger.isTraceEnabled()) { + // OutputFormat format = new OutputFormat((Document) + // xmlRequest.getOwnerDocument()); + // format.setLineSeparator("\n"); + // format.setIndenting(false); + // format.setPreserveSpace(true); + // format.setOmitXMLDeclaration(false); + // format.setEncoding("UTF-8"); + // ByteArrayOutputStream baos = new ByteArrayOutputStream(); + // XMLSerializer conSerializer = new XMLSerializer(baos, + // format); + // conSerializer.serialize(xmlRequest); + // Logger.debug(new LogMsg("Request:" + baos.toString())); + + final String msg = soapMessage.getSOAPPartAsString(); + Logger.trace(new LogMsg(msg)); + } + } catch (final MOASystemException e) { + final MOASystemException se = new MOASystemException("2900", null, e); + final AxisFault fault = AxisFault.makeFault(se); + fault.setFaultDetail(new Element[] { se.toErrorResponse() }); + throw fault; + + } catch (final SAXException t) { + if (soapMessage != null && soapMessage.getSOAPPartAsBytes() != null) { + try { + Logger.debug("Req: " + new String(soapMessage.getSOAPPartAsBytes(), "UTF-8")); + } catch (final UnsupportedEncodingException e1) { + e1.printStackTrace(); + } + + } + + t.printStackTrace(); + Logger.info(new LogMsg(t.getStackTrace())); + final MOASystemException e = new MOASystemException("2900", null, t); + final AxisFault fault = AxisFault.makeFault(e); + fault.setFaultDetail(new Element[] { e.toErrorResponse() }); + throw fault; + + } catch (final Throwable t) { + t.printStackTrace(); + Logger.info(new LogMsg(t.getStackTrace())); + final MOASystemException e = new MOASystemException("2900", null, t); + final AxisFault fault = AxisFault.makeFault(e); + fault.setFaultDetail(new Element[] { e.toErrorResponse() }); + throw fault; + } + Logger.trace("---- Leaving Axishandler"); + } + + /** + * This method is called by <code>invoke</code> to handle outgoing responses. + * + * @param msgContext The context as provided to <code>invoke</code>. + * @throws AxisFault An error occurred during processing of the response. + */ + private void handleResponse(MessageContext msgContext) throws AxisFault { + String xmlResponseString = null; + String soapResponseString = null; + + final TransactionContext context = TransactionContextManager.getInstance().getTransactionContext(); + final Element xmlResponse = context.getResponse(); + + if (xmlResponse != null) { + try { + xmlResponseString = DOMUtils.serializeNode(xmlResponse, true); + /* + * Soll die Antwort nur \n enthalten, so gibt es 2 Möglichkeiten: 1.) Xalan + * Version und xmlResponseString = DOMUtils.serializeNode(xmlResponse, true, + * "\n"); 2.) OutputFormat serializerFormat = new OutputFormat((Document) + * xmlResponse.getOwnerDocument()); serializerFormat.setLineSeparator("\n"); + * serializerFormat.setIndenting(false); + * serializerFormat.setPreserveSpace(true); + * serializerFormat.setOmitXMLDeclaration(true); + * serializerFormat.setEncoding("UTF-8"); ByteArrayOutputStream serializedBytes + * = new ByteArrayOutputStream(); XMLSerializer serializer = new + * XMLSerializer(serializedBytes, serializerFormat); + * serializer.serialize(xmlResponse); serializedBytes.close(); xmlResponseString + * = serializedBytes.toString("UTF-8"); + */ + if (Logger.isTraceEnabled()) { + Logger.trace(new LogMsg(xmlResponseString)); + } + soapResponseString = SOAP_PART_PRE + xmlResponseString + SOAP_PART_POST; + // override axis response-message + msgContext.setResponseMessage(new Message(soapResponseString)); + } catch (final Throwable t) { + t.printStackTrace(); + Logger.info(new LogMsg(t.getStackTrace())); + final MOASystemException e = new MOASystemException("2900", null, t); + final AxisFault fault = AxisFault.makeFault(e); + fault.setFaultDetail(new Element[] { e.toErrorResponse() }); + throw fault; + } + + } else { + // Fallback: if functions do not set the resulting response in the + // transaction, the original one from axis will be used + soapResponseString = msgContext.getCurrentMessage().getSOAPPartAsString(); + } + + info("handler.04", null); + if (Logger.isDebugEnabled()) { + Logger.debug(new LogMsg(soapResponseString)); + } + tearDownContexts(); + } + + /** + * Called, when the processing of the web service fails. + * + * @param msgContext Information about the current request. + * @see org.apache.axis.Handler#onFault(org.apache.axis.MessageContext) + */ + @Override + public void onFault(MessageContext msgContext) { + info("handler.05", null); + tearDownContexts(); + } + + /** + * Set up the thread-local contexts (<code>TransactionContext</code> and + * <code>LoggingContext</code>). + * + * @param context The <code>TransactionContext</code> to set for the current + * request. + */ + private void setUpContexts(TransactionContext context) { + // set the transaction context in the TransactionContextManager + final TransactionContextManager tcm = TransactionContextManager.getInstance(); + tcm.setTransactionContext(context); + + // set the logging context in the LoggingContextManager + final LoggingContextManager lcm = LoggingContextManager.getInstance(); + final LoggingContext lc = new LoggingContext(context.getTransactionID()); + lcm.setLoggingContext(lc); + } + + /** + * Tear down the thread-local contexts. + */ + private void tearDownContexts() { + final TransactionContextManager tcm = TransactionContextManager.getInstance(); + + // delete temporary files + final TransactionContext context = tcm.getTransactionContext(); + context.cleanAttachmentCache(); + + // unset the transaction context + tcm.setTransactionContext(null); + + // unset the logging context + final LoggingContextManager lcm = LoggingContextManager.getInstance(); + lcm.setLoggingContext(null); + } + + /** + * Generate the WSDL into the <code>msgContext</code>. + * + * The code of this method is more or less copied from the + * <code>org.apache.axis.handlers.soap.SOAPService</code> class contained in the + * 1.1 release of Axis to allow for a missing <code>wsdlFile</code> (so that a + * resource by the same name is searched for in the classpath). The + * implementation of this method should be obsolete if Axis 1.1 or higher is + * used. + * + * @param msgContext The <code>MessageContext</code> that will contain the WSDL + * description of the current web service. + * @throws AxisFault An error occurred producing the WSDL. + */ + @Override + public void generateWSDL(MessageContext msgContext) throws AxisFault { + InputStream instream = null; + + try { + final String filename = MOA_SPSS_WSDL_RESOURCE_; + + final File file = new File(filename); + if (file.exists()) { + // if this resolves to a file, load it + instream = new FileInputStream(filename); + } else { + // else load a named resource in our classloader. + instream = this.getClass().getResourceAsStream(filename); + if (instream == null) { + final String errorText = Messages.getMessage("wsdlFileMissing", filename); + throw new AxisFault(errorText); + } + } + final Document doc = XMLUtils.newDocument(instream); + msgContext.setProperty("WSDL", doc); + } catch (final Exception e) { + throw AxisFault.makeFault(e); + } finally { + if (instream != null) { + try { + instream.close(); + } catch (final IOException e) { + // ok to do nothing here + } + } + } + } + + /** + * Utility function to issue an info message to the log. + * + * @param messageId The ID of the message to log. + * @param parameters Additional message parameters. + */ + private static void info(String messageId, Object[] parameters) { + final MessageProvider msg = MessageProvider.getInstance(); + + Logger.info(new LogMsg(msg.getMessage(messageId, parameters))); + } + + /** + * Utility function to issue an debug message to the log. + * + * @param messageId The ID of the message to log. + * @param parameters Additional message parameters. + */ + private static void debug(String messageId, Object[] parameters) { + final MessageProvider msg = MessageProvider.getInstance(); + + Logger.debug(new LogMsg(msg.getMessage(messageId, parameters))); + } + + // private byte[] toByteArray(AttachmentPart attachment) throws + // SOAPException, IOException + // { + // ByteArrayOutputStream outputStream = new + // ByteArrayOutputStream(attachment.getSize()); + // InputStream inputStream = (InputStream) attachment.getContent(); + // int currentByte = -1; + // while ((currentByte = inputStream.read()) != -1) + // outputStream.write(currentByte); + // + // inputStream.close(); + // outputStream.close(); + // + // return outputStream.toByteArray(); + // + // } }
\ No newline at end of file diff --git a/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/service/CertificateProviderServlet.java b/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/service/CertificateProviderServlet.java index 43804a2..bc2c3b6 100644 --- a/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/service/CertificateProviderServlet.java +++ b/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/service/CertificateProviderServlet.java @@ -1,9 +1,5 @@ package at.gv.egovernment.moa.spss.server.service; -import iaik.server.modules.keys.KeyEntryID; -import iaik.server.modules.keys.KeyModule; -import iaik.server.modules.keys.KeyModuleFactory; - import java.io.IOException; import java.math.BigInteger; import java.security.Principal; @@ -26,155 +22,158 @@ import at.gv.egovernment.moa.spss.server.config.KeyGroupEntry; import at.gv.egovernment.moa.spss.server.logging.TransactionId; import at.gv.egovernment.moa.spss.server.transaction.TransactionIDGenerator; import at.gv.egovernment.moaspss.logging.Logger; +import iaik.server.modules.keys.KeyEntryID; +import iaik.server.modules.keys.KeyModule; +import iaik.server.modules.keys.KeyModuleFactory; /** - * + * * @author Andreas Fitzek * @version $Id$ */ public class CertificateProviderServlet extends HttpServlet { - /** - * - */ - private static final long serialVersionUID = -6907582473072190122L; - - /** The property name for accessing the X509 client certificate chain. */ - private static final String X509_CERTIFICATE_PROPERTY = "javax.servlet.request.X509Certificate"; - - public static final String PARAM_KEYID = "id"; - - /** - * Build the set of <code>KeyEntryID</code>s available to the given - * <code>keyGroupID</code>. - * - * @param keyGroupID - * The keygroup ID for which the available keys should be - * returned. - * @return The <code>Set</code> of <code>KeyEntryID</code>s identifying the - * available keys. - * @throws ConfigurationException - */ - @SuppressWarnings({ "rawtypes", "unchecked" }) - private Set buildKeySet(String keyGroupID, X509Certificate cert, KeyModule module) - throws ConfigurationException { - ConfigurationProvider config = ConfigurationProvider.getInstance(); - Set keyGroupEntries; - - // get the KeyGroup entries from the configuration - if (cert != null) { - Principal issuer = cert.getIssuerDN(); - BigInteger serialNumber = cert.getSerialNumber(); - - keyGroupEntries = config.getKeyGroupEntries(issuer, serialNumber, - keyGroupID); - } else { - keyGroupEntries = config.getKeyGroupEntries(null, null, keyGroupID); - } - - // map the KeyGroup entries to a set of KeyEntryIDs - if (keyGroupEntries == null) { - return null; - } else if (keyGroupEntries.size() == 0) { - return Collections.EMPTY_SET; - } else { - - Set keyEntryIDs = module.getPrivateKeyEntryIDs(); - Set keySet = new HashSet(); - Iterator iter; - - // filter out the keys that do not exist in the IAIK configuration - // by walking through the key entries and checking if the exist in - // the - // keyGroupEntries - for (iter = keyEntryIDs.iterator(); iter.hasNext();) { - KeyEntryID entryID = (KeyEntryID) iter.next(); - KeyGroupEntry entry = new KeyGroupEntry(entryID.getModuleID(), - entryID.getCertificateIssuer(), - entryID.getCertificateSerialNumber()); - if (keyGroupEntries.contains(entry)) { - keySet.add(entryID); - } - } - return keySet; - } - } - - private X509Certificate getClientCertificate(HttpServletRequest request) { - X509Certificate[] clientCert = (X509Certificate[]) request - .getAttribute(X509_CERTIFICATE_PROPERTY); - if(clientCert != null) { - return clientCert[0]; - } - return null; - } - - @SuppressWarnings("rawtypes") - public void doGet(HttpServletRequest request, HttpServletResponse response) - throws ServletException, IOException { - try { - X509Certificate cert = getClientCertificate(request); - String keyId = request.getParameter(PARAM_KEYID); - - if(keyId == null) { - Logger.warn(PARAM_KEYID + " not provided in Request. Returning: " + HttpServletResponse.SC_BAD_REQUEST); - response.sendError(HttpServletResponse.SC_BAD_REQUEST); - return; - } - - String transactionId = TransactionIDGenerator.nextID(); - - KeyModule module = KeyModuleFactory.getInstance(new TransactionId( - transactionId)); - - Set keySet = buildKeySet(keyId, cert, module); - - if(keySet == null || keySet.isEmpty()) { - Logger.warn("No keys available for Key Identifier " + keyId + " and given authentication."); - response.sendError(HttpServletResponse.SC_NOT_FOUND); - return; - } - - - if(keySet.size() != 1) { - Logger.warn("Too many keys available for Key Identifier " + keyId + " and given authentication."); - response.sendError(HttpServletResponse.SC_CONFLICT); - return; - } - - Iterator iter; - - // filter out the keys that do not exist in the IAIK configuration - // by walking through the key entries and checking if the exist in - // the - // keyGroupEntries - for (iter = keySet.iterator(); iter.hasNext();) { - KeyEntryID entryID = (KeyEntryID) iter.next(); - - List certChain = module.getPrivateKeyEntry(entryID).getCertificateChain(); - - if(certChain != null && !certChain.isEmpty()) { - Logger.trace("Returning Certificate!"); - Certificate keyCert = ((Certificate)certChain.get(0)); - byte[] certData = keyCert.getEncoded(); - response.setStatus(HttpServletResponse.SC_OK); - response.setContentType("application/pkix-cert"); - response.setHeader("Content-disposition","attachment; filename=\"" + keyId + ".cer\""); - response.getOutputStream().write(certData); - response.getOutputStream().close(); - return; - } - - break; - } - - // No Certificate could be found! - Logger.warn("Failed to find keys available for Key Identifier " + keyId + " and given authentication."); - response.sendError(HttpServletResponse.SC_NOT_FOUND); - return; - } catch(Throwable e) { - Logger.error("Unhandled Exception when providing certificate", e); - response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR); - } - } + /** + * + */ + private static final long serialVersionUID = -6907582473072190122L; + + /** The property name for accessing the X509 client certificate chain. */ + private static final String X509_CERTIFICATE_PROPERTY = "javax.servlet.request.X509Certificate"; + + public static final String PARAM_KEYID = "id"; + + /** + * Build the set of <code>KeyEntryID</code>s available to the given + * <code>keyGroupID</code>. + * + * @param keyGroupID The keygroup ID for which the available keys should be + * returned. + * @return The <code>Set</code> of <code>KeyEntryID</code>s identifying the + * available keys. + * @throws ConfigurationException + */ + @SuppressWarnings({ "rawtypes", "unchecked" }) + private Set buildKeySet(String keyGroupID, X509Certificate cert, KeyModule module) + throws ConfigurationException { + final ConfigurationProvider config = ConfigurationProvider.getInstance(); + Set keyGroupEntries; + + // get the KeyGroup entries from the configuration + if (cert != null) { + final Principal issuer = cert.getIssuerDN(); + final BigInteger serialNumber = cert.getSerialNumber(); + + keyGroupEntries = config.getKeyGroupEntries(issuer, serialNumber, + keyGroupID); + } else { + keyGroupEntries = config.getKeyGroupEntries(null, null, keyGroupID); + } + + // map the KeyGroup entries to a set of KeyEntryIDs + if (keyGroupEntries == null) { + return null; + } else if (keyGroupEntries.size() == 0) { + return Collections.EMPTY_SET; + } else { + + final Set keyEntryIDs = module.getPrivateKeyEntryIDs(); + final Set keySet = new HashSet(); + Iterator iter; + + // filter out the keys that do not exist in the IAIK configuration + // by walking through the key entries and checking if the exist in + // the + // keyGroupEntries + for (iter = keyEntryIDs.iterator(); iter.hasNext();) { + final KeyEntryID entryID = (KeyEntryID) iter.next(); + final KeyGroupEntry entry = new KeyGroupEntry(entryID.getModuleID(), + entryID.getCertificateIssuer(), + entryID.getCertificateSerialNumber()); + if (keyGroupEntries.contains(entry)) { + keySet.add(entryID); + } + } + return keySet; + } + } + + private X509Certificate getClientCertificate(HttpServletRequest request) { + final X509Certificate[] clientCert = (X509Certificate[]) request + .getAttribute(X509_CERTIFICATE_PROPERTY); + if (clientCert != null) { + return clientCert[0]; + } + return null; + } + + @Override + @SuppressWarnings("rawtypes") + public void doGet(HttpServletRequest request, HttpServletResponse response) + throws ServletException, IOException { + try { + final X509Certificate cert = getClientCertificate(request); + final String keyId = request.getParameter(PARAM_KEYID); + + if (keyId == null) { + Logger.warn(PARAM_KEYID + " not provided in Request. Returning: " + + HttpServletResponse.SC_BAD_REQUEST); + response.sendError(HttpServletResponse.SC_BAD_REQUEST); + return; + } + + final String transactionId = TransactionIDGenerator.nextID(); + + final KeyModule module = KeyModuleFactory.getInstance(new TransactionId( + transactionId)); + + final Set keySet = buildKeySet(keyId, cert, module); + + if (keySet == null || keySet.isEmpty()) { + Logger.warn("No keys available for Key Identifier " + keyId + " and given authentication."); + response.sendError(HttpServletResponse.SC_NOT_FOUND); + return; + } + + if (keySet.size() != 1) { + Logger.warn("Too many keys available for Key Identifier " + keyId + " and given authentication."); + response.sendError(HttpServletResponse.SC_CONFLICT); + return; + } + + Iterator iter; + + // filter out the keys that do not exist in the IAIK configuration + // by walking through the key entries and checking if the exist in + // the + // keyGroupEntries + for (iter = keySet.iterator(); iter.hasNext();) { + final KeyEntryID entryID = (KeyEntryID) iter.next(); + + final List certChain = module.getPrivateKeyEntry(entryID).getCertificateChain(); + + if (certChain != null && !certChain.isEmpty()) { + Logger.trace("Returning Certificate!"); + final Certificate keyCert = (Certificate) certChain.get(0); + final byte[] certData = keyCert.getEncoded(); + response.setStatus(HttpServletResponse.SC_OK); + response.setContentType("application/pkix-cert"); + response.setHeader("Content-disposition", "attachment; filename=\"" + keyId + ".cer\""); + response.getOutputStream().write(certData); + response.getOutputStream().close(); + return; + } + + break; + } + + // No Certificate could be found! + Logger.warn("Failed to find keys available for Key Identifier " + keyId + " and given authentication."); + response.sendError(HttpServletResponse.SC_NOT_FOUND); + return; + } catch (final Throwable e) { + Logger.error("Unhandled Exception when providing certificate", e); + response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR); + } + } } diff --git a/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/service/ConfigurationServlet.java b/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/service/ConfigurationServlet.java index 6164154..135d652 100644 --- a/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/service/ConfigurationServlet.java +++ b/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/service/ConfigurationServlet.java @@ -21,7 +21,6 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.server.service; import java.io.IOException; @@ -37,7 +36,7 @@ import javax.servlet.http.HttpServletResponse; import at.gv.egovernment.moa.spss.server.config.ConfigurationProvider; import at.gv.egovernment.moa.spss.server.iaik.config.IaikConfigurator; -import at.gv.egovernment.moa.spss.server.init.*; +import at.gv.egovernment.moa.spss.server.init.SystemInitializer; import at.gv.egovernment.moa.spss.util.MessageProvider; import at.gv.egovernment.moaspss.logging.LogMsg; import at.gv.egovernment.moaspss.logging.Logger; @@ -46,36 +45,38 @@ import at.gv.egovernment.moaspss.logging.LoggingContextManager; /** * A servlet to initialize and update the MOA configuration. - * + * * @author Fatemeh Philippi * @author Patrick Peck * @version $Id$ */ public class ConfigurationServlet extends HttpServlet { /** - * - */ - private static final long serialVersionUID = 8372961105222028696L; -/** The document type of the HTML to generate. */ + * + */ + private static final long serialVersionUID = 8372961105222028696L; + /** The document type of the HTML to generate. */ private static final String DOC_TYPE = - "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\">\n"; + "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\">\n"; /** - * Handle a HTTP GET request, used to indicated that the MOA - * configuration needs to be updated (reloaded). - * - * @see javax.servlet.http.HttpServlet#doGet(HttpServletRequest, HttpServletResponse) + * Handle a HTTP GET request, used to indicated that the MOA configuration needs + * to be updated (reloaded). + * + * @see javax.servlet.http.HttpServlet#doGet(HttpServletRequest, + * HttpServletResponse) */ + @Override @SuppressWarnings({ "rawtypes", "unchecked" }) public void doGet(HttpServletRequest request, HttpServletResponse response) - throws ServletException, IOException { + throws ServletException, IOException { - MessageProvider msg = MessageProvider.getInstance(); + final MessageProvider msg = MessageProvider.getInstance(); PrintWriter out; // set up a logging context for logging the reconfiguration LoggingContextManager.getInstance().setLoggingContext( - new LoggingContext("configuration update")); + new LoggingContext("configuration update")); response.setContentType("text/html"); out = response.getWriter(); @@ -84,8 +85,8 @@ public class ConfigurationServlet extends HttpServlet { out.println("<body bgcolor=\"#FFFFFF\">"); try { // reconfigure the system - ConfigurationProvider config = ConfigurationProvider.reload(); - IaikConfigurator iaikConfigurator = new IaikConfigurator(); + final ConfigurationProvider config = ConfigurationProvider.reload(); + final IaikConfigurator iaikConfigurator = new IaikConfigurator(); iaikConfigurator.configure(config); @@ -95,12 +96,12 @@ public class ConfigurationServlet extends HttpServlet { if (!config.getWarnings().isEmpty()) { // print the warnings - List allWarnings = new ArrayList(); + final List allWarnings = new ArrayList(); Iterator iter; - + allWarnings.addAll(config.getWarnings()); allWarnings.addAll(iaikConfigurator.getWarnings()); - + out.println("<p><b>" + msg.getMessage("config.29", null) + "</b></p>"); for (iter = allWarnings.iterator(); iter.hasNext();) { out.println(iter.next() + "<br />"); @@ -108,7 +109,7 @@ public class ConfigurationServlet extends HttpServlet { out.println("<p><b>" + msg.getMessage("config.28", null) + "</b></p>"); } - } catch (Throwable t) { + } catch (final Throwable t) { out.println("<p><b>" + msg.getMessage("config.20", null) + "</b></p>"); out.println("<p><b>" + msg.getMessage("config.28", null) + "</b></p>"); Logger.warn(new LogMsg(msg.getMessage("config.20", null)), t); @@ -117,30 +118,33 @@ public class ConfigurationServlet extends HttpServlet { out.flush(); out.close(); - + // tear down the logging context LoggingContextManager.getInstance().setLoggingContext(null); } /** * Do the same as <code>doGet</code>. - * - * @see javax.servlet.http.HttpServlet#doPost(HttpServletRequest, HttpServletResponse) + * + * @see javax.servlet.http.HttpServlet#doPost(HttpServletRequest, + * HttpServletResponse) */ + @Override public void doPost(HttpServletRequest request, HttpServletResponse response) - throws ServletException, IOException { + throws ServletException, IOException { doGet(request, response); } /** * Perform some initial initialization tasks for the MOA web services * application. - * + * * Does an initial load of the MOA configuration to test if a working web * service can be provided. - * + * * @see javax.servlet.GenericServlet#init() */ + @Override public void init() throws ServletException { SystemInitializer.init(); } diff --git a/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/service/DeleteableDataSourceWrapper.java b/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/service/DeleteableDataSourceWrapper.java index 1d49cd7..f5350af 100644 --- a/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/service/DeleteableDataSourceWrapper.java +++ b/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/service/DeleteableDataSourceWrapper.java @@ -8,36 +8,35 @@ import at.gv.egovernment.moa.spss.server.transaction.DeleteableDataSource; public class DeleteableDataSourceWrapper implements DeleteableDataSource { - private org.apache.axis.attachments.ManagedMemoryDataSource wrapped; - - public DeleteableDataSourceWrapper(org.apache.axis.attachments.ManagedMemoryDataSource wrapped) { - this.wrapped = wrapped; - } - - @Override - public String getContentType() { - return this.wrapped.getContentType(); - } - - @Override - public InputStream getInputStream() throws IOException { - return this.wrapped.getInputStream(); - } - - @Override - public String getName() { - return this.wrapped.getName(); - } - - @Override - public OutputStream getOutputStream() throws IOException { - return this.wrapped.getOutputStream(); - } - - @Override - public void delete() { - this.wrapped.delete(); - } - - + private final org.apache.axis.attachments.ManagedMemoryDataSource wrapped; + + public DeleteableDataSourceWrapper(org.apache.axis.attachments.ManagedMemoryDataSource wrapped) { + this.wrapped = wrapped; + } + + @Override + public String getContentType() { + return this.wrapped.getContentType(); + } + + @Override + public InputStream getInputStream() throws IOException { + return this.wrapped.getInputStream(); + } + + @Override + public String getName() { + return this.wrapped.getName(); + } + + @Override + public OutputStream getOutputStream() throws IOException { + return this.wrapped.getOutputStream(); + } + + @Override + public void delete() { + this.wrapped.delete(); + } + } diff --git a/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/service/ServiceUtils.java b/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/service/ServiceUtils.java index 03eb3d3..c4ad498 100644 --- a/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/service/ServiceUtils.java +++ b/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/service/ServiceUtils.java @@ -21,7 +21,6 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.server.service; import java.io.ByteArrayInputStream; @@ -37,7 +36,7 @@ import at.gv.egovernment.moaspss.util.MOAErrorHandler; /** * Helper methods for the Service classes. - * + * * @author Patrick Peck * @version $Id$ */ @@ -45,59 +44,59 @@ public class ServiceUtils { /** * Schema-validate a request. - * + * * @param request The request to validate. * @throws MOAApplicationException An error occurred validating the requst. */ public static void validateRequest(Element[] request) - throws MOAApplicationException { + throws MOAApplicationException { // validate the request try { DOMUtils.validateElement( - request[0], - Constants.ALL_SCHEMA_LOCATIONS, - null, - new MOASPSSEntityResolver()); - } catch (Exception e) { + request[0], + Constants.ALL_SCHEMA_LOCATIONS, + null, + new MOASPSSEntityResolver()); + } catch (final Exception e) { throw new MOAApplicationException( - "1100", - new Object[] { e.getMessage()}, - e); + "1100", + new Object[] { e.getMessage() }, + e); } } /** * Reparse the request with schema-validation turned on so that ID references * are resolved. - * + * * @param request The request to reparse. * @return The reparsed request. * @throws MOAApplicationException An error occurred parsing the request. */ public static Element reparseRequest(Element request) - throws MOAApplicationException { + throws MOAApplicationException { try { - byte[] requestBytes = DOMUtils.serializeNode(request, "UTF-8"); - Document validatedRequest = DOMUtils.parseDocument(new ByteArrayInputStream(requestBytes), - true, - Constants.ALL_SCHEMA_LOCATIONS, - null, - new MOASPSSEntityResolver(), - new MOAErrorHandler()); - + final byte[] requestBytes = DOMUtils.serializeNode(request, "UTF-8"); + final Document validatedRequest = DOMUtils.parseDocument(new ByteArrayInputStream(requestBytes), + true, + Constants.ONLY_MOASIG_SCHEMA_LOCATIONS, + null, + new MOASPSSEntityResolver(), + new MOAErrorHandler()); + // DOMUtils.parseDocument( // new ByteArrayInputStream(requestBytes), // true, // Constants.ALL_SCHEMA_LOCATIONS, // null); return validatedRequest.getDocumentElement(); - } catch (Exception e) { + } catch (final Exception e) { throw new MOAApplicationException( - "1100", - new Object[] { e.getMessage()}, - e); + "1100", + new Object[] { e.getMessage() }, + e); } } diff --git a/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/service/SignatureCreationService.java b/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/service/SignatureCreationService.java index 4effec6..4030883 100644 --- a/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/service/SignatureCreationService.java +++ b/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/service/SignatureCreationService.java @@ -21,7 +21,6 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.server.service; import java.util.Collections; @@ -43,7 +42,6 @@ import at.gv.egovernment.moa.spss.api.xmlbind.CreateXMLSignatureResponseBuilder; import at.gv.egovernment.moa.spss.api.xmlsign.CreateXMLSignatureRequest; import at.gv.egovernment.moa.spss.api.xmlsign.CreateXMLSignatureResponse; import at.gv.egovernment.moa.spss.server.invoke.CMSSignatureCreationInvoker; -import at.gv.egovernment.moa.spss.server.invoke.PDFASInvoker; import at.gv.egovernment.moa.spss.server.invoke.XMLSignatureCreationInvoker; import at.gv.egovernment.moa.spss.server.transaction.TransactionContext; import at.gv.egovernment.moa.spss.server.transaction.TransactionContextManager; @@ -57,255 +55,261 @@ import at.gv.egovernment.moaspss.util.StreamUtils; /** * The service endpoint for the <code>SignatureCreation</code> web service. - * + * * @author Patrick Peck * @version $Id$ */ public class SignatureCreationService { - - /** - * Handle a <code>CreatePDFSignatureRequest</code>. - * - * @param request The <code>CreatePDFSignatureRequest</code> to work on - * (contained in the 0th element of the array). - * @return A <code>CreatePDFSignatureResponse</code> as the only element of - * the <code>Element</code> array. - * @throws AxisFault An error occurred during handling of the message. - */ - public Element[] CreatePDFSignatureRequest(Element[] request) - throws AxisFault { - Logger.trace("---- Entering SignatureCreationService"); - //PDFSignatureCreationInvoker invoker = - // PDFSignatureCreationInvoker.getInstance(); - Element[] response = new Element[1]; - - // check that we have a CreateXMLSignatureRequest; if not, create an - // AxisFault, just like the org.apache.axis.providers.java.MsgProvider - if (!Constants.MOA_SPSS_CREATE_PDF_REQUEST.equals(request[0].getLocalName()) || - !Constants.MOA_NS_URI.equals(request[0].getNamespaceURI())) - { - QName qname = - new QName(request[0].getNamespaceURI(), request[0].getLocalName()); - throw new AxisFault( - Messages.getMessage("noOperationForQName", qname.toString())); // TODO GK Operation name does not make it into the error repsonse - } - - // handle the request - try { - - // create a parser and builder for binding API objects to/from XML - CreatePDFSignatureRequestParser requestParser = - new CreatePDFSignatureRequestParser(); - CreatePDFSignatureResponseBuilder responseBuilder = - new CreatePDFSignatureResponseBuilder(); - Element reparsedReq; - CreatePDFRequest requestObj; - CreatePDFRespone responseObj = null; - - //since Axis (1.1 ff) has problem with namespaces we take the raw request stored by the Axishandler. - TransactionContext context = TransactionContextManager.getInstance().getTransactionContext(); - - // validate the request - reparsedReq = ServiceUtils.reparseRequest(request[0]);//context.getRequest()); - - // convert to API objects - Logger.trace(">>> preparsing Request"); - requestObj = requestParser.parse(reparsedReq); - Logger.trace("<<< preparsed Request"); - - Logger.trace(">>> creating Signature"); - // invoke the core logic - //responseObj = PDFASInvoker.getInstance().createPDFSignature(requestObj, context.getTransactionID()); - Logger.trace("<<< created Signature"); - - Logger.trace(">>> building Response"); - // map back to XML - response[0] = responseBuilder.build(responseObj).getDocumentElement(); - Logger.trace("<<< built Response"); - - // save response in transaction - context.setResponse(response[0]); - Logger.trace("---- Leaving SignatureCreationService"); - - - } catch (MOAException e) { - AxisFault fault = AxisFault.makeFault(e); - fault.setFaultDetail(new Element[] { e.toErrorResponse()}); - Logger.debug("Anfrage zur Signaturerstellung wurde nicht erfolgreich beendet:" - + System.getProperty("line.separator") + StreamUtils.getStackTraceAsString(e)); - throw fault; - } catch (Throwable t) { - MOASystemException e = new MOASystemException("2900", null, t); - AxisFault fault = AxisFault.makeFault(e); - fault.setFaultDetail(new Element[] { e.toErrorResponse()}); - Logger.debug("Anfrage zur Signaturerstellung wurde nicht erfolgreich beendet:" - + System.getProperty("line.separator") + StreamUtils.getStackTraceAsString(e)); - throw fault; - } - - return response; - } - - /** - * Handle a <code>CreateXMLSignatureRequest</code>. - * - * @param request The <code>CreateXMLSignatureRequest</code> to work on - * (contained in the 0th element of the array). - * @return A <code>CreateXMLSignatureResponse</code> as the only element of - * the <code>Element</code> array. - * @throws AxisFault An error occurred during handling of the message. - */ - public Element[] CreateCMSSignatureRequest(Element[] request) - throws AxisFault { - Logger.trace("---- Entering SignatureCreationService"); - CMSSignatureCreationInvoker invoker = - CMSSignatureCreationInvoker.getInstance(); - Element[] response = new Element[1]; - - // check that we have a CreateXMLSignatureRequest; if not, create an - // AxisFault, just like the org.apache.axis.providers.java.MsgProvider - if (!Constants.MOA_SPSS_CREATE_CMS_REQUEST.equals(request[0].getLocalName()) || - !Constants.MOA_NS_URI.equals(request[0].getNamespaceURI())) - { - QName qname = - new QName(request[0].getNamespaceURI(), request[0].getLocalName()); - throw new AxisFault( - Messages.getMessage("noOperationForQName", qname.toString())); // TODO GK Operation name does not make it into the error repsonse - } - - // handle the request - try { - - // create a parser and builder for binding API objects to/from XML - CreateCMSSignatureRequestParser requestParser = - new CreateCMSSignatureRequestParser(); - CreateCMSSignatureResponseBuilder responseBuilder = - new CreateCMSSignatureResponseBuilder(); - Element reparsedReq; - CreateCMSSignatureRequest requestObj; - CreateCMSSignatureResponse responseObj; - - //since Axis (1.1 ff) has problem with namespaces we take the raw request stored by the Axishandler. - TransactionContext context = TransactionContextManager.getInstance().getTransactionContext(); - - // validate the request - reparsedReq = ServiceUtils.reparseRequest(request[0]);//context.getRequest()); - - // convert to API objects - Logger.trace(">>> preparsing Request"); - requestObj = requestParser.parse(reparsedReq); - Logger.trace("<<< preparsed Request"); - - Logger.trace(">>> creating Signature"); - // invoke the core logic - responseObj = invoker.createCMSSignature(requestObj, Collections.EMPTY_SET); - Logger.trace("<<< created Signature"); - - Logger.trace(">>> building Response"); - // map back to XML - response[0] = responseBuilder.build(responseObj).getDocumentElement(); - Logger.trace("<<< built Response"); - - // save response in transaction - context.setResponse(response[0]); - Logger.trace("---- Leaving SignatureCreationService"); - - - } catch (MOAException e) { - AxisFault fault = AxisFault.makeFault(e); - fault.setFaultDetail(new Element[] { e.toErrorResponse()}); - Logger.debug("Anfrage zur Signaturerstellung wurde nicht erfolgreich beendet:" - + System.getProperty("line.separator") + StreamUtils.getStackTraceAsString(e)); - throw fault; - } catch (Throwable t) { - MOASystemException e = new MOASystemException("2900", null, t); - AxisFault fault = AxisFault.makeFault(e); - fault.setFaultDetail(new Element[] { e.toErrorResponse()}); - Logger.debug("Anfrage zur Signaturerstellung wurde nicht erfolgreich beendet:" - + System.getProperty("line.separator") + StreamUtils.getStackTraceAsString(e)); - throw fault; - } - - return response; - } + + /** + * Handle a <code>CreatePDFSignatureRequest</code>. + * + * @param request The <code>CreatePDFSignatureRequest</code> to work on + * (contained in the 0th element of the array). + * @return A <code>CreatePDFSignatureResponse</code> as the only element of the + * <code>Element</code> array. + * @throws AxisFault An error occurred during handling of the message. + */ + public Element[] CreatePDFSignatureRequest(Element[] request) + throws AxisFault { + Logger.trace("---- Entering SignatureCreationService"); + // PDFSignatureCreationInvoker invoker = + // PDFSignatureCreationInvoker.getInstance(); + final Element[] response = new Element[1]; + + // check that we have a CreateXMLSignatureRequest; if not, create an + // AxisFault, just like the org.apache.axis.providers.java.MsgProvider + if (!Constants.MOA_SPSS_CREATE_PDF_REQUEST.equals(request[0].getLocalName()) || + !Constants.MOA_NS_URI.equals(request[0].getNamespaceURI())) { + final QName qname = + new QName(request[0].getNamespaceURI(), request[0].getLocalName()); + throw new AxisFault( + Messages.getMessage("noOperationForQName", qname.toString())); // TODO GK Operation name does not + // make it into the error repsonse + } + + // handle the request + try { + + // create a parser and builder for binding API objects to/from XML + final CreatePDFSignatureRequestParser requestParser = + new CreatePDFSignatureRequestParser(); + final CreatePDFSignatureResponseBuilder responseBuilder = + new CreatePDFSignatureResponseBuilder(); + Element reparsedReq; + CreatePDFRequest requestObj; + final CreatePDFRespone responseObj = null; + + // since Axis (1.1 ff) has problem with namespaces we take the raw request + // stored by the Axishandler. + final TransactionContext context = TransactionContextManager.getInstance().getTransactionContext(); + + // validate the request + reparsedReq = ServiceUtils.reparseRequest(request[0]);// context.getRequest()); + + // convert to API objects + Logger.trace(">>> preparsing Request"); + requestObj = requestParser.parse(reparsedReq); + Logger.trace("<<< preparsed Request"); + + Logger.trace(">>> creating Signature"); + // invoke the core logic + // responseObj = PDFASInvoker.getInstance().createPDFSignature(requestObj, + // context.getTransactionID()); + + Logger.trace("<<< created Signature"); + + Logger.trace(">>> building Response"); + // map back to XML + response[0] = responseBuilder.build(responseObj).getDocumentElement(); + Logger.trace("<<< built Response"); + + // save response in transaction + context.setResponse(response[0]); + Logger.trace("---- Leaving SignatureCreationService"); + + // TODO: remove if PDF signatures are supported + throw new MOASystemException("Create PAdES signatures is currently NOT supported by MOA-SIG", null); + + // return response; + + } catch (final MOAException e) { + final AxisFault fault = AxisFault.makeFault(e); + fault.setFaultDetail(new Element[] { e.toErrorResponse() }); + Logger.debug("Anfrage zur Signaturerstellung wurde nicht erfolgreich beendet:" + + System.getProperty("line.separator") + StreamUtils.getStackTraceAsString(e)); + throw fault; + } catch (final Throwable t) { + final MOASystemException e = new MOASystemException("2900", null, t); + final AxisFault fault = AxisFault.makeFault(e); + fault.setFaultDetail(new Element[] { e.toErrorResponse() }); + Logger.debug("Anfrage zur Signaturerstellung wurde nicht erfolgreich beendet:" + + System.getProperty("line.separator") + StreamUtils.getStackTraceAsString(e)); + throw fault; + } + + } /** * Handle a <code>CreateXMLSignatureRequest</code>. * * @param request The <code>CreateXMLSignatureRequest</code> to work on - * (contained in the 0th element of the array). - * @return A <code>CreateXMLSignatureResponse</code> as the only element of - * the <code>Element</code> array. + * (contained in the 0th element of the array). + * @return A <code>CreateXMLSignatureResponse</code> as the only element of the + * <code>Element</code> array. + * @throws AxisFault An error occurred during handling of the message. + */ + public Element[] CreateCMSSignatureRequest(Element[] request) + throws AxisFault { + Logger.trace("---- Entering SignatureCreationService"); + final CMSSignatureCreationInvoker invoker = + CMSSignatureCreationInvoker.getInstance(); + final Element[] response = new Element[1]; + + // check that we have a CreateXMLSignatureRequest; if not, create an + // AxisFault, just like the org.apache.axis.providers.java.MsgProvider + if (!Constants.MOA_SPSS_CREATE_CMS_REQUEST.equals(request[0].getLocalName()) || + !Constants.MOA_NS_URI.equals(request[0].getNamespaceURI())) { + final QName qname = + new QName(request[0].getNamespaceURI(), request[0].getLocalName()); + throw new AxisFault( + Messages.getMessage("noOperationForQName", qname.toString())); // TODO GK Operation name does not + // make it into the error repsonse + } + + // handle the request + try { + + // create a parser and builder for binding API objects to/from XML + final CreateCMSSignatureRequestParser requestParser = + new CreateCMSSignatureRequestParser(); + final CreateCMSSignatureResponseBuilder responseBuilder = + new CreateCMSSignatureResponseBuilder(); + Element reparsedReq; + CreateCMSSignatureRequest requestObj; + CreateCMSSignatureResponse responseObj; + + // since Axis (1.1 ff) has problem with namespaces we take the raw request + // stored by the Axishandler. + final TransactionContext context = TransactionContextManager.getInstance().getTransactionContext(); + + // validate the request + reparsedReq = ServiceUtils.reparseRequest(request[0]);// context.getRequest()); + + // convert to API objects + Logger.trace(">>> preparsing Request"); + requestObj = requestParser.parse(reparsedReq); + Logger.trace("<<< preparsed Request"); + + Logger.trace(">>> creating Signature"); + // invoke the core logic + responseObj = invoker.createCMSSignature(requestObj, Collections.EMPTY_SET); + Logger.trace("<<< created Signature"); + + Logger.trace(">>> building Response"); + // map back to XML + response[0] = responseBuilder.build(responseObj).getDocumentElement(); + Logger.trace("<<< built Response"); + + // save response in transaction + context.setResponse(response[0]); + Logger.trace("---- Leaving SignatureCreationService"); + + } catch (final MOAException e) { + final AxisFault fault = AxisFault.makeFault(e); + fault.setFaultDetail(new Element[] { e.toErrorResponse() }); + Logger.debug("Anfrage zur Signaturerstellung wurde nicht erfolgreich beendet:" + + System.getProperty("line.separator") + StreamUtils.getStackTraceAsString(e)); + throw fault; + } catch (final Throwable t) { + final MOASystemException e = new MOASystemException("2900", null, t); + final AxisFault fault = AxisFault.makeFault(e); + fault.setFaultDetail(new Element[] { e.toErrorResponse() }); + Logger.debug("Anfrage zur Signaturerstellung wurde nicht erfolgreich beendet:" + + System.getProperty("line.separator") + StreamUtils.getStackTraceAsString(e)); + throw fault; + } + + return response; + } + + /** + * Handle a <code>CreateXMLSignatureRequest</code>. + * + * @param request The <code>CreateXMLSignatureRequest</code> to work on + * (contained in the 0th element of the array). + * @return A <code>CreateXMLSignatureResponse</code> as the only element of the + * <code>Element</code> array. * @throws AxisFault An error occurred during handling of the message. */ public Element[] CreateXMLSignatureRequest(Element[] request) - throws AxisFault { - Logger.trace("---- Entering SignatureCreationService"); - XMLSignatureCreationInvoker invoker = - XMLSignatureCreationInvoker.getInstance(); - Element[] response = new Element[1]; + throws AxisFault { + Logger.trace("---- Entering SignatureCreationService"); + final XMLSignatureCreationInvoker invoker = + XMLSignatureCreationInvoker.getInstance(); + final Element[] response = new Element[1]; // check that we have a CreateXMLSignatureRequest; if not, create an // AxisFault, just like the org.apache.axis.providers.java.MsgProvider if (!Constants.MOA_SPSS_CREATE_XML_REQUEST.equals(request[0].getLocalName()) || - !Constants.MOA_NS_URI.equals(request[0].getNamespaceURI())) - { - QName qname = - new QName(request[0].getNamespaceURI(), request[0].getLocalName()); + !Constants.MOA_NS_URI.equals(request[0].getNamespaceURI())) { + final QName qname = + new QName(request[0].getNamespaceURI(), request[0].getLocalName()); throw new AxisFault( - Messages.getMessage("noOperationForQName", qname.toString())); // TODO GK Operation name does not make it into the error repsonse + Messages.getMessage("noOperationForQName", qname.toString())); // TODO GK Operation name does not + // make it into the error repsonse } // handle the request try { - + // create a parser and builder for binding API objects to/from XML - CreateXMLSignatureRequestParser requestParser = - new CreateXMLSignatureRequestParser(); - CreateXMLSignatureResponseBuilder responseBuilder = - new CreateXMLSignatureResponseBuilder(); + final CreateXMLSignatureRequestParser requestParser = + new CreateXMLSignatureRequestParser(); + final CreateXMLSignatureResponseBuilder responseBuilder = + new CreateXMLSignatureResponseBuilder(); Element reparsedReq; CreateXMLSignatureRequest requestObj; CreateXMLSignatureResponse responseObj; - //since Axis (1.1 ff) has problem with namespaces we take the raw request stored by the Axishandler. - TransactionContext context = TransactionContextManager.getInstance().getTransactionContext(); - + // since Axis (1.1 ff) has problem with namespaces we take the raw request + // stored by the Axishandler. + final TransactionContext context = TransactionContextManager.getInstance().getTransactionContext(); + // validate the request - reparsedReq = ServiceUtils.reparseRequest(request[0]);//context.getRequest()); + reparsedReq = ServiceUtils.reparseRequest(request[0]);// context.getRequest()); // convert to API objects - Logger.trace(">>> preparsing Request"); + Logger.trace(">>> preparsing Request"); requestObj = requestParser.parse(reparsedReq); - Logger.trace("<<< preparsed Request"); - - Logger.trace(">>> creating Signature"); + Logger.trace("<<< preparsed Request"); + + Logger.trace(">>> creating Signature"); // invoke the core logic responseObj = invoker.createXMLSignature(requestObj, Collections.EMPTY_SET); - Logger.trace("<<< created Signature"); + Logger.trace("<<< created Signature"); - Logger.trace(">>> building Response"); + Logger.trace(">>> building Response"); // map back to XML response[0] = responseBuilder.build(responseObj).getDocumentElement(); - Logger.trace("<<< built Response"); - + Logger.trace("<<< built Response"); + // save response in transaction context.setResponse(response[0]); - Logger.trace("---- Leaving SignatureCreationService"); - - - } catch (MOAException e) { - AxisFault fault = AxisFault.makeFault(e); - fault.setFaultDetail(new Element[] { e.toErrorResponse()}); - Logger.debug("Anfrage zur Signaturerstellung wurde nicht erfolgreich beendet:" - + System.getProperty("line.separator") + StreamUtils.getStackTraceAsString(e)); + Logger.trace("---- Leaving SignatureCreationService"); + + } catch (final MOAException e) { + final AxisFault fault = AxisFault.makeFault(e); + fault.setFaultDetail(new Element[] { e.toErrorResponse() }); + Logger.debug("Anfrage zur Signaturerstellung wurde nicht erfolgreich beendet:" + + System.getProperty("line.separator") + StreamUtils.getStackTraceAsString(e)); throw fault; - } catch (Throwable t) { - MOASystemException e = new MOASystemException("2900", null, t); - AxisFault fault = AxisFault.makeFault(e); - fault.setFaultDetail(new Element[] { e.toErrorResponse()}); - Logger.debug("Anfrage zur Signaturerstellung wurde nicht erfolgreich beendet:" - + System.getProperty("line.separator") + StreamUtils.getStackTraceAsString(e)); + } catch (final Throwable t) { + final MOASystemException e = new MOASystemException("2900", null, t); + final AxisFault fault = AxisFault.makeFault(e); + fault.setFaultDetail(new Element[] { e.toErrorResponse() }); + Logger.debug("Anfrage zur Signaturerstellung wurde nicht erfolgreich beendet:" + + System.getProperty("line.separator") + StreamUtils.getStackTraceAsString(e)); throw fault; } diff --git a/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/service/SignatureVerificationService.java b/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/service/SignatureVerificationService.java index e4d93a7..55cc5c6 100644 --- a/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/service/SignatureVerificationService.java +++ b/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/service/SignatureVerificationService.java @@ -21,21 +21,21 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ - package at.gv.egovernment.moa.spss.server.service; +import java.util.List; + +import org.apache.axis.AxisFault; +import org.w3c.dom.Element; + import at.gv.egiz.asic.api.ASiC; import at.gv.egiz.asic.api.ASiCFactory; -import at.gv.egiz.asic.api.ASiCFormat; import at.gv.egiz.asic.api.ASiCVerificationResult; import at.gv.egiz.asic.impl.ASiCMOAVerifier; import at.gv.egiz.asic.xmlbind.VerifyASICSignatureRequestParser; import at.gv.egiz.asic.xmlbind.VerifyASICSignatureResponseBuilder; import at.gv.egiz.asic.xmlbind.VerifyASiCRequest; import at.gv.egovernment.moa.spss.MOAApplicationException; -import org.apache.axis.AxisFault; -import org.w3c.dom.Element; - import at.gv.egovernment.moa.spss.MOAException; import at.gv.egovernment.moa.spss.MOASystemException; import at.gv.egovernment.moa.spss.api.cmsverify.VerifyCMSSignatureRequest; @@ -54,192 +54,189 @@ import at.gv.egovernment.moa.spss.server.transaction.TransactionContextManager; import at.gv.egovernment.moaspss.logging.Logger; import at.gv.egovernment.moaspss.util.StreamUtils; -import java.io.FileInputStream; -import java.util.List; - /** * The service endpoint for the <code>SignatureVerification</code> web service. - * + * * @author Patrick Peck * @version $Id$ */ public class SignatureVerificationService { - /** - * Handle a <code>VerifyPDFSignatureRequest</code>. - * - * @param request The <code>VerifyPDFSignatureRequest</code> to work on - * (contained in the 0th element of the array). - * @return A <code>VerifyPDFSignatureResponse</code> as the only element of - * the <code>Element</code> array. - * @throws AxisFault An error occurred during handling of the message. - */ - public Element[] VerifyPDFSignatureRequest(Element[] request) - throws AxisFault { - CMSSignatureVerificationInvoker invoker = - CMSSignatureVerificationInvoker.getInstance(); - Element[] response = new Element[1]; - - try { - - // create a parser and builder for binding API objects to/from XML - VerifyCMSSignatureRequestParser requestParser = - new VerifyCMSSignatureRequestParser(); - VerifyPDFSignatureResponseBuilder responseBuilder = - new VerifyPDFSignatureResponseBuilder(); - Element reparsedReq; - VerifyCMSSignatureRequest requestObj; - VerifyCMSSignatureResponse responseObj; - // create a parser and builder for binding API objects to/from XML - /*VerifyPDFRequestParser requestParser = - new VerifyPDFRequestParser(); - VerifyPDFResponseBuilder responseBuilder = - new VerifyPDFResponseBuilder(); - Element reparsedReq; - VerifyPDFRequest requestObj; - VerifyPDFResponse responseObj;*/ - - //since Axis (1.1 ff) has problem with namespaces we take the raw request stored by the Axishandler. - TransactionContext context = TransactionContextManager.getInstance().getTransactionContext(); - // validate the request - reparsedReq = ServiceUtils.reparseRequest(request[0]);//context.getRequest()); - - // convert to API objects - requestObj = requestParser.parsePDF(reparsedReq); - - // invoke the core logic - responseObj = invoker.verifyCMSSignature(requestObj); - - // map back to XML - response[0] = responseBuilder.build(responseObj).getDocumentElement(); - - // save response in transaction - context.setResponse(response[0]); - - - } catch (MOAException e) { - AxisFault fault = AxisFault.makeFault(e); - fault.setFaultDetail(new Element[] { e.toErrorResponse()}); - Logger.debug("Anfrage zur Signaturpruefung wurde nicht erfolgreich beendet:" - + System.getProperty("line.separator") + StreamUtils.getStackTraceAsString(e)); - throw fault; - } catch (Throwable t) { - MOASystemException e = new MOASystemException("2900", null, t); - AxisFault fault = AxisFault.makeFault(e); - fault.setFaultDetail(new Element[] { e.toErrorResponse()}); - Logger.debug("Anfrage zur Signaturpruefung wurde nicht erfolgreich beendet:" - + System.getProperty("line.separator") + StreamUtils.getStackTraceAsString(e)); - throw fault; - } - - return response; - } - - - /** - * Handle a <code>VerifyPDFSignatureRequest</code>. - * - * @param request The <code>VerifyPDFSignatureRequest</code> to work on - * (contained in the 0th element of the array). - * @return A <code>VerifyPDFSignatureResponse</code> as the only element of - * the <code>Element</code> array. - * @throws AxisFault An error occurred during handling of the message. - */ - public Element[] VerifyASICSignatureRequest(Element[] request) - throws AxisFault { - CMSSignatureVerificationInvoker invoker = - CMSSignatureVerificationInvoker.getInstance(); - Element[] response = new Element[1]; - - try { - - // create a parser and builder for binding API objects to/from XML - VerifyASICSignatureRequestParser requestParser = - new VerifyASICSignatureRequestParser(); - VerifyASICSignatureResponseBuilder responseBuilder = - new VerifyASICSignatureResponseBuilder(); - Element reparsedReq; - VerifyASiCRequest requestObj; - VerifyCMSSignatureResponse responseObj; - // create a parser and builder for binding API objects to/from XML - - //since Axis (1.1 ff) has problem with namespaces we take the raw request stored by the Axishandler. - TransactionContext context = TransactionContextManager.getInstance().getTransactionContext(); - // validate the request - reparsedReq = ServiceUtils.reparseRequest(request[0]);//context.getRequest()); - - // convert to API objects - requestObj = requestParser.parseASIC(reparsedReq); - - if(requestObj.getFormat() == null) { - throw new MOAApplicationException("asic.0006", null); - } - - ASiC aSiC = ASiCFactory.parseASiC(requestObj.getAsicInput(), - requestObj.getFormat()); - - Logger.debug("Got ASiC " + aSiC); - - // invoke the core logic - ASiCMOAVerifier v = new ASiCMOAVerifier(); - List<ASiCVerificationResult> results = v.verify(aSiC, - requestObj.getTrustProfile(), requestObj.getDate()); - - // map back to XML - response[0] = responseBuilder.build(results).getDocumentElement(); - - // save response in transaction - context.setResponse(response[0]); - - } catch (MOAException e) { - AxisFault fault = AxisFault.makeFault(e); - fault.setFaultDetail(new Element[] { e.toErrorResponse()}); - Logger.debug("Anfrage zur Signaturpruefung wurde nicht erfolgreich beendet:" - + System.getProperty("line.separator") + StreamUtils.getStackTraceAsString(e)); - throw fault; - } catch (Throwable t) { - MOASystemException e = new MOASystemException("2900", null, t); - AxisFault fault = AxisFault.makeFault(e); - fault.setFaultDetail(new Element[] { e.toErrorResponse()}); - Logger.debug("Anfrage zur Signaturpruefung wurde nicht erfolgreich beendet:" - + System.getProperty("line.separator") + StreamUtils.getStackTraceAsString(e)); - throw fault; - } - - return response; + /** + * Handle a <code>VerifyPDFSignatureRequest</code>. + * + * @param request The <code>VerifyPDFSignatureRequest</code> to work on + * (contained in the 0th element of the array). + * @return A <code>VerifyPDFSignatureResponse</code> as the only element of the + * <code>Element</code> array. + * @throws AxisFault An error occurred during handling of the message. + */ + public Element[] VerifyPDFSignatureRequest(Element[] request) + throws AxisFault { + final CMSSignatureVerificationInvoker invoker = + CMSSignatureVerificationInvoker.getInstance(); + final Element[] response = new Element[1]; + + try { + + // create a parser and builder for binding API objects to/from XML + final VerifyCMSSignatureRequestParser requestParser = + new VerifyCMSSignatureRequestParser(); + final VerifyPDFSignatureResponseBuilder responseBuilder = + new VerifyPDFSignatureResponseBuilder(); + Element reparsedReq; + VerifyCMSSignatureRequest requestObj; + VerifyCMSSignatureResponse responseObj; + // create a parser and builder for binding API objects to/from XML + /* + * VerifyPDFRequestParser requestParser = new VerifyPDFRequestParser(); + * VerifyPDFResponseBuilder responseBuilder = new VerifyPDFResponseBuilder(); + * Element reparsedReq; VerifyPDFRequest requestObj; VerifyPDFResponse + * responseObj; + */ + + // since Axis (1.1 ff) has problem with namespaces we take the raw request + // stored by the Axishandler. + final TransactionContext context = TransactionContextManager.getInstance().getTransactionContext(); + // validate the request + reparsedReq = ServiceUtils.reparseRequest(request[0]);// context.getRequest()); + + // convert to API objects + requestObj = requestParser.parsePDF(reparsedReq); + + // invoke the core logic + responseObj = invoker.verifyCMSSignature(requestObj); + + // map back to XML + response[0] = responseBuilder.build(responseObj).getDocumentElement(); + + // save response in transaction + context.setResponse(response[0]); + + } catch (final MOAException e) { + final AxisFault fault = AxisFault.makeFault(e); + fault.setFaultDetail(new Element[] { e.toErrorResponse() }); + Logger.debug("Anfrage zur Signaturpruefung wurde nicht erfolgreich beendet:" + + System.getProperty("line.separator") + StreamUtils.getStackTraceAsString(e)); + throw fault; + } catch (final Throwable t) { + final MOASystemException e = new MOASystemException("2900", null, t); + final AxisFault fault = AxisFault.makeFault(e); + fault.setFaultDetail(new Element[] { e.toErrorResponse() }); + Logger.debug("Anfrage zur Signaturpruefung wurde nicht erfolgreich beendet:" + + System.getProperty("line.separator") + StreamUtils.getStackTraceAsString(e)); + throw fault; } - + + return response; + } + + /** + * Handle a <code>VerifyPDFSignatureRequest</code>. + * + * @param request The <code>VerifyPDFSignatureRequest</code> to work on + * (contained in the 0th element of the array). + * @return A <code>VerifyPDFSignatureResponse</code> as the only element of the + * <code>Element</code> array. + * @throws AxisFault An error occurred during handling of the message. + */ + public Element[] VerifyASICSignatureRequest(Element[] request) + throws AxisFault { + final CMSSignatureVerificationInvoker invoker = + CMSSignatureVerificationInvoker.getInstance(); + final Element[] response = new Element[1]; + + try { + + // create a parser and builder for binding API objects to/from XML + final VerifyASICSignatureRequestParser requestParser = + new VerifyASICSignatureRequestParser(); + final VerifyASICSignatureResponseBuilder responseBuilder = + new VerifyASICSignatureResponseBuilder(); + Element reparsedReq; + VerifyASiCRequest requestObj; + final VerifyCMSSignatureResponse responseObj; + // create a parser and builder for binding API objects to/from XML + + // since Axis (1.1 ff) has problem with namespaces we take the raw request + // stored by the Axishandler. + final TransactionContext context = TransactionContextManager.getInstance().getTransactionContext(); + // validate the request + reparsedReq = ServiceUtils.reparseRequest(request[0]);// context.getRequest()); + + // convert to API objects + requestObj = requestParser.parseASIC(reparsedReq); + + if (requestObj.getFormat() == null) { + throw new MOAApplicationException("asic.0006", null); + } + + final ASiC aSiC = ASiCFactory.parseASiC(requestObj.getAsicInput(), + requestObj.getFormat()); + + Logger.debug("Got ASiC " + aSiC); + + // invoke the core logic + final ASiCMOAVerifier v = new ASiCMOAVerifier(); + final List<ASiCVerificationResult> results = v.verify(aSiC, + requestObj.getTrustProfile(), requestObj.getDate()); + + // map back to XML + response[0] = responseBuilder.build(results).getDocumentElement(); + + // save response in transaction + context.setResponse(response[0]); + + } catch (final MOAException e) { + final AxisFault fault = AxisFault.makeFault(e); + fault.setFaultDetail(new Element[] { e.toErrorResponse() }); + Logger.debug("Anfrage zur Signaturpruefung wurde nicht erfolgreich beendet:" + + System.getProperty("line.separator") + StreamUtils.getStackTraceAsString(e)); + throw fault; + } catch (final Throwable t) { + final MOASystemException e = new MOASystemException("2900", null, t); + final AxisFault fault = AxisFault.makeFault(e); + fault.setFaultDetail(new Element[] { e.toErrorResponse() }); + Logger.debug("Anfrage zur Signaturpruefung wurde nicht erfolgreich beendet:" + + System.getProperty("line.separator") + StreamUtils.getStackTraceAsString(e)); + throw fault; + } + + return response; + } + /** * Handle a <code>VerifyCMSSignatureRequest</code>. - * + * * @param request The <code>VerifyCMSSignatureRequest</code> to work on - * (contained in the 0th element of the array). - * @return A <code>VerifyCMSSignatureResponse</code> as the only element of - * the <code>Element</code> array. + * (contained in the 0th element of the array). + * @return A <code>VerifyCMSSignatureResponse</code> as the only element of the + * <code>Element</code> array. * @throws AxisFault An error occurred during handling of the message. */ public Element[] VerifyCMSSignatureRequest(Element[] request) - throws AxisFault { - CMSSignatureVerificationInvoker invoker = - CMSSignatureVerificationInvoker.getInstance(); - Element[] response = new Element[1]; - + throws AxisFault { + final CMSSignatureVerificationInvoker invoker = + CMSSignatureVerificationInvoker.getInstance(); + final Element[] response = new Element[1]; + try { - + // create a parser and builder for binding API objects to/from XML - VerifyCMSSignatureRequestParser requestParser = - new VerifyCMSSignatureRequestParser(); - VerifyCMSSignatureResponseBuilder responseBuilder = - new VerifyCMSSignatureResponseBuilder(); + final VerifyCMSSignatureRequestParser requestParser = + new VerifyCMSSignatureRequestParser(); + final VerifyCMSSignatureResponseBuilder responseBuilder = + new VerifyCMSSignatureResponseBuilder(); Element reparsedReq; VerifyCMSSignatureRequest requestObj; VerifyCMSSignatureResponse responseObj; - //since Axis (1.1 ff) has problem with namespaces we take the raw request stored by the Axishandler. - TransactionContext context = TransactionContextManager.getInstance().getTransactionContext(); + // since Axis (1.1 ff) has problem with namespaces we take the raw request + // stored by the Axishandler. + final TransactionContext context = TransactionContextManager.getInstance().getTransactionContext(); // validate the request - reparsedReq = ServiceUtils.reparseRequest(request[0]);//context.getRequest()); - + reparsedReq = ServiceUtils.reparseRequest(request[0]);// context.getRequest()); + // convert to API objects requestObj = requestParser.parse(reparsedReq); @@ -251,20 +248,19 @@ public class SignatureVerificationService { // save response in transaction context.setResponse(response[0]); - - - } catch (MOAException e) { - AxisFault fault = AxisFault.makeFault(e); - fault.setFaultDetail(new Element[] { e.toErrorResponse()}); - Logger.debug("Anfrage zur Signaturpruefung wurde nicht erfolgreich beendet:" - + System.getProperty("line.separator") + StreamUtils.getStackTraceAsString(e)); + + } catch (final MOAException e) { + final AxisFault fault = AxisFault.makeFault(e); + fault.setFaultDetail(new Element[] { e.toErrorResponse() }); + Logger.debug("Anfrage zur Signaturpruefung wurde nicht erfolgreich beendet:" + + System.getProperty("line.separator") + StreamUtils.getStackTraceAsString(e)); throw fault; - } catch (Throwable t) { - MOASystemException e = new MOASystemException("2900", null, t); - AxisFault fault = AxisFault.makeFault(e); - fault.setFaultDetail(new Element[] { e.toErrorResponse()}); - Logger.debug("Anfrage zur Signaturpruefung wurde nicht erfolgreich beendet:" - + System.getProperty("line.separator") + StreamUtils.getStackTraceAsString(e)); + } catch (final Throwable t) { + final MOASystemException e = new MOASystemException("2900", null, t); + final AxisFault fault = AxisFault.makeFault(e); + fault.setFaultDetail(new Element[] { e.toErrorResponse() }); + Logger.debug("Anfrage zur Signaturpruefung wurde nicht erfolgreich beendet:" + + System.getProperty("line.separator") + StreamUtils.getStackTraceAsString(e)); throw fault; } @@ -273,60 +269,60 @@ public class SignatureVerificationService { /** * Handle a <code>VerifyXMLSignatureRequest</code>. - * + * * @param request The <code>VerifyXMLSignatureRequest</code> to work on - * (contained in the 0th element of the array). - * @return A <code>VerifyXMLSignatureResponse</code> as the only element of - * the <code>Element</code> array. + * (contained in the 0th element of the array). + * @return A <code>VerifyXMLSignatureResponse</code> as the only element of the + * <code>Element</code> array. * @throws AxisFault An error occurred during handling of the message. */ public Element[] VerifyXMLSignatureRequest(Element[] request) - throws AxisFault { - XMLSignatureVerificationInvoker invoker = - XMLSignatureVerificationInvoker.getInstance(); - Element[] response = new Element[1]; + throws AxisFault { + final XMLSignatureVerificationInvoker invoker = + XMLSignatureVerificationInvoker.getInstance(); + final Element[] response = new Element[1]; try { - - // create a parser and builder for binding API objects to/from XML - VerifyXMLSignatureRequestParser requestParser = - new VerifyXMLSignatureRequestParser(); - VerifyXMLSignatureResponseBuilder responseBuilder = - new VerifyXMLSignatureResponseBuilder(); + + // create a parser and builder for binding API objects to/from XML + final VerifyXMLSignatureRequestParser requestParser = + new VerifyXMLSignatureRequestParser(); + final VerifyXMLSignatureResponseBuilder responseBuilder = + new VerifyXMLSignatureResponseBuilder(); Element reparsedReq; VerifyXMLSignatureRequest requestObj; VerifyXMLSignatureResponse responseObj; - //since Axis (1.1 ff) has problem with namespaces we take the raw request stored by the Axishandler. - TransactionContext context = TransactionContextManager.getInstance().getTransactionContext(); + // since Axis (1.1 ff) has problem with namespaces we take the raw request + // stored by the Axishandler. + final TransactionContext context = TransactionContextManager.getInstance().getTransactionContext(); // validate the request reparsedReq = ServiceUtils.reparseRequest(context.getRequest()); - + // convert to API objects requestObj = requestParser.parse(reparsedReq); - + // invoke the core logic responseObj = invoker.verifyXMLSignature(requestObj); // map back to XML response[0] = responseBuilder.build(responseObj).getDocumentElement(); - + // save response in transaction context.setResponse(response[0]); - - } catch (MOAException e) { - AxisFault fault = AxisFault.makeFault(e); - fault.setFaultDetail(new Element[] { e.toErrorResponse()}); - Logger.debug("Anfrage zur Signaturpruefung wurde nicht erfolgreich beendet:" - + System.getProperty("line.separator") + StreamUtils.getStackTraceAsString(e)); + } catch (final MOAException e) { + final AxisFault fault = AxisFault.makeFault(e); + fault.setFaultDetail(new Element[] { e.toErrorResponse() }); + Logger.debug("Anfrage zur Signaturpruefung wurde nicht erfolgreich beendet:" + + System.getProperty("line.separator") + StreamUtils.getStackTraceAsString(e)); throw fault; - } catch (Throwable t) { - MOASystemException e = new MOASystemException("2900", null, t); - AxisFault fault = AxisFault.makeFault(e); - fault.setFaultDetail(new Element[] { e.toErrorResponse()}); - Logger.debug("Anfrage zur Signaturpruefung wurde nicht erfolgreich beendet:" - + System.getProperty("line.separator") + StreamUtils.getStackTraceAsString(e)); + } catch (final Throwable t) { + final MOASystemException e = new MOASystemException("2900", null, t); + final AxisFault fault = AxisFault.makeFault(e); + fault.setFaultDetail(new Element[] { e.toErrorResponse() }); + Logger.debug("Anfrage zur Signaturpruefung wurde nicht erfolgreich beendet:" + + System.getProperty("line.separator") + StreamUtils.getStackTraceAsString(e)); throw fault; } diff --git a/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/service/TSLClientStatusServlet.java b/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/service/TSLClientStatusServlet.java new file mode 100644 index 0000000..3bf9a37 --- /dev/null +++ b/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/service/TSLClientStatusServlet.java @@ -0,0 +1,83 @@ +package at.gv.egovernment.moa.spss.server.service; + +import java.io.IOException; +import java.io.PrintWriter; +import java.text.MessageFormat; +import java.util.List; + +import javax.servlet.ServletException; +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import at.gv.egovernment.moa.sig.tsl.engine.data.TSLProcessingResultElement; +import at.gv.egovernment.moa.spss.server.monitoring.ServiceStatusContainer; + +public class TSLClientStatusServlet extends HttpServlet { + + /** + * + */ + private static final long serialVersionUID = 1L; + + public static final String STATUS_RESP = "'{'\"EUTSLStatus\":\"{0}\", \"EUTSLStatusMsg\":\"{1}\"{2}'}'"; + public static final String DETAIL_INFO = ", \"Details\":'{'{0}'}'"; + // public static final String DETAIL_ENTRY = "\"{0}\":'{'\"verified\":\"{1}\", + // \"processed\":\"{2}\"'}'"; + public static final String DETAIL_ENTRY = "\"{0}\":'{'\"processed\":\"{2}\"'}'"; + + @Override + public void doGet(HttpServletRequest request, HttpServletResponse response) + throws ServletException, IOException { + + if (ServiceStatusContainer.getStatus()) { + response.setStatus(200); + } else { + response.setStatus(500); + } + + response.setContentType("application/json"); + final PrintWriter out = response.getWriter(); + out.println(MessageFormat.format(STATUS_RESP, + new Object[] { + String.valueOf(ServiceStatusContainer.getStatus()), + ServiceStatusContainer.getStatusMsg(), + getTSLClientDetailInfos() + })); + out.flush(); + out.close(); + + } + + private String getTSLClientDetailInfos() { + String detailInfo = ""; + final List<TSLProcessingResultElement> tslDetailStatus = ServiceStatusContainer.getTslDetailStatus(); + if (tslDetailStatus != null) { + String detailElements = null; + + for (final TSLProcessingResultElement el : tslDetailStatus) { + final String entry = MessageFormat.format(DETAIL_ENTRY, + new Object[] { + el.getCountryCode(), + String.valueOf(el.isVerified()), + String.valueOf(el.isProcessed()) + }); + if (detailElements == null) { + detailElements = entry; + } else { + detailElements += ", " + entry; + } + + } + + if (detailElements != null) { + detailInfo = MessageFormat.format(DETAIL_INFO, + new Object[] { + detailElements + }); + } + } + + return detailInfo; + } +} diff --git a/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/webservice/CMSCreateSignatureBinding.java b/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/webservice/CMSCreateSignatureBinding.java index c6a1b01..264abd5 100644 --- a/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/webservice/CMSCreateSignatureBinding.java +++ b/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/webservice/CMSCreateSignatureBinding.java @@ -6,9 +6,9 @@ import at.gv.egovernment.moa.spss.MOAApplicationException; import at.gv.egovernment.moa.spss.api.cmssign.CreateCMSSignatureResponse; public interface CMSCreateSignatureBinding { - public at.gv.egovernment.moa.spss.api.cmssign.CreateCMSSignatureRequest buildCMSRequest( - CreateCMSSignatureRequest createCMSSignatureRequest) throws MOAApplicationException; + at.gv.egovernment.moa.spss.api.cmssign.CreateCMSSignatureRequest buildCMSRequest( + CreateCMSSignatureRequest createCMSSignatureRequest) throws MOAApplicationException; - public CreateCMSSignatureResponseType buildCMSResponse(CreateCMSSignatureResponse response) - throws MOAApplicationException; + CreateCMSSignatureResponseType buildCMSResponse(CreateCMSSignatureResponse response) + throws MOAApplicationException; } diff --git a/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/webservice/CMSVerifySignatureBinding.java b/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/webservice/CMSVerifySignatureBinding.java index d878b26..02a838c 100644 --- a/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/webservice/CMSVerifySignatureBinding.java +++ b/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/webservice/CMSVerifySignatureBinding.java @@ -8,16 +8,16 @@ import at.gv.egovernment.moa.spss.MOAApplicationException; import at.gv.egovernment.moa.spss.api.cmsverify.VerifyCMSSignatureResponse; public interface CMSVerifySignatureBinding { - public at.gv.egovernment.moa.spss.api.cmsverify.VerifyCMSSignatureRequest buildCMSRequest( - VerifyCMSSignatureRequest verifyCMSSignatureRequest) throws MOAApplicationException; + at.gv.egovernment.moa.spss.api.cmsverify.VerifyCMSSignatureRequest buildCMSRequest( + VerifyCMSSignatureRequest verifyCMSSignatureRequest) throws MOAApplicationException; + + at.gv.egovernment.moa.spss.api.cmsverify.VerifyCMSSignatureRequest buildPDFRequest( + VerifyPDFSignatureRequest verifyPDFSignatureRequest) throws MOAApplicationException; + + VerifyCMSSignatureResponseType buildCMSResponse(VerifyCMSSignatureResponse response) + throws MOAApplicationException; + + VerifyPDFSignatureResponseType buildPDFResponse(VerifyCMSSignatureResponse response) + throws MOAApplicationException; - public at.gv.egovernment.moa.spss.api.cmsverify.VerifyCMSSignatureRequest buildPDFRequest( - VerifyPDFSignatureRequest verifyPDFSignatureRequest) throws MOAApplicationException; - - public VerifyCMSSignatureResponseType buildCMSResponse(VerifyCMSSignatureResponse response) - throws MOAApplicationException; - - public VerifyPDFSignatureResponseType buildPDFResponse(VerifyCMSSignatureResponse response) - throws MOAApplicationException; - } diff --git a/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/webservice/PDFCreateSignatureBinding.java b/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/webservice/PDFCreateSignatureBinding.java index bb670b7..b5aae78 100644 --- a/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/webservice/PDFCreateSignatureBinding.java +++ b/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/webservice/PDFCreateSignatureBinding.java @@ -7,9 +7,9 @@ import at.gv.egovernment.moa.spss.server.xmlbind.CreatePDFRequest; import at.gv.egovernment.moa.spss.server.xmlbind.CreatePDFRespone; public interface PDFCreateSignatureBinding { - public CreatePDFRequest buildPDFRequest( - CreatePDFSignatureRequest createCMSSignatureRequest) throws MOAApplicationException; + CreatePDFRequest buildPDFRequest( + CreatePDFSignatureRequest createCMSSignatureRequest) throws MOAApplicationException; - public CreatePDFSignatureResponseType buildPDFResponse(CreatePDFRespone response) - throws MOAApplicationException; + CreatePDFSignatureResponseType buildPDFResponse(CreatePDFRespone response) + throws MOAApplicationException; } diff --git a/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/webservice/SignatureCreationService.java b/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/webservice/SignatureCreationService.java index ccfc3fc..bf06ff6 100644 --- a/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/webservice/SignatureCreationService.java +++ b/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/webservice/SignatureCreationService.java @@ -4,21 +4,29 @@ import javax.jws.WebMethod; import javax.jws.WebParam; import javax.jws.WebService; -@WebService(name = "SignatureCreationService", targetNamespace = "http://reference.e-government.gv.at/namespace/moa/20151109#") +@WebService(name = "SignatureCreationService", + targetNamespace = "http://reference.e-government.gv.at/namespace/moa/20151109#") public interface SignatureCreationService { - @WebMethod(action = "XMLSignatureCreate", operationName = "XMLSignatureCreate") - public at.gv.egiz.moasig.CreateXMLSignatureResponseType createXMLSignature( - @WebParam(name = "CreateXMLSignatureRequest") at.gv.egiz.moasig.CreateXMLSignatureRequest createXMLSignatureRequest) - throws Exception; - - @WebMethod(action = "CMSSignatureCreate", operationName = "CMSSignatureCreate") - public at.gv.egiz.moasig.CreateCMSSignatureResponseType createCMSSignature( - @WebParam(name = "CreateCMSSignatureRequest") at.gv.egiz.moasig.CreateCMSSignatureRequest createCMSSignatureRequest) - throws Exception; - - /*@WebMethod(action = "PDFSignatureCreate", operationName = "PDFSignatureCreate") - public at.gv.egiz.moasig.CreatePDFSignatureResponseType createPDFSignature( - @WebParam(name = "CreatePDFSignatureRequest") at.gv.egiz.moasig.CreatePDFSignatureRequest createPDFSignatureRequest) - throws Exception;*/ + @WebMethod(action = "XMLSignatureCreate", operationName = "XMLSignatureCreate") + at.gv.egiz.moasig.CreateXMLSignatureResponseType createXMLSignature( + @WebParam( + name = "CreateXMLSignatureRequest") at.gv.egiz.moasig.CreateXMLSignatureRequest createXMLSignatureRequest) + throws Exception; + + @WebMethod(action = "CMSSignatureCreate", operationName = "CMSSignatureCreate") + at.gv.egiz.moasig.CreateCMSSignatureResponseType createCMSSignature( + @WebParam( + name = "CreateCMSSignatureRequest") at.gv.egiz.moasig.CreateCMSSignatureRequest createCMSSignatureRequest) + throws Exception; + + /* + * @WebMethod(action = "PDFSignatureCreate", operationName = + * "PDFSignatureCreate") public at.gv.egiz.moasig.CreatePDFSignatureResponseType + * createPDFSignature( + * + * @WebParam(name = "CreatePDFSignatureRequest") + * at.gv.egiz.moasig.CreatePDFSignatureRequest createPDFSignatureRequest) throws + * Exception; + */ } diff --git a/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/webservice/SignatureVerificationService.java b/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/webservice/SignatureVerificationService.java index 65de3bf..b2ee799 100644 --- a/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/webservice/SignatureVerificationService.java +++ b/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/webservice/SignatureVerificationService.java @@ -4,22 +4,26 @@ import javax.jws.WebMethod; import javax.jws.WebParam; import javax.jws.WebService; -@WebService(name = "SignatureVerificationService", targetNamespace = "http://reference.e-government.gv.at/namespace/moa/20151109#") +@WebService(name = "SignatureVerificationService", + targetNamespace = "http://reference.e-government.gv.at/namespace/moa/20151109#") public interface SignatureVerificationService { - @WebMethod(action = "XMLSignatureVerify", operationName = "XMLSignatureVerify") - public at.gv.egiz.moasig.VerifyXMLSignatureResponseType verifyXMLSignature( - @WebParam(name = "VerifyXMLSignatureRequest") at.gv.egiz.moasig.VerifyXMLSignatureRequest verifyXMLSignatureRequest) - throws Exception; - - @WebMethod(action = "CMSSignatureVerify", operationName = "CMSSignatureVerify") - public at.gv.egiz.moasig.VerifyCMSSignatureResponseType verifyCMSSignature( - @WebParam(name = "VerifyCMSSignatureRequest") at.gv.egiz.moasig.VerifyCMSSignatureRequest verifyCMSSignatureRequest) - throws Exception; - - @WebMethod(action = "PDFSignatureVerify", operationName = "PDFSignatureVerify") - public at.gv.egiz.moasig.VerifyPDFSignatureResponseType verifyPDFSignature( - @WebParam(name = "VerifyPDFSignatureRequest") at.gv.egiz.moasig.VerifyPDFSignatureRequest verifyPDFSignatureRequest) - throws Exception; - + @WebMethod(action = "XMLSignatureVerify", operationName = "XMLSignatureVerify") + at.gv.egiz.moasig.VerifyXMLSignatureResponseType verifyXMLSignature( + @WebParam( + name = "VerifyXMLSignatureRequest") at.gv.egiz.moasig.VerifyXMLSignatureRequest verifyXMLSignatureRequest) + throws Exception; + + @WebMethod(action = "CMSSignatureVerify", operationName = "CMSSignatureVerify") + at.gv.egiz.moasig.VerifyCMSSignatureResponseType verifyCMSSignature( + @WebParam( + name = "VerifyCMSSignatureRequest") at.gv.egiz.moasig.VerifyCMSSignatureRequest verifyCMSSignatureRequest) + throws Exception; + + @WebMethod(action = "PDFSignatureVerify", operationName = "PDFSignatureVerify") + at.gv.egiz.moasig.VerifyPDFSignatureResponseType verifyPDFSignature( + @WebParam( + name = "VerifyPDFSignatureRequest") at.gv.egiz.moasig.VerifyPDFSignatureRequest verifyPDFSignatureRequest) + throws Exception; + } diff --git a/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/webservice/XMLCreateSignatureBinding.java b/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/webservice/XMLCreateSignatureBinding.java index 149095b..f70f120 100644 --- a/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/webservice/XMLCreateSignatureBinding.java +++ b/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/webservice/XMLCreateSignatureBinding.java @@ -6,9 +6,9 @@ import at.gv.egovernment.moa.spss.MOAApplicationException; import at.gv.egovernment.moa.spss.api.xmlsign.CreateXMLSignatureResponse; public interface XMLCreateSignatureBinding { - public at.gv.egovernment.moa.spss.api.xmlsign.CreateXMLSignatureRequest buildXMLRequest( - CreateXMLSignatureRequest createXMLSignatureRequest) throws MOAApplicationException; + at.gv.egovernment.moa.spss.api.xmlsign.CreateXMLSignatureRequest buildXMLRequest( + CreateXMLSignatureRequest createXMLSignatureRequest) throws MOAApplicationException; - public CreateXMLSignatureResponseType buildXMLResponse(CreateXMLSignatureResponse response) - throws MOAApplicationException; + CreateXMLSignatureResponseType buildXMLResponse(CreateXMLSignatureResponse response) + throws MOAApplicationException; } diff --git a/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/webservice/XMLVerifySignatureBinding.java b/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/webservice/XMLVerifySignatureBinding.java index 4a6d110..130cf81 100644 --- a/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/webservice/XMLVerifySignatureBinding.java +++ b/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/webservice/XMLVerifySignatureBinding.java @@ -6,9 +6,9 @@ import at.gv.egovernment.moa.spss.MOAApplicationException; import at.gv.egovernment.moa.spss.api.xmlverify.VerifyXMLSignatureResponse;; public interface XMLVerifySignatureBinding { - public at.gv.egovernment.moa.spss.api.xmlverify.VerifyXMLSignatureRequest buildXMLRequest( - VerifyXMLSignatureRequest verifyXMLSignatureRequest) throws MOAApplicationException; + at.gv.egovernment.moa.spss.api.xmlverify.VerifyXMLSignatureRequest buildXMLRequest( + VerifyXMLSignatureRequest verifyXMLSignatureRequest) throws MOAApplicationException; - public VerifyXMLSignatureResponseType buildXMLResponse(VerifyXMLSignatureResponse response) - throws MOAApplicationException; + VerifyXMLSignatureResponseType buildXMLResponse(VerifyXMLSignatureResponse response) + throws MOAApplicationException; } diff --git a/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/xmlbind/CreatePDFRequest.java b/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/xmlbind/CreatePDFRequest.java index 110665c..5628e4b 100644 --- a/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/xmlbind/CreatePDFRequest.java +++ b/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/xmlbind/CreatePDFRequest.java @@ -4,18 +4,18 @@ import java.util.ArrayList; import java.util.List; public class CreatePDFRequest { - private String keyIdentifier; - private List<PDFSignatureInfo> signatureInfoList = new ArrayList<PDFSignatureInfo>(); - - public CreatePDFRequest(String keyIdentifier) { - this.keyIdentifier = keyIdentifier; - } + private final String keyIdentifier; + private final List<PDFSignatureInfo> signatureInfoList = new ArrayList<>(); - public synchronized String getKeyIdentifier() { - return keyIdentifier; - } + public CreatePDFRequest(String keyIdentifier) { + this.keyIdentifier = keyIdentifier; + } - public synchronized List<PDFSignatureInfo> getSignatureInfoList() { - return signatureInfoList; - } + public synchronized String getKeyIdentifier() { + return keyIdentifier; + } + + public synchronized List<PDFSignatureInfo> getSignatureInfoList() { + return signatureInfoList; + } } diff --git a/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/xmlbind/CreatePDFRespone.java b/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/xmlbind/CreatePDFRespone.java index ef7e832..8cabc78 100644 --- a/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/xmlbind/CreatePDFRespone.java +++ b/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/xmlbind/CreatePDFRespone.java @@ -4,12 +4,12 @@ import java.util.ArrayList; import java.util.List; public class CreatePDFRespone { - private List<SignedPDFInfo> signatureInfoList = new ArrayList<SignedPDFInfo>(); - - public CreatePDFRespone() { - } - - public synchronized List<SignedPDFInfo> getSignatureInfoList() { - return signatureInfoList; - } + private final List<SignedPDFInfo> signatureInfoList = new ArrayList<>(); + + public CreatePDFRespone() { + } + + public synchronized List<SignedPDFInfo> getSignatureInfoList() { + return signatureInfoList; + } } diff --git a/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/xmlbind/CreatePDFSignatureRequestParser.java b/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/xmlbind/CreatePDFSignatureRequestParser.java index c6b2126..e483db8 100644 --- a/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/xmlbind/CreatePDFSignatureRequestParser.java +++ b/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/xmlbind/CreatePDFSignatureRequestParser.java @@ -37,106 +37,99 @@ import at.gv.egovernment.moaspss.util.XPathUtils; /** * A parser to parse <code>CreateCMSSignatureRequest</code> DOM trees into * <code>CreateCMSSignatureRequest</code> API objects. - * + * * @author Patrick Peck * @version $Id$ */ public class CreatePDFSignatureRequestParser { - // - // XPath expresssions to select elements in the CreateCMSSignatureRequest - // - private static final String MOA = Constants.MOA_PREFIX + ":"; - private static final String KEY_IDENTIFIER_XPATH = "/" + MOA + "CreatePDFSignatureRequest/" + MOA + "KeyIdentifier"; - private static final String SINGLE_SIGNATURE_INFO_XPATH = "/" + MOA + "CreatePDFSignatureRequest/" + MOA - + "SingleSignatureInfo"; - private static final String SIGNATURE_PROFILE_XPATH = MOA + "SignatureProfile"; - private static final String SIGNATURE_POSITION_XPATH = MOA + "SignaturePosition"; - private static final String SIGNATURE_ID_XPATH = MOA + "SignatureID"; - - private static final String PDF_DOCUMENT_XPATH = MOA + "PDFDocument"; - - /** - * Create a new <code>CreateCMSSignatureRequestParser</code>. - */ - public CreatePDFSignatureRequestParser() { - } - - /** - * Parse a <code>CreateCMSSignatureRequest</code> DOM element, as defined by - * the MOA schema. - * - * @param requestElem - * The <code>CreateCMSSignatureRequest</code> to parse. The - * request must have been successfully parsed against the schema - * for this method to succeed. - * @return A <code>CreateCMSSignatureRequest</code> API object containing - * the data from the DOM element. - * @throws MOAApplicationException - * An error occurred parsing the request. - */ - public CreatePDFRequest parse(Element requestElem) throws MOAApplicationException { - - String keyIdentifier = XPathUtils.getElementValue(requestElem, KEY_IDENTIFIER_XPATH, null); - - CreatePDFRequest createPDFRequest = new CreatePDFRequest(keyIdentifier); - parseSingleSignatureInfos(requestElem, createPDFRequest); - - return createPDFRequest; - } - - /** - * Parse all <code>SingleSignatureInfo</code> elements of the - * <code>CreateCMSSignatureRequest</code>. - * - * @param requestElem - * The <code>CreateCMSSignatureRequest</code> to parse. - * @return A <code>List</code> of <code>SingleSignatureInfo</code> API - * objects. - * @throws MOAApplicationException - * An error occurred parsing on of the - * <code>SingleSignatureInfo</code> elements. - */ - private void parseSingleSignatureInfos(Element requestElem, CreatePDFRequest createPDFRequest) - throws MOAApplicationException { - - NodeIterator sigInfoElems = XPathUtils.selectNodeIterator(requestElem, SINGLE_SIGNATURE_INFO_XPATH); - Element sigInfoElem; - - while ((sigInfoElem = (Element) sigInfoElems.nextNode()) != null) { - createPDFRequest.getSignatureInfoList().add(parsePDFSignatureInfo(sigInfoElem)); - } - } - - /** - * Parse a <code>SingleSignatureInfo</code> DOM element. - * - * @param sigInfoElem - * The <code>SingleSignatureInfo</code> DOM element to parse. - * @return A <code>SingleSignatureInfo</code> API object containing the - * information of <code>sigInfoElem</code>. - * @throws MOAApplicationException - * An error occurred parsing the - * <code>SingleSignatureInfo</code>. - */ - private PDFSignatureInfo parsePDFSignatureInfo(Element sigInfoElem) throws MOAApplicationException { - - String signatureProfile = XPathUtils.getElementValue(sigInfoElem, SIGNATURE_PROFILE_XPATH, null); - String signaturePosition = XPathUtils.getElementValue(sigInfoElem, SIGNATURE_POSITION_XPATH, null); - String signatureID = XPathUtils.getElementValue(sigInfoElem, SIGNATURE_ID_XPATH, null); - - - Element base64ContentElem = (Element) XPathUtils.selectSingleNode(sigInfoElem, PDF_DOCUMENT_XPATH); - String base64Str = DOMUtils.getText(base64ContentElem); - try { - byte[] inputPDF = Base64Utils.decode(base64Str, true); - PDFSignatureInfo PDFSignatureInfo = new PDFSignatureInfo(inputPDF, - signatureProfile, signaturePosition, signatureID); - - return PDFSignatureInfo; - } catch (IOException e) { - throw new MOAApplicationException("2244", null, e); - } - - } + // + // XPath expresssions to select elements in the CreateCMSSignatureRequest + // + private static final String MOA = Constants.MOA_PREFIX + ":"; + private static final String KEY_IDENTIFIER_XPATH = "/" + MOA + "CreatePDFSignatureRequest/" + MOA + + "KeyIdentifier"; + private static final String SINGLE_SIGNATURE_INFO_XPATH = "/" + MOA + "CreatePDFSignatureRequest/" + MOA + + "SingleSignatureInfo"; + private static final String SIGNATURE_PROFILE_XPATH = MOA + "SignatureProfile"; + private static final String SIGNATURE_POSITION_XPATH = MOA + "SignaturePosition"; + private static final String SIGNATURE_ID_XPATH = MOA + "SignatureID"; + + private static final String PDF_DOCUMENT_XPATH = MOA + "PDFDocument"; + + /** + * Create a new <code>CreateCMSSignatureRequestParser</code>. + */ + public CreatePDFSignatureRequestParser() { + } + + /** + * Parse a <code>CreateCMSSignatureRequest</code> DOM element, as defined by the + * MOA schema. + * + * @param requestElem The <code>CreateCMSSignatureRequest</code> to parse. The + * request must have been successfully parsed against the + * schema for this method to succeed. + * @return A <code>CreateCMSSignatureRequest</code> API object containing the + * data from the DOM element. + * @throws MOAApplicationException An error occurred parsing the request. + */ + public CreatePDFRequest parse(Element requestElem) throws MOAApplicationException { + + final String keyIdentifier = XPathUtils.getElementValue(requestElem, KEY_IDENTIFIER_XPATH, null); + + final CreatePDFRequest createPDFRequest = new CreatePDFRequest(keyIdentifier); + parseSingleSignatureInfos(requestElem, createPDFRequest); + + return createPDFRequest; + } + + /** + * Parse all <code>SingleSignatureInfo</code> elements of the + * <code>CreateCMSSignatureRequest</code>. + * + * @param requestElem The <code>CreateCMSSignatureRequest</code> to parse. + * @return A <code>List</code> of <code>SingleSignatureInfo</code> API objects. + * @throws MOAApplicationException An error occurred parsing on of the + * <code>SingleSignatureInfo</code> elements. + */ + private void parseSingleSignatureInfos(Element requestElem, CreatePDFRequest createPDFRequest) + throws MOAApplicationException { + + final NodeIterator sigInfoElems = XPathUtils.selectNodeIterator(requestElem, SINGLE_SIGNATURE_INFO_XPATH); + Element sigInfoElem; + + while ((sigInfoElem = (Element) sigInfoElems.nextNode()) != null) { + createPDFRequest.getSignatureInfoList().add(parsePDFSignatureInfo(sigInfoElem)); + } + } + + /** + * Parse a <code>SingleSignatureInfo</code> DOM element. + * + * @param sigInfoElem The <code>SingleSignatureInfo</code> DOM element to parse. + * @return A <code>SingleSignatureInfo</code> API object containing the + * information of <code>sigInfoElem</code>. + * @throws MOAApplicationException An error occurred parsing the + * <code>SingleSignatureInfo</code>. + */ + private PDFSignatureInfo parsePDFSignatureInfo(Element sigInfoElem) throws MOAApplicationException { + + final String signatureProfile = XPathUtils.getElementValue(sigInfoElem, SIGNATURE_PROFILE_XPATH, null); + final String signaturePosition = XPathUtils.getElementValue(sigInfoElem, SIGNATURE_POSITION_XPATH, null); + final String signatureID = XPathUtils.getElementValue(sigInfoElem, SIGNATURE_ID_XPATH, null); + + final Element base64ContentElem = (Element) XPathUtils.selectSingleNode(sigInfoElem, PDF_DOCUMENT_XPATH); + final String base64Str = DOMUtils.getText(base64ContentElem); + try { + final byte[] inputPDF = Base64Utils.decode(base64Str, true); + final PDFSignatureInfo PDFSignatureInfo = new PDFSignatureInfo(inputPDF, + signatureProfile, signaturePosition, signatureID); + + return PDFSignatureInfo; + } catch (final IOException e) { + throw new MOAApplicationException("2244", null, e); + } + + } }
\ No newline at end of file diff --git a/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/xmlbind/CreatePDFSignatureResponseBuilder.java b/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/xmlbind/CreatePDFSignatureResponseBuilder.java index bdb9a71..6f9880f 100644 --- a/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/xmlbind/CreatePDFSignatureResponseBuilder.java +++ b/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/xmlbind/CreatePDFSignatureResponseBuilder.java @@ -39,117 +39,114 @@ import at.gv.egovernment.moaspss.util.Constants; /** * Convert a <code>CreateCMSSignatureResponse</code> API object into its XML * representation, according to the MOA XML schema. - * + * * @version $Id$ */ public class CreatePDFSignatureResponseBuilder { - private static final String MOA_NS_URI = Constants.MOA_NS_URI; - - private static final Logger logger = LoggerFactory.getLogger(CreatePDFSignatureResponseBuilder.class); - - /** The XML document containing the response element. */ - private Document responseDoc; - /** The response <code>CreateCMSSignatureResponse</code> DOM element. */ - private Element responseElem; - - /** - * Create a new <code>CreateCMSSignatureResponseBuilder</code>: - * - * @throws MOASystemException - * An error occurred setting up the resulting XML document. - */ - public CreatePDFSignatureResponseBuilder() throws MOASystemException { - responseDoc = ResponseBuilderUtils.createResponse("CreatePDFSignatureResponse"); - responseElem = responseDoc.getDocumentElement(); - } - - /** - * Build a document containing a <code>CreateCMSSignatureResponse</code> DOM - * element being the XML representation of the given - * <code>CreateCMSSignatureResponse</code> API object. - * - * @param response - * The <code>CreateCMSSignatureResponse</code> to convert to XML. - * @return A document containing the <code>CreateCMSSignatureResponse</code> - * DOM element. - */ - public Document build(CreatePDFRespone response) { - Iterator<SignedPDFInfo> iter = response.getSignatureInfoList().iterator(); - - while (iter.hasNext()) { - SignedPDFInfo signedPDFInfo = iter.next(); - addPDFSignature(signedPDFInfo); - } - - return responseDoc; - } - - /** - * Add a <code>CMSSignature</code> element to the response. - * - * @param cmsSignatureResponse - * The content to put under the <code>CMSSignature</code> - * element. - */ - private void addPDFSignature(SignedPDFInfo signedPDFInfo) { - Element pdfSignature = responseDoc.createElementNS(MOA_NS_URI, "PDFSignature"); - - if(signedPDFInfo.getSignatureID() != null) { - Element signatureID = responseDoc.createElementNS(MOA_NS_URI, "SignatureID"); - signatureID.setTextContent(signedPDFInfo.getSignatureID()); - pdfSignature.appendChild(signatureID); - } - - switch (signedPDFInfo.getResponseType()) { - case SignedPDFInfo.SUCCESS_SIGNATURE: - pdfSignature.appendChild(addSuccessSignature(signedPDFInfo)); - break; - - default: - pdfSignature.appendChild(addErrorResponse(signedPDFInfo)); - break; - } - - responseElem.appendChild(pdfSignature); - } - - private Element addSuccessSignature(SignedPDFInfo signedPDFInfo) { - try { - String base64Value = Base64Utils.encode(signedPDFInfo.getPdfDocument()); - Element cmsSignature = responseDoc.createElementNS(MOA_NS_URI, "PDFSignature"); - cmsSignature.setTextContent(base64Value); - - return cmsSignature; - } catch (IOException e) { - logger.error("Failed to encode pdf signature", e); - signedPDFInfo.setErrorCode(2300); - signedPDFInfo.setErrorInfo("Failed to encode the signed document"); - return addErrorResponse(signedPDFInfo); - } - - - } - - /** - * Add a <code>ErrorResponse</code> element to the response. - * - * @param errorResponse - * The API object containing the information to put into the - * <code>ErrorResponse</code> DOM element. - */ - private Element addErrorResponse(SignedPDFInfo signedPDFInfo) { - Element errorElem = responseDoc.createElementNS(MOA_NS_URI, "ErrorResponse"); - Element errorCodeElem = responseDoc.createElementNS(MOA_NS_URI, "ErrorCode"); - Element infoElem = responseDoc.createElementNS(MOA_NS_URI, "Info"); - String errorCodeStr = Integer.toString(signedPDFInfo.getErrorCode()); - - errorCodeElem.appendChild(responseDoc.createTextNode(errorCodeStr)); - errorElem.appendChild(errorCodeElem); - infoElem.appendChild(responseDoc.createTextNode(signedPDFInfo.getErrorInfo())); - errorElem.appendChild(errorCodeElem); - errorElem.appendChild(infoElem); - - return errorElem; - } + private static final String MOA_NS_URI = Constants.MOA_NS_URI; + + private static final Logger logger = LoggerFactory.getLogger(CreatePDFSignatureResponseBuilder.class); + + /** The XML document containing the response element. */ + private final Document responseDoc; + /** The response <code>CreateCMSSignatureResponse</code> DOM element. */ + private final Element responseElem; + + /** + * Create a new <code>CreateCMSSignatureResponseBuilder</code>: + * + * @throws MOASystemException An error occurred setting up the resulting XML + * document. + */ + public CreatePDFSignatureResponseBuilder() throws MOASystemException { + responseDoc = ResponseBuilderUtils.createResponse("CreatePDFSignatureResponse"); + responseElem = responseDoc.getDocumentElement(); + } + + /** + * Build a document containing a <code>CreateCMSSignatureResponse</code> DOM + * element being the XML representation of the given + * <code>CreateCMSSignatureResponse</code> API object. + * + * @param response The <code>CreateCMSSignatureResponse</code> to convert to + * XML. + * @return A document containing the <code>CreateCMSSignatureResponse</code> DOM + * element. + */ + public Document build(CreatePDFRespone response) { + final Iterator<SignedPDFInfo> iter = response.getSignatureInfoList().iterator(); + + while (iter.hasNext()) { + final SignedPDFInfo signedPDFInfo = iter.next(); + addPDFSignature(signedPDFInfo); + } + + return responseDoc; + } + + /** + * Add a <code>CMSSignature</code> element to the response. + * + * @param cmsSignatureResponse The content to put under the + * <code>CMSSignature</code> element. + */ + private void addPDFSignature(SignedPDFInfo signedPDFInfo) { + final Element pdfSignature = responseDoc.createElementNS(MOA_NS_URI, "PDFSignature"); + + if (signedPDFInfo.getSignatureID() != null) { + final Element signatureID = responseDoc.createElementNS(MOA_NS_URI, "SignatureID"); + signatureID.setTextContent(signedPDFInfo.getSignatureID()); + pdfSignature.appendChild(signatureID); + } + + switch (signedPDFInfo.getResponseType()) { + case SignedPDFInfo.SUCCESS_SIGNATURE: + pdfSignature.appendChild(addSuccessSignature(signedPDFInfo)); + break; + + default: + pdfSignature.appendChild(addErrorResponse(signedPDFInfo)); + break; + } + + responseElem.appendChild(pdfSignature); + } + + private Element addSuccessSignature(SignedPDFInfo signedPDFInfo) { + try { + final String base64Value = Base64Utils.encode(signedPDFInfo.getPdfDocument()); + final Element cmsSignature = responseDoc.createElementNS(MOA_NS_URI, "PDFSignature"); + cmsSignature.setTextContent(base64Value); + + return cmsSignature; + } catch (final IOException e) { + logger.error("Failed to encode pdf signature", e); + signedPDFInfo.setErrorCode(2300); + signedPDFInfo.setErrorInfo("Failed to encode the signed document"); + return addErrorResponse(signedPDFInfo); + } + + } + + /** + * Add a <code>ErrorResponse</code> element to the response. + * + * @param errorResponse The API object containing the information to put into + * the <code>ErrorResponse</code> DOM element. + */ + private Element addErrorResponse(SignedPDFInfo signedPDFInfo) { + final Element errorElem = responseDoc.createElementNS(MOA_NS_URI, "ErrorResponse"); + final Element errorCodeElem = responseDoc.createElementNS(MOA_NS_URI, "ErrorCode"); + final Element infoElem = responseDoc.createElementNS(MOA_NS_URI, "Info"); + final String errorCodeStr = Integer.toString(signedPDFInfo.getErrorCode()); + + errorCodeElem.appendChild(responseDoc.createTextNode(errorCodeStr)); + errorElem.appendChild(errorCodeElem); + infoElem.appendChild(responseDoc.createTextNode(signedPDFInfo.getErrorInfo())); + errorElem.appendChild(errorCodeElem); + errorElem.appendChild(infoElem); + + return errorElem; + } } diff --git a/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/xmlbind/PDFSignatureInfo.java b/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/xmlbind/PDFSignatureInfo.java index fd2be7c..3fe8e82 100644 --- a/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/xmlbind/PDFSignatureInfo.java +++ b/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/xmlbind/PDFSignatureInfo.java @@ -1,33 +1,33 @@ package at.gv.egovernment.moa.spss.server.xmlbind; public class PDFSignatureInfo { - private String signatureProfile = null; - private String signaturePosition = null; - private String signatureID = null; - private byte[] pdfDocument = null; - - public PDFSignatureInfo(byte[] pdfDocument, - String signatureProfile, String signaturePosition, - String signatureID) { - this.pdfDocument = pdfDocument; - this.signatureProfile = signatureProfile; - this.signaturePosition = signaturePosition; - this.signatureID = signatureID; - } + private String signatureProfile = null; + private String signaturePosition = null; + private String signatureID = null; + private byte[] pdfDocument = null; - public synchronized String getSignatureProfile() { - return signatureProfile; - } + public PDFSignatureInfo(byte[] pdfDocument, + String signatureProfile, String signaturePosition, + String signatureID) { + this.pdfDocument = pdfDocument; + this.signatureProfile = signatureProfile; + this.signaturePosition = signaturePosition; + this.signatureID = signatureID; + } - public synchronized String getSignaturePosition() { - return signaturePosition; - } + public synchronized String getSignatureProfile() { + return signatureProfile; + } - public synchronized String getSignatureID() { - return signatureID; - } + public synchronized String getSignaturePosition() { + return signaturePosition; + } - public synchronized byte[] getPdfDocument() { - return pdfDocument; - } + public synchronized String getSignatureID() { + return signatureID; + } + + public synchronized byte[] getPdfDocument() { + return pdfDocument; + } } diff --git a/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/xmlbind/SignedPDFInfo.java b/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/xmlbind/SignedPDFInfo.java index a950006..b6409f1 100644 --- a/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/xmlbind/SignedPDFInfo.java +++ b/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/xmlbind/SignedPDFInfo.java @@ -1,53 +1,53 @@ package at.gv.egovernment.moa.spss.server.xmlbind; public class SignedPDFInfo { - - public static final int SUCCESS_SIGNATURE = 0; - public static final int ERROR_RESPONSE = 1; - - private String signatureID = null; - private byte[] pdfDocument = null; - private int responseType = ERROR_RESPONSE; - private int errorCode = 0; - private String errorInfo = null; - - public SignedPDFInfo(String signatureID) { - this.signatureID = signatureID; - } - - public synchronized void setPdfDocument(byte[] pdfDocument) { - this.pdfDocument = pdfDocument; - } - - public synchronized String getSignatureID() { - return signatureID; - } - - public synchronized byte[] getPdfDocument() { - return pdfDocument; - } - - public synchronized void setResponseType(int responseType) { - this.responseType = responseType; - } - - public int getResponseType() { - return this.responseType; - } - - public synchronized int getErrorCode() { - return errorCode; - } - - public synchronized void setErrorCode(int errorCode) { - this.errorCode = errorCode; - } - - public synchronized String getErrorInfo() { - return errorInfo; - } - - public synchronized void setErrorInfo(String errorInfo) { - this.errorInfo = errorInfo; - } + + public static final int SUCCESS_SIGNATURE = 0; + public static final int ERROR_RESPONSE = 1; + + private String signatureID = null; + private byte[] pdfDocument = null; + private int responseType = ERROR_RESPONSE; + private int errorCode = 0; + private String errorInfo = null; + + public SignedPDFInfo(String signatureID) { + this.signatureID = signatureID; + } + + public synchronized void setPdfDocument(byte[] pdfDocument) { + this.pdfDocument = pdfDocument; + } + + public synchronized String getSignatureID() { + return signatureID; + } + + public synchronized byte[] getPdfDocument() { + return pdfDocument; + } + + public synchronized void setResponseType(int responseType) { + this.responseType = responseType; + } + + public int getResponseType() { + return this.responseType; + } + + public synchronized int getErrorCode() { + return errorCode; + } + + public synchronized void setErrorCode(int errorCode) { + this.errorCode = errorCode; + } + + public synchronized String getErrorInfo() { + return errorInfo; + } + + public synchronized void setErrorInfo(String errorInfo) { + this.errorInfo = errorInfo; + } } diff --git a/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/xmlbind/VerifyPDFRequest.java b/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/xmlbind/VerifyPDFRequest.java index c9ca89d..59c8c94 100644 --- a/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/xmlbind/VerifyPDFRequest.java +++ b/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/xmlbind/VerifyPDFRequest.java @@ -3,34 +3,34 @@ package at.gv.egovernment.moa.spss.server.xmlbind; import java.util.Date; public class VerifyPDFRequest { - private Date dateTime; - private byte[] signedPDF; - private String trustProfileID; - - public VerifyPDFRequest() { - } - - public synchronized Date getDateTime() { - return dateTime; - } - - public synchronized void setDateTime(Date dateTime) { - this.dateTime = dateTime; - } - - public synchronized byte[] getSignedPDF() { - return signedPDF; - } - - public synchronized void setSignedPDF(byte[] signedPDF) { - this.signedPDF = signedPDF; - } - - public synchronized String getTrustProfileID() { - return trustProfileID; - } - - public synchronized void setTrustProfileID(String trustProfileID) { - this.trustProfileID = trustProfileID; - } + private Date dateTime; + private byte[] signedPDF; + private String trustProfileID; + + public VerifyPDFRequest() { + } + + public synchronized Date getDateTime() { + return dateTime; + } + + public synchronized void setDateTime(Date dateTime) { + this.dateTime = dateTime; + } + + public synchronized byte[] getSignedPDF() { + return signedPDF; + } + + public synchronized void setSignedPDF(byte[] signedPDF) { + this.signedPDF = signedPDF; + } + + public synchronized String getTrustProfileID() { + return trustProfileID; + } + + public synchronized void setTrustProfileID(String trustProfileID) { + this.trustProfileID = trustProfileID; + } } diff --git a/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/xmlbind/VerifyPDFRequestParser.java b/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/xmlbind/VerifyPDFRequestParser.java index 66761e4..0581595 100644 --- a/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/xmlbind/VerifyPDFRequestParser.java +++ b/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/xmlbind/VerifyPDFRequestParser.java @@ -14,47 +14,47 @@ import at.gv.egovernment.moaspss.util.XPathUtils; public class VerifyPDFRequestParser { - // - // XPath expressions for selecting parts of the DOM message - // - private static final String MOA = Constants.MOA_PREFIX + ":"; - private static final String DATE_TIME_XPATH = MOA + "DateTime"; - private static final String PDF_SIGNATURE_XPATH = MOA + "PDFSignature"; - private static final String TRUST_PROFILE_ID_XPATH = MOA + "TrustProfileID"; - - public VerifyPDFRequest parse(Element requestElem) throws MOAApplicationException { - - VerifyPDFRequest verifyPDFRequest = new VerifyPDFRequest(); - - Date dateTime = RequestParserUtils.parseDateTime(requestElem, DATE_TIME_XPATH); - byte[] signedPDF = null; - try { - signedPDF = parsePDF(requestElem); - } catch (IOException e) { - throw new MOAApplicationException("Failed to extract signed pdf data", null, e); - } - String trustProfileID = XPathUtils.getElementValue(requestElem, TRUST_PROFILE_ID_XPATH, null); - verifyPDFRequest.setDateTime(dateTime); - verifyPDFRequest.setSignedPDF(signedPDF); - verifyPDFRequest.setTrustProfileID(trustProfileID); - - return verifyPDFRequest; - } - - /** - * Parse the content contained in a <code>CMSContentBaseType</code> kind of - * DOM element. - * - * @param contentElem - * The <code>CMSContentBaseType</code> kind of element to parse. - * @return A <code>CMSDataObject</code> API object containing the data from - * the given DOM element. - * @throws IOException - */ - private byte[] parsePDF(Element contentElem) throws IOException { - Element base64ContentElem = (Element) XPathUtils.selectSingleNode(contentElem, PDF_SIGNATURE_XPATH); - - String base64Str = DOMUtils.getText(base64ContentElem); - return Base64Utils.decode(base64Str, true); - } + // + // XPath expressions for selecting parts of the DOM message + // + private static final String MOA = Constants.MOA_PREFIX + ":"; + private static final String DATE_TIME_XPATH = MOA + "DateTime"; + private static final String PDF_SIGNATURE_XPATH = MOA + "PDFSignature"; + private static final String TRUST_PROFILE_ID_XPATH = MOA + "TrustProfileID"; + + public VerifyPDFRequest parse(Element requestElem) throws MOAApplicationException { + + final VerifyPDFRequest verifyPDFRequest = new VerifyPDFRequest(); + + final Date dateTime = RequestParserUtils.parseDateTime(requestElem, DATE_TIME_XPATH); + byte[] signedPDF = null; + try { + signedPDF = parsePDF(requestElem); + } catch (final IOException e) { + throw new MOAApplicationException("Failed to extract signed pdf data", null, e); + } + final String trustProfileID = XPathUtils.getElementValue(requestElem, TRUST_PROFILE_ID_XPATH, null); + verifyPDFRequest.setDateTime(dateTime); + verifyPDFRequest.setSignedPDF(signedPDF); + verifyPDFRequest.setTrustProfileID(trustProfileID); + + return verifyPDFRequest; + } + + /** + * Parse the content contained in a <code>CMSContentBaseType</code> kind of DOM + * element. + * + * @param contentElem The <code>CMSContentBaseType</code> kind of element to + * parse. + * @return A <code>CMSDataObject</code> API object containing the data from the + * given DOM element. + * @throws IOException + */ + private byte[] parsePDF(Element contentElem) throws IOException { + final Element base64ContentElem = (Element) XPathUtils.selectSingleNode(contentElem, PDF_SIGNATURE_XPATH); + + final String base64Str = DOMUtils.getText(base64ContentElem); + return Base64Utils.decode(base64Str, true); + } } diff --git a/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/xmlbind/VerifyPDFResponse.java b/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/xmlbind/VerifyPDFResponse.java index c162529..61304b0 100644 --- a/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/xmlbind/VerifyPDFResponse.java +++ b/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/xmlbind/VerifyPDFResponse.java @@ -1,20 +1,17 @@ package at.gv.egovernment.moa.spss.server.xmlbind; -import java.util.List; - //import at.gv.egiz.pdfas.lib.api.verify.VerifyResult; public class VerifyPDFResponse { - /*private List<VerifyResult> verificationResults = null; - - public VerifyPDFResponse() { - } - - public synchronized List<VerifyResult> getVerificationResults() { - return verificationResults; - } - - public synchronized void setVerificationResults(List<VerifyResult> verificationResults) { - this.verificationResults = verificationResults; - }*/ + /* + * private List<VerifyResult> verificationResults = null; + * + * public VerifyPDFResponse() { } + * + * public synchronized List<VerifyResult> getVerificationResults() { return + * verificationResults; } + * + * public synchronized void setVerificationResults(List<VerifyResult> + * verificationResults) { this.verificationResults = verificationResults; } + */ } diff --git a/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/xmlbind/VerifyPDFResponseBuilder.java b/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/xmlbind/VerifyPDFResponseBuilder.java index cb3c66b..b9117e9 100644 --- a/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/xmlbind/VerifyPDFResponseBuilder.java +++ b/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/xmlbind/VerifyPDFResponseBuilder.java @@ -1,110 +1,87 @@ package at.gv.egovernment.moa.spss.server.xmlbind; -import java.util.Iterator; - import org.w3c.dom.Document; import org.w3c.dom.Element; -//import at.gv.egiz.pdfas.lib.api.verify.VerifyResult; -import at.gv.egovernment.moa.spss.MOAApplicationException; -import at.gv.egovernment.moa.spss.MOAException; import at.gv.egovernment.moa.spss.MOASystemException; import at.gv.egovernment.moa.spss.api.xmlbind.ResponseBuilderUtils; -import at.gv.egovernment.moa.spss.server.pdfas.ExtendedVerifyResult; import at.gv.egovernment.moaspss.util.Constants; public class VerifyPDFResponseBuilder { - private static final String MOA_NS_URI = Constants.MOA_NS_URI; - - //private static final Logger logger = LoggerFactory.getLogger(VerifyPDFResponseBuilder.class); - - /** The XML document containing the response element. */ - private Document responseDoc; - /** The response <code>CreateCMSSignatureResponse</code> DOM element. */ - private Element responseElem; - - /** - * Create a new <code>CreateCMSSignatureResponseBuilder</code>: - * - * @throws MOASystemException - * An error occurred setting up the resulting XML document. - */ - public VerifyPDFResponseBuilder() throws MOASystemException { - responseDoc = ResponseBuilderUtils.createResponse("VerifyPDFSignatureResponse"); - responseElem = responseDoc.getDocumentElement(); - } - - /** - * Build a document containing a <code>CreateCMSSignatureResponse</code> DOM - * element being the XML representation of the given - * <code>CreateCMSSignatureResponse</code> API object. - * - * @param response - * The <code>CreateCMSSignatureResponse</code> to convert to XML. - * @return A document containing the <code>CreateCMSSignatureResponse</code> - * DOM element. - */ - /*public Document build(VerifyPDFResponse response) throws MOAException { - if(response.getVerificationResults() == null) { - throw new MOAApplicationException("No verification results available", null); - } - Iterator<VerifyResult> iter = response.getVerificationResults().iterator(); + private static final String MOA_NS_URI = Constants.MOA_NS_URI; - while (iter.hasNext()) { - VerifyResult verifyResult = iter.next(); - addVerifyResult(verifyResult); - } + // private static final Logger logger = + // LoggerFactory.getLogger(VerifyPDFResponseBuilder.class); - return responseDoc; - } - - private void addVerifyResult(VerifyResult verifyResult) throws MOAApplicationException { - Element pdfSignature = responseDoc.createElementNS(MOA_NS_URI, "SignatureResult"); - - - String qcSource = null; - String publicAuthorityID = null; - String sscdSource = null; - boolean isPublicAuthority = false; - boolean isSSCD = false; - String issureCountryCode = null; - - if(verifyResult instanceof ExtendedVerifyResult) { - ExtendedVerifyResult extendedVerifyResult = (ExtendedVerifyResult)verifyResult; - - qcSource = extendedVerifyResult.getQcSource(); - publicAuthorityID = extendedVerifyResult.getPublicAuthorityID(); - sscdSource = extendedVerifyResult.getQcSource(); - issureCountryCode = extendedVerifyResult.getIssureCountryCode(); - - isPublicAuthority = extendedVerifyResult.isPublicAuthority(); - isSSCD = extendedVerifyResult.isSSCD(); - } - - ResponseBuilderUtils.addSignerInfo(responseDoc, pdfSignature, - verifyResult.getSignerCertificate(), - verifyResult.isQualifiedCertificate(), - qcSource, - isPublicAuthority, - publicAuthorityID, - isSSCD, - sscdSource, - issureCountryCode); - - ResponseBuilderUtils.addCodeInfoElement( - responseDoc, - pdfSignature, - "SignatureCheck", - verifyResult.getValueCheckCode().getCode(), - (String)null); + /** The XML document containing the response element. */ + private final Document responseDoc; + /** The response <code>CreateCMSSignatureResponse</code> DOM element. */ + private final Element responseElem; - ResponseBuilderUtils.addCodeInfoElement( - responseDoc, - pdfSignature, - "CertificateCheck", - verifyResult.getCertificateCheck().getCode(), - (String)null); + /** + * Create a new <code>CreateCMSSignatureResponseBuilder</code>: + * + * @throws MOASystemException An error occurred setting up the resulting XML + * document. + */ + public VerifyPDFResponseBuilder() throws MOASystemException { + responseDoc = ResponseBuilderUtils.createResponse("VerifyPDFSignatureResponse"); + responseElem = responseDoc.getDocumentElement(); + } - responseElem.appendChild(pdfSignature); - }*/ + /** + * Build a document containing a <code>CreateCMSSignatureResponse</code> DOM + * element being the XML representation of the given + * <code>CreateCMSSignatureResponse</code> API object. + * + * @param response The <code>CreateCMSSignatureResponse</code> to convert to + * XML. + * @return A document containing the <code>CreateCMSSignatureResponse</code> DOM + * element. + */ + /* + * public Document build(VerifyPDFResponse response) throws MOAException { + * if(response.getVerificationResults() == null) { throw new + * MOAApplicationException("No verification results available", null); } + * Iterator<VerifyResult> iter = response.getVerificationResults().iterator(); + * + * while (iter.hasNext()) { VerifyResult verifyResult = iter.next(); + * addVerifyResult(verifyResult); } + * + * return responseDoc; } + * + * private void addVerifyResult(VerifyResult verifyResult) throws + * MOAApplicationException { Element pdfSignature = + * responseDoc.createElementNS(MOA_NS_URI, "SignatureResult"); + * + * + * String qcSource = null; String publicAuthorityID = null; String sscdSource = + * null; boolean isPublicAuthority = false; boolean isSSCD = false; String + * issureCountryCode = null; + * + * if(verifyResult instanceof ExtendedVerifyResult) { ExtendedVerifyResult + * extendedVerifyResult = (ExtendedVerifyResult)verifyResult; + * + * qcSource = extendedVerifyResult.getQcSource(); publicAuthorityID = + * extendedVerifyResult.getPublicAuthorityID(); sscdSource = + * extendedVerifyResult.getQcSource(); issureCountryCode = + * extendedVerifyResult.getIssureCountryCode(); + * + * isPublicAuthority = extendedVerifyResult.isPublicAuthority(); isSSCD = + * extendedVerifyResult.isSSCD(); } + * + * ResponseBuilderUtils.addSignerInfo(responseDoc, pdfSignature, + * verifyResult.getSignerCertificate(), verifyResult.isQualifiedCertificate(), + * qcSource, isPublicAuthority, publicAuthorityID, isSSCD, sscdSource, + * issureCountryCode); + * + * ResponseBuilderUtils.addCodeInfoElement( responseDoc, pdfSignature, + * "SignatureCheck", verifyResult.getValueCheckCode().getCode(), (String)null); + * + * ResponseBuilderUtils.addCodeInfoElement( responseDoc, pdfSignature, + * "CertificateCheck", verifyResult.getCertificateCheck().getCode(), + * (String)null); + * + * responseElem.appendChild(pdfSignature); } + */ } diff --git a/moaSig/moa-sig/src/main/resources/log4j.properties b/moaSig/moa-sig/src/main/resources/log4j.properties index 7beb0c5..61f0cfe 100644 --- a/moaSig/moa-sig/src/main/resources/log4j.properties +++ b/moaSig/moa-sig/src/main/resources/log4j.properties @@ -6,15 +6,22 @@ org.apache.commons.logging.LogFactory=org.apache.commons.logging.impl.Log4jFactory # Configure root logger and loggers for moa-spss -log4j.rootLogger=TRACE, stdout -log4j.logger.moa.spss.server=TRACE, stdout, moaspss -log4j.logger.iaik.server=TRACE, stdout, moaspss +log4j.rootLogger=warn,stdout +log4j.logger.moa.spss.server=info,moaspss +log4j.logger.iaik.server=info,moaspss +log4j.logger.iaik.pki=info,moaspss +log4j.logger.at.gv.egovernment.moa.spss=info, moaspss + +log4j.rootLogger=warn, stdout +log4j.logger.moa.spss.server=info, stdout, moaspss +log4j.logger.iaik.server=info, stdout, moaspss log4j.logger.at.gv.egovernment.moa.spss=TRACE, stdout, moaspss +>>>>>>> moaSig/moa-sig/src/main/resources/log4j.properties # Configure the 'stdout' appender to write logging output to the console log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.layout=org.apache.log4j.PatternLayout -log4j.appender.stdout.layout.ConversionPattern=%5p | %d{dd HH:mm:ss,SSS} | %C{1} | %20c | %10t | %m%n +log4j.appender.stdout.layout.ConversionPattern=log4j | %5p | %d{dd HH:mm:ss,SSS} | %C{1} | %20c | %10t | %m%n # Configure the 'moaspss' appender to write moa-spss related logging output # to the file '${catalina.base}/logs/moa-spss.log'. The file is rolled over every 1000KB, @@ -24,7 +31,7 @@ log4j.appender.moaspss.File=${catalina.base}/logs/moa-spss.log log4j.appender.moaspss.MaxFileSize=1000KB log4j.appender.moaspss.MaxBackupIndex=10 log4j.appender.moaspss.layout=org.apache.log4j.PatternLayout -log4j.appender.moaspss.layout.ConversionPattern=%5p | %d{dd HH:mm:ss,SSS} | %C{1} | %20c | %10t | %m%n +log4j.appender.moaspss.layout.ConversionPattern=log4j | %5p | %d{dd HH:mm:ss,SSS} | %C{1} | %20c | %10t | %m%n # Configure the jdbc appender 'JDBC' to write logging output # to the given PostgreSQL database diff --git a/moaSig/moa-sig/src/main/resources/logback.xml b/moaSig/moa-sig/src/main/resources/logback.xml new file mode 100644 index 0000000..501c1a6 --- /dev/null +++ b/moaSig/moa-sig/src/main/resources/logback.xml @@ -0,0 +1,49 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<!-- For assistance related to logback-translator or configuration --> +<!-- files in general, please contact the logback user mailing list --> +<!-- at http://www.qos.ch/mailman/listinfo/logback-user --> +<!-- --> +<!-- For professional support please see --> +<!-- http://www.qos.ch/shop/products/professionalSupport --> +<!-- --> +<configuration> + <appender name="moaspss" class="ch.qos.logback.core.rolling.RollingFileAppender"> + <!--See also http://logback.qos.ch/manual/appenders.html#RollingFileAppender--> + <File>${catalina.base}/logs/moa-spss.log</File> + <encoder> + <pattern>logback | %5p | %d{dd HH:mm:ss,SSS} | %C{1} | %20c | %10t | %m%n</pattern> + </encoder> + <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy"> + <maxIndex>10</maxIndex> + <FileNamePattern>${catalina.base}/logs/moa-spss.log.%i</FileNamePattern> + </rollingPolicy> + <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy"> + <MaxFileSize>1000KB</MaxFileSize> + </triggeringPolicy> + </appender> + <appender name="stdout" class="ch.qos.logback.core.ConsoleAppender"> + <encoder> + <pattern>logback | %5p | %d{dd HH:mm:ss,SSS} | %C{1} | %20c | %10t | %m%n</pattern> + </encoder> + </appender> + <logger name="moa.spss.server" level="debug"> + <appender-ref ref="moaspss"/> + <appender-ref ref="stdout"/> + </logger> + <logger name="iaik.pki" level="debug"> + <appender-ref ref="moaspss"/> + <appender-ref ref="stdout"/> + </logger> + <logger name="at.gv.egovernment.moa.spss" level="debug"> + <appender-ref ref="moaspss"/> + <appender-ref ref="stdout"/> + </logger> + <logger name="iaik.server" level="error"> + <appender-ref ref="moaspss"/> + <appender-ref ref="stdout"/> + </logger> + <root level="warn"> + <appender-ref ref="stdout"/> + </root> +</configuration>
\ No newline at end of file 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..c94e597 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 @@ <?xml version="1.0" encoding="UTF-8"?>
<!-- Web Service Description for MOA SP/SS 1.4 -->
<definitions xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:tns="http://reference.e-government.gv.at/namespace/moa/20020822#" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:moa="http://reference.e-government.gv.at/namespace/moa/20020822#" xmlns:xsd="http://www.w3.org/1999/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" name="MOA" targetNamespace="http://reference.e-government.gv.at/namespace/moa/20020822#">
- <import namespace="http://reference.e-government.gv.at/namespace/moa/20020822#" location="../schemas/MOA-SPSS-3.0.0.xsd"/>
+ <import namespace="http://reference.e-government.gv.at/namespace/moa/20020822#" location="../schemas/MOA-SPSS-3.1.2.xsd"/>
<message name="CreateCMSSignatureInput">
<part name="body" element="moa:CreateCMSSignatureRequest"/>
</message>
diff --git a/moaSig/moa-sig/src/main/resources/resources/schemas/MOA-SPSS-3.1.1.xsd b/moaSig/moa-sig/src/main/resources/resources/schemas/MOA-SPSS-3.1.1.xsd new file mode 100644 index 0000000..d8f45fa --- /dev/null +++ b/moaSig/moa-sig/src/main/resources/resources/schemas/MOA-SPSS-3.1.1.xsd @@ -0,0 +1,833 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- MOA SP/SS 2.0.0 Schema --> +<xsd:schema xmlns:dsig="http://www.w3.org/2000/09/xmldsig#" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://reference.e-government.gv.at/namespace/moa/20020822#" targetNamespace="http://reference.e-government.gv.at/namespace/moa/20020822#" elementFormDefault="qualified" attributeFormDefault="unqualified" version="1.2"> + <xsd:import namespace="http://www.w3.org/2000/09/xmldsig#" schemaLocation="http://www.w3.org/TR/xmldsig-core/xmldsig-core-schema.xsd"/> + <xsd:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="http://www.w3.org/2001/xml.xsd"/> + <!--########## Create CMS Signature ### --> + <!--### Create CMS Signature Request ### --> + <xsd:element name="CreateCMSSignatureRequest"> + <xsd:complexType> + <xsd:complexContent> + <xsd:extension base="CreateCMSSignatureRequestType"/> + </xsd:complexContent> + </xsd:complexType> + </xsd:element> + <xsd:complexType name="CreateCMSSignatureRequestType"> + <xsd:sequence> + <xsd:element name="KeyIdentifier" type="KeyIdentifierType"/> + <xsd:element name="SingleSignatureInfo" maxOccurs="unbounded"> + <xsd:annotation> + <xsd:documentation>Ermöglichung der Stapelsignatur durch + wiederholte Angabe dieses Elements</xsd:documentation> + </xsd:annotation> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="DataObjectInfo"> + <xsd:complexType> + <xsd:complexContent> + <xsd:extension base="CMSDataObjectInfoType"/> + </xsd:complexContent> + </xsd:complexType> + </xsd:element> + </xsd:sequence> + <xsd:attribute name="SecurityLayerConformity" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="PAdESConformity" type="xsd:boolean" use="optional" default="false"/> + </xsd:complexType> + </xsd:element> + </xsd:sequence> + </xsd:complexType> + <!--### Create CMS Signature Response ### --> + <xsd:element name="CreateCMSSignatureResponse" type="CreateCMSSignatureResponseType"/> + <xsd:complexType name="CreateCMSSignatureResponseType"> + <xsd:choice maxOccurs="unbounded"> + <xsd:annotation> + <xsd:documentation>Kardinalität 1..oo erlaubt die Antwort auf eine + Stapelsignatur-Anfrage</xsd:documentation> + </xsd:annotation> + <xsd:element name="CMSSignature" type="xsd:base64Binary"> + <xsd:annotation> + <xsd:documentation>Resultat, falls die Signaturerstellung + erfolgreich war</xsd:documentation> + </xsd:annotation> + </xsd:element> + <xsd:element ref="ErrorResponse"/> + </xsd:choice> + </xsd:complexType> + <!--########## Create XML Signature ### --> + <!--### Create XML Signature Request ### --> + <xsd:element name="CreateXMLSignatureRequest"> + <xsd:complexType> + <xsd:complexContent> + <xsd:extension base="CreateXMLSignatureRequestType"/> + </xsd:complexContent> + </xsd:complexType> + </xsd:element> + <xsd:complexType name="CreateXMLSignatureRequestType"> + <xsd:sequence> + <xsd:element name="KeyIdentifier" type="KeyIdentifierType"/> + <xsd:element name="SingleSignatureInfo" maxOccurs="unbounded"> + <xsd:annotation> + <xsd:documentation>Ermöglichung der Stapelsignatur durch + wiederholte Angabe dieses Elements</xsd:documentation> + </xsd:annotation> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="DataObjectInfo" maxOccurs="unbounded"> + <xsd:complexType> + <xsd:complexContent> + <xsd:extension base="DataObjectInfoType"> + <xsd:attribute name="ChildOfManifest" type="xsd:boolean" use="optional" default="false"/> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + </xsd:element> + <xsd:element name="CreateSignatureInfo" minOccurs="0"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="CreateSignatureEnvironment" type="ContentOptionalRefType"/> + <xsd:choice> + <xsd:annotation> + <xsd:documentation>Auswahl: Entweder explizite Angabe des + Signaturorts sowie ggf. sinnvoller Supplements im Zshg. mit + der Signaturumgebung, oder Verweis auf ein benanntes Profil + </xsd:documentation> + </xsd:annotation> + <xsd:element ref="CreateSignatureEnvironmentProfile"/> + <xsd:element name="CreateSignatureEnvironmentProfileID" type="ProfileIdentifierType"/> + </xsd:choice> + </xsd:sequence> + </xsd:complexType> + </xsd:element> + </xsd:sequence> + <xsd:attribute name="SecurityLayerConformity" type="xsd:boolean" use="optional" default="true"/> + </xsd:complexType> + </xsd:element> + </xsd:sequence> + </xsd:complexType> + <!--### Create XML Signature Response ### --> + <xsd:complexType name="CreateXMLSignatureResponseType"> + <xsd:choice maxOccurs="unbounded"> + <xsd:annotation> + <xsd:documentation>Kardinalität 1..oo erlaubt die Antwort auf eine + Stapelsignatur-Anfrage</xsd:documentation> + </xsd:annotation> + <xsd:element name="SignatureEnvironment"> + <xsd:annotation> + <xsd:documentation>Resultat, falls die Signaturerstellung + erfolgreich war</xsd:documentation> + </xsd:annotation> + <xsd:complexType> + <xsd:sequence> + <xsd:any namespace="##any" processContents="lax"/> + </xsd:sequence> + </xsd:complexType> + </xsd:element> + <xsd:element ref="ErrorResponse"/> + </xsd:choice> + </xsd:complexType> + <xsd:element name="CreateXMLSignatureResponse" type="CreateXMLSignatureResponseType"/> + <!--########## Create PDF Signature ### --> + <!--### Create PDF Signature Request ### --> + <xsd:element name="CreatePDFSignatureRequest"> + <xsd:complexType> + <xsd:complexContent> + <xsd:extension base="CreatePDFSignatureRequestType"/> + </xsd:complexContent> + </xsd:complexType> + </xsd:element> + <xsd:complexType name="CreatePDFSignatureRequestType"> + <xsd:sequence> + <xsd:element name="KeyIdentifier" type="KeyIdentifierType"/> + <xsd:element name="SingleSignatureInfo" maxOccurs="unbounded"> + <xsd:annotation> + <xsd:documentation>Ermöglichung der Stapelsignatur durch + wiederholte Angabe dieses Elements</xsd:documentation> + </xsd:annotation> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="PDFDocument" type="xsd:base64Binary"/> + <xsd:element name="SignatureProfile" type="xsd:string" minOccurs="0" maxOccurs="1"/> + <xsd:element name="SignaturePosition" type="xsd:string" minOccurs="0" maxOccurs="1"/> + <xsd:element name="SignatureID" type="xsd:string" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + </xsd:element> + </xsd:sequence> + </xsd:complexType> + <!--### Create PDF Signature Response ### --> + <xsd:element name="CreatePDFSignatureResponse" type="CreatePDFSignatureResponseType"/> + <xsd:complexType name="CreatePDFSignatureResponseType"> + <xsd:sequence> + <xsd:element name="PDFSignature" type="PDFSignedRepsonse" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <!--########## Verify CMS Signature ### --> + <!--### Verifiy CMS Signature Request ### --> + <xsd:element name="VerifyCMSSignatureRequest"> + <xsd:complexType> + <xsd:complexContent> + <xsd:extension base="VerifyCMSSignatureRequestType"> + <xsd:attribute name="Signatories" type="SignatoriesType" use="optional" default="1"/> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + </xsd:element> + <xsd:complexType name="VerifyCMSSignatureRequestType"> + <xsd:sequence> + <xsd:element name="DateTime" type="xsd:dateTime" minOccurs="0"/> + <xsd:element name="ExtendedValidation" type="xsd:boolean" default="false" minOccurs="0"/> + <xsd:element name="CMSSignature" type="xsd:base64Binary"/> + <xsd:element name="DataObject" type="CMSDataObjectOptionalMetaType" minOccurs="0"/> + <xsd:element name="TrustProfileID" type="xsd:token"> + <xsd:annotation> + <xsd:documentation>mit diesem Profil wird eine Menge von + vertrauenswürdigen Wurzelzertifikaten spezifiziert + </xsd:documentation> + </xsd:annotation> + </xsd:element> + </xsd:sequence> + </xsd:complexType> + <!--### Verify CMS Signature Response ### --> + <xsd:element name="VerifyCMSSignatureResponse" type="VerifyCMSSignatureResponseType"/> + <xsd:complexType name="VerifyCMSSignatureResponseType"> + <xsd:sequence maxOccurs="unbounded"> + <xsd:element name="SignerInfo" type="dsig:KeyInfoType"> + <xsd:annotation> + <xsd:documentation>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</xsd:documentation> + </xsd:annotation> + </xsd:element> + <xsd:element name="SignatureAlgorithm" type="xsd:string" minOccurs="0" maxOccurs="1"/> + <xsd:element name="SignatureCheck" type="CheckResultType"/> + <xsd:element name="CertificateCheck" type="CheckResultType"/> + <xsd:element name="FormCheckResult" type="FormResultType" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="ExtendedCertificateCheck" type="ExtendedCertificateCheckResultType" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="VerifyASICCMSSignatureResponseType"> + <xsd:sequence maxOccurs="unbounded"> + <xsd:element name="SignerInfo" type="dsig:KeyInfoType"> + <xsd:annotation> + <xsd:documentation>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</xsd:documentation> + </xsd:annotation> + </xsd:element> + <xsd:element name="SigningTime" type="xsd:dateTime" minOccurs="0"/> + <xsd:element name="SignatureCheck" type="CheckResultType"/> + <xsd:element name="CertificateCheck" type="CheckResultType"/> + <xsd:element name="FormCheckResult" type="FormResultType" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="ExtendedCertificateCheck" type="ExtendedCertificateCheckResultType" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <!--########## Verify PDF Signature ### --> + <!--### Verifiy PDF Signature Request ### --> + <xsd:element name="VerifyPDFSignatureRequest"> + <xsd:complexType> + <xsd:complexContent> + <xsd:extension base="VerifyPDFSignatureRequestType"> + <xsd:attribute name="Signatories" type="SignatoriesType" use="optional" default="1"/> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + </xsd:element> + <xsd:complexType name="VerifyPDFSignatureRequestType"> + <xsd:sequence> + <xsd:element name="DateTime" type="xsd:dateTime" minOccurs="0"/> + <xsd:element name="ExtendedValidation" type="xsd:boolean" default="false" minOccurs="0"/> + <xsd:element name="PDFSignature" type="xsd:base64Binary"/> + <xsd:element name="TrustProfileID" type="xsd:token"> + <xsd:annotation> + <xsd:documentation>mit diesem Profil wird eine Menge von + vertrauenswürdigen Wurzelzertifikaten spezifiziert + </xsd:documentation> + </xsd:annotation> + </xsd:element> + </xsd:sequence> + </xsd:complexType> + <!--########## Verify PDF Signature ### --> + <!--### Verifiy ASIC Signature Request ### --> + <xsd:element name="VerifyASICSignatureRequest"> + <xsd:complexType> + <xsd:complexContent> + <xsd:extension base="VerifyASICSignatureRequestType"/> + </xsd:complexContent> + </xsd:complexType> + </xsd:element> + <xsd:complexType name="VerifyASICSignatureRequestType"> + <xsd:sequence> + <xsd:element name="DateTime" type="xsd:dateTime" minOccurs="0"/> + <xsd:element name="ExtendedValidation" type="xsd:boolean" default="false" minOccurs="0"/> + <xsd:element name="ASICSignature" type="xsd:base64Binary"/> + <xsd:element name="ASICExtension" type="xsd:string"> + <xsd:annotation> + <xsd:documentation>asics or asice</xsd:documentation> + </xsd:annotation> + </xsd:element> + <xsd:element name="TrustProfileID" type="xsd:token"> + <xsd:annotation> + <xsd:documentation>mit diesem Profil wird eine Menge von + vertrauenswürdigen Wurzelzertifikaten spezifiziert + </xsd:documentation> + </xsd:annotation> + </xsd:element> + </xsd:sequence> + </xsd:complexType> + <!--### Verify ASIC Signature Response ### --> + <xsd:element name="VerifyASICSignatureResponse" type="VerifyASICSignatureResponseType"/> + <xsd:complexType name="VerifyASICSignatureResponseType"> + <xsd:sequence> + <xsd:element name="ASiCSignatureResult" type="ASICResultType" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <!--xsd:complexType name="signedFilesType"> + <xsd:sequence> + <xsd:element name="signedFiles" type="xsd:string"> + </xsd:sequence> + <xsd:attribute name="hashAlgorithm" type="xsd:string" use="optional"/> + </xsd:complexType--> + + <xsd:complexType name="ASICResultType"> + <xsd:sequence> + <xsd:element name="signedFiles" minOccurs="0" maxOccurs="unbounded"> + <xsd:complexType> + <xsd:simpleContent> + <xsd:extension base="xsd:string"> + <xsd:attribute name="hashAlgorithm" type="xsd:string" use="optional"/> + </xsd:extension> + </xsd:simpleContent> + </xsd:complexType> + </xsd:element> + <xsd:element name="XMLSignatureResult" type="VerifyASICXMLSignatureResponseType" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="CMSSignatureResult" type="VerifyASICCMSSignatureResponseType" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <!--### Verify CMS Signature Response ### --> + <xsd:element name="VerifyPDFSignatureResponse" type="VerifyPDFSignatureResponseType"/> + <xsd:complexType name="VerifyPDFSignatureResponseType"> + <xsd:sequence maxOccurs="unbounded"> + <xsd:element name="SignatureResult" type="PDFSignatureResultType"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="PDFSignatureResultType"> + <xsd:sequence> + <xsd:element name="SignerInfo" type="dsig:KeyInfoType" minOccurs="0"> + <xsd:annotation> + <xsd:documentation>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</xsd:documentation> + </xsd:annotation> + </xsd:element> + <xsd:element name="SigningTime" type="xsd:dateTime" minOccurs="0"/> + <xsd:element name="SignatureAlgorithm" type="xsd:string" minOccurs="0" maxOccurs="1"/> + <xsd:element name="SignatureCheck" type="CheckResultType"/> + <xsd:element name="CertificateCheck" type="CheckResultType"/> + <xsd:element name="FormCheckResult" type="FormResultType" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="ExtendedCertificateCheck" type="ExtendedCertificateCheckResultType" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <!--########## Verify XML Signature ### --> + <!--### Verify XML Signature Request ### --> + <xsd:element name="VerifyXMLSignatureRequest" type="VerifyXMLSignatureRequestType"/> + <xsd:complexType name="VerifyXMLSignatureRequestType"> + <xsd:sequence> + <xsd:element name="DateTime" type="xsd:dateTime" minOccurs="0"/> + <xsd:element name="ExtendedValidation" type="xsd:boolean" default="false" minOccurs="0"/> + <xsd:element name="VerifySignatureInfo"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="VerifySignatureEnvironment" type="ContentOptionalRefType"/> + <xsd:element name="VerifySignatureLocation" type="xsd:token"/> + </xsd:sequence> + </xsd:complexType> + </xsd:element> + <xsd:choice minOccurs="0" maxOccurs="unbounded"> + <xsd:element ref="SupplementProfile"/> + <xsd:element name="SupplementProfileID" type="xsd:string"/> + </xsd:choice> + <xsd:element name="SignatureManifestCheckParams" minOccurs="0"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="ReferenceInfo" type="VerifyTransformsDataType" maxOccurs="unbounded"> + <xsd:annotation> + <xsd:documentation>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.</xsd:documentation> + </xsd:annotation> + </xsd:element> + </xsd:sequence> + <xsd:attribute name="ReturnReferenceInputData" type="xsd:boolean" use="optional" default="true"/> + </xsd:complexType> + </xsd:element> + <xsd:element name="ReturnHashInputData" minOccurs="0"/> + <xsd:element name="TrustProfileID" type="xsd:token"> + <xsd:annotation> + <xsd:documentation>mit diesem Profil wird eine Menge von + vertrauenswürdigen Wurzelzertifikaten spezifiziert + </xsd:documentation> + </xsd:annotation> + </xsd:element> + </xsd:sequence> + </xsd:complexType> + <!--### Verify XML Signature Response ### --> + <xsd:element name="VerifyXMLSignatureResponse" type="VerifyXMLSignatureResponseType"/> + <xsd:complexType name="VerifyXMLSignatureResponseType"> + <xsd:sequence> + <xsd:element name="SignerInfo" type="dsig:KeyInfoType"> + <xsd:annotation> + <xsd:documentation>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</xsd:documentation> + </xsd:annotation> + </xsd:element> + <xsd:element name="HashInputData" type="InputDataType" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="ReferenceInputData" type="InputDataType" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="SignatureAlgorithm" type="xsd:string" minOccurs="0" maxOccurs="1"/> + <xsd:element name="SignatureCheck" type="ReferencesCheckResultType"/> + <xsd:element name="SignatureManifestCheck" type="ReferencesCheckResultType" minOccurs="0"/> + <xsd:element name="XMLDSIGManifestCheck" type="ManifestRefsCheckResultType" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="CertificateCheck" type="CheckResultType"/> + <xsd:element name="FormCheckResult" type="FormResultType" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="ExtendedCertificateCheck" type="ExtendedCertificateCheckResultType" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="VerifyASICXMLSignatureResponseType"> + <xsd:sequence> + <xsd:element name="SignerInfo" type="dsig:KeyInfoType"> + <xsd:annotation> + <xsd:documentation>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</xsd:documentation> + </xsd:annotation> + </xsd:element> + <xsd:element name="SigningTime" type="xsd:dateTime" minOccurs="0"/> + <xsd:element name="HashInputData" type="InputDataType" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="ReferenceInputData" type="InputDataType" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="SignatureCheck" type="ReferencesCheckResultType"/> + <xsd:element name="SignatureManifestCheck" type="ReferencesCheckResultType" minOccurs="0"/> + <xsd:element name="XMLDSIGManifestCheck" type="ManifestRefsCheckResultType" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="CertificateCheck" type="CheckResultType"/> + <xsd:element name="FormCheckResult" type="FormResultType" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="ExtendedCertificateCheck" type="ExtendedCertificateCheckResultType" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:simpleType name="ProfileIdentifierType"> + <xsd:restriction base="xsd:token"/> + </xsd:simpleType> + <xsd:complexType name="InputDataType"> + <xsd:complexContent> + <xsd:extension base="ContentExLocRefBaseType"> + <xsd:attribute name="PartOf" use="optional" default="SignedInfo"> + <xsd:simpleType> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="SignedInfo"/> + <xsd:enumeration value="XMLDSIGManifest"/> + </xsd:restriction> + </xsd:simpleType> + </xsd:attribute> + <xsd:attribute name="ReferringSigReference" type="xsd:nonNegativeInteger" use="optional"/> + <xsd:attribute name="HashAlgorithm" type="xsd:string" use="optional"/> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + <xsd:complexType name="MetaInfoType"> + <xsd:sequence> + <xsd:element name="MimeType" type="MimeTypeType"/> + <xsd:element name="Description" type="xsd:anyURI" minOccurs="0"/> + <xsd:any namespace="##other" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="FinalDataMetaInfoType"> + <xsd:complexContent> + <xsd:extension base="MetaInfoType"> + <xsd:sequence> + <xsd:element name="Type" type="xsd:anyURI" minOccurs="0"/> + </xsd:sequence> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + <xsd:complexType name="DataObjectInfoType"> + <xsd:sequence> + <xsd:element name="DataObject"> + <xsd:complexType> + <xsd:complexContent> + <xsd:extension base="ContentOptionalRefType"/> + </xsd:complexContent> + </xsd:complexType> + </xsd:element> + <xsd:choice> + <xsd:annotation> + <xsd:documentation>Auswahl: Entweder explizite Angabe EINER + Transformationskette inklusive ggf. sinnvoller Supplements oder + Verweis auf ein benanntes Profil</xsd:documentation> + </xsd:annotation> + <xsd:element ref="CreateTransformsInfoProfile"/> + <xsd:element name="CreateTransformsInfoProfileID" type="ProfileIdentifierType"/> + </xsd:choice> + </xsd:sequence> + <xsd:attribute name="Structure" use="required"> + <xsd:simpleType> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="detached"/> + <xsd:enumeration value="enveloping"/> + </xsd:restriction> + </xsd:simpleType> + </xsd:attribute> + </xsd:complexType> + <xsd:complexType name="CMSDataObjectInfoType"> + <xsd:sequence> + <xsd:element name="DataObject"> + <xsd:complexType> + <xsd:complexContent> + <xsd:extension base="CMSDataObjectRequiredMetaType"/> + </xsd:complexContent> + </xsd:complexType> + </xsd:element> + </xsd:sequence> + <xsd:attribute name="Structure" use="required"> + <xsd:simpleType> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="detached"/> + <xsd:enumeration value="enveloping"/> + </xsd:restriction> + </xsd:simpleType> + </xsd:attribute> + </xsd:complexType> + <xsd:complexType name="TransformsInfoType"> + <xsd:sequence> + <xsd:element ref="dsig:Transforms" minOccurs="0"/> + <xsd:element name="FinalDataMetaInfo" type="FinalDataMetaInfoType"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="XMLDataObjectAssociationType"> + <xsd:sequence> + <xsd:element name="MetaInfo" type="MetaInfoType" minOccurs="0"/> + <xsd:element name="Content" type="ContentRequiredRefType"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="PDFSignedRepsonse"> + <xsd:sequence> + <xsd:element name="SignatureID" type="xsd:string" minOccurs="0" maxOccurs="1"/> + <xsd:choice maxOccurs="1"> + <xsd:element name="PDFSignature" type="xsd:base64Binary"> + <xsd:annotation> + <xsd:documentation>Resultat, falls die Signaturerstellung + erfolgreich war</xsd:documentation> + </xsd:annotation> + </xsd:element> + <xsd:element ref="ErrorResponse"/> + </xsd:choice> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CMSDataObjectOptionalMetaType"> + <xsd:sequence> + <xsd:element name="MetaInfo" type="MetaInfoType" minOccurs="0"/> + <xsd:element name="Content" type="CMSContentBaseType"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CMSDataObjectRequiredMetaType"> + <xsd:sequence> + <xsd:element name="MetaInfo" type="MetaInfoType"/> + <xsd:element name="Content" type="CMSContentBaseType"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CMSContentBaseType"> + <xsd:complexContent> + <xsd:restriction base="ContentOptionalRefType"> + <xsd:choice minOccurs="0"> + <xsd:element name="Base64Content" type="xsd:base64Binary"/> + </xsd:choice> + </xsd:restriction> + </xsd:complexContent> + </xsd:complexType> + <xsd:complexType name="CheckResultType"> + <xsd:sequence> + <xsd:element name="Code" type="xsd:nonNegativeInteger"/> + <xsd:element name="Info" type="AnyChildrenType" minOccurs="0"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="FormResultType"> + <xsd:sequence> + <xsd:element name="Code" type="xsd:nonNegativeInteger" minOccurs="1" maxOccurs="1"/> + <xsd:element name="Name" type="xsd:string" minOccurs="1" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="IndicationResultType"> + <xsd:sequence> + <xsd:element name="Code" type="xsd:nonNegativeInteger" minOccurs="1" maxOccurs="1"/> + <xsd:element name="Name" type="xsd:string" minOccurs="1" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="ExtendedCertificateCheckResultType"> + <xsd:sequence> + <xsd:element name="Major" type="IndicationResultType" minOccurs="1" maxOccurs="1"/> + <xsd:element name="Minor" type="IndicationResultType" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="ReferencesCheckResultType"> + <xsd:complexContent> + <xsd:restriction base="CheckResultType"> + <xsd:sequence> + <xsd:element name="Code" type="xsd:nonNegativeInteger"/> + <xsd:element name="Info" type="ReferencesCheckResultInfoType" minOccurs="0"/> + </xsd:sequence> + </xsd:restriction> + </xsd:complexContent> + </xsd:complexType> + <xsd:complexType name="ReferencesCheckResultInfoType" mixed="true"> + <xsd:complexContent> + <xsd:restriction base="AnyChildrenType"> + <xsd:sequence> + <xsd:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="FailedReference" type="xsd:positiveInteger" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:restriction> + </xsd:complexContent> + </xsd:complexType> + <xsd:complexType name="ManifestRefsCheckResultType"> + <xsd:complexContent> + <xsd:restriction base="CheckResultType"> + <xsd:sequence> + <xsd:element name="Code" type="xsd:nonNegativeInteger"/> + <xsd:element name="Info" type="ManifestRefsCheckResultInfoType"/> + </xsd:sequence> + </xsd:restriction> + </xsd:complexContent> + </xsd:complexType> + <xsd:complexType name="ManifestRefsCheckResultInfoType" mixed="true"> + <xsd:complexContent> + <xsd:restriction base="AnyChildrenType"> + <xsd:sequence> + <xsd:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="FailedReference" type="xsd:positiveInteger" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="ReferringSigReference" type="xsd:positiveInteger"/> + </xsd:sequence> + </xsd:restriction> + </xsd:complexContent> + </xsd:complexType> + <!--########## Error Response ### --> + <xsd:element name="ErrorResponse" type="ErrorResponseType"> + <xsd:annotation> + <xsd:documentation>Resultat, falls die Signaturerstellung gescheitert + ist</xsd:documentation> + </xsd:annotation> + </xsd:element> + <xsd:complexType name="ErrorResponseType"> + <xsd:sequence> + <xsd:element name="ErrorCode" type="xsd:integer"/> + <xsd:element name="Info" type="xsd:string"/> + </xsd:sequence> + </xsd:complexType> + <!--########## Auxiliary Types ### --> + <xsd:simpleType name="KeyIdentifierType"> + <xsd:restriction base="xsd:string"/> + </xsd:simpleType> + <xsd:simpleType name="KeyStorageType"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="Software"/> + <xsd:enumeration value="Hardware"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="MimeTypeType"> + <xsd:restriction base="xsd:token"/> + </xsd:simpleType> + <xsd:complexType name="AnyChildrenType" mixed="true"> + <xsd:sequence> + <xsd:any namespace="##any" processContents="lax" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="XMLContentType" mixed="true"> + <xsd:complexContent> + <xsd:extension base="AnyChildrenType"> + <xsd:attribute ref="xml:space" use="optional"/> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + <xsd:complexType name="ContentBaseType"> + <xsd:choice minOccurs="0"> + <xsd:element name="Base64Content" type="xsd:base64Binary"/> + <xsd:element name="XMLContent" type="XMLContentType"/> + <xsd:element name="LocRefContent" type="xsd:anyURI"/> + </xsd:choice> + </xsd:complexType> + <xsd:complexType name="ContentExLocRefBaseType"> + <xsd:complexContent> + <xsd:restriction base="ContentBaseType"> + <xsd:choice minOccurs="0"> + <xsd:element name="Base64Content" type="xsd:base64Binary"/> + <xsd:element name="XMLContent" type="XMLContentType"/> + </xsd:choice> + </xsd:restriction> + </xsd:complexContent> + </xsd:complexType> + <xsd:complexType name="ContentOptionalRefType"> + <xsd:complexContent> + <xsd:extension base="ContentBaseType"> + <xsd:attribute name="Reference" type="xsd:anyURI" use="optional"/> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + <xsd:complexType name="ContentRequiredRefType"> + <xsd:complexContent> + <xsd:restriction base="ContentOptionalRefType"> + <xsd:choice minOccurs="0"> + <xsd:element name="Base64Content" type="xsd:base64Binary"/> + <xsd:element name="XMLContent" type="XMLContentType"/> + <xsd:element name="LocRefContent" type="xsd:anyURI"/> + </xsd:choice> + <xsd:attribute name="Reference" type="xsd:anyURI" use="required"/> + </xsd:restriction> + </xsd:complexContent> + </xsd:complexType> + <xsd:complexType name="VerifyTransformsDataType"> + <xsd:choice maxOccurs="unbounded"> + <xsd:annotation> + <xsd:documentation>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. + </xsd:documentation> + </xsd:annotation> + <xsd:element ref="VerifyTransformsInfoProfile"/> + <xsd:element name="VerifyTransformsInfoProfileID" type="xsd:string"> + <xsd:annotation> + <xsd:documentation>Profilbezeichner für einen Transformationsweg + </xsd:documentation> + </xsd:annotation> + </xsd:element> + </xsd:choice> + </xsd:complexType> + <xsd:element name="QualifiedCertificate"> + <xsd:complexType> + <xsd:attribute name="source" use="optional"> + <xsd:simpleType> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="TSL"/> + <xsd:enumeration value="Certificate"/> + </xsd:restriction> + </xsd:simpleType> + </xsd:attribute> + </xsd:complexType> + </xsd:element> + <xsd:element name="SecureSignatureCreationDevice"> + <xsd:complexType> + <xsd:attribute name="source" use="optional"> + <xsd:simpleType> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="TSL"/> + <xsd:enumeration value="Certificate"/> + </xsd:restriction> + </xsd:simpleType> + </xsd:attribute> + </xsd:complexType> + </xsd:element> + <xsd:element name="IssuingCountry" type="xsd:token"/> + <xsd:element name="PublicAuthority" type="PublicAuthorityType"/> + <xsd:complexType name="PublicAuthorityType"> + <xsd:sequence> + <xsd:element name="Code" type="xsd:string" minOccurs="0"/> + </xsd:sequence> + </xsd:complexType> + <xsd:simpleType name="SignatoriesType"> + <xsd:union memberTypes="AllSignatoriesType"> + <xsd:simpleType> + <xsd:list itemType="xsd:positiveInteger"/> + </xsd:simpleType> + </xsd:union> + </xsd:simpleType> + <xsd:simpleType name="AllSignatoriesType"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="all"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CreateSignatureLocationType"> + <xsd:simpleContent> + <xsd:extension base="xsd:token"> + <xsd:attribute name="Index" type="xsd:integer" use="required"/> + </xsd:extension> + </xsd:simpleContent> + </xsd:complexType> + <xsd:complexType name="TransformParameterType"> + <xsd:choice minOccurs="0"> + <xsd:annotation> + <xsd:documentation>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.</xsd:documentation> + </xsd:annotation> + <xsd:element name="Base64Content" type="xsd:base64Binary"> + <xsd:annotation> + <xsd:documentation>Der Transformationsparameter explizit angegeben. + </xsd:documentation> + </xsd:annotation> + </xsd:element> + <xsd:element name="Hash"> + <xsd:annotation> + <xsd:documentation>Der Hashwert des Transformationsparameters. + </xsd:documentation> + </xsd:annotation> + <xsd:complexType> + <xsd:sequence> + <xsd:element ref="dsig:DigestMethod"/> + <xsd:element ref="dsig:DigestValue"/> + </xsd:sequence> + </xsd:complexType> + </xsd:element> + </xsd:choice> + <xsd:attribute name="URI" type="xsd:anyURI" use="required"/> + </xsd:complexType> + <xsd:element name="CreateSignatureEnvironmentProfile"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="CreateSignatureLocation" type="CreateSignatureLocationType"/> + <xsd:element name="Supplement" type="XMLDataObjectAssociationType" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + </xsd:element> + <xsd:element name="VerifyTransformsInfoProfile"> + <xsd:annotation> + <xsd:documentation>Explizite Angabe des Transformationswegs + </xsd:documentation> + </xsd:annotation> + <xsd:complexType> + <xsd:sequence> + <xsd:element ref="dsig:Transforms" minOccurs="0"/> + <xsd:element name="TransformParameter" type="TransformParameterType" minOccurs="0" maxOccurs="unbounded"> + <xsd:annotation> + <xsd:documentation>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.</xsd:documentation> + </xsd:annotation> + </xsd:element> + </xsd:sequence> + </xsd:complexType> + </xsd:element> + <xsd:element name="Supplement" type="XMLDataObjectAssociationType"/> + <xsd:element name="SupplementProfile" type="XMLDataObjectAssociationType"/> + <xsd:element name="CreateTransformsInfoProfile"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="CreateTransformsInfo" type="TransformsInfoType"/> + <xsd:element ref="Supplement" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + </xsd:element> +</xsd:schema> diff --git a/moaSig/moa-sig/src/main/resources/resources/schemas/MOA-SPSS-3.1.2.xsd b/moaSig/moa-sig/src/main/resources/resources/schemas/MOA-SPSS-3.1.2.xsd new file mode 100644 index 0000000..f8ad010 --- /dev/null +++ b/moaSig/moa-sig/src/main/resources/resources/schemas/MOA-SPSS-3.1.2.xsd @@ -0,0 +1,841 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- MOA SP/SS 2.0.0 Schema --> +<xsd:schema xmlns:dsig="http://www.w3.org/2000/09/xmldsig#" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://reference.e-government.gv.at/namespace/moa/20020822#" targetNamespace="http://reference.e-government.gv.at/namespace/moa/20020822#" elementFormDefault="qualified" attributeFormDefault="unqualified" version="1.2"> + <xsd:import namespace="http://www.w3.org/2000/09/xmldsig#" schemaLocation="http://www.w3.org/TR/xmldsig-core/xmldsig-core-schema.xsd"/> + <xsd:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="http://www.w3.org/2001/xml.xsd"/> + <!--########## Create CMS Signature ### --> + <!--### Create CMS Signature Request ### --> + <xsd:element name="CreateCMSSignatureRequest"> + <xsd:complexType> + <xsd:complexContent> + <xsd:extension base="CreateCMSSignatureRequestType"/> + </xsd:complexContent> + </xsd:complexType> + </xsd:element> + <xsd:complexType name="CreateCMSSignatureRequestType"> + <xsd:sequence> + <xsd:element name="KeyIdentifier" type="KeyIdentifierType"/> + <xsd:element name="SingleSignatureInfo" maxOccurs="unbounded"> + <xsd:annotation> + <xsd:documentation>Ermöglichung der Stapelsignatur durch + wiederholte Angabe dieses Elements</xsd:documentation> + </xsd:annotation> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="DataObjectInfo"> + <xsd:complexType> + <xsd:complexContent> + <xsd:extension base="CMSDataObjectInfoType"/> + </xsd:complexContent> + </xsd:complexType> + </xsd:element> + </xsd:sequence> + <xsd:attribute name="SecurityLayerConformity" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="PAdESConformity" type="xsd:boolean" use="optional" default="false"/> + </xsd:complexType> + </xsd:element> + </xsd:sequence> + </xsd:complexType> + <!--### Create CMS Signature Response ### --> + <xsd:element name="CreateCMSSignatureResponse" type="CreateCMSSignatureResponseType"/> + <xsd:complexType name="CreateCMSSignatureResponseType"> + <xsd:choice maxOccurs="unbounded"> + <xsd:annotation> + <xsd:documentation>Kardinalität 1..oo erlaubt die Antwort auf eine + Stapelsignatur-Anfrage</xsd:documentation> + </xsd:annotation> + <xsd:element name="CMSSignature" type="xsd:base64Binary"> + <xsd:annotation> + <xsd:documentation>Resultat, falls die Signaturerstellung + erfolgreich war</xsd:documentation> + </xsd:annotation> + </xsd:element> + <xsd:element ref="ErrorResponse"/> + </xsd:choice> + </xsd:complexType> + <!--########## Create XML Signature ### --> + <!--### Create XML Signature Request ### --> + <xsd:element name="CreateXMLSignatureRequest"> + <xsd:complexType> + <xsd:complexContent> + <xsd:extension base="CreateXMLSignatureRequestType"/> + </xsd:complexContent> + </xsd:complexType> + </xsd:element> + <xsd:complexType name="CreateXMLSignatureRequestType"> + <xsd:sequence> + <xsd:element name="KeyIdentifier" type="KeyIdentifierType"/> + <xsd:element name="SingleSignatureInfo" maxOccurs="unbounded"> + <xsd:annotation> + <xsd:documentation>Ermöglichung der Stapelsignatur durch + wiederholte Angabe dieses Elements</xsd:documentation> + </xsd:annotation> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="DataObjectInfo" maxOccurs="unbounded"> + <xsd:complexType> + <xsd:complexContent> + <xsd:extension base="DataObjectInfoType"> + <xsd:attribute name="ChildOfManifest" type="xsd:boolean" use="optional" default="false"/> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + </xsd:element> + <xsd:element name="CreateSignatureInfo" minOccurs="0"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="CreateSignatureEnvironment" type="ContentOptionalRefType"/> + <xsd:choice> + <xsd:annotation> + <xsd:documentation>Auswahl: Entweder explizite Angabe des + Signaturorts sowie ggf. sinnvoller Supplements im Zshg. mit + der Signaturumgebung, oder Verweis auf ein benanntes Profil + </xsd:documentation> + </xsd:annotation> + <xsd:element ref="CreateSignatureEnvironmentProfile"/> + <xsd:element name="CreateSignatureEnvironmentProfileID" type="ProfileIdentifierType"/> + </xsd:choice> + </xsd:sequence> + </xsd:complexType> + </xsd:element> + </xsd:sequence> + <xsd:attribute name="SecurityLayerConformity" type="xsd:boolean" use="optional" default="true"/> + </xsd:complexType> + </xsd:element> + </xsd:sequence> + </xsd:complexType> + <!--### Create XML Signature Response ### --> + <xsd:complexType name="CreateXMLSignatureResponseType"> + <xsd:choice maxOccurs="unbounded"> + <xsd:annotation> + <xsd:documentation>Kardinalität 1..oo erlaubt die Antwort auf eine + Stapelsignatur-Anfrage</xsd:documentation> + </xsd:annotation> + <xsd:element name="SignatureEnvironment"> + <xsd:annotation> + <xsd:documentation>Resultat, falls die Signaturerstellung + erfolgreich war</xsd:documentation> + </xsd:annotation> + <xsd:complexType> + <xsd:sequence> + <xsd:any namespace="##any" processContents="lax"/> + </xsd:sequence> + </xsd:complexType> + </xsd:element> + <xsd:element ref="ErrorResponse"/> + </xsd:choice> + </xsd:complexType> + <xsd:element name="CreateXMLSignatureResponse" type="CreateXMLSignatureResponseType"/> + <!--########## Create PDF Signature ### --> + <!--### Create PDF Signature Request ### --> + <xsd:element name="CreatePDFSignatureRequest"> + <xsd:complexType> + <xsd:complexContent> + <xsd:extension base="CreatePDFSignatureRequestType"/> + </xsd:complexContent> + </xsd:complexType> + </xsd:element> + <xsd:complexType name="CreatePDFSignatureRequestType"> + <xsd:sequence> + <xsd:element name="KeyIdentifier" type="KeyIdentifierType"/> + <xsd:element name="SingleSignatureInfo" maxOccurs="unbounded"> + <xsd:annotation> + <xsd:documentation>Ermöglichung der Stapelsignatur durch + wiederholte Angabe dieses Elements</xsd:documentation> + </xsd:annotation> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="PDFDocument" type="xsd:base64Binary"/> + <xsd:element name="SignatureProfile" type="xsd:string" minOccurs="0" maxOccurs="1"/> + <xsd:element name="SignaturePosition" type="xsd:string" minOccurs="0" maxOccurs="1"/> + <xsd:element name="SignatureID" type="xsd:string" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + </xsd:element> + </xsd:sequence> + </xsd:complexType> + <!--### Create PDF Signature Response ### --> + <xsd:element name="CreatePDFSignatureResponse" type="CreatePDFSignatureResponseType"/> + <xsd:complexType name="CreatePDFSignatureResponseType"> + <xsd:sequence> + <xsd:element name="PDFSignature" type="PDFSignedRepsonse" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <!--########## Verify CMS Signature ### --> + <!--### Verifiy CMS Signature Request ### --> + <xsd:element name="VerifyCMSSignatureRequest"> + <xsd:complexType> + <xsd:complexContent> + <xsd:extension base="VerifyCMSSignatureRequestType"> + <xsd:attribute name="Signatories" type="SignatoriesType" use="optional" default="1"/> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + </xsd:element> + <xsd:complexType name="VerifyCMSSignatureRequestType"> + <xsd:sequence> + <xsd:element name="DateTime" type="xsd:dateTime" minOccurs="0"/> + <xsd:element name="ExtendedValidation" type="xsd:boolean" default="false" minOccurs="0"/> + <xsd:element name="CMSSignature" type="xsd:base64Binary"/> + <xsd:element name="DataObject" type="CMSDataObjectOptionalMetaType" minOccurs="0"/> + <xsd:element name="TrustProfileID" type="xsd:token"> + <xsd:annotation> + <xsd:documentation>mit diesem Profil wird eine Menge von + vertrauenswürdigen Wurzelzertifikaten spezifiziert + </xsd:documentation> + </xsd:annotation> + </xsd:element> + </xsd:sequence> + </xsd:complexType> + <!--### Verify CMS Signature Response ### --> + <xsd:element name="VerifyCMSSignatureResponse" type="VerifyCMSSignatureResponseType"/> + <xsd:complexType name="VerifyCMSSignatureResponseType"> + <xsd:sequence maxOccurs="unbounded"> + <xsd:element name="SignerInfo" type="dsig:KeyInfoType"> + <xsd:annotation> + <xsd:documentation>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</xsd:documentation> + </xsd:annotation> + </xsd:element> + <xsd:element name="SignatureAlgorithm" type="xsd:string" minOccurs="0" maxOccurs="1"/> + <xsd:element name="SignatureCheck" type="CheckResultType"/> + <xsd:element name="CertificateCheck" type="CheckResultType"/> + <xsd:element name="FormCheckResult" type="FormResultType" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="ExtendedCertificateCheck" type="ExtendedCertificateCheckResultType" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="VerifyASICCMSSignatureResponseType"> + <xsd:sequence maxOccurs="unbounded"> + <xsd:element name="SignerInfo" type="dsig:KeyInfoType"> + <xsd:annotation> + <xsd:documentation>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</xsd:documentation> + </xsd:annotation> + </xsd:element> + <xsd:element name="SigningTime" type="xsd:dateTime" minOccurs="0"/> + <xsd:element name="SignatureCheck" type="CheckResultType"/> + <xsd:element name="CertificateCheck" type="CheckResultType"/> + <xsd:element name="FormCheckResult" type="FormResultType" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="ExtendedCertificateCheck" type="ExtendedCertificateCheckResultType" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <!--########## Verify PDF Signature ### --> + <!--### Verifiy PDF Signature Request ### --> + <xsd:element name="VerifyPDFSignatureRequest"> + <xsd:complexType> + <xsd:complexContent> + <xsd:extension base="VerifyPDFSignatureRequestType"> + <xsd:attribute name="Signatories" type="SignatoriesType" use="optional" default="1"/> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + </xsd:element> + <xsd:complexType name="VerifyPDFSignatureRequestType"> + <xsd:sequence> + <xsd:element name="DateTime" type="xsd:dateTime" minOccurs="0"/> + <xsd:element name="ExtendedValidation" type="xsd:boolean" default="false" minOccurs="0"/> + <xsd:element name="PDFSignature" type="xsd:base64Binary"/> + <xsd:element name="TrustProfileID" type="xsd:token"> + <xsd:annotation> + <xsd:documentation>mit diesem Profil wird eine Menge von + vertrauenswürdigen Wurzelzertifikaten spezifiziert + </xsd:documentation> + </xsd:annotation> + </xsd:element> + </xsd:sequence> + </xsd:complexType> + <!--########## Verify PDF Signature ### --> + <!--### Verifiy ASIC Signature Request ### --> + <xsd:element name="VerifyASICSignatureRequest"> + <xsd:complexType> + <xsd:complexContent> + <xsd:extension base="VerifyASICSignatureRequestType"/> + </xsd:complexContent> + </xsd:complexType> + </xsd:element> + <xsd:complexType name="VerifyASICSignatureRequestType"> + <xsd:sequence> + <xsd:element name="DateTime" type="xsd:dateTime" minOccurs="0"/> + <xsd:element name="ExtendedValidation" type="xsd:boolean" default="false" minOccurs="0"/> + <xsd:element name="ASICSignature" type="xsd:base64Binary"/> + <xsd:element name="ASICExtension" type="xsd:string"> + <xsd:annotation> + <xsd:documentation>asics or asice</xsd:documentation> + </xsd:annotation> + </xsd:element> + <xsd:element name="TrustProfileID" type="xsd:token"> + <xsd:annotation> + <xsd:documentation>mit diesem Profil wird eine Menge von + vertrauenswürdigen Wurzelzertifikaten spezifiziert + </xsd:documentation> + </xsd:annotation> + </xsd:element> + </xsd:sequence> + </xsd:complexType> + <!--### Verify ASIC Signature Response ### --> + <xsd:element name="VerifyASICSignatureResponse" type="VerifyASICSignatureResponseType"/> + <xsd:complexType name="VerifyASICSignatureResponseType"> + <xsd:sequence> + <xsd:element name="ASiCSignatureResult" type="ASICResultType" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <!--xsd:complexType name="signedFilesType"> + <xsd:sequence> + <xsd:element name="signedFiles" type="xsd:string"> + </xsd:sequence> + <xsd:attribute name="hashAlgorithm" type="xsd:string" use="optional"/> + </xsd:complexType--> + <xsd:complexType name="ASICResultType"> + <xsd:sequence> + <xsd:element name="signedFiles" minOccurs="0" maxOccurs="unbounded"> + <xsd:complexType> + <xsd:simpleContent> + <xsd:extension base="xsd:string"> + <xsd:attribute name="hashAlgorithm" type="xsd:string" use="optional"/> + </xsd:extension> + </xsd:simpleContent> + </xsd:complexType> + </xsd:element> + <xsd:element name="XMLSignatureResult" type="VerifyASICXMLSignatureResponseType" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="CMSSignatureResult" type="VerifyASICCMSSignatureResponseType" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <!--### Verify CMS Signature Response ### --> + <xsd:element name="VerifyPDFSignatureResponse" type="VerifyPDFSignatureResponseType"/> + <xsd:complexType name="VerifyPDFSignatureResponseType"> + <xsd:sequence maxOccurs="unbounded"> + <xsd:element name="SignatureResult" type="PDFSignatureResultType"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="PDFSignatureResultType"> + <xsd:sequence> + <xsd:element name="SignerInfo" type="dsig:KeyInfoType" minOccurs="0"> + <xsd:annotation> + <xsd:documentation>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</xsd:documentation> + </xsd:annotation> + </xsd:element> + <xsd:element name="SigningTime" type="xsd:dateTime" minOccurs="0"/> + <xsd:element name="SignatureAlgorithm" type="xsd:string" minOccurs="0" maxOccurs="1"/> + <xsd:element name="SignatureCheck" type="CheckResultType"/> + <xsd:element name="CertificateCheck" type="CheckResultType"/> + <xsd:element name="FormCheckResult" type="FormResultType" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="ExtendedCertificateCheck" type="ExtendedCertificateCheckResultType" minOccurs="0" maxOccurs="1"/> + <xsd:element name="SignatureProperties" type="PDFSignatureProperties" minOccurs="0" maxOccurs="1" /> + </xsd:sequence> + </xsd:complexType> + + <xsd:complexType name="PDFSignatureProperties"> + <xsd:sequence> + <xsd:element name="SignatureCoversFullPDF" type="xsd:boolean" minOccurs="0" maxOccurs="1"/> + <xsd:element name="SignatureByteRange" type="xsd:string" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + + <!--########## Verify XML Signature ### --> + <!--### Verify XML Signature Request ### --> + <xsd:element name="VerifyXMLSignatureRequest" type="VerifyXMLSignatureRequestType"/> + <xsd:complexType name="VerifyXMLSignatureRequestType"> + <xsd:sequence> + <xsd:element name="DateTime" type="xsd:dateTime" minOccurs="0"/> + <xsd:element name="ExtendedValidation" type="xsd:boolean" default="false" minOccurs="0"/> + <xsd:element name="VerifySignatureInfo"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="VerifySignatureEnvironment" type="ContentOptionalRefType"/> + <xsd:element name="VerifySignatureLocation" type="xsd:token"/> + </xsd:sequence> + </xsd:complexType> + </xsd:element> + <xsd:choice minOccurs="0" maxOccurs="unbounded"> + <xsd:element ref="SupplementProfile"/> + <xsd:element name="SupplementProfileID" type="xsd:string"/> + </xsd:choice> + <xsd:element name="SignatureManifestCheckParams" minOccurs="0"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="ReferenceInfo" type="VerifyTransformsDataType" maxOccurs="unbounded"> + <xsd:annotation> + <xsd:documentation>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.</xsd:documentation> + </xsd:annotation> + </xsd:element> + </xsd:sequence> + <xsd:attribute name="ReturnReferenceInputData" type="xsd:boolean" use="optional" default="true"/> + </xsd:complexType> + </xsd:element> + <xsd:element name="ReturnHashInputData" minOccurs="0"/> + <xsd:element name="TrustProfileID" type="xsd:token"> + <xsd:annotation> + <xsd:documentation>mit diesem Profil wird eine Menge von + vertrauenswürdigen Wurzelzertifikaten spezifiziert + </xsd:documentation> + </xsd:annotation> + </xsd:element> + </xsd:sequence> + </xsd:complexType> + <!--### Verify XML Signature Response ### --> + <xsd:element name="VerifyXMLSignatureResponse" type="VerifyXMLSignatureResponseType"/> + <xsd:complexType name="VerifyXMLSignatureResponseType"> + <xsd:sequence> + <xsd:element name="SignerInfo" type="dsig:KeyInfoType"> + <xsd:annotation> + <xsd:documentation>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</xsd:documentation> + </xsd:annotation> + </xsd:element> + <xsd:element name="HashInputData" type="InputDataType" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="ReferenceInputData" type="InputDataType" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="SignatureAlgorithm" type="xsd:string" minOccurs="0" maxOccurs="1"/> + <xsd:element name="SignatureCheck" type="ReferencesCheckResultType"/> + <xsd:element name="SignatureManifestCheck" type="ReferencesCheckResultType" minOccurs="0"/> + <xsd:element name="XMLDSIGManifestCheck" type="ManifestRefsCheckResultType" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="CertificateCheck" type="CheckResultType"/> + <xsd:element name="FormCheckResult" type="FormResultType" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="ExtendedCertificateCheck" type="ExtendedCertificateCheckResultType" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="VerifyASICXMLSignatureResponseType"> + <xsd:sequence> + <xsd:element name="SignerInfo" type="dsig:KeyInfoType"> + <xsd:annotation> + <xsd:documentation>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</xsd:documentation> + </xsd:annotation> + </xsd:element> + <xsd:element name="SigningTime" type="xsd:dateTime" minOccurs="0"/> + <xsd:element name="HashInputData" type="InputDataType" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="ReferenceInputData" type="InputDataType" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="SignatureCheck" type="ReferencesCheckResultType"/> + <xsd:element name="SignatureManifestCheck" type="ReferencesCheckResultType" minOccurs="0"/> + <xsd:element name="XMLDSIGManifestCheck" type="ManifestRefsCheckResultType" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="CertificateCheck" type="CheckResultType"/> + <xsd:element name="FormCheckResult" type="FormResultType" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="ExtendedCertificateCheck" type="ExtendedCertificateCheckResultType" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:simpleType name="ProfileIdentifierType"> + <xsd:restriction base="xsd:token"/> + </xsd:simpleType> + <xsd:complexType name="InputDataType"> + <xsd:complexContent> + <xsd:extension base="ContentExLocRefBaseType"> + <xsd:attribute name="PartOf" use="optional" default="SignedInfo"> + <xsd:simpleType> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="SignedInfo"/> + <xsd:enumeration value="XMLDSIGManifest"/> + </xsd:restriction> + </xsd:simpleType> + </xsd:attribute> + <xsd:attribute name="ReferringSigReference" type="xsd:nonNegativeInteger" use="optional"/> + <xsd:attribute name="HashAlgorithm" type="xsd:string" use="optional"/> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + <xsd:complexType name="MetaInfoType"> + <xsd:sequence> + <xsd:element name="MimeType" type="MimeTypeType"/> + <xsd:element name="Description" type="xsd:anyURI" minOccurs="0"/> + <xsd:any namespace="##other" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="FinalDataMetaInfoType"> + <xsd:complexContent> + <xsd:extension base="MetaInfoType"> + <xsd:sequence> + <xsd:element name="Type" type="xsd:anyURI" minOccurs="0"/> + </xsd:sequence> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + <xsd:complexType name="DataObjectInfoType"> + <xsd:sequence> + <xsd:element name="DataObject"> + <xsd:complexType> + <xsd:complexContent> + <xsd:extension base="ContentOptionalRefType"/> + </xsd:complexContent> + </xsd:complexType> + </xsd:element> + <xsd:choice> + <xsd:annotation> + <xsd:documentation>Auswahl: Entweder explizite Angabe EINER + Transformationskette inklusive ggf. sinnvoller Supplements oder + Verweis auf ein benanntes Profil</xsd:documentation> + </xsd:annotation> + <xsd:element ref="CreateTransformsInfoProfile"/> + <xsd:element name="CreateTransformsInfoProfileID" type="ProfileIdentifierType"/> + </xsd:choice> + </xsd:sequence> + <xsd:attribute name="Structure" use="required"> + <xsd:simpleType> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="detached"/> + <xsd:enumeration value="enveloping"/> + </xsd:restriction> + </xsd:simpleType> + </xsd:attribute> + </xsd:complexType> + <xsd:complexType name="CMSDataObjectInfoType"> + <xsd:sequence> + <xsd:element name="DataObject"> + <xsd:complexType> + <xsd:complexContent> + <xsd:extension base="CMSDataObjectRequiredMetaType"/> + </xsd:complexContent> + </xsd:complexType> + </xsd:element> + </xsd:sequence> + <xsd:attribute name="Structure" use="required"> + <xsd:simpleType> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="detached"/> + <xsd:enumeration value="enveloping"/> + </xsd:restriction> + </xsd:simpleType> + </xsd:attribute> + </xsd:complexType> + <xsd:complexType name="TransformsInfoType"> + <xsd:sequence> + <xsd:element ref="dsig:Transforms" minOccurs="0"/> + <xsd:element name="FinalDataMetaInfo" type="FinalDataMetaInfoType"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="XMLDataObjectAssociationType"> + <xsd:sequence> + <xsd:element name="MetaInfo" type="MetaInfoType" minOccurs="0"/> + <xsd:element name="Content" type="ContentRequiredRefType"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="PDFSignedRepsonse"> + <xsd:sequence> + <xsd:element name="SignatureID" type="xsd:string" minOccurs="0" maxOccurs="1"/> + <xsd:choice maxOccurs="1"> + <xsd:element name="PDFSignature" type="xsd:base64Binary"> + <xsd:annotation> + <xsd:documentation>Resultat, falls die Signaturerstellung + erfolgreich war</xsd:documentation> + </xsd:annotation> + </xsd:element> + <xsd:element ref="ErrorResponse"/> + </xsd:choice> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CMSDataObjectOptionalMetaType"> + <xsd:sequence> + <xsd:element name="MetaInfo" type="MetaInfoType" minOccurs="0"/> + <xsd:element name="Content" type="CMSContentBaseType"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CMSDataObjectRequiredMetaType"> + <xsd:sequence> + <xsd:element name="MetaInfo" type="MetaInfoType"/> + <xsd:element name="Content" type="CMSContentBaseType"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CMSContentBaseType"> + <xsd:complexContent> + <xsd:restriction base="ContentOptionalRefType"> + <xsd:choice minOccurs="0"> + <xsd:element name="Base64Content" type="xsd:base64Binary"/> + </xsd:choice> + </xsd:restriction> + </xsd:complexContent> + </xsd:complexType> + <xsd:complexType name="CheckResultType"> + <xsd:sequence> + <xsd:element name="Code" type="xsd:nonNegativeInteger"/> + <xsd:element name="Info" type="AnyChildrenType" minOccurs="0"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="FormResultType"> + <xsd:sequence> + <xsd:element name="Code" type="xsd:nonNegativeInteger" minOccurs="1" maxOccurs="1"/> + <xsd:element name="Name" type="xsd:string" minOccurs="1" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="IndicationResultType"> + <xsd:sequence> + <xsd:element name="Code" type="xsd:nonNegativeInteger" minOccurs="1" maxOccurs="1"/> + <xsd:element name="Name" type="xsd:string" minOccurs="1" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="ExtendedCertificateCheckResultType"> + <xsd:sequence> + <xsd:element name="Major" type="IndicationResultType" minOccurs="1" maxOccurs="1"/> + <xsd:element name="Minor" type="IndicationResultType" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="ReferencesCheckResultType"> + <xsd:complexContent> + <xsd:restriction base="CheckResultType"> + <xsd:sequence> + <xsd:element name="Code" type="xsd:nonNegativeInteger"/> + <xsd:element name="Info" type="ReferencesCheckResultInfoType" minOccurs="0"/> + </xsd:sequence> + </xsd:restriction> + </xsd:complexContent> + </xsd:complexType> + <xsd:complexType name="ReferencesCheckResultInfoType" mixed="true"> + <xsd:complexContent> + <xsd:restriction base="AnyChildrenType"> + <xsd:sequence> + <xsd:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="FailedReference" type="xsd:positiveInteger" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:restriction> + </xsd:complexContent> + </xsd:complexType> + <xsd:complexType name="ManifestRefsCheckResultType"> + <xsd:complexContent> + <xsd:restriction base="CheckResultType"> + <xsd:sequence> + <xsd:element name="Code" type="xsd:nonNegativeInteger"/> + <xsd:element name="Info" type="ManifestRefsCheckResultInfoType"/> + </xsd:sequence> + </xsd:restriction> + </xsd:complexContent> + </xsd:complexType> + <xsd:complexType name="ManifestRefsCheckResultInfoType" mixed="true"> + <xsd:complexContent> + <xsd:restriction base="AnyChildrenType"> + <xsd:sequence> + <xsd:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="FailedReference" type="xsd:positiveInteger" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="ReferringSigReference" type="xsd:positiveInteger"/> + </xsd:sequence> + </xsd:restriction> + </xsd:complexContent> + </xsd:complexType> + <!--########## Error Response ### --> + <xsd:element name="ErrorResponse" type="ErrorResponseType"> + <xsd:annotation> + <xsd:documentation>Resultat, falls die Signaturerstellung gescheitert + ist</xsd:documentation> + </xsd:annotation> + </xsd:element> + <xsd:complexType name="ErrorResponseType"> + <xsd:sequence> + <xsd:element name="ErrorCode" type="xsd:integer"/> + <xsd:element name="Info" type="xsd:string"/> + </xsd:sequence> + </xsd:complexType> + <!--########## Auxiliary Types ### --> + <xsd:simpleType name="KeyIdentifierType"> + <xsd:restriction base="xsd:string"/> + </xsd:simpleType> + <xsd:simpleType name="KeyStorageType"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="Software"/> + <xsd:enumeration value="Hardware"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="MimeTypeType"> + <xsd:restriction base="xsd:token"/> + </xsd:simpleType> + <xsd:complexType name="AnyChildrenType" mixed="true"> + <xsd:sequence> + <xsd:any namespace="##any" processContents="lax" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="XMLContentType" mixed="true"> + <xsd:complexContent> + <xsd:extension base="AnyChildrenType"> + <xsd:attribute ref="xml:space" use="optional"/> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + <xsd:complexType name="ContentBaseType"> + <xsd:choice minOccurs="0"> + <xsd:element name="Base64Content" type="xsd:base64Binary"/> + <xsd:element name="XMLContent" type="XMLContentType"/> + <xsd:element name="LocRefContent" type="xsd:anyURI"/> + </xsd:choice> + </xsd:complexType> + <xsd:complexType name="ContentExLocRefBaseType"> + <xsd:complexContent> + <xsd:restriction base="ContentBaseType"> + <xsd:choice minOccurs="0"> + <xsd:element name="Base64Content" type="xsd:base64Binary"/> + <xsd:element name="XMLContent" type="XMLContentType"/> + </xsd:choice> + </xsd:restriction> + </xsd:complexContent> + </xsd:complexType> + <xsd:complexType name="ContentOptionalRefType"> + <xsd:complexContent> + <xsd:extension base="ContentBaseType"> + <xsd:attribute name="Reference" type="xsd:anyURI" use="optional"/> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + <xsd:complexType name="ContentRequiredRefType"> + <xsd:complexContent> + <xsd:restriction base="ContentOptionalRefType"> + <xsd:choice minOccurs="0"> + <xsd:element name="Base64Content" type="xsd:base64Binary"/> + <xsd:element name="XMLContent" type="XMLContentType"/> + <xsd:element name="LocRefContent" type="xsd:anyURI"/> + </xsd:choice> + <xsd:attribute name="Reference" type="xsd:anyURI" use="required"/> + </xsd:restriction> + </xsd:complexContent> + </xsd:complexType> + <xsd:complexType name="VerifyTransformsDataType"> + <xsd:choice maxOccurs="unbounded"> + <xsd:annotation> + <xsd:documentation>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. + </xsd:documentation> + </xsd:annotation> + <xsd:element ref="VerifyTransformsInfoProfile"/> + <xsd:element name="VerifyTransformsInfoProfileID" type="xsd:string"> + <xsd:annotation> + <xsd:documentation>Profilbezeichner für einen Transformationsweg + </xsd:documentation> + </xsd:annotation> + </xsd:element> + </xsd:choice> + </xsd:complexType> + <xsd:element name="QualifiedCertificate"> + <xsd:complexType> + <xsd:attribute name="source" use="optional"> + <xsd:simpleType> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="TSL"/> + <xsd:enumeration value="Certificate"/> + </xsd:restriction> + </xsd:simpleType> + </xsd:attribute> + </xsd:complexType> + </xsd:element> + <xsd:element name="SecureSignatureCreationDevice"> + <xsd:complexType> + <xsd:attribute name="source" use="optional"> + <xsd:simpleType> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="TSL"/> + <xsd:enumeration value="Certificate"/> + </xsd:restriction> + </xsd:simpleType> + </xsd:attribute> + </xsd:complexType> + </xsd:element> + <xsd:element name="IssuingCountry" type="xsd:token"/> + <xsd:element name="PublicAuthority" type="PublicAuthorityType"/> + <xsd:complexType name="PublicAuthorityType"> + <xsd:sequence> + <xsd:element name="Code" type="xsd:string" minOccurs="0"/> + </xsd:sequence> + </xsd:complexType> + <xsd:simpleType name="SignatoriesType"> + <xsd:union memberTypes="AllSignatoriesType"> + <xsd:simpleType> + <xsd:list itemType="xsd:positiveInteger"/> + </xsd:simpleType> + </xsd:union> + </xsd:simpleType> + <xsd:simpleType name="AllSignatoriesType"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="all"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CreateSignatureLocationType"> + <xsd:simpleContent> + <xsd:extension base="xsd:token"> + <xsd:attribute name="Index" type="xsd:integer" use="required"/> + </xsd:extension> + </xsd:simpleContent> + </xsd:complexType> + <xsd:complexType name="TransformParameterType"> + <xsd:choice minOccurs="0"> + <xsd:annotation> + <xsd:documentation>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.</xsd:documentation> + </xsd:annotation> + <xsd:element name="Base64Content" type="xsd:base64Binary"> + <xsd:annotation> + <xsd:documentation>Der Transformationsparameter explizit angegeben. + </xsd:documentation> + </xsd:annotation> + </xsd:element> + <xsd:element name="Hash"> + <xsd:annotation> + <xsd:documentation>Der Hashwert des Transformationsparameters. + </xsd:documentation> + </xsd:annotation> + <xsd:complexType> + <xsd:sequence> + <xsd:element ref="dsig:DigestMethod"/> + <xsd:element ref="dsig:DigestValue"/> + </xsd:sequence> + </xsd:complexType> + </xsd:element> + </xsd:choice> + <xsd:attribute name="URI" type="xsd:anyURI" use="required"/> + </xsd:complexType> + <xsd:element name="CreateSignatureEnvironmentProfile"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="CreateSignatureLocation" type="CreateSignatureLocationType"/> + <xsd:element name="Supplement" type="XMLDataObjectAssociationType" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + </xsd:element> + <xsd:element name="VerifyTransformsInfoProfile"> + <xsd:annotation> + <xsd:documentation>Explizite Angabe des Transformationswegs + </xsd:documentation> + </xsd:annotation> + <xsd:complexType> + <xsd:sequence> + <xsd:element ref="dsig:Transforms" minOccurs="0"/> + <xsd:element name="TransformParameter" type="TransformParameterType" minOccurs="0" maxOccurs="unbounded"> + <xsd:annotation> + <xsd:documentation>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.</xsd:documentation> + </xsd:annotation> + </xsd:element> + </xsd:sequence> + </xsd:complexType> + </xsd:element> + <xsd:element name="Supplement" type="XMLDataObjectAssociationType"/> + <xsd:element name="SupplementProfile" type="XMLDataObjectAssociationType"/> + <xsd:element name="CreateTransformsInfoProfile"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="CreateTransformsInfo" type="TransformsInfoType"/> + <xsd:element ref="Supplement" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + </xsd:element> +</xsd:schema> diff --git a/moaSig/moa-sig/src/main/webapp/WEB-INF/web.xml b/moaSig/moa-sig/src/main/webapp/WEB-INF/web.xml index 910c037..ca3b69f 100644 --- a/moaSig/moa-sig/src/main/webapp/WEB-INF/web.xml +++ b/moaSig/moa-sig/src/main/webapp/WEB-INF/web.xml @@ -22,6 +22,12 @@ <servlet-class>at.gv.egovernment.moa.spss.server.service.CertificateProviderServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> + <servlet> + <servlet-name>TSLClientStatusServlet</servlet-name> + <display-name>MOA TSLClient Status-Check Servlet</display-name> + <servlet-class>at.gv.egovernment.moa.spss.server.service.TSLClientStatusServlet</servlet-class> + <load-on-startup>1</load-on-startup> + </servlet> <servlet-mapping> <servlet-name>AxisServlet</servlet-name> <url-pattern>/services/*</url-pattern> @@ -36,6 +42,11 @@ <servlet-name>CertificateProviderServlet</servlet-name> <url-pattern>/Certificate</url-pattern> </servlet-mapping> + <servlet-mapping> + <servlet-name>TSLClientStatusServlet</servlet-name> + <url-pattern>/TSLStatusCheck</url-pattern> + </servlet-mapping> + <security-constraint> <web-resource-collection> 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 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- MOA SP/SS 2.0.0 Schema --> +<xsd:schema xmlns:dsig="http://www.w3.org/2000/09/xmldsig#" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://reference.e-government.gv.at/namespace/moa/20020822#" targetNamespace="http://reference.e-government.gv.at/namespace/moa/20020822#" elementFormDefault="qualified" attributeFormDefault="unqualified" version="1.2"> + <xsd:import namespace="http://www.w3.org/2000/09/xmldsig#" schemaLocation="http://www.w3.org/TR/xmldsig-core/xmldsig-core-schema.xsd"/> + <xsd:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="http://www.w3.org/2001/xml.xsd"/> + <!--########## Create CMS Signature ### --> + <!--### Create CMS Signature Request ### --> + <xsd:element name="CreateCMSSignatureRequest"> + <xsd:complexType> + <xsd:complexContent> + <xsd:extension base="CreateCMSSignatureRequestType"/> + </xsd:complexContent> + </xsd:complexType> + </xsd:element> + <xsd:complexType name="CreateCMSSignatureRequestType"> + <xsd:sequence> + <xsd:element name="KeyIdentifier" type="KeyIdentifierType"/> + <xsd:element name="SingleSignatureInfo" maxOccurs="unbounded"> + <xsd:annotation> + <xsd:documentation>Ermöglichung der Stapelsignatur durch + wiederholte Angabe dieses Elements</xsd:documentation> + </xsd:annotation> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="DataObjectInfo"> + <xsd:complexType> + <xsd:complexContent> + <xsd:extension base="CMSDataObjectInfoType"/> + </xsd:complexContent> + </xsd:complexType> + </xsd:element> + </xsd:sequence> + <xsd:attribute name="SecurityLayerConformity" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="PAdESConformity" type="xsd:boolean" use="optional" default="false"/> + </xsd:complexType> + </xsd:element> + </xsd:sequence> + </xsd:complexType> + <!--### Create CMS Signature Response ### --> + <xsd:element name="CreateCMSSignatureResponse" type="CreateCMSSignatureResponseType"/> + <xsd:complexType name="CreateCMSSignatureResponseType"> + <xsd:choice maxOccurs="unbounded"> + <xsd:annotation> + <xsd:documentation>Kardinalität 1..oo erlaubt die Antwort auf eine + Stapelsignatur-Anfrage</xsd:documentation> + </xsd:annotation> + <xsd:element name="CMSSignature" type="xsd:base64Binary"> + <xsd:annotation> + <xsd:documentation>Resultat, falls die Signaturerstellung + erfolgreich war</xsd:documentation> + </xsd:annotation> + </xsd:element> + <xsd:element ref="ErrorResponse"/> + </xsd:choice> + </xsd:complexType> + <!--########## Create XML Signature ### --> + <!--### Create XML Signature Request ### --> + <xsd:element name="CreateXMLSignatureRequest"> + <xsd:complexType> + <xsd:complexContent> + <xsd:extension base="CreateXMLSignatureRequestType"/> + </xsd:complexContent> + </xsd:complexType> + </xsd:element> + <xsd:complexType name="CreateXMLSignatureRequestType"> + <xsd:sequence> + <xsd:element name="KeyIdentifier" type="KeyIdentifierType"/> + <xsd:element name="SingleSignatureInfo" maxOccurs="unbounded"> + <xsd:annotation> + <xsd:documentation>Ermöglichung der Stapelsignatur durch + wiederholte Angabe dieses Elements</xsd:documentation> + </xsd:annotation> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="DataObjectInfo" maxOccurs="unbounded"> + <xsd:complexType> + <xsd:complexContent> + <xsd:extension base="DataObjectInfoType"> + <xsd:attribute name="ChildOfManifest" type="xsd:boolean" use="optional" default="false"/> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + </xsd:element> + <xsd:element name="CreateSignatureInfo" minOccurs="0"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="CreateSignatureEnvironment" type="ContentOptionalRefType"/> + <xsd:choice> + <xsd:annotation> + <xsd:documentation>Auswahl: Entweder explizite Angabe des + Signaturorts sowie ggf. sinnvoller Supplements im Zshg. mit + der Signaturumgebung, oder Verweis auf ein benanntes Profil + </xsd:documentation> + </xsd:annotation> + <xsd:element ref="CreateSignatureEnvironmentProfile"/> + <xsd:element name="CreateSignatureEnvironmentProfileID" type="ProfileIdentifierType"/> + </xsd:choice> + </xsd:sequence> + </xsd:complexType> + </xsd:element> + </xsd:sequence> + <xsd:attribute name="SecurityLayerConformity" type="xsd:boolean" use="optional" default="true"/> + </xsd:complexType> + </xsd:element> + </xsd:sequence> + </xsd:complexType> + <!--### Create XML Signature Response ### --> + <xsd:complexType name="CreateXMLSignatureResponseType"> + <xsd:choice maxOccurs="unbounded"> + <xsd:annotation> + <xsd:documentation>Kardinalität 1..oo erlaubt die Antwort auf eine + Stapelsignatur-Anfrage</xsd:documentation> + </xsd:annotation> + <xsd:element name="SignatureEnvironment"> + <xsd:annotation> + <xsd:documentation>Resultat, falls die Signaturerstellung + erfolgreich war</xsd:documentation> + </xsd:annotation> + <xsd:complexType> + <xsd:sequence> + <xsd:any namespace="##any" processContents="lax"/> + </xsd:sequence> + </xsd:complexType> + </xsd:element> + <xsd:element ref="ErrorResponse"/> + </xsd:choice> + </xsd:complexType> + <xsd:element name="CreateXMLSignatureResponse" type="CreateXMLSignatureResponseType"/> + <!--########## Create PDF Signature ### --> + <!--### Create PDF Signature Request ### --> + <xsd:element name="CreatePDFSignatureRequest"> + <xsd:complexType> + <xsd:complexContent> + <xsd:extension base="CreatePDFSignatureRequestType"/> + </xsd:complexContent> + </xsd:complexType> + </xsd:element> + <xsd:complexType name="CreatePDFSignatureRequestType"> + <xsd:sequence> + <xsd:element name="KeyIdentifier" type="KeyIdentifierType"/> + <xsd:element name="SingleSignatureInfo" maxOccurs="unbounded"> + <xsd:annotation> + <xsd:documentation>Ermöglichung der Stapelsignatur durch + wiederholte Angabe dieses Elements</xsd:documentation> + </xsd:annotation> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="PDFDocument" type="xsd:base64Binary"/> + <xsd:element name="SignatureProfile" type="xsd:string" minOccurs="0" maxOccurs="1"/> + <xsd:element name="SignaturePosition" type="xsd:string" minOccurs="0" maxOccurs="1"/> + <xsd:element name="SignatureID" type="xsd:string" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + </xsd:element> + </xsd:sequence> + </xsd:complexType> + <!--### Create PDF Signature Response ### --> + <xsd:element name="CreatePDFSignatureResponse" type="CreatePDFSignatureResponseType"/> + <xsd:complexType name="CreatePDFSignatureResponseType"> + <xsd:sequence> + <xsd:element name="PDFSignature" type="PDFSignedRepsonse" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <!--########## Verify CMS Signature ### --> + <!--### Verifiy CMS Signature Request ### --> + <xsd:element name="VerifyCMSSignatureRequest"> + <xsd:complexType> + <xsd:complexContent> + <xsd:extension base="VerifyCMSSignatureRequestType"> + <xsd:attribute name="Signatories" type="SignatoriesType" use="optional" default="1"/> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + </xsd:element> + <xsd:complexType name="VerifyCMSSignatureRequestType"> + <xsd:sequence> + <xsd:element name="DateTime" type="xsd:dateTime" minOccurs="0"/> + <xsd:element name="ExtendedValidation" type="xsd:boolean" default="false" minOccurs="0"/> + <xsd:element name="CMSSignature" type="xsd:base64Binary"/> + <xsd:element name="DataObject" type="CMSDataObjectOptionalMetaType" minOccurs="0"/> + <xsd:element name="TrustProfileID" type="xsd:token"> + <xsd:annotation> + <xsd:documentation>mit diesem Profil wird eine Menge von + vertrauenswürdigen Wurzelzertifikaten spezifiziert + </xsd:documentation> + </xsd:annotation> + </xsd:element> + </xsd:sequence> + </xsd:complexType> + <!--### Verify CMS Signature Response ### --> + <xsd:element name="VerifyCMSSignatureResponse" type="VerifyCMSSignatureResponseType"/> + <xsd:complexType name="VerifyCMSSignatureResponseType"> + <xsd:sequence maxOccurs="unbounded"> + <xsd:element name="SignerInfo" type="dsig:KeyInfoType"> + <xsd:annotation> + <xsd:documentation>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</xsd:documentation> + </xsd:annotation> + </xsd:element> + <xsd:element name="SignatureCheck" type="CheckResultType"/> + <xsd:element name="CertificateCheck" type="CheckResultType"/> + <xsd:element name="FormCheckResult" type="FormResultType" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="ExtendedCertificateCheck" type="ExtendedCertificateCheckResultType" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="VerifyASICCMSSignatureResponseType"> + <xsd:sequence maxOccurs="unbounded"> + <xsd:element name="SignerInfo" type="dsig:KeyInfoType"> + <xsd:annotation> + <xsd:documentation>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</xsd:documentation> + </xsd:annotation> + </xsd:element> + <xsd:element name="SigningTime" type="xsd:dateTime" minOccurs="0"/> + <xsd:element name="SignatureCheck" type="CheckResultType"/> + <xsd:element name="CertificateCheck" type="CheckResultType"/> + <xsd:element name="FormCheckResult" type="FormResultType" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="ExtendedCertificateCheck" type="ExtendedCertificateCheckResultType" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <!--########## Verify PDF Signature ### --> + <!--### Verifiy PDF Signature Request ### --> + <xsd:element name="VerifyPDFSignatureRequest"> + <xsd:complexType> + <xsd:complexContent> + <xsd:extension base="VerifyPDFSignatureRequestType"> + <xsd:attribute name="Signatories" type="SignatoriesType" use="optional" default="1"/> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + </xsd:element> + <xsd:complexType name="VerifyPDFSignatureRequestType"> + <xsd:sequence> + <xsd:element name="DateTime" type="xsd:dateTime" minOccurs="0"/> + <xsd:element name="ExtendedValidation" type="xsd:boolean" default="false" minOccurs="0"/> + <xsd:element name="PDFSignature" type="xsd:base64Binary"/> + <xsd:element name="TrustProfileID" type="xsd:token"> + <xsd:annotation> + <xsd:documentation>mit diesem Profil wird eine Menge von + vertrauenswürdigen Wurzelzertifikaten spezifiziert + </xsd:documentation> + </xsd:annotation> + </xsd:element> + </xsd:sequence> + </xsd:complexType> + <!--########## Verify PDF Signature ### --> + <!--### Verifiy ASIC Signature Request ### --> + <xsd:element name="VerifyASICSignatureRequest"> + <xsd:complexType> + <xsd:complexContent> + <xsd:extension base="VerifyASICSignatureRequestType"/> + </xsd:complexContent> + </xsd:complexType> + </xsd:element> + <xsd:complexType name="VerifyASICSignatureRequestType"> + <xsd:sequence> + <xsd:element name="DateTime" type="xsd:dateTime" minOccurs="0"/> + <xsd:element name="ExtendedValidation" type="xsd:boolean" default="false" minOccurs="0"/> + <xsd:element name="ASICSignature" type="xsd:base64Binary"/> + <xsd:element name="ASICExtension" type="xsd:string"> + <xsd:annotation> + <xsd:documentation>asics or asice</xsd:documentation> + </xsd:annotation> + </xsd:element> + <xsd:element name="TrustProfileID" type="xsd:token"> + <xsd:annotation> + <xsd:documentation>mit diesem Profil wird eine Menge von + vertrauenswürdigen Wurzelzertifikaten spezifiziert + </xsd:documentation> + </xsd:annotation> + </xsd:element> + </xsd:sequence> + </xsd:complexType> + <!--### Verify ASIC Signature Response ### --> + <xsd:element name="VerifyASICSignatureResponse" type="VerifyASICSignatureResponseType"/> + <xsd:complexType name="VerifyASICSignatureResponseType"> + <xsd:sequence> + <xsd:element name="ASiCSignatureResult" type="ASICResultType" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="ASICResultType"> + <xsd:sequence> + <xsd:element name="signedFiles" type="xsd:string" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="XMLSignatureResult" type="VerifyASICXMLSignatureResponseType" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="CMSSignatureResult" type="VerifyASICCMSSignatureResponseType" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <!--### Verify CMS Signature Response ### --> + <xsd:element name="VerifyPDFSignatureResponse" type="VerifyPDFSignatureResponseType"/> + <xsd:complexType name="VerifyPDFSignatureResponseType"> + <xsd:sequence maxOccurs="unbounded"> + <xsd:element name="SignatureResult" type="PDFSignatureResultType"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="PDFSignatureResultType"> + <xsd:sequence> + <xsd:element name="SignerInfo" type="dsig:KeyInfoType" minOccurs="0"> + <xsd:annotation> + <xsd:documentation>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</xsd:documentation> + </xsd:annotation> + </xsd:element> + <xsd:element name="SigningTime" type="xsd:dateTime" minOccurs="0"/> + <xsd:element name="SignatureCheck" type="CheckResultType"/> + <xsd:element name="CertificateCheck" type="CheckResultType"/> + <xsd:element name="FormCheckResult" type="FormResultType" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="ExtendedCertificateCheck" type="ExtendedCertificateCheckResultType" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <!--########## Verify XML Signature ### --> + <!--### Verify XML Signature Request ### --> + <xsd:element name="VerifyXMLSignatureRequest" type="VerifyXMLSignatureRequestType"/> + <xsd:complexType name="VerifyXMLSignatureRequestType"> + <xsd:sequence> + <xsd:element name="DateTime" type="xsd:dateTime" minOccurs="0"/> + <xsd:element name="ExtendedValidation" type="xsd:boolean" default="false" minOccurs="0"/> + <xsd:element name="VerifySignatureInfo"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="VerifySignatureEnvironment" type="ContentOptionalRefType"/> + <xsd:element name="VerifySignatureLocation" type="xsd:token"/> + </xsd:sequence> + </xsd:complexType> + </xsd:element> + <xsd:choice minOccurs="0" maxOccurs="unbounded"> + <xsd:element ref="SupplementProfile"/> + <xsd:element name="SupplementProfileID" type="xsd:string"/> + </xsd:choice> + <xsd:element name="SignatureManifestCheckParams" minOccurs="0"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="ReferenceInfo" type="VerifyTransformsDataType" maxOccurs="unbounded"> + <xsd:annotation> + <xsd:documentation>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.</xsd:documentation> + </xsd:annotation> + </xsd:element> + </xsd:sequence> + <xsd:attribute name="ReturnReferenceInputData" type="xsd:boolean" use="optional" default="true"/> + </xsd:complexType> + </xsd:element> + <xsd:element name="ReturnHashInputData" minOccurs="0"/> + <xsd:element name="TrustProfileID" type="xsd:token"> + <xsd:annotation> + <xsd:documentation>mit diesem Profil wird eine Menge von + vertrauenswürdigen Wurzelzertifikaten spezifiziert + </xsd:documentation> + </xsd:annotation> + </xsd:element> + </xsd:sequence> + </xsd:complexType> + <!--### Verify XML Signature Response ### --> + <xsd:element name="VerifyXMLSignatureResponse" type="VerifyXMLSignatureResponseType"/> + <xsd:complexType name="VerifyXMLSignatureResponseType"> + <xsd:sequence> + <xsd:element name="SignerInfo" type="dsig:KeyInfoType"> + <xsd:annotation> + <xsd:documentation>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</xsd:documentation> + </xsd:annotation> + </xsd:element> + <xsd:element name="HashInputData" type="InputDataType" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="ReferenceInputData" type="InputDataType" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="SignatureCheck" type="ReferencesCheckResultType"/> + <xsd:element name="SignatureManifestCheck" type="ReferencesCheckResultType" minOccurs="0"/> + <xsd:element name="XMLDSIGManifestCheck" type="ManifestRefsCheckResultType" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="CertificateCheck" type="CheckResultType"/> + <xsd:element name="FormCheckResult" type="FormResultType" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="ExtendedCertificateCheck" type="ExtendedCertificateCheckResultType" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="VerifyASICXMLSignatureResponseType"> + <xsd:sequence> + <xsd:element name="SignerInfo" type="dsig:KeyInfoType"> + <xsd:annotation> + <xsd:documentation>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</xsd:documentation> + </xsd:annotation> + </xsd:element> + <xsd:element name="SigningTime" type="xsd:dateTime" minOccurs="0"/> + <xsd:element name="HashInputData" type="InputDataType" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="ReferenceInputData" type="InputDataType" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="SignatureCheck" type="ReferencesCheckResultType"/> + <xsd:element name="SignatureManifestCheck" type="ReferencesCheckResultType" minOccurs="0"/> + <xsd:element name="XMLDSIGManifestCheck" type="ManifestRefsCheckResultType" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="CertificateCheck" type="CheckResultType"/> + <xsd:element name="FormCheckResult" type="FormResultType" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="ExtendedCertificateCheck" type="ExtendedCertificateCheckResultType" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:simpleType name="ProfileIdentifierType"> + <xsd:restriction base="xsd:token"/> + </xsd:simpleType> + <xsd:complexType name="InputDataType"> + <xsd:complexContent> + <xsd:extension base="ContentExLocRefBaseType"> + <xsd:attribute name="PartOf" use="optional" default="SignedInfo"> + <xsd:simpleType> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="SignedInfo"/> + <xsd:enumeration value="XMLDSIGManifest"/> + </xsd:restriction> + </xsd:simpleType> + </xsd:attribute> + <xsd:attribute name="ReferringSigReference" type="xsd:nonNegativeInteger" use="optional"/> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + <xsd:complexType name="MetaInfoType"> + <xsd:sequence> + <xsd:element name="MimeType" type="MimeTypeType"/> + <xsd:element name="Description" type="xsd:anyURI" minOccurs="0"/> + <xsd:any namespace="##other" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="FinalDataMetaInfoType"> + <xsd:complexContent> + <xsd:extension base="MetaInfoType"> + <xsd:sequence> + <xsd:element name="Type" type="xsd:anyURI" minOccurs="0"/> + </xsd:sequence> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + <xsd:complexType name="DataObjectInfoType"> + <xsd:sequence> + <xsd:element name="DataObject"> + <xsd:complexType> + <xsd:complexContent> + <xsd:extension base="ContentOptionalRefType"/> + </xsd:complexContent> + </xsd:complexType> + </xsd:element> + <xsd:choice> + <xsd:annotation> + <xsd:documentation>Auswahl: Entweder explizite Angabe EINER + Transformationskette inklusive ggf. sinnvoller Supplements oder + Verweis auf ein benanntes Profil</xsd:documentation> + </xsd:annotation> + <xsd:element ref="CreateTransformsInfoProfile"/> + <xsd:element name="CreateTransformsInfoProfileID" type="ProfileIdentifierType"/> + </xsd:choice> + </xsd:sequence> + <xsd:attribute name="Structure" use="required"> + <xsd:simpleType> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="detached"/> + <xsd:enumeration value="enveloping"/> + </xsd:restriction> + </xsd:simpleType> + </xsd:attribute> + </xsd:complexType> + <xsd:complexType name="CMSDataObjectInfoType"> + <xsd:sequence> + <xsd:element name="DataObject"> + <xsd:complexType> + <xsd:complexContent> + <xsd:extension base="CMSDataObjectRequiredMetaType"/> + </xsd:complexContent> + </xsd:complexType> + </xsd:element> + </xsd:sequence> + <xsd:attribute name="Structure" use="required"> + <xsd:simpleType> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="detached"/> + <xsd:enumeration value="enveloping"/> + </xsd:restriction> + </xsd:simpleType> + </xsd:attribute> + </xsd:complexType> + <xsd:complexType name="TransformsInfoType"> + <xsd:sequence> + <xsd:element ref="dsig:Transforms" minOccurs="0"/> + <xsd:element name="FinalDataMetaInfo" type="FinalDataMetaInfoType"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="XMLDataObjectAssociationType"> + <xsd:sequence> + <xsd:element name="MetaInfo" type="MetaInfoType" minOccurs="0"/> + <xsd:element name="Content" type="ContentRequiredRefType"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="PDFSignedRepsonse"> + <xsd:sequence> + <xsd:element name="SignatureID" type="xsd:string" minOccurs="0" maxOccurs="1"/> + <xsd:choice maxOccurs="1"> + <xsd:element name="PDFSignature" type="xsd:base64Binary"> + <xsd:annotation> + <xsd:documentation>Resultat, falls die Signaturerstellung + erfolgreich war</xsd:documentation> + </xsd:annotation> + </xsd:element> + <xsd:element ref="ErrorResponse"/> + </xsd:choice> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CMSDataObjectOptionalMetaType"> + <xsd:sequence> + <xsd:element name="MetaInfo" type="MetaInfoType" minOccurs="0"/> + <xsd:element name="Content" type="CMSContentBaseType"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CMSDataObjectRequiredMetaType"> + <xsd:sequence> + <xsd:element name="MetaInfo" type="MetaInfoType"/> + <xsd:element name="Content" type="CMSContentBaseType"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CMSContentBaseType"> + <xsd:complexContent> + <xsd:restriction base="ContentOptionalRefType"> + <xsd:choice minOccurs="0"> + <xsd:element name="Base64Content" type="xsd:base64Binary"/> + </xsd:choice> + </xsd:restriction> + </xsd:complexContent> + </xsd:complexType> + <xsd:complexType name="CheckResultType"> + <xsd:sequence> + <xsd:element name="Code" type="xsd:nonNegativeInteger"/> + <xsd:element name="Info" type="AnyChildrenType" minOccurs="0"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="FormResultType"> + <xsd:sequence> + <xsd:element name="Code" type="xsd:nonNegativeInteger" minOccurs="1" maxOccurs="1"/> + <xsd:element name="Name" type="xsd:string" minOccurs="1" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="IndicationResultType"> + <xsd:sequence> + <xsd:element name="Code" type="xsd:nonNegativeInteger" minOccurs="1" maxOccurs="1"/> + <xsd:element name="Name" type="xsd:string" minOccurs="1" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="ExtendedCertificateCheckResultType"> + <xsd:sequence> + <xsd:element name="Major" type="IndicationResultType" minOccurs="1" maxOccurs="1"/> + <xsd:element name="Minor" type="IndicationResultType" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="ReferencesCheckResultType"> + <xsd:complexContent> + <xsd:restriction base="CheckResultType"> + <xsd:sequence> + <xsd:element name="Code" type="xsd:nonNegativeInteger"/> + <xsd:element name="Info" type="ReferencesCheckResultInfoType" minOccurs="0"/> + </xsd:sequence> + </xsd:restriction> + </xsd:complexContent> + </xsd:complexType> + <xsd:complexType name="ReferencesCheckResultInfoType" mixed="true"> + <xsd:complexContent> + <xsd:restriction base="AnyChildrenType"> + <xsd:sequence> + <xsd:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="FailedReference" type="xsd:positiveInteger" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:restriction> + </xsd:complexContent> + </xsd:complexType> + <xsd:complexType name="ManifestRefsCheckResultType"> + <xsd:complexContent> + <xsd:restriction base="CheckResultType"> + <xsd:sequence> + <xsd:element name="Code" type="xsd:nonNegativeInteger"/> + <xsd:element name="Info" type="ManifestRefsCheckResultInfoType"/> + </xsd:sequence> + </xsd:restriction> + </xsd:complexContent> + </xsd:complexType> + <xsd:complexType name="ManifestRefsCheckResultInfoType" mixed="true"> + <xsd:complexContent> + <xsd:restriction base="AnyChildrenType"> + <xsd:sequence> + <xsd:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="FailedReference" type="xsd:positiveInteger" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="ReferringSigReference" type="xsd:positiveInteger"/> + </xsd:sequence> + </xsd:restriction> + </xsd:complexContent> + </xsd:complexType> + <!--########## Error Response ### --> + <xsd:element name="ErrorResponse" type="ErrorResponseType"> + <xsd:annotation> + <xsd:documentation>Resultat, falls die Signaturerstellung gescheitert + ist</xsd:documentation> + </xsd:annotation> + </xsd:element> + <xsd:complexType name="ErrorResponseType"> + <xsd:sequence> + <xsd:element name="ErrorCode" type="xsd:integer"/> + <xsd:element name="Info" type="xsd:string"/> + </xsd:sequence> + </xsd:complexType> + <!--########## Auxiliary Types ### --> + <xsd:simpleType name="KeyIdentifierType"> + <xsd:restriction base="xsd:string"/> + </xsd:simpleType> + <xsd:simpleType name="KeyStorageType"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="Software"/> + <xsd:enumeration value="Hardware"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="MimeTypeType"> + <xsd:restriction base="xsd:token"/> + </xsd:simpleType> + <xsd:complexType name="AnyChildrenType" mixed="true"> + <xsd:sequence> + <xsd:any namespace="##any" processContents="lax" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="XMLContentType" mixed="true"> + <xsd:complexContent> + <xsd:extension base="AnyChildrenType"> + <xsd:attribute ref="xml:space" use="optional"/> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + <xsd:complexType name="ContentBaseType"> + <xsd:choice minOccurs="0"> + <xsd:element name="Base64Content" type="xsd:base64Binary"/> + <xsd:element name="XMLContent" type="XMLContentType"/> + <xsd:element name="LocRefContent" type="xsd:anyURI"/> + </xsd:choice> + </xsd:complexType> + <xsd:complexType name="ContentExLocRefBaseType"> + <xsd:complexContent> + <xsd:restriction base="ContentBaseType"> + <xsd:choice minOccurs="0"> + <xsd:element name="Base64Content" type="xsd:base64Binary"/> + <xsd:element name="XMLContent" type="XMLContentType"/> + </xsd:choice> + </xsd:restriction> + </xsd:complexContent> + </xsd:complexType> + <xsd:complexType name="ContentOptionalRefType"> + <xsd:complexContent> + <xsd:extension base="ContentBaseType"> + <xsd:attribute name="Reference" type="xsd:anyURI" use="optional"/> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + <xsd:complexType name="ContentRequiredRefType"> + <xsd:complexContent> + <xsd:restriction base="ContentOptionalRefType"> + <xsd:choice minOccurs="0"> + <xsd:element name="Base64Content" type="xsd:base64Binary"/> + <xsd:element name="XMLContent" type="XMLContentType"/> + <xsd:element name="LocRefContent" type="xsd:anyURI"/> + </xsd:choice> + <xsd:attribute name="Reference" type="xsd:anyURI" use="required"/> + </xsd:restriction> + </xsd:complexContent> + </xsd:complexType> + <xsd:complexType name="VerifyTransformsDataType"> + <xsd:choice maxOccurs="unbounded"> + <xsd:annotation> + <xsd:documentation>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. + </xsd:documentation> + </xsd:annotation> + <xsd:element ref="VerifyTransformsInfoProfile"/> + <xsd:element name="VerifyTransformsInfoProfileID" type="xsd:string"> + <xsd:annotation> + <xsd:documentation>Profilbezeichner für einen Transformationsweg + </xsd:documentation> + </xsd:annotation> + </xsd:element> + </xsd:choice> + </xsd:complexType> + <xsd:element name="QualifiedCertificate"> + <xsd:complexType> + <xsd:attribute name="source" use="optional"> + <xsd:simpleType> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="TSL"/> + <xsd:enumeration value="Certificate"/> + </xsd:restriction> + </xsd:simpleType> + </xsd:attribute> + </xsd:complexType> + </xsd:element> + <xsd:element name="SecureSignatureCreationDevice"> + <xsd:complexType> + <xsd:attribute name="source" use="optional"> + <xsd:simpleType> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="TSL"/> + <xsd:enumeration value="Certificate"/> + </xsd:restriction> + </xsd:simpleType> + </xsd:attribute> + </xsd:complexType> + </xsd:element> + <xsd:element name="IssuingCountry" type="xsd:token"/> + <xsd:element name="PublicAuthority" type="PublicAuthorityType"/> + <xsd:complexType name="PublicAuthorityType"> + <xsd:sequence> + <xsd:element name="Code" type="xsd:string" minOccurs="0"/> + </xsd:sequence> + </xsd:complexType> + <xsd:simpleType name="SignatoriesType"> + <xsd:union memberTypes="AllSignatoriesType"> + <xsd:simpleType> + <xsd:list itemType="xsd:positiveInteger"/> + </xsd:simpleType> + </xsd:union> + </xsd:simpleType> + <xsd:simpleType name="AllSignatoriesType"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="all"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CreateSignatureLocationType"> + <xsd:simpleContent> + <xsd:extension base="xsd:token"> + <xsd:attribute name="Index" type="xsd:integer" use="required"/> + </xsd:extension> + </xsd:simpleContent> + </xsd:complexType> + <xsd:complexType name="TransformParameterType"> + <xsd:choice minOccurs="0"> + <xsd:annotation> + <xsd:documentation>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.</xsd:documentation> + </xsd:annotation> + <xsd:element name="Base64Content" type="xsd:base64Binary"> + <xsd:annotation> + <xsd:documentation>Der Transformationsparameter explizit angegeben. + </xsd:documentation> + </xsd:annotation> + </xsd:element> + <xsd:element name="Hash"> + <xsd:annotation> + <xsd:documentation>Der Hashwert des Transformationsparameters. + </xsd:documentation> + </xsd:annotation> + <xsd:complexType> + <xsd:sequence> + <xsd:element ref="dsig:DigestMethod"/> + <xsd:element ref="dsig:DigestValue"/> + </xsd:sequence> + </xsd:complexType> + </xsd:element> + </xsd:choice> + <xsd:attribute name="URI" type="xsd:anyURI" use="required"/> + </xsd:complexType> + <xsd:element name="CreateSignatureEnvironmentProfile"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="CreateSignatureLocation" type="CreateSignatureLocationType"/> + <xsd:element name="Supplement" type="XMLDataObjectAssociationType" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + </xsd:element> + <xsd:element name="VerifyTransformsInfoProfile"> + <xsd:annotation> + <xsd:documentation>Explizite Angabe des Transformationswegs + </xsd:documentation> + </xsd:annotation> + <xsd:complexType> + <xsd:sequence> + <xsd:element ref="dsig:Transforms" minOccurs="0"/> + <xsd:element name="TransformParameter" type="TransformParameterType" minOccurs="0" maxOccurs="unbounded"> + <xsd:annotation> + <xsd:documentation>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.</xsd:documentation> + </xsd:annotation> + </xsd:element> + </xsd:sequence> + </xsd:complexType> + </xsd:element> + <xsd:element name="Supplement" type="XMLDataObjectAssociationType"/> + <xsd:element name="SupplementProfile" type="XMLDataObjectAssociationType"/> + <xsd:element name="CreateTransformsInfoProfile"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="CreateTransformsInfo" type="TransformsInfoType"/> + <xsd:element ref="Supplement" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + </xsd:element> +</xsd:schema> diff --git a/moaSig/moa-sig/src/main/webapp/schemas/MOA-SPSS-3.1.1.xsd b/moaSig/moa-sig/src/main/webapp/schemas/MOA-SPSS-3.1.1.xsd new file mode 100644 index 0000000..d8f45fa --- /dev/null +++ b/moaSig/moa-sig/src/main/webapp/schemas/MOA-SPSS-3.1.1.xsd @@ -0,0 +1,833 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- MOA SP/SS 2.0.0 Schema --> +<xsd:schema xmlns:dsig="http://www.w3.org/2000/09/xmldsig#" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://reference.e-government.gv.at/namespace/moa/20020822#" targetNamespace="http://reference.e-government.gv.at/namespace/moa/20020822#" elementFormDefault="qualified" attributeFormDefault="unqualified" version="1.2"> + <xsd:import namespace="http://www.w3.org/2000/09/xmldsig#" schemaLocation="http://www.w3.org/TR/xmldsig-core/xmldsig-core-schema.xsd"/> + <xsd:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="http://www.w3.org/2001/xml.xsd"/> + <!--########## Create CMS Signature ### --> + <!--### Create CMS Signature Request ### --> + <xsd:element name="CreateCMSSignatureRequest"> + <xsd:complexType> + <xsd:complexContent> + <xsd:extension base="CreateCMSSignatureRequestType"/> + </xsd:complexContent> + </xsd:complexType> + </xsd:element> + <xsd:complexType name="CreateCMSSignatureRequestType"> + <xsd:sequence> + <xsd:element name="KeyIdentifier" type="KeyIdentifierType"/> + <xsd:element name="SingleSignatureInfo" maxOccurs="unbounded"> + <xsd:annotation> + <xsd:documentation>Ermöglichung der Stapelsignatur durch + wiederholte Angabe dieses Elements</xsd:documentation> + </xsd:annotation> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="DataObjectInfo"> + <xsd:complexType> + <xsd:complexContent> + <xsd:extension base="CMSDataObjectInfoType"/> + </xsd:complexContent> + </xsd:complexType> + </xsd:element> + </xsd:sequence> + <xsd:attribute name="SecurityLayerConformity" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="PAdESConformity" type="xsd:boolean" use="optional" default="false"/> + </xsd:complexType> + </xsd:element> + </xsd:sequence> + </xsd:complexType> + <!--### Create CMS Signature Response ### --> + <xsd:element name="CreateCMSSignatureResponse" type="CreateCMSSignatureResponseType"/> + <xsd:complexType name="CreateCMSSignatureResponseType"> + <xsd:choice maxOccurs="unbounded"> + <xsd:annotation> + <xsd:documentation>Kardinalität 1..oo erlaubt die Antwort auf eine + Stapelsignatur-Anfrage</xsd:documentation> + </xsd:annotation> + <xsd:element name="CMSSignature" type="xsd:base64Binary"> + <xsd:annotation> + <xsd:documentation>Resultat, falls die Signaturerstellung + erfolgreich war</xsd:documentation> + </xsd:annotation> + </xsd:element> + <xsd:element ref="ErrorResponse"/> + </xsd:choice> + </xsd:complexType> + <!--########## Create XML Signature ### --> + <!--### Create XML Signature Request ### --> + <xsd:element name="CreateXMLSignatureRequest"> + <xsd:complexType> + <xsd:complexContent> + <xsd:extension base="CreateXMLSignatureRequestType"/> + </xsd:complexContent> + </xsd:complexType> + </xsd:element> + <xsd:complexType name="CreateXMLSignatureRequestType"> + <xsd:sequence> + <xsd:element name="KeyIdentifier" type="KeyIdentifierType"/> + <xsd:element name="SingleSignatureInfo" maxOccurs="unbounded"> + <xsd:annotation> + <xsd:documentation>Ermöglichung der Stapelsignatur durch + wiederholte Angabe dieses Elements</xsd:documentation> + </xsd:annotation> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="DataObjectInfo" maxOccurs="unbounded"> + <xsd:complexType> + <xsd:complexContent> + <xsd:extension base="DataObjectInfoType"> + <xsd:attribute name="ChildOfManifest" type="xsd:boolean" use="optional" default="false"/> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + </xsd:element> + <xsd:element name="CreateSignatureInfo" minOccurs="0"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="CreateSignatureEnvironment" type="ContentOptionalRefType"/> + <xsd:choice> + <xsd:annotation> + <xsd:documentation>Auswahl: Entweder explizite Angabe des + Signaturorts sowie ggf. sinnvoller Supplements im Zshg. mit + der Signaturumgebung, oder Verweis auf ein benanntes Profil + </xsd:documentation> + </xsd:annotation> + <xsd:element ref="CreateSignatureEnvironmentProfile"/> + <xsd:element name="CreateSignatureEnvironmentProfileID" type="ProfileIdentifierType"/> + </xsd:choice> + </xsd:sequence> + </xsd:complexType> + </xsd:element> + </xsd:sequence> + <xsd:attribute name="SecurityLayerConformity" type="xsd:boolean" use="optional" default="true"/> + </xsd:complexType> + </xsd:element> + </xsd:sequence> + </xsd:complexType> + <!--### Create XML Signature Response ### --> + <xsd:complexType name="CreateXMLSignatureResponseType"> + <xsd:choice maxOccurs="unbounded"> + <xsd:annotation> + <xsd:documentation>Kardinalität 1..oo erlaubt die Antwort auf eine + Stapelsignatur-Anfrage</xsd:documentation> + </xsd:annotation> + <xsd:element name="SignatureEnvironment"> + <xsd:annotation> + <xsd:documentation>Resultat, falls die Signaturerstellung + erfolgreich war</xsd:documentation> + </xsd:annotation> + <xsd:complexType> + <xsd:sequence> + <xsd:any namespace="##any" processContents="lax"/> + </xsd:sequence> + </xsd:complexType> + </xsd:element> + <xsd:element ref="ErrorResponse"/> + </xsd:choice> + </xsd:complexType> + <xsd:element name="CreateXMLSignatureResponse" type="CreateXMLSignatureResponseType"/> + <!--########## Create PDF Signature ### --> + <!--### Create PDF Signature Request ### --> + <xsd:element name="CreatePDFSignatureRequest"> + <xsd:complexType> + <xsd:complexContent> + <xsd:extension base="CreatePDFSignatureRequestType"/> + </xsd:complexContent> + </xsd:complexType> + </xsd:element> + <xsd:complexType name="CreatePDFSignatureRequestType"> + <xsd:sequence> + <xsd:element name="KeyIdentifier" type="KeyIdentifierType"/> + <xsd:element name="SingleSignatureInfo" maxOccurs="unbounded"> + <xsd:annotation> + <xsd:documentation>Ermöglichung der Stapelsignatur durch + wiederholte Angabe dieses Elements</xsd:documentation> + </xsd:annotation> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="PDFDocument" type="xsd:base64Binary"/> + <xsd:element name="SignatureProfile" type="xsd:string" minOccurs="0" maxOccurs="1"/> + <xsd:element name="SignaturePosition" type="xsd:string" minOccurs="0" maxOccurs="1"/> + <xsd:element name="SignatureID" type="xsd:string" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + </xsd:element> + </xsd:sequence> + </xsd:complexType> + <!--### Create PDF Signature Response ### --> + <xsd:element name="CreatePDFSignatureResponse" type="CreatePDFSignatureResponseType"/> + <xsd:complexType name="CreatePDFSignatureResponseType"> + <xsd:sequence> + <xsd:element name="PDFSignature" type="PDFSignedRepsonse" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <!--########## Verify CMS Signature ### --> + <!--### Verifiy CMS Signature Request ### --> + <xsd:element name="VerifyCMSSignatureRequest"> + <xsd:complexType> + <xsd:complexContent> + <xsd:extension base="VerifyCMSSignatureRequestType"> + <xsd:attribute name="Signatories" type="SignatoriesType" use="optional" default="1"/> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + </xsd:element> + <xsd:complexType name="VerifyCMSSignatureRequestType"> + <xsd:sequence> + <xsd:element name="DateTime" type="xsd:dateTime" minOccurs="0"/> + <xsd:element name="ExtendedValidation" type="xsd:boolean" default="false" minOccurs="0"/> + <xsd:element name="CMSSignature" type="xsd:base64Binary"/> + <xsd:element name="DataObject" type="CMSDataObjectOptionalMetaType" minOccurs="0"/> + <xsd:element name="TrustProfileID" type="xsd:token"> + <xsd:annotation> + <xsd:documentation>mit diesem Profil wird eine Menge von + vertrauenswürdigen Wurzelzertifikaten spezifiziert + </xsd:documentation> + </xsd:annotation> + </xsd:element> + </xsd:sequence> + </xsd:complexType> + <!--### Verify CMS Signature Response ### --> + <xsd:element name="VerifyCMSSignatureResponse" type="VerifyCMSSignatureResponseType"/> + <xsd:complexType name="VerifyCMSSignatureResponseType"> + <xsd:sequence maxOccurs="unbounded"> + <xsd:element name="SignerInfo" type="dsig:KeyInfoType"> + <xsd:annotation> + <xsd:documentation>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</xsd:documentation> + </xsd:annotation> + </xsd:element> + <xsd:element name="SignatureAlgorithm" type="xsd:string" minOccurs="0" maxOccurs="1"/> + <xsd:element name="SignatureCheck" type="CheckResultType"/> + <xsd:element name="CertificateCheck" type="CheckResultType"/> + <xsd:element name="FormCheckResult" type="FormResultType" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="ExtendedCertificateCheck" type="ExtendedCertificateCheckResultType" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="VerifyASICCMSSignatureResponseType"> + <xsd:sequence maxOccurs="unbounded"> + <xsd:element name="SignerInfo" type="dsig:KeyInfoType"> + <xsd:annotation> + <xsd:documentation>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</xsd:documentation> + </xsd:annotation> + </xsd:element> + <xsd:element name="SigningTime" type="xsd:dateTime" minOccurs="0"/> + <xsd:element name="SignatureCheck" type="CheckResultType"/> + <xsd:element name="CertificateCheck" type="CheckResultType"/> + <xsd:element name="FormCheckResult" type="FormResultType" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="ExtendedCertificateCheck" type="ExtendedCertificateCheckResultType" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <!--########## Verify PDF Signature ### --> + <!--### Verifiy PDF Signature Request ### --> + <xsd:element name="VerifyPDFSignatureRequest"> + <xsd:complexType> + <xsd:complexContent> + <xsd:extension base="VerifyPDFSignatureRequestType"> + <xsd:attribute name="Signatories" type="SignatoriesType" use="optional" default="1"/> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + </xsd:element> + <xsd:complexType name="VerifyPDFSignatureRequestType"> + <xsd:sequence> + <xsd:element name="DateTime" type="xsd:dateTime" minOccurs="0"/> + <xsd:element name="ExtendedValidation" type="xsd:boolean" default="false" minOccurs="0"/> + <xsd:element name="PDFSignature" type="xsd:base64Binary"/> + <xsd:element name="TrustProfileID" type="xsd:token"> + <xsd:annotation> + <xsd:documentation>mit diesem Profil wird eine Menge von + vertrauenswürdigen Wurzelzertifikaten spezifiziert + </xsd:documentation> + </xsd:annotation> + </xsd:element> + </xsd:sequence> + </xsd:complexType> + <!--########## Verify PDF Signature ### --> + <!--### Verifiy ASIC Signature Request ### --> + <xsd:element name="VerifyASICSignatureRequest"> + <xsd:complexType> + <xsd:complexContent> + <xsd:extension base="VerifyASICSignatureRequestType"/> + </xsd:complexContent> + </xsd:complexType> + </xsd:element> + <xsd:complexType name="VerifyASICSignatureRequestType"> + <xsd:sequence> + <xsd:element name="DateTime" type="xsd:dateTime" minOccurs="0"/> + <xsd:element name="ExtendedValidation" type="xsd:boolean" default="false" minOccurs="0"/> + <xsd:element name="ASICSignature" type="xsd:base64Binary"/> + <xsd:element name="ASICExtension" type="xsd:string"> + <xsd:annotation> + <xsd:documentation>asics or asice</xsd:documentation> + </xsd:annotation> + </xsd:element> + <xsd:element name="TrustProfileID" type="xsd:token"> + <xsd:annotation> + <xsd:documentation>mit diesem Profil wird eine Menge von + vertrauenswürdigen Wurzelzertifikaten spezifiziert + </xsd:documentation> + </xsd:annotation> + </xsd:element> + </xsd:sequence> + </xsd:complexType> + <!--### Verify ASIC Signature Response ### --> + <xsd:element name="VerifyASICSignatureResponse" type="VerifyASICSignatureResponseType"/> + <xsd:complexType name="VerifyASICSignatureResponseType"> + <xsd:sequence> + <xsd:element name="ASiCSignatureResult" type="ASICResultType" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <!--xsd:complexType name="signedFilesType"> + <xsd:sequence> + <xsd:element name="signedFiles" type="xsd:string"> + </xsd:sequence> + <xsd:attribute name="hashAlgorithm" type="xsd:string" use="optional"/> + </xsd:complexType--> + + <xsd:complexType name="ASICResultType"> + <xsd:sequence> + <xsd:element name="signedFiles" minOccurs="0" maxOccurs="unbounded"> + <xsd:complexType> + <xsd:simpleContent> + <xsd:extension base="xsd:string"> + <xsd:attribute name="hashAlgorithm" type="xsd:string" use="optional"/> + </xsd:extension> + </xsd:simpleContent> + </xsd:complexType> + </xsd:element> + <xsd:element name="XMLSignatureResult" type="VerifyASICXMLSignatureResponseType" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="CMSSignatureResult" type="VerifyASICCMSSignatureResponseType" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <!--### Verify CMS Signature Response ### --> + <xsd:element name="VerifyPDFSignatureResponse" type="VerifyPDFSignatureResponseType"/> + <xsd:complexType name="VerifyPDFSignatureResponseType"> + <xsd:sequence maxOccurs="unbounded"> + <xsd:element name="SignatureResult" type="PDFSignatureResultType"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="PDFSignatureResultType"> + <xsd:sequence> + <xsd:element name="SignerInfo" type="dsig:KeyInfoType" minOccurs="0"> + <xsd:annotation> + <xsd:documentation>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</xsd:documentation> + </xsd:annotation> + </xsd:element> + <xsd:element name="SigningTime" type="xsd:dateTime" minOccurs="0"/> + <xsd:element name="SignatureAlgorithm" type="xsd:string" minOccurs="0" maxOccurs="1"/> + <xsd:element name="SignatureCheck" type="CheckResultType"/> + <xsd:element name="CertificateCheck" type="CheckResultType"/> + <xsd:element name="FormCheckResult" type="FormResultType" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="ExtendedCertificateCheck" type="ExtendedCertificateCheckResultType" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <!--########## Verify XML Signature ### --> + <!--### Verify XML Signature Request ### --> + <xsd:element name="VerifyXMLSignatureRequest" type="VerifyXMLSignatureRequestType"/> + <xsd:complexType name="VerifyXMLSignatureRequestType"> + <xsd:sequence> + <xsd:element name="DateTime" type="xsd:dateTime" minOccurs="0"/> + <xsd:element name="ExtendedValidation" type="xsd:boolean" default="false" minOccurs="0"/> + <xsd:element name="VerifySignatureInfo"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="VerifySignatureEnvironment" type="ContentOptionalRefType"/> + <xsd:element name="VerifySignatureLocation" type="xsd:token"/> + </xsd:sequence> + </xsd:complexType> + </xsd:element> + <xsd:choice minOccurs="0" maxOccurs="unbounded"> + <xsd:element ref="SupplementProfile"/> + <xsd:element name="SupplementProfileID" type="xsd:string"/> + </xsd:choice> + <xsd:element name="SignatureManifestCheckParams" minOccurs="0"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="ReferenceInfo" type="VerifyTransformsDataType" maxOccurs="unbounded"> + <xsd:annotation> + <xsd:documentation>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.</xsd:documentation> + </xsd:annotation> + </xsd:element> + </xsd:sequence> + <xsd:attribute name="ReturnReferenceInputData" type="xsd:boolean" use="optional" default="true"/> + </xsd:complexType> + </xsd:element> + <xsd:element name="ReturnHashInputData" minOccurs="0"/> + <xsd:element name="TrustProfileID" type="xsd:token"> + <xsd:annotation> + <xsd:documentation>mit diesem Profil wird eine Menge von + vertrauenswürdigen Wurzelzertifikaten spezifiziert + </xsd:documentation> + </xsd:annotation> + </xsd:element> + </xsd:sequence> + </xsd:complexType> + <!--### Verify XML Signature Response ### --> + <xsd:element name="VerifyXMLSignatureResponse" type="VerifyXMLSignatureResponseType"/> + <xsd:complexType name="VerifyXMLSignatureResponseType"> + <xsd:sequence> + <xsd:element name="SignerInfo" type="dsig:KeyInfoType"> + <xsd:annotation> + <xsd:documentation>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</xsd:documentation> + </xsd:annotation> + </xsd:element> + <xsd:element name="HashInputData" type="InputDataType" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="ReferenceInputData" type="InputDataType" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="SignatureAlgorithm" type="xsd:string" minOccurs="0" maxOccurs="1"/> + <xsd:element name="SignatureCheck" type="ReferencesCheckResultType"/> + <xsd:element name="SignatureManifestCheck" type="ReferencesCheckResultType" minOccurs="0"/> + <xsd:element name="XMLDSIGManifestCheck" type="ManifestRefsCheckResultType" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="CertificateCheck" type="CheckResultType"/> + <xsd:element name="FormCheckResult" type="FormResultType" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="ExtendedCertificateCheck" type="ExtendedCertificateCheckResultType" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="VerifyASICXMLSignatureResponseType"> + <xsd:sequence> + <xsd:element name="SignerInfo" type="dsig:KeyInfoType"> + <xsd:annotation> + <xsd:documentation>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</xsd:documentation> + </xsd:annotation> + </xsd:element> + <xsd:element name="SigningTime" type="xsd:dateTime" minOccurs="0"/> + <xsd:element name="HashInputData" type="InputDataType" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="ReferenceInputData" type="InputDataType" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="SignatureCheck" type="ReferencesCheckResultType"/> + <xsd:element name="SignatureManifestCheck" type="ReferencesCheckResultType" minOccurs="0"/> + <xsd:element name="XMLDSIGManifestCheck" type="ManifestRefsCheckResultType" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="CertificateCheck" type="CheckResultType"/> + <xsd:element name="FormCheckResult" type="FormResultType" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="ExtendedCertificateCheck" type="ExtendedCertificateCheckResultType" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:simpleType name="ProfileIdentifierType"> + <xsd:restriction base="xsd:token"/> + </xsd:simpleType> + <xsd:complexType name="InputDataType"> + <xsd:complexContent> + <xsd:extension base="ContentExLocRefBaseType"> + <xsd:attribute name="PartOf" use="optional" default="SignedInfo"> + <xsd:simpleType> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="SignedInfo"/> + <xsd:enumeration value="XMLDSIGManifest"/> + </xsd:restriction> + </xsd:simpleType> + </xsd:attribute> + <xsd:attribute name="ReferringSigReference" type="xsd:nonNegativeInteger" use="optional"/> + <xsd:attribute name="HashAlgorithm" type="xsd:string" use="optional"/> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + <xsd:complexType name="MetaInfoType"> + <xsd:sequence> + <xsd:element name="MimeType" type="MimeTypeType"/> + <xsd:element name="Description" type="xsd:anyURI" minOccurs="0"/> + <xsd:any namespace="##other" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="FinalDataMetaInfoType"> + <xsd:complexContent> + <xsd:extension base="MetaInfoType"> + <xsd:sequence> + <xsd:element name="Type" type="xsd:anyURI" minOccurs="0"/> + </xsd:sequence> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + <xsd:complexType name="DataObjectInfoType"> + <xsd:sequence> + <xsd:element name="DataObject"> + <xsd:complexType> + <xsd:complexContent> + <xsd:extension base="ContentOptionalRefType"/> + </xsd:complexContent> + </xsd:complexType> + </xsd:element> + <xsd:choice> + <xsd:annotation> + <xsd:documentation>Auswahl: Entweder explizite Angabe EINER + Transformationskette inklusive ggf. sinnvoller Supplements oder + Verweis auf ein benanntes Profil</xsd:documentation> + </xsd:annotation> + <xsd:element ref="CreateTransformsInfoProfile"/> + <xsd:element name="CreateTransformsInfoProfileID" type="ProfileIdentifierType"/> + </xsd:choice> + </xsd:sequence> + <xsd:attribute name="Structure" use="required"> + <xsd:simpleType> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="detached"/> + <xsd:enumeration value="enveloping"/> + </xsd:restriction> + </xsd:simpleType> + </xsd:attribute> + </xsd:complexType> + <xsd:complexType name="CMSDataObjectInfoType"> + <xsd:sequence> + <xsd:element name="DataObject"> + <xsd:complexType> + <xsd:complexContent> + <xsd:extension base="CMSDataObjectRequiredMetaType"/> + </xsd:complexContent> + </xsd:complexType> + </xsd:element> + </xsd:sequence> + <xsd:attribute name="Structure" use="required"> + <xsd:simpleType> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="detached"/> + <xsd:enumeration value="enveloping"/> + </xsd:restriction> + </xsd:simpleType> + </xsd:attribute> + </xsd:complexType> + <xsd:complexType name="TransformsInfoType"> + <xsd:sequence> + <xsd:element ref="dsig:Transforms" minOccurs="0"/> + <xsd:element name="FinalDataMetaInfo" type="FinalDataMetaInfoType"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="XMLDataObjectAssociationType"> + <xsd:sequence> + <xsd:element name="MetaInfo" type="MetaInfoType" minOccurs="0"/> + <xsd:element name="Content" type="ContentRequiredRefType"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="PDFSignedRepsonse"> + <xsd:sequence> + <xsd:element name="SignatureID" type="xsd:string" minOccurs="0" maxOccurs="1"/> + <xsd:choice maxOccurs="1"> + <xsd:element name="PDFSignature" type="xsd:base64Binary"> + <xsd:annotation> + <xsd:documentation>Resultat, falls die Signaturerstellung + erfolgreich war</xsd:documentation> + </xsd:annotation> + </xsd:element> + <xsd:element ref="ErrorResponse"/> + </xsd:choice> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CMSDataObjectOptionalMetaType"> + <xsd:sequence> + <xsd:element name="MetaInfo" type="MetaInfoType" minOccurs="0"/> + <xsd:element name="Content" type="CMSContentBaseType"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CMSDataObjectRequiredMetaType"> + <xsd:sequence> + <xsd:element name="MetaInfo" type="MetaInfoType"/> + <xsd:element name="Content" type="CMSContentBaseType"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CMSContentBaseType"> + <xsd:complexContent> + <xsd:restriction base="ContentOptionalRefType"> + <xsd:choice minOccurs="0"> + <xsd:element name="Base64Content" type="xsd:base64Binary"/> + </xsd:choice> + </xsd:restriction> + </xsd:complexContent> + </xsd:complexType> + <xsd:complexType name="CheckResultType"> + <xsd:sequence> + <xsd:element name="Code" type="xsd:nonNegativeInteger"/> + <xsd:element name="Info" type="AnyChildrenType" minOccurs="0"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="FormResultType"> + <xsd:sequence> + <xsd:element name="Code" type="xsd:nonNegativeInteger" minOccurs="1" maxOccurs="1"/> + <xsd:element name="Name" type="xsd:string" minOccurs="1" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="IndicationResultType"> + <xsd:sequence> + <xsd:element name="Code" type="xsd:nonNegativeInteger" minOccurs="1" maxOccurs="1"/> + <xsd:element name="Name" type="xsd:string" minOccurs="1" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="ExtendedCertificateCheckResultType"> + <xsd:sequence> + <xsd:element name="Major" type="IndicationResultType" minOccurs="1" maxOccurs="1"/> + <xsd:element name="Minor" type="IndicationResultType" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="ReferencesCheckResultType"> + <xsd:complexContent> + <xsd:restriction base="CheckResultType"> + <xsd:sequence> + <xsd:element name="Code" type="xsd:nonNegativeInteger"/> + <xsd:element name="Info" type="ReferencesCheckResultInfoType" minOccurs="0"/> + </xsd:sequence> + </xsd:restriction> + </xsd:complexContent> + </xsd:complexType> + <xsd:complexType name="ReferencesCheckResultInfoType" mixed="true"> + <xsd:complexContent> + <xsd:restriction base="AnyChildrenType"> + <xsd:sequence> + <xsd:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="FailedReference" type="xsd:positiveInteger" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:restriction> + </xsd:complexContent> + </xsd:complexType> + <xsd:complexType name="ManifestRefsCheckResultType"> + <xsd:complexContent> + <xsd:restriction base="CheckResultType"> + <xsd:sequence> + <xsd:element name="Code" type="xsd:nonNegativeInteger"/> + <xsd:element name="Info" type="ManifestRefsCheckResultInfoType"/> + </xsd:sequence> + </xsd:restriction> + </xsd:complexContent> + </xsd:complexType> + <xsd:complexType name="ManifestRefsCheckResultInfoType" mixed="true"> + <xsd:complexContent> + <xsd:restriction base="AnyChildrenType"> + <xsd:sequence> + <xsd:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="FailedReference" type="xsd:positiveInteger" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="ReferringSigReference" type="xsd:positiveInteger"/> + </xsd:sequence> + </xsd:restriction> + </xsd:complexContent> + </xsd:complexType> + <!--########## Error Response ### --> + <xsd:element name="ErrorResponse" type="ErrorResponseType"> + <xsd:annotation> + <xsd:documentation>Resultat, falls die Signaturerstellung gescheitert + ist</xsd:documentation> + </xsd:annotation> + </xsd:element> + <xsd:complexType name="ErrorResponseType"> + <xsd:sequence> + <xsd:element name="ErrorCode" type="xsd:integer"/> + <xsd:element name="Info" type="xsd:string"/> + </xsd:sequence> + </xsd:complexType> + <!--########## Auxiliary Types ### --> + <xsd:simpleType name="KeyIdentifierType"> + <xsd:restriction base="xsd:string"/> + </xsd:simpleType> + <xsd:simpleType name="KeyStorageType"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="Software"/> + <xsd:enumeration value="Hardware"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="MimeTypeType"> + <xsd:restriction base="xsd:token"/> + </xsd:simpleType> + <xsd:complexType name="AnyChildrenType" mixed="true"> + <xsd:sequence> + <xsd:any namespace="##any" processContents="lax" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="XMLContentType" mixed="true"> + <xsd:complexContent> + <xsd:extension base="AnyChildrenType"> + <xsd:attribute ref="xml:space" use="optional"/> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + <xsd:complexType name="ContentBaseType"> + <xsd:choice minOccurs="0"> + <xsd:element name="Base64Content" type="xsd:base64Binary"/> + <xsd:element name="XMLContent" type="XMLContentType"/> + <xsd:element name="LocRefContent" type="xsd:anyURI"/> + </xsd:choice> + </xsd:complexType> + <xsd:complexType name="ContentExLocRefBaseType"> + <xsd:complexContent> + <xsd:restriction base="ContentBaseType"> + <xsd:choice minOccurs="0"> + <xsd:element name="Base64Content" type="xsd:base64Binary"/> + <xsd:element name="XMLContent" type="XMLContentType"/> + </xsd:choice> + </xsd:restriction> + </xsd:complexContent> + </xsd:complexType> + <xsd:complexType name="ContentOptionalRefType"> + <xsd:complexContent> + <xsd:extension base="ContentBaseType"> + <xsd:attribute name="Reference" type="xsd:anyURI" use="optional"/> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + <xsd:complexType name="ContentRequiredRefType"> + <xsd:complexContent> + <xsd:restriction base="ContentOptionalRefType"> + <xsd:choice minOccurs="0"> + <xsd:element name="Base64Content" type="xsd:base64Binary"/> + <xsd:element name="XMLContent" type="XMLContentType"/> + <xsd:element name="LocRefContent" type="xsd:anyURI"/> + </xsd:choice> + <xsd:attribute name="Reference" type="xsd:anyURI" use="required"/> + </xsd:restriction> + </xsd:complexContent> + </xsd:complexType> + <xsd:complexType name="VerifyTransformsDataType"> + <xsd:choice maxOccurs="unbounded"> + <xsd:annotation> + <xsd:documentation>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. + </xsd:documentation> + </xsd:annotation> + <xsd:element ref="VerifyTransformsInfoProfile"/> + <xsd:element name="VerifyTransformsInfoProfileID" type="xsd:string"> + <xsd:annotation> + <xsd:documentation>Profilbezeichner für einen Transformationsweg + </xsd:documentation> + </xsd:annotation> + </xsd:element> + </xsd:choice> + </xsd:complexType> + <xsd:element name="QualifiedCertificate"> + <xsd:complexType> + <xsd:attribute name="source" use="optional"> + <xsd:simpleType> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="TSL"/> + <xsd:enumeration value="Certificate"/> + </xsd:restriction> + </xsd:simpleType> + </xsd:attribute> + </xsd:complexType> + </xsd:element> + <xsd:element name="SecureSignatureCreationDevice"> + <xsd:complexType> + <xsd:attribute name="source" use="optional"> + <xsd:simpleType> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="TSL"/> + <xsd:enumeration value="Certificate"/> + </xsd:restriction> + </xsd:simpleType> + </xsd:attribute> + </xsd:complexType> + </xsd:element> + <xsd:element name="IssuingCountry" type="xsd:token"/> + <xsd:element name="PublicAuthority" type="PublicAuthorityType"/> + <xsd:complexType name="PublicAuthorityType"> + <xsd:sequence> + <xsd:element name="Code" type="xsd:string" minOccurs="0"/> + </xsd:sequence> + </xsd:complexType> + <xsd:simpleType name="SignatoriesType"> + <xsd:union memberTypes="AllSignatoriesType"> + <xsd:simpleType> + <xsd:list itemType="xsd:positiveInteger"/> + </xsd:simpleType> + </xsd:union> + </xsd:simpleType> + <xsd:simpleType name="AllSignatoriesType"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="all"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CreateSignatureLocationType"> + <xsd:simpleContent> + <xsd:extension base="xsd:token"> + <xsd:attribute name="Index" type="xsd:integer" use="required"/> + </xsd:extension> + </xsd:simpleContent> + </xsd:complexType> + <xsd:complexType name="TransformParameterType"> + <xsd:choice minOccurs="0"> + <xsd:annotation> + <xsd:documentation>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.</xsd:documentation> + </xsd:annotation> + <xsd:element name="Base64Content" type="xsd:base64Binary"> + <xsd:annotation> + <xsd:documentation>Der Transformationsparameter explizit angegeben. + </xsd:documentation> + </xsd:annotation> + </xsd:element> + <xsd:element name="Hash"> + <xsd:annotation> + <xsd:documentation>Der Hashwert des Transformationsparameters. + </xsd:documentation> + </xsd:annotation> + <xsd:complexType> + <xsd:sequence> + <xsd:element ref="dsig:DigestMethod"/> + <xsd:element ref="dsig:DigestValue"/> + </xsd:sequence> + </xsd:complexType> + </xsd:element> + </xsd:choice> + <xsd:attribute name="URI" type="xsd:anyURI" use="required"/> + </xsd:complexType> + <xsd:element name="CreateSignatureEnvironmentProfile"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="CreateSignatureLocation" type="CreateSignatureLocationType"/> + <xsd:element name="Supplement" type="XMLDataObjectAssociationType" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + </xsd:element> + <xsd:element name="VerifyTransformsInfoProfile"> + <xsd:annotation> + <xsd:documentation>Explizite Angabe des Transformationswegs + </xsd:documentation> + </xsd:annotation> + <xsd:complexType> + <xsd:sequence> + <xsd:element ref="dsig:Transforms" minOccurs="0"/> + <xsd:element name="TransformParameter" type="TransformParameterType" minOccurs="0" maxOccurs="unbounded"> + <xsd:annotation> + <xsd:documentation>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.</xsd:documentation> + </xsd:annotation> + </xsd:element> + </xsd:sequence> + </xsd:complexType> + </xsd:element> + <xsd:element name="Supplement" type="XMLDataObjectAssociationType"/> + <xsd:element name="SupplementProfile" type="XMLDataObjectAssociationType"/> + <xsd:element name="CreateTransformsInfoProfile"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="CreateTransformsInfo" type="TransformsInfoType"/> + <xsd:element ref="Supplement" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + </xsd:element> +</xsd:schema> diff --git a/moaSig/moa-sig/src/main/webapp/schemas/MOA-SPSS-3.1.2.xsd b/moaSig/moa-sig/src/main/webapp/schemas/MOA-SPSS-3.1.2.xsd new file mode 100644 index 0000000..f8ad010 --- /dev/null +++ b/moaSig/moa-sig/src/main/webapp/schemas/MOA-SPSS-3.1.2.xsd @@ -0,0 +1,841 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- MOA SP/SS 2.0.0 Schema --> +<xsd:schema xmlns:dsig="http://www.w3.org/2000/09/xmldsig#" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://reference.e-government.gv.at/namespace/moa/20020822#" targetNamespace="http://reference.e-government.gv.at/namespace/moa/20020822#" elementFormDefault="qualified" attributeFormDefault="unqualified" version="1.2"> + <xsd:import namespace="http://www.w3.org/2000/09/xmldsig#" schemaLocation="http://www.w3.org/TR/xmldsig-core/xmldsig-core-schema.xsd"/> + <xsd:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="http://www.w3.org/2001/xml.xsd"/> + <!--########## Create CMS Signature ### --> + <!--### Create CMS Signature Request ### --> + <xsd:element name="CreateCMSSignatureRequest"> + <xsd:complexType> + <xsd:complexContent> + <xsd:extension base="CreateCMSSignatureRequestType"/> + </xsd:complexContent> + </xsd:complexType> + </xsd:element> + <xsd:complexType name="CreateCMSSignatureRequestType"> + <xsd:sequence> + <xsd:element name="KeyIdentifier" type="KeyIdentifierType"/> + <xsd:element name="SingleSignatureInfo" maxOccurs="unbounded"> + <xsd:annotation> + <xsd:documentation>Ermöglichung der Stapelsignatur durch + wiederholte Angabe dieses Elements</xsd:documentation> + </xsd:annotation> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="DataObjectInfo"> + <xsd:complexType> + <xsd:complexContent> + <xsd:extension base="CMSDataObjectInfoType"/> + </xsd:complexContent> + </xsd:complexType> + </xsd:element> + </xsd:sequence> + <xsd:attribute name="SecurityLayerConformity" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="PAdESConformity" type="xsd:boolean" use="optional" default="false"/> + </xsd:complexType> + </xsd:element> + </xsd:sequence> + </xsd:complexType> + <!--### Create CMS Signature Response ### --> + <xsd:element name="CreateCMSSignatureResponse" type="CreateCMSSignatureResponseType"/> + <xsd:complexType name="CreateCMSSignatureResponseType"> + <xsd:choice maxOccurs="unbounded"> + <xsd:annotation> + <xsd:documentation>Kardinalität 1..oo erlaubt die Antwort auf eine + Stapelsignatur-Anfrage</xsd:documentation> + </xsd:annotation> + <xsd:element name="CMSSignature" type="xsd:base64Binary"> + <xsd:annotation> + <xsd:documentation>Resultat, falls die Signaturerstellung + erfolgreich war</xsd:documentation> + </xsd:annotation> + </xsd:element> + <xsd:element ref="ErrorResponse"/> + </xsd:choice> + </xsd:complexType> + <!--########## Create XML Signature ### --> + <!--### Create XML Signature Request ### --> + <xsd:element name="CreateXMLSignatureRequest"> + <xsd:complexType> + <xsd:complexContent> + <xsd:extension base="CreateXMLSignatureRequestType"/> + </xsd:complexContent> + </xsd:complexType> + </xsd:element> + <xsd:complexType name="CreateXMLSignatureRequestType"> + <xsd:sequence> + <xsd:element name="KeyIdentifier" type="KeyIdentifierType"/> + <xsd:element name="SingleSignatureInfo" maxOccurs="unbounded"> + <xsd:annotation> + <xsd:documentation>Ermöglichung der Stapelsignatur durch + wiederholte Angabe dieses Elements</xsd:documentation> + </xsd:annotation> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="DataObjectInfo" maxOccurs="unbounded"> + <xsd:complexType> + <xsd:complexContent> + <xsd:extension base="DataObjectInfoType"> + <xsd:attribute name="ChildOfManifest" type="xsd:boolean" use="optional" default="false"/> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + </xsd:element> + <xsd:element name="CreateSignatureInfo" minOccurs="0"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="CreateSignatureEnvironment" type="ContentOptionalRefType"/> + <xsd:choice> + <xsd:annotation> + <xsd:documentation>Auswahl: Entweder explizite Angabe des + Signaturorts sowie ggf. sinnvoller Supplements im Zshg. mit + der Signaturumgebung, oder Verweis auf ein benanntes Profil + </xsd:documentation> + </xsd:annotation> + <xsd:element ref="CreateSignatureEnvironmentProfile"/> + <xsd:element name="CreateSignatureEnvironmentProfileID" type="ProfileIdentifierType"/> + </xsd:choice> + </xsd:sequence> + </xsd:complexType> + </xsd:element> + </xsd:sequence> + <xsd:attribute name="SecurityLayerConformity" type="xsd:boolean" use="optional" default="true"/> + </xsd:complexType> + </xsd:element> + </xsd:sequence> + </xsd:complexType> + <!--### Create XML Signature Response ### --> + <xsd:complexType name="CreateXMLSignatureResponseType"> + <xsd:choice maxOccurs="unbounded"> + <xsd:annotation> + <xsd:documentation>Kardinalität 1..oo erlaubt die Antwort auf eine + Stapelsignatur-Anfrage</xsd:documentation> + </xsd:annotation> + <xsd:element name="SignatureEnvironment"> + <xsd:annotation> + <xsd:documentation>Resultat, falls die Signaturerstellung + erfolgreich war</xsd:documentation> + </xsd:annotation> + <xsd:complexType> + <xsd:sequence> + <xsd:any namespace="##any" processContents="lax"/> + </xsd:sequence> + </xsd:complexType> + </xsd:element> + <xsd:element ref="ErrorResponse"/> + </xsd:choice> + </xsd:complexType> + <xsd:element name="CreateXMLSignatureResponse" type="CreateXMLSignatureResponseType"/> + <!--########## Create PDF Signature ### --> + <!--### Create PDF Signature Request ### --> + <xsd:element name="CreatePDFSignatureRequest"> + <xsd:complexType> + <xsd:complexContent> + <xsd:extension base="CreatePDFSignatureRequestType"/> + </xsd:complexContent> + </xsd:complexType> + </xsd:element> + <xsd:complexType name="CreatePDFSignatureRequestType"> + <xsd:sequence> + <xsd:element name="KeyIdentifier" type="KeyIdentifierType"/> + <xsd:element name="SingleSignatureInfo" maxOccurs="unbounded"> + <xsd:annotation> + <xsd:documentation>Ermöglichung der Stapelsignatur durch + wiederholte Angabe dieses Elements</xsd:documentation> + </xsd:annotation> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="PDFDocument" type="xsd:base64Binary"/> + <xsd:element name="SignatureProfile" type="xsd:string" minOccurs="0" maxOccurs="1"/> + <xsd:element name="SignaturePosition" type="xsd:string" minOccurs="0" maxOccurs="1"/> + <xsd:element name="SignatureID" type="xsd:string" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + </xsd:element> + </xsd:sequence> + </xsd:complexType> + <!--### Create PDF Signature Response ### --> + <xsd:element name="CreatePDFSignatureResponse" type="CreatePDFSignatureResponseType"/> + <xsd:complexType name="CreatePDFSignatureResponseType"> + <xsd:sequence> + <xsd:element name="PDFSignature" type="PDFSignedRepsonse" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <!--########## Verify CMS Signature ### --> + <!--### Verifiy CMS Signature Request ### --> + <xsd:element name="VerifyCMSSignatureRequest"> + <xsd:complexType> + <xsd:complexContent> + <xsd:extension base="VerifyCMSSignatureRequestType"> + <xsd:attribute name="Signatories" type="SignatoriesType" use="optional" default="1"/> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + </xsd:element> + <xsd:complexType name="VerifyCMSSignatureRequestType"> + <xsd:sequence> + <xsd:element name="DateTime" type="xsd:dateTime" minOccurs="0"/> + <xsd:element name="ExtendedValidation" type="xsd:boolean" default="false" minOccurs="0"/> + <xsd:element name="CMSSignature" type="xsd:base64Binary"/> + <xsd:element name="DataObject" type="CMSDataObjectOptionalMetaType" minOccurs="0"/> + <xsd:element name="TrustProfileID" type="xsd:token"> + <xsd:annotation> + <xsd:documentation>mit diesem Profil wird eine Menge von + vertrauenswürdigen Wurzelzertifikaten spezifiziert + </xsd:documentation> + </xsd:annotation> + </xsd:element> + </xsd:sequence> + </xsd:complexType> + <!--### Verify CMS Signature Response ### --> + <xsd:element name="VerifyCMSSignatureResponse" type="VerifyCMSSignatureResponseType"/> + <xsd:complexType name="VerifyCMSSignatureResponseType"> + <xsd:sequence maxOccurs="unbounded"> + <xsd:element name="SignerInfo" type="dsig:KeyInfoType"> + <xsd:annotation> + <xsd:documentation>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</xsd:documentation> + </xsd:annotation> + </xsd:element> + <xsd:element name="SignatureAlgorithm" type="xsd:string" minOccurs="0" maxOccurs="1"/> + <xsd:element name="SignatureCheck" type="CheckResultType"/> + <xsd:element name="CertificateCheck" type="CheckResultType"/> + <xsd:element name="FormCheckResult" type="FormResultType" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="ExtendedCertificateCheck" type="ExtendedCertificateCheckResultType" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="VerifyASICCMSSignatureResponseType"> + <xsd:sequence maxOccurs="unbounded"> + <xsd:element name="SignerInfo" type="dsig:KeyInfoType"> + <xsd:annotation> + <xsd:documentation>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</xsd:documentation> + </xsd:annotation> + </xsd:element> + <xsd:element name="SigningTime" type="xsd:dateTime" minOccurs="0"/> + <xsd:element name="SignatureCheck" type="CheckResultType"/> + <xsd:element name="CertificateCheck" type="CheckResultType"/> + <xsd:element name="FormCheckResult" type="FormResultType" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="ExtendedCertificateCheck" type="ExtendedCertificateCheckResultType" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <!--########## Verify PDF Signature ### --> + <!--### Verifiy PDF Signature Request ### --> + <xsd:element name="VerifyPDFSignatureRequest"> + <xsd:complexType> + <xsd:complexContent> + <xsd:extension base="VerifyPDFSignatureRequestType"> + <xsd:attribute name="Signatories" type="SignatoriesType" use="optional" default="1"/> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + </xsd:element> + <xsd:complexType name="VerifyPDFSignatureRequestType"> + <xsd:sequence> + <xsd:element name="DateTime" type="xsd:dateTime" minOccurs="0"/> + <xsd:element name="ExtendedValidation" type="xsd:boolean" default="false" minOccurs="0"/> + <xsd:element name="PDFSignature" type="xsd:base64Binary"/> + <xsd:element name="TrustProfileID" type="xsd:token"> + <xsd:annotation> + <xsd:documentation>mit diesem Profil wird eine Menge von + vertrauenswürdigen Wurzelzertifikaten spezifiziert + </xsd:documentation> + </xsd:annotation> + </xsd:element> + </xsd:sequence> + </xsd:complexType> + <!--########## Verify PDF Signature ### --> + <!--### Verifiy ASIC Signature Request ### --> + <xsd:element name="VerifyASICSignatureRequest"> + <xsd:complexType> + <xsd:complexContent> + <xsd:extension base="VerifyASICSignatureRequestType"/> + </xsd:complexContent> + </xsd:complexType> + </xsd:element> + <xsd:complexType name="VerifyASICSignatureRequestType"> + <xsd:sequence> + <xsd:element name="DateTime" type="xsd:dateTime" minOccurs="0"/> + <xsd:element name="ExtendedValidation" type="xsd:boolean" default="false" minOccurs="0"/> + <xsd:element name="ASICSignature" type="xsd:base64Binary"/> + <xsd:element name="ASICExtension" type="xsd:string"> + <xsd:annotation> + <xsd:documentation>asics or asice</xsd:documentation> + </xsd:annotation> + </xsd:element> + <xsd:element name="TrustProfileID" type="xsd:token"> + <xsd:annotation> + <xsd:documentation>mit diesem Profil wird eine Menge von + vertrauenswürdigen Wurzelzertifikaten spezifiziert + </xsd:documentation> + </xsd:annotation> + </xsd:element> + </xsd:sequence> + </xsd:complexType> + <!--### Verify ASIC Signature Response ### --> + <xsd:element name="VerifyASICSignatureResponse" type="VerifyASICSignatureResponseType"/> + <xsd:complexType name="VerifyASICSignatureResponseType"> + <xsd:sequence> + <xsd:element name="ASiCSignatureResult" type="ASICResultType" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <!--xsd:complexType name="signedFilesType"> + <xsd:sequence> + <xsd:element name="signedFiles" type="xsd:string"> + </xsd:sequence> + <xsd:attribute name="hashAlgorithm" type="xsd:string" use="optional"/> + </xsd:complexType--> + <xsd:complexType name="ASICResultType"> + <xsd:sequence> + <xsd:element name="signedFiles" minOccurs="0" maxOccurs="unbounded"> + <xsd:complexType> + <xsd:simpleContent> + <xsd:extension base="xsd:string"> + <xsd:attribute name="hashAlgorithm" type="xsd:string" use="optional"/> + </xsd:extension> + </xsd:simpleContent> + </xsd:complexType> + </xsd:element> + <xsd:element name="XMLSignatureResult" type="VerifyASICXMLSignatureResponseType" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="CMSSignatureResult" type="VerifyASICCMSSignatureResponseType" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <!--### Verify CMS Signature Response ### --> + <xsd:element name="VerifyPDFSignatureResponse" type="VerifyPDFSignatureResponseType"/> + <xsd:complexType name="VerifyPDFSignatureResponseType"> + <xsd:sequence maxOccurs="unbounded"> + <xsd:element name="SignatureResult" type="PDFSignatureResultType"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="PDFSignatureResultType"> + <xsd:sequence> + <xsd:element name="SignerInfo" type="dsig:KeyInfoType" minOccurs="0"> + <xsd:annotation> + <xsd:documentation>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</xsd:documentation> + </xsd:annotation> + </xsd:element> + <xsd:element name="SigningTime" type="xsd:dateTime" minOccurs="0"/> + <xsd:element name="SignatureAlgorithm" type="xsd:string" minOccurs="0" maxOccurs="1"/> + <xsd:element name="SignatureCheck" type="CheckResultType"/> + <xsd:element name="CertificateCheck" type="CheckResultType"/> + <xsd:element name="FormCheckResult" type="FormResultType" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="ExtendedCertificateCheck" type="ExtendedCertificateCheckResultType" minOccurs="0" maxOccurs="1"/> + <xsd:element name="SignatureProperties" type="PDFSignatureProperties" minOccurs="0" maxOccurs="1" /> + </xsd:sequence> + </xsd:complexType> + + <xsd:complexType name="PDFSignatureProperties"> + <xsd:sequence> + <xsd:element name="SignatureCoversFullPDF" type="xsd:boolean" minOccurs="0" maxOccurs="1"/> + <xsd:element name="SignatureByteRange" type="xsd:string" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + + <!--########## Verify XML Signature ### --> + <!--### Verify XML Signature Request ### --> + <xsd:element name="VerifyXMLSignatureRequest" type="VerifyXMLSignatureRequestType"/> + <xsd:complexType name="VerifyXMLSignatureRequestType"> + <xsd:sequence> + <xsd:element name="DateTime" type="xsd:dateTime" minOccurs="0"/> + <xsd:element name="ExtendedValidation" type="xsd:boolean" default="false" minOccurs="0"/> + <xsd:element name="VerifySignatureInfo"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="VerifySignatureEnvironment" type="ContentOptionalRefType"/> + <xsd:element name="VerifySignatureLocation" type="xsd:token"/> + </xsd:sequence> + </xsd:complexType> + </xsd:element> + <xsd:choice minOccurs="0" maxOccurs="unbounded"> + <xsd:element ref="SupplementProfile"/> + <xsd:element name="SupplementProfileID" type="xsd:string"/> + </xsd:choice> + <xsd:element name="SignatureManifestCheckParams" minOccurs="0"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="ReferenceInfo" type="VerifyTransformsDataType" maxOccurs="unbounded"> + <xsd:annotation> + <xsd:documentation>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.</xsd:documentation> + </xsd:annotation> + </xsd:element> + </xsd:sequence> + <xsd:attribute name="ReturnReferenceInputData" type="xsd:boolean" use="optional" default="true"/> + </xsd:complexType> + </xsd:element> + <xsd:element name="ReturnHashInputData" minOccurs="0"/> + <xsd:element name="TrustProfileID" type="xsd:token"> + <xsd:annotation> + <xsd:documentation>mit diesem Profil wird eine Menge von + vertrauenswürdigen Wurzelzertifikaten spezifiziert + </xsd:documentation> + </xsd:annotation> + </xsd:element> + </xsd:sequence> + </xsd:complexType> + <!--### Verify XML Signature Response ### --> + <xsd:element name="VerifyXMLSignatureResponse" type="VerifyXMLSignatureResponseType"/> + <xsd:complexType name="VerifyXMLSignatureResponseType"> + <xsd:sequence> + <xsd:element name="SignerInfo" type="dsig:KeyInfoType"> + <xsd:annotation> + <xsd:documentation>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</xsd:documentation> + </xsd:annotation> + </xsd:element> + <xsd:element name="HashInputData" type="InputDataType" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="ReferenceInputData" type="InputDataType" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="SignatureAlgorithm" type="xsd:string" minOccurs="0" maxOccurs="1"/> + <xsd:element name="SignatureCheck" type="ReferencesCheckResultType"/> + <xsd:element name="SignatureManifestCheck" type="ReferencesCheckResultType" minOccurs="0"/> + <xsd:element name="XMLDSIGManifestCheck" type="ManifestRefsCheckResultType" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="CertificateCheck" type="CheckResultType"/> + <xsd:element name="FormCheckResult" type="FormResultType" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="ExtendedCertificateCheck" type="ExtendedCertificateCheckResultType" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="VerifyASICXMLSignatureResponseType"> + <xsd:sequence> + <xsd:element name="SignerInfo" type="dsig:KeyInfoType"> + <xsd:annotation> + <xsd:documentation>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</xsd:documentation> + </xsd:annotation> + </xsd:element> + <xsd:element name="SigningTime" type="xsd:dateTime" minOccurs="0"/> + <xsd:element name="HashInputData" type="InputDataType" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="ReferenceInputData" type="InputDataType" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="SignatureCheck" type="ReferencesCheckResultType"/> + <xsd:element name="SignatureManifestCheck" type="ReferencesCheckResultType" minOccurs="0"/> + <xsd:element name="XMLDSIGManifestCheck" type="ManifestRefsCheckResultType" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="CertificateCheck" type="CheckResultType"/> + <xsd:element name="FormCheckResult" type="FormResultType" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="ExtendedCertificateCheck" type="ExtendedCertificateCheckResultType" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:simpleType name="ProfileIdentifierType"> + <xsd:restriction base="xsd:token"/> + </xsd:simpleType> + <xsd:complexType name="InputDataType"> + <xsd:complexContent> + <xsd:extension base="ContentExLocRefBaseType"> + <xsd:attribute name="PartOf" use="optional" default="SignedInfo"> + <xsd:simpleType> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="SignedInfo"/> + <xsd:enumeration value="XMLDSIGManifest"/> + </xsd:restriction> + </xsd:simpleType> + </xsd:attribute> + <xsd:attribute name="ReferringSigReference" type="xsd:nonNegativeInteger" use="optional"/> + <xsd:attribute name="HashAlgorithm" type="xsd:string" use="optional"/> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + <xsd:complexType name="MetaInfoType"> + <xsd:sequence> + <xsd:element name="MimeType" type="MimeTypeType"/> + <xsd:element name="Description" type="xsd:anyURI" minOccurs="0"/> + <xsd:any namespace="##other" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="FinalDataMetaInfoType"> + <xsd:complexContent> + <xsd:extension base="MetaInfoType"> + <xsd:sequence> + <xsd:element name="Type" type="xsd:anyURI" minOccurs="0"/> + </xsd:sequence> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + <xsd:complexType name="DataObjectInfoType"> + <xsd:sequence> + <xsd:element name="DataObject"> + <xsd:complexType> + <xsd:complexContent> + <xsd:extension base="ContentOptionalRefType"/> + </xsd:complexContent> + </xsd:complexType> + </xsd:element> + <xsd:choice> + <xsd:annotation> + <xsd:documentation>Auswahl: Entweder explizite Angabe EINER + Transformationskette inklusive ggf. sinnvoller Supplements oder + Verweis auf ein benanntes Profil</xsd:documentation> + </xsd:annotation> + <xsd:element ref="CreateTransformsInfoProfile"/> + <xsd:element name="CreateTransformsInfoProfileID" type="ProfileIdentifierType"/> + </xsd:choice> + </xsd:sequence> + <xsd:attribute name="Structure" use="required"> + <xsd:simpleType> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="detached"/> + <xsd:enumeration value="enveloping"/> + </xsd:restriction> + </xsd:simpleType> + </xsd:attribute> + </xsd:complexType> + <xsd:complexType name="CMSDataObjectInfoType"> + <xsd:sequence> + <xsd:element name="DataObject"> + <xsd:complexType> + <xsd:complexContent> + <xsd:extension base="CMSDataObjectRequiredMetaType"/> + </xsd:complexContent> + </xsd:complexType> + </xsd:element> + </xsd:sequence> + <xsd:attribute name="Structure" use="required"> + <xsd:simpleType> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="detached"/> + <xsd:enumeration value="enveloping"/> + </xsd:restriction> + </xsd:simpleType> + </xsd:attribute> + </xsd:complexType> + <xsd:complexType name="TransformsInfoType"> + <xsd:sequence> + <xsd:element ref="dsig:Transforms" minOccurs="0"/> + <xsd:element name="FinalDataMetaInfo" type="FinalDataMetaInfoType"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="XMLDataObjectAssociationType"> + <xsd:sequence> + <xsd:element name="MetaInfo" type="MetaInfoType" minOccurs="0"/> + <xsd:element name="Content" type="ContentRequiredRefType"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="PDFSignedRepsonse"> + <xsd:sequence> + <xsd:element name="SignatureID" type="xsd:string" minOccurs="0" maxOccurs="1"/> + <xsd:choice maxOccurs="1"> + <xsd:element name="PDFSignature" type="xsd:base64Binary"> + <xsd:annotation> + <xsd:documentation>Resultat, falls die Signaturerstellung + erfolgreich war</xsd:documentation> + </xsd:annotation> + </xsd:element> + <xsd:element ref="ErrorResponse"/> + </xsd:choice> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CMSDataObjectOptionalMetaType"> + <xsd:sequence> + <xsd:element name="MetaInfo" type="MetaInfoType" minOccurs="0"/> + <xsd:element name="Content" type="CMSContentBaseType"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CMSDataObjectRequiredMetaType"> + <xsd:sequence> + <xsd:element name="MetaInfo" type="MetaInfoType"/> + <xsd:element name="Content" type="CMSContentBaseType"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CMSContentBaseType"> + <xsd:complexContent> + <xsd:restriction base="ContentOptionalRefType"> + <xsd:choice minOccurs="0"> + <xsd:element name="Base64Content" type="xsd:base64Binary"/> + </xsd:choice> + </xsd:restriction> + </xsd:complexContent> + </xsd:complexType> + <xsd:complexType name="CheckResultType"> + <xsd:sequence> + <xsd:element name="Code" type="xsd:nonNegativeInteger"/> + <xsd:element name="Info" type="AnyChildrenType" minOccurs="0"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="FormResultType"> + <xsd:sequence> + <xsd:element name="Code" type="xsd:nonNegativeInteger" minOccurs="1" maxOccurs="1"/> + <xsd:element name="Name" type="xsd:string" minOccurs="1" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="IndicationResultType"> + <xsd:sequence> + <xsd:element name="Code" type="xsd:nonNegativeInteger" minOccurs="1" maxOccurs="1"/> + <xsd:element name="Name" type="xsd:string" minOccurs="1" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="ExtendedCertificateCheckResultType"> + <xsd:sequence> + <xsd:element name="Major" type="IndicationResultType" minOccurs="1" maxOccurs="1"/> + <xsd:element name="Minor" type="IndicationResultType" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="ReferencesCheckResultType"> + <xsd:complexContent> + <xsd:restriction base="CheckResultType"> + <xsd:sequence> + <xsd:element name="Code" type="xsd:nonNegativeInteger"/> + <xsd:element name="Info" type="ReferencesCheckResultInfoType" minOccurs="0"/> + </xsd:sequence> + </xsd:restriction> + </xsd:complexContent> + </xsd:complexType> + <xsd:complexType name="ReferencesCheckResultInfoType" mixed="true"> + <xsd:complexContent> + <xsd:restriction base="AnyChildrenType"> + <xsd:sequence> + <xsd:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="FailedReference" type="xsd:positiveInteger" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:restriction> + </xsd:complexContent> + </xsd:complexType> + <xsd:complexType name="ManifestRefsCheckResultType"> + <xsd:complexContent> + <xsd:restriction base="CheckResultType"> + <xsd:sequence> + <xsd:element name="Code" type="xsd:nonNegativeInteger"/> + <xsd:element name="Info" type="ManifestRefsCheckResultInfoType"/> + </xsd:sequence> + </xsd:restriction> + </xsd:complexContent> + </xsd:complexType> + <xsd:complexType name="ManifestRefsCheckResultInfoType" mixed="true"> + <xsd:complexContent> + <xsd:restriction base="AnyChildrenType"> + <xsd:sequence> + <xsd:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="FailedReference" type="xsd:positiveInteger" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="ReferringSigReference" type="xsd:positiveInteger"/> + </xsd:sequence> + </xsd:restriction> + </xsd:complexContent> + </xsd:complexType> + <!--########## Error Response ### --> + <xsd:element name="ErrorResponse" type="ErrorResponseType"> + <xsd:annotation> + <xsd:documentation>Resultat, falls die Signaturerstellung gescheitert + ist</xsd:documentation> + </xsd:annotation> + </xsd:element> + <xsd:complexType name="ErrorResponseType"> + <xsd:sequence> + <xsd:element name="ErrorCode" type="xsd:integer"/> + <xsd:element name="Info" type="xsd:string"/> + </xsd:sequence> + </xsd:complexType> + <!--########## Auxiliary Types ### --> + <xsd:simpleType name="KeyIdentifierType"> + <xsd:restriction base="xsd:string"/> + </xsd:simpleType> + <xsd:simpleType name="KeyStorageType"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="Software"/> + <xsd:enumeration value="Hardware"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="MimeTypeType"> + <xsd:restriction base="xsd:token"/> + </xsd:simpleType> + <xsd:complexType name="AnyChildrenType" mixed="true"> + <xsd:sequence> + <xsd:any namespace="##any" processContents="lax" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="XMLContentType" mixed="true"> + <xsd:complexContent> + <xsd:extension base="AnyChildrenType"> + <xsd:attribute ref="xml:space" use="optional"/> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + <xsd:complexType name="ContentBaseType"> + <xsd:choice minOccurs="0"> + <xsd:element name="Base64Content" type="xsd:base64Binary"/> + <xsd:element name="XMLContent" type="XMLContentType"/> + <xsd:element name="LocRefContent" type="xsd:anyURI"/> + </xsd:choice> + </xsd:complexType> + <xsd:complexType name="ContentExLocRefBaseType"> + <xsd:complexContent> + <xsd:restriction base="ContentBaseType"> + <xsd:choice minOccurs="0"> + <xsd:element name="Base64Content" type="xsd:base64Binary"/> + <xsd:element name="XMLContent" type="XMLContentType"/> + </xsd:choice> + </xsd:restriction> + </xsd:complexContent> + </xsd:complexType> + <xsd:complexType name="ContentOptionalRefType"> + <xsd:complexContent> + <xsd:extension base="ContentBaseType"> + <xsd:attribute name="Reference" type="xsd:anyURI" use="optional"/> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + <xsd:complexType name="ContentRequiredRefType"> + <xsd:complexContent> + <xsd:restriction base="ContentOptionalRefType"> + <xsd:choice minOccurs="0"> + <xsd:element name="Base64Content" type="xsd:base64Binary"/> + <xsd:element name="XMLContent" type="XMLContentType"/> + <xsd:element name="LocRefContent" type="xsd:anyURI"/> + </xsd:choice> + <xsd:attribute name="Reference" type="xsd:anyURI" use="required"/> + </xsd:restriction> + </xsd:complexContent> + </xsd:complexType> + <xsd:complexType name="VerifyTransformsDataType"> + <xsd:choice maxOccurs="unbounded"> + <xsd:annotation> + <xsd:documentation>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. + </xsd:documentation> + </xsd:annotation> + <xsd:element ref="VerifyTransformsInfoProfile"/> + <xsd:element name="VerifyTransformsInfoProfileID" type="xsd:string"> + <xsd:annotation> + <xsd:documentation>Profilbezeichner für einen Transformationsweg + </xsd:documentation> + </xsd:annotation> + </xsd:element> + </xsd:choice> + </xsd:complexType> + <xsd:element name="QualifiedCertificate"> + <xsd:complexType> + <xsd:attribute name="source" use="optional"> + <xsd:simpleType> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="TSL"/> + <xsd:enumeration value="Certificate"/> + </xsd:restriction> + </xsd:simpleType> + </xsd:attribute> + </xsd:complexType> + </xsd:element> + <xsd:element name="SecureSignatureCreationDevice"> + <xsd:complexType> + <xsd:attribute name="source" use="optional"> + <xsd:simpleType> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="TSL"/> + <xsd:enumeration value="Certificate"/> + </xsd:restriction> + </xsd:simpleType> + </xsd:attribute> + </xsd:complexType> + </xsd:element> + <xsd:element name="IssuingCountry" type="xsd:token"/> + <xsd:element name="PublicAuthority" type="PublicAuthorityType"/> + <xsd:complexType name="PublicAuthorityType"> + <xsd:sequence> + <xsd:element name="Code" type="xsd:string" minOccurs="0"/> + </xsd:sequence> + </xsd:complexType> + <xsd:simpleType name="SignatoriesType"> + <xsd:union memberTypes="AllSignatoriesType"> + <xsd:simpleType> + <xsd:list itemType="xsd:positiveInteger"/> + </xsd:simpleType> + </xsd:union> + </xsd:simpleType> + <xsd:simpleType name="AllSignatoriesType"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="all"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CreateSignatureLocationType"> + <xsd:simpleContent> + <xsd:extension base="xsd:token"> + <xsd:attribute name="Index" type="xsd:integer" use="required"/> + </xsd:extension> + </xsd:simpleContent> + </xsd:complexType> + <xsd:complexType name="TransformParameterType"> + <xsd:choice minOccurs="0"> + <xsd:annotation> + <xsd:documentation>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.</xsd:documentation> + </xsd:annotation> + <xsd:element name="Base64Content" type="xsd:base64Binary"> + <xsd:annotation> + <xsd:documentation>Der Transformationsparameter explizit angegeben. + </xsd:documentation> + </xsd:annotation> + </xsd:element> + <xsd:element name="Hash"> + <xsd:annotation> + <xsd:documentation>Der Hashwert des Transformationsparameters. + </xsd:documentation> + </xsd:annotation> + <xsd:complexType> + <xsd:sequence> + <xsd:element ref="dsig:DigestMethod"/> + <xsd:element ref="dsig:DigestValue"/> + </xsd:sequence> + </xsd:complexType> + </xsd:element> + </xsd:choice> + <xsd:attribute name="URI" type="xsd:anyURI" use="required"/> + </xsd:complexType> + <xsd:element name="CreateSignatureEnvironmentProfile"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="CreateSignatureLocation" type="CreateSignatureLocationType"/> + <xsd:element name="Supplement" type="XMLDataObjectAssociationType" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + </xsd:element> + <xsd:element name="VerifyTransformsInfoProfile"> + <xsd:annotation> + <xsd:documentation>Explizite Angabe des Transformationswegs + </xsd:documentation> + </xsd:annotation> + <xsd:complexType> + <xsd:sequence> + <xsd:element ref="dsig:Transforms" minOccurs="0"/> + <xsd:element name="TransformParameter" type="TransformParameterType" minOccurs="0" maxOccurs="unbounded"> + <xsd:annotation> + <xsd:documentation>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.</xsd:documentation> + </xsd:annotation> + </xsd:element> + </xsd:sequence> + </xsd:complexType> + </xsd:element> + <xsd:element name="Supplement" type="XMLDataObjectAssociationType"/> + <xsd:element name="SupplementProfile" type="XMLDataObjectAssociationType"/> + <xsd:element name="CreateTransformsInfoProfile"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="CreateTransformsInfo" type="TransformsInfoType"/> + <xsd:element ref="Supplement" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + </xsd:element> +</xsd:schema> diff --git a/moaSig/settings.gradle b/moaSig/settings.gradle index 222a5bd..86077eb 100644 --- a/moaSig/settings.gradle +++ b/moaSig/settings.gradle @@ -1,2 +1 @@ - include "common", "moa-sig", "moa-sig-lib", "moa-asic" |