Merge branch 'nora/mandatory_generate_output' into 'main'

opgpcard: Prevent losing the generated cert.

Closes #49

See merge request openpgp-card/openpgp-card!23
This commit is contained in:
Heiko 2022-10-27 14:55:32 +00:00
commit 2fb4f3961a
2 changed files with 6 additions and 8 deletions

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")?;

View file

@ -27,10 +27,8 @@ impl AdminGenerate {
} }
fn text(&self) -> Result<String, OpgpCardError> { fn text(&self) -> Result<String, OpgpCardError> {
Ok(format!( // Do not print ident, as the file with the public_key must not contain anything else
"OpenPGP card {}\n\n{}\n", Ok(self.public_key.to_string())
self.ident, self.public_key,
))
} }
fn v1(&self) -> Result<AdminGenerateV0, OpgpCardError> { fn v1(&self) -> Result<AdminGenerateV0, OpgpCardError> {