KeyInfo (Java SE 26 & JDK 26)
Description: declaration: module: java.xml.crypto, package: javax.xml.crypto.dsig.keyinfo, interface: KeyInfo
Keywords: javax.xml.crypto.dsig.keyinfo.KeyInfo interface

# Interface KeyInfo

All Superinterfaces:
  `XMLStructure`

public interface KeyInfo extends XMLStructure
A representation of the XML `KeyInfo` element as defined in the W3C Recommendation for XML-Signature Syntax and Processing. A `KeyInfo` contains a list of `XMLStructure`s, each of which contain information that enables the recipient(s) to obtain the key needed to validate an XML signature. The XML Schema Definition is defined as:

    <element name="KeyInfo" type="ds:KeyInfoType"/>
    <complexType name="KeyInfoType" mixed="true">
      <choice maxOccurs="unbounded">
        <element ref="ds:KeyName"/>
        <element ref="ds:KeyValue"/>
        <element ref="ds:RetrievalMethod"/>
        <element ref="ds:X509Data"/>
        <element ref="ds:PGPData"/>
        <element ref="ds:SPKIData"/>
        <element ref="ds:MgmtData"/>
        <any processContents="lax" namespace="##other"/>
        <!-- (1,1) elements from (0,unbounded) namespaces -->
      </choice>
      <attribute name="Id" type="ID" use="optional"/>
    </complexType>

A `KeyInfo` instance may be created by invoking one of the `newKeyInfo` methods of the `KeyInfoFactory` class, and passing it a list of one or more `XMLStructure`s and an optional id parameter; for example:

      KeyInfoFactory factory = KeyInfoFactory.getInstance("DOM");
      KeyInfo keyInfo = factory.newKeyInfo
         (Collections.singletonList(factory.newKeyName("Alice"), "keyinfo-1"));

`KeyInfo` objects can also be marshalled to XML by invoking the `marshal` method.

Since:
  1.6
See Also:
  - `KeyInfoFactory.newKeyInfo(List)`
  - `KeyInfoFactory.newKeyInfo(List, String)`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `List<XMLStructure>`
  `getContent()`
  Returns an `unmodifiable list` containing the key information.
  `String`
  `getId()`
  Return the optional Id attribute of this `KeyInfo`, which may be useful for referencing this `KeyInfo` from other XML structures.
  `void`
  `marshal(XMLStructure parent, XMLCryptoContext context)`
  Marshals the key info to XML.

  ### Methods declared in interface XMLStructure

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

- ## Method Details

  - ### getContent

    List<XMLStructure> getContent()
    Returns an `unmodifiable list` containing the key information. Each entry of the list is an `XMLStructure`.

    If there is a public subclass representing the type of `XMLStructure`, it is returned as an instance of that class (ex: an `X509Data` element would be returned as an instance of `X509Data`).

    Returns:
      an unmodifiable list of one or more `XMLStructure`s in this `KeyInfo`. Never returns `null` or an empty list.

  - ### getId

    String getId()
    Return the optional Id attribute of this `KeyInfo`, which may be useful for referencing this `KeyInfo` from other XML structures.
    Returns:
      the Id attribute of this `KeyInfo` (may be `null` if not specified)

  - ### marshal

    void marshal(XMLStructure parent, XMLCryptoContext context) throws MarshalException
    Marshals the key info to XML.
    Parameters:
      `parent` - a mechanism-specific structure containing the parent node that the marshalled key info will be appended to
      `context` - the `XMLCryptoContext` containing additional context (may be null if not applicable)
    Throws:
      `ClassCastException` - if the type of `parent` or `context` is not compatible with this key info
      `MarshalException` - if the key info cannot be marshalled
      `NullPointerException` - if `parent` is `null`