mirror of
https://github.com/rosenpass/rosenpass.git
synced 2025-12-05 20:40:02 -08:00
This commit resolves multiple issues with the PSK broker integration. - The manual testing procedure never actually utilized the brokers due to the use of the outfile option, this led to issues with the broker being hidden. - The manual testing procedure omitted checking whether a PSK was actually sent to WireGuard entirely. This was fixed by writing an entirely new manual integration testing shell-script that can serve as a blueprint for future integration tests. - Many parts of the PSK broker code did not report (log) errors accurately; added error logging - BrokerServer set message.payload.return_code to the msg_type value, this led to crashes - The PSK broker commands all omitted to set the memfd policy, this led to immediate crashes once secrets where actually allocated - The MioBrokerClient IO state machine was broken and the design was too obtuse to debug. The state machine returned the length prefix as a message instead of actually interpreting it as a state machine. Seems the code was integrated but never actually tested. This was fixed by rewriting the entire state machine code using the new LengthPrefixEncoder/Decoder facilities. A write-buffer that was not being flushed is now handled by flushing the buffer in blocking-io mode.
59 lines
1.6 KiB
TOML
59 lines
1.6 KiB
TOML
[package]
|
|
name = "rosenpass-wireguard-broker"
|
|
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 broker that runs as root and supplies exchanged keys to the kernel."
|
|
homepage = "https://rosenpass.eu/"
|
|
repository = "https://github.com/rosenpass/rosenpass"
|
|
readme = "readme.md"
|
|
|
|
[dependencies]
|
|
thiserror = { workspace = true }
|
|
zerocopy = { workspace = true }
|
|
rosenpass-secret-memory = {workspace = true}
|
|
|
|
# Privileged only
|
|
wireguard-uapi = { workspace = true }
|
|
|
|
# Socket handler only
|
|
rosenpass-to = { workspace = true }
|
|
tokio = { version = "1.39.2", features = ["sync", "full", "mio"] }
|
|
anyhow = { workspace = true }
|
|
clap = { workspace = true }
|
|
env_logger = { workspace = true }
|
|
log = { workspace = true }
|
|
derive_builder = {workspace = true}
|
|
postcard = {workspace = true}
|
|
rustix = { worspace = true, optional = true }
|
|
libc = { worspace = true, optional = true }
|
|
|
|
# Mio broker client
|
|
mio = { workspace = true }
|
|
rosenpass-util = { workspace = true }
|
|
|
|
[dev-dependencies]
|
|
rand = {workspace = true}
|
|
procspawn = {workspace = true}
|
|
|
|
[features]
|
|
experimental_broker_api = ["rustix", "libc"]
|
|
experiment_memfd_secret = []
|
|
|
|
[[bin]]
|
|
name = "rosenpass-wireguard-broker-privileged"
|
|
path = "src/bin/priviledged.rs"
|
|
test = false
|
|
doc = false
|
|
required-features = ["experimental_broker_api"]
|
|
cfg = { target_os = "linux" }
|
|
|
|
[[bin]]
|
|
name = "rosenpass-wireguard-broker-socket-handler"
|
|
test = false
|
|
path = "src/bin/socket_handler.rs"
|
|
doc = false
|
|
required-features = ["experimental_broker_api"]
|
|
cfg = { target_os = "linux" }
|