libsignify-rs - OpenBSD-compatible file signing & verification library

A Rust library for cryptographically signing and verifying files using
the Ed25519-based format defined by OpenBSD's
signify utility.
Usage
This crate exports a Builder-based API for ergonomic use in Rust
applications.
use std::fs;
use std::path::Path;
use libsignify_rs::{KeyGenerator, Signer, Verifier};
fn main() -> Result<(), Box<dyn std::error::Error>> {
let key_pub = Path::new("key.pub");
let key_sec = Path::new("key.sec");
let msg_file = Path::new("message.txt");
let sig_file = Path::new("message.txt.sig");
KeyGenerator::new()
.comment("Heavy is the root of light. Still is the master of moving.")
.generate(key_pub, key_sec)?;
fs::write(msg_file, "Change return success. Going and coming without error. Action brings good fortune.")?;
Signer::new()
.seckey(key_sec)
.sign(msg_file, sig_file)?;
Verifier::new()
.pubkey(key_pub)
.verify(msg_file, sig_file)?;
Ok(())
}
Usage with keyrings(7)
The Signify struct provides a high-level configuration interface. On
Linux/Android, it supports kernel
keyrings(7)
integration for secure passphrase management.
use std::path::PathBuf;
use libsignify_rs::signify::{Mode, Signify};
fn main() -> Result<(), Box<dyn std::error::Error>> {
let key_pub = PathBuf::from("key.pub");
let key_sec = PathBuf::from("key.sec");
let msg_file = PathBuf::from("msg.txt");
let mut signify = Signify::default();
signify.mode = Some(Mode::Generate);
signify.pubkey = Some(key_pub.clone());
signify.seckey = Some(key_sec.clone());
signify.comment = Some("keyring-example".to_string());
signify.key_id = Some(1337);
signify.execute()?;
signify.mode = Some(Mode::Sign);
signify.msg_file = Some(msg_file.clone());
signify.execute()?;
signify.mode = Some(Mode::Verify);
signify.quiet = true;
signify.execute()?;
Ok(())
}
Features
- Strict Compatibility: Adheres strictly to the OpenBSD file format
and verification logic.
- Pure Rust: No unsafe code, no arithmetic side effects.
- Keyring Support: On Linux/Android, integrates with kernel
keyrings(7)
for secure passphrase management.
ChangeLog
See ChangeLog.md
License
ISC. See COPYING.