diff --git a/accounts/src/key_management/mod.rs b/accounts/src/key_management/mod.rs index c0d26fb..e8444e7 100644 --- a/accounts/src/key_management/mod.rs +++ b/accounts/src/key_management/mod.rs @@ -37,9 +37,12 @@ impl AddressKeyHolder { let nullifer_public_key = utxo_secret_key_holder.generate_nullifier_public_key(); let viewing_public_key = utxo_secret_key_holder.generate_viewing_public_key(); - let pub_account_signing_key = { - let mut rng = OsRng; - nssa::PrivateKey::new(rng.gen()) + let mut rng = OsRng; + let pub_account_signing_key = loop { + match nssa::PrivateKey::try_new(rng.gen()) { + Ok(key) => break key, + Err(_) => continue, + } }; Self { @@ -330,9 +333,12 @@ mod tests { let nullifer_public_key = utxo_secret_key_holder.generate_nullifier_public_key(); let viewing_public_key = utxo_secret_key_holder.generate_viewing_public_key(); - let pub_account_signing_key = { - let mut rng = OsRng; - nssa::PrivateKey::new(rng.gen()) + let mut rng = OsRng; + let pub_account_signing_key = loop { + match nssa::PrivateKey::try_new(rng.gen()) { + Ok(key) => break key, + Err(_) => continue, + } }; let public_key = nssa::PublicKey::new(&pub_account_signing_key); diff --git a/common/src/test_utils.rs b/common/src/test_utils.rs index 7a75088..173886f 100644 --- a/common/src/test_utils.rs +++ b/common/src/test_utils.rs @@ -37,7 +37,7 @@ pub fn produce_dummy_empty_transaction() -> nssa::PublicTransaction { let instruction_data = 0; let message = nssa::public_transaction::Message::try_new(program_id, addresses, nonces, instruction_data).unwrap(); - let private_key = nssa::PrivateKey::new(1); + let private_key = nssa::PrivateKey::try_new([1; 32]).unwrap(); let witness_set = nssa::public_transaction::WitnessSet::for_message(&message, &[&private_key]); nssa::PublicTransaction::new(message, witness_set) } diff --git a/nssa/src/public_transaction/witness_set.rs b/nssa/src/public_transaction/witness_set.rs index 05507e7..262f976 100644 --- a/nssa/src/public_transaction/witness_set.rs +++ b/nssa/src/public_transaction/witness_set.rs @@ -19,7 +19,7 @@ impl WitnessSet { } } - pub(crate) fn is_valid_for(&self, message: &Message) -> bool { + pub fn is_valid_for(&self, message: &Message) -> bool { let message_bytes = message.message_to_bytes(); for (signature, public_key) in self.iter_signatures() { if !signature.is_valid_for(&message_bytes, &public_key) { diff --git a/sequencer_core/src/lib.rs b/sequencer_core/src/lib.rs index 505baa6..2e69bfe 100644 --- a/sequencer_core/src/lib.rs +++ b/sequencer_core/src/lib.rs @@ -62,11 +62,7 @@ impl SequencerCore { tx: nssa::PublicTransaction, ) -> Result { // Stateless checks here - if tx - .witness_set() - .iter_signatures() - .all(|(signature, public_key)| signature.is_valid_for(tx.message(), public_key)) - { + if tx.witness_set().is_valid_for(tx.message()) { Ok(tx) } else { Err(TransactionMalformationErrorKind::InvalidSignature) @@ -188,11 +184,11 @@ mod tests { } fn create_signing_key_for_account1() -> nssa::PrivateKey { - nssa::PrivateKey::new(1) + nssa::PrivateKey::try_new([1; 32]).unwrap() } fn create_signing_key_for_account2() -> nssa::PrivateKey { - nssa::PrivateKey::new(2) + nssa::PrivateKey::try_new([2; 32]).unwrap() } fn common_setup(sequencer: &mut SequencerCore) { diff --git a/sequencer_rpc/src/process.rs b/sequencer_rpc/src/process.rs index 86cb373..ca284ed 100644 --- a/sequencer_rpc/src/process.rs +++ b/sequencer_rpc/src/process.rs @@ -261,7 +261,7 @@ mod tests { let mut sequencer_core = SequencerCore::start_from_config(config); let initial_accounts = sequencer_core.sequencer_config.initial_accounts.clone(); - let signing_key = nssa::PrivateKey::new(1); + let signing_key = nssa::PrivateKey::try_new([1; 32]).unwrap(); let balance_to_move = 10; let tx = common::test_utils::create_transaction_native_token_transfer( [1; 32],