mirror of
https://github.com/rosenpass/rosenpass.git
synced 2026-02-28 06:23:08 -08:00
chore: Move sodium init integration into rosenpass-sodium crate
This commit is contained in:
committed by
Karolin Varner
parent
46156fcb29
commit
99634d9702
11
Cargo.lock
generated
11
Cargo.lock
generated
@@ -1025,6 +1025,7 @@ dependencies = [
|
||||
"oqs-sys",
|
||||
"paste",
|
||||
"rosenpass-constant-time",
|
||||
"rosenpass-sodium",
|
||||
"rosenpass-util",
|
||||
"serde",
|
||||
"stacker",
|
||||
@@ -1038,6 +1039,16 @@ dependencies = [
|
||||
name = "rosenpass-constant-time"
|
||||
version = "0.1.0"
|
||||
|
||||
[[package]]
|
||||
name = "rosenpass-sodium"
|
||||
version = "0.1.0"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"libsodium-sys-stable",
|
||||
"log",
|
||||
"rosenpass-util",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "rosenpass-util"
|
||||
version = "0.1.0"
|
||||
|
||||
@@ -5,6 +5,7 @@ members = [
|
||||
"rosenpass",
|
||||
"rosenpass-util",
|
||||
"rosenpass-constant-time",
|
||||
"rosenpass-sodium",
|
||||
]
|
||||
|
||||
[workspace.metadata.release]
|
||||
|
||||
16
rosenpass-sodium/Cargo.toml
Normal file
16
rosenpass-sodium/Cargo.toml
Normal file
@@ -0,0 +1,16 @@
|
||||
[package]
|
||||
name = "rosenpass-sodium"
|
||||
authors = ["Karolin Varner <karo@cupdev.net>", "wucke13 <wucke13@gmail.com>"]
|
||||
version = "0.1.0"
|
||||
edition = "2021"
|
||||
license = "MIT OR Apache-2.0"
|
||||
description = "Rosenpass internal bindings to libsodium"
|
||||
homepage = "https://rosenpass.eu/"
|
||||
repository = "https://github.com/rosenpass/rosenpass"
|
||||
readme = "readme.md"
|
||||
|
||||
[dependencies]
|
||||
rosenpass-util = { path = "../rosenpass-util" }
|
||||
anyhow = { version = "1.0.71", features = ["backtrace"] }
|
||||
libsodium-sys-stable = { version = "1.19.28", features = ["use-pkg-config"] }
|
||||
log = { version = "0.4.17" }
|
||||
5
rosenpass-sodium/readme.md
Normal file
5
rosenpass-sodium/readme.md
Normal file
@@ -0,0 +1,5 @@
|
||||
# Rosenpass internal libsodium bindings
|
||||
|
||||
Rosenpass internal library providing bindings to libsodium.
|
||||
|
||||
This is an internal library; not guarantee is made about its API at this point in time.
|
||||
16
rosenpass-sodium/src/lib.rs
Normal file
16
rosenpass-sodium/src/lib.rs
Normal file
@@ -0,0 +1,16 @@
|
||||
use libsodium_sys as libsodium;
|
||||
|
||||
macro_rules! sodium_call {
|
||||
($name:ident, $($args:expr),*) => { ::rosenpass_util::attempt!({
|
||||
anyhow::ensure!(unsafe{libsodium::$name($($args),*)} > -1,
|
||||
"Error in libsodium's {}.", stringify!($name));
|
||||
Ok(())
|
||||
})};
|
||||
($name:ident) => { sodium_call!($name, ) };
|
||||
}
|
||||
|
||||
#[inline]
|
||||
pub fn init() -> anyhow::Result<()> {
|
||||
log::trace!("initializing libsodium");
|
||||
sodium_call!(sodium_init)
|
||||
}
|
||||
@@ -16,6 +16,7 @@ harness = false
|
||||
[dependencies]
|
||||
rosenpass-util = { path = "../rosenpass-util" }
|
||||
rosenpass-constant-time = { path = "../rosenpass-constant-time" }
|
||||
rosenpass-sodium = { path = "../rosenpass-sodium" }
|
||||
anyhow = { version = "1.0.71", features = ["backtrace"] }
|
||||
static_assertions = "1.1.0"
|
||||
memoffset = "0.9.0"
|
||||
@@ -24,8 +25,8 @@ oqs-sys = { version = "0.8", default-features = false, features = ['classic_mcel
|
||||
lazy_static = "1.4.0"
|
||||
thiserror = "1.0.40"
|
||||
paste = "1.0.12"
|
||||
log = { version = "0.4.17", optional = true }
|
||||
env_logger = { version = "0.10.0", optional = true }
|
||||
log = { version = "0.4.17" }
|
||||
env_logger = { version = "0.10.0" }
|
||||
serde = { version = "1.0.163", features = ["derive"] }
|
||||
toml = "0.7.4"
|
||||
clap = { version = "4.3.0", features = ["derive"] }
|
||||
@@ -38,6 +39,3 @@ anyhow = "1.0.71"
|
||||
criterion = "0.4.0"
|
||||
test_bin = "0.4.0"
|
||||
stacker = "0.1.15"
|
||||
|
||||
[features]
|
||||
default = ["log", "env_logger"]
|
||||
|
||||
@@ -1,11 +1,18 @@
|
||||
use log::error;
|
||||
use rosenpass::{cli::Cli, sodium::sodium_init};
|
||||
use rosenpass::cli::Cli;
|
||||
use rosenpass_util::attempt;
|
||||
use std::process::exit;
|
||||
|
||||
/// Catches errors, prints them through the logger, then exits
|
||||
pub fn main() {
|
||||
env_logger::init();
|
||||
match sodium_init().and_then(|()| Cli::run()) {
|
||||
|
||||
let res = attempt!({
|
||||
rosenpass_sodium::init()?;
|
||||
Cli::run()
|
||||
});
|
||||
|
||||
match res {
|
||||
Ok(_) => {}
|
||||
Err(e) => {
|
||||
error!("{e}");
|
||||
|
||||
@@ -25,8 +25,8 @@
|
||||
//! };
|
||||
//! # fn main() -> anyhow::Result<()> {
|
||||
//!
|
||||
//! // always init libsodium before anything
|
||||
//! rosenpass::sodium::sodium_init()?;
|
||||
//! // always initialize libsodium before anything
|
||||
//! rosenpass_sodium::init()?;
|
||||
//!
|
||||
//! // initialize secret and public key for peer a ...
|
||||
//! let (mut peer_a_sk, mut peer_a_pk) = (SSk::zero(), SPk::zero());
|
||||
@@ -1750,7 +1750,7 @@ mod test {
|
||||
/// Through all this, the handshake should still successfully terminate;
|
||||
/// i.e. an exchanged key must be produced in both servers.
|
||||
fn handles_incorrect_size_messages() {
|
||||
crate::sodium::sodium_init().unwrap();
|
||||
rosenpass_sodium::init().unwrap();
|
||||
|
||||
stacker::grow(8 * 1024 * 1024, || {
|
||||
const OVERSIZED_MESSAGE: usize = ((MAX_MESSAGE_LEN as f32) * 1.2) as usize;
|
||||
|
||||
@@ -2,7 +2,6 @@
|
||||
|
||||
use anyhow::{ensure, Result};
|
||||
use libsodium_sys as libsodium;
|
||||
use log::trace;
|
||||
use rosenpass_constant_time::xor_into;
|
||||
use rosenpass_util::attempt;
|
||||
use static_assertions::const_assert_eq;
|
||||
@@ -34,12 +33,6 @@ macro_rules! sodium_call {
|
||||
($name:ident) => { sodium_call!($name, ) };
|
||||
}
|
||||
|
||||
#[inline]
|
||||
pub fn sodium_init() -> Result<()> {
|
||||
trace!("initializing libsodium");
|
||||
sodium_call!(sodium_init)
|
||||
}
|
||||
|
||||
#[inline]
|
||||
pub fn sodium_memcmp(a: &[u8], b: &[u8]) -> bool {
|
||||
a.len() == b.len()
|
||||
|
||||
Reference in New Issue
Block a user