javax.crypto

接口
异常
java.lang.Object
  继承者 javax.crypto.ExemptionMechanism

public class ExemptionMechanism
     
extends Object

此类提供了豁免 (exemption) 机制的功能,例如,密钥恢复密钥唤醒密钥托管

使用豁免机制的应用程序或 applet 比不使用豁免机制的应用程序或 applet 具有更强的加密性能。

从以下版本开始:
1.4

构造方法摘要
protected ExemptionMechanism(ExemptionMechanismSpi exmechSpi, Provider provider, String mechanism)
          创建 ExemptionMechanism 对象。
 
方法摘要
protected  void finalize()
          确保不存在对此 ExemptionMechanism 对象存储的密钥的引用时,该密钥将被除去。
 byte[] genExemptionBlob()
          生成豁免机制密钥 blob。
 int genExemptionBlob(byte[] output)
          生成豁免机制密钥 blob,并将结果存储在 output 缓冲区中。
 int genExemptionBlob(byte[] output, int outputOffset)
          生成豁免机制密钥 blob,并将结果存储在从 outputOffset(包括)开始的 output 缓冲区中。
static ExemptionMechanism getInstance(String algorithm)
          返回实现指定豁免机制算法的 ExemptionMechanism 对象。
static ExemptionMechanism getInstance(String algorithm, Provider provider)
          返回实现指定豁免机制算法的 ExemptionMechanism 对象。
static ExemptionMechanism getInstance(String algorithm, String provider)
          返回实现指定豁免机制算法的 ExemptionMechanism 对象。
 String getName()
          返回此 ExemptionMechanism 对象的豁免机制名称。
 int getOutputSize(int inputLen)
          根据给定的输入长度 inputLen(以字节为单位),返回保存下一个 genExemptionBlob 操作结果所需的输出缓冲区长度(以字节为单位)。
 Provider getProvider()
          返回此 ExemptionMechanism 对象的提供者。
 void init(Key key)
          用密钥初始化此豁免机制。
 void init(Key key, AlgorithmParameters params)
          用一个密钥和一组算法参数初始化此豁免机制。
 void init(Key key, AlgorithmParameterSpec params)
          用一个密钥和一组算法参数初始化此豁免机制。
 boolean isCryptoAllowed(Key key)
          返回此豁免机制是否已成功生成结果 blob。
 
从类 java.lang.Object 继承的方法
clone, equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

构造方法详细信息

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 对象,该实现取自支持指定算法的第一个 Provider。

注意,可以通过 Security.getProviders() 方法获取已注册提供者列表。

参数:
algorithm - 所请求豁免机制的标准名称。有关标准豁免机制名称的信息,请参阅 Java Cryptography Architecture Reference Guide 中的附录 A。
返回:
新的 ExemptionMechanism 对象。
抛出:
NullPointerException - 如果 algorithm 为 null。
NoSuchAlgorithmException - 如果没有 Provider 支持指定算法的 ExemptionMechanismSpi 实现。
另请参见:
Provider

getInstance

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

返回一个封装 ExemptionMechanismSpi 实现的新 ExemptionMechanism 对象,该实现取自指定的提供者。指定提供者必须在安全提供者列表中注册。

注意,可以通过 Security.getProviders() 方法获取已注册提供者列表。

参数:
algorithm - 所请求豁免机制的标准名称。有关标准豁免机制名称的信息,请参阅 Java Cryptography Architecture Reference Guide 中的附录 A。
provider - 提供者的名称。
返回:
新的 ExemptionMechanism 对象。
抛出:
NullPointerException - 如果 algorithm 为 null。
NoSuchAlgorithmException - 如果不能从指定提供者获得指定算法的 ExemptionMechanismSpi 实现。
NoSuchProviderException - 如果指定提供者未在安全提供者列表中注册。
IllegalArgumentException - 如果 provider 为 null 或空。
另请参见:
Provider

getInstance

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

返回一个封装 ExemptionMechanismSpi 实现的新 ExemptionMechanism 对象,该实现取自指定的 Provider 对象。 注意,指定的 Provider 对象无需在提供者列表中注册。

参数:
algorithm - 所请求豁免机制的标准名称。有关标准豁免机制名称的信息,请参阅 Java Cryptography Architecture Reference Guide 中的附录 A。
provider - 提供者。
返回:
新的 ExemptionMechanism 对象。
抛出:
NullPointerException - 如果 algorithm 为 null。
NoSuchAlgorithmException - 如果不能从指定 Provider 对象获得指定算法的 ExemptionMechanismSpi 实现。
IllegalArgumentException - 如果 provider 为 null。
另请参见:
Provider

getProvider

public final Provider getProvider()
返回此 ExemptionMechanism 对象的提供者。

返回:
ExemptionMechanism 对象的提供者。

isCryptoAllowed

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

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

参数:
key - 加密将使用的密钥。
返回:
此豁免机制是否已成功生成了相同密钥的结果 blob;如果 key 为 null,则返回 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 - 如果初始化过程中遇到问题。

init

public final void init(Key key,
                       AlgorithmParameterSpec params)
                throws InvalidKeyException,
                       InvalidAlgorithmParameterException,
                       ExemptionMechanismException
用一个密钥和一组算法参数初始化此豁免机制。

如果此豁免机制需要算法参数,而 params 为 null,则底层豁免机制实现应自己生成所需的参数(使用特定于提供者的默认值);如果算法参数必须由调用者指定,则会引发 InvalidAlgorithmParameterException

参数:
key - 用于此豁免机制的密钥
params - 算法参数
抛出:
InvalidKeyException - 如果给定的密钥不适合此豁免机制。
InvalidAlgorithmParameterException - 如果给定的算法参数不适合此豁免机制。
ExemptionMechanismException - 如果初始化过程中遇到问题。

init

public final void init(Key key,
                       AlgorithmParameters params)
                throws InvalidKeyException,
                       InvalidAlgorithmParameterException,
                       ExemptionMechanismException
用一个密钥和一组算法参数初始化此豁免机制。

如果此豁免机制需要算法参数,而 params 为 null,则底层豁免机制实现应自己生成所需的参数(使用特定于提供者的默认值);如果算法参数必须由调用者指定,则会引发 InvalidAlgorithmParameterException

参数:
key - 用于此豁免机制的密钥
params - 算法参数
抛出:
InvalidKeyException - 如果给定的密钥不适合此豁免机制。
InvalidAlgorithmParameterException - 如果给定的算法参数不适合此豁免机制。
ExemptionMechanismException - 如果初始化过程中遇到问题。

genExemptionBlob

public final byte[] genExemptionBlob()
                              throws IllegalStateException,
                                     ExemptionMechanismException
生成豁免机制密钥 blob。

返回:
包含结果密钥 blob 的新缓冲区。
抛出:
IllegalStateException - 如果此豁免机制处于错误状态(例如,尚未初始化)。
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,并将结果存储在从 outputOffset(包括)开始的 output 缓冲区中。

如果 output 缓冲区太小无法保存该结果,则抛出 ShortBufferException。这种情况下,使用一个稍大的缓冲区再次调用。使用 getOutputSize 确定输出缓冲区应为多大。

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

finalize

protected void finalize()
确保不存在对此 ExemptionMechanism 对象存储的密钥的引用时,该密钥将被除去。

覆盖:
Object 中的 finalize