Package eu.europa.esig.dss.xades
Class DSSXMLUtils
java.lang.Object
eu.europa.esig.dss.xades.DSSXMLUtils
public final class DSSXMLUtils extends Object
Utility class that contains some XML related method.
-
Method Summary
Modifier and Type Method Description static Node
alignChildrenIndents(Node parentNode)
Aligns indents for all children of the given nodestatic boolean
canCanonicalize(String canonicalizationMethod)
This method says if the framework can canonicalize an XML data with the provided method.static byte[]
canonicalize(String canonicalizationMethod, byte[] toCanonicalizeBytes)
This method canonicalizes the given array of bytes using thecanonicalizationMethod
parameter.static byte[]
canonicalizeOrSerializeSubtree(String canonicalizationMethod, Node node)
This methods canonicalizes or serializes the given node depending on the canonicalization method (can be null)static byte[]
canonicalizeSubtree(String canonicalizationMethod, Node node)
This method canonicalizes the givenNode
.static String
getAttribute(Node node, String attributeName)
Returns attribute value for the given attribute name if exist, otherwise returns NULLstatic Digest
getDigestAndValue(Element element)
This method extracts the Digest algorithm and value from an element of type DigestAlgAndValueTypestatic Document
getDocWithIndentedSignatures(Document documentDom, String signatureId, List<String> noIndentObjectIds)
static Element
getFirstElementChildNode(Node parentNode)
Returns firstElement
child from the given parentNodestatic String
getIDIdentifier(Node node)
If this method finds an attribute with the name ID (case-insensitive) then it is returned.static Node
getIndentedNode(Node documentDom, Node xmlNode)
Returns an indented xmlNodestatic byte[]
getNodeBytes(Node node)
Returns bytes of the givennode
static String
getOidCode(String oid)
Keeps only code of the oid string e.g.static byte[]
getReferenceOriginalContentBytes(org.apache.xml.security.signature.Reference reference)
Returns bytes of the original referenced datastatic Node
indentAndExtend(Document document, Node newNode, Node oldNode)
Extends the given oldNode by appending new indented childs from the given newNodestatic Node
indentAndReplace(Document document, Node node)
Indents the given node and replaces it with a new one on the documentstatic boolean
isCounterSignature(org.apache.xml.security.signature.Reference reference, XAdESPaths xadesPaths)
Determines if the givenreference
refers to CounterSignature elementstatic boolean
isDuplicateIdsDetected(DSSDocument doc)
This method is used to detect duplicate id valuesstatic boolean
isKeyInfoReference(org.apache.xml.security.signature.Reference reference, Element signature)
Checks if the given reference is linked to a KeyInfo elementstatic boolean
isManifestReferenceType(String referenceType)
Checks if the givenreferenceType
is an xmldsig Manifest typestatic boolean
isObjectReferenceType(String referenceType)
Checks if the givenreferenceType
is an xmldsig Object typestatic boolean
isOid(String policyId)
static boolean
isSignedProperties(org.apache.xml.security.signature.Reference reference, XAdESPaths xadesPaths)
Determines if the givenreference
refers to SignedProperties elementstatic void
recursiveIdBrowse(Element element)
An ID attribute can only be dereferenced if it is declared in the validation context.static boolean
registerCanonicalizer(String c14nAlgorithmURI)
This method allows to register a canonicalizer.static boolean
registerTransform(String transformURI)
This method allows to register a transformation.static byte[]
serializeNode(Node xmlNode)
This method performs the serialization of the given nodestatic void
setIDIdentifier(Element childElement)
If this method finds an attribute with names ID (case-insensitive) then declares it to be a user-determined ID attribute.static String
validateAgainstXSD(XSDAbstractUtils xsdUtils, Source source)
This method allows to validate an XML against the XAdES XSD schema.
-
Method Details
-
registerTransform
This method allows to register a transformation.- Parameters:
transformURI
- the URI of transform- Returns:
- true if this set did not already contain the specified element
-
registerCanonicalizer
This method allows to register a canonicalizer.- Parameters:
c14nAlgorithmURI
- the URI of canonicalization algorithm- Returns:
- true if this set did not already contain the specified element
-
indentAndReplace
Indents the given node and replaces it with a new one on the document -
indentAndExtend
Extends the given oldNode by appending new indented childs from the given newNode -
getFirstElementChildNode
Returns firstElement
child from the given parentNode -
getDocWithIndentedSignatures
-
getIndentedNode
Returns an indented xmlNode -
alignChildrenIndents
Aligns indents for all children of the given node -
serializeNode
This method performs the serialization of the given node- Parameters:
xmlNode
- The node to be serialized.- Returns:
- the serialized bytes
-
canCanonicalize
This method says if the framework can canonicalize an XML data with the provided method.- Parameters:
canonicalizationMethod
- the canonicalization method to be checked- Returns:
- true if it is possible to canonicalize false otherwise
-
canonicalize
public static byte[] canonicalize(String canonicalizationMethod, byte[] toCanonicalizeBytes) throws DSSExceptionThis method canonicalizes the given array of bytes using thecanonicalizationMethod
parameter.- Parameters:
canonicalizationMethod
- canonicalization methodtoCanonicalizeBytes
- array of bytes to canonicalize- Returns:
- array of canonicalized bytes
- Throws:
DSSException
- if any error is encountered
-
canonicalizeSubtree
This method canonicalizes the givenNode
.- Parameters:
canonicalizationMethod
- canonicalization methodnode
-Node
to canonicalize- Returns:
- array of canonicalized bytes
-
canonicalizeOrSerializeSubtree
This methods canonicalizes or serializes the given node depending on the canonicalization method (can be null)- Parameters:
canonicalizationMethod
- the canonicalization method or nullnode
- the node to be canonicalized/serialized- Returns:
- array of bytes
-
recursiveIdBrowse
An ID attribute can only be dereferenced if it is declared in the validation context. This behaviour is caused by the fact that the attribute does not have attached type of information. Another solution is to parse the XML against some DTD or XML schema. This process adds the necessary type of information to each ID attribute.- Parameters:
element
-
-
getIDIdentifier
If this method finds an attribute with the name ID (case-insensitive) then it is returned. If there is more than one ID attributes then the first one is returned.- Parameters:
node
- the node to be checked- Returns:
- the ID attribute value or null
-
getAttribute
Returns attribute value for the given attribute name if exist, otherwise returns NULL -
setIDIdentifier
If this method finds an attribute with names ID (case-insensitive) then declares it to be a user-determined ID attribute.- Parameters:
childElement
-
-
validateAgainstXSD
This method allows to validate an XML against the XAdES XSD schema.- Parameters:
xsdUtils
- the XSD Utils class to be usedsource
-Source
XML to validate- Returns:
- null if the XSD validates the XML, error message otherwise
-
isOid
-
getOidCode
Keeps only code of the oid string e.g. "urn:oid:1.2.3" to "1.2.3"- Parameters:
oid
-String
Oid- Returns:
- Oid Code
-
isDuplicateIdsDetected
This method is used to detect duplicate id values- Parameters:
doc
- the document to be analyzed- Returns:
- TRUE if a duplicate id is detected
-
getNodeBytes
Returns bytes of the givennode
- Parameters:
node
-Node
to get bytes for- Returns:
- byte array
-
getReferenceOriginalContentBytes
public static byte[] getReferenceOriginalContentBytes(org.apache.xml.security.signature.Reference reference)Returns bytes of the original referenced data- Parameters:
reference
-Reference
to get bytes from- Returns:
- byte array containing original data
-
getDigestAndValue
This method extracts the Digest algorithm and value from an element of type DigestAlgAndValueType- Parameters:
element
- an Element of type DigestAlgAndValueType- Returns:
- an instance of Digest
-
isSignedProperties
public static boolean isSignedProperties(org.apache.xml.security.signature.Reference reference, XAdESPaths xadesPaths)Determines if the givenreference
refers to SignedProperties element- Parameters:
reference
-Reference
to check- Returns:
- TRUE if the reference refers to the SignedProperties, FALSE otherwise
-
isCounterSignature
public static boolean isCounterSignature(org.apache.xml.security.signature.Reference reference, XAdESPaths xadesPaths)Determines if the givenreference
refers to CounterSignature element- Parameters:
reference
-Reference
to check- Returns:
- TRUE if the reference refers to the CounterSignature, FALSE otherwise
-
isKeyInfoReference
public static boolean isKeyInfoReference(org.apache.xml.security.signature.Reference reference, Element signature)Checks if the given reference is linked to a KeyInfo element- Parameters:
reference
- theReference
to checksignature
- theElement
signature the given reference belongs to- Returns:
- TRUE if the reference is a KeyInfo reference, FALSE otherwise
-
isObjectReferenceType
Checks if the givenreferenceType
is an xmldsig Object type- Parameters:
referenceType
-String
to check the type for- Returns:
- TRUE if the provided
referenceType
is an Object type, FALSE otherwise
-
isManifestReferenceType
Checks if the givenreferenceType
is an xmldsig Manifest type- Parameters:
referenceType
-String
to check the type for- Returns:
- TRUE if the provided
referenceType
is an Manifest type, FALSE otherwise
-