From f85a709bf64b186f4006466f310d841b65d50ade Mon Sep 17 00:00:00 2001
From: gregor
CreateXMLSignatureRequest.Simple.resp.xml
ist eine typische Response des SS Webservices auf den obigen Request. Sein Aufbau wird nachfolgend analysiert. Bitte beachten Sie, dass die dargestellte Response zur bessernen Lesbarkeit eingerückt und gekürzt wurde.
@@ -118,7 +118,7 @@
...
<dsig:Object Id="signed-data-1-1-1">Diese Daten werden signiert.</dsig:Object>
</dsig:Signature>
</SignatureEnvironment>
</CreateXMLSignatureResponse>
-
CreateXMLSignatureResponse
enthält je erzeugter Signatur ein Element SignatureEnvironment
(in diesem Fall genau ein Element). SignatureEnvironment
enthält die von SS erzeugte XML-Signatur, die im obigen Request spezifiziert wurde. Man erkennt, dass die XML-Signatur genau ein Daten-Objekt unterzeichnet (ein dsig:Reference
Element ist enthalten). Das unterzeichnete Datenobjekt ist in der Signaturstruktur selbst enthalten (enveloping
), und zwar in einem dsig:Object
Element.
Die Response enthält zunächst in SignerInfo/dsig:X509Data
Informationen über den Signator, die aus dem in der XML-Signatur enthaltenen Signatorzertifikat entnommen sind (siehe Einfaches Beispiel).
- <HashInputData> + <HashInputData PartOf="SignedInfo"> <Base64Content>PGRvYzp...hNTERvY3VtZW50Pg==</Base64Content> </HashInputData>-
Wurde im Request - so wie in diesem Beispiel - das Element ReturnHashInputData
angegeben, enthält die Response nach SignerInfo
für jede dsig:Reference
in dsig:SignedInfo
der XML-Signatur ein Element HashInputData
, wobei die Reihenfolge der HashInputData
-Elemente der Reihenfolge der dsig:Reference
Element in dsig:SignedInfo
der XML-Signatur entspricht. Der Inhalt wird dabei stets mittels Base64Content
in base64-kodierter Form geliefert.
Wurde im Request - so wie in diesem Beispiel - das Element ReturnHashInputData
angegeben, enthält
+ die Response nach SignerInfo
für jede dsig:Reference
in dsig:SignedInfo
der
+ XML-Signatur (bzw. auch für jede dsig:Reference
aus einem dsig:Manifest
, auf
+ das mittels des Attributs Type="http://www.w3.org/2000/09/xmldsig#Manifest"
in einer dsig:Reference
aus dsig:SignedInfo
verwiesen
+ wird; solche Manifeste kommen aber in diesem Beispiel nicht vor) ein Element HashInputData
.
Die Reihenfolge der HashInputData
-Elemente
+ entspricht der Reihenfolge der dsig:Reference
-Elemente in dsig:SignedInfo
der
+ XML-Signatur (enthält die XML-Signatur auch dsig:Manifest
-Elemente, auf die jeweils in einer dsig:Reference
aus dsig:SignedInfo
verwiesen wird, werden zuerst HashInputData
-Elemente für alle dsig:Reference
-Elemente
+ aus dsig:SignedInfo
und anschließend HashInputData
-Elemente für alle dsig:Reference
-Elemente
+ aus den einzelnen dsig:Manifest
-Elementen geliefert).
Das Attribut PartOf weist mit dem Wert SignedInfo darauf hin, dass die dsig:Reference
,
+für welche die Hasheingangsdaten gelten, Teil von dsig:SignedInfo
ist (für eine dsig:Reference
aus
+einem dsig:SignedInfo
würde der gelieferte Wert XMLDSIGManifest
lauten; weiters
+würde HashInputData
in einem solchen Fall ein weiteres Attribut
+
+
+ReferringSigReference
aufweisen, dessen Wert die Nummer jener dsig:Reference
aus dsig:SignedInfo
als
+positive Ganzzahl repräsentiert, die auf das beinhaltende dsig:Manifest
verweist.).
Der Inhalt wird dabei stets mittels Base64Content
in
+ base64-kodierter Form geliefert.
<SignatureCheck> <Code>0</Code> @@ -1032,7 +1051,7 @@ Ich habe weiters ein eigenens ID-Attribut bekommen.</doc:Paragraph>
dsig:Reference
in dsig:SignedInfo
der Signatur eine vorgegebene Transformationskette inkludiert;Damit MOA SP die erste Teilprüfung durchführen kann, muss in SignatureManifestCheckParams
je dsig:Reference
Element in dsig:SignedInfo
der XML-Signatur ein Element ReferenceInfo
angeben. Ausgenommen sind dsig:Reference
-Elemente, die auf ein Signaturmanifest (Attribut Type
ist gesetzt und hat den Wert http://www.buergerkarte.at/specifications/Security-Layer/20020225#SignatureManifest
), auf ein XMLDSIG-Manifest (Attribut Type
ist gesetzt und hat den Wert http://www.w3.org/2000/09/xmldsig#Manifest
) oder auf Signatureigenschaften (Attribut Type
ist gesetzt und hat den Wert http://uri.etsi.org/01903/v1.1.1#SignedProperties
) verweisen.
Das Element ReferenceInfo
enthält eine oder mehrere erlaubte Transformationsketten, die jeweils durch ein Element VerifyTransformsInfoProfile/dsig:Transforms
repräsentiert werden. Im konkreten Beispiel werden für die einzige zu prüfende dsig:Reference
zwei erlaubte Transformationsketten angegeben. Die Transformationen in der dsig:Reference
müssen einer dieser beiden Ketten entsprechen; im konkreten Beispiel entsprechen sie der ersten.
Nachdem die erste erlaubte Transformationskette eine XSLT-Transformation mit einem inkludierten Stylesheet enthält, muss MOA SP auch überprüfen, ob dieser inkludierte Stylesheet korrekt durch ein Signaturmanifest mitunterschrieben wurde. Nachdem wichtig ist, dass nicht irgendein beliebiger Stylesheet verwendet und mitunterschrieben wurde, sondern genau jener, den die Anwendung bei der Signaturerstellung vorgegeben hat, muss die Anwendung MOA SP mitteilen, welcher Stylesheet das sein muss. Die Anwendung verwendet dazu das Element VerifyTransformsInfoProfile/TransformParameter
. Das Attribut TransformParameter/@URI
enthält die Referenz auf den Stylesheet genau so, wie er im Stylesheet-Parameter der zu prüfenden Signatur verwendet wird (dsig:Transform/xsl:stylesheet/xsl:inlcude/@href
). Für den Inhalt dieses Elements hat die Anwendung drei Möglichkeiten:
TransformParameter/@URI
angegebenen Referenz bei der Signaturprüfung zum gleichen Resultat führt wie seinerzeit beim Erstellen der Signatur (z.B. weil die Referenz auf einen Webserver unter Kontrolle der Anwendung zeigt);TransformParameter/Base64Content
explizit den inkludierten Stylesheet an. MOA SP verwendet dann diesen Stylesheet, um den Hashwert der dsig:Reference
im Signaturmanifest zu kontrollieren;TransformParameter/Hash
den Hashwert des inkludierten Stylesheets an. MOA SP löst dann die Referenz in dsig:Transform/xsl:stylesheet/xsl:inlcude/@href
auf und stellt sicher, dass der über das Auflösungsergebnis gebildete Hashwert jenem in TransformParameter/Hash
entspricht. Diese Möglichkeit wird die Anwendung dann verwenden, wenn es sich um einen sehr umfangreichen Stylesheet handelt, der nicht im Request mitübertragen werden soll.VerifyXMLSignatureRequest.SigManifest.resp.xml
ist eine typische Response des SP Webservices auf den obigen Request. Sein Aufbau wird nachfolgend analysiert. Bitte beachten Sie, dass die dargestellte Response zur bessernen Lesbarkeit eingerückt und gekürzt wurde.
@@ -1051,20 +1070,20 @@ Ich habe weiters ein eigenens ID-Attribut bekommen.</doc:Paragraph>
Die Response enthält zunächst in SignerInfo/dsig:X509Data
Informationen über den Signator, die aus dem in der XML-Signatur enthaltenen Signatorzertifikat entnommen sind (siehe Einfaches Beispiel).
- <ReferenceInputData> + <ReferenceInputData PartOf="SignedInfo"> <XMLContent xml:space="preserve"> <doc:Paragraph ParaId="Para2" xmlns:doc="urn:document" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">...</doc:Paragraph> </XMLContent> </ReferenceInputData> - <ReferenceInputData> + <ReferenceInputData PartOf="SignedInfo"> <XMLContent xml:space="preserve"> <dsig:Manifest Id="manifest-1-1" xmlns:doc="urn:document" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> ... </dsig:Manifest> </XMLContent> </ReferenceInputData> - <ReferenceInputData> + <ReferenceInputData PartOf="SignedInfo"> <XMLContent xml:space="preserve"> <etsi:SignedProperties xmlns:doc="urn:document" xmlns:etsi="http://uri.etsi.org/01903/v1.1.1#" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> @@ -1073,7 +1092,16 @@ Ich habe weiters ein eigenens ID-Attribut bekommen.</doc:Paragraph> </XMLContent> </ReferenceInputData>-
Nachdem im Request spezifiziert wurde, dass in der Response die Referenzeingangsdaten für alle dsig:Reference
-Elemente von dsig:SignedInfo
der geprüften XML-Signatur übermittelt werden sollen, enthält die Response nach SignerInfo
drei ReferenceInputData
-Elemente. Das erste ReferenceInputData
-Element enthält das zuvor besprochene doc:Paragraph
Element, das zweite das Signaturmanifest, das dritte die Signatureigenschaften.
Nachdem im Request spezifiziert wurde, dass in der Response die Referenzeingangsdaten für alle dsig:Reference
-Elemente
+ von dsig:SignedInfo
(bzw. auch für jede dsig:Reference
aus einem dsig:Manifest
,
+ auf das mittels des Attributs Type="http://www.w3.org/2000/09/xmldsig#Manifest"
in einer dsig:Reference
aus dsig:SignedInfo
verwiesen
+ wird; solche Manifeste kommen aber in diesem Beispiel nicht vor) der geprüften
+ XML-Signatur übermittelt
+ werden sollen, enthält
+ die Response nach SignerInfo
drei ReferenceInputData
-Elemente. Das erste ReferenceInputData
-Element
+ enthält das zuvor besprochene doc:Paragraph
Element, das zweite das Signaturmanifest, das
+ dritte die Signatureigenschaften. Das Attribut PartOf
jedes Elements weist mit dem Wert SignedInfo
darauf hin,
+ dass die dsig:Reference
, für welche die Referenzeingangsdaten gelten, Teil von dsig:SignedInfo
ist.
<SignatureCheck> <Code>0</Code> -- cgit v1.2.3