Module  java.base
软件包  java.security

Class SignatureSpi

  • 已知直接子类:
    Signature


    public abstract class SignatureSpi
    extends Object
    该类定义了Signature类的 ( SPI ),用于提供数字签名算法的功能。 数字签名用于数字数据的认证和完整性保证。

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

    从以下版本开始:
    1.2
    另请参见:
    Signature
    • 字段详细信息

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

        protected void engineUpdate​(ByteBuffer input)
        使用指定的ByteBuffer更新要签名或验证的数据。 处理data.remaining()起始字节data.position() 返回时,缓冲区的位置将等于其限制; 其限制将不会改变。
        参数
        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方法之一后的engineInitSign ),并且可以重用以使用相同的私钥生成进一步的签名。 这种方法应该是抽象的,但是我们留下具体的二进制兼容性。 有知识的提供者应该覆盖这种方法。

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

        protected abstract boolean engineVerify​(byte[] sigBytes)
                                         throws SignatureException
        验证传入签名。
        参数
        sigBytes - 要验证的签名字节。
        结果
        如果签名被验证,则为真,否则为false。
        异常
        SignatureException - 如果引擎未正确初始化,则传入的签名被错误地编码或错误的类型,如果该签名算法不能处理提供的输入数据等。
      • engineVerify

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

        注意:子类应该覆盖默认实现。

        参数
        sigBytes - 要验证的签名字节。
        offset - 从字节数组开始的偏移量。
        length - 从偏移开始使用的字节数。
        结果
        如果签名被验证,则为真,否则为false。
        异常
        SignatureException - 如果引擎未正确初始化,则传入的签名被错误地编码或错误的类型,如果该签名算法无法处理提供的输入数据等。
        从以下版本开始:
        1.4
      • engineSetParameter

        @Deprecated
        protected abstract void engineSetParameter​(String param,
                                                   Object value)
                                            throws InvalidParameterException
        已过时。 替换为engineSetParameter
        将指定的算法参数设置为指定的值。 该方法提供通用机制,通过该机制可以设置该对象的各种参数。 参数可以是算法的任何可设置参数,诸如参数大小,或用于签名生成的随机比特来源(如果适用)),或者是否执行特定但可选择的计算的指示。 每个参数的均匀算法特定命名方案是可取的,但在此时未指定。
        参数
        param - 参数的字符串标识符。
        value - 参数值。
        异常
        InvalidParameterException - 如果 param是该签名算法引擎的无效参数,则该参数已设置,不能再次设置,发生安全异常等。
      • engineGetParameters

        protected AlgorithmParameters engineGetParameters​()

        提供者覆盖此方法以返回与此签名引擎一起使用的参数,如果此签名引擎不使用任何参数,则返回null。

        返回的参数可能与用于初始化此签名引擎的参数相同,或者如果该签名引擎需要算法参数但未被任何一个初始化,则可能包含底层签名实现使用的默认和随机生成的参数值的组合。

        结果
        与此签名引擎一起使用的参数,如果此签名引擎不使用任何参数,则为null
        异常
        UnsupportedOperationException - 如果此方法不被提供程序覆盖
        从以下版本开始:
        1.4
      • engineGetParameter

        @Deprecated
        protected abstract Object engineGetParameter​(String param)
                                              throws InvalidParameterException
        已过时。
        获取指定算法参数的值。 该方法提供通用机制,通过该机制可以获得该对象的各种参数。 参数可以是算法的任何可设置参数,诸如参数大小,或用于签名生成的随机比特来源(如果适用)),或者是否执行特定但可选择的计算的指示。 每个参数的均匀算法特定命名方案是可取的,但在此时未指定。
        参数
        param - 参数的字符串名称。
        结果
        表示参数值的对象,如果没有,则为null。
        异常
        InvalidParameterException - 如果 param是此引擎的无效参数,或尝试获取此参数时发生另一个异常。