Module  java.base
软件包  javax.crypto

Class ExemptionMechanism



  • public class ExemptionMechanism
    extends 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对象。

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

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

        Implementation Note:
        JDK参考实现另外使用jdk.security.provider.preferred Security属性来确定指定算法的首选提供者顺序。 这可能与Security.getProviders()返回的提供商的顺序不同。
        参数
        algorithm - 请求豁免机制的标准名称。 有关标准豁免机制名称的信息,请参阅Java Security Standard Algorithm Names Specification中的“豁免机制”部分。
        结果
        新的 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 - 密码将要使用的密钥。
        结果
        该豁免机制是否成功生成了同一关键字的结果库; 如果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 - 如果在生成过程中遇到问题。