所有类


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(它不支持 markreset)转换成 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 对象,并使用一个 CertificateList 对它进行初始化。
 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----- 语句结束。

注意,如果给定的输入流不支持 markreset,则此方法将使用整个输入流。否则,每次调用此方法都需要一个证书,并且将输入流的读取位置定位在固有的证书结尾标记后的下一个可用字节处。如果输入流中的数据不包含固有的证书结尾标记(不同于 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

微信小程序

微信扫一扫体验

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部