stenoxide_core/lib.rs
1//! # stenoxide-core
2//!
3//! Core engine of the `stenoxide` steganography system.
4//!
5//! The crate is organised as five layers that are composed, never mixed:
6//!
7//! 1. [`image_io`] — loading, validation and analysis of the container image.
8//! 2. [`crypto`] — key derivation, authenticated encryption and compression.
9//! 3. [`cost`] — HILL adaptive cost map over the validated image.
10//! 4. [`stego`] — permutation, capacity sizing and Syndrome-Trellis Codes.
11//! 5. [`pipeline`] — orchestration of the layers above with explicit ownership
12//! transfer, so that sensitive buffers are dropped and zeroed as early as
13//! possible.
14//!
15//! ## Linting policy
16//!
17//! Fallible operations must be expressed through `Result`. Panicking helpers and
18//! `unsafe` are denied crate-wide, without exception: the Syndrome-Trellis coder
19//! was the one module that used to re-enable `unsafe` locally, and it is now
20//! [`stego::stc::native`], which is safe Rust and links nothing.
21
22#![deny(unsafe_code)]
23#![deny(clippy::unwrap_used)]
24#![deny(clippy::expect_used)]
25#![deny(clippy::panic)]
26#![deny(missing_docs)]
27
28pub mod cost;
29pub mod crypto;
30pub mod image_io;
31pub mod pipeline;
32pub mod stego;
33
34// Container fixtures, shared by the test suites of both crates so that there is
35// one definition of "an image this system accepts". Compiled only under the
36// `test-utils` feature, which no release build turns on.
37#[cfg(feature = "test-utils")]
38pub mod test_support;