use clap::Args;
use pezsp_core::H256;
use std::str::FromStr;
fn parse_kx_secret(s: &str) -> Result<pezsc_mixnet::KxSecret, String> {
H256::from_str(s).map(H256::to_fixed_bytes).map_err(|err| err.to_string())
}
#[derive(Debug, Clone, Args)]
pub struct MixnetParams {
#[arg(long)]
pub mixnet: bool,
#[arg(long, value_name = "SECRET", value_parser = parse_kx_secret)]
pub mixnet_session_0_kx_secret: Option<pezsc_mixnet::KxSecret>,
}
impl MixnetParams {
pub fn config(&self, is_authority: bool) -> Option<pezsc_mixnet::Config> {
self.mixnet.then(|| {
let mut config = pezsc_mixnet::Config {
core: pezsc_mixnet::CoreConfig {
session_0_kx_secret: self.mixnet_session_0_kx_secret,
..Default::default()
},
..Default::default()
};
if !is_authority {
config.bizinikiwi.register = false;
config.bizinikiwi.num_gateway_slots = 0;
}
config
})
}
}