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 curve25519_dalek::scalar::Scalar;
use getopts::Options; use getopts::Options;
use lox_library::bridge_table::BridgeLine; use lox_library::bridge_table::BridgeLine;
use lox_library::bridge_table::MAX_BRIDGES_PER_BUCKET;
use lox_library::IssuerPubKey; use lox_library::IssuerPubKey;
use serde::Serialize; use serde::Serialize;
use std::env::args; use std::env::args;
@ -98,25 +99,29 @@ async fn main() {
// Get Lox Credential and BridgeLine // Get Lox Credential and BridgeLine
let lox_cred_filename = "lox_cred.json"; let lox_cred_filename = "lox_cred.json";
let bridgeline_filename = "bridgeline.json"; let bucket_filename = "bucket.json";
let (lox_cred, bridgeline) = if matches.opt_present("N") let (lox_cred, bucket) = if matches.opt_present("N")
|| !Path::new(lox_cred_filename).exists() || !Path::new(lox_cred_filename).exists()
|| !Path::new(bridgeline_filename).exists() || !Path::new(bucket_filename).exists()
{ {
// get new Lox Credential // get new Lox Credential
let open_invite = get_open_invitation(&net).await; let open_invite = get_open_invitation(&net).await;
let (cred, bl) = let (cred, bl) =
get_lox_credential(&net, &open_invite, get_lox_pub(&lox_auth_pubkeys)).await; 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 to files for next time
save_object(&cred, &lox_cred_filename); save_object(&cred, &lox_cred_filename);
save_object(&bl, &bridgeline_filename); save_object(&bucket, &bucket_filename);
(cred, bl) (cred, bucket)
} else { } else {
// Read existing Lox Credential and BridgeLine from files // Read existing Lox Credential and BridgeLine from files
let cred = serde_json::from_reader(File::open(lox_cred_filename).unwrap()).unwrap(); 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(); let bucket = serde_json::from_reader(File::open(bucket_filename).unwrap()).unwrap();
(cred, bl) (cred, bucket)
}; };
let lox_cred = if matches.opt_present("L") { let lox_cred = if matches.opt_present("L") {