public class ExemptionMechanism extends Object
使用豁免机制的应用程序或小程序可能被授予比没有加密功能的更强的加密能力。
Modifier | Constructor and Description |
---|---|
protected |
ExemptionMechanism(ExemptionMechanismSpi exmechSpi, Provider provider, String mechanism)
创建一个ExemptionMechanism对象。
|
Modifier and Type | Method and Description |
---|---|
protected void |
finalize()
确保当这个ExemptionMechanism对象存储的密钥在没有更多的引用时被清除。
|
byte[] |
genExemptionBlob()
生成豁免机制密钥blob。
|
int |
genExemptionBlob(byte[] output)
生成豁免机制密钥blob,并将结果存储在
output 缓冲区中。
|
int |
genExemptionBlob(byte[] output, int outputOffset)
生成豁免机制密钥blob,并将结果存储在
output 缓冲区中,从
outputOffset 开始。
|
static ExemptionMechanism |
getInstance(String algorithm)
返回实现指定的
ExemptionMechanism 对象。
|
static ExemptionMechanism |
getInstance(String algorithm, Provider provider)
返回一个
ExemptionMechanism 指定的豁免机制算法的
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。
|
protected ExemptionMechanism(ExemptionMechanismSpi exmechSpi, Provider provider, String mechanism)
exmechSpi
- 代表
provider
- 提供商
mechanism
- 豁免机制
public final String getName()
ExemptionMechanism
对象的豁免机制名称。
这是在创建此ExemptionMechanism
对象的getInstance
调用之一中指定的getInstance
。
ExemptionMechanism
对象的豁免机制名称。
public static final ExemptionMechanism getInstance(String algorithm) throws NoSuchAlgorithmException
ExemptionMechanism
对象。
此方法遍历已注册的安全提供程序列表,从最优选的提供程序开始。 返回从支持指定算法的第一个Provider中封装ExemptionMechanismSpi实现的新的ExemptionMechanism对象。
请注意,注册提供商的列表可以通过Security.getProviders()
方法检索 。
algorithm
- 请求的豁免机制的标准名称。
有关标准豁免机制名称的信息,请参阅Java Cryptography Architecture Standard Algorithm Name Documentation中的豁免机制部分。
ExemptionMechanism
对象。
NullPointerException
- 如果
algorithm
为空。
NoSuchAlgorithmException
- 如果没有提供者支持指定算法的ExemptionMechanismSpi实现。
Provider
public static final ExemptionMechanism getInstance(String algorithm, String provider) throws NoSuchAlgorithmException, NoSuchProviderException
ExemptionMechanism
指定的免除机制算法的ExemptionMechanism
对象。
返回从指定的提供程序封装ExemptionMechanismSpi实现的新的ExemptionMechanism对象。 指定的提供者必须在安全提供程序列表中注册。
请注意,注册提供商的列表可以通过Security.getProviders()
方法检索 。
algorithm
- 请求豁免机制的标准名称。
有关标准豁免机制名称的信息,请参阅Java Cryptography Architecture Standard Algorithm Name Documentation中的豁免机制部分。
provider
- 提供者的名称。
ExemptionMechanism
对象。
NullPointerException
- 如果
algorithm
为空。
NoSuchAlgorithmException
- 如果指定的算法的ExemptionMechanismSpi实现从指定的提供程序中不可用。
NoSuchProviderException
- 如果指定的提供程序未在安全提供程序列表中注册。
IllegalArgumentException
- 如果
provider
为空或为空。
Provider
public static final ExemptionMechanism getInstance(String algorithm, Provider provider) throws NoSuchAlgorithmException
ExemptionMechanism
对象。
返回从指定的Provider对象封装ExemptionMechanismSpi实现的新的ExemptionMechanism对象。 请注意,指定的Provider对象不必在提供者列表中注册。
algorithm
- 请求的豁免机制的标准名称。
有关标准豁免机制名称的信息,请参阅Java Cryptography Architecture Standard Algorithm Name Documentation中的“ 豁免机制”部分。
provider
- 提供商。
ExemptionMechanism
对象。
NullPointerException
- 如果
algorithm
为空。
NoSuchAlgorithmException
- 如果指定的算法的ExemptionMechanismSpi实现从指定的Provider对象不可用。
IllegalArgumentException
- 如果
provider
为空。
Provider
public final Provider getProvider()
ExemptionMechanism
对象的提供者。
ExemptionMechanism
对象的提供者。
public final boolean isCryptoAllowed(Key key) throws ExemptionMechanismException
该方法还确保传入的密钥与初始化和生成阶段中使用的豁免机制相同。
key
- 密码将要使用的密钥。
key
为空,则为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
派生的任何key
,则基础豁免机制实现应该自身生成所需参数(使用提供者特定的默认值); 在的情况下算法参数必须由呼叫者指定,一个InvalidKeyException
上升。
key
- 这个豁免机制的关键
InvalidKeyException
- 如果给定的密钥不适用于此豁免机制。
ExemptionMechanismException
- 如果在初始化过程中遇到问题。
public final void init(Key key, AlgorithmParameterSpec params) throws InvalidKeyException, InvalidAlgorithmParameterException, ExemptionMechanismException
如果此豁免机制需要任何算法参数,并且params
为空,则基础豁免机制实现应该自身生成所需参数(使用提供者特定的默认值); 在的情况下算法参数必须由呼叫者指定,一个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
output
缓冲区中,从outputOffset
开始。
如果output
缓冲区太小,无法保存结果,则会抛出一个ShortBufferException
。 在这种情况下,使用较大的输出缓冲区重复此呼叫。 使用getOutputSize
确定输出缓冲区应该有多大。
output
- 结果的缓冲区
outputOffset
-
output
中存储结果的偏移量
output
中的字节数
IllegalStateException
- 如果此豁免机制处于错误状态(例如,尚未初始化)。
ShortBufferException
- 如果给定的输出缓冲区太小,不能保存结果。
ExemptionMechanismException
- 如果在生成过程中遇到问题。
protected void finalize()
finalize
在类别
Object
WeakReference
, PhantomReference