All tests passing for HashMap implementation

This commit is contained in:
onyinyang 2023-06-22 16:21:06 -04:00
parent 69e4579450
commit 369d830bca
No known key found for this signature in database
GPG Key ID: 156A6435430C2036
2 changed files with 10 additions and 16 deletions

View File

@ -225,10 +225,9 @@ impl TryFrom<Vec<u8>> for EncryptedBucket {
}
}
#[derive(Serialize, Deserialize)]
#[derive(Debug, Serialize, Deserialize)]
struct K {
encbucket: EncryptedBucket,
vec: Vec<u8>,
}
@ -340,21 +339,14 @@ impl BridgeTable {
encbucket: &EncryptedBucket,
) -> Result<Bucket, aead::Error> {
// 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<u8> = cipher.decrypt(nonce,k.vec[12..].as_ref())?;
println!("got plaintext {:?}", plaintext);
let plaintext: Vec<u8> = 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];

View File

@ -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!(