From e18b197a8ac0792c98d1f9a2c06664fe9a275867 Mon Sep 17 00:00:00 2001 From: Joey Yandle Date: Sun, 10 Sep 2023 06:37:51 -0400 Subject: [PATCH] fix off-by-one with signer_id and key_ids --- stacks-signer/src/crypto/frost.rs | 6 +++--- stacks-signer/src/runloop.rs | 4 +++- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/stacks-signer/src/crypto/frost.rs b/stacks-signer/src/crypto/frost.rs index 1ac4ffd39..0922a64b4 100644 --- a/stacks-signer/src/crypto/frost.rs +++ b/stacks-signer/src/crypto/frost.rs @@ -40,7 +40,7 @@ impl Coordinator { dkg_public_shares: Default::default(), aggregate_public_key: Point::default(), message_private_key, - ids_to_await: (1..=total_signers).collect(), + ids_to_await: (0..total_signers).collect(), state: State::Idle, } } @@ -166,7 +166,7 @@ impl Coordinator { warn!("DKG Round #{} Failed: Aggregate public key does not have even y coord, re-running dkg.", self.current_dkg_id); self.move_to(State::DkgPublicDistribute)?; } - self.ids_to_await = (1..=self.total_signers).collect(); + self.ids_to_await = (0..self.total_signers).collect(); } Ok(()) } @@ -185,7 +185,7 @@ impl Coordinator { } if self.ids_to_await.is_empty() { - self.ids_to_await = (1..=self.total_signers).collect(); + self.ids_to_await = (0..self.total_signers).collect(); self.move_to(State::Idle)?; } Ok(()) diff --git a/stacks-signer/src/runloop.rs b/stacks-signer/src/runloop.rs index 734ec0ae7..c6ff84cbd 100644 --- a/stacks-signer/src/runloop.rs +++ b/stacks-signer/src/runloop.rs @@ -188,7 +188,9 @@ impl RunLoop { .signer_key_ids .get(&config.signer_id) .unwrap() - .clone(); + .iter() + .map(|i| i - 1) // SigningRound::new (unlike SigningRound::from) doesn't do this + .collect::>(); RunLoop { event_timeout: config.event_timeout, coordinator: FrostCoordinator::new(total_signers, config.message_private_key),