# Interface XMLSignature

All Superinterfaces:
  `XMLStructure`

public interface XMLSignature extends XMLStructure
A representation of the XML `Signature` element as defined in the W3C Recommendation for XML-Signature Syntax and Processing. This class contains methods for signing and validating XML signatures with behavior as defined by the W3C specification. The XML Schema Definition is defined as:

    <element name="Signature" type="ds:SignatureType"/>
    <complexType name="SignatureType">
       <sequence>
         <element ref="ds:SignedInfo"/>
         <element ref="ds:SignatureValue"/>
         <element ref="ds:KeyInfo" minOccurs="0"/>
         <element ref="ds:Object" minOccurs="0" maxOccurs="unbounded"/>
       </sequence>
       <attribute name="Id" type="ID" use="optional"/>
    </complexType>

An `XMLSignature` instance may be created by invoking one of the `newXMLSignature` methods of the `XMLSignatureFactory` class.

If the contents of the underlying document containing the `XMLSignature` are subsequently modified, the behavior is undefined.

Note that this class is named `XMLSignature` rather than `Signature` to avoid naming clashes with the existing `java.security.Signature` class.

Since:
  1.6
See Also:
  - `XMLSignatureFactory.newXMLSignature(SignedInfo, KeyInfo)`
  - `XMLSignatureFactory.newXMLSignature(SignedInfo, KeyInfo, List, String, String)`

- ## Nested Class Summary

  Nested Classes
  Modifier and Type
  Interface
  Description
  `static interface`
  `XMLSignature.SignatureValue`
  A representation of the XML `SignatureValue` element as defined in the W3C Recommendation for XML-Signature Syntax and Processing.

- ## Field Summary

  Fields
  Modifier and Type
  Field
  Description
  `static final String`
  `XMLNS`
  The XML Namespace URI of the W3C Recommendation for XML-Signature Syntax and Processing.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `String`
  `getId()`
  Returns the optional Id of this `XMLSignature`.
  `KeyInfo`
  `getKeyInfo()`
  Returns the key info of this `XMLSignature`.
  `KeySelectorResult`
  `getKeySelectorResult()`
  Returns the result of the `KeySelector`, if specified, after this `XMLSignature` has been signed or validated.
  `List<XMLObject>`
  `getObjects()`
  Returns an `unmodifiable list` of `XMLObject`s contained in this `XMLSignature`.
  `XMLSignature.SignatureValue`
  `getSignatureValue()`
  Returns the signature value of this `XMLSignature`.
  `SignedInfo`
  `getSignedInfo()`
  Returns the signed info of this `XMLSignature`.
  `void`
  `sign(XMLSignContext signContext)`
  Signs this `XMLSignature`.
  `boolean`
  `validate(XMLValidateContext validateContext)`
  Validates the signature according to the core validation processing rules.

  ### Methods declared in interface XMLStructure

  `isFeatureSupported`
  Modifier and Type
  Method
  Description
  `boolean`
  `isFeatureSupported(String feature)`
  Indicates whether a specified feature is supported.

- ## Field Details

  - ### XMLNS

    static final String XMLNS
    The XML Namespace URI of the W3C Recommendation for XML-Signature Syntax and Processing.
    See Also:
      - Constant Field Values

- ## Method Details

  - ### validate

    boolean validate(XMLValidateContext validateContext) throws XMLSignatureException
    Validates the signature according to the core validation processing rules. This method validates the signature using the existing state, it does not unmarshal and reinitialize the contents of the `XMLSignature` using the location information specified in the context.

    This method only validates the signature the first time it is invoked. On subsequent invocations, it returns a cached result.

    Parameters:
      `validateContext` - the validating context
    Returns:
      `true` if the signature passed core validation, otherwise `false`
    Throws:
      `ClassCastException` - if the type of `validateContext` is not compatible with this `XMLSignature`
      `NullPointerException` - if `validateContext` is `null`
      `XMLSignatureException` - if an unexpected error occurs during validation that prevented the validation operation from completing

  - ### getKeyInfo

    KeyInfo getKeyInfo()
    Returns the key info of this `XMLSignature`.
    Returns:
      the key info (may be `null` if not specified)

  - ### getSignedInfo

    SignedInfo getSignedInfo()
    Returns the signed info of this `XMLSignature`.
    Returns:
      the signed info (never `null`)

  - ### getObjects

    List<XMLObject> getObjects()
    Returns an `unmodifiable list` of `XMLObject`s contained in this `XMLSignature`.
    Returns:
      an unmodifiable list of `XMLObject`s (may be empty but never `null`)

  - ### getId

    String getId()
    Returns the optional Id of this `XMLSignature`.
    Returns:
      the Id (may be `null` if not specified)

  - ### getSignatureValue

    XMLSignature.SignatureValue getSignatureValue()
    Returns the signature value of this `XMLSignature`.
    Returns:
      the signature value

  - ### sign

    void sign(XMLSignContext signContext) throws MarshalException, XMLSignatureException
    Signs this `XMLSignature`.

    If this method throws an exception, this `XMLSignature` and the `signContext` parameter will be left in the state that it was in prior to the invocation.

    Parameters:
      `signContext` - the signing context
    Throws:
      `ClassCastException` - if the type of `signContext` is not compatible with this `XMLSignature`
      `NullPointerException` - if `signContext` is `null`
      `MarshalException` - if an exception occurs while marshalling
      `XMLSignatureException` - if an unexpected exception occurs while generating the signature

  - ### getKeySelectorResult

    KeySelectorResult getKeySelectorResult()
    Returns the result of the `KeySelector`, if specified, after this `XMLSignature` has been signed or validated.
    Returns:
      the key selector result, or `null` if a key selector has not been specified or this `XMLSignature` has not been signed or validated