mirror of
https://github.com/rosenpass/rosenpass.git
synced 2026-02-28 06:23:08 -08:00
With this commit, rosenpass uses a signal handler based on the signal-hook-mio crate. Even though, in this commit, no rosenpass-rp code is touched, this also fixes the signal handling in rosenpass-rp. The way rosenpass is integrated in rp is a bit of a hack – it just directly embeds rosenpass in the same process (though on a dedicated thread). For this reason, rp now just inherits rosenpass' signal handlers. The rosenpass event_loop() will terminate. The main loop of `rp` just spends most of the time waiting for rosenpass itself to finish, and exits when it finishes. Unfortunately, this means we are not using signalfd(2)[^0]; the signal-hook-mio crate appears to use a pipe-based mechanism to deliver events to mio instead. This may not be such a bad thing, as signalfd has some severe drawbacks with respect to subprocesses and masked signals[^1]. Fixes: #358 (https://github.com/rosenpass/rosenpass/issues/385) Fixes: #522 (https://github.com/rosenpass/rosenpass/issues/522) Fixes: #678 (https://github.com/rosenpass/rosenpass/pull/678) [^0]: https://unixism.net/2021/02/making-signals-less-painful-under-linux/ [^1]: https://ldpreload.com/blog/signalfd-is-useless?reposted-on-request
119 lines
3.5 KiB
TOML
119 lines
3.5 KiB
TOML
[package]
|
|
name = "rosenpass"
|
|
version = "0.3.0-dev"
|
|
authors = ["Karolin Varner <karo@cupdev.net>", "wucke13 <wucke13@gmail.com>"]
|
|
edition = "2021"
|
|
license = "MIT OR Apache-2.0"
|
|
description = "Build post-quantum-secure VPNs with WireGuard!"
|
|
homepage = "https://rosenpass.eu/"
|
|
repository = "https://github.com/rosenpass/rosenpass"
|
|
readme = "readme.md"
|
|
rust-version = "1.77.0"
|
|
|
|
[[bin]]
|
|
name = "rosenpass"
|
|
path = "src/main.rs"
|
|
|
|
[[bin]]
|
|
name = "rosenpass-gen-ipc-msg-types"
|
|
path = "src/bin/gen-ipc-msg-types.rs"
|
|
required-features = ["experiment_api", "internal_bin_gen_ipc_msg_types"]
|
|
|
|
[[test]]
|
|
name = "api-integration-tests"
|
|
required-features = ["experiment_api", "internal_testing"]
|
|
|
|
[[test]]
|
|
name = "api-integration-tests-api-setup"
|
|
required-features = ["experiment_api", "internal_testing"]
|
|
|
|
[[test]]
|
|
name = "gen-ipc-msg-types"
|
|
required-features = [
|
|
"experiment_api",
|
|
"internal_testing",
|
|
"internal_bin_gen_ipc_msg_types",
|
|
]
|
|
|
|
[[bench]]
|
|
name = "trace_handshake"
|
|
harness = false
|
|
required-features = ["trace_bench"]
|
|
|
|
[[bench]]
|
|
name = "handshake"
|
|
harness = false
|
|
|
|
[dependencies]
|
|
rosenpass-util = { workspace = true }
|
|
rosenpass-constant-time = { workspace = true }
|
|
rosenpass-ciphers = { workspace = true }
|
|
rosenpass-cipher-traits = { workspace = true }
|
|
rosenpass-to = { workspace = true }
|
|
rosenpass-secret-memory = { workspace = true }
|
|
anyhow = { workspace = true }
|
|
static_assertions = { workspace = true }
|
|
memoffset = { workspace = true }
|
|
thiserror = { workspace = true }
|
|
paste = { workspace = true }
|
|
log = { workspace = true }
|
|
env_logger = { workspace = true }
|
|
serde = { workspace = true }
|
|
toml = { workspace = true }
|
|
clap = { workspace = true }
|
|
clap_complete = { workspace = true }
|
|
clap_mangen = { workspace = true }
|
|
mio = { workspace = true }
|
|
signal-hook = { workspace = true }
|
|
signal-hook-mio = { workspace = true }
|
|
rand = { workspace = true }
|
|
zerocopy = { workspace = true }
|
|
home = { workspace = true }
|
|
derive_builder = { workspace = true }
|
|
rosenpass-wireguard-broker = { workspace = true }
|
|
zeroize = { workspace = true }
|
|
hex-literal = { workspace = true, optional = true }
|
|
hex = { workspace = true, optional = true }
|
|
heck = { workspace = true, optional = true }
|
|
command-fds = { workspace = true, optional = true }
|
|
rustix = { workspace = true, optional = true }
|
|
uds = { workspace = true, optional = true, features = ["mio_1xx"] }
|
|
libcrux-test-utils = { workspace = true, optional = true }
|
|
|
|
[build-dependencies]
|
|
anyhow = { workspace = true }
|
|
|
|
[dev-dependencies]
|
|
criterion = { workspace = true }
|
|
test_bin = { workspace = true }
|
|
stacker = { workspace = true }
|
|
serial_test = { workspace = true }
|
|
procspawn = { workspace = true }
|
|
tempfile = { workspace = true }
|
|
rustix = { workspace = true }
|
|
|
|
[features]
|
|
#default = ["experiment_libcrux_all"]
|
|
experiment_cookie_dos_mitigation = []
|
|
experiment_memfd_secret = ["rosenpass-wireguard-broker/experiment_memfd_secret"]
|
|
experiment_libcrux_all = ["rosenpass-ciphers/experiment_libcrux_all"]
|
|
experiment_libcrux_blake2 = ["rosenpass-ciphers/experiment_libcrux_blake2"]
|
|
experiment_libcrux_chachapoly = [
|
|
"rosenpass-ciphers/experiment_libcrux_chachapoly",
|
|
]
|
|
experiment_libcrux_kyber = ["rosenpass-ciphers/experiment_libcrux_kyber"]
|
|
experiment_api = [
|
|
"hex-literal",
|
|
"uds",
|
|
"command-fds",
|
|
"rustix",
|
|
"rosenpass-util/experiment_file_descriptor_passing",
|
|
"rosenpass-wireguard-broker/experiment_api",
|
|
]
|
|
internal_testing = []
|
|
internal_bin_gen_ipc_msg_types = ["hex", "heck"]
|
|
trace_bench = ["rosenpass-util/trace_bench", "dep:libcrux-test-utils"]
|
|
|
|
[lints.rust]
|
|
unexpected_cfgs = { level = "allow", check-cfg = ['cfg(coverage)'] }
|