Trusty: provenance library workspace (initial import)
This commit is contained in:
74
README.md
Normal file
74
README.md
Normal file
@@ -0,0 +1,74 @@
|
||||
# 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,
|
||||
pluggable `Condition` trait. No storage dependency.
|
||||
- **`trusty-store`** — backend-agnostic `Store` trait. Data types,
|
||||
`KvCrossCheckReport`, transactional scope. Implemented by
|
||||
`trusty-memory` and `trusty-sqlite`.
|
||||
- **`trusty-memory`** — in-memory `Store` impl. 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`](docs/payload-v2.md) — canonical payload byte
|
||||
format, v1 + v2, signing-view algorithm, verifier logic, locked
|
||||
invariants.
|
||||
- [`docs/threat-model.md`](docs/threat-model.md) — detection surfaces,
|
||||
Ed25519 trust boundary, key-compromise scenarios, out-of-scope threats.
|
||||
- [`docs/device-signer-provisioning.md`](docs/device-signer-provisioning.md)
|
||||
— enroll / rotate / revoke pattern for devices signing into a chain,
|
||||
with a runnable demo at `crates/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');
|
||||
```
|
||||
Reference in New Issue
Block a user