aboutsummaryrefslogtreecommitdiff
path: root/spss.server/doc/moa_spss/sp-anwendung.htm
diff options
context:
space:
mode:
Diffstat (limited to 'spss.server/doc/moa_spss/sp-anwendung.htm')
-rw-r--r--spss.server/doc/moa_spss/sp-anwendung.htm1079
1 files changed, 1079 insertions, 0 deletions
diff --git a/spss.server/doc/moa_spss/sp-anwendung.htm b/spss.server/doc/moa_spss/sp-anwendung.htm
new file mode 100644
index 000000000..4adccb46d
--- /dev/null
+++ b/spss.server/doc/moa_spss/sp-anwendung.htm
@@ -0,0 +1,1079 @@
+<html>
+<head>
+ <title>MOA SP/SS-Anwendung</title>
+ <meta content="text/html; charset=ISO-8859-1" http-equiv="Content-Type" />
+ <meta content="heinz.rosenkranz@brz.gv.at" name="author"/>
+
+<style type="text/css">
+ body { font-family:"Verdana", "Arial"; font-size:10pt; color:#505060; }
+ td { font-family:"Verdana", "Arial"; font-size:10pt; color:#505060; }
+ th { font-family:"Verdana", "Arial"; font-size:10pt; font-weight:bold; color:#c0c0c0; background:#505050}
+ li { font-family:"Verdana", "Arial"; font-size:10pt; color:#505060; margin-top:3px }
+ ul { font-family:"Verdana", "Arial"; font-size:10pt; color:#505060; margin-top:3px }
+ tt { font-size:9pt; color:#505060; }
+ pre { font-size:9pt; color:#505060; }
+ #titel { font-family:"Verdana", "Arial"; font-size:18pt; color:#505060; }
+ #subtitel { font-family:"Verdana", "Arial"; font-size:12pt; font-weight:bold; color:#505060; }
+ #slogan { font-family:"Verdana", "Arial"; font-size:8pt; color:#808090; text-align:justify; width:160px }
+ #block { font-family:"Verdana", "Arial"; font-size:10pt; color:#505060; text-align:justify }
+ #klein { font-family:"Verdana", "Arial"; font-size:9pt; color:#505060; margin-top:3px }
+ a:link {color:#000090}
+ a:visited {color:#000090}
+ a:hover {color:#c03030}
+ a {text-decoration: none}
+</style>
+
+<script language="JavaScript">
+<!--
+function goWin(url) {
+ Fenster=window.open(url,"smallWin","toolbar=0,location=0,directories=0,status=0,menubar=0,resizable=yes,scrollbars=yes,width=500,height=480,top=20,screenY=0,left=20,screenX=0");
+ window.setTimeout("showWin()",300);
+}
+function showWin() { Fenster.focus(); }
+// -->
+</script>
+</head>
+
+<body bgcolor="#FFFFFF" >
+<div style="width:650px">
+
+<!-- Projekt-Logo -->
+<div style="height:42px; font-size:16pt; color:#b0b8c0; background:#003050">
+&#160;Module für Online-Applikationen
+</div>
+<div style="margin-left:8px; margin-top:3px; font-size:8pt; color:#707070; ">
+<!-- Development Center der BRZ GmbH, A-Trust und IAIK Graz -->&#160;
+</div>
+<div style="margin-top:-65px; text-align:right; font-size:8pt; font-weight:bold; color:#d04040;" >
+Projekt <span style="font-size:48pt; ">moa</span>&#160;
+</div>
+<br />
+
+<!-- First Section with Navigation -->
+<table width="650" border="0" cellpadding="10" cellspacing="0">
+<tr>
+<td width="170" valign="top">
+<div style="font-weight:bold; margin-top:12px">MOA-SP/SS</div><br />
+<div id="klein"><a href="#Webservices"><img src="../moa_images/idle.gif" border="0" width="13" height="14" />
+ <b> Beispiel-Programme </b></div>
+<div id="klein"><a href="#ClientExample"><img src="../moa_images/idle.gif" border="0" width="13" height="14" />
+ <b> Client Example</b></div>
+<div id="klein"><a href="#ServerAuth"><img src="../moa_images/idle.gif" border="0" width="13" height="14" />
+ <b> Server Auth Example</b></div>
+<div id="klein"><a href="#ClientAuth"><img src="../moa_images/idle.gif" border="0" width="13" height="14" />
+ <b> Client Auth Example</b></div>
+<div id="klein"><a href="#API"><img src="../moa_images/idle.gif" border="0" width="13" height="14" />
+ <b> API Example</b></div>
+<br />
+<div id="klein"><a href="#Beispiel-Requests"><img src="../moa_images/idle.gif" border="0" width="13" height="14" />
+ <b> Beispiel-Requests</b></div>
+
+<div id="klein"><a href="#CreateXMLSignature1"><img src="../moa_images/idle.gif" border="0" width="13" height="14" />
+ <b> CreateXMLSignature 1</b></div>
+<div id="klein"><a href="#VerifyXMLSignature1"><img src="../moa_images/idle.gif" border="0" width="13" height="14" />
+ <b> VerifyXMLSignature 1</b></div>
+<div id="klein"><a href="#CreateXMLSignature2"><img src="../moa_images/idle.gif" border="0" width="13" height="14" />
+ <b> CreateXMLSignature 2</b></div>
+<div id="klein"><a href="#VerifyXMLSignature2"><img src="../moa_images/idle.gif" border="0" width="13" height="14" />
+ <b> VerifyXMLSignature 2</b></div>
+<div id="klein"><a href="#VerifyCMSSignature"><img src="../moa_images/idle.gif" border="0" width="13" height="14" />
+ <b> VerifyCMSSignature</b></div>
+
+<br />
+<div id="klein"><a href="moa.htm"><img src="../moa_images/west.gif" border="0" width="13" height="14" />
+ <b> Zurück</b></a></div>
+<br /><br />
+</td>
+
+<td valign="top">
+<div id="titel">MOA SP/SS-Anwendung</div>
+<p id="block">
+Die Module Signaturprüfung (SP) und Serversignatur (SS) sind als plattformunabhängige Module ausgelegt, die über ein
+Webservice bzw. ein Java-API verwendet werden können.
+<br /><br />
+Dieses Handbuch beschreibt die Verwendung der SP/SS-Module anhand einfacher exemplarischer Anwendungen:
+<ul>
+<li>HTTPClientExample.java <br />Aufruf des Webservice über HTTP </li>
+<li>HTTPSClientExampleServerAuth.java <br />Aufruf des Webservice über eine TLS-Verbindung mit serverseitiger Authentisierung</li>
+<li>HTTPSClientExampleClientAuth.java <br />Aufruf des Webservice über eine TLS-Verbindung mit client- und serverseitiger Authentisierung</li>
+<li>APIClientExample.java <br />Aufruf des API</li>
+</ul>
+Weiters werden folgende Beispiel-Requests beschrieben:
+<ul>
+<li>einfache Requests für die Erstellung und Überprüfung einer XML-Signatur</li>
+<li>umfassende Requests für die Erstellung und Überprüfung einer XML-Signatur</li>
+<li>ein Request für die Überprüfung einer CMS-Signatur</li>
+</ul>
+
+</p>
+</td></tr></table>
+
+
+<div id="voraussetzung" />
+<table width="650" border="0" cellpadding="10" cellspacing="0">
+<tr>
+<td width="170" valign="top" id="klein">
+<p id="subtitel">&#160;</p>
+</div>
+</td>
+<td valign="top">
+<p id="subtitel">Voraussetzungen</p>
+<div id="block">
+Die folgende Liste enthält die erforderlichen Java-Bibliotheken, um die Beispielprogramme auszuführen.
+Die angeführten Versionsnummern bezeichnen jene Versionen dieser Java-Bibliotheken, mit denen die
+Beispielprogramme getestet wurden.
+<br /><br />
+<table border="1" width="100%" cellpadding="2" cellspacing="0">
+<tr>
+<th>Java-Bibliothek</th><th>Version</th><th>Bemerkung</th>
+</tr><tr>
+<tr valign="top">
+<td>JDK</td><td>1.3+</td><td>Java Development Kit</td>
+</tr><tr valign="top">
+<td>Xerces <br />XML Parser</td><td>2.0.2+</td>
+<td id="klein">nicht nötig wenn JDK 1.4 verwendet wird <br />
+ Download: <a href="http://xml.apache.org/xerces2-j/">xml.apache.org/xerces2-j</a> </td>
+</tr><tr valign="top">
+<td>AXIS Framework</td><td>1.0+</td>
+<td id="klein">Download: <a href="http://xml.apache.org/axis/">xml.apache.org/axis</a> </td>
+</tr><tr valign="top">
+<td>JSSE</td><td>1.0.3+</td>
+<td id="klein">wenn eine SSL Verbindung verwendet wird, nicht nötig wenn JDK 1.4 verwendet wird <br />Download: <a href="http://java.sun.com/products/jsse/">java.sun.com/products/jsse</a> </td>
+</tr><tr valign="top">
+<td>Servlet API</td><td>2.3+</td>
+<td id="klein">nicht nötig wenn AXIS 1.1 verwendet wird <br />
+Download: <a href="http://java.sun.com/products/servlet/">java.sun.com/products/servlet</a> </td>
+</tr>
+</table>
+</div>
+</td></tr></table>
+<br /><br />
+
+
+
+<div id="Webservices" />
+<table width="650" border="0" cellpadding="10" cellspacing="0">
+<tr>
+<td width="170" valign="top" id="klein">
+<p id="titel">&#160;</p>
+<p id="subtitel">&#160;</p>
+</td>
+<td valign="top">
+<p id="titel">Beispiel-Programme </p>
+<div id="block">Im folgenden werden vier Beispiele für Client-Applikationen beschrieben: </div>
+<ul>
+<li>HTTPClientExample <br />
+Aufruf des Webservice über HTTP</li>
+<li>HTTPSClientExampleServerAuth <br />
+Aufruf des Webservice über eine TLS-Verbindung mit serverseitiger Authentisierung </li>
+<li>HTTPSClientExampleClientAuth <br />
+Aufruf des Webservice über eine TLS-Verbindung mit client- und serverseitiger Authentisierung</li>
+<li>APIClientExample <br />
+Aufruf des API</li>
+</ul>
+</td></tr></table>
+<br /><br />
+
+
+
+<div id="ClientExample" />
+<table width="650" border="0" cellpadding="10" cellspacing="0">
+<tr>
+<td width="170" valign="top" id="klein">
+<p id="subtitel">&#160;</p>
+<div id="slogan">
+<b>Beispiel: </b><br />
+<a href="examples/testclient/example_request.xml" target="_new">example_request.xml</a><br />
+<a href="HTTPClientExample.txt" target="_new">HTTPClientExample</a><br />
+<br /><br />
+</div>
+</td>
+<td valign="top">
+<p id="subtitel">Beispiel HTTPClientExample </p>
+<div id="block">
+<b>1. Einlesen des XML-Request aus einer Datei</b><br />
+<pre>
+ FileInputStream inputStream =
+ new FileInputStream("example_request.xml");
+</pre
+<br /><br />
+
+<b>2. Aufbau der DOM-Struktur</b><br />
+Erstellen der BuilderFactory für den Parser
+<pre>
+ DocumentBuilderFactory factory =
+ DocumentBuilderFactory.newInstance();
+</pre>
+Namespaces müssen im Request definiert sein, darum
+<pre>
+ factory.setNamespaceAware(true);
+</pre>
+Einen neuen Builder instanzieren
+<pre>
+ DocumentBuilder builder =
+ factory.newDocumentBuilder();
+</pre>
+XML-Datei einlesen und parsen
+<pre>
+ Document root_request =
+ builder.parse(inputStream);
+</pre>
+<br /><br />
+
+<b>3. AXIS Service instanzieren</b><br />
+Service erstellen. SERVICE_QNAME ist entweder SignatureCreation oder SignatureVerification.
+<pre>
+ Service service =
+ ServiceFactory.newInstance().
+ createService(SERVICE_QNAME);
+</pre>
+Call Object erstellen
+<pre>
+ Call call = service.createCall();
+</pre>
+Ein SOAP Body Objekt erzeugen und mit dem Request aus der Datei füllen
+<pre>
+ SOAPBodyElement body =
+ new SOAPBodyElement(root_request.
+ getDocumentElement());
+ SOAPBodyElement[] params =
+ new SOAPBodyElement[] {body};
+</pre>
+Serviceendpunkt einstellen. URL zum Server mit dem Webservice z.b. http://localhost:8080/moa-spss/services/SignatureCreation.
+<pre>
+ call.setTargetEndpointAddress(ENDPOINT);
+</pre>
+<br /><br />
+
+<b>4. Service aufrufen</b><br />
+Request durchführen (Parameter werden als Array von SOAPBodyElement-Objekten übergeben)
+<pre>
+ Vector responses = (Vector)call.invoke(params);
+</pre>
+Response auslesen
+<pre>
+ SOAPBodyElement response =
+ (SOAPBodyElement) responses.get(0);
+</pre>
+Response-Document auslesen
+<pre>
+ Document root_response = response.getAsDocument();
+</pre>
+<br /><br />
+
+<b>5. Exceptions behandeln</b><br />
+Folgende Exceptions können auftreten und müssen bei der Dokumentverarbeitung
+behandelt werden:<br />
+<table border="1" width="100%" cellpadding="2" cellspacing="0">
+<tr>
+<th>Exception</th><th>Beschreibung</th>
+</tr><tr>
+<tr valign="top">
+<td>FileNotFoundException</td><td>Datei kann nicht gefunden werden</td>
+</tr><tr valign="top">
+<td>IOException</td><td>Datei kann nicht gelesen werden</td>
+</tr><tr valign="top">
+<td>ParserConfigurationException</td><td>Parsereinstellungen nicht korrekt</td>
+</tr><tr valign="top">
+<td>xxSAXException</td><td>Fehler beim Parsen (z.b. XML-Fehler in der Eingabedatei)</td>
+</tr><tr valign="top">
+<td>ServiceException</td><td>Fehler beim Durchführen des AXIS Request</td>
+</tr><tr valign="top">
+<td>RemoteException</td><td>Probleme mit der Verbindung</td>
+</tr>
+</table>
+
+</div>
+</td></tr></table>
+<br /><br />
+
+
+
+<div id="ServerAuth" />
+<table width="650" border="0" cellpadding="10" cellspacing="0">
+<tr>
+<td width="170" valign="top" id="klein">
+<p id="subtitel">&#160;</p>
+<div id="slogan">
+<b>Beispiel: </b><br />
+<a href="examples/testclient/example_request.xml" target="_new">example_request.xml</a><br />
+<a href="HTTPSClientExampleServerAuth.txt" target="_new">HTTPSClientExample 1</a><br />
+<br /><br />
+</div>
+</td>
+<td valign="top">
+<p id="subtitel">Beispiel HTTPSClientExampleServerAuth</p>
+<div id="block">
+Zusätzlich zu HTTPClientExample: <br /><br />
+Erst werden die Konstanten für die Systemproperties gesetzt
+<pre>
+ handler = "java.protocol.handler.pkgs";
+ trustStore = "javax.net.ssl.trustStore";
+ trustStorePassword =
+ "javax.net.ssl.trustStorePassword";
+</pre>
+Hinzufügen des SSL-Providers in das Systemobjekt Security
+<pre>
+ Security.addProvider(
+ new com.sun.net.ssl.internal.ssl.Provider());
+</pre>
+Setzen der Systemproperties für den SSL-Provider
+<pre>
+ System.setProperty(
+ handler,"com.sun.net.ssl.internal.www.protocol");
+ System.setProperty(
+ trustStore, "client.keystore");
+ System.setProperty(trustStorePassword, "changeit");
+</pre>
+
+Danach muß nur noch der Endpunkt umgestellt werden von ENDPOINT zu SECURE_ENDPOINT
+<pre>
+ "http://localhost:8080/moa-spss/
+ services/SignatureCreation"
+</pre>
+wird zu
+<pre>
+ "https://localhost:8443/moa-spss/
+ services/SignatureCreation"
+</pre>
+AXIS erkennt das es sich um eine sichere Verbindung handelt und initialisert die Verbindung über einen SecureSocket.
+</div>
+</td></tr></table>
+<br /><br />
+
+
+
+<div id="ClientAuth" />
+<table width="650" border="0" cellpadding="10" cellspacing="0">
+<tr>
+<td width="170" valign="top" id="klein">
+<p id="subtitel">&#160;</p>
+<div id="slogan">
+<b>Beispiel: </b><br />
+<a href="examples/testclient/example_request.xml" target="_new">example_request.xml</a><br />
+<a href="HTTPSClientExampleClientAuth.txt" target="_new">HTTPSClientExample 2</a><br />
+<br /><br />
+</div>
+</td>
+<td valign="top">
+<p id="subtitel">Beispiel HTTPSClientExampleClientAuth</p>
+<div id="block">
+Zusätzlich zu HTTPSClientExampleServerAuth: <br /><br />
+Für Clientauthorisierung kommen noch folgende Properties hinzu
+<pre>
+ keyStore = "javax.net.ssl.keyStore";
+ keyStorePassword = "javax.net.ssl.keyStorePassword";
+ System.setProperty(
+ keyStore, "client.keystore");
+ System.setProperty(keyStorePassword, "changeit");
+</pre>
+</div>
+</td></tr></table>
+<br /><br />
+
+<div id="API" />
+<table width="650" border="0" cellpadding="10" cellspacing="0">
+<tr>
+<td width="170" valign="top" id="klein">
+<p id="subtitel">&#160;</p>
+<div id="slogan">
+<b>Beispiel: </b><br />
+<a href="APIClientExample.txt" target="_new">APIClientExample</a><br />
+<br /><br />
+</div>
+</td>
+<td valign="top">
+<p id="subtitel">Beispiel APIClientExample</p>
+<div id="block">
+Folgende VM-Properties m&uuml;ssen gesetzt sein um das API Beispiel
+ausführen zu können.<br /><br />
+
+<table border="1" cellpadding="2" cellspacing="0">
+<tr>
+<th colspan=2>moa.spss.server.configuration</th>
+</tr><tr>
+<tr valign="top">
+<td>Pfad&nbsp;zur&nbsp;Konfiguration von&nbsp;MOA-SPSS</td><td>Beispiel C:\moa\ConfigurationTest.xml </td>
+</tr>
+<th colspan=2>log4j.configuration</th>
+<tr valign="top">
+<td>Pfad zu einer g&uuml;ltigen Log4J Konfiguration</td><td>Beispiel file:/C:/moa/log4j.properties</td>
+</tr><tr valign="top">
+</tr>
+</table>
+<br />
+Serverfunktionshandler instanzieren
+<pre> SPSSFactory spf =
+ SPSSFactory.getInstance();</pre>
+
+Signaturedaten in ein Contentobjekt einbinden
+<pre> byte[]data =
+ "Dies sind Testdaten".getBytes("UTF-8");
+ ByteArrayInputStream bis =
+ new ByteArrayInputStream(data);
+ Content cont =
+ spf.createContent(bis,"http://uri.data.org");</pre>
+
+Beschreibungselement zu den Daten erstellen
+<pre> MetaInfo mi =
+ spf.createMetaInfo("text/plain","Testdaten",null);</pre>
+
+Transformationen erstellen
+<pre> CreateTransformsInfo cti =
+ spf.createCreateTransformsInfo(null,mi);
+ CreateTransformsInfoProfile ct =
+ spf.createCreateTransformsInfoProfile(
+ cti,
+ null);</pre>
+
+Datenobjekt aufbauen
+<pre> DataObjectInfo doi =
+ spf.createDataObjectInfo(
+ DataObjectInfo.STRUCTURE_DETACHED,
+ false,
+ cont,
+ ct);
+ List dataobjectinfolist = new ArrayList();
+ dataobjectinfolist.add(doi);</pre>
+
+alles zusammenpacken zu einer SingleSignature
+<pre> SingleSignatureInfo ssi =
+ spf.createSingleSignatureInfo(
+ dataobjectinfolist,
+ null,
+ false);
+ List singlesignatureinfolist = new ArrayList();
+ singlesignatureinfolist.add(ssi);</pre>
+die Signatur in einen Request einbetten
+<pre> CreateXMLSignatureRequest cxsreq =
+ spf.createCreateXMLSignatureRequest(
+ "PKCS12RSAKey1",
+ singlesignatureinfolist);</pre>
+
+Signatureerstellungsservice instanzieren
+<pre> SignatureCreationService scs =
+ SignatureCreationService.getInstance();</pre>
+
+Signatureerstellungsservice aufrufen
+<pre> CreateXMLSignatureResponse cxsres =
+ scs.createXMLSignature(cxsreq);</pre>
+
+Response auswerten
+<pre> List elements = cxsres.getResponseElements();
+
+ SignatureEnvironmentResponse ser =
+ (SignatureEnvironmentResponse)elements.get(0);</pre>
+
+Responsetyp lesen
+<pre> int response_type = ser.getResponseType();
+ if(response_type ==
+ SignatureEnvironmentResponse.ERROR_RESPONSE)
+ {
+ ...
+ }
+</pre>
+Fehlerfall
+<pre> System.out.println("Bei der Erstellung der
+ Signatur ist ein Fehler aufgetreten");
+</pre>
+Signaturerstellung erfolgreich
+<pre> Element se = ser.getSignatureEnvironment();
+ System.out.println(
+ "Signaturerstellung erfolgreich");
+ displayTree(se);
+</pre>
+
+</div>
+</td></tr></table>
+<br /><br />
+
+
+<div id="Beispiel-Requests" />
+<table width="650" border="0" cellpadding="10" cellspacing="0">
+<tr>
+<td width="170" valign="top" id="klein">
+<p id="subtitel">&#160;</p>
+</td>
+<td valign="top">
+<p id="titel">Beispiel-Requests</p>
+<div id="block">
+In den folgenden Abschnitten werden einfache und umfassende Beispiele für Requests beschrieben, die an MOA-SP/SS
+gesendet werden können. Damit soll der Anwendungsentwickler einen Überblick über die
+Möglichkeiten von MOA-SP/SS vermittelt bekommen. Die detaillierte und vollständige Beschreibung
+des Funktionsumfangs ist in den Spezifikationen von MOA-SP/SS und des Security-Layers enthalten.
+</div>
+</td></tr></table>
+<br /><br />
+
+
+
+<div id="CreateXMLSignature1" />
+<table width="650" border="0" cellpadding="10" cellspacing="0">
+<tr>
+<td width="170" valign="top" id="klein">
+<p id="subtitel">&#160;</p>
+<div id="slogan">
+<b>Beispiel: </b><br />
+<a href="examples/requestsResponses/CreateXMLSignatureRequest1.xml" target="_new">Request</a><br />
+<a href="examples/requestsResponses/CreateXMLSignatureResponse1.xml" target="_new">Response</a><br />
+<br /><br />
+</div>
+</td>
+<td valign="top">
+<p id="subtitel">Beispiel:<br/ > einfacher CreateXMLSignatureRequest</p>
+<div id="block">
+Das Beispiel in <a href="examples/requestsResponses/CreateXMLSignatureRequest1.xml" target="_new">CreateXMLSignatureReqest1.xml</a> zeigt einen
+einfachen <tt>&lt;CreateXMLSignatureRequest&gt;</tt>. Die Bedeutung der einzelnen Elemente
+wird im folgenden beschrieben:
+<pre>
+ &lt;KeyIdentifier&gt;PKCS12RSAKey1&lt;/KeyIdentifier&gt;
+</pre>
+<tt>PKCS12RSAKey1</tt> bezeichnet eine Schlüsselgruppe aus der MOA-SS einen Signaturschlüssel selektieren soll
+und muss einer im Konfigurationsfile definierten <tt>&lt;KeyGroup&gt;</tt> entsprechen.
+<pre>
+ &lt;SingleSignatureInfo SecurityLayerConformity="false"&gt;
+</pre>
+Für jedes <tt>&lt;SingleSignatureInfo&gt;</tt>-Element wird eine eigene XML-Signatur erzeugt. Wird das
+Attribut <tt>SecurityLayerConformity</tt> auf <tt>true</tt> gesetzt, dann wird eine XML-Signatur
+gemäß <a href="http://www.buergerkarte.at/konzept/securitylayer/spezifikation/20020831/core/Core.html#signaturerstellungNachXMLDSIGAntwort"
+target="_new">Security-Layer Spezifikation</a> erzeugt; d.h. es werden signierte Properties (Zeitpunkt
+der Signaturerstellung,
+das für die Signaturüberprüfung zu verwendende Zertifikat, Metainformationen zu den signierten Datenobjekten) und ein
+Manifest, das alle implizite Transformationsparameter enthält, zur Signatur hinzugefügt.
+<pre>
+ &lt;DataObjectInfo Structure="enveloping"&gt;
+</pre>
+Für jedes Daten-Objekt, das in die Signatur als <tt>dsig:Reference</tt> aufgenommen werden soll, muss ein
+<tt>DataObjectInfo</tt>-Element spezifiziert werden. Das Attribut <tt>Structure</tt> gibt an, ob die Daten
+in die Signatur in ein <tt>&lt;dsig:Object&gt;</tt>-Element integriert werden soll
+(<tt>Structure="enveloping"</tt>) oder via eine URL referenziert werden soll (<tt>Structure="detached"</tt>).
+<br /><br />
+Im Fall von <tt>Structure="enveloping"</tt> muss im nachfolgenden <tt>DataObject</tt> Element entweder das
+Attribut <tt>Reference</tt> gesetzt sein oder die zu signierenden Daten explizit im Element <tt>Base64Content</tt> oder
+<tt>XMLContent</tt> spezifiziert sein. Die Angabe der zu signierenden Daten über das Attribut <tt>Reference</tt>
+und gleichzeitig dem Element <tt>Base64Content</tt> oder <tt>XMLContent</tt> ist nicht erlaubt.
+<br /><br />
+Im Fall von <tt>Structure="detached"</tt> muss das Attribut <tt>Reference</tt> im nachfolgenden <tt>DataObject</tt>
+Element gesetzt sein. Die Angabe der Elemente <tt>Base64Content</tt> oder <tt>XMLContent</tt> ist optional.
+<pre>
+ &lt;DataObject&gt;
+ &lt;XMLContent xml:space="preserve"&gt;
+ Diese Daten werden signiert.
+ &lt;XMLContent&gt;
+ &lt;/DataObject&gt;
+</pre>
+Die zu signierenden Daten werden im Element <tt>&lt;DataObject&gt;</tt> spezifiziert und können entweder als
+<tt>&lt;XMLContent&gt;</tt> oder <tt>&lt;Base64Content&gt;</tt> oder über das Attribut <tt>Reference</tt>
+angegeben werden.
+<pre>
+ &lt;CreateTransformsInfoProfile&gt;
+ &lt;CreateTransformsInfo&gt;
+ &lt;FinalDataMetaInfo&gt;
+ &lt;MimeType&gt;text/plain&lt;MimeType&gt;
+ &lt;/FinalDataMetaInfo&gt;
+ &lt;/CreateTransformsInfo&gt;
+ &lt;/CreateTransformsInfoProfile&gt;
+</pre>
+Zu jedem Daten-Objekt können optional Transformationen (z.B. XPath, XSLT, Base64-Decodierung, etc.)angegeben werden.
+Werden keine Transformationen angegeben so muss zumindest der MIME-Type der zu signierenden Daten spezifiziert werden.
+<p>
+Die von diesem Request erzeugt Response ist in <a href="examples/requestsResponses/CreateXMLSignatureResponse1.xml"
+target="_new">CreateXMLSignatureResponse1.xml</a> abgelegt.
+</div>
+</td></tr></table>
+<br /><br />
+
+
+<div id="VerifyXMLSignature1" />
+<table width="650" border="0" cellpadding="10" cellspacing="0">
+<tr>
+<td width="170" valign="top" id="klein">
+<p id="subtitel">&#160;</p>
+<div id="slogan">
+<b>Beispiel: </b><br />
+<a href="examples/requestsResponses/VerifyXMLSignatureRequest1.xml" target="_new">Request</a><br />
+<a href="examples/requestsResponses/VerifyXMLSignatureResponse1.xml" target="_new">Response</a><br />
+<br /><br />
+</div>
+</td>
+<td valign="top">
+<p id="subtitel">Beispiel:<br/ > einfacher VerifyXMLSignatureRequest</p>
+<div id="block">
+Die oben erzeugte XML-Signatur kann mit dem in <a href="examples/requestsResponses/VerifyXMLSignatureRequest1.xml" target="_new">VerifyXMLSignatureReqest1.xml</a> gezeigten
+einfachen <tt>&lt;VerifyXMLSignatureRequest&gt;</tt> wieder überprüft werden.
+<pre>
+&lt;VerifyXMLSignatureRequest
+ xmlns="http://reference.e-government.gv.at/
+ namespace/moa/20020822#"
+ xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"&gt;
+
+ &lt;VerifySignatureInfo&gt;
+ &lt;VerifySignatureEnvironment&gt;
+ &lt;XMLContent&gt;
+ &lt;dsig:Signature
+ Id="signature-1"
+ xmlns:dsig="http://www.w3.org/2000/09/
+ xmldsig#"&gt;
+ .........
+ &lt;/dsig:Signature&gt;
+ &lt;/XMLContent&gt;
+ &lt;/VerifySignatureEnvironment&gt;
+</pre>
+
+Im Element <tt>VerifySignatureInfo</tt> wird zuerst die zu überprüfende Signatur im Element
+<tt>VerifySignatureEnvironment</tt> angegeben. Im Beispiel wird die Signatur als Kind-Element von
+<tt>&lt;XMLContent&gt;</tt> spezifiziert. Alternativ könnte die Signatur in Base64-Kodierung
+im Element <tt>&lt;Base64Content&gt;</tt> oder mit dem Attribut <tt>Reference</tt> über eine URL
+referenziert werden.
+
+<pre>
+ &lt;VerifySignatureLocation&gt;
+ //dsig:Signature
+ &lt;/VerifySignatureLocation&gt;
+
+ &lt;/VerifySignatureInfo&gt;
+</pre>
+
+Weiters muss mittels eines XPath-Ausdrucks im Element <tt>&lt;VerifySignatureLocation&gt;</tt>
+die Position der zu prüfenden Signatur spezifiziert werden. Werden im XPath-Ausdruck
+Namespace-Prefixes verwendet, müssen die entsprechenden Namespace-Deklarationen im Kontext
+des Elements <tt>VerifySignatureLocation</tt> bekannt sein. Im Beispiel wird das Prefix <tt>dsig</tt>
+verwendet, das im Element <tt>&lt;VerifyXMLSignatureRequest&gt;</tt> deklariert wird.
+
+<pre>
+ &lt;TrustProfileID&gt;TrustProfile1&lt;TrustProfileID&gt;
+</pre>
+Abschließend wird im Element <tt>&lt;TrustProfileID&gt;</tt> ein Trustprofile spezifiziert, das am MOA-SP Server
+definiert ist und jene Zertifikate enthält, die für diesen Request als vertrauenswürdig gelten.
+<p>
+Die von diesem Request erzeugt Response ist in <a href="examples/requestsResponses/verifyXMLSignatureResponse1.xml"
+target="_new">VerifyXMLSignatureResponse1.xml</a> abgelegt. Die Response enthält das Ergebnis der Signaturprüfung
+im Element <tt>&lt;SignatureCheck&gt;</tt>, das Ergebnis der Zertifikatsprüfung im Element
+<tt>&lt;CertificateCheck&gt;</tt> und Informationen über den Signator im Element
+<tt>&lt;SignerInfo&gt/&lt;X509Data&gt;</tt>. Die Informationen über den Signator bestehen aus den Elementen
+<tt>&lt;X509SubjectName&gt;</tt>, <tt>&lt;X509IssuerSerial&gt;</tt> und <tt>&lt;X509Certificate&gt;</tt>.
+
+</div>
+</td></tr></table>
+<br /><br />
+
+
+<div id="CreateXMLSignature2" />
+<table width="650" border="0" cellpadding="10" cellspacing="0">
+<tr>
+<td width="170" valign="top" id="klein">
+<p id="subtitel">&#160;</p> <div id="slogan"> <b>Beispiel: </b><br /> <a
+href="examples/requestsResponses/CreateXMLSignatureRequest2.xml" target="_new">Request</a><br />
+<a href="examples/requestsResponses/CreateXMLSignatureResponse2.xml" target="_new">Response</a>
+<br /> <br /><br />
+</div>
+</td>
+<td valign="top"> <p
+id="subtitel">Beispiel:<br/ > umfassender CreateXMLSignatureRequest</p> <div
+id="block"> Das Beispiel in <a
+href="examples/requestsResponses/CreateXMLSignatureRequest2.xml"
+target="_new">CreateXMLSignatureReqest2.xml</a> zeigt einen umfassenden
+<tt>&lt;CreateXMLSignatureRequest&gt;</tt>.
+<br /><br />
+Das Beispiel benötigt zwei Dateien, die über die URL
+<tt>http://localhost:8080/TestDatenGenerator/resources/&lt;Dateiname&gt;</tt> erreichbar sind.
+Bevor der Beispiel-Request ausgeführt wird, muss daher
+<a href="requestsResponses/TestDatenGenerator.zip">TestDatenGenerator.zip</a>
+entpackt und in $CATALINA_HOME/webapps kopiert werden. Voraussetzung ist, dass Tomcat auf Port 8080 läuft.
+
+<pre>
+&lt;CreateXMLSignatureRequest
+ xmlns="http://reference.e-government.gv.at/
+ namespace/moa/20020822#"
+ xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"&gt;
+ &lt;KeyIdentifier&gt;PKCS12RSAKey1&lt;/KeyIdentifier&gt;
+ &lt;SingleSignatureInfo SecurityLayerConformity="false"&gt;
+ &lt;DataObjectInfo Structure="enveloping"
+ ChildOfManifest="true"&gt;
+ &lt;DataObject&gt;
+ &lt;XMLContent&gt;Diese Daten werden
+ signiert.&lt;/XMLContent&gt;
+ &lt;/DataObject&gt;
+ &lt;CreateTransformsInfoProfile&gt;
+ &lt;CreateTransformsInfo&gt;
+ &lt;FinalDataMetaInfo&gt;
+ &lt;MimeType&gt;text/plain&lt;/MimeType&gt;
+ &lt;/FinalDataMetaInfo&gt;
+ &lt;/CreateTransformsInfo&gt;
+ &lt;/CreateTransformsInfoProfile&gt;
+ &lt;/DataObjectInfo&gt;
+ &lt;/SingleSignatureInfo&gt;
+</pre>
+
+Der Anfang des Requests ist identisch mit dem <a href="#CreateXMLSignature1">einfachen CreateXMLSignatureRequest</a>.
+Als Variation wurde <tt>&lt;ChildOfManifest= "true"&gt;</tt> gesetzt.
+
+Damit wird spezifiziert, dass die zugehörige <tt>&lt;dsig:Reference&gt;</tt> nicht in das Element
+<tt>&lt;SignedInfo&gt;</tt> sondern in ein XMLDSig-Manifest eingefügt werden soll.
+
+Wird das Attribut <tt>&lt;ChildOfManifest&gt;</tt> nicht gesetzt, dann
+wird kein XMLDSig-Manifest erzeugt.
+
+<pre>
+ &lt;SingleSignatureInfo SecurityLayerConformity="true"&gt;
+</pre>
+
+Anschließend wird angegeben, dass eine zweite Signatur erstellt werden soll.
+<tt>SecurityLayerConformity="true"</tt> gibt an, dass die Signatur entsprechend der Security-Layer
+Spezifikation Version 1.1 erstellt werden muss, d.h. es werden Signaturattribute und gegebenenfalls ein
+<a href="http://www.buergerkarte.at/konzept/securitylayer/spezifikation/20020831/core/Core.html#signaturerstellungNachXMLDSIGAntwortImplTransParam" target="_new">
+Signatur-Manifest<a> erzeugt. Wird eine Security-Layer konforme Signatur erzeugt, dann
+darf <tt>&lt;ChildOfManifest="true"&gt;</tt> nicht gesetzt sein.
+<p>
+Die zweite Signatur soll zwei Datenobjekte enthalten:
+
+<pre>
+ &lt;DataObjectInfo Structure="detached"&gt;
+</pre>
+
+Für das erste Datenobjekt sollen die signierten Daten nicht in der Signatur enthalten sein (<tt>Structure="detached"</tt>).
+
+<pre>
+ &lt;DataObject
+ Reference="http://localhost:8080/TestDatenGenerator
+ /resources/testDaten.txt"&gt;
+ &lt;Base64Content&gt;
+ RGllcyBz........DQphdXM=
+ &lt;/Base64Content&gt;
+ &lt;/DataObject&gt;
+ &lt;CreateTransformsInfoProfile&gt;
+ &lt;CreateTransformsInfo&gt;
+ &lt;FinalDataMetaInfo&gt;
+ &lt;MimeType&gt;text/plain&lt;/MimeType&gt;
+ &lt;/FinalDataMetaInfo&gt;
+ &lt;/CreateTransformsInfo&gt;
+ &lt;/CreateTransformsInfoProfile&gt;
+ &lt;/DataObjectInfo&gt;
+</pre>
+
+Die zu signierenden Daten sind in Base64-Kodierung angegeben und werden in der Signatur über die URL, die im
+Attribut <tt>Reference</tt> angegeben ist, referenziert. Diese URL wird im Zuge der Signaturerstellung
+nicht aufgelöst, da die Daten bereits explizit im Request angegeben sind. Es werden keine weitere
+Transformationen für das Datenobjekt angegeben.
+
+<pre>
+ &lt;DataObjectInfo Structure="enveloping"&gt;
+ &lt;DataObject&gt;
+ &lt;XMLContent xml:space="preserve"&gt;
+ &lt;data:book
+ xmlns:data="http://uri.data.org"
+ data:hardback="yes"&gt;
+ &lt;data:title&gt;
+ Gesundheitliche Auswirkungen
+ elektronischer Signaturen
+ &lt;/data:title&gt;
+ &lt;data:first-name&gt;Ellipse&lt;/data:first-name&gt;
+ &lt;data:last-name&gt;Kurvenreich&lt;/data:last-name&gt;
+ &lt;data:birth-date&gt;1951-04-16&lt;/data:birth-date&gt;
+ &lt;data:birth-location&gt;
+ Hinterm Berg
+ &lt;/data:birth-location&gt;
+ &lt;data:register-number&gt;
+ 6-930-21512-12
+ &lt;/data:register-number&gt;
+ &lt;/data:book&gt;
+ &lt;/XMLContent&gt;
+ &lt;/DataObject&gt;
+</pre>
+
+Das zweite Datenobjekt, das signiert werden soll ist eine XML-Struktur.
+<p>
+Für die XML-Struktur wird eine Transformation spezifiziert, die angewendet werden muss, bevor die Daten signiert
+werden:
+<pre>
+ &lt;CreateTransformsInfoProfile&gt;
+</pre>
+Transformationen können entweder explizit im Request im Element <tt>&lt;CreateTransformsInfoProfile&gt;</tt>
+angegeben werden oder mit dem Element <tt>&lt;CreateTransformsInfoProfileID&gt;</tt> über eine am MOA-SS-Server
+konfigurierte Profil-ID referenziert werden.
+<pre>
+ &lt;CreateTransformsInfo&gt;
+</pre>
+Im Transformationsprofil werden im Element <tt>&lt;CreateTransformsInfo&gt;</tt> die Transformationskette
+(<tt>&lt;dsig:Transforms&gt;</tt>) und optionale Ergänzungsobjekte (<tt>&lt;Supplement&gt;</tt>) angegeben.
+<pre>
+ &lt;dsig:Transforms&gt;
+ &lt;dsig:Transform
+ Algorithm="http://www.w3.org/TR/
+ 1999/REC-xslt-19991116"&gt;
+ &lt;xsl:stylesheet
+ xmlns:xsl="http://www.w3.org/
+ 1999/XSL/Transform"
+ version="1.0"&gt;
+ &lt;xsl:include
+ href="http://localhost:8080/
+ TestDatenGenerator/resources/
+ CX1_book_not_here.xsl"/&gt;
+ &lt;/xsl:stylesheet&gt;
+ &lt;/dsig:Transform&gt;
+ &lt;/dsig:Transforms&gt;
+</pre>
+Im Beispiel besteht die Transformationskette aus einer XSLT-Transformation, die ein weiteres XSLT Stylesheet inkludiert.
+MOA-SS unterstützt alle Transformationen aus der XMLDSig-Spezifikation sowie Exclusive XML Canonicalization 1.0 und
+XPath Filter 2.0.
+
+<pre>
+ &lt;FinalDataMetaInfo&gt;
+ &lt;MimeType&gt;text/html&lt;/MimeType&gt;
+ &lt;/FinalDataMetaInfo&gt;
+ &lt;/CreateTransformsInfo&gt;
+</pre>
+<tt>&lt;FinalDataMetaInfo&gt;</tt> gibt den MIME-Type der Daten an, die das Ergebnis der Transformation bilden und
+tatsächlich signiert werden.
+<p>
+Weiters können optional Ergänzungsobjekte angegeben werden, die Daten enthalten, die von MOA-SP zur
+Signaturerstellung verwendet werden sollen:
+<pre>
+ &lt;Supplement&gt;
+ &lt;Content Reference="http://localhost:8080/
+ TestDatenGenerator/resources/
+ CX1_book_not_here.xsl"&gt;
+ &lt;Base64Content&gt;PHhzbDpzdHls.....eWxlc2hlZXQ+
+ &lt;/Base64Content&gt;
+ &lt;/Content&gt;
+ &lt;/Supplement&gt;
+ &lt;/CreateTransformsInfoProfile&gt;
+ &lt;/DataObjectInfo&gt;
+</pre>
+Im aktuellen Beispiel wird ein Ergänzungsobjekt für jenes Stylesheet angegeben, das im Stylesheet der oben
+spezifizierten XSLT-Transformation referenziert wird. MOA-SS wird die angegebene URL nicht auflösen sondern
+stattdessen die im Ergänzungsobjekt enthaltenen Daten verwenden.
+<p>
+<pre>
+ &lt;CreateSignatureInfo xmlns:env="http://uri.env.org"&gt;
+</pre>
+Abschließend wird hier noch mittels des optionalen Elements <tt>&lt;CreateSignatureInfo&gt;</tt> festgelegt,
+dass die zu erzeugende Signatur in ein bereits bestehendes XML-Dokument eingebettet werden soll. Im Beispiel
+wird das Namespace-Prefix <tt>env</tt> hier deklariert, da es weiter unten im Element
+<tt>CreateSignatureLocation</tt> verwendet werden wird.
+<pre>
+ &lt;CreateSignatureEnvironment&gt;
+ &lt;XMLContent&gt;
+ &lt;env:Document
+ xmlns:env="http://uri.env.org"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://uri.env.org
+ http://anyhost/envSchema.xsd"&gt;
+ nach diesem Text wird die Signatur in das Dokument
+ eingefügt
+ &lt;/env:Document&gt;
+ &lt;/XMLContent&gt;
+ &lt;/CreateSignatureEnvironment&gt;
+</pre>
+Im Element <tt>&lt;CreateSignatureEnvironment&gt;</tt> wird das XML-Dokument angegeben.
+<pre>
+ &lt;CreateSignatureEnvironmentProfile&gt;
+ &lt;CreateSignatureLocation Index="1"&gt;
+ /env:Document
+ &lt;/CreateSignatureLocation&gt;
+ &lt;/CreateSignatureEnvironmentProfile&gt;
+</pre>
+Anschließend wird im Profil angegeben an welcher Position des XML-Dokuments die Signatur eingefügt werden
+soll. Im Element <tt>&lt;CreateSignatureLocation&gt;</tt> wird ein XPath-Ausdruck angegeben, der das
+Element selektiert, als dessen Kind die Signatur eingefügt werden soll. Das Attribut <tt>Index</tt> spezifiziert
+die Position innerhalb dieses Elements, an der die Signatur eingefügt werden soll. <tt>"0"</tt> gibt an,
+dass die Signatur als erstes Kind eingefügt werden soll.</tt>
+<pre>
+ &lt;/CreateSignatureInfo&gt;
+ &lt;/SingleSignatureInfo&gt;
+&lt;/CreateXMLSignatureRequest&gt;
+</pre>
+Abschließend müssen alle Elemente wieder geschlossen werden.
+<p>
+Die von diesem Request erzeugt Response ist in <a href="examples/requestsResponses/CreateXMLSignatureResponse2.xml" target="_new">
+CreateXMLSignatureResponse2.xml</a> abgelegt. Die Response enthält zwei Elemente <tt>SignatureEnvironment</tt>, die die
+beiden erzeugten Signaturen enthalten.
+</div>
+</td></tr></table>
+<br /><br />
+
+<div id="VerifyXMLSignature2" />
+<table width="650" border="0" cellpadding="10" cellspacing="0">
+<tr>
+<td width="170" valign="top" id="klein">
+<p id="subtitel">&#160;</p>
+<div id="slogan">
+<b>Beispiel: </b><br />
+<a href="examples/requestsResponses/VerifyXMLSignatureRequest2.xml" target="_new">Request</a><br />
+<a href="examples/requestsResponses/VerifyXMLSignatureResponse2.xml" target="_new">Response</a><br />
+<br /><br />
+</div>
+</td>
+
+
+<td valign="top">
+<p id="subtitel">Beispiel:<br/ > umfassender VerifyXMLSignatureRequest</p>
+<div id="block">
+Das Beispiel in <a href="examples/requestsResponses/VerifyXMLSignatureRequest2.xml" target="_new">
+VerifyXMLSignatureReqest2.xml</a> zeigt wie die im obigen Beispiel erzeugte zweite Signatur
+überprüft werden kann.
+<pre>
+&lt;VerifyXMLSignatureRequest
+ xmlns="http://reference.e-government.gv.at/
+ namespace/moa/20020822#"
+ xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"&gt;
+ &lt;DateTime&gt;2003-03-24T12:41:54+01:00&lt;/DateTime&gt;
+</pre>
+Optional kann ein Datum und eine Uhrzeit angegeben werden, für die die Überprüfung durchgeführt werden soll.
+
+<pre>
+ &lt;VerifySignatureInfo&gt;
+ &lt;VerifySignatureEnvironment&gt;
+ &lt;XMLContent&gt;
+ &lt;env:Document xmlns:env="http://uri.env.org" .....&gt;
+ nach diesem Text ..... Dokument eingefuegt
+ &lt;dsig:Signature .....&gt;.....&lt;/dsig:Signature&gt;
+ &lt;/env:Document&gt;
+ &lt;/XMLContent&gt;
+ &lt;/VerifySignatureEnvironment&gt;
+</pre>
+Die Signatur inklusive des umgebenden XML-Dokuments wird im Element <tt>&lt;VerifySignatureEnvironment&gt;</tt>
+angegeben.
+<pre>
+ &lt;VerifySignatureLocation&gt;
+ //dsig:Signature
+ &lt;/VerifySignatureLocation&gt;
+ &lt;/VerifySignatureInfo&gt;
+</pre>
+Die zu prüfende Signatur aus dem Element <tt>&lt;VerifySignatureEnvironment&gt;</tt> wird über einen XPath-Ausdruck
+spezifiziert.
+
+Enthält die Signatur ID-Attribute, die referenziert werden, dann muss das XML-Dokument validierend geparst werden können.
+Im Beispiel-Request wird die URL des Schemas für das Element <tt>env:Document</tt> im Attribut <tt>xsi:schemaLocation</tt>
+spezifiziert (<tt>http://anyhost/envSchema.xsd</tt>). Soll MOA-SP diese URL nicht selbst auflösen, dann kann das
+Schema kann im Element <tt>SupplementProfile</tt> übergeben werden:
+
+<pre>
+ &lt;SupplementProfile&gt;
+ &lt;Content Reference="http://anyhost/envSchema.xsd"&gt;
+ &lt;XMLContent xml:space="preserve"&gt;
+ &lt;xsd:schema
+ targetNamespace="http://uri.env.org"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ elementFormDefault="qualified"
+ attributeFormDefault="unqualified"&gt;
+ &lt;xsd:element name="Document"&gt;
+ &lt;xsd:complexType mixed="true"&gt;
+ &lt;xsd:sequence minOccurs="0"
+ maxOccurs="unbounded"&gt;
+ &lt;xsd:any namespace="##any"
+ processContents="lax"/&gt;
+ &lt;/xsd:sequence&gt;
+ &lt;/xsd:complexType&gt;
+ &lt;/xsd:element&gt;
+ &lt;/xsd:schema&gt;
+ &lt;/XMLContent&gt;
+ &lt;/Content&gt;
+ &lt;/SupplementProfile&gt;
+</pre>
+
+<pre>
+ &lt;ReturnHashInputData/&gt;
+</pre>
+Das Element gibt an, dass für jedes <tt>dsig:SignedInfo/dsig:Reference</tt> Element jene Daten, die für die
+Hash-Berechnung der Signatur als Eingangsdaten verwendet werden, in der Antwort returniert werden sollen.
+
+<pre>
+ &lt;TrustProfileID&gt;TrustProfile1&lt;/TrustProfileID&gt;
+&lt;/VerifyXMLSignatureRequest&gt;
+</pre>
+Abschließend wird ein am MOA-SP Server definiertes Profil angegeben, dass jene Zertifikate umfasst, die für
+diesen Request als vertrauenswürdig anzusehen sind.
+<p>
+
+Die von diesem Request erzeugt Response ist in <a href="examples/requestsResponses/VerifyXMLSignatureResponse2.xml" target="_new">
+VerifyXMLSignatureResponse2.xml</a> abgelegt. Zusätzlich zu den Daten der Response des einfachen
+VerifyXMLSignatureRequests enthält diese Response für jedes <tt>dsig:SignedInfo/dsig:Reference</tt> Element
+ein <tt>HashInputData</tt> Element.
+</div>
+</td></tr></table>
+<br /><br />
+
+
+
+
+
+<div id="VerifyCMSSignature" />
+<table width="650" border="0" cellpadding="10" cellspacing="0">
+<tr>
+<td width="170" valign="top" id="klein">
+<p id="subtitel">&#160;</p>
+<div id="slogan">
+<b>Beispiel: </b><br />
+<a href="examples/requestsResponses/VerifyCMSSignatureRequest.xml" target="_new">Request</a><br />
+<a href="examples/requestsResponses/VerifyCMSSignatureResponse.xml" target="_new">Response</a><br />
+<br /><br />
+</div>
+</td>
+<td valign="top">
+<p id="subtitel">Beispiel:<br/ > VerifyCMSSignatureRequest</p>
+<div id="block">
+Das Beispiel in <a href="examples/requestsResponses/VerifyCMSSignatureRequest.xml" target="_new">VerifyCMSSignatureRequest.xml</a> zeigt einen
+einfachen <tt>&lt;VerifyCMSSignatureRequest&gt;</tt>. Die Bedeutung der einzelnen Elemente
+wird im folgenden beschrieben:
+<pre>
+&lt;VerifyCMSSignatureRequest
+ xmlns="http://reference.e-government.gv.at/
+ namespace/moa/20020822#"
+ xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"
+ Signatories="1"&gt;
+</pre>
+Das optionale Attribut <tt>Signatories</tt> enthält eine Liste von positiven Ganzzahlen und gibt an, welche Signaturen
+im CMS-Datenobjekt überprüft werden sollen. <tt>Signatories="1"</tt> gibt an, dass die erste Signatur geprüft
+werden soll.
+Wird das Attribut nicht spezifiziert, dann wird ebenfalls die erste Signatur geprüft. <tt>Signatories="all"</tt>
+gibt an, dass alle im CMS-Objekt enthaltene Signaturen geprüft werden sollen.
+
+<pre>
+ &lt;DateTime&gt;2003-04-04T09:30:47-05:00&lt;/DateTime&gt;
+</pre>
+Das optionale Element <tt>&lt;DateTime&gt;</tt> gibt an für welchen Zeitpunkt die Signaturüberprüfung
+durchgeführt werden soll. Ist das Element nicht im Request enthalten, dann wird die aktuelle Systemzeit
+verwendet.
+
+<pre>
+ &lt;CMSSignature&gt;MIIGAAYJKo...mT9fmvKwdJOiA==&lt;/CMSSignature&gt;
+</pre>
+Das Element <tt>&lt;CMSSignature&gt;</tt> enthält das CMS-Signaturobjekt in Base64-Kodierung.
+<br /><br />
+Sind die signierten Daten nicht in der CMS-Signatur enthalten, müssen sie im <tt>DataObject</tt>-Element
+angegeben werden. Optional kann der MIME-Type dieser Daten spezifiziert werden. Die eigentlichen Daten
+müssen im <tt>Base64Content</tt>-Element in Base64-Kodierung vorliegen.
+
+<pre>
+ &lt;TrustProfileID&gt;TrustProfile1&lt;TrustProfileID&gt;
+</pre>
+
+<tt>TrustProfile1</tt> referenziert ein im Konfigurationsfile des MOA-Server definiertes Profil, das
+jene Zertifikate umfasst, die für diese Überprüfung als vertrauenswürdig gelten.
+
+
+<p>
+Die von diesem Request erzeugt Response ist in <a href="examples/requestsResponses/VerifyCMSSignatureResponse.xml" target="_new">
+VerifyCMSSignatureResponse.xml</a> abgelegt. Die Response enthält die selben Informationen wie die Response zum
+einfachen VerifyXMLSignatureRequest.
+</div>
+</td></tr></table>
+<br /><br />
+
+
+
+<table width="650" border="0" cellpadding="10" cellspacing="0">
+<tr>
+<td width="170" valign="top"><br /></td>
+<td valign="top">
+<hr />
+<div style="font-size:8pt; color:#909090">&copy; 2003 <!-- Development Center, BRZ GmbH --></div>
+</td></tr></table>
+<br />
+
+
+</div>
+</body>
+</html> \ No newline at end of file