use std::io::Write;
pub fn secret_in_argv_warning<W: Write>(stderr: &mut W, flag: &str, alternative: &str) {
let _ = writeln!(
stderr,
"warning: secret material on argv ({flag}) — pipe via {alternative} to avoid /proc/$PID/cmdline exposure"
);
}
#[allow(dead_code)]
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum OutputClass {
PrivateKeyMaterial,
WatchOnly,
Template,
}
pub fn emit_output_class_advisory<W: std::io::Write>(class: OutputClass, stderr: &mut W) {
let line = match class {
OutputClass::PrivateKeyMaterial =>
"warning: stdout carries private key material (can spend) \u{2014} redirect or encrypt (e.g. '> file.txt' or '| age -e ...')",
OutputClass::WatchOnly => "note: stdout is watch-only \u{2014} public keys only, cannot spend",
OutputClass::Template => "note: stdout is a keyless descriptor template (no keys)",
};
let _ = writeln!(stderr, "{line}");
}