- java.lang.Object
-
- javax.crypto.ExemptionMechanismSpi
-
public abstract class ExemptionMechanismSpi extends Object
该类定义了ExemptionMechanism
类的 ( SPI )。 该类中的所有抽象方法必须由希望提供特定豁免机制实施的每个加密服务提供商来实现。- 从以下版本开始:
- 1.4
-
-
构造方法摘要
构造方法 Constructor 描述 ExemptionMechanismSpi()
-
方法摘要
所有方法 接口方法 抽象方法 Modifier and Type 方法 描述 protected abstract byte[]
engineGenExemptionBlob()
生成豁免机制密钥blob。protected abstract int
engineGenExemptionBlob(byte[] output, int outputOffset)
生成豁免机制密钥blob,并将结果存储在output
缓冲区中,从outputOffset
开始。protected abstract int
engineGetOutputSize(int inputLen)
给定输入长度为inputLen
(以字节为单位),返回输出缓冲区需要保存下一个engineGenExemptionBlob
操作结果的字节长度。protected abstract void
engineInit(Key key)
使用密钥初始化此豁免机制。protected abstract void
engineInit(Key key, AlgorithmParameters params)
使用密钥和一组算法参数初始化此豁免机制。protected abstract void
engineInit(Key key, AlgorithmParameterSpec params)
使用密钥和一组算法参数初始化此豁免机制。
-
-
-
方法详细信息
-
engineGetOutputSize
protected abstract int engineGetOutputSize(int inputLen)
给定输入长度为inputLen
(以字节为单位),返回输出缓冲区需要保存下一个engineGenExemptionBlob
操作结果的字节长度。下一个
engineGenExemptionBlob
调用的实际输出长度可能小于此方法返回的长度。- 参数
-
inputLen
- 输入长度(以字节为单位) - 结果
- 所需的输出缓冲区大小(以字节为单位)
-
engineInit
protected abstract void engineInit(Key key) throws InvalidKeyException, ExemptionMechanismException
使用密钥初始化此豁免机制。如果此豁免机制需要不能从给定的
key
导出的任何算法参数,则基础豁免机制实现应该自身生成所需参数(使用提供者特定的默认值); 在算法参数必须由调用者指定的情况下,会引发InvalidKeyException
。- 参数
-
key
- 这个豁免机制的关键 - 异常
-
InvalidKeyException
- 如果给定的密钥不适用于此豁免机制。 -
ExemptionMechanismException
- 如果在初始化过程中遇到问题。
-
engineInit
protected abstract void engineInit(Key key, AlgorithmParameterSpec params) throws InvalidKeyException, InvalidAlgorithmParameterException, ExemptionMechanismException
使用密钥和一组算法参数初始化此豁免机制。如果此豁免机制需要任何算法参数,并且
params
为null,则基础豁免机制实现应该自身生成所需参数(使用提供者特定的默认值); 在算法参数必须由调用者指定的情况下,会引发InvalidAlgorithmParameterException
。- 参数
-
key
- 这个豁免机制的关键 -
params
- 算法参数 - 异常
-
InvalidKeyException
- 如果给定的密钥不适用于此豁免机制。 -
InvalidAlgorithmParameterException
- 如果给定的算法参数不适用于此豁免机制。 -
ExemptionMechanismException
- 如果在初始化过程中遇到问题。
-
engineInit
protected abstract void engineInit(Key key, AlgorithmParameters params) throws InvalidKeyException, InvalidAlgorithmParameterException, ExemptionMechanismException
使用密钥和一组算法参数初始化此豁免机制。如果此豁免机制需要任何算法参数,并且
params
为null,则基础豁免机制实现应该自己生成所需参数(使用提供者特定的默认值); 在算法参数必须由调用者指定的情况下,会引发InvalidAlgorithmParameterException
。- 参数
-
key
- 这个豁免机制的关键 -
params
- 算法参数 - 异常
-
InvalidKeyException
- 如果给定的密钥不适用于此豁免机制。 -
InvalidAlgorithmParameterException
- 如果给定的算法参数不适用于此豁免机制。 -
ExemptionMechanismException
- 如果在初始化过程中遇到问题。
-
engineGenExemptionBlob
protected abstract byte[] engineGenExemptionBlob() throws ExemptionMechanismException
生成豁免机制密钥blob。- 结果
- 具有结果键blob的新缓冲区。
- 异常
-
ExemptionMechanismException
- 如果在生成过程中遇到问题。
-
engineGenExemptionBlob
protected abstract int engineGenExemptionBlob(byte[] output, int outputOffset) throws ShortBufferException, ExemptionMechanismException
生成豁免机制密钥blob,并将结果存储在output
缓冲区中,从outputOffset
开始。如果
output
缓冲区太小而不能保存结果,则抛出一个ShortBufferException
。 在这种情况下,使用较大的输出缓冲区重复此呼叫。 使用engineGetOutputSize
确定输出缓冲区应该有多大。- 参数
-
output
- 结果的缓冲区 -
outputOffset
-output
中的结果存储的偏移量 - 结果
-
存储在
output
的字节数 - 异常
-
ShortBufferException
- 如果给定的输出缓冲区太小,不能保存结果。 -
ExemptionMechanismException
- 如果在生成过程中遇到问题。
-
-