JavaTM 2 Platform
Standard Ed. 5.0

javax.crypto
类 ExemptionMechanism

java.lang.Object
  继承者 javax.crypto.ExemptionMechanism

public class ExemptionMechanism
extends Object

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

使用豁免机制的应用程序或 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 对象。如果默认的提供程序包提供了请求的豁免机制算法的实现,则会返回包含此实现的一个 ExemptionMechanism 实例。如果默认的提供程序包中没有可用的豁免机制,则将搜索其他的提供程序包。

参数:
algorithm - 所请求的豁免机制的标准名称。有关标准豁免机制名称的信息,请参阅《Java Cryptography Extension Reference Guide》中的附录 A。
返回:
新的 ExemptionMechanism 对象
抛出:
NullPointerException - 如果 algorithm 为 null。
NoSuchAlgorithmException - 如果默认的提供程序包中指定的算法不可用,或者搜索到的其他提供程序包都不可用。

getInstance

public static final ExemptionMechanism getInstance(String algorithm,
                                                   String provider)
                                            throws NoSuchAlgorithmException,
                                                   NoSuchProviderException
从指定的提供程序为指定的豁免机制生成 ExemptionMechanism 对象。

参数:
algorithm - 所请求的豁免机制的标准名称。有关标准豁免机制名称的信息,请参阅《 Java Cryptography Extension Reference Guide》中的附录 A。
provider - 提供程序的名称
返回:
新的 ExemptionMechanism 对象
抛出:
NullPointerException - 如果 algorithm 为 null。
NoSuchAlgorithmException - 如果指定的提供程序中未提供指定的算法。
NoSuchProviderException - 如果指定的提供程序未配置。
IllegalArgumentException - 如果 provider 为 null。

getInstance

public static final ExemptionMechanism getInstance(String algorithm,
                                                   Provider provider)
                                            throws NoSuchAlgorithmException
根据指定的提供程序为指定的豁免机制算法生成 ExemptionMechanism 对象。注:provider 不一定都需要注册。

参数:
algorithm - 所请求的豁免机制的标准名称。有关标准豁免机制名称的信息,请参阅《Java Cryptography Extension Reference Guide》中的附录 A。
provider - 提供程序
返回:
新的 ExemptionMechanism 对象
抛出:
NullPointerException - 如果 algorithm 为 null。
NoSuchAlgorithmException - 如果指定的提供程序中未提供指定的算法。
IllegalArgumentException - 如果 provider 为 null。

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

JavaTM 2 Platform
Standard Ed. 5.0

提交错误或意见
有关更多的 API 参考资料和开发人员文档,请参阅 Java 2 SDK SE 开发人员文档。该文档包含更详细的、面向开发人员的描述,以及总体概述、术语定义、使用技巧和工作代码示例。

版权所有 2004 Sun Microsystems, Inc. 保留所有权利。 请遵守许可证条款。另请参阅文档重新分发政策