模块  java.base
软件包  java.security.cert

Class CertificateFactorySpi


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

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

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

    从以下版本开始:
    1.2
    另请参见:
    CertificateFactoryCertificateX509CertificateCertPathCRLX509CRL
    • 构造方法详细信息

      • CertificateFactorySpi

        public CertificateFactorySpi()
    • 方法详细信息

      • 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中读取的数据InputStream进行初始化。 假设数据采用默认编码。

        此方法已添加到Java 2 Platform Standard Edition的1.4版中。 为了保持与现有服务提供者的向后兼容性,此方法不能是abstract ,默认情况下会抛出UnsupportedOperationException

        参数
        inStream - 包含数据的 InputStream
        结果
        一个 CertPath从与所述数据初始化 InputStream
        异常
        CertificateException - 如果解码时发生异常
        UnsupportedOperationException - 如果不支持该方法
        从以下版本开始:
        1.4
      • engineGenerateCertPath

        public CertPath engineGenerateCertPath​(InputStream inStream,
                                               String encoding)
                                        throws CertificateException
        生成CertPath对象,并使用从InputStream inStream中读取的数据InputStream进行初始化。 假设数据采用指定的编码。

        此方法已添加到Java 2 Platform Standard Edition的1.4版中。 为了保持与现有服务提供商的向后兼容性,此方法不能是abstract ,默认情况下会抛出UnsupportedOperationException

        参数
        inStream - 包含数据的 InputStream
        encoding - 用于数据的编码
        结果
        一个 CertPath从与所述数据初始化 InputStream
        异常
        CertificateException - 如果在解码时发生异常或不支持所请求的编码
        UnsupportedOperationException - 如果不支持该方法
        从以下版本开始:
        1.4
      • engineGenerateCertPath

        public CertPath engineGenerateCertPath​(List<? extends Certificate> certificates)
                                        throws CertificateException
        生成CertPath对象并使用ListCertificate对其进行初始化。

        提供的证书必须是CertificateFactory支持的类型。 它们将从提供的List对象中复制出来。

        此方法已添加到Java 2 Platform Standard Edition的1.4版中。 为了保持与现有服务提供者的向后兼容性,此方法不能是abstract ,默认情况下会抛出UnsupportedOperationException

        参数
        certificates - List of Certificate s
        结果
        使用提供的证书列表初始化的 CertPath
        异常
        CertificateException - 如果发生异常
        UnsupportedOperationException - 如果不支持该方法
        从以下版本开始:
        1.4
      • engineGetCertPathEncodings

        public Iterator<String> engineGetCertPathEncodings()
        返回此证书工厂支持的CertPath编码的迭代,首先使用默认编码。 有关标准编码名称的信息,请参阅Java Security Standard Algorithm Names Specification中的CertPath编码部分。

        尝试通过remove方法修改返回的Iterator ,结果为UnsupportedOperationException

        此方法已添加到Java 2 Platform Standard Edition的1.4版中。 为了保持与现有服务提供者的向后兼容性,此方法不能是abstract ,默认情况下会抛出UnsupportedOperationException

        结果
        一个 Iterator超过支持的 CertPath编码的名称(如 String s)
        异常
        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对象,唯一重要的字段是证书 特别是,签名和内容被忽略。 此格式允许一次下载多个证书。 如果没有证书,则返回空集合。

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

        参数
        inStream - 带有证书的输入流。
        结果
        使用输入流中的数据初始化的java.security.cert.Certificate对象的(可能为空)集合视图。
        异常
        CertificateException - 解析错误。
      • engineGenerateCRL

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

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

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

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

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

        参数
        inStream - 带有CRL的输入流。
        结果
        使用输入流中的数据初始化的java.security.cert.CRL对象的(可能为空)集合视图。
        异常
        CRLException - 解析错误。