Module java.base
Package java.security

Class SignatureSpi

java.lang.Object
java.security.SignatureSpi
直接已知的子类:
Signature

public abstract class SignatureSpi extends Object
该类定义了 服务提供者接口 (SPI),用于 Signature 类,该类用于提供数字签名算法的功能。数字签名用于对数字数据进行身份验证和完整性保证。

该类中的所有抽象方法必须由每个希望提供特定签名算法实现的加密服务提供者来实现。

自版本:
1.2
参见:
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    protected SecureRandom
    应用程序指定的随机源。
  • Constructor Summary

    Constructors
    Constructor
    Description
    子类调用的构造函数。
  • Method Summary

    Modifier and Type
    Method
    Description
    clone()
    如果实现可克隆,则返回克隆对象。
    protected abstract Object
    已弃用。 
    返回与此 Signature 对象一起使用的参数。
    protected abstract void
    engineInitSign(PrivateKey privateKey)
    使用指定的私钥初始化此 Signature 对象以进行签名操作。
    protected void
    engineInitSign(PrivateKey privateKey, SecureRandom random)
    使用指定的私钥和随机源初始化此 Signature 对象以进行签名操作。
    protected abstract void
    使用指定的公钥初始化此 Signature 对象以进行验证操作。
    protected abstract void
    engineSetParameter(String param, Object value)
    已弃用。
    已被 engineSetParameter 替代。
    protected void
    使用指定的参数值初始化此 Signature 对象。
    protected abstract byte[]
    返回到目前为止更新的所有数据的签名字节。
    protected int
    engineSign(byte[] outbuf, int offset, int len)
    完成此签名操作,并将生成的签名字节存储在提供的缓冲区 outbuf 中,从 offset 开始。
    protected abstract void
    engineUpdate(byte b)
    使用指定的字节更新要签名或验证的数据。
    protected abstract void
    engineUpdate(byte[] b, int off, int len)
    使用指定的字节数组更新要签名或验证的数据,从指定的偏移量开始。
    protected void
    使用指定的 ByteBuffer 更新要签名或验证的数据。
    protected abstract boolean
    engineVerify(byte[] sigBytes)
    验证传入的签名。
    protected boolean
    engineVerify(byte[] sigBytes, int offset, int length)
    在指定的字节数组中验证传入的签名,从指定的偏移量开始。

    Methods declared in class java.lang.Object

    equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Field Details

    • appRandom

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

    • SignatureSpi

      public SignatureSpi()
      子类调用的构造函数。
  • Method Details

    • engineInitVerify

      protected abstract void engineInitVerify(PublicKey publicKey) throws InvalidKeyException
      使用指定的公钥初始化此 Signature 对象以进行验证操作。
      参数:
      publicKey - 要验证签名的身份的公钥。
      抛出:
      InvalidKeyException - 如果密钥编码不正确,参数缺失等。
    • engineInitSign

      protected abstract void engineInitSign(PrivateKey privateKey) throws InvalidKeyException
      使用指定的私钥初始化此 Signature 对象以进行签名操作。
      参数:
      privateKey - 要生成签名的身份的私钥。
      抛出:
      InvalidKeyException - 如果密钥编码不正确,参数缺失等。
    • engineInitSign

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

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

      参数:
      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
      使用指定的字节数组更新要签名或验证的数据,从指定的偏移量开始。
      参数:
      b - 字节数组
      off - 字节数组中要从中开始的偏移量
      len - 要使用的字节数,从偏移量开始
      抛出:
      SignatureException - 如果引擎未正确初始化
    • engineUpdate

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

      protected abstract byte[] engineSign() throws SignatureException
      返回到目前为止更新的所有数据的签名字节。签名的格式取决于底层签名方案。
      返回:
      签名操作结果的签名字节。
      抛出:
      SignatureException - 如果引擎未正确初始化,或者此签名算法无法处理提供的输入数据。
    • engineSign

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

      签名实现将重置为其初始状态(在调用 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
      在指定的字节数组中验证传入的签名,从指定的偏移量开始。

      注意:子类应重写默认实现。

      参数:
      sigBytes - 要验证的签名字节。
      offset - 字节数组中要从中开始的偏移量。
      length - 要使用的字节数,从偏移量开始。
      返回:
      如果签名已验证,则返回 true,否则返回 false
      抛出:
      SignatureException - 如果引擎未正确初始化,传入的签名编码不正确或类型错误,此签名算法无法处理提供的输入数据等。
      自版本:
      1.4
    • engineSetParameter

      @Deprecated protected abstract void engineSetParameter(String param, Object value) throws InvalidParameterException
      Deprecated.
      Replaced by engineSetParameter.
      将指定的算法参数设置为指定的值。此方法提供了一种通用机制,通过该机制可以设置此对象的各种参数。参数可以是算法的任何可设置参数,例如参数大小,用于签名生成的随机位源(如果适用),或指示是否执行特定但可选计算的指示。对于每个参数,都希望有一个统一的算法特定命名方案,但目前未指定。
      参数:
      param - 参数的字符串标识符。
      value - 参数值。
      抛出:
      InvalidParameterException - 如果 param 是此 Signature 对象的无效参数,参数已设置且无法再次设置,发生安全异常等。
    • engineSetParameter

      protected void engineSetParameter(AlgorithmParameterSpec params) throws InvalidAlgorithmParameterException
      使用指定的参数值初始化此 Signature 对象。
      参数:
      params - 参数
      抛出:
      UnsupportedOperationException - 如果此方法未被提供者重写
      InvalidAlgorithmParameterException - 如果此方法被提供者重写,给定的参数不适用于此 Signature 对象
    • engineGetParameters

      protected AlgorithmParameters engineGetParameters()
      返回与此Signature对象一起使用的参数。

      返回的参数可能与用于初始化此Signature对象的参数相同,也可能包含基础签名方案使用的默认或随机参数值。如果未提供所需参数并且可以由Signature对象生成,则返回生成的参数;否则返回null

      但是,如果签名方案不支持将参数作为AlgorithmParameters返回,则始终返回null

      返回:
      与此Signature对象一起使用的参数,或null
      抛出:
      UnsupportedOperationException - 如果提供程序未覆盖此方法
      自从:
      1.4
    • engineGetParameter

      @Deprecated protected abstract Object engineGetParameter(String param) throws InvalidParameterException
      Deprecated.
      获取指定算法参数的值。此方法提供了一种通用机制,通过该机制可以获取此对象的各种参数。参数可以是算法的任何可设置参数,例如参数大小,或用于签名生成的随机位源(如果适用),或指示是否执行特定但可选计算的指示。对于每个参数,希望有一个统一的算法特定命名方案,但目前未指定。
      参数:
      param - 参数的字符串名称。
      返回:
      表示参数值的对象,如果没有则返回null
      抛出:
      InvalidParameterException - 如果param是此引擎的无效参数,或在尝试获取此参数时发生其他异常。
    • clone

      public Object clone() throws CloneNotSupportedException
      如果实现支持克隆,则返回克隆。
      覆盖:
      clone 在类中 Object
      返回:
      如果实现支持克隆,则返回克隆。
      抛出:
      CloneNotSupportedException - 如果在不支持Cloneable的实现上调用此方法。
      参见: