From c0b9723b3d4bed54048abc972225dce1c10c173c Mon Sep 17 00:00:00 2001 From: Renovate Bot Date: Mon, 29 Apr 2024 10:35:16 +0000 Subject: [PATCH 01/19] Update Rust crate getrandom to 0.2.14 --- Cargo.lock | 8 ++++---- crates/lox-wasm/Cargo.toml | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index bc85f68..0a99026 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -727,9 +727,9 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.2.12" +version = "0.2.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "190092ea657667030ac6a35e305e62fc4dd69fd98ac98631e5d3a2b1575a12b5" +checksum = "94b22e06ecb0110981051723910cbf0b5f5e09a2062dd7663334ee79a9d1286c" dependencies = [ "cfg-if", "js-sys", @@ -1091,7 +1091,7 @@ version = "0.1.0" dependencies = [ "chrono", "console_error_panic_hook", - "getrandom 0.2.12", + "getrandom 0.2.14", "js-sys", "julianday", "lazy_static", @@ -1626,7 +1626,7 @@ version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" dependencies = [ - "getrandom 0.2.12", + "getrandom 0.2.14", ] [[package]] diff --git a/crates/lox-wasm/Cargo.toml b/crates/lox-wasm/Cargo.toml index e84e5c8..c895483 100644 --- a/crates/lox-wasm/Cargo.toml +++ b/crates/lox-wasm/Cargo.toml @@ -15,7 +15,7 @@ readme = "README.md" crate-type = ["cdylib"] [dependencies] -getrandom = { version = "0.2", features = ["js"] } +getrandom = { version = "0.2.14", features = ["js"] } julianday = "1.2.0" lazy_static = "1.4.0" lox-library = { path = "../lox-library", version = "0.1.0" } From 79df7eb8c8d9882b3f920ac67c04baf295e84e8e Mon Sep 17 00:00:00 2001 From: Renovate Bot Date: Mon, 29 Apr 2024 10:35:21 +0000 Subject: [PATCH 02/19] Update Rust crate lazy_static to 1.4.0 --- crates/lox-library/Cargo.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/crates/lox-library/Cargo.toml b/crates/lox-library/Cargo.toml index 9d75bb1..d681932 100644 --- a/crates/lox-library/Cargo.toml +++ b/crates/lox-library/Cargo.toml @@ -23,7 +23,7 @@ serde = "1.0.197" serde_with = {version = "3.7.0", features = ["json"]} sha2 = "0.10" statistical = "1.0.0" -lazy_static = "1" +lazy_static = "1.4.0" hex_fmt = "0.3" aes-gcm = { version = "0.10", features =["aes"]} base64 = "0.22.0" From a9fd4ef86719b095969ece56234bcdb803f37157 Mon Sep 17 00:00:00 2001 From: Renovate Bot Date: Tue, 30 Apr 2024 09:08:38 +0000 Subject: [PATCH 03/19] Update Rust crate wasm-bindgen to 0.2.92 --- crates/lox-wasm/Cargo.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/crates/lox-wasm/Cargo.toml b/crates/lox-wasm/Cargo.toml index c895483..4c1516f 100644 --- a/crates/lox-wasm/Cargo.toml +++ b/crates/lox-wasm/Cargo.toml @@ -20,7 +20,7 @@ julianday = "1.2.0" lazy_static = "1.4.0" lox-library = { path = "../lox-library", version = "0.1.0" } lox_utils = { path = "../lox-utils", version = "0.1.0" } -wasm-bindgen = "0.2" +wasm-bindgen = "0.2.92" time = "0.3.36" serde_json = "1.0.113" From 04b3e2d2fa61220089be3bc575a9c140bb865860 Mon Sep 17 00:00:00 2001 From: Renovate Bot Date: Sat, 4 May 2024 13:50:57 +0000 Subject: [PATCH 04/19] Update Rust crate serde_json to v1.0.116 --- Cargo.lock | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 0a99026..f549ec2 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1897,9 +1897,9 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.113" +version = "1.0.116" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "69801b70b1c3dac963ecb03a364ba0ceda9cf60c71cfe475e99864759c8b8a79" +checksum = "3e17db7126d17feb94eb3fad46bf1a96b034e8aacbc2e775fe81505f8b0b2813" dependencies = [ "itoa", "ryu", From 00aeace98a81ab7fbe98a766dd9aea8f08367784 Mon Sep 17 00:00:00 2001 From: Renovate Bot Date: Sat, 4 May 2024 14:05:18 +0000 Subject: [PATCH 05/19] Update Rust crate serde_with to v3.8.1 --- Cargo.lock | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 0a99026..89b12d9 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1920,11 +1920,11 @@ dependencies = [ [[package]] name = "serde_with" -version = "3.7.0" +version = "3.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee80b0e361bbf88fd2f6e242ccd19cfda072cb0faa6ae694ecee08199938569a" +checksum = "0ad483d2ab0149d5a5ebcd9972a3852711e0153d863bf5a5d0391d28883c4a20" dependencies = [ - "base64 0.21.7", + "base64 0.22.0", "chrono", "hex", "indexmap 1.9.3", @@ -1938,9 +1938,9 @@ dependencies = [ [[package]] name = "serde_with_macros" -version = "3.7.0" +version = "3.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6561dc161a9224638a31d876ccdfefbc1df91d3f3a8342eddb35f055d48c7655" +checksum = "65569b702f41443e8bc8bbb1c5779bd0450bbe723b56198980e80ec45780bce2" dependencies = [ "darling", "proc-macro2", From 37be8d0468f166a43d7c1231d6032e5a317a73dd Mon Sep 17 00:00:00 2001 From: Renovate Bot Date: Mon, 6 May 2024 13:04:52 +0000 Subject: [PATCH 06/19] Update Rust crate getrandom to v0.2.15 --- Cargo.lock | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 9db1f12..90cd060 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -727,9 +727,9 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.2.14" +version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94b22e06ecb0110981051723910cbf0b5f5e09a2062dd7663334ee79a9d1286c" +checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" dependencies = [ "cfg-if", "js-sys", @@ -1006,9 +1006,9 @@ checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" [[package]] name = "libc" -version = "0.2.153" +version = "0.2.154" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c198f91728a82281a64e1f4f9eeb25d82cb32a5de251c6bd1b5154d63a8e7bd" +checksum = "ae743338b92ff9146ce83992f766a31066a91a8c84a45e0e9f21e7cf6de6d346" [[package]] name = "linux-raw-sys" @@ -1091,7 +1091,7 @@ version = "0.1.0" dependencies = [ "chrono", "console_error_panic_hook", - "getrandom 0.2.14", + "getrandom 0.2.15", "js-sys", "julianday", "lazy_static", @@ -1626,7 +1626,7 @@ version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" dependencies = [ - "getrandom 0.2.14", + "getrandom 0.2.15", ] [[package]] From 9e7a43da644ccdaaf5bc094d77584e959cd2366d Mon Sep 17 00:00:00 2001 From: Renovate Bot Date: Mon, 6 May 2024 10:35:22 +0000 Subject: [PATCH 07/19] Update Rust crate tokio-util to v0.7.11 --- Cargo.lock | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 90cd060..fc0314d 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2236,16 +2236,15 @@ dependencies = [ [[package]] name = "tokio-util" -version = "0.7.10" +version = "0.7.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5419f34732d9eb6ee4c3578b7989078579b7f039cbbb9ca2c4da015749371e15" +checksum = "9cf6b47b3771c49ac75ad09a6162f53ad4b8088b76ac60e8ec1455b31a189fe1" dependencies = [ "bytes", "futures-core", "futures-sink", "pin-project-lite", "tokio", - "tracing", ] [[package]] From 329733f2286cc017195f8e51b7ae595ba263a99c Mon Sep 17 00:00:00 2001 From: Renovate Bot Date: Mon, 6 May 2024 15:08:25 +0000 Subject: [PATCH 08/19] Update Rust crate serde to v1.0.200 Signed-off-by: Cecylia Bocovich --- Cargo.lock | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index fc0314d..3a34f37 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1877,18 +1877,18 @@ checksum = "b97ed7a9823b74f99c7742f5336af7be5ecd3eeafcb1507d1fa93347b1d589b0" [[package]] name = "serde" -version = "1.0.197" +version = "1.0.200" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fb1c873e1b9b056a4dc4c0c198b24c3ffa059243875552b2bd0933b1aee4ce2" +checksum = "ddc6f9cc94d67c0e21aaf7eda3a010fd3af78ebf6e096aa6e2e13c79749cce4f" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.197" +version = "1.0.200" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7eb0b34b42edc17f6b7cac84a52a1c5f0e1bb2227e997ca9011ea3dd34e8610b" +checksum = "856f046b9400cee3c8c94ed572ecdb752444c24528c035cd35882aad6f492bcb" dependencies = [ "proc-macro2", "quote", From ffb4fd282fcf62f9500560247049978f53b90522 Mon Sep 17 00:00:00 2001 From: Renovate Bot Date: Mon, 6 May 2024 15:08:07 +0000 Subject: [PATCH 09/19] Update Rust crate base64 to v0.22.1 Signed-off-by: Cecylia Bocovich --- Cargo.lock | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 3a34f37..4a3aecd 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -153,9 +153,9 @@ checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" [[package]] name = "base64" -version = "0.22.0" +version = "0.22.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9475866fec1451be56a3c2400fd081ff546538961565ccb5b7142cbd22bc7a51" +checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" [[package]] name = "base64ct" @@ -1036,7 +1036,7 @@ checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f" name = "lox-distributor" version = "0.1.0" dependencies = [ - "base64 0.22.0", + "base64 0.22.1", "chrono", "clap", "futures", @@ -1066,7 +1066,7 @@ name = "lox-library" version = "0.1.0" dependencies = [ "aes-gcm", - "base64 0.22.0", + "base64 0.22.1", "bincode", "chrono", "curve25519-dalek", @@ -1121,7 +1121,7 @@ dependencies = [ name = "lox_utils" version = "0.1.0" dependencies = [ - "base64 0.22.0", + "base64 0.22.1", "chrono", "lox-library", "rand 0.8.5", @@ -1924,7 +1924,7 @@ version = "3.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0ad483d2ab0149d5a5ebcd9972a3852711e0153d863bf5a5d0391d28883c4a20" dependencies = [ - "base64 0.22.0", + "base64 0.22.1", "chrono", "hex", "indexmap 1.9.3", From 6e9e57732695d503a5dcb626bc9df221282bdd0d Mon Sep 17 00:00:00 2001 From: Renovate Bot Date: Mon, 6 May 2024 15:08:30 +0000 Subject: [PATCH 10/19] Update Rust crate bytes to v1.6.0 Signed-off-by: Cecylia Bocovich --- Cargo.lock | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 4a3aecd..20e9ea9 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -207,9 +207,9 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "bytes" -version = "1.5.0" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2bd12c1caf447e69cd4528f47f94d203fd2582878ecb9e9465484c4148a8223" +checksum = "514de17de45fdb8dc022b1a7975556c53c86f9f0aa5f534b98977b171857c2c9" [[package]] name = "cc" From 04a7937ff0b676fa91ebe38776bd5d43aa5a60cc Mon Sep 17 00:00:00 2001 From: Renovate Bot Date: Mon, 6 May 2024 15:08:49 +0000 Subject: [PATCH 11/19] Update Rust crate tokio to v1.37.0 Signed-off-by: Cecylia Bocovich --- Cargo.lock | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 20e9ea9..b77240f 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2185,9 +2185,9 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.36.0" +version = "1.37.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61285f6515fa018fb2d1e46eb21223fff441ee8db5d0f1435e8ab4f5cdb80931" +checksum = "1adbebffeca75fcfd058afa480fb6c0b81e165a0323f9c9d39c9697e37c46787" dependencies = [ "backtrace", "bytes", From 21500d9758ec38df567452fd13a938b19e6e1945 Mon Sep 17 00:00:00 2001 From: Renovate Bot Date: Mon, 6 May 2024 15:08:14 +0000 Subject: [PATCH 12/19] Update Rust crate prometheus to v0.13.4 Signed-off-by: Cecylia Bocovich --- Cargo.lock | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index b77240f..38305b8 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1472,9 +1472,9 @@ dependencies = [ [[package]] name = "prometheus" -version = "0.13.3" +version = "0.13.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "449811d15fbdf5ceb5c1144416066429cf82316e2ec8ce0c1f6f8a02e7bbcf8c" +checksum = "3d33c28a30771f7f96db69893f78b857f7450d7e0237e9c8fc6427a81bae7ed1" dependencies = [ "cfg-if", "fnv", From 922f8bbaff7fa05ad639cb31a516cf91205cccc2 Mon Sep 17 00:00:00 2001 From: Renovate Bot Date: Tue, 7 May 2024 02:35:02 +0000 Subject: [PATCH 13/19] Update Rust crate thiserror to v1.0.60 Signed-off-by: Cecylia Bocovich --- Cargo.lock | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 38305b8..b81ea90 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2119,18 +2119,18 @@ dependencies = [ [[package]] name = "thiserror" -version = "1.0.59" +version = "1.0.60" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0126ad08bff79f29fc3ae6a55cc72352056dfff61e3ff8bb7129476d44b23aa" +checksum = "579e9083ca58dd9dcf91a9923bb9054071b9ebbd800b342194c9feb0ee89fc18" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.59" +version = "1.0.60" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d1cd413b5d558b4c5bf3680e324a6fa5014e7b7c067a51e69dbdf47eb7148b66" +checksum = "e2470041c06ec3ac1ab38d0356a6119054dedaea53e12fbefc0de730a1c08524" dependencies = [ "proc-macro2", "quote", From fd18b1ec8c824d6d09b6f8f90adb2054226961b0 Mon Sep 17 00:00:00 2001 From: Renovate Bot Date: Wed, 8 May 2024 00:34:49 +0000 Subject: [PATCH 14/19] Update Rust crate serde to v1.0.201 --- Cargo.lock | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index b81ea90..f0f092b 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1877,18 +1877,18 @@ checksum = "b97ed7a9823b74f99c7742f5336af7be5ecd3eeafcb1507d1fa93347b1d589b0" [[package]] name = "serde" -version = "1.0.200" +version = "1.0.201" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ddc6f9cc94d67c0e21aaf7eda3a010fd3af78ebf6e096aa6e2e13c79749cce4f" +checksum = "780f1cebed1629e4753a1a38a3c72d30b97ec044f0aef68cb26650a3c5cf363c" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.200" +version = "1.0.201" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "856f046b9400cee3c8c94ed572ecdb752444c24528c035cd35882aad6f492bcb" +checksum = "c5e405930b9796f1c00bee880d03fc7e0bb4b9a11afc776885ffe84320da2865" dependencies = [ "proc-macro2", "quote", From 005957795cf229765ef3e23b74951a88d65ca099 Mon Sep 17 00:00:00 2001 From: Renovate Bot Date: Wed, 8 May 2024 11:10:06 +0000 Subject: [PATCH 15/19] Update Rust crate serde_json to v1.0.117 Signed-off-by: Cecylia Bocovich --- Cargo.lock | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index f0f092b..556bfc2 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1897,9 +1897,9 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.116" +version = "1.0.117" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e17db7126d17feb94eb3fad46bf1a96b034e8aacbc2e775fe81505f8b0b2813" +checksum = "455182ea6142b14f93f4bc5320a2b31c1f266b66a4a5c858b013302a5d8cbfc3" dependencies = [ "itoa", "ryu", From 47e0cf9f6950575bf54673288b008e96d54dde94 Mon Sep 17 00:00:00 2001 From: Vecna Date: Sun, 26 May 2024 11:34:44 -0400 Subject: [PATCH 16/19] Demo blockage migration from level 4 cred failing --- crates/lox-library/src/tests.rs | 28 ++++++++++++++++++++++------ 1 file changed, 22 insertions(+), 6 deletions(-) diff --git a/crates/lox-library/src/tests.rs b/crates/lox-library/src/tests.rs index e4c683c..d7ee36a 100644 --- a/crates/lox-library/src/tests.rs +++ b/crates/lox-library/src/tests.rs @@ -1363,8 +1363,25 @@ fn test_blockage_migration() { println!("cred3 = {:?}", cred3); assert!(th.ba.verify_lox(&cred3)); + // If true, level up one more time, causing blockage migration to fail + let migrate_from_level_4 = false; + + let cred4 = if migrate_from_level_4 { + // Time passes + th.advance_days(56); + + // Go up to level 4 + let (_four_perf_stat, cred4) = th.level_up(&cred3); + assert!(scalar_u32(&cred4.trust_level).unwrap() == 4); + println!("cred4 = {:?}", cred4); + assert!(th.ba.verify_lox(&cred4)); + cred4 + } else { + cred3 + }; + // Get our bridges - let (id, key) = bridge_table::from_scalar(cred3.bucket).unwrap(); + let (id, key) = bridge_table::from_scalar(cred4.bucket).unwrap(); let encbuckets = th.ba.enc_bridge_table(); let bucket = bridge_table::BridgeTable::decrypt_bucket(id, &key, encbuckets.get(&id).unwrap()).unwrap(); @@ -1382,7 +1399,6 @@ fn test_blockage_migration() { // Time passes th.advance_days(1); - let encbuckets2 = th.ba.enc_bridge_table(); let bucket2 = bridge_table::BridgeTable::decrypt_bucket(id, &key, encbuckets2.get(&id).unwrap()).unwrap(); @@ -1390,15 +1406,15 @@ fn test_blockage_migration() { assert!(bucket2.1.is_none()); // See about getting a Migration credential for the blockage - let (_block_perf_stat, migration) = th.check_blockage(&cred3); + let (_block_perf_stat, migration) = th.check_blockage(&cred4); println!("migration = {:?}", migration); // Migrate - let (_four_perf_stat, cred4) = th.blockage_migration(&cred3, &migration); + let (_five_perf_stat, cred5) = th.blockage_migration(&cred4, &migration); - println!("cred4 = {:?}", cred4); - assert!(th.ba.verify_lox(&cred4)); + println!("cred5 = {:?}", cred5); + assert!(th.ba.verify_lox(&cred5)); } fn print_test_results(perf_stat: PerfStat) { From 59358787ebb897f446cb412d137001bc55e97329 Mon Sep 17 00:00:00 2001 From: Vecna Date: Sun, 26 May 2024 12:55:51 -0400 Subject: [PATCH 17/19] Break into two tests --- crates/lox-library/src/tests.rs | 92 +++++++++++++++++++++++++++------ 1 file changed, 77 insertions(+), 15 deletions(-) diff --git a/crates/lox-library/src/tests.rs b/crates/lox-library/src/tests.rs index d7ee36a..061af14 100644 --- a/crates/lox-library/src/tests.rs +++ b/crates/lox-library/src/tests.rs @@ -1331,7 +1331,7 @@ fn test_mark_unreachable() { } #[test] -fn test_blockage_migration() { +fn test_blockage_migration_level_3() { let mut th = TestHarness::new(); // Join an untrusted user @@ -1363,22 +1363,84 @@ fn test_blockage_migration() { println!("cred3 = {:?}", cred3); assert!(th.ba.verify_lox(&cred3)); - // If true, level up one more time, causing blockage migration to fail - let migrate_from_level_4 = false; + // Get our bridges + let (id, key) = bridge_table::from_scalar(cred3.bucket).unwrap(); + let encbuckets = th.ba.enc_bridge_table(); + let bucket = + bridge_table::BridgeTable::decrypt_bucket(id, &key, encbuckets.get(&id).unwrap()).unwrap(); + // We should have a Bridge Reachability credential + assert!(bucket.1.is_some()); - let cred4 = if migrate_from_level_4 { - // Time passes - th.advance_days(56); + // Oh, no! Two of our bridges are blocked! + th.ba.bridge_blocked(&bucket.0[0], &mut th.bdb); + th.ba.bridge_blocked(&bucket.0[2], &mut th.bdb); - // Go up to level 4 - let (_four_perf_stat, cred4) = th.level_up(&cred3); - assert!(scalar_u32(&cred4.trust_level).unwrap() == 4); - println!("cred4 = {:?}", cred4); - assert!(th.ba.verify_lox(&cred4)); - cred4 - } else { - cred3 - }; + println!("spares = {:?}", th.ba.bridge_table.spares); + println!("tmig = {:?}", th.ba.trustup_migration_table.table); + println!("bmig = {:?}", th.ba.blockage_migration_table.table); + println!("openinv = {:?}\n", th.bdb.openinv_buckets); + + // Time passes + th.advance_days(1); + let encbuckets2 = th.ba.enc_bridge_table(); + let bucket2 = + bridge_table::BridgeTable::decrypt_bucket(id, &key, encbuckets2.get(&id).unwrap()).unwrap(); + // We should no longer have a Bridge Reachability credential + assert!(bucket2.1.is_none()); + + // See about getting a Migration credential for the blockage + let (_block_perf_stat, migration) = th.check_blockage(&cred3); + + println!("migration = {:?}", migration); + + // Migrate + let (_four_perf_stat, cred4) = th.blockage_migration(&cred3, &migration); + + println!("cred4 = {:?}", cred4); + assert!(th.ba.verify_lox(&cred4)); +} + +#[test] +fn test_blockage_migration_level_4() { + let mut th = TestHarness::new(); + + // Join an untrusted user + let cred = th.open_invite().1 .0; + + // Time passes + th.advance_days(47); + + // Go up to level 1 + let (_mperf_stat, migcred) = th.trust_promotion(&cred); + let (_perf_stat, cred1) = th.level0_migration(&cred, &migcred); + assert!(scalar_u32(&cred1.trust_level).unwrap() == 1); + + // Time passes + th.advance_days(20); + + // Go up to level 2 + let (_two_perf_stat, cred2) = th.level_up(&cred1); + assert!(scalar_u32(&cred2.trust_level).unwrap() == 2); + println!("cred2 = {:?}", cred2); + assert!(th.ba.verify_lox(&cred2)); + + // Time passes + th.advance_days(29); + + // Go up to level 3 + let (_three_perf_stat, cred3) = th.level_up(&cred2); + assert!(scalar_u32(&cred3.trust_level).unwrap() == 3); + println!("cred3 = {:?}", cred3); + assert!(th.ba.verify_lox(&cred3)); + + // Time passes + th.advance_days(56); + + // Go up to level 4 + let (_four_perf_stat, cred4) = th.level_up(&cred3); + assert!(scalar_u32(&cred4.trust_level).unwrap() == 4); + println!("cred4 = {:?}", cred4); + assert!(th.ba.verify_lox(&cred4)); // Get our bridges let (id, key) = bridge_table::from_scalar(cred4.bucket).unwrap(); From 3bd99e9fbd823b44c1ba078a8a8b870431fb16b6 Mon Sep 17 00:00:00 2001 From: Vecna Date: Sun, 26 May 2024 14:07:14 -0400 Subject: [PATCH 18/19] Encrypt invites_remaining during blockage migration Reverts ed72b05347931d6824df5ab9aece493cdc88ce2c --- .../src/proto/blockage_migration.rs | 44 ++++++++++++++++--- 1 file changed, 37 insertions(+), 7 deletions(-) diff --git a/crates/lox-library/src/proto/blockage_migration.rs b/crates/lox-library/src/proto/blockage_migration.rs index 043aec8..4829479 100644 --- a/crates/lox-library/src/proto/blockage_migration.rs +++ b/crates/lox-library/src/proto/blockage_migration.rs @@ -104,9 +104,11 @@ pub struct Response { // The fields for the new Lox credential P: RistrettoPoint, EncQ: (RistrettoPoint, RistrettoPoint), + EncInvRemain: (RistrettoPoint, RistrettoPoint), id_server: Scalar, TId: RistrettoPoint, TBucket: RistrettoPoint, + TInvRemain: RistrettoPoint, TBlockages: RistrettoPoint, // The lox_zkp @@ -153,10 +155,11 @@ define_proof! { blindissue, "Blockage Migration Blind Issuing", (x0, x0tilde, xid, xbucket, xlevel, xsince, xinvremain, xblockages, - s, b, tid, tbucket, tblockages), + s, b, tid, tbucket, tinvremain, tblockages), (P, EncQ0, EncQ1, X0, Xid, Xbucket, Xlevel, Xsince, Xinvremain, - Xblockages, Plevel, Psince, Pinvremain, TId, TBucket, TBlockages, - D, EncId0, EncId1, EncBucket0, EncBucket1, EncBlockages0, EncBlockages1), + Xblockages, Plevel, Psince, TId, TBucket, TInvRemain, TBlockages, + D, EncId0, EncId1, EncBucket0, EncBucket1, EncInvRemain0, + EncInvRemain1, EncBlockages0, EncBlockages1), (A, B): Xid = (xid*A), Xlevel = (xlevel*A), @@ -170,11 +173,15 @@ define_proof! { TId = (tid*A), TBucket = (b*Xbucket), TBucket = (tbucket*A), + TInvRemain = (b*Xinvremain), + TInvRemain = (tinvremain*A), TBlockages = (b*Xblockages), TBlockages = (tblockages*A), EncQ0 = (s*B + tid*EncId0 + tbucket*EncBucket0 + + tinvremain*EncInvRemain0 + tblockages*EncBlockages0), EncQ1 = (s*D + tid*EncId1 + tbucket*EncBucket1 + + tinvremain*EncInvRemain1 + tblockages*EncBlockages1 + x0*P + xlevel*Plevel + xsince*Psince) } @@ -487,6 +494,12 @@ impl BridgeAuth { // invitations for moving from level i to level i+1) let invremain: Scalar = LEVEL_INVITATIONS[(level - 3) as usize].into(); + let sinvremain = Scalar::random(&mut rng); + let EncInvRemain = ( + &sinvremain * Btable, + &invremain * Btable + sinvremain * req.D, + ); + // Compute the MAC on the visible attributes let b = Scalar::random(&mut rng); let P = &b * Btable; @@ -507,6 +520,9 @@ impl BridgeAuth { let tbucket = self.lox_priv.x[2] * b; let TBucket = &tbucket * Atable; let EncQBucket = (tbucket * req.EncBucket.0, tbucket * req.EncBucket.1); + let tinvremain = self.lox_priv.x[5] * b; + let TInvRemain = &tinvremain * Atable; + let EncQInvRemain = (tinvremain * EncInvRemain.0, tinvremain * EncInvRemain.1); let tblockages = self.lox_priv.x[6] * b; let TBlockages = &tblockages * Atable; let EncQBlockages = ( @@ -515,8 +531,8 @@ impl BridgeAuth { ); let EncQ = ( - EncQHc.0 + EncQId.0 + EncQBucket.0 + EncQBlockages.0, - EncQHc.1 + EncQId.1 + EncQBucket.1 + EncQBlockages.1, + EncQHc.0 + EncQId.0 + EncQBucket.0 + EncQInvRemain.0 + EncQBlockages.0, + EncQHc.1 + EncQId.1 + EncQBucket.1 + EncQInvRemain.1 + EncQBlockages.1, ); let mut transcript = Transcript::new(b"blockage migration issuing"); @@ -537,15 +553,17 @@ impl BridgeAuth { Xblockages: &self.lox_pub.X[6], Plevel: &(trust_level * P), Psince: &(level_since * P), - Pinvremain: &(invremain * P), TId: &TId, TBucket: &TBucket, + TInvRemain: &TInvRemain, TBlockages: &TBlockages, D: &req.D, EncId0: &EncId.0, EncId1: &EncId.1, EncBucket0: &req.EncBucket.0, EncBucket1: &req.EncBucket.1, + EncInvRemain0: &EncInvRemain.0, + EncInvRemain1: &EncInvRemain.1, EncBlockages0: &req.EncBlockages.0, EncBlockages1: &req.EncBlockages.1, x0: &self.lox_priv.x[0], @@ -560,6 +578,7 @@ impl BridgeAuth { b: &b, tid: &tid, tbucket: &tbucket, + tinvremain: &tinvremain, tblockages: &tblockages, }, ) @@ -569,9 +588,11 @@ impl BridgeAuth { level_since, P, EncQ, + EncInvRemain, id_server, TId, TBucket, + TInvRemain, TBlockages, piBlindIssue, }) @@ -613,6 +634,13 @@ pub fn handle_response( // moving from level i to level i+1) let invremain: Scalar = LEVEL_INVITATIONS[(new_level - 1) as usize].into(); + // Decrypt EncInvRemain + let recv_invremain = resp.EncInvRemain.1 - (state.d * resp.EncInvRemain.0); + + if recv_invremain != &invremain * Btable { + return Err(ProofError::VerificationFailure); + } + // Verify the proof let mut transcript = Transcript::new(b"blockage migration issuing"); blindissue::verify_compact( @@ -633,15 +661,17 @@ pub fn handle_response( Xblockages: &lox_pub.X[6].compress(), Plevel: &(state.trust_level * resp.P).compress(), Psince: &(resp.level_since * resp.P).compress(), - Pinvremain: &(invremain * resp.P).compress(), TId: &resp.TId.compress(), TBucket: &resp.TBucket.compress(), + TInvRemain: &resp.TInvRemain.compress(), TBlockages: &resp.TBlockages.compress(), D: &state.D.compress(), EncId0: &EncId.0.compress(), EncId1: &EncId.1.compress(), EncBucket0: &state.EncBucket.0.compress(), EncBucket1: &state.EncBucket.1.compress(), + EncInvRemain0: &resp.EncInvRemain.0.compress(), + EncInvRemain1: &resp.EncInvRemain.1.compress(), EncBlockages0: &state.EncBlockages.0.compress(), EncBlockages1: &state.EncBlockages.1.compress(), }, From 1864f0ca83f581e23cae5582d16c36eb4c9d1c29 Mon Sep 17 00:00:00 2001 From: Vecna Date: Sun, 26 May 2024 14:10:38 -0400 Subject: [PATCH 19/19] Re-merge tests, test going from levels 4 -> 2 -> 3 -> 1 --- crates/lox-library/src/tests.rs | 119 +++++++++++++------------------- 1 file changed, 48 insertions(+), 71 deletions(-) diff --git a/crates/lox-library/src/tests.rs b/crates/lox-library/src/tests.rs index 061af14..59b5330 100644 --- a/crates/lox-library/src/tests.rs +++ b/crates/lox-library/src/tests.rs @@ -1331,77 +1331,7 @@ fn test_mark_unreachable() { } #[test] -fn test_blockage_migration_level_3() { - let mut th = TestHarness::new(); - - // Join an untrusted user - let cred = th.open_invite().1 .0; - - // Time passes - th.advance_days(47); - - // Go up to level 1 - let (_mperf_stat, migcred) = th.trust_promotion(&cred); - let (_perf_stat, cred1) = th.level0_migration(&cred, &migcred); - assert!(scalar_u32(&cred1.trust_level).unwrap() == 1); - - // Time passes - th.advance_days(20); - - // Go up to level 2 - let (_two_perf_stat, cred2) = th.level_up(&cred1); - assert!(scalar_u32(&cred2.trust_level).unwrap() == 2); - println!("cred2 = {:?}", cred2); - assert!(th.ba.verify_lox(&cred2)); - - // Time passes - th.advance_days(29); - - // Go up to level 3 - let (_three_perf_stat, cred3) = th.level_up(&cred2); - assert!(scalar_u32(&cred3.trust_level).unwrap() == 3); - println!("cred3 = {:?}", cred3); - assert!(th.ba.verify_lox(&cred3)); - - // Get our bridges - let (id, key) = bridge_table::from_scalar(cred3.bucket).unwrap(); - let encbuckets = th.ba.enc_bridge_table(); - let bucket = - bridge_table::BridgeTable::decrypt_bucket(id, &key, encbuckets.get(&id).unwrap()).unwrap(); - // We should have a Bridge Reachability credential - assert!(bucket.1.is_some()); - - // Oh, no! Two of our bridges are blocked! - th.ba.bridge_blocked(&bucket.0[0], &mut th.bdb); - th.ba.bridge_blocked(&bucket.0[2], &mut th.bdb); - - println!("spares = {:?}", th.ba.bridge_table.spares); - println!("tmig = {:?}", th.ba.trustup_migration_table.table); - println!("bmig = {:?}", th.ba.blockage_migration_table.table); - println!("openinv = {:?}\n", th.bdb.openinv_buckets); - - // Time passes - th.advance_days(1); - let encbuckets2 = th.ba.enc_bridge_table(); - let bucket2 = - bridge_table::BridgeTable::decrypt_bucket(id, &key, encbuckets2.get(&id).unwrap()).unwrap(); - // We should no longer have a Bridge Reachability credential - assert!(bucket2.1.is_none()); - - // See about getting a Migration credential for the blockage - let (_block_perf_stat, migration) = th.check_blockage(&cred3); - - println!("migration = {:?}", migration); - - // Migrate - let (_four_perf_stat, cred4) = th.blockage_migration(&cred3, &migration); - - println!("cred4 = {:?}", cred4); - assert!(th.ba.verify_lox(&cred4)); -} - -#[test] -fn test_blockage_migration_level_4() { +fn test_blockage_migration() { let mut th = TestHarness::new(); // Join an untrusted user @@ -1475,8 +1405,55 @@ fn test_blockage_migration_level_4() { // Migrate let (_five_perf_stat, cred5) = th.blockage_migration(&cred4, &migration); + assert!(scalar_u32(&cred5.trust_level).unwrap() == 2); println!("cred5 = {:?}", cred5); assert!(th.ba.verify_lox(&cred5)); + + // Time passes + th.advance_days(29); + + // Go up to level 3 + let (_six_perf_stat, cred6) = th.level_up(&cred5); + assert!(scalar_u32(&cred6.trust_level).unwrap() == 3); + println!("cred6 = {:?}", cred6); + assert!(th.ba.verify_lox(&cred6)); + + // Get our bridges + let (id, key) = bridge_table::from_scalar(cred6.bucket).unwrap(); + let encbuckets = th.ba.enc_bridge_table(); + let bucket = + bridge_table::BridgeTable::decrypt_bucket(id, &key, encbuckets.get(&id).unwrap()).unwrap(); + // We should have a Bridge Reachability credential + assert!(bucket.1.is_some()); + + // Oh, no! Two of our bridges are blocked! + th.ba.bridge_blocked(&bucket.0[1], &mut th.bdb); + th.ba.bridge_blocked(&bucket.0[2], &mut th.bdb); + + println!("spares = {:?}", th.ba.bridge_table.spares); + println!("tmig = {:?}", th.ba.trustup_migration_table.table); + println!("bmig = {:?}", th.ba.blockage_migration_table.table); + println!("openinv = {:?}\n", th.bdb.openinv_buckets); + + // Time passes + th.advance_days(1); + let encbuckets2 = th.ba.enc_bridge_table(); + let bucket2 = + bridge_table::BridgeTable::decrypt_bucket(id, &key, encbuckets2.get(&id).unwrap()).unwrap(); + // We should no longer have a Bridge Reachability credential + assert!(bucket2.1.is_none()); + + // See about getting a Migration credential for the blockage + let (_block_perf_stat, migration) = th.check_blockage(&cred6); + + println!("migration = {:?}", migration); + + // Migrate + let (_seven_perf_stat, cred7) = th.blockage_migration(&cred6, &migration); + + assert!(scalar_u32(&cred7.trust_level).unwrap() == 1); + println!("cred7 = {:?}", cred7); + assert!(th.ba.verify_lox(&cred7)); } fn print_test_results(perf_stat: PerfStat) {