JavaTM Platform
Standard Ed. 6

java.security
类 SignatureSpi

java.lang.Object
  继承者 java.security.SignatureSpi
直接已知子类:
Signature

public abstract class SignatureSpi
extends Object

此类为 Signature 类定义了服务提供者接口 (SPI),可用来提供数字签名算法功能。数字签名用来保证数字数据的真实性和完整性。

此类中的所有抽象方法都必须由每个想要提供实现特定签名算法的加密服务提供者实现。

另请参见:
Signature

字段摘要
protected  SecureRandom appRandom
          应用程序指定的随机源。
 
构造方法摘要
SignatureSpi()
           
 
方法摘要
 Object clone()
          如果此实现可以复制,则返回一个副本。
protected abstract  Object engineGetParameter(String param)
          已过时。  
protected  AlgorithmParameters engineGetParameters()
          此方法将由提供者重写,以返回与此签名引擎配合使用的参数,如果此签名引擎未使用任何参数,则返回 null。
protected abstract  void engineInitSign(PrivateKey privateKey)
          通过用于签名操作的指定私钥初始化此签名对象。
protected  void engineInitSign(PrivateKey privateKey, SecureRandom random)
          通过用于签名操作的指定私钥和随机源初始化此签名对象。
protected abstract  void engineInitVerify(PublicKey publicKey)
          通过用于验证操作的指定公钥初始化此签名对象。
protected  void engineSetParameter(AlgorithmParameterSpec params)
          此方法将由提供者重写,以便使用指定的参数设置初始化此签名引擎。
protected abstract  void engineSetParameter(String param, Object value)
          已过时。 engineSetParameter 取代。
protected abstract  byte[] engineSign()
          返回迄今为止所有更新的数据的签名字节。
protected  int engineSign(byte[] outbuf, int offset, int len)
          完成此签名操作,并从 offset 开始将得到的签名字节保存在提供的缓冲区 outbuf 中。
protected abstract  void engineUpdate(byte b)
          使用指定的字节更新要签名或验证的数据。
protected abstract  void engineUpdate(byte[] b, int off, int len)
          使用指定的 byte 数组,从指定的偏移量开始更新要签名或验证的数据。
protected  void engineUpdate(ByteBuffer input)
          使用指定的 ByteBuffer 更新要签名或验证的数据。
protected abstract  boolean engineVerify(byte[] sigBytes)
          验证传入的签名。
protected  boolean engineVerify(byte[] sigBytes, int offset, int length)
          在指定的 byte 数组中,从指定的偏移量处开始,验证传入的签名。
 
从类 java.lang.Object 继承的方法
equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

字段详细信息

appRandom

protected SecureRandom appRandom
应用程序指定的随机源。

构造方法详细信息

SignatureSpi

public SignatureSpi()
方法详细信息

engineInitVerify

protected abstract void engineInitVerify(PublicKey publicKey)
                                  throws InvalidKeyException
通过用于验证操作的指定公钥初始化此签名对象。

参数:
publicKey - 其签名将被验证的标识的公钥。
抛出:
InvalidKeyException - 如果密钥未得到正确编码、参数丢失等等。

engineInitSign

protected abstract void engineInitSign(PrivateKey privateKey)
                                throws InvalidKeyException
通过用于签名操作的指定私钥初始化此签名对象。

参数:
privateKey - 将生成其签名的标识的私钥。
抛出:
InvalidKeyException - 如果密钥未得到正确编码、参数丢失等等。

engineInitSign

protected void engineInitSign(PrivateKey privateKey,
                              SecureRandom random)
                       throws InvalidKeyException
通过用于签名操作的指定私钥和随机源初始化此签名对象。

已将此具体方法添加到了先前定义过的抽象类中。(为向后兼容,它不能为抽象方法)。

参数:
privateKey - 将生成其签名的标识的私钥。
random - 随机源
抛出:
InvalidKeyException - 如果密钥未得到正确编码、参数丢失等等。

engineUpdate

protected abstract void engineUpdate(byte b)
                              throws SignatureException
使用指定的字节更新要签名或验证的数据。

参数:
b - 用于更新的字节。
抛出:
SignatureException - 如果引擎未得到正确初始化。

engineUpdate

protected abstract void engineUpdate(byte[] b,
                                     int off,
                                     int len)
                              throws SignatureException
使用指定的 byte 数组,从指定的偏移量开始更新要签名或验证的数据。

参数:
b - byte 数组
off - byte 数组开始处的偏移量
len - 要使用的字节数(从偏移量开始处计算)
抛出:
SignatureException - 如果引擎未得到正确初始化

engineUpdate

protected void engineUpdate(ByteBuffer input)
使用指定的 ByteBuffer 更新要签名或验证的数据。处理从 data.position() 处开始的 data.remaining() 字节。返回时,缓冲区的位置将等于其限制;其限制并未改变。

参数:
input - the ByteBuffer
从以下版本开始:
1.5

engineSign

protected abstract byte[] engineSign()
                              throws SignatureException
返回迄今为止所有更新的数据的签名字节。签名的格式取决于底层签名方案。

返回:
签名操作结果的签名字节。
抛出:
SignatureException - 如果引擎未得到正确初始化,或者此签名算法无法处理所提供的输入数据。

engineSign

protected int engineSign(byte[] outbuf,
                         int offset,
                         int len)
                  throws SignatureException
完成此签名操作,并从 offset 开始将得到的签名字节保存在提供的缓冲区 outbuf 中。签名的格式取决于基本签名方案。

此签名实现将被重新设置到其初始状态(对其中的一种 engineInitSign 方法调用之后所处的状态),并且可以重新使用该签名实现,用同一个私钥生成将来的签名。 此方法应是一个抽象方法,但出于二进制兼容性考虑,允许它保留具体方法。因此提供者应重写此方法。

参数:
outbuf - 输出签名结果的缓冲区。
offset - 到存储签名的 outbuf 的偏移量。
len - outbuf 中分配给签名的字节数。此默认实现和 SUN 提供者匀不返回部分摘要。如果此参数的值小于实际签名长度,此方法将抛出一个 SignatureException。如果其值大于或等于实际签名长度,则将忽略此参数。
返回:
放入 outbuf 中的字节数
抛出:
SignatureException - 如果引擎未得到正确初始化,或者此签名算法无法处理所提供的输入数据,或者 len 小于实际签名长度。
从以下版本开始:
1.2

engineVerify

protected abstract boolean engineVerify(byte[] sigBytes)
                                 throws SignatureException
验证传入的签名。

参数:
sigBytes - 要验证的签名字节。
返回:
如果签名得到验证,则返回 true,否则将返回 false。
抛出:
SignatureException - 如果引擎未得到正确初始化,或传入的签名未被正确编码或类型错误,或者此签名算法无法处理所提供的输入数据等等。

engineVerify

protected boolean engineVerify(byte[] sigBytes,
                               int offset,
                               int length)
                        throws SignatureException
在指定的 byte 数组中,从指定的偏移量处开始,验证传入的签名。

注:子类应改写此默认实现。

参数:
sigBytes - 要验证的签名字节。
offset - byte 数组中起始处的偏移量。
length - 要使用的字节数(从偏移量起始处计算)。
返回:
如果签名得到验证,则返回 true,否则将返回 false。
抛出:
SignatureException - 如果引擎未得到正确初始化,或传入的签名未被正确编码或类型错误,或者此签名算法无法处理所提供的输入数据等等。
从以下版本开始:
1.4

engineSetParameter

@Deprecated
protected abstract void engineSetParameter(String param,
                                                      Object value)
                                    throws InvalidParameterException
已过时。 engineSetParameter 取代。

将指定的算法参数设置为指定的值。此方法提供了一种通用机制,通过它可以设置此对象的各种参数。参数可以是算法的任何可设置参数,如参数大小、签名生成的随机源位(如果适当),或者表示是否执行具体但可选的计算。每个参数都需要统一的、特定于算法的命名方案,但此时尚未指定这种方案。

参数:
param - 参数的字符串标示符。
value - 参数值。
抛出:
InvalidParameterException - 如果 param 是此算法引擎的无效参数,或者已经设置参数并且不能重新设置,或者发生了安全异常等等。

engineSetParameter

protected void engineSetParameter(AlgorithmParameterSpec params)
                           throws InvalidAlgorithmParameterException

此方法将由提供者重写,以便使用指定的参数设置初始化此签名引擎。

参数:
params - 参数
抛出:
UnsupportedOperationException - 如果提供者未重写此方法
InvalidAlgorithmParameterException - 如果提供者未重写此方法并且指定的参数不适合此签名引擎

engineGetParameters

protected AlgorithmParameters engineGetParameters()

此方法将由提供者重写,以返回与此签名引擎配合使用的参数,如果此签名引擎未使用任何参数,则返回 null。

返回的参数可能与用来初始化此签名引擎的参数相同;如果此签名引擎需要算法参数但却未使用任何参数进行初始化,则返回的参数可能会包含由底层签名实现使用的默认和随机生成的参数值的组合。

返回:
与此签名引擎一块使用的参数,如果此签名引擎未使用任何参数,则返回 null
抛出:
UnsupportedOperationException - 如果提供者未重写此方法
从以下版本开始:
1.4

engineGetParameter

@Deprecated
protected abstract Object engineGetParameter(String param)
                                      throws InvalidParameterException
已过时。 

获取指定算法参数的值。此方法提供了一种通用机制,通过它能够获取此对象的各种参数。参数可以是算法的任何可设置参数,如参数大小、签名生成的随机源位(如果适当),或者表示是否执行具体但可选的计算。每个参数都需要统一的、特定于算法的命名方案,但此时尚未指定这种方案。

参数:
param - 参数的字符串名称。
返回:
表示参数值的对象,如果没有,则返回 null。
抛出:
InvalidParameterException - 如果 param 是此引擎的无效参数,或者尝试获取此参数时发生了其他异常。

clone

public Object clone()
             throws CloneNotSupportedException
如果此实现可以复制,则返回一个副本。

覆盖:
Object 中的 clone
返回:
如果此实现可以复制,则返回一个副本。
抛出:
CloneNotSupportedException - 如果调用一个不支持 Cloneable 的实现。
另请参见:
Cloneable

JavaTM Platform
Standard Ed. 6

提交错误或意见
有关更多的 API 参考资料和开发人员文档,请参阅 Java SE 开发人员文档。该文档包含更详细的、面向开发人员的描述,以及总体概述、术语定义、使用技巧和工作代码示例。

版权所有 2007 Sun Microsystems, Inc. 保留所有权利。 请遵守许可证条款。另请参阅文档重新分发政策