|
|||||||||
摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 |
java.security.cert
类 CertificateFactory
java.lang.Object java.security.cert.CertificateFactory
-
public class CertificateFactory
- extends Object
此类定义了用于从相关的编码中生成证书、证书路径 (CertPath
) 和证书撤消列表 (CRL) 对象的 CertificateFactory 功能。
为了实现多个证书组成的编码,如果要解析一个可能由多个不相关证书组成的集合时,应使用 generateCertificates
。否则,如果要生成 CertPath
(证书链)并随后使用 CertPathValidator
验证它,则应使用 generateCertPath
。
X.509 的 CertificateFactory 返回的证书必须是 java.security.cert.X509Certificate
的实例,CRL 的 CertificateFactory 返回的证书则必须是 java.security.cert.X509CRL
的实例。
以下示例代码读取一个具有 Base64 编码证书的文件,该证书由 -----BEGIN CERTIFICATE----- 语句开始,由 -----END CERTIFICATE----- 语句结束。我们将 FileInputStream
(它不支持 mark
和 reset
)转换成 BufferedInputStream
(它支持这些方法),这样每次调用 generateCertificate
只需要一个证书,并将输入流的读取位置定位在文件中的下一个证书处:
FileInputStream fis = new FileInputStream(filename); BufferedInputStream bis = new BufferedInputStream(fis); CertificateFactory cf = CertificateFactory.getInstance("X.509"); while (bis.available() > 0) { Certificate cert = cf.generateCertificate(bis); System.out.println(cert.toString()); }
以下示例代码解析一个存储在文件中的 PKCS#7 格式的证书答复,并从中提取所有的证书:
FileInputStream fis = new FileInputStream(filename); CertificateFactory cf = CertificateFactory.getInstance("X.509"); Collection c = cf.generateCertificates(fis); Iterator i = c.iterator(); while (i.hasNext()) { Certificate cert = (Certificate)i.next(); System.out.println(cert); }
- 从以下版本开始:
- 1.2
- 另请参见:
-
Certificate
,X509Certificate
,CertPath
,CRL
,X509CRL
构造方法摘要 | |
---|---|
protected |
CertificateFactory(CertificateFactorySpi certFacSpi, Provider provider, String type) 创建给定类型的 CertificateFactory 对象,并在其中封装给定的提供程序实现(SPI 对象)。 |
方法摘要 | |
---|---|
Certificate |
generateCertificate(InputStream inStream) 生成一个证书对象并使用从输入流 inStream 中读取的数据对它进行初始化。 |
Collection<? extends Certificate> |
generateCertificates(InputStream inStream) 返回从给定输入流 inStream 中读取的证书的集合视图(可能为空)。 |
CertPath |
generateCertPath(InputStream inStream) 生成一个 CertPath 对象,并使用从 InputStream inStream 中读取的数据对它进行初始化。 |
CertPath |
generateCertPath(InputStream inStream, String encoding) 生成一个 CertPath 对象,并使用从 InputStream inStream 中读取的数据对它进行初始化。 |
CertPath |
generateCertPath(List<? extends Certificate> certificates) 生成一个 CertPath 对象,并使用一个 Certificate 的 List 对它进行初始化。 |
CRL |
generateCRL(InputStream inStream) 生成一个证书撤消列表 (CRL) 对象,并使用从输入流 inStream 中读取的数据对它进行初始化。 |
Collection<? extends CRL> |
generateCRLs(InputStream inStream) 返回从给定输入流 inStream 中读取的 CRL 的集合视图(可能为空)。 |
Iterator<String> |
getCertPathEncodings() 返回此 CertificateFactory 支持的 CertPath 编码的迭代器,默认编码方式优先。 |
static CertificateFactory |
getInstance(String type) 生成一个实现指定证书类型的 CertificateFactory 对象。 |
static CertificateFactory |
getInstance(String type, Provider provider) 根据指定的提供程序生成一个指定证书类型的 CertificateFactory 对象。 |
static CertificateFactory |
getInstance(String type, String provider) 根据指定的提供程序生成一个指定证书类型的 CertificateFactory 对象。 |
Provider |
getProvider() 返回此 CertificateFactory 的提供程序。 |
String |
getType() 返回与此 CertificateFactory 相关联的证书类型的名称。 |
从类 java.lang.Object 继承的方法 |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
构造方法详细信息 |
---|
CertificateFactory
protected CertificateFactory(CertificateFactorySpi certFacSpi, Provider provider, String type)
-
创建给定类型的 CertificateFactory 对象,并在其中封装给定的提供程序实现(SPI 对象)。
- 参数:
-
certFacSpi
- 提供程序实现。 -
provider
- 提供程序。 -
type
- 证书类型。
方法详细信息 |
---|
getInstance
public static final CertificateFactory getInstance(String type) throws CertificateException
- 生成一个实现指定证书类型的 CertificateFactory 对象。如果默认提供程序包提供了所请求的证书类型的实现,则返回一个包含该实现的 CertificateFactory 实例。如果默认包中不存在该证书类型,则搜索其他包。
-
- 参数:
-
type
- 所请求的证书类型的名称。有关标准证书类型的信息,请参见《Java Cryptography Architecture API Specification & Reference 》中的附录 A。 - 返回:
- 指定类型的 CertificateFactory 对象。
- 抛出:
-
CertificateException
- 如果默认提供程序包中或搜索过的所有其他提供程序包中不存在请求的证书类型。
getInstance
public static final CertificateFactory getInstance(String type, String provider) throws CertificateException, NoSuchProviderException
- 根据指定的提供程序生成一个指定证书类型的 CertificateFactory 对象。
-
- 参数:
-
type
- 证书类型 -
provider
- 提供程序的名称。 - 返回:
- 指定类型的 CertificateFactory 对象。
- 抛出:
-
CertificateException
- 如果指定的提供程序不提供该证书类型。 -
NoSuchProviderException
- 如果尚未配置提供程序。 - 另请参见:
-
Provider
getInstance
public static final CertificateFactory getInstance(String type, Provider provider) throws CertificateException
-
根据指定的提供程序生成一个指定证书类型的 CertificateFactory 对象。注:该
provider
不必被注册。 -
- 参数:
-
type
- 证书类型 -
provider
- 提供程序 - 返回:
- 指定类型的 CertificateFactory 对象。
- 抛出:
-
CertificateException
- 如果指定的提供程序不提供该证书类型。 -
IllegalArgumentException
- 如果provider
为 null。 - 从以下版本开始:
- 1.4
- 另请参见:
-
Provider
getProvider
public final Provider getProvider()
- 返回此 CertificateFactory 的提供程序。
-
- 返回:
- 此 CertificateFactory 的提供程序。
getType
public final String getType()
- 返回与此 CertificateFactory 相关联的证书类型的名称。
-
- 返回:
- 与此 CertificateFactory 相关联的证书类型的名称。
generateCertificate
public final Certificate generateCertificate(InputStream inStream) throws CertificateException
-
生成一个证书对象并使用从输入流
inStream
中读取的数据对它进行初始化。为了利用此 CertificateFactory 所支持的专门的证书格式,可将返回的证书对象的类型强制转换为相应的证书类。例如,如果此 CertificateFactory 实现 X.509 证书,则可将返回的证书对象的类型强制转换为
X509Certificate
类。在用于 X.509 证书的 CertificateFactory 情况中,
inStream
中提供的证书必须是 DER 编码的,并且可以二进制或可打印的 (Base64) 编码形式提供。如果以 Base64 编码的形式提供该证书,则该证书必须由 -----BEGIN CERTIFICATE----- 语句开始,由 -----END CERTIFICATE----- 语句结束。注意,如果给定的输入流不支持
mark
和reset
,则此方法将使用整个输入流。否则,每次调用此方法都需要一个证书,并且将输入流的读取位置定位在固有的证书结尾标记后的下一个可用字节处。如果输入流中的数据不包含固有的证书结尾标记(不同于 EOF),并且在解析该证书后有一个尾随数据,则抛出CertificateException
。 -
- 参数:
-
inStream
- 带有证书数据的输入流。 - 返回:
- 已使用输入流中的数据初始化的证书对象。
- 抛出:
-
CertificateException
- 如果发生解析错误。
getCertPathEncodings
public final Iterator<String> getCertPathEncodings()
-
返回此 CertificateFactory 支持的
CertPath
编码的迭代器,默认编码方式优先。有关标准编码名称及其格式的信息,请参见《Java Certification Path API Programmer's Guide》中的附录 A。试图修改返回的
Iterator
(通过其remove
方法)会导致抛出UnsupportedOperationException
。 -
- 返回:
-
在受支持的
CertPath
编码名称(以String
的形式)上进行迭代的Iterator
- 从以下版本开始:
- 1.4