Module java.xml.crypto

Interface KeyValue

所有超级接口:
XMLStructure

public interface KeyValue extends XMLStructure
代表XML KeyValue元素的表示,如W3C XML签名语法和处理推荐标准中定义的。一个KeyValue对象包含一个单一的公钥,可能对验证签名有用。XML模式定义如下:
    <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>
 
请参阅W3C推荐标准的第4.5.2.3.1节,了解ECParametersType的定义。

可以通过调用KeyInfoFactory类的newKeyValue方法,并传递代表公钥值的PublicKey来创建KeyValue实例。以下是从存储在KeyStore中的CertificateDSAPublicKey创建KeyValue的示例:

 KeyStore keyStore = KeyStore.getInstance(KeyStore.getDefaultType());
 PublicKey dsaPublicKey = keyStore.getCertificate("myDSASigningCert").getPublicKey();
 KeyInfoFactory factory = KeyInfoFactory.getInstance("DOM");
 KeyValue keyValue = factory.newKeyValue(dsaPublicKey);
 
该类将返回DSAKeyValueRSAKeyValue元素作为DSAPublicKeyRSAPublicKey类型的对象。请注意,并非所有模式中的字段都可以作为这些类型的参数访问。
自版本:
1.6
参见:
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    static final String
    标识DSA KeyValue KeyInfo类型的URI: http://www.w3.org/2000/09/xmldsig#DSAKeyValue。
    static final String
    标识EC KeyValue KeyInfo类型的URI: http://www.w3.org/2009/xmldsig11#ECKeyValue。
    static final String
    标识RSA KeyValue KeyInfo类型的URI: http://www.w3.org/2000/09/xmldsig#RSAKeyValue。
  • Method Summary

    Modifier and Type
    Method
    Description
    返回此KeyValue的公钥。

    Methods declared in interface javax.xml.crypto.XMLStructure

    isFeatureSupported
  • Field Details

    • DSA_TYPE

      static final String DSA_TYPE
      标识DSA KeyValue KeyInfo类型的URI: http://www.w3.org/2000/09/xmldsig#DSAKeyValue。可以将其指定为RetrievalMethod类的type参数的值,以描述远程DSAKeyValue结构。
      参见:
    • RSA_TYPE

      static final String RSA_TYPE
      标识RSA KeyValue KeyInfo类型的URI: http://www.w3.org/2000/09/xmldsig#RSAKeyValue。可以将其指定为RetrievalMethod类的type参数的值,以描述远程RSAKeyValue结构。
      参见:
    • EC_TYPE

      static final String EC_TYPE
      标识EC KeyValue KeyInfo类型的URI: http://www.w3.org/2009/xmldsig11#ECKeyValue。可以将其指定为RetrievalMethod类的type参数的值,以描述远程ECKeyValue结构。
      参见:
  • Method Details

    • getPublicKey

      PublicKey getPublicKey() throws KeyException
      返回此KeyValue的公钥。
      返回:
      KeyValue的公钥
      抛出:
      KeyException - 如果无法将此KeyValue转换为PublicKey