blob: b75a32576a1e573c0ddf769cd919503078a23fe5 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
use std::{fs::File, path::Path, io::Write};
use anyhow::Result;
use indicatif::{ProgressBar, ProgressStyle};
use openpgp::{cert::CertBuilder, serialize::Serialize};
pub fn do_generate(count: u64, output_path: &Path, fprs_path: Option<&Path>) -> Result<()> {
let progress_bar = ProgressBar::new(count);
progress_bar.set_style(
ProgressStyle::default_bar()
.template("[{elapsed_precise}] {bar:40.cyan/blue} {pos}/{len} {msg}")
.progress_chars("##-"),
);
progress_bar.set_draw_delta(count / 100);
let mut output = File::create(output_path)?;
let mut output_fprs = if let Some(p) = fprs_path {
Some(File::create(p)?)
} else {
None
};
for i in 0..count {
let (cert, _) =
CertBuilder::general_purpose(None, Some(format!("{:07}@hagrid.invalid", i)))
.generate()?;
cert.serialize(&mut output)?;
if let Some(ref mut output_fprs) = output_fprs {
writeln!(output_fprs, "{}", cert)?;
}
progress_bar.inc(1);
}
progress_bar.finish();
Ok(())
}
|