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

org.bouncycastle.crypto.signers

## Class HashMLDSASigner

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

- All Implemented Interfaces:
    Signer

      public class HashMLDSASigner
      extends java.lang.Object
      implements Signer

- - ### Constructor Summary

    Constructors
    Constructor and Description
    `HashMLDSASigner()`

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `byte[]` | `generateSignature()` generate a signature for the message we've been loaded with using the key we were initialised with.
    `byte[]` | `generateSignature(byte[] hash)` Sign a message that has already been hashed externally.
    `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
    `boolean` | `verifySignature(byte[] signature)` return true if the internal state represents the signature described in the passed in array.
    `boolean` | `verifySignature(byte[] hash, byte[] signature)` Verify a signature over a message that has already been hashed externally; companion to `generateSignature(byte[])`.

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

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

- - ### Constructor Detail

    - #### HashMLDSASigner

          public HashMLDSASigner()

  - ### 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.

    - #### update

          public void update(byte b)

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

    - #### update

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

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

    - #### generateSignature

          public byte[] generateSignature()
                                   throws CryptoException,
                                          DataLengthException

      Description copied from interface: `Signer`
      generate a signature for the message we've been loaded with using the key we were initialised with.
      Specified by:
        `generateSignature` in interface `Signer`
      Throws:
        `CryptoException`
        `DataLengthException`

    - #### verifySignature

          public boolean verifySignature(byte[] signature)

      Description copied from interface: `Signer`
      return true if the internal state represents the signature described in the passed in array.
      Specified by:
        `verifySignature` in interface `Signer`

    - #### generateSignature

          public byte[] generateSignature(byte[] hash)
                                   throws CryptoException,
                                          DataLengthException

      Sign a message that has already been hashed externally. See FIPS 204 sec. 5.4 (HashML-DSA): the caller supplies the digest of the message and the signer absorbs it together with the DER encoding of the digest algorithm's OID (derived from the parameter set this signer was initialised with) into the mu computation, just as the streaming form would. The supplied hash must have been produced with the digest algorithm matching the configured parameter set.
      Parameters:
        `hash` - the digest of the message.
      Returns:
        the ML-DSA signature.
      Throws:
        `CryptoException`
        `DataLengthException`

    - #### verifySignature

          public boolean verifySignature(byte[] hash,
                                         byte[] signature)

      Verify a signature over a message that has already been hashed externally; companion to `generateSignature(byte[])`.
      Parameters:
        `hash` - the digest of the message.
        `signature` - the candidate signature.
      Returns:
        true if the signature is valid.

    - #### reset

          public void reset()

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