From ea4980c6e2cc438c5763e1eabd774f1d6b520602 Mon Sep 17 00:00:00 2001 From: aniampio Date: Tue, 24 Oct 2023 15:02:19 +0100 Subject: [PATCH] Improve function performance and readability --- .../src/proofs/proof_spend.rs | 2 +- .../src/scheme/identify.rs | 14 +++++------ .../src/scheme/mod.rs | 23 +++++++++---------- .../src/tests/e2e.rs | 2 +- 4 files changed, 20 insertions(+), 21 deletions(-) diff --git a/common/nym_offline_compact_ecash/src/proofs/proof_spend.rs b/common/nym_offline_compact_ecash/src/proofs/proof_spend.rs index a130efacb2..7f5ec5d60d 100644 --- a/common/nym_offline_compact_ecash/src/proofs/proof_spend.rs +++ b/common/nym_offline_compact_ecash/src/proofs/proof_spend.rs @@ -728,7 +728,7 @@ mod tests { let cc = g1 * o_c + gamma1 * v; // compute hash of the payment info - let pay_info = PayInfo { info: [37u8; 32] }; + let pay_info = PayInfo { info: [37u8; 88] }; let rr = hash_to_scalar(pay_info.info); // evaluate the pseudorandom functions diff --git a/common/nym_offline_compact_ecash/src/scheme/identify.rs b/common/nym_offline_compact_ecash/src/scheme/identify.rs index c658ea0fbb..f45f298d9e 100644 --- a/common/nym_offline_compact_ecash/src/scheme/identify.rs +++ b/common/nym_offline_compact_ecash/src/scheme/identify.rs @@ -91,7 +91,7 @@ mod tests { ).unwrap(); // Let's try to spend some coins - let pay_info1 = PayInfo { info: [6u8; 32] }; + let pay_info1 = PayInfo { info: [6u8; 88] }; let spend_vv = 1; let (payment1, _upd_wallet) = aggr_wallet.spend( @@ -162,7 +162,7 @@ mod tests { ).unwrap(); // Let's try to spend some coins - let pay_info1 = PayInfo { info: [6u8; 32] }; + let pay_info1 = PayInfo { info: [6u8; 88] }; let spend_vv = 1; let (payment1, upd_wallet) = aggr_wallet.spend( @@ -179,7 +179,7 @@ mod tests { .unwrap()); - let pay_info2 = PayInfo { info: [7u8; 32] }; + let pay_info2 = PayInfo { info: [7u8; 88] }; let (payment2, _) = upd_wallet.spend( ¶ms, &verification_key, @@ -253,7 +253,7 @@ mod tests { ).unwrap(); // Let's try to spend some coins - let pay_info1 = PayInfo { info: [6u8; 32] }; + let pay_info1 = PayInfo { info: [6u8; 88] }; let spend_vv = 1; let (payment1, _upd_wallet) = aggr_wallet.spend( @@ -273,7 +273,7 @@ mod tests { let current_l = aggr_wallet.l.get(); aggr_wallet.l.set(current_l - 1); - let pay_info2 = PayInfo { info: [7u8; 32] }; + let pay_info2 = PayInfo { info: [7u8; 88] }; let (payment2, _) = aggr_wallet.spend( ¶ms, @@ -347,7 +347,7 @@ mod tests { ).unwrap(); // Let's try to spend some coins - let pay_info1 = PayInfo { info: [6u8; 32] }; + let pay_info1 = PayInfo { info: [6u8; 88] }; let spend_vv = 10; let (payment1, _) = aggr_wallet.spend( @@ -367,7 +367,7 @@ mod tests { let current_l = aggr_wallet.l.get(); aggr_wallet.l.set(current_l - 10); - let pay_info2 = PayInfo { info: [7u8; 32] }; + let pay_info2 = PayInfo { info: [7u8; 88] }; let (payment2, _) = aggr_wallet.spend( ¶ms, &verification_key, diff --git a/common/nym_offline_compact_ecash/src/scheme/mod.rs b/common/nym_offline_compact_ecash/src/scheme/mod.rs index 9848ba46fd..b151ec0629 100644 --- a/common/nym_offline_compact_ecash/src/scheme/mod.rs +++ b/common/nym_offline_compact_ecash/src/scheme/mod.rs @@ -311,25 +311,24 @@ pub fn compute_kappa( #[derive(PartialEq, Eq, Debug, Clone)] pub struct PayInfo { - pub info: [u8; 32], + pub info: [u8; 88], } -pub fn generate_payinfo(provider_pk: PublicKeyUser) -> Vec{ - let mut rng = thread_rng(); - let mut rbytes = [0u8; 32]; - rng.fill(&mut rbytes); +pub fn generate_payinfo(provider_pk: PublicKeyUser) -> PayInfo{ + let mut info = [0u8; 88]; + // Generating random bytes + thread_rng().fill(&mut info[..32]); + + // Adding timestamp bytes let timestamp = Utc::now().timestamp(); - let timestamp_bytes: [u8; 8] = timestamp.to_be_bytes(); + info[32..40].copy_from_slice(×tamp.to_be_bytes()); + // Adding provider public key bytes let ppk_bytes = provider_pk.pk.to_affine().to_compressed(); + info[40..].copy_from_slice(&ppk_bytes); - let mut payinfo = Vec::with_capacity(32 + 8 +48); - payinfo.extend_from_slice(&rbytes); - payinfo.extend_from_slice(×tamp_bytes); - payinfo.extend_from_slice(&ppk_bytes); - - payinfo + PayInfo { info } } #[derive(Debug, Clone, PartialEq)] diff --git a/common/nym_offline_compact_ecash/src/tests/e2e.rs b/common/nym_offline_compact_ecash/src/tests/e2e.rs index 2a6f3bc45c..94182b98f7 100644 --- a/common/nym_offline_compact_ecash/src/tests/e2e.rs +++ b/common/nym_offline_compact_ecash/src/tests/e2e.rs @@ -70,7 +70,7 @@ fn main() -> Result<(), CompactEcashError> { assert_eq!(aggr_wallet, wallet); // Let's try to spend some coins - let pay_info = PayInfo { info: [6u8; 32] }; + let pay_info = PayInfo { info: [6u8; 88] }; let spend_vv = 1; let (payment, _) = aggr_wallet.spend(