#![cfg_attr(not(feature = "std"), no_std)]
#![forbid(unsafe_code)]
#![deny(missing_docs)]
#![deny(clippy::all)]
#![warn(clippy::pedantic)]
#[cfg(feature = "alloc")]
extern crate alloc;
#[cfg(feature = "std")]
extern crate std;
mod attestation;
mod boot_loader;
mod capability_distribution;
mod manifest;
mod mount;
mod signature;
mod stages;
mod witness_log;
pub use attestation::{BootAttestation, AttestationEntry};
pub use boot_loader::{BootConfig, BootLoader, BootResult, BootStage};
pub use capability_distribution::{
CapabilityDistribution, MinimumCapabilitySet, RootCapabilityDrop,
};
pub use manifest::{
ComponentDecl, ComponentGraph, MemorySchema, ProofPolicy, QueueWiring,
RollbackHook, RvfManifest, WitnessLogPolicy,
};
pub use mount::{MountConfig, MountResult, RvfMount};
pub use signature::{SignatureVerifier, VerifyResult};
pub use stages::{Stage0Hardware, Stage1Verify, Stage2Create, Stage3Mount, Stage4Attest};
pub use witness_log::{WitnessLog, WitnessLogConfig, WitnessLogEntry};
pub use ruvix_cap::{BootCapabilitySet, InitialCapability};
pub use ruvix_types::{
KernelError, ProofAttestation, ProofTier, RegionHandle, RegionPolicy,
RvfMountHandle, RvfVerifyStatus, TaskHandle, TaskPriority,
};
pub type Result<T> = core::result::Result<T, KernelError>;
pub mod stage {
pub const HARDWARE_INIT: u8 = 0;
pub const RVF_VERIFY: u8 = 1;
pub const OBJECT_CREATE: u8 = 2;
pub const COMPONENT_MOUNT: u8 = 3;
pub const FIRST_ATTESTATION: u8 = 4;
}
pub const ML_DSA_65_SIGNATURE_SIZE: usize = 3309;
pub const ML_DSA_65_PUBLIC_KEY_SIZE: usize = 1952;
pub const MAX_MANIFEST_SIZE: usize = 1024 * 1024;
pub const MAX_COMPONENTS: usize = 256;
pub const MAX_QUEUE_WIRINGS: usize = 1024;
pub const MAX_REGION_DECLS: usize = 256;
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_stage_constants() {
assert_eq!(stage::HARDWARE_INIT, 0);
assert_eq!(stage::RVF_VERIFY, 1);
assert_eq!(stage::OBJECT_CREATE, 2);
assert_eq!(stage::COMPONENT_MOUNT, 3);
assert_eq!(stage::FIRST_ATTESTATION, 4);
}
#[test]
fn test_signature_constants() {
assert_eq!(ML_DSA_65_SIGNATURE_SIZE, 3309);
assert_eq!(ML_DSA_65_PUBLIC_KEY_SIZE, 1952);
}
}