lib

Core libraries for Radroots
git clone https://radroots.dev/git/lib.git
Log | Files | Refs | README

commit 33bb89d749d58edf3c4e27846c2c2ed4cc479c36
parent 6d1a957db532712614b2994e90d497a18f1bf092
Author: triesap <tyson@radroots.org>
Date:   Thu, 30 Jul 2026 10:31:36 +0000

signing: align package manifest and module root

- declare the exact identity event and protocol dependency boundary
- expose only the approved std and serde feature vocabulary
- establish the seven-module no-std host SPI skeleton
- verify metadata package tests strict linting and WASM portability

Diffstat:
MCargo.lock | 5+++++
Mcrates/signing/Cargo.toml | 18++++++++++++++++++
Acrates/signing/src/actor.rs | 1+
Acrates/signing/src/capability.rs | 1+
Acrates/signing/src/error.rs | 1+
Mcrates/signing/src/lib.rs | 15++++++++++++++-
Acrates/signing/src/receipt.rs | 1+
Acrates/signing/src/request.rs | 1+
Acrates/signing/src/signer.rs | 1+
Acrates/signing/src/status.rs | 1+
Acrates/signing/tests/package_boundary.rs | 45+++++++++++++++++++++++++++++++++++++++++++++
11 files changed, 89 insertions(+), 1 deletion(-)

diff --git a/Cargo.lock b/Cargo.lock @@ -4955,6 +4955,11 @@ version = "0.1.0-alpha" [[package]] name = "radroots_signing" version = "0.1.0-alpha" +dependencies = [ + "radroots_event", + "radroots_identity", + "radroots_protocol", +] [[package]] name = "radroots_simplex_agent_proto" diff --git a/crates/signing/Cargo.toml b/crates/signing/Cargo.toml @@ -14,5 +14,23 @@ publish = false [lib] name = "radroots_signing" +[features] +default = ["std", "serde"] +std = [ + "radroots_event/std", + "radroots_identity/std", + "radroots_protocol/std", +] +serde = [ + "radroots_event/serde", + "radroots_identity/serde", + "radroots_protocol/serde", +] + +[dependencies] +radroots_event = { workspace = true, default-features = false } +radroots_identity = { workspace = true, default-features = false } +radroots_protocol = { workspace = true, default-features = false } + [lints] workspace = true diff --git a/crates/signing/src/actor.rs b/crates/signing/src/actor.rs @@ -0,0 +1 @@ +//! Actor provenance and authorization context. diff --git a/crates/signing/src/capability.rs b/crates/signing/src/capability.rs @@ -0,0 +1 @@ +//! Signer capability declarations. diff --git a/crates/signing/src/error.rs b/crates/signing/src/error.rs @@ -0,0 +1 @@ +//! Normalized signing failures. diff --git a/crates/signing/src/lib.rs b/crates/signing/src/lib.rs @@ -1 +1,14 @@ -//! Signing abstractions and authorization policy for Radroots. +#![doc = include_str!("../README.md")] +#![cfg_attr(not(feature = "std"), no_std)] +#![forbid(unsafe_code)] + +#[cfg(not(feature = "std"))] +extern crate alloc; + +pub mod actor; +pub mod capability; +pub mod error; +pub mod receipt; +pub mod request; +pub mod signer; +pub mod status; diff --git a/crates/signing/src/receipt.rs b/crates/signing/src/receipt.rs @@ -0,0 +1 @@ +//! Signing receipts. diff --git a/crates/signing/src/request.rs b/crates/signing/src/request.rs @@ -0,0 +1 @@ +//! Validated signing requests. diff --git a/crates/signing/src/signer.rs b/crates/signing/src/signer.rs @@ -0,0 +1 @@ +//! Object-safe signer service-provider interface. diff --git a/crates/signing/src/status.rs b/crates/signing/src/status.rs @@ -0,0 +1 @@ +//! Signer progress and status models. diff --git a/crates/signing/tests/package_boundary.rs b/crates/signing/tests/package_boundary.rs @@ -0,0 +1,45 @@ +#[allow(unused_imports)] +use radroots_signing::{ + actor as _, capability as _, error as _, receipt as _, request as _, signer as _, status as _, +}; + +const MANIFEST: &str = include_str!("../Cargo.toml"); +const ROOT: &str = include_str!("../src/lib.rs"); + +#[test] +fn manifest_has_final_identity_features_and_dependencies() { + for required in [ + "name = \"radroots_signing\"", + "version = \"0.1.0-alpha\"", + "publish = false", + "default = [\"std\", \"serde\"]", + "radroots_event = { workspace = true, default-features = false }", + "radroots_identity = { workspace = true, default-features = false }", + "radroots_protocol = { workspace = true, default-features = false }", + ] { + assert!( + MANIFEST.contains(required), + "manifest is missing {required}" + ); + } +} + +#[test] +fn crate_root_declares_the_approved_module_skeleton() { + assert!(ROOT.contains("#![cfg_attr(not(feature = \"std\"), no_std)]")); + for module in [ + "actor", + "capability", + "error", + "request", + "receipt", + "signer", + "status", + ] { + let declaration = format!("pub mod {module};"); + assert!( + ROOT.contains(&declaration), + "crate root is missing {module}" + ); + } +}