Add aggregation into e2e tests
This commit is contained in:
@@ -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,
|
||||
|
||||
@@ -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<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(¶ms, &verification_key, &attributes, &signature_shares)?;
|
||||
|
||||
Ok(())
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user