APIdia Launch Partner
Top Description Fields Methods
javax.xml.crypto.dsig.keyinfo

public Interface KeyValue

extends XMLStructure
Known Direct Implementers
org.jcp.xml.dsig.internal.dom.DOMKeyValue
Imports
java.security.KeyException, .PublicKey, java.security.interfaces.DSAPublicKey, .RSAPublicKey, javax.xml.crypto.XMLStructure

A representation of the XML KeyValue element as defined in the W3C Recommendation for XML-Signature Syntax and Processing. A KeyValue object contains a single public key that may be useful in validating the signature. The XML schema definition is defined as:
   <element name="KeyValue" type="ds:KeyValueType"/>
   <complexType name="KeyValueType" mixed="true">
     <choice>
       <element ref="ds:DSAKeyValue"/>
       <element ref="ds:RSAKeyValue"/>
       <!-- <element ref="dsig11:ECKeyValue"/> -->
       <!-- ECC keys (XMLDsig 1.1) will use the any element -->
       <any namespace="##other" processContents="lax"/>
     </choice>
   </complexType>

   <element name="DSAKeyValue" type="ds:DSAKeyValueType"/>
   <complexType name="DSAKeyValueType">
     <sequence>
       <sequence minOccurs="0">
         <element name="P" type="ds:CryptoBinary"/>
         <element name="Q" type="ds:CryptoBinary"/>
       </sequence>
       <element name="G" type="ds:CryptoBinary" minOccurs="0"/>
       <element name="Y" type="ds:CryptoBinary"/>
       <element name="J" type="ds:CryptoBinary" minOccurs="0"/>
       <sequence minOccurs="0">
         <element name="Seed" type="ds:CryptoBinary"/>
         <element name="PgenCounter" type="ds:CryptoBinary"/>
       </sequence>
     </sequence>
   </complexType>

   <element name="RSAKeyValue" type="ds:RSAKeyValueType"/>
   <complexType name="RSAKeyValueType">
     <sequence>
       <element name="Modulus" type="ds:CryptoBinary"/>
       <element name="Exponent" type="ds:CryptoBinary"/>
     </sequence>
   </complexType>

   <complexType name="ECKeyValueType">
     <sequence>
       <choice>
         <element name="ECParameters" type="dsig11:ECParametersType" />
         <element name="NamedCurve" type="dsig11:NamedCurveType" />
       </choice>
       <element name="PublicKey" type="dsig11:ECPointType" />
     </sequence>
     <attribute name="Id" type="ID" use="optional" />
   </complexType>

   <complexType name="NamedCurveType">
     <attribute name="URI" type="anyURI" use="required" />
   </complexType>

   <simpleType name="ECPointType">
     <restriction base="ds:CryptoBinary" />
   </simpleType>
See section 4.5.2.3.1 of the W3C Recommendation for the definition of ECParametersType.

A KeyValue instance may be created by invoking the newKeyValue method of the KeyInfoFactory class, and passing it a java.security.PublicKey representing the value of the public key. Here is an example of creating a KeyValue from a DSAPublicKey of a java.security.cert.Certificate stored in a java.security.KeyStore:

KeyStore keyStore = KeyStore.getInstance(KeyStore.getDefaultType());
PublicKey dsaPublicKey = keyStore.getCertificate("myDSASigningCert").getPublicKey();
KeyInfoFactory factory = KeyInfoFactory.getInstance("DOM");
KeyValue keyValue = factory.newKeyValue(dsaPublicKey);
This class returns the DSAKeyValue and RSAKeyValue elements as objects of type DSAPublicKey and RSAPublicKey, respectively. Note that not all of the fields in the schema are accessible as parameters of these types.
Authors
Sean Mullan, JSR 105 Expert Group
Since
1.6
See Also
KeyInfoFactory#newKeyValue(PublicKey)

Field Summary

Modifier and TypeField and Description
public static final String
DSA_TYPE

URI identifying the DSA KeyValue KeyInfo type: http://www.w3.org/2000/09/xmldsig#DSAKeyValue.

public static final String
EC_TYPE

URI identifying the EC KeyValue KeyInfo type: http://www.w3.org/2009/xmldsig11#ECKeyValue.

public static final String
RSA_TYPE

URI identifying the RSA KeyValue KeyInfo type: http://www.w3.org/2000/09/xmldsig#RSAKeyValue.

Method Summary

Modifier and TypeMethod and Description
public PublicKey

Returns:

the public key of this KeyValue
getPublicKey
()

Returns the public key of this KeyValue.

Inherited from javax.xml.crypto.XMLStructure:
isFeatureSupported

Field Detail

DSA_TYPEback to summary
public static final String DSA_TYPE

URI identifying the DSA KeyValue KeyInfo type: http://www.w3.org/2000/09/xmldsig#DSAKeyValue. This can be specified as the value of the type parameter of the RetrievalMethod class to describe a remote DSAKeyValue structure.

EC_TYPEback to summary
public static final String EC_TYPE

URI identifying the EC KeyValue KeyInfo type: http://www.w3.org/2009/xmldsig11#ECKeyValue. This can be specified as the value of the type parameter of the RetrievalMethod class to describe a remote ECKeyValue structure.

Since
13
RSA_TYPEback to summary
public static final String RSA_TYPE

URI identifying the RSA KeyValue KeyInfo type: http://www.w3.org/2000/09/xmldsig#RSAKeyValue. This can be specified as the value of the type parameter of the RetrievalMethod class to describe a remote RSAKeyValue structure.

Method Detail

getPublicKeyback to summary
public PublicKey getPublicKey() throws KeyException

Returns the public key of this KeyValue.

Returns:PublicKey

the public key of this KeyValue

Exceptions
KeyException:
if this KeyValue cannot be converted to a PublicKey