Module java.base
Package javax.net.ssl

Class KeyManagerFactory

java.lang.Object
javax.net.ssl.KeyManagerFactory

public class KeyManagerFactory extends Object
该类充当基于密钥材料源的密钥管理器工厂。每个密钥管理器管理用于安全套接字的特定类型的密钥材料。密钥材料基于KeyStore和/或特定提供程序的源。
自版本:
1.4
参见:
  • Constructor Details

    • KeyManagerFactory

      protected KeyManagerFactory(KeyManagerFactorySpi factorySpi, Provider provider, String algorithm)
      创建一个KeyManagerFactory对象。
      参数:
      factorySpi - 代理
      provider - 提供程序
      algorithm - 算法
  • Method Details

    • getDefaultAlgorithm

      public static final String getDefaultAlgorithm()
      获取默认的KeyManagerFactory算法名称。

      默认算法可以通过将ssl.KeyManagerFactory.algorithm安全属性的值设置为所需的算法名称在运行时更改。

      返回:
      根据ssl.KeyManagerFactory.algorithm安全属性指定的默认算法名称,如果不存在此类属性,则返回特定于实现的默认值。
      参见:
    • getAlgorithm

      public final String getAlgorithm()
      返回此KeyManagerFactory对象的算法名称。

      这是在创建此KeyManagerFactory对象的getInstance调用中指定的相同名称。

      返回:
      KeyManagerFactory对象的算法名称。
    • getInstance

      public static final KeyManagerFactory getInstance(String algorithm) throws NoSuchAlgorithmException
      返回一个充当密钥管理器工厂的KeyManagerFactory对象。

      此方法遍历已注册的安全提供程序列表,从最首选的提供程序开始。返回一个封装了来自支持指定算法的第一个提供程序的KeyManagerFactorySpi实现的新KeyManagerFactory对象。

      请注意,已注册提供程序的列表可以通过Security.getProviders()方法检索。

      实现注意:
      JDK参考实现还使用jdk.security.provider.preferred Security属性来确定指定算法的首选提供程序顺序。这可能与Security.getProviders()返回的提供程序顺序不同。
      参数:
      algorithm - 请求算法的标准名称。有关标准算法名称的信息,请参阅Java安全标准算法名称规范中的KeyManagerFactory部分
      返回:
      新的KeyManagerFactory对象
      抛出:
      NoSuchAlgorithmException - 如果没有Provider支持指定算法的KeyManagerFactorySpi实现
      NullPointerException - 如果algorithmnull
      参见:
    • getInstance

      public static final KeyManagerFactory getInstance(String algorithm, String provider) throws NoSuchAlgorithmException, NoSuchProviderException
      返回一个充当密钥管理器工厂的KeyManagerFactory对象。

      返回一个封装了来自指定提供程序的KeyManagerFactorySpi实现的新KeyManagerFactory对象。指定的提供程序必须在安全提供程序列表中注册。

      请注意,已注册提供程序的列表可以通过Security.getProviders()方法检索。

      参数:
      algorithm - 请求算法的标准名称。有关标准算法名称的信息,请参阅Java安全标准算法名称规范中的KeyManagerFactory部分
      provider - 提供程序的名称。
      返回:
      新的KeyManagerFactory对象
      抛出:
      IllegalArgumentException - 如果提供程序名称为null或空
      NoSuchAlgorithmException - 如果指定提供程序中不可用指定算法的KeyManagerFactorySpi实现
      NoSuchProviderException - 如果指定提供程序未在安全提供程序列表中注册
      NullPointerException - 如果algorithmnull
      参见:
    • getInstance

      public static final KeyManagerFactory getInstance(String algorithm, Provider provider) throws NoSuchAlgorithmException
      返回一个充当密钥管理器工厂的KeyManagerFactory对象。

      返回一个封装了来自指定Provider对象的KeyManagerFactorySpi实现的新KeyManagerFactory对象。请注意,指定的Provider对象不必在提供程序列表中注册。

      参数:
      algorithm - 请求算法的标准名称。有关标准算法名称的信息,请参阅Java安全标准算法名称规范中的KeyManagerFactory部分
      provider - 提供程序的实例。
      返回:
      新的KeyManagerFactory对象
      抛出:
      IllegalArgumentException - 如果提供程序为null
      NoSuchAlgorithmException - 如果指定Provider对象中不可用指定算法的@KeyManagerFactorySpi实现
      NullPointerException - 如果algorithmnull
      参见:
    • getProvider

      public final Provider getProvider()
      返回此KeyManagerFactory对象的提供程序。
      返回:
      KeyManagerFactory对象的提供程序
    • init

      public final void init(KeyStore ks, char[] password) throws KeyStoreException, NoSuchAlgorithmException, UnrecoverableKeyException
      使用密钥材料源初始化此工厂。

      提供程序通常使用KeyStore来获取用于安全套接字协商期间使用的密钥材料。KeyStore通常受密码保护。

      对于更灵活的初始化,请参阅init(ManagerFactoryParameters)

      参数:
      ks - 密钥库或null
      password - 用于恢复KeyStore中密钥的密码
      抛出:
      KeyStoreException - 如果此操作失败
      NoSuchAlgorithmException - 如果指定算法不可用于指定提供程序。
      UnrecoverableKeyException - 如果无法恢复密钥(例如,提供的密码错误)。
    • init

      public final void init(ManagerFactoryParameters spec) throws InvalidAlgorithmParameterException
      使用特定于提供程序的密钥材料源初始化此工厂。

      在某些情况下,提供程序可能需要除密钥库和密码之外的初始化参数。预期使用该特定提供程序的用户将传递由提供程序定义的适当ManagerFactoryParameters的实现。然后,提供程序可以调用ManagerFactoryParameters实现中指定的方法以获取所需的信息。

      参数:
      spec - 提供程序特定参数规范的实现
      抛出:
      InvalidAlgorithmParameterException - 如果遇到错误
    • getKeyManagers

      public final KeyManager[] getKeyManagers()
      为每种类型的密钥材料返回一个密钥管理器。
      返回:
      密钥管理器
      抛出:
      IllegalStateException - 如果KeyManagerFactory未初始化