ppvss 0.0.1-alpha

An implmentation of Pre-constructed Publicly Verifiable Secret Sharing
Documentation
use age::{Decryptor, Encryptor, x25519};
use ppvss::{KeyPair, PPVSS, Party};

use num_bigint::BigUint;
use std::fmt::format;
use std::fs;
use std::io::{Read, Write};
use std::path::Path;
fn main() {
    let N: u8 = 5;
    let T: u8 = 3;

    // Gnerating new kepairs and storing them, this step can be done before running this
    //
    for i in 0..N as usize {
        let kp = KeyPair::generate();
        //let _ = kp.save_private_key("./_1.sk");
        let _ = kp.save_private_key(format! {"./examples/asder/pvt/_{}.sk",i});
        let _ = kp.save_public_key(format! {"./examples/asder/pub/_{}.pk",i});
    }
    //Creating parties with public keys and empty shares
    let mut parties = vec![];
    for i in 0..N as usize {
        parties.push(Party::new(format! {"./examples/asder/pub/_{}.pk",i})); // do error handling here
    }

    //let mut parties = vec![
    //    Party::new(format!{"./examples/asder/pub/_{}.pk",0}),
    //    Party::new(format!{"./examples/asder/pub/_{}.pk",1}),
    //    Party::new(format!{"./examples/asder/pub/_{}.pk",2}),
    //    Party::new(format!{"./examples/asder/pub/_{}.pk",3}),
    //    Party::new(format!{"./examples/asder/pub/_{}.pk",4}),
    //    ]; // do error handling here

    //for i in 0..N as usize {
    //println!("{}",parties[i].public_key_string());
    //}

    let ppvss_instance = PPVSS::new(N, T, parties).unwrap();
    let message = BigUint::from(234324u32);
    let (shares, proof) = ppvss_instance.share(message);

    for i in 0..N as usize {
        println!("Share -> {} {}\n", i, shares[i].y());
    }
    println!("{}", proof);

    // Reconstruction
    let mut vec_kp = vec![];
    for i in 0..2 as usize {
        vec_kp.push(
            KeyPair::load_from_private_key(format! {"./examples/asder/pvt/_{}.sk",i}).unwrap(),
        );
    }
    let recon_msg = ppvss_instance.reconstruct(shares, vec_kp).unwrap();

    println!("{}", recon_msg);
}