CertificateFactory
类定义了服务提供程序接口(SPI)。该类中的所有抽象方法必须由每个希望为特定证书类型(例如X.509)提供证书工厂实现的加密服务提供程序来实现。
证书工厂用于从其编码生成证书、证书路径(CertPath
)和证书吊销列表(CRL)对象。
X.509的证书工厂必须返回java.security.cert.X509Certificate
的实例,并且返回java.security.cert.X509CRL
的实例。
- 自版本:
- 1.2
- 参见:
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionabstract Certificate
engineGenerateCertificate
(InputStream inStream) 生成证书对象并使用从输入流inStream
读取的数据对其进行初始化。abstract Collection
<? extends Certificate> engineGenerateCertificates
(InputStream inStream) 返回从给定输入流inStream
读取的证书的(可能为空的)集合视图。engineGenerateCertPath
(InputStream inStream) 生成CertPath
对象并使用从InputStream
inStream读取的数据对其进行初始化。engineGenerateCertPath
(InputStream inStream, String encoding) 生成CertPath
对象并使用从InputStream
inStream读取的数据对其进行初始化。engineGenerateCertPath
(List<? extends Certificate> certificates) 生成CertPath
对象并使用List
中的Certificate
初始化它。abstract CRL
engineGenerateCRL
(InputStream inStream) 生成证书吊销列表(CRL)对象并使用从输入流inStream
读取的数据对其进行初始化。abstract Collection
<? extends CRL> engineGenerateCRLs
(InputStream inStream) 返回从给定输入流inStream
读取的CRL(可能为空的)集合视图。返回此证书工厂支持的CertPath
编码的迭代器,首先是默认编码。
-
Constructor Details
-
CertificateFactorySpi
public CertificateFactorySpi()子类调用的构造函数。
-
-
Method Details
-
engineGenerateCertificate
public abstract Certificate engineGenerateCertificate(InputStream inStream) throws CertificateException 生成证书对象并使用从输入流inStream
读取的数据对其进行初始化。为了利用此证书工厂支持的专用证书格式,返回的证书对象可以强制转换为相应的证书类。例如,如果此证书工厂实现X.509证书,则返回的证书对象可以强制转换为
X509Certificate
类。对于X.509证书的证书工厂,
inStream
中提供的证书必须是DER编码的,可以以二进制或可打印(Base64)编码提供。如果证书以Base64编码提供,则必须在开头处被-----BEGIN CERTIFICATE-----界定,并且在结尾处被-----END CERTIFICATE-----界定。请注意,如果给定的输入流不支持
mark
和reset
,此方法将消耗整个输入流。否则,每次调用此方法都会消耗一个证书,并且输入流的读取位置将定位到隐含的证书结束标记之后的下一个可用字节。如果输入流中的数据不包含隐含的证书结束标记(除了EOF)并且在解析证书后存在尾随数据,则会抛出CertificateException
。- 参数:
-
inStream
- 包含证书数据的输入流。 - 返回:
- 使用来自输入流的数据初始化的证书对象。
- 抛出:
-
CertificateException
- 解析错误。
-
engineGenerateCertPath
生成CertPath
对象并使用从InputStream
inStream读取的数据对其进行初始化。假定数据采用默认编码。此方法已添加到Java 2平台标准版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平台标准版1.4版中。为了与现有服务提供程序保持向后兼容,此方法不能是
abstract
,默认情况下会抛出UnsupportedOperationException
。- 参数:
-
inStream
- 包含数据的InputStream
-
encoding
- 用于数据的编码 - 返回:
-
使用来自
InputStream
的数据初始化的CertPath
- 抛出:
-
CertificateException
- 解码异常或请求的编码不受支持 -
UnsupportedOperationException
- 不支持该方法 - 自版本:
- 1.4
-
engineGenerateCertPath
public CertPath engineGenerateCertPath(List<? extends Certificate> certificates) throws CertificateException 生成CertPath
对象并使用List
中的Certificate
初始化它。提供的证书必须是
CertificateFactory
支持的类型。它们将从提供的List
对象中复制出来。此方法已添加到Java 2平台标准版1.4版中。为了与现有服务提供程序保持向后兼容,此方法不能是
abstract
,默认情况下会抛出UnsupportedOperationException
。- 参数:
-
certificates
- 一组Certificate
- 返回:
-
使用提供的证书列表初始化的
CertPath
- 抛出:
-
CertificateException
- 如果发生异常 -
UnsupportedOperationException
- 不支持该方法 - 自版本:
- 1.4
-
engineGetCertPathEncodings
返回此证书工厂支持的CertPath
编码的迭代器,首先是默认编码。有关标准编码名称的信息,请参阅Java安全标准算法名称规范中的CertPath Encodings部分。尝试通过其
remove
方法修改返回的Iterator
会导致UnsupportedOperationException
。此方法已添加到Java 2平台标准版1.4版中。为了与现有服务提供程序保持向后兼容,此方法不能是
abstract
,默认情况下会抛出UnsupportedOperationException
。- 返回:
-
支持的
CertPath
编码名称的Iterator
(作为String
) - 抛出:
-
UnsupportedOperationException
- 不支持该方法 - 自版本:
- 1.4
-
engineGenerateCertificates
public abstract Collection<? extends Certificate> engineGenerateCertificates(InputStream inStream) throws CertificateException 返回从给定输入流inStream
读取的证书的(可能为空的)集合视图。为了利用此证书工厂支持的专用证书格式,返回的集合视图中的每个元素都可以强制转换为相应的证书类。例如,如果此证书工厂实现X.509证书,则返回的集合中的元素可以强制转换为
X509Certificate
类。对于X.509证书的证书工厂,
inStream
可能包含一个DER编码的单个证书,格式如generateCertificate
中描述的格式。此外,inStream
可能包含PKCS#7证书链。这是一个PKCS#7 SignedData对象,唯一重要的字段是certificates。特别地,签名和内容将被忽略。此格式允许一次下载多个证书。如果没有证书存在,则返回一个空集合。- 参数:
-
inStream
- 包含证书的输入流。 - 返回:
- 从输入流中使用数据初始化的(可能为空的)java.security.cert.Certificate对象的集合视图。
- 抛出:
-
CertificateException
- 解析错误。
-
engineGenerateCRL
生成证书吊销列表(CRL)对象,并使用从输入流inStream
读取的数据对其进行初始化。为了利用此证书工厂支持的专用CRL格式,返回的CRL对象可以强制转换为相应的CRL类。例如,如果此证书工厂实现了X.509 CRLs,返回的CRL对象可以强制转换为
X509CRL
类。请注意,如果给定的输入流不支持
mark
和reset
,此方法将消耗整个输入流。否则,每次调用此方法都会消耗一个CRL,并且输入流的读取位置将定位到隐含的CRL结束标记之后的下一个可用字节。如果输入流中的数据不包含隐含的CRL结束标记(除了EOF)并且在解析CRL后存在尾随数据,则会抛出CRLException
。- 参数:
-
inStream
- 包含CRL数据的输入流。 - 返回:
- 使用来自输入流的数据初始化的CRL对象。
- 抛出:
-
CRLException
- 解析错误时。
-
engineGenerateCRLs
public abstract Collection<? extends CRL> engineGenerateCRLs(InputStream inStream) throws CRLException 返回从给定输入流inStream
读取的CRLs的(可能为空的)集合视图。为了利用此证书工厂支持的专用CRL格式,返回的集合视图中的每个元素都可以强制转换为相应的CRL类。例如,如果此证书工厂实现了X.509 CRLs,则返回的集合中的元素可以强制转换为
X509CRL
类。对于X.509 CRLs的证书工厂,
inStream
可能包含单个DER编码的CRL。此外,inStream
可能包含PKCS#7 CRL集。这是一个PKCS#7 SignedData对象,唯一重要的字段是crls。特别地,签名和内容将被忽略。此格式允许一次下载多个CRL。如果不存在CRL,则返回一个空集合。- 参数:
-
inStream
- 包含CRLs的输入流。 - 返回:
- 从输入流中初始化的(可能为空的)java.security.cert.CRL对象的集合视图。
- 抛出:
-
CRLException
- 解析错误时。
-