Package de.consist.bmu.rule.xmlsec
Class XmlSecFassade
- java.lang.Object
-
- de.consist.bmu.rule.xmlsec.XmlSecFassade
-
public final class XmlSecFassade extends java.lang.ObjectFassade 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.StringXPATH_INTERSECTXPath-Intersect-Filter.static java.lang.StringXPATH_SUBTRACT_EXCLUDE_PREVIOUS_SIGXPath-Subtract-Filter (schliesst vorhandene Signatur nicht ein).static java.lang.StringXPATH_SUBTRACT_INCLUDE_PREVIOUS_SIGXPath-Subtract-Filter (schliesst vorhandene Signatur ein).
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Deprecated Methods Modifier and Type Method Description static XmlSecFassadegetInstance()booleaninit()Allgemeine Initialisierung von XMLSEC.static booleanisBcFirst()static booleanisUseJSR105()static booleanloadBouncyCastle()Lädt den Security-Provider BouncyCastle.booleanpruefeSignaturen(org.w3c.dom.Document doc, boolean signatureMustExist, java.lang.String sigID)Deprecated.Deutsche Funktionsnamen sind nicht professionellprotected booleanpruefeSignaturen0(org.w3c.dom.Document doc, boolean signatureMustExist, java.lang.String sigID)Deprecated.Deutsche Funktionsnamen sind nicht professionellstatic voidsetUseJSR105(boolean useJSR105)java.security.PublicKeyunmarshalECDSAKeyValue(org.w3c.dom.Element kvtElem)booleanvalidateX509Certificate(org.w3c.dom.Element sigElem)booleanverifySignature(org.w3c.dom.Document doc, java.lang.String sigId)booleanverifySignatureApache(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 XmlSecExceptionDeprecated.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 XmlSecExceptionCheck 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, XmlSecExceptionDeprecated.Deutsche Funktionsnamen sind nicht professionell- Parameters:
doc-signatureMustExist-sigID-- Returns:
- true, wenn Signaturen gültig, false wenn Signaturen ungültig
- Throws:
javax.xml.crypto.MarshalExceptionjavax.xml.crypto.dsig.XMLSignatureExceptionXmlSecException
-
-