From 9e71760a80a7b2cc25ac4700a5d6b6c4d5582eb8 Mon Sep 17 00:00:00 2001 From: pdanner Date: Tue, 4 Sep 2007 10:29:42 +0000 Subject: re-arranged handbook project step1 git-svn-id: https://joinup.ec.europa.eu/svn/moa-idspss/trunk@980 d688527b-c9ab-4aba-bd8d-4036d912da1d --- .../handbook/clients/api/CreateXMLSignature.java | 130 ------------------ .../handbook/clients/api/VerifyXMLSignature.java | 147 --------------------- .../handbook/clients/api/CreateXMLSignature.java | 130 ++++++++++++++++++ .../handbook/clients/api/VerifyXMLSignature.java | 147 +++++++++++++++++++++ 4 files changed, 277 insertions(+), 277 deletions(-) delete mode 100644 spss/handbook/clients/api/src/at/gv/egovernment/moa/spss/handbook/clients/api/CreateXMLSignature.java delete mode 100644 spss/handbook/clients/api/src/at/gv/egovernment/moa/spss/handbook/clients/api/VerifyXMLSignature.java create mode 100644 spss/handbook/clients/api/src/main/java/at/gv/egovernment/moa/spss/handbook/clients/api/CreateXMLSignature.java create mode 100644 spss/handbook/clients/api/src/main/java/at/gv/egovernment/moa/spss/handbook/clients/api/VerifyXMLSignature.java (limited to 'spss/handbook/clients/api/src') diff --git a/spss/handbook/clients/api/src/at/gv/egovernment/moa/spss/handbook/clients/api/CreateXMLSignature.java b/spss/handbook/clients/api/src/at/gv/egovernment/moa/spss/handbook/clients/api/CreateXMLSignature.java deleted file mode 100644 index 2534e4913..000000000 --- a/spss/handbook/clients/api/src/at/gv/egovernment/moa/spss/handbook/clients/api/CreateXMLSignature.java +++ /dev/null @@ -1,130 +0,0 @@ -package at.gv.egovernment.moa.spss.handbook.clients.api; - -import java.io.ByteArrayInputStream; -import java.util.ArrayList; -import java.util.List; - -import org.w3c.dom.Element; - -import at.gv.egovernment.moa.spss.api.SPSSFactory; -import at.gv.egovernment.moa.spss.api.SignatureCreationService; -import at.gv.egovernment.moa.spss.api.common.Content; -import at.gv.egovernment.moa.spss.api.common.MetaInfo; -import at.gv.egovernment.moa.spss.api.xmlsign.CreateTransformsInfo; -import at.gv.egovernment.moa.spss.api.xmlsign.CreateTransformsInfoProfile; -import at.gv.egovernment.moa.spss.api.xmlsign.CreateXMLSignatureRequest; -import at.gv.egovernment.moa.spss.api.xmlsign.CreateXMLSignatureResponse; -import at.gv.egovernment.moa.spss.api.xmlsign.DataObjectInfo; -import at.gv.egovernment.moa.spss.api.xmlsign.SignatureEnvironmentResponse; -import at.gv.egovernment.moa.spss.api.xmlsign.SingleSignatureInfo; -import at.gv.egovernment.moa.util.DOMUtils; - -/** - * Dieses einfache Beispiel demonstriert grundlegend den Gebrauch der API von MOA SP/SS. Es wird damit eine - * einfach aufgebaute XML-Signatur erzeugt. - */ -public class CreateXMLSignature -{ - /** - * Methode main. - * - * Enthält beispielhaften Code zum grundlegenden Gebrauch der API von MOA SP/SS. Es wird damit eine - * einfach aufgebaute XML-Signatur erzeugt. - * - * ACHTUNG: Stellen Sie bei Verwendung von J2SE 1.4.x bzw. 5.x sicher, dass Sie die System-Property - * java.endorsed.dirs auf jenes Verzeichnis gesetzt haben, in dem sich die XPath- - * und XSLT-Bibliothek Xalan-J befindet. - * - * @param args - * - * @throws Exception Sollten Fehler auftreten werden die Fehler an die Java-VM weitergeleitet. - */ - public static void main(String[] args) throws Exception - { - // Setzen der System-Properties - init(args); - - // Serverfunktionshandler instanzieren - SPSSFactory spf = SPSSFactory.getInstance(); - - // Zu signierende Daten in ein Contentobjekt einbinden (die Daten werden hier explizit angegeben, - // sollen aber in der Signatur mittels URL "http://uri.data.org" referenziert werden - byte[] data = "Diese Daten werden signiert.".getBytes("UTF-8"); - ByteArrayInputStream bis = new ByteArrayInputStream(data); - Content cont = spf.createContent(bis, null); - - // Metainformationen zu den zu signierenden Daten erstellen - MetaInfo mi = spf.createMetaInfo("text/plain", null, null, null); - - // Transformationen erstellen (hier werden keine Transformationen angewandt) - CreateTransformsInfo cti = spf.createCreateTransformsInfo(null, mi); - CreateTransformsInfoProfile ct = spf.createCreateTransformsInfoProfile(cti, null); - - // Datenobjekt aufbauen - DataObjectInfo doi = spf.createDataObjectInfo(DataObjectInfo.STRUCTURE_ENVELOPING, false, cont, ct); - - // Erstellen eines SingleSignatureInfo-Containers - // Enthält alle Angaben zur Erstellung *einer* Signatur - List dataobjectinfolist = new ArrayList(); - dataobjectinfolist.add(doi); - SingleSignatureInfo ssi = spf.createSingleSignatureInfo(dataobjectinfolist, null, false); - - // Erstellen des Request-Objekts (Schlüsselbezeichner, Liste von SingleSignatureInfo-Containern) - List singlesignatureinfolist = new ArrayList(); - singlesignatureinfolist.add(ssi); - CreateXMLSignatureRequest cxsreq = spf.createCreateXMLSignatureRequest("KG_allgemein", - singlesignatureinfolist); - - // Signatureerstellungsservice instanzieren und aufrufen - SignatureCreationService scs = SignatureCreationService.getInstance(); - CreateXMLSignatureResponse cxsres = scs.createXMLSignature(cxsreq); - - // Response auswerten - List elements = cxsres.getResponseElements(); - SignatureEnvironmentResponse ser = (SignatureEnvironmentResponse) elements.get(0); - - // Auswertung des ersten (und einzigen) SignatureEnvironmentResponse-Containers - int response_type = ser.getResponseType(); - - if (response_type == SignatureEnvironmentResponse.ERROR_RESPONSE) - { - // Fehlerfall - System.out.println("Bei der Erstellung der Signatur ist ein Fehler aufgetreten."); - } - else - { - // Signaturerstellung erfolgreich - System.out.println("Signaturerstellung erfolgreich:"); - - Element se = ser.getSignatureEnvironment(); - System.out.println(DOMUtils.serializeNode(se)); - } - } - - /** - * Setzt die notwendigen System-Properties für die Konfiguration der MOA SP/SS API. - * - * @param args Siehe @link CreateXMLSignature#main(String[]). - */ - private static void init(String[] args) - { - if (args == null || args.length != 2) - { - System.out.println("Verwendung: CreateXMLSignature "); - } - System.setProperty("moa.spss.server.configuration", args[0]); - System.setProperty("log4j.configuration", "file:" + args[1]); - } -} \ No newline at end of file diff --git a/spss/handbook/clients/api/src/at/gv/egovernment/moa/spss/handbook/clients/api/VerifyXMLSignature.java b/spss/handbook/clients/api/src/at/gv/egovernment/moa/spss/handbook/clients/api/VerifyXMLSignature.java deleted file mode 100644 index fed8ba9f2..000000000 --- a/spss/handbook/clients/api/src/at/gv/egovernment/moa/spss/handbook/clients/api/VerifyXMLSignature.java +++ /dev/null @@ -1,147 +0,0 @@ -package at.gv.egovernment.moa.spss.handbook.clients.api; - -import java.io.FileInputStream; -import java.io.FileNotFoundException; -import java.util.HashMap; - -import at.gv.egovernment.moa.spss.MOAException; -import at.gv.egovernment.moa.spss.api.SPSSFactory; -import at.gv.egovernment.moa.spss.api.SignatureVerificationService; -import at.gv.egovernment.moa.spss.api.common.Content; -import at.gv.egovernment.moa.spss.api.common.SignerInfo; -import at.gv.egovernment.moa.spss.api.xmlverify.VerifySignatureInfo; -import at.gv.egovernment.moa.spss.api.xmlverify.VerifySignatureLocation; -import at.gv.egovernment.moa.spss.api.xmlverify.VerifyXMLSignatureRequest; -import at.gv.egovernment.moa.spss.api.xmlverify.VerifyXMLSignatureResponse; - -/** - * Dieses einfache Beispiel demonstriert grundlegend den Gebrauch der API von MOA SP/SS. - * Es wird damit eine einfach aufgebaute XML-Signatur geprüft. - */ - -public class VerifyXMLSignature -{ - /** - * Methode main. - * - * Enthält beispielhaften Code zum grundlegenden Gebrauch der API von MOA SP/SS. - * Es wird damit eine einfach aufgebaute XML-Signatur geprüft. - * - * ACHTUNG: Stellen Sie bei Verwendung von J2SE 1.4.x bzw. 5.x sicher, dass Sie die System-Property - * java.endorsed.dirs auf jenes Verzeichnis gesetzt haben, in dem sich die XPath- - * und XSLT-Bibliothek Xalan-J befindet. - * - * @param args
    - *
  • - * args[0] enthält einen Verweis auf die Konfigurations-Datei von MOA SP/SS Der Verweis - * enthält entweder eine absolute oder eine relative Pfadangabe, wobei eine relative - * Angabe als relativ zum Arbeitsverzeichnis der Java VM interpretiert wird. - *
  • - *
  • - * args[1] enthält einen Verweis auf die Konfigurations-Datei von Log4J, dem Logging- - * Framework, das von MOA SP/SS verwendet wird. Der Verweis enthält entweder eine - * absolute oder eine relative Pfadangabe, wobei eine relative Angabe als relativ zum - * Arbeitsverzeichnis der Java VM interpretiert wird. - *
  • - *
  • - * args[2] enthält Pfad und Dateiname des XML-Dokuments mit der darin enthaltenen, zu - * prüfenden XML-Signatur. Verwenden Sie z.B. das mit diesem Handbuch mitgelieferte - * Beispiel clients/api/signatures/SimpleSignature.xml. - *
  • - *
- */ - public static void main(String[] args) - { - // Setzen der System-Properties - init(args); - - // Factory und Service instanzieren - SPSSFactory spssFac = SPSSFactory.getInstance(); - SignatureVerificationService sigVerifyService = SignatureVerificationService.getInstance(); - - // Content aus Dokument mit zu prüfender Signatur erstellen - FileInputStream sigDocFIS = null; - try - { - sigDocFIS = new FileInputStream(args[2]); - } - catch (FileNotFoundException e1) - { - System.err.println("XML-Dokument mit zu prüfender Signatur nicht gefunden: " + args[2]); - System.exit(-1); - } - Content sigDocContent = spssFac.createContent(sigDocFIS, null); - - // Position der zu prüfenden Signatur im Dokument angeben - // (Nachdem im XPath-Ausdruck ein NS-Präfix verwendet wird, muss in einer Lookup-Tabelle - // der damit bezeichnete Namenraum mitgegeben werden) - HashMap nSMap = new HashMap(); - nSMap.put("dsig", "http://www.w3.org/2000/09/xmldsig#"); - VerifySignatureLocation sigLocation = spssFac.createVerifySignatureLocation("//dsig:Signature", nSMap); - - // Zu prüfendes Dokument und Signaturposition zusammenfassen - VerifySignatureInfo sigInfo = spssFac.createVerifySignatureInfo(sigDocContent, sigLocation); - - // Prüfrequest zusammenstellen - VerifyXMLSignatureRequest verifyRequest = spssFac.createVerifyXMLSignatureRequest( - null, // Wird Prüfzeit nicht angegeben, wird aktuelle Zeit verwendet - sigInfo, - null, // Keine Ergänzungsobjekte notwendig - null, // Signaturmanifest-Prüfung soll nicht durchgeführt werden - false, // Hash-Inputdaten, d.h. tatsächlich signierte Daten werden nicht zurückgeliefert - "Test-Signaturdienste"); // ID des verwendeten Vertrauensprofils - - VerifyXMLSignatureResponse verifyResponse = null; - try - { - // Aufruf der Signaturprüfung - verifyResponse = sigVerifyService.verifyXMLSignature(verifyRequest); - } - catch (MOAException e) - { - // Service liefert Fehler - System.err.println("Die Signaturprüfung hat folgenden Fehler geliefert:"); - System.err.println("Fehlercode: " + e.getMessageId()); - System.err.println("Fehlernachricht: " + e.getMessage()); - System.exit(-1); - } - - // Auswertung der Response - System.out.println(); - System.out.println("Ergebnisse der Signaturprüfung:"); - System.out.println(); - - // Besondere Eigenschaften des Signatorzertifikats - SignerInfo signerInfo = verifyResponse.getSignerInfo(); - System.out.println("*** Ist Zertifikat des Signators qualifiziert? " + ((signerInfo.isQualifiedCertificate()) ? "ja" : "nein")); - System.out.println("*** Ist Zertifikat des Signators von einer Behörde? " + ((signerInfo.isPublicAuthority()) ? "ja" : "nein")); - - // Ergebnisse von Signatur- und Zertifikatsprüfung - System.out.println(); - System.out.println("Ergebniscode der Signaturprüfung: " + verifyResponse.getSignatureCheck().getCode()); - System.out.println("Ergebniscode der Zertifikatsprüfung: " + verifyResponse.getCertificateCheck().getCode()); - - // Signatorzertifikat - System.out.println(); - System.out.println("*** Zertifikat des Signators:"); - System.out.println("Aussteller: " + signerInfo.getSignerCertificate().getIssuerDN()); - System.out.println("Subject: " + signerInfo.getSignerCertificate().getSubjectDN()); - System.out.println("Seriennummer: " + signerInfo.getSignerCertificate().getSerialNumber()); - } - - /** - * Setzt die notwendigen System-Properties für die Konfiguration der MOA SP/SS API. - * - * @param args Siehe @link VerifyXMLSignature#main(String[]). - */ - private static void init(String[] args) - { - if (args == null || args.length != 3) - { - System.out.println("Verwendung: VerifyXMLSignature "); - System.exit(-1); - } - System.setProperty("moa.spss.server.configuration", args[0]); - System.setProperty("log4j.configuration", "file:" + args[1]); - } -} \ No newline at end of file diff --git a/spss/handbook/clients/api/src/main/java/at/gv/egovernment/moa/spss/handbook/clients/api/CreateXMLSignature.java b/spss/handbook/clients/api/src/main/java/at/gv/egovernment/moa/spss/handbook/clients/api/CreateXMLSignature.java new file mode 100644 index 000000000..2534e4913 --- /dev/null +++ b/spss/handbook/clients/api/src/main/java/at/gv/egovernment/moa/spss/handbook/clients/api/CreateXMLSignature.java @@ -0,0 +1,130 @@ +package at.gv.egovernment.moa.spss.handbook.clients.api; + +import java.io.ByteArrayInputStream; +import java.util.ArrayList; +import java.util.List; + +import org.w3c.dom.Element; + +import at.gv.egovernment.moa.spss.api.SPSSFactory; +import at.gv.egovernment.moa.spss.api.SignatureCreationService; +import at.gv.egovernment.moa.spss.api.common.Content; +import at.gv.egovernment.moa.spss.api.common.MetaInfo; +import at.gv.egovernment.moa.spss.api.xmlsign.CreateTransformsInfo; +import at.gv.egovernment.moa.spss.api.xmlsign.CreateTransformsInfoProfile; +import at.gv.egovernment.moa.spss.api.xmlsign.CreateXMLSignatureRequest; +import at.gv.egovernment.moa.spss.api.xmlsign.CreateXMLSignatureResponse; +import at.gv.egovernment.moa.spss.api.xmlsign.DataObjectInfo; +import at.gv.egovernment.moa.spss.api.xmlsign.SignatureEnvironmentResponse; +import at.gv.egovernment.moa.spss.api.xmlsign.SingleSignatureInfo; +import at.gv.egovernment.moa.util.DOMUtils; + +/** + * Dieses einfache Beispiel demonstriert grundlegend den Gebrauch der API von MOA SP/SS. Es wird damit eine + * einfach aufgebaute XML-Signatur erzeugt. + */ +public class CreateXMLSignature +{ + /** + * Methode main. + * + * Enthält beispielhaften Code zum grundlegenden Gebrauch der API von MOA SP/SS. Es wird damit eine + * einfach aufgebaute XML-Signatur erzeugt. + * + * ACHTUNG: Stellen Sie bei Verwendung von J2SE 1.4.x bzw. 5.x sicher, dass Sie die System-Property + * java.endorsed.dirs auf jenes Verzeichnis gesetzt haben, in dem sich die XPath- + * und XSLT-Bibliothek Xalan-J befindet. + * + * @param args
    + *
  • + * args[0] enthält einen Verweis auf die Konfigurations-Datei von MOA SP/SS Der Verweis + * enthält entweder eine absolute oder eine relative Pfadangabe, wobei eine relative + * Angabe als relativ zum Arbeitsverzeichnis der Java VM interpretiert wird. + *
  • + *
  • + * args[1] enthält einen Verweis auf die Konfigurations-Datei von Log4J, dem Logging- + * Framework, das von MOA SP/SS verwendet wird. Der Verweis enthält entweder eine + * absolute oder eine relative Pfadangabe, wobei eine relative Angabe als relativ zum + * Arbeitsverzeichnis der Java VM interpretiert wird. + *
  • + *
+ * + * @throws Exception Sollten Fehler auftreten werden die Fehler an die Java-VM weitergeleitet. + */ + public static void main(String[] args) throws Exception + { + // Setzen der System-Properties + init(args); + + // Serverfunktionshandler instanzieren + SPSSFactory spf = SPSSFactory.getInstance(); + + // Zu signierende Daten in ein Contentobjekt einbinden (die Daten werden hier explizit angegeben, + // sollen aber in der Signatur mittels URL "http://uri.data.org" referenziert werden + byte[] data = "Diese Daten werden signiert.".getBytes("UTF-8"); + ByteArrayInputStream bis = new ByteArrayInputStream(data); + Content cont = spf.createContent(bis, null); + + // Metainformationen zu den zu signierenden Daten erstellen + MetaInfo mi = spf.createMetaInfo("text/plain", null, null, null); + + // Transformationen erstellen (hier werden keine Transformationen angewandt) + CreateTransformsInfo cti = spf.createCreateTransformsInfo(null, mi); + CreateTransformsInfoProfile ct = spf.createCreateTransformsInfoProfile(cti, null); + + // Datenobjekt aufbauen + DataObjectInfo doi = spf.createDataObjectInfo(DataObjectInfo.STRUCTURE_ENVELOPING, false, cont, ct); + + // Erstellen eines SingleSignatureInfo-Containers + // Enthält alle Angaben zur Erstellung *einer* Signatur + List dataobjectinfolist = new ArrayList(); + dataobjectinfolist.add(doi); + SingleSignatureInfo ssi = spf.createSingleSignatureInfo(dataobjectinfolist, null, false); + + // Erstellen des Request-Objekts (Schlüsselbezeichner, Liste von SingleSignatureInfo-Containern) + List singlesignatureinfolist = new ArrayList(); + singlesignatureinfolist.add(ssi); + CreateXMLSignatureRequest cxsreq = spf.createCreateXMLSignatureRequest("KG_allgemein", + singlesignatureinfolist); + + // Signatureerstellungsservice instanzieren und aufrufen + SignatureCreationService scs = SignatureCreationService.getInstance(); + CreateXMLSignatureResponse cxsres = scs.createXMLSignature(cxsreq); + + // Response auswerten + List elements = cxsres.getResponseElements(); + SignatureEnvironmentResponse ser = (SignatureEnvironmentResponse) elements.get(0); + + // Auswertung des ersten (und einzigen) SignatureEnvironmentResponse-Containers + int response_type = ser.getResponseType(); + + if (response_type == SignatureEnvironmentResponse.ERROR_RESPONSE) + { + // Fehlerfall + System.out.println("Bei der Erstellung der Signatur ist ein Fehler aufgetreten."); + } + else + { + // Signaturerstellung erfolgreich + System.out.println("Signaturerstellung erfolgreich:"); + + Element se = ser.getSignatureEnvironment(); + System.out.println(DOMUtils.serializeNode(se)); + } + } + + /** + * Setzt die notwendigen System-Properties für die Konfiguration der MOA SP/SS API. + * + * @param args Siehe @link CreateXMLSignature#main(String[]). + */ + private static void init(String[] args) + { + if (args == null || args.length != 2) + { + System.out.println("Verwendung: CreateXMLSignature "); + } + System.setProperty("moa.spss.server.configuration", args[0]); + System.setProperty("log4j.configuration", "file:" + args[1]); + } +} \ No newline at end of file diff --git a/spss/handbook/clients/api/src/main/java/at/gv/egovernment/moa/spss/handbook/clients/api/VerifyXMLSignature.java b/spss/handbook/clients/api/src/main/java/at/gv/egovernment/moa/spss/handbook/clients/api/VerifyXMLSignature.java new file mode 100644 index 000000000..fed8ba9f2 --- /dev/null +++ b/spss/handbook/clients/api/src/main/java/at/gv/egovernment/moa/spss/handbook/clients/api/VerifyXMLSignature.java @@ -0,0 +1,147 @@ +package at.gv.egovernment.moa.spss.handbook.clients.api; + +import java.io.FileInputStream; +import java.io.FileNotFoundException; +import java.util.HashMap; + +import at.gv.egovernment.moa.spss.MOAException; +import at.gv.egovernment.moa.spss.api.SPSSFactory; +import at.gv.egovernment.moa.spss.api.SignatureVerificationService; +import at.gv.egovernment.moa.spss.api.common.Content; +import at.gv.egovernment.moa.spss.api.common.SignerInfo; +import at.gv.egovernment.moa.spss.api.xmlverify.VerifySignatureInfo; +import at.gv.egovernment.moa.spss.api.xmlverify.VerifySignatureLocation; +import at.gv.egovernment.moa.spss.api.xmlverify.VerifyXMLSignatureRequest; +import at.gv.egovernment.moa.spss.api.xmlverify.VerifyXMLSignatureResponse; + +/** + * Dieses einfache Beispiel demonstriert grundlegend den Gebrauch der API von MOA SP/SS. + * Es wird damit eine einfach aufgebaute XML-Signatur geprüft. + */ + +public class VerifyXMLSignature +{ + /** + * Methode main. + * + * Enthält beispielhaften Code zum grundlegenden Gebrauch der API von MOA SP/SS. + * Es wird damit eine einfach aufgebaute XML-Signatur geprüft. + * + * ACHTUNG: Stellen Sie bei Verwendung von J2SE 1.4.x bzw. 5.x sicher, dass Sie die System-Property + * java.endorsed.dirs auf jenes Verzeichnis gesetzt haben, in dem sich die XPath- + * und XSLT-Bibliothek Xalan-J befindet. + * + * @param args
    + *
  • + * args[0] enthält einen Verweis auf die Konfigurations-Datei von MOA SP/SS Der Verweis + * enthält entweder eine absolute oder eine relative Pfadangabe, wobei eine relative + * Angabe als relativ zum Arbeitsverzeichnis der Java VM interpretiert wird. + *
  • + *
  • + * args[1] enthält einen Verweis auf die Konfigurations-Datei von Log4J, dem Logging- + * Framework, das von MOA SP/SS verwendet wird. Der Verweis enthält entweder eine + * absolute oder eine relative Pfadangabe, wobei eine relative Angabe als relativ zum + * Arbeitsverzeichnis der Java VM interpretiert wird. + *
  • + *
  • + * args[2] enthält Pfad und Dateiname des XML-Dokuments mit der darin enthaltenen, zu + * prüfenden XML-Signatur. Verwenden Sie z.B. das mit diesem Handbuch mitgelieferte + * Beispiel clients/api/signatures/SimpleSignature.xml. + *
  • + *
+ */ + public static void main(String[] args) + { + // Setzen der System-Properties + init(args); + + // Factory und Service instanzieren + SPSSFactory spssFac = SPSSFactory.getInstance(); + SignatureVerificationService sigVerifyService = SignatureVerificationService.getInstance(); + + // Content aus Dokument mit zu prüfender Signatur erstellen + FileInputStream sigDocFIS = null; + try + { + sigDocFIS = new FileInputStream(args[2]); + } + catch (FileNotFoundException e1) + { + System.err.println("XML-Dokument mit zu prüfender Signatur nicht gefunden: " + args[2]); + System.exit(-1); + } + Content sigDocContent = spssFac.createContent(sigDocFIS, null); + + // Position der zu prüfenden Signatur im Dokument angeben + // (Nachdem im XPath-Ausdruck ein NS-Präfix verwendet wird, muss in einer Lookup-Tabelle + // der damit bezeichnete Namenraum mitgegeben werden) + HashMap nSMap = new HashMap(); + nSMap.put("dsig", "http://www.w3.org/2000/09/xmldsig#"); + VerifySignatureLocation sigLocation = spssFac.createVerifySignatureLocation("//dsig:Signature", nSMap); + + // Zu prüfendes Dokument und Signaturposition zusammenfassen + VerifySignatureInfo sigInfo = spssFac.createVerifySignatureInfo(sigDocContent, sigLocation); + + // Prüfrequest zusammenstellen + VerifyXMLSignatureRequest verifyRequest = spssFac.createVerifyXMLSignatureRequest( + null, // Wird Prüfzeit nicht angegeben, wird aktuelle Zeit verwendet + sigInfo, + null, // Keine Ergänzungsobjekte notwendig + null, // Signaturmanifest-Prüfung soll nicht durchgeführt werden + false, // Hash-Inputdaten, d.h. tatsächlich signierte Daten werden nicht zurückgeliefert + "Test-Signaturdienste"); // ID des verwendeten Vertrauensprofils + + VerifyXMLSignatureResponse verifyResponse = null; + try + { + // Aufruf der Signaturprüfung + verifyResponse = sigVerifyService.verifyXMLSignature(verifyRequest); + } + catch (MOAException e) + { + // Service liefert Fehler + System.err.println("Die Signaturprüfung hat folgenden Fehler geliefert:"); + System.err.println("Fehlercode: " + e.getMessageId()); + System.err.println("Fehlernachricht: " + e.getMessage()); + System.exit(-1); + } + + // Auswertung der Response + System.out.println(); + System.out.println("Ergebnisse der Signaturprüfung:"); + System.out.println(); + + // Besondere Eigenschaften des Signatorzertifikats + SignerInfo signerInfo = verifyResponse.getSignerInfo(); + System.out.println("*** Ist Zertifikat des Signators qualifiziert? " + ((signerInfo.isQualifiedCertificate()) ? "ja" : "nein")); + System.out.println("*** Ist Zertifikat des Signators von einer Behörde? " + ((signerInfo.isPublicAuthority()) ? "ja" : "nein")); + + // Ergebnisse von Signatur- und Zertifikatsprüfung + System.out.println(); + System.out.println("Ergebniscode der Signaturprüfung: " + verifyResponse.getSignatureCheck().getCode()); + System.out.println("Ergebniscode der Zertifikatsprüfung: " + verifyResponse.getCertificateCheck().getCode()); + + // Signatorzertifikat + System.out.println(); + System.out.println("*** Zertifikat des Signators:"); + System.out.println("Aussteller: " + signerInfo.getSignerCertificate().getIssuerDN()); + System.out.println("Subject: " + signerInfo.getSignerCertificate().getSubjectDN()); + System.out.println("Seriennummer: " + signerInfo.getSignerCertificate().getSerialNumber()); + } + + /** + * Setzt die notwendigen System-Properties für die Konfiguration der MOA SP/SS API. + * + * @param args Siehe @link VerifyXMLSignature#main(String[]). + */ + private static void init(String[] args) + { + if (args == null || args.length != 3) + { + System.out.println("Verwendung: VerifyXMLSignature "); + System.exit(-1); + } + System.setProperty("moa.spss.server.configuration", args[0]); + System.setProperty("log4j.configuration", "file:" + args[1]); + } +} \ No newline at end of file -- cgit v1.2.3