From 90fccc444b16bdfa790240fcd288731f76fca583 Mon Sep 17 00:00:00 2001 From: Luke Parker Date: Wed, 18 May 2022 01:08:54 -0400 Subject: [PATCH] Remove .is_some() unwraps for if let Some --- coins/monero/src/frost.rs | 3 +++ coins/monero/src/transaction/mod.rs | 8 ++++---- crypto/frost/src/lib.rs | 8 ++------ crypto/frost/src/sign.rs | 8 ++++---- 4 files changed, 13 insertions(+), 14 deletions(-) diff --git a/coins/monero/src/frost.rs b/coins/monero/src/frost.rs index b2a6f8e2..0f5fe2d8 100644 --- a/coins/monero/src/frost.rs +++ b/coins/monero/src/frost.rs @@ -60,6 +60,9 @@ impl Curve for Ed25519 { dfg::EdwardsPoint(DPoint::vartime_multiscalar_mul(scalars, points)) } + // This, as used by CLSAG, will already be a keccak256 hash + // The only necessity is for this to be unique, which means skipping a hash here should be fine accordingly + // TODO: Decide fn hash_msg(msg: &[u8]) -> Vec { Blake2b512::digest(msg).to_vec() } diff --git a/coins/monero/src/transaction/mod.rs b/coins/monero/src/transaction/mod.rs index dc02be4b..f78b9335 100644 --- a/coins/monero/src/transaction/mod.rs +++ b/coins/monero/src/transaction/mod.rs @@ -79,11 +79,11 @@ pub struct SpendableOutput { pub fn scan(tx: &Transaction, view: Scalar, spend: EdwardsPoint) -> Vec { let mut pubkeys = vec![]; - if tx.tx_pubkey().is_some() { - pubkeys.push(tx.tx_pubkey().unwrap()); + if let Some(key) = tx.tx_pubkey() { + pubkeys.push(key); } - if tx.tx_additional_pubkeys().is_some() { - pubkeys.extend(&tx.tx_additional_pubkeys().unwrap()); + if let Some(keys) = tx.tx_additional_pubkeys() { + pubkeys.extend(&keys); } let pubkeys: Vec = pubkeys.iter().map(|key| key.point.decompress()).filter_map(|key| key).collect(); diff --git a/crypto/frost/src/lib.rs b/crypto/frost/src/lib.rs index 550b28cc..5937eece 100644 --- a/crypto/frost/src/lib.rs +++ b/crypto/frost/src/lib.rs @@ -268,12 +268,8 @@ impl MultisigKeys { } let secret_share = self.secret_share * lagrange::(self.params.i, &included); - let (offset, offset_share) = if self.offset.is_some() { - let offset = self.offset.unwrap(); - (offset, offset * C::F::from(included.len().try_into().unwrap()).invert().unwrap()) - } else { - (C::F::zero(), C::F::zero()) - }; + let offset = self.offset.unwrap_or(C::F::zero()); + let offset_share = offset * C::F::from(included.len().try_into().unwrap()).invert().unwrap(); Ok(MultisigView { group_key: self.group_key + (C::generator_table() * offset), diff --git a/crypto/frost/src/sign.rs b/crypto/frost/src/sign.rs index e64d3e06..277062c6 100644 --- a/crypto/frost/src/sign.rs +++ b/crypto/frost/src/sign.rs @@ -148,8 +148,8 @@ fn sign_with_share>( { let transcript = params.algorithm.transcript(); transcript.domain_separate(b"FROST"); - if params.keys.offset.is_some() { - transcript.append_message(b"offset", &C::F_to_bytes(¶ms.keys.offset.unwrap())); + if let Some(offset) = params.keys.offset { + transcript.append_message(b"offset", &C::F_to_bytes(&offset)); } } @@ -301,8 +301,8 @@ fn complete>( // For the success route, which should be much more frequent, this should be faster // It also acts as an integrity check of this library's signing function let res = sign_params.algorithm.verify(sign_params.view.group_key, sign.R, sum); - if res.is_some() { - return Ok(res.unwrap()); + if let Some(res) = res { + return Ok(res); } // Find out who misbehaved