Add aggregation into e2e tests

This commit is contained in:
aniampio
2022-03-23 18:30:19 +00:00
committed by durch
parent 9776bfb0b0
commit 0114743db9
3 changed files with 31 additions and 2 deletions
@@ -123,3 +123,13 @@ pub struct Wallet {
v: Scalar,
idx: Option<SignerIndex>,
}
impl Wallet {
pub fn signature(&self) -> &Signature { &self.sig }
pub fn v(&self) -> Scalar {
self.v
}
pub fn index(&self) -> Option<SignerIndex> {
self.idx
}
}
@@ -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<Scalar> { &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,
+13 -2
View File
@@ -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(&params, vk, &user_keypair.secret_key(), w, &req_info).unwrap())
.collect();
// Aggregate partial wallets
let signature_shares: Vec<SignatureShare> = 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(&params, &verification_key, &attributes, &signature_shares)?;
Ok(())
}