sha256

Pure Haskell SHA-256, HMAC-SHA256 (docs.ppad.tech/sha256).
git clone git://git.ppad.tech/sha256.git
Log | Files | Refs | README | LICENSE

CHANGELOG (1624B)


      1 # Changelog
      2 
      3 - 0.3.1 (2026-01-11)
      4   * Adds a basic quickcheck test suite for asserting memory safety of
      5     library functions on random inputs.
      6 
      7 - 0.3.0 (2026-01-10)
      8   * The HMAC functions now produce a value of type MAC, which is a
      9     newtype over a ByteString. The 'Eq' instance for MAC compares values
     10     in constant time.
     11 
     12 - 0.2.5 (2026-01-08)
     13   * We now check if the ARM cryptographic extensions are available, and,
     14     if so, use them to calculate hashes. If they're unavailable we
     15     simply use the pure implementation as a fallback. This yields about
     16     a 5x performance boost for 'hash' and 3.5x boost for 'hmac' (again,
     17     when available).
     18 
     19   * Allocation for both the 'hash' and 'hmac' functions has been reduced
     20     dramatically, mostly by optimising the padding internals, and is now
     21     constant with respect to input.
     22 
     23 - 0.2.4 (2025-12-28)
     24   * Adds an 'llvm' build flag and tests with GHC 9.10.3.
     25 
     26 - 0.2.3 (2025-01-21)
     27   * Improves padding handling for the strict bytestring case, yielding
     28     performance increases for both 'hash' and 'hmac'.
     29 
     30 - 0.2.2 (2025-01-07)
     31   * Minor bytestring-handling optimisations.
     32 
     33 - 0.2.1 (2024-10-13)
     34   * Adds an INLINE pragma to an internal step function.
     35 
     36   * 'hmac' no longer calls 'hmac_lazy', which has no practical effect
     37     other than to clean up profiling reports generated by GHC.
     38 
     39 - 0.2.0 (2024-10-07)
     40   * 'hmac' and 'hmac_lazy' now hash long keys before computing a HMAC,
     41     instead of throwing an error, matching RFC 2104's suggested behaviour.
     42 
     43 - 0.1.0 (2024-09-14)
     44   * Initial release, supporting SHA256 and HMAC-SHA256 on strict and lazy
     45     bytestrings.