public abstract class CertificateFactorySpi extends Object
CertificateFactory
类。
该类中的所有抽象方法必须由希望为特定证书类型(例如X.509)提供证书工厂的实现的每个加密服务提供商实现。
证书工厂用于从其编码生成证书,认证路径( CertPath
)和证书撤销列表(CRL)对象。
X.509的证书工厂必须返回一个实例为java.security.cert.X509Certificate
,而CRL为java.security.cert.X509CRL
。
CertificateFactory
, Certificate
, X509Certificate
, CertPath
, CRL
, X509CRL
Constructor and Description |
---|
CertificateFactorySpi() |
Modifier and Type | Method and Description |
---|---|
abstract Certificate |
engineGenerateCertificate(InputStream inStream)
生成证书对象,并使用从输入流
inStream 读取的数据进行
inStream 。
|
abstract Collection<? extends Certificate> |
engineGenerateCertificates(InputStream inStream)
返回从给定输入流
inStream 读取的证书的(可能为空的)集合视图。
|
CertPath |
engineGenerateCertPath(InputStream inStream)
生成一个
CertPath 对象,并使用从
InputStream inStream读取的数据进行
InputStream 。
|
CertPath |
engineGenerateCertPath(InputStream inStream, String encoding)
生成一个
CertPath 对象,并使用从
InputStream inStream读取的数据进行
InputStream 。
|
CertPath |
engineGenerateCertPath(List<? extends Certificate> certificates)
生成一个
CertPath 对象,并使用
List 的
Certificate s进行
Certificate 。
|
abstract CRL |
engineGenerateCRL(InputStream inStream)
生成证书吊销列表(CRL)对象,并使用从输入流
inStream 读取的数据进行
inStream 。
|
abstract Collection<? extends CRL> |
engineGenerateCRLs(InputStream inStream)
返回从给定输入流
inStream 读取的CRL的(可能为空的)集合视图。
|
Iterator<String> |
engineGetCertPathEncodings()
返回此证书工厂
CertPath CertPath编码的迭代,首先使用默认编码。
|
public abstract Certificate engineGenerateCertificate(InputStream inStream) throws CertificateException
inStream
读取的数据进行inStream
。
为了利用此证书工厂支持的特殊证书格式,返回的证书对象可以类型转换为相应的证书类。 例如,如果此证书工厂实施X.509证书,则返回的证书对象可以类型转换为X509Certificate
类。
在X.509证书的证书工厂的情况下,inStream中提供的inStream
必须是DER编码的,并且可以以二进制或可打印(Base64)编码方式提供。 如果证书是以Base64编码方式提供的,则必须以----- BEGIN CERTIFICATE -----开头为边界,并且必须在----- END CERTIFICATE ----- 。
请注意,如果给定的输入流不支持mark
和reset
,则此方法将消耗整个输入流。 否则,对该方法的每次调用都会消耗一个证书,并且输入流的读取位置位于固有的证书结束标记之后的下一个可用字节。 如果输入流中的数据不包含固有的证书结束标记(EOF除外),并且在证书被解析后存在尾随数据,则会抛出一个CertificateException
。
inStream
- 具有证书数据的输入流。
CertificateException
- 解析错误。
public CertPath engineGenerateCertPath(InputStream inStream) throws CertificateException
CertPath
对象,并使用从InputStream
inStream读取的数据进行InputStream
。
数据假定为默认编码。
该方法被添加到Java 2平台标准版的1.4版本。 为了保持与现有服务提供商的向后兼容性,此方法不能为abstract
,默认情况下会抛出UnsupportedOperationException
。
inStream
- 一个
InputStream
数据的
InputStream
CertPath
初始化的数据来自
InputStream
CertificateException
- 解码时是否发生异常
UnsupportedOperationException
- 如果不支持该方法
public CertPath engineGenerateCertPath(InputStream inStream, String encoding) throws CertificateException
CertPath
对象,并使用从InputStream
inStream读取的数据进行InputStream
。
数据假定为指定的编码。
该方法被添加到Java 2平台标准版的1.4版本。 为了保持与现有服务提供商的向后兼容性,此方法不能为abstract
,默认情况下会抛出UnsupportedOperationException
。
inStream
- 一个
InputStream
数据的
InputStream
encoding
- 用于数据的编码
CertPath
初始化的数据来自
InputStream
CertificateException
- 如果在解码或请求的编码不支持时发生异常
UnsupportedOperationException
- 如果不支持该方法
public CertPath engineGenerateCertPath(List<? extends Certificate> certificates) throws CertificateException
CertPath
对象,并使用Certificate
s的List
进行Certificate
。
提供的证书必须是CertificateFactory支持的CertificateFactory
。 它们将被拷贝出来,随附的List
对象。
该方法被添加到Java 2平台标准版的1.4版本。 为了保持与现有服务提供商的向后兼容性,此方法不能为abstract
,默认情况下会抛出UnsupportedOperationException
。
certificates
- a
List
of
Certificate
s
CertPath
用提供的证书列表初始化
CertificateException
- 如果发生异常
UnsupportedOperationException
- 如果不支持该方法
public Iterator<String> engineGetCertPathEncodings()
CertPath
CertPath编码的迭代,首先使用默认编码。
看到的CertPath编码部分Java Cryptography Architecture Standard Algorithm Name Documentation有关标准编码名称的信息。
尝试通过其remove
方法修改返回的Iterator
会导致UnsupportedOperationException
。
该方法被添加到Java 2平台标准版的1.4版本。 为了保持与现有服务提供商的向后兼容性,此方法不能为abstract
,默认情况下会抛出UnsupportedOperationException
。
Iterator
的支持的CertPath
CertPath
名称(如
String
)
UnsupportedOperationException
- 如果不支持该方法
public abstract Collection<? extends Certificate> engineGenerateCertificates(InputStream inStream) throws CertificateException
inStream
读取的证书的(可能为空的)集合视图。
为了利用此证书工厂支持的特殊证书格式,返回的集合视图中的每个元素都可以类型转换为相应的证书类。 例如,如果此证书工厂实施X.509证书,返回集合中的元素可以类型转换为X509Certificate
类。
在X.509证书的证书工厂的情况下, inStream
可能包含generateCertificate
所述格式的单个DER编码证书 。 另外, inStream
可能包含PKCS#7证书链。 这是一个PKCS#7 SignedData对象,唯一有效的字段是证书 。 特别地,签名和内容被忽略。 此格式允许一次下载多个证书。 如果没有证书,则返回空集合。
inStream
- 具有
inStream
的输入流。
CertificateException
- 解析错误。
public abstract CRL engineGenerateCRL(InputStream inStream) throws CRLException
inStream
读取的数据进行inStream
。
为了利用此证书工厂支持的专用CRL格式,返回的CRL对象可以对应于相应的CRL类型。 例如,如果此证书工厂实现X.509 CRL,则返回的CRL对象可以类型转换为X509CRL
类。
请注意,如果给定的输入流不支持mark
和reset
,则此方法将消耗整个输入流。 否则,对该方法的每次调用都会消耗一个CRL,并且输入流的读取位置位于固有的CRL结束标记之后的下一个可用字节。 如果输入流中的数据不包含固有的CRL结束标记(EOF除外),并且在解析CRL后存在尾随数据,则会抛出CRLException
。
inStream
- 具有CRL数据的输入流。
CRLException
- 解析错误。
public abstract Collection<? extends CRL> engineGenerateCRLs(InputStream inStream) throws CRLException
inStream
读取的CRL的(可能为空的)集合视图。
为了利用此证书工厂支持的专用CRL格式,返回的集合视图中的每个元素都可以类型转换为相应的CRL类。 例如,如果此证书工厂实现X.509 CRL,则返回的集合中的元素可以类型转换为X509CRL
类。
在X.509 CRL的证书工厂的情况下, inStream
可能包含单个DER编码的CRL。 另外, inStream
可能包含PKCS#7 CRL集。 这是一个PKCS#7 SignedData对象,唯一有效的字段是crls 。 特别地,签名和内容被忽略。 此格式允许一次下载多个CRL。 如果没有CRL,则返回一个空的集合。
inStream
- 具有CRL的输入流。
CRLException
- 解析错误。