Releases: forrestblade/chainproof
Releases · forrestblade/chainproof
v0.2.2
Fixes
- Fix README
exportPublicKeyexample (was missing.unwrap()) - Fix
saveKeyPairsilently swallowing errors — now properly propagates viaerrAsync - 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
Security Fixes
- Parsed JSONL entries are now structurally validated before use (no more unvalidated
ascasts) - Ed25519 key type rejection is now tested (RSA/P-256 keys correctly rejected on import)
Code Quality
- Extracted shared
parseChainEntrymodule (eliminates duplicatesafeJsonParse) - 51 tests passing
v0.2.0
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 stringcast 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/loadChainFromFiledo not auto-verify on load