From b89ad6bb5d798cd9cc2f453ab22d49d8ff1a49b4 Mon Sep 17 00:00:00 2001 From: Andreas Fackler Date: Mon, 23 Jul 2018 21:36:09 +0200 Subject: [PATCH] Rename: try_output_batches. Add CS multi output error. --- src/honey_badger.rs | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/src/honey_badger.rs b/src/honey_badger.rs index c81ca79..97ec568 100644 --- a/src/honey_badger.rs +++ b/src/honey_badger.rs @@ -283,7 +283,7 @@ where .insert(sender_id.clone(), share); if epoch == self.epoch { - self.try_decrypt_and_output_batch() + self.try_output_batches() } else { Ok(Step::default()) } @@ -371,12 +371,12 @@ where step.extend(self.handle_message_content(&sender_id, max_epoch, content)?); } // Handle any decryption shares received for the new epoch. - step.extend(self.try_decrypt_and_output_batch()?); + step.extend(self.try_output_batches()?); Ok(step) } /// Tries to decrypt contributions from all proposers and output those in a batch. - fn try_decrypt_and_output_batch(&mut self) -> Result> { + fn try_output_batches(&mut self) -> Result> { let mut step = Step::default(); while let Some(new_step) = self.try_output_batch()? { step.extend(new_step); @@ -466,7 +466,7 @@ where } self.ciphertexts.insert(epoch, ciphertexts); if epoch == self.epoch { - step.extend(self.try_decrypt_and_output_batch()?); + step.extend(self.try_output_batches()?); } Ok(step) } @@ -551,13 +551,16 @@ where epoch: u64, ) -> Result> { let mut step = Step::default(); - let cs_outputs = step.extend_with(cs_step, |cs_msg| { + let mut cs_outputs = step.extend_with(cs_step, |cs_msg| { MessageContent::CommonSubset(cs_msg).with_epoch(epoch) }); - for cs_output in cs_outputs { + if let Some(cs_output) = cs_outputs.pop_front() { // There is at most one output. step.extend(self.send_decryption_shares(cs_output, epoch)?); } + if !cs_outputs.is_empty() { + error!("Multiple outputs from a single Common Subset instance."); + } Ok(step) }