From 0114743db9bd2e72ab1cfcab62f1e162eb584ca9 Mon Sep 17 00:00:00 2001 From: aniampio Date: Wed, 23 Mar 2022 18:30:19 +0000 Subject: [PATCH] Add aggregation into e2e tests --- common/nym-compact-ecash/src/scheme/mod.rs | 10 ++++++++++ common/nym-compact-ecash/src/scheme/withdrawal.rs | 8 ++++++++ common/nym-compact-ecash/src/tests/e2e.rs | 15 +++++++++++++-- 3 files changed, 31 insertions(+), 2 deletions(-) diff --git a/common/nym-compact-ecash/src/scheme/mod.rs b/common/nym-compact-ecash/src/scheme/mod.rs index b0f59670b6..3601d968be 100644 --- a/common/nym-compact-ecash/src/scheme/mod.rs +++ b/common/nym-compact-ecash/src/scheme/mod.rs @@ -123,3 +123,13 @@ pub struct Wallet { v: Scalar, idx: Option, } + +impl Wallet { + pub fn signature(&self) -> &Signature { &self.sig } + pub fn v(&self) -> Scalar { + self.v + } + pub fn index(&self) -> Option { + self.idx + } +} diff --git a/common/nym-compact-ecash/src/scheme/withdrawal.rs b/common/nym-compact-ecash/src/scheme/withdrawal.rs index 1bf44a5159..50ee42c601 100644 --- a/common/nym-compact-ecash/src/scheme/withdrawal.rs +++ b/common/nym-compact-ecash/src/scheme/withdrawal.rs @@ -24,6 +24,14 @@ pub struct RequestInfo { t: Scalar, } +impl RequestInfo { + pub fn get_com(&self) -> G1Projective { self.com_hash } + pub fn get_com_openings(&self) -> Scalar { self.com_opening } + pub fn get_pc_coms_openings(&self) -> &Vec { &self.pc_coms_openings } + pub fn get_v(&self) -> Scalar { self.v } + pub fn get_t(&self) -> Scalar { self.t } +} + pub fn withdrawal_request( params: &Parameters, sk_user: &SecretKeyUser, diff --git a/common/nym-compact-ecash/src/tests/e2e.rs b/common/nym-compact-ecash/src/tests/e2e.rs index 080067d5f4..6bf17c1b21 100644 --- a/common/nym-compact-ecash/src/tests/e2e.rs +++ b/common/nym-compact-ecash/src/tests/e2e.rs @@ -1,12 +1,12 @@ use itertools::izip; use crate::error::CompactEcashError; -use crate::scheme::aggregation::aggregate_verification_keys; +use crate::scheme::{SignatureShare, Wallet}; +use crate::scheme::aggregation::{aggregate_signature_shares, aggregate_verification_keys}; use crate::scheme::keygen::{ generate_keypair_user, PublicKeyUser, SecretKeyUser, ttp_keygen, VerificationKeyAuth, }; use crate::scheme::setup::Parameters; -use crate::scheme::Wallet; use crate::scheme::withdrawal::{issue_verify, issue_wallet, withdrawal_request}; #[test] @@ -42,5 +42,16 @@ fn main() -> Result<(), CompactEcashError> { .map(|(w, vk)| issue_verify(¶ms, vk, &user_keypair.secret_key(), w, &req_info).unwrap()) .collect(); + // Aggregate partial wallets + let signature_shares: Vec = unblinded_wallet_shares + .iter() + .enumerate() + .map(|(idx, wallet)| SignatureShare::new(*wallet.signature(), (idx + 1) as u64)) + .collect(); + + let attributes = vec![user_keypair.secret_key().sk, req_info.get_v(), req_info.get_t()]; + let aggregated_signature = + aggregate_signature_shares(¶ms, &verification_key, &attributes, &signature_shares)?; + Ok(()) }