From 2e54605e4b6b828137ae92ac91564b833bdb8a14 Mon Sep 17 00:00:00 2001 From: kstranacher_eGovL Date: Thu, 3 Jan 2013 15:19:51 +0000 Subject: =?UTF-8?q?Updates=20f=C3=BCr=20bPK=20Berechnung=20Organwalter?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: https://joinup.ec.europa.eu/svn/moa-idspss/trunk@1305 d688527b-c9ab-4aba-bd8d-4036d912da1d --- spss/server/.settings/org.eclipse.jdt.core.prefs | 8 +- spss/server/serverws/.classpath | 148 ++++++++++++++++++----- spss/server/serverws/.project | 85 ++++++++----- 3 files changed, 177 insertions(+), 64 deletions(-) (limited to 'spss') diff --git a/spss/server/.settings/org.eclipse.jdt.core.prefs b/spss/server/.settings/org.eclipse.jdt.core.prefs index 02fbf27fb..638b39a15 100644 --- a/spss/server/.settings/org.eclipse.jdt.core.prefs +++ b/spss/server/.settings/org.eclipse.jdt.core.prefs @@ -1,5 +1,7 @@ -#Tue Jul 07 16:07:22 CEST 2009 +#Thu Jan 03 11:06:02 CET 2013 eclipse.preferences.version=1 -org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.4 +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.2 org.eclipse.jdt.core.compiler.compliance=1.4 -org.eclipse.jdt.core.compiler.source=1.4 +org.eclipse.jdt.core.compiler.problem.assertIdentifier=warning +org.eclipse.jdt.core.compiler.problem.enumIdentifier=warning +org.eclipse.jdt.core.compiler.source=1.3 diff --git a/spss/server/serverws/.classpath b/spss/server/serverws/.classpath index a734c5415..330efc0e1 100644 --- a/spss/server/serverws/.classpath +++ b/spss/server/serverws/.classpath @@ -1,30 +1,122 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/spss/server/serverws/.project b/spss/server/serverws/.project index dd934fd1a..ddf2e7061 100644 --- a/spss/server/serverws/.project +++ b/spss/server/serverws/.project @@ -1,35 +1,54 @@ - moa-spss-ws - NO_M2ECLIPSE_SUPPORT: Project files created with the maven-eclipse-plugin are not supported in M2Eclipse. - - moa-spss-lib - moa-common - - - - org.eclipse.jdt.core.javabuilder - - - org.eclipse.wst.common.project.facet.core.builder - - - org.eclipse.wst.validation.validationbuilder - - - org.eclipse.m2e.core.maven2Builder - - - org.maven.ide.eclipse.maven2Builder - - - - org.eclipse.m2e.core.maven2Nature - org.eclipse.jdt.core.javanature - org.maven.ide.eclipse.maven2Nature - org.eclipse.wst.common.project.facet.core.nature - org.eclipse.wst.common.modulecore.ModuleCoreNature - org.eclipse.jem.workbench.JavaEMFNature - org.eclipse.wst.jsdt.core.jsNature - - \ No newline at end of file + moa-spss-ws + NO_M2ECLIPSE_SUPPORT: Project files created with the maven-eclipse-plugin are not supported in M2Eclipse. + + moa-spss-lib + moa-common + moa-spss-tools + MOA + TestTimerTask + moa-spss-handbook-apiClient + stork-saml-engine + moa-spss + spss + moa-spss-handbook-webserviceClient + moa-id-lib + + + + org.eclipse.jdt.core.javabuilder + + + + + org.eclipse.wst.common.project.facet.core.builder + + + + + org.eclipse.wst.validation.validationbuilder + + + + + org.eclipse.m2e.core.maven2Builder + + + + + org.maven.ide.eclipse.maven2Builder + + + + + + org.eclipse.m2e.core.maven2Nature + org.eclipse.jdt.core.javanature + org.maven.ide.eclipse.maven2Nature + org.eclipse.wst.common.project.facet.core.nature + org.eclipse.wst.common.modulecore.ModuleCoreNature + org.eclipse.jem.workbench.JavaEMFNature + org.eclipse.wst.jsdt.core.jsNature + + -- cgit v1.2.3 From 1ad814ccbbe4f65f430ac738104e3f3c8256c229 Mon Sep 17 00:00:00 2001 From: Klaus Stranacher Date: Tue, 16 Apr 2013 14:44:08 +0200 Subject: Update digest algorithm, XAdES version, whitelisting --- .../.settings/org.eclipse.wst.common.component | 4 +- .../.settings/org.eclipse.wst.common.component | 6 +- .../server/config/ConfigurationPartsBuilder.java | 103 +++++++++++++- .../spss/server/config/ConfigurationProvider.java | 35 ++++- .../moa/spss/server/config/KeyGroup.java | 16 ++- .../xmlsign/XMLSignatureCreationProfileImpl.java | 156 +++++++++++++++++---- .../invoke/XMLSignatureCreationProfileFactory.java | 89 ++++++++++-- .../moa/spss/util/ExternalURIVerifier.java | 45 +++++- .../properties/spss_messages_de.properties | 6 +- spss/server/serverws/.classpath | 115 ++------------- spss/server/serverws/.project | 13 +- .../serverws/.settings/org.eclipse.jdt.core.prefs | 14 +- .../.settings/org.eclipse.wst.common.component | 12 +- .../org.eclipse.wst.common.project.facet.core.xml | 4 +- spss/server/tools/.project | 6 +- 15 files changed, 429 insertions(+), 195 deletions(-) (limited to 'spss') diff --git a/spss/handbook/clients/referencedData/.settings/org.eclipse.wst.common.component b/spss/handbook/clients/referencedData/.settings/org.eclipse.wst.common.component index 8d9b0c1c1..0929e364c 100644 --- a/spss/handbook/clients/referencedData/.settings/org.eclipse.wst.common.component +++ b/spss/handbook/clients/referencedData/.settings/org.eclipse.wst.common.component @@ -1,8 +1,8 @@ - + - + \ No newline at end of file diff --git a/spss/server/serverlib/.settings/org.eclipse.wst.common.component b/spss/server/serverlib/.settings/org.eclipse.wst.common.component index feb12899a..ee24ef8ba 100644 --- a/spss/server/serverlib/.settings/org.eclipse.wst.common.component +++ b/spss/server/serverlib/.settings/org.eclipse.wst.common.component @@ -1,10 +1,6 @@ - - + - - - diff --git a/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/server/config/ConfigurationPartsBuilder.java b/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/server/config/ConfigurationPartsBuilder.java index 09f496c74..e335139aa 100644 --- a/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/server/config/ConfigurationPartsBuilder.java +++ b/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/server/config/ConfigurationPartsBuilder.java @@ -101,6 +101,10 @@ public class ConfigurationPartsBuilder { ROOT + CONF + "SignatureCreation/" + CONF + "XMLDSig/" + CONF + "DigestMethodAlgorithm"; + private static final String XADES_VERSION_XPATH = + ROOT + CONF + "SignatureCreation/" + + CONF + "XAdES/" + + CONF + "Version"; private static final String C14N_ALGORITHM_XPATH = ROOT + CONF + "SignatureCreation/" + CONF + "XMLDSig/" @@ -115,6 +119,13 @@ public class ConfigurationPartsBuilder { ROOT + CONF + "Common/" + CONF + "PermitExternalUris/" + CONF + "BlackListUri"; + private static final String FORBID_EXTERNAL_URIS_XPATH = + ROOT + CONF + "Common/" + + CONF + "ForbidExternalUris"; + private static final String WHITE_LIST_URIS_XPATH = + ROOT + CONF + "Common/" + + CONF + "ForbidExternalUris/" + + CONF + "WhiteListUri"; private static final String HARDWARE_KEY_XPATH = ROOT + CONF + "SignatureCreation/" @@ -263,15 +274,19 @@ public class ConfigurationPartsBuilder { /** The accepted digest method algorithm URIs, as an array */ private static final String[] ACCEPTED_DIGEST_ALGORITHMS_ARRAY = - { Constants.SHA1_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 */ private static final String DIGEST_ALGORITHM_DEFAULT = Constants.SHA1_URI; - + /** The root element of the MOA configuration */ private Element configElem; @@ -333,7 +348,7 @@ public class ConfigurationPartsBuilder { public String getDigestMethodAlgorithmName() { String digestMethod = getElementValue(getConfigElem(), DIGEST_METHOD_XPATH, null); - + if (digestMethod == null || !ACCEPTED_DIGEST_ALGORITHMS.contains(digestMethod)) { info( @@ -344,7 +359,20 @@ public class ConfigurationPartsBuilder { 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); + + return xadesVersion; + } + + /** * Returns the canonicalization algorithm name. * @@ -409,6 +437,7 @@ public class ConfigurationPartsBuilder { } } + /** * * @return @@ -448,10 +477,12 @@ public class ConfigurationPartsBuilder { 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); @@ -459,7 +490,64 @@ public class ConfigurationPartsBuilder { 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); + + // TODO 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}); + } +// +// // 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 + // TODO +// ExternalReferenceChecker.setWhitelist(whiteListIaikMoa); + + + if(whitelist.isEmpty()) // no whitelisted uris given + info("config.48", null); + + + return whitelist; + } + + /** * Build the configured hardware keys. * @@ -573,9 +661,10 @@ public class ConfigurationPartsBuilder { while ((keyGroupElem = (Element) kgIter.nextNode()) != null) { String keyGroupId = getElementValue(keyGroupElem, CONF + "Id", null); + String keyGroupDigestMethodAlgorithm = getElementValue(keyGroupElem, CONF + "DigestMethodAlgorithm", null); Set keyGroupEntries = buildKeyGroupEntries(keyGroupId, keyModuleIds, keyGroupElem); - KeyGroup keyGroup = new KeyGroup(keyGroupId, keyGroupEntries); + KeyGroup keyGroup = new KeyGroup(keyGroupId, keyGroupEntries, keyGroupDigestMethodAlgorithm); if (keyGroups.containsKey(keyGroupId)) { diff --git a/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/server/config/ConfigurationProvider.java b/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/server/config/ConfigurationProvider.java index 25fa0d6ad..b40a6bfa5 100644 --- a/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/server/config/ConfigurationProvider.java +++ b/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/server/config/ConfigurationProvider.java @@ -99,7 +99,10 @@ public class ConfigurationProvider /** The default canonicalization algorithm name */ private String canonicalizationAlgorithmName; - + + /** The XAdES version used for signature creation */ + private String xadesVersion; + /** * A List of HardwareCryptoModule objects for * configuring hardware modules. @@ -251,6 +254,11 @@ public class ConfigurationProvider */ private List blackListedUris_; + /** + * A List of white listed URIs (host and port) + */ + private List whiteListedUris_; + /** * A TSLConfiguration that represents the global TSL configuration */ @@ -351,6 +359,8 @@ public class ConfigurationProvider keyGroups = builder.buildKeyGroups(allKeyModules); keyGroupMappings = builder.buildKeyGroupMappings(keyGroups, ANONYMOUS_ISSUER_SERIAL); + + xadesVersion = builder.getXAdESVersion(); defaultChainingMode = builder.getDefaultChainingMode(); chainingModes = builder.buildChainingModes(); useAuthorityInfoAccess_ = builder.getUseAuthorityInfoAccess(); @@ -382,11 +392,14 @@ public class ConfigurationProvider allowExternalUris_= builder.allowExternalUris(); - if (allowExternalUris_) + if (allowExternalUris_) { blackListedUris_ = builder.buildPermitExternalUris(); + whiteListedUris_ = null; + } else { info("config.35", null); blackListedUris_ = null; + whiteListedUris_ = builder.buildForbidExternalUris(); } @@ -457,6 +470,16 @@ public class ConfigurationProvider return digestMethodAlgorithmName; } + /** + * Return the XAdES version used for signature creation. + * + * @return The XAdES version used for signature creation, or an empty String, + * if none has been configured. + */ + public String getXAdESVersion() { + return xadesVersion; + } + public boolean getAllowExternalUris() { return this.allowExternalUris_; } @@ -464,6 +487,9 @@ public class ConfigurationProvider public List getBlackListedUris() { return this.blackListedUris_; } + public List getWhiteListedUris() { + return this.whiteListedUris_; + } /** * Return the name of the canonicalization algorithm used during signature @@ -515,6 +541,11 @@ public class ConfigurationProvider public Map getKeyGroups() { return keyGroups; } + + public KeyGroup getKeyGroup(String keyGroupId) { + KeyGroup keyGroup = (KeyGroup) keyGroups.get(keyGroupId); + return keyGroup; + } /** * Return the set of KeyGroupEntrys of a given key group, which a diff --git a/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/server/config/KeyGroup.java b/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/server/config/KeyGroup.java index 22ed8ae83..c2490f9a3 100644 --- a/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/server/config/KeyGroup.java +++ b/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/server/config/KeyGroup.java @@ -40,16 +40,20 @@ public class KeyGroup { private Set keyGroupEntries; /** The key group ID. */ private String id; + /** The digest method algorithm for the key group */ + private String digestMethodAlgorithm; /** * Create a KeyGroup. * * @param id The ID of this KeyGroup. * @param keyGroupEntries The keys belonging to this KeyGroup. + * @param digestMethodAlgorithm The signature algorithm used for this key group */ - public KeyGroup(String id, Set keyGroupEntries) { + public KeyGroup(String id, Set keyGroupEntries, String digestMethodAlgorithm) { this.id = id; this.keyGroupEntries = keyGroupEntries; + this.digestMethodAlgorithm = digestMethodAlgorithm; } /** @@ -60,6 +64,14 @@ public class KeyGroup { 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 the ID of this KeyGroup. @@ -87,7 +99,7 @@ public class KeyGroup { sb.append(" " + i.next()); } } - return "(KeyGroup - ID:" + id + " " + sb.toString() + ")"; + return "(KeyGroup - ID:" + id + " " + sb.toString() + ")" + "DigestMethodAlgorithm: " + digestMethodAlgorithm; } } diff --git a/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/xmlsign/XMLSignatureCreationProfileImpl.java b/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/xmlsign/XMLSignatureCreationProfileImpl.java index 9b5dce883..479f0aac9 100644 --- a/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/xmlsign/XMLSignatureCreationProfileImpl.java +++ b/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/xmlsign/XMLSignatureCreationProfileImpl.java @@ -24,9 +24,6 @@ package at.gv.egovernment.moa.spss.server.iaik.xmlsign; -import java.util.List; -import java.util.Set; - import iaik.server.modules.algorithms.SignatureAlgorithms; import iaik.server.modules.keys.AlgorithmUnavailableException; import iaik.server.modules.keys.KeyEntryID; @@ -37,6 +34,10 @@ 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.logging.Logger; 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; @@ -75,7 +76,10 @@ public class XMLSignatureCreationProfileImpl private 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; + + /** * Create a new XMLSignatureCreationProfileImpl. * @@ -86,7 +90,8 @@ public class XMLSignatureCreationProfileImpl */ public XMLSignatureCreationProfileImpl( int createProfileCount, - Set reservedIDs) { + Set reservedIDs, + String digestMethodXAdES142) { signatureIDGenerator = new IdGenerator("signature-" + createProfileCount, reservedIDs); manifestIDGenerator = @@ -95,6 +100,7 @@ public class XMLSignatureCreationProfileImpl new IdGenerator("dsig-manifest-" + createProfileCount, reservedIDs); propertyIDGenerator = new IdGenerator("etsi-signed-" + createProfileCount, reservedIDs); + this.digestMethodXAdES142 = digestMethodXAdES142; } /** @@ -168,27 +174,127 @@ public class XMLSignatureCreationProfileImpl e, null); } - - if (algorithms.contains(SignatureAlgorithms.MD2_WITH_RSA) // TODO retournierten Algorithmus abhängig von der Schlüssellänge machen (bei längeren Schlüsseln SHA256 statt SHA1) - || 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); + + 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; + } 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 a more secure digest algorithm out of the SHA-2 family (e.g. SHA-256, SHA-384, SHA-512)"); + 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.RIPEMD160_WITH_RSA_OLD) //? + || algorithms.contains(SignatureAlgorithms.SHA1_WITH_RSA) + || algorithms.contains(SignatureAlgorithms.WHIRLPOOL_WITH_RSA)) { //? + + return SignatureAlgorithms.SHA1_WITH_RSA; + + } else if (algorithms.contains(SignatureAlgorithms.ECDSA) + || algorithms.contains(SignatureAlgorithms.RIPEMD160_WITH_ECDSA) + || algorithms.contains(SignatureAlgorithms.RIPEMD160_WITH_ECDSA_PLAIN) + || algorithms.contains(SignatureAlgorithms.WHIRLPOOL_WITH_ECDSA) + || algorithms.contains(SignatureAlgorithms.SHA1_WITH_ECDSA_PLAIN)) { + 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.SHA224_WITH_RSA) + || algorithms.contains(SignatureAlgorithms.SHA256_WITH_RSA)) { + + return SignatureAlgorithms.SHA256_WITH_RSA; + + } else if (algorithms.contains(SignatureAlgorithms.SHA224_WITH_ECDSA) + || algorithms.contains(SignatureAlgorithms.SHA256_WITH_ECDSA) + || algorithms.contains(SignatureAlgorithms.SHA224_WITH_ECDSA_PLAIN) + || algorithms.contains(SignatureAlgorithms.SHA256_WITH_ECDSA_PLAIN)) { + 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) + || algorithms.contains(SignatureAlgorithms.SHA384_WITH_ECDSA_PLAIN)) { + 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) + || algorithms.contains(SignatureAlgorithms.SHA512_WITH_ECDSA_PLAIN)) { + 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); + } + } + + } /** diff --git a/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/XMLSignatureCreationProfileFactory.java b/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/XMLSignatureCreationProfileFactory.java index 5c4a2c76a..d1281c1f1 100644 --- a/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/XMLSignatureCreationProfileFactory.java +++ b/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/XMLSignatureCreationProfileFactory.java @@ -56,6 +56,7 @@ import at.gv.egovernment.moa.spss.api.xmlsign.CreateXMLSignatureRequest; import at.gv.egovernment.moa.spss.api.xmlsign.DataObjectInfo; import at.gv.egovernment.moa.spss.api.xmlsign.SingleSignatureInfo; import at.gv.egovernment.moa.spss.server.config.ConfigurationProvider; +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.iaik.xml.CanonicalizationImpl; import at.gv.egovernment.moa.spss.server.iaik.xmlsign.DataObjectTreatmentImpl; @@ -83,6 +84,9 @@ public class XMLSignatureCreationProfileFactory { 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 CreateXMLSignatureRequest for which to create the @@ -129,18 +133,62 @@ public class XMLSignatureCreationProfileFactory { HashSet allReservedIDs = new HashSet(reserved); allReservedIDs.addAll(sigInfoReservedIDs); - XMLSignatureCreationProfileImpl profile = - new XMLSignatureCreationProfileImpl(createProfileCount, allReservedIDs); TransactionContext context = TransactionContextManager.getInstance().getTransactionContext(); ConfigurationProvider config = context.getConfiguration(); CanonicalizationImpl canonicalization; List dataObjectTreatmentList; - String keyGroupID; Set keySet; List transformationSupplements; List createTransformsProfiles; + // get the key group id + String keyGroupID = request.getKeyIdentifier(); + // 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 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"); + } + + 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)"); + + } + } + + XMLSignatureCreationProfileImpl profile = + new XMLSignatureCreationProfileImpl(createProfileCount, allReservedIDs, digestMethodXAdES142); + + // build the transformation supplements createTransformsProfiles = getCreateTransformsInfoProfiles(singleSignatureInfo); @@ -153,11 +201,11 @@ public class XMLSignatureCreationProfileFactory { singleSignatureInfo, createTransformsProfiles, transformationSupplements, - allReservedIDs); + allReservedIDs, + digestMethodXAdES142); profile.setDataObjectTreatmentList(dataObjectTreatmentList); // set the key set - keyGroupID = request.getKeyIdentifier(); keySet = buildKeySet(keyGroupID); if (keySet == null) { throw new MOAApplicationException("2231", null); @@ -184,7 +232,7 @@ public class XMLSignatureCreationProfileFactory { canonicalization = new CanonicalizationImpl(config.getCanonicalizationAlgorithmName()); profile.setSignedInfoCanonicalization(canonicalization); - + // set the signed properties profile.setSignedProperties(Collections.EMPTY_LIST); @@ -299,7 +347,8 @@ public class XMLSignatureCreationProfileFactory { SingleSignatureInfo singleSignatureInfo, List createTransformsInfoProfiles, List transformationSupplements, - Set reservedIDs) + Set reservedIDs, + String digestMethodXAdES142) throws MOASystemException, MOAApplicationException { TransactionContext context = @@ -329,15 +378,25 @@ public class XMLSignatureCreationProfileFactory { treatment.setTransformationList(buildTransformationList(profile)); treatment.setReferenceInManifest(dataObjInfo.isChildOfManifest()); - hashAlgorithmName = - (String) HASH_ALGORITHM_MAPPING.get( - config.getDigestMethodAlgorithmName()); - if (hashAlgorithmName == null) { - error( - "config.17", - new Object[] { config.getDigestMethodAlgorithmName()}); - throw new MOASystemException("2900", null); + // 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); + } } + + + treatment.setHashAlgorithmName(hashAlgorithmName); treatment.setIncludedInSignature( diff --git a/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/util/ExternalURIVerifier.java b/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/util/ExternalURIVerifier.java index dafb89f16..219bb7cdf 100644 --- a/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/util/ExternalURIVerifier.java +++ b/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/util/ExternalURIVerifier.java @@ -26,12 +26,14 @@ public class ExternalURIVerifier { 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(); @@ -55,9 +57,46 @@ public class ExternalURIVerifier { } } } - else { - Logger.debug(new LogMsg("No external URIs allowed (" + host + ")")); - throw new MOAApplicationException("4001", new Object[]{host}); + 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)); diff --git a/spss/server/serverlib/src/main/resources/resources/properties/spss_messages_de.properties b/spss/server/serverlib/src/main/resources/resources/properties/spss_messages_de.properties index 645ff9f6d..5919cebbc 100644 --- a/spss/server/serverlib/src/main/resources/resources/properties/spss_messages_de.properties +++ b/spss/server/serverlib/src/main/resources/resources/properties/spss_messages_de.properties @@ -89,7 +89,7 @@ 3202=Supplement für Signaturumgebung kann nicht geladen werden (Reference="{0}", LocRef-URI="{1}") 3203=Signaturumgebung kann nicht geladen werden (Reference="{0}", LocRef-URI="{1}") -4001=Externe URI {0} darf nicht geladen werden (externe URIs generell verboten) +4001=Externe URI {0} darf nicht geladen werden (externe sind URIs verboten und URI befindet sich nicht auf der Whitelist) 4002=Externe URI {0} befindet sich auf der Blacklist und darf nicht geladen werden 4003=IP-Adresse für {0} konnte nicht ermitteln werden @@ -142,7 +142,7 @@ config.31=Fehler in der Konfiguration der KeyGroup mit id={0}: Der Schl config.32=Fehler in der Konfiguration: Verzeichnisangabe für den Zertifikatsspeicher ist ungültig ({0}). config.33=External URIs are allowed. Maybe a URI blacklist exists. config.34=Blacklisted URI: {0}. -config.35=External URIs not allowed. +config.35=External URIs not allowed. Maybe a URI whitelist exists. config.36=No blacklisted URIs given. config.37=Fehler beim Erstellen der TSL Konfiguration: Name des TSL Arbeits-Verzeichnisses konnte nicht in eine URL umgewandet werden (Wert="{0}") config.38=Fehler beim Erstellen der TSL Konfiguration: Das TSL Arbeits-Verzeichnis ist kein Verzeichnis (Wert="{0}") @@ -154,6 +154,8 @@ config.43=Update truststore with id "{0}" config.44=Retrieve certificates from TSL config.45=Create store updater config.46=Start periodical TSL update task at {0} and then every {1} milliseconds +config.48=No whitelisted URIs given. +config.49=Whitelisted URI: {0}. handler.00=Starte neue Transaktion: TID={0}, Service={1} handler.01=Aufruf von Adresse={0} diff --git a/spss/server/serverws/.classpath b/spss/server/serverws/.classpath index 330efc0e1..767a2a2de 100644 --- a/spss/server/serverws/.classpath +++ b/spss/server/serverws/.classpath @@ -1,120 +1,25 @@ - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - + - + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - + + diff --git a/spss/server/serverws/.project b/spss/server/serverws/.project index ddf2e7061..fa2286335 100644 --- a/spss/server/serverws/.project +++ b/spss/server/serverws/.project @@ -5,15 +5,6 @@ moa-spss-lib moa-common - moa-spss-tools - MOA - TestTimerTask - moa-spss-handbook-apiClient - stork-saml-engine - moa-spss - spss - moa-spss-handbook-webserviceClient - moa-id-lib @@ -32,12 +23,12 @@ - org.eclipse.m2e.core.maven2Builder + org.maven.ide.eclipse.maven2Builder - org.maven.ide.eclipse.maven2Builder + org.eclipse.m2e.core.maven2Builder diff --git a/spss/server/serverws/.settings/org.eclipse.jdt.core.prefs b/spss/server/serverws/.settings/org.eclipse.jdt.core.prefs index 0e32dbb18..cbb750c06 100644 --- a/spss/server/serverws/.settings/org.eclipse.jdt.core.prefs +++ b/spss/server/serverws/.settings/org.eclipse.jdt.core.prefs @@ -1,8 +1,12 @@ -#Thu Dec 27 15:45:22 CET 2012 +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5 +org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve +org.eclipse.jdt.core.compiler.compliance=1.5 +org.eclipse.jdt.core.compiler.debug.lineNumber=generate +org.eclipse.jdt.core.compiler.debug.localVariable=generate +org.eclipse.jdt.core.compiler.debug.sourceFile=generate +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error org.eclipse.jdt.core.compiler.problem.enumIdentifier=error org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning -org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5 -eclipse.preferences.version=1 org.eclipse.jdt.core.compiler.source=1.5 -org.eclipse.jdt.core.compiler.problem.assertIdentifier=error -org.eclipse.jdt.core.compiler.compliance=1.5 diff --git a/spss/server/serverws/.settings/org.eclipse.wst.common.component b/spss/server/serverws/.settings/org.eclipse.wst.common.component index b8a1c3877..c325a5007 100644 --- a/spss/server/serverws/.settings/org.eclipse.wst.common.component +++ b/spss/server/serverws/.settings/org.eclipse.wst.common.component @@ -1,14 +1,14 @@ - - + - - + uses - + uses - + + + diff --git a/spss/server/serverws/.settings/org.eclipse.wst.common.project.facet.core.xml b/spss/server/serverws/.settings/org.eclipse.wst.common.project.facet.core.xml index 564572b10..ac59587b0 100644 --- a/spss/server/serverws/.settings/org.eclipse.wst.common.project.facet.core.xml +++ b/spss/server/serverws/.settings/org.eclipse.wst.common.project.facet.core.xml @@ -2,6 +2,6 @@ - - \ No newline at end of file + + diff --git a/spss/server/tools/.project b/spss/server/tools/.project index ca7797d46..21f65b370 100644 --- a/spss/server/tools/.project +++ b/spss/server/tools/.project @@ -10,15 +10,15 @@ org.eclipse.jdt.core.javabuilder - - org.eclipse.m2e.core.maven2Builder - org.eclipse.wst.validation.validationbuilder org.maven.ide.eclipse.maven2Builder + + org.eclipse.m2e.core.maven2Builder + org.eclipse.m2e.core.maven2Nature -- cgit v1.2.3 From dcaa12f3f801363bf6034a48b80fab60cfe9a39f Mon Sep 17 00:00:00 2001 From: Klaus Stranacher Date: Tue, 23 Apr 2013 12:07:03 +0200 Subject: Update textkeys and testcertificates Update signature algorithm selection Update repository Updates documentation --- spss/assembly.xml | 18 +++++ spss/handbook/clients/api/pom.xml | 6 +- spss/handbook/clients/webservice/.classpath | 64 +++++++---------- spss/handbook/clients/webservice/.project | 74 +++++++++++--------- spss/handbook/clients/webservice/pom.xml | 7 +- .../resources/sslKeys/customer1/moa-ssl-kunde1.cer | Bin 0 -> 1075 bytes .../resources/sslKeys/customer1/moa-ssl-kunde1.der | Bin 882 -> 0 bytes .../customer1/moa-ssl-kunde1[pwd=kunde1].p12 | Bin 3926 -> 4126 bytes .../customer1/trustedServers[pwd=servers].keystore | Bin 943 -> 1185 bytes .../resources/sslKeys/customer2/moa-ssl-kunde2.cer | Bin 0 -> 1075 bytes .../resources/sslKeys/customer2/moa-ssl-kunde2.der | Bin 882 -> 0 bytes .../customer2/moa-ssl-kunde2[pwd=kunde2].p12 | Bin 3926 -> 4126 bytes .../customer2/trustedServers[pwd=servers].keystore | Bin 943 -> 1185 bytes .../resources/sslKeys/server/localhost.cer | Bin 0 -> 1091 bytes .../sslKeys/server/tomcat[pwd=server].keystore | Bin 0 -> 2473 bytes .../server/trustedClients[pwd=clients].keystore | Bin 0 -> 2318 bytes .../moa/spss/handbook/clients/webservice/HTTP.java | 1 + .../keys/common/moa-signaturdienst-allekunden.cer | Bin 0 -> 1071 bytes .../keys/common/moa-signaturdienst-allekunden.der | Bin 1074 -> 0 bytes ...a-signaturdienst-allekunden[pwd=allekunden].p12 | Bin 3901 -> 2995 bytes .../keys/customer1/moa-signaturdienst-kunde1.cer | Bin 0 -> 1067 bytes .../keys/customer1/moa-signaturdienst-kunde1.der | Bin 1106 -> 0 bytes .../moa-signaturdienst-kunde1[pwd=kunde1].p12 | Bin 4877 -> 4150 bytes .../keys/customer2/moa-signaturdienst-kunde2.cer | Bin 0 -> 1067 bytes .../keys/customer2/moa-signaturdienst-kunde2.der | Bin 1254 -> 0 bytes .../moa-signaturdienst-kunde2[pwd=kunde2].p12 | Bin 4133 -> 4303 bytes spss/handbook/handbook/config/config.html | 21 ++++-- spss/handbook/handbook/install/install.html | 37 +++++++--- spss/handbook/handbook/intro/intro.html | 5 +- spss/handbook/handbook/usage/usage.html | 9 ++- .../.settings/org.eclipse.wst.common.component | 2 + spss/server/serverlib/pom.xml | 6 +- .../server/config/ConfigurationPartsBuilder.java | 26 +++++-- .../spss/server/config/ConfigurationProvider.java | 11 +++ .../xmlsign/XMLSignatureCreationProfileImpl.java | 77 ++++++++------------- .../server/invoke/XMLSignatureCreationInvoker.java | 33 ++++++--- 36 files changed, 234 insertions(+), 163 deletions(-) create mode 100644 spss/handbook/clients/webservice/resources/sslKeys/customer1/moa-ssl-kunde1.cer delete mode 100644 spss/handbook/clients/webservice/resources/sslKeys/customer1/moa-ssl-kunde1.der create mode 100644 spss/handbook/clients/webservice/resources/sslKeys/customer2/moa-ssl-kunde2.cer delete mode 100644 spss/handbook/clients/webservice/resources/sslKeys/customer2/moa-ssl-kunde2.der create mode 100644 spss/handbook/clients/webservice/resources/sslKeys/server/localhost.cer create mode 100644 spss/handbook/clients/webservice/resources/sslKeys/server/tomcat[pwd=server].keystore create mode 100644 spss/handbook/clients/webservice/resources/sslKeys/server/trustedClients[pwd=clients].keystore create mode 100644 spss/handbook/conf/moa-spss/keys/common/moa-signaturdienst-allekunden.cer delete mode 100644 spss/handbook/conf/moa-spss/keys/common/moa-signaturdienst-allekunden.der create mode 100644 spss/handbook/conf/moa-spss/keys/customer1/moa-signaturdienst-kunde1.cer delete mode 100644 spss/handbook/conf/moa-spss/keys/customer1/moa-signaturdienst-kunde1.der create mode 100644 spss/handbook/conf/moa-spss/keys/customer2/moa-signaturdienst-kunde2.cer delete mode 100644 spss/handbook/conf/moa-spss/keys/customer2/moa-signaturdienst-kunde2.der (limited to 'spss') diff --git a/spss/assembly.xml b/spss/assembly.xml index 8adeef5d9..1c560fe5d 100644 --- a/spss/assembly.xml +++ b/spss/assembly.xml @@ -39,6 +39,24 @@ ${artifactId}.${extension} + + + javax.servlet:servlet-api + javax.activation:activation + axis:axis + org.apache.axis:axis-jaxrpc + org.apache.axis:axis-saaj + axis:axis-wsdl4j + commons-discovery:commons-discovery + commons-logging:commons-logging + javax.mail:mail + xalan-bin-dist:serializer + xerces:xercesImpl + + /doc/clients/webservice/lib + + ${artifactId}-${version}.${extension} + moa-spss.${extension} false diff --git a/spss/handbook/clients/api/pom.xml b/spss/handbook/clients/api/pom.xml index 6a38fbb2d..5a978964b 100644 --- a/spss/handbook/clients/api/pom.xml +++ b/spss/handbook/clients/api/pom.xml @@ -22,11 +22,11 @@ axis - axis + org.apache.axis axis-jaxrpc - axis + org.apache.axis axis-saaj @@ -64,7 +64,7 @@ javax.servlet servlet-api - provided + xalan-bin-dist diff --git a/spss/handbook/clients/webservice/.classpath b/spss/handbook/clients/webservice/.classpath index cb29bfb96..d687b9b02 100644 --- a/spss/handbook/clients/webservice/.classpath +++ b/spss/handbook/clients/webservice/.classpath @@ -1,41 +1,27 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/spss/handbook/clients/webservice/.project b/spss/handbook/clients/webservice/.project index d23223048..cddae3823 100644 --- a/spss/handbook/clients/webservice/.project +++ b/spss/handbook/clients/webservice/.project @@ -1,34 +1,44 @@ - moa-spss-handbook-webserviceClient - NO_M2ECLIPSE_SUPPORT: Project files created with the maven-eclipse-plugin are not supported in M2Eclipse. - - moa-common - moa-spss-lib - - - - org.eclipse.jdt.core.javabuilder - - - org.eclipse.wst.common.project.facet.core.builder - - - org.eclipse.wst.validation.validationbuilder - - - org.maven.ide.eclipse.maven2Builder - - - org.eclipse.m2e.core.maven2Builder - - - - org.eclipse.m2e.core.maven2Nature - org.maven.ide.eclipse.maven2Nature - org.eclipse.wst.common.project.facet.core.nature - org.eclipse.jdt.core.javanature - org.eclipse.wst.common.modulecore.ModuleCoreNature - org.eclipse.jem.workbench.JavaEMFNature - - \ No newline at end of file + moa-spss-handbook-webserviceClient + NO_M2ECLIPSE_SUPPORT: Project files created with the maven-eclipse-plugin are not supported in M2Eclipse. + + moa-common + moa-spss-lib + + + + org.eclipse.jdt.core.javabuilder + + + + + org.eclipse.wst.common.project.facet.core.builder + + + + + org.eclipse.wst.validation.validationbuilder + + + + + org.maven.ide.eclipse.maven2Builder + + + + + org.eclipse.m2e.core.maven2Builder + + + + + + org.eclipse.m2e.core.maven2Nature + org.maven.ide.eclipse.maven2Nature + org.eclipse.wst.common.project.facet.core.nature + org.eclipse.jdt.core.javanature + org.eclipse.wst.common.modulecore.ModuleCoreNature + org.eclipse.jem.workbench.JavaEMFNature + + diff --git a/spss/handbook/clients/webservice/pom.xml b/spss/handbook/clients/webservice/pom.xml index 70aefa4bc..4221e6cc1 100644 --- a/spss/handbook/clients/webservice/pom.xml +++ b/spss/handbook/clients/webservice/pom.xml @@ -22,11 +22,11 @@ axis - axis + org.apache.axis axis-jaxrpc - axis + org.apache.axis axis-saaj @@ -61,10 +61,9 @@ postgresql postgresql - + javax.servlet servlet-api - provided xalan-bin-dist diff --git a/spss/handbook/clients/webservice/resources/sslKeys/customer1/moa-ssl-kunde1.cer b/spss/handbook/clients/webservice/resources/sslKeys/customer1/moa-ssl-kunde1.cer new file mode 100644 index 000000000..dc8a6921f Binary files /dev/null and b/spss/handbook/clients/webservice/resources/sslKeys/customer1/moa-ssl-kunde1.cer differ diff --git a/spss/handbook/clients/webservice/resources/sslKeys/customer1/moa-ssl-kunde1.der b/spss/handbook/clients/webservice/resources/sslKeys/customer1/moa-ssl-kunde1.der deleted file mode 100644 index b6091332c..000000000 Binary files a/spss/handbook/clients/webservice/resources/sslKeys/customer1/moa-ssl-kunde1.der and /dev/null differ diff --git a/spss/handbook/clients/webservice/resources/sslKeys/customer1/moa-ssl-kunde1[pwd=kunde1].p12 b/spss/handbook/clients/webservice/resources/sslKeys/customer1/moa-ssl-kunde1[pwd=kunde1].p12 index 33f76bf9c..ea67e4ae0 100644 Binary files a/spss/handbook/clients/webservice/resources/sslKeys/customer1/moa-ssl-kunde1[pwd=kunde1].p12 and b/spss/handbook/clients/webservice/resources/sslKeys/customer1/moa-ssl-kunde1[pwd=kunde1].p12 differ diff --git a/spss/handbook/clients/webservice/resources/sslKeys/customer1/trustedServers[pwd=servers].keystore b/spss/handbook/clients/webservice/resources/sslKeys/customer1/trustedServers[pwd=servers].keystore index 9c6c55359..db78c54ab 100644 Binary files a/spss/handbook/clients/webservice/resources/sslKeys/customer1/trustedServers[pwd=servers].keystore and b/spss/handbook/clients/webservice/resources/sslKeys/customer1/trustedServers[pwd=servers].keystore differ diff --git a/spss/handbook/clients/webservice/resources/sslKeys/customer2/moa-ssl-kunde2.cer b/spss/handbook/clients/webservice/resources/sslKeys/customer2/moa-ssl-kunde2.cer new file mode 100644 index 000000000..63f5dc755 Binary files /dev/null and b/spss/handbook/clients/webservice/resources/sslKeys/customer2/moa-ssl-kunde2.cer differ diff --git a/spss/handbook/clients/webservice/resources/sslKeys/customer2/moa-ssl-kunde2.der b/spss/handbook/clients/webservice/resources/sslKeys/customer2/moa-ssl-kunde2.der deleted file mode 100644 index 20bc38e14..000000000 Binary files a/spss/handbook/clients/webservice/resources/sslKeys/customer2/moa-ssl-kunde2.der and /dev/null differ diff --git a/spss/handbook/clients/webservice/resources/sslKeys/customer2/moa-ssl-kunde2[pwd=kunde2].p12 b/spss/handbook/clients/webservice/resources/sslKeys/customer2/moa-ssl-kunde2[pwd=kunde2].p12 index ec7bf8e48..db7072544 100644 Binary files a/spss/handbook/clients/webservice/resources/sslKeys/customer2/moa-ssl-kunde2[pwd=kunde2].p12 and b/spss/handbook/clients/webservice/resources/sslKeys/customer2/moa-ssl-kunde2[pwd=kunde2].p12 differ diff --git a/spss/handbook/clients/webservice/resources/sslKeys/customer2/trustedServers[pwd=servers].keystore b/spss/handbook/clients/webservice/resources/sslKeys/customer2/trustedServers[pwd=servers].keystore index d32a22f0f..cbf43b046 100644 Binary files a/spss/handbook/clients/webservice/resources/sslKeys/customer2/trustedServers[pwd=servers].keystore and b/spss/handbook/clients/webservice/resources/sslKeys/customer2/trustedServers[pwd=servers].keystore differ diff --git a/spss/handbook/clients/webservice/resources/sslKeys/server/localhost.cer b/spss/handbook/clients/webservice/resources/sslKeys/server/localhost.cer new file mode 100644 index 000000000..7bee8af02 Binary files /dev/null and b/spss/handbook/clients/webservice/resources/sslKeys/server/localhost.cer differ diff --git a/spss/handbook/clients/webservice/resources/sslKeys/server/tomcat[pwd=server].keystore b/spss/handbook/clients/webservice/resources/sslKeys/server/tomcat[pwd=server].keystore new file mode 100644 index 000000000..a24520345 Binary files /dev/null and b/spss/handbook/clients/webservice/resources/sslKeys/server/tomcat[pwd=server].keystore differ diff --git a/spss/handbook/clients/webservice/resources/sslKeys/server/trustedClients[pwd=clients].keystore b/spss/handbook/clients/webservice/resources/sslKeys/server/trustedClients[pwd=clients].keystore new file mode 100644 index 000000000..44a40723b Binary files /dev/null and b/spss/handbook/clients/webservice/resources/sslKeys/server/trustedClients[pwd=clients].keystore differ diff --git a/spss/handbook/clients/webservice/src/main/java/at/gv/egovernment/moa/spss/handbook/clients/webservice/HTTP.java b/spss/handbook/clients/webservice/src/main/java/at/gv/egovernment/moa/spss/handbook/clients/webservice/HTTP.java index 518017fd2..ffea02533 100644 --- a/spss/handbook/clients/webservice/src/main/java/at/gv/egovernment/moa/spss/handbook/clients/webservice/HTTP.java +++ b/spss/handbook/clients/webservice/src/main/java/at/gv/egovernment/moa/spss/handbook/clients/webservice/HTTP.java @@ -1,5 +1,6 @@ /* * 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. * diff --git a/spss/handbook/conf/moa-spss/keys/common/moa-signaturdienst-allekunden.cer b/spss/handbook/conf/moa-spss/keys/common/moa-signaturdienst-allekunden.cer new file mode 100644 index 000000000..ad989001a Binary files /dev/null and b/spss/handbook/conf/moa-spss/keys/common/moa-signaturdienst-allekunden.cer differ diff --git a/spss/handbook/conf/moa-spss/keys/common/moa-signaturdienst-allekunden.der b/spss/handbook/conf/moa-spss/keys/common/moa-signaturdienst-allekunden.der deleted file mode 100644 index a4a327a3a..000000000 Binary files a/spss/handbook/conf/moa-spss/keys/common/moa-signaturdienst-allekunden.der and /dev/null differ diff --git a/spss/handbook/conf/moa-spss/keys/common/moa-signaturdienst-allekunden[pwd=allekunden].p12 b/spss/handbook/conf/moa-spss/keys/common/moa-signaturdienst-allekunden[pwd=allekunden].p12 index fe837fd6e..9c6669eba 100644 Binary files a/spss/handbook/conf/moa-spss/keys/common/moa-signaturdienst-allekunden[pwd=allekunden].p12 and b/spss/handbook/conf/moa-spss/keys/common/moa-signaturdienst-allekunden[pwd=allekunden].p12 differ diff --git a/spss/handbook/conf/moa-spss/keys/customer1/moa-signaturdienst-kunde1.cer b/spss/handbook/conf/moa-spss/keys/customer1/moa-signaturdienst-kunde1.cer new file mode 100644 index 000000000..65e33329e Binary files /dev/null and b/spss/handbook/conf/moa-spss/keys/customer1/moa-signaturdienst-kunde1.cer differ diff --git a/spss/handbook/conf/moa-spss/keys/customer1/moa-signaturdienst-kunde1.der b/spss/handbook/conf/moa-spss/keys/customer1/moa-signaturdienst-kunde1.der deleted file mode 100644 index 505e7dd05..000000000 Binary files a/spss/handbook/conf/moa-spss/keys/customer1/moa-signaturdienst-kunde1.der and /dev/null differ diff --git a/spss/handbook/conf/moa-spss/keys/customer1/moa-signaturdienst-kunde1[pwd=kunde1].p12 b/spss/handbook/conf/moa-spss/keys/customer1/moa-signaturdienst-kunde1[pwd=kunde1].p12 index a8073b02b..29585f1ce 100644 Binary files a/spss/handbook/conf/moa-spss/keys/customer1/moa-signaturdienst-kunde1[pwd=kunde1].p12 and b/spss/handbook/conf/moa-spss/keys/customer1/moa-signaturdienst-kunde1[pwd=kunde1].p12 differ diff --git a/spss/handbook/conf/moa-spss/keys/customer2/moa-signaturdienst-kunde2.cer b/spss/handbook/conf/moa-spss/keys/customer2/moa-signaturdienst-kunde2.cer new file mode 100644 index 000000000..a3ebd91f7 Binary files /dev/null and b/spss/handbook/conf/moa-spss/keys/customer2/moa-signaturdienst-kunde2.cer differ diff --git a/spss/handbook/conf/moa-spss/keys/customer2/moa-signaturdienst-kunde2.der b/spss/handbook/conf/moa-spss/keys/customer2/moa-signaturdienst-kunde2.der deleted file mode 100644 index 3c21c9b2b..000000000 Binary files a/spss/handbook/conf/moa-spss/keys/customer2/moa-signaturdienst-kunde2.der and /dev/null differ diff --git a/spss/handbook/conf/moa-spss/keys/customer2/moa-signaturdienst-kunde2[pwd=kunde2].p12 b/spss/handbook/conf/moa-spss/keys/customer2/moa-signaturdienst-kunde2[pwd=kunde2].p12 index dce18ac78..cc28f167d 100644 Binary files a/spss/handbook/conf/moa-spss/keys/customer2/moa-signaturdienst-kunde2[pwd=kunde2].p12 and b/spss/handbook/conf/moa-spss/keys/customer2/moa-signaturdienst-kunde2[pwd=kunde2].p12 differ diff --git a/spss/handbook/handbook/config/config.html b/spss/handbook/handbook/config/config.html index 5561a3696..2421deb1b 100644 --- a/spss/handbook/handbook/config/config.html +++ b/spss/handbook/handbook/config/config.html @@ -115,6 +115,7 @@

1.1.1 Namenskonventionen

Folgende Namenraum-Präfixe werden in diesem Handbuch zur Kennzeichnung der Namenräume von XML-Elementen verwendet:

+

TODO Weitere Namespaces? Aktuell?

@@ -213,6 +214,7 @@
Präfix

2.1.2 Auflösen externer URIs

+

TODO Update Whitelisting

@@ -325,7 +327,8 @@ - - +

TODO Default-wert wenn XAdES 1.4.2?

+
http://www.w3.org/2000/09/xmldsig#sha1

Für die genaue Bedeutung der Werte siehe die Spezifikation für XML-Signaturen.

Name
Erläuterung

Mit diesem Element wird in MOA SS eine Schlüsselgruppe definiert. Eine Schlüsselgruppe +

TODO Update DigestMethod

+

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 2.2.1.1 bzw. 2.2.1.2) verwaltet werden. Die Schlüsselgruppe wird vom Kunden von MOA SS über einen eindeutigen Bezeichner @@ -334,7 +337,7 @@ 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.

+ referenzieren) lässt sich der Durchsatz der erstellten Signaturen verbessern.

Das Element cfg:SignatureCreation/cfg:KeyGroup hat folgenden Element-Inhalt:

  • Element cfg:Id: Dieses obligatorische Element vom Typ xs:token enthält @@ -481,13 +484,15 @@ IssuerDN (RFC2253) :
Erläuterung

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 dsig:Signature/dsig:SignedInfo/dsig:Reference/dsig:DigestMethod aufscheint, spezifiziert werden. Folgende Werte dürfen verwendet werden:

+

TODO Update Beschreibung hinsichtlich XAdES 1.4.2

+

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 dsig:Signature/dsig:SignedInfo/dsig:Reference/dsig:DigestMethod aufscheint, spezifiziert werden. Folgende Werte dürfen verwendet werden:

-

http://www.w3.org/2000/09/xmldsig#sha1
+      
http://www.w3.org/2000/09/xmldsig#sha1
 

Wird das Element nicht angegeben, wird folgender Wert als Default-Wert verwendet:

-
http://www.w3.org/2000/09/xmldsig#sha1

Für die genaue Bedeutung der Werte siehe die Spezifikation für XML-Signaturen.

2.2.5 Profil für Transformationen

@@ -561,8 +566,9 @@ IssuerDN (RFC2253) : +

TODO XAdES 1.4.2 Möglichkeit

2.3 - Parameter für MOA SP

+Parameter für MOA SP

2.3.1 Zertifikatsvalidierung

2.3.1.1 @@ -1124,7 +1130,8 @@ Wird der Wert auf -1 gesetzt, dann bedeutet das ein unendlich langes Intervall.

3 Beispielkonfigurationen

-

3.1 Minimale Konfiguration für MOA SS

+

TODO Update Konfigurations (Simple, Expert)

+

3.1 Minimale Konfiguration für MOA SS

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 cfg:MOAConfiguration folgende Konfigurationselemente enthalten:

diff --git a/spss/handbook/handbook/install/install.html b/spss/handbook/handbook/install/install.html index 7abb103bd..5de55163f 100644 --- a/spss/handbook/handbook/install/install.html +++ b/spss/handbook/handbook/install/install.html @@ -113,36 +113,43 @@

2.1.1 Einführung

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 Erweiterungsmöglichkeiten.

Folgende Software ist Voraussetzung für die Basisinstallation des Webservices:

+

TODO: Update Versions

+

TODO Empfohlene Versionen?

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.

-

2.1.2 Installation

+

2.1.2 Installation

2.1.2.1 Vorbereitung

Die folgenden Schritte dienen der Vorbereitung der Installation.

Installation von J2SE SDK
+
TODO Update Versions
Installieren Sie J2SE 1.4.x SDK oder J2SE 5.0 SDK in ein beliebiges Verzeichnis. Wir empfehlen die Installation von J2SE 5.0 SDK. Das Wurzelverzeichnis der J2SE SDK Installation wird im weiteren Verlauf als $JAVA_HOME bezeichnet.
Installation von Apache Tomcat 4.1
+
TODO Update Versions
Installieren Sie Apache Tomcat 4.1.18 oder höher in ein Verzeichnis, das keine Leerzeichen im Pfadnamen enthält. Wir empfehlen die Installation von Apache Tomcat 4.1.31. Verwenden Sie bitte die zu Ihrem J2SE SDK passende Distribution von Tomcat. Das Wurzelverzeichnis der Tomcat-Installation wird im weiteren Verlauf als $CATALINA_HOME bezeichnet.
Entpacken der MOA SP/SS Webservice Distribution
+
TODO Update Versions
Entpacken Sie die Datei moa-spss-1.5.1.zip in ein beliebiges Verzeichnis. Dieses Verzeichnis wird im weiteren Verlauf als $MOA_SPSS_INST bezeichnet.
Installation der Krypographiebibliotheken von SIC/IAIK

Die Installation der Kryptographiebibliotheken von SIC/IAIK:

J2SE 1.4.2 SDK oder JSE 5.0 SDK
+
TODO Update Versions
Kopieren Sie alle Dateien aus dem Verzeichnis $MOA_SPSS_INST/ext in das Verzeichnis $JAVA_HOME/jre/lib/ext. Zusätzlich müssen Sie die Rechtedateien Ihres J2SE 1.4.x SDK bzw. J2SE 5.0 SDK austauschen. Laden Sie dazu die Unlimited Strength - - - Jurisdiction Policy Files von der J2SE 1.4.x SDK Downloadseite bzw. J2SE 5.0 SDK Downloadseite und folgen Sie der darin enthaltenen Installationsanweisung.
+ + + Jurisdiction Policy Files von der J2SE 1.4.x SDK Downloadseite bzw. J2SE 5.0 SDK Downloadseite und folgen Sie der darin enthaltenen Installationsanweisung.
-

2.1.2.2 Konfiguration von Apache Tomcat

-

Die zentrale Konfigurations-Datei von Tomcat ist $CATALINA_HOME/conf/server.xml. Tomcat wird grundsätzlich mit einer funktionierenden Default-Konfiguration ausgeliefert, die jedoch einiges an Ballast enthält und viele Ports offen lässt.

-
2.1.2.2.1 Konfiguration des HTTP Connectors
+

2.1.2.2 Konfiguration von Apache Tomcat

+

TODO Update Beispiel server.xml für empfohlenen Tomcat-Version

+

Die zentrale Konfigurations-Datei von Tomcat ist $CATALINA_HOME/conf/server.xml. Tomcat wird grundsätzlich mit einer funktionierenden Default-Konfiguration ausgeliefert, die jedoch einiges an Ballast enthält und viele Ports offen lässt.

+
2.1.2.2.1 Konfiguration des HTTP Connectors

Die Datei $MOA_SPSS_INST/tomcat/server.xml enthält eine minimale Tomcat-Konfiguration, die ausschließlich den Connector für HTTP auf Port 8080 freischaltet. Durch kopieren dieser Datei nach $CATALINA_HOME/conf/server.xml kann Tomcat mit dieser Konfiguration gestartet werden. Wir empfehlen diese Konfiguration nur für Fälle, in denen das MOA SP/SS Webservice in einer abgeschlossenen Netzwerkumgebung betrieben wird.

2.1.2.2.2 Konfiguration des HTTPS Connectors

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:

@@ -171,7 +178,8 @@
  • Die Datei $MOA_SPSS_INST/moa-spss.war enthält das einsatzfertige MOA SP/SS Webarchiv und muss ins Verzeichnis $CATALINA_HOME/webapps kopiert werden. Dort wird sie beim ersten Start von Tomcat automatisch ins Verzeichnis $CATALINA_HOME/webapps/moa-spss entpackt.
  • 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. $CATALINA_HOME/conf/moa-spss). Eine funktionsfähige Konfiguration, die als Ausgangspunkt für die Konfiguration des MOA SP/SS Webservices dienen kann, finden Sie hier.
  • -
  • Wird Tomcat unter J2SE 1.4.x SDK oder höher betrieben, müssen die Dateien xalan.jar, xercesImpl.jar, serializer.jar und xml-apis.jar aus dem Verzeichnis $MOA_SPSS_INST/endorsed in das Tomcat-Verzeichnis $CATALINA_HOME/common/endorsed kopiert werden. Sind gleichnamige Dateien dort bereits vorhanden, müssen sie überschrieben werden. Die ggf. in diesem Verzeichnis vorhandene Datei xmlParserAPIs.jar muss gelöscht werden.
  • +
  • TODO Update Versions
    + Wird Tomcat unter J2SE 1.4.x SDK oder höher betrieben, müssen die Dateien xalan.jar, xercesImpl.jar, serializer.jar und xml-apis.jar aus dem Verzeichnis $MOA_SPSS_INST/endorsed in das Tomcat-Verzeichnis $CATALINA_HOME/common/endorsed kopiert werden. Sind gleichnamige Dateien dort bereits vorhanden, müssen sie überschrieben werden. Die ggf. in diesem Verzeichnis vorhandene Datei xmlParserAPIs.jar muss gelöscht werden.
  • Folgende System Properties können gesetzt werden (wird beim Starten von Tomcat der Java Virtual Machine in der Umgebungsvariablen CATALINA_OPTS in der Form -D<name>=<wert> übergeben):
    • moa.spss.server.configuration: Pfad und Name der zentralen Konfigurationsdatei für MOA SP/SS. Eine beispielhafte Konfigurationsdatei finden Sie hier. Wird ein relativer Pfad angegeben, wird dieser relativ zum Startverzeichnis der Java Virtual Machine interpretiert. Ist diese System Property nicht gesetzt, wird automatisch eine im Webarchiv unter WEB-INF/conf enthaltene Default-Konfiguration herangezogen.
    • @@ -297,7 +305,8 @@ INFO | 01 21:25:26,540 | Thread-3 | TID=1049225059594-100 NID=<null>

      2.2 Erweiterungsmöglichkeiten

      Ausgehend von der Basisinstallation können die optionalen Erweiterungen, die in den nachfolgenden Abschnitten beschrieben werden, unabhängig und in beliebiger Kombination aufgesetzt werden.

      -

      2.2.1 Vorgeschalteter Webserver

      +

      TODO Update Versions?

      +

      2.2.1 Vorgeschalteter Webserver

      2.2.1.1 Microsoft Internet Information Server (MS IIS)

      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 Jakarta mod_jk durchgeführt. Die angeführten Konfigurationsschritte gehen von einer MS IIS Standard-Installation aus.

      2.2.1.1.1 Konfiguration von Jakarta mod_jk im MS IIS
      @@ -371,6 +380,7 @@ INFO | 01 21:25:26,540 | Thread-3 | TID=1049225059594-100 NID=<null>

      3.1.1 Einführung

      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.

      Folgende Software ist Voraussetzung für die Basisinstallation der Klassenbibliothek:

      +

      TODO Update Versions

      @@ -378,21 +388,25 @@ INFO | 01 21:25:26,540 | Thread-3 | TID=1049225059594-100 NID=<null>

      Die folgenden Schritte dienen der Vorbereitung der Installation.

      Installation von J2SE SDK
      +
      TODO Update Versions
      Installieren Sie J2SE 1.4.x SDK oder J2SE 5.0 SDK in ein beliebiges Verzeichnis. Wir empfehlen die Installation von J2SE 5.0 SDK. Das Wurzelverzeichnis der J2SE SDK Installation wird im weiteren Verlauf als $JAVA_HOME bezeichnet.
      Entpacken der MOA SP/SS Klassenbibliotheks-Distribution
      +
      TODO Update Versions
      Entpacken Sie die Datei moa-spss-1.5.1-lib.zip in ein beliebiges Verzeichnis. Dieses Verzeichnis wird im weiteren Verlauf als $MOA_SPSS_INST bezeichnet.
      Installation der Krypographiebibliotheken von SIC/IAIK

      Die Installation der Kryptographiebibliotheken von SIC/IAIK:

      J2SE 1.4.x SDK oder JSE 5.0 SDK
      +
      TODO Update Versions
      Kopieren Sie alle Dateien aus dem Verzeichnis $MOA_SPSS_INST/ext in das Verzeichnis $JAVA_HOME/jre/lib/ext. Zusätzlich müssen Sie die Rechtedateien Ihres J2SE 1.4.x SDK bzw. J2SE 5.0 SDK austauschen. Laden Sie dazu die Unlimited Strength Jurisdiction Policy Files von der J2SE 1.4.x SDK Downloadseite bzw. J2SE 5.0 SDK Downloadseite und folgen Sie der darin enthaltenen Installationsanweisung.
      -

      3.1.3 Verwendung

      +

      3.1.3 Verwendung

      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.

      Die nachfolgende Tabelle listet diese Klassenbibliotheken auf; die Einträge in der Spalte Dateien sind relativ zum Verzeichnis $MOA_SPSS_INST zu interpretieren.

      +

      TODO Update Versions

      @@ -463,6 +477,7 @@ INFO | 01 21:25:26,540 | Thread-3 | TID=1049225059594-100 NID=<null>

      Die im Abschnitt 2.2 angeführten Erweiterungsmöglichkeiten für die MOA SP/SS Webservices gelten in analoger Weise auch für die Klassenbibliothek.

      A Referenzierte Software

      Auf folgende Software-Pakete wird in diesem Handbuch verwiesen:

      +

      TODO Update Versions

      KlassenbibliothekVersionDateien
      diff --git a/spss/handbook/handbook/intro/intro.html b/spss/handbook/handbook/intro/intro.html index baa240263..a01a825b2 100644 --- a/spss/handbook/handbook/intro/intro.html +++ b/spss/handbook/handbook/intro/intro.html @@ -31,8 +31,9 @@

      1 Allgemeines

      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.

      -

      Die Funktionalität und der Aufbau der Schnittstelle zu den beiden Modulen ist in der Spezifikation MOA SP/SS (V1.3) detailliert beschrieben. Da diese Spezifikation auf der Schnittstellenspezifikation des Security-Layers (V 1.1) aufbaut, ist deren Kenntnis zum Verstehen der Schnittstellen zu SS und SP erforderlich.

      -

      2 Modul Serversignatur (SS)

      +

      TODO: CAdES auf SL1.2x aufbauend - wie siehts mir Rest aus?

      +

      Die Funktionalität und der Aufbau der Schnittstelle zu den beiden Modulen ist in der Spezifikation MOA SP/SS (V1.3) detailliert beschrieben. Da diese Spezifikation auf der Schnittstellenspezifikation des Security-Layers (V 1.1) aufbaut, ist deren Kenntnis zum Verstehen der Schnittstellen zu SS und SP erforderlich.

      +

      2 Modul Serversignatur (SS)

      Das Modul Serversignatur (SS) dient zum Erstellen von XML-Signaturen in Anlehnung an die Schnittstellenspezifikation des Security-Layers (V 1.1). 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.

      Der Zugriff auf einzelne Signaturschlüssel in MOA SS kann basierend auf dem für TLS-Client-Authentisierung verwendeten Zertifikat eingeschränkt werden.

      Anwendungen können das Modul entweder als Web-Service oder über ein Java-API ansprechen.

      diff --git a/spss/handbook/handbook/usage/usage.html b/spss/handbook/handbook/usage/usage.html index 8d2f002e6..1ac817a45 100644 --- a/spss/handbook/handbook/usage/usage.html +++ b/spss/handbook/handbook/usage/usage.html @@ -79,7 +79,9 @@

      2.1 XML-Requests

      Dieser Abschnitt stellt typische XML-Requests für die Erstellung einer XML-Signatur mittels SS bzw. zur Prüfung einer CMS- bzw. XML-Signatur mittels SP vor. Zu jedem Request wird jeweils auch eine typische Response des Services besprochen.

      Bitte beachten Sie: Einige der vorgestellten Requests referenzieren beispielhafte Daten auf localhost, z.B. http://localhost:8080/referencedData/Text.txt. 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 localhost:8080 betreiben, ist es ausreichend, wenn sie die diesem Handbuch beiliegende Webapplikation referencedData.war in das Verzeichnis webapps Ihrer Tomcat-Installation kopieren. Ansonsten müssen Sie zusätzlich die URLs in den Requests anpassen.

      -

      2.1.1 Erstellung einer XML-Signatur

      +

       

      +

      TODO Erstellung einer CMS/CAdES Signatur

      +

      2.1.1 Erstellung einer XML-Signatur

      2.1.1.1 Einfaches Beispiel

      Request

      CreateXMLSignatureRequest.Simple.xml ist ein einfacher XML-Request zur Erzeugung einer XML-Signatur. Sein Aufbau wird nachfolgend analysiert:

      @@ -1121,6 +1123,8 @@ Ich habe weiters ein eigenens ID-Attribut bekommen.</doc:Paragraph> </VerifyXMLSignatureResponse>

      Das Element CertificateCheck enthält das Resultat der Zertifikatsprüfung (siehe Einfaches Beispiel).

      +

       

      +

      TODO Beispiel-Request mit TSL-Prüfung

      2.2 Webservice-Clients

      Abschnitt 2.1 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.

      2.2.1 Übersicht

      @@ -1135,6 +1139,8 @@ Ich habe weiters ein eigenens ID-Attribut bekommen.</doc:Paragraph>

      2.2.2 Gemeinsamkeiten

      Dieser Abschnitt beschreibt die Gemeinsamkeiten aller drei Varianten des Webservice-Clients.

      Zunächst einmal benötigen alle drei Varianten die folgenden Java-Bibliotheken, die im Ordner clients/webservice/lib/ dieses Handbuchs bereits enthalten sind:

      +

      TODO Update Versions

      +

      TODO kein lib Verzeichnis

      Name
      @@ -1199,6 +1205,7 @@ Ich habe weiters ein eigenens ID-Attribut bekommen.</doc:Paragraph>

      A Referenzierte Software

      Auf folgende Software-Pakete wird in diesem Handbuch verwiesen:

      +

      TODO Update Versions

      diff --git a/spss/server/serverlib/.settings/org.eclipse.wst.common.component b/spss/server/serverlib/.settings/org.eclipse.wst.common.component index ee24ef8ba..fe4fd3290 100644 --- a/spss/server/serverlib/.settings/org.eclipse.wst.common.component +++ b/spss/server/serverlib/.settings/org.eclipse.wst.common.component @@ -2,5 +2,7 @@ + + diff --git a/spss/server/serverlib/pom.xml b/spss/server/serverlib/pom.xml index d425edb83..2a6fd382f 100644 --- a/spss/server/serverlib/pom.xml +++ b/spss/server/serverlib/pom.xml @@ -22,11 +22,11 @@ axis - axis + org.apache.axis axis-jaxrpc - axis + org.apache.axis axis-saaj @@ -64,7 +64,7 @@ javax.servlet servlet-api - provided + compile xalan-bin-dist diff --git a/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/server/config/ConfigurationPartsBuilder.java b/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/server/config/ConfigurationPartsBuilder.java index e335139aa..bc53ca4f9 100644 --- a/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/server/config/ConfigurationPartsBuilder.java +++ b/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/server/config/ConfigurationPartsBuilder.java @@ -284,8 +284,11 @@ public class ConfigurationPartsBuilder { new HashSet(Arrays.asList(ACCEPTED_DIGEST_ALGORITHMS_ARRAY)); - /** Default digest algorithm URI, if none/illegal has been configured */ - private static final String DIGEST_ALGORITHM_DEFAULT = Constants.SHA1_URI; + /** 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) */ + private static final String DIGEST_ALGORITHM_DEFAULT_XADES_1_4_2 = Constants.SHA256_URI; /** The root element of the MOA configuration */ private Element configElem; @@ -351,10 +354,21 @@ public class ConfigurationPartsBuilder { if (digestMethod == null || !ACCEPTED_DIGEST_ALGORITHMS.contains(digestMethod)) { - info( - "config.23", - new Object[] { "DigestMethodAlgorithm", DIGEST_ALGORITHM_DEFAULT }); - digestMethod = DIGEST_ALGORITHM_DEFAULT; + 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; diff --git a/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/server/config/ConfigurationProvider.java b/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/server/config/ConfigurationProvider.java index b40a6bfa5..08478b717 100644 --- a/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/server/config/ConfigurationProvider.java +++ b/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/server/config/ConfigurationProvider.java @@ -41,6 +41,7 @@ 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; @@ -573,6 +574,16 @@ public class ConfigurationProvider issuerAndSerial = new IssuerAndSerial(issuer, serial); } +// 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); diff --git a/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/xmlsign/XMLSignatureCreationProfileImpl.java b/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/xmlsign/XMLSignatureCreationProfileImpl.java index 479f0aac9..edc3922e2 100644 --- a/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/xmlsign/XMLSignatureCreationProfileImpl.java +++ b/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/xmlsign/XMLSignatureCreationProfileImpl.java @@ -202,46 +202,33 @@ public class XMLSignatureCreationProfileImpl // 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 a more secure digest algorithm out of the SHA-2 family (e.g. SHA-256, SHA-384, SHA-512)"); - 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.RIPEMD160_WITH_RSA_OLD) //? - || algorithms.contains(SignatureAlgorithms.SHA1_WITH_RSA) - || algorithms.contains(SignatureAlgorithms.WHIRLPOOL_WITH_RSA)) { //? - - return SignatureAlgorithms.SHA1_WITH_RSA; - - } else if (algorithms.contains(SignatureAlgorithms.ECDSA) - || algorithms.contains(SignatureAlgorithms.RIPEMD160_WITH_ECDSA) - || algorithms.contains(SignatureAlgorithms.RIPEMD160_WITH_ECDSA_PLAIN) - || algorithms.contains(SignatureAlgorithms.WHIRLPOOL_WITH_ECDSA) - || algorithms.contains(SignatureAlgorithms.SHA1_WITH_ECDSA_PLAIN)) { - return SignatureAlgorithms.ECDSA; - } else if ( - algorithms.contains(SignatureAlgorithms.DSA)) { - return SignatureAlgorithms.DSA; - } else { - throw new AlgorithmUnavailableException( - "No algorithm for key entry: " + selectedKeyID, - null, - null); + + 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.SHA224_WITH_RSA) - || algorithms.contains(SignatureAlgorithms.SHA256_WITH_RSA)) { - + if (algorithms.contains(SignatureAlgorithms.SHA256_WITH_RSA)) { return SignatureAlgorithms.SHA256_WITH_RSA; - } else if (algorithms.contains(SignatureAlgorithms.SHA224_WITH_ECDSA) - || algorithms.contains(SignatureAlgorithms.SHA256_WITH_ECDSA) - || algorithms.contains(SignatureAlgorithms.SHA224_WITH_ECDSA_PLAIN) - || algorithms.contains(SignatureAlgorithms.SHA256_WITH_ECDSA_PLAIN)) { + } else if (algorithms.contains(SignatureAlgorithms.SHA256_WITH_ECDSA)) { return SignatureAlgorithms.SHA256_WITH_ECDSA; - } else if ( - algorithms.contains(SignatureAlgorithms.DSA)) { - return SignatureAlgorithms.DSA; + } else if (algorithms.contains(SignatureAlgorithms.DSA)) { + return SignatureAlgorithms.DSA; + } else { throw new AlgorithmUnavailableException( "No algorithm for key entry: " + selectedKeyID, @@ -249,17 +236,15 @@ public class XMLSignatureCreationProfileImpl null); } } else if (digestMethodXAdES142.compareTo("SHA-384") == 0) { - if (algorithms.contains(SignatureAlgorithms.SHA384_WITH_RSA)) { - + if (algorithms.contains(SignatureAlgorithms.SHA384_WITH_RSA)) { return SignatureAlgorithms.SHA384_WITH_RSA; - } else if (algorithms.contains(SignatureAlgorithms.SHA384_WITH_ECDSA) - || algorithms.contains(SignatureAlgorithms.SHA384_WITH_ECDSA_PLAIN)) { + } else if (algorithms.contains(SignatureAlgorithms.SHA384_WITH_ECDSA)) { return SignatureAlgorithms.SHA384_WITH_ECDSA; - } else if ( - algorithms.contains(SignatureAlgorithms.DSA)) { - return SignatureAlgorithms.DSA; + } else if (algorithms.contains(SignatureAlgorithms.DSA)) { + return SignatureAlgorithms.DSA; + } else { throw new AlgorithmUnavailableException( "No algorithm for key entry: " + selectedKeyID, @@ -267,17 +252,15 @@ public class XMLSignatureCreationProfileImpl null); } } else if (digestMethodXAdES142.compareTo("SHA-512") == 0) { - if (algorithms.contains(SignatureAlgorithms.SHA512_WITH_RSA)) { - + if (algorithms.contains(SignatureAlgorithms.SHA512_WITH_RSA)) { return SignatureAlgorithms.SHA512_WITH_RSA; - } else if (algorithms.contains(SignatureAlgorithms.SHA512_WITH_ECDSA) - || algorithms.contains(SignatureAlgorithms.SHA512_WITH_ECDSA_PLAIN)) { + } else if (algorithms.contains(SignatureAlgorithms.SHA512_WITH_ECDSA)) { return SignatureAlgorithms.SHA512_WITH_ECDSA; - } else if ( - algorithms.contains(SignatureAlgorithms.DSA)) { + } else if (algorithms.contains(SignatureAlgorithms.DSA)) { return SignatureAlgorithms.DSA; + } else { throw new AlgorithmUnavailableException( "No algorithm for key entry: " + selectedKeyID, diff --git a/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/XMLSignatureCreationInvoker.java b/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/XMLSignatureCreationInvoker.java index 759af813c..8bebff974 100644 --- a/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/XMLSignatureCreationInvoker.java +++ b/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/XMLSignatureCreationInvoker.java @@ -243,14 +243,31 @@ public class XMLSignatureCreationInvoker { } try { - // create the signature - signature = - module.createSignature( - dataObjectList, - profile, - additionalSignedProperties, - signatureParent, - new TransactionId(context.getTransactionID())); + 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( + 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( + dataObjectList, + profile, + additionalSignedProperties, + signatureParent, + XMLSignatureCreationModule.XADES_VERSION_1_1_1, + new TransactionId(context.getTransactionID())); + } // insert the result into the response if (signatureParent != null) { -- cgit v1.2.3 From 0d6ea7472c4a76deb68687dbc601337b93bf8e8f Mon Sep 17 00:00:00 2001 From: Klaus Stranacher Date: Tue, 23 Apr 2013 16:48:24 +0200 Subject: Update Dokumentation: Installation --- spss/handbook/handbook/install/install.html | 250 ++++++++++++++-------------- 1 file changed, 121 insertions(+), 129 deletions(-) (limited to 'spss') diff --git a/spss/handbook/handbook/install/install.html b/spss/handbook/handbook/install/install.html index 5de55163f..7c78969c3 100644 --- a/spss/handbook/handbook/install/install.html +++ b/spss/handbook/handbook/install/install.html @@ -58,30 +58,30 @@ -
    • Erweiterungsmöglichkeiten
        -
      1. Vorgeschalteter Webserver
          -
        1. Microsoft Internet Information Server (MS IIS)
            -
          1. Konfiguration von Jakarta mod_jk im MS IIS
          2. -
          3. Konfiguration von Tomcat
          4. -
          5. Konfiguration von SSL
          6. +
          7. Erweiterungsmöglichkeiten
              +
            1. Vorgeschalteter Webserver
                +
              1. Microsoft Internet Information Server (MS IIS)
                  +
                1. Konfiguration von mod_jk im MS IIS
                2. +
                3. Konfiguration von Tomcat
                4. +
                5. Konfiguration von SSL
              2. -
              3. Apache
                  -
                1. Konfiguration von Jakarta mod_jk im Apache
                2. -
                3. Konfiguration von Tomcat
                4. -
                5. Konfiguration von SSL mit mod_SSL
                6. +
                7. Apache
                    +
                  1. Konfiguration von mod_jk im Apache
                  2. +
                  3. Konfiguration von Tomcat
                  4. +
                  5. Konfiguration von SSL mit mod_SSL
              4. -
              5. Datenbank
                  -
                1. PostgreSQL
                    -
                  1. Anlegen eines Benutzers und einer Datenbank für MOA SP/SS
                  2. -
                  3. Archivierung von CRLs
                  4. -
                  5. Logging
                  6. +
                  7. Datenbank
                      +
                    1. PostgreSQL
                        +
                      1. Anlegen eines Benutzers und einer Datenbank für MOA SP/SS
                      2. +
                      3. Archivierung von CRLs
                      4. +
                      5. Logging
                    2. -
                    3. Andere Datenbanken
                    4. +
                    5. Andere Datenbanken
                  @@ -97,7 +97,7 @@
                2. Logging
              6. -
              7. Erweiterungsmöglichkeiten
              8. +
              9. Erweiterungsmöglichkeiten
            @@ -111,46 +111,41 @@

            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.

            2.1 Basisinstallation

            2.1.1 Einführung

            -

            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 Erweiterungsmöglichkeiten.

            -

            Folgende Software ist Voraussetzung für die Basisinstallation des Webservices:

            -

            TODO: Update Versions

            +

            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 Erweiterungsmöglichkeiten.

            +

            Die Mindestanforderungen für die Basisinstallation sind:

            -

            TODO Empfohlene Versionen?

            +

            Wir empfehlen jedoch jeweils aktuelle Version zu verwenden:

            +

            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.

            2.1.2 Installation

            -

            2.1.2.1 Vorbereitung

            -

            Die folgenden Schritte dienen der Vorbereitung der Installation.

            +

            2.1.2.1 Vorbereitung

            +

            Die folgenden Schritte dienen der Vorbereitung der Installation.

            -
            Installation von J2SE SDK
            -
            TODO Update Versions
            -
            Installieren Sie J2SE 1.4.x SDK oder J2SE 5.0 SDK in ein beliebiges Verzeichnis. Wir empfehlen die Installation von J2SE 5.0 SDK. Das Wurzelverzeichnis der J2SE SDK Installation wird im weiteren Verlauf als $JAVA_HOME bezeichnet.
            -
            Installation von Apache Tomcat 4.1
            -
            TODO Update Versions
            -
            Installieren Sie Apache Tomcat 4.1.18 oder höher in ein Verzeichnis, das keine Leerzeichen im Pfadnamen enthält. Wir empfehlen die Installation von Apache Tomcat 4.1.31. Verwenden Sie bitte die zu Ihrem J2SE SDK passende Distribution von Tomcat. Das Wurzelverzeichnis der Tomcat-Installation wird im weiteren Verlauf als $CATALINA_HOME bezeichnet.
            +
            Installation von Java SE
            +
            Installieren Sie Java SE in ein beliebiges Verzeichnis. Das Wurzelverzeichnis der Java SE Installation wird im weiteren Verlauf als $JAVA_HOME bezeichnet.
            +
            Installation von Apache Tomcat
            +
            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 $CATALINA_HOME bezeichnet.
            Entpacken der MOA SP/SS Webservice Distribution
            -
            TODO Update Versions
            -
            Entpacken Sie die Datei moa-spss-1.5.1.zip in ein beliebiges Verzeichnis. Dieses Verzeichnis wird im weiteren Verlauf als $MOA_SPSS_INST bezeichnet.
            -
            Installation der Krypographiebibliotheken von SIC/IAIK
            +
            Entpacken Sie die Datei moa-spss-1.5.2.zip in ein beliebiges Verzeichnis. Dieses Verzeichnis wird im weiteren Verlauf als $MOA_SPSS_INST bezeichnet.
            +
            Installation der Kryptographiebibliotheken von SIC/IAIK
            -

            Die Installation der Kryptographiebibliotheken von SIC/IAIK:

            -
            -
            J2SE 1.4.2 SDK oder JSE 5.0 SDK
            -
            TODO Update Versions
            -
            Kopieren Sie alle Dateien aus dem Verzeichnis $MOA_SPSS_INST/ext in das Verzeichnis $JAVA_HOME/jre/lib/ext. Zusätzlich müssen Sie die Rechtedateien Ihres J2SE 1.4.x SDK bzw. J2SE 5.0 SDK austauschen. Laden Sie dazu die Unlimited Strength +

            Kopieren Sie alle Dateien aus dem Verzeichnis $MOA_SPSS_INST/ext in das Verzeichnis $JAVA_HOME/jre/lib/ext. Zusätzlich müssen Sie die Rechtedateien Ihrer Java SE austauschen. Laden Sie dazu die passenden Unlimited Strength - Jurisdiction Policy Files von der J2SE 1.4.x SDK Downloadseite bzw. J2SE 5.0 SDK Downloadseite und folgen Sie der darin enthaltenen Installationsanweisung.

            -
            + Jurisdiction Policy Files von der Java SE Downloadseite und achten Sie darauf die für ihre verwendete Java SE Installation richtige Version zu nehmen. Anschließend folgen Sie der darin enthaltenen Installationsanweisung.

            2.1.2.2 Konfiguration von Apache Tomcat

            -

            TODO Update Beispiel server.xml für empfohlenen Tomcat-Version

            Die zentrale Konfigurations-Datei von Tomcat ist $CATALINA_HOME/conf/server.xml. Tomcat wird grundsätzlich mit einer funktionierenden Default-Konfiguration ausgeliefert, die jedoch einiges an Ballast enthält und viele Ports offen lässt.

            2.1.2.2.1 Konfiguration des HTTP Connectors
            -

            Die Datei $MOA_SPSS_INST/tomcat/server.xml enthält eine minimale Tomcat-Konfiguration, die ausschließlich den Connector für HTTP auf Port 8080 freischaltet. Durch kopieren dieser Datei nach $CATALINA_HOME/conf/server.xml kann Tomcat mit dieser Konfiguration gestartet werden. Wir empfehlen diese Konfiguration nur für Fälle, in denen das MOA SP/SS Webservice in einer abgeschlossenen Netzwerkumgebung betrieben wird.

            +

            TODO: server.xml auf 7 umstellen

            +

            Die Datei $MOA_SPSS_INST/tomcat/server.xml enthält eine minimale Tomcat-Konfiguration für Apache Tomcat 7, die ausschließlich den Connector für HTTP auf Port 8080 freischaltet. Durch Kopieren dieser Datei nach $CATALINA_HOME/conf/server.xml kann Tomcat mit dieser Konfiguration gestartet werden. Wir empfehlen diese Konfiguration nur für Fälle, in denen das MOA SP/SS Webservice in einer abgeschlossenen Netzwerkumgebung betrieben wird.

            2.1.2.2.2 Konfiguration des HTTPS Connectors

            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:

              @@ -158,13 +153,13 @@
            • 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.

            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.

            -

            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 Tomcat SSL Configuration HOW-TO gibt einen guten Überblick dazu. Grob zusammengefasst sind folgende Schritte durchzuführen:

            +

            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 Tomcat SSL Configuration HOW-TO gibt einen guten Überblick dazu. Grob zusammengefasst sind folgende Schritte durchzuführen:

              -
            • Erstellung eines Server-Keystores, 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 ZertiServer-Zertifikat enthält. Sie können diesen Keystore z.B. mit keytool erstellen, einem Programm, das Ihrem J2SE SDK beiliegt.
            • +
            • Erstellung eines Server-Keystores, 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 keytool erstellen, einem Programm, das Ihrer Java SE beiliegt.
            • Erstellung eines Client-Keystores, 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 Client-Keystore 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 Abschnitt 2.2.3 des Konfigurationshandbuchs). Auch dieser Keystore kann z.B. mit keytool erstellt werden. Dieser Keystore ist optional und braucht nur erstellt zu werden, wenn sich die Kunden gegenüber dem Webservice authentisieren müssen.
            • Konfiguration des HTTPS Connectors in $CATALINA_HOME/conf/server.xml.
            -

            Die Konfiguration des HTTPS Connectors kann entfallen, wenn Tomcat ein Webserver vorgeschaltet ist, und dieser die SSL-Kommunikation mit dem Kunden übernimmt (siehe Abschnitt 2.2.1).

            +

            Die Konfiguration des HTTPS Connectors kann entfallen, wenn Tomcat ein Webserver vorgeschaltet ist, und dieser die SSL-Kommunikation mit dem Kunden übernimmt (siehe Abschnitt 2.2.1).

            2.1.2.2.3 Einrichten des MOA SP/SS Administrators

            Das MOA SP/SS Webservice kann remote durch den Aufruf einer speziellen URL des Webservices dazu veranlasst werden, seine Konfiguration neu einzulesen (vergleiche Abschnitt 2.1.2.5). 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 moa-admin zugeordnet wurde.

            Um diese Benutzer-Rolle und einen oder mehrere Benutzer einzurichten, müssen in der Datei $CATALINA_HOME/conf/tomcat-users.xml unter dem Element <tomcat-users> sinngemäß folgende Einträge hinzugefügt werden:

            @@ -177,9 +172,9 @@

            Um das MOA SP/SS Webservice in Tomcat für den Einsatz vorzubereiten, sind folgende Schritte notwendig:

            • Die Datei $MOA_SPSS_INST/moa-spss.war enthält das einsatzfertige MOA SP/SS Webarchiv und muss ins Verzeichnis $CATALINA_HOME/webapps kopiert werden. Dort wird sie beim ersten Start von Tomcat automatisch ins Verzeichnis $CATALINA_HOME/webapps/moa-spss entpackt.
            • -
            • 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. $CATALINA_HOME/conf/moa-spss). Eine funktionsfähige Konfiguration, die als Ausgangspunkt für die Konfiguration des MOA SP/SS Webservices dienen kann, finden Sie hier.
            • -
            • TODO Update Versions
              - Wird Tomcat unter J2SE 1.4.x SDK oder höher betrieben, müssen die Dateien xalan.jar, xercesImpl.jar, serializer.jar und xml-apis.jar aus dem Verzeichnis $MOA_SPSS_INST/endorsed in das Tomcat-Verzeichnis $CATALINA_HOME/common/endorsed kopiert werden. Sind gleichnamige Dateien dort bereits vorhanden, müssen sie überschrieben werden. Die ggf. in diesem Verzeichnis vorhandene Datei xmlParserAPIs.jar muss gelöscht werden.
            • +
            • 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. $CATALINA_HOME/conf/moa-spss). Eine funktionsfähige Konfiguration, die als Ausgangspunkt für die Konfiguration des MOA SP/SS Webservices dienen kann, finden Sie hier.
              +
            • +
            • Die Dateien xalan.jar, xercesImpl.jar, serializer.jar und xml-apis.jar aus dem Verzeichnis $MOA_SPSS_INST/endorsed müssen in das Tomcat-Verzeichnis $CATALINA_HOME/endorsed (bzw. $CATALINA_HOME/common/endorsed 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 xmlParserAPIs.jar muss gelöscht werden. Sollte das Verzeichnis endorsed nicht vorhanden sein, dann muss dieses zuerst erstellt werden.
            • Folgende System Properties können gesetzt werden (wird beim Starten von Tomcat der Java Virtual Machine in der Umgebungsvariablen CATALINA_OPTS in der Form -D<name>=<wert> übergeben):
              • moa.spss.server.configuration: Pfad und Name der zentralen Konfigurationsdatei für MOA SP/SS. Eine beispielhafte Konfigurationsdatei finden Sie hier. Wird ein relativer Pfad angegeben, wird dieser relativ zum Startverzeichnis der Java Virtual Machine interpretiert. Ist diese System Property nicht gesetzt, wird automatisch eine im Webarchiv unter WEB-INF/conf enthaltene Default-Konfiguration herangezogen.
              • @@ -194,10 +189,10 @@

                2.1.2.4 Starten und Stoppen von Tomcat

                2.1.2.4.1 Unter Windows
                -

                Das Verzeichnis $MOA_SPSS_INST/tomcat/win32 enthält Script-Dateien zum Starten und Stoppen von Tomcat. Vor der erstmaligen Verwendung der Scripts müssen in den ersten Zeilen die Umgebungsvariablen JAVA_HOME (Basisverzeichnis des eingesetzten J2SE SDK) und CATALINA_HOME (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 System Properties anpassen.

                +

                Das Verzeichnis $MOA_SPSS_INST/tomcat/win32 enthält Script-Dateien zum Starten und Stoppen von Tomcat. Vor der erstmaligen Verwendung der Scripts müssen in den ersten Zeilen die Umgebungsvariablen JAVA_HOME (Basisverzeichnis der eingesetzten Java SE) und CATALINA_HOME (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 System Properties anpassen.

                2.1.2.4.2 Unter Unix
                -

                Zunächst müssen die in Abschnitt 2.1.2.3 besprochenen System Properties mit Hilfe der Umgebungsvariablen CATALINA_OPTS gesetzt sein. Die Datei $MOA_SPSS_INST/tomcat/unix/moa-env.sh enthält ein Beispiel dafür. Weiters müssen noch die Umgebungsvariablen JAVA_HOME (Basisverzeichnis des eingesetzten J2SE SDK) und CATALINA_HOME (Basisverzeichnis der eingesetzten Tomcat-Installation) angepasst werden.

                +

                Zunächst müssen die in Abschnitt 2.1.2.3 besprochenen System Properties mit Hilfe der Umgebungsvariablen CATALINA_OPTS gesetzt sein. Die Datei $MOA_SPSS_INST/tomcat/unix/moa-env.sh enthält ein Beispiel dafür. Weiters müssen noch die Umgebungsvariablen JAVA_HOME (Basisverzeichnis der eingesetzten Java SE) und CATALINA_HOME (Basisverzeichnis der eingesetzten Tomcat-Installation) angepasst werden.

                Nun kann Tomcat aus seinem Basisverzeichnis mit

                bin/catalina.sh start
                gestartet werden. Das Stoppen von Tomcat erfolgt analog mit @@ -227,7 +222,7 @@ In diesem Fall geben die WARN bzw. ERROR Log-Meldungen
                 http://<host>:<port>/moa-spss/ConfigurationUpdate 

                Damit dies funktioniert, muss in der Konfiguration von Tomcat ein spezieller Benutzer sowie eine spezielle Benutzerrolle eingerichtet werden (vergleiche Abschnitt 2.1.2.2.3).

                2.1.3 Logging

                -

                Das MOA SP/SS Webservice verwendet Jakarta Log4j für die Ausgabe von Log-Meldungen am Bildschirm bzw. in Log-Dateien. Log4j bietet zahlreiche Konfigurationsmöglichkeiten, die ausführlich im Jakarta Log4j Handbuch beschrieben sind. Unter anderem gibt es die Möglichkeit, folgende Einstellungen vorzunehmen: +

                Das MOA SP/SS Webservice verwendet Log4j 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:

                • Das verwendete Log-Level (DEBUG, INFO, WARN, ERROR, FATAL);

                  @@ -301,46 +296,46 @@ INFO | 01 21:25:26,540 | Thread-3 | TID=1049225059594-100 NID=<null> MSG=Fehler beim Abarbeiten der Anfrage

                  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.

                  -

                  Die Tatsächlich übertragenen Anfragen bzw. Antworten werden aus Effizienzgründen nur im Log-Level DEBUG angezeigt.

                  +

                  Die tatsächlich übertragenen Anfragen bzw. Antworten werden aus Effizienzgründen nur im Log-Level DEBUG angezeigt.

                  -

                  2.2 Erweiterungsmöglichkeiten

                  +

                  2.2 Erweiterungsmöglichkeiten

                  Ausgehend von der Basisinstallation können die optionalen Erweiterungen, die in den nachfolgenden Abschnitten beschrieben werden, unabhängig und in beliebiger Kombination aufgesetzt werden.

                  -

                  TODO Update Versions?

                  -

                  2.2.1 Vorgeschalteter Webserver

                  -

                  2.2.1.1 Microsoft Internet Information Server (MS IIS)

                  -

                  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 Jakarta mod_jk durchgeführt. Die angeführten Konfigurationsschritte gehen von einer MS IIS Standard-Installation aus.

                  -
                  2.2.1.1.1 Konfiguration von Jakarta mod_jk im MS IIS
                  -

                  Für die Kommunikation des MS IIS mit dem im Tomcat eingerichteten MOA SP/SS Webservice wird das ISAPI-Modul von Jakarta mod_jk im MS IIS installiert und konfiguriert. Eine detaillierte Installations- und Konfigurationsanleitung gibt das mod_jk IIS HowTo. Beispiele für workers.properties und uriworkermap.properties Dateien liegen im Verzeichnis $MOA_SPSS_INST/tomcat bei.

                  -
                  2.2.1.1.2 Konfiguration von Tomcat
                  -

                  Damit Tomcat die Aufrufe entgegennehmen kann, die von MS IIS mittels Jakarta mod_jk weiterleitet werden, muss in $CATALINA_HOME/conf/server.xml der AJP 1.3 Connector 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 Connector Konfigurations-Elemente in dieser Datei. Die Datei $MOA_SPSS_INST/tomcat/server.mod_jk.xml enthält eine Konfiguration, die ausschließlich den Port für den AJP 1.3 Connector offen lässt.

                  -
                  2.2.1.1.3 Konfiguration von SSL
                  -

                  Die Dokumentation zum Einrichten von SSL auf dem MS IIS steht nach Installation des IIS unter http://localhost/iisHelp/ oder aber auch auf den Websiten vo Mircrosoft zur Verfügung.

                  +

                  2.2.1 Vorgeschalteter Webserver

                  +

                  2.2.1.1 Microsoft Internet Information Server (MS IIS)

                  +

                  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 mod_jk durchgeführt. Die angeführten Konfigurationsschritte gehen von einer MS IIS Standard-Installation aus.

                  +
                  2.2.1.1.1 Konfiguration von mod_jk im MS IIS
                  +

                  Für die Kommunikation des MS IIS mit dem im Tomcat eingerichteten MOA SP/SS Webservice wird das ISAPI-Modul von mod_jk im MS IIS installiert und konfiguriert. Eine detaillierte Installations- und Konfigurationsanleitung gibt das mod_jk IIS HowTo. Beispiele für workers.properties und uriworkermap.properties Dateien liegen im Verzeichnis $MOA_SPSS_INST/tomcat bei.

                  +
                  2.2.1.1.2 Konfiguration von Tomcat
                  +

                  TODO: Update server.mod_jk.xml

                  +

                  Damit Tomcat die Aufrufe entgegennehmen kann, die von MS IIS mittels mod_jk weiterleitet werden, muss in $CATALINA_HOME/conf/server.xml der AJP 1.3 Connector 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 Connector Konfigurations-Elemente in dieser Datei. Die Datei $MOA_SPSS_INST/tomcat/server.mod_jk.xml enthält eine Konfiguration, die ausschließlich den Port für den AJP 1.3 Connector offen lässt.

                  +
                  2.2.1.1.3 Konfiguration von SSL
                  +

                  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.

                  2.2.1.2 Apache

                  -

                  Den MOA SP/SS Webservices kann ein Apache Webserver vorgeschaltet sein. Das Prinzip funktioniert wie bei MS IIS, auch hier wird Jakarta mod_jk für die Kommunikation zwischen Webserver und Tomcat eingesetzt. Die angeführten Konfigurationsschritte gehen von einer Standard-Installation des Apache Webservers aus und sind ident für die Versionen 1.3.x und 2.0.x.

                  -
                  2.2.1.2.1 Konfiguration von Jakarta mod_jk im Apache
                  -

                  Um das MOA-SPSS Webservice hinter einem Apache Webserver zu betreiben, ist die Konfiguration des Apache-Moduls mod_jk erforderlich. Eine detaillierte Installations- und Konfigurationsanleitung gibt das mod_jk Apache HowTo. Ein Beispiel für eine workers.properties Datei liegt im Verzeichnis $MOA_SPSS_INST/tomcat bei.

                  +

                  Den MOA SP/SS Webservices kann ein Apache Webserver vorgeschaltet sein. Das Prinzip funktioniert wie bei MS IIS, auch hier wird mod_jk für die Kommunikation zwischen Webserver und Tomcat eingesetzt. Die angeführten Konfigurationsschritte gehen von einer Standard-Installation des Apache Webservers aus.

                  +
                  2.2.1.2.1 Konfiguration von mod_jk im Apache
                  +

                  Um das MOA-SPSS Webservice hinter einem Apache Webserver zu betreiben, ist die Konfiguration des Apache-Moduls mod_jk erforderlich. Eine detaillierte Installations- und Konfigurationsanleitung gibt das mod_jk Apache HowTo. Ein Beispiel für eine workers.properties Datei liegt im Verzeichnis $MOA_SPSS_INST/tomcat bei.

                  Um das MOA SP/SS Webservice dem Apache Webserver bekannt zu machen, sind zumindest folgende Einträge im globalen Kontext der Apache-Konfigurationsdatei notwendig:

                  LoadModule jk_module /usr/lib/apache/mod_jk.so
                  AddModule jk_module
                  JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories
                  JkWorkersFile conf/workers.properties
                  JkMount /moa-spss/* moaworker

                  Die Pfad- und Dateinamen können je nach existierender Apache Installation geringfügig variieren.

                  -
                  2.2.1.2.2 Konfiguration von Tomcat
                  -

                  Die Konfiguration von Tomcat ist analog zu Abschnitt 2.2.1.1.2 durchzuführen.

                  -
                  2.2.1.2.2 Konfiguration von SSL mit mod_SSL
                  +
                  2.2.1.2.2 Konfiguration von Tomcat
                  +

                  Die Konfiguration von Tomcat ist analog zu Abschnitt 2.2.1.1.2 durchzuführen.

                  +
                  2.2.1.2.2 Konfiguration von SSL mit mod_SSL

                  Apache kann in Verbindung mit mod_SSL 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 mod_jk austauschen. Eine detaillierte Installations- und Konfigurationsanleitung enthält die Online-Dokumentation von mod_SSL.

                  Bei der Verwendung von Client-Authentisierung muss darauf geachtet werden, dass mod_ssl die HTTP-Header mit den Informationen über das Client-Zertifikat exportiert. Dies wird durch Angabe der folgenden Option in der Apache-Konfiguration erreicht:

                  SSLOptions +ExportCertData +StdEnvVars
                  -

                  Je nach vorhandener SSL-Konfiguration des Apache Webservers kann diese Option im globalen Kontext, im Kontext des Virtual Hosts oder im Kontexts eines Verzeichnisses spezifiziert werden.

                  -

                  2.2.2 Datenbank

                  +

                  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.

                  +

                  2.2.2 Datenbank

                  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.

                  -

                  2.2.2.1 PostgreSQL

                  -

                  Eine detaillierte Übersicht über die Installation und Konfiguration von PostgreSQL gibt die Online-Dokumentation.

                  -

                  Bitte beachten Sie: Eine Möglichkeit, PostgreSQL unter MS Windows zu installieren, besteht darin, Cygwin mit dem PostgreSQL-Package zu installieren. Alternative Installationsvarianten werden auf dieser Seite angeführt.

                  -
                  2.2.2.1.1 Anlegen eines Benutzers und einer Datenbank für MOA SP/SS
                  +

                  2.2.2.1 PostgreSQL

                  +

                  Eine detaillierte Übersicht über die Installation und Konfiguration von PostgreSQL gibt die Online-Dokumentation.

                  +

                  Bitte beachten Sie: Eine Möglichkeit, PostgreSQL unter MS Windows zu installieren, besteht darin, Cygwin mit dem PostgreSQL-Package zu installieren. Alternative Installationsvarianten werden in der PostgreSQL Dokumentation angeführt.

                  +
                  2.2.2.1.1 Anlegen eines Benutzers und einer Datenbank für MOA SP/SS

                  Damit die MOA SP/SS Module eine Verbindung zu PostgreSQL aufbauen kann, müssen der Name eines PostgreSQL-Benutzers und einer PostgreSQL-Datenbank bekannt sein. Sollten diese nicht vorhanden sein, kann mit folgenden Kommandos ein Benutzer namens moa und eine Datenbank namens moadb angelegt werden:

                  createuser -U postgres -d -A -P moa
                  createdb -U moa moadb

                  Da die MOA SP/SS Module über JDBC mit der Datenbank kommunizieren, ist in der Folge die Angabe einer JDBC-URL notwendig, welche die Verbindungsparameter enthält. Wurden der Benutzer und die Datenbank wie im obigen Beispiel angelegt, ist folgende JDBC-URL anzugeben (Annahme: als Passwort für den Benutzer moa wurde moapass gewählt):

                   jdbc:postgresql://host/moadb?user=moa&password=moapass

                  Die Zeichen jdbc:postgresql:// sind unveränderliche Bestandteile einer PostgreSQL JDBC-URL. host gibt den Rechner an, auf dem PostgreSQL läuft. moadb identifiziert den Namen der Datenbank. Über die Parameter user= und pass= werden Benutzername und Passwort für den DB-User bekanntgegeben.

                  -
                  2.2.2.1.2 Archivierung von CRLs
                  +
                  2.2.2.1.2 Archivierung von CRLs

                  Zum Archivieren von CRLs müssen in der MOA SP/SS Konfigurationsdatei die Kinder des Elements cfg:MOAConfiguration/cfg:SignatureVerification/cfg:CertificateValidation/cfg:RevocationChecking/cfg:Archiving entsprechend konfiguriert werden:

                    @@ -351,7 +346,7 @@ INFO | 01 21:25:26,540 | Thread-3 | TID=1049225059594-100 NID=<null>
                    • cfg:JDBCURL muss eine gültige JDBC-URL enthalten, mit der auf die Datenbank zur Archivierung zugegriffen werden kann (Hinweis: da es sich hierbei um einen Eintrag - in eine XML-Datei handelt, muss das Zeichen & in der in Abschnitt 2.2.2.1.1 gezeigten + in eine XML-Datei handelt, muss das Zeichen & in der in Abschnitt 2.2.2.1.1 gezeigten JDBC-URL durch die Zeichenfolge &amp; ersetzt werden.);
                    • cfg:JDBCDriverClassName muss den vollständig qualifizierten Java-Klassennamen des JDBC-Treibers @@ -361,16 +356,16 @@ INFO | 01 21:25:26,540 | Thread-3 | TID=1049225059594-100 NID=<null>

                    Vergleiche auch Abschnitt 2.3.1.3.4 im Konfigurationshandbuch.

                    -
                    2.2.2.1.3 Logging
                    -

                    Für das Logging in eine PostgreSQL Datenbank mittels Jakarta Log4j muss zunächst eine Tabelle für die Log-Meldungen angelegt werden. Dies kann mit folgendem SQL-Statement erreicht werden:

                    +
                    2.2.2.1.3 Logging
                    +

                    Für das Logging in eine PostgreSQL Datenbank mittels Log4j muss zunächst eine Tabelle für die Log-Meldungen angelegt werden. Dies kann mit folgendem SQL-Statement erreicht werden:

                     create table spss_log (log_time timestamp, log_level varchar(5), log_msg text);

                    Damit Log4j die Log-Meldungen in diese Datenbanktabelle schreibt, muss die Log4j-Konfiguration adaptiert werden. Die mit MOA SP/SS mitgelieferte, beispielhafte Log4j-Konfiguration enthält bereits die notwendigen Einträge für das Logging in eine PostgreSQL Datenbank, die jedoch standardmäßig ausgeschaltet sind.

                    Wie beim Caching von CRLs ist auch hier die Angabe einer JDBC-URL notwendig, damit die MOA SP/SS Module eine Verbindung zur Datenbank aufnehmen können.

                    -

                    Bitte beachten Sie: Bei Tests hat sich das Logging in eine Datenbank mit Jakarta Log4j als Performance-Engpass herausgestellt. Es wird deshalb empfohlen, dieses Feature mit Bedacht einzusetzen.

                    -

                    2.2.2.2 Andere Datenbanken

                    +

                    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.

                    +

                    2.2.2.2 Andere Datenbanken

                    Ü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 FAQ.

                    -

                    Die in Abschnitt 2.2.2.1 gemachten Angaben zu Archivierung von CRLs bzw. zur Speicherung von Log-Meldungen gelten sinngemäß.

                    -

                    2.2.3 Hardware Security Module (HSM)

                    +

                    Die in Abschnitt 2.2.2.1 gemachten Angaben zu Archivierung von CRLs bzw. zur Speicherung von Log-Meldungen gelten sinngemäß.

                    +

                    2.2.3 Hardware Security Module (HSM)

                    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.

                    Für die Einbindung des HSM in MOA SS müssen zunächst die Bibliotheken aus $MOA_SPSS_INST/pkcs11 in ein beliebiges Verzeichnis kopiert werden, welches dann in den Libray-Pfad des jeweiligen Betriebssystems aufgenommen werden muss (Windows: Umgebungsvariable PATH; Linux: Umgebungsvariable LD_LIBRARY_PATH).

                    Der Name der für das HSM spezifischen PKCS#11-Bibliothek muss in der Konfigurationsdatei eingetragen werden (vergleiche Abschnitt 2.2.1.1 des Konfigurationshandbuchs).

                    @@ -379,47 +374,47 @@ INFO | 01 21:25:26,540 | Thread-3 | TID=1049225059594-100 NID=<null>

                    3.1 Basisinstallation

                    3.1.1 Einführung

                    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.

                    -

                    Folgende Software ist Voraussetzung für die Basisinstallation der Klassenbibliothek:

                    -

                    TODO Update Versions

                    +

                    Die Mindestanforderungen für die Basisinstallation sind:

                    +

                    Wir empfehlen jedoch jeweils aktuelle Version zu verwenden:

                    + -

                    3.1.2 Vorbereitung

                    -

                    Die folgenden Schritte dienen der Vorbereitung der Installation.

                    +

                    3.1.2 Vorbereitung

                    +

                    Die folgenden Schritte dienen der Vorbereitung der Installation.

                    -
                    Installation von J2SE SDK
                    -
                    TODO Update Versions
                    -
                    Installieren Sie J2SE 1.4.x SDK oder J2SE 5.0 SDK in ein beliebiges Verzeichnis. Wir empfehlen die Installation von J2SE 5.0 SDK. Das Wurzelverzeichnis der J2SE SDK Installation wird im weiteren Verlauf als $JAVA_HOME bezeichnet.
                    +
                    Installation von Java SE
                    +
                    Installieren Sie Java SE in ein beliebiges Verzeichnis. Das Wurzelverzeichnis der Java SE Installation wird im weiteren Verlauf als $JAVA_HOME bezeichnet.
                    Entpacken der MOA SP/SS Klassenbibliotheks-Distribution
                    -
                    TODO Update Versions
                    -
                    Entpacken Sie die Datei moa-spss-1.5.1-lib.zip in ein beliebiges Verzeichnis. Dieses Verzeichnis wird im weiteren Verlauf als $MOA_SPSS_INST bezeichnet.
                    -
                    Installation der Krypographiebibliotheken von SIC/IAIK
                    +
                    Entpacken Sie die Datei moa-spss-1.5.2-lib.zip in ein beliebiges Verzeichnis. Dieses Verzeichnis wird im weiteren Verlauf als $MOA_SPSS_INST bezeichnet.
                    +
                    Installation der Kryptographiebibliotheken von SIC/IAIK
                    -

                    Die Installation der Kryptographiebibliotheken von SIC/IAIK:

                    -
                    -
                    J2SE 1.4.x SDK oder JSE 5.0 SDK
                    -
                    TODO Update Versions
                    -
                    Kopieren Sie alle Dateien aus dem Verzeichnis $MOA_SPSS_INST/ext in das Verzeichnis $JAVA_HOME/jre/lib/ext. Zusätzlich müssen Sie die Rechtedateien Ihres J2SE 1.4.x SDK bzw. J2SE 5.0 SDK austauschen. Laden Sie dazu die Unlimited Strength Jurisdiction Policy Files von der J2SE 1.4.x SDK Downloadseite bzw. J2SE 5.0 SDK Downloadseite und folgen Sie der darin enthaltenen Installationsanweisung.
                    -
                    -
                    -
                    +

                    Kopieren Sie alle Dateien aus dem Verzeichnis $MOA_SPSS_INST/ext in das Verzeichnis $JAVA_HOME/jre/lib/ext. Zusätzlich müssen Sie die Rechtedateien Ihrer Java SE austauschen. Laden Sie dazu die passenden Unlimited Strength + + + Jurisdiction Policy Files von der Java SE Downloadseite und achten Sie darauf die für ihre verwendete Java SE Installation richtige Version zu nehmen. Anschließend folgen Sie der darin enthaltenen Installationsanweisung.

                    + +

                    3.1.3 Verwendung

                    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.

                    Die nachfolgende Tabelle listet diese Klassenbibliotheken auf; die Einträge in der Spalte Dateien sind relativ zum Verzeichnis $MOA_SPSS_INST zu interpretieren.

                    -

                    TODO Update Versions

                    +

                    TODO Update Versions

    • - + - - + @@ -429,18 +424,18 @@ INFO | 01 21:25:26,540 | Thread-3 | TID=1049225059594-100 NID=<null> - + - + - + - - + + +

      Bitte beachten Sie: Wenn Sie keine Datenbank für MOA SP/SS verwenden (vergleiche 2.2.2), benötigen Sie diese Bibliothek nicht.

      - + + +
      KlassenbibliothekVersionDateien
      MOA SP/SS1.5.1  1.5.2  moa-spss.jar, moa-common.jar
      MOA IAIK1.32 

      lib/iaik_moa-1.32.jar, - lib/iaik_cms-3.2.jar, lib/iaik_ixsil-1.2.2.5.jar

      +

      1.33.1

      +

      TODO: Update Version (auf 1.5 laut Harald) 

      lib/iaik_moa-1.33.1.jar, + lib/iaik_cms-4.1.jar, lib/iaik_ixsil-1.2.2.5.jar

      Activation1.4  1.1  lib/activation-1.1.jar
      Xerces-J2.7.1  2.9.0  lib/xercesImpl.jar
      Xalan-J2.7.0  2.7.1 

      lib/xalan.jar, lib/xml-apis.jar, lib/serializer.jar

      -

      Bitte beachten Sie: Wenn Sie J2SE 1.4.2 JRE oder J2SE 5.0 JRE verwenden, müssen Sie diese Bibliothek der Java VM als endorsed bekanntgeben. Sie können dies tun, indem Sie entweder

      +

      Bitte beachten Sie: Sie müssen diese Bibliothek gegebenenfalls der Java VM als endorsed bekanntgeben. Sie können dies tun, indem Sie entweder

      • die Bibliothek in das (ggf. vorher anzulegende) Verzeichnis $JAVA_HOME/jre/lib/endorsed/ kopieren; oder
      • die System Property java.endorsed.dirs verwenden, und als Wert den Pfad zu jenem Verzeichnis angeben, in dem Sie die Bibliothek vorhalten (also z.B. java.endorsed.dirs=c:/mylibdir).
      • @@ -455,49 +450,46 @@ INFO | 01 21:25:26,540 | Thread-3 | TID=1049225059594-100 NID=<null>
      lib/commons-logging-1.0.4.jar
      Log4j1.2.8  lib/log4j-1.2.8.jar1.2.14  lib/log4j-1.2.14.jar
      Commons-Discovery0.2  lib/commons-discovery-0.2.jar
      Postgres JDBC27.3 

      lib/postgresql-7.2.jar

      -

      Bitte beachten Sie: Wenn Sie keine Datenbank für MOA SP/SS verwenden (vergleiche 2.2.2), benötigen Sie diese Bibliothek nicht.

      Axis1.4  lib/axis-1.4.jar, lib/axis-jaxrpc-1.4.jar, lib/axis-saaj-1.4.jar, lib/axis-wsdl4j-1.5.1.jarAxis1.0_IAIK/1.4  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

      3.1.4 Logging

      -

      Die MOA SP/SS Klassenbibliothek verwendet Jakarta Log4j für die Ausgabe von Log-Meldungen am Bildschirm bzw. in Log-Dateien. Die im Abschnitt 2.1.3 gemachten Aussagen lassen sich großteils auf den Einsatz der MOA SP/SS Klassenbibliothek übertragen.

      -

      3.2 Erweiterungsmöglichkeiten

      -

      Die im Abschnitt 2.2 angeführten Erweiterungsmöglichkeiten für die MOA SP/SS Webservices gelten in analoger Weise auch für die Klassenbibliothek.

      +

      Die MOA SP/SS Klassenbibliothek verwendet Log4j für die Ausgabe von Log-Meldungen am Bildschirm bzw. in Log-Dateien. Die im Abschnitt 2.1.3 gemachten Aussagen lassen sich großteils auf den Einsatz der MOA SP/SS Klassenbibliothek übertragen.

      +

      3.2 Erweiterungsmöglichkeiten

      +

      Die im Abschnitt 2.2 angeführten Erweiterungsmöglichkeiten für die MOA SP/SS Webservices gelten in analoger Weise auch für die Klassenbibliothek.

      A Referenzierte Software

      Auf folgende Software-Pakete wird in diesem Handbuch verwiesen:

      -

      TODO Update Versions

      - - - - - - + + - - + + - - + +
      Name Beschreibung
      Apache Tomcat 4.1.x Servlet-Container des Apache Jakarta Projekts in der Version 4.1.x
      J2SE 1.4.x SDK/JREJava 2 Standard Edition in der Version 1.4.x (Software Development Kit bzw. Java Runtime Environment) Apache Tomcat Apache Tomcat Servlet-Container
      J2SE 5.0 SDK/JRE Java 2 Standard Edition in der Version 5.0 (Software Development Kit bzw. Java Runtime Environment) Java SEJava Standard Edition (Software Development Kit bzw. Java Runtime Environment)
      Jakarta Log4J Logging Framework des Apache Jakarta Projekts Log4J Logging Framework
      -- cgit v1.2.3 From 76ee7b768603988e4a6ca59011eee2b7dd33fa21 Mon Sep 17 00:00:00 2001 From: Klaus Stranacher Date: Wed, 24 Apr 2013 16:46:35 +0200 Subject: Update Dokumentation --- spss/handbook/handbook/config/config.html | 105 +++++++++---- spss/handbook/handbook/install/install.html | 20 ++- spss/handbook/handbook/usage/usage.html | 107 ++++++------- .../resources/data/deploy/tomcat/server.mod_jk.xml | 166 -------------------- .../resources/data/deploy/tomcat/server.xml | 169 --------------------- 5 files changed, 142 insertions(+), 425 deletions(-) delete mode 100644 spss/server/serverlib/resources/data/deploy/tomcat/server.mod_jk.xml delete mode 100644 spss/server/serverlib/resources/data/deploy/tomcat/server.xml (limited to 'spss') diff --git a/spss/handbook/handbook/config/config.html b/spss/handbook/handbook/config/config.html index 2421deb1b..6809c143d 100644 --- a/spss/handbook/handbook/config/config.html +++ b/spss/handbook/handbook/config/config.html @@ -46,8 +46,13 @@
      1. Allgemeines Parameter
        1. Hardwarebasiertes Kryptographiemodul
        2. -
        3. Auflösen externer URIs
        4. -
        +
      2. Auflösen externer URIs +
          +
        1. Blacklisting
        2. +
        3. Whitelisting
        4. +
        +
      3. +
    • Parameter für MOA SS
      1. Schlüsselspeicher
          @@ -61,6 +66,7 @@
        1. Parameter für XML-Signaturen
        2. Profil für Transformationen
        3. Profil für Signaturumgebung
        4. +
        5. XAdES Version
      2. Parameter für MOA SP
          @@ -108,14 +114,13 @@
      -
      +

      1 Übersicht

      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.

      1.1 Allgemeines

      1.1.1 Namenskonventionen

      Folgende Namenraum-Präfixe werden in diesem Handbuch zur Kennzeichnung der Namenräume - von XML-Elementen verwendet:

      -

      TODO Weitere Namespaces? Aktuell?

      + von XML-Elementen verwendet:

      @@ -130,7 +135,7 @@ - + @@ -213,8 +218,14 @@
      Präfixhttp://www.w3.org/2000/09/xmldsig#
      moamoa http://reference.e-government.gv.at/namespace/moa/20020822#
      -

      2.1.2 Auflösen externer URIs

      -

      TODO Update Whitelisting

      +

      2.1.2 Auflösen externer URIs

      +

      Standardmäßig ist das Auflösen von externen URIs (inkl. localhost) deaktiviert (d.h. keines der nachfolgenden Konfigurationselement cfg:PermitExternalUris bzw. cfg:ForbidExternalUris existiert). Es gibt jedoch zwei Möglichkeiten das Auflösen zu aktivieren bzw. zu

      +
        +
      • 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.
      • +
      • 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.
      • +
      +

      Diese beiden Möglichkeiten stehen wahlweise zur Verfügung, d.h. es kann entweder Blacklisting oder Whitelisting konfiguriert werden.

      +

      2.1.2.1 Blacklisting

      @@ -226,7 +237,7 @@ -
      Name
      Erläuterung

      Mit diesem Element wird MOA SP bzw. SS mitgeteilt ob das Auflösen externer URIs (inkl. localhost) erlaubt ist. Fehlt dieses Element, so ist das Auflösen externer URIs deaktiviert. 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:

      +

      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:

      • Element cfg:BlackListUri: Dieses optionale und unbegrenzten Element gibt einen Blacklist-Eintrag an und besteht aus folgenden zwei weiteren Kindelementen:
        • @@ -245,6 +256,28 @@
      +

      2.1.2.2 Whitelisting

      + + + + + + + + + + + + + +
      Namecfg:Common/cfg:ForbidExternalUris
      GebrauchNull mal bis einmal
      Erläuterung

      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:

      +
        +
      • Element cfg:WhiteListUri: Dieses optionale und unbegrenzten Element gibt einen Whitelist-Eintrag an und besteht aus folgenden zwei weiteren Kindelementen:
      • +
          +
        • Element cfg:IP: Dieses Element vom Type xs:string 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)
        • +
        • Element cfg:Port: Dieses optionale Element vom Typ xs:int 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.
        • +
        +

      2.2 Parameter für MOA SS

      2.2.1 Schlüsselspeicher

      2.2.1.1 Hardware-Schlüsselspeicher

      @@ -327,17 +360,16 @@ Erläuterung -

      TODO Update DigestMethod

      -

      Mit diesem Element wird in MOA SS eine Schlüsselgruppe definiert. Eine Schlüsselgruppe +

      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 2.2.1.1 bzw. 2.2.1.2) verwaltet werden. Die Schlüsselgruppe wird vom Kunden von MOA SS über einen eindeutigen Bezeichner im Request zur Signaturerstellung angesprochen.

      -

      Sinn der Zusammenfassung von mehreren privaten Schlüsseln zu einer Schlüsselgruppe ist +

      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.

      + referenzieren) lässt sich der Durchsatz der erstellten Signaturen verbessern.

      Das Element cfg:SignatureCreation/cfg:KeyGroup hat folgenden Element-Inhalt:

      • Element cfg:Id: Dieses obligatorische Element vom Typ xs:token enthält @@ -370,10 +402,11 @@
    • +
    • Element cfg:DigestMethodAlgorithm: 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 "Parameter für XML-Signaturen" definierter Wert, werden dadurch für diese Schlüsselgruppe überschrieben. Mögliche Werte sind dem Element cfg:SignatureCreation/cfg:XMLDSig/cfg:DigestMethodAlgorithm ebenfalls in Abschnitt "Parameter für XML-Signaturen" zu entnehmen.

    Um auf einfache Weise für alle in Ihren Schlüsselspeichern enthaltenen privaten Schlüssel die jeweiligen Werte für dsig:X509IssuerName und dsig:X509SerialNumber zu - erhalten, gehen Sie am besten wie folgt vor:

    +

    1. Erfassen Sie in der zentralen Konfigurationsdatei alle Ihre Schlüsselspeicher mit Hilfe der Konfigurationselemente cfg:SignatureCreation/cfg:KeyModules/cfg:HardwareKeyModule bzw. cfg:SignatureCreation/cfg:KeyModules/cfg:SoftwareKeyModule.
    2. @@ -466,7 +499,8 @@ IssuerDN (RFC2253) : Erläuterung -

      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 dsig:Signature/dsig:SignedInfo/dsig:CanonicalizationMethod aufscheint, spezifiziert werden. Folgende Werte dürfen verwendet werden:

      +

      TODO: Kanonisierungs-Algorithmen entsprechend Kommissionsentscheidung?

      +

      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 dsig:Signature/dsig:SignedInfo/dsig:CanonicalizationMethod aufscheint, spezifiziert werden. Folgende Werte dürfen verwendet werden:

      http://www.w3.org/TR/2001/REC-xml-c14n-20010315 
      http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithComments
      http://www.w3.org/2001/10/xml-exc-c14n#
      http://www.w3.org/2001/10/xml-exc-c14n#WithComments

      Wird das Element nicht angegeben, wird folgender Wert als Default-Wert verwendet:

      @@ -484,15 +518,16 @@ IssuerDN (RFC2253) : Erläuterung -

      TODO Update Beschreibung hinsichtlich XAdES 1.4.2

      -

      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 dsig:Signature/dsig:SignedInfo/dsig:Reference/dsig:DigestMethod aufscheint, spezifiziert werden. Folgende Werte dürfen verwendet werden:

      -

      -

      http://www.w3.org/2000/09/xmldsig#sha1
      -
      -

      -

      Wird das Element nicht angegeben, wird folgender Wert als Default-Wert verwendet:

      -

      TODO Default-wert wenn XAdES 1.4.2?

      -
      http://www.w3.org/2000/09/xmldsig#sha1

      Für die genaue Bedeutung der Werte siehe die Spezifikation für XML-Signaturen.

      +

      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 dsig:Signature/dsig:SignedInfo/dsig:Reference/dsig:DigestMethod aufscheint, spezifiziert werden. Folgende Werte dürfen verwendet werden: +

      +
      http://www.w3.org/2000/09/xmldsig#sha1
      +http://www.w3.org/2000/09/xmldsig#sha256
      http://www.w3.org/2000/09/xmldsig#sha384
      http://www.w3.org/2000/09/xmldsig#sha512
      + Wird das Element nicht angegeben, wird - abhängig von der konfigurierten XAdES-Version (siehe XAdES-Version)- folgender Wert als Default-Wert verwendet: +

      Für XAdES Version 1.1.1:

      +
      http://www.w3.org/2000/09/xmldsig#sha1
      +

      Für XAdES Version 1.4.2:

      +
      http://www.w3.org/2000/09/xmldsig#sha256
      +

      Für die genaue Bedeutung der Werte siehe die Spezifikation für XML-Signaturen.

      2.2.5 Profil für Transformationen

      @@ -551,7 +586,7 @@ IssuerDN (RFC2253) : 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).

      -

      cfg:CreateSignatureEnvironmentProfile weist folgende obligatorische Kindelemene +

      cfg:CreateSignatureEnvironmentProfile weist folgende obligatorische Kindelemente auf:

      • Element Id: Dieses Element vom Typ xs:token enthält @@ -566,7 +601,25 @@ IssuerDN (RFC2253) :
      -

      TODO XAdES 1.4.2 Möglichkeit

      +

      2.2.7 XAdES Version

      + + + + + + + + + + + + + +
      Namecfg:SignatureCreation/cfg:XAdES
      GebrauchNull mal bis einmal
      Erläuterung

      MOA SS ermöglicht die Erstellung einer herkömmlichen XML-Signatur (das Attribut SecurityLayerConformity im CreateXMLSignatureRequest ist auf false gesetzt) oder einer XAdES-Signatur (SecurityLayerConformity=true) gemäß der Security-Layer Spezifikation V1.1. 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. cfg:XAdES weist daher folgendes obligatorische Kindelement + auf:

      +
        +
      • Element Version: Dieses Element vom Typ xs:token gibt die zu verwendende XAdES-Version an. Derzeit kann nur die Version 1.4.2 angegeben werden.
      • +

      2.3 Parameter für MOA SP

      2.3.1 diff --git a/spss/handbook/handbook/install/install.html b/spss/handbook/handbook/install/install.html index 7c78969c3..57da2b55c 100644 --- a/spss/handbook/handbook/install/install.html +++ b/spss/handbook/handbook/install/install.html @@ -21,14 +21,14 @@

      Inhalt

      1. -

        Übersicht

        +

        Übersicht

      2. Webservice

        1. Basisinstallation
            -
          1. Einführung
          2. +
          3. Einführung
          4. Installation
            1. Vorbereitung
            2. @@ -105,12 +105,12 @@
            3. Referenzierte Software

            -

            1 Übersicht

            +

            1 Übersicht

            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.

            2 Webservice

            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.

            2.1 Basisinstallation

            -

            2.1.1 Einführung

            +

            2.1.1 Einführung

            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 Erweiterungsmöglichkeiten.

            Die Mindestanforderungen für die Basisinstallation sind:

              @@ -142,11 +142,10 @@

              2.1.2.2 Konfiguration von Apache Tomcat

              -

              Die zentrale Konfigurations-Datei von Tomcat ist $CATALINA_HOME/conf/server.xml. Tomcat wird grundsätzlich mit einer funktionierenden Default-Konfiguration ausgeliefert, die jedoch einiges an Ballast enthält und viele Ports offen lässt.

              +

              Die zentrale Konfigurations-Datei von Tomcat ist $CATALINA_HOME/conf/server.xml. Tomcat wird grundsätzlich mit einer funktionierenden Default-Konfiguration ausgeliefert.

              2.1.2.2.1 Konfiguration des HTTP Connectors
              -

              TODO: server.xml auf 7 umstellen

              -

              Die Datei $MOA_SPSS_INST/tomcat/server.xml enthält eine minimale Tomcat-Konfiguration für Apache Tomcat 7, die ausschließlich den Connector für HTTP auf Port 8080 freischaltet. Durch Kopieren dieser Datei nach $CATALINA_HOME/conf/server.xml kann Tomcat mit dieser Konfiguration gestartet werden. Wir empfehlen diese Konfiguration nur für Fälle, in denen das MOA SP/SS Webservice in einer abgeschlossenen Netzwerkumgebung betrieben wird.

              -
              2.1.2.2.2 Konfiguration des HTTPS Connectors
              +

              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.

              +
              2.1.2.2.2 Konfiguration des HTTPS Connectors

              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:

              • 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.
              • @@ -306,11 +305,10 @@ INFO | 01 21:25:26,540 | Thread-3 | TID=1049225059594-100 NID=<null>
                2.2.1.1.1 Konfiguration von mod_jk im MS IIS

                Für die Kommunikation des MS IIS mit dem im Tomcat eingerichteten MOA SP/SS Webservice wird das ISAPI-Modul von mod_jk im MS IIS installiert und konfiguriert. Eine detaillierte Installations- und Konfigurationsanleitung gibt das mod_jk IIS HowTo. Beispiele für workers.properties und uriworkermap.properties Dateien liegen im Verzeichnis $MOA_SPSS_INST/tomcat bei.

                2.2.1.1.2 Konfiguration von Tomcat
                -

                TODO: Update server.mod_jk.xml

                -

                Damit Tomcat die Aufrufe entgegennehmen kann, die von MS IIS mittels mod_jk weiterleitet werden, muss in $CATALINA_HOME/conf/server.xml der AJP 1.3 Connector 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 Connector Konfigurations-Elemente in dieser Datei. Die Datei $MOA_SPSS_INST/tomcat/server.mod_jk.xml enthält eine Konfiguration, die ausschließlich den Port für den AJP 1.3 Connector offen lässt.

                +

                Damit Tomcat die Aufrufe entgegennehmen kann, die von MS IIS mittels mod_jk weiterleitet werden, muss in $CATALINA_HOME/conf/server.xml der AJP Connector 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 Connector Konfigurations-Elemente in dieser Datei.

                2.2.1.1.3 Konfiguration von SSL

                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.

                -

                2.2.1.2 Apache

                +

                2.2.1.2 Apache

                Den MOA SP/SS Webservices kann ein Apache Webserver vorgeschaltet sein. Das Prinzip funktioniert wie bei MS IIS, auch hier wird mod_jk für die Kommunikation zwischen Webserver und Tomcat eingesetzt. Die angeführten Konfigurationsschritte gehen von einer Standard-Installation des Apache Webservers aus.

                2.2.1.2.1 Konfiguration von mod_jk im Apache

                Um das MOA-SPSS Webservice hinter einem Apache Webserver zu betreiben, ist die Konfiguration des Apache-Moduls mod_jk erforderlich. Eine detaillierte Installations- und Konfigurationsanleitung gibt das mod_jk Apache HowTo. Ein Beispiel für eine workers.properties Datei liegt im Verzeichnis $MOA_SPSS_INST/tomcat bei.

                diff --git a/spss/handbook/handbook/usage/usage.html b/spss/handbook/handbook/usage/usage.html index 1ac817a45..bafb6da29 100644 --- a/spss/handbook/handbook/usage/usage.html +++ b/spss/handbook/handbook/usage/usage.html @@ -27,19 +27,27 @@

                Verwendung des Webservices

                1. XML-Requests
                    -
                  1. Erstellung einer XML-Signatur
                      +
                    1. Erstellung einer CMS bzw. CAdES-Signatur
                    2. +
                        +
                      1. Einfaches Beispiel
                      2. +
                      3. Erweitertes Beispiel
                      4. +
                      +
                    3. Erstellung einer XML bzw. XAdES-Signatur +
                      1. Einfaches Beispiel
                      2. Angabe der zu signierenden Daten
                      3. Transformationen
                      4. Ergänzungsobjekte
                      5. -
                      +
                  2. -
                  3. Prüfung einer CMS-Signatur
                      +
                    1. Prüfung einer CMS bzw. CAdES-Signatur +
                      1. Einfaches Beispiel
                      2. Erweitertes Beispiel
                    2. -
                    3. Prüfung einer XML-Signatur
                        +
                      1. Prüfung einer XML bzw. XAdES-Signatur +
                        1. Einfaches Beispiel
                        2. Erweitertes Beispiel
                        3. Prüfung eines XMLDSIG-Manifests
                        4. @@ -79,21 +87,28 @@

                          2.1 XML-Requests

                          Dieser Abschnitt stellt typische XML-Requests für die Erstellung einer XML-Signatur mittels SS bzw. zur Prüfung einer CMS- bzw. XML-Signatur mittels SP vor. Zu jedem Request wird jeweils auch eine typische Response des Services besprochen.

                          Bitte beachten Sie: Einige der vorgestellten Requests referenzieren beispielhafte Daten auf localhost, z.B. http://localhost:8080/referencedData/Text.txt. 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 localhost:8080 betreiben, ist es ausreichend, wenn sie die diesem Handbuch beiliegende Webapplikation referencedData.war in das Verzeichnis webapps Ihrer Tomcat-Installation kopieren. Ansonsten müssen Sie zusätzlich die URLs in den Requests anpassen.

                          -

                           

                          -

                          TODO Erstellung einer CMS/CAdES Signatur

                          -

                          2.1.1 Erstellung einer XML-Signatur

                          -

                          2.1.1.1 Einfaches Beispiel

                          +

                          2.1.1 Erstellung einer CMS bzw. CAdES-Signatur

                          +

                          2.1.1.1 Einfaches Beispiel

                          +

                          TODO

                          + +

                          2.1.1.1 Erweitertes Beispiel

                          + +

                          TODO

                          +

                          2.1.2 Erstellung einer XML bzw. XAdES-Signatur

                          +

                          MOA-SS ermöglicht die Erstellung einer herkömmlichen XML-Signatur und einer XAdES-Signatur gemäß der Security-Layer Spezifikation V1.1. Die Auswahl ob eine herkömmliche XML oder eine Security-Layer konforme XAdES-Signatur erstellt wird, erfolgt durch das Attribute SecurityLayerConformity im Signaturerstelltungs-Request (siehe auch folgende Beispiele).

                          +

                          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 Konfiguration der XAdES Version).

                          +

                          2.1.2.1 Einfaches Beispiel

                          Request

                          CreateXMLSignatureRequest.Simple.xml ist ein einfacher XML-Request zur Erzeugung einer XML-Signatur. Sein Aufbau wird nachfolgend analysiert:

                            <KeyIdentifier>KG_allgemein</KeyIdentifier> 

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

                            <SingleSignatureInfo SecurityLayerConformity="false">
                          -

                          Für jedes SingleSignatureInfoElement wird eine eigene XML-Signatur erzeugt. Wird das Attribut SecurityLayerConformity auf true gesetzt, dann wird eine XML-Signatur gemäß Security-Layer Spezifikation V1.1 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.

                          -
                              <DataObjectInfo Structure="enveloping">
                          +  

                          Für jedes SingleSignatureInfoElement wird eine eigene XML-Signatur erzeugt. Wird das Attribut SecurityLayerConformity auf true gesetzt, dann wird eine XML-Signatur gemäß Security-Layer Spezifikation V1.1 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).

                          +
                              <DataObjectInfo Structure="enveloping">
                                 <DataObject>
                                   <XMLContent>Diese Daten werden signiert.<XMLContent>
                                 </DataObject>
                          -

                          +

                          Für jedes Daten-Objekt, das in die XML-Signatur als dsig:Reference aufgenommen werden soll, muss ein DataObjectInfo Element spezifiziert werden. Das Attribut Structure gibt an, ob die Daten in die Signatur in ein dsig:Object Element integriert werden sollen (Structure="enveloping"), oder über einen URL referenziert werden sollen (Structure="detached").

                          Im Fall von Structure="enveloping" muss im nachfolgenden DataObject Element entweder das Attribut Reference (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 Base64Content (enthält Daten in Base64 kodierter Form) oder XMLContent (enthält Daten als beliebiges XML-Fragment) oder LocRefContent (enthält eine URL, von der SS die Daten beziehen soll; in diesem Fall also gleichwertig wie ein gesetztes Attribut Reference) spezifiziert sein. Die Angabe der zu signierenden Daten über das Attribut Reference und gleichzeitig einem der Elemente Base64Content oder XMLContent oder LocRefContent ist nicht erlaubt.

                          Im Fall von Structure="detached" muss das Attribut Reference im nachfolgenden DataObject Element gesetzt sein. Es enthält jene URL, die zur Referenzierung der Daten als Wert von dsig:Reference/@URI in die XML-Signatur aufgenommen wird. Die Angabe eines der Element Base64Content oder XMLContent oder LocRefContent ist optional. Unterbleibt die Angabe, bezieht SS die Daten von der URL im Attribut Reference. Wird eines der Elemente verwendet, bezieht SS die Daten durch Analyse des angegebenen Elements (siehe obiger Absatz).

                          @@ -122,7 +137,7 @@ </dsig:Signature>
                          </SignatureEnvironment>
                          </CreateXMLSignatureResponse>

                          CreateXMLSignatureResponse enthält je erzeugter Signatur ein Element SignatureEnvironment (in diesem Fall genau ein Element). SignatureEnvironment 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 dsig:Reference Element ist enthalten). Das unterzeichnete Datenobjekt ist in der Signaturstruktur selbst enthalten (enveloping), und zwar in einem dsig:Object Element.

                          -

                          2.1.1.2 Angabe der zu signierenden Daten

                          +

                          2.1.2.2 Angabe der zu signierenden Daten

                          Request

                          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).

                          Mit CreateXMLSignatureRequest.Refs.xml sollen insgesamt neun Datenobjekte signiert werden:

                          @@ -420,7 +435,7 @@ Ich habe weiters ein eigenens ID-Attribut bekommen.</doc:Paragraph> </dsig:Object>

                          Das fünfte dsig:Object enthält das dsig:Manifest, das von MOA SS auf Grund des ersten bzw. fünften DataObjectInfo des Requests erstellt wurde. Darin enthalten sind die zum ersten und fünten DataObjectInfo korrespondierenden dsig:Reference Elemente. Die Daten für die erste im dsig:Manifest enthaltene dsig:Reference wurden aus dem Base64Content Element des ersten DataObjectInfo entnommen, jene für die zweite dsig:Reference aus dem Base64Content Element des fünften DataObjectInfo. Der Wert des URI Attributs der zweiten dsig:Reference wurde aus dem DataObject/@Reference des fünften DataObjectInfo übernommen.

                          -

                          2.1.1.3 Transformationen

                          +

                          2.1.2.3 Transformationen

                          Request

                          Dieses Beispiel (CreateXMLSignatureRequest.Transforms.xml) 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.

                          <CreateXMLSignatureRequest
                          @@ -536,7 +551,7 @@ Ich habe weiters ein eigenens ID-Attribut bekommen.</doc:Paragraph>
                                   </dsig:Reference>
                           

                          Die zweite dsig:Reference wurde auf Grund des zweiten DataObjectInfo im Request erstellt. Man erkennt auch hier gut, dass die URL auf die Referenz-Eingangsdaten (Wert des Attributs dsig:Reference/@URI) aus DataObject/@Reference übernommen und die drei Transformationen wie im Request angegeben eingefügt wurden.

                          -

                          2.1.1.4 Ergänzungsobjekte

                          +

                          2.1.2.4 Ergänzungsobjekte

                          Request

                          Dieses Beispiel (CreateXMLSignatureRequest.Supplements.xml) stellt die Verwendung von Ergänzungsobjekten vor. Ein Ergänzungsobjekt betrifft entweder ein zu signierendes Datum (Zusammenhang mit einem DataObject) oder jenes Dokument, in das eine zu erzeugende Signatur eingefügt werden soll (Zusammenhang mit CreateSignatureEnvironment). 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.

                          @@ -602,8 +617,8 @@ Ich habe weiters ein eigenens ID-Attribut bekommen.</doc:Paragraph>
                           

                          Auch für das Auflösen eines Verweises in einer DTD kann in analoger Weise von Ergänzungsobjekten Gebrauch gemacht werden.

                          Response

                          CreateXMLSignatureRequest.Supplements.resp.xml 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.

                          -

                          2.1.2 Prüfung einer CMS-Signatur

                          -

                          2.1.2.1 Einfaches Beispiel

                          +

                          2.1.3 Prüfung einer CMS bzw. CAdES-Signatur

                          +

                          2.1.3.1 Einfaches Beispiel

                          Request

                          Dieses Beispiel (VerifyCMSSignatureRequest.Simple.xml) 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.

                          @@ -650,7 +665,7 @@ O=A-Trust Ges. für Sicherheitssysteme im elektr. Datenverkehr GmbH,C=AT<
                             </CertificateCheck>
                           

                          Abschließend enthält die Response mit CertificateCheck/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. Trust Anchor gebildet werden kann. Gelingt dies, wird die Gültigkeit jedes Zertifikats dieser Kette überprüft. In unserem Beispiel enthält Code den Wert 1, d. h. MOA SP konnte die oben erläuterte Zertifikatskette nicht bilden. Für eine Übersicht der möglichen Kodes siehe Security-Layer 1.2.

                          -

                          2.1.2.2 Erweitertes Beispiel

                          +

                          2.1.3.2 Erweitertes Beispiel

                          Request

                          Dieses erweiterte Beispiel zur Prüfung einer CMS-Signatur (VerifyCMSSignatureRequest.Extended.xml) demonstriert die Prüfung mehrerer Signatoren einer CMS-Signatur, die Angabe des Prüfzeitpunkts sowie die Prüfung einer Detached Signature, d. h. einer Signatur, in der die signierten Daten nicht enthalten sind und daher extra angegeben werden müssen.

                          @@ -672,8 +687,8 @@ O=A-Trust Ges. für Sicherheitssysteme im elektr. Datenverkehr GmbH,C=AT<
                           

                          Das optionale Element DataObject muss dann angegeben werden, wenn eine Detached Signature geprüft werden soll, d. h. wenn in der CMS-Signatur die signierten Daten nicht mitkodiert sind. In DataObject/Content/Base64Content sind in einem solchen Fall diese Daten in base64 kodierter Form bereit zu stellen.

                          Response

                          VerifyCMSSignatureRequest.Extended.resp.xml 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.

                          -

                          2.1.3 Prüfen einer XML-Signatur

                          -

                          2.1.3.1 Einfaches Beispiel

                          +

                          2.1.4 Prüfen einer XML-Signatur

                          +

                          2.1.4.1 Einfaches Beispiel

                          Request

                          VerifyXMLSignatureRequest.Simple.xml 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.

                          @@ -748,7 +763,7 @@ O=A-Trust Ges. für Sicherheitssysteme im elektr. Datenverkehr GmbH,C=AT<
                             </CertificateCheck>
                           

                          Abschließend enthält die Response mit CertificateCheck/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. Trust Anchor gebildet werden kann. Gelingt dies, wird die Gültigkeit jedes Zertifikats dieser Kette überprüft. In unserem Beispiel enthält Code den Wert 0, 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 Security-Layer 1.2.

                          -

                          2.1.3.2 Erweitertes Beispiel

                          +

                          2.1.4.2 Erweitertes Beispiel

                          Request

                          Dieses erweiterte Beispiel zur Prüfung einer XML-Signatur (VerifyXMLSignatureRequest.Enveloped.xml) demonstriert die Prüfung einer Enveloped Signature, 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.

                          @@ -816,7 +831,7 @@ positive Ganzzahl repräsentiert, die auf das beinhaltende dsig:Manife
                           </VerifyXMLSignatureResponse>
                           

                          Die Elemente SignatureCheck und CertificateCheck enthalten die Resultate der kryptographischen Prüfung der Signatur sowie der Zertifikatsprüfung (siehe Einfaches Beispiel).

                          -

                          2.1.3.3 Prüfung eines XMLDSIG-Manifests

                          +

                          2.1.4.3 Prüfung eines XMLDSIG-Manifests

                          Request

                          Dieses Beispiel zur Prüfung einer XML-Signatur (VerifyXMLSignatureRequest.XMLDSigManifest.xml) demonstriert die Prüfung eines in der XML-Signatur vorhandenden Manifests nach XMLDSig. Bitte beachten Sie, dass der dargestellte Request zur bessernen Lesbarkeit eingerückt und gekürzt wurde.

                          @@ -892,7 +907,7 @@ positive Ganzzahl repräsentiert, die auf das beinhaltende dsig:Manife
                           </VerifyXMLSignatureResponse>
                           

                          Das Element CertificateCheck enthält das Resultat der Zertifikatsprüfung (siehe Einfaches Beispiel).

                          -

                          2.3.1.4 Ergänzungsobjekte

                          +

                          2.1.4.4 Ergänzungsobjekte

                          Dieses Beispiel zur Prüfung einer XML-Signatur (VerifyXMLSignatureRequest.Supplements.xml) demonstriert die Verwendung von Ergänzungsobjekten. Ein Ergänzungsobjekt betrifft entweder ein signiertes Datum (Zusammenhang mit einem dsig:Reference der XML-Signatur) oder jenes Dokument, in dem sich die zu prüfende XML-Signatur befindet (Zusammenhang mit VerifySignatureEnvironment). 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.

                          Bitte beachten Sie, dass der dargestellte Request zur bessernen Lesbarkeit eingerückt und gekürzt wurde.

                          @@ -960,7 +975,7 @@ Ich habe weiters ein eigenens ID-Attribut bekommen.</doc:Paragraph>
                           

                          Das zweite Element SupplementProfile enthält analog das Ergänzungsobjekt für das oben beschriebene XML-Schema. Content/@Reference enthält die Referenz genau so, wie sie oben im Attribut xsi:schemaLocation angegeben wurde.

                          Response

                          VerifyXMLSignatureRequest.Supplements.resp.xml 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.

                          -

                          2.1.3.5 Signatur-Manifest des Security-Layers

                          +

                          2.1.4.5 Signatur-Manifest des Security-Layers

                          Request

                          Dieses Beispiel zur Prüfung einer XML-Signatur (VerifyXMLSignatureRequest.SigManifest.xml) demonstriert die Überprüfung des Zusammenhangs zwischen den Referenz-Eingangsdaten und den Hash-Eingangsdaten für die dsig:Reference-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. Implizite Transformationsparameter) einer XSLT-Transformation angewendet wurden, welche die Anwendung vorgegeben hat. Bei erfolgreicher Prüfung dieses Zusammenhangs kann die Anwendung die Referenz-Eingangsdaten einer dsig:Reference 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.

                          @@ -1139,28 +1154,23 @@ Ich habe weiters ein eigenens ID-Attribut bekommen.</doc:Paragraph>
                           

                          2.2.2 Gemeinsamkeiten

                          Dieser Abschnitt beschreibt die Gemeinsamkeiten aller drei Varianten des Webservice-Clients.

                          Zunächst einmal benötigen alle drei Varianten die folgenden Java-Bibliotheken, die im Ordner clients/webservice/lib/ dieses Handbuchs bereits enthalten sind:

                          -

                          TODO Update Versions

                          -

                          TODO kein lib Verzeichnis

                          - - - + + + + - + - - - - - +
                          Java-Bibliothek Bemerkung
                          J2SE J2SE 1.3.1 SDK oder J2SE 1.4.2 SDK oder J2SE 5.0 SDK.
                          Java SEJava Standard Edition (Software Development Kit bzw. Java Runtime Environment)
                          Apache XercesXML-Parser, Version 2.0.2 oder höher; nicht nötig wenn JDSE 1.4.2 oder höher verwendet wird. XML-Parser, Version 2.0.2 oder höher
                          AXIS FrameworkWebservice-Framework, Version 1.1.
                          JSSEJava Secure Socket Extension, Version 1.0.3 oder höher; nur notwendig für die Varianten HTTPServerAuth und HTTPClientAuth.Webservice-Framework, ab Version 1.1.
                          @@ -1178,13 +1188,13 @@ Ich habe weiters ein eigenens ID-Attribut bekommen.</doc:Paragraph>
                        5. 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. http.properties enthält eine auf dieses Handbuch abgestimmte Konfiguration.

                        2.2.3 Besonderheiten von HTTPSServerAuth.java

                        -

                        Diese Variante des Webservice-Clients verwendet JSSE, um im Schritt 3 des Kernablaufs aus Abschnitt 2.2.2 eine SSL-Verbindung mit Server-Authentifizierung zum MOA SP/SS Server aufzubauen. In dieser SSL-Verbindung sendet der Webservice-Client dann den erstellten SOAP-Request über HTTPS.

                        -

                        Die Konfiguration von JSSE (Speicher für die vertrauenswürdigen Serverzertifikate, Typ dieses Speichers, Passwort für diesen Speicher) wird mittels zusätzlicher Parameter in der in Abschnitt 2.2.2 besprochenen Java-Properties-Datei vorgenommen. Genaue Infos zu diesen Konfigurationsparametern entnehmen Sie bitte der Quellcodedokumentation von HTTPSServerAuth.java. http.properties enthält eine auf dieses Handbuch abgestimmte Konfiguration.

                        -

                        Falls Sie Probleme beim SSL-Verbindungsaufbau zwischen Webservice-Client und MOA SP/SS Webservice haben, empfiehlt sich die Aktivierung des JSSE Loggings. Das Setzen der dafür notwendigen Java System Property ist im Quellcode von HTTPSServerAuth.java bereits enthalten, jedoch auskommentiert. Suchen Sie einfach nach dem String javax.net.debug, um zur entsprechenden Stelle im Quellcode zu gelangen.

                        +

                        Diese Variante des Webservice-Clients baut im Schritt 3 des Kernablaufs aus Abschnitt 2.2.2 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.

                        +

                        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 Abschnitt 2.2.2 besprochenen Java-Properties-Datei vorgenommen. Genaue Infos zu diesen Konfigurationsparametern entnehmen Sie bitte der Quellcodedokumentation von HTTPSServerAuth.java. http.properties enthält eine auf dieses Handbuch abgestimmte Konfiguration.

                        +

                        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 HTTPSServerAuth.java bereits enthalten, jedoch auskommentiert. Suchen Sie einfach nach dem String javax.net.debug, um zur entsprechenden Stelle im Quellcode zu gelangen.

                        2.2.4 Besonderheiten von HTTPSClientAuth.java

                        -

                        Diese Variante des Webservice-Clients verwendet JSSE, um im Schritt 3 des Kernablaufs aus Abschnitt 2.2.2 eine SSL-Verbindung mit Server- und Client-Authentifizierung zum MOA SP/SS Server aufzubauen. In dieser SSL-Verbindung sendet der Webservice-Client dann den erstellten SOAP-Request über HTTPS.

                        -

                        Die gegenüber Abschnitt 2.2.3 zusätzlich notwendige Konfiguration von JSSE (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 Abschnitt 2.2.2 besprochenen Java-Properties-Datei vorgenommen. Genaue Infos zu diesen Konfigurationsparametern entnehmen Sie bitte der Quellcodedokumentation von HTTPSClientAuth.java. http.properties enthält eine auf dieses Handbuch abgestimmte Konfiguration.

                        -

                        Beachten Sie bitte auch den Hinweis zum JSSE Logging aus Abschnitt 2.2.3.

                        +

                        Diese Variante des Webservice-Clients baut im Schritt 3 des Kernablaufs aus Abschnitt 2.2.2 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.

                        +

                        Die gegenüber Abschnitt 2.2.3 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 Abschnitt 2.2.2 besprochenen Java-Properties-Datei vorgenommen. Genaue Infos zu diesen Konfigurationsparametern entnehmen Sie bitte der Quellcodedokumentation von HTTPSClientAuth.java. http.properties enthält eine auf dieses Handbuch abgestimmte Konfiguration.

                        +

                        Beachten Sie bitte auch den Hinweis zum SSL Logging aus Abschnitt 2.2.3.

                        3 Verwendung der Klassenbibliothek

                        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.

                        3.1 Vorbereitung

                        @@ -1205,7 +1215,6 @@ Ich habe weiters ein eigenens ID-Attribut bekommen.</doc:Paragraph>

                        A Referenzierte Software

                        Auf folgende Software-Pakete wird in diesem Handbuch verwiesen:

                        -

                        TODO Update Versions

                        @@ -1217,21 +1226,13 @@ Ich habe weiters ein eigenens ID-Attribut bekommen.</doc:Paragraph> - + - - - - - - - - - - - + + +
                        XML-Parser aus dem Apache Project
                        Apache AxisApache Axis Webservice-Framework aus dem Apache Project
                        J2SE 1.4.2 SDK/JREJava 2 Standard Edition in der Version 1.4.2 (Software Development Kit bzw. Java Runtime Environment)
                        J2SE 5.0 SDK/JRE Java 2 Standard Edition in der Version 5.0 (Software Development Kit bzw. Java Runtime Environment)
                        JSSEJava Secure Socket Extension
                        Java SEJava Standard Edition (Software Development Kit bzw. Java Runtime Environment)

                         

                        diff --git a/spss/server/serverlib/resources/data/deploy/tomcat/server.mod_jk.xml b/spss/server/serverlib/resources/data/deploy/tomcat/server.mod_jk.xml deleted file mode 100644 index e6035b8be..000000000 --- a/spss/server/serverlib/resources/data/deploy/tomcat/server.mod_jk.xml +++ /dev/null @@ -1,166 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/spss/server/serverlib/resources/data/deploy/tomcat/server.xml b/spss/server/serverlib/resources/data/deploy/tomcat/server.xml deleted file mode 100644 index 3e5966ca9..000000000 --- a/spss/server/serverlib/resources/data/deploy/tomcat/server.xml +++ /dev/null @@ -1,169 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -- cgit v1.2.3 From a544afcf4ad581ab7b76e85dc597ccf5643cd55a Mon Sep 17 00:00:00 2001 From: Klaus Stranacher Date: Mon, 6 May 2013 21:43:00 +0200 Subject: - Update MOA-SS Interface (CreateCMSignatureRequest) - Whitelisting in MOA-SPSS --- spss/handbook/clients/api/.classpath | 82 +-- .../api/.settings/org.eclipse.jdt.core.prefs | 12 +- spss/handbook/clients/referencedData/.classpath | 10 +- .../.settings/org.eclipse.jdt.core.prefs | 12 +- .../.settings/org.eclipse.wst.common.component | 5 +- .../org.eclipse.wst.common.project.facet.core.xml | 4 +- spss/handbook/clients/webservice/.classpath | 8 +- .../.settings/org.eclipse.jdt.core.prefs | 12 +- ...rifyXMLSignatureRequest.FileURIs.DataObject.xml | 2 +- ...SignatureRequest.FileURIs.ServerSupplements.xml | 2 +- ...ifyXMLSignatureRequest.FileURIs.Supplements.xml | 2 +- ...AIK-Test-Root-CA_20080114-20180114.SerNo.01.der | Bin 0 -> 880 bytes spss/handbook/handbook/intro/intro.html | 8 +- spss/handbook/handbook/spec/MOA-SPSS-1.3.wsdl | 105 ---- spss/handbook/handbook/spec/MOA-SPSS-1.3.xsd | 469 ------------------ spss/handbook/handbook/spec/MOA-SPSS-1.5.2.wsdl | 128 +++++ spss/handbook/handbook/spec/MOA-SPSS-1.5.2.xsd | 474 ++++++++++++++++++ spss/handbook/handbook/usage/usage.html | 23 +- .../serverlib/.settings/org.eclipse.jdt.core.prefs | 5 - .../org.eclipse.wst.common.project.facet.core.xml | 4 +- .../gv/egovernment/moa/spss/api/SPSSFactory.java | 87 ++++ .../moa/spss/api/cmssign/CMSSignatureResponse.java | 41 ++ .../api/cmssign/CreateCMSSignatureRequest.java | 49 ++ .../api/cmssign/CreateCMSSignatureResponse.java | 42 ++ .../cmssign/CreateCMSSignatureResponseElement.java | 51 ++ .../moa/spss/api/cmssign/DataObjectInfo.java | 58 +++ .../moa/spss/api/cmssign/SingleSignatureInfo.java | 51 ++ .../spss/api/impl/CMSSignatureResponseImpl.java | 64 +++ .../api/impl/CreateCMSSignatureRequestImpl.java | 77 +++ .../api/impl/CreateCMSSignatureResponseImpl.java | 60 +++ .../moa/spss/api/impl/DataObjectInfoCMSImpl.java | 69 +++ .../moa/spss/api/impl/SPSSFactoryImpl.java | 49 ++ .../spss/api/impl/SingleSignatureInfoCMSImpl.java | 62 +++ .../xmlbind/CreateCMSSignatureRequestParser.java | 247 +++++++++ .../xmlbind/CreateCMSSignatureResponseBuilder.java | 145 ++++++ .../server/config/ConfigurationPartsBuilder.java | 3 +- .../cmssign/CMSSignatureCreationProfileImpl.java | 249 ++++++++++ .../xmlsign/XMLSignatureCreationProfileImpl.java | 2 +- .../server/invoke/CMSSignatureCreationInvoker.java | 396 +++++++++++++++ .../invoke/CMSSignatureVerificationInvoker.java | 3 +- .../invoke/CreateCMSSignatureResponseBuilder.java | 93 ++++ .../spss/server/invoke/IaikExceptionMapper.java | 3 +- .../invoke/VerifyCMSSignatureResponseBuilder.java | 5 +- .../moa/spss/server/service/AxisHandler.java | 3 +- .../server/service/SignatureCreationService.java | 88 ++++ .../properties/spss_messages_de.properties | 2 + .../resources/resources/wsdl/MOA-SPSS-1.3.wsdl | 105 ---- .../main/resources/resources/wsdl/MOA-SPSS-1.3.xsd | 469 ------------------ .../resources/resources/wsdl/MOA-SPSS-1.5.2.wsdl | 128 +++++ .../resources/resources/wsdl/MOA-SPSS-1.5.2.xsd | 471 ++++++++++++++++++ spss/server/serverws/.classpath | 1 + spss/server/serverws/.project | 9 +- .../serverws/.settings/org.eclipse.jdt.core.prefs | 14 +- .../.settings/org.eclipse.wst.common.component | 3 + spss/server/serverws/pom.xml | 3 +- .../serverws/resources/wsdl/MOA-SPSS-1.3.wsdl | 105 ---- .../serverws/resources/wsdl/MOA-SPSS-1.3.xsd | 469 ------------------ .../serverws/resources/wsdl/MOA-SPSS-1.5.2.wsdl | 128 +++++ .../serverws/resources/wsdl/MOA-SPSS-1.5.2.xsd | 551 +++++++++++++++++++++ .../src/main/webapp/WEB-INF/server-config.wsdd | 9 +- spss/server/tools/.classpath | 24 +- .../tools/.settings/org.eclipse.jdt.core.prefs | 12 +- 62 files changed, 4009 insertions(+), 1858 deletions(-) create mode 100644 spss/handbook/conf/moa-spss/trustProfiles/test/IAIK-Test-Root-CA_20080114-20180114.SerNo.01.der delete mode 100644 spss/handbook/handbook/spec/MOA-SPSS-1.3.wsdl delete mode 100644 spss/handbook/handbook/spec/MOA-SPSS-1.3.xsd create mode 100644 spss/handbook/handbook/spec/MOA-SPSS-1.5.2.wsdl create mode 100644 spss/handbook/handbook/spec/MOA-SPSS-1.5.2.xsd create mode 100644 spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/api/cmssign/CMSSignatureResponse.java create mode 100644 spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/api/cmssign/CreateCMSSignatureRequest.java create mode 100644 spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/api/cmssign/CreateCMSSignatureResponse.java create mode 100644 spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/api/cmssign/CreateCMSSignatureResponseElement.java create mode 100644 spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/api/cmssign/DataObjectInfo.java create mode 100644 spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/api/cmssign/SingleSignatureInfo.java create mode 100644 spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/api/impl/CMSSignatureResponseImpl.java create mode 100644 spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/api/impl/CreateCMSSignatureRequestImpl.java create mode 100644 spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/api/impl/CreateCMSSignatureResponseImpl.java create mode 100644 spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/api/impl/DataObjectInfoCMSImpl.java create mode 100644 spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/api/impl/SingleSignatureInfoCMSImpl.java create mode 100644 spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/api/xmlbind/CreateCMSSignatureRequestParser.java create mode 100644 spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/api/xmlbind/CreateCMSSignatureResponseBuilder.java create mode 100644 spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/cmssign/CMSSignatureCreationProfileImpl.java create mode 100644 spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/CMSSignatureCreationInvoker.java create mode 100644 spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/CreateCMSSignatureResponseBuilder.java delete mode 100644 spss/server/serverlib/src/main/resources/resources/wsdl/MOA-SPSS-1.3.wsdl delete mode 100644 spss/server/serverlib/src/main/resources/resources/wsdl/MOA-SPSS-1.3.xsd create mode 100644 spss/server/serverlib/src/main/resources/resources/wsdl/MOA-SPSS-1.5.2.wsdl create mode 100644 spss/server/serverlib/src/main/resources/resources/wsdl/MOA-SPSS-1.5.2.xsd delete mode 100644 spss/server/serverws/resources/wsdl/MOA-SPSS-1.3.wsdl delete mode 100644 spss/server/serverws/resources/wsdl/MOA-SPSS-1.3.xsd create mode 100644 spss/server/serverws/resources/wsdl/MOA-SPSS-1.5.2.wsdl create mode 100644 spss/server/serverws/resources/wsdl/MOA-SPSS-1.5.2.xsd (limited to 'spss') diff --git a/spss/handbook/clients/api/.classpath b/spss/handbook/clients/api/.classpath index cb29bfb96..95a3df914 100644 --- a/spss/handbook/clients/api/.classpath +++ b/spss/handbook/clients/api/.classpath @@ -1,41 +1,45 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/spss/handbook/clients/api/.settings/org.eclipse.jdt.core.prefs b/spss/handbook/clients/api/.settings/org.eclipse.jdt.core.prefs index 48249af31..c788ee346 100644 --- a/spss/handbook/clients/api/.settings/org.eclipse.jdt.core.prefs +++ b/spss/handbook/clients/api/.settings/org.eclipse.jdt.core.prefs @@ -1,6 +1,8 @@ -#Thu Dec 27 15:45:23 CET 2012 -org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning -org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5 eclipse.preferences.version=1 -org.eclipse.jdt.core.compiler.source=1.5 -org.eclipse.jdt.core.compiler.compliance=1.5 +org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7 +org.eclipse.jdt.core.compiler.compliance=1.7 +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning +org.eclipse.jdt.core.compiler.source=1.7 diff --git a/spss/handbook/clients/referencedData/.classpath b/spss/handbook/clients/referencedData/.classpath index 0173dfd90..d888b90e9 100644 --- a/spss/handbook/clients/referencedData/.classpath +++ b/spss/handbook/clients/referencedData/.classpath @@ -1,5 +1,9 @@ - - - \ No newline at end of file + + + + + + + diff --git a/spss/handbook/clients/referencedData/.settings/org.eclipse.jdt.core.prefs b/spss/handbook/clients/referencedData/.settings/org.eclipse.jdt.core.prefs index 86859a78d..c788ee346 100644 --- a/spss/handbook/clients/referencedData/.settings/org.eclipse.jdt.core.prefs +++ b/spss/handbook/clients/referencedData/.settings/org.eclipse.jdt.core.prefs @@ -1,6 +1,8 @@ -#Thu Dec 27 15:45:22 CET 2012 -org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning -org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5 eclipse.preferences.version=1 -org.eclipse.jdt.core.compiler.source=1.5 -org.eclipse.jdt.core.compiler.compliance=1.5 +org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7 +org.eclipse.jdt.core.compiler.compliance=1.7 +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning +org.eclipse.jdt.core.compiler.source=1.7 diff --git a/spss/handbook/clients/referencedData/.settings/org.eclipse.wst.common.component b/spss/handbook/clients/referencedData/.settings/org.eclipse.wst.common.component index 0929e364c..2063ba643 100644 --- a/spss/handbook/clients/referencedData/.settings/org.eclipse.wst.common.component +++ b/spss/handbook/clients/referencedData/.settings/org.eclipse.wst.common.component @@ -1,8 +1,7 @@ - - + - \ No newline at end of file + diff --git a/spss/handbook/clients/referencedData/.settings/org.eclipse.wst.common.project.facet.core.xml b/spss/handbook/clients/referencedData/.settings/org.eclipse.wst.common.project.facet.core.xml index 564572b10..47b82b84e 100644 --- a/spss/handbook/clients/referencedData/.settings/org.eclipse.wst.common.project.facet.core.xml +++ b/spss/handbook/clients/referencedData/.settings/org.eclipse.wst.common.project.facet.core.xml @@ -3,5 +3,5 @@ - - \ No newline at end of file + + diff --git a/spss/handbook/clients/webservice/.classpath b/spss/handbook/clients/webservice/.classpath index d687b9b02..b75cb2821 100644 --- a/spss/handbook/clients/webservice/.classpath +++ b/spss/handbook/clients/webservice/.classpath @@ -12,15 +12,15 @@ - + + - + - - + diff --git a/spss/handbook/clients/webservice/.settings/org.eclipse.jdt.core.prefs b/spss/handbook/clients/webservice/.settings/org.eclipse.jdt.core.prefs index 48249af31..c788ee346 100644 --- a/spss/handbook/clients/webservice/.settings/org.eclipse.jdt.core.prefs +++ b/spss/handbook/clients/webservice/.settings/org.eclipse.jdt.core.prefs @@ -1,6 +1,8 @@ -#Thu Dec 27 15:45:23 CET 2012 -org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning -org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5 eclipse.preferences.version=1 -org.eclipse.jdt.core.compiler.source=1.5 -org.eclipse.jdt.core.compiler.compliance=1.5 +org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7 +org.eclipse.jdt.core.compiler.compliance=1.7 +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning +org.eclipse.jdt.core.compiler.source=1.7 diff --git a/spss/handbook/clients/webservice/resources/requests/VerifyXMLSignatureRequest.FileURIs.DataObject.xml b/spss/handbook/clients/webservice/resources/requests/VerifyXMLSignatureRequest.FileURIs.DataObject.xml index 5b4b61938..26fe42d8f 100644 --- a/spss/handbook/clients/webservice/resources/requests/VerifyXMLSignatureRequest.FileURIs.DataObject.xml +++ b/spss/handbook/clients/webservice/resources/requests/VerifyXMLSignatureRequest.FileURIs.DataObject.xml @@ -3,7 +3,7 @@ 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-1.3.xsd + 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-1.5.2.xsd http://www.w3.org/2000/09/xmldsig# http://www.w3.org/TR/2002/REC-xmldsig-core-20020212/xmldsig-core-schema.xsd"> diff --git a/spss/handbook/clients/webservice/resources/requests/VerifyXMLSignatureRequest.FileURIs.ServerSupplements.xml b/spss/handbook/clients/webservice/resources/requests/VerifyXMLSignatureRequest.FileURIs.ServerSupplements.xml index 4b9fa43fe..417c29b3a 100644 --- a/spss/handbook/clients/webservice/resources/requests/VerifyXMLSignatureRequest.FileURIs.ServerSupplements.xml +++ b/spss/handbook/clients/webservice/resources/requests/VerifyXMLSignatureRequest.FileURIs.ServerSupplements.xml @@ -3,7 +3,7 @@ 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-1.3.xsd + 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-1.5.2.xsd http://www.w3.org/2000/09/xmldsig# http://www.w3.org/TR/2002/REC-xmldsig-core-20020212/xmldsig-core-schema.xsd"> diff --git a/spss/handbook/clients/webservice/resources/requests/VerifyXMLSignatureRequest.FileURIs.Supplements.xml b/spss/handbook/clients/webservice/resources/requests/VerifyXMLSignatureRequest.FileURIs.Supplements.xml index 27929cefd..ab8c1efd1 100644 --- a/spss/handbook/clients/webservice/resources/requests/VerifyXMLSignatureRequest.FileURIs.Supplements.xml +++ b/spss/handbook/clients/webservice/resources/requests/VerifyXMLSignatureRequest.FileURIs.Supplements.xml @@ -3,7 +3,7 @@ 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-1.3.xsd + 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-1.5.2.xsd http://www.w3.org/2000/09/xmldsig# http://www.w3.org/TR/2002/REC-xmldsig-core-20020212/xmldsig-core-schema.xsd"> diff --git a/spss/handbook/conf/moa-spss/trustProfiles/test/IAIK-Test-Root-CA_20080114-20180114.SerNo.01.der b/spss/handbook/conf/moa-spss/trustProfiles/test/IAIK-Test-Root-CA_20080114-20180114.SerNo.01.der new file mode 100644 index 000000000..38c2de589 Binary files /dev/null and b/spss/handbook/conf/moa-spss/trustProfiles/test/IAIK-Test-Root-CA_20080114-20180114.SerNo.01.der differ diff --git a/spss/handbook/handbook/intro/intro.html b/spss/handbook/handbook/intro/intro.html index a01a825b2..af479d2c5 100644 --- a/spss/handbook/handbook/intro/intro.html +++ b/spss/handbook/handbook/intro/intro.html @@ -32,14 +32,14 @@

                        1 Allgemeines

                        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.

                        TODO: CAdES auf SL1.2x aufbauend - wie siehts mir Rest aus?

                        -

                        Die Funktionalität und der Aufbau der Schnittstelle zu den beiden Modulen ist in der Spezifikation MOA SP/SS (V1.3) detailliert beschrieben. Da diese Spezifikation auf der Schnittstellenspezifikation des Security-Layers (V 1.1) aufbaut, ist deren Kenntnis zum Verstehen der Schnittstellen zu SS und SP erforderlich.

                        +

                        Die Funktionalität und der Aufbau der Schnittstelle zu den beiden Modulen ist in der Spezifikation MOA SP/SS (V2.0) detailliert beschrieben. Da diese Spezifikation auf der Schnittstellenspezifikation des Security-Layers (V 1.2x) TODO aufbaut, ist deren Kenntnis zum Verstehen der Schnittstellen zu SS und SP erforderlich.

                        2 Modul Serversignatur (SS)

                        -

                        Das Modul Serversignatur (SS) dient zum Erstellen von XML-Signaturen in Anlehnung an die Schnittstellenspezifikation des Security-Layers (V 1.1). 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.

                        +

                        Das Modul Serversignatur (SS) dient zum Erstellen von XML-Signaturen in Anlehnung an die Schnittstellenspezifikation des Security-Layers (V 1.2x TODO). 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.

                        Der Zugriff auf einzelne Signaturschlüssel in MOA SS kann basierend auf dem für TLS-Client-Authentisierung verwendeten Zertifikat eingeschränkt werden.

                        Anwendungen können das Modul entweder als Web-Service oder über ein Java-API ansprechen.

                        3 Modul Signaturprüfung (SP)

                        -

                        Das Modul Signaturprüfung (SP) dient zum Überprüfen von XML-Signaturen und CMS-Signaturen.

                        -

                        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 Schnittstellenspezifikation des Security-Layers (V 1.1) entsprechen (vgl. Signaturmanifest).

                        +

                        Das Modul Signaturprüfung (SP) dient zum Überprüfen von XML-Signaturen und CMS-Signaturen sowie den fortgeschrittenen Signaturen XAdES (TODO Link + Versionen) und CAdES (TODO Link + Versionen).

                        +

                        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 Schnittstellenspezifikation des Security-Layers (V 1.2x TODO) entsprechen (vgl. Signaturmanifest).

                        Anwendungen können das Modul entweder als Web-Service oder über ein Java-API ansprechen.

                        diff --git a/spss/handbook/handbook/spec/MOA-SPSS-1.3.wsdl b/spss/handbook/handbook/spec/MOA-SPSS-1.3.wsdl deleted file mode 100644 index 8ae1c1ff4..000000000 --- a/spss/handbook/handbook/spec/MOA-SPSS-1.3.wsdl +++ /dev/null @@ -1,105 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/spss/handbook/handbook/spec/MOA-SPSS-1.3.xsd b/spss/handbook/handbook/spec/MOA-SPSS-1.3.xsd deleted file mode 100644 index 756b51279..000000000 --- a/spss/handbook/handbook/spec/MOA-SPSS-1.3.xsd +++ /dev/null @@ -1,469 +0,0 @@ - - - - - - - - - - - - - - - - - - - - Ermöglichung der Stapelsignatur durch wiederholte Angabe dieses Elements - - - - - - - - - - - - - - - - - - - Auswahl: Entweder explizite Angabe des Signaturorts sowie ggf. sinnvoller Supplements im Zshg. mit der Signaturumgebung, oder Verweis auf ein benanntes Profil - - - - - - - - - - - - - - - - - - Kardinalität 1..oo erlaubt die Antwort auf eine Stapelsignatur-Anfrage - - - - Resultat, falls die Signaturerstellung erfolgreich war - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - mit diesem Profil wird eine Menge von vertrauenswürdigen Wurzelzertifikaten spezifiziert - - - - - - - - - - - only ds:X509Data and RetrievalMethod is supported; QualifiedCertificate is included as X509Data/any;publicAuthority is included as X509Data/any - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Pro dsig:Reference-Element in der zu überprüfenden XML-Signatur muss hier ein ReferenceInfo-Element erscheinen. Die Reihenfolge der einzelnen ReferenceInfo Elemente entspricht jener der dsig:Reference Elemente in der XML-Signatur. - - - - - - - - - - mit diesem Profil wird eine Menge von vertrauenswürdigen Wurzelzertifikaten spezifiziert - - - - - - - - - - - only ds:X509Data and ds:RetrievalMethod is supported; QualifiedCertificate is included as X509Data/any; PublicAuthority is included as X509Data/any - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Auswahl: Entweder explizite Angabe EINER Transformationskette inklusive ggf. sinnvoller Supplements oder Verweis auf ein benanntes Profil - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Resultat, falls die Signaturerstellung gescheitert ist - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Ein oder mehrere Transformationswege können von der Applikation an MOA mitgeteilt werden. Die zu prüfende Signatur hat zumindest einem dieser Transformationswege zu entsprechen. Die Angabe kann explizit oder als Profilbezeichner erfolgen. - - - - - Profilbezeichner für einen Transformationsweg - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Die Angabe des Transformationsparameters (explizit oder als Hashwert) kann unterlassen werden, wenn die Applikation von der Unveränderlichkeit des Inhalts der in "Transformationsparamter", Attribut "URI" angegebenen URI ausgehen kann. - - - - Der Transformationsparameter explizit angegeben. - - - - - Der Hashwert des Transformationsparameters. - - - - - - - - - - - - - - - - - - - - - - Explizite Angabe des Transformationswegs - - - - - - - Alle impliziten Transformationsparameter, die zum Durchlaufen der oben angeführten Transformationskette bekannt sein müssen, müssen hier angeführt werden. Das Attribut "URI" bezeichnet den Transformationsparameter in exakt jener Weise, wie er in der zu überprüfenden Signatur gebraucht wird. - - - - - - - - - - - - - - - - diff --git a/spss/handbook/handbook/spec/MOA-SPSS-1.5.2.wsdl b/spss/handbook/handbook/spec/MOA-SPSS-1.5.2.wsdl new file mode 100644 index 000000000..135f26f68 --- /dev/null +++ b/spss/handbook/handbook/spec/MOA-SPSS-1.5.2.wsdl @@ -0,0 +1,128 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/spss/handbook/handbook/spec/MOA-SPSS-1.5.2.xsd b/spss/handbook/handbook/spec/MOA-SPSS-1.5.2.xsd new file mode 100644 index 000000000..137ad6deb --- /dev/null +++ b/spss/handbook/handbook/spec/MOA-SPSS-1.5.2.xsd @@ -0,0 +1,474 @@ + + + + + + + + + + + + + + + + + + + + + + + + + Ermöglichung der Stapelsignatur durch wiederholte Angabe dieses Elements + + + + + + + + + + + + + + + + + + + Auswahl: Entweder explizite Angabe des Signaturorts sowie ggf. sinnvoller Supplements im Zshg. mit der Signaturumgebung, oder Verweis auf ein benanntes Profil + + + + + + + + + + + + + + + + + + Kardinalität 1..oo erlaubt die Antwort auf eine Stapelsignatur-Anfrage + + + + Resultat, falls die Signaturerstellung erfolgreich war + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + mit diesem Profil wird eine Menge von vertrauenswürdigen Wurzelzertifikaten spezifiziert + + + + + + + + + + + only ds:X509Data and RetrievalMethod is supported; QualifiedCertificate is included as X509Data/any;publicAuthority is included as X509Data/any + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Pro dsig:Reference-Element in der zu überprüfenden XML-Signatur muss hier ein ReferenceInfo-Element erscheinen. Die Reihenfolge der einzelnen ReferenceInfo Elemente entspricht jener der dsig:Reference Elemente in der XML-Signatur. + + + + + + + + + + mit diesem Profil wird eine Menge von vertrauenswürdigen Wurzelzertifikaten spezifiziert + + + + + + + + + + + only ds:X509Data and ds:RetrievalMethod is supported; QualifiedCertificate is included as X509Data/any; PublicAuthority is included as X509Data/any + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Auswahl: Entweder explizite Angabe EINER Transformationskette inklusive ggf. sinnvoller Supplements oder Verweis auf ein benanntes Profil + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Resultat, falls die Signaturerstellung gescheitert ist + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Ein oder mehrere Transformationswege können von der Applikation an MOA mitgeteilt werden. Die zu prüfende Signatur hat zumindest einem dieser Transformationswege zu entsprechen. Die Angabe kann explizit oder als Profilbezeichner erfolgen. + + + + + Profilbezeichner für einen Transformationsweg + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Die Angabe des Transformationsparameters (explizit oder als Hashwert) kann unterlassen werden, wenn die Applikation von der Unveränderlichkeit des Inhalts der in "Transformationsparamter", Attribut "URI" angegebenen URI ausgehen kann. + + + + Der Transformationsparameter explizit angegeben. + + + + + Der Hashwert des Transformationsparameters. + + + + + + + + + + + + + + + + + + + + + + Explizite Angabe des Transformationswegs + + + + + + + Alle impliziten Transformationsparameter, die zum Durchlaufen der oben angeführten Transformationskette bekannt sein müssen, müssen hier angeführt werden. Das Attribut "URI" bezeichnet den Transformationsparameter in exakt jener Weise, wie er in der zu überprüfenden Signatur gebraucht wird. + + + + + + + + + + + + + + + + diff --git a/spss/handbook/handbook/usage/usage.html b/spss/handbook/handbook/usage/usage.html index bafb6da29..4d14ab917 100644 --- a/spss/handbook/handbook/usage/usage.html +++ b/spss/handbook/handbook/usage/usage.html @@ -85,7 +85,8 @@

                        2 Verwendung des Webservices

                        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.

                        2.1 XML-Requests

                        -

                        Dieser Abschnitt stellt typische XML-Requests für die Erstellung einer XML-Signatur mittels SS bzw. zur Prüfung einer CMS- bzw. XML-Signatur mittels SP vor. Zu jedem Request wird jeweils auch eine typische Response des Services besprochen.

                        +

                        TODO: Auch plain CMS unterstützt?

                        +

                        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.

                        Bitte beachten Sie: Einige der vorgestellten Requests referenzieren beispielhafte Daten auf localhost, z.B. http://localhost:8080/referencedData/Text.txt. 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 localhost:8080 betreiben, ist es ausreichend, wenn sie die diesem Handbuch beiliegende Webapplikation referencedData.war in das Verzeichnis webapps Ihrer Tomcat-Installation kopieren. Ansonsten müssen Sie zusätzlich die URLs in den Requests anpassen.

                        2.1.1 Erstellung einer CMS bzw. CAdES-Signatur

                        2.1.1.1 Einfaches Beispiel

                        @@ -95,7 +96,7 @@

                        TODO

                        2.1.2 Erstellung einer XML bzw. XAdES-Signatur

                        -

                        MOA-SS ermöglicht die Erstellung einer herkömmlichen XML-Signatur und einer XAdES-Signatur gemäß der Security-Layer Spezifikation V1.1. Die Auswahl ob eine herkömmliche XML oder eine Security-Layer konforme XAdES-Signatur erstellt wird, erfolgt durch das Attribute SecurityLayerConformity im Signaturerstelltungs-Request (siehe auch folgende Beispiele).

                        +

                        MOA-SS ermöglicht die Erstellung einer herkömmlichen XML-Signatur und einer XAdES-Signatur gemäß der Security-Layer Spezifikation V1.2x. Die Auswahl ob eine herkömmliche XML oder eine Security-Layer konforme XAdES-Signatur erstellt wird, erfolgt durch das Attribute SecurityLayerConformity im Signaturerstelltungs-Request (siehe auch folgende Beispiele).

                        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 Konfiguration der XAdES Version).

                        2.1.2.1 Einfaches Beispiel

                        Request
                        @@ -103,7 +104,7 @@
                          <KeyIdentifier>KG_allgemein</KeyIdentifier> 

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

                          <SingleSignatureInfo SecurityLayerConformity="false">
                        -

                        Für jedes SingleSignatureInfoElement wird eine eigene XML-Signatur erzeugt. Wird das Attribut SecurityLayerConformity auf true gesetzt, dann wird eine XML-Signatur gemäß Security-Layer Spezifikation V1.1 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).

                        +

                        Für jedes SingleSignatureInfoElement wird eine eigene XML-Signatur erzeugt. Wird das Attribut SecurityLayerConformity auf true gesetzt, dann wird eine XML-Signatur gemäß Security-Layer Spezifikation V1.2x TODO 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).

                            <DataObjectInfo Structure="enveloping">
                               <DataObject>
                                 <XMLContent>Diese Daten werden signiert.<XMLContent>
                        @@ -652,19 +653,19 @@ O=A-Trust Ges. für Sicherheitssysteme im elektr. Datenverkehr GmbH,C=AT<
                         

                        Die Response enthält zunächst in SignerInfo/dsig:X509Data Informationen über den Signator, die aus dem in der CMS-Signatur enthaltenen Signatorzertifikat entnommen sind.

                        dsig:X509SubjectName ist immer vorhanden und enthält den Namen des Signators. dsig:X509IssuerSerial ist ebenfalls immer vorhanden und enthält den Namen des Austellers des Signatorzertifikats (dsig:X509IssuerName) sowie die Seriennummer des Zertifikats (dsig:X509SerialNumber). Auch dsig:X509Certificate ist immer vorhanden und enthält das Signatorzertifikat in base64 kodierter Form.

                        -

                        Optional vorhanden ist das inhaltslose Element QualifiedCertificate, 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 PublicAuthority, und zwar dann, wenn das Signatorzertifikat die österreichspezifische Zertifikatserweiterung Verwaltungseigenschaft aufweist. Ist in dieser Zertifikatserweiterung das Verwaltungskennzeichen mitkodiert, wird dieses Kennzeichen als Textinhalt des optionalen Elements PublicAuthority/Code geliefert.

                        +

                        Optional vorhanden ist das inhaltslose Element QualifiedCertificate, 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 PublicAuthority, und zwar dann, wenn das Signatorzertifikat die österreichspezifische Zertifikatserweiterung Verwaltungseigenschaft aufweist. Ist in dieser Zertifikatserweiterung das Verwaltungskennzeichen mitkodiert, wird dieses Kennzeichen als Textinhalt des optionalen Elements PublicAuthority/Code geliefert.

                           <SignatureCheck>
                             <Code>0</Code>
                           </SignatureCheck>
                         
                        -

                        Anschließend an SignerInfo enthält die Response mit SignatureCheck/Code das Resultat der kryptographischen Prüfung der Signatur. In unserem Beispiel ist dort der Wert 0 enthalten, d. h. die Signatur konnte erfolgreich validiert werden. Für eine Übersicht der möglichen Kodes siehe Security-Layer 1.2.

                        +

                        Anschließend an SignerInfo enthält die Response mit SignatureCheck/Code das Resultat der kryptographischen Prüfung der Signatur. In unserem Beispiel ist dort der Wert 0 enthalten, d. h. die Signatur konnte erfolgreich validiert werden. Für eine Übersicht der möglichen Kodes siehe Security-Layer 1.2x TODO.

                           <CertificateCheck>
                             <Code>1</Code>
                           </CertificateCheck>
                         
                        -

                        Abschließend enthält die Response mit CertificateCheck/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. Trust Anchor gebildet werden kann. Gelingt dies, wird die Gültigkeit jedes Zertifikats dieser Kette überprüft. In unserem Beispiel enthält Code den Wert 1, d. h. MOA SP konnte die oben erläuterte Zertifikatskette nicht bilden. Für eine Übersicht der möglichen Kodes siehe Security-Layer 1.2.

                        +

                        Abschließend enthält die Response mit CertificateCheck/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. Trust Anchor gebildet werden kann. Gelingt dies, wird die Gültigkeit jedes Zertifikats dieser Kette überprüft. In unserem Beispiel enthält Code den Wert 1, d. h. MOA SP konnte die oben erläuterte Zertifikatskette nicht bilden. Für eine Übersicht der möglichen Kodes siehe Security-Layer 1.2x TODO.

                        2.1.3.2 Erweitertes Beispiel

                        Request

                        Dieses erweiterte Beispiel zur Prüfung einer CMS-Signatur (VerifyCMSSignatureRequest.Extended.xml) demonstriert die Prüfung mehrerer Signatoren einer CMS-Signatur, die Angabe des Prüfzeitpunkts sowie die Prüfung einer Detached Signature, d. h. einer Signatur, in der die signierten Daten nicht enthalten sind und daher extra angegeben werden müssen.

                        @@ -750,19 +751,19 @@ O=A-Trust Ges. für Sicherheitssysteme im elektr. Datenverkehr GmbH,C=AT<

                        Die Response enthält zunächst in SignerInfo/dsig:X509Data Informationen über den Signator, die aus dem in der XML-Signatur enthaltenen Signatorzertifikat entnommen sind.

                        dsig:X509SubjectName ist immer vorhanden und enthält den Namen des Signators. dsig:X509IssuerSerial ist ebenfalls immer vorhanden und enthält den Namen des Austellers des Signatorzertifikats (dsig:X509IssuerName) sowie die Seriennummer des Zertifikats (dsig:X509SerialNumber). Auch dsig:X509Certificate ist ist immer vorhanden und enthält das Signatorzertifikat in base64 kodierter Form.

                        -

                        Optional vorhanden - in diesem Beispiel nicht ersichtlich - ist das inhaltslose Element QualifiedCertificate, und zwar dann, wenn es sich beim Signatorzertifikat um ein qualifiziertes Zertifikat handelt. Ebenfalls optional vorhanden ist schließlich das Element PublicAuthority, und zwar dann, wenn das Signatorzertifikat die österreichspezifische Zertifikatserweiterung Verwaltungseigenschaft aufweist. Ist in dieser Zertifikatserweiterung das Verwaltungskennzeichen mitkodiert, wird dieses Kennzeichen als Textinhalt des optionalen Elements PublicAuthority/Code geliefert.

                        +

                        Optional vorhanden - in diesem Beispiel nicht ersichtlich - ist das inhaltslose Element QualifiedCertificate, und zwar dann, wenn es sich beim Signatorzertifikat um ein qualifiziertes Zertifikat handelt. Ebenfalls optional vorhanden ist schließlich das Element PublicAuthority, und zwar dann, wenn das Signatorzertifikat die österreichspezifische Zertifikatserweiterung Verwaltungseigenschaft aufweist. Ist in dieser Zertifikatserweiterung das Verwaltungskennzeichen mitkodiert, wird dieses Kennzeichen als Textinhalt des optionalen Elements PublicAuthority/Code geliefert.

                           <SignatureCheck>
                             <Code>0</Code>
                           </SignatureCheck>
                         
                        -

                        Anschließend an SignerInfo enthält die Response mit SignatureCheck/Code das Resultat der kryptographischen Prüfung der Signatur. In unserem Beispiel ist dort der Wert 0 enthalten, d. h. die Signatur konnte erfolgreich validiert werden. Für eine Übersicht der möglichen Kodes siehe Security-Layer 1.2.

                        +

                        Anschließend an SignerInfo enthält die Response mit SignatureCheck/Code das Resultat der kryptographischen Prüfung der Signatur. In unserem Beispiel ist dort der Wert 0 enthalten, d. h. die Signatur konnte erfolgreich validiert werden. Für eine Übersicht der möglichen Kodes siehe Security-Layer 1.2x TODO.

                           <CertificateCheck>
                             <Code>0</Code>
                           </CertificateCheck>
                         
                        -

                        Abschließend enthält die Response mit CertificateCheck/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. Trust Anchor gebildet werden kann. Gelingt dies, wird die Gültigkeit jedes Zertifikats dieser Kette überprüft. In unserem Beispiel enthält Code den Wert 0, 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 Security-Layer 1.2.

                        +

                        Abschließend enthält die Response mit CertificateCheck/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. Trust Anchor gebildet werden kann. Gelingt dies, wird die Gültigkeit jedes Zertifikats dieser Kette überprüft. In unserem Beispiel enthält Code den Wert 0, 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 Security-Layer 1.2x TODO.

                        2.1.4.2 Erweitertes Beispiel

                        Request

                        Dieses erweiterte Beispiel zur Prüfung einer XML-Signatur (VerifyXMLSignatureRequest.Enveloped.xml) demonstriert die Prüfung einer Enveloped Signature, 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.

                        @@ -898,7 +899,7 @@ positive Ganzzahl repräsentiert, die auf das beinhaltende dsig:Manife </XMLDSIGManifestCheck>

                        Neu ist in dieser Response das an SignatureCheck anschließende Element XMLDSIGManifestCheck. Ein oder mehrere solche Elemente werden immer dann zurückgeliefert, wenn in dsig:SignedInfo der XML-Signatur dsig:Reference Elemente existieren, die sich auf ein Manifest nach XMLDSIG beziehen (siehe oben). Je solcher dsig:Reference enthält die Antwort ein korrespondierendes Element XMLDSIGManifestCheck, im konkreten Beispiel als eines.

                        -

                        Das Element Code gibt das Ergebnis der durchgeführten Prüfung des XMLDSIG-Manifests an. In diesem Fall bedeutet 0, dass die Prüfung jeder dsig:Reference im dsig:Manifest (im konkreten Beispiel also genau einer dsig:Reference) erfolgreich durchgeführt werden konnte. Für eine Übersicht der möglichen Kodes siehe Security-Layer 1.2.

                        +

                        Das Element Code gibt das Ergebnis der durchgeführten Prüfung des XMLDSIG-Manifests an. In diesem Fall bedeutet 0, dass die Prüfung jeder dsig:Reference im dsig:Manifest (im konkreten Beispiel also genau einer dsig:Reference) erfolgreich durchgeführt werden konnte. Für eine Übersicht der möglichen Kodes siehe Security-Layer 1.2x TODO.

                        Das Element Info/ReferringSigReference enthält als Textinhalt die Nummer jenes dsig:Reference Elements in dsig:SignedInfo der XML-Signatur, welches auf das untersuchte Manifest nach XMLDSIG verweist, wobei mit 1 zu zählen begonnen wird.

                           <CertificateCheck>
                        @@ -1130,7 +1131,7 @@ Ich habe weiters ein eigenens ID-Attribut bekommen.</doc:Paragraph>
                             <Code>0</Code>
                           </SignatureManifestCheck>
                         
                        -

                        Das Element SignatureManifestCheck enhält das Resultat der Prüfung des Zusammenhangs zwischen Referenz-Eingangsdaten und Hash-Eingangsdaten. Der Kode 0 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 Spezifikation zu MOA SP/SS, Abschnitt 5.1.3.1.4.

                        +

                        Das Element SignatureManifestCheck enhält das Resultat der Prüfung des Zusammenhangs zwischen Referenz-Eingangsdaten und Hash-Eingangsdaten. Der Kode 0 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 Spezifikation zu MOA SP/SS (Link TODO), Abschnitt 5.1.3.1.4.

                           <CertificateCheck>
                             <Code>0</Code>
                        diff --git a/spss/server/serverlib/.settings/org.eclipse.jdt.core.prefs b/spss/server/serverlib/.settings/org.eclipse.jdt.core.prefs
                        index 81f1dbf57..dc0892a32 100644
                        --- a/spss/server/serverlib/.settings/org.eclipse.jdt.core.prefs
                        +++ b/spss/server/serverlib/.settings/org.eclipse.jdt.core.prefs
                        @@ -1,12 +1,7 @@
                        -#Thu Dec 27 13:40:40 CET 2012
                         eclipse.preferences.version=1
                         org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
                         org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
                        -org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
                         org.eclipse.jdt.core.compiler.compliance=1.5
                        -org.eclipse.jdt.core.compiler.debug.lineNumber=generate
                        -org.eclipse.jdt.core.compiler.debug.localVariable=generate
                        -org.eclipse.jdt.core.compiler.debug.sourceFile=generate
                         org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
                         org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
                         org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
                        diff --git a/spss/server/serverlib/.settings/org.eclipse.wst.common.project.facet.core.xml b/spss/server/serverlib/.settings/org.eclipse.wst.common.project.facet.core.xml
                        index 656f15b87..69dc9cc0f 100644
                        --- a/spss/server/serverlib/.settings/org.eclipse.wst.common.project.facet.core.xml
                        +++ b/spss/server/serverlib/.settings/org.eclipse.wst.common.project.facet.core.xml
                        @@ -3,5 +3,5 @@
                           
                           
                           
                        -  
                        -
                        \ No newline at end of file
                        +  
                        +
                        diff --git a/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/api/SPSSFactory.java b/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/api/SPSSFactory.java
                        index fbf40be88..26cce1a82 100644
                        --- a/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/api/SPSSFactory.java
                        +++ b/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/api/SPSSFactory.java
                        @@ -35,6 +35,9 @@ import org.apache.commons.discovery.tools.DiscoverClass;
                         import org.w3c.dom.Element;
                         import org.w3c.dom.NodeList;
                         
                        +import at.gv.egovernment.moa.spss.api.cmssign.CMSSignatureResponse;
                        +import at.gv.egovernment.moa.spss.api.cmssign.CreateCMSSignatureRequest;
                        +import at.gv.egovernment.moa.spss.api.cmssign.CreateCMSSignatureResponse;
                         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;
                        @@ -137,6 +140,26 @@ public abstract class SPSSFactory {
                             String keyIdentifier,
                             List singleSignatureInfos);
                         
                        +  /**
                        +   * Create a new CreateCMSSignatureRequest object.
                        +   * 
                        +   * @param keyIdentifier The identifier for the key group to use for signing.
                        +   * @param singleSignatureInfos A List of 
                        +   * SingleSignatureInfo objects containing information about a
                        +   * single signature to be created.
                        +   * @return The CreateCMSSignatureRequest 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 
                        +   * @post return != null
                        +   */
                        +  public abstract CreateCMSSignatureRequest createCreateCMSSignatureRequest(
                        +    String keyIdentifier,
                        +    List singleSignatureInfos);
                        +  
                           /**
                            * Create a new SingleSignatureInfo object.
                            * 
                        @@ -156,6 +179,23 @@ public abstract class SPSSFactory {
                           public abstract SingleSignatureInfo createSingleSignatureInfo(
                             List dataObjectInfos,
                             CreateSignatureInfo createSignatureInfo, boolean securityLayerConform);
                        +  
                        +  /**
                        +   * Create a new SingleSignatureInfo object.
                        +   * 
                        +   * @param dataObjectInfo The data object that will be signed.
                        +   * @param securityLayerConform If true, a Security Layer conform
                        +   * signature manifest is created, otherwise not.
                        +   * @return The SingleSignatureInfo containing the above data.
                        +   * 
                        +   * @post return != null
                        +   */
                        +  public abstract at.gv.egovernment.moa.spss.api.cmssign.SingleSignatureInfo createSingleSignatureInfoCMS(	
                        +    at.gv.egovernment.moa.spss.api.cmssign.DataObjectInfo dataObjectInfo,
                        +    boolean securityLayerConform);
                        +  
                        +
                        +  
                         
                           /**
                            * Create a new DataObjectInfo object.
                        @@ -181,6 +221,22 @@ public abstract class SPSSFactory {
                             Content dataObject,
                             CreateTransformsInfoProfile createTransformsInfoProfile);
                         
                        +  /**
                        +   * Create a new DataObjectInfo object.
                        +   * 
                        +   * @param structure The type of signature to create.
                        +   * @param dataObject The data object that will be signed.
                        +   * @return The DataObjectInfo 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);
                        +  
                           /**
                            * Create a new CreateTransformsInfoProfile object containing a
                            * reference to a locally stored profile.
                        @@ -321,6 +377,37 @@ public abstract class SPSSFactory {
                            */
                           public abstract CreateXMLSignatureResponse createCreateXMLSignatureResponse(List responseElements);
                         
                        +  
                        +  /**
                        +   * Create a new CreateCMSSignatureResponse object.
                        +   * 
                        +   * @param responseElements The elements of the response, either 
                        +   * CMSSignatureResponse objects, or 
                        +   * ErrorResponse objects.
                        +   * @return The new CreateCMSSignatureResponse 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
                        +   * @post return != null
                        +   */
                        +  public abstract CreateCMSSignatureResponse createCreateCMSSignatureResponse(List responseElements);
                        +  
                        +  
                        +  /**
                        +   * Create a new SignatureEnvironmentResponse object.
                        +   * 
                        +   * @param signatureEnvironment The signature environment containing the
                        +   * signature.
                        +   * @return The SignatureEnvironmentResponse containing the
                        +   * signatureEnvironment.
                        +   * 
                        +   * @pre signatureEnvironment != null
                        +   * @post return != null
                        +   */
                        +  public abstract CMSSignatureResponse createCMSSignatureResponse(String base64value);
                        +  
                           /**
                            * Create a new SignatureEnvironmentResponse object.
                            * 
                        diff --git a/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/api/cmssign/CMSSignatureResponse.java b/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/api/cmssign/CMSSignatureResponse.java
                        new file mode 100644
                        index 000000000..10db67627
                        --- /dev/null
                        +++ b/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/api/cmssign/CMSSignatureResponse.java
                        @@ -0,0 +1,41 @@
                        +/*
                        + * 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.api.cmssign;
                        +
                        +
                        +/**
                        + * Contains the signature if the signature creation was successful.
                        + *  
                        + * @version $Id$
                        + */
                        +public interface CMSSignatureResponse
                        +  extends CreateCMSSignatureResponseElement {
                        +  /** 
                        +   * Gets the CMS signature (Base64 encoded).
                        +   * 
                        +   * @return The CMS signature
                        +   */
                        +  public String getCMSSignature();
                        +}
                        diff --git a/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/api/cmssign/CreateCMSSignatureRequest.java b/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/api/cmssign/CreateCMSSignatureRequest.java
                        new file mode 100644
                        index 000000000..9d5cd7a0d
                        --- /dev/null
                        +++ b/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/api/cmssign/CreateCMSSignatureRequest.java
                        @@ -0,0 +1,49 @@
                        +/*
                        + * 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.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();
                        +  /**
                        +   * Gets the information of the singleSignatureInfo elements. 
                        +   * 
                        +   * @return The information of singleSignatureInfo elements.
                        +   */
                        +  public List getSingleSignatureInfos();
                        +}
                        diff --git a/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/api/cmssign/CreateCMSSignatureResponse.java b/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/api/cmssign/CreateCMSSignatureResponse.java
                        new file mode 100644
                        index 000000000..6062a1162
                        --- /dev/null
                        +++ b/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/api/cmssign/CreateCMSSignatureResponse.java
                        @@ -0,0 +1,42 @@
                        +/*
                        + * 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.api.cmssign;
                        +
                        +import java.util.List;
                        +
                        +/**
                        + * Object that encapsulates the response on to a 
                        + * CreateCMSSignatureRequest to create an XML signature.
                        + * 
                        + * @version $Id$
                        + */
                        +public interface CreateCMSSignatureResponse {
                        +  /**
                        +   * Gets the response elements.
                        +   * 
                        +   * @return The response elements.
                        +   */
                        +  public List getResponseElements();
                        +}
                        diff --git a/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/api/cmssign/CreateCMSSignatureResponseElement.java b/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/api/cmssign/CreateCMSSignatureResponseElement.java
                        new file mode 100644
                        index 000000000..8e4e61145
                        --- /dev/null
                        +++ b/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/api/cmssign/CreateCMSSignatureResponseElement.java
                        @@ -0,0 +1,51 @@
                        +/*
                        + * 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.api.cmssign;
                        +
                        +/**
                        + * Base class for CMSSignature and 
                        + * ErrorResponse elements in a 
                        + * CreateXMLSignatureResponse.
                        + * 
                        + * @version $Id$
                        + */
                        +public interface CreateCMSSignatureResponseElement {
                        +  /**
                        +   * Indicates that this object contains a CMSSignature.
                        +   */
                        +  public static final int CMS_SIGNATURE = 0;
                        +  /**
                        +   * Indicates that this objet contains an ErrorResponse.
                        +   */
                        +  public static final int ERROR_RESPONSE = 1;
                        +  
                        +  /**
                        +   * Gets the type of response object.
                        +   * 
                        +   * @return The type of response object, either 
                        +   * CMS_SIGNATURE or ERROR_RESPONSE.
                        +   */
                        +  public int getResponseType();
                        +}
                        diff --git a/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/api/cmssign/DataObjectInfo.java b/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/api/cmssign/DataObjectInfo.java
                        new file mode 100644
                        index 000000000..b9f363061
                        --- /dev/null
                        +++ b/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/api/cmssign/DataObjectInfo.java
                        @@ -0,0 +1,58 @@
                        +/*
                        + * 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.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"; 
                        +  /**
                        +   * Indicates that an enveloping signature will be created.
                        +   */
                        +  public static final String STRUCTURE_ENVELOPING = "enveloping";
                        +
                        +  /**
                        +   * Gets the structure of the signature.
                        +   * 
                        +   * @return The structure of the signature.
                        +   */
                        +  public String getStructure();
                        +
                        +  /**
                        +   * Gets information related to a single data object.
                        +   * 
                        +   * @return Information related to a single data object.
                        +   */
                        +  public CMSDataObject getDataObject();
                        +  
                        +}
                        diff --git a/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/api/cmssign/SingleSignatureInfo.java b/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/api/cmssign/SingleSignatureInfo.java
                        new file mode 100644
                        index 000000000..1f87a50ca
                        --- /dev/null
                        +++ b/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/api/cmssign/SingleSignatureInfo.java
                        @@ -0,0 +1,51 @@
                        +/*
                        + * 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.api.cmssign;
                        +
                        +
                        +
                        +/**
                        + * Encapsulates data to create a single signature.
                        + * 
                        + * @author Patrick Peck
                        + * @author Stephan Grill
                        + * @version $Id$
                        + */
                        +public interface SingleSignatureInfo {
                        +  /**
                        +   * Gets the dataObjectInfo information.
                        +   * 
                        +   * @return The dataObjectInfo information.
                        +   */
                        +  public DataObjectInfo getDataObjectInfo();
                        +  
                        +  /**
                        +   * Check whether a Security Layer conform signature manifest will be created.
                        +   * 
                        +   * @return true, if a Security Layer conform signature manifest 
                        +   * will be created, false otherwise.
                        +   */
                        +  public boolean isSecurityLayerConform();
                        +}
                        diff --git a/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/api/impl/CMSSignatureResponseImpl.java b/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/api/impl/CMSSignatureResponseImpl.java
                        new file mode 100644
                        index 000000000..b512dd0bd
                        --- /dev/null
                        +++ b/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/api/impl/CMSSignatureResponseImpl.java
                        @@ -0,0 +1,64 @@
                        +/*
                        + * 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.api.impl;
                        +
                        +import org.w3c.dom.Element;
                        +
                        +import at.gv.egovernment.moa.spss.api.cmssign.CMSSignatureResponse;
                        +
                        +/**
                        + * Default implementation of CMSSignatureResponse.
                        + * 
                        + * @version $Id$
                        + */
                        +public class CMSSignatureResponseImpl
                        +  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;
                        +  }
                        +
                        +  public String getCMSSignature() {
                        +    return cmsSignature;
                        +  }
                        +
                        +  /**
                        +   * Gets the type of CreateCMSSignatureResponseElement.
                        +   * 
                        +   * @return CMS_SIGNATURE
                        +   */
                        +  public int getResponseType() {
                        +    return CMS_SIGNATURE;
                        +  }
                        +
                        +}
                        diff --git a/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/api/impl/CreateCMSSignatureRequestImpl.java b/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/api/impl/CreateCMSSignatureRequestImpl.java
                        new file mode 100644
                        index 000000000..e8408bc55
                        --- /dev/null
                        +++ b/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/api/impl/CreateCMSSignatureRequestImpl.java
                        @@ -0,0 +1,77 @@
                        +/*
                        + * 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.api.impl;
                        +
                        +import java.util.ArrayList;
                        +import java.util.Collections;
                        +import java.util.List;
                        +
                        +import at.gv.egovernment.moa.spss.api.cmssign.CreateCMSSignatureRequest;
                        +
                        +/**
                        + * Default implementation of CreateCMSSignatureRequest.
                        + * 
                        + * @author Fatemeh Philippi
                        + * @version $Id$
                        + */
                        +public class CreateCMSSignatureRequestImpl
                        +  implements CreateCMSSignatureRequest {
                        +
                        +  /** 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 
                        +   * signature.
                        +   * 
                        +   * @param keyIdentifier The identifier for selecting the private keys.
                        +   */
                        +  public void setKeyIdentifier(String keyIdentifier) {
                        +    this.keyIdentifier = keyIdentifier;
                        +  }
                        +
                        +  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;
                        +  }
                        +
                        +  public List getSingleSignatureInfos() {
                        +    return singleSignatureInfos;
                        +  }
                        +
                        +}
                        diff --git a/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/api/impl/CreateCMSSignatureResponseImpl.java b/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/api/impl/CreateCMSSignatureResponseImpl.java
                        new file mode 100644
                        index 000000000..d596058c6
                        --- /dev/null
                        +++ b/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/api/impl/CreateCMSSignatureResponseImpl.java
                        @@ -0,0 +1,60 @@
                        +/*
                        + * 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.api.impl;
                        +
                        +import java.util.ArrayList;
                        +import java.util.Collections;
                        +import java.util.List;
                        +
                        +import at.gv.egovernment.moa.spss.api.cmssign.CreateCMSSignatureResponse;
                        +
                        +/**
                        + * Default implementation of CreateCMSSignatureResponse.
                        + * 
                        + * @version $Id$
                        + */
                        +public class CreateCMSSignatureResponseImpl
                        +  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;
                        +  }
                        +
                        +  public List getResponseElements() {
                        +    return responseElements;
                        +  }
                        +
                        +}
                        diff --git a/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/api/impl/DataObjectInfoCMSImpl.java b/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/api/impl/DataObjectInfoCMSImpl.java
                        new file mode 100644
                        index 000000000..702086b6f
                        --- /dev/null
                        +++ b/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/api/impl/DataObjectInfoCMSImpl.java
                        @@ -0,0 +1,69 @@
                        +/*
                        + * 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.api.impl;
                        +
                        +import at.gv.egovernment.moa.spss.api.cmssign.DataObjectInfo;
                        +import at.gv.egovernment.moa.spss.api.cmsverify.CMSDataObject;
                        +
                        +/**
                        + * Default implementation of DataObjectInfo for CMS.
                        + * 
                        + * @author Fatemeh Philippi
                        + * @version $Id$
                        + */
                        +public class DataObjectInfoCMSImpl implements DataObjectInfo {
                        +  /** The signature structure type. */
                        +  private String stucture;
                        +  /** The data object to be signed. */
                        +  private CMSDataObject dataObject;
                        +
                        +  /**
                        +   * Sets the signature structure type.
                        +   * 
                        +   * @param structure The signature structure type.
                        +   */
                        +  public void setStructure(String structure) {
                        +    this.stucture = structure;
                        +  }
                        +
                        +  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;
                        +  }
                        +
                        +  public CMSDataObject getDataObject() {
                        +    return dataObject;
                        +  }
                        +
                        +}
                        diff --git a/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/api/impl/SPSSFactoryImpl.java b/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/api/impl/SPSSFactoryImpl.java
                        index a23a1d98f..7c1208e8f 100644
                        --- a/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/api/impl/SPSSFactoryImpl.java
                        +++ b/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/api/impl/SPSSFactoryImpl.java
                        @@ -25,6 +25,7 @@
                         package at.gv.egovernment.moa.spss.api.impl;
                         
                         import java.io.InputStream;
                        +
                         import java.math.BigInteger;
                         import java.security.cert.X509Certificate;
                         import java.util.Date;
                        @@ -35,6 +36,9 @@ import org.w3c.dom.Element;
                         import org.w3c.dom.NodeList;
                         
                         import at.gv.egovernment.moa.spss.api.SPSSFactory;
                        +import at.gv.egovernment.moa.spss.api.cmssign.CMSSignatureResponse;
                        +import at.gv.egovernment.moa.spss.api.cmssign.CreateCMSSignatureRequest;
                        +import at.gv.egovernment.moa.spss.api.cmssign.CreateCMSSignatureResponse;
                         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;
                        @@ -90,6 +94,32 @@ public class SPSSFactoryImpl extends SPSSFactory {
                             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,
                        @@ -101,6 +131,16 @@ public class SPSSFactoryImpl extends SPSSFactory {
                             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,
                        @@ -113,6 +153,15 @@ public class SPSSFactoryImpl extends SPSSFactory {
                             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) {
                         
                        diff --git a/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/api/impl/SingleSignatureInfoCMSImpl.java b/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/api/impl/SingleSignatureInfoCMSImpl.java
                        new file mode 100644
                        index 000000000..cb3651587
                        --- /dev/null
                        +++ b/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/api/impl/SingleSignatureInfoCMSImpl.java
                        @@ -0,0 +1,62 @@
                        +/*
                        + * 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.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;
                        +
                        +/**
                        + * @version $Id$
                        + */
                        +public class SingleSignatureInfoCMSImpl implements SingleSignatureInfo {
                        +
                        +  private DataObjectInfo dataObjectInfo = null;
                        +
                        +
                        +  private boolean securityLayerConform = true;
                        +
                        +  public void setDataObjectInfo(DataObjectInfo dataObjectInfo) {
                        +    this.dataObjectInfo = dataObjectInfo;
                        +  }
                        +
                        +  public DataObjectInfo getDataObjectInfo() {
                        +    return dataObjectInfo;
                        +  }
                        +
                        +
                        +
                        +  public void setSecurityLayerConform(boolean securityLayerConform) {
                        +    this.securityLayerConform = securityLayerConform;
                        +  }
                        +
                        +  public boolean isSecurityLayerConform() {
                        +    return securityLayerConform;
                        +  }
                        +
                        +}
                        diff --git a/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/api/xmlbind/CreateCMSSignatureRequestParser.java b/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/api/xmlbind/CreateCMSSignatureRequestParser.java
                        new file mode 100644
                        index 000000000..737915ecd
                        --- /dev/null
                        +++ b/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/api/xmlbind/CreateCMSSignatureRequestParser.java
                        @@ -0,0 +1,247 @@
                        +/*
                        + * 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.api.xmlbind;
                        +
                        +import java.io.InputStream;
                        +import java.util.ArrayList;
                        +import java.util.List;
                        +
                        +import org.w3c.dom.Element;
                        +import org.w3c.dom.traversal.NodeIterator;
                        +
                        +import at.gv.egovernment.moa.spss.MOAApplicationException;
                        +import at.gv.egovernment.moa.spss.api.SPSSFactory;
                        +import at.gv.egovernment.moa.spss.api.cmssign.CreateCMSSignatureRequest;
                        +import at.gv.egovernment.moa.spss.api.cmssign.DataObjectInfo;
                        +import at.gv.egovernment.moa.spss.api.cmssign.SingleSignatureInfo;
                        +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.common.Content;
                        +import at.gv.egovernment.moa.spss.api.common.MetaInfo;
                        +import at.gv.egovernment.moa.util.Base64Utils;
                        +import at.gv.egovernment.moa.util.BoolUtils;
                        +import at.gv.egovernment.moa.util.Constants;
                        +import at.gv.egovernment.moa.util.DOMUtils;
                        +import at.gv.egovernment.moa.util.XPathUtils;
                        +
                        +/**
                        + * A parser to parse CreateCMSSignatureRequest DOM trees into
                        + * CreateCMSSignatureRequest API objects.
                        + * 
                        + * @author Patrick Peck
                        + * @version $Id$
                        + */
                        +public class CreateCMSSignatureRequestParser {
                        +
                        +  //
                        +  // XPath expresssions to select elements in the CreateCMSSignatureRequest
                        +  //
                        +  private static final String MOA = Constants.MOA_PREFIX + ":";
                        +  private static final String KEY_IDENTIFIER_XPATH =
                        +    "/" + MOA + "CreateCMSSignatureRequest/" + MOA + "KeyIdentifier";
                        +  private static final String SINGLE_SIGNATURE_INFO_XPATH =
                        +    "/" + 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 META_INFO_XPATH = MOA + "MetaInfo";
                        +  private static final String CONTENT_XPATH = MOA + "Content";
                        +  private static final String BASE64_CONTENT_XPATH = MOA + "Base64Content";
                        +
                        +  
                        +  /** The factory to create API objects. */
                        +  private SPSSFactory factory;
                        +
                        +  /**
                        +   * Create a new CreateCMSSignatureRequestParser.
                        +   */
                        +  public CreateCMSSignatureRequestParser() {
                        +    this.factory = SPSSFactory.getInstance();
                        +  }
                        +
                        +  /**
                        +   * Parse a CreateCMSSignatureRequest DOM element, as defined
                        +   * by the MOA schema.
                        +   * 
                        +   * @param requestElem The CreateCMSSignatureRequest to parse. The
                        +   * request must have been successfully parsed against the schema for this
                        +   * method to succeed.
                        +   * @return A CreateCMSSignatureRequest API object containing
                        +   * the data from the DOM element.
                        +   * @throws MOAApplicationException An error occurred parsing the request.
                        +   */
                        +  public CreateCMSSignatureRequest parse(Element requestElem)
                        +    throws MOAApplicationException {
                        +
                        +    List singleSignatureInfos = parseSingleSignatureInfos(requestElem);
                        +    String keyIdentifier =
                        +      XPathUtils.getElementValue(requestElem, KEY_IDENTIFIER_XPATH, null);
                        +
                        +    return factory.createCreateCMSSignatureRequest(
                        +      keyIdentifier,
                        +      singleSignatureInfos);
                        +  }
                        +
                        +  /**
                        +   * Parse all SingleSignatureInfo elements of the 
                        +   * CreateCMSSignatureRequest.
                        +   * 
                        +   * @param requestElem The CreateCMSSignatureRequest to parse.
                        +   * @return A List of SingleSignatureInfo API 
                        +   * objects.
                        +   * @throws MOAApplicationException An error occurred parsing on of the 
                        +   * SingleSignatureInfo elements.
                        +   */
                        +  private List parseSingleSignatureInfos(Element requestElem)
                        +    throws MOAApplicationException {
                        +
                        +    List singleSignatureInfos = new ArrayList();
                        +    NodeIterator sigInfoElems =
                        +      XPathUtils.selectNodeIterator(requestElem, SINGLE_SIGNATURE_INFO_XPATH);
                        +    Element sigInfoElem;
                        +
                        +    while ((sigInfoElem = (Element) sigInfoElems.nextNode()) != null) {
                        +      singleSignatureInfos.add(parseSingleSignatureInfo(sigInfoElem));
                        +    }
                        +
                        +    return singleSignatureInfos;
                        +  }
                        +
                        +  /**
                        +   * Parse a SingleSignatureInfo DOM element.
                        +   * 
                        +   * @param sigInfoElem The SingleSignatureInfo DOM element to 
                        +   * parse.
                        +   * @return A SingleSignatureInfo API object containing the 
                        +   * information of sigInfoElem.
                        +   * @throws MOAApplicationException An error occurred parsing the 
                        +   * SingleSignatureInfo.
                        +   */
                        +  private SingleSignatureInfo parseSingleSignatureInfo(Element sigInfoElem)
                        +    throws MOAApplicationException {
                        +
                        +    DataObjectInfo dataObjectInfo = parseDataObjectInfo(sigInfoElem);
                        +    boolean securityLayerConform;
                        +
                        +    if (sigInfoElem.hasAttribute(SL_CONFORM_ATTR_NAME)) {
                        +      securityLayerConform =
                        +        BoolUtils.valueOf(sigInfoElem.getAttribute(SL_CONFORM_ATTR_NAME));
                        +    } else {
                        +      securityLayerConform = true;
                        +    }
                        +
                        +    return factory.createSingleSignatureInfoCMS(
                        +      dataObjectInfo,
                        +      securityLayerConform);
                        +  }
                        +
                        +  /**
                        +   * Parse the DataObjectInfo DOM elements contained in the given
                        +   * SingleSignatureInfo DOM element.
                        +   * 
                        +   * @param sigInfoElem The  SingleSignatureInfo DOM element
                        +   * whose DataObjectInfos to parse.
                        +   * @return A List of DataObjectInfo API objects
                        +   * containing the data from the DataObjectInfo DOM elements.
                        +   * @throws MOAApplicationException An error occurred parsing one of the
                        +   * DataObjectInfos.
                        +   */
                        +  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);
                        +	    
                        +  }
                        +  
                        + 
                        +
                        + 
                        +
                        +  /**
                        +   * Parse a the DataObject DOM element contained in a given 
                        +   * CreateCMSSignatureRequest DOM element.
                        +   * 
                        +   * @param requestElem The DataObject DOM element of the VerifyCMSSignatureRequest 
                        +   * to parse.
                        +   * @return The CMSDataObject API object containing the data
                        +   * from the DataObject DOM element.
                        +   */
                        +  private CMSDataObject parseDataObject(Element dataObjectElem) {
                        +
                        +    if (dataObjectElem != null) {
                        +      Element metaInfoElem = (Element) XPathUtils.selectSingleNode(dataObjectElem, META_INFO_XPATH);
                        +      MetaInfo metaInfo = null;
                        +      Element contentElem = (Element) XPathUtils.selectSingleNode(dataObjectElem, CONTENT_XPATH);
                        +      CMSContent content = parseContent(contentElem);
                        +
                        +      if (metaInfoElem != null) {
                        +        metaInfo = RequestParserUtils.parseMetaInfo(metaInfoElem);
                        +      }
                        +
                        +      return factory.createCMSDataObject(metaInfo, content);
                        +    } 
                        +    else {
                        +      return null;
                        +    }
                        +  }
                        +
                        +    
                        +
                        +    /**
                        +     * Parse the content contained in a CMSContentBaseType kind of
                        +     * DOM element.
                        +     * 
                        +     * @param contentElem The CMSContentBaseType kind of element to
                        +     * parse.
                        +     * @return A CMSDataObject API object containing the data
                        +     * from the given DOM element.
                        +     */
                        +    private CMSContent parseContent(Element contentElem) {
                        +      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(
                        +          contentElem.getAttribute("Reference"));
                        +      }
                        +    } 
                        +
                        +}
                        \ No newline at end of file
                        diff --git a/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/api/xmlbind/CreateCMSSignatureResponseBuilder.java b/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/api/xmlbind/CreateCMSSignatureResponseBuilder.java
                        new file mode 100644
                        index 000000000..907f90d32
                        --- /dev/null
                        +++ b/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/api/xmlbind/CreateCMSSignatureResponseBuilder.java
                        @@ -0,0 +1,145 @@
                        +/*
                        + * 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.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;
                        +
                        +import at.gv.egovernment.moa.spss.MOASystemException;
                        +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.moa.util.Constants;
                        +import at.gv.egovernment.moa.util.DOMUtils;
                        +
                        +/**
                        + * Convert a CreateCMSSignatureResponse 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;
                        +  /** The response CreateCMSSignatureResponse DOM element. */
                        +  private Element responseElem;
                        +
                        +  /**
                        +   * Create a new CreateCMSSignatureResponseBuilder:
                        +   * 
                        +   * @throws MOASystemException An error occurred setting up the resulting
                        +   * XML document.
                        +   */
                        +  public CreateCMSSignatureResponseBuilder() throws MOASystemException {
                        +    responseDoc =
                        +      ResponseBuilderUtils.createResponse("CreateCMSSignatureResponse");
                        +    responseElem = responseDoc.getDocumentElement();
                        +  }
                        +
                        +  /**
                        +   * Build a document containing a CreateCMSSignatureResponse
                        +   * DOM element being the XML representation of the given 
                        +   * CreateCMSSignatureResponse API object.
                        +   * 
                        +   * @param response The CreateCMSSignatureResponse to convert
                        +   * to XML.
                        +   * @return A document containing the CreateCMSSignatureResponse
                        +   * 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;
                        +      }
                        +
                        +    }
                        +
                        +    return responseDoc;
                        +  }
                        +
                        +
                        +
                        +  /**
                        +   * Add a CMSSignature element to the response.
                        +   * 
                        +   * @param cmsSignatureResponse The content to put under the
                        +   * CMSSignature element.
                        +   */
                        +  private void addCMSSignature(CMSSignatureResponse cmsSignatureResponse) {
                        +	  String base64Value = cmsSignatureResponse.getCMSSignature();
                        +	  
                        +	  Element cmsSignature = responseDoc.createElementNS(MOA_NS_URI, "CMSSignature");	  
                        +	  cmsSignature.setTextContent(base64Value);
                        +	  
                        +	  responseElem.appendChild(cmsSignature);
                        +	  
                        +}
                        +  
                        +  /**
                        +   * Add a ErrorResponse element to the response.
                        +   *  
                        +   * @param errorResponse The API object containing the information to put into
                        +   * the ErrorResponse 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());
                        +
                        +    errorCodeElem.appendChild(responseDoc.createTextNode(errorCodeStr));
                        +    errorElem.appendChild(errorCodeElem);
                        +    infoElem.appendChild(responseDoc.createTextNode(errorResponse.getInfo()));
                        +    errorElem.appendChild(errorCodeElem);
                        +    errorElem.appendChild(infoElem);
                        +    responseElem.appendChild(errorElem);
                        +  }
                        +
                        +}
                        diff --git a/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/server/config/ConfigurationPartsBuilder.java b/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/server/config/ConfigurationPartsBuilder.java
                        index bc53ca4f9..4fcc5daa9 100644
                        --- a/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/server/config/ConfigurationPartsBuilder.java
                        +++ b/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/server/config/ConfigurationPartsBuilder.java
                        @@ -548,8 +548,7 @@ public class ConfigurationPartsBuilder {
                         	  }
                         	  
                         	  
                        -	  // set whitelist for iaik-moa
                        -	  // TODO 
                        +	  // TODO set whitelist for iaik-moa
                         //	  ExternalReferenceChecker.setWhitelist(whiteListIaikMoa);
                         
                         	  
                        diff --git a/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/cmssign/CMSSignatureCreationProfileImpl.java b/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/cmssign/CMSSignatureCreationProfileImpl.java
                        new file mode 100644
                        index 000000000..49e5ecc10
                        --- /dev/null
                        +++ b/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/cmssign/CMSSignatureCreationProfileImpl.java
                        @@ -0,0 +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 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;
                        +
                        +import at.gv.egovernment.moa.logging.Logger;
                        +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;
                        +
                        +/**
                        + * An object providing auxiliary information for creating a CMS signature.
                        + * 
                        + * @author Patrick Peck
                        + * @version $Id$
                        + */
                        +public class CMSSignatureCreationProfileImpl
                        +  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. */ 
                        +  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  */
                        +  private String digestMethod;
                        +  
                        +  
                        +  /**
                        +   * Create a new XMLSignatureCreationProfileImpl.
                        +   * 
                        +   * @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;
                        +
                        +  }
                        +
                        +  
                        +  /**
                        +   * @see iaik.server.modules.xmlsign.XMLSignatureCreationProfile#getKeySet()
                        +   */
                        +  public Set getKeySet() {
                        +    return keySet;
                        +  }
                        +
                        +  /**
                        +   * Set the set of KeyEntryIDs which may be used for signature
                        +   * creation.
                        +   * 
                        +   * @param keySet The set of KeyEntryIDs to set.
                        +   */
                        +  public void setKeySet(Set keySet) {
                        +    this.keySet = keySet;
                        +  }
                        +
                        +
                        +  /**
                        +   * @see iaik.server.modules.xmlsign.XMLSignatureCreationProfile#getSignatureAlgorithmName(KeyEntryID)
                        +   */
                        +  public String getSignatureAlgorithmName(KeyEntryID selectedKeyID)
                        +    throws AlgorithmUnavailableException {
                        +
                        +	  
                        +    TransactionContext context =
                        +      TransactionContextManager.getInstance().getTransactionContext();
                        +    TransactionId tid = new TransactionId(context.getTransactionID());
                        +    KeyModule module = KeyModuleFactory.getInstance(tid);
                        +    Set algorithms;
                        +
                        +    try {
                        +      algorithms = module.getSupportedSignatureAlgorithms(selectedKeyID);
                        +    } catch (UnknownKeyException e) {
                        +      throw new AlgorithmUnavailableException(
                        +        "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);
                        +         }
                        +  
                        +
                        +  }
                        +
                        +
                        + 
                        +  /**
                        +   * @see iaik.server.modules.xmlsign.XMLSignatureCreationProfile#getSignedProperties()
                        +   */
                        +  public List getSignedProperties() {
                        +    return signedProperties;
                        +  }
                        +
                        +  /**
                        +   * @see iaik.server.modules.xmlsign.XMLSignatureCreationProfile#isSecurityLayerConform()
                        +   */
                        +  public boolean isSecurityLayerConform() {
                        +    return securityLayerConform;
                        +  }
                        +
                        +  /**
                        +   * Sets the security layer conformity.
                        +   * 
                        +   * @param securityLayerConform true, 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;
                        +  }
                        + 
                        +
                        +  public String getMimeType() {
                        +	  return mimeType;
                        +  }
                        +
                        +  public boolean includeData() {
                        +	return this.includeData;
                        +  }
                        +
                        +}
                        diff --git a/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/xmlsign/XMLSignatureCreationProfileImpl.java b/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/xmlsign/XMLSignatureCreationProfileImpl.java
                        index edc3922e2..7d0c5a062 100644
                        --- a/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/xmlsign/XMLSignatureCreationProfileImpl.java
                        +++ b/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/xmlsign/XMLSignatureCreationProfileImpl.java
                        @@ -201,7 +201,7 @@ public class XMLSignatureCreationProfileImpl
                             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 a more secure digest algorithm out of the SHA-2 family (e.g. SHA-256, SHA-384, SHA-512)");
                        +    		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;
                        diff --git a/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/CMSSignatureCreationInvoker.java b/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/CMSSignatureCreationInvoker.java
                        new file mode 100644
                        index 000000000..e058c8a4b
                        --- /dev/null
                        +++ b/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/CMSSignatureCreationInvoker.java
                        @@ -0,0 +1,396 @@
                        +/*
                        + * 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.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;
                        +import java.io.OutputStream;
                        +import java.math.BigInteger;
                        +import java.security.Principal;
                        +import java.security.cert.X509Certificate;
                        +import java.util.Collections;
                        +import java.util.HashMap;
                        +import java.util.HashSet;
                        +import java.util.Iterator;
                        +import java.util.List;
                        +import java.util.Map;
                        +import java.util.Set;
                        +
                        +import at.gv.egovernment.moa.logging.LogMsg;
                        +import at.gv.egovernment.moa.logging.Logger;
                        +import at.gv.egovernment.moa.logging.LoggingContext;
                        +import at.gv.egovernment.moa.logging.LoggingContextManager;
                        +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.cmssign.CreateCMSSignatureRequest;
                        +import at.gv.egovernment.moa.spss.api.cmssign.CreateCMSSignatureResponse;
                        +import at.gv.egovernment.moa.spss.api.cmssign.DataObjectInfo;
                        +import at.gv.egovernment.moa.spss.api.cmssign.SingleSignatureInfo;
                        +import at.gv.egovernment.moa.spss.api.cmsverify.CMSContent;
                        +import at.gv.egovernment.moa.spss.api.cmsverify.CMSContentExcplicit;
                        +import at.gv.egovernment.moa.spss.api.cmsverify.CMSContentReference;
                        +import at.gv.egovernment.moa.spss.api.cmsverify.CMSDataObject;
                        +import at.gv.egovernment.moa.spss.api.common.MetaInfo;
                        +import at.gv.egovernment.moa.spss.api.impl.CreateCMSSignatureResponseImpl;
                        +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.iaik.cmssign.CMSSignatureCreationProfileImpl;
                        +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.util.MessageProvider;
                        +import at.gv.egovernment.moa.util.Constants;
                        +
                        +/**
                        + * A class providing an API based interface to the
                        + * CMSSignatureCreationModule.
                        + * 
                        + * This class performs the invocation of the 
                        + * iaik.server.modules.cmssign.CMSSignatureCreationModule from a
                        + * CreateCMSSignatureRequest given as an API object. The result of
                        + * the invocation is integrated into a CreateCMSSignatureResponse
                        + * 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);
                        +	  }
                        +	  
                        +
                        +  /** 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() {
                        +    if (instance == null) {
                        +      instance = new CMSSignatureCreationInvoker();
                        +    }
                        +    return instance;
                        +  }
                        +
                        +  /**
                        +   * Create a new CMSSignatureCreationInvoker.
                        +   * 
                        +   * Protected to disallow multiple instances.
                        +   */
                        +  protected CMSSignatureCreationInvoker() {
                        +  }
                        +  
                        + 
                        +
                        +  /**
                        +   * Process the CreateCMSSignatureRequest message and invoke the
                        +   * XMLSignatureCreationModule for every
                        +   * SingleSignatureInfo contained in the request.
                        +   * 
                        +   * @param request A CreateCMSSignatureRequest API object
                        +   * containing the information for creating the signature(s).
                        +   * @param reserved A Set of reserved object IDs.
                        +   * 
                        +   * @return A CreateCMSSignatureResponse API object containing
                        +   * the created signature(s). The response contains either a
                        +   * SignatureEnvironment or a ErrorResponse
                        +   * for each SingleSignatureInfo in the request.
                        +   * @throws MOAException An error occurred during signature creation. 
                        +   */
                        +  public CreateCMSSignatureResponse createCMSSignature(
                        +    CreateCMSSignatureRequest request,
                        +    Set reserved)
                        +    throws MOAException {
                        +
                        +	  TransactionContext context = TransactionContextManager.getInstance().getTransactionContext();	  
                        +	  //LoggingContext loggingCtx = LoggingContextManager.getInstance().getLoggingContext();
                        +
                        +	  CreateCMSSignatureResponseBuilder responseBuilder = new CreateCMSSignatureResponseBuilder();
                        +	  CreateCMSSignatureResponse response = new CreateCMSSignatureResponseImpl();
                        +
                        +	  boolean isSecurityLayerConform = false;
                        +	  String structure = null;
                        +	  String mimetype = null;
                        +	  
                        +	  // select the SingleSignatureInfo elements
                        +	  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
                        +			  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);			  
                        +		  }
                        +			
                        +	  }
                        +	  
                        +
                        +    return responseBuilder.getResponse();
                        +  }
                        +
                        +  
                        +  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;
                        +  }
                        +  
                        +  /**
                        +   * Utility function to issue an error message to the 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();
                        +
                        +    Logger.error(new LogMsg(msg.getMessage(messageId, parameters)));
                        +  }
                        +  
                        +  /**
                        +   * Build the set of KeyEntryIDs available to the given
                        +   * keyGroupID.
                        +   * 
                        +   * @param keyGroupID The keygroup ID for which the available keys should be
                        +   * returned.
                        +   * @return The Set of KeyEntryIDs
                        +   * identifying the available keys.
                        +   */
                        +  private Set buildKeySet(String keyGroupID) {
                        +    TransactionContext context =
                        +      TransactionContextManager.getInstance().getTransactionContext();
                        +    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();
                        +
                        +      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 {
                        +      KeyModule module =
                        +        KeyModuleFactory.getInstance(
                        +          new TransactionId(context.getTransactionID()));
                        +      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;
                        +    }
                        +  }
                        +
                        +  /**
                        +   * Build the list of additional signed properties.
                        +   * 
                        +   * Based on the generic configuration setting
                        +   * ConfigurationProvider.TEST_SIGNING_TIME_PROPERTY, a
                        +   * constant SigningTime will be added to the properties.
                        +   * 
                        +   * @return The List of additional signed properties.
                        +   */
                        +  private List buildAdditionalSignedProperties() {
                        +    TransactionContext context =
                        +      TransactionContextManager.getInstance().getTransactionContext();
                        +    ConfigurationProvider config = context.getConfiguration();
                        +    List additionalSignedProperties = Collections.EMPTY_LIST;
                        +
                        +    return additionalSignedProperties;
                        +  }
                        +
                        +}
                        \ No newline at end of file
                        diff --git a/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/CMSSignatureVerificationInvoker.java b/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/CMSSignatureVerificationInvoker.java
                        index 2c4bbd4eb..c979d8407 100644
                        --- a/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/CMSSignatureVerificationInvoker.java
                        +++ b/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/CMSSignatureVerificationInvoker.java
                        @@ -136,7 +136,7 @@ public class CMSSignatureVerificationInvoker {
                             try {
                               // get the signed content
                               signedContent = getSignedContent(request);
                        -
                        +      
                               // build the profile
                               profile = profileFactory.createProfile();
                         
                        @@ -159,6 +159,7 @@ public class CMSSignatureVerificationInvoker {
                               while (input.read(buf) > 0);
                               results = module.verifySignature(signingTime);
                               
                        +      
                             } catch (IAIKException e) {
                               MOAException moaException = IaikExceptionMapper.getInstance().map(e);
                               throw moaException;
                        diff --git a/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/CreateCMSSignatureResponseBuilder.java b/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/CreateCMSSignatureResponseBuilder.java
                        new file mode 100644
                        index 000000000..aa52fe09a
                        --- /dev/null
                        +++ b/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/CreateCMSSignatureResponseBuilder.java
                        @@ -0,0 +1,93 @@
                        +/*
                        + * 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.server.invoke;
                        +
                        +import java.util.ArrayList;
                        +import java.util.List;
                        +
                        +import at.gv.egovernment.moa.spss.api.SPSSFactory;
                        +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.xmlsign.ErrorResponse;
                        +
                        +/**
                        + * A class to build a CreateCMSSignatureResponse.
                        + * 
                        + * 

                        The methods addSignature() and addError() may be + * called in any combination to add CMSignature and + * ErrorResponse elements to the response. One of these functions + * must be called at least once to produce a + * CreateCMSSignatureResponse.

                        + * + *

                        The getResponseElement() method then returns the + * CreateXMLSignatureResponse built so far.

                        + * + * @author Patrick Peck + * @version $Id$ + */ +public class CreateCMSSignatureResponseBuilder { + + /** The SPSSFactory for creating API objects. */ + private SPSSFactory factory = SPSSFactory.getInstance(); + /** The elements to add to the response. */ + private List responseElements = new ArrayList(); + + /** + * Get the CreateCMSSignatureResponse built so far. + * + * @return The CreateCMSSignatureResponse built so far. + */ + public CreateCMSSignatureResponse getResponse() { + return factory.createCreateCMSSignatureResponse(responseElements); + } + + /** + * Add a SignatureEnvironment element to the response. + * + * @param signatureEnvironment The content to put under the + * SignatureEnvironment element. This should either be a + * dsig:Signature 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); + responseElements.add(responseElement); + } + + /** + * Add a ErrorResponse element to the response. + * + * @param errorCode The error code. + * @param info Additional information about the error. + */ + public void addError(String errorCode, String info) { + ErrorResponse errorResponse = + factory.createErrorResponse(Integer.parseInt(errorCode), info); + responseElements.add(errorResponse); + } + +} diff --git a/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/IaikExceptionMapper.java b/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/IaikExceptionMapper.java index 869cfefa1..348cb84aa 100644 --- a/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/IaikExceptionMapper.java +++ b/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/IaikExceptionMapper.java @@ -85,7 +85,8 @@ public class IaikExceptionMapper { { iaik.server.modules.xmlverify.TransformationException.class, "2265", MOAApplicationException.class }, { iaik.server.modules.xmlverify.TransformationParsingException.class, "2269", MOAApplicationException.class }, { iaik.xml.crypto.tsl.ex.TSLEngineDiedException.class, "2290", MOAApplicationException.class }, - { iaik.xml.crypto.tsl.ex.TSLSearchException.class, "2290", MOAApplicationException.class } + { iaik.xml.crypto.tsl.ex.TSLSearchException.class, "2290", MOAApplicationException.class } , + { iaik.server.modules.cmssign.CMSSignatureCreationException.class, "2300", MOAApplicationException.class } , }; diff --git a/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/VerifyCMSSignatureResponseBuilder.java b/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/VerifyCMSSignatureResponseBuilder.java index 3b82c6caf..605716d5b 100644 --- a/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/VerifyCMSSignatureResponseBuilder.java +++ b/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/VerifyCMSSignatureResponseBuilder.java @@ -80,6 +80,7 @@ public class VerifyCMSSignatureResponseBuilder { public void addResult(CMSSignatureVerificationResult result, TrustProfile trustProfile, boolean checkQCFromTSL, boolean checkSSCDFromTSL) throws MOAException { + CertificateValidationResult certResult = result.getCertificateValidationResult(); int signatureCheckCode = @@ -90,8 +91,7 @@ public class VerifyCMSSignatureResponseBuilder { SignerInfo signerInfo; CheckResult signatureCheck; CheckResult certificateCheck; - - + boolean qualifiedCertificate = false; // verify qualified certificate checks (certificate or TSL) @@ -112,6 +112,7 @@ public class VerifyCMSSignatureResponseBuilder { certResult.isPublicAuthorityCertificate(), certResult.getPublicAuthorityID(), checkSSCDFromTSL); + // add SignatureCheck element signatureCheck = factory.createCheckResult(signatureCheckCode, null); diff --git a/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/server/service/AxisHandler.java b/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/server/service/AxisHandler.java index 6bf2317b4..591e26ac2 100644 --- a/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/server/service/AxisHandler.java +++ b/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/server/service/AxisHandler.java @@ -393,6 +393,7 @@ public class AxisHandler extends BasicHandler { try { String filename = MOA_SPSS_WSDL_RESOURCE_; + File file = new File(filename); if (file.exists()) { //if this resolves to a file, load it @@ -400,7 +401,7 @@ public class AxisHandler extends BasicHandler { } else { //else load a named resource in our classloader. instream = this.getClass().getResourceAsStream(filename); - if (instream == null) { + if (instream == null) { String errorText = Messages.getMessage("wsdlFileMissing", filename); throw new AxisFault(errorText); } diff --git a/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/server/service/SignatureCreationService.java b/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/server/service/SignatureCreationService.java index 7a7bb88bb..e5b12bd8c 100644 --- a/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/server/service/SignatureCreationService.java +++ b/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/server/service/SignatureCreationService.java @@ -35,10 +35,15 @@ import org.w3c.dom.Element; import at.gv.egovernment.moa.logging.Logger; import at.gv.egovernment.moa.spss.MOAException; import at.gv.egovernment.moa.spss.MOASystemException; +import at.gv.egovernment.moa.spss.api.cmssign.CreateCMSSignatureRequest; +import at.gv.egovernment.moa.spss.api.cmssign.CreateCMSSignatureResponse; +import at.gv.egovernment.moa.spss.api.xmlbind.CreateCMSSignatureRequestParser; +import at.gv.egovernment.moa.spss.api.xmlbind.CreateCMSSignatureResponseBuilder; import at.gv.egovernment.moa.spss.api.xmlbind.CreateXMLSignatureRequestParser; 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.XMLSignatureCreationInvoker; import at.gv.egovernment.moa.spss.server.transaction.TransactionContext; import at.gv.egovernment.moa.spss.server.transaction.TransactionContextManager; @@ -52,6 +57,89 @@ import at.gv.egovernment.moa.util.StreamUtils; * @version $Id$ */ public class SignatureCreationService { + + /** + * Handle a CreateXMLSignatureRequest. + * + * @param request The CreateXMLSignatureRequest to work on + * (contained in the 0th element of the array). + * @return A CreateXMLSignatureResponse as the only element of + * the Element 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 CreateXMLSignatureRequest. diff --git a/spss/server/serverlib/src/main/resources/resources/properties/spss_messages_de.properties b/spss/server/serverlib/src/main/resources/resources/properties/spss_messages_de.properties index 5919cebbc..1a6e54089 100644 --- a/spss/server/serverlib/src/main/resources/resources/properties/spss_messages_de.properties +++ b/spss/server/serverlib/src/main/resources/resources/properties/spss_messages_de.properties @@ -81,6 +81,8 @@ 2281=XML-Supplement kann nicht serialisiert werden (Reference="{0}") 2282=Datenobjekt mit der URI={0} wurde dem Request nicht bereit gestellt 2290=Fehler bei der QC bzw. SSCD Prüfung via TSL +2300=Fehler bei der Erstellen der CMS Signatur +2301=Fehler beim Lesen des zu signierenden Datenobjekts 2900=Interner Server-Fehler diff --git a/spss/server/serverlib/src/main/resources/resources/wsdl/MOA-SPSS-1.3.wsdl b/spss/server/serverlib/src/main/resources/resources/wsdl/MOA-SPSS-1.3.wsdl deleted file mode 100644 index c5cd8fc0f..000000000 --- a/spss/server/serverlib/src/main/resources/resources/wsdl/MOA-SPSS-1.3.wsdl +++ /dev/null @@ -1,105 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/spss/server/serverlib/src/main/resources/resources/wsdl/MOA-SPSS-1.3.xsd b/spss/server/serverlib/src/main/resources/resources/wsdl/MOA-SPSS-1.3.xsd deleted file mode 100644 index 756b51279..000000000 --- a/spss/server/serverlib/src/main/resources/resources/wsdl/MOA-SPSS-1.3.xsd +++ /dev/null @@ -1,469 +0,0 @@ - - - - - - - - - - - - - - - - - - - - Ermöglichung der Stapelsignatur durch wiederholte Angabe dieses Elements - - - - - - - - - - - - - - - - - - - Auswahl: Entweder explizite Angabe des Signaturorts sowie ggf. sinnvoller Supplements im Zshg. mit der Signaturumgebung, oder Verweis auf ein benanntes Profil - - - - - - - - - - - - - - - - - - Kardinalität 1..oo erlaubt die Antwort auf eine Stapelsignatur-Anfrage - - - - Resultat, falls die Signaturerstellung erfolgreich war - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - mit diesem Profil wird eine Menge von vertrauenswürdigen Wurzelzertifikaten spezifiziert - - - - - - - - - - - only ds:X509Data and RetrievalMethod is supported; QualifiedCertificate is included as X509Data/any;publicAuthority is included as X509Data/any - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Pro dsig:Reference-Element in der zu überprüfenden XML-Signatur muss hier ein ReferenceInfo-Element erscheinen. Die Reihenfolge der einzelnen ReferenceInfo Elemente entspricht jener der dsig:Reference Elemente in der XML-Signatur. - - - - - - - - - - mit diesem Profil wird eine Menge von vertrauenswürdigen Wurzelzertifikaten spezifiziert - - - - - - - - - - - only ds:X509Data and ds:RetrievalMethod is supported; QualifiedCertificate is included as X509Data/any; PublicAuthority is included as X509Data/any - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Auswahl: Entweder explizite Angabe EINER Transformationskette inklusive ggf. sinnvoller Supplements oder Verweis auf ein benanntes Profil - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Resultat, falls die Signaturerstellung gescheitert ist - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Ein oder mehrere Transformationswege können von der Applikation an MOA mitgeteilt werden. Die zu prüfende Signatur hat zumindest einem dieser Transformationswege zu entsprechen. Die Angabe kann explizit oder als Profilbezeichner erfolgen. - - - - - Profilbezeichner für einen Transformationsweg - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Die Angabe des Transformationsparameters (explizit oder als Hashwert) kann unterlassen werden, wenn die Applikation von der Unveränderlichkeit des Inhalts der in "Transformationsparamter", Attribut "URI" angegebenen URI ausgehen kann. - - - - Der Transformationsparameter explizit angegeben. - - - - - Der Hashwert des Transformationsparameters. - - - - - - - - - - - - - - - - - - - - - - Explizite Angabe des Transformationswegs - - - - - - - Alle impliziten Transformationsparameter, die zum Durchlaufen der oben angeführten Transformationskette bekannt sein müssen, müssen hier angeführt werden. Das Attribut "URI" bezeichnet den Transformationsparameter in exakt jener Weise, wie er in der zu überprüfenden Signatur gebraucht wird. - - - - - - - - - - - - - - - - diff --git a/spss/server/serverlib/src/main/resources/resources/wsdl/MOA-SPSS-1.5.2.wsdl b/spss/server/serverlib/src/main/resources/resources/wsdl/MOA-SPSS-1.5.2.wsdl new file mode 100644 index 000000000..be40c110d --- /dev/null +++ b/spss/server/serverlib/src/main/resources/resources/wsdl/MOA-SPSS-1.5.2.wsdl @@ -0,0 +1,128 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/spss/server/serverlib/src/main/resources/resources/wsdl/MOA-SPSS-1.5.2.xsd b/spss/server/serverlib/src/main/resources/resources/wsdl/MOA-SPSS-1.5.2.xsd new file mode 100644 index 000000000..4ae327ab3 --- /dev/null +++ b/spss/server/serverlib/src/main/resources/resources/wsdl/MOA-SPSS-1.5.2.xsd @@ -0,0 +1,471 @@ + + + + + + + + + + + + + + + + + + + + + Ermöglichung der Stapelsignatur durch wiederholte Angabe dieses Elements + + + + + + + + + + + + + + + + + + + Auswahl: Entweder explizite Angabe des Signaturorts sowie ggf. sinnvoller Supplements im Zshg. mit der Signaturumgebung, oder Verweis auf ein benanntes Profil + + + + + + + + + + + + + + + + + + Kardinalität 1..oo erlaubt die Antwort auf eine Stapelsignatur-Anfrage + + + + Resultat, falls die Signaturerstellung erfolgreich war + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + mit diesem Profil wird eine Menge von vertrauenswürdigen Wurzelzertifikaten spezifiziert + + + + + + + + + + + only ds:X509Data and RetrievalMethod is supported; QualifiedCertificate is included as X509Data/any;publicAuthority is included as X509Data/any + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Pro dsig:Reference-Element in der zu überprüfenden XML-Signatur muss hier ein ReferenceInfo-Element erscheinen. Die Reihenfolge der einzelnen ReferenceInfo Elemente entspricht jener der dsig:Reference Elemente in der XML-Signatur. + + + + + + + + + + mit diesem Profil wird eine Menge von vertrauenswürdigen Wurzelzertifikaten spezifiziert + + + + + + + + + + + only ds:X509Data and ds:RetrievalMethod is supported; QualifiedCertificate is included as X509Data/any; PublicAuthority is included as X509Data/any + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Auswahl: Entweder explizite Angabe EINER Transformationskette inklusive ggf. sinnvoller Supplements oder Verweis auf ein benanntes Profil + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Resultat, falls die Signaturerstellung gescheitert ist + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Ein oder mehrere Transformationswege können von der Applikation an MOA mitgeteilt werden. Die zu prüfende Signatur hat zumindest einem dieser Transformationswege zu entsprechen. Die Angabe kann explizit oder als Profilbezeichner erfolgen. + + + + + Profilbezeichner für einen Transformationsweg + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Die Angabe des Transformationsparameters (explizit oder als Hashwert) kann unterlassen werden, wenn die Applikation von der Unveränderlichkeit des Inhalts der in "Transformationsparamter", Attribut "URI" angegebenen URI ausgehen kann. + + + + Der Transformationsparameter explizit angegeben. + + + + + Der Hashwert des Transformationsparameters. + + + + + + + + + + + + + + + + + + + + + + Explizite Angabe des Transformationswegs + + + + + + + Alle impliziten Transformationsparameter, die zum Durchlaufen der oben angeführten Transformationskette bekannt sein müssen, müssen hier angeführt werden. Das Attribut "URI" bezeichnet den Transformationsparameter in exakt jener Weise, wie er in der zu überprüfenden Signatur gebraucht wird. + + + + + + + + + + + + + + + + diff --git a/spss/server/serverws/.classpath b/spss/server/serverws/.classpath index 767a2a2de..a0edd58fe 100644 --- a/spss/server/serverws/.classpath +++ b/spss/server/serverws/.classpath @@ -6,6 +6,7 @@ + diff --git a/spss/server/serverws/.project b/spss/server/serverws/.project index fa2286335..7b8e89662 100644 --- a/spss/server/serverws/.project +++ b/spss/server/serverws/.project @@ -22,11 +22,6 @@ - - org.maven.ide.eclipse.maven2Builder - - - org.eclipse.m2e.core.maven2Builder @@ -35,11 +30,9 @@ org.eclipse.m2e.core.maven2Nature - org.eclipse.jdt.core.javanature - org.maven.ide.eclipse.maven2Nature org.eclipse.wst.common.project.facet.core.nature + org.eclipse.jdt.core.javanature org.eclipse.wst.common.modulecore.ModuleCoreNature org.eclipse.jem.workbench.JavaEMFNature - org.eclipse.wst.jsdt.core.jsNature diff --git a/spss/server/serverws/.settings/org.eclipse.jdt.core.prefs b/spss/server/serverws/.settings/org.eclipse.jdt.core.prefs index cbb750c06..9ab0af09b 100644 --- a/spss/server/serverws/.settings/org.eclipse.jdt.core.prefs +++ b/spss/server/serverws/.settings/org.eclipse.jdt.core.prefs @@ -1,12 +1,6 @@ -eclipse.preferences.version=1 -org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled -org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5 -org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve -org.eclipse.jdt.core.compiler.compliance=1.5 -org.eclipse.jdt.core.compiler.debug.lineNumber=generate -org.eclipse.jdt.core.compiler.debug.localVariable=generate -org.eclipse.jdt.core.compiler.debug.sourceFile=generate -org.eclipse.jdt.core.compiler.problem.assertIdentifier=error -org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +#Mon Apr 29 14:25:29 CEST 2013 org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5 +eclipse.preferences.version=1 org.eclipse.jdt.core.compiler.source=1.5 +org.eclipse.jdt.core.compiler.compliance=1.5 diff --git a/spss/server/serverws/.settings/org.eclipse.wst.common.component b/spss/server/serverws/.settings/org.eclipse.wst.common.component index c325a5007..82f65bee6 100644 --- a/spss/server/serverws/.settings/org.eclipse.wst.common.component +++ b/spss/server/serverws/.settings/org.eclipse.wst.common.component @@ -8,6 +8,9 @@ + + + diff --git a/spss/server/serverws/pom.xml b/spss/server/serverws/pom.xml index dd0027df6..c61d1ae2b 100644 --- a/spss/server/serverws/pom.xml +++ b/spss/server/serverws/pom.xml @@ -22,7 +22,8 @@ org.apache.maven.plugins maven-war-plugin - 2.0.2 + 2.1.1 + diff --git a/spss/server/serverws/resources/wsdl/MOA-SPSS-1.3.wsdl b/spss/server/serverws/resources/wsdl/MOA-SPSS-1.3.wsdl deleted file mode 100644 index 68c3d0ebd..000000000 --- a/spss/server/serverws/resources/wsdl/MOA-SPSS-1.3.wsdl +++ /dev/null @@ -1,105 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/spss/server/serverws/resources/wsdl/MOA-SPSS-1.3.xsd b/spss/server/serverws/resources/wsdl/MOA-SPSS-1.3.xsd deleted file mode 100644 index 756b51279..000000000 --- a/spss/server/serverws/resources/wsdl/MOA-SPSS-1.3.xsd +++ /dev/null @@ -1,469 +0,0 @@ - - - - - - - - - - - - - - - - - - - - Ermöglichung der Stapelsignatur durch wiederholte Angabe dieses Elements - - - - - - - - - - - - - - - - - - - Auswahl: Entweder explizite Angabe des Signaturorts sowie ggf. sinnvoller Supplements im Zshg. mit der Signaturumgebung, oder Verweis auf ein benanntes Profil - - - - - - - - - - - - - - - - - - Kardinalität 1..oo erlaubt die Antwort auf eine Stapelsignatur-Anfrage - - - - Resultat, falls die Signaturerstellung erfolgreich war - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - mit diesem Profil wird eine Menge von vertrauenswürdigen Wurzelzertifikaten spezifiziert - - - - - - - - - - - only ds:X509Data and RetrievalMethod is supported; QualifiedCertificate is included as X509Data/any;publicAuthority is included as X509Data/any - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Pro dsig:Reference-Element in der zu überprüfenden XML-Signatur muss hier ein ReferenceInfo-Element erscheinen. Die Reihenfolge der einzelnen ReferenceInfo Elemente entspricht jener der dsig:Reference Elemente in der XML-Signatur. - - - - - - - - - - mit diesem Profil wird eine Menge von vertrauenswürdigen Wurzelzertifikaten spezifiziert - - - - - - - - - - - only ds:X509Data and ds:RetrievalMethod is supported; QualifiedCertificate is included as X509Data/any; PublicAuthority is included as X509Data/any - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Auswahl: Entweder explizite Angabe EINER Transformationskette inklusive ggf. sinnvoller Supplements oder Verweis auf ein benanntes Profil - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Resultat, falls die Signaturerstellung gescheitert ist - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Ein oder mehrere Transformationswege können von der Applikation an MOA mitgeteilt werden. Die zu prüfende Signatur hat zumindest einem dieser Transformationswege zu entsprechen. Die Angabe kann explizit oder als Profilbezeichner erfolgen. - - - - - Profilbezeichner für einen Transformationsweg - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Die Angabe des Transformationsparameters (explizit oder als Hashwert) kann unterlassen werden, wenn die Applikation von der Unveränderlichkeit des Inhalts der in "Transformationsparamter", Attribut "URI" angegebenen URI ausgehen kann. - - - - Der Transformationsparameter explizit angegeben. - - - - - Der Hashwert des Transformationsparameters. - - - - - - - - - - - - - - - - - - - - - - Explizite Angabe des Transformationswegs - - - - - - - Alle impliziten Transformationsparameter, die zum Durchlaufen der oben angeführten Transformationskette bekannt sein müssen, müssen hier angeführt werden. Das Attribut "URI" bezeichnet den Transformationsparameter in exakt jener Weise, wie er in der zu überprüfenden Signatur gebraucht wird. - - - - - - - - - - - - - - - - diff --git a/spss/server/serverws/resources/wsdl/MOA-SPSS-1.5.2.wsdl b/spss/server/serverws/resources/wsdl/MOA-SPSS-1.5.2.wsdl new file mode 100644 index 000000000..135f26f68 --- /dev/null +++ b/spss/server/serverws/resources/wsdl/MOA-SPSS-1.5.2.wsdl @@ -0,0 +1,128 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/spss/server/serverws/resources/wsdl/MOA-SPSS-1.5.2.xsd b/spss/server/serverws/resources/wsdl/MOA-SPSS-1.5.2.xsd new file mode 100644 index 000000000..06232f189 --- /dev/null +++ b/spss/server/serverws/resources/wsdl/MOA-SPSS-1.5.2.xsd @@ -0,0 +1,551 @@ + + + + + + + + + + + + + + + + + + + + Ermöglichung der Stapelsignatur durch wiederholte Angabe dieses Elements + + + + + + + + + + + + + + + + + + + + + + Kardinalität 1..oo erlaubt die Antwort auf eine Stapelsignatur-Anfrage + + + + Resultat, falls die Signaturerstellung erfolgreich war + + + + + + + + + + + + + + + + + + + + Ermöglichung der Stapelsignatur durch wiederholte Angabe dieses Elements + + + + + + + + + + + + + + + + + + + Auswahl: Entweder explizite Angabe des Signaturorts sowie ggf. sinnvoller Supplements im Zshg. mit der Signaturumgebung, oder Verweis auf ein benanntes Profil + + + + + + + + + + + + + + + + + + Kardinalität 1..oo erlaubt die Antwort auf eine Stapelsignatur-Anfrage + + + + Resultat, falls die Signaturerstellung erfolgreich war + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + mit diesem Profil wird eine Menge von vertrauenswürdigen Wurzelzertifikaten spezifiziert + + + + + + + + + + + only ds:X509Data and RetrievalMethod is supported; QualifiedCertificate is included as X509Data/any;publicAuthority is included as X509Data/any + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Pro dsig:Reference-Element in der zu überprüfenden XML-Signatur muss hier ein ReferenceInfo-Element erscheinen. Die Reihenfolge der einzelnen ReferenceInfo Elemente entspricht jener der dsig:Reference Elemente in der XML-Signatur. + + + + + + + + + + mit diesem Profil wird eine Menge von vertrauenswürdigen Wurzelzertifikaten spezifiziert + + + + + + + + + + + only ds:X509Data and ds:RetrievalMethod is supported; QualifiedCertificate is included as X509Data/any; PublicAuthority is included as X509Data/any + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Auswahl: Entweder explizite Angabe EINER Transformationskette inklusive ggf. sinnvoller Supplements oder Verweis auf ein benanntes Profil + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Resultat, falls die Signaturerstellung gescheitert ist + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Ein oder mehrere Transformationswege können von der Applikation an MOA mitgeteilt werden. Die zu prüfende Signatur hat zumindest einem dieser Transformationswege zu entsprechen. Die Angabe kann explizit oder als Profilbezeichner erfolgen. + + + + + Profilbezeichner für einen Transformationsweg + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Die Angabe des Transformationsparameters (explizit oder als Hashwert) kann unterlassen werden, wenn die Applikation von der Unveränderlichkeit des Inhalts der in "Transformationsparamter", Attribut "URI" angegebenen URI ausgehen kann. + + + + Der Transformationsparameter explizit angegeben. + + + + + Der Hashwert des Transformationsparameters. + + + + + + + + + + + + + + + + + + + + + + Explizite Angabe des Transformationswegs + + + + + + + Alle impliziten Transformationsparameter, die zum Durchlaufen der oben angeführten Transformationskette bekannt sein müssen, müssen hier angeführt werden. Das Attribut "URI" bezeichnet den Transformationsparameter in exakt jener Weise, wie er in der zu überprüfenden Signatur gebraucht wird. + + + + + + + + + + + + + + + + diff --git a/spss/server/serverws/src/main/webapp/WEB-INF/server-config.wsdd b/spss/server/serverws/src/main/webapp/WEB-INF/server-config.wsdd index 088fe76fd..eaa50865d 100644 --- a/spss/server/serverws/src/main/webapp/WEB-INF/server-config.wsdd +++ b/spss/server/serverws/src/main/webapp/WEB-INF/server-config.wsdd @@ -14,9 +14,12 @@ http://reference.e-government.gv.at/namespace/moa/20020822# - + - /resources/wsdl/MOA-SPSS-1.3.wsdl + + C:\eclipse_workspaces\MOA_Git01\moa-idspss\spss\server\serverws\resources\wsdl\MOA-SPSS-1.5.2.wsdl + + @@ -29,7 +32,7 @@ http://reference.e-government.gv.at/namespace/moa/20020822# - /resources/wsdl/MOA-SPSS-1.3.wsdl + /resources/wsdl/MOA-SPSS-1.5.2.wsdl diff --git a/spss/server/tools/.classpath b/spss/server/tools/.classpath index 65abf443d..21bdbd0bc 100644 --- a/spss/server/tools/.classpath +++ b/spss/server/tools/.classpath @@ -1,12 +1,16 @@ - - - - - - - - - - \ No newline at end of file + + + + + + + + + + + + + + diff --git a/spss/server/tools/.settings/org.eclipse.jdt.core.prefs b/spss/server/tools/.settings/org.eclipse.jdt.core.prefs index 3bfb290ea..c788ee346 100644 --- a/spss/server/tools/.settings/org.eclipse.jdt.core.prefs +++ b/spss/server/tools/.settings/org.eclipse.jdt.core.prefs @@ -1,6 +1,8 @@ -#Thu Dec 27 15:45:21 CET 2012 -org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning -org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5 eclipse.preferences.version=1 -org.eclipse.jdt.core.compiler.source=1.5 -org.eclipse.jdt.core.compiler.compliance=1.5 +org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7 +org.eclipse.jdt.core.compiler.compliance=1.7 +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning +org.eclipse.jdt.core.compiler.source=1.7 -- cgit v1.2.3 From 5a676cfedb379eb73e0b86ba158214902da14bd3 Mon Sep 17 00:00:00 2001 From: Klaus Stranacher Date: Tue, 7 May 2013 10:24:47 +0200 Subject: Update documentation (Usage for CreateCMSSignatureRequest) --- ...reateCMSSignatureRequest.Base64Content.resp.xml | 44 ++++++++++++++ .../CreateCMSSignatureRequest.Base64Content.xml | 17 ++++++ .../CreateCMSSignatureRequest.Reference.resp.xml | 38 ++++++++++++ .../CreateCMSSignatureRequest.Reference.xml | 14 +++++ .../CreateXMLSignatureRequest.Simple.response.xml | 24 -------- ...ateXMLSignatureRequest.Supplements.response.xml | 2 - ...ifyXMLSignatureRequest.Supplements.response.xml | 23 -------- spss/handbook/handbook/usage/usage.html | 69 ++++++++++++++++++---- 8 files changed, 170 insertions(+), 61 deletions(-) create mode 100644 spss/handbook/clients/webservice/resources/requests/CreateCMSSignatureRequest.Base64Content.resp.xml create mode 100644 spss/handbook/clients/webservice/resources/requests/CreateCMSSignatureRequest.Base64Content.xml create mode 100644 spss/handbook/clients/webservice/resources/requests/CreateCMSSignatureRequest.Reference.resp.xml create mode 100644 spss/handbook/clients/webservice/resources/requests/CreateCMSSignatureRequest.Reference.xml delete mode 100644 spss/handbook/clients/webservice/resources/requests/CreateXMLSignatureRequest.Simple.response.xml delete mode 100644 spss/handbook/clients/webservice/resources/requests/CreateXMLSignatureRequest.Supplements.response.xml delete mode 100644 spss/handbook/clients/webservice/resources/requests/VerifyXMLSignatureRequest.Supplements.response.xml (limited to 'spss') diff --git a/spss/handbook/clients/webservice/resources/requests/CreateCMSSignatureRequest.Base64Content.resp.xml b/spss/handbook/clients/webservice/resources/requests/CreateCMSSignatureRequest.Base64Content.resp.xml new file mode 100644 index 000000000..a99e97d0c --- /dev/null +++ b/spss/handbook/clients/webservice/resources/requests/CreateCMSSignatureRequest.Base64Content.resp.xml @@ -0,0 +1,44 @@ + + + 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/ +llGVtT8VDtNGS0wGMYICuTCCArUCAQEwSjBAMSIwIAYDVQQDExlJQUlLIFRlc3Qg +SW50ZXJtZWRpYXRlIENBMQ0wCwYDVQQKEwRJQUlLMQswCQYDVQQGEwJBVAIGY6tX +ffAmMAsGCWCGSAFlAwQCA6CCAUQwGAYJKoZIhvcNAQkDMQsGCSqGSIb3DQEHATAc +BgkqhkiG9w0BCQUxDxcNMTMwNTA2MjAwNTQ2WjBPBgkqhkiG9w0BCQQxQgRAds70 +61RkR9wybcxKrtd9Uc/S/DNyxhvXPzr5A8IphKGDTe4lHXiky2xwjYEcSE7Mx3Jm +8Lo5d9iFu45Dq9nx0DCBuAYLKoZIhvcNAQkQAi8xgagwgaUwgaIwgZ8wCwYJYIZI +AWUDBAIDBEBxEElsIgrSD8KgnZk88uomiqWEEvWoMufQe68l7z1/qYX39aLlD2Sh +pHolkI+EM5JuuWM678CAJdkOTvxUvKm8ME4wRKRCMEAxIjAgBgNVBAMTGUlBSUsg +VGVzdCBJbnRlcm1lZGlhdGUgQ0ExDTALBgNVBAoTBElBSUsxCzAJBgNVBAYTAkFU +AgZjq1d98CYwCwYJKoZIhvcNAQEBBIIBACRh+vEXSpupLSJY56WNzVTaPLq4EINO +ovsOFaigYtFy9VOVVijg0ycMJqEeIl+lxJvmr9z30w9g4STa0EGoFxt2rXCyYtFt +W+A70MPZ++PXlKAtBtXoMR2hVZ5XYk8yI42NBlN0XWOTgDZgTXlj4M4YYZHUPCLr +NhwT2hLZ6WsQWhZpVF6d8GnhqPPgUnSibbDkjHHQMJZh/y5j+1M8IrSosPainrkI +8yxyZOmbfoWVUXKRxFgfZ7YpWShbDgZ3JasyIXihOPXF7n2jlFxFACYiNrD93D4k +p5j58Cfjvd0gm5QIDPvx1Z4rQ3oVOrzsjV+2e82hbqmhkzenp92gh6wAAAAAAAA= + + + diff --git a/spss/handbook/clients/webservice/resources/requests/CreateCMSSignatureRequest.Base64Content.xml b/spss/handbook/clients/webservice/resources/requests/CreateCMSSignatureRequest.Base64Content.xml new file mode 100644 index 000000000..28b67f94c --- /dev/null +++ b/spss/handbook/clients/webservice/resources/requests/CreateCMSSignatureRequest.Base64Content.xml @@ -0,0 +1,17 @@ + + + KG_allgemein + + + + + text/plain + + + RGllc2UgRGF0ZW4gc2luZCByZWluZXIgVGV4dC4= + + + + + + diff --git a/spss/handbook/clients/webservice/resources/requests/CreateCMSSignatureRequest.Reference.resp.xml b/spss/handbook/clients/webservice/resources/requests/CreateCMSSignatureRequest.Reference.resp.xml new file mode 100644 index 000000000..c81e98fee --- /dev/null +++ b/spss/handbook/clients/webservice/resources/requests/CreateCMSSignatureRequest.Reference.resp.xml @@ -0,0 +1,38 @@ + + + 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 + \ No newline at end of file diff --git a/spss/handbook/clients/webservice/resources/requests/CreateCMSSignatureRequest.Reference.xml b/spss/handbook/clients/webservice/resources/requests/CreateCMSSignatureRequest.Reference.xml new file mode 100644 index 000000000..976ea7a6a --- /dev/null +++ b/spss/handbook/clients/webservice/resources/requests/CreateCMSSignatureRequest.Reference.xml @@ -0,0 +1,14 @@ + + + KG_allgemein + + + + + text/plain + + + + + + \ No newline at end of file diff --git a/spss/handbook/clients/webservice/resources/requests/CreateXMLSignatureRequest.Simple.response.xml b/spss/handbook/clients/webservice/resources/requests/CreateXMLSignatureRequest.Simple.response.xml deleted file mode 100644 index cb966151b..000000000 --- a/spss/handbook/clients/webservice/resources/requests/CreateXMLSignatureRequest.Simple.response.xml +++ /dev/null @@ -1,24 +0,0 @@ - -tLODyeiWFbAkQKwhrR23jtcgu4k=2tI1Wv/LsUKr0hcsWSYXSHne7kbCBXGFrIiI/1WfAH2ba8vT5kVfJn4NOBOBatLAMIIELjCCAxagAwIBAgIBEzANBgkqhkiG9w0BAQUFADBEMQswCQYDVQQGEwJBVDEQ -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/O65tdn7Diese Daten werden signiert. \ No newline at end of file diff --git a/spss/handbook/clients/webservice/resources/requests/CreateXMLSignatureRequest.Supplements.response.xml b/spss/handbook/clients/webservice/resources/requests/CreateXMLSignatureRequest.Supplements.response.xml deleted file mode 100644 index ac5d0a52f..000000000 --- a/spss/handbook/clients/webservice/resources/requests/CreateXMLSignatureRequest.Supplements.response.xml +++ /dev/null @@ -1,2 +0,0 @@ - -2237Fehler beim Auflösen der internen Referenz (URI=Para2) \ No newline at end of file diff --git a/spss/handbook/clients/webservice/resources/requests/VerifyXMLSignatureRequest.Supplements.response.xml b/spss/handbook/clients/webservice/resources/requests/VerifyXMLSignatureRequest.Supplements.response.xml deleted file mode 100644 index 2fab33b20..000000000 --- a/spss/handbook/clients/webservice/resources/requests/VerifyXMLSignatureRequest.Supplements.response.xml +++ /dev/null @@ -1,23 +0,0 @@ - -CN=Test: Signaturdienst aller Kunden: ECDSA (P192v1),OU=Technik und Standards,O=Stabsstelle IKT-Strategie des Bundes,C=ATCN=Test CA - Signaturdienste,OU=Technik und Standards,O=Stabstelle IKT-Strategie des Bundes,C=AT9MIID+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+UiTiNNSaXirqBKA-IKT00 \ No newline at end of file diff --git a/spss/handbook/handbook/usage/usage.html b/spss/handbook/handbook/usage/usage.html index 4d14ab917..6fcccc612 100644 --- a/spss/handbook/handbook/usage/usage.html +++ b/spss/handbook/handbook/usage/usage.html @@ -29,8 +29,8 @@
                      2. XML-Requests
                        1. Erstellung einer CMS bzw. CAdES-Signatur
                          1. -
                          2. Einfaches Beispiel
                          3. -
                          4. Erweitertes Beispiel
                          5. +
                          6. Beispiel (Base64-codiertes Datenobjekt)
                          7. +
                          8. Beispiel (Datenobjekt als Referenz)
                        2. Erstellung einer XML bzw. XAdES-Signatur
                            @@ -85,18 +85,64 @@

                            2 Verwendung des Webservices

                            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.

                            2.1 XML-Requests

                            -

                            TODO: Auch plain CMS unterstützt?

                            -

                            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.

                            -

                            Bitte beachten Sie: Einige der vorgestellten Requests referenzieren beispielhafte Daten auf localhost, z.B. http://localhost:8080/referencedData/Text.txt. 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 localhost:8080 betreiben, ist es ausreichend, wenn sie die diesem Handbuch beiliegende Webapplikation referencedData.war in das Verzeichnis webapps Ihrer Tomcat-Installation kopieren. Ansonsten müssen Sie zusätzlich die URLs in den Requests anpassen.

                            +

                            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.

                            +

                            Bitte beachten Sie: Einige der vorgestellten Requests referenzieren beispielhafte Daten auf localhost, z.B. http://localhost:8080/referencedData/Text.txt. 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 localhost:8080 betreiben, ist es ausreichend, wenn sie die diesem Handbuch beiliegende Webapplikation referencedData.war in das Verzeichnis webapps Ihrer Tomcat-Installation kopieren. Ansonsten müssen Sie zusätzlich die URLs in den Requests anpassen.

                            2.1.1 Erstellung einer CMS bzw. CAdES-Signatur

                            -

                            2.1.1.1 Einfaches Beispiel

                            -

                            TODO

                            - -

                            2.1.1.1 Erweitertes Beispiel

                            +

                            MOA-SS ermöglicht die Erstellung einer herkömmlichen CMS-Signatur und einer CAdES-Signatur gemäß der Security-Layer Spezifikation V1.2x TODO. Die Auswahl ob eine herkömmliche XML oder eine Security-Layer konforme CAdES-Signatur erstellt wird, erfolgt durch das Attribute SecurityLayerConformity im Signaturerstelltungs-Request (siehe auch folgende Beispiele).

                            +

                            2.1.1.1 Beispiel (Base64-codiertes Datenobjekt)

                            +
                            Request
                            +

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

                            +
                              <KeyIdentifier>KG_allgemein</KeyIdentifier> 
                            +

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

                            +
                              <SingleSignatureInfo SecurityLayerConformity="true">
                            +

                            Für jedes SingleSignatureInfoElement wird eine eigene CMS/CAdES-Signatur erzeugt. Wird das Attribut SecurityLayerConformity auf true gesetzt, dann wird eine CAdES-Signatur gemäß Security-Layer Spezifikation V1.2x TODO 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).

                            +
                                <DataObjectInfo Structure="enveloping">
                            +	     <DataObject>
                            +		    <MetaInfo>
                            +             <MimeType>text/plain</MimeType>
                            +          </MetaInfo>
                            +          <Content>
                            +         	   <Base64Content>RGllc2UgRGF0ZW4gc2luZCByZWluZXIgVGV4dC4=</Base64Content>
                            +          </Content>			
                            +       </DataObject>		
                            +	  </DataObjectInfo>
                            +
                            +

                            Das zu signierende Daten-Objekt muss in einem DataObjectInfo Element spezifiziert werden. Das Attribut Structure gibt an, ob die Daten in die Signatur integriert werden sollen (Structure="enveloping") oder nicht (Structure="detached").

                            +

                            Im nachfolgenden DataObject Element muss entweder das Attribut Reference (enthält eine URL, von der SS die Daten beziehen soll) gesetzt sein, oder aber die zu signierenden Daten werden explizit im Element Base64Content (enthält Daten in Base64 kodierter Form) spezifiziert sein. Die Angabe der zu signierenden Daten über das Attribut Reference und gleichzeitig im Element Base64Content ist nicht erlaubt. Zusätzlich muss im Element MimeType (unter dem Element MetaInfo) der MIME-Type der zu signierenden Daten spezifiziert werden.

                            +

                            Im konkreten Beispiel sollen die Daten in die Signatur integriert werden (Structure="enveloping"). Die Daten werden in diesem Beispiel mittels Base64Content angegeben. Der MIME-Type wird mit text/plain angegeben.

                            +
                            Response
                            +

                            TODO: Neue Signatur erzeugen (da CAdES - d.h. noch auf neues iaik-moa warten)

                            +

                            CreateCMSSignatureRequest.Base64Content.resp.xml 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.

                            +
                            <CreateCMSSignatureResponse
                            +  xmlns="http://reference.e-government.gv.at/namespace/moa/20020822#" 
                            xmlns:dsig="http://www.w3.org/2000/09/xmldsig#">
                            <CMSSignature>MIAGCSqGSI...p92gh6wAAAAAAAA=</CMSSignature>
                            </CreateCMSSignatureResponse>
                            +

                            CreateCMSSignatureResponse enthält je erzeugter Signatur ein Element CMSSignature (in diesem Fall genau ein Element). CMSSignature enthält die von SS erzeugte CAdES-Signatur (da SecurityLayerConformity="true" im Request angegeben wurde) als Base64-codierten Wert. Das unterzeichnete Datenobjekt ist in der Signaturstruktur selbst enthalten (enveloping).

                            +

                            2.1.1.2 Beispiel (Datenobjekt als Referenz)

                            -

                            TODO

                            +
                            Request
                            +

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

                            +
                              <KeyIdentifier>KG_allgemein</KeyIdentifier> 
                            +

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

                            +
                              <SingleSignatureInfo SecurityLayerConformity="false">
                            +

                            Für jedes SingleSignatureInfoElement wird eine eigene CMS/CAdES-Signatur erzeugt. Wird das Attribut SecurityLayerConformity auf true gesetzt, dann wird eine CAdES-Signatur gemäß Security-Layer Spezifikation V1.2x TODO 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).

                            +
                                <DataObjectInfo Structure="detached">
                            +	     <DataObject>
                            +		    <MetaInfo>
                            +             <MimeType>text/plain</MimeType>
                            +          </MetaInfo>
                            +          <Content Reference="http://localhost:8080/moa-spss-handbook-referencedData/Text.txt"/>         	   
                            +       </DataObject>		
                            +	  </DataObjectInfo>
                            +
                            +

                            Das zu signierende Daten-Objekt muss in einem DataObjectInfo Element spezifiziert werden. Das Attribut Structure gibt an, ob die Daten in die Signatur integriert werden sollen (Structure="enveloping") oder nicht (Structure="detached").

                            +

                            Im nachfolgenden DataObject Element muss entweder das Attribut Reference (enthält eine URL, von der SS die Daten beziehen soll) gesetzt sein, oder aber die zu signierenden Daten werden explizit im Element Base64Content (enthält Daten in Base64 kodierter Form) spezifiziert sein. Die Angabe der zu signierenden Daten über das Attribut Reference und gleichzeitig im Element Base64Content ist nicht erlaubt. Zusätzlich muss im Element MimeType (unter dem Element MetaInfo) der MIME-Type der zu signierenden Daten spezifiziert werden.

                            +

                            Im konkreten Beispiel sollen die Daten nicht in die Signatur integriert werden (Structure="detached"). Die Daten werden in diesem Beispiel mittels der Attributs Refernce angegeben und SS muss es von dieser URL laden. Der MIME-Type wird mit text/plain angegeben.

                            +
                            Response
                            +

                            CreateCMSSignatureRequest.Reference.resp.xml 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.

                            +
                            <CreateCMSSignatureResponse
                            +  xmlns="http://reference.e-government.gv.at/namespace/moa/20020822#" 
                            xmlns:dsig="http://www.w3.org/2000/09/xmldsig#">
                            <CMSSignature>MIAGCSqGSI...SwxhbA9pAAAAAAAA</CMSSignature>
                            </CreateCMSSignatureResponse>
                            +

                            CreateCMSSignatureResponse enthält je erzeugter Signatur ein Element CMSSignature (in diesem Fall genau ein Element). CMSSignature enthält die von SS erzeugte CMS-Signatur (da SecurityLayerConformity="false" im Request angegeben wurde) als Base64-codierten Wert. Das unterzeichnete Datenobjekt ist in der Signaturstruktur nicht enthalten (detached).

                            2.1.2 Erstellung einer XML bzw. XAdES-Signatur

                            -

                            MOA-SS ermöglicht die Erstellung einer herkömmlichen XML-Signatur und einer XAdES-Signatur gemäß der Security-Layer Spezifikation V1.2x. Die Auswahl ob eine herkömmliche XML oder eine Security-Layer konforme XAdES-Signatur erstellt wird, erfolgt durch das Attribute SecurityLayerConformity im Signaturerstelltungs-Request (siehe auch folgende Beispiele).

                            +

                            MOA-SS ermöglicht die Erstellung einer herkömmlichen XML-Signatur und einer XAdES-Signatur gemäß der Security-Layer Spezifikation V1.2x TODO. Die Auswahl ob eine herkömmliche XML oder eine Security-Layer konforme XAdES-Signatur erstellt wird, erfolgt durch das Attribute SecurityLayerConformity im Signaturerstelltungs-Request (siehe auch folgende Beispiele).

                            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 Konfiguration der XAdES Version).

                            2.1.2.1 Einfaches Beispiel

                            Request
                            @@ -1236,6 +1282,5 @@ Ich habe weiters ein eigenens ID-Attribut bekommen.</doc:Paragraph> -

                             

                            -- cgit v1.2.3 From fe75121d894e86d29a2804f44438ed594c717097 Mon Sep 17 00:00:00 2001 From: Klaus Stranacher Date: Wed, 15 May 2013 15:19:21 +0200 Subject: Update iaik libraries: iaik-moa and jce Update iaik-moa exception import whitelisting activated in iaik-moa --- .../spss/server/config/ConfigurationPartsBuilder.java | 19 ++++++++++--------- .../invoke/CMSSignatureVerificationInvoker.java | 4 ++-- .../moa/spss/server/invoke/IaikExceptionMapper.java | 8 ++++---- .../server/invoke/XMLSignatureCreationInvoker.java | 4 ++-- .../invoke/XMLSignatureVerificationInvoker.java | 4 ++-- 5 files changed, 20 insertions(+), 19 deletions(-) (limited to 'spss') diff --git a/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/server/config/ConfigurationPartsBuilder.java b/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/server/config/ConfigurationPartsBuilder.java index 4fcc5daa9..2dcffa014 100644 --- a/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/server/config/ConfigurationPartsBuilder.java +++ b/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/server/config/ConfigurationPartsBuilder.java @@ -30,6 +30,7 @@ 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; @@ -525,19 +526,19 @@ public class ConfigurationPartsBuilder { String host = getElementValue(permitExtElem, CONF + "IP", null); String port = getElementValue(permitExtElem, CONF + "Port", null); - // TODO WhiteListeEntry -// WhiteListEntry entry =null; + // WhiteListeEntry + WhiteListEntry entry =null; if (port == null) { -// entry = new WhiteListEntry(host, -1); + entry = new WhiteListEntry(host, -1); info("config.49", new Object[]{host}); } else { -// entry = new WhiteListEntry(host, new Integer(port).intValue()); + entry = new WhiteListEntry(host, new Integer(port).intValue()); info("config.49", new Object[]{host + ":" + port}); } -// -// // add entry to iaik-moa whitelist -// whiteListIaikMoa.add(entry); + + // add entry to iaik-moa whitelist + whiteListIaikMoa.add(entry); String array[] = new String[2]; @@ -548,8 +549,8 @@ public class ConfigurationPartsBuilder { } - // TODO set whitelist for iaik-moa -// ExternalReferenceChecker.setWhitelist(whiteListIaikMoa); + // set whitelist for iaik-moa + ExternalReferenceChecker.setWhitelist(whiteListIaikMoa); if(whitelist.isEmpty()) // no whitelisted uris given diff --git a/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/CMSSignatureVerificationInvoker.java b/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/CMSSignatureVerificationInvoker.java index c979d8407..00f96f205 100644 --- a/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/CMSSignatureVerificationInvoker.java +++ b/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/CMSSignatureVerificationInvoker.java @@ -24,8 +24,8 @@ package at.gv.egovernment.moa.spss.server.invoke; -import iaik.IAIKException; -import iaik.IAIKRuntimeException; +import iaik.server.modules.IAIKException; +import iaik.server.modules.IAIKRuntimeException; import iaik.server.modules.cmsverify.CMSSignatureVerificationModule; import iaik.server.modules.cmsverify.CMSSignatureVerificationModuleFactory; import iaik.server.modules.cmsverify.CMSSignatureVerificationProfile; diff --git a/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/IaikExceptionMapper.java b/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/IaikExceptionMapper.java index 348cb84aa..1136ff2f8 100644 --- a/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/IaikExceptionMapper.java +++ b/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/IaikExceptionMapper.java @@ -24,8 +24,8 @@ package at.gv.egovernment.moa.spss.server.invoke; -import iaik.IAIKException; -import iaik.IAIKRuntimeException; +import iaik.server.modules.IAIKException; +import iaik.server.modules.IAIKRuntimeException; import java.lang.reflect.Constructor; import java.util.HashMap; @@ -51,8 +51,8 @@ public class IaikExceptionMapper { /** The exception mapping, as an array. */ private static final Object[][] MESSAGES = { - { iaik.IAIKException.class, "9900", MOASystemException.class }, - { iaik.IAIKRuntimeException.class, "9901", MOASystemException.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 }, diff --git a/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/XMLSignatureCreationInvoker.java b/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/XMLSignatureCreationInvoker.java index 8bebff974..7debb7b3a 100644 --- a/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/XMLSignatureCreationInvoker.java +++ b/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/XMLSignatureCreationInvoker.java @@ -24,8 +24,8 @@ package at.gv.egovernment.moa.spss.server.invoke; -import iaik.IAIKException; -import iaik.IAIKRuntimeException; +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; diff --git a/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/XMLSignatureVerificationInvoker.java b/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/XMLSignatureVerificationInvoker.java index 8a5b6f5b7..f3ac72520 100644 --- a/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/XMLSignatureVerificationInvoker.java +++ b/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/XMLSignatureVerificationInvoker.java @@ -24,10 +24,10 @@ package at.gv.egovernment.moa.spss.server.invoke; -import iaik.IAIKException; -import iaik.IAIKRuntimeException; import iaik.ixsil.exceptions.URIException; import iaik.ixsil.util.URI; +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; -- cgit v1.2.3 From 1d918b4e05d06ed39f6215fd70ce375a38a300b8 Mon Sep 17 00:00:00 2001 From: Klaus Stranacher Date: Thu, 16 May 2013 09:35:16 +0200 Subject: New design MOA-ID and MOA-SPSS documentation --- spss/handbook/handbook/common/LogoEGIZ.png | Bin 0 -> 77395 bytes .../handbook/common/LogoMoa4c.3148x3545.jpg | Bin 1584855 -> 0 bytes spss/handbook/handbook/common/LogoMoa4c.jpg | Bin 45624 -> 0 bytes spss/handbook/handbook/common/LogoMoaBw.jpg | Bin 41375 -> 0 bytes spss/handbook/handbook/common/MOA.css | 317 +++++++++++++ spss/handbook/handbook/config/config.html | 50 +- spss/handbook/handbook/faq/faq.html | 11 +- spss/handbook/handbook/index.html | 7 +- spss/handbook/handbook/install/install.html | 9 +- spss/handbook/handbook/intro/intro.html | 9 +- spss/handbook/handbook/usage/usage.html | 511 ++++++++++----------- spss/server/serverws/.classpath | 1 - .../.settings/org.eclipse.wst.common.component | 9 +- 13 files changed, 616 insertions(+), 308 deletions(-) create mode 100644 spss/handbook/handbook/common/LogoEGIZ.png delete mode 100644 spss/handbook/handbook/common/LogoMoa4c.3148x3545.jpg delete mode 100644 spss/handbook/handbook/common/LogoMoa4c.jpg delete mode 100644 spss/handbook/handbook/common/LogoMoaBw.jpg (limited to 'spss') diff --git a/spss/handbook/handbook/common/LogoEGIZ.png b/spss/handbook/handbook/common/LogoEGIZ.png new file mode 100644 index 000000000..39f05d131 Binary files /dev/null and b/spss/handbook/handbook/common/LogoEGIZ.png differ diff --git a/spss/handbook/handbook/common/LogoMoa4c.3148x3545.jpg b/spss/handbook/handbook/common/LogoMoa4c.3148x3545.jpg deleted file mode 100644 index a5ba135ef..000000000 Binary files a/spss/handbook/handbook/common/LogoMoa4c.3148x3545.jpg and /dev/null differ diff --git a/spss/handbook/handbook/common/LogoMoa4c.jpg b/spss/handbook/handbook/common/LogoMoa4c.jpg deleted file mode 100644 index a1102090b..000000000 Binary files a/spss/handbook/handbook/common/LogoMoa4c.jpg and /dev/null differ diff --git a/spss/handbook/handbook/common/LogoMoaBw.jpg b/spss/handbook/handbook/common/LogoMoaBw.jpg deleted file mode 100644 index 5a31e3e15..000000000 Binary files a/spss/handbook/handbook/common/LogoMoaBw.jpg and /dev/null differ diff --git a/spss/handbook/handbook/common/MOA.css b/spss/handbook/handbook/common/MOA.css index 81e0a3f8d..85ed13693 100644 --- a/spss/handbook/handbook/common/MOA.css +++ b/spss/handbook/handbook/common/MOA.css @@ -1,4 +1,320 @@ 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; @@ -298,3 +614,4 @@ li.faq font-weight: normal; margin-bottom: 0.4em; } +*/ \ No newline at end of file diff --git a/spss/handbook/handbook/config/config.html b/spss/handbook/handbook/config/config.html index 6809c143d..d1c7d5636 100644 --- a/spss/handbook/handbook/config/config.html +++ b/spss/handbook/handbook/config/config.html @@ -5,41 +5,40 @@ MOA SS und SP - Konfiguration - + - - - + + +
                            Logo BKAOpen Source
                            - für das E-Government
                            Logo MOALogo BKADokumentationLogo EGIZ

                            -

                            MOA: Serversignatur (SS) und Signaturprüfung (SP), V 1.5

                            +

                            MOA: Serversignatur (SS) und Signaturprüfung (SP)

                            Konfiguration


                            Inhalt

                            1. -

                              Übersicht

                              +

                              Übersicht

                                -
                              1. Allgemeines +
                              2. Allgemeines
                                  -
                                1. Namenskonventionen
                                2. +
                                3. Namenskonventionen
                              3. -
                              4. Zentrale Konfigurationsdatei +
                              5. Zentrale Konfigurationsdatei
                                  -
                                1. Aktualisierung auf das Format von MOA SP/SS 1.3
                                2. +
                                3. Aktualisierung auf das Format von MOA SP/SS 1.3
                              6. -
                              7. Bekanntmachung der Konfigurationsdatei +
                              8. Bekanntmachung der Konfigurationsdatei
                                  -
                                1. Aktualisierung der Konfiguration im laufenden Betrieb
                                2. +
                                3. Aktualisierung der Konfiguration im laufenden Betrieb
                              9. -
                              10. Konfiguration des Loggings
                              11. +
                              12. Konfiguration des Loggings
                            2. Konfigurationsparameter @@ -115,10 +114,10 @@

                            -

                            1 Übersicht

                            +

                            1 Übersicht

                            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.

                            -

                            1.1 Allgemeines

                            -

                            1.1.1 Namenskonventionen

                            +

                            1.1 Allgemeines

                            +

                            1.1.1 Namenskonventionen

                            Folgende Namenraum-Präfixe werden in diesem Handbuch zur Kennzeichnung der Namenräume von XML-Elementen verwendet:

                            @@ -143,9 +142,9 @@
                            http://www.w3.org/2001/XMLSchema
                            -

                            1.2 Zentrale Konfigurationsdatei

                            +

                            1.2 Zentrale Konfigurationsdatei

                            Die Konfiguration von MOA SP/SS erfolgt zentral über eine einzige Konfigurationsdatei. Das Format der Konfigurationsdatei ist XML und muss dem Schema MOA-SPSS-config-1.5.2.xsd entsprechen. Abschnitt 2 erläutert die Konfigurationsmöglichkeiten im Einzelnen.

                            -

                            1.2.1 +

                            1.2.1 Aktualisierung auf das Format von MOA SP/SS 1.3

                            Mit dem Wechsel auf Version 1.3 verwendet MOA SP/SS ein neues, übersichtlicheres Format für die XML-Konfigurationsdatei.

                            @@ -159,19 +158,18 @@ an, der zweite Parameter Pfad und Dateiname für die zu erzeugende Konfigurationsdatei im neuen Format (Hinweis: Die Beispielpfade beziehen sich auf Windows-Betriebssysteme; für Unix-Betriebssysteme wählen Sie bitte sinngemäße Pfade.).

                            -

                            1.3 Bekanntmachung der Konfigurationsdatei

                            +

                            1.3 Bekanntmachung der Konfigurationsdatei

                            Die zentrale Konfigurationsdatei von MOA SP/SS wird der Java Virtual Machine, in der MOA SP/SS läuft, durch eine System Property mitgeteilt (wird beim Starten der Java Virtual Machine in der Form -D<name>=<wert> gemacht). Der Name der System Property lautet moa.spss.server.configuration; als Wert der System Property ist der Pfad sowie der Name der Konfigurationsdatei im Dateisystem anzugeben, z.B.

                            moa.spss.server.configuration=C:/Programme/apache/tomcat-4.1.30/conf/moa-spss/moa-spss.config.xml 
                             

                            Weitere Informationen zum Bekanntmachen der zentralen Konfigurationsdatei für MOA SP/SS erhalten Sie in Abschnitt 2.1.2.3 des Installationshandbuchs.

                            -

                            1.3.1 +

                            1.3.1 Aktualisierung der Konfiguration im laufenden Betrieb

                            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.

                            Weitere Informationen zum erneuten Einlesen der Konfigurationsdatei im Webservice-Betrieb erhalten Sie in Abschnitt 2.1.2.5 des Installationshandbuchs.

                            -

                            1.4 Konfiguration des Loggings

                            -

                            MOA SP/SS verwendet als Framework für Logging-Information die Open Source Software log4j. Die Konfiguration der Logging-Information erfolgt nicht direkt durch MOA SP/SS, sondern über eine eigene Konfigurationsdatei, die der Java Virtual Machine durch eine System Property mitgeteilt wird. Der Name der System Property lautet log4j.configuration; als Wert der System Property ist eine URL anzugeben, die auf die log4j-Konfigurationsdatei verweist, z.B.

                            -

                            -

                            log4j.configuration=file:/C:/Programme/apache/tomcat-4.1.30/conf/moa-spss/log4j.properties
                            +

                            1.4 Konfiguration des Loggings

                            +

                            MOA SP/SS verwendet als Framework für Logging-Information die Open Source Software log4j. Die Konfiguration der Logging-Information erfolgt nicht direkt durch MOA SP/SS, sondern über eine eigene Konfigurationsdatei, die der Java Virtual Machine durch eine System Property mitgeteilt wird. Der Name der System Property lautet log4j.configuration; als Wert der System Property ist eine URL anzugeben, die auf die log4j-Konfigurationsdatei verweist, z.B.

                            +
                            log4j.configuration=file:/C:/Programme/apache/tomcat-4.1.30/conf/moa-spss/log4j.properties
                            Weitere Informationen zur Konfiguration des Loggings erhalten Sie in Abschnitt 2.1.3 des Installationshandbuchs.

                            2 Konfigurationsparameter

                            @@ -219,7 +217,7 @@

                            2.1.2 Auflösen externer URIs

                            -

                            Standardmäßig ist das Auflösen von externen URIs (inkl. localhost) deaktiviert (d.h. keines der nachfolgenden Konfigurationselement cfg:PermitExternalUris bzw. cfg:ForbidExternalUris existiert). Es gibt jedoch zwei Möglichkeiten das Auflösen zu aktivieren bzw. zu

                            +

                            Standardmäßig ist das Auflösen von externen URIs (inkl. localhost) deaktiviert (d.h. keines der nachfolgenden Konfigurationselement cfg:PermitExternalUris bzw. cfg:ForbidExternalUris existiert). Es gibt jedoch zwei Möglichkeiten das Auflösen zu aktivieren:

                            • 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.
                            • 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.
                            • diff --git a/spss/handbook/handbook/faq/faq.html b/spss/handbook/handbook/faq/faq.html index 00e005a02..4e9ff77a3 100644 --- a/spss/handbook/handbook/faq/faq.html +++ b/spss/handbook/handbook/faq/faq.html @@ -5,17 +5,16 @@ MOA SS und SP - FAQ - + - - - + + +
                              Logo BKAOpen Source
                              - für das E-Government
                              Logo MOALogo BKADokumentationLogo EGIZ

                              -

                              MOA: Serversignatur (SS) und Signaturprüfung (SP), V 1.5

                              +

                              MOA: Serversignatur (SS) und Signaturprüfung (SP)

                              FAQ


                              Inhalt

                              diff --git a/spss/handbook/handbook/index.html b/spss/handbook/handbook/index.html index 8146ea7c0..2dbc921bd 100644 --- a/spss/handbook/handbook/index.html +++ b/spss/handbook/handbook/index.html @@ -5,13 +5,12 @@ MOA SS und SP - Übersicht - + - - + +
                              Logo BKAOpen Source
                              - für das E-Government
                              Logo MOADokumentationLogo EGIZ

                              diff --git a/spss/handbook/handbook/install/install.html b/spss/handbook/handbook/install/install.html index 57da2b55c..61785870d 100644 --- a/spss/handbook/handbook/install/install.html +++ b/spss/handbook/handbook/install/install.html @@ -5,17 +5,16 @@ MOA SS und SP - Installation - +< - - + +
                              Logo BKAOpen Source
                              - für das E-Government
                              Logo MOADokumentationLogo EGIZ

                              -

                              MOA: Serversignatur (SS) und Signaturprüfung (SP), V 1.5

                              +

                              MOA: Serversignatur (SS) und Signaturprüfung (SP)

                              Installation


                              Inhalt

                              diff --git a/spss/handbook/handbook/intro/intro.html b/spss/handbook/handbook/intro/intro.html index af479d2c5..5d6dec136 100644 --- a/spss/handbook/handbook/intro/intro.html +++ b/spss/handbook/handbook/intro/intro.html @@ -5,17 +5,16 @@ MOA SS und SP - Einführung - + - - + +
                              Logo BKAOpen Source
                              - für das E-Government
                              Logo MOADokumentationLogo EGIZ

                              -

                              MOA: Serversignatur (SS) und Signaturprüfung (SP), V 1.5

                              +

                              MOA: Serversignatur (SS) und Signaturprüfung (SP)

                              Einführung


                              Inhalt

                              diff --git a/spss/handbook/handbook/usage/usage.html b/spss/handbook/handbook/usage/usage.html index 6fcccc612..b6f97b79d 100644 --- a/spss/handbook/handbook/usage/usage.html +++ b/spss/handbook/handbook/usage/usage.html @@ -5,17 +5,16 @@ MOA SS und SP - Anwendung - + - - - + + +
                              Logo BKAOpen Source
                              - für das E-Government
                              Logo MOALogo BKADokumentationLogo EGIZ

                              -

                              MOA: Serversignatur (SS) und Signaturprüfung (SP), V 1.5

                              +

                              MOA: Serversignatur (SS) und Signaturprüfung (SP)

                              Anwendung


                              Inhalt

                              @@ -96,16 +95,16 @@

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

                                <SingleSignatureInfo SecurityLayerConformity="true">

                              Für jedes SingleSignatureInfoElement wird eine eigene CMS/CAdES-Signatur erzeugt. Wird das Attribut SecurityLayerConformity auf true gesetzt, dann wird eine CAdES-Signatur gemäß Security-Layer Spezifikation V1.2x TODO 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).

                              -
                                  <DataObjectInfo Structure="enveloping">
                              -	     <DataObject>
                              -		    <MetaInfo>
                              -             <MimeType>text/plain</MimeType>
                              -          </MetaInfo>
                              -          <Content>
                              -         	   <Base64Content>RGllc2UgRGF0ZW4gc2luZCByZWluZXIgVGV4dC4=</Base64Content>
                              -          </Content>			
                              -       </DataObject>		
                              -	  </DataObjectInfo>
                              +
                                <DataObjectInfo Structure="enveloping">
                              +	  <DataObject>
                              +	    <MetaInfo>
                              +        <MimeType>text/plain</MimeType>
                              +      </MetaInfo>
                              +      <Content>
                              +        <Base64Content>RGllc2UgRGF0ZW4gc2luZCByZWluZXIgVGV4dC4=</Base64Content>
                              +      </Content>			
                              +    </DataObject>		
                              +	</DataObjectInfo>
                               

                              Das zu signierende Daten-Objekt muss in einem DataObjectInfo Element spezifiziert werden. Das Attribut Structure gibt an, ob die Daten in die Signatur integriert werden sollen (Structure="enveloping") oder nicht (Structure="detached").

                              Im nachfolgenden DataObject Element muss entweder das Attribut Reference (enthält eine URL, von der SS die Daten beziehen soll) gesetzt sein, oder aber die zu signierenden Daten werden explizit im Element Base64Content (enthält Daten in Base64 kodierter Form) spezifiziert sein. Die Angabe der zu signierenden Daten über das Attribut Reference und gleichzeitig im Element Base64Content ist nicht erlaubt. Zusätzlich muss im Element MimeType (unter dem Element MetaInfo) der MIME-Type der zu signierenden Daten spezifiziert werden.

                              @@ -113,8 +112,8 @@
                              Response

                              TODO: Neue Signatur erzeugen (da CAdES - d.h. noch auf neues iaik-moa warten)

                              CreateCMSSignatureRequest.Base64Content.resp.xml 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.

                              -
                              <CreateCMSSignatureResponse
                              -  xmlns="http://reference.e-government.gv.at/namespace/moa/20020822#" 
                              xmlns:dsig="http://www.w3.org/2000/09/xmldsig#">
                              <CMSSignature>MIAGCSqGSI...p92gh6wAAAAAAAA=</CMSSignature>
                              </CreateCMSSignatureResponse>
                              +
                                <CreateCMSSignatureResponse
                              +    xmlns="http://reference.e-government.gv.at/namespace/moa/20020822#" 
                              xmlns:dsig="http://www.w3.org/2000/09/xmldsig#">
                              <CMSSignature>MIAGCSqGSI...p92gh6wAAAAAAAA=</CMSSignature>
                              </CreateCMSSignatureResponse>

                              CreateCMSSignatureResponse enthält je erzeugter Signatur ein Element CMSSignature (in diesem Fall genau ein Element). CMSSignature enthält die von SS erzeugte CAdES-Signatur (da SecurityLayerConformity="true" im Request angegeben wurde) als Base64-codierten Wert. Das unterzeichnete Datenobjekt ist in der Signaturstruktur selbst enthalten (enveloping).

                              2.1.1.2 Beispiel (Datenobjekt als Referenz)

                              @@ -124,22 +123,22 @@

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

                                <SingleSignatureInfo SecurityLayerConformity="false">

                              Für jedes SingleSignatureInfoElement wird eine eigene CMS/CAdES-Signatur erzeugt. Wird das Attribut SecurityLayerConformity auf true gesetzt, dann wird eine CAdES-Signatur gemäß Security-Layer Spezifikation V1.2x TODO 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).

                              -
                                  <DataObjectInfo Structure="detached">
                              -	     <DataObject>
                              -		    <MetaInfo>
                              -             <MimeType>text/plain</MimeType>
                              -          </MetaInfo>
                              -          <Content Reference="http://localhost:8080/moa-spss-handbook-referencedData/Text.txt"/>         	   
                              -       </DataObject>		
                              -	  </DataObjectInfo>
                              +
                                <DataObjectInfo Structure="detached">
                              +	  <DataObject>
                              +	    <MetaInfo>
                              +        <MimeType>text/plain</MimeType>
                              +      </MetaInfo>
                              +      <Content Reference="http://localhost:8080/moa-spss-handbook-referencedData/Text.txt"/>         	   
                              +    </DataObject>		
                              +	</DataObjectInfo>
                               

                              Das zu signierende Daten-Objekt muss in einem DataObjectInfo Element spezifiziert werden. Das Attribut Structure gibt an, ob die Daten in die Signatur integriert werden sollen (Structure="enveloping") oder nicht (Structure="detached").

                              Im nachfolgenden DataObject Element muss entweder das Attribut Reference (enthält eine URL, von der SS die Daten beziehen soll) gesetzt sein, oder aber die zu signierenden Daten werden explizit im Element Base64Content (enthält Daten in Base64 kodierter Form) spezifiziert sein. Die Angabe der zu signierenden Daten über das Attribut Reference und gleichzeitig im Element Base64Content ist nicht erlaubt. Zusätzlich muss im Element MimeType (unter dem Element MetaInfo) der MIME-Type der zu signierenden Daten spezifiziert werden.

                              Im konkreten Beispiel sollen die Daten nicht in die Signatur integriert werden (Structure="detached"). Die Daten werden in diesem Beispiel mittels der Attributs Refernce angegeben und SS muss es von dieser URL laden. Der MIME-Type wird mit text/plain angegeben.

                              Response

                              CreateCMSSignatureRequest.Reference.resp.xml 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.

                              -
                              <CreateCMSSignatureResponse
                              -  xmlns="http://reference.e-government.gv.at/namespace/moa/20020822#" 
                              xmlns:dsig="http://www.w3.org/2000/09/xmldsig#">
                              <CMSSignature>MIAGCSqGSI...SwxhbA9pAAAAAAAA</CMSSignature>
                              </CreateCMSSignatureResponse>
                              +
                                <CreateCMSSignatureResponse
                              +    xmlns="http://reference.e-government.gv.at/namespace/moa/20020822#" 
                              xmlns:dsig="http://www.w3.org/2000/09/xmldsig#">
                              <CMSSignature>MIAGCSqGSI...SwxhbA9pAAAAAAAA</CMSSignature>
                              </CreateCMSSignatureResponse>

                              CreateCMSSignatureResponse enthält je erzeugter Signatur ein Element CMSSignature (in diesem Fall genau ein Element). CMSSignature enthält die von SS erzeugte CMS-Signatur (da SecurityLayerConformity="false" im Request angegeben wurde) als Base64-codierten Wert. Das unterzeichnete Datenobjekt ist in der Signaturstruktur nicht enthalten (detached).

                              2.1.2 Erstellung einer XML bzw. XAdES-Signatur

                              MOA-SS ermöglicht die Erstellung einer herkömmlichen XML-Signatur und einer XAdES-Signatur gemäß der Security-Layer Spezifikation V1.2x TODO. Die Auswahl ob eine herkömmliche XML oder eine Security-Layer konforme XAdES-Signatur erstellt wird, erfolgt durch das Attribute SecurityLayerConformity im Signaturerstelltungs-Request (siehe auch folgende Beispiele).

                              @@ -151,216 +150,216 @@

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

                                <SingleSignatureInfo SecurityLayerConformity="false">

                              Für jedes SingleSignatureInfoElement wird eine eigene XML-Signatur erzeugt. Wird das Attribut SecurityLayerConformity auf true gesetzt, dann wird eine XML-Signatur gemäß Security-Layer Spezifikation V1.2x TODO 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).

                              -
                                  <DataObjectInfo Structure="enveloping">
                              -      <DataObject>
                              -        <XMLContent>Diese Daten werden signiert.<XMLContent>
                              -      </DataObject>
                              +
                                <DataObjectInfo Structure="enveloping">
                              +    <DataObject>
                              +      <XMLContent>Diese Daten werden signiert.<XMLContent>
                              +    </DataObject>

                              Für jedes Daten-Objekt, das in die XML-Signatur als dsig:Reference aufgenommen werden soll, muss ein DataObjectInfo Element spezifiziert werden. Das Attribut Structure gibt an, ob die Daten in die Signatur in ein dsig:Object Element integriert werden sollen (Structure="enveloping"), oder über einen URL referenziert werden sollen (Structure="detached").

                              Im Fall von Structure="enveloping" muss im nachfolgenden DataObject Element entweder das Attribut Reference (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 Base64Content (enthält Daten in Base64 kodierter Form) oder XMLContent (enthält Daten als beliebiges XML-Fragment) oder LocRefContent (enthält eine URL, von der SS die Daten beziehen soll; in diesem Fall also gleichwertig wie ein gesetztes Attribut Reference) spezifiziert sein. Die Angabe der zu signierenden Daten über das Attribut Reference und gleichzeitig einem der Elemente Base64Content oder XMLContent oder LocRefContent ist nicht erlaubt.

                              Im Fall von Structure="detached" muss das Attribut Reference im nachfolgenden DataObject Element gesetzt sein. Es enthält jene URL, die zur Referenzierung der Daten als Wert von dsig:Reference/@URI in die XML-Signatur aufgenommen wird. Die Angabe eines der Element Base64Content oder XMLContent oder LocRefContent ist optional. Unterbleibt die Angabe, bezieht SS die Daten von der URL im Attribut Reference. Wird eines der Elemente verwendet, bezieht SS die Daten durch Analyse des angegebenen Elements (siehe obiger Absatz).

                              Im konkreten Beispiel sollen die Daten in ein dsig:Object Element integriert werden (Structure="enveloping"). Die Daten werden mittels XMLContent als XML-Fragment (ein einfacher Textknoten) angegeben.

                              -

                                  <CreateTransformsInfoProfile>
                              <CreateTransformsInfo> - <FinalDataMetaInfo> - <MimeType>text/plain<MimeType> - </FinalDataMetaInfo> - </CreateTransformsInfo> - </CreateTransformsInfoProfile>
                              +
                                <CreateTransformsInfoProfile>
                              <CreateTransformsInfo> + <FinalDataMetaInfo> + <MimeType>text/plain<MimeType> + </FinalDataMetaInfo> + </CreateTransformsInfo> + </CreateTransformsInfoProfile>
                              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.

                              Response
                              -

                              CreateXMLSignatureRequest.Simple.resp.xml 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.

                              -

                              -

                              <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:Reference Id="reference-1-1" URI="#xpointer(id(&apos;signed-data-1-1-1&apos;)/node())"> +

                              CreateXMLSignatureRequest.Simple.resp.xml 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.

                              +
                                <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:Reference> + <dsig:Reference Id="reference-1-1" URI="#xpointer(id(&apos;signed-data-1-1-1&apos;)/node())"> + ... + </dsig:Reference> + ... + </dsig:SignedInfo> ... - </dsig:SignedInfo> - ... - <dsig:Object Id="signed-data-1-1-1">Diese Daten werden signiert.</dsig:Object> - </dsig:Signature>
                              </SignatureEnvironment>
                              </CreateXMLSignatureResponse>
                              -

                              + <dsig:Object Id="signed-data-1-1-1">Diese Daten werden signiert.</dsig:Object> + </dsig:Signature>
                              </SignatureEnvironment>
                              </CreateXMLSignatureResponse>
                              +

                              CreateXMLSignatureResponse enthält je erzeugter Signatur ein Element SignatureEnvironment (in diesem Fall genau ein Element). SignatureEnvironment 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 dsig:Reference Element ist enthalten). Das unterzeichnete Datenobjekt ist in der Signaturstruktur selbst enthalten (enveloping), und zwar in einem dsig:Object Element.

                              2.1.2.2 Angabe der zu signierenden Daten

                              Request

                              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).

                              Mit CreateXMLSignatureRequest.Refs.xml sollen insgesamt neun Datenobjekte signiert werden:

                              -
                              <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">
                              +
                                <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">

                              Die Signatur soll mit dem Schlüssel KG_allgemein erstellt werden; jene Elemente, die speziell für eine Security-Layer V1.1 konforme Signatur notwendig sind (vergleiche Einfaches Beispiel), brauchen nicht erstellt zu werden (SecurityLayerConformity="false").

                              -
                                  <DataObjectInfo Structure="enveloping" ChildOfManifest="true">
                              -      <DataObject>
                              -        <Base64Content>RGllc2UgRGF0ZW4gd2FyZW4gYmFzZTY0IGtvZGllcnQu</Base64Content>
                              -      </DataObject>
                              -      <CreateTransformsInfoProfile>
                              -        <CreateTransformsInfo>
                              -          <FinalDataMetaInfo>
                              -            <MimeType>text/plain</MimeType>
                              -          </FinalDataMetaInfo>
                              -        </CreateTransformsInfo>
                              -      </CreateTransformsInfoProfile>
                              -    </DataObjectInfo>
                              +
                                <DataObjectInfo Structure="enveloping" ChildOfManifest="true">
                              +    <DataObject>
                              +      <Base64Content>RGllc2UgRGF0ZW4gd2FyZW4gYmFzZTY0IGtvZGllcnQu</Base64Content>
                              +    </DataObject>
                              +    <CreateTransformsInfoProfile>
                              +      <CreateTransformsInfo>
                              +        <FinalDataMetaInfo>
                              +          <MimeType>text/plain</MimeType>
                              +        </FinalDataMetaInfo>
                              +      </CreateTransformsInfo>
                              +    </CreateTransformsInfoProfile>
                              +  </DataObjectInfo>

                              Die Daten sollen in der Enveloping Form in die Signatur integriert werden, d. h. die Daten werden in einem dsig:Object als Teil der XML-Struktur der Signatur aufgenommen (Structure="enveloping"). Weiters sollen die Daten nicht über über eine dsig:Reference in dsig:SignedInfo, sondern über eine dsig:Reference in einem eigenen dsig:Manifest aufgenommen werden (ChildOfManifest="true").

                              Die Daten selbst werden explizit in base64 kodierter Form als Inhalt des Elements Base64Content angegeben. Das Attribut DataObject/@Reference darf nicht angegeben werden, da die Daten in der Enveloping Form integriert werden sollen, und Base64Content verwendet wird.

                              Es werden - wie in allen übrigen Fällen dieses Beispiels - keine Transformationen angegeben. Der Mime-Type der zu signierenden Daten wird als text/plain angegeben, da der Inhalt von Base64Content die base64-Kodierung des Texts Diese Daten waren base64 kodiert. ist.

                              -    <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>
                              +  <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>
                               

                              Die Daten sollen in der Enveloping Form in die Signatur integriert werden, d. h. die Daten werden in einem dsig:Object als Teil der XML-Struktur der Signatur aufgenommen (Structure="enveloping"). Diesmal sollen die Daten direkt über eine dsig:Reference in dsig:SignedInfo aufgenommen werden (ChildOfManifest="false").

                              Die Daten selbst werden explizit als XML-Fragment als Inhalt des Elements XMLContent angegeben. Das Attribut DataObject/@Reference darf nicht angegeben werden, da die Daten in der Enveloping Form integriert werden sollen, und XMLContent verwendet wird.

                              Der Mime-Type der zu signierenden Daten wird als application/xml angegeben.

                              -    <DataObjectInfo Structure="enveloping" ChildOfManifest="false">
                              -      <DataObject Reference="http://localhost:8080/referencedData/Text.txt"/>
                              -      <CreateTransformsInfoProfile>
                              -        <CreateTransformsInfo>
                              -          <FinalDataMetaInfo>
                              -            <MimeType>text/plain</MimeType>
                              -          </FinalDataMetaInfo>
                              -        </CreateTransformsInfo>
                              -      </CreateTransformsInfoProfile>
                              -    </DataObjectInfo>
                              +  <DataObjectInfo Structure="enveloping" ChildOfManifest="false">
                              +    <DataObject Reference="http://localhost:8080/referencedData/Text.txt"/>
                              +    <CreateTransformsInfoProfile>
                              +      <CreateTransformsInfo>
                              +        <FinalDataMetaInfo>
                              +          <MimeType>text/plain</MimeType>
                              +        </FinalDataMetaInfo>
                              +      </CreateTransformsInfo>
                              +    </CreateTransformsInfoProfile>
                              +  </DataObjectInfo>
                               

                              Die Daten sollen in der Enveloping Form in die Signatur integriert werden, d. h. die Daten werden in einem dsig:Object als Teil der XML-Struktur der Signatur aufgenommen (Structure="enveloping"). Wiederum sollen die Daten direkt über eine dsig:Reference in dsig:SignedInfo aufgenommen werden (ChildOfManifest="false").

                              Die Daten werden diesmal nicht explizit angegeben, sondern mittels der URL in DataObject/@Reference referenziert. MOA SS versucht diese URL aufzulösen, um zu den zu signierenden Daten zu gelangen. Base64Content oder XMLContent oder LocRefContent dürfen nicht verwendet werden, da die Daten in der Enveloping Form integriert werden sollen, und bereits DataObject/@Reference eingesetzt wird.

                              Der Mime-Type der zu signierenden Daten wird als text/plain angegeben.

                              -    <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>
                              +  <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>
                               

                              Die Daten sollen wiederum in der Enveloping Form in die Signatur integriert werden, d. h. die Daten werden in einem dsig:Object als Teil der XML-Struktur der Signatur aufgenommen (Structure="enveloping"). Wiederum sollen die Daten direkt über eine dsig:Reference in dsig:SignedInfo aufgenommen werden (ChildOfManifest="false").

                              Die Daten werden wie im vorhergehenden Fall nicht explizit angegeben, sondern referenziert. Diesmal wird die URL jedoch nicht DataObject/@Reference verwendet, sondern als Textinhalt des Elements LocRefContent (LocRef steht für Location Reference). DataObject/@Reference darf in diesem Fall nicht verwendet werden. Diese Methode ist semantisch völlig ident mit dem vorhergehenden Fall.

                              Der Mime-Type der zu signierenden Daten wird als text/plain angegeben.

                              -    <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>
                              +  <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>
                               

                              Die Daten sollen diesmal in der Detached Form in die Signatur aufgenommen werden, d. h. die Daten werden nicht direkt in die Signaturstruktur integriert, sondern lediglich mittels URI im Attribut URI der anzufertigenden dsig:Reference referenziert (Structure="detached"). Die Daten sollen indirekt über eine dsig:Reference eines dsig:Manifests aufgenommen werden (ChildOfManifest="true").

                              Die URI in DataObject/@Reference enthält dabei die URI, die zur Referenzierung in dsig:Reference/@URI aufgenommen werden soll. Die Daten selbst hingegen werden im diesem Beispiel explizit in base64 kodierter Form als Inhalt des Elements Base64Content angegeben. MOA SS löst also keine URL zur Erlangung der Daten auf, sondern verwendet den Inhalt von Base64Content.

                              Der Mime-Type der zu signierenden Daten wird als text/plain angegeben.

                              -    <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>
                              +  <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>
                               

                              Die Daten sollen auch diesmal in der Detached Form in die Signatur aufgenommen werden, d. h. die Daten werden nicht direkt in die Signaturstruktur integriert, sondern lediglich mittels URI im Attribut URI der anzufertigenden dsig:Reference referenziert (Structure="detached"). Diesmal sollen die Daten direkt über eine dsig:Reference in dsig:SignedInfo aufgenommen werden (ChildOfManifest="false").

                              Die URI in DataObject/@Reference enthält dabei die URI, die zur Referenzierung in dsig:Reference/@URI aufgenommen werden soll. Die Daten selbst hingegen werden im diesem Beispiel explizit als XML-Fragment in XMLContent angegeben. MOA SS löst auch hier keine URL zur Erlangung der Daten auf, sondern verwendet den Inhalt von XMLContent. Zur Verdeutlichung dieses Umstandes wurde die URI in DataObject/@Reference auf einen Wert gesetzt, der von MOA SS ganz sicher nicht aufgelöst werden kann (NichtAufloesbareReferenz1).

                              Der Mime-Type der zu signierenden Daten wird als application/xml angegeben.

                              -    <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>
                              +  <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>
                               

                              Wiederum sollen die Daten in der Detached Form in die Signatur aufgenommen werden (Structure="detached"). Wie zuvor sollen die Daten direkt über eine dsig:Reference in dsig:SignedInfo aufgenommen werden (ChildOfManifest="false").

                              Die URI in DataObject/@Reference enthält dabei die URI, die zur Referenzierung in dsig:Reference/@URI aufgenommen werden soll. Nachdem eine explizite Angabe der Daten mittels Base64Content, XMLContent oder LocRefContent unterbleibt, wird MOA SS versuchen, die URI in dsig:Reference/@URI als URL aufzulösen, um so zu den zu signierenden Daten zu gelangen.

                              Der Mime-Type der zu signierenden Daten wird als text/plain angegeben.

                              -    <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>
                              +  <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>
                               

                              Wiederum sollen die Daten in der Detached Form in die Signatur aufgenommen werden (Structure="detached"). Wie zuvor sollen die Daten direkt über eine dsig:Reference in dsig:SignedInfo aufgenommen werden (ChildOfManifest="false").

                              Die URI in DataObject/@Reference enthält dabei die URI, die zur Referenzierung in dsig:Reference/@URI 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 DataObject/@Reference auf einen Wert gesetzt, der von MOA SS ganz sicher nicht aufgelöst werden kann (NichtAufloesbareReferenz2). 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.

                              Der Mime-Type der zu signierenden Daten wird als text/plain angegeben.

                              -    <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>
                              +  <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>
                               

                              Im letzten Fall schließlich sollen wiederum Daten in der Detached Form in die Signatur aufgenommen werden (Structure="detached"). Wie zuvor sollen die Daten direkt über eine dsig:Reference in dsig:SignedInfo aufgenommen werden (ChildOfManifest="false").

                              Die Referenz auf die zu signierenden Daten ist wiederum in DataObject/@Reference 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 DataObject/@Reference den leeren String ("") 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).

                              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.

                              Der Mime-Type der zu signierenden Daten wird als application/xml angegeben.

                              -    <CreateSignatureInfo>
                              -      <CreateSignatureEnvironment>
                              -        <LocRefContent>http://localhost:8080/referencedData/XMLDocument.xml</LocRefContent>
                              -      </CreateSignatureEnvironment>
                              -      <CreateSignatureEnvironmentProfile>
                              -        <CreateSignatureLocation Index="4" xmlns:doc="urn:document">/doc:XMLDocument</CreateSignatureLocation>
                              -      </CreateSignatureEnvironmentProfile>
                              -    </CreateSignatureInfo>
                              +  <CreateSignatureInfo>
                              +    <CreateSignatureEnvironment>
                              +      <LocRefContent>http://localhost:8080/referencedData/XMLDocument.xml</LocRefContent>
                              +    </CreateSignatureEnvironment>
                              +    <CreateSignatureEnvironmentProfile>
                              +      <CreateSignatureLocation Index="4" xmlns:doc="urn:document">/doc:XMLDocument</CreateSignatureLocation>
                              +    </CreateSignatureEnvironmentProfile>
                              +  </CreateSignatureInfo>
                               

                              Das Element CreateSignatureInfo 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).

                              CreateSignatureEnvironment enthält das XML-Dokument, in das die zu erstellende Signatur integriert werden soll. In diesem Beispiel wird dieses Dokument mit Hilfe von LocRefContent referenziert, d. h. MOA SS wird versuchen, die darin enthaltene URL aufzulösen, um das XML-Dokument zu erhalten. Alternativ könnte auch Base64Content (explizite Angabe des XML-Dokuments in base64 kodierter Form) oder XMLContent (direkte Angabe des XML-Dokuments im Request) verwendet werden.

                              @@ -368,118 +367,118 @@ Ich habe weiters ein eigenens ID-Attribut bekommen.</doc:Paragraph>
                              Response

                              CreateXMLSignatureRequest.Refs.resp.xml 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.

                              -<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"/>
                              +  <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"/>
                               

                              Die Antwort enthält in SignatureEnvironment das Ergebnis der Signaturerstellung. Nachdem die Signatur in ein bestehendes XML-Dokument integriert werden sollte, enthält SignatureEnvironment das Dokument-Element dieses XML-Dokuments (doc:XMLDocument). Man erkennt auch gut, dass die XML-Signatur als fünfter Kindknoten (Offset 4) von doc:XMLDocument eingefügt wurde.

                              -          <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-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>
                               

                              Diese dsig:Reference wurde auf Grund des zweiten DataObjectInfo Elements im Request erstellt. Man erkennt gut den Verweis in dsig:Reference/@URI auf das dsig:Object, das die signierten Daten enthält (der XPointer verweist auf sämtliche Kindknoten jenes Elements, das ein ID-Attribut mit dem Wert signed-data-1-2-1 aufweist, des ersten vorkommenden dsig:Objects der Signatur).

                              -          <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-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>
                               

                              Diese dsig:Reference wurde auf Grund des dritten DataObjectInfo Elements im Request erstellt. Die Text-Daten wurden von der angegebenen URL (http://localhost:8080/referencedData/Text.txt) aufgelöst und in das dsig:Object mit dem ID-Attribut signed-data-1-3-1 gesteckt. Um Probleme mit nicht in XML darstellbare Zeichen zu vermeiden, wurde der Text nicht direkt signiert, sondern in base64 kodierter Form in das dsig:Object integriert, und eine Transformation zur base64 Dekodierung spezifiziert.

                              -          <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-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>
                               

                              Diese dsig:Reference wurde auf Grund des vierten DataObjectInfo Elements im Request erstellt. Wie schon bei der Beschreibung des Requests angeführt, ist die erstellte dsig:Reference semantisch genau gleich wie die vorhergehende.

                              -          <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-6" URI="NichtAufloesbareReferenz1">
                              +              <dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
                              +              <dsig:DigestValue>2b83+NbXDFijHzz+sH0T7fM36sA=</dsig:DigestValue>
                              +            </dsig:Reference>
                               

                              Diese dsig:Reference wurde auf Grund des sechsten DataObjectInfo Elements im Request erstellt. Die zu signierenden Daten wurden aus dem XMLContent des Requests entnommen, als Wert von dsig:Reference/@URI wurde der Wert von DataObjectInfo/@Reference übernommen.

                              -          <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-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>
                               

                              Diese dsig:Reference wurde auf Grund des siebenten DataObjectInfo Elements im Request erstellt. Um zu den zu signierenden Daten zu gelangen, wurde von MOA SS die URL in DataObjectInfo/@Reference aufgelöst. Gleichermaßen wurde die URL in dsig:Reference/@URI übernommen.

                              -          <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-8" URI="NichtAufloesbareReferenz2">
                              +              <dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
                              +              <dsig:DigestValue>0P878Dsmtxv5goj+6KgNmj6S/EE=</dsig:DigestValue>
                              +            </dsig:Reference>
                               

                              Diese dsig:Reference wurde auf Grund des achten DataObjectInfo Elements im Request erstellt. Um zu den zu signierenden Daten zu gelangen, wurde von MOA SS die URL in LocRefContent aufgelöst. In dsig:Reference/@URI wurde der Wert aus DataObjectInfo/@Reference übernommen.

                              -          <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 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>
                               

                              Diese dsig:Reference wurde auf Grund des neunten DataObjectInfo 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 Enveloped Signature Transformation zwischengeschaltet, welche die XML-Struktur der Signatur selbst aus den Hash-Eingangsdaten herausschneidet.

                              -          <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: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>
                               

                              Diese dsig:Reference verweist auf das dsig:Manifest weiter unten in der XML-Struktur der Signatur. Das dsig:Manifest wurde angelegt, weil bei zwei DataObjectInfos im Request das Attribut ChildOfManifest auf den Wert true gesetzt wurde.

                              -        </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>
                              +          </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>
                               

                              SignatureValue und KeyInfo werden an dieser Stelle nicht näher betrachtet.

                              Das erste dsig:Object enthält die Daten aus dem zweiten DataObjectInfo; das zweite dsig:Object jene aus dem dritten DataObjectInfo; das dritte dsig:Object jene aus dem vierten DataObjectInfo; das vierte dsig:Object schließlich jene aus dem ersten DataObjectInfo.

                              -        <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: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>
                               

                              Das fünfte dsig:Object enthält das dsig:Manifest, das von MOA SS auf Grund des ersten bzw. fünften DataObjectInfo des Requests erstellt wurde. Darin enthalten sind die zum ersten und fünten DataObjectInfo korrespondierenden dsig:Reference Elemente. Die Daten für die erste im dsig:Manifest enthaltene dsig:Reference wurden aus dem Base64Content Element des ersten DataObjectInfo entnommen, jene für die zweite dsig:Reference aus dem Base64Content Element des fünften DataObjectInfo. Der Wert des URI Attributs der zweiten dsig:Reference wurde aus dem DataObject/@Reference des fünften DataObjectInfo übernommen.

                              2.1.2.3 Transformationen

                              diff --git a/spss/server/serverws/.classpath b/spss/server/serverws/.classpath index a0edd58fe..767a2a2de 100644 --- a/spss/server/serverws/.classpath +++ b/spss/server/serverws/.classpath @@ -6,7 +6,6 @@ - diff --git a/spss/server/serverws/.settings/org.eclipse.wst.common.component b/spss/server/serverws/.settings/org.eclipse.wst.common.component index 82f65bee6..1b3789e29 100644 --- a/spss/server/serverws/.settings/org.eclipse.wst.common.component +++ b/spss/server/serverws/.settings/org.eclipse.wst.common.component @@ -6,12 +6,11 @@ uses - - - - - + + + + -- cgit v1.2.3 From 4072ea9de2646cd16475ec1e9bf7d345e5a618c1 Mon Sep 17 00:00:00 2001 From: Klaus Stranacher Date: Thu, 16 May 2013 11:42:43 +0200 Subject: Minor updates documentation --- ...reateCMSSignatureRequest.Base64Content.resp.xml | 34 +++++++++++---------- spss/handbook/handbook/config/config.html | 9 +++--- spss/handbook/handbook/install/install.html | 8 ++--- spss/handbook/handbook/intro/intro.html | 3 +- spss/handbook/handbook/spec/MOA-SPSS-1.5.2.pdf | Bin 0 -> 288688 bytes spss/handbook/handbook/usage/usage.html | 5 ++- 6 files changed, 28 insertions(+), 31 deletions(-) create mode 100644 spss/handbook/handbook/spec/MOA-SPSS-1.5.2.pdf (limited to 'spss') diff --git a/spss/handbook/clients/webservice/resources/requests/CreateCMSSignatureRequest.Base64Content.resp.xml b/spss/handbook/clients/webservice/resources/requests/CreateCMSSignatureRequest.Base64Content.resp.xml index a99e97d0c..45b06e48f 100644 --- a/spss/handbook/clients/webservice/resources/requests/CreateCMSSignatureRequest.Base64Content.resp.xml +++ b/spss/handbook/clients/webservice/resources/requests/CreateCMSSignatureRequest.Base64Content.resp.xml @@ -1,6 +1,6 @@ - MIAGCSqGSIb3DQEHAqCAMIACAQExDTALBglghkgBZQMEAgMwgAYJKoZIhvcNAQcB + MIAGCSqGSIb3DQEHAqCAMIACAQExDTALBglghkgBZQMEAgMwgAYJKoZIhvcNAQcB oIAkgAQdRGllc2UgRGF0ZW4gc2luZCByZWluZXIgVGV4dC4AAAAAAACgggQvMIIE KzCCA5SgAwIBAgIGY6tXffAmMA0GCSqGSIb3DQEBBQUAMEAxIjAgBgNVBAMTGUlB SUsgVGVzdCBJbnRlcm1lZGlhdGUgQ0ExDTALBgNVBAoTBElBSUsxCzAJBgNVBAYT @@ -24,21 +24,23 @@ bWVkaWF0ZUNBLmNlcjAJBgNVHREEAjAAMB8GA1UdIwQYMBaAFGiiXhHa3i+Aa0RE v436ZTaBJKdvMA0GCSqGSIb3DQEBBQUAA4GBAGzwtp4nq0IxjnK5D86/9Gg6NRN2 K39wN8/Zd6Uo8OnwmpYxEdfLsnDhp+H1IcqRFroqDRDmtoRXRqIW0VKJno70CzuW +3ZFsSopH51BbHSxIvXAbxfOPX1PZQ1fXGTo5gWaJ62Xeu6zi+YtSxQHNMHqUxO/ -llGVtT8VDtNGS0wGMYICuTCCArUCAQEwSjBAMSIwIAYDVQQDExlJQUlLIFRlc3Qg +llGVtT8VDtNGS0wGMYIC0TCCAs0CAQEwSjBAMSIwIAYDVQQDExlJQUlLIFRlc3Qg SW50ZXJtZWRpYXRlIENBMQ0wCwYDVQQKEwRJQUlLMQswCQYDVQQGEwJBVAIGY6tX -ffAmMAsGCWCGSAFlAwQCA6CCAUQwGAYJKoZIhvcNAQkDMQsGCSqGSIb3DQEHATAc -BgkqhkiG9w0BCQUxDxcNMTMwNTA2MjAwNTQ2WjBPBgkqhkiG9w0BCQQxQgRAds70 -61RkR9wybcxKrtd9Uc/S/DNyxhvXPzr5A8IphKGDTe4lHXiky2xwjYEcSE7Mx3Jm -8Lo5d9iFu45Dq9nx0DCBuAYLKoZIhvcNAQkQAi8xgagwgaUwgaIwgZ8wCwYJYIZI -AWUDBAIDBEBxEElsIgrSD8KgnZk88uomiqWEEvWoMufQe68l7z1/qYX39aLlD2Sh -pHolkI+EM5JuuWM678CAJdkOTvxUvKm8ME4wRKRCMEAxIjAgBgNVBAMTGUlBSUsg -VGVzdCBJbnRlcm1lZGlhdGUgQ0ExDTALBgNVBAoTBElBSUsxCzAJBgNVBAYTAkFU -AgZjq1d98CYwCwYJKoZIhvcNAQEBBIIBACRh+vEXSpupLSJY56WNzVTaPLq4EINO -ovsOFaigYtFy9VOVVijg0ycMJqEeIl+lxJvmr9z30w9g4STa0EGoFxt2rXCyYtFt -W+A70MPZ++PXlKAtBtXoMR2hVZ5XYk8yI42NBlN0XWOTgDZgTXlj4M4YYZHUPCLr -NhwT2hLZ6WsQWhZpVF6d8GnhqPPgUnSibbDkjHHQMJZh/y5j+1M8IrSosPainrkI -8yxyZOmbfoWVUXKRxFgfZ7YpWShbDgZ3JasyIXihOPXF7n2jlFxFACYiNrD93D4k -p5j58Cfjvd0gm5QIDPvx1Z4rQ3oVOrzsjV+2e82hbqmhkzenp92gh6wAAAAAAAA= - +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= + + diff --git a/spss/handbook/handbook/config/config.html b/spss/handbook/handbook/config/config.html index d1c7d5636..b0247180c 100644 --- a/spss/handbook/handbook/config/config.html +++ b/spss/handbook/handbook/config/config.html @@ -497,10 +497,9 @@ IssuerDN (RFC2253) : Erläuterung -

                              TODO: Kanonisierungs-Algorithmen entsprechend Kommissionsentscheidung?

                              -

                              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 dsig:Signature/dsig:SignedInfo/dsig:CanonicalizationMethod aufscheint, spezifiziert werden. Folgende Werte dürfen verwendet werden:

                              -

                              -

                              http://www.w3.org/TR/2001/REC-xml-c14n-20010315 
                              http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithComments
                              http://www.w3.org/2001/10/xml-exc-c14n#
                              http://www.w3.org/2001/10/xml-exc-c14n#WithComments
                              +

                              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 dsig:Signature/dsig:SignedInfo/dsig:CanonicalizationMethod aufscheint, spezifiziert werden. Folgende Werte dürfen verwendet werden:

                              +

                              +

                              http://www.w3.org/TR/2001/REC-xml-c14n-20010315 
                              http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithComments
                              http://www.w3.org/2001/10/xml-exc-c14n#
                              http://www.w3.org/2001/10/xml-exc-c14n#WithComments

                              Wird das Element nicht angegeben, wird folgender Wert als Default-Wert verwendet:

                              http://www.w3.org/TR/2001/REC-xml-c14n-20010315  

                              Für die genaue Bedeutung der Werte siehe die Spezifikation für XML-Signaturen.

                              @@ -1181,7 +1180,7 @@ Wird der Wert auf -1 gesetzt, dann bedeutet das ein unendlich langes Intervall.

                              3 Beispielkonfigurationen

                              -

                              TODO Update Konfigurations (Simple, Expert)

                              +

                              3.1 Minimale Konfiguration für MOA SS

                              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 cfg:MOAConfiguration folgende diff --git a/spss/handbook/handbook/install/install.html b/spss/handbook/handbook/install/install.html index 61785870d..382f9633f 100644 --- a/spss/handbook/handbook/install/install.html +++ b/spss/handbook/handbook/install/install.html @@ -397,9 +397,8 @@ INFO | 01 21:25:26,540 | Thread-3 | TID=1049225059594-100 NID=<null>

                              3.1.3 Verwendung

                              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.

                              Die nachfolgende Tabelle listet diese Klassenbibliotheken auf; die Einträge in der Spalte Dateien sind relativ zum Verzeichnis $MOA_SPSS_INST zu interpretieren.

                              -

                              TODO Update Versions

                              - + @@ -408,9 +407,8 @@ INFO | 01 21:25:26,540 | Thread-3 | TID=1049225059594-100 NID=<null> - - + diff --git a/spss/handbook/handbook/intro/intro.html b/spss/handbook/handbook/intro/intro.html index 5d6dec136..077a1dabe 100644 --- a/spss/handbook/handbook/intro/intro.html +++ b/spss/handbook/handbook/intro/intro.html @@ -30,8 +30,7 @@

                              1 Allgemeines

                              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.

                              -

                              TODO: CAdES auf SL1.2x aufbauend - wie siehts mir Rest aus?

                              -

                              Die Funktionalität und der Aufbau der Schnittstelle zu den beiden Modulen ist in der Spezifikation MOA SP/SS (V2.0) detailliert beschrieben. Da diese Spezifikation auf der Schnittstellenspezifikation des Security-Layers (V 1.2x) TODO aufbaut, ist deren Kenntnis zum Verstehen der Schnittstellen zu SS und SP erforderlich.

                              +

                              Die Funktionalität und der Aufbau der Schnittstelle zu den beiden Modulen ist in der Spezifikation MOA SP/SS (V1.5.2) detailliert beschrieben. Da diese Spezifikation auf der Schnittstellenspezifikation des Security-Layers (V 1.2x) TODO aufbaut, ist deren Kenntnis zum Verstehen der Schnittstellen zu SS und SP erforderlich.

                              2 Modul Serversignatur (SS)

                              Das Modul Serversignatur (SS) dient zum Erstellen von XML-Signaturen in Anlehnung an die Schnittstellenspezifikation des Security-Layers (V 1.2x TODO). 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.

                              Der Zugriff auf einzelne Signaturschlüssel in MOA SS kann basierend auf dem für TLS-Client-Authentisierung verwendeten Zertifikat eingeschränkt werden.

                              diff --git a/spss/handbook/handbook/spec/MOA-SPSS-1.5.2.pdf b/spss/handbook/handbook/spec/MOA-SPSS-1.5.2.pdf new file mode 100644 index 000000000..61e727eb3 Binary files /dev/null and b/spss/handbook/handbook/spec/MOA-SPSS-1.5.2.pdf differ diff --git a/spss/handbook/handbook/usage/usage.html b/spss/handbook/handbook/usage/usage.html index b6f97b79d..8bd1cdc46 100644 --- a/spss/handbook/handbook/usage/usage.html +++ b/spss/handbook/handbook/usage/usage.html @@ -110,8 +110,7 @@

                              Im nachfolgenden DataObject Element muss entweder das Attribut Reference (enthält eine URL, von der SS die Daten beziehen soll) gesetzt sein, oder aber die zu signierenden Daten werden explizit im Element Base64Content (enthält Daten in Base64 kodierter Form) spezifiziert sein. Die Angabe der zu signierenden Daten über das Attribut Reference und gleichzeitig im Element Base64Content ist nicht erlaubt. Zusätzlich muss im Element MimeType (unter dem Element MetaInfo) der MIME-Type der zu signierenden Daten spezifiziert werden.

                              Im konkreten Beispiel sollen die Daten in die Signatur integriert werden (Structure="enveloping"). Die Daten werden in diesem Beispiel mittels Base64Content angegeben. Der MIME-Type wird mit text/plain angegeben.

                              Response
                              -

                              TODO: Neue Signatur erzeugen (da CAdES - d.h. noch auf neues iaik-moa warten)

                              -

                              CreateCMSSignatureRequest.Base64Content.resp.xml 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.

                              +

                              CreateCMSSignatureRequest.Base64Content.resp.xml 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.

                                <CreateCMSSignatureResponse
                                   xmlns="http://reference.e-government.gv.at/namespace/moa/20020822#" 
                              xmlns:dsig="http://www.w3.org/2000/09/xmldsig#">
                              <CMSSignature>MIAGCSqGSI...p92gh6wAAAAAAAA=</CMSSignature>
                              </CreateCMSSignatureResponse>

                              CreateCMSSignatureResponse enthält je erzeugter Signatur ein Element CMSSignature (in diesem Fall genau ein Element). CMSSignature enthält die von SS erzeugte CAdES-Signatur (da SecurityLayerConformity="true" im Request angegeben wurde) als Base64-codierten Wert. Das unterzeichnete Datenobjekt ist in der Signaturstruktur selbst enthalten (enveloping).

                              @@ -1176,7 +1175,7 @@ Ich habe weiters ein eigenens ID-Attribut bekommen.</doc:Paragraph> <Code>0</Code> </SignatureManifestCheck> -

                              Das Element SignatureManifestCheck enhält das Resultat der Prüfung des Zusammenhangs zwischen Referenz-Eingangsdaten und Hash-Eingangsdaten. Der Kode 0 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 Spezifikation zu MOA SP/SS (Link TODO), Abschnitt 5.1.3.1.4.

                              +

                              Das Element SignatureManifestCheck enhält das Resultat der Prüfung des Zusammenhangs zwischen Referenz-Eingangsdaten und Hash-Eingangsdaten. Der Kode 0 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 Spezifikation zu MOA SP/SS, Abschnitt 5.1.3.1.4.

                                 <CertificateCheck>
                                   <Code>0</Code>
                              -- 
                              cgit v1.2.3
                              
                              
                              From 8591e43ef7f8e1eb0be50a0726d507904b26b9f5 Mon Sep 17 00:00:00 2001
                              From: Klaus Stranacher 
                              Date: Thu, 16 May 2013 13:01:02 +0200
                              Subject: Minor documentation updates
                              
                              ---
                               spss/server/history.txt                                        |  9 +++++----
                               spss/server/readme.update.txt                                  | 10 +++++-----
                               .../serverlib/.settings/org.eclipse.wst.common.component       |  3 +--
                               3 files changed, 11 insertions(+), 11 deletions(-)
                              
                              (limited to 'spss')
                              
                              diff --git a/spss/server/history.txt b/spss/server/history.txt
                              index 7d1d3d323..0062376b4 100644
                              --- a/spss/server/history.txt
                              +++ b/spss/server/history.txt
                              @@ -2,12 +2,13 @@
                               1.5.2
                               ##############
                               
                              +- Signaturerstelltung:
                              +  - Unterstützung von XAdES Version 1.4.2
                              +  - Unterstützung von CMS/CAdES Signaturen Version 2.2.1
                               - TSL Unterstützung                                                  
                               - Libraries aktualisiert bzw. hinzugefügt:
                              -	iaik-moa:           Version 1.32 ?
                              -	iaik-ixsil:			Version 1.2.2.5 ? 
                              -	Axis:				Version 1.0_IAIK ?
                              -	iaik-tsl			Versio x.x
                              +	iaik-moa:           Version 1.5
                              +	iaik-tsl			Versio x.x @TODO
                               
                               
                               ##############
                              diff --git a/spss/server/readme.update.txt b/spss/server/readme.update.txt
                              index c2f58b6e7..435de382c 100644
                              --- a/spss/server/readme.update.txt
                              +++ b/spss/server/readme.update.txt
                              @@ -1,11 +1,11 @@
                               
                               ======================================================================
                              -  Update einer bestehenden MOA-SPSS-Installation auf Version 1.5.1
                              +  Update einer bestehenden MOA-SPSS-Installation auf Version 1.5.2
                               ======================================================================
                               
                               Es gibt zwei Möglichkeiten (im Folgenden als "Update Variante A" und 
                               "Update Variante B" bezeichnet), das Update von MOA-SPSS auf Version
                              -1.5.1 durchzuführen. Update Variante A geht dabei den Weg über eine 
                              +1.5.2 durchzuführen. Update Variante A geht dabei den Weg über eine 
                               vorangestellte Neuinstallation, während Variante B direkt eine  
                               bestehende Installation aktualisiert.
                               
                              @@ -16,7 +16,7 @@ JAVA_HOME bezeichnet das Wurzelverzeichnis der JDK-Installation
                               CATALINA_HOME bezeichnet das Wurzelverzeichnis der Tomcat-Installation
                               
                               MOA_SPSS_INST bezeichnet das Verzeichnis, in das Sie die Datei
                              -moa-spss-1.5.1.zip entpackt haben.
                              +moa-spss-1.5.2.zip entpackt haben.
                               
                               =================
                               Update Variante A 
                              @@ -53,13 +53,13 @@ Update Variante B
                               1.)	Erstellen Sie eine Sicherungskopie des kompletten Tomcat-Verzeichnisses
                               	Ihrer MOA-SPSS-Installation.
                               	
                              -2.)	Entpacken Sie die Datei "moa-spss-1.5.1.zip" in das Verzeichnis MOA_SPSS_INST.
                              +2.)	Entpacken Sie die Datei "moa-spss-1.5.2.zip" in das Verzeichnis MOA_SPSS_INST.
                               
                               3.)	Erstellen Sie eine Sicherungskopie aller "iaik*.jar"-Dateien im Verzeichnis
                               	JAVA_HOME\jre\lib\ext und löschen Sie diese Dateien danach.
                               	
                               4.)	Kopieren Sie alle Dateien aus dem Verzeichnis MOA_SPSS_INST\ext in das 
                              -  	Verzeichnis	JAVA_HOME\jre\lib\ext (Achtung: Java 1.3.x wird nicht mehr 
                              +  	Verzeichnis	JAVA_HOME\jre\lib\ext (Achtung: Java 1.4.x wird nicht mehr 
                                 	unterstützt).
                               	
                               5.)	Kopieren Sie die Dateien aus dem Verzeichnis MOA_SPSS_INST\endorsed
                              diff --git a/spss/server/serverlib/.settings/org.eclipse.wst.common.component b/spss/server/serverlib/.settings/org.eclipse.wst.common.component
                              index fe4fd3290..7170b56ac 100644
                              --- a/spss/server/serverlib/.settings/org.eclipse.wst.common.component
                              +++ b/spss/server/serverlib/.settings/org.eclipse.wst.common.component
                              @@ -2,7 +2,6 @@
                                 
                                   
                                   
                              -        
                              -        
                              +        
                                 
                               
                              -- 
                              cgit v1.2.3
                              
                              
                              From a52d3300d20837b12b45a0d4fb2b0ee520f6e641 Mon Sep 17 00:00:00 2001
                              From: Klaus Stranacher 
                              Date: Wed, 14 Aug 2013 16:36:40 +0200
                              Subject: TSL integration updates: - Setting of hashcache parameter in MOA -
                               Update MOA-SP Response (Source attribute in QualifiedCertificate and
                               SecureSignatureCreationDevice element) - Hidden truststores (for TSL enabled
                               truststore: given certificates are copied to hidden truststore, where TSL
                               certificates are copied) - Update of QC and SSCD detection - Update MOA-SPSS
                               config: EU TSL URL can be set via configuration
                              
                              ---
                               spss/handbook/clients/api/.classpath               |  84 ++++++++-------
                               .../api/.settings/org.eclipse.jdt.core.prefs       |  11 +-
                               spss/handbook/clients/referencedData/.classpath    |  10 +-
                               .../.settings/org.eclipse.jdt.core.prefs           |  11 +-
                               .../.settings/org.eclipse.wst.common.component     |   5 +-
                               .../org.eclipse.wst.common.project.facet.core.xml  |   4 +-
                               spss/handbook/clients/webservice/.classpath        |  66 +++++++-----
                               spss/handbook/clients/webservice/.project          |  74 ++++++-------
                               .../.settings/org.eclipse.jdt.core.prefs           |  11 +-
                               spss/handbook/handbook/config/config.html          |   1 -
                               spss/handbook/handbook/install/install.html        |   5 +-
                               spss/handbook/handbook/intro/intro.html            |   8 +-
                               spss/handbook/handbook/usage/usage.html            |  37 +++++--
                               .../.settings/org.eclipse.wst.common.component     |   1 -
                               .../org.eclipse.wst.common.project.facet.core.xml  |   4 +-
                               .../gv/egovernment/moa/spss/api/SPSSFactory.java   |   8 +-
                               .../moa/spss/api/common/SignerInfo.java            |  11 ++
                               .../moa/spss/api/common/TSLConfiguration.java      |   7 ++
                               .../moa/spss/api/impl/SPSSFactoryImpl.java         |   6 +-
                               .../moa/spss/api/impl/SignerInfoImpl.java          |  31 +++++-
                               .../moa/spss/api/impl/TSLConfigurationImpl.java    |  23 +++-
                               .../moa/spss/api/xmlbind/ResponseBuilderUtils.java |   6 +-
                               .../xmlbind/VerifyCMSSignatureResponseBuilder.java |   5 +-
                               .../xmlbind/VerifyXMLSignatureResponseBuilder.java |   4 +-
                               .../server/config/ConfigurationPartsBuilder.java   |  91 ++++++++++++++--
                               .../spss/server/config/ConfigurationProvider.java  |   6 +-
                               .../moa/spss/server/config/TrustProfile.java       |  29 +++---
                               .../moa/spss/server/init/SystemInitializer.java    |   8 +-
                               .../invoke/CMSSignatureVerificationInvoker.java    | 116 +++++++++++++++++++--
                               .../invoke/VerifyCMSSignatureResponseBuilder.java  |  27 ++---
                               .../invoke/VerifyXMLSignatureResponseBuilder.java  |  30 +++---
                               .../invoke/XMLSignatureVerificationInvoker.java    |  65 ++++++++++--
                               .../moa/spss/tsl/connector/TSLConnector.java       |  27 +++--
                               .../moa/spss/tsl/timer/TSLUpdaterTimerTask.java    |  26 +++--
                               .../properties/spss_messages_de.properties         |   1 +
                               .../.settings/org.eclipse.wst.common.component     |   6 +-
                               spss/server/serverws/pom.xml                       |  36 +++++++
                               spss/server/tools/.classpath                       |  26 +++--
                               .../tools/.settings/org.eclipse.jdt.core.prefs     |  11 +-
                               39 files changed, 645 insertions(+), 293 deletions(-)
                              
                              (limited to 'spss')
                              
                              diff --git a/spss/handbook/clients/api/.classpath b/spss/handbook/clients/api/.classpath
                              index 95a3df914..ea8736aef 100644
                              --- a/spss/handbook/clients/api/.classpath
                              +++ b/spss/handbook/clients/api/.classpath
                              @@ -1,45 +1,43 @@
                               
                               
                              -	
                              -	
                              -	
                              -	
                              -	
                              -	
                              -	
                              -	
                              -	
                              -	
                              -	
                              -	
                              -	
                              -	
                              -	
                              -	
                              -	
                              -	
                              -	
                              -	
                              -	
                              -	
                              -	
                              -	
                              -	
                              -	
                              -	
                              -	
                              -	
                              -	
                              -	
                              -	
                              -	
                              -	
                              -	
                              -	
                              -	
                              -		
                              -			
                              -		
                              -	
                              -	
                              -
                              +  
                              +  
                              +  
                              +  
                              +  
                              +  
                              +  
                              +  
                              +  
                              +  
                              +  
                              +  
                              +  
                              +  
                              +  
                              +  
                              +  
                              +  
                              +  
                              +  
                              +  
                              +  
                              +  
                              +  
                              +  
                              +  
                              +  
                              +  
                              +  
                              +  
                              +  
                              +  
                              +  
                              +  
                              +  
                              +  
                              +  
                              +  
                              +  
                              +  
                              +
                              \ No newline at end of file
                              diff --git a/spss/handbook/clients/api/.settings/org.eclipse.jdt.core.prefs b/spss/handbook/clients/api/.settings/org.eclipse.jdt.core.prefs
                              index c788ee346..5bdae7434 100644
                              --- a/spss/handbook/clients/api/.settings/org.eclipse.jdt.core.prefs
                              +++ b/spss/handbook/clients/api/.settings/org.eclipse.jdt.core.prefs
                              @@ -1,8 +1,9 @@
                              +#Mon Aug 05 10:52:31 CEST 2013
                              +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
                              +org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
                              +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
                               eclipse.preferences.version=1
                               org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
                              -org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7
                              -org.eclipse.jdt.core.compiler.compliance=1.7
                              +org.eclipse.jdt.core.compiler.source=1.5
                               org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
                              -org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
                              -org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
                              -org.eclipse.jdt.core.compiler.source=1.7
                              +org.eclipse.jdt.core.compiler.compliance=1.5
                              diff --git a/spss/handbook/clients/referencedData/.classpath b/spss/handbook/clients/referencedData/.classpath
                              index d888b90e9..0173dfd90 100644
                              --- a/spss/handbook/clients/referencedData/.classpath
                              +++ b/spss/handbook/clients/referencedData/.classpath
                              @@ -1,9 +1,5 @@
                               
                               
                              -	
                              -		
                              -			
                              -		
                              -	
                              -	
                              -
                              +  
                              +  
                              +
                              \ No newline at end of file
                              diff --git a/spss/handbook/clients/referencedData/.settings/org.eclipse.jdt.core.prefs b/spss/handbook/clients/referencedData/.settings/org.eclipse.jdt.core.prefs
                              index c788ee346..5bdae7434 100644
                              --- a/spss/handbook/clients/referencedData/.settings/org.eclipse.jdt.core.prefs
                              +++ b/spss/handbook/clients/referencedData/.settings/org.eclipse.jdt.core.prefs
                              @@ -1,8 +1,9 @@
                              +#Mon Aug 05 10:52:31 CEST 2013
                              +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
                              +org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
                              +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
                               eclipse.preferences.version=1
                               org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
                              -org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7
                              -org.eclipse.jdt.core.compiler.compliance=1.7
                              +org.eclipse.jdt.core.compiler.source=1.5
                               org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
                              -org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
                              -org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
                              -org.eclipse.jdt.core.compiler.source=1.7
                              +org.eclipse.jdt.core.compiler.compliance=1.5
                              diff --git a/spss/handbook/clients/referencedData/.settings/org.eclipse.wst.common.component b/spss/handbook/clients/referencedData/.settings/org.eclipse.wst.common.component
                              index 2063ba643..0929e364c 100644
                              --- a/spss/handbook/clients/referencedData/.settings/org.eclipse.wst.common.component
                              +++ b/spss/handbook/clients/referencedData/.settings/org.eclipse.wst.common.component
                              @@ -1,7 +1,8 @@
                              -
                              +
                              +
                                 
                                   
                                   
                                   
                                 
                              -
                              +
                              \ No newline at end of file
                              diff --git a/spss/handbook/clients/referencedData/.settings/org.eclipse.wst.common.project.facet.core.xml b/spss/handbook/clients/referencedData/.settings/org.eclipse.wst.common.project.facet.core.xml
                              index 47b82b84e..564572b10 100644
                              --- a/spss/handbook/clients/referencedData/.settings/org.eclipse.wst.common.project.facet.core.xml
                              +++ b/spss/handbook/clients/referencedData/.settings/org.eclipse.wst.common.project.facet.core.xml
                              @@ -3,5 +3,5 @@
                                 
                                 
                                 
                              -  
                              -
                              +  
                              +
                              \ No newline at end of file
                              diff --git a/spss/handbook/clients/webservice/.classpath b/spss/handbook/clients/webservice/.classpath
                              index b75cb2821..ea8736aef 100644
                              --- a/spss/handbook/clients/webservice/.classpath
                              +++ b/spss/handbook/clients/webservice/.classpath
                              @@ -1,27 +1,43 @@
                               
                               
                              -	
                              -		
                              -			
                              -			
                              -		
                              -	
                              -	
                              -		
                              -			
                              -			
                              -		
                              -	
                              -	
                              -		
                              -			
                              -			
                              -		
                              -	
                              -	
                              -		
                              -			
                              -		
                              -	
                              -	
                              -
                              +  
                              +  
                              +  
                              +  
                              +  
                              +  
                              +  
                              +  
                              +  
                              +  
                              +  
                              +  
                              +  
                              +  
                              +  
                              +  
                              +  
                              +  
                              +  
                              +  
                              +  
                              +  
                              +  
                              +  
                              +  
                              +  
                              +  
                              +  
                              +  
                              +  
                              +  
                              +  
                              +  
                              +  
                              +  
                              +  
                              +  
                              +  
                              +  
                              +  
                              +
                              \ No newline at end of file
                              diff --git a/spss/handbook/clients/webservice/.project b/spss/handbook/clients/webservice/.project
                              index cddae3823..d23223048 100644
                              --- a/spss/handbook/clients/webservice/.project
                              +++ b/spss/handbook/clients/webservice/.project
                              @@ -1,44 +1,34 @@
                               
                               
                              -	moa-spss-handbook-webserviceClient
                              -	NO_M2ECLIPSE_SUPPORT: Project files created with the maven-eclipse-plugin are not supported in M2Eclipse.
                              -	
                              -		moa-common
                              -		moa-spss-lib
                              -	
                              -	
                              -		
                              -			org.eclipse.jdt.core.javabuilder
                              -			
                              -			
                              -		
                              -		
                              -			org.eclipse.wst.common.project.facet.core.builder
                              -			
                              -			
                              -		
                              -		
                              -			org.eclipse.wst.validation.validationbuilder
                              -			
                              -			
                              -		
                              -		
                              -			org.maven.ide.eclipse.maven2Builder
                              -			
                              -			
                              -		
                              -		
                              -			org.eclipse.m2e.core.maven2Builder
                              -			
                              -			
                              -		
                              -	
                              -	
                              -		org.eclipse.m2e.core.maven2Nature
                              -		org.maven.ide.eclipse.maven2Nature
                              -		org.eclipse.wst.common.project.facet.core.nature
                              -		org.eclipse.jdt.core.javanature
                              -		org.eclipse.wst.common.modulecore.ModuleCoreNature
                              -		org.eclipse.jem.workbench.JavaEMFNature
                              -	
                              -
                              +  moa-spss-handbook-webserviceClient
                              +  NO_M2ECLIPSE_SUPPORT: Project files created with the maven-eclipse-plugin are not supported in M2Eclipse.
                              +  
                              +    moa-common
                              +    moa-spss-lib
                              +  
                              +  
                              +    
                              +      org.eclipse.jdt.core.javabuilder
                              +    
                              +    
                              +      org.eclipse.wst.common.project.facet.core.builder
                              +    
                              +    
                              +      org.eclipse.wst.validation.validationbuilder
                              +    
                              +    
                              +      org.maven.ide.eclipse.maven2Builder
                              +    
                              +    
                              +      org.eclipse.m2e.core.maven2Builder
                              +    
                              +  
                              +  
                              +    org.eclipse.m2e.core.maven2Nature
                              +    org.maven.ide.eclipse.maven2Nature
                              +    org.eclipse.wst.common.project.facet.core.nature
                              +    org.eclipse.jdt.core.javanature
                              +    org.eclipse.wst.common.modulecore.ModuleCoreNature
                              +    org.eclipse.jem.workbench.JavaEMFNature
                              +  
                              +
                              \ No newline at end of file
                              diff --git a/spss/handbook/clients/webservice/.settings/org.eclipse.jdt.core.prefs b/spss/handbook/clients/webservice/.settings/org.eclipse.jdt.core.prefs
                              index c788ee346..5bdae7434 100644
                              --- a/spss/handbook/clients/webservice/.settings/org.eclipse.jdt.core.prefs
                              +++ b/spss/handbook/clients/webservice/.settings/org.eclipse.jdt.core.prefs
                              @@ -1,8 +1,9 @@
                              +#Mon Aug 05 10:52:31 CEST 2013
                              +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
                              +org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
                              +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
                               eclipse.preferences.version=1
                               org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
                              -org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7
                              -org.eclipse.jdt.core.compiler.compliance=1.7
                              +org.eclipse.jdt.core.compiler.source=1.5
                               org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
                              -org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
                              -org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
                              -org.eclipse.jdt.core.compiler.source=1.7
                              +org.eclipse.jdt.core.compiler.compliance=1.5
                              diff --git a/spss/handbook/handbook/config/config.html b/spss/handbook/handbook/config/config.html
                              index b0247180c..96270bde1 100644
                              --- a/spss/handbook/handbook/config/config.html
                              +++ b/spss/handbook/handbook/config/config.html
                              @@ -1218,6 +1218,5 @@ Wird der Wert auf -1 gesetzt, dann bedeutet das ein unendlich langes Intervall.
                               

                              3.4 Typische Konfiguration für MOA SP/SS

                              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 Anwenderhandbuchs notwendig ist.

                              Typische Konfiguration für MOA SP/SS

                              -

                               

                              diff --git a/spss/handbook/handbook/install/install.html b/spss/handbook/handbook/install/install.html index 382f9633f..3c3414d29 100644 --- a/spss/handbook/handbook/install/install.html +++ b/spss/handbook/handbook/install/install.html @@ -118,7 +118,7 @@

                              Wir empfehlen jedoch jeweils aktuelle Version zu verwenden:

                              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.

                              @@ -377,7 +377,7 @@ INFO | 01 21:25:26,540 | Thread-3 | TID=1049225059594-100 NID=<null>

                              Wir empfehlen jedoch jeweils aktuelle Version zu verwenden:

                              3.1.2 Vorbereitung

                              Die folgenden Schritte dienen der Vorbereitung der Installation.

                              @@ -487,5 +487,6 @@ INFO | 01 21:25:26,540 | Thread-3 | TID=1049225059594-100 NID=<null>
                              KlassenbibliothekVersionDateien
                              moa-spss.jar, moa-common.jar
                              MOA IAIK

                              1.33.1

                              -

                              TODO: Update Version (auf 1.5 laut Harald) 

                              lib/iaik_moa-1.33.1.jar, +

                              1.5 

                              lib/iaik_moa-1.5.jar, lib/iaik_cms-4.1.jar, lib/iaik_ixsil-1.2.2.5.jar

                              Logging Framework
                              + diff --git a/spss/handbook/handbook/intro/intro.html b/spss/handbook/handbook/intro/intro.html index 077a1dabe..caa7fcc58 100644 --- a/spss/handbook/handbook/intro/intro.html +++ b/spss/handbook/handbook/intro/intro.html @@ -30,14 +30,14 @@

                              1 Allgemeines

                              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.

                              -

                              Die Funktionalität und der Aufbau der Schnittstelle zu den beiden Modulen ist in der Spezifikation MOA SP/SS (V1.5.2) detailliert beschrieben. Da diese Spezifikation auf der Schnittstellenspezifikation des Security-Layers (V 1.2x) TODO aufbaut, ist deren Kenntnis zum Verstehen der Schnittstellen zu SS und SP erforderlich.

                              +

                              Die Funktionalität und der Aufbau der Schnittstelle zu den beiden Modulen ist in der Spezifikation MOA SP/SS (V1.5.2) detailliert beschrieben. Da diese Spezifikation auf der @TODO (Update auf neue abgestimmte Spezifikation) Schnittstellenspezifikation des Security-Layers (V 1.2x) aufbaut, ist deren Kenntnis zum Verstehen der Schnittstellen zu SS und SP erforderlich.

                              2 Modul Serversignatur (SS)

                              -

                              Das Modul Serversignatur (SS) dient zum Erstellen von XML-Signaturen in Anlehnung an die Schnittstellenspezifikation des Security-Layers (V 1.2x TODO). 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.

                              +

                              Das Modul Serversignatur (SS) dient zum Erstellen von XML-Signaturen in Anlehnung an die @TODO (Update auf neue abgestimmte Spezifikation) Schnittstellenspezifikation des Security-Layers (V 1.2x TODO). 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.

                              Der Zugriff auf einzelne Signaturschlüssel in MOA SS kann basierend auf dem für TLS-Client-Authentisierung verwendeten Zertifikat eingeschränkt werden.

                              Anwendungen können das Modul entweder als Web-Service oder über ein Java-API ansprechen.

                              3 Modul Signaturprüfung (SP)

                              -

                              Das Modul Signaturprüfung (SP) dient zum Überprüfen von XML-Signaturen und CMS-Signaturen sowie den fortgeschrittenen Signaturen XAdES (TODO Link + Versionen) und CAdES (TODO Link + Versionen).

                              -

                              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 Schnittstellenspezifikation des Security-Layers (V 1.2x TODO) entsprechen (vgl. Signaturmanifest).

                              +

                              Das Modul Signaturprüfung (SP) dient zum Überprüfen von XML-Signaturen und CMS-Signaturen sowie den fortgeschrittenen Signaturen XAdES (@TODO Link + Versionen basierend auf Update SL) und CAdES (@TODO Link + Versionen basierend auf Update SL).

                              +

                              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 @TODO (Update auf neue abgestimmte Spezifikation) Schnittstellenspezifikation des Security-Layers (V 1.2x) entsprechen (vgl. Signaturmanifest).

                              Anwendungen können das Modul entweder als Web-Service oder über ein Java-API ansprechen.

                              diff --git a/spss/handbook/handbook/usage/usage.html b/spss/handbook/handbook/usage/usage.html index 8bd1cdc46..53d699689 100644 --- a/spss/handbook/handbook/usage/usage.html +++ b/spss/handbook/handbook/usage/usage.html @@ -77,7 +77,9 @@
                          1. Referenzierte Software
                          2. +
                          3. Referenzierte Spezifikation
                          +

                          1 Übersicht

                          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.

                          @@ -87,14 +89,14 @@

                          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.

                          Bitte beachten Sie: Einige der vorgestellten Requests referenzieren beispielhafte Daten auf localhost, z.B. http://localhost:8080/referencedData/Text.txt. 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 localhost:8080 betreiben, ist es ausreichend, wenn sie die diesem Handbuch beiliegende Webapplikation referencedData.war in das Verzeichnis webapps Ihrer Tomcat-Installation kopieren. Ansonsten müssen Sie zusätzlich die URLs in den Requests anpassen.

                          2.1.1 Erstellung einer CMS bzw. CAdES-Signatur

                          -

                          MOA-SS ermöglicht die Erstellung einer herkömmlichen CMS-Signatur und einer CAdES-Signatur gemäß der Security-Layer Spezifikation V1.2x TODO. Die Auswahl ob eine herkömmliche XML oder eine Security-Layer konforme CAdES-Signatur erstellt wird, erfolgt durch das Attribute SecurityLayerConformity im Signaturerstelltungs-Request (siehe auch folgende Beispiele).

                          +

                          MOA-SS ermöglicht die Erstellung einer herkömmlichen CMS-Signatur und einer CAdES-Signatur gemäß der Security-Layer Spezifikation. Die Auswahl ob eine herkömmliche XML oder eine Security-Layer konforme CAdES-Signatur erstellt wird, erfolgt durch das Attribute SecurityLayerConformity im Signaturerstelltungs-Request (siehe auch folgende Beispiele).

                          2.1.1.1 Beispiel (Base64-codiertes Datenobjekt)

                          Request

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

                            <KeyIdentifier>KG_allgemein</KeyIdentifier> 

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

                            <SingleSignatureInfo SecurityLayerConformity="true">
                          -

                          Für jedes SingleSignatureInfoElement wird eine eigene CMS/CAdES-Signatur erzeugt. Wird das Attribut SecurityLayerConformity auf true gesetzt, dann wird eine CAdES-Signatur gemäß Security-Layer Spezifikation V1.2x TODO 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).

                          +

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

                            <DataObjectInfo Structure="enveloping">
                           	  <DataObject>
                           	    <MetaInfo>
                          @@ -121,7 +123,7 @@
                           
                            <KeyIdentifier>KG_allgemein</KeyIdentifier> 

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

                            <SingleSignatureInfo SecurityLayerConformity="false">
                          -

                          Für jedes SingleSignatureInfoElement wird eine eigene CMS/CAdES-Signatur erzeugt. Wird das Attribut SecurityLayerConformity auf true gesetzt, dann wird eine CAdES-Signatur gemäß Security-Layer Spezifikation V1.2x TODO 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).

                          +

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

                            <DataObjectInfo Structure="detached">
                           	  <DataObject>
                           	    <MetaInfo>
                          @@ -140,7 +142,7 @@
                               xmlns="http://reference.e-government.gv.at/namespace/moa/20020822#" 
                          xmlns:dsig="http://www.w3.org/2000/09/xmldsig#">
                          <CMSSignature>MIAGCSqGSI...SwxhbA9pAAAAAAAA</CMSSignature>
                          </CreateCMSSignatureResponse>

                          CreateCMSSignatureResponse enthält je erzeugter Signatur ein Element CMSSignature (in diesem Fall genau ein Element). CMSSignature enthält die von SS erzeugte CMS-Signatur (da SecurityLayerConformity="false" im Request angegeben wurde) als Base64-codierten Wert. Das unterzeichnete Datenobjekt ist in der Signaturstruktur nicht enthalten (detached).

                          2.1.2 Erstellung einer XML bzw. XAdES-Signatur

                          -

                          MOA-SS ermöglicht die Erstellung einer herkömmlichen XML-Signatur und einer XAdES-Signatur gemäß der Security-Layer Spezifikation V1.2x TODO. Die Auswahl ob eine herkömmliche XML oder eine Security-Layer konforme XAdES-Signatur erstellt wird, erfolgt durch das Attribute SecurityLayerConformity im Signaturerstelltungs-Request (siehe auch folgende Beispiele).

                          +

                          MOA-SS ermöglicht die Erstellung einer herkömmlichen XML-Signatur und einer XAdES-Signatur gemäß der Security-Layer Spezifikation. Die Auswahl ob eine herkömmliche XML oder eine Security-Layer konforme XAdES-Signatur erstellt wird, erfolgt durch das Attribute SecurityLayerConformity im Signaturerstelltungs-Request (siehe auch folgende Beispiele).

                          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 Konfiguration der XAdES Version).

                          2.1.2.1 Einfaches Beispiel

                          Request
                          @@ -148,7 +150,7 @@
                            <KeyIdentifier>KG_allgemein</KeyIdentifier> 

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

                            <SingleSignatureInfo SecurityLayerConformity="false">
                          -

                          Für jedes SingleSignatureInfoElement wird eine eigene XML-Signatur erzeugt. Wird das Attribut SecurityLayerConformity auf true gesetzt, dann wird eine XML-Signatur gemäß Security-Layer Spezifikation V1.2x TODO 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).

                          +

                          Für jedes SingleSignatureInfoElement wird eine eigene XML-Signatur erzeugt. Wird das Attribut SecurityLayerConformity auf true gesetzt, dann wird eine XML-Signatur gemäß Security-Layer Spezifikation erzeugt; d.h. es werden signierte Properties (Zeitpunkt der Signaturerstellung, das für die Signaturüberprüfung zu verwendende Zertifikat, Metainformationen zu den signierten Datenobjekten) und ein Manifest, das alle implizite Transformationsparameter enthält, zur Signatur hinzugefügt (=eine XAdES Signatur).

                            <DataObjectInfo Structure="enveloping">
                               <DataObject>
                                 <XMLContent>Diese Daten werden signiert.<XMLContent>
                          @@ -703,13 +705,13 @@ O=A-Trust Ges. für Sicherheitssysteme im elektr. Datenverkehr GmbH,C=AT<
                               <Code>0</Code>
                             </SignatureCheck>
                           
                          -

                          Anschließend an SignerInfo enthält die Response mit SignatureCheck/Code das Resultat der kryptographischen Prüfung der Signatur. In unserem Beispiel ist dort der Wert 0 enthalten, d. h. die Signatur konnte erfolgreich validiert werden. Für eine Übersicht der möglichen Kodes siehe Security-Layer 1.2x TODO.

                          +

                          Anschließend an SignerInfo enthält die Response mit SignatureCheck/Code das Resultat der kryptographischen Prüfung der Signatur. In unserem Beispiel ist dort der Wert 0 enthalten, d. h. die Signatur konnte erfolgreich validiert werden. Für eine Übersicht der möglichen Kodes siehe Security-Layer Spezifikation.

                             <CertificateCheck>
                               <Code>1</Code>
                             </CertificateCheck>
                           
                          -

                          Abschließend enthält die Response mit CertificateCheck/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. Trust Anchor gebildet werden kann. Gelingt dies, wird die Gültigkeit jedes Zertifikats dieser Kette überprüft. In unserem Beispiel enthält Code den Wert 1, d. h. MOA SP konnte die oben erläuterte Zertifikatskette nicht bilden. Für eine Übersicht der möglichen Kodes siehe Security-Layer 1.2x TODO.

                          +

                          Abschließend enthält die Response mit CertificateCheck/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. Trust Anchor gebildet werden kann. Gelingt dies, wird die Gültigkeit jedes Zertifikats dieser Kette überprüft. In unserem Beispiel enthält Code den Wert 1, d. h. MOA SP konnte die oben erläuterte Zertifikatskette nicht bilden. Für eine Übersicht der möglichen Kodes siehe Security-Layer Spezifikation.

                          2.1.3.2 Erweitertes Beispiel

                          Request

                          Dieses erweiterte Beispiel zur Prüfung einer CMS-Signatur (VerifyCMSSignatureRequest.Extended.xml) demonstriert die Prüfung mehrerer Signatoren einer CMS-Signatur, die Angabe des Prüfzeitpunkts sowie die Prüfung einer Detached Signature, d. h. einer Signatur, in der die signierten Daten nicht enthalten sind und daher extra angegeben werden müssen.

                          @@ -801,13 +803,13 @@ O=A-Trust Ges. für Sicherheitssysteme im elektr. Datenverkehr GmbH,C=AT< <Code>0</Code> </SignatureCheck>
                          -

                          Anschließend an SignerInfo enthält die Response mit SignatureCheck/Code das Resultat der kryptographischen Prüfung der Signatur. In unserem Beispiel ist dort der Wert 0 enthalten, d. h. die Signatur konnte erfolgreich validiert werden. Für eine Übersicht der möglichen Kodes siehe Security-Layer 1.2x TODO.

                          +

                          Anschließend an SignerInfo enthält die Response mit SignatureCheck/Code das Resultat der kryptographischen Prüfung der Signatur. In unserem Beispiel ist dort der Wert 0 enthalten, d. h. die Signatur konnte erfolgreich validiert werden. Für eine Übersicht der möglichen Kodes siehe Security-Layer Spezifikation.

                             <CertificateCheck>
                               <Code>0</Code>
                             </CertificateCheck>
                           
                          -

                          Abschließend enthält die Response mit CertificateCheck/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. Trust Anchor gebildet werden kann. Gelingt dies, wird die Gültigkeit jedes Zertifikats dieser Kette überprüft. In unserem Beispiel enthält Code den Wert 0, 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 Security-Layer 1.2x TODO.

                          +

                          Abschließend enthält die Response mit CertificateCheck/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. Trust Anchor gebildet werden kann. Gelingt dies, wird die Gültigkeit jedes Zertifikats dieser Kette überprüft. In unserem Beispiel enthält Code den Wert 0, 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 Security-Layer Spezifikation.

                          2.1.4.2 Erweitertes Beispiel

                          Request

                          Dieses erweiterte Beispiel zur Prüfung einer XML-Signatur (VerifyXMLSignatureRequest.Enveloped.xml) demonstriert die Prüfung einer Enveloped Signature, 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.

                          @@ -943,7 +945,7 @@ positive Ganzzahl repräsentiert, die auf das beinhaltende dsig:Manife </XMLDSIGManifestCheck>
                      3. Neu ist in dieser Response das an SignatureCheck anschließende Element XMLDSIGManifestCheck. Ein oder mehrere solche Elemente werden immer dann zurückgeliefert, wenn in dsig:SignedInfo der XML-Signatur dsig:Reference Elemente existieren, die sich auf ein Manifest nach XMLDSIG beziehen (siehe oben). Je solcher dsig:Reference enthält die Antwort ein korrespondierendes Element XMLDSIGManifestCheck, im konkreten Beispiel als eines.

                        -

                        Das Element Code gibt das Ergebnis der durchgeführten Prüfung des XMLDSIG-Manifests an. In diesem Fall bedeutet 0, dass die Prüfung jeder dsig:Reference im dsig:Manifest (im konkreten Beispiel also genau einer dsig:Reference) erfolgreich durchgeführt werden konnte. Für eine Übersicht der möglichen Kodes siehe Security-Layer 1.2x TODO.

                        +

                        Das Element Code gibt das Ergebnis der durchgeführten Prüfung des XMLDSIG-Manifests an. In diesem Fall bedeutet 0, dass die Prüfung jeder dsig:Reference im dsig:Manifest (im konkreten Beispiel also genau einer dsig:Reference) erfolgreich durchgeführt werden konnte. Für eine Übersicht der möglichen Kodes siehe Security-Layer Spezifikation.

                        Das Element Info/ReferringSigReference enthält als Textinhalt die Nummer jenes dsig:Reference Elements in dsig:SignedInfo der XML-Signatur, welches auf das untersuchte Manifest nach XMLDSIG verweist, wobei mit 1 zu zählen begonnen wird.

                           <CertificateCheck>
                        @@ -1184,7 +1186,7 @@ Ich habe weiters ein eigenens ID-Attribut bekommen.</doc:Paragraph>
                         

                        Das Element CertificateCheck enthält das Resultat der Zertifikatsprüfung (siehe Einfaches Beispiel).

                         

                        -

                        TODO Beispiel-Request mit TSL-Prüfung

                        +

                        @TODO Beispiel-Request mit TSL-Prüfung

                        2.2 Webservice-Clients

                        Abschnitt 2.1 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.

                        2.2.1 Übersicht

                        @@ -1280,5 +1282,18 @@ Ich habe weiters ein eigenens ID-Attribut bekommen.</doc:Paragraph> +

                        B Referenzierte Spezifikation

                        + + + + + + + + + + + +
                        SpezifikationLink

                        Security Layer Spezifikation V x.x @TODO Version einfügen

                        @TODO Link
                        diff --git a/spss/server/serverlib/.settings/org.eclipse.wst.common.component b/spss/server/serverlib/.settings/org.eclipse.wst.common.component index 7170b56ac..ee24ef8ba 100644 --- a/spss/server/serverlib/.settings/org.eclipse.wst.common.component +++ b/spss/server/serverlib/.settings/org.eclipse.wst.common.component @@ -2,6 +2,5 @@ - diff --git a/spss/server/serverlib/.settings/org.eclipse.wst.common.project.facet.core.xml b/spss/server/serverlib/.settings/org.eclipse.wst.common.project.facet.core.xml index 69dc9cc0f..656f15b87 100644 --- a/spss/server/serverlib/.settings/org.eclipse.wst.common.project.facet.core.xml +++ b/spss/server/serverlib/.settings/org.eclipse.wst.common.project.facet.core.xml @@ -3,5 +3,5 @@ - - + + \ No newline at end of file diff --git a/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/api/SPSSFactory.java b/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/api/SPSSFactory.java index 26cce1a82..80f996b36 100644 --- a/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/api/SPSSFactory.java +++ b/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/api/SPSSFactory.java @@ -1090,6 +1090,8 @@ public abstract class SPSSFactory { * @param signerCertificate The signer certificate in binary form. * @param qualifiedCertificate true, if the signer certificate is * a qualified certificate, otherwise false. + * @param qcSourceTSL true, if the QC information comes from the TSL, + * otherwise false. * @param publicAuthority true, if the signer certificate is a * public authority certificate, otherwise false. * @param publicAuthorityID The identification of the public authority @@ -1097,6 +1099,8 @@ public abstract class SPSSFactory { * null. * @param sscd true, if the TSL check verifies the * signature based on a SSDC, otherwise false. + * @param sscdSourceTSL true, if the SSCD information comes from the TSL, + * otherwise false. * @return The SignerInfo containing the above data. * * @pre signerCertSubjectName != null @@ -1106,9 +1110,11 @@ public abstract class SPSSFactory { public abstract SignerInfo createSignerInfo( X509Certificate signerCertificate, boolean qualifiedCertificate, + boolean qcSourceTSL, boolean publicAuthority, String publicAuthorityID, - boolean sscd); + boolean sscd, + boolean sscdSourceTSL); /** * Create a new X509IssuerSerial object. diff --git a/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/api/common/SignerInfo.java b/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/api/common/SignerInfo.java index 7a1942214..337f775bf 100644 --- a/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/api/common/SignerInfo.java +++ b/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/api/common/SignerInfo.java @@ -58,6 +58,17 @@ public interface SignerInfo { */ public boolean isSSCD(); + /** + * Returns the source of the SSCD check (TSL or Certificate) * + */ + public String getSSCDSource(); + + /** + * Returns the source of the QC check (TSL or Certificate) * + */ + public String getQCSource(); + + /** * Checks, whether the certificate contained in this object is a * public authority certificate. diff --git a/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/api/common/TSLConfiguration.java b/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/api/common/TSLConfiguration.java index fd7d38217..29529322c 100644 --- a/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/api/common/TSLConfiguration.java +++ b/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/api/common/TSLConfiguration.java @@ -24,6 +24,8 @@ package at.gv.egovernment.moa.spss.api.common; +import iaik.ixsil.util.URI; + import java.util.Date; @@ -70,5 +72,10 @@ public interface TSLConfiguration { */ public String getWorkingDirectory(); + /** + * + * @return + */ + public URI getWorkingDirectoryAsURI(); } diff --git a/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/api/impl/SPSSFactoryImpl.java b/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/api/impl/SPSSFactoryImpl.java index 7c1208e8f..74f65cb70 100644 --- a/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/api/impl/SPSSFactoryImpl.java +++ b/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/api/impl/SPSSFactoryImpl.java @@ -622,15 +622,19 @@ public class SPSSFactoryImpl extends SPSSFactory { public SignerInfo createSignerInfo( X509Certificate signerCertificate, boolean qualifiedCertificate, + boolean qcSourceTSL, boolean publicAuthority, String publicAuthorityID, - boolean sscd) { + boolean sscd, + boolean sscdSourceTSL) { 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); return signerInfo; } diff --git a/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/api/impl/SignerInfoImpl.java b/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/api/impl/SignerInfoImpl.java index 56a9004fc..5d26397c5 100644 --- a/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/api/impl/SignerInfoImpl.java +++ b/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/api/impl/SignerInfoImpl.java @@ -49,6 +49,13 @@ public class SignerInfoImpl implements SignerInfo { /** 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; + /** * Sets the signer certificate. * @@ -87,7 +94,29 @@ public class SignerInfoImpl implements SignerInfo { } public boolean isSSCD() { return sscd; - } + } + + public void setSSCDSourceTSL(boolean sscdSourceTSL) { + this.sscdSourceTSL = sscdSourceTSL; + } + + public String getSSCDSource() { + if (sscdSourceTSL) + return "TSL"; + else + return "Certificate"; + } + + public void setQCSourceTSL(boolean qcSourceTSL) { + this.qcSourceTSL = qcSourceTSL; + } + + public String getQCSource() { + if (qcSourceTSL) + return "TSL"; + else + return "Certificate"; + } /** * Sets, whether the certificate contained in this object is an diff --git a/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/api/impl/TSLConfigurationImpl.java b/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/api/impl/TSLConfigurationImpl.java index 15d66614e..87314e1f7 100644 --- a/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/api/impl/TSLConfigurationImpl.java +++ b/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/api/impl/TSLConfigurationImpl.java @@ -24,6 +24,8 @@ package at.gv.egovernment.moa.spss.api.impl; +import iaik.ixsil.util.URI; + import java.util.Date; import at.gv.egovernment.moa.spss.api.common.TSLConfiguration; @@ -38,7 +40,7 @@ public class TSLConfigurationImpl implements TSLConfiguration { /** The EU TSL URL. */ -// private String euTSLUrl; + private String euTSLUrl; /** update period in milliseconds */ private long updateSchedulePeriod; @@ -48,9 +50,12 @@ public class TSLConfigurationImpl implements TSLConfiguration { /** Working directory */ private String workingDirectory; + + /** Working directory */ + private URI workingDirectoryAsURI; public String getEuTSLUrl() { - return this.DEFAULT_EU_TSL_URL; + return this.euTSLUrl; } public long getUpdateSchedulePeriod() { @@ -64,10 +69,14 @@ public class TSLConfigurationImpl implements TSLConfiguration { public String getWorkingDirectory() { return this.workingDirectory; } + + public URI getWorkingDirectoryAsURI() { + return this.workingDirectoryAsURI; + } -// public void setEuTSLUrl(String euTSLUrl) { -// this.euTSLUrl = euTSLUrl; -// } + public void setEuTSLUrl(String euTSLUrl) { + this.euTSLUrl = euTSLUrl; + } public void setUpdateSchedulePeriod(long updateSchedulePeriod) { this.updateSchedulePeriod = updateSchedulePeriod; @@ -80,6 +89,10 @@ public class TSLConfigurationImpl implements TSLConfiguration { public void setWorkingDirectory(String workingDirectory) { this.workingDirectory = workingDirectory; } + + public void setWorkingDirectoryURI(URI workingDirectoryAsURI) { + this.workingDirectoryAsURI = workingDirectoryAsURI; + } diff --git a/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/api/xmlbind/ResponseBuilderUtils.java b/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/api/xmlbind/ResponseBuilderUtils.java index a228a0db8..505303bc1 100644 --- a/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/api/xmlbind/ResponseBuilderUtils.java +++ b/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/api/xmlbind/ResponseBuilderUtils.java @@ -117,9 +117,11 @@ class ResponseBuilderUtils { Element root, X509Certificate cert, boolean isQualified, + String qcSource, boolean isPublicAuthority, String publicAuthorityID, - boolean isSSCD) + boolean isSSCD, + String sscdSource) throws MOAApplicationException { Element signerInfoElem = response.createElementNS(MOA_NS_URI, "SignerInfo"); @@ -182,6 +184,7 @@ class ResponseBuilderUtils { x509DataElem.appendChild(x509IssuerSerialElem); x509DataElem.appendChild(x509CertificateElem); if (isQualified) { + qualifiedCertificateElem.setAttributeNS(MOA_NS_URI, "Source", qcSource); x509DataElem.appendChild(qualifiedCertificateElem); } if (isPublicAuthority) { @@ -192,6 +195,7 @@ class ResponseBuilderUtils { } } if (isSSCD) { + sscdElem.setAttributeNS(MOA_NS_URI, "Source", sscdSource); x509DataElem.appendChild(sscdElem); } signerInfoElem.appendChild(x509DataElem); diff --git a/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/api/xmlbind/VerifyCMSSignatureResponseBuilder.java b/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/api/xmlbind/VerifyCMSSignatureResponseBuilder.java index 7ad838822..238875351 100644 --- a/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/api/xmlbind/VerifyCMSSignatureResponseBuilder.java +++ b/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/api/xmlbind/VerifyCMSSignatureResponseBuilder.java @@ -99,14 +99,17 @@ public class VerifyCMSSignatureResponseBuilder { CheckResult signatureCheck = responseElement.getSignatureCheck(); CheckResult certCheck = responseElement.getCertificateCheck(); + //TODO ResponseBuilderUtils.addSignerInfo( responseDoc, responseElem, signerInfo.getSignerCertificate(), signerInfo.isQualifiedCertificate(), + signerInfo.getQCSource(), signerInfo.isPublicAuthority(), signerInfo.getPublicAuhtorityID(), - signerInfo.isSSCD()); + signerInfo.isSSCD(), + signerInfo.getSSCDSource()); ResponseBuilderUtils.addCodeInfoElement( responseDoc, diff --git a/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/api/xmlbind/VerifyXMLSignatureResponseBuilder.java b/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/api/xmlbind/VerifyXMLSignatureResponseBuilder.java index 0d3e0c18e..8673fba1c 100644 --- a/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/api/xmlbind/VerifyXMLSignatureResponseBuilder.java +++ b/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/api/xmlbind/VerifyXMLSignatureResponseBuilder.java @@ -96,9 +96,11 @@ public class VerifyXMLSignatureResponseBuilder { responseElem, response.getSignerInfo().getSignerCertificate(), response.getSignerInfo().isQualifiedCertificate(), + response.getSignerInfo().getQCSource(), response.getSignerInfo().isPublicAuthority(), response.getSignerInfo().getPublicAuhtorityID(), - response.getSignerInfo().isSSCD()); + response.getSignerInfo().isSSCD(), + response.getSignerInfo().getSSCDSource()); // add HashInputData elements responseData = response.getHashInputDatas(); diff --git a/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/server/config/ConfigurationPartsBuilder.java b/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/server/config/ConfigurationPartsBuilder.java index 2dcffa014..d2ee75116 100644 --- a/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/server/config/ConfigurationPartsBuilder.java +++ b/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/server/config/ConfigurationPartsBuilder.java @@ -67,6 +67,7 @@ import at.gv.egovernment.moa.spss.api.impl.TSLConfigurationImpl; import at.gv.egovernment.moa.spss.util.MessageProvider; import at.gv.egovernment.moa.util.Constants; import at.gv.egovernment.moa.util.DOMUtils; +import at.gv.egovernment.moa.util.FileUtils; import at.gv.egovernment.moa.util.StringUtils; import at.gv.egovernment.moa.util.XPathUtils; @@ -1135,11 +1136,11 @@ public class ConfigurationPartsBuilder { } /** - * Bulid the trust profile mapping. + * Build the trust profile mapping. * * @return The profile ID to profile mapping. */ - public Map buildTrustProfiles() + public Map buildTrustProfiles(String tslWorkingDir) { Map trustProfiles = new HashMap(); NodeIterator profileIter = XPathUtils.selectNodeIterator(getConfigElem(), TRUST_PROFILE_XPATH); @@ -1213,8 +1214,62 @@ public class ConfigurationPartsBuilder { } signerCertsLocStr = (signerCertsLocURI != null) ? signerCertsLocURI.toString() : null; - TrustProfile profile = new TrustProfile(id, trustAnchorsLocURI.toString(), signerCertsLocStr, tslEnabled, countries); + + TrustProfile profile = null; + + if (tslEnabled) { + // create new trust anchor location (=tslworking trust profile) + File fTslWorkingDir = new File(tslWorkingDir); + File tp = new File(fTslWorkingDir, "trustprofiles"); + if (!tp.exists()) + tp.mkdir(); + if (!tp.isDirectory()) { + error("config.50", new Object[] { tp.getPath() }); + // TODO? + } + + File tpid = new File(tp, id); + if (!tpid.exists()) + tpid.mkdir(); + if (!tpid.isDirectory()) { + error("config.50", new Object[] { tpid.getPath() }); + // TODO? + } + + + //System.out.println("tps: " + tpid.getAbsolutePath()); + + // create profile + profile = new TrustProfile(id, tpid.getAbsolutePath(), signerCertsLocStr, tslEnabled, countries); + + // set original uri (save original trust anchor location) + profile.setUriOrig(trustAnchorsLocURI.getPath()); + + // delete files in tslworking trust profile + File[] files = tpid.listFiles(); + for (File file : files) + file.delete(); + + // copy files from trustAnchorsLocURI into tslworking trust profile kopieren + File src = new File(trustAnchorsLocURI.getPath()); + files = src.listFiles(); + for (File file : files) { + FileUtils.copyFile(file, new File(tpid, file.getName())); + } + +// System.out.println("ID: " + id); +// System.out.println("Str: " + trustAnchorsLocStr); +// System.out.println("URI: " + trustAnchorsLocURI.toString()); +// System.out.println("tslWorkingDir: " + tslWorkingDir); + + } else { + + profile = new TrustProfile(id, trustAnchorsLocURI.toString(), signerCertsLocStr, tslEnabled, countries); + + } + trustProfiles.put(id, profile); + } return trustProfiles; @@ -1531,11 +1586,11 @@ public class ConfigurationPartsBuilder { TSLConfigurationImpl tslconfiguration = new TSLConfigurationImpl(); -// String euTSLUrl = getElementValue(getConfigElem(), TSL_CONFIGURATION_XPATH + CONF + "EUTSLUrl", null); -// if (StringUtils.isEmpty(euTSLUrl)) { -// warn("config.39", new Object[] { "EUTSL", euTSLUrl }); -// return null; -// } + String euTSLUrl = getElementValue(getConfigElem(), TSL_CONFIGURATION_XPATH + CONF + "EUTSLUrl", null); + if (StringUtils.isEmpty(euTSLUrl)) { + euTSLUrl = TSLConfiguration.DEFAULT_EU_TSL_URL; + warn("config.39", new Object[] { "EUTSL", euTSLUrl }); + } String updateSchedulePeriod = getElementValue(getConfigElem(), TSL_CONFIGURATION_XPATH + CONF + "UpdateSchedule/" + CONF + "Period" , null); @@ -1591,17 +1646,31 @@ public class ConfigurationPartsBuilder { return null; } + File hashcache = new File(tslWorkingDir, "hashcache"); + if (!hashcache.exists()) { + hashcache.mkdir(); + } + if (!hashcache.isDirectory()) { + error("config.38", new Object[] { hashcache.getAbsolutePath() }); + return null; + } + + 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); + + debug("TSL Konfiguration - EUTSLUrl: " + euTSLUrl); debug("TSL Konfiguration - UpdateSchedule/Period: " + updateSchedulePeriod); debug("TSL Konfiguration - UpdateSchedule/StartTime: " + updateScheduleStartTime); debug("TSL Konfiguration - TSLWorkingDirectory: " + tslWorkingDir.getAbsolutePath()); + debug("TSL Konfiguration - Hashcache: " + hashcache.getAbsolutePath()); // set TSL configuration - //tslconfiguration.setEuTSLUrl(euTSLUrl); + tslconfiguration.setEuTSLUrl(euTSLUrl); tslconfiguration.setUpdateSchedulePeriod(Long.valueOf(updateSchedulePeriod).longValue()); tslconfiguration.setUpdateScheduleStartTime(updateScheduleStartTimeDate); tslconfiguration.setWorkingDirectory(tslWorkingDir.getAbsolutePath()); - - + tslconfiguration.setWorkingDirectoryURI(workingDirectoryURI); return tslconfiguration; } diff --git a/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/server/config/ConfigurationProvider.java b/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/server/config/ConfigurationProvider.java index 08478b717..2cad35763 100644 --- a/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/server/config/ConfigurationProvider.java +++ b/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/server/config/ConfigurationProvider.java @@ -361,12 +361,14 @@ public class ConfigurationProvider keyGroupMappings = builder.buildKeyGroupMappings(keyGroups, ANONYMOUS_ISSUER_SERIAL); + tslconfiguration_ = builder.getTSLConfiguration(); + xadesVersion = builder.getXAdESVersion(); defaultChainingMode = builder.getDefaultChainingMode(); chainingModes = builder.buildChainingModes(); useAuthorityInfoAccess_ = builder.getUseAuthorityInfoAccess(); autoAddCertificates_ = builder.getAutoAddCertificates(); - trustProfiles = builder.buildTrustProfiles(); + trustProfiles = builder.buildTrustProfiles(tslconfiguration_.getWorkingDirectory()); distributionPoints = builder.buildDistributionPoints(); enableRevocationChecking_ = builder.getEnableRevocationChecking(); maxRevocationAge_ = builder.getMaxRevocationAge(); @@ -376,7 +378,7 @@ public class ConfigurationProvider revocationArchiveJDBCURL_ = builder.getRevocationArchiveJDBCURL(); revocationArchiveJDBCDriverClass_ = builder.getRevocationArchiveJDBCDriverClass(); - tslconfiguration_ = builder.getTSLConfiguration(); + //check TSL configuration checkTSLConfiguration(); diff --git a/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/server/config/TrustProfile.java b/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/server/config/TrustProfile.java index 1b5f4473d..21063c77f 100644 --- a/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/server/config/TrustProfile.java +++ b/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/server/config/TrustProfile.java @@ -41,6 +41,8 @@ public class TrustProfile { private String signerCertsUri; /** Defines if Trustprofile makes use of EU TSL*/ private boolean tslEnabled; + /** The original URI (out of the configuration) giving the location of the trust profile (used when TSL is enabled) */ + private String uriOrig; /** The countries given */ private String countries; /** */ @@ -80,6 +82,15 @@ public class TrustProfile { public String getUri() { return uri; } + + /** + * Return the original URI of this TrustProfile. + * + * @return The original URI of TrustProfile. + */ + public String getUriOrig() { + return uriOrig; + } /** * Return the URI giving the location of the allowed signer certificates @@ -108,20 +119,14 @@ public class TrustProfile { return countries; } + /** - * Return the old certificates (from previous TSL update) to be removed from the truststore before performing a new TSL update - * @return The old certificates (from previous TSL update) to be removed from the truststore before performing a new TSL update + * Sets the original URI of this TrustProfile. + * + * @return The original URI of TrustProfile. */ - public X509Certificate[] getCertficatesToBeRemoved() { - return certificatesToBeRemoved; + public void setUriOrig(String uriOrig) { + this.uriOrig = uriOrig; } - /** - * Sets the old certificates (from previous TSL update) to be removed from the truststore before performing a new TSL update - * @param certificates The old certificates (from previous TSL update) to be removed from the truststore before performing a new TSL update - */ - public void setCertificatesToBeRemoved(X509Certificate[] certificates) { - this.certificatesToBeRemoved = new X509Certificate[certificates.length]; - this.certificatesToBeRemoved = certificates; - } } diff --git a/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/server/init/SystemInitializer.java b/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/server/init/SystemInitializer.java index c9b76dd7e..3640dc23f 100644 --- a/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/server/init/SystemInitializer.java +++ b/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/server/init/SystemInitializer.java @@ -31,15 +31,12 @@ import iaik.server.ConfigurationData; import iaik.xml.crypto.tsl.ex.TSLEngineDiedException; import iaik.xml.crypto.tsl.ex.TSLSearchException; -import java.io.File; import java.io.FileNotFoundException; import java.io.IOException; import java.security.cert.CertificateException; -import java.util.ArrayList; import java.util.Calendar; import java.util.Date; import java.util.GregorianCalendar; -import java.util.Iterator; import java.util.Timer; import at.gv.egovernment.moa.logging.LogMsg; @@ -125,6 +122,7 @@ public class SystemInitializer { //initialize TSL module TSLConfiguration tslconfig = config.getTSLConfiguration(); + TSLConnector tslconnector = new TSLConnector(); if (tslconfig != null) { //Logger.info(new LogMsg(msg.getMessage("init.01", null))); @@ -133,10 +131,14 @@ public class SystemInitializer { } +// System.out.println("Hashcache 1: " + BinaryHashCache.DIR); + //start TSL Update TSLUpdaterTimerTask.tslconnector_ = tslconnector; TSLUpdaterTimerTask.update(); +// System.out.println("Hashcache 2: " + BinaryHashCache.DIR); + //initialize TSL Update Task initTSLUpdateTask(tslconfig); diff --git a/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/CMSSignatureVerificationInvoker.java b/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/CMSSignatureVerificationInvoker.java index 00f96f205..6aa34573e 100644 --- a/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/CMSSignatureVerificationInvoker.java +++ b/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/CMSSignatureVerificationInvoker.java @@ -58,6 +58,7 @@ 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.tsl.timer.TSLUpdaterTimerTask; +import at.gv.egovernment.moa.spss.util.CertificateUtils; import at.gv.egovernment.moa.spss.util.MessageProvider; /** @@ -191,12 +192,61 @@ public class CMSSignatureVerificationInvoker { for (resultIter = results.iterator(); resultIter.hasNext();) { result = (CMSSignatureVerificationResult) resultIter.next(); + boolean sscdSourceTSL = false; + boolean qcSourceTSL = false; + boolean checkQC = false; + boolean checkSSCD = false; + + List chain = result.getCertificateValidationResult().getCertificateChain(); // check QC and SSCD via TSL (if enabled) - boolean checkQCFromTSL = checkQC(trustProfile.isTSLEnabled(), result.getCertificateValidationResult().getCertificateChain()); - boolean checkSSCDFromTSL = checkSSCD(trustProfile.isTSLEnabled(), result.getCertificateValidationResult().getCertificateChain());; + boolean checkQCFromTSL = checkQC(trustProfile.isTSLEnabled(), chain); + boolean checkSSCDFromTSL = checkSSCD(trustProfile.isTSLEnabled(), chain); + + if (!checkSSCDFromTSL) { + + boolean checkQCPPlus = CertificateUtils.checkQCPPlus((X509Certificate)chain.get(0)); + boolean checkQcEuSSCD = CertificateUtils.checkQcEuSSCD((X509Certificate)chain.get(0)); + + if (checkQCPPlus) + checkSSCD = true; + if (checkQcEuSSCD) + checkSSCD = true; + + sscdSourceTSL = false; + + System.out.println("checkSSCDFromTSL: " + checkSSCDFromTSL); + System.out.println("checkQCPPlus: " + checkQCPPlus); + System.out.println("checkQcEuSSCD: " + checkQcEuSSCD); + } + else { + checkSSCD = true; + sscdSourceTSL = true; + } + + if (!checkQCFromTSL) { + + boolean checkQCP = CertificateUtils.checkQCP((X509Certificate)chain.get(0)); + boolean checkQcEuCompliance = CertificateUtils.checkQcEuCompliance((X509Certificate)chain.get(0)); + + if (checkQCP) + checkQC = true; + if (checkQcEuCompliance) + checkQC = true; + + qcSourceTSL = false; + + System.out.println("checkQCFromTSL: " + checkQCFromTSL); + System.out.println("checkQCP: " + checkQCP); + System.out.println("checkQcEuCompliance: " + checkQcEuCompliance); + } + else { + checkQC = true; + qcSourceTSL = true; + } + - responseBuilder.addResult(result, trustProfile, checkQCFromTSL, checkSSCDFromTSL); + responseBuilder.addResult(result, trustProfile, checkQC, qcSourceTSL, checkSSCD, sscdSourceTSL); } } else { int i; @@ -207,12 +257,64 @@ public class CMSSignatureVerificationInvoker { try { result = (CMSSignatureVerificationResult) results.get(signatories[i] - 1); + boolean sscdSourceTSL = false; + boolean qcSourceTSL = false; + + boolean checkQC = false; + boolean checkSSCD = false; + + List chain = result.getCertificateValidationResult().getCertificateChain(); // check QC and SSCD via TSL (if enabled) - boolean checkQCFromTSL = checkQC(trustProfile.isTSLEnabled(), result.getCertificateValidationResult().getCertificateChain()); - boolean checkSSCDFromTSL = checkSSCD(trustProfile.isTSLEnabled(), result.getCertificateValidationResult().getCertificateChain());; + boolean checkQCFromTSL = checkQC(trustProfile.isTSLEnabled(), chain); + boolean checkSSCDFromTSL = checkSSCD(trustProfile.isTSLEnabled(), chain); + + if (!checkSSCDFromTSL) { + + boolean checkQCPPlus = CertificateUtils.checkQCPPlus((X509Certificate)chain.get(0)); + boolean checkQcEuSSCD = CertificateUtils.checkQcEuSSCD((X509Certificate)chain.get(0)); + + if (checkQCPPlus) + checkSSCD = true; + if (checkQcEuSSCD) + checkSSCD = true; + + sscdSourceTSL = false; + + System.out.println("checkSSCDFromTSL: " + checkSSCDFromTSL); + System.out.println("checkQCPPlus: " + checkQCPPlus); + System.out.println("checkQcEuSSCD: " + checkQcEuSSCD); + } + else { + checkSSCD = true; + sscdSourceTSL = true; + } + + if (!checkQCFromTSL) { + + boolean checkQCP = CertificateUtils.checkQCP((X509Certificate)chain.get(0)); + boolean checkQcEuCompliance = CertificateUtils.checkQcEuCompliance((X509Certificate)chain.get(0)); + + if (checkQCP) + checkQC = true; + if (checkQcEuCompliance) + checkQC = true; + + qcSourceTSL = false; + + System.out.println("checkQCFromTSL: " + checkQCFromTSL); + System.out.println("checkQCP: " + checkQCP); + System.out.println("checkQcEuCompliance: " + checkQcEuCompliance); - - responseBuilder.addResult(result, trustProfile, checkQCFromTSL, checkSSCDFromTSL); + } + else { + checkQC = true; + qcSourceTSL = true; + } + + + + + responseBuilder.addResult(result, trustProfile, checkQC, qcSourceTSL, checkSSCD, sscdSourceTSL); } catch (IndexOutOfBoundsException e) { throw new MOAApplicationException( "2249", diff --git a/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/VerifyCMSSignatureResponseBuilder.java b/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/VerifyCMSSignatureResponseBuilder.java index 605716d5b..f44cce62a 100644 --- a/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/VerifyCMSSignatureResponseBuilder.java +++ b/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/VerifyCMSSignatureResponseBuilder.java @@ -73,13 +73,14 @@ public class VerifyCMSSignatureResponseBuilder { * @param trustprofile The actual trustprofile * @param checkQCFromTSL true, if the TSL check verifies the * certificate as qualified, otherwise false. - * @param checkSSCDFromTSL true, if the TSL check verifies the + * @param checkSSCD true, if the TSL check verifies the * signature based on a SSDC, otherwise false. + * @param sscdSourceTSL true, if the SSCD information comes from the TSL, + * otherwise false. * @throws MOAException */ - public void addResult(CMSSignatureVerificationResult result, TrustProfile trustProfile, boolean checkQCFromTSL, boolean checkSSCDFromTSL) + public void addResult(CMSSignatureVerificationResult result, TrustProfile trustProfile, boolean checkQC, boolean qcSourceTSL, boolean checkSSCD, boolean sscdSourceTSL) throws MOAException { - CertificateValidationResult certResult = result.getCertificateValidationResult(); @@ -92,27 +93,18 @@ public class VerifyCMSSignatureResponseBuilder { CheckResult signatureCheck; CheckResult certificateCheck; - boolean qualifiedCertificate = false; - - // verify qualified certificate checks (certificate or TSL) - if (trustProfile.isTSLEnabled()) { - // take TSL result - qualifiedCertificate = checkQCFromTSL; - } - else { - // take result from certificate - qualifiedCertificate = certResult.isQualifiedCertificate(); - } + boolean qualifiedCertificate = checkQC; // add SignerInfo element signerInfo = factory.createSignerInfo( (X509Certificate) certResult.getCertificateChain().get(0), qualifiedCertificate, + qcSourceTSL, certResult.isPublicAuthorityCertificate(), certResult.getPublicAuthorityID(), - checkSSCDFromTSL); - + checkSSCD, + sscdSourceTSL); // add SignatureCheck element signatureCheck = factory.createCheckResult(signatureCheckCode, null); @@ -120,9 +112,6 @@ public class VerifyCMSSignatureResponseBuilder { // add CertificateCheck element certificateCheck = factory.createCheckResult(certificateCheckCode, null); - - - // build the response element responseElement = factory.createVerifyCMSSignatureResponseElement( diff --git a/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/VerifyXMLSignatureResponseBuilder.java b/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/VerifyXMLSignatureResponseBuilder.java index 755ca82b6..4fdb1eeb7 100644 --- a/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/VerifyXMLSignatureResponseBuilder.java +++ b/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/VerifyXMLSignatureResponseBuilder.java @@ -125,10 +125,12 @@ public class VerifyXMLSignatureResponseBuilder { * @param transformsSignatureManifestCheck The overall result for the signature * manifest check. * @param certificateCheck The overall result for the certificate check. - * @param checkQCFromTSL true, if the TSL check verifies the - * certificate as qualified, otherwise false. - * @param checkSSCDFromTSL true, if the TSL check verifies the - * signature based on a SSDC, otherwise false. + * @param checkQC true, if the certificate is QC, otherwise false. + * @param qcSourceTSL true, if the QC information comes from the TSL, + * otherwise false. + * @param checkSSCD true, if the signature is created by an SSCD, otherwise false. + * @param sscdSourceTSL true, if the SSCD information comes from the TSL, + * otherwise false. * @throws MOAApplicationException An error occurred adding the result. */ public void setResult( @@ -136,8 +138,10 @@ public class VerifyXMLSignatureResponseBuilder { XMLSignatureVerificationProfile profile, ReferencesCheckResult transformsSignatureManifestCheck, CheckResult certificateCheck, - boolean checkQCFromTSL, - boolean checkSSCDFromTSL, + boolean checkQC, + boolean qcSourceTSL, + boolean checkSSCD, + boolean sscdSourceTSL, boolean isTSLEnabledTrustprofile) throws MOAApplicationException { @@ -152,24 +156,18 @@ public class VerifyXMLSignatureResponseBuilder { boolean qualifiedCertificate = false; - // verify qualified certificate checks (certificate or TSL) - if (isTSLEnabledTrustprofile) { - // take TSL result - qualifiedCertificate = checkQCFromTSL; - } - else { - // take result from certificate - qualifiedCertificate = certResult.isQualifiedCertificate(); - } + qualifiedCertificate = checkQC; // create the SignerInfo; signerInfo = factory.createSignerInfo( (X509Certificate) certResult.getCertificateChain().get(0), qualifiedCertificate, + qcSourceTSL, certResult.isPublicAuthorityCertificate(), certResult.getPublicAuthorityID(), - checkSSCDFromTSL); + checkSSCD, + sscdSourceTSL); // Create HashInputData Content objects referenceDataList = result.getReferenceDataList(); diff --git a/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/XMLSignatureVerificationInvoker.java b/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/XMLSignatureVerificationInvoker.java index f3ac72520..c3cc8bfe8 100644 --- a/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/XMLSignatureVerificationInvoker.java +++ b/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/XMLSignatureVerificationInvoker.java @@ -24,7 +24,10 @@ package at.gv.egovernment.moa.spss.server.invoke; +import at.gv.egovernment.moa.spss.util.CertificateUtils; + import iaik.ixsil.exceptions.URIException; + import iaik.ixsil.util.URI; import iaik.server.modules.IAIKException; import iaik.server.modules.IAIKRuntimeException; @@ -208,8 +211,11 @@ public class XMLSignatureVerificationInvoker { requestElement); } - boolean checkQCFromTSL = false; - boolean checkSSCDFromTSL = false; + boolean sscdSourceTSL = false; + boolean qcSourceTSL = false; + + boolean checkQC = false; + boolean checkSSCD = false; String tpID = profile.getCertificateValidationProfile().getTrustStoreProfile().getId(); ConfigurationProvider config = ConfigurationProvider.getInstance(); @@ -242,7 +248,6 @@ public class XMLSignatureVerificationInvoker { if (list != null) { X509Certificate[] chain = new X509Certificate[list.size()]; - Iterator it = list.iterator(); int i = 0; while(it.hasNext()) { @@ -250,8 +255,49 @@ public class XMLSignatureVerificationInvoker { i++; } - checkQCFromTSL = TSLUpdaterTimerTask.tslconnector_.checkQC(chain); - checkSSCDFromTSL = TSLUpdaterTimerTask.tslconnector_.checkSSCD(chain); + boolean checkQCFromTSL = TSLUpdaterTimerTask.tslconnector_.checkQC(chain); + boolean checkSSCDFromTSL = TSLUpdaterTimerTask.tslconnector_.checkSSCD(chain); + + if (!checkSSCDFromTSL) { + + boolean checkQCPPlus = CertificateUtils.checkQCPPlus(chain[0]); + boolean checkQcEuSSCD = CertificateUtils.checkQcEuSSCD(chain[0]); + + if (checkQCPPlus) + checkSSCD = true; + if (checkQcEuSSCD) + checkSSCD = true; + + sscdSourceTSL = false; + } + else { + checkSSCD = true; + sscdSourceTSL = true; + } + + if (!checkQCFromTSL) { + + boolean checkQCP = CertificateUtils.checkQCP(chain[0]); + boolean checkQcEuCompliance = CertificateUtils.checkQcEuCompliance(chain[0]); + + if (checkQCP) + checkQC = true; + if (checkQcEuCompliance) + checkQC = true; + + qcSourceTSL = false; + } + else { + checkQC = true; + qcSourceTSL = true; + } + +// System.out.println("chain[0]: " + chain[0]); +// +// System.out.println("checkQCFromTSL: " + checkQCFromTSL); +// System.out.println("checkSSCDFromTSL: " + checkSSCDFromTSL); +// System.out.println("checkQCPPlus: " + checkQCPPlus); +// System.out.println("checkQcEuSSCD: " + checkQcEuSSCD); } } } @@ -278,9 +324,14 @@ public class XMLSignatureVerificationInvoker { // Check if signer certificate is in trust profile's allowed signer certificates pool TrustProfile trustProfile = context.getConfiguration().getTrustProfile(request.getTrustProfileId()); CheckResult certificateCheck = validateSignerCertificate(result, trustProfile); - + +// System.out.println("checkQC: " + checkQC); +// System.out.println("qcSourceTSL: " + qcSourceTSL); +// System.out.println("checkSSCD: " + checkSSCD); +// System.out.println("sscdSourceTSL: " + sscdSourceTSL); + // build the response - responseBuilder.setResult(result, profile, signatureManifestCheck, certificateCheck, checkQCFromTSL, checkSSCDFromTSL, tp.isTSLEnabled()); + responseBuilder.setResult(result, profile, signatureManifestCheck, certificateCheck, checkQC, qcSourceTSL, checkSSCD, sscdSourceTSL, tp.isTSLEnabled()); return responseBuilder.getResponse(); } diff --git a/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/tsl/connector/TSLConnector.java b/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/tsl/connector/TSLConnector.java index 2e4af2817..49f715cb8 100644 --- a/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/tsl/connector/TSLConnector.java +++ b/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/tsl/connector/TSLConnector.java @@ -88,23 +88,20 @@ public class TSLConnector implements TSLConnectorInterface { if (Configurator.is_isInitialised() == false) new TSLEngineFatalException("The TSL Engine is not initialized!"); - - //TODO: clean hascash and TLS Download folder - String hashcachedir = System.getProperty("iaik.xml.crypto.tsl.BinaryHashCache.DIR"); - - if (hashcachedir==null) - hashcachedir = DEFAULT_HASHCACHE_DIR; - + String tsldownloaddir = Configurator.get_TSLWorkingDirectoryPath() + "TslDownload"; - File hashcachefile = new File(hashcachedir); - - - File[] filelist = hashcachefile.listFiles(); - if (filelist != null) { - for (File f : filelist) - f.delete(); - } +// String hashcachedir = System.getProperty("iaik.xml.crypto.tsl.BinaryHashCache.DIR"); +// System.out.println("hashcachedir: " + hashcachedir); +// if (hashcachedir==null) +// hashcachedir = DEFAULT_HASHCACHE_DIR; + +// File hashcachefile = new File(hashcachedir); +// File[] filelist = hashcachefile.listFiles(); +// if (filelist != null) { +// for (File f : filelist) +// f.delete(); +// } File tsldownloadfile = new File(tsldownloaddir); if (!tsldownloadfile.exists()) { diff --git a/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/tsl/timer/TSLUpdaterTimerTask.java b/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/tsl/timer/TSLUpdaterTimerTask.java index c365a1121..76be8217a 100644 --- a/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/tsl/timer/TSLUpdaterTimerTask.java +++ b/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/tsl/timer/TSLUpdaterTimerTask.java @@ -33,6 +33,7 @@ import at.gv.egovernment.moa.spss.server.iaik.pki.store.truststore.TrustStorePro import at.gv.egovernment.moa.spss.server.logging.TransactionId; import at.gv.egovernment.moa.spss.tsl.connector.TSLConnector; import at.gv.egovernment.moa.spss.util.MessageProvider; +import at.gv.egovernment.moa.util.FileUtils; import at.gv.egovernment.moa.util.StringUtils; @@ -130,7 +131,14 @@ public class TSLUpdaterTimerTask extends TimerTask { // create store updater for each TSL enabled truststore Logger.debug(new LogMsg(msg.getMessage("config.45", null))); StoreUpdater storeUpdater = new StoreUpdater(certStoreParameters, trustStoreProfiles, tid); + + // delete files in trustprofile + File ftp = new File(tp.getUri()); + File[] files = ftp.listFiles(); + for (File file : files) + file.delete(); + // convert ArrayList to X509Certificate[] X509Certificate[] addCertificates = new X509Certificate[tsl_certs.size()]; Iterator itcert = tsl_certs.iterator(); @@ -143,20 +151,18 @@ public class TSLUpdaterTimerTask extends TimerTask { i++; } - // get certificates to be removed - X509Certificate[] removeCertificates = tp.getCertficatesToBeRemoved(); - - - //Logger.debug(new LogMsg(msg.getMessage("config.44", null))); - Logger.debug(new LogMsg("Remove " + removeCertificates.length + " certificates.")); - storeUpdater.removeCertificatesFromTrustStores(removeCertificates, tid); - + // copy files from original trustAnchorsLocURI into tslworking trust profile + File src = new File(tp.getUriOrig()); + files = src.listFiles(); + for (File file : files) { + FileUtils.copyFile(file, new File(tp.getUri(), file.getName())); + } + Logger.debug(new LogMsg("Add " + addCertificates.length + " certificates.")); storeUpdater.addCertificatesToTrustStores(addCertificates, tid); + storeUpdater.addCertificatesToCertStores(addCertificates, tid); - // set the certifcates to be removed for the next TSL update - tp.setCertificatesToBeRemoved(addCertificates); } } diff --git a/spss/server/serverlib/src/main/resources/resources/properties/spss_messages_de.properties b/spss/server/serverlib/src/main/resources/resources/properties/spss_messages_de.properties index 1a6e54089..e4ee607c0 100644 --- a/spss/server/serverlib/src/main/resources/resources/properties/spss_messages_de.properties +++ b/spss/server/serverlib/src/main/resources/resources/properties/spss_messages_de.properties @@ -158,6 +158,7 @@ config.45=Create store updater config.46=Start periodical TSL update task at {0} and then every {1} milliseconds config.48=No whitelisted URIs given. config.49=Whitelisted URI: {0}. +config.50=Fehler beim Erstellen des TSL Vertrauensprofils: Das Verzeichnis ({0}) ist kein Verzeichnis. handler.00=Starte neue Transaktion: TID={0}, Service={1} handler.01=Aufruf von Adresse={0} diff --git a/spss/server/serverws/.settings/org.eclipse.wst.common.component b/spss/server/serverws/.settings/org.eclipse.wst.common.component index 1b3789e29..c325a5007 100644 --- a/spss/server/serverws/.settings/org.eclipse.wst.common.component +++ b/spss/server/serverws/.settings/org.eclipse.wst.common.component @@ -6,11 +6,9 @@ uses - - - - + + diff --git a/spss/server/serverws/pom.xml b/spss/server/serverws/pom.xml index c61d1ae2b..101b16882 100644 --- a/spss/server/serverws/pom.xml +++ b/spss/server/serverws/pom.xml @@ -68,6 +68,42 @@ iaik.prod iaik_ixsil + + iaik.prod + iaik_tsl + + + log4j + log4j + + + iaik.prod + iaik_util + + + iaik.prod + iaik_xsect + + + javax.xml.bind + jaxb-api + + + com.sun.xml.bind + jaxb-impl + + + org.xerial + sqlite-jdbc + + + iaik.prod + iaik_jsse + + + iaik.prod + iaik_util + iaik.prod diff --git a/spss/server/tools/.classpath b/spss/server/tools/.classpath index 21bdbd0bc..3922cc795 100644 --- a/spss/server/tools/.classpath +++ b/spss/server/tools/.classpath @@ -1,16 +1,14 @@ - - - - - - - - - - - - - - + + + + + + + + + + + + \ No newline at end of file diff --git a/spss/server/tools/.settings/org.eclipse.jdt.core.prefs b/spss/server/tools/.settings/org.eclipse.jdt.core.prefs index c788ee346..1cd6f082c 100644 --- a/spss/server/tools/.settings/org.eclipse.jdt.core.prefs +++ b/spss/server/tools/.settings/org.eclipse.jdt.core.prefs @@ -1,8 +1,9 @@ +#Mon Aug 05 10:52:30 CEST 2013 +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5 eclipse.preferences.version=1 org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled -org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7 -org.eclipse.jdt.core.compiler.compliance=1.7 +org.eclipse.jdt.core.compiler.source=1.5 org.eclipse.jdt.core.compiler.problem.assertIdentifier=error -org.eclipse.jdt.core.compiler.problem.enumIdentifier=error -org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning -org.eclipse.jdt.core.compiler.source=1.7 +org.eclipse.jdt.core.compiler.compliance=1.5 -- cgit v1.2.3 From 5b697c424d24a7523dccd210454d029368e34898 Mon Sep 17 00:00:00 2001 From: Klaus Stranacher Date: Wed, 21 Aug 2013 13:12:26 +0200 Subject: Update QC/SSCD check WSDL location updated --- spss/handbook/clients/api/.classpath | 82 +-- .../handbook/config/MOA-SPSS-config-1.5.2.xsd | 61 ++- spss/handbook/handbook/config/config.html | 6 +- spss/handbook/handbook/spec/MOA-SPSS-1.5.2.xsd | 104 +++- .../resources/data/deploy/tomcat/unix/moa-env.sh | 5 +- .../data/deploy/tomcat/win32/startTomcat.bat | 5 +- .../gv/egovernment/moa/spss/api/SPSSFactory.java | 4 +- .../moa/spss/api/common/SignerInfo.java | 6 +- .../moa/spss/api/impl/SPSSFactoryImpl.java | 4 +- .../moa/spss/api/impl/SignerInfoImpl.java | 10 + .../moa/spss/api/xmlbind/ResponseBuilderUtils.java | 20 +- .../xmlbind/VerifyCMSSignatureResponseBuilder.java | 4 +- .../xmlbind/VerifyXMLSignatureResponseBuilder.java | 3 +- .../server/config/ConfigurationPartsBuilder.java | 9 - .../moa/spss/server/init/SystemInitializer.java | 10 +- .../invoke/CMSSignatureVerificationInvoker.java | 209 ++------ .../invoke/VerifyCMSSignatureResponseBuilder.java | 5 +- .../invoke/VerifyXMLSignatureResponseBuilder.java | 6 +- .../invoke/XMLSignatureVerificationInvoker.java | 104 +--- .../moa/spss/tsl/connector/TSLConnector.java | 252 ++++++++++ .../moa/spss/tsl/timer/TSLUpdaterTimerTask.java | 200 ++++---- .../moa/spss/util/CertificateUtils.java | 286 +++++++++++ .../gv/egovernment/moa/spss/util/QCSSCDResult.java | 37 ++ spss/server/serverws/pom.xml | 3 +- .../serverws/resources/wsdl/MOA-SPSS-1.5.2.wsdl | 128 ----- .../serverws/resources/wsdl/MOA-SPSS-1.5.2.xsd | 551 --------------------- .../src/main/webapp/WEB-INF/server-config.wsdd | 8 +- 27 files changed, 1001 insertions(+), 1121 deletions(-) create mode 100644 spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/util/CertificateUtils.java create mode 100644 spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/util/QCSSCDResult.java delete mode 100644 spss/server/serverws/resources/wsdl/MOA-SPSS-1.5.2.wsdl delete mode 100644 spss/server/serverws/resources/wsdl/MOA-SPSS-1.5.2.xsd (limited to 'spss') diff --git a/spss/handbook/clients/api/.classpath b/spss/handbook/clients/api/.classpath index ea8736aef..53806d1e8 100644 --- a/spss/handbook/clients/api/.classpath +++ b/spss/handbook/clients/api/.classpath @@ -1,43 +1,43 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/spss/handbook/handbook/config/MOA-SPSS-config-1.5.2.xsd b/spss/handbook/handbook/config/MOA-SPSS-config-1.5.2.xsd index 669ebe53f..91d281171 100644 --- a/spss/handbook/handbook/config/MOA-SPSS-config-1.5.2.xsd +++ b/spss/handbook/handbook/config/MOA-SPSS-config-1.5.2.xsd @@ -19,20 +19,36 @@ - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -78,6 +94,7 @@ + @@ -99,6 +116,19 @@ + + + + + + + + + + + + + @@ -147,7 +177,7 @@ - + @@ -283,6 +313,7 @@ + diff --git a/spss/handbook/handbook/config/config.html b/spss/handbook/handbook/config/config.html index 96270bde1..f44bd7dc0 100644 --- a/spss/handbook/handbook/config/config.html +++ b/spss/handbook/handbook/config/config.html @@ -1071,7 +1071,10 @@ Wird der Wert auf -1 gesetzt, dann bedeutet das ein unendlich langes Intervall.

                        Das Element cfg:TSLConfiguration legt die TSL Konfiguration fest, wenn Vertrauensprofile mit TSL Unterstützung konfiguriert sind. Das Element weist folgende Kind-Elemente auf:

                            -
                          • Element cfg:UpdateSchedule: Dieses Element legt fest wann und in welchem Intervall die EU-TSL erneut eingelesen werden soll. Das Element cfg:UpdateSchedule besteht dabei aus folgenden Kind-Elementen:
                          • +
                          • Element cfg:EUTSLUrl: Dieses optionale Element legt die URL zur EU-TSL fest.
                            +
                          • + Hinweis: Wird kein cfg:EUTSLUrl Element angegeben so wird defaultmäßig https://ec.europa.eu/information_society/policy/esignature/trusted-list/tl-mp.xml als EU-TSL URL herangezogen. +
                          • Element cfg:UpdateSchedule: Dieses optionale Element legt fest wann und in welchem Intervall die EU-TSL erneut eingelesen werden soll. Das Element cfg:UpdateSchedule besteht dabei aus folgenden Kind-Elementen:
                            • Element cfg:StartTime: Legt eine Startzeit im Format hh:mm:ss fest.
                            • Element cfg:Period: Legt das Intervall (in Millisekunden) fest, in welchem die EU-TSL erneut eingelesen werden soll
                            • @@ -1085,7 +1088,6 @@ Wird der Wert auf -1 gesetzt, dann bedeutet das ein unendlich langes Intervall. Wichtig: Das angegebene Verzeichnis muss jedenfalls die Unterverzeichnis "trust" aus der Beispiel-Konfiguration beinhalten. In dessen Unterverzeichnis "eu" müssen jene vertrauenswürdigen Zertifikate angegeben werden, mit denen die EU-TSL signiert ist.
                            -

                            Wichtig: Beim Tomcat-Start muss zusätzlich noch ein so genannten Hashcache Verzeichnis angegeben werden. Dies erfolgt mit dem Parameter iaik.xml.crypto.tsl.BinaryHashCache.DIR (siehe auch Starten und Stoppen von Tomcat).

                            Hinweis: Um die TSL Überprüfung zu aktivieren muss auch (zumindest) ein Vertrauensprofil mit TSL Überprüfung konfiguriert werden (siehe Vertrauensprofil)

                            diff --git a/spss/handbook/handbook/spec/MOA-SPSS-1.5.2.xsd b/spss/handbook/handbook/spec/MOA-SPSS-1.5.2.xsd index 137ad6deb..144918778 100644 --- a/spss/handbook/handbook/spec/MOA-SPSS-1.5.2.xsd +++ b/spss/handbook/handbook/spec/MOA-SPSS-1.5.2.xsd @@ -1,15 +1,56 @@ - - - + + + + + + + + + + + + + Ermöglichung der Stapelsignatur durch wiederholte Angabe dieses Elements + + + + + + + + + + + + + + + + + + + + + + Kardinalität 1..oo erlaubt die Antwort auf eine Stapelsignatur-Anfrage + + + + Resultat, falls die Signaturerstellung erfolgreich war + + + + + @@ -106,7 +147,7 @@ - only ds:X509Data and RetrievalMethod is supported; QualifiedCertificate is included as X509Data/any;publicAuthority is included as X509Data/any + only ds:X509Data and RetrievalMethod is supported; QualifiedCertificate is included as X509Data/any;publicAuthority is included as X509Data/any; SecureSignatureCreationDevice is included as X509Data/any, IssuingCountry is included as X509Data/any @@ -157,7 +198,7 @@ - only ds:X509Data and ds:RetrievalMethod is supported; QualifiedCertificate is included as X509Data/any; PublicAuthority is included as X509Data/any + only ds:X509Data and ds:RetrievalMethod is supported; QualifiedCertificate is included as X509Data/any; PublicAuthority is included as X509Data/any; SecureSignatureCreationDevice is included as X509Data/any, IssuingCountry is included as X509Data/any @@ -228,6 +269,25 @@ + + + + + + + + + + + + + + + + + + + @@ -246,6 +306,12 @@ + + + + + + @@ -388,7 +454,31 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/spss/server/serverlib/resources/data/deploy/tomcat/unix/moa-env.sh b/spss/server/serverlib/resources/data/deploy/tomcat/unix/moa-env.sh index 6d5be35c0..f114a40f8 100644 --- a/spss/server/serverlib/resources/data/deploy/tomcat/unix/moa-env.sh +++ b/spss/server/serverlib/resources/data/deploy/tomcat/unix/moa-env.sh @@ -3,14 +3,11 @@ MOA_START=`pwd` CONFIG_OPT=-Dmoa.spss.server.configuration=$MOA_START/conf/moa-spss/spss.config.xml LOGGING_OPT=-Dlog4j.configuration=file:$MOA_START/conf/moa-spss/log4j.properties -# Hashcache Parameter für TSL Unterstuetzung bei MOA-SP -#PARAM_HASHCACHE=-Diaik.xml.crypto.tsl.BinaryHashCache.DIR=$MOA_START/conf/moa-spss/hashcache/ - # NODE_ID_OPT=-Dmoa.node-id=node1 # TRUST_STORE_OPT=-Djavax.net.ssl.trustStore=truststore.jks # TRUST_STORE_PASS_OPT=-Djavax.net.ssl.trustStorePassword=changeit # TRUST_STORE_TYPE_OPT=-Djavax.net.ssl.trustStoreType=jks -export CATALINA_OPTS="$CONFIG_OPT $LOGGING_OPT $NODE_ID_OPT $PARAM_HASHCACHE $TRUST_STORE_OPT $TRUST_STORE_PASS_OPT $TRUST_STORE_TYPE_OPT" +export CATALINA_OPTS="$CONFIG_OPT $LOGGING_OPT $NODE_ID_OPT $TRUST_STORE_OPT $TRUST_STORE_PASS_OPT $TRUST_STORE_TYPE_OPT" echo CATALINA_OPTS=$CATALINA_OPTS diff --git a/spss/server/serverlib/resources/data/deploy/tomcat/win32/startTomcat.bat b/spss/server/serverlib/resources/data/deploy/tomcat/win32/startTomcat.bat index 729bddbf3..de36fd5c4 100644 --- a/spss/server/serverlib/resources/data/deploy/tomcat/win32/startTomcat.bat +++ b/spss/server/serverlib/resources/data/deploy/tomcat/win32/startTomcat.bat @@ -15,10 +15,7 @@ set PARAM_SPSSCONFIG=-Dmoa.spss.server.configuration=%MOA_SPSS_CFG_HOME%\spss.co set PARAM_LOGGING=-Dlog4j.configuration=file:%MOA_SPSS_CFG_HOME%\log4j.properties set PARAM_NODEID=-Dmoa.node-id=Node1 -rem Hashcache Parameter für TSL Unterstuetzung bei MOA-SP -rem set PARAM_HASHCACHE=-Diaik.xml.crypto.tsl.BinaryHashCache.DIR=%MOA_SPSS_CFG_HOME%\hashcache\ - -set PARAMS_MOA=%PARAM_SPSSCONFIG% %PARAM_LOGGING% %PARAM_NODEID% %PARAM_HASHCACHE% +set PARAMS_MOA=%PARAM_SPSSCONFIG% %PARAM_LOGGING% %PARAM_NODEID% rem set PARAM_TRUST_STORE=-Djavax.net.ssl.trustStore=truststore.jks rem set PARAM_TRUST_STORE_PASS=-Djavax.net.ssl.trustStorePassword=changeit diff --git a/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/api/SPSSFactory.java b/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/api/SPSSFactory.java index 80f996b36..b5cc96a04 100644 --- a/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/api/SPSSFactory.java +++ b/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/api/SPSSFactory.java @@ -1101,6 +1101,7 @@ public abstract class SPSSFactory { * signature based on a SSDC, otherwise false. * @param sscdSourceTSL true, if the SSCD information comes from the TSL, * otherwise false. + * @param issuerCountryCode contains the signer certificate issuer country code. * @return The SignerInfo containing the above data. * * @pre signerCertSubjectName != null @@ -1114,7 +1115,8 @@ public abstract class SPSSFactory { boolean publicAuthority, String publicAuthorityID, boolean sscd, - boolean sscdSourceTSL); + boolean sscdSourceTSL, + String issuerCountryCode); /** * Create a new X509IssuerSerial object. diff --git a/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/api/common/SignerInfo.java b/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/api/common/SignerInfo.java index 337f775bf..777365ad3 100644 --- a/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/api/common/SignerInfo.java +++ b/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/api/common/SignerInfo.java @@ -68,7 +68,11 @@ public interface SignerInfo { */ public String getQCSource(); - + /** + * Returns the signer certificate issuer country code + * @return + */ + public String getIssuerCountryCode(); /** * Checks, whether the certificate contained in this object is a * public authority certificate. diff --git a/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/api/impl/SPSSFactoryImpl.java b/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/api/impl/SPSSFactoryImpl.java index 74f65cb70..8e3bb7636 100644 --- a/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/api/impl/SPSSFactoryImpl.java +++ b/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/api/impl/SPSSFactoryImpl.java @@ -626,7 +626,8 @@ public class SPSSFactoryImpl extends SPSSFactory { boolean publicAuthority, String publicAuthorityID, boolean sscd, - boolean sscdSourceTSL) { + boolean sscdSourceTSL, + String issuerCountryCode) { SignerInfoImpl signerInfo = new SignerInfoImpl(); signerInfo.setSignerCertificate(signerCertificate); signerInfo.setQualifiedCertificate(qualifiedCertificate); @@ -635,6 +636,7 @@ public class SPSSFactoryImpl extends SPSSFactory { signerInfo.setPublicAuhtorityID(publicAuthorityID); signerInfo.setSSCD(sscd); signerInfo.setSSCDSourceTSL(sscdSourceTSL); + signerInfo.setIssuerCountryCode(issuerCountryCode); return signerInfo; } diff --git a/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/api/impl/SignerInfoImpl.java b/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/api/impl/SignerInfoImpl.java index 5d26397c5..7a108e8a4 100644 --- a/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/api/impl/SignerInfoImpl.java +++ b/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/api/impl/SignerInfoImpl.java @@ -56,6 +56,9 @@ public class SignerInfoImpl implements SignerInfo { /** Determines, if the QC check bases upon on TSL */ private boolean qcSourceTSL; + /** The certificate issuer country code */ + private String issuerCountryCode; + /** * Sets the signer certificate. * @@ -118,6 +121,13 @@ public class SignerInfoImpl implements SignerInfo { return "Certificate"; } + public void setIssuerCountryCode(String issuerCountryCode) { + this.issuerCountryCode = issuerCountryCode; + } + public String getIssuerCountryCode() { + return issuerCountryCode; + } + /** * Sets, whether the certificate contained in this object is an * e-government certificate or not. diff --git a/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/api/xmlbind/ResponseBuilderUtils.java b/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/api/xmlbind/ResponseBuilderUtils.java index 505303bc1..2e2afaf7c 100644 --- a/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/api/xmlbind/ResponseBuilderUtils.java +++ b/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/api/xmlbind/ResponseBuilderUtils.java @@ -121,7 +121,8 @@ class ResponseBuilderUtils { boolean isPublicAuthority, String publicAuthorityID, boolean isSSCD, - String sscdSource) + String sscdSource, + String issuerCountryCode) throws MOAApplicationException { Element signerInfoElem = response.createElementNS(MOA_NS_URI, "SignerInfo"); @@ -147,6 +148,12 @@ class ResponseBuilderUtils { isSSCD ? response.createElementNS(MOA_NS_URI, "SecureSignatureCreationDevice") : null; + Element issuerCountryCodeElem = null; + if (issuerCountryCode != null) { + issuerCountryCodeElem = response.createElementNS(MOA_NS_URI, "IssuerCountryCode"); + issuerCountryCodeElem.setTextContent(issuerCountryCode); + } + Element publicAuthorityElem = isPublicAuthority ? response.createElementNS(MOA_NS_URI, "PublicAuthority") @@ -184,8 +191,10 @@ class ResponseBuilderUtils { x509DataElem.appendChild(x509IssuerSerialElem); x509DataElem.appendChild(x509CertificateElem); if (isQualified) { - 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); @@ -195,9 +204,12 @@ class ResponseBuilderUtils { } } if (isSSCD) { - sscdElem.setAttributeNS(MOA_NS_URI, "Source", sscdSource); + sscdElem.setAttributeNS(MOA_NS_URI, "Source", sscdSource); x509DataElem.appendChild(sscdElem); } + if (issuerCountryCodeElem != null) + x509DataElem.appendChild(issuerCountryCodeElem); + signerInfoElem.appendChild(x509DataElem); root.appendChild(signerInfoElem); } diff --git a/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/api/xmlbind/VerifyCMSSignatureResponseBuilder.java b/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/api/xmlbind/VerifyCMSSignatureResponseBuilder.java index 238875351..b11560b28 100644 --- a/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/api/xmlbind/VerifyCMSSignatureResponseBuilder.java +++ b/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/api/xmlbind/VerifyCMSSignatureResponseBuilder.java @@ -99,7 +99,6 @@ public class VerifyCMSSignatureResponseBuilder { CheckResult signatureCheck = responseElement.getSignatureCheck(); CheckResult certCheck = responseElement.getCertificateCheck(); - //TODO ResponseBuilderUtils.addSignerInfo( responseDoc, responseElem, @@ -109,7 +108,8 @@ public class VerifyCMSSignatureResponseBuilder { signerInfo.isPublicAuthority(), signerInfo.getPublicAuhtorityID(), signerInfo.isSSCD(), - signerInfo.getSSCDSource()); + signerInfo.getSSCDSource(), + signerInfo.getIssuerCountryCode()); ResponseBuilderUtils.addCodeInfoElement( responseDoc, diff --git a/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/api/xmlbind/VerifyXMLSignatureResponseBuilder.java b/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/api/xmlbind/VerifyXMLSignatureResponseBuilder.java index 8673fba1c..dd4e13ad9 100644 --- a/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/api/xmlbind/VerifyXMLSignatureResponseBuilder.java +++ b/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/api/xmlbind/VerifyXMLSignatureResponseBuilder.java @@ -100,7 +100,8 @@ public class VerifyXMLSignatureResponseBuilder { response.getSignerInfo().isPublicAuthority(), response.getSignerInfo().getPublicAuhtorityID(), response.getSignerInfo().isSSCD(), - response.getSignerInfo().getSSCDSource()); + response.getSignerInfo().getSSCDSource(), + response.getSignerInfo().getIssuerCountryCode()); // add HashInputData elements responseData = response.getHashInputDatas(); diff --git a/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/server/config/ConfigurationPartsBuilder.java b/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/server/config/ConfigurationPartsBuilder.java index d2ee75116..0908d88c9 100644 --- a/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/server/config/ConfigurationPartsBuilder.java +++ b/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/server/config/ConfigurationPartsBuilder.java @@ -1225,7 +1225,6 @@ public class ConfigurationPartsBuilder { tp.mkdir(); if (!tp.isDirectory()) { error("config.50", new Object[] { tp.getPath() }); - // TODO? } File tpid = new File(tp, id); @@ -1233,11 +1232,8 @@ public class ConfigurationPartsBuilder { tpid.mkdir(); if (!tpid.isDirectory()) { error("config.50", new Object[] { tpid.getPath() }); - // TODO? } - - //System.out.println("tps: " + tpid.getAbsolutePath()); // create profile profile = new TrustProfile(id, tpid.getAbsolutePath(), signerCertsLocStr, tslEnabled, countries); @@ -1257,10 +1253,6 @@ public class ConfigurationPartsBuilder { FileUtils.copyFile(file, new File(tpid, file.getName())); } -// System.out.println("ID: " + id); -// System.out.println("Str: " + trustAnchorsLocStr); -// System.out.println("URI: " + trustAnchorsLocURI.toString()); -// System.out.println("tslWorkingDir: " + tslWorkingDir); } else { @@ -1698,7 +1690,6 @@ public class ConfigurationPartsBuilder { map.put(x509IssuerName, interval); } - //System.out.println("Name: " + x509IssuerName + " - Interval: " + interval); } return map; diff --git a/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/server/init/SystemInitializer.java b/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/server/init/SystemInitializer.java index 3640dc23f..12d8b0126 100644 --- a/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/server/init/SystemInitializer.java +++ b/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/server/init/SystemInitializer.java @@ -119,7 +119,7 @@ public class SystemInitializer { try { ConfigurationProvider config = ConfigurationProvider.getInstance(); ConfigurationData configData = new IaikConfigurator().configure(config); - + //initialize TSL module TSLConfiguration tslconfig = config.getTSLConfiguration(); @@ -131,13 +131,11 @@ public class SystemInitializer { } -// System.out.println("Hashcache 1: " + BinaryHashCache.DIR); //start TSL Update TSLUpdaterTimerTask.tslconnector_ = tslconnector; TSLUpdaterTimerTask.update(); -// System.out.println("Hashcache 2: " + BinaryHashCache.DIR); //initialize TSL Update Task initTSLUpdateTask(tslconfig); @@ -156,13 +154,13 @@ public class SystemInitializer { Logger.fatal(new LogMsg(msg.getMessage("init.00", null)), e); } catch (TrustStoreException e) { Logger.fatal(new LogMsg(msg.getMessage("init.00", null)), e); - } catch (CertificateException e) { - Logger.fatal(new LogMsg(msg.getMessage("init.00", null)), e); } catch (FileNotFoundException e) { Logger.fatal(new LogMsg(msg.getMessage("init.00", null)), e); } catch (IOException e) { Logger.fatal(new LogMsg(msg.getMessage("init.00", null)), e); - } + } catch (CertificateException e) { + Logger.fatal(new LogMsg(msg.getMessage("init.00", null)), e); + } // set IXSIL debug output IXSILInit.setPrintDebugLog( diff --git a/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/CMSSignatureVerificationInvoker.java b/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/CMSSignatureVerificationInvoker.java index 6aa34573e..7a4103957 100644 --- a/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/CMSSignatureVerificationInvoker.java +++ b/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/CMSSignatureVerificationInvoker.java @@ -60,6 +60,7 @@ import at.gv.egovernment.moa.spss.server.transaction.TransactionContextManager; import at.gv.egovernment.moa.spss.tsl.timer.TSLUpdaterTimerTask; import at.gv.egovernment.moa.spss.util.CertificateUtils; import at.gv.egovernment.moa.spss.util.MessageProvider; +import at.gv.egovernment.moa.spss.util.QCSSCDResult; /** * A class providing an interface to the @@ -185,6 +186,8 @@ public class CMSSignatureVerificationInvoker { } } + QCSSCDResult qcsscdresult = new QCSSCDResult(); + // build the response: for each signatory add the result to the response signatories = request.getSignatories(); if (signatories == VerifyCMSSignatureRequest.ALL_SIGNATORIES) { @@ -192,61 +195,28 @@ public class CMSSignatureVerificationInvoker { for (resultIter = results.iterator(); resultIter.hasNext();) { result = (CMSSignatureVerificationResult) resultIter.next(); - boolean sscdSourceTSL = false; - boolean qcSourceTSL = false; - - boolean checkQC = false; - boolean checkSSCD = false; - - List chain = result.getCertificateValidationResult().getCertificateChain(); - // check QC and SSCD via TSL (if enabled) - boolean checkQCFromTSL = checkQC(trustProfile.isTSLEnabled(), chain); - boolean checkSSCDFromTSL = checkSSCD(trustProfile.isTSLEnabled(), chain); - - if (!checkSSCDFromTSL) { - - boolean checkQCPPlus = CertificateUtils.checkQCPPlus((X509Certificate)chain.get(0)); - boolean checkQcEuSSCD = CertificateUtils.checkQcEuSSCD((X509Certificate)chain.get(0)); - - if (checkQCPPlus) - checkSSCD = true; - if (checkQcEuSSCD) - checkSSCD = true; - - sscdSourceTSL = false; - - System.out.println("checkSSCDFromTSL: " + checkSSCDFromTSL); - System.out.println("checkQCPPlus: " + checkQCPPlus); - System.out.println("checkQcEuSSCD: " + checkQcEuSSCD); - } - else { - checkSSCD = true; - sscdSourceTSL = true; - } - - if (!checkQCFromTSL) { - - boolean checkQCP = CertificateUtils.checkQCP((X509Certificate)chain.get(0)); - boolean checkQcEuCompliance = CertificateUtils.checkQcEuCompliance((X509Certificate)chain.get(0)); - - if (checkQCP) - checkQC = true; - if (checkQcEuCompliance) - checkQC = true; - - qcSourceTSL = false; - - System.out.println("checkQCFromTSL: " + checkQCFromTSL); - System.out.println("checkQCP: " + checkQCP); - System.out.println("checkQcEuCompliance: " + checkQcEuCompliance); - } - else { - checkQC = true; - qcSourceTSL = true; + String issuerCountryCode = null; + // QC/SSCD check + List list = result.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, trustProfile.isTSLEnabled()); + + // get signer certificate issuer country code + issuerCountryCode = CertificateUtils.getIssuerCountry((X509Certificate)list.get(0)); + } - - responseBuilder.addResult(result, trustProfile, checkQC, qcSourceTSL, checkSSCD, sscdSourceTSL); + responseBuilder.addResult(result, trustProfile, qcsscdresult.isQC(), qcsscdresult.isQCSourceTSL(), qcsscdresult.isSSCD(), qcsscdresult.isSSCDSourceTSL(), issuerCountryCode); } } else { int i; @@ -257,64 +227,27 @@ public class CMSSignatureVerificationInvoker { try { result = (CMSSignatureVerificationResult) results.get(signatories[i] - 1); - boolean sscdSourceTSL = false; - boolean qcSourceTSL = false; - boolean checkQC = false; - boolean checkSSCD = false; - - List chain = result.getCertificateValidationResult().getCertificateChain(); - // check QC and SSCD via TSL (if enabled) - boolean checkQCFromTSL = checkQC(trustProfile.isTSLEnabled(), chain); - boolean checkSSCDFromTSL = checkSSCD(trustProfile.isTSLEnabled(), chain); - - if (!checkSSCDFromTSL) { - - boolean checkQCPPlus = CertificateUtils.checkQCPPlus((X509Certificate)chain.get(0)); - boolean checkQcEuSSCD = CertificateUtils.checkQcEuSSCD((X509Certificate)chain.get(0)); - - if (checkQCPPlus) - checkSSCD = true; - if (checkQcEuSSCD) - checkSSCD = true; - - sscdSourceTSL = false; - - System.out.println("checkSSCDFromTSL: " + checkSSCDFromTSL); - System.out.println("checkQCPPlus: " + checkQCPPlus); - System.out.println("checkQcEuSSCD: " + checkQcEuSSCD); - } - else { - checkSSCD = true; - sscdSourceTSL = true; - } - - if (!checkQCFromTSL) { - - boolean checkQCP = CertificateUtils.checkQCP((X509Certificate)chain.get(0)); - boolean checkQcEuCompliance = CertificateUtils.checkQcEuCompliance((X509Certificate)chain.get(0)); - - if (checkQCP) - checkQC = true; - if (checkQcEuCompliance) - checkQC = true; - - qcSourceTSL = false; - - System.out.println("checkQCFromTSL: " + checkQCFromTSL); - System.out.println("checkQCP: " + checkQCP); - System.out.println("checkQcEuCompliance: " + checkQcEuCompliance); - - } - else { - checkQC = true; - qcSourceTSL = true; + String issuerCountryCode = null; + // QC/SSCD check + List list = result.getCertificateValidationResult().getCertificateChain(); + if (list != null) { + X509Certificate[] chain = new X509Certificate[list.size()]; + + Iterator it = list.iterator(); + int j = 0; + while(it.hasNext()) { + chain[j] = (X509Certificate)it.next(); + j++; + } + + + qcsscdresult = CertificateUtils.checkQCSSCD(chain, trustProfile.isTSLEnabled()); + + issuerCountryCode = CertificateUtils.getIssuerCountry((X509Certificate)list.get(0)); } - - - - responseBuilder.addResult(result, trustProfile, checkQC, qcSourceTSL, checkSSCD, sscdSourceTSL); + responseBuilder.addResult(result, trustProfile, qcsscdresult.isQC(), qcsscdresult.isQCSourceTSL(), qcsscdresult.isSSCD(), qcsscdresult.isSSCDSourceTSL(), issuerCountryCode); } catch (IndexOutOfBoundsException e) { throw new MOAApplicationException( "2249", @@ -326,65 +259,7 @@ public class CMSSignatureVerificationInvoker { return responseBuilder.getResponse(); } - private boolean checkQC(boolean tslEnabledTrustProfile, List chainlist) { - boolean checkQCFromTSL = false; - try { - if (tslEnabledTrustProfile) { - if (chainlist != null) { - X509Certificate[] chain = new X509Certificate[chainlist.size()]; - - Iterator it = chainlist.iterator(); - int i = 0; - while(it.hasNext()) { - chain[i] = (X509Certificate)it.next(); - i++; - } - - checkQCFromTSL = TSLUpdaterTimerTask.tslconnector_.checkQC(chain); - //checkSSCDFromTSL = TSLUpdaterTimerTask.tslconnector_.checkSSCD(chain); - } - } - } - catch (TSLEngineDiedException e) { - MessageProvider msg = MessageProvider.getInstance(); - Logger.error(new LogMsg(msg.getMessage("tsl.01", null)), e); - } catch (TSLSearchException e) { - MessageProvider msg = MessageProvider.getInstance(); - Logger.error(new LogMsg(msg.getMessage("tsl.01", null)), e); - } - - return checkQCFromTSL; - } - - private boolean checkSSCD(boolean tslEnabledTrustProfile, List chainlist) { - boolean checkSSCDFromTSL = false; - try { - if (tslEnabledTrustProfile) { - if (chainlist != null) { - X509Certificate[] chain = new X509Certificate[chainlist.size()]; - - Iterator it = chainlist.iterator(); - int i = 0; - while(it.hasNext()) { - chain[i] = (X509Certificate)it.next(); - i++; - } - - checkSSCDFromTSL = TSLUpdaterTimerTask.tslconnector_.checkSSCD(chain); - } - } - } - catch (TSLEngineDiedException e) { - MessageProvider msg = MessageProvider.getInstance(); - Logger.error(new LogMsg(msg.getMessage("tsl.01", null)), e); - } catch (TSLSearchException e) { - MessageProvider msg = MessageProvider.getInstance(); - Logger.error(new LogMsg(msg.getMessage("tsl.01", null)), e); - } - - return checkSSCDFromTSL; - } - + /** * Get the signed content contained either in the request itself or given as a * reference to external data. diff --git a/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/VerifyCMSSignatureResponseBuilder.java b/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/VerifyCMSSignatureResponseBuilder.java index f44cce62a..1ea10cb4e 100644 --- a/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/VerifyCMSSignatureResponseBuilder.java +++ b/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/VerifyCMSSignatureResponseBuilder.java @@ -79,7 +79,7 @@ public class VerifyCMSSignatureResponseBuilder { * otherwise false. * @throws MOAException */ - public void addResult(CMSSignatureVerificationResult result, TrustProfile trustProfile, boolean checkQC, boolean qcSourceTSL, boolean checkSSCD, boolean sscdSourceTSL) + public void addResult(CMSSignatureVerificationResult result, TrustProfile trustProfile, boolean checkQC, boolean qcSourceTSL, boolean checkSSCD, boolean sscdSourceTSL, String issuerCountryCode) throws MOAException { CertificateValidationResult certResult = @@ -104,7 +104,8 @@ public class VerifyCMSSignatureResponseBuilder { certResult.isPublicAuthorityCertificate(), certResult.getPublicAuthorityID(), checkSSCD, - sscdSourceTSL); + sscdSourceTSL, + issuerCountryCode); // add SignatureCheck element signatureCheck = factory.createCheckResult(signatureCheckCode, null); diff --git a/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/VerifyXMLSignatureResponseBuilder.java b/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/VerifyXMLSignatureResponseBuilder.java index 4fdb1eeb7..193495171 100644 --- a/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/VerifyXMLSignatureResponseBuilder.java +++ b/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/VerifyXMLSignatureResponseBuilder.java @@ -142,7 +142,8 @@ public class VerifyXMLSignatureResponseBuilder { boolean qcSourceTSL, boolean checkSSCD, boolean sscdSourceTSL, - boolean isTSLEnabledTrustprofile) + boolean isTSLEnabledTrustprofile, + String issuerCountryCode) throws MOAApplicationException { CertificateValidationResult certResult = @@ -167,7 +168,8 @@ public class VerifyXMLSignatureResponseBuilder { certResult.isPublicAuthorityCertificate(), certResult.getPublicAuthorityID(), checkSSCD, - sscdSourceTSL); + sscdSourceTSL, + issuerCountryCode); // Create HashInputData Content objects referenceDataList = result.getReferenceDataList(); diff --git a/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/XMLSignatureVerificationInvoker.java b/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/XMLSignatureVerificationInvoker.java index c3cc8bfe8..c90bc534a 100644 --- a/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/XMLSignatureVerificationInvoker.java +++ b/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/XMLSignatureVerificationInvoker.java @@ -24,10 +24,7 @@ package at.gv.egovernment.moa.spss.server.invoke; -import at.gv.egovernment.moa.spss.util.CertificateUtils; - import iaik.ixsil.exceptions.URIException; - import iaik.ixsil.util.URI; import iaik.server.modules.IAIKException; import iaik.server.modules.IAIKRuntimeException; @@ -43,8 +40,6 @@ import iaik.server.modules.xmlverify.XMLSignatureVerificationModuleFactory; import iaik.server.modules.xmlverify.XMLSignatureVerificationProfile; import iaik.server.modules.xmlverify.XMLSignatureVerificationResult; import iaik.x509.X509Certificate; -import iaik.xml.crypto.tsl.ex.TSLEngineDiedException; -import iaik.xml.crypto.tsl.ex.TSLSearchException; import java.io.File; import java.io.FileInputStream; @@ -90,8 +85,9 @@ import at.gv.egovernment.moa.spss.server.logging.IaikLog; 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.tsl.timer.TSLUpdaterTimerTask; +import at.gv.egovernment.moa.spss.util.CertificateUtils; import at.gv.egovernment.moa.spss.util.MessageProvider; +import at.gv.egovernment.moa.spss.util.QCSSCDResult; import at.gv.egovernment.moa.util.CollectionUtils; import at.gv.egovernment.moa.util.Constants; @@ -211,12 +207,7 @@ public class XMLSignatureVerificationInvoker { requestElement); } - boolean sscdSourceTSL = false; - boolean qcSourceTSL = false; - - boolean checkQC = false; - boolean checkSSCD = false; - + QCSSCDResult qcsscdresult = new QCSSCDResult(); String tpID = profile.getCertificateValidationProfile().getTrustStoreProfile().getId(); ConfigurationProvider config = ConfigurationProvider.getInstance(); TrustProfile tp = config.getTrustProfile(tpID); @@ -242,73 +233,27 @@ public class XMLSignatureVerificationInvoker { MOAException moaException = IaikExceptionMapper.getInstance().map(e); throw moaException; } - try { - if (tp.isTSLEnabled()) { - List list = result.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++; - } - - boolean checkQCFromTSL = TSLUpdaterTimerTask.tslconnector_.checkQC(chain); - boolean checkSSCDFromTSL = TSLUpdaterTimerTask.tslconnector_.checkSSCD(chain); - - if (!checkSSCDFromTSL) { - - boolean checkQCPPlus = CertificateUtils.checkQCPPlus(chain[0]); - boolean checkQcEuSSCD = CertificateUtils.checkQcEuSSCD(chain[0]); - - if (checkQCPPlus) - checkSSCD = true; - if (checkQcEuSSCD) - checkSSCD = true; - - sscdSourceTSL = false; - } - else { - checkSSCD = true; - sscdSourceTSL = true; - } - - if (!checkQCFromTSL) { - - boolean checkQCP = CertificateUtils.checkQCP(chain[0]); - boolean checkQcEuCompliance = CertificateUtils.checkQcEuCompliance(chain[0]); - - if (checkQCP) - checkQC = true; - if (checkQcEuCompliance) - checkQC = true; - - qcSourceTSL = false; - } - else { - checkQC = true; - qcSourceTSL = true; - } - -// System.out.println("chain[0]: " + chain[0]); -// -// System.out.println("checkQCFromTSL: " + checkQCFromTSL); -// System.out.println("checkSSCDFromTSL: " + checkSSCDFromTSL); -// System.out.println("checkQCPPlus: " + checkQCPPlus); -// System.out.println("checkQcEuSSCD: " + checkQcEuSSCD); + + + // QC/SSCD check + List list = result.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, tp.isTSLEnabled()); } - catch (TSLEngineDiedException e) { - MessageProvider msg = MessageProvider.getInstance(); - Logger.error(new LogMsg(msg.getMessage("tsl.01", null)), e); - } catch (TSLSearchException e) { - MessageProvider msg = MessageProvider.getInstance(); - Logger.error(new LogMsg(msg.getMessage("tsl.01", null)), e); - } + + // 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( @@ -325,14 +270,9 @@ public class XMLSignatureVerificationInvoker { TrustProfile trustProfile = context.getConfiguration().getTrustProfile(request.getTrustProfileId()); CheckResult certificateCheck = validateSignerCertificate(result, trustProfile); -// System.out.println("checkQC: " + checkQC); -// System.out.println("qcSourceTSL: " + qcSourceTSL); -// System.out.println("checkSSCD: " + checkSSCD); -// System.out.println("sscdSourceTSL: " + sscdSourceTSL); // build the response - responseBuilder.setResult(result, profile, signatureManifestCheck, certificateCheck, checkQC, qcSourceTSL, checkSSCD, sscdSourceTSL, tp.isTSLEnabled()); - + responseBuilder.setResult(result, profile, signatureManifestCheck, certificateCheck, qcsscdresult.isQC(), qcsscdresult.isQCSourceTSL(), qcsscdresult.isSSCD(), qcsscdresult.isSSCDSourceTSL(), tp.isTSLEnabled(), issuerCountryCode); return responseBuilder.getResponse(); } diff --git a/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/tsl/connector/TSLConnector.java b/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/tsl/connector/TSLConnector.java index 49f715cb8..07da0a998 100644 --- a/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/tsl/connector/TSLConnector.java +++ b/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/tsl/connector/TSLConnector.java @@ -83,6 +83,15 @@ public class TSLConnector implements TSLConnectorInterface { return updateAndGetQualifiedCACertificates(dateTime, null, serviceLevelStatus); } + public void updateTSLs(Date dateTime, + String[] serviceLevelStatus) throws TSLEngineDiedException, TSLSearchException { + + if (Configurator.is_isInitialised() == false) + new TSLEngineFatalException("The TSL Engine is not initialized!"); + + updateTSLs(dateTime, null, serviceLevelStatus); + } + public ArrayList updateAndGetQualifiedCACertificates(Date dateTime, String[] countries, String[] serviceLevelStatus) throws TSLEngineDiedException, TSLSearchException { @@ -326,6 +335,249 @@ public class TSLConnector implements TSLConnectorInterface { return getQualifiedCACertificates(dateTime, countries, serviceLevelStatus); } + public void updateTSLs(Date dateTime, + String[] countries, String[] serviceLevelStatus) throws TSLEngineDiedException, TSLSearchException { + + if (Configurator.is_isInitialised() == false) + new TSLEngineFatalException("The TSL Engine is not initialized!"); + + String tsldownloaddir = Configurator.get_TSLWorkingDirectoryPath() + "TslDownload"; + +// String hashcachedir = System.getProperty("iaik.xml.crypto.tsl.BinaryHashCache.DIR"); +// System.out.println("hashcachedir: " + hashcachedir); +// if (hashcachedir==null) +// hashcachedir = DEFAULT_HASHCACHE_DIR; + +// File hashcachefile = new File(hashcachedir); +// File[] filelist = hashcachefile.listFiles(); +// if (filelist != null) { +// for (File f : filelist) +// f.delete(); +// } + + File tsldownloadfile = new File(tsldownloaddir); + if (!tsldownloadfile.exists()) { + tsldownloadfile.mkdir(); + } + File[] tslfilelist = tsldownloadfile.listFiles(); + if (tslfilelist != null) { + for (File f : tslfilelist) + f.delete(); + } + + //create sqlLite database + File dbFile = new File(Configurator.get_TempdbFile()); + try { + dbFile.delete(); + dbFile.createNewFile(); + } catch (IOException e) { + throw new TSLEngineDiedException("Could not create temporary data base file", e); + } + + //the TSL library uses the iaik.util.logging environment. + //iaik.util.logging.Log.setLogLevel(iaik.util.logging.LogLevels.WARN); + iaik.util.logging.Log.setLogLevel(iaik.util.logging.LogLevels.OFF); + + log.info("Starting EU TSL import."); + + // Certificates in Germany, Estonia, Greece, Cyprus, + // Lithuainia, Hungary, Poland, Finland, Norway use SURNAME + log.debug("### SURNAME registered as " + ObjectID.surName + " ###"); + RFC2253NameParser.register("SURNAME", ObjectID.surName); + + XSecProvider.addAsProvider(false); + + TSLEngine tslEngine; + TslSqlConnectionWrapper connection = null; + + try { + // register the Https JSSE Wrapper + TLS.register(); + log.trace("### Https JSSE Wrapper registered ###"); + + + log.debug("### Connect to Database.###"); + connection = DbTables.connectToDatabaBase(dbFile, MODE.AUTO_COMMIT_ON); + + log.trace("### Connected ###"); + + // empty the database and recreate the tables + tslEngine = new TSLEngine(dbFile, Configurator.get_TSLWorkingDirectoryPath(), + connection, true, true); + + } catch (TSLEngineFatalException e1) { + throw new TSLEngineDiedException(e1); + + } + + // H.2.2.1 Same-scheme searching + // H.2.2.2 Known scheme searching + // H.2.2.3 "Blind" (unknown) scheme searching + Number tId = null; + Countries euTerritory = Countries.EU; + TSLImportContext topLevelTslContext = new TSLEUImportFromFileContext( + euTerritory, Configurator.get_euTSLURL(), Configurator.get_TSLWorkingDirectoryPath(), + Configurator.is_sqlMultithreaded(), + Configurator.is_throwExceptions(), Configurator.is_logExceptions(), + Configurator.is_throwWarnings(), Configurator.is_logWarnings(), + Configurator.is_nullRedundancies()); + + TSLEngineEU tslengineEU; + try { + tslengineEU = tslEngine.new TSLEngineEU(); + + } catch (TSLEngineFatalException e1) { + throw new TSLEngineDiedException(e1); + } + + // establish EU TSL trust anchor + ListIterator expectedEuTslSignerCerts = + tslEngine.loadCertificatesFromResource( + Configurator.get_euTrustAnchorsPath(), topLevelTslContext); + + log.debug("Process EU TSL"); + // process the EU TSL to receive the pointers to the other TSLs + // and the trust anchors for the TSL signers + Set> pointersToMsTSLs = null; + + try { + + tId = tslengineEU.processEUTSL(topLevelTslContext, expectedEuTslSignerCerts); + log.info("Process EU TSL finished"); + + log.debug(Thread.currentThread() + " waiting for other threads ..."); + + topLevelTslContext.waitForAllOtherThreads(); + log.debug(Thread.currentThread() + + " reactivated after other threads finished ..."); + + + // get the TSLs pointed from the EU TSL + LinkedHashMap tslMap = tslengineEU + .getOtherTslMap(tId, topLevelTslContext); + + pointersToMsTSLs = tslMap.entrySet(); + + //set Errors and Warrnings + + } catch (TSLEngineFatalRuntimeException e) { + throw new TSLEngineDiedException(topLevelTslContext.dumpFatals()); + + } catch (TSLTransactionFailedRuntimeException e) { + throw new TSLEngineDiedException(topLevelTslContext.dumpTransactionFaliures()); + } + + //Backup implementation if the EU TSL includes a false signer certificate + // establish additional trust anchors for member states +// Countries[] countriesWithPotentiallyWrongCertsOnEuTsl = { +// Countries.CZ, +// Countries.LU, +// Countries.ES, +// Countries.AT, +// }; + Countries[] countriesWithPotentiallyWrongCertsOnEuTsl = {}; + + Map> + trustAnchorsWrongOnEuTsl = loadCertificatesFromResource( + Configurator.get_msTrustAnchorsPath(), tslEngine, topLevelTslContext, + countriesWithPotentiallyWrongCertsOnEuTsl); + + log.info("Starting EU member TSL import."); + + for (Entry entry : pointersToMsTSLs) { + + TSLImportContext msTslContext; + + Countries expectedTerritory = entry.getValue().getSchemeTerritory(); + try { + +// if (expectedTerritory.equals("RO")) +// System.out.println("Stop"); + + Number otpId = entry.getKey(); + LocationAndCertHash lac = entry.getValue(); + + URL uriReference = null; + try { + uriReference = new URL(lac.getUrl()); + + } catch (MalformedURLException e) { + log.warn("Could not process: " + uriReference, e); + continue; + } + + String baseURI = uriReference == null ? "" : "" + uriReference; + + msTslContext = new TSLImportFromFileContext( + expectedTerritory, uriReference, otpId, Configurator.get_TSLWorkingDirectoryPath(), + Configurator.is_sqlMultithreaded(), + Configurator.is_throwExceptions(), Configurator.is_logExceptions(), + Configurator.is_throwWarnings(), Configurator.is_logWarnings(), + Configurator.is_nullRedundancies(), baseURI, trustAnchorsWrongOnEuTsl, + topLevelTslContext); + + ListIterator expectedTslSignerCerts = null; + expectedTslSignerCerts = tslEngine.getCertificates(lac, msTslContext); + + if (expectedTslSignerCerts == null) { + + // no signer certificate on the EU TSL + // ignore this msTSL and log a warning + log.warn("NO signer certificate found on EU TSL! " + + lac.getSchemeTerritory() + "TSL ignored."); + + } + else { + tslEngine.processMSTSL(topLevelTslContext, msTslContext, expectedTslSignerCerts); + } + + } catch (TSLExceptionB e) { + log.warn("Failed to process TSL. " + entry.getValue().getSchemeTerritory() + + " TSL ignored."); + log.debug("Failed to process TSL. " + entry, e); + continue; + } catch (TSLRuntimeException e) { + log.warn("Failed to process TSL. " + entry.getValue().getSchemeTerritory() + + " TSL ignored."); + log.debug("Failed to process TSL. " + entry, e); + continue; + } + } + + log.debug(Thread.currentThread() + " waiting for other threads ..."); + topLevelTslContext.waitForAllOtherThreads(); + + log.debug(_.dumpAllThreads()); + log.debug(Thread.currentThread() + " reactivated after other threads finished ..."); + + connection = null; + try { + connection = DbTables.connectToDatabaBase(dbFile, MODE.AUTO_COMMIT_ON); + tslEngine.recreateTablesInvalidatedByImport(connection); + + + //TODO: implement database copy operation! + File working_database = new File(Configurator.get_dbFile()); + working_database.delete(); + copy(dbFile, working_database); + + + } catch (TSLEngineFatalException e) { + throw new TSLEngineDiedException(e); + + } finally { + try { + connection.closeConnection(); + + } catch (TSLEngineFatalException e) { + throw new TSLEngineDiedException(e); + + } + } + + //return getQualifiedCACertificates(dateTime, countries, serviceLevelStatus); + } + public ArrayList getQualifiedCACertificates(Date dateTime, String[] serviceLevelStatus) throws TSLEngineDiedException, TSLSearchException { diff --git a/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/tsl/timer/TSLUpdaterTimerTask.java b/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/tsl/timer/TSLUpdaterTimerTask.java index 76be8217a..0cb18a08e 100644 --- a/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/tsl/timer/TSLUpdaterTimerTask.java +++ b/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/tsl/timer/TSLUpdaterTimerTask.java @@ -33,13 +33,14 @@ import at.gv.egovernment.moa.spss.server.iaik.pki.store.truststore.TrustStorePro import at.gv.egovernment.moa.spss.server.logging.TransactionId; import at.gv.egovernment.moa.spss.tsl.connector.TSLConnector; import at.gv.egovernment.moa.spss.util.MessageProvider; -import at.gv.egovernment.moa.util.FileUtils; import at.gv.egovernment.moa.util.StringUtils; public class TSLUpdaterTimerTask extends TimerTask { public static TSLConnector tslconnector_; + + public static ConfigurationData configData_ = null; @Override public void run() { @@ -49,10 +50,6 @@ public class TSLUpdaterTimerTask extends TimerTask { } catch (TSLEngineDiedException e) { MessageProvider msg = MessageProvider.getInstance(); Logger.error(new LogMsg(msg.getMessage("tsl.00", null)), e); - - // TODO wenn update nicht erfolgreich, dann soll TSL-Trustprofil nicht zur - // Verfügung stehen? - } catch (TSLSearchException e) { MessageProvider msg = MessageProvider.getInstance(); Logger.error(new LogMsg(msg.getMessage("tsl.00", null)), e); @@ -68,105 +65,138 @@ public class TSLUpdaterTimerTask extends TimerTask { } catch (TrustStoreException e) { MessageProvider msg = MessageProvider.getInstance(); Logger.error(new LogMsg(msg.getMessage("tsl.00", null)), e); - } catch (CertificateException e) { + } catch (FileNotFoundException e) { MessageProvider msg = MessageProvider.getInstance(); Logger.error(new LogMsg(msg.getMessage("tsl.00", null)), e); - } catch (FileNotFoundException e) { + } catch (IOException e) { MessageProvider msg = MessageProvider.getInstance(); Logger.error(new LogMsg(msg.getMessage("tsl.00", null)), e); - } catch (IOException e) { + } catch (CertificateException e) { MessageProvider msg = MessageProvider.getInstance(); Logger.error(new LogMsg(msg.getMessage("tsl.00", null)), e); } } - public static void update() throws TSLEngineDiedException, TSLSearchException, ConfigurationException, MOAApplicationException, CertStoreException, TrustStoreException, CertificateException, FileNotFoundException, IOException { + public static void update() throws TSLEngineDiedException, TSLSearchException, ConfigurationException, MOAApplicationException, CertStoreException, TrustStoreException, CertificateException, IOException { MessageProvider msg = MessageProvider.getInstance(); - //get TSl configuration - ConfigurationProvider config = ConfigurationProvider.getInstance(); - ConfigurationData configData = new IaikConfigurator().configure(config); - TSLConfiguration tslconfig = config.getTSLConfiguration(); - if (tslconfig != null) { - - Logger.info(new LogMsg(msg.getMessage("config.42", null))); + //TrustProfile tp = null; + TrustStoreProfile tsp = null; + StoreUpdater storeUpdater = null; + TransactionId tid = null; + + //get TSl configuration + ConfigurationProvider config = ConfigurationProvider.getInstance(); + if (configData_ == null) + configData_ = new IaikConfigurator().configure(config); - // get certstore parameters - CertStoreParameters[] certStoreParameters = configData.getPKIConfiguration().getCertStoreConfiguration().getParameters(); + TSLConfiguration tslconfig = config.getTSLConfiguration(); + if (tslconfig != null) { - // iterate over all truststores - Map mapTrustProfiles = config.getTrustProfiles(); - Iterator it = mapTrustProfiles.entrySet().iterator(); - while (it.hasNext()) { - Map.Entry pairs = (Map.Entry)it.next(); - TrustProfile tp = (TrustProfile) pairs.getValue(); - if (tp.isTSLEnabled()) { - TrustStoreProfile tsp = new TrustStoreProfileImpl(config, tp.getId()); - TrustStoreProfile[] trustStoreProfiles = new TrustStoreProfile[1]; - trustStoreProfiles[0] = tsp; - - Logger.debug(new LogMsg(msg.getMessage("config.43", new String[]{tp.getId()}))); - - TransactionId tid = new TransactionId("TSLConfigurator-" + tp.getId()); - ArrayList tsl_certs = null; - if (StringUtils.isEmpty(tp.getCountries())) { - Logger.debug(new LogMsg(msg.getMessage("config.44", null))); - - // get certificates from TSL from all countries - tsl_certs = tslconnector_.updateAndGetQualifiedCACertificates(new Date(), new String[]{"accredited","undersupervision"}); - } - else { - Logger.debug(new LogMsg(msg.getMessage("config.44", null))); - // get selected countries as array - String countries = tp.getCountries(); - String[] array = countries.split(","); - for (int i = 0; i < array.length; i++) - array[i] = array[i].trim(); - - // get certificates from TSL from given countries - tsl_certs = tslconnector_.updateAndGetQualifiedCACertificates(new Date(), array, new String[]{"accredited","undersupervision"}); - } - - // create store updater for each TSL enabled truststore - Logger.debug(new LogMsg(msg.getMessage("config.45", null))); - StoreUpdater storeUpdater = new StoreUpdater(certStoreParameters, trustStoreProfiles, tid); - - - // delete files in trustprofile - File ftp = new File(tp.getUri()); - File[] files = ftp.listFiles(); - for (File file : files) - file.delete(); + tslconnector_.updateTSLs(new Date(), new String[]{"accredited","undersupervision"}); + + Logger.info(new LogMsg(msg.getMessage("config.42", null))); + + // get certstore parameters + CertStoreParameters[] certStoreParameters = configData_.getPKIConfiguration().getCertStoreConfiguration().getParameters(); - // convert ArrayList to X509Certificate[] - X509Certificate[] addCertificates = new X509Certificate[tsl_certs.size()]; - Iterator itcert = tsl_certs.iterator(); - int i = 0; - while(itcert.hasNext()) { - File f = (File)itcert.next(); - X509Certificate cert = new X509Certificate(new FileInputStream(f)); - addCertificates[i] = cert; + // iterate over all truststores + Map mapTrustProfiles = config.getTrustProfiles(); + Iterator it = mapTrustProfiles.entrySet().iterator(); + while (it.hasNext()) { + Map.Entry pairs = (Map.Entry)it.next(); + TrustProfile tp = (TrustProfile) pairs.getValue(); + if (tp.isTSLEnabled()) { + tsp = new TrustStoreProfileImpl(config, tp.getId()); + TrustStoreProfile[] trustStoreProfiles = new TrustStoreProfile[1]; + trustStoreProfiles[0] = tsp; + + Logger.debug(new LogMsg(msg.getMessage("config.43", new String[]{tp.getId()}))); + + tid = new TransactionId("TSLConfigurator-" + tp.getId()); + ArrayList tsl_certs = null; + if (StringUtils.isEmpty(tp.getCountries())) { + Logger.debug(new LogMsg(msg.getMessage("config.44", null))); + + // get certificates from TSL from all countries + tsl_certs = tslconnector_.getQualifiedCACertificates(new Date(), new String[]{"accredited","undersupervision"}); + } + else { + Logger.debug(new LogMsg(msg.getMessage("config.44", null))); + // get selected countries as array + String countries = tp.getCountries(); + String[] array = countries.split(","); + for (int i = 0; i < array.length; i++) + array[i] = array[i].trim(); + + // get certificates from TSL from given countries + tsl_certs = tslconnector_.getQualifiedCACertificates(new Date(), array, new String[]{"accredited","undersupervision"}); + } + + // create store updater for each TSL enabled truststore + Logger.debug(new LogMsg(msg.getMessage("config.45", null))); + storeUpdater = new StoreUpdater(certStoreParameters, trustStoreProfiles, tid); + + // delete files in trustprofile + + File ftp = new File(tp.getUri()); + File[] files = ftp.listFiles(); + X509Certificate[] removeCertificates = new X509Certificate[files.length]; + int i = 0; + for (File file : files) { + FileInputStream fis = new FileInputStream(file); + removeCertificates[i] = new X509Certificate(fis); + i++; + fis.close(); + //file.delete(); + } + + // remove all certificates + storeUpdater.removeCertificatesFromTrustStores(removeCertificates, tid); + storeUpdater.removeCertificatesFromCertStores(removeCertificates, tid); + - i++; + // copy files from original trustAnchorsLocURI into tslworking trust profile + File src = new File(tp.getUriOrig()); + files = src.listFiles(); + X509Certificate[] addCertificates = new X509Certificate[files.length]; + i = 0; + for (File file : files) { + FileInputStream fis = new FileInputStream(file); + addCertificates[i] = new X509Certificate(fis); + //FileUtils.copyFile(file, new File(tp.getUri(), file.getName())); + i++; + fis.close(); + } + + // convert ArrayList to X509Certificate[] + X509Certificate[] addCertificatesTSL = new X509Certificate[tsl_certs.size()]; + Iterator itcert = tsl_certs.iterator(); + i = 0; + File f = null; + while(itcert.hasNext()) { + f = (File)itcert.next(); + FileInputStream fis = new FileInputStream(f); + X509Certificate cert = new X509Certificate(fis); + addCertificatesTSL[i] = cert; + + i++; + fis.close(); + } + + Logger.debug(new LogMsg("Add " + addCertificatesTSL.length + " certificates.")); + storeUpdater.addCertificatesToTrustStores(addCertificatesTSL, tid); + storeUpdater.addCertificatesToCertStores(addCertificatesTSL, tid); + + Logger.debug(new LogMsg("Add " + addCertificates.length + " certificates.")); + storeUpdater.addCertificatesToTrustStores(addCertificates, tid); + storeUpdater.addCertificatesToCertStores(addCertificates, tid); + + } - - - // copy files from original trustAnchorsLocURI into tslworking trust profile - File src = new File(tp.getUriOrig()); - files = src.listFiles(); - for (File file : files) { - FileUtils.copyFile(file, new File(tp.getUri(), file.getName())); - } - - Logger.debug(new LogMsg("Add " + addCertificates.length + " certificates.")); - storeUpdater.addCertificatesToTrustStores(addCertificates, tid); - storeUpdater.addCertificatesToCertStores(addCertificates, tid); - - } } - } diff --git a/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/util/CertificateUtils.java b/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/util/CertificateUtils.java new file mode 100644 index 000000000..544ea916c --- /dev/null +++ b/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/util/CertificateUtils.java @@ -0,0 +1,286 @@ +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 iaik.xml.crypto.tsl.ex.TSLEngineDiedException; +import iaik.xml.crypto.tsl.ex.TSLSearchException; + +import java.security.Principal; + +import at.gv.egovernment.moa.logging.LogMsg; +import at.gv.egovernment.moa.logging.Logger; +import at.gv.egovernment.moa.spss.tsl.timer.TSLUpdaterTimerTask; + +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, boolean isTSLenabledTrustprofile) { + + boolean qc = false; + boolean qcSourceTSL = false; + boolean sscd = false; + boolean sscdSourceTSL = false; + + try { + + if (isTSLenabledTrustprofile) { + // perform QC check via TSL + boolean checkQCFromTSL = TSLUpdaterTimerTask.tslconnector_.checkQC(chain); + if (!checkQCFromTSL) { + // if QC check via TSL returns false + // 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) { + Logger.debug("Certificate is QC (Source: Certificate)"); + qc = true; + } + + qcSourceTSL = false; + } + else { + // use TSL result + Logger.debug("Certificate is QC (Source: TSL)"); + qc = true; + qcSourceTSL = true; + } + + // perform SSCD check via TSL + boolean checkSSCDFromTSL = TSLUpdaterTimerTask.tslconnector_.checkSSCD(chain); + if (!checkSSCDFromTSL) { + // 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; + } + + sscdSourceTSL = false; + } + else { + // use TSL result + Logger.debug("Certificate is SSCD (Source: TSL)"); + sscd = true; + sscdSourceTSL = true; + } + + } + else { + // Trustprofile is not TSL enabled - use certificate extensions only + + // 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; + + qcSourceTSL = false; + + // 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; + + sscdSourceTSL = false; + } + } + catch (TSLEngineDiedException e) { + MessageProvider msg = MessageProvider.getInstance(); + Logger.error(new LogMsg(msg.getMessage("tsl.01", null)), e); + } catch (TSLSearchException e) { + MessageProvider msg = MessageProvider.getInstance(); + Logger.error(new LogMsg(msg.getMessage("tsl.01", null)), e); + } + + QCSSCDResult result = new QCSSCDResult(qc, qcSourceTSL, sscd, sscdSourceTSL); + + return result; + } + + /** + * 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; + } +} diff --git a/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/util/QCSSCDResult.java b/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/util/QCSSCDResult.java new file mode 100644 index 000000000..99af84308 --- /dev/null +++ b/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/util/QCSSCDResult.java @@ -0,0 +1,37 @@ +package at.gv.egovernment.moa.spss.util; + +public class QCSSCDResult { + + private boolean qc; + private boolean qcSourceTSL; + + private boolean sscd; + private boolean sscdSourceTSL; + + 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; + } +} diff --git a/spss/server/serverws/pom.xml b/spss/server/serverws/pom.xml index 101b16882..4372c76d0 100644 --- a/spss/server/serverws/pom.xml +++ b/spss/server/serverws/pom.xml @@ -38,7 +38,8 @@ ${basedir}/resources/wsdl resources/schemas - *.xsd + *.xsd + *.wsdl diff --git a/spss/server/serverws/resources/wsdl/MOA-SPSS-1.5.2.wsdl b/spss/server/serverws/resources/wsdl/MOA-SPSS-1.5.2.wsdl deleted file mode 100644 index 135f26f68..000000000 --- a/spss/server/serverws/resources/wsdl/MOA-SPSS-1.5.2.wsdl +++ /dev/null @@ -1,128 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/spss/server/serverws/resources/wsdl/MOA-SPSS-1.5.2.xsd b/spss/server/serverws/resources/wsdl/MOA-SPSS-1.5.2.xsd deleted file mode 100644 index 06232f189..000000000 --- a/spss/server/serverws/resources/wsdl/MOA-SPSS-1.5.2.xsd +++ /dev/null @@ -1,551 +0,0 @@ - - - - - - - - - - - - - - - - - - - - Ermöglichung der Stapelsignatur durch wiederholte Angabe dieses Elements - - - - - - - - - - - - - - - - - - - - - - Kardinalität 1..oo erlaubt die Antwort auf eine Stapelsignatur-Anfrage - - - - Resultat, falls die Signaturerstellung erfolgreich war - - - - - - - - - - - - - - - - - - - - Ermöglichung der Stapelsignatur durch wiederholte Angabe dieses Elements - - - - - - - - - - - - - - - - - - - Auswahl: Entweder explizite Angabe des Signaturorts sowie ggf. sinnvoller Supplements im Zshg. mit der Signaturumgebung, oder Verweis auf ein benanntes Profil - - - - - - - - - - - - - - - - - - Kardinalität 1..oo erlaubt die Antwort auf eine Stapelsignatur-Anfrage - - - - Resultat, falls die Signaturerstellung erfolgreich war - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - mit diesem Profil wird eine Menge von vertrauenswürdigen Wurzelzertifikaten spezifiziert - - - - - - - - - - - only ds:X509Data and RetrievalMethod is supported; QualifiedCertificate is included as X509Data/any;publicAuthority is included as X509Data/any - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Pro dsig:Reference-Element in der zu überprüfenden XML-Signatur muss hier ein ReferenceInfo-Element erscheinen. Die Reihenfolge der einzelnen ReferenceInfo Elemente entspricht jener der dsig:Reference Elemente in der XML-Signatur. - - - - - - - - - - mit diesem Profil wird eine Menge von vertrauenswürdigen Wurzelzertifikaten spezifiziert - - - - - - - - - - - only ds:X509Data and ds:RetrievalMethod is supported; QualifiedCertificate is included as X509Data/any; PublicAuthority is included as X509Data/any - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Auswahl: Entweder explizite Angabe EINER Transformationskette inklusive ggf. sinnvoller Supplements oder Verweis auf ein benanntes Profil - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Resultat, falls die Signaturerstellung gescheitert ist - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Ein oder mehrere Transformationswege können von der Applikation an MOA mitgeteilt werden. Die zu prüfende Signatur hat zumindest einem dieser Transformationswege zu entsprechen. Die Angabe kann explizit oder als Profilbezeichner erfolgen. - - - - - Profilbezeichner für einen Transformationsweg - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Die Angabe des Transformationsparameters (explizit oder als Hashwert) kann unterlassen werden, wenn die Applikation von der Unveränderlichkeit des Inhalts der in "Transformationsparamter", Attribut "URI" angegebenen URI ausgehen kann. - - - - Der Transformationsparameter explizit angegeben. - - - - - Der Hashwert des Transformationsparameters. - - - - - - - - - - - - - - - - - - - - - - Explizite Angabe des Transformationswegs - - - - - - - Alle impliziten Transformationsparameter, die zum Durchlaufen der oben angeführten Transformationskette bekannt sein müssen, müssen hier angeführt werden. Das Attribut "URI" bezeichnet den Transformationsparameter in exakt jener Weise, wie er in der zu überprüfenden Signatur gebraucht wird. - - - - - - - - - - - - - - - - diff --git a/spss/server/serverws/src/main/webapp/WEB-INF/server-config.wsdd b/spss/server/serverws/src/main/webapp/WEB-INF/server-config.wsdd index eaa50865d..86d37c8bc 100644 --- a/spss/server/serverws/src/main/webapp/WEB-INF/server-config.wsdd +++ b/spss/server/serverws/src/main/webapp/WEB-INF/server-config.wsdd @@ -1,6 +1,6 @@ http://reference.e-government.gv.at/namespace/moa/20020822# - - C:\eclipse_workspaces\MOA_Git01\moa-idspss\spss\server\serverws\resources\wsdl\MOA-SPSS-1.5.2.wsdl + webapps/moa-spss/resources/schemas/MOA-SPSS-1.5.2.wsdl - @@ -32,7 +30,7 @@ http://reference.e-government.gv.at/namespace/moa/20020822# - /resources/wsdl/MOA-SPSS-1.5.2.wsdl + webapps/moa-spss/resources/schemas/MOA-SPSS-1.5.2.wsdl -- cgit v1.2.3 From 69f2dfdf3e0b5d976df3cdece6a8ead4848d746a Mon Sep 17 00:00:00 2001 From: Klaus Stranacher Date: Wed, 21 Aug 2013 19:02:57 +0200 Subject: Update standard configuration Update truststores and certstore Update wsdl location --- .../341F53B3B17518213B1856BFAB3CEFBE948AFC0D | Bin 0 -> 1070 bytes .../3A24040C01D5C9A4980575BFF99A25E534A056CB | Bin 0 -> 1070 bytes .../08BBE8E906397158FA4BF4058BBBDB5EA11BAE82 | Bin 0 -> 979 bytes .../04CF0318BA0B54DD76E1DE143445210BDD32E299 | Bin 0 -> 865 bytes .../266FCA0265A576548425BDAE15448665EE8BB889 | Bin 0 -> 1076 bytes .../8944AF64790FA467C02424CB22523A068C3B72DB | Bin 0 -> 1073 bytes .../36B41A8B411985ED1032DBD85A154207164A9B85 | Bin 0 -> 1069 bytes spss/handbook/conf/moa-spss/sp.minimum.config.xml | 32 +- .../conf/moa-spss/sp.minimum_with_tsl.config.xml | 39 +- spss/handbook/conf/moa-spss/spss.config.xml | 32 +- spss/handbook/conf/moa-spss/ss.minimum.config.xml | 18 +- ...rust-nQual-01.20041201-20141201.SerNo01c85e.cer | Bin 0 -> 865 bytes ...Trust-nQual-04.20130708-20230701.SerNof28a2.cer | Bin 0 -> 979 bytes ...rust-nQual-01.20041201-20141201.SerNo01c85e.cer | Bin 0 -> 865 bytes ...Trust-nQual-04.20130708-20230701.SerNof28a2.cer | Bin 0 -> 979 bytes ...4.20130708-20230701.SerNo\342\200\216f28c4.cer" | Bin 0 -> 1073 bytes ...Premium-Sig-04.20130702-20230701.SerNof1d50.cer | Bin 0 -> 1070 bytes ...4.20130705-20230701.SerNo\342\200\216f24d6.cer" | Bin 0 -> 1070 bytes ...4.2010821-20230821.SerNo.\342\200\216f76bd.cer" | Bin 0 -> 1069 bytes ...Premium-Sig-04.20130702-20230701.SerNof1d50.cer | Bin 0 -> 1070 bytes ...4.20130705-20230701.SerNo\342\200\216f24d6.cer" | Bin 0 -> 1070 bytes ...mium-mobile-04.20130702-20180701.SerNof1d4f.cer | Bin 0 -> 1076 bytes .../serverws/resources/wsdl/MOA-SPSS-1.5.2.wsdl | 128 +++++ .../serverws/resources/wsdl/MOA-SPSS-1.5.2.xsd | 564 +++++++++++++++++++++ 24 files changed, 786 insertions(+), 27 deletions(-) create mode 100644 spss/handbook/conf/moa-spss/certstore/0BF5B0C4B029051D91A83EE9CCD0266A52D867A6/341F53B3B17518213B1856BFAB3CEFBE948AFC0D create mode 100644 spss/handbook/conf/moa-spss/certstore/0BF5B0C4B029051D91A83EE9CCD0266A52D867A6/3A24040C01D5C9A4980575BFF99A25E534A056CB create mode 100644 spss/handbook/conf/moa-spss/certstore/349CA7B279F4EF3C085B1E8D08AA5DE3EC586188/08BBE8E906397158FA4BF4058BBBDB5EA11BAE82 create mode 100644 spss/handbook/conf/moa-spss/certstore/3B2F8C424AA88CA305C519FDEFCF29DDB7E96AE2/04CF0318BA0B54DD76E1DE143445210BDD32E299 create mode 100644 spss/handbook/conf/moa-spss/certstore/A7437C35301BDB5349F320B62231615028F397F8/266FCA0265A576548425BDAE15448665EE8BB889 create mode 100644 spss/handbook/conf/moa-spss/certstore/B1A1ACC805C656EF257C5115509B977964591D7E/8944AF64790FA467C02424CB22523A068C3B72DB create mode 100644 spss/handbook/conf/moa-spss/certstore/B293710691F553804016FCEC3428ABA1CB11ADF7/36B41A8B411985ED1032DBD85A154207164A9B85 create mode 100644 spss/handbook/conf/moa-spss/trustProfiles/certifiedSignature+Test/A-Trust-nQual-01.20041201-20141201.SerNo01c85e.cer create mode 100644 spss/handbook/conf/moa-spss/trustProfiles/certifiedSignature+Test/A-Trust-nQual-04.20130708-20230701.SerNof28a2.cer create mode 100644 spss/handbook/conf/moa-spss/trustProfiles/certifiedSignature/A-Trust-nQual-01.20041201-20141201.SerNo01c85e.cer create mode 100644 spss/handbook/conf/moa-spss/trustProfiles/certifiedSignature/A-Trust-nQual-04.20130708-20230701.SerNof28a2.cer create mode 100644 "spss/handbook/conf/moa-spss/trustProfiles/officialSignature/a-sign-Premium-Enc-04.20130708-20230701.SerNo\342\200\216f28c4.cer" create mode 100644 spss/handbook/conf/moa-spss/trustProfiles/officialSignature/a-sign-Premium-Sig-04.20130702-20230701.SerNof1d50.cer create mode 100644 "spss/handbook/conf/moa-spss/trustProfiles/officialSignature/a-sign-Premium-Sig-04.20130705-20230701.SerNo\342\200\216f24d6.cer" create mode 100644 "spss/handbook/conf/moa-spss/trustProfiles/officialSignature/a-sign-corporate-04.2010821-20230821.SerNo.\342\200\216f76bd.cer" create mode 100644 spss/handbook/conf/moa-spss/trustProfiles/secureSignature-qual-only/a-sign-Premium-Sig-04.20130702-20230701.SerNof1d50.cer create mode 100644 "spss/handbook/conf/moa-spss/trustProfiles/secureSignature-qual-only/a-sign-Premium-Sig-04.20130705-20230701.SerNo\342\200\216f24d6.cer" create mode 100644 spss/handbook/conf/moa-spss/trustProfiles/secureSignature-qual-only/a-sign-premium-mobile-04.20130702-20180701.SerNof1d4f.cer create mode 100644 spss/server/serverws/resources/wsdl/MOA-SPSS-1.5.2.wsdl create mode 100644 spss/server/serverws/resources/wsdl/MOA-SPSS-1.5.2.xsd (limited to 'spss') diff --git a/spss/handbook/conf/moa-spss/certstore/0BF5B0C4B029051D91A83EE9CCD0266A52D867A6/341F53B3B17518213B1856BFAB3CEFBE948AFC0D b/spss/handbook/conf/moa-spss/certstore/0BF5B0C4B029051D91A83EE9CCD0266A52D867A6/341F53B3B17518213B1856BFAB3CEFBE948AFC0D new file mode 100644 index 000000000..3250c6adc Binary files /dev/null and b/spss/handbook/conf/moa-spss/certstore/0BF5B0C4B029051D91A83EE9CCD0266A52D867A6/341F53B3B17518213B1856BFAB3CEFBE948AFC0D differ diff --git a/spss/handbook/conf/moa-spss/certstore/0BF5B0C4B029051D91A83EE9CCD0266A52D867A6/3A24040C01D5C9A4980575BFF99A25E534A056CB b/spss/handbook/conf/moa-spss/certstore/0BF5B0C4B029051D91A83EE9CCD0266A52D867A6/3A24040C01D5C9A4980575BFF99A25E534A056CB new file mode 100644 index 000000000..3848a2b82 Binary files /dev/null and b/spss/handbook/conf/moa-spss/certstore/0BF5B0C4B029051D91A83EE9CCD0266A52D867A6/3A24040C01D5C9A4980575BFF99A25E534A056CB differ diff --git a/spss/handbook/conf/moa-spss/certstore/349CA7B279F4EF3C085B1E8D08AA5DE3EC586188/08BBE8E906397158FA4BF4058BBBDB5EA11BAE82 b/spss/handbook/conf/moa-spss/certstore/349CA7B279F4EF3C085B1E8D08AA5DE3EC586188/08BBE8E906397158FA4BF4058BBBDB5EA11BAE82 new file mode 100644 index 000000000..167c36411 Binary files /dev/null and b/spss/handbook/conf/moa-spss/certstore/349CA7B279F4EF3C085B1E8D08AA5DE3EC586188/08BBE8E906397158FA4BF4058BBBDB5EA11BAE82 differ diff --git a/spss/handbook/conf/moa-spss/certstore/3B2F8C424AA88CA305C519FDEFCF29DDB7E96AE2/04CF0318BA0B54DD76E1DE143445210BDD32E299 b/spss/handbook/conf/moa-spss/certstore/3B2F8C424AA88CA305C519FDEFCF29DDB7E96AE2/04CF0318BA0B54DD76E1DE143445210BDD32E299 new file mode 100644 index 000000000..8d33015f9 Binary files /dev/null and b/spss/handbook/conf/moa-spss/certstore/3B2F8C424AA88CA305C519FDEFCF29DDB7E96AE2/04CF0318BA0B54DD76E1DE143445210BDD32E299 differ diff --git a/spss/handbook/conf/moa-spss/certstore/A7437C35301BDB5349F320B62231615028F397F8/266FCA0265A576548425BDAE15448665EE8BB889 b/spss/handbook/conf/moa-spss/certstore/A7437C35301BDB5349F320B62231615028F397F8/266FCA0265A576548425BDAE15448665EE8BB889 new file mode 100644 index 000000000..3754de603 Binary files /dev/null and b/spss/handbook/conf/moa-spss/certstore/A7437C35301BDB5349F320B62231615028F397F8/266FCA0265A576548425BDAE15448665EE8BB889 differ diff --git a/spss/handbook/conf/moa-spss/certstore/B1A1ACC805C656EF257C5115509B977964591D7E/8944AF64790FA467C02424CB22523A068C3B72DB b/spss/handbook/conf/moa-spss/certstore/B1A1ACC805C656EF257C5115509B977964591D7E/8944AF64790FA467C02424CB22523A068C3B72DB new file mode 100644 index 000000000..a95605e5a Binary files /dev/null and b/spss/handbook/conf/moa-spss/certstore/B1A1ACC805C656EF257C5115509B977964591D7E/8944AF64790FA467C02424CB22523A068C3B72DB differ diff --git a/spss/handbook/conf/moa-spss/certstore/B293710691F553804016FCEC3428ABA1CB11ADF7/36B41A8B411985ED1032DBD85A154207164A9B85 b/spss/handbook/conf/moa-spss/certstore/B293710691F553804016FCEC3428ABA1CB11ADF7/36B41A8B411985ED1032DBD85A154207164A9B85 new file mode 100644 index 000000000..a365a465b Binary files /dev/null and b/spss/handbook/conf/moa-spss/certstore/B293710691F553804016FCEC3428ABA1CB11ADF7/36B41A8B411985ED1032DBD85A154207164A9B85 differ diff --git a/spss/handbook/conf/moa-spss/sp.minimum.config.xml b/spss/handbook/conf/moa-spss/sp.minimum.config.xml index af7077e79..96f0cf4d5 100644 --- a/spss/handbook/conf/moa-spss/sp.minimum.config.xml +++ b/spss/handbook/conf/moa-spss/sp.minimum.config.xml @@ -3,18 +3,26 @@ - + + + - + --> + + + @@ -65,22 +73,34 @@ CN=A-Trust-Qual-03,OU=A-Trust-Qual-03,O=A-Trust Ges. f. Sicherheitssysteme im elektr. Datenverkehr GmbH,C=AT 12775 + + CN=A-Trust-Qual-04,OU=A-Trust-Qual-04,O=A-Trust Ges. f. Sicherheitssysteme im elektr. Datenverkehr GmbH,C=AT + 12775 + CN=a-sign-Premium-Sig-01,OU=a-sign-Premium-Sig-01,O=A-Trust Ges. f. Sicherheitssysteme im elektr. Datenverkehr GmbH,C=AT 12775 - CN=a-sign-Premium-Sig-02,OU=a-sign-Premium-Sig-02,O=A-Trust Ges. f. Sicherheitssysteme im elektr. Datenverkehr GmbH,C=AT + CN=a-sign-Premium-Sig-02,OU=a-sign-Premium-Sig-02,O=A-Trust Ges. f. Sicherheitssysteme im elektr. Datenverkehr GmbH,C=AT 12775 CN=a-sign-Premium-Sig-03,OU=a-sign-Premium-Sig-03,O=A-Trust Ges. f. Sicherheitssysteme im elektr. Datenverkehr GmbH,C=AT 12775 + + CN=a-sign-Premium-Sig-04,OU=a-sign-Premium-Sig-04,O=A-Trust Ges. f. Sicherheitssysteme im elektr. Datenverkehr GmbH,C=AT + 12775 + CN=a-sign-premium-mobile-03,OU=a-sign-premium-mobile-03,O=A-Trust Ges. f. Sicherheitssysteme im elektr. Datenverkehr GmbH,C=AT 12775 + + CN=a-sign-premium-mobile-04,OU=a-sign-premium-mobile-04,O=A-Trust Ges. f. Sicherheitssysteme im elektr. Datenverkehr GmbH,C=AT + 12775 + E=a-cert@a-cert.at,CN=A-CERT GOVERNMENT,O=ARGE DATEN - Österreichische Gesellschaft für Datenschutz,L=Wien,S=Wien,C=AT 12775 diff --git a/spss/handbook/conf/moa-spss/sp.minimum_with_tsl.config.xml b/spss/handbook/conf/moa-spss/sp.minimum_with_tsl.config.xml index 255360088..79345890a 100644 --- a/spss/handbook/conf/moa-spss/sp.minimum_with_tsl.config.xml +++ b/spss/handbook/conf/moa-spss/sp.minimum_with_tsl.config.xml @@ -3,18 +3,26 @@ - + + + - + --> + + + @@ -35,7 +43,7 @@ trustProfiles/test - TestTSL + Test-TSLProfil trustProfiles/testTSL @@ -75,31 +83,42 @@ CN=A-Trust-Qual-03,OU=A-Trust-Qual-03,O=A-Trust Ges. f. Sicherheitssysteme im elektr. Datenverkehr GmbH,C=AT 12775 + + CN=A-Trust-Qual-04,OU=A-Trust-Qual-04,O=A-Trust Ges. f. Sicherheitssysteme im elektr. Datenverkehr GmbH,C=AT + 12775 + CN=a-sign-Premium-Sig-01,OU=a-sign-Premium-Sig-01,O=A-Trust Ges. f. Sicherheitssysteme im elektr. Datenverkehr GmbH,C=AT 12775 - CN=a-sign-Premium-Sig-02,OU=a-sign-Premium-Sig-02,O=A-Trust Ges. f. Sicherheitssysteme im elektr. Datenverkehr GmbH,C=AT + CN=a-sign-Premium-Sig-02,OU=a-sign-Premium-Sig-02,O=A-Trust Ges. f. Sicherheitssysteme im elektr. Datenverkehr GmbH,C=AT 12775 CN=a-sign-Premium-Sig-03,OU=a-sign-Premium-Sig-03,O=A-Trust Ges. f. Sicherheitssysteme im elektr. Datenverkehr GmbH,C=AT 12775 + + CN=a-sign-Premium-Sig-04,OU=a-sign-Premium-Sig-04,O=A-Trust Ges. f. Sicherheitssysteme im elektr. Datenverkehr GmbH,C=AT + 12775 + CN=a-sign-premium-mobile-03,OU=a-sign-premium-mobile-03,O=A-Trust Ges. f. Sicherheitssysteme im elektr. Datenverkehr GmbH,C=AT 12775 + + CN=a-sign-premium-mobile-04,OU=a-sign-premium-mobile-04,O=A-Trust Ges. f. Sicherheitssysteme im elektr. Datenverkehr GmbH,C=AT + 12775 + E=a-cert@a-cert.at,CN=A-CERT GOVERNMENT,O=ARGE DATEN - Österreichische Gesellschaft für Datenschutz,L=Wien,S=Wien,C=AT 12775 - - - + + 02:00:00 diff --git a/spss/handbook/conf/moa-spss/spss.config.xml b/spss/handbook/conf/moa-spss/spss.config.xml index f12748f68..6fbd1bcee 100644 --- a/spss/handbook/conf/moa-spss/spss.config.xml +++ b/spss/handbook/conf/moa-spss/spss.config.xml @@ -3,18 +3,26 @@ - + + + - + --> + + + @@ -170,22 +178,34 @@ CN=A-Trust-Qual-03,OU=A-Trust-Qual-03,O=A-Trust Ges. f. Sicherheitssysteme im elektr. Datenverkehr GmbH,C=AT 12775 + + CN=A-Trust-Qual-04,OU=A-Trust-Qual-04,O=A-Trust Ges. f. Sicherheitssysteme im elektr. Datenverkehr GmbH,C=AT + 12775 + CN=a-sign-Premium-Sig-01,OU=a-sign-Premium-Sig-01,O=A-Trust Ges. f. Sicherheitssysteme im elektr. Datenverkehr GmbH,C=AT 12775 - CN=a-sign-Premium-Sig-02,OU=a-sign-Premium-Sig-02,O=A-Trust Ges. f. Sicherheitssysteme im elektr. Datenverkehr GmbH,C=AT + CN=a-sign-Premium-Sig-02,OU=a-sign-Premium-Sig-02,O=A-Trust Ges. f. Sicherheitssysteme im elektr. Datenverkehr GmbH,C=AT 12775 CN=a-sign-Premium-Sig-03,OU=a-sign-Premium-Sig-03,O=A-Trust Ges. f. Sicherheitssysteme im elektr. Datenverkehr GmbH,C=AT 12775 + + CN=a-sign-Premium-Sig-04,OU=a-sign-Premium-Sig-04,O=A-Trust Ges. f. Sicherheitssysteme im elektr. Datenverkehr GmbH,C=AT + 12775 + CN=a-sign-premium-mobile-03,OU=a-sign-premium-mobile-03,O=A-Trust Ges. f. Sicherheitssysteme im elektr. Datenverkehr GmbH,C=AT 12775 + + CN=a-sign-premium-mobile-04,OU=a-sign-premium-mobile-04,O=A-Trust Ges. f. Sicherheitssysteme im elektr. Datenverkehr GmbH,C=AT + 12775 + E=a-cert@a-cert.at,CN=A-CERT GOVERNMENT,O=ARGE DATEN - Österreichische Gesellschaft für Datenschutz,L=Wien,S=Wien,C=AT 12775 diff --git a/spss/handbook/conf/moa-spss/ss.minimum.config.xml b/spss/handbook/conf/moa-spss/ss.minimum.config.xml index 4f39f8517..f85bd1c6b 100644 --- a/spss/handbook/conf/moa-spss/ss.minimum.config.xml +++ b/spss/handbook/conf/moa-spss/ss.minimum.config.xml @@ -3,18 +3,26 @@ - + + + - + --> + + + diff --git a/spss/handbook/conf/moa-spss/trustProfiles/certifiedSignature+Test/A-Trust-nQual-01.20041201-20141201.SerNo01c85e.cer b/spss/handbook/conf/moa-spss/trustProfiles/certifiedSignature+Test/A-Trust-nQual-01.20041201-20141201.SerNo01c85e.cer new file mode 100644 index 000000000..8d33015f9 Binary files /dev/null and b/spss/handbook/conf/moa-spss/trustProfiles/certifiedSignature+Test/A-Trust-nQual-01.20041201-20141201.SerNo01c85e.cer differ diff --git a/spss/handbook/conf/moa-spss/trustProfiles/certifiedSignature+Test/A-Trust-nQual-04.20130708-20230701.SerNof28a2.cer b/spss/handbook/conf/moa-spss/trustProfiles/certifiedSignature+Test/A-Trust-nQual-04.20130708-20230701.SerNof28a2.cer new file mode 100644 index 000000000..167c36411 Binary files /dev/null and b/spss/handbook/conf/moa-spss/trustProfiles/certifiedSignature+Test/A-Trust-nQual-04.20130708-20230701.SerNof28a2.cer differ diff --git a/spss/handbook/conf/moa-spss/trustProfiles/certifiedSignature/A-Trust-nQual-01.20041201-20141201.SerNo01c85e.cer b/spss/handbook/conf/moa-spss/trustProfiles/certifiedSignature/A-Trust-nQual-01.20041201-20141201.SerNo01c85e.cer new file mode 100644 index 000000000..8d33015f9 Binary files /dev/null and b/spss/handbook/conf/moa-spss/trustProfiles/certifiedSignature/A-Trust-nQual-01.20041201-20141201.SerNo01c85e.cer differ diff --git a/spss/handbook/conf/moa-spss/trustProfiles/certifiedSignature/A-Trust-nQual-04.20130708-20230701.SerNof28a2.cer b/spss/handbook/conf/moa-spss/trustProfiles/certifiedSignature/A-Trust-nQual-04.20130708-20230701.SerNof28a2.cer new file mode 100644 index 000000000..167c36411 Binary files /dev/null and b/spss/handbook/conf/moa-spss/trustProfiles/certifiedSignature/A-Trust-nQual-04.20130708-20230701.SerNof28a2.cer differ diff --git "a/spss/handbook/conf/moa-spss/trustProfiles/officialSignature/a-sign-Premium-Enc-04.20130708-20230701.SerNo\342\200\216f28c4.cer" "b/spss/handbook/conf/moa-spss/trustProfiles/officialSignature/a-sign-Premium-Enc-04.20130708-20230701.SerNo\342\200\216f28c4.cer" new file mode 100644 index 000000000..a95605e5a Binary files /dev/null and "b/spss/handbook/conf/moa-spss/trustProfiles/officialSignature/a-sign-Premium-Enc-04.20130708-20230701.SerNo\342\200\216f28c4.cer" differ diff --git a/spss/handbook/conf/moa-spss/trustProfiles/officialSignature/a-sign-Premium-Sig-04.20130702-20230701.SerNof1d50.cer b/spss/handbook/conf/moa-spss/trustProfiles/officialSignature/a-sign-Premium-Sig-04.20130702-20230701.SerNof1d50.cer new file mode 100644 index 000000000..3250c6adc Binary files /dev/null and b/spss/handbook/conf/moa-spss/trustProfiles/officialSignature/a-sign-Premium-Sig-04.20130702-20230701.SerNof1d50.cer differ diff --git "a/spss/handbook/conf/moa-spss/trustProfiles/officialSignature/a-sign-Premium-Sig-04.20130705-20230701.SerNo\342\200\216f24d6.cer" "b/spss/handbook/conf/moa-spss/trustProfiles/officialSignature/a-sign-Premium-Sig-04.20130705-20230701.SerNo\342\200\216f24d6.cer" new file mode 100644 index 000000000..3848a2b82 Binary files /dev/null and "b/spss/handbook/conf/moa-spss/trustProfiles/officialSignature/a-sign-Premium-Sig-04.20130705-20230701.SerNo\342\200\216f24d6.cer" differ diff --git "a/spss/handbook/conf/moa-spss/trustProfiles/officialSignature/a-sign-corporate-04.2010821-20230821.SerNo.\342\200\216f76bd.cer" "b/spss/handbook/conf/moa-spss/trustProfiles/officialSignature/a-sign-corporate-04.2010821-20230821.SerNo.\342\200\216f76bd.cer" new file mode 100644 index 000000000..a365a465b Binary files /dev/null and "b/spss/handbook/conf/moa-spss/trustProfiles/officialSignature/a-sign-corporate-04.2010821-20230821.SerNo.\342\200\216f76bd.cer" differ diff --git a/spss/handbook/conf/moa-spss/trustProfiles/secureSignature-qual-only/a-sign-Premium-Sig-04.20130702-20230701.SerNof1d50.cer b/spss/handbook/conf/moa-spss/trustProfiles/secureSignature-qual-only/a-sign-Premium-Sig-04.20130702-20230701.SerNof1d50.cer new file mode 100644 index 000000000..3250c6adc Binary files /dev/null and b/spss/handbook/conf/moa-spss/trustProfiles/secureSignature-qual-only/a-sign-Premium-Sig-04.20130702-20230701.SerNof1d50.cer differ diff --git "a/spss/handbook/conf/moa-spss/trustProfiles/secureSignature-qual-only/a-sign-Premium-Sig-04.20130705-20230701.SerNo\342\200\216f24d6.cer" "b/spss/handbook/conf/moa-spss/trustProfiles/secureSignature-qual-only/a-sign-Premium-Sig-04.20130705-20230701.SerNo\342\200\216f24d6.cer" new file mode 100644 index 000000000..3848a2b82 Binary files /dev/null and "b/spss/handbook/conf/moa-spss/trustProfiles/secureSignature-qual-only/a-sign-Premium-Sig-04.20130705-20230701.SerNo\342\200\216f24d6.cer" differ diff --git a/spss/handbook/conf/moa-spss/trustProfiles/secureSignature-qual-only/a-sign-premium-mobile-04.20130702-20180701.SerNof1d4f.cer b/spss/handbook/conf/moa-spss/trustProfiles/secureSignature-qual-only/a-sign-premium-mobile-04.20130702-20180701.SerNof1d4f.cer new file mode 100644 index 000000000..3754de603 Binary files /dev/null and b/spss/handbook/conf/moa-spss/trustProfiles/secureSignature-qual-only/a-sign-premium-mobile-04.20130702-20180701.SerNof1d4f.cer differ diff --git a/spss/server/serverws/resources/wsdl/MOA-SPSS-1.5.2.wsdl b/spss/server/serverws/resources/wsdl/MOA-SPSS-1.5.2.wsdl new file mode 100644 index 000000000..135f26f68 --- /dev/null +++ b/spss/server/serverws/resources/wsdl/MOA-SPSS-1.5.2.wsdl @@ -0,0 +1,128 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/spss/server/serverws/resources/wsdl/MOA-SPSS-1.5.2.xsd b/spss/server/serverws/resources/wsdl/MOA-SPSS-1.5.2.xsd new file mode 100644 index 000000000..144918778 --- /dev/null +++ b/spss/server/serverws/resources/wsdl/MOA-SPSS-1.5.2.xsd @@ -0,0 +1,564 @@ + + + + + + + + + + + + + + + + + + + + Ermöglichung der Stapelsignatur durch wiederholte Angabe dieses Elements + + + + + + + + + + + + + + + + + + + + + + Kardinalität 1..oo erlaubt die Antwort auf eine Stapelsignatur-Anfrage + + + + Resultat, falls die Signaturerstellung erfolgreich war + + + + + + + + + + + + + + + + + + + + Ermöglichung der Stapelsignatur durch wiederholte Angabe dieses Elements + + + + + + + + + + + + + + + + + + + Auswahl: Entweder explizite Angabe des Signaturorts sowie ggf. sinnvoller Supplements im Zshg. mit der Signaturumgebung, oder Verweis auf ein benanntes Profil + + + + + + + + + + + + + + + + + + Kardinalität 1..oo erlaubt die Antwort auf eine Stapelsignatur-Anfrage + + + + Resultat, falls die Signaturerstellung erfolgreich war + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + mit diesem Profil wird eine Menge von vertrauenswürdigen Wurzelzertifikaten spezifiziert + + + + + + + + + + + only ds:X509Data and RetrievalMethod is supported; QualifiedCertificate is included as X509Data/any;publicAuthority is included as X509Data/any; SecureSignatureCreationDevice is included as X509Data/any, IssuingCountry is included as X509Data/any + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Pro dsig:Reference-Element in der zu überprüfenden XML-Signatur muss hier ein ReferenceInfo-Element erscheinen. Die Reihenfolge der einzelnen ReferenceInfo Elemente entspricht jener der dsig:Reference Elemente in der XML-Signatur. + + + + + + + + + + mit diesem Profil wird eine Menge von vertrauenswürdigen Wurzelzertifikaten spezifiziert + + + + + + + + + + + only ds:X509Data and ds:RetrievalMethod is supported; QualifiedCertificate is included as X509Data/any; PublicAuthority is included as X509Data/any; SecureSignatureCreationDevice is included as X509Data/any, IssuingCountry is included as X509Data/any + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Auswahl: Entweder explizite Angabe EINER Transformationskette inklusive ggf. sinnvoller Supplements oder Verweis auf ein benanntes Profil + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Resultat, falls die Signaturerstellung gescheitert ist + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Ein oder mehrere Transformationswege können von der Applikation an MOA mitgeteilt werden. Die zu prüfende Signatur hat zumindest einem dieser Transformationswege zu entsprechen. Die Angabe kann explizit oder als Profilbezeichner erfolgen. + + + + + Profilbezeichner für einen Transformationsweg + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Die Angabe des Transformationsparameters (explizit oder als Hashwert) kann unterlassen werden, wenn die Applikation von der Unveränderlichkeit des Inhalts der in "Transformationsparamter", Attribut "URI" angegebenen URI ausgehen kann. + + + + Der Transformationsparameter explizit angegeben. + + + + + Der Hashwert des Transformationsparameters. + + + + + + + + + + + + + + + + + + + + + + Explizite Angabe des Transformationswegs + + + + + + + Alle impliziten Transformationsparameter, die zum Durchlaufen der oben angeführten Transformationskette bekannt sein müssen, müssen hier angeführt werden. Das Attribut "URI" bezeichnet den Transformationsparameter in exakt jener Weise, wie er in der zu überprüfenden Signatur gebraucht wird. + + + + + + + + + + + + + + + + -- cgit v1.2.3