aead

Pure Haskell AEAD-ChaCha20-Poly1305 (docs.ppad.tech/aead).
git clone git://git.ppad.tech/aead.git
Log | Files | Refs | README | LICENSE

CHANGELOG (1923B)


      1 # Changelog
      2 
      3 - 0.3.8 (2026-10-31)
      4   * Bumps the ppad-chacha and ppad-poly1305 dependencies to 0.3.1 and
      5     0.4.8, which add native kernels on x86_64: SSE2 and AVX2 for
      6     ChaCha20, and scalar C and AVX2 for Poly1305, with AVX2 detected
      7     at runtime. On x86_64 CPUs with AVX2, 'encrypt' and 'decrypt' are
      8     roughly 3.5x faster.
      9 
     10 - 0.3.7 (2026-10-31)
     11   * Bumps the ppad-poly1305 dependency to 0.4.7, which picks up
     12     ppad-fixed 0.2.1. Under the llvm flag on x86_64, both are compiled
     13     with LLVM's x86 cmov converter off
     14     (-optlc=-x86-cmov-converter=false). This library is compiled
     15     likewise, as ppad-fixed's constant-time arithmetic can be inlined
     16     into it.
     17 
     18 - 0.3.6 (2026-09-06)
     19   * Merely bumps the ppad-chacha dependency.
     20 
     21 - 0.3.5 (2026-08-01)
     22   * Merely bumps the ppad-poly1305 dependency.
     23 
     24 - 0.3.4 (2026-07-17)
     25   * Adds an optimization-opaque barrier to MAC equality comparison
     26     to prevent LLVM from introducing variable-time instructions when
     27     compiling with the LLVM backend.
     28 
     29 - 0.3.3 (2026-07-17)
     30   * Uses a different algorithm for constant-time MAC comparison.
     31     This version seems to produce less microarchitectural variance on
     32     aarch64/darwin.
     33 
     34 - 0.3.2 (2026-05-16)
     35   * Bumps the poly1305 dependency to a version that returns its MAC in a
     36     custom type having a constant-time Eq instance.
     37 
     38 - 0.3.1 (2025-12-28)
     39   * Tests with GHC 9.10.3.
     40 
     41 - 0.3.0 (2025-12-27)
     42   * Updates the poly1305 dependency to a version that uses ppad-fixed for
     43     fixed-width words and constant-time primitives internally. Also swaps
     44     a naïve ByteString equality check out for a constant-time version.
     45 
     46 - 0.2.0 (2025-06-21)
     47   * The 'encrypt' and 'decrypt' functions are now total, returning 'Left
     48     InvalidKey', 'Left InvalidNonce', or 'Left InvalidMAC' values when
     49     passed the corresponding bad inputs.
     50 
     51 - 0.1.0 (2025-03-09)
     52   * Initial release, supporting the ChaCha20-Poly1305 configuration.
     53 
     54