From 04b571b742ea08573dd5cc0b1dba9af053eb52f1 Mon Sep 17 00:00:00 2001 From: Svyatoslav Nikolsky Date: Tue, 16 Jan 2018 14:58:41 +0300 Subject: [PATCH] SecretStore: threshold decrease PoC (#7562) --- secret_store/src/key_server_cluster/math.rs | 24 +++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/secret_store/src/key_server_cluster/math.rs b/secret_store/src/key_server_cluster/math.rs index b8104c78b..85e164082 100644 --- a/secret_store/src/key_server_cluster/math.rs +++ b/secret_store/src/key_server_cluster/math.rs @@ -727,4 +727,28 @@ pub mod tests { assert_eq!(joint_secret1, joint_secret3); } } + + #[test] + fn full_generation_math_session_with_decreasing_threshold() { + let (t, n) = (3, 5); + + // generate key using t-of-n session + let artifacts1 = run_key_generation(t, n, None); + let joint_secret1 = compute_joint_secret(artifacts1.polynoms1.iter().map(|p1| &p1[0])).unwrap(); + + // let's say we want to decrease threshold so that it becames (t-1)-of-n + let new_t = t - 1; + let artifacts2 = run_key_share_refreshing(t, new_t, n, &artifacts1); + let joint_secret2 = compute_joint_secret_from_shares(new_t, &artifacts2.secret_shares.iter().take(new_t + 1).collect::>(), + &artifacts2.id_numbers.iter().take(new_t + 1).collect::>()).unwrap(); + assert_eq!(joint_secret1, joint_secret2); + + // let's say we want to decrease threshold once again so that it becames (t-2)-of-n + let t = t - 1; + let new_t = t - 2; + let artifacts3 = run_key_share_refreshing(t, new_t, n, &artifacts2); + let joint_secret3 = compute_joint_secret_from_shares(new_t, &artifacts3.secret_shares.iter().take(new_t + 1).collect::>(), + &artifacts3.id_numbers.iter().take(new_t + 1).collect::>()).unwrap(); + assert_eq!(joint_secret1, joint_secret3); + } }