1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58
//! # Secure Frame (`SFrame`)
//! This library is an implementation of [draft-ietf-sframe-enc-09](https://www.ietf.org/archive/id/draft-ietf-sframe-enc-09.html).
//!
//! # Optional features
//!
//! Using optional features `sframe` allows to configure different crypto libraries.
//! Be aware that those features are mutually exlusive, if multiple are configured `sframe` issues a compiler error.
//!
//! - **`ring`** *(enabled by default)* — Uses the [ring](https://crates.io/crates/ring) library which allows compilation to Wasm32.
//! AES-CTR mode ciphers are not supported.
//! - **`openssl`** — Uses the [rust-openssl](https://crates.io/crates/openssl) crate, which provides bindings to OpenSSL.
//! Per default the OpenSSL library is locally compiled and then statically linked. The build process requires a C compiler,
//! `perl` (and `perl-core`), and `make`. For further options see the [openssl crate documentation](https://docs.rs/openssl/0.10.55/openssl/).
//! Compilation to Wasm32 is not yet supported.
#![deny(clippy::missing_panics_doc)]
#![deny(
missing_copy_implementations,
trivial_casts,
trivial_numeric_casts,
unsafe_code,
unused_import_braces,
unused_qualifications
)]
#![warn(
missing_docs,
clippy::doc_markdown,
clippy::semicolon_if_nothing_returned,
clippy::single_match_else,
clippy::inconsistent_struct_constructor,
clippy::map_unwrap_or,
clippy::match_same_arms
)]
mod crypto;
mod frame_count_generator;
mod util;
/// error definitions
pub mod error;
pub mod frame;
/// Sframe header definitions as of [sframe draft 09 4.3](https://www.ietf.org/archive/id/draft-ietf-sframe-enc-09.html#name-sframe-header)
pub mod header;
/// sframe key definitions as of [sframe draft 09 4.4.2](https://www.ietf.org/archive/id/draft-ietf-sframe-enc-09.html#section-4.4.2)
pub mod key;
/// Sframe MLS definitions as of [sframe draft 09 5.2](https://www.ietf.org/archive/id/draft-ietf-sframe-enc-09.html#name-mls)
pub mod mls;
/// Ratchet support as of [sframe draft 09 5.1](https://www.ietf.org/archive/id/draft-ietf-sframe-enc-09.html#section-5.1)
pub mod ratchet;
/// Receiver API: models the sframe decryption block in the receiver path, see [sframe draft 09 4.1](https://www.ietf.org/archive/id/draft-ietf-sframe-enc-09.html#name-application-context)
pub mod receiver;
/// Sender API: models the sframe encryption block in the sender path, [sframe draft 09 4.1](https://www.ietf.org/archive/id/draft-ietf-sframe-enc-09.html#name-application-context)
pub mod sender;
pub use crypto::cipher_suite::CipherSuiteVariant;
#[cfg(test)]
pub mod test_vectors;