模块  java.base
软件包  javax.crypto

Class ExemptionMechanism


  • public class ExemptionMechanismextends Object
    此类提供免除机制的功能,其示例包括密钥恢复密钥弱化密钥托管

    使用免除机制的应用程序或小程序可以被授予比不使用免除机制的应用程序或小程序更强的加密功能

    从以下版本开始:
    1.4
    • 构造方法详细信息

      • ExemptionMechanism

        protected ExemptionMechanism​(ExemptionMechanismSpi exmechSpi,                             Provider provider,                             String mechanism)
        创建ExemptionMechanism对象。
        参数
        exmechSpi - 代表
        provider - 提供者
        mechanism - 豁免机制
    • 方法详细信息

      • getName

        public final String getName()
        返回此ExemptionMechanism对象的免除机制名称。

        这与在创建此ExemptionMechanism对象的getInstance调用之一中指定的名称相同。

        结果
        ExemptionMechanism对象的免除机制名称。
      • getInstance

        public static final ExemptionMechanism getInstance​(String algorithm)                                            throws NoSuchAlgorithmException
        返回实现指定的免除机制算法的ExemptionMechanism对象。

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

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

        Implementation Note:
        JDK Reference Implementation还使用jdk.security.provider.preferred Security属性来确定指定算法的首选提供程序顺序。 这可能与Security.getProviders()返回的提供商的顺序不同。
        参数
        algorithm - 请求的豁免机制的标准名称。 有关标准豁免机制名称的信息,请参阅Java Security Standard Algorithm Names Specification中的ExemptionMechanism部分。
        结果
        新的 ExemptionMechanism对象
        异常
        NoSuchAlgorithmException - 如果没有 Provider支持指定算法的 ExemptionMechanismSpi实现
        NullPointerException - 如果 algorithmnull
        另请参见:
        Provider
      • getProvider

        public final Provider getProvider()
        返回此 ExemptionMechanism对象的提供程序。
        结果
        这个 ExemptionMechanism对象的提供者。
      • isCryptoAllowed

        public final boolean isCryptoAllowed​(Key key)                              throws ExemptionMechanismException
        返回此豁免机制是否已成功生成结果blob。

        该方法还确保传入的密钥与初始化和生成阶段中使用的该豁免机制相同。

        参数
        key - 加密将使用的密钥。
        结果
        是否通过此豁免机制成功生成了同一密钥的结果blob; 如果key为null,则key false。
        异常
        ExemptionMechanismException - 如果在确定此豁免机制对象是否已成功生成结果blob时遇到问题。
      • getOutputSize

        public final int getOutputSize​(int inputLen)                        throws IllegalStateException
        在给定输入长度inputLen (以字节为单位)的情况下,返回输出缓冲区为保存下一个genExemptionBlob操作的结果所需的长度(以字节为单位)。

        下一次genExemptionBlob调用的实际输出长度可能小于此方法返回的长度。

        参数
        inputLen - 输入长度(以字节为单位)
        结果
        所需的输出缓冲区大小(以字节为单位)
        异常
        IllegalStateException - 如果此豁免机制处于错误状态(例如,尚未初始化)
      • init

        public final void init​(Key key)                throws InvalidKeyException,                       ExemptionMechanismException
        使用密钥初始化此豁免机制。

        如果此豁免机制需要任何无法从给定的key派生的算法参数,则基础豁免机制实现应该自己生成所需的参数(使用特定于提供者的默认值); 如果必须由调用者指定算法参数,则引发InvalidKeyException

        参数
        key - 这种豁免机制的关键
        异常
        InvalidKeyException - 如果给定的密钥不适合此豁免机制。
        ExemptionMechanismException - 如果在初始化过程中遇到问题。
      • genExemptionBlob

        public final int genExemptionBlob​(byte[] output)                           throws IllegalStateException,                                  ShortBufferException,                                  ExemptionMechanismException
        生成豁免机制密钥blob,并将结果存储在output缓冲区中。

        如果output缓冲区太小而无法保存结果,则抛出ShortBufferException 在这种情况下,请使用更大的输出缓冲区重复此调用。 使用getOutputSize确定输出缓冲区应该有多大。

        参数
        output - 结果的缓冲区
        结果
        存储在 output的字节数
        异常
        IllegalStateException - 如果此豁免机制处于错误状态(例如,尚未初始化)。
        ShortBufferException - 如果给定的输出缓冲区太小而无法保存结果。
        ExemptionMechanismException - 如果在生成过程中遇到问题。
      • genExemptionBlob

        public final int genExemptionBlob​(byte[] output,                                  int outputOffset)                           throws IllegalStateException,                                  ShortBufferException,                                  ExemptionMechanismException
        生成豁免机制密钥blob,并将结果存储在output缓冲区中,从outputOffset开始。

        如果output缓冲区太小而无法保存结果,则抛出ShortBufferException 在这种情况下,请使用更大的输出缓冲区重复此调用。 使用getOutputSize确定输出缓冲区应该有多大。

        参数
        output - 结果的缓冲区
        outputOffset - 存储结果的 output中的偏移量
        结果
        存储在 output的字节数
        异常
        IllegalStateException - 如果此豁免机制处于错误状态(例如,尚未初始化)。
        ShortBufferException - 如果给定的输出缓冲区太小而无法保存结果。
        ExemptionMechanismException - 如果在生成过程中遇到问题。