opgpcard: Prevent losing the generated cert.

- opgpcard admin generate by default prints the corresponding
    certificate to stdout, where it's easy for a careless user to lose
    it.

  - Make the --output argument mandatory, so the certificate is always
    stored in a file.
This commit is contained in:
Nora Widdecke 2022-10-27 13:22:49 +02:00
parent 46b5f59d0f
commit 71f6c98ed5
No known key found for this signature in database
GPG key ID: 2D4111B31DBB99B6

View file

@ -86,9 +86,9 @@ pub struct AdminGenerateCommand {
#[clap(name = "User PIN file", short = 'p', long = "user-pin")] #[clap(name = "User PIN file", short = 'p', long = "user-pin")]
user_pin: Option<PathBuf>, user_pin: Option<PathBuf>,
/// Output file (stdout if unset) /// Output file
#[clap(name = "output", long = "output", short = 'o')] #[clap(name = "output", long = "output", short = 'o')]
output_file: Option<PathBuf>, output_file: PathBuf,
#[clap(long = "no-decrypt", action = clap::ArgAction::SetFalse)] #[clap(long = "no-decrypt", action = clap::ArgAction::SetFalse)]
decrypt: bool, decrypt: bool,
@ -484,8 +484,8 @@ fn generate_command(
let armored = String::from_utf8(cert.armored().to_vec()?)?; let armored = String::from_utf8(cert.armored().to_vec()?)?;
output.public_key(armored); output.public_key(armored);
// Write armored certificate to the output file (or stdout) // Write armored certificate to the output file
let mut handle = util::open_or_stdout(cmd.output_file.as_deref())?; let mut handle = util::open_or_stdout(Some(&cmd.output_file))?;
handle.write_all(output.print(output_format, output_version)?.as_bytes())?; handle.write_all(output.print(output_format, output_version)?.as_bytes())?;
let _ = handle.write(b"\n")?; let _ = handle.write(b"\n")?;