Frage

Ich habe versucht, eine XML-Signatur zu validieren.

Die Validierung gemäß dieser Tutorial Werke in Ordnung.

Aber ich habe auch versucht, zu einem zweiten Ansatz. Um zu überprüfen, es mit dem Methode der Signature-Klasse überprüfen Ich extrahiert die Signatur und das Zertifikat aus der XML-Datei, und ich habe die folgenden:

    public static boolean checkSignedFile(byte[] data, byte[] sigToVerify,
        byte[] cert, String algorithm) throws CertificateException,
        NoSuchAlgorithmException, InvalidKeyException, SignatureException {
    CertificateFactory cf = CertificateFactory.getInstance("X.509");
    Certificate c = (Certificate) cf
            .generateCertificate(new ByteArrayInputStream(cert));
    PublicKey pk = c.getPublicKey();
    Signature sig;
    boolean verifies = false;
    sig = Signature.getInstance(algorithm);
    sig.initVerify(pk);
    sig.update(data);
    verifies = sig.verify(sigToVerify);
    return verifies;
}

das Ergebnis war falsch. Die Signatur nicht bestätigt. Was könnte der Grund dafür sein?

War es hilfreich?

Lösung

Sie können nicht XMLDSIG wie dies überprüfen. Es würde nicht funktionieren. Die Signatur wird nicht über die XML-Rohdaten berechnet. Es hat durch Kanonisierung zu gehen, verdauen usw.

Was tun Sie für data[]? Um es richtig, Sie fast die XMLDSIG Bibliothek neu zu schreiben haben.

Andere Tipps

Wenn Daten [] ist der Inhalt der XML-Datei signiert, was sigToVerify?

XMLSig schafft ein Signature-Element (SignedInfo), die der Digest jedes Element enthält unterzeichnet werden und Meta-Informationen wie gebrauchte Kanonisierung / Transformationsalgorithmen. Dann wird der Digest dieses SignedInfo-elemnt berechnet und unterzeichnet.

Wenn also sigToVerify ist die Signatur von einer XML Signature Implementierung erstellt es nicht auf die Unterschrift der gesamten XML-Datei gleich sein muß.

Hier ist ein vollständigere Erklärung. Und wenn Ihr daran interessiert, einen Blick auf die Spezifikation .

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