ISO9796d2Signer (Bouncy Castle Library 1.85 API Specification)
Date: 2026-07-12

org.bouncycastle.crypto.signers

## Class ISO9796d2Signer

- java.lang.Object
- - org.bouncycastle.crypto.signers.ISO9796d2Signer

- All Implemented Interfaces:
    Signer, SignerWithRecovery

      public class ISO9796d2Signer
      extends java.lang.Object
      implements SignerWithRecovery

  ISO9796-2 - mechanism using a hash function with recovery (scheme 1)

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `static int` | `TRAILER_IMPLICIT` Deprecated. use ISOTrailers
    `static int` | `TRAILER_RIPEMD128` Deprecated. use ISOTrailers
    `static int` | `TRAILER_RIPEMD160` Deprecated. use ISOTrailers
    `static int` | `TRAILER_SHA1` Deprecated. use ISOTrailers
    `static int` | `TRAILER_SHA256` Deprecated. use ISOTrailers
    `static int` | `TRAILER_SHA384` Deprecated. use ISOTrailers
    `static int` | `TRAILER_SHA512` Deprecated. use ISOTrailers
    `static int` | `TRAILER_WHIRLPOOL` Deprecated. use ISOTrailers

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `ISO9796d2Signer(AsymmetricBlockCipher cipher, Digest digest)` Constructor for a signer with an explicit digest trailer.
    `ISO9796d2Signer(AsymmetricBlockCipher cipher, Digest digest, boolean implicit)` Generate a signer with either implicit or explicit trailers for ISO9796-2.

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `byte[]` | `generateSignature()` generate a signature for the loaded message using the key we were initialised with.
    `byte[]` | `getRecoveredMessage()` Return a reference to the recoveredMessage message, either as it was added to a just generated signature, or extracted from a verified one.
    `boolean` | `hasFullMessage()` Return true if the full message was recoveredMessage.
    `void` | `init(boolean forSigning, CipherParameters param)` Initialise the signer for signing or verification.
    `void` | `reset()` reset the internal state
    `void` | `update(byte b)` update the internal digest with the byte b
    `void` | `update(byte[] in, int off, int len)` update the internal digest with the byte array in
    `void` | `updateWithRecoveredMessage(byte[] signature)` Perform an update with the recovered message before adding any other data.
    `boolean` | `verifySignature(byte[] signature)` return true if the signature represents a ISO9796-2 signature for the passed in message.

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Field Detail

    - #### TRAILER_IMPLICIT

          public static final int TRAILER_IMPLICIT

      Deprecated. use ISOTrailers
      See Also:
        Constant Field Values

    - #### TRAILER_RIPEMD160

          public static final int TRAILER_RIPEMD160

      Deprecated. use ISOTrailers
      See Also:
        Constant Field Values

    - #### TRAILER_RIPEMD128

          public static final int TRAILER_RIPEMD128

      Deprecated. use ISOTrailers
      See Also:
        Constant Field Values

    - #### TRAILER_SHA1

          public static final int TRAILER_SHA1

      Deprecated. use ISOTrailers
      See Also:
        Constant Field Values

    - #### TRAILER_SHA256

          public static final int TRAILER_SHA256

      Deprecated. use ISOTrailers
      See Also:
        Constant Field Values

    - #### TRAILER_SHA512

          public static final int TRAILER_SHA512

      Deprecated. use ISOTrailers
      See Also:
        Constant Field Values

    - #### TRAILER_SHA384

          public static final int TRAILER_SHA384

      Deprecated. use ISOTrailers
      See Also:
        Constant Field Values

    - #### TRAILER_WHIRLPOOL

          public static final int TRAILER_WHIRLPOOL

      Deprecated. use ISOTrailers
      See Also:
        Constant Field Values

  - ### Constructor Detail

    - #### ISO9796d2Signer

          public ISO9796d2Signer(AsymmetricBlockCipher cipher,
                                 Digest digest,
                                 boolean implicit)

      Generate a signer with either implicit or explicit trailers for ISO9796-2.
      Parameters:
        `cipher` - base cipher to use for signature creation/verification
        `digest` - digest to use.
        `implicit` - whether or not the trailer is implicit or gives the hash.

    - #### ISO9796d2Signer

          public ISO9796d2Signer(AsymmetricBlockCipher cipher,
                                 Digest digest)

      Constructor for a signer with an explicit digest trailer.
      Parameters:
        `cipher` - cipher to use.
        `digest` - digest to sign with.

  - ### Method Detail

    - #### init

          public void init(boolean forSigning,
                           CipherParameters param)

      Description copied from interface: `Signer`
      Initialise the signer for signing or verification.
      Specified by:
        `init` in interface `Signer`
      Parameters:
        `forSigning` - true if for signing, false otherwise
        `param` - necessary parameters.

    - #### updateWithRecoveredMessage

          public void updateWithRecoveredMessage(byte[] signature)
                                          throws InvalidCipherTextException

      Description copied from interface: `SignerWithRecovery`
      Perform an update with the recovered message before adding any other data. This must be the first update method called, and calling it will result in the signer assuming that further calls to update will include message content past what is recoverable.
      Specified by:
        `updateWithRecoveredMessage` in interface `SignerWithRecovery`
      Parameters:
        `signature` - the signature that we are in the process of verifying.
      Throws:
        `InvalidCipherTextException`

    - #### update

          public void update(byte b)

      update the internal digest with the byte b
      Specified by:
        `update` in interface `Signer`

    - #### update

          public void update(byte[] in,
                             int off,
                             int len)

      update the internal digest with the byte array in
      Specified by:
        `update` in interface `Signer`

    - #### reset

          public void reset()

      reset the internal state
      Specified by:
        `reset` in interface `Signer`

    - #### generateSignature

          public byte[] generateSignature()
                                   throws CryptoException

      generate a signature for the loaded message using the key we were initialised with.
      Specified by:
        `generateSignature` in interface `Signer`
      Throws:
        `CryptoException`

    - #### verifySignature

          public boolean verifySignature(byte[] signature)

      return true if the signature represents a ISO9796-2 signature for the passed in message.
      Specified by:
        `verifySignature` in interface `Signer`

    - #### hasFullMessage

          public boolean hasFullMessage()

      Return true if the full message was recoveredMessage.
      Specified by:
        `hasFullMessage` in interface `SignerWithRecovery`
      Returns:
        true on full message recovery, false otherwise.
      See Also:
        `SignerWithRecovery.hasFullMessage()`

    - #### getRecoveredMessage

          public byte[] getRecoveredMessage()

      Return a reference to the recoveredMessage message, either as it was added to a just generated signature, or extracted from a verified one.
      Specified by:
        `getRecoveredMessage` in interface `SignerWithRecovery`
      Returns:
        the full/partial recoveredMessage message.
      See Also:
        `SignerWithRecovery.getRecoveredMessage()`