rustici

Crates.iorustici
lib.rsrustici
version1.1.0
created_at2025-08-28 11:34:01.054603+00
updated_at2025-09-04 14:24:50.695779+00
descriptionPure-Rust client for strongSwan's VICI protocol
homepagehttps://github.com/mira-mobility/rustici
repositoryhttps://github.com/mira-mobility/rustici
max_upload_size
id1814038
size69,595
Alexander Neumann (AlexanderNeumann)

documentation

https://docs.rs/rustici

README

rustici logo

A minimal Rust client for the strongSwan VICI protocol — inspired by the ideas behind davici, but implemented from scratch in Rust.

CI crates.io version docs.rs License: LGPL-2.1+ Platform: Unix

Status: experimental MVP. Pure std, blocking I/O, UNIX-only. No external deps.

Features

  • Encode/decode VICI messages (sections, lists, key/values).
  • Encode/decode VICI packets and transport framing (32-bit BE length).
  • Blocking client over UnixStream for request/response commands.
  • Register/unregister for events and read event messages.
  • No dependency on libstrongswan or davici — fresh Rust code.

Note: This library focuses on the protocol. It intentionally does not try to mirror the exact C API. Instead, it provides a small, idiomatic Rust surface that's easy to extend with higher-level helpers.

Example

List IKE_SAs using the list-sas command:

use rustici::{Client, Message};

fn main() -> Result<(), Box<dyn std::error::Error>> {
    let mut cli = Client::connect(rustici::client::DEFAULT_SOCKET)?;

    // empty request message
    let req = Message::new();

    let resp = cli.call("list-sas", &req)?;
    println!("{}", resp);
    Ok(())
}

Build and run example:

cargo run --example list_sas

Protocol references

Acknowledgments

This library is a Rust implementation based on the davici library from the strongSwan project.

strongSwan has been actively developed since 2005, with the modern IKE daemon written from scratch in a modular, object-oriented design. The intellectual property rights to strongSwan were acquired by secunet Security Networks AG in June 2022. We thank the strongSwan maintainers and contributors for their excellent work:

Andreas Steffen (strongSec GmbH) Tobias Brunner (codelabs GmbH) secunet Security Networks AG Martin Willi (original davici author)

License

This library is licensed under the GNU Lesser General Public License v2.1 or later (LGPL-2.1+) (Based on the original davici library).

Rust implementation:

  • Copyright (C) 2025 Mira Mobility

See the LICENSE file for the full license text.

Commit count: 29

cargo fmt