use std::fmt::Write;
use crate::{CliResult, output::Report};
pub const SECRET_KEY_BASE: &str = "SECRET_KEY_BASE";
pub fn generate() -> String {
let mut bytes = [0u8; 64];
getrandom::fill(&mut bytes).expect("the OS random number generator is available");
let mut hex = String::with_capacity(bytes.len() * 2);
for byte in bytes {
write!(hex, "{byte:02x}").expect("writing to a String cannot fail");
}
hex
}
pub fn run() -> CliResult {
Ok(Report { secret: Some(generate()), ..Report::new("secret") })
}
pub fn push_keys() -> CliResult {
let keys = ocre::push::VapidKeys::generate();
let vapid = serde_json::json!({ "public_key": keys.public_key, "private_key": keys.private_key });
Ok(Report { vapid: Some(vapid), ..Report::new("push-keys") })
}