diff options
| author | gregor <gregor@d688527b-c9ab-4aba-bd8d-4036d912da1d> | 2003-07-07 10:58:37 +0000 | 
|---|---|---|
| committer | gregor <gregor@d688527b-c9ab-4aba-bd8d-4036d912da1d> | 2003-07-07 10:58:37 +0000 | 
| commit | ece7d18cf35374bf4e26d041799cda8f791c89f8 (patch) | |
| tree | 33707cb77627b65a2a4e7327a2e93fb7751c1b76 /spss.server/doc/moa_spss/sp-anwendung.htm | |
| parent | 273aed93c03b18a6c6bb1af745ae46a13ad3c7f2 (diff) | |
| download | moa-id-spss-ece7d18cf35374bf4e26d041799cda8f791c89f8.tar.gz moa-id-spss-ece7d18cf35374bf4e26d041799cda8f791c89f8.tar.bz2 moa-id-spss-ece7d18cf35374bf4e26d041799cda8f791c89f8.zip | |
Initial commit
git-svn-id: https://joinup.ec.europa.eu/svn/moa-idspss/trunk@2 d688527b-c9ab-4aba-bd8d-4036d912da1d
Diffstat (limited to 'spss.server/doc/moa_spss/sp-anwendung.htm')
| -rw-r--r-- | spss.server/doc/moa_spss/sp-anwendung.htm | 1079 | 
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"> + 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 -->  +</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>  +</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"> </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"> </p> +<p id="subtitel"> </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"> </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"> </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"> </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"> </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ü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 zur Konfiguration von 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ü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"> </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"> </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><CreateXMLSignatureRequest></tt>.  Die Bedeutung der einzelnen Elemente +wird im folgenden beschrieben: +<pre> +  <KeyIdentifier>PKCS12RSAKey1</KeyIdentifier> +</pre> +<tt>PKCS12RSAKey1</tt> bezeichnet eine Schlüsselgruppe aus der MOA-SS einen Signaturschlüssel selektieren soll +und muss einer im Konfigurationsfile definierten <tt><KeyGroup></tt> entsprechen. +<pre> +  <SingleSignatureInfo SecurityLayerConformity="false"> +</pre> +Für jedes <tt><SingleSignatureInfo></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> +    <DataObjectInfo Structure="enveloping"> +</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><dsig:Object></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> +      <DataObject> +        <XMLContent xml:space="preserve"> +          Diese Daten werden signiert. +        <XMLContent> +      </DataObject> +</pre> +Die zu signierenden Daten werden im Element <tt><DataObject></tt> spezifiziert und können entweder als +<tt><XMLContent></tt> oder <tt><Base64Content></tt> oder über das Attribut <tt>Reference</tt> +angegeben werden.  +<pre> +      <CreateTransformsInfoProfile> +        <CreateTransformsInfo> +          <FinalDataMetaInfo> +            <MimeType>text/plain<MimeType> +          </FinalDataMetaInfo> +        </CreateTransformsInfo> +      </CreateTransformsInfoProfile> +</pre> +Zu jedem Daten-Objekt können optional Transformationen (z.B. XPath, XSLT, Base64-Decodierung, etc.)angegeben werden. +Werden 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"> </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><VerifyXMLSignatureRequest></tt> wieder überprüft werden.   +<pre> +<VerifyXMLSignatureRequest +  xmlns="http://reference.e-government.gv.at/ +                namespace/moa/20020822#" +  xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"> +   +  <VerifySignatureInfo> +    <VerifySignatureEnvironment> +      <XMLContent> +        <dsig:Signature +          Id="signature-1" +          xmlns:dsig="http://www.w3.org/2000/09/ +                             xmldsig#"> +          ......... +        </dsig:Signature> +      </XMLContent> +    </VerifySignatureEnvironment> +</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><XMLContent></tt> spezifiziert.  Alternativ könnte die Signatur in Base64-Kodierung  +im Element <tt><Base64Content></tt> oder mit dem Attribut <tt>Reference</tt> über eine URL  +referenziert werden. + +<pre> +    <VerifySignatureLocation> +      //dsig:Signature +    </VerifySignatureLocation> +     +  </VerifySignatureInfo> +</pre> + +Weiters muss mittels eines XPath-Ausdrucks im Element <tt><VerifySignatureLocation></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><VerifyXMLSignatureRequest></tt> deklariert wird. + +<pre> +  <TrustProfileID>TrustProfile1<TrustProfileID> +</pre> +Abschließend wird im Element <tt><TrustProfileID></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><SignatureCheck></tt>, das Ergebnis der Zertifikatsprüfung im Element +<tt><CertificateCheck></tt> und Informationen über den Signator im Element +<tt><SignerInfo>/<X509Data></tt>.  Die Informationen über den Signator bestehen aus den Elementen  +<tt><X509SubjectName></tt>, <tt><X509IssuerSerial></tt> und <tt><X509Certificate></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"> </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><CreateXMLSignatureRequest></tt>. +<br /><br /> +Das Beispiel benötigt zwei Dateien, die über die URL  +<tt>http://localhost:8080/TestDatenGenerator/resources/<Dateiname></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> +<CreateXMLSignatureRequest +  xmlns="http://reference.e-government.gv.at/ +      namespace/moa/20020822#" +  xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"> +  <KeyIdentifier>PKCS12RSAKey1</KeyIdentifier> +  <SingleSignatureInfo SecurityLayerConformity="false"> +    <DataObjectInfo Structure="enveloping"  +    ChildOfManifest="true"> +      <DataObject> +        <XMLContent>Diese Daten werden  +        signiert.</XMLContent> +      </DataObject> +      <CreateTransformsInfoProfile> +        <CreateTransformsInfo> +          <FinalDataMetaInfo> +            <MimeType>text/plain</MimeType> +          </FinalDataMetaInfo> +        </CreateTransformsInfo> +      </CreateTransformsInfoProfile> +    </DataObjectInfo> +  </SingleSignatureInfo> +</pre> + +Der Anfang des Requests ist identisch mit dem <a href="#CreateXMLSignature1">einfachen CreateXMLSignatureRequest</a>. +Als Variation wurde <tt><ChildOfManifest= "true"></tt> gesetzt. + +Damit wird spezifiziert, dass die zugehörige <tt><dsig:Reference></tt> nicht in das Element +<tt><SignedInfo></tt> sondern in ein XMLDSig-Manifest eingefügt werden soll. + +Wird das Attribut <tt><ChildOfManifest></tt> nicht gesetzt, dann +wird kein XMLDSig-Manifest erzeugt. + +<pre> +  <SingleSignatureInfo SecurityLayerConformity="true"> +</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><ChildOfManifest="true"></tt> nicht gesetzt sein. +<p> +Die zweite Signatur soll zwei Datenobjekte enthalten: + +<pre> +    <DataObjectInfo Structure="detached"> +</pre> + +Für das erste Datenobjekt sollen die signierten Daten nicht in der Signatur enthalten sein (<tt>Structure="detached"</tt>). + +<pre> +      <DataObject +        Reference="http://localhost:8080/TestDatenGenerator +                   /resources/testDaten.txt"> +        <Base64Content> +          RGllcyBz........DQphdXM= +        </Base64Content> +      </DataObject> +      <CreateTransformsInfoProfile> +        <CreateTransformsInfo> +          <FinalDataMetaInfo> +            <MimeType>text/plain</MimeType> +          </FinalDataMetaInfo> +        </CreateTransformsInfo> +      </CreateTransformsInfoProfile> +    </DataObjectInfo> +</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> +    <DataObjectInfo Structure="enveloping"> +      <DataObject> +        <XMLContent xml:space="preserve"> +          <data:book +            xmlns:data="http://uri.data.org" +            data:hardback="yes"> +            <data:title> +              Gesundheitliche Auswirkungen  +              elektronischer Signaturen +            </data:title> +            <data:first-name>Ellipse</data:first-name> +            <data:last-name>Kurvenreich</data:last-name> +            <data:birth-date>1951-04-16</data:birth-date> +            <data:birth-location> +              Hinterm Berg +            </data:birth-location> +            <data:register-number> +              6-930-21512-12 +            </data:register-number> +          </data:book> +        </XMLContent> +      </DataObject> +</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> +      <CreateTransformsInfoProfile> +</pre> +Transformationen können entweder explizit im Request im Element <tt><CreateTransformsInfoProfile></tt> +angegeben werden oder mit dem Element <tt><CreateTransformsInfoProfileID></tt> über eine am MOA-SS-Server +konfigurierte Profil-ID referenziert werden. +<pre> +        <CreateTransformsInfo> +</pre> +Im Transformationsprofil werden im Element <tt><CreateTransformsInfo></tt> die Transformationskette +(<tt><dsig:Transforms></tt>) und optionale Ergänzungsobjekte (<tt><Supplement></tt>) angegeben. +<pre> +          <dsig:Transforms> +            <dsig:Transform +              Algorithm="http://www.w3.org/TR/ +                1999/REC-xslt-19991116"> +              <xsl:stylesheet +                xmlns:xsl="http://www.w3.org/ +                   1999/XSL/Transform" +                version="1.0"> +                <xsl:include +                  href="http://localhost:8080/ +                        TestDatenGenerator/resources/ +                        CX1_book_not_here.xsl"/> +              </xsl:stylesheet> +            </dsig:Transform> +          </dsig:Transforms> +</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>           +          <FinalDataMetaInfo> +            <MimeType>text/html</MimeType> +          </FinalDataMetaInfo> +        </CreateTransformsInfo> +</pre> +<tt><FinalDataMetaInfo></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> +        <Supplement> +          <Content Reference="http://localhost:8080/ +                              TestDatenGenerator/resources/ +                              CX1_book_not_here.xsl"> +            <Base64Content>PHhzbDpzdHls.....eWxlc2hlZXQ+ +            </Base64Content> +          </Content> +        </Supplement> +      </CreateTransformsInfoProfile> +    </DataObjectInfo> +</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> +    <CreateSignatureInfo xmlns:env="http://uri.env.org"> +</pre> +Abschließend wird hier noch mittels des optionalen Elements <tt><CreateSignatureInfo></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> +      <CreateSignatureEnvironment> +        <XMLContent> +          <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"> +            nach diesem Text wird die Signatur in das Dokument +            eingefügt +          </env:Document> +        </XMLContent> +      </CreateSignatureEnvironment> +</pre> +Im Element <tt><CreateSignatureEnvironment></tt> wird das XML-Dokument angegeben. +<pre> +      <CreateSignatureEnvironmentProfile> +        <CreateSignatureLocation Index="1"> +          /env:Document +        </CreateSignatureLocation> +      </CreateSignatureEnvironmentProfile> +</pre> +Anschließend wird im Profil angegeben an welcher Position des XML-Dokuments die Signatur eingefügt werden +soll.  Im Element <tt><CreateSignatureLocation></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> +    </CreateSignatureInfo> +  </SingleSignatureInfo> +</CreateXMLSignatureRequest> +</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"> </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> +<VerifyXMLSignatureRequest +  xmlns="http://reference.e-government.gv.at/ +     namespace/moa/20020822#" +  xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"> +  <DateTime>2003-03-24T12:41:54+01:00</DateTime> +</pre> +Optional kann ein Datum und eine Uhrzeit angegeben werden, für die die Überprüfung durchgeführt werden soll. + +<pre>   +  <VerifySignatureInfo> +    <VerifySignatureEnvironment> +     <XMLContent> +       <env:Document xmlns:env="http://uri.env.org" .....> +         nach diesem Text ..... Dokument eingefuegt +         <dsig:Signature .....>.....</dsig:Signature> +       </env:Document> +      </XMLContent> +    </VerifySignatureEnvironment> +</pre> +Die Signatur inklusive des umgebenden XML-Dokuments wird im Element <tt><VerifySignatureEnvironment></tt> +angegeben. +<pre>     +    <VerifySignatureLocation> +      //dsig:Signature +    </VerifySignatureLocation> +  </VerifySignatureInfo> +</pre> +Die zu prüfende Signatur aus dem Element <tt><VerifySignatureEnvironment></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> +  <SupplementProfile> +    <Content Reference="http://anyhost/envSchema.xsd"> +      <XMLContent xml:space="preserve"> +        <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"> +          <xsd:element name="Document"> +            <xsd:complexType mixed="true"> +              <xsd:sequence minOccurs="0" +                            maxOccurs="unbounded"> +                <xsd:any namespace="##any" +                         processContents="lax"/> +              </xsd:sequence> +            </xsd:complexType> +          </xsd:element> +        </xsd:schema> +      </XMLContent> +    </Content> +  </SupplementProfile> +</pre> + +<pre> +  <ReturnHashInputData/> +</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> +  <TrustProfileID>TrustProfile1</TrustProfileID> +</VerifyXMLSignatureRequest> +</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"> </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><VerifyCMSSignatureRequest></tt>.  Die Bedeutung der einzelnen Elemente +wird im folgenden beschrieben: +<pre> +<VerifyCMSSignatureRequest +  xmlns="http://reference.e-government.gv.at/ +    namespace/moa/20020822#" +  xmlns:dsig="http://www.w3.org/2000/09/xmldsig#" +  Signatories="1"> +</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> +  <DateTime>2003-04-04T09:30:47-05:00</DateTime> +</pre> +Das optionale Element <tt><DateTime></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> +  <CMSSignature>MIIGAAYJKo...mT9fmvKwdJOiA==</CMSSignature> +</pre> +Das Element <tt><CMSSignature></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> +  <TrustProfileID>TrustProfile1<TrustProfileID> +</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">© 2003 <!-- Development Center, BRZ GmbH --></div> +</td></tr></table> +<br /> + + +</div> +</body> +</html>
\ No newline at end of file | 
