java.security.cert

接口
异常
java.lang.Object
  继承者 java.security.cert.CertificateFactorySpi

public abstract class CertificateFactorySpi
     
extends Object

此类定义了 CertificateFactory 类的服务提供者接口 (SPI)。希望为特定的证书类型(如 X.509)提供 CertificateFactory 实现的每个加密服务提供者都必须实现此类中的所有抽象方法。

CertificateFactory 用于根据相关的编码生成证书、证书路径 (CertPath) 和证书撤消列表 (CRL) 对象。

X.509 的 CertificateFactory 返回的证书必须是 java.security.cert.X509Certificate 的实例,CRL 的 CertificateFactory 返回的证书则必须是 java.security.cert.X509CRL 的实例。

从以下版本开始:
1.2
另请参见:
CertificateFactory, Certificate, X509Certificate, CertPath, CRL, X509CRL

构造方法摘要
CertificateFactorySpi()
           
 
方法摘要
abstract  Certificate engineGenerateCertificate(InputStream inStream)
          生成一个证书对象并使用从输入流 inStream 中读取的数据对它进行初始化。
abstract  Collection<? extends Certificate> engineGenerateCertificates(InputStream inStream)
          返回从给定输入流 inStream 中读取的证书的集合视图(可能为空)。
 CertPath engineGenerateCertPath(InputStream inStream)
          生成一个 CertPath 对象,并使用从 InputStream inStream 中读取的数据对它进行初始化。
 CertPath engineGenerateCertPath(InputStream inStream, String encoding)
          生成一个 CertPath 对象,并使用从 InputStream inStream 中读取的数据对它进行初始化。
 CertPath engineGenerateCertPath(List<? extends Certificate> certificates)
          生成一个 CertPath 对象,并使用 CertificateList 对它进行初始化。
abstract  CRL engineGenerateCRL(InputStream inStream)
          生成一个证书撤消列表 (CRL) 对象,并使用从输入流 inStream 中读取的数据对它进行初始化。
abstract  Collection<? extends CRL> engineGenerateCRLs(InputStream inStream)
          返回从给定输入流 inStream 中读取的 CRL 的集合视图(可能为空)。
 Iterator<String> engineGetCertPathEncodings()
          返回此 CertificateFactory 支持的 CertPath 编码的迭代器,默认编码方式优先。
 
从类 java.lang.Object 继承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

构造方法详细信息

CertificateFactorySpi

public CertificateFactorySpi()
方法详细信息

engineGenerateCertificate

public abstract Certificate engineGenerateCertificate(InputStream inStream)
                                               throws CertificateException
生成一个证书对象并使用从输入流 inStream 中读取的数据对它进行初始化。

为了利用此 CertificateFactory 所支持的专门的证书格式,可将返回的证书对象的类型强制转换为相应的证书类。例如,如果此 CertificateFactory 实现 X.509 证书,则可将返回的证书对象的类型强制转换为 X509Certificate 类。

在用于 X.509 证书的 CertificateFactory 情况中,inStream 中提供的证书必须是 DER 编码的,并且可以二进制或可打印的 (Base64) 编码形式提供。如果以 Base64 编码的形式提供该证书,则该证书必须由 -----BEGIN CERTIFICATE----- 语句开始,由 -----END CERTIFICATE----- 语句结束。

注意,如果给定的输入流不支持 markreset,则此方法将使用整个输入流。否则,每次调用此方法都需要一个证书,并且将输入流的读取位置定位在固有证书结尾标记后的下一个可用字节处。如果输入流中的数据不包含固有的证书结尾标记(不同于 EOF),并且在解析该证书后有一个尾随数据,则抛出 CertificateException

参数:
inStream - 带有证书数据的输入流。
返回:
已使用输入流中的数据初始化的证书对象。
抛出:
CertificateException - 如果发生解析错误。

engineGenerateCertPath

public CertPath engineGenerateCertPath(InputStream inStream)
                                throws CertificateException
生成一个 CertPath 对象,并使用从 InputStream inStream 中读取的数据对它进行初始化。假定数据是以默认编码方式进行编码的。

Java 2 Platform Standard Edition 的 1.4 版本中添加了此方法。为了维持与现有服务提供者的后向兼容性,无法 abstract 此方法,并且默认会抛出 UnsupportedOperationException

参数:
inStream - 包含数据的 InputStream
返回:
已使用 InputStream 中的数据初始化的 CertPath
抛出:
CertificateException - 如果解码时出现异常
UnsupportedOperationException - 如果不支持此方法
从以下版本开始:
1.4

engineGenerateCertPath

public CertPath engineGenerateCertPath(InputStream inStream,
                                       String encoding)
                                throws CertificateException
生成一个 CertPath 对象,并使用从 InputStream inStream 中读取的数据对它进行初始化。假定数据是以指定的编码方式进行编码的。

Java 2 Platform Standard Edition 的 1.4 版本中添加了此方法。为了维持与现有服务提供者的后向兼容性,无法 abstract 此方法,并且默认会抛出 UnsupportedOperationException

参数:
inStream - 包含数据的 InputStream
encoding - 数据使用的编码
返回:
已使用 InputStream 中的数据初始化的 CertPath
抛出:
CertificateException - 如果解码时出现异常或者不支持所请求的编码
UnsupportedOperationException - 如果不支持此方法
从以下版本开始:
1.4

engineGenerateCertPath

public CertPath engineGenerateCertPath(List<? extends Certificate> certificates)
                                throws CertificateException
生成一个 CertPath 对象,并使用 CertificateList 对它进行初始化。

所提供的证书必须是该 CertificateFactory 所支持的类型。将从提供的 List 对象中复制出这些证书。

Java 2 Platform Standard Edition 的 1.4 版本中添加了此方法。为了维持与现有服务提供者的后向兼容性,无法 abstract 此方法,并且默认会抛出 UnsupportedOperationException

参数:
certificates - CertificateList
返回:
已使用所提供的证书列表初始化的 CertPath
抛出:
CertificateException - 如果出现异常
UnsupportedOperationException - 如果不支持此方法
从以下版本开始:
1.4

engineGetCertPathEncodings

public Iterator<String> engineGetCertPathEncodings()
返回此 CertificateFactory 支持的 CertPath 编码的迭代器,默认编码方式优先。有关标准编码名称的信息,请参阅 Java Certification Path API Programmer's Guide 中的附录 A。

试图修改返回的 Iterator(通过其 remove 方法)会导致抛出 UnsupportedOperationException

Java 2 Platform Standard Edition 的 1.4 版本中添加了此方法。为了维持与现有服务提供者的后向兼容性,无法 abstract 此方法,并且默认会抛出 UnsupportedOperationException

返回:
在受支持的 CertPath 编码名称(以 String 的形式)上进行迭代的 Iterator
抛出:
UnsupportedOperationException - 如果不支持此方法
从以下版本开始:
1.4

engineGenerateCertificates

public abstract Collection<? extends Certificate> engineGenerateCertificates(InputStream inStream)
                                                                      throws CertificateException
返回从给定输入流 inStream 中读取的证书的集合视图(可能为空)。

为了利用此 CertificateFactory 所支持的专门的证书格式,可将返回的集合视图中的每个元素的类型强制转换为相应的证书类。例如,如果此 CertificateFactory 实现 X.509 证书,则可将返回集合中的元素的类型强制转换为 X509Certificate 类。

在用于 X.509 证书的 CertificateFactory 情况中,inStream 可能包含单个 DER 编码的证书,这些证书使用 generateCertificate 所描述的格式。另外,inStream 可能包含一个 PKCS#7 证书链。这是一个 PKCS#7 SignedData 对象,具有惟一认可 的有效字段。需要特别指出的是,签名和内容会被忽略。此格式允许同时下载多个证书。如果没有证书,则返回一个空集合。

注意,如果给定的输入流不支持 markreset,则此方法将使用整个输入流。

参数:
inStream - 带有证书的输入流。
返回:
java.security.cert.Certificate 对象的集合视图(可能为空),用输入流中的数据对该对象进行初始化。
抛出:
CertificateException - 如果发生解析错误。

engineGenerateCRL

public abstract CRL engineGenerateCRL(InputStream inStream)
                               throws CRLException
生成一个证书撤消列表 (CRL) 对象,并使用从输入流 inStream 中读取的数据对它进行初始化。

为了利用此 CertificateFactory 所支持的专门的 CRL 格式,可将返回的 CRL 对象的类型强制转换为相应的 CRL 类。例如,如果此 CertificateFactory 实现 X.509 CRL,则可将返回的 CRL 对象的类型强制转换为 X509CRL 类。

注意,如果给定的输入流不支持 markreset,则此方法将使用整个输入流。否则,每次调用此方法都需要一个 CRL,并且将输入流的读取位置定位在固有 CRL 结尾标记后的下一个可用字节处。如果输入流中的数据不包含固有的 CRL 结尾标记(不同于 EOF),并且在解析该 CRL 后有一个尾随数据,则抛出 CRLException

参数:
inStream - 带有 CRL 数据的输入流。
返回:
已使用输入流中的数据初始化的 CRL 对象。
抛出:
CRLException - 如果发生解析错误。

engineGenerateCRLs

public abstract Collection<? extends CRL> engineGenerateCRLs(InputStream inStream)
                                                      throws CRLException
返回从给定输入流 inStream 中读取的 CRL 的集合视图(可能为空)。

为了利用此 CertificateFactory 所支持的专门的 CRL 格式,可将返回的集合视图中的每个元素的类型强制转换为相应的 CRL 类。例如,如果此 CertificateFactory 实现 X.509 CRL,则可将返回集合中的元素类型强制转换为 X509CRL 类。

在用于 X.509 CRL 的 CertificateFactory 情况中,inStream 可能包含单个 DER 编码的 CRL。另外,inStream 可能包含一个 PKCS#7 CRL 集合。这是一个 PKCS#7 SignedData 对象,具有惟一被 crl 的有效字段。需要特别指出的是,签名和内容会被忽略。此格式允许同时下载多个 CRL。如果没有 CRL,则返回一个空集合。

注意,如果给定的输入流不支持 markreset,则此方法将使用整个输入流。

参数:
inStream - 带有 CRL 的输入流。
返回:
java.security.cert.CRL 对象的集合视图(可能为空),用输入流中的数据对该对象进行初始化。
抛出:
CRLException - 如果发生解析错误。