Skip to content

Releases: forrestblade/chainproof

v0.2.2

21 Mar 22:34

Choose a tag to compare

Fixes

  • Fix README exportPublicKey example (was missing .unwrap())
  • Fix saveKeyPair silently swallowing errors — now properly propagates via errAsync
  • Add parse.test.ts — 14 tests covering all structural validation error branches (100% coverage on parse.ts)

Stats

  • 65 tests, 89% overall coverage
  • Zero banned patterns, zero unsafe casts
  • All audit findings from three rounds resolved

v0.2.1

21 Mar 22:30

Choose a tag to compare

Security Fixes

  • Parsed JSONL entries are now structurally validated before use (no more unvalidated as casts)
  • Ed25519 key type rejection is now tested (RSA/P-256 keys correctly rejected on import)

Code Quality

  • Extracted shared parseChainEntry module (eliminates duplicate safeJsonParse)
  • 51 tests passing

v0.2.0

21 Mar 22:22

Choose a tag to compare

Hash-chained, Ed25519-signed append-only logs for TypeScript.

Features

  • ChainLog<T>: append entries, verify integrity, JSONL serialization
  • Ed25519 signing/verification via node:crypto (zero native deps)
  • SHA-256 hash chain with genesis seed linking
  • UUIDv7 time-ordered entry IDs (RFC 9562)
  • Key management: generate, export/import PEM, save/load from disk
  • File storage: append-to-file, read-from-file, full chain load/save
  • Uses @valencets/resultkit for error handling

Security (v0.2.0)

  • All try/catch replaced with fromThrowable from resultkit
  • Ed25519 key type enforced on import (rejects RSA, P-256, etc.)
  • Unsafe as string cast eliminated

Known Limitations

  • No chain ID in genesis (cross-chain replay possible with same key)
  • Truncation of chain suffix is undetectable without external commitment
  • fromJsonl / loadChainFromFile do not auto-verify on load