Frage

Ich habe ein XML-Dokument Struktur ähnlich den folgenden

<envelop>
    <header>blaa</header>
    <message>blaa blaa</message>
    <footer></footer>
</envelop>

Ich möchte digital die Header und Nachrichtenelemente signieren und die Signatur der Fußzeile Element hinzuzufügen.

Wie kann ich die Elemente unterschreiben und überprüfen Sie dann später die Signatur (.net c #)?

War es hilfreich?

Lösung

Sie sollten in der Lage sein, eine hinzuzufügen XPath-Transformation auf die Signatur. Es soll wie folgt aussehen:

       <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
         <XPath xmlns:dsig="&dsig;">
         ...
         </XPath>
       </Transform>

Ich bin in XPath nicht fließend, aber es sollte einen XPath-Ausdruck, der schließt das Footer-Element sein, leicht zu formulieren. (Beachten Sie jedoch, dass XPath ist ein optionaler Bestandteil von XML-DSIG, so dass nicht alle Implementierungen kann es unterstützen).

Alternativ, wenn Sie Ihr Dokument neu strukturieren könnte sein

<envelop>
  <header>blaa</header>
  <message>blaa blaa</message>
  <Signature></Signature>
</envelop>

oder

<envelop>
  <signedEnvelope>
    <header>blaa</header>
    <message>blaa blaa</message>
  </signedEnvelope>
  <Signature></Signature>
</envelop>

Sie es durch die Verwendung eines umhüllten Signature (erster Fall) oder durch die Unterzeichnung des signedEnvelope Elements (zweiter Fall) Transformation bewältigen können.

Andere Tipps

Es gibt einen Microsoft-Partner, die für diese ziemlich gut sein könnte. Sie ermöglichen es, digitale Signaturen für XML (sowie alle anderen Plattformen) hinzuzufügen. Ich empfehle ihr Produkt überprüft, es heißt cosign.

Warum folgen w3 recomendation für XML Unterzeichnung http://www.w3.org/ 2000/09 / xmldsig # es eine grundlegende Struktur hat:

<Signature>
   <SignedInfo>
      <SignatureMethod />
      <CanonicalizationMethod />
      <Reference>
         <Transforms>
         <DigestMethod>
         <DigestValue>
      </Reference>
      <Reference /> etc.
   </SignedInfo>
   <SignatureValue />
   <KeyInfo />
   <Object />
</Signature>

Wenn Sie erweiterte Funktionen nutzen möchten, lesen Sie über XAdES - ich denke, es in c # avalible ist

.

Ich sehe dieser Beitrag alt ist, aber vielleicht hat jemand das gleiche Bedürfnis jetzt. Was Sie brauchen, ist irgendwie wie ein umhülltes Signatur in XMLDSIG. Der Unterschied besteht darin, dass in XMLDSIG müssen Sie die Signaturdaten in einem include Signatur Knoten.

Wenn Sie dies tun wollen, müssen Sie es Ihre eigenen implementieren.

Ich bin involviert in einem Projekt eine Bibliothek zu entwickeln XAdES Unterstützung für das .NET Framework zur Verfügung zu stellen.

Wir haben gerade veröffentlichte Version 1.0, die frühe Unterstützung für XAdES-BES bietet.

Sie können es in XAdES .NET Projekt

Ich hoffe, dass der Quellcode Ihnen irgendwie helfen kann.

Viele Grüße.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top