javax.crypto

接口
异常
java.lang.Object
  继承者 javax.crypto.ExemptionMechanismSpi

public abstract class ExemptionMechanismSpi
     
extends Object

此类为 ExemptionMechanism 类定义了服务提供者接口 (SPI)。此类中的所有抽象方法都必须由希望提供特定豁免机制实现的各个加密服务提供者来实现。

从以下版本开始:
1.4

构造方法摘要
ExemptionMechanismSpi()
           
 
方法摘要
protected abstract  byte[] engineGenExemptionBlob()
          生成豁免机制密钥 blob。
protected abstract  int engineGenExemptionBlob(byte[] output, int outputOffset)
          生成豁免机制密钥 blob 并将结果存储在从 outputOffset(包括)开始的 output 缓冲区中。
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)
          用一个密钥和一组算法参数初始化此豁免机制。
 
从类 java.lang.Object 继承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

构造方法详细信息

ExemptionMechanismSpi

public ExemptionMechanismSpi()
方法详细信息

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 并将结果存储在从 outputOffset(包括)开始的 output 缓冲区中。

如果 output 缓冲区太小无法保存该结果,则抛出 ShortBufferException 异常。这种情况下,使用一个稍大的缓冲区再次调用。使用 engineGetOutputSize 确定输出缓冲区应为多大。

参数:
output - 用于保存结果的缓冲区
outputOffset - output 中的偏移量,即结果保存的位置
返回:
output 中存储的字节数
抛出:
ShortBufferException - 如果给定的输出缓冲区太小无法保存该结果。
ExemptionMechanismException - 如果生成过程中出现问题。