Package org.bouncycastle.crypto

## Interface Xof

- All Superinterfaces:
    `Digest`, `ExtendedDigest`
  All Known Implementing Classes:
    `Blake2xsDigest`, `CSHAKEDigest`, `KMAC`, `SHAKEDigest`

      public interface Xof
      extends ExtendedDigest

  With FIPS PUB 202 a new kind of message digest was announced which supported extendable output, or variable digest sizes. This interface provides the extra method required to support variable output on an extended digest implementation.

- - ### Method Summary

    All Methods Instance Methods Abstract Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `int` | `doFinal​(byte[] out, int outOff, int outLen)` | Output the results of the final calculation for this digest to outLen number of bytes.
    `int` | `doOutput​(byte[] out, int outOff, int outLen)` | Start outputting the results of the final calculation for this digest.

    - ### Methods inherited from interface org.bouncycastle.crypto.Digest

      `doFinal, getAlgorithmName, getDigestSize, reset, update, update`

    - ### Methods inherited from interface org.bouncycastle.crypto.ExtendedDigest

      `getByteLength`

- - ### Method Detail

    - #### doFinal

          int doFinal​(byte[] out,
                      int outOff,
                      int outLen)

      Output the results of the final calculation for this digest to outLen number of bytes.
      Parameters:
        `out` - output array to write the output bytes to.
        `outOff` - offset to start writing the bytes at.
        `outLen` - the number of output bytes requested.
      Returns:
        the number of bytes written

    - #### doOutput

          int doOutput​(byte[] out,
                       int outOff,
                       int outLen)

      Start outputting the results of the final calculation for this digest. Unlike doFinal, this method will continue producing output until the Xof is explicitly reset, or signals otherwise.
      Parameters:
        `out` - output array to write the output bytes to.
        `outOff` - offset to start writing the bytes at.
        `outLen` - the number of output bytes requested.
      Returns:
        the number of bytes written