Package de.consist.bmu.rule.xmlsec
Class XmlSecFassade
- java.lang.Object
-
- de.consist.bmu.rule.xmlsec.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 Summary
Fields Modifier and Type Field Description static java.lang.String
XPATH_INTERSECT
XPath-Intersect-Filter.static java.lang.String
XPATH_SUBTRACT_EXCLUDE_PREVIOUS_SIG
XPath-Subtract-Filter (schliesst vorhandene Signatur nicht ein).static java.lang.String
XPATH_SUBTRACT_INCLUDE_PREVIOUS_SIG
XPath-Subtract-Filter (schliesst vorhandene Signatur ein).
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Deprecated Methods Modifier and Type Method Description static XmlSecFassade
getInstance()
boolean
init()
Allgemeine Initialisierung von XMLSEC.static boolean
isBcFirst()
static boolean
isUseJSR105()
static boolean
loadBouncyCastle()
Lädt den Security-Provider BouncyCastle.boolean
pruefeSignaturen(org.w3c.dom.Document doc, boolean signatureMustExist, java.lang.String sigID)
Deprecated.Deutsche Funktionsnamen sind nicht professionellprotected boolean
pruefeSignaturen0(org.w3c.dom.Document doc, boolean signatureMustExist, java.lang.String sigID)
Deprecated.Deutsche Funktionsnamen sind nicht professionellstatic void
setUseJSR105(boolean useJSR105)
java.security.PublicKey
unmarshalECDSAKeyValue(org.w3c.dom.Element kvtElem)
boolean
validateX509Certificate(org.w3c.dom.Element sigElem)
boolean
verifySignature(org.w3c.dom.Document doc, java.lang.String sigId)
boolean
verifySignatureApache(org.w3c.dom.Element signElement)
Check Signatures using apache xmlsec implementation.java.util.List<java.lang.String>
verifySignatures(org.w3c.dom.Document doc)
-
-
-
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ältsignatureMustExist
- legt fest, ob Signaturen vorhanden sein müssensigID
- 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
- DocumentsigId
- 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
-
-