aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorgregor <gregor@d688527b-c9ab-4aba-bd8d-4036d912da1d>2004-08-17 13:57:28 +0000
committergregor <gregor@d688527b-c9ab-4aba-bd8d-4036d912da1d>2004-08-17 13:57:28 +0000
commit82fe53b499376fe87695d0ffb7e38781bdf8b642 (patch)
tree3fb01977b3384791232ba084b02183a4eb308ef6
parentd5b0d09a6bc0bc93d64b657d269a7ff6951c2d02 (diff)
downloadmoa-id-spss-82fe53b499376fe87695d0ffb7e38781bdf8b642.tar.gz
moa-id-spss-82fe53b499376fe87695d0ffb7e38781bdf8b642.tar.bz2
moa-id-spss-82fe53b499376fe87695d0ffb7e38781bdf8b642.zip
Zwischensicherung
git-svn-id: https://joinup.ec.europa.eu/svn/moa-idspss/trunk@179 d688527b-c9ab-4aba-bd8d-4036d912da1d
-rw-r--r--spss.handbook/handbook/usage/usage.html148
1 files changed, 142 insertions, 6 deletions
diff --git a/spss.handbook/handbook/usage/usage.html b/spss.handbook/handbook/usage/usage.html
index 3cea817f1..078c7b81f 100644
--- a/spss.handbook/handbook/usage/usage.html
+++ b/spss.handbook/handbook/usage/usage.html
@@ -33,7 +33,11 @@
<li><a href="#webservice_xmlrequests_erstellungxml_ergaenzungsobjekte">Erg&auml;nzungsobjekte</a> </li>
</ol>
</li>
- <li>Pr&uuml;fung einer CMS-Signatur</li>
+ <li><a href="#webservice_xmlrequests_pruefungcms">Pr&uuml;fung einer CMS-Signatur </a> <ol>
+ <li><a href="#webservice_xmlrequests_pruefungcms_simple">Einfaches Beispiel</a></li>
+ <li><a href="#webservice_xmlrequests_pruefungcms_extended">Erweitertes Beispiel</a> </li>
+ </ol>
+ </li>
<li>Pr&uuml;fung einer XML-Signatur
<ol>
<li>Einfaches Beispiel</li>
@@ -88,7 +92,7 @@
&lt;/CreateTransformsInfoProfile&gt;</pre>
Zu jedem Daten-Objekt k&ouml;nnen optional Transformationen (z.B. XPath, XSLT, Base64-Decodierung, etc.) angegeben werden. Werden - wie hier im Beispiel - keine Transformationen angegeben, so muss zumindest der MIME-Type der zu signierenden Daten spezifiziert werden. </p>
<h5>Response</h5>
- <p><code><a href="../../clients/webservice/resources/requests/CreateXMLSignatureRequest.Simple.resp.xml" target="_blank">CreateXMLSignatureRequest.Simple.resp.xml</a></code> ist eine typische Response des SS Webservice auf den obigen Request. Sein Aufbau wird nachfolgend analysiert. Bitte beachten Sie, dass der die oben dargestellte Response zur bessernen Lesbarkeit einger&uuml;ckt und gek&uuml;rzt wurde.</p>
+ <p><code><a href="../../clients/webservice/resources/requests/CreateXMLSignatureRequest.Simple.resp.xml" target="_blank">CreateXMLSignatureRequest.Simple.resp.xml</a></code> ist eine typische Response des SS Webservices auf den obigen Request. Sein Aufbau wird nachfolgend analysiert. Bitte beachten Sie, dass der die dargestellte Response zur bessernen Lesbarkeit einger&uuml;ckt und gek&uuml;rzt wurde.</p>
<p>
<pre>&lt;CreateXMLSignatureResponse
xmlns=&quot;http://reference.e-government.gv.at/namespace/moa/20020822#&quot; <br> xmlns:dsig=&quot;http://www.w3.org/2000/09/xmldsig#&quot;&gt;<br> &lt;SignatureEnvironment&gt;<br> &lt;dsig:Signature Id=&quot;signature-1-1&quot; xmlns:dsig=&quot;http://www.w3.org/2000/09/xmldsig#&quot;&gt;<br> &lt;dsig:SignedInfo&gt;
@@ -283,9 +287,9 @@ Ich habe weiters ein eigenens ID-Attribut bekommen.&lt;/doc:Paragraph&gt;
</pre>
<p>Das Element <code>CreateSignatureInfo</code> ist grunds&auml;tzlich optional, und muss nur angegeben werden, wenn die zu erstellende Signatur von MOA SS in ein bestehendes XML-Dokument integriert werden soll (was in diesem Beispiel ja der Fall ist).</p>
<p><code>CreateSignatureEnvironment</code> enth&auml;lt das XML-Dokument, in das die zu erstellende Signatur integriert werden soll. In diesem Beispiel wird dieses Dokument mit Hilfe von <code>LocRefContent</code> referenziert, d. h. MOA SS wird versuchen, die darin enthaltene URL aufzul&ouml;sen, um das XML-Dokument zu erhalten. Alternativ k&ouml;nnte auch <code>Base64Content</code> (explizite Angabe des XML-Dokuments in base64 kodierter Form) oder <code>XMLContent</code> (direkte Angabe des XML-Dokuments im Request) verwendet werden.</p>
-<p><code>CreateSignatureLocation</code> enth&auml;lt die Angabe jener Stelle, an der die Signatur in das XML-Dokument eingesetzt werden soll. Der Inhalt dieses Elements bezeichnet mittels <span class="term">XPath</span>-Ausdruck das <span class="term">Parent</span>-Element der Signatur, der Wert des Attributs <code>CreateSignatureLocation/@Index</code> enth&auml;lt den Offset innerhalb dieses <span class="term">Parent</span>-Elements. Betrachten Sie zur Verdeutlichung das XML-Dokument <a href="../../clients/common/referencedData/XMLDocument.xml" target="_blank"><code>XMLDocument.xml</code></a>, in das die Signatur integriert werden soll: Die Signatur soll unmittelbar nach dem zweiten <code>doc:Paragraph</code> Element in das XML-Dokument eingef&uuml;gt werden. Der Inhalt von <code>CreateSignatureLocation</code> (<code>/doc:XMLDocument</code>) selektiert das zuk&uuml;nftige <span class="term">Parent</span>-Element der Signatur, also <code>doc:XMLDocument</code>. Das Attribut <code>Index</code> enth&auml;lt deshalb den Wert <code>4</code> (und nicht etwa <code>2</code> oder <code>3</code>), da erstens bei <code>0</code> zu z&auml;hlen begonnen wird, und zweitens auch die Text-Knoten, die lediglich Whitespace enthalten, f&uuml;r diesen Offset z&auml;hlen (um diese Textknoten erkennen zu k&ouml;nnen, m&uuml;ssen Sie das XML-Dokument in einem Text-Editor &ouml;ffnen). Beachten Sie weiters, dass das im <span class="term">XPath</span>-Ausdruck verwendete Namespace-Prefix <code>doc</code> im Kontext des Elements <code>CreateSignatureLocation</code> bekannt sein muss. Deshalb enth&auml;lt dieses Element auch die entsprechende Namespace-Deklaration (<code>xmlns:doc=&quot;urn:document&quot;</code>).</p>
+<p><a name="webservice_xmlrequests_erstellungxml_daten_hinweisCreateSignatureLocation"></a><code>CreateSignatureLocation</code> enth&auml;lt die Angabe jener Stelle, an der die Signatur in das XML-Dokument eingesetzt werden soll. Der Inhalt dieses Elements bezeichnet mittels <span class="term">XPath</span>-Ausdruck das <span class="term">Parent</span>-Element der Signatur, der Wert des Attributs <code>CreateSignatureLocation/@Index</code> enth&auml;lt den Offset innerhalb dieses <span class="term">Parent</span>-Elements. Betrachten Sie zur Verdeutlichung das XML-Dokument <a href="../../clients/common/referencedData/XMLDocument.xml" target="_blank"><code>XMLDocument.xml</code></a>, in das die Signatur integriert werden soll: Die Signatur soll unmittelbar nach dem zweiten <code>doc:Paragraph</code> Element in das XML-Dokument eingef&uuml;gt werden. Der Inhalt von <code>CreateSignatureLocation</code> (<code>/doc:XMLDocument</code>) selektiert das zuk&uuml;nftige <span class="term">Parent</span>-Element der Signatur, also <code>doc:XMLDocument</code>. Das Attribut <code>Index</code> enth&auml;lt deshalb den Wert <code>4</code> (und nicht etwa <code>2</code> oder <code>3</code>), da erstens bei <code>0</code> zu z&auml;hlen begonnen wird, und zweitens auch die Text-Knoten, die lediglich Whitespace enthalten, f&uuml;r diesen Offset z&auml;hlen (um diese Textknoten erkennen zu k&ouml;nnen, m&uuml;ssen Sie das XML-Dokument in einem Text-Editor &ouml;ffnen). Beachten Sie weiters, dass das im <span class="term">XPath</span>-Ausdruck verwendete Namespace-Prefix <code>doc</code> im Kontext des Elements <code>CreateSignatureLocation</code> bekannt sein muss. Deshalb enth&auml;lt dieses Element auch die entsprechende Namespace-Deklaration (<code>xmlns:doc=&quot;urn:document&quot;</code>).</p>
<h5>Response</h5>
-<p><code><a href="../../clients/webservice/resources/requests/CreateXMLSignatureRequest.Refs.resp.xml" target="_blank">CreateXMLSignatureRequest.Refs.resp.xml</a></code> ist eine typische Response des SS Webservice auf den obigen Request. Sein Aufbau wird nachfolgend analysiert. Bitte beachten Sie, dass der die oben dargestellte Response zur bessernen Lesbarkeit einger&uuml;ckt und gek&uuml;rzt wurde.</p>
+<p><code><a href="../../clients/webservice/resources/requests/CreateXMLSignatureRequest.Refs.resp.xml" target="_blank">CreateXMLSignatureRequest.Refs.resp.xml</a></code> ist eine typische Response des SS Webservices auf den obigen Request. Sein Aufbau wird nachfolgend analysiert. Bitte beachten Sie, dass der die dargestellte Response zur bessernen Lesbarkeit einger&uuml;ckt und gek&uuml;rzt wurde.</p>
<pre>
&lt;CreateXMLSignatureResponse
xmlns=&quot;http://reference.e-government.gv.at/namespace/moa/20020822#&quot;
@@ -466,13 +470,13 @@ Ich habe weiters ein eigenens ID-Attribut bekommen.&lt;/doc:Paragraph&gt;
&lt;/CreateTransformsInfoProfile&gt;
&lt;/DataObjectInfo&gt;
</pre>
-<p>F&uuml;r das zweite zu signierende Datenobjekt werden die Referenz-Eingangsdaten wiederum mittels <code>DataObject/@Reference</code> referenziert, d. h. MOA SS l&ouml;st die darin enthaltene URL auf, um zu den Daten zu gelangen. Es handelt sich dabei um ein <a href="../../clients/common/referencedData/XMLDocument.xml" target="_blank">XML-Dokument</a>.</p>
+<p>F&uuml;r das zweite zu signierende Datenobjekt werden die Referenz-Eingangsdaten wiederum mittels <code>DataObject/@Reference</code> referenziert, d. h. MOA SS l&ouml;st die darin enthaltene URL auf, um zu den Daten zu gelangen. Es handelt sich dabei um ein <a href="../../clients/webservice/resources/requests/CreateXMLSignatureRequest.Transforms.xml" target="_blank">XML-Dokument</a>.</p>
<p>Zun&auml;chst soll von diesem XML-Dokument jedoch ein Teil weggeschnitten werden, da er nicht mitsigniert werden soll. F&uuml;r diesen Zweck bietet sich die<a href="http://www.w3.org/TR/2002/REC-xmldsig-filter2-20021108/" target="_blank" class="term"> XPath Filter 2 Transformation</a> an. Das Attribut <code>dsig:Transform/@Algorithm</code> ist dazu auf den Wert <code>http://www.w3.org/2002/06/xmldsig-filter2</code> zu setzen. Diese Transformation ben&ouml;tigt weiters Transformationsparameter. Diese werden als Kindelement <code>xp2:XPath</code> in <code>dsig:Transform</code> angegeben. Das Attribut <code>Filter</code> selektiert den Filtermodus; f&uuml;r das Bespiel wird den Modus <code>subtract</code> ben&ouml;tigt, da ein Teil weggefiltert werden soll. Der Textinhalt von <code>xp2:XPath</code> ist ein XPath-Ausdruck, der den Wurzelknoten jenes Teilbaums selektiert, der weggefiltert werden soll. F&uuml;r das Beispiel soll das zweite <code>Paragraph</code> Element des XML-Dokuments weggefiltert werden. Beachten Sie, dass das im XPath-Ausdruck verwendete Namespace-Prefix <code>doc</code> im Kontext des <code>xp2:XPath</code> Elements deklariert sein muss.</p>
<p>Als n&auml;chstes soll nun das XML-Dokument mit Hilfe eines Stylesheets in ein XHTML-Dokument &uuml;bergef&uuml;hrt werden. Dazu kann die <a href="http://www.w3.org/TR/2002/REC-xmldsig-core-20020212/#sec-XSLT" target="_blank" class="term">XSLT Transformation</a> verwendet werden. Das Attribut <code>dsig:Transform/@Algorithm</code> ist dazu auf den Wert <code>http://www.w3.org/TR/1999/REC-xslt-19991116</code> zu setzen. Auch diese Transformation ben&ouml;tigt Transformationsparameter: Als Kindelement von <code>dsig:Transform</code> wird jener Stylesheet angegeben, mit dem die Stylesheet-Transformation ausgef&uuml;hrt werden soll.</p>
<p>Abschlie&szlig;end soll, wie in der Spezifikation der<span class="term"> XSLT-Transformation</span> <a href="http://www.w3.org/TR/2002/REC-xmldsig-core-20020212/#sec-XSLT" target="_blank">empfohlen</a>, eine Kanonisierungstransformation angewendet werden. Damit k&ouml;nnen Unterschiede im Output unterschiedlicher XSLT-Engines, wie sie in der Praxis vorkommen, abgefangen werden. Beachten Sie, dass als Voraussetzung dazu die Output-Methode im Stylesheet auf <code>xml</code> festgelegt werden muss (<code>&lt;xsl:output method=&quot;xml&quot;&gt;</code>), denn nur XML-Output kann anschlie&szlig;end kanonisiert werden. Das Attribut <code>dsig:Transform/@Algorithm</code> ist f&uuml;r die <a href="http://www.w3.org/TR/2002/REC-xmldsig-core-20020212/#sec-c14nAlg" target="_blank"><span class="term">Canonical XML Transformation</span></a> auf den Wert http://www.w3.org/TR/2001/REC-xml-c14n-20010315 zu setzen. Die Transformation ben&ouml;tigt keine Transformationsparameter.</p>
<p>Das Ergebnis der drei hintereinandergeschalteten Transformationen, welches der Hashwert-Berechnung zuflie&szlig;t, finden Sie <a href="../../clients/webservice/resources/requests/transformResults/CreateXMLSignatureRequest.Transforms.hashinput.ref2.txt" target="_blank">hier</a>. </p>
<h5>Response</h5>
-<p><code><a href="../../clients/webservice/resources/requests/CreateXMLSignatureRequest.Transforms.resp.xml" target="_blank">CreateXMLSignatureRequest.Transforms.resp.xml</a></code> ist eine typische Response des SS Webservice auf den obigen Request. Sein Aufbau wird nachfolgend analysiert. Bitte beachten Sie, dass der die oben dargestellte Response zur bessernen Lesbarkeit einger&uuml;ckt und gek&uuml;rzt wurde.</p>
+<p><code><a href="../../clients/webservice/resources/requests/CreateXMLSignatureRequest.Transforms.resp.xml" target="_blank">CreateXMLSignatureRequest.Transforms.resp.xml</a></code> ist eine typische Response des SS Webservices auf den obigen Request. Sein Aufbau wird nachfolgend analysiert. Bitte beachten Sie, dass der die dargestellte Response zur bessernen Lesbarkeit einger&uuml;ckt und gek&uuml;rzt wurde.</p>
<pre>
&lt;CreateXMLSignatureResponse
xmlns=&quot;http://reference.e-government.gv.at/namespace/moa/20020822#&quot;
@@ -519,6 +523,138 @@ Ich habe weiters ein eigenens ID-Attribut bekommen.&lt;/doc:Paragraph&gt;
<p>Die zweite <code>dsig:Reference</code> wurde auf Grund des zweiten <code>DataObjectInfo</code> im Request erstellt. Man erkennt auch hier gut, dass die URL auf die Referenz-Eingangsdaten (Wert des Attributs <code>dsig:Reference/@URI</code>) aus <code>DataObject/@Reference</code> &uuml;bernommen und die drei Transformationen wie im Request angegeben eingef&uuml;gt wurden. </p>
<h4><a name="webservice_xmlrequests_erstellungxml_ergaenzungsobjekte"></a>2.1.1.4 Erg&auml;nzungsobjekte </h4>
<h5>Request</h5>
+<p>Dieses Beispiel (<a href="../../clients/webservice/resources/requests/CreateXMLSignatureRequest.Supplements.xml" target="_blank"><code>CreateXMLSignatureRequest.Supplements.xml</code></a>) erl&auml;utert die Verwendung von Erg&auml;nzungsobjekten vor. Ein Erg&auml;nzungsobjekt betrifft entweder ein zu signierendes Datum (Zusammenhang mit einem <code>DataObject</code>) oder jenes Dokument, in das eine zu erzeugende Signatur eingef&uuml;gt werden soll (Zusammenhang mit <code>CreateSignatureEnvironment</code>). Es muss dann angegeben werden, wenn in einem zu signierenden Datum bzw. im Einf&uuml;gedokument auf Daten per Referenz verwiesen wird, diese referenzierten Daten aber von MOA SS nicht aufgel&ouml;st werden k&ouml;nnen. Das Erg&auml;nzungsobjekt enth&auml;lt dann genau diese Daten die nicht von MOA SS aufgel&ouml;st werden k&ouml;nnen.</p>
+<pre>
+&lt;CreateXMLSignatureRequest
+ xmlns=&quot;http://reference.e-government.gv.at/namespace/moa/20020822#&quot;
+ xmlns:dsig=&quot;http://www.w3.org/2000/09/xmldsig#&quot;&gt;
+ &lt;KeyIdentifier&gt;KG_allgemein&lt;/KeyIdentifier&gt;
+ &lt;SingleSignatureInfo SecurityLayerConformity=&quot;false&quot;&gt;
+</pre>
+<p>Die Signatur soll mit dem Schl&uuml;ssel <code>KG_allgemein</code> erstellt werden; jene Elemente, die speziell f&uuml;r eine Security-Layer V1.1 konforme Signatur notwendig sind (vergleiche <a href="#webservice_xmlrequests_erstellungxml_simple" class="term">Einfaches Beispiel</a>), brauchen nicht erstellt zu werden (<code>SecurityLayerConformity=&quot;false&quot;</code>).</p>
+<pre>
+ &lt;DataObjectInfo Structure=&quot;detached&quot;&gt;
+ &lt;DataObject Reference=&quot;#Para2&quot;/&gt;
+</pre>
+<p>Das zu signierende Datum in diesem Beispiel ist ein Teil des Dokuments, in das die zu erstellende Signatur eingef&uuml;gt werden soll. Der Wert des <code>Reference</code> Attributs ist <code>#Para2</code>, das bedeutet, dass jenes Element des Einf&uuml;gedokuments signiert werden soll, das ein ID-Attribut mit dem Wert <code>#Para2</code> aufweist. Damit MOA SS diesen Hinweis auswerten kann, muss es das Einf&uuml;gedokument validierend parsen, denn sonst w&uuml;sste es ja nicht, welche Attribute &uuml;berhaupt ID-Attribute sind. Das zum validierenden Parsen notwendige XML-Schema wird MOA SS in diesem Beispiel &uuml;ber ein Erg&auml;nzungsobjekt zum Einf&uuml;gedokument mitgeteilt (siehe weiter unten). </p>
+<pre>
+ &lt;CreateTransformsInfoProfile&gt;
+ &lt;CreateTransformsInfo&gt;
+ &lt;dsig:Transforms&gt;
+ &lt;dsig:Transform Algorithm=&quot;http://www.w3.org/TR/1999/REC-xslt-19991116&quot;&gt;
+ &lt;xsl:stylesheet version=&quot;1.0&quot; xmlns:xsl=&quot;http://www.w3.org/1999/XSL/Transform&quot;&gt;
+ &lt;xsl:include href=&quot;XMLDocument.Para.xsl&quot;/&gt;
+&lt;/xsl:stylesheet&gt;
+ &lt;/dsig:Transform&gt;
+ &lt;dsig:Transform Algorithm=&quot;http://www.w3.org/2001/10/xml-exc-c14n#&quot;/&gt;
+ &lt;/dsig:Transforms&gt;
+ &lt;FinalDataMetaInfo&gt;
+ &lt;MimeType&gt;application/xhtml+xml&lt;/MimeType&gt;
+ &lt;/FinalDataMetaInfo&gt;
+</pre>
+<p>Das Beispiel enth&auml;lt als erste Transformation eine <span class="term">XSLT-Transformation</span>. Der als Kindelement von <code>dsig:Transform</code> angegebene Stylesheet verweist dabei mittels <code>xsl:include</code> auf einen weiteren Stylesheet. Dieser weitere Stylesheet kann jedoch von MOA nicht direkt aufgel&ouml;st werden, da er als relative Referenz angegeben wird. Deshalb ist es notwendig, diesen weiteren Stylesheet als Erg&auml;nzungsobjekt zu den signierenden Daten anzugeben:</p>
+<pre>
+ &lt;/CreateTransformsInfo&gt;
+ &lt;Supplement&gt;
+ &lt;Content Reference=&quot;XMLDocument.Para.xsl&quot;&gt;
+ &lt;LocRefContent&gt;http://localhost:8080/referencedData/XMLDocument.Para.xsl&lt;/LocRefContent&gt;
+ &lt;/Content&gt;
+ &lt;/Supplement&gt;
+ &lt;/CreateTransformsInfoProfile&gt;
+ &lt;/DataObjectInfo&gt;
+</pre>
+<p>Ein Erg&auml;nzungsobjekt f&uuml;r zu signierende Daten wird im entsprechenden <code>DataObjectInfo</code> Element angegeben, und zwar als Inhalt des Elements <code>CreateTransformsInfoProfile/Supplement</code>. Das verpflichtend zu verwendende Attribut <code>Content/@Reference</code> enth&auml;lt dabei die Referenz auf das Erg&auml;nzungsobjekt in exakt jener Schreibweise, wie sie in der <code>xsl:include</code> Direktive vorkommt, hier also <code>XMLDocument.Para.xsl</code>. Das Element <code>Content</code> beinhaltet das Erg&auml;nzungsobjekt so, wie es MOA SS verwenden soll (Elemente <code>Base64Content</code> oder <code>XMLContent</code>, vergleiche <a href="#webservice_xmlrequests_erstellungxml_simple"><span class="term">Einfaches Beispiel</span></a>), bzw. enth&auml;lt eine von MOA SS aufl&ouml;sbare Referenz auf das Erg&auml;nzungsobjekt (Element <code>LocRefContent</code>, vergleiche <a href="#webservice_xmlrequests_erstellungxml_simple"><span class="term">Einfaches Beispiel</span></a>). Im konkreten Beispiel wird <code>LocRefContent</code> verwendet. </p>
+<pre>
+ &lt;CreateSignatureInfo&gt;
+ &lt;CreateSignatureEnvironment
+ Reference=&quot;http://localhost:8080/referencedData/XMLDocument.withSchemaHint.xml&quot;/&gt;
+ &lt;CreateSignatureEnvironmentProfile&gt;
+ &lt;CreateSignatureLocation
+ Index=&quot;4&quot; xmlns:doc=&quot;urn:document&quot;&gt;/doc:XMLDocument&lt;/CreateSignatureLocation&gt;
+</pre>
+<p>Eingef&uuml;gt werden soll die zu erzeugende Signatur in ein <a href="../../clients/common/referencedData/XMLDocument.withSchemaHint.xml" target="_blank">bestehendes Dokument</a>, das MOA SS durch Aufl&ouml;sen der in <code>CreateSignatureEnvironment/@Reference</code> angegebenen URL erh&auml;lt. Eingef&uuml;gt werden soll die Signatur als f&uuml;nfter Kindknoten des Wurzelelements <code>doc:XMLDocument</code>. Beachten Sie wiederum die <a href="#webservice_xmlrequests_erstellungxml_daten_hinweisCreateSignatureLocation">Hinweise</a> zur Z&auml;hlweise f&uuml;r das Attribut <code>Index</code> bzw. zur Deklaration der im XPath-Ausdruck verwendeten Namespace-Deklarationen (hier <code>doc</code>). </p>
+<pre>
+ &lt;Supplement&gt;
+ &lt;Content Reference=&quot;urn:XMLDocument.xsd&quot;&gt;
+ &lt;LocRefContent&gt;http://localhost:8080/referencedData/XMLDocument.xsd&lt;/LocRefContent&gt;
+ &lt;/Content&gt;
+ &lt;/Supplement&gt;
+ &lt;/CreateSignatureEnvironmentProfile&gt;
+ &lt;/CreateSignatureInfo&gt;
+</pre>
+<p>Wie oben bereits angemerkt, muss MOA SS zur Aufl&ouml;sung der ID-Referenz <code>#Para2</code> das Einf&uuml;gedokument validierend parsen. Im Einf&uuml;gedokument ist zwar nun ein Hinweis auf die dazu notwendige Grammatikinformation in Form eines XML-Schemas enthalten (Attribut <code>xsi:schemaLocation</code> enth&auml;lt den Wert <code>&quot;urn:document urn:XMLDocument.xsd&quot;</code>). Nachdem die darin angegebene URI <code>urn:XMLDocument.xsd</code> jedoch von MOA nicht direkt aufgel&ouml;st werden kann, wird im Request ein Erg&auml;nzungsobjekt zum Einf&uuml;gedokument angegeben (<code>CreateSignatureEnvironmentProfile/Supplement</code>). Das Attribut <code>Content/@Reference</code> enth&auml;lt die Referenz auf das Erg&auml;nzungsobjekt in exakt jener Schreibweise, wie sie im Attribut <code>xsi:schemaLocation</code> angegeben wurde (<code>urn:XMLDocument.xsd</code>). Das Element <code>Content</code> beinhaltet das Erg&auml;nzungsobjekt so, wie es MOA SS verwenden soll (Elemente <code>Base64Content</code> oder <code>XMLContent</code>, vergleiche <a href="#webservice_xmlrequests_erstellungxml_simple"><span class="term">Einfaches Beispiel</span></a>), bzw. enth&auml;lt eine von MOA SS aufl&ouml;sbare Referenz auf das Erg&auml;nzungsobjekt (Element <code>LocRefContent</code>, vergleiche <a href="#webservice_xmlrequests_erstellungxml_simple"><span class="term">Einfaches Beispiel</span></a>). Im konkreten Beispiel wird <code>LocRefContent</code> verwendet. </p>
+<p>Beachten Sie bitte, dass die Verwendung von Erg&auml;nzungsobjekten f&uuml;r die Mitteilung von XML-Schemata nur dann funktioniert, wenn die Referenz auf das XML-Schema in der <code>xsi:schemaLocation</code> eine absolute URI ist (also z.B. wie hier <code>urn:XMLDocument.xsd</code> oder auch <code>http://example.org/XMLDocument.xsd</code>, nicht aber z.B. <code>XMLDocument.xsd</code> oder <code>../schemas/XMLDocument.xsd</code>).</p>
+<p>Auch f&uuml;r das Aufl&ouml;sen eines Verweises in einer DTD kann in analoger Weise von Erg&auml;nzungsobjekten Gebrauch gemacht werden. </p>
+<h5>Response</h5>
+<p><code><a href="../../clients/webservice/resources/requests/CreateXMLSignatureRequest.Supplements.resp.xml" target="_blank">CreateXMLSignatureRequest.Supplements.resp.xml</a></code> ist eine typische Response des SS Webservices auf den obigen Request. Er wird an dieser Stelle nicht n&auml;her analysiert, da er keine f&uuml;r das Thema des Beispiels relevanten Besonderheiten aufweist.</p>
+<h3><a name="webservice_xmlrequests_pruefungcms" id="webservice_xmlrequests_pruefungcms"></a>2.1.2 Pr&uuml;fung einer CMS-Signatur</h3>
+<h4><a name="webservice_xmlrequests_pruefungcms_simple" id="webservice_xmlrequests_pruefungcms_simple"></a>2.1.2.1 Einfaches Beispiel</h4>
+<h5>Request</h5>
+<p>Dieses Beispiel (<a href="../../clients/webservice/resources/requests/VerifyCMSSignatureRequest.Simple.xml" target="_blank"><code>VerifyCMSSignatureRequest.Simple.xml</code></a>) ist ein einfacher Request zur Pr&uuml;fung einer CMS-Signatur. Sein Aufbau wird nachfolgend analysiert. Bitte beachten Sie, dass der nachfolgende Ausschnitt aus dem Request aus Gr&uuml;nden der &Uuml;bersichtlichkeit gek&uuml;rzt wurde.</p>
+<pre>
+&lt;VerifyCMSSignatureRequest
+ xmlns=&quot;http://reference.e-government.gv.at/namespace/moa/20020822#&quot;&gt;
+ &lt;CMSSignature&gt;MIIHsAYJKo...4sLL6kpOPJaLg==&lt;/CMSSignature&gt;
+ &lt;TrustProfileID&gt;Test-Signaturdienste&lt;/TrustProfileID&gt;
+&lt;/VerifyCMSSignatureRequest&gt;
+</pre>
+<p>Der Request enth&auml;lt zun&auml;chst in <code>CMSSignature</code> die zu pr&uuml;fende CMS-Signatur, und zwar in base64 kodierter Form. In diesem Beispiel wird davon ausgegangen, dass es sich dabei um eine <span class="term">Enveloping</span> Signature handelt, d. h. dass die signierten Daten als Teil der CMS-Struktur vorhanden sind. F&uuml;r die Behandlung einer <span class="term">Detached</span> Signature sei auf das <a href="#webservice_xmlrequests_pruefungcms_detached">n&auml;chste Beispiel</a> verwiesen.</p>
+<p>Abschlie&szlig;end enth&auml;lt der Request in <code>TrustProfileID</code> die Angabe des Vertrauensprofils, gegen das die Vertrauenspr&uuml;fung des Zertifikats durchgef&uuml;hrt werden soll. Ein Vertrauensprofil mit dem angegebenen Namen muss in der f&uuml;r die Signaturpr&uuml;fung verwendeten Instanz von MOA SP eingerichtet sein. </p>
+<h5>Response</h5>
+<p><code><a href="../../clients/webservice/resources/requests/VerifyCMSSignatureRequest.Simple.resp.xml" target="_blank">VerifyCMSSignatureRequest.Simple.resp.xml</a></code> ist eine typische Response des SP Webservices auf den obigen Request. Sein Aufbau wird nachfolgend analysiert. Bitte beachten Sie, dass der die dargestellte Response zur bessernen Lesbarkeit einger&uuml;ckt und gek&uuml;rzt wurde.</p>
+<pre>
+&lt;VerifyCMSSignatureResponse
+ xmlns=&quot;http://reference.e-government.gv.at/namespace/moa/20020822#&quot;
+ xmlns:dsig=&quot;http://www.w3.org/2000/09/xmldsig#&quot;&gt;
+ &lt;SignerInfo&gt;
+ &lt;dsig:X509Data&gt;
+ &lt;dsig:X509SubjectName&gt;serialNumber=615536615920,givenName=Gregor,SN=Karlinger,
+CN=Gregor Karlinger,C=AT&lt;/dsig:X509SubjectName&gt;
+ &lt;dsig:X509IssuerSerial&gt;
+ &lt;dsig:X509IssuerName&gt;CN=TrustSignTest-Sig-01,OU=TrustSignTest-Sig-01,
+O=A-Trust Ges. für Sicherheitssysteme im elektr. Datenverkehr GmbH,C=AT&lt;/dsig:X509IssuerName&gt;
+ &lt;dsig:X509SerialNumber&gt;2892&lt;/dsig:X509SerialNumber&gt;
+ &lt;/dsig:X509IssuerSerial&gt;
+ &lt;dsig:X509Certificate&gt;...&lt;/dsig:X509Certificate&gt;
+ &lt;QualifiedCertificate/&gt;
+ &lt;/dsig:X509Data&gt;
+ &lt;/SignerInfo&gt;
+</pre>
+<p>Die Response enth&auml;lt zun&auml;chst in <code>SignerInfo/dsig:X509Data</code> Informationen &uuml;ber den Signator, die aus dem in der CMS-Signatur enthaltenen Signatorzertifikat entnommen sind. </p>
+<p><code>dsig:X509SubjectName</code> ist immer vorhanden und enth&auml;lt den Namen des Signators. <code>dsig:X509IssuerSerial</code> ist ebenfalls immer vorhanden und enth&auml;lt den Namen des Austellers des Signatorzertifikats (<code>dsig:X509IssuerName</code>) sowie die Seriennummer des Zertifikats (<code>dsig:X509SerialNumber</code>). Auch <code>dsig:X509Certificate</code> ist ist immer vorhanden und enth&auml;lt das Signatorzertifikat in base64 kodierter Form. </p>
+<p>Optional vorhanden ist das inhaltslose Element <code>QualifiedCertificate</code>, und zwar dann, wenn es sich beim Signatorzertifikat um ein qualifiziertes Zertifikat handelt. Ebenfalls optional vorhanden ist schlie&szlig;lich - in diesem Beispiel nicht ersichtlich - das Element <code>PublicAuthority</code>, und zwar dann, wenn das Signatorzertifikat die &ouml;sterreichspezifische Zertifikatserweiterung <a href="http://www.cio.gv.at/it-infrastructure/pki/" target="_blank">Verwaltungseigenschaft</a> aufweist. Ist in dieser Zertifikatserweiterung das Verwaltungskennzeichen mitkodiert, wird dieses Kennzeichen als Textinhalt des optionalen Elements <code>PublicAuthority/Code</code> geliefert.</p>
+<pre>
+ &lt;SignatureCheck&gt;
+ &lt;Code&gt;0&lt;/Code&gt;
+ &lt;/SignatureCheck&gt;
+</pre>
+<p> Anschlie&szlig;end an <code>SignerInfo</code> enth&auml;lt die Response mit <code>SignatureCheck/Code</code> das Resultat der kryptographischen Pr&uuml;fung der Signatur. In unserem Beispiel ist dort der Wert <code>0</code> enthalten, d. h. die Signatur konnte erfolgreich validiert werden. F&uuml;r eine &Uuml;bersicht der m&ouml;glichen Kodes siehe <a href="http://www.buergerkarte.at/konzept/securitylayer/spezifikation/20040514/core/Core.html#signaturpruefungNachCMSAntwort" target="_blank">Security-Layer 1.2</a>.</p>
+<pre>
+ &lt;CertificateCheck&gt;
+ &lt;Code&gt;1&lt;/Code&gt;
+ &lt;/CertificateCheck&gt;
+</pre>
+<p>Abschlie&szlig;end enth&auml;lt die Response mit <code>CertificateCheck/Code</code> das Resultat der Pr&uuml;fung des Signatorzertifikats. Zun&auml;chst pr&uuml;ft MOA SP, ob ausgehend vom Signatorzertifikat eine Zertifikatskette zu einem im zugeh&ouml;rigen Vertrauensprofil konfigurierten sog. <span class="term">Trust Anchor</span> gebildet werden kann. Gelingt dies, wird die G&uuml;ltigkeit jedes Zertifikats dieser Kette &uuml;berpr&uuml;ft. In unserem Beispiel enth&auml;lt <code>Code</code> den Wert <code>1</code>, d. h. MOA SP konnte die oben erl&auml;uterte Zertifikatskette nicht bilden. F&uuml;r eine &Uuml;bersicht der m&ouml;glichen Kodes siehe <a href="http://www.buergerkarte.at/konzept/securitylayer/spezifikation/20040514/core/Core.html#signaturpruefungNachCMSAntwort" target="_blank">Security-Layer 1.2</a>.</p>
+<h4><a name="webservice_xmlrequests_pruefungcms_erweitert" id="webservice_xmlrequests_pruefungcms_erweitert"></a>2.1.2.2 Erweitertes Beispiel</h4>
+<h5>Request</h5>
+<p>Dieses erweiterte Bespiel zur Pr&uuml;fung einer CMS-Signatur (<a href="../../clients/webservice/resources/requests/VerifyCMSSignatureRequest.Extended.xml" target="_blank"><code>VerifyCMSSignatureRequest.Extended.xml</code></a>) demonstriert die Pr&uuml;fung mehrerer Signatoren einer CMS-Signatur, die Angabe des Pr&uuml;fzeitpunkts sowie die Pr&uuml;fung einer <span class="term">Detached Signature</span>, d. h. einer Signatur in der die signierten Daten nicht enthalten sind und daher extra angegeben werden m&uuml;ssen. </p>
+<pre>
+&lt;VerifyCMSSignatureRequest
+ xmlns=&quot;http://reference.e-government.gv.at/namespace/moa/20020822#&quot;
+ Signatories=&quot;1&quot;&gt;
+ &lt;DateTime&gt;2004-08-17T08:00:00+02:00&lt;/DateTime&gt;
+ &lt;CMSSignature&gt;MIIHiwYJKoZI...kfiwsvqSk48lou&lt;/CMSSignature&gt;
+ &lt;DataObject&gt;
+ &lt;Content&gt;
+ &lt;Base64Content&gt;RGllc2UgRGF0ZW4gd2FyZW4gYmFzZTY0IGtvZGllcnQu&lt;/Base64Content&gt;
+ &lt;/Content&gt;
+ &lt;/DataObject&gt;
+ &lt;TrustProfileID&gt;Test-Signaturdienste&lt;/TrustProfileID&gt;
+&lt;/VerifyCMSSignatureRequest&gt;
+</pre>
+<p> Liegt eine zu pr&uuml;fende CMS-Signatur vor, die von mehreren Unterzeichnenden signiert worden ist, kann das Attribut <code>VerifyCMSSignatureRequest/@Signatories</code> verwendet werden, um jene Unterzeichnenden auszuw&auml;hlen, deren Unterschriften von MOA SP gepr&uuml;ft werden sollen. Der Default-Wert f&uuml;r dieses optionale Attribut ist <code>1</code>. Soll nicht die Unterschrift allein des ersten Unterzeichnenden gepr&uuml;ft werden, muss das Attribut angegeben werden. Es enth&auml;lt dann eine oder mehrere Ganzzahlwerte, getrennt durch Leerzeichen. Jede Ganzzahl bezeichnet einen Unterzeichnenden, wobei die Reihenfolge der Auflistung der Unterzeichner in der CMS-Signatur entspricht. Der Wert <code>&quot;1 3&quot;</code> w&uuml;rde beispielsweise aussagen, dass MOA SP die Unterschrift des ersten sowie des dritten Unterzeichnenden pr&uuml;fen soll.</p>
+<p>&nbsp; </p>
<h5>Response</h5>
+<p>&nbsp;</p>
</body>
</html>