Embeddable TUF 1.x client verification core for MoonBit
moon add erzhuzi259/moontuf@0.2.1import {
"erzhuzi259/moontuf/client",
"erzhuzi259/moontuf/integrations/admission",
}| Area | Delivered behavior |
|---|---|
| Root | Out-of-band anchor, sequential N+1 rotation under both old/new thresholds, final expiry and online-key recovery |
| Online roles | Signatures, fixed-cycle UTC expiry, version rollback, parent length/hash/version pins, consistent snapshots |
| Delegations | Ordered DFS, terminating roles, ancestor restrictions, repeated-role protection, shell path patterns, path-hash prefixes and TAP15 succinct bins |
| Algorithms | Ed25519, RSA-PSS-SHA256 (2048..8192-bit modulus), ECDSA P-256/SHA256; SHA-256 and SHA-512, every recognized supplied digest checked |
| Targets | Exact length/hash verification in memory or incremental streams; unverified bytes never become verified targets |
| Persistence | Anchored complete checkpoints and resumable partial accepted state with rollback history |
| Integration | Admission tickets, multi-file verification, top-level inventory/diff/cache plans, bounded HTTPS URL planning and diagnostic codes |
moon update
moon fmt --check
moon check --target all --deny-warn
moon build --target all --deny-warn
moon test --target wasm-gc --deny-warn
moon test --target js --deny-warn
moon test --target native --release --deny-warn
moon run examples/offline
moon run examples/delegated_plan
moon run examples/verified_mirrorslet initial = @client.open_trusted_root(authenticated_root_bytes, fixed_utc).unwrap()
let outcome = initial.refresh(host_load_metadata_response)
// Proceed only when outcome.status() is Complete.
let trusted = outcome.client()
let plan = trusted.resolve_plan(["plugins/editor.wasm", "plugins/theme.zip"], host_load_metadata)
// Resolve success is a plan. Verify every downloaded candidate before commit.fn profile_name() -> StringInstall
Download zipEmbeddable TUF 1.x client verification core for MoonBit