diff --git a/crates/lox-library/src/bridge_table.rs b/crates/lox-library/src/bridge_table.rs index 98a7648..708945d 100644 --- a/crates/lox-library/src/bridge_table.rs +++ b/crates/lox-library/src/bridge_table.rs @@ -225,10 +225,9 @@ impl TryFrom> for EncryptedBucket { } } -#[derive(Serialize, Deserialize)] +#[derive(Debug, Serialize, Deserialize)] struct K { encbucket: EncryptedBucket, - vec: Vec, } @@ -340,21 +339,14 @@ impl BridgeTable { encbucket: &EncryptedBucket, ) -> Result { // Set the nonce and the key - println!("Trying to decrypt"); let k = K { encbucket: *encbucket, - vec: (0x20..0x30).collect(), }; - println!("Made EncryptedBucket"); - let nonce = GenericArray::from_slice(&k.vec[0..12]); - println!("got nonce: {:?}", nonce); + let nonce = GenericArray::from_slice(&k.encbucket.0[0..12]); let aeskey = GenericArray::from_slice(key); - println!("got aeskey: {:?}", aeskey); // Decrypt let cipher = Aes128Gcm::new(aeskey); - println!("got cipher"); - let plaintext: Vec = cipher.decrypt(nonce,k.vec[12..].as_ref())?; - println!("got plaintext {:?}", plaintext); + let plaintext: Vec = cipher.decrypt(nonce,k.encbucket.0[12..].as_ref())?; // Convert the plaintext bytes to an array of BridgeLines Ok(BridgeLine::bucket_decode( plaintext.as_slice().try_into().unwrap(), @@ -408,9 +400,7 @@ mod tests { btable.encrypt_table(today, &reachability_priv); // Try to decrypt a 1-bridge bucket let key7 = btable.keys[&7u32]; - println!("Got Key"); let bucket7 = btable.decrypt_bucket_id(7, &key7)?; - println!("Decrypted"); println!("bucket 7 = {:?}", bucket7); // Try to decrypt a 3-bridge bucket let key24 = btable.keys[&24u32]; diff --git a/crates/lox-library/src/tests.rs b/crates/lox-library/src/tests.rs index 2387e28..8297ded 100644 --- a/crates/lox-library/src/tests.rs +++ b/crates/lox-library/src/tests.rs @@ -727,7 +727,7 @@ fn test_update_bridge() { #[test] fn test_bridge_replace() { // Create 3 open invitation buckets and 3 spare buckets - let cases = vec!["not found", "available", "unallocated", "spare", "failed"]; + let cases = vec!["not found", "available", "unallocated", "failed", "spare"]; for case in cases { let mut th: TestHarness; if case != "failed" { @@ -738,7 +738,10 @@ fn test_bridge_replace() { // Randomly select a bridge to replace let table_size = th.ba.bridge_table.buckets.len(); - let num = rand::thread_rng().gen_range(0, table_size - 1) as u32; + let mut num = 100000; + while !th.ba.bridge_table.buckets.contains_key(&num) { + num = rand::thread_rng().gen_range(0, th.ba.bridge_table.counter) as u32; + }; let replaceable_bucket = th.ba.bridge_table.buckets.get(&num).unwrap().clone(); let replacement_bridge = &replaceable_bucket[0]; assert!( @@ -864,8 +867,9 @@ fn test_bridge_replace() { .is_none(), "Replacement bridge still marked as reachable" ); + // Remove a spare bucket to replace bridge, buckets decrease by 1 assert!( - table_size == th.ba.bridge_table.buckets.len(), + (table_size -1) == th.ba.bridge_table.buckets.len(), "Number of buckets changed size" ); assert!(