sneakerweb 1.0.1

A parallel web transported by physical media
use crate::util::{domain_style, secret_style};
use clap::Args;
use rand::rngs::OsRng;
use willow25::entry::randomly_generate_subspace;

#[derive(Args)]
pub struct DomainArgs {}

pub fn generate_domain(_args: &DomainArgs) {
    let mut csprng = OsRng;
    let (subspace_id, subspace_secret) = randomly_generate_subspace(&mut csprng);

    let b16_id = base16::encode_lower(subspace_id.as_bytes());

    let b16_secret = base16::encode_lower(subspace_secret.as_bytes());

    println!("Domain: {}", domain_style(&b16_id));
    println!("Secret: {}", secret_style(&b16_secret));
    println!(
        "{} It is the password for publishing to this domain.",
        secret_style("Keep this secret somewhere safe."),
    );
}