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. representing the value of the public key. Here is
an example of creating a KeyValue from a DSAPublicKey
of a java. stored in a
java.:
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.
KeyInfoFactory#newKeyValue(PublicKey)
| Modifier and Type | Field 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. |
| Modifier and Type | Method and Description |
|---|---|
| public PublicKey |
| DSA_TYPE | back 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 | |
| EC_TYPE | back 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
| |
| RSA_TYPE | back 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 | |
| getPublicKey | back to summary |
|---|---|
| public PublicKey getPublicKey() throws KeyException Returns the public key of this
| |