Class XmlSecFassade


  • public final class XmlSecFassade
    extends java.lang.Object
    Fassade um xmlsec.jar Eigentlich wollten wir Java 6 einsetzen, weil dort gemäß JSR-105 das XML Signature API Bestandteil der RT ist. Nun müssen wir die Library xmlsec.jar selbst einbinden. Die Methode pruefeSignaturen() liefert ein boolean zurück, dass Auskunft über den Status der Signaturprüfung gibt. Done: Alternative für HexDumpEncoder einsetzen (z.B. Hex aus Apache Commons Codec). TODO Womöglich validieren eines frisch geparsten Dokuments erforderlich (Validierung und Defaultwerte); das hat sich wohl erledigt? TODO Hinweis: Sicherheitsprobleme durch präparierte XML-Signaturen http://www.heise.de/newsticker/meldung/93924/ TODO SHA1 ist eigentlich nicht mehr zulässig, aber es hängt vom Zertifikat ab, ob andere Algorithmen unterstützt werden FIXME MD5 müsste eigentlich abgelehnt werden.
    • Field Detail

      • XPATH_INTERSECT

        public static final java.lang.String XPATH_INTERSECT
        XPath-Intersect-Filter.
        See Also:
        Constant Field Values
      • XPATH_SUBTRACT_INCLUDE_PREVIOUS_SIG

        public static final java.lang.String XPATH_SUBTRACT_INCLUDE_PREVIOUS_SIG
        XPath-Subtract-Filter (schliesst vorhandene Signatur ein).
        See Also:
        Constant Field Values
      • XPATH_SUBTRACT_EXCLUDE_PREVIOUS_SIG

        public static final java.lang.String XPATH_SUBTRACT_EXCLUDE_PREVIOUS_SIG
        XPath-Subtract-Filter (schliesst vorhandene Signatur nicht ein).
        See Also:
        Constant Field Values
    • Method Detail

      • getInstance

        public static XmlSecFassade getInstance()
        Returns:
        XmlSecFassade
      • isUseJSR105

        public static boolean isUseJSR105()
        Returns:
        Gibt an, ob die JSR 105 (Java XML Digital Signature) API bei der Validierung der Signaturen verwendet wird
      • isBcFirst

        public static boolean isBcFirst()
      • setUseJSR105

        public static void setUseJSR105​(boolean useJSR105)
        Parameters:
        useJSR105 - Gibt an, ob die JSR 105 (Java XML Digital Signature) API bei der Validierung der Signaturen verwendet werden soll
      • init

        public boolean init()
        Allgemeine Initialisierung von XMLSEC.
        Returns:
        boolean
      • loadBouncyCastle

        public static boolean loadBouncyCastle()
        Lädt den Security-Provider BouncyCastle.
        Returns:
        boolean
      • pruefeSignaturen

        public boolean pruefeSignaturen​(org.w3c.dom.Document doc,
                                        boolean signatureMustExist,
                                        java.lang.String sigID)
                                 throws XmlSecException
        Deprecated.
        Deutsche Funktionsnamen sind nicht professionell
        Parameters:
        doc - das Document, dass die zu prüfenden Signaturen enthält
        signatureMustExist - legt fest, ob Signaturen vorhanden sein müssen
        sigID - String
        Returns:
        true, wenn Signaturen gültig, false wenn Signaturen ungültig
        Throws:
        XmlSecException - XmlSecException
      • verifySignatures

        public java.util.List<java.lang.String> verifySignatures​(org.w3c.dom.Document doc)
                                                          throws XmlSecException
        Parameters:
        doc - Document
        Returns:
        List
        Throws:
        XmlSecException - XmlSecException
      • verifySignature

        public boolean verifySignature​(org.w3c.dom.Document doc,
                                       java.lang.String sigId)
                                throws XmlSecException
        Parameters:
        doc - Document
        sigId - String
        Returns:
        boolean
        Throws:
        XmlSecException - XmlSecException
      • verifySignatureApache

        public boolean verifySignatureApache​(org.w3c.dom.Element signElement)
                                      throws XmlSecException
        Check Signatures using apache xmlsec implementation.
        Parameters:
        signElement - Element
        Returns:
        true, wenn Signaturen gültig, false wenn Signaturen ungültig
        Throws:
        XmlSecException - XmlSecException
      • unmarshalECDSAKeyValue

        public java.security.PublicKey unmarshalECDSAKeyValue​(org.w3c.dom.Element kvtElem)
                                                       throws javax.xml.crypto.MarshalException
        Throws:
        javax.xml.crypto.MarshalException
      • validateX509Certificate

        public boolean validateX509Certificate​(org.w3c.dom.Element sigElem)
        Parameters:
        sigElem - Signatur-Element
        Returns:
        true, wenn das X509Certificate zum KeyValue passt, sonst false
      • pruefeSignaturen0

        protected boolean pruefeSignaturen0​(org.w3c.dom.Document doc,
                                            boolean signatureMustExist,
                                            java.lang.String sigID)
                                     throws javax.xml.crypto.MarshalException,
                                            javax.xml.crypto.dsig.XMLSignatureException,
                                            XmlSecException
        Deprecated.
        Deutsche Funktionsnamen sind nicht professionell
        Parameters:
        doc -
        signatureMustExist -
        sigID -
        Returns:
        true, wenn Signaturen gültig, false wenn Signaturen ungültig
        Throws:
        javax.xml.crypto.MarshalException
        javax.xml.crypto.dsig.XMLSignatureException
        XmlSecException