# Class DOMValidateContext

java.lang.Object
javax.xml.crypto.dom.DOMCryptoContext
javax.xml.crypto.dsig.dom.DOMValidateContext

All Implemented Interfaces:
  `XMLValidateContext, XMLCryptoContext`

public class DOMValidateContext extends DOMCryptoContext implements XMLValidateContext
A DOM-specific `XMLValidateContext`. This class contains additional methods to specify the location in a DOM tree where an `XMLSignature` is to be unmarshalled and validated from.

Note that the behavior of an unmarshalled `XMLSignature` is undefined if the contents of the underlying DOM tree are modified by the caller after the `XMLSignature` is created.

Also, note that `DOMValidateContext` instances can contain information and state specific to the XML signature structure it is used with. The results are unpredictable if a `DOMValidateContext` is used with different signature structures (for example, you should not use the same `DOMValidateContext` instance to validate two different `XMLSignature` objects).

Implementation Note:
  The JDK implementation supports the following properties that can be set using the `setProperty` method.
  - `org.jcp.xml.dsig.secureValidation`: value must be a `Boolean`. When enabled, validation of XML signatures are subject to stricter checking of algorithms and other constraints as specified by the `jdk.xml.dsig.secureValidationPolicy` security property. The default value if not specified is `Boolean.TRUE`. The mode can be disabled by setting the property to `Boolean.FALSE`. The mode can also be enabled or disabled by setting the `org.jcp.xml.dsig.secureValidation` system property to "true" or "false". Any other value for the system property is also treated as "false". If the system property is set, it supersedes the `DOMValidateContext` property value.
  - `org.jcp.xml.dsig.validateManifests`: value must be a `Boolean`. If enabled, the references in manifest elements (if exist) are validated during signature validation. The default value if not specified is `Boolean.FALSE`.
  - `org.jcp.xml.dsig.internal.dom.SignatureProvider`: value must be a `Provider`. If specified, the underlying `Signature` will be instantiated from this provider.
Since:
  1.6
See Also:
  - `XMLSignatureFactory.unmarshalXMLSignature(XMLValidateContext)`

## Constructor Summary

Constructors
Constructor
Description
`DOMValidateContext(Key validatingKey, Node node)`
Creates a `DOMValidateContext` containing the specified key and node.
`DOMValidateContext(KeySelector ks, Node node)`
Creates a `DOMValidateContext` containing the specified key selector and node.

## Method Summary

Modifier and Type
Method
Description
`Node`
`getNode()`
Returns the node.
`void`
`setNode(Node node)`
Sets the node.

### Methods declared in class DOMCryptoContext

`get, getBaseURI, getDefaultNamespacePrefix, getElementById, getKeySelector, getNamespacePrefix, getProperty, getURIDereferencer, iterator, put, putNamespacePrefix, setBaseURI, setDefaultNamespacePrefix, setIdAttributeNS, setKeySelector, setProperty, setURIDereferencer`
Modifier and Type
Method
Description
`Object`
`get(Object key)`
This implementation uses an internal `HashMap` to get the object that the specified key maps to.
`String`
`getBaseURI()`
Returns the base URI.
`String`
`getDefaultNamespacePrefix()`
Returns the default namespace prefix.
`Element`
`getElementById(String idValue)`
Returns the `Element` with the specified ID attribute value.
`KeySelector`
`getKeySelector()`
Returns the key selector for finding a key.
`String`
`getNamespacePrefix(String namespaceURI, String defaultPrefix)`
This implementation uses an internal `HashMap` to get the prefix that the specified URI maps to.
`Object`
`getProperty(String name)`
This implementation uses an internal `HashMap` to get the object that the specified name maps to.
`URIDereferencer`
`getURIDereferencer()`
Returns a `URIDereferencer` that is used to dereference `URIReference`s.
`Iterator<Map.Entry<String,Element>>`
`iterator()`
Returns a read-only iterator over the set of Id/Element mappings of this `DOMCryptoContext`.
`Object`
`put(Object key, Object value)`
This implementation uses an internal `HashMap` to map the key to the specified object.
`String`
`putNamespacePrefix(String namespaceURI, String prefix)`
This implementation uses an internal `HashMap` to map the URI to the specified prefix.
`void`
`setBaseURI(String baseURI)`
Sets the base URI.
`void`
`setDefaultNamespacePrefix(String defaultPrefix)`
Sets the default namespace prefix.
`void`
`setIdAttributeNS(Element element, String namespaceURI, String localName)`
Registers the element's attribute specified by the namespace URI and local name to be of type ID.
`void`
`setKeySelector(KeySelector ks)`
Sets the key selector for finding a key.
`Object`
`setProperty(String name, Object value)`
This implementation uses an internal `HashMap` to map the name to the specified object.
`void`
`setURIDereferencer(URIDereferencer dereferencer)`
Sets a `URIDereferencer` that is used to dereference `URIReference`s.

### Methods declared in class Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`
Modifier and Type
Method
Description
`protected Object`
`clone()`
Creates and returns a copy of this object.
`boolean`
`equals(Object obj)`
Indicates whether some other object is "equal to" this one.
`protected void`
`finalize()`
Deprecated, for removal: This API element is subject to removal in a future version.
Finalization is deprecated and subject to removal in a future release.
`final Class<?>`
`getClass()`
Returns the runtime class of this `Object`.
`int`
`hashCode()`
Returns a hash code value for this object.
`final void`
`notify()`
Wakes up a single thread that is waiting on this object's monitor.
`final void`
`notifyAll()`
Wakes up all threads that are waiting on this object's monitor.
`String`
`toString()`
Returns a string representation of the object.
`final void`
`wait()`
Causes the current thread to wait until it is awakened, typically by being notified or interrupted.
`final void`
`wait(long timeoutMillis)`
Causes the current thread to wait until it is awakened, typically by being notified or interrupted, or until a certain amount of real time has elapsed.
`final void`
`wait(long timeoutMillis, int nanos)`
Causes the current thread to wait until it is awakened, typically by being notified or interrupted, or until a certain amount of real time has elapsed.

## Constructor Details

### DOMValidateContext

public DOMValidateContext(KeySelector ks, Node node)
Creates a `DOMValidateContext` containing the specified key selector and node.

Parameters:
  `ks` - a key selector for finding a validation key
  `node` - the node
Throws:
  `NullPointerException` - if `ks` or `node` is `null`

### DOMValidateContext

public DOMValidateContext(Key validatingKey, Node node)
Creates a `DOMValidateContext` containing the specified key and node. The validating key will be stored in a `singleton KeySelector` that is returned when the `getKeySelector` method is called.

Parameters:
  `validatingKey` - the validating key
  `node` - the node
Throws:
  `NullPointerException` - if `validatingKey` or `node` is `null`

## Method Details

### setNode

public void setNode(Node node)
Sets the node.

Parameters:
  `node` - the node
Throws:
  `NullPointerException` - if `node` is `null`
See Also:
  - `getNode()`

### getNode

public Node getNode()
Returns the node.

Returns:
  the node (never `null`)
See Also:
  - `setNode(Node)`