Files
husk-milter/src/commands/signkey/create.rs
T
Malte Meiboom 7688e6c5a2 Add signkey create
- Add a CLI command for creating a new signing key.
2026-06-19 12:27:43 +02:00

36 lines
987 B
Rust

//! signkey create command
use std::path::PathBuf;
use anyhow::Result;
use sequoia_openpgp::cert::CertBuilder;
use sequoia_directories::Home;
use crate::cli::cli_args::SignkeyCreateCommand;
use crate::common::crypto;
use crate::config::{HuskConfig, HuskConfigContainer};
use crate::types::husk_context::HuskContext;
pub async fn dispatch(cmd: SignkeyCreateCommand, config: HuskConfigContainer)
-> Result<()> {
let config: HuskConfig = config.into();
let context = HuskContext::new(&config)?;
let sequoia_home = Home::new(PathBuf::from(&config.sequoia_home))?;
// XXX: cleanup the userid before using
let (cert, _) = CertBuilder::new()
.add_signing_subkey()
.add_userid(cmd.userid)
.generate()?;
if crypto::import_key(sequoia_home, &cert) {
let vc = cert.with_policy(&context.policy, None)?;
crypto::set_signing_key(&context, &vc)?;
println!("New signing key: {}", vc.fingerprint());
}
Ok(())
}