net.i2p.crypto

## Class SHA256Generator

- java.lang.Object
- - net.i2p.crypto.SHA256Generator

-     public final class SHA256Generator
      extends Object

  Defines a wrapper for SHA-256 operation. As of release 0.8.7, uses java.security.MessageDigest by default. As of release 0.9.25, uses only MessageDigest. GNU-Crypto gnu.crypto.hash.Sha256Standalone is removed as of 0.9.28.

- - ### Constructor Summary

    Constructors
    Constructor and Description
    `SHA256Generator(I2PAppContext context)`

  - ### Method Summary

    All Methods Static Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `MessageDigest` | `acquire()` Get a MessageDigest instance from the pool, for uses where the one-shot calculateHash() would require copying the data.
    `Hash` | `calculateHash(byte[] source)` Calculate the SHA-256 hash of the source and cache the result.
    `Hash` | `calculateHash(byte[] source, int start, int len)` Calculate the hash and cache the result.
    `void` | `calculateHash(byte[] source, int start, int len, byte[] out, int outOffset)` Use this if you only need the data, not a Hash object.
    `static MessageDigest` | `getDigestInstance()` Return a new MessageDigest from the system libs.
    `static SHA256Generator` | `getInstance()`
    `static void` | `main(String[] args)`
    `void` | `release(MessageDigest digest)` Release a digest back to the pool

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

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

- - ### Constructor Detail

    - #### SHA256Generator

          public SHA256Generator(I2PAppContext context)

      Parameters:
        `context` - unused

  - ### Method Detail

    - #### acquire

          public MessageDigest acquire()

      Get a MessageDigest instance from the pool, for uses where the one-shot calculateHash() would require copying the data. Return the instance via release() when done.

    - #### calculateHash

          public final Hash calculateHash(byte[] source)

      Calculate the SHA-256 hash of the source and cache the result.
      Parameters:
        `source` - what to hash
      Returns:
        hash of the source

    - #### calculateHash

          public final Hash calculateHash(byte[] source,
                                          int start,
                                          int len)

      Calculate the hash and cache the result.
      Parameters:
        `source` - what to hash
        `start` - the starting offset
        `len` - the length to hash
      Returns:
        the hash

    - #### calculateHash

          public final void calculateHash(byte[] source,
                                          int start,
                                          int len,
                                          byte[] out,
                                          int outOffset)

      Use this if you only need the data, not a Hash object. Does not cache.
      Parameters:
        `out` - needs 32 bytes starting at outOffset

    - #### getDigestInstance

          public static MessageDigest getDigestInstance()

      Return a new MessageDigest from the system libs.

    - #### getInstance

          public static final SHA256Generator getInstance()

    - #### main

          public static void main(String[] args)

    - #### release

          public void release(MessageDigest digest)

      Release a digest back to the pool
      Parameters:
        `digest` - must be SHA-256