Skip to main content

Crate trust_tasks_proof

Crate trust_tasks_proof 

Source
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 featureModuleBacked by
affinidiaffinidiaffinidi-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 — a ProofVerifier implementation backed by affinidi-data-integrity — and sign_trust_task, its sign-side counterpart for producers.

Traits§

ProofExt
Extension trait adding sign and verify to the framework’s TrustTask<P>, for every payload type P a producer can serialise.