So überprüfen Sie die digitale XML-Signatur

9

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

    
momo 12.05.2017, 13:34
quelle

1 Antwort

1

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.

    
lax1089 26.05.2017 02:19
quelle

Tags und Links