java.lang.Object javax.crypto.ExemptionMechanism
public class ExemptionMechanism
此类提供了豁免 (exemption) 机制的功能,例如,密钥恢复、密钥唤醒 和密钥托管。
使用豁免机制的应用程序或 applet 比不使用豁免机制的应用程序或 applet 具有更强的加密性能。
构造方法摘要 | |
---|---|
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 |
构造方法详细信息 |
---|
protected ExemptionMechanism(ExemptionMechanismSpi exmechSpi, Provider provider, String mechanism)
exmechSpi
- 代理
provider
- 提供者
mechanism
- 豁免机制
方法详细信息 |
---|
public final String getName()
ExemptionMechanism
对象的豁免机制名称。
这与创建此 ExemptionMechanism
对象的 getInstance
调用之一指定的名称相同。
ExemptionMechanism
对象的豁免机制名称。
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
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
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
public final Provider getProvider()
ExemptionMechanism
对象的提供者。
ExemptionMechanism
对象的提供者。
public final boolean isCryptoAllowed(Key key) throws ExemptionMechanismException
该方法还确保了传入的密钥与此豁免机制在初始化和生成阶段所使用的密钥相同。
key
- 加密将使用的密钥。
key
为 null,则返回 false。
ExemptionMechanismException
- 如果在确定此豁免机制对象是否成功生成了结果 blob 的过程中遇到问题。
public final int getOutputSize(int inputLen) throws IllegalStateException
inputLen
(以字节为单位),返回保存下一个
genExemptionBlob
操作结果所需的输出缓冲区长度(以字节为单位)。
下一个 genExemptionBlob
调用的实际输出长度可能小于此方法返回的长度。
inputLen
- 输入长度(以字节为单位)
IllegalStateException
- 如果此豁免机制处于错误状态(例如,尚未初始化)
public final void init(Key key) throws InvalidKeyException, ExemptionMechanismException
如果此豁免机制需要算法参数,而参数无法从给定的 key
派生,则底层豁免机制实现应自己生成所需的参数(使用特定于提供者的默认值);如果算法参数必须由调用者指定,则会引发 InvalidKeyException
。
key
- 用于此豁免机制的密钥
InvalidKeyException
- 如果给定的密钥不适合此豁免机制。
ExemptionMechanismException
- 如果初始化过程中遇到问题。
public final void init(Key key, AlgorithmParameterSpec params) throws InvalidKeyException, InvalidAlgorithmParameterException, ExemptionMechanismException
如果此豁免机制需要算法参数,而 params
为 null,则底层豁免机制实现应自己生成所需的参数(使用特定于提供者的默认值);如果算法参数必须由调用者指定,则会引发 InvalidAlgorithmParameterException
。
key
- 用于此豁免机制的密钥
params
- 算法参数
InvalidKeyException
- 如果给定的密钥不适合此豁免机制。
InvalidAlgorithmParameterException
- 如果给定的算法参数不适合此豁免机制。
ExemptionMechanismException
- 如果初始化过程中遇到问题。
public final void init(Key key, AlgorithmParameters params) throws InvalidKeyException, InvalidAlgorithmParameterException, ExemptionMechanismException
如果此豁免机制需要算法参数,而 params
为 null,则底层豁免机制实现应自己生成所需的参数(使用特定于提供者的默认值);如果算法参数必须由调用者指定,则会引发 InvalidAlgorithmParameterException
。
key
- 用于此豁免机制的密钥
params
- 算法参数
InvalidKeyException
- 如果给定的密钥不适合此豁免机制。
InvalidAlgorithmParameterException
- 如果给定的算法参数不适合此豁免机制。
ExemptionMechanismException
- 如果初始化过程中遇到问题。
public final byte[] genExemptionBlob() throws IllegalStateException, ExemptionMechanismException
IllegalStateException
- 如果此豁免机制处于错误状态(例如,尚未初始化)。
ExemptionMechanismException
- 如果生成过程中遇到问题。
public final int genExemptionBlob(byte[] output) throws IllegalStateException, ShortBufferException, ExemptionMechanismException
output
缓冲区中。
如果 output
缓冲区太小无法保存该结果,则抛出 ShortBufferException
。这种情况下,使用一个稍大的缓冲区再次调用。使用 getOutputSize
确定输出缓冲区应为多大。
output
- 用于保存结果的缓冲区
output
中存储的字节数
IllegalStateException
- 如果此豁免机制处于错误状态(例如,尚未初始化)。
ShortBufferException
- 如果给定的输出缓冲区太小无法保存该结果。
ExemptionMechanismException
- 如果生成过程中遇到问题。
public final int genExemptionBlob(byte[] output, int outputOffset) throws IllegalStateException, ShortBufferException, ExemptionMechanismException
outputOffset
(包括)开始的
output
缓冲区中。
如果 output
缓冲区太小无法保存该结果,则抛出 ShortBufferException
。这种情况下,使用一个稍大的缓冲区再次调用。使用 getOutputSize
确定输出缓冲区应为多大。
output
- 用于保存结果的缓冲区
outputOffset
-
output
中存储结果处的偏移量
output
中存储的字节数
IllegalStateException
- 如果此豁免机制处于错误状态(例如,尚未初始化)。
ShortBufferException
- 如果给定的输出缓冲区太小无法保存该结果。
ExemptionMechanismException
- 如果生成过程中遇到问题。
protected void finalize()