Module java.base

Class CertificateFactorySpi

java.lang.Object
java.security.cert.CertificateFactorySpi

public abstract class CertificateFactorySpi extends Object
此类为CertificateFactory类定义了服务提供程序接口SPI)。该类中的所有抽象方法必须由每个希望为特定证书类型(例如X.509)提供证书工厂实现的加密服务提供程序来实现。

证书工厂用于从其编码生成证书、证书路径(CertPath)和证书吊销列表(CRL)对象。

X.509的证书工厂必须返回java.security.cert.X509Certificate的实例,并且返回java.security.cert.X509CRL的实例。

自版本:
1.2
参见:
  • 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-----界定。

      请注意,如果给定的输入流不支持markreset,此方法将消耗整个输入流。否则,每次调用此方法都会消耗一个证书,并且输入流的读取位置将定位到隐含的证书结束标记之后的下一个可用字节。如果输入流中的数据不包含隐含的证书结束标记(除了EOF)并且在解析证书后存在尾随数据,则会抛出CertificateException

      参数:
      inStream - 包含证书数据的输入流。
      返回:
      使用来自输入流的数据初始化的证书对象。
      抛出:
      CertificateException - 解析错误。
    • engineGenerateCertPath

      public CertPath engineGenerateCertPath(InputStream inStream) throws CertificateException
      生成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

      public Iterator<String> 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。特别地,签名和内容将被忽略。此格式允许一次下载多个证书。如果没有证书存在,则返回一个空集合。

      请注意,如果给定的输入流不支持markreset,此方法将消耗整个输入流。

      参数:
      inStream - 包含证书的输入流。
      返回:
      从输入流中使用数据初始化的(可能为空的)java.security.cert.Certificate对象的集合视图。
      抛出:
      CertificateException - 解析错误。
    • engineGenerateCRL

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

      为了利用此证书工厂支持的专用CRL格式,返回的CRL对象可以强制转换为相应的CRL类。例如,如果此证书工厂实现了X.509 CRLs,返回的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读取的CRLs的(可能为空的)集合视图。

      为了利用此证书工厂支持的专用CRL格式,返回的集合视图中的每个元素都可以强制转换为相应的CRL类。例如,如果此证书工厂实现了X.509 CRLs,则返回的集合中的元素可以强制转换为X509CRL类。

      对于X.509 CRLs的证书工厂,inStream可能包含单个DER编码的CRL。此外,inStream可能包含PKCS#7 CRL集。这是一个PKCS#7 SignedData对象,唯一重要的字段是crls。特别地,签名和内容将被忽略。此格式允许一次下载多个CRL。如果不存在CRL,则返回一个空集合。

      请注意,如果给定的输入流不支持markreset,此方法将消耗整个输入流。

      参数:
      inStream - 包含CRLs的输入流。
      返回:
      从输入流中初始化的(可能为空的)java.security.cert.CRL对象的集合视图。
      抛出:
      CRLException - 解析错误时。