Expand description
Pluggable ProofVerifier
implementations for the Trust Tasks framework.
The framework’s ProofVerifier trait is
the seam where cryptosuite implementations plug in; this crate is the
umbrella that hosts those implementations behind Cargo features so a
single dependency line opts in to a specific backend without dragging
in the others.
§Backends
| Cargo feature | Module | Backed by |
|---|---|---|
affinidi ✱ | affinidi | affinidi-data-integrity (EdDSA suites) |
✱ = enabled by default. Disable default features and opt in to the
backends you want via default-features = false + an explicit
features = [...] list.
§Quickstart (affinidi backend)
use trust_tasks_proof::affinidi::Verifier;
use trust_tasks_rs::ProofVerifier;
// did:key only — offline, no I/O. Good for tests and self-issued docs.
let verifier = Verifier::for_did_key();
verifier.verify(&inbound_doc).await?;Producers sign with the same backend’s
affinidi::sign_trust_task — defaults to eddsa-jcs-2022 /
assertionMethod and enforces the issuer↔verificationMethod binding
at sign time, so its output verifies with the stock
affinidi::Verifier by construction:
use trust_tasks_proof::affinidi::{sign_trust_task, SignOptions};
let signed = sign_trust_task(&doc_value, &secret, SignOptions::new()).await?;§Signing a typed document
sign_trust_task works on
serde_json::Value, which is the right shape for the primitive and
the wrong one for a producer holding a
TrustTask<P>. ProofExt is the typed
wrapper: import it and both halves of the round-trip become methods on
the document, with the same canonicalisation and the same defaults.
use trust_tasks_proof::{affinidi::{SignOptions, Verifier}, ProofExt};
doc.sign(&secret, SignOptions::new()).await?; // producer
doc.verify(&Verifier::for_did_key()).await?; // consumer§Versioning
This crate exposes trust-tasks-rs types in its own public API, so a
breaking change there breaks this crate’s callers even when nothing here
changes. cargo-semver-checks cannot catch that: it compares each crate’s
rustdoc against that crate’s own published baseline, and does not track
type identity across dependency versions. The crates that share
trust-tasks-rs in their public API are therefore released as one
compatibility unit with a single shared version — see version_group in
release-plz.toml.
Modules§
- affinidi
Verifier— aProofVerifierimplementation backed byaffinidi-data-integrity— andsign_trust_task, its sign-side counterpart for producers.
Traits§
- Proof
Ext - Extension trait adding
signandverifyto the framework’sTrustTask<P>, for every payload typePa producer can serialise.