pbkdf

Pure Haskell password-based KDF (docs.ppad.tech/pbkdf).
git clone git://git.ppad.tech/pbkdf.git
Log | Files | Refs | README | LICENSE

commit e61072b6f3c7bf134c53dff5e3e659f4802f959c
parent 93af1a1af0ed7731c953ef4c415f05c1401bc094
Author: Jared Tobin <jared@jtobin.io>
Date:   Sat, 21 Jun 2025 15:09:03 +0400

release: v0.2.0

Diffstat:
MCHANGELOG | 4++++
MREADME.md | 20+++++++++-----------
Mflake.lock | 24++++++++++++------------
Mppad-pbkdf.cabal | 2+-
4 files changed, 26 insertions(+), 24 deletions(-)

diff --git a/CHANGELOG b/CHANGELOG @@ -1,5 +1,9 @@ # Changelog +- 0.2.0 (2025-06-21) + * The 'derive' function is now total, returning 'Nothing' when supplied + with bad inputs. + - 0.1.1 (2025-02-24) * Minor Haddock fixes. diff --git a/README.md b/README.md @@ -34,23 +34,21 @@ Haddocks (API documentation, etc.) are hosted at The aim is best-in-class performance for pure, highly-auditable Haskell code. -Current benchmark figures on my mid-2020 MacBook Air look like (use +Current benchmark figures on an M4 Silicon MacBook Air look like (use `cabal bench` to run the benchmark suite): ``` benchmarking ppad-pbkdf/PBKDF-SHA256/derive (outlen 32) - time 533.2 μs (490.9 μs .. 579.9 μs) - 0.967 R² (0.941 R² .. 0.993 R²) - mean 494.0 μs (480.3 μs .. 518.3 μs) - std dev 57.73 μs (38.72 μs .. 98.81 μs) - variance introduced by outliers: 81% (severely inflated) + time 216.9 μs (216.3 μs .. 217.3 μs) + 1.000 R² (1.000 R² .. 1.000 R²) + mean 215.7 μs (215.3 μs .. 216.1 μs) + std dev 1.446 μs (1.275 μs .. 1.819 μs) benchmarking ppad-pbkdf/PBKDF-SHA512/derive (outlen 32) - time 241.2 μs (233.4 μs .. 249.6 μs) - 0.991 R² (0.987 R² .. 0.995 R²) - mean 233.6 μs (227.8 μs .. 240.1 μs) - std dev 20.22 μs (16.95 μs .. 24.39 μs) - variance introduced by outliers: 74% (severely inflated) + time 113.5 μs (113.3 μs .. 113.6 μs) + 1.000 R² (1.000 R² .. 1.000 R²) + mean 113.4 μs (113.3 μs .. 113.5 μs) + std dev 303.1 ns (256.5 ns .. 398.4 ns) ``` ## Security diff --git a/flake.lock b/flake.lock @@ -51,11 +51,11 @@ ] }, "locked": { - "lastModified": 1739979569, - "narHash": "sha256-omEcmgzRlzIE5Vdty0/SskEcR2f7OtcHzGFE4i1dI60=", + "lastModified": 1741625558, + "narHash": "sha256-ZBDXRD5fsVqA5bGrAlcnhiu67Eo50q0M9614nR3NBwY=", "ref": "master", - "rev": "4439e0efafbb5185bd7d9bfb352a17c2a31b96b4", - "revCount": 15, + "rev": "fb63457f2e894eda28250dfe65d0fcd1d195ac2f", + "revCount": 24, "type": "git", "url": "git://git.ppad.tech/base16.git" }, @@ -102,11 +102,11 @@ ] }, "locked": { - "lastModified": 1737298572, - "narHash": "sha256-iAo6GFH1FLNi0wt0FczbqPCmVzCm9gfMEjk1oakExt0=", + "lastModified": 1740802974, + "narHash": "sha256-GTD9UrxwMa5zY7hxzDSXjKXKUwMK4r3FBHLG0nvgapk=", "ref": "master", - "rev": "abc984dc65f0df9bd958c0bc8f390c68e660f710", - "revCount": 87, + "rev": "ab0957e305dff0243dcab11e381470585849fd20", + "revCount": 94, "type": "git", "url": "git://git.ppad.tech/sha256.git" }, @@ -133,11 +133,11 @@ ] }, "locked": { - "lastModified": 1737298660, - "narHash": "sha256-W8wuLHRH7P5oITCXnxKEEnSD2yX1Qo7uypbxpwKvvM8=", + "lastModified": 1740802979, + "narHash": "sha256-6VAXmA1XiIT/WFcP+eFb6uK3YyfgVqIgDv3ASNIoCMs=", "ref": "master", - "rev": "e8ce88cafbf32900556832d3817997642f128242", - "revCount": 21, + "rev": "ff165b29fb21b99749460ae7e3fdca42a85c822b", + "revCount": 28, "type": "git", "url": "git://git.ppad.tech/sha512.git" }, diff --git a/ppad-pbkdf.cabal b/ppad-pbkdf.cabal @@ -1,6 +1,6 @@ cabal-version: 3.0 name: ppad-pbkdf -version: 0.1.1 +version: 0.2.0 synopsis: A password-based key derivation function license: MIT license-file: LICENSE