AtlatestRenderedmarkdown
Readme

sigil-crypto Releases

v0.16.7 — 2026-09-23

Sigil can now check minisign signatures itself. (sigil crypto) gains Ed25519 (RFC 8032) and BLAKE2b-512, and the new (sigil crypto minisign) parses minisign public keys and .minisig files and verifies them the way minisign -V does, with no minisign binary on PATH. Both build for wasm32-wasi as well as native and static musl targets, so a browser build can verify a signed registry index with the same code as the CLI.

Changes

  • ed25519-verify checks an Ed25519 signature and returns #t or #f. It rejects non-canonical encodings, small-order keys and R values, and S values outside the group order, and checks the cofactored equation that RFC 8032 section 5.1.7 allows. It agrees with libsodium, which the minisign tool uses, on every RFC 8032, Wycheproof and ed25519-speccheck vector except where the key or R has a small-order component (speccheck cases 4 and 5, and a crafted signature under an honest key with a mixed-order R); only the key holder can produce those, and minisign never does.
  • ed25519-public-key and ed25519-sign derive a key and sign with a 32-byte seed; they come with the vendored implementation.
  • blake2b-512 hashes a string or bytevector to 64 bytes.
  • (sigil crypto minisign): minisign-parse-public-key (a minisign.pub file or the bare key line), minisign-parse-signature, and minisign-verify / minisign-verify-prehashed, which return the authenticated trusted comment or #f. minisign-failure-reason returns #f for a good signature and otherwise why it failed: key-id-mismatch, legacy-refused, bad-signature or bad-trusted-comment-signature. Both minisign formats verify: prehashed ED and legacy Ed.
  • Ed25519 and BLAKE2b come from Monocypher 4.0.3, vendored unmodified under vendor/monocypher/ with its provenance in vendor/MONOCYPHER.md.
  • On wasm32-wasi only the Monocypher procedures and (sigil crypto minisign) are built. The Mbed TLS-backed procedures (hashes, HMAC, PBKDF2, ECDSA, ECDH, AES-GCM, base64, random bytes) raise "not available on wasm" there instead of being unbound. Before this release the package did not build for wasm32-wasi at all.

Upgrade notes

Nothing changes for existing callers on native targets.