2.9 KiB
2.9 KiB
Trusty
Tamper-evident data provenance chain library. Pure Rust. Proprietary. MM Advisory LLC / Eric Gottlieb.
Crates
trusty-core— pure library. Dual hash (SipHash-2-4 + SHA-256), canonical payload (v1 + v2), Ed25519 signing trait,compute_record/compute_record_signed/verify_links, chain-break-as-event primitive, pluggableConditiontrait. No storage dependency.trusty-store— backend-agnosticStoretrait. Data types,KvCrossCheckReport, transactional scope. Implemented bytrusty-memoryandtrusty-sqlite.trusty-memory— in-memoryStoreimpl. Reference implementation for tests / fuzzing / conformance. Not intended for persistence.trusty-sqlite— rusqlite adapter. Three-table schema (provenance_envelope,hash_index,chain_tips) with KV cross-check.Trusty::{open, append, append_signed, append_with_method, append_with_method_signed, verify, anchor, history, integrity}.trusty-sqlite-ext— loadable SQLite extension (cdylib).sqlite3_trusty_init()exposes SQL functions (trusty_append,trusty_verify,trusty_anchor). Load from any sqlite3 binding in any language.
Docs
docs/payload-v2.md— canonical payload byte format, v1 + v2, signing-view algorithm, verifier logic, locked invariants.docs/threat-model.md— detection surfaces, Ed25519 trust boundary, key-compromise scenarios, out-of-scope threats.docs/device-signer-provisioning.md— enroll / rotate / revoke pattern for devices signing into a chain, with a runnable demo atcrates/trusty-sqlite/examples/device_signer.rs.
Layout
trusty/
Cargo.toml workspace
crates/
core/
trusty-core/ locked primitives (hash, chain, payload, bundle)
trusty-store/ backend-agnostic Store trait
adapters/
trusty-memory/ in-memory backend (tests / ref impl)
trusty-sqlite/ rusqlite production backend
extensions/
trusty-sqlite-ext/ SQLite loadable extension (cdylib, standalone)
docs/ format + threat-model specs
Build
Workspace-wide cargo commands are broken by a rusqlite feature conflict
(loadable_extension in trusty-sqlite-ext vs bundled in
trusty-sqlite). Use per-package form:
cargo build -p trusty-core -p trusty-store -p trusty-memory -p trusty-sqlite
cargo build -p trusty-sqlite-ext
cargo test -p trusty-core -p trusty-store -p trusty-memory -p trusty-sqlite
cargo test -p trusty-sqlite-ext
The extension ships as trusty_sqlite_ext.{dll,so,dylib}. Load from
sqlite3:
sqlite> .load ./trusty_sqlite_ext
sqlite> SELECT trusty_append('company_acme', '{"status":"active"}', 'https://source');