©
本文档使用
php.cn手册 发布
|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
上一个类 下一个类 | 框架 无框架 | |||||||||
摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 |
java.lang.Object javax.xml.crypto.dsig.keyinfo.KeyInfoFactory
public abstract class KeyInfoFactory
用于从头创建 KeyInfo
对象或从相应的 XML 表示形式解组 KeyInfo
对象的工厂。
每个 KeyInfoFactory
实例都支持一个特定的 XML 机制类型。要创建 KeyInfoFactory
,则需要调用一个静态 getInstance
方法,并传入所需的 XML 机制类型,例如:
KeyInfoFactory factory = KeyInfoFactory.getInstance("DOM");
此工厂生成的对象将基于 DOM 并遵守 DOM 互操作性要求,正如 API 概述的 DOM Mechanism Requirements 部分所定义的。有关标准机制类型列表,请参阅 API 概述的 Service Providers 部分。
使用 Provider
机制来注册和加载 KeyInfoFactory
实现。例如,支持 DOM 机制的服务提供者将在 Provider
子类中指定,如下所示:
put("KeyInfoFactory.DOM", "org.example.DOMKeyInfoFactory");
同时,由此工厂创建的 XMLStructure
可能包含特定于 KeyInfo
的状态,并且该状态是不可重用的。
实现至少必须支持默认的机制类型:DOM。
注意,调用者必须使用相同的 KeyInfoFactory
实例来创建特定 KeyInfo
对象的 XMLStructure
。如果同时使用来自不同提供者或不同机制类型的 XMLStructure
,则行为是不明确的。
并发访问
可保证此类的静态方法是线程安全的。多个线程可以并发调用此类中所定义的静态方法,而不会产生不良效果。
但是,对于此类所定义的非静态方法并非如此。除非具体的提供者另行指定,否则需要并发访问单个 KeyInfoFactory
实例的多个线程应该在它们之间实现同步并提供所需的锁定。对于每个线程都操作一个不同 KeyInfoFactory
实例的多个线程而言,无需实现同步。
构造方法摘要 | |
---|---|
protected |
KeyInfoFactory()
默认的构造方法,由子类调用。 |
方法摘要 | |
---|---|
static KeyInfoFactory |
getInstance()
返回支持默认 XML 处理机制和表示形式类型(“DOM”) 的 KeyInfoFactory 。 |
static KeyInfoFactory |
getInstance(String mechanismType)
返回 KeyInfoFactory ,它支持指定的 XML 处理机制和表示形式类型(比如:“DOM”)。 |
static KeyInfoFactory |
getInstance(String mechanismType,
Provider provider)
返回支持所需的 XML 处理机制和表示形式类型(比如:“DOM”)的 KeyInfoFactory ,由指定提供者提供。 |
static KeyInfoFactory |
getInstance(String mechanismType,
String provider)
返回支持所需的 XML 处理机制和表示形式类型(比如:“DOM”)的 KeyInfoFactory ,由指定提供者提供。 |
String |
getMechanismType()
返回此 KeyInfoFactory 支持的 XML 处理机制类型和表示形式类型(比如:“DOM”)。 |
Provider |
getProvider()
返回此 KeyInfoFactory 的提供者。 |
abstract URIDereferencer |
getURIDereferencer()
返回对 URIDereferencer 的引用,默认情况下用于取消引用 RetrievalMethod 对象中的 URI。 |
abstract boolean |
isFeatureSupported(String feature)
指示是否支持指定的功能。 |
abstract KeyInfo |
newKeyInfo(List content)
创建包含指定的密钥信息类型列表的 KeyInfo 。 |
abstract KeyInfo |
newKeyInfo(List content,
String id)
创建包含指定的密钥信息类型列表和可选 id 的 KeyInfo 。 |
abstract KeyName |
newKeyName(String name)
根据指定的名称创建 KeyName 。 |
abstract KeyValue |
newKeyValue(PublicKey key)
根据指定的公钥创建 KeyValue 。 |
abstract PGPData |
newPGPData(byte[] keyId)
根据指定的 PGP 公钥标识符创建 PGPData 。 |
abstract PGPData |
newPGPData(byte[] keyId,
byte[] keyPacket,
List other)
根据指定的 PGP 公钥标识符、可选的密钥材料包和外部元素的列表,创建 PGPData 。 |
abstract PGPData |
newPGPData(byte[] keyPacket,
List other)
根据指定的 PGP 密钥材料包和可选的外部元素列表创建 PGPData 。 |
abstract RetrievalMethod |
newRetrievalMethod(String uri)
根据指定的 URI 创建 RetrievalMethod 。 |
abstract RetrievalMethod |
newRetrievalMethod(String uri,
String type,
List transforms)
根据指定的参数创建 RetrievalMethod 。 |
abstract X509Data |
newX509Data(List content)
创建包含指定的 X.509 内容列表的 X509Data 。 |
abstract X509IssuerSerial |
newX509IssuerSerial(String issuerName,
BigInteger serialNumber)
根据指定的 X.500 发布方标识名和序列号创建 X509IssuerSerial 。 |
abstract KeyInfo |
unmarshalKeyInfo(XMLStructure xmlStructure)
根据特定于机制的 XMLStructure (比如:DOMStructure )实例解组新的 KeyInfo 实例。 |
从类 java.lang.Object 继承的方法 |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
构造方法详细信息 |
---|
protected KeyInfoFactory()
方法详细信息 |
---|
public static KeyInfoFactory getInstance(String mechanismType)
KeyInfoFactory
,它支持指定的 XML 处理机制和表示形式类型(比如:“DOM”)。
此方法使用标准的 JCA 提供者查找机制来查找并实例化所需机制类型的 KeyInfoFactory
实现。它将从首选的 Provider
开始,遍历已注册的安全 Provider
的列表。返回取自第一个支持指定机制的 Provider
中的新 KeyInfoFactory
对象。
注意,已注册提供者的列表可以通过 Security.getProviders()
方法获得。
mechanismType
- XML 处理机制和表示形式的类型。有关标准机制类型列表,请参阅 API 概述的 Service Providers 部分。
KeyInfoFactory
NullPointerException
- 如果 mechanismType
为 null
NoSuchMechanismException
- 如果没有任何 Provider
支持指定机制的 KeyInfoFactory
实现Provider
public static KeyInfoFactory getInstance(String mechanismType, Provider provider)
KeyInfoFactory
,由指定提供者提供。注意,指定的 Provider
对象不必已经在提供者列表中注册。
mechanismType
- XML 处理机制和表示形式的类型。有关标准机制类型列表,请参阅 API 概述的 Service Providers 部分。provider
- Provider
对象
KeyInfoFactory
NullPointerException
- 如果 mechanismType
或 provider
为 null
NoSuchMechanismException
- 如果不能从指定的 Provider
对象使用指定机制的 KeyInfoFactory
实现Provider
public static KeyInfoFactory getInstance(String mechanismType, String provider) throws NoSuchProviderException
KeyInfoFactory
,由指定提供者提供。指定的提供者必须已在安全提供者列表中注册。
注意,已注册提供者的列表可以通过 Security.getProviders()
方法获得。
mechanismType
- XML 处理机制和表示形式的类型。有关标准机制类型列表,请参阅 API 概述的 Service Providers 部分。provider
- 提供者的字符串名称
KeyInfoFactory
NoSuchProviderException
- 如果指定的提供者没有在安全提供者列表中注册
NullPointerException
- 如果 mechanismType
或 provider
为 null
NoSuchMechanismException
- 如果从指定的提供者不能使用指定机制的 KeyInfoFactory
实现Provider
public static KeyInfoFactory getInstance()
KeyInfoFactory
。
此方法使用标准的 JCA 提供者查找机制来查找并实例化默认机制类型的 KeyInfoFactory
实现。它将从首选的 Provider
开始,遍历已注册的安全 Provider
的列表。返回取自第一个支持 DOM 机制的 Provider
中的新 KeyInfoFactory
对象。
注意,已注册提供者的列表可以通过 Security.getProviders()
方法获得。
KeyInfoFactory
NoSuchMechanismException
- 如果没有任何 Provider
支持 DOM 机制的 KeyInfoFactory
实现Provider
public final String getMechanismType()
KeyInfoFactory
支持的 XML 处理机制类型和表示形式类型(比如:“DOM”)。
KeyInfoFactory
支持的 XML 处理机制类型public final Provider getProvider()
KeyInfoFactory
的提供者。
KeyInfoFactory
的提供者public abstract KeyInfo newKeyInfo(List content)
KeyInfo
。
content
- 一个列表,由一个或多个表示密钥信息类型的 XMLStructure
组成。需要复制该列表,以防止随后被修改。
KeyInfo
NullPointerException
- 如果 content
为 null
IllegalArgumentException
- 如果 content
为空
ClassCastException
- 如果 content
包含任何不是类型 XMLStructure
的条目public abstract KeyInfo newKeyInfo(List content, String id)
KeyInfo
。id
参数表示 XML ID
属性值,对于从其他 XML 结构引用 KeyInfo
很有用。
content
- 一个列表,由一个或多个表示密钥信息类型的 XMLStructure
组成。需要复制该列表,以防止随后被修改。id
- XML ID
的值(可以为 null
)
KeyInfo
NullPointerException
- 如果 content
为 null
IllegalArgumentException
- 如果 content
为空
ClassCastException
- 如果 content
包含任何不是类型 XMLStructure
的条目public abstract KeyName newKeyName(String name)
KeyName
。
name
- 标识密钥的名称
KeyName
NullPointerException
- 如果 name
为 null
public abstract KeyValue newKeyValue(PublicKey key) throws KeyException
KeyValue
。
key
- 公钥
KeyValue
KeyException
- 如果 key
的算法不可识别或不受 KeyInfoFactory
的支持
NullPointerException
- 如果 key
为 null
public abstract PGPData newPGPData(byte[] keyId)
PGPData
。
keyId
- RFC 2440 第 11.2 节定义的 PGP 公钥标识符。复制该数组,以防止随后被修改。
PGPData
NullPointerException
- 如果 keyId
为 null
IllegalArgumentException
- 如果密钥 id 的格式不正确public abstract PGPData newPGPData(byte[] keyId, byte[] keyPacket, List other)
PGPData
。
keyId
- RFC 2440 第 11.2 节定义的 PGP 公钥标识符。复制该数组,以防止随后被修改。keyPacket
- RFC 2440 第 5.5 节定义的 PGP 密钥材料包。复制该数组,以防止随后被修改。可以为 null
。other
- 一个列表,由表示外部名称空间中的元素的 XMLStructure
组成。需要复制该列表,以防止随后被修改。可以为 null
或空。
PGPData
NullPointerException
- 如果 keyId
为 null
IllegalArgumentException
- 如果 keyId
或 keyPacket
的格式不正确。对于 keyPacket
,将检查包头的格式,并验证标记,确定它属于哪种类型的密钥材料。包正文的内容和格式无需检查。
ClassCastException
- 如果 other
包含任何不是类型 XMLStructure
的条目public abstract PGPData newPGPData(byte[] keyPacket, List other)
PGPData
。
keyPacket
- RFC 2440 第 5.5 节定义的 PGP 密钥材料包。复制该数组,以防止随后被修改。other
- 一个列表,由表示外部名称空间中的元素的 XMLStructure
组成。需要复制该列表,以防止随后被修改。可以为 null
或空。
PGPData
NullPointerException
- 如果 keyPacket
为 null
IllegalArgumentException
- 如果 keyPacket
的格式不正确。对于 keyPacket
,将检查包头的格式,并验证标记,确定它属于哪种类型的密钥材料。包正文的内容和格式无需检查。
ClassCastException
- 如果 other
包含任何不是类型 XMLStructure
的条目public abstract RetrievalMethod newRetrievalMethod(String uri)
RetrievalMethod
。
uri
- 标识将要检索的 KeyInfo
信息的 URI
RetrievalMethod
NullPointerException
- 如果 uri
为 null
IllegalArgumentException
- 如果 uri
与 RFC 2396 不兼容public abstract RetrievalMethod newRetrievalMethod(String uri, String type, List transforms)
RetrievalMethod
。
uri
- 标识将要检索的 KeyInfo
信息的 URItype
- 标识将要检索的 KeyInfo
信息的类型的 URI (可以为 null
)transforms
- Transform
的列表。需要复制该列表,以防止随后被修改。可以为 null
或空。
RetrievalMethod
NullPointerException
- 如果 uri
为 null
IllegalArgumentException
- 如果 uri
与 RFC 2396 不兼容
ClassCastException
- 如果 transforms
包含不是类型 Transform
的任何条目public abstract X509Data newX509Data(List content)
X509Data
。
content
- 一个列表,由一个或多个 X.509 内容类型组成。有效的类型有 String
(主体名称)、byte[]
(主体的密钥 id)、X509Certificate
、X509CRL
或 XMLStructure
(来自外部名称空间的 X509IssuerSerial
对象或元素)。主体名称是 RFC 2253 String 格式的标识名。这些实现必须支持 RFC 2253(CN、L、ST、O、OU、C、STREET、DC 和 UID)中定义的属性类型关键字。这些实现可能还支持其他关键字。需要复制该列表,以防止随后被修改。
X509Data
NullPointerException
- 如果 content
为 null
IllegalArgumentException
- 如果 content
为空,或者主体与 RFC 2253 不兼容或无法识别其中一个属性类型关键字。
ClassCastException
- 如果 content
包含不是上述任何有效类型的任何条目public abstract X509IssuerSerial newX509IssuerSerial(String issuerName, BigInteger serialNumber)
X509IssuerSerial
。
issuerName
- RFC 2253 String 格式的发布方标识名。这些实现必须支持 RFC 2253(CN、L、ST、O、OU、C、STREET、DC 和 UID)中定义的属性类型关键字。这些实现可能还支持其他关键字。serialNumber
- 序列号
X509IssuerSerial
NullPointerException
- 如果 issuerName
或 serialNumber
为 null
IllegalArgumentException
- 如果发布方名称与 RFC 2253 不兼容,或者无法识别其中一个属性类型关键字。public abstract boolean isFeatureSupported(String feature)
feature
- 功能名称(以抽象 URI 形式)
true
,否则返回 false
NullPointerException
- 如果 feature
为 null
public abstract URIDereferencer getURIDereferencer()
URIDereferencer
的引用,默认情况下用于取消引用 RetrievalMethod
对象中的 URI。
URIDereferencer
的引用public abstract KeyInfo unmarshalKeyInfo(XMLStructure xmlStructure) throws MarshalException
XMLStructure
(比如:DOMStructure
)实例解组新的 KeyInfo
实例。
xmlStructure
- 从中解组 keyinfo 的特定于机制的 XML 结构
KeyInfo
NullPointerException
- 如果 xmlStructure
为 null
ClassCastException
- 如果 xmlStructure
的类型不适合此工厂
MarshalException
- 如果解组过程中发生不可恢复的异常
|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
上一个类 下一个类 | 框架 无框架 | |||||||||
摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 |
版权所有 2004 Sun Microsystems, Inc. 保留所有权利。 请遵守许可证条款。另请参阅文档重新分发政策。