Use a bucket, not a single bridgeline

This commit is contained in:
Vecna 2023-09-07 14:26:45 -04:00
parent 3b1bb2a5ac
commit c17333e5c0
1 changed files with 12 additions and 7 deletions

View File

@ -7,6 +7,7 @@ use client_net::HyperNet;
use curve25519_dalek::scalar::Scalar;
use getopts::Options;
use lox_library::bridge_table::BridgeLine;
use lox_library::bridge_table::MAX_BRIDGES_PER_BUCKET;
use lox_library::IssuerPubKey;
use serde::Serialize;
use std::env::args;
@ -98,25 +99,29 @@ async fn main() {
// Get Lox Credential and BridgeLine
let lox_cred_filename = "lox_cred.json";
let bridgeline_filename = "bridgeline.json";
let (lox_cred, bridgeline) = if matches.opt_present("N")
let bucket_filename = "bucket.json";
let (lox_cred, bucket) = if matches.opt_present("N")
|| !Path::new(lox_cred_filename).exists()
|| !Path::new(bridgeline_filename).exists()
|| !Path::new(bucket_filename).exists()
{
// get new Lox Credential
let open_invite = get_open_invitation(&net).await;
let (cred, bl) =
get_lox_credential(&net, &open_invite, get_lox_pub(&lox_auth_pubkeys)).await;
let mut bucket = [BridgeLine::default(); MAX_BRIDGES_PER_BUCKET];
// note: this is a bucket with one real bridgeline and n-1
// default (zeroed out) bridgelines
bucket[0] = bl;
// save to files for next time
save_object(&cred, &lox_cred_filename);
save_object(&bl, &bridgeline_filename);
(cred, bl)
save_object(&bucket, &bucket_filename);
(cred, bucket)
} else {
// Read existing Lox Credential and BridgeLine from files
let cred = serde_json::from_reader(File::open(lox_cred_filename).unwrap()).unwrap();
let bl = serde_json::from_reader(File::open(bridgeline_filename).unwrap()).unwrap();
(cred, bl)
let bucket = serde_json::from_reader(File::open(bucket_filename).unwrap()).unwrap();
(cred, bucket)
};
let lox_cred = if matches.opt_present("L") {