auths-transparency
Append-only transparency-log primitives for Auths: RFC 6962 Merkle math, C2SP-style checkpoints and witness cosignatures, tile storage, offline-bundle verification, and the witness-diversity (independence) gate.
This is the CT-checkpoint half of Auths' two witness subsystems. (The other is
the KERI-rct key-event receipting layer in auths-core::witness /
auths-keri::witness — a separate protocol with separate keys. Don't conflate
them.)
What's in it
merkle— RFC 6962 leaf/node hashing, inclusion proofs (verify_inclusion), and consistency proofs (verify_consistency) between two tree sizes. Pure, no-I/O, WASM-safe.checkpoint—Checkpoint(origin/size/root/timestamp), its C2SP signed-note body,SignedCheckpoint(log signature + Ed25519 or ECDSA-P256), andWitnessCosignature.tile/store— C2SP static tile layout +TileStore(filesystem, and S3 under thes3feature) for serving a log.bundle/verify—OfflineBundle+verify_bundle: a synchronous, I/O-free verification of signature, inclusion, checkpoint, witness quorum, and namespace against a pinnedTrustRoot. This is the embeddable verifier path.witness(native feature) — the C2SPtlog-witnesscosignature protocol types (CosignRequest/CosignResponse,cosignature_signed_message).witness_policy— a typed, fail-closed loader fordata/witness_policy.json(the runtime diversity policy). Rejects a missing file, unparseable JSON, unknown schema version, or a placeholderpubkey_b64.- Independence gate —
verify_bundle's witness check layersauths_keri::witness::independence::spans_distinct(distinct organizations / jurisdictions / infrastructure) on top of then/2+1count, evaluated over the actual cosigning quorum. A count-met-but-correlated quorum returnsWitnessStatus::NotIndependent.
The runtime
data/witness_policy.json(who is trusted to cosign now) is deliberately separate from the governancedocs/governance/admission_policy.json(who may become a witness). Neither may be weakened to make a verify pass.
How it fits in the architecture
auths-sdk / auths-cli / auths-monitor / auths-checkpoint-cosigner
|
+-- auths-transparency (THIS CRATE)
|
+-- depends on: auths-verifier (types, Ed25519/ECDSA), auths-crypto,
| auths-keri (the shared independence model)
+-- default-features=false → WASM-safe verify path (no ring/tokio)
+-- "native" feature → tile stores, witness cosigner protocol, async
Dependency direction: depends downward on auths-verifier/auths-crypto/
auths-keri; nothing in those depends back on it. The verify path is designed for
minimal-dependency embedding (FFI/WASM), so it stays free of ring/tokio unless
native is enabled.
Usage
use ;
// Offline, I/O-free verification against a pinned trust root.
let report = verify_bundle;
assert!;
// Consistency between two checkpoints of the same log.
use verify_consistency;
verify_consistency?;
// Load the runtime witness-diversity policy (fail-closed).
use WitnessPolicy;
let policy = load?;
Consumers: auths-sdk (bundle verification workflows), auths-monitor
(cross-operator consistency), auths-checkpoint-cosigner (the cosigner), and the
verifier embeddings.