- java.lang.Object
-
- javax.crypto.ExemptionMechanism
-
public class ExemptionMechanism extends Object
这个类提供了豁免机制的功能,其中的例子是密钥恢复 , 密钥弱化和密钥托管 。使用豁免机制的应用程序或小程序可能被授予比没有加密功能的更强的加密能力。
- 从以下版本开始:
- 1.4
-
-
构造方法摘要
构造方法 Modifier Constructor 描述 protected
ExemptionMechanism(ExemptionMechanismSpi exmechSpi, Provider provider, String mechanism)
创建一个ExemptionMechanism对象。
-
方法摘要
所有方法 静态方法 接口方法 具体的方法 Modifier and Type 方法 描述 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, String provider)
返回实现指定的免除机制算法的ExemptionMechanism
对象。static ExemptionMechanism
getInstance(String algorithm, Provider 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。
-
-
-
构造方法详细信息
-
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
- 如果algorithm
是null
- 另请参见:
-
Provider
-
getInstance
public static final ExemptionMechanism getInstance(String algorithm, String provider) throws NoSuchAlgorithmException, NoSuchProviderException
返回一个ExemptionMechanism
对象,实现指定的豁免机制算法。返回从指定的提供程序封装ExemptionMechanismSpi实现的新的ExemptionMechanism对象。 指定的提供者必须在安全提供程序列表中注册。
请注意,注册提供商的列表可以通过
Security.getProviders()
方法检索。- 参数
-
algorithm
- 请求的豁免机制的标准名称。 有关标准豁免机制名称的信息,请参阅Java Security Standard Algorithm Names Specification中的“豁免机制”部分。 -
provider
- 提供商的名称。 - 结果
-
新的
ExemptionMechanism
对象 - 异常
-
IllegalArgumentException
- 如果provider
是null
或空 -
NoSuchAlgorithmException
- 如果指定算法的ExemptionMechanismSpi
实现不能从指定的提供者获得 -
NoSuchProviderException
- 如果指定的提供程序未在安全提供程序列表中注册 -
NullPointerException
- 如果algorithm
是null
- 另请参见:
-
Provider
-
getInstance
public static final ExemptionMechanism getInstance(String algorithm, Provider provider) throws NoSuchAlgorithmException
返回一个实现指定的豁免机制算法的ExemptionMechanism
对象。返回从指定的Provider对象封装ExemptionMechanismSpi实现的新的ExemptionMechanism对象。 请注意,指定的Provider对象不必在提供者列表中注册。
- 参数
-
algorithm
- 请求的豁免机制的标准名称。 有关标准豁免机制名称的信息,请参阅Java Security Standard Algorithm Names Specification中的“豁免机制”部分。 -
provider
- 提供商。 - 结果
-
新的
ExemptionMechanism
对象 - 异常
-
IllegalArgumentException
- 如果provider
为空 -
NoSuchAlgorithmException
- 如果指定的算法的ExemptionMechanismSpi
实现不能从指定的Provider object
-
NullPointerException
- 如果algorithm
是null
- 另请参见:
-
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
- 如果在初始化过程中遇到问题。
-
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,并将结果存储在output
缓冲区中,从outputOffset
开始。如果
output
缓冲区太小而不能保存结果,则抛出一个ShortBufferException
。 在这种情况下,使用较大的输出缓冲区重复此呼叫。 使用getOutputSize
来确定输出缓冲区应该有多大。- 参数
-
output
- 结果的缓冲区 -
outputOffset
- 存储结果的output
中的偏移量 - 结果
-
存储在
output
的字节数 - 异常
-
IllegalStateException
- 如果此豁免机制处于错误状态(例如,尚未初始化)。 -
ShortBufferException
- 如果给定的输出缓冲区太小,不能保存结果。 -
ExemptionMechanismException
- 如果在生成过程中遇到问题。
-
-