Ich möchte überprüfen, ob das Dokument in irgendeiner Weise geändert wurde.
Von einem Java-Webdienst erhalte ich die folgende Soap-Antwort mit einer digitalen XML-Signatur :
%Vor%Ich habe ein nützliches Beispiel gefunden, um die XML-Datei auf MSDN :
%Vor%Leider gibt die Überprüfung immer false zurück. Ich habe Mühe zu verstehen, warum es nicht funktioniert.
UPDATE 1 nach den Vorschlägen von Henk Holterman und Simon Mourier :
%Vor%Ergibt sich in einer CryptographicException mit der Meldung " Fehlerhaftes Referenzelement " durch Aufrufen der Funktion CheckSignature () .
UPDATE 2 und SOLUTION gemäß den Vorschlägen von @SimonMourier und @ lax1089
%Vor%Eine Helferklasse, die aus Hundsöhren
gestohlen wurde %Vor%Dank an @SimonMourier und @ Carlos Lopez-MSFT
Tatsächlich ist dies ein bekanntes und dokumentiertes Problem:
Die Canonicalization-Implementierung zwischen .NET 3.5 und .NET 4.0 hat geändert.
Ich weiß nicht, ob das bei allen XML-Signaturen funktioniert, aber es funktioniert nach den Tests, die ich gemacht habe.
Fügen Sie Ihrem Projekt die folgende C14N-Transformationsklasse hinzu:
%Vor%Und registrieren Sie die Klasse mit der CryptoConfig.AddAlgorithm-Methode, wie unten gezeigt:
%Vor%Dies sollte Ihnen ermöglichen, eine XML-Signatur ordnungsgemäß zu überprüfen und Ihr Problem zu beheben.
Tags und Links .net soap vb.net xml-signature