mirror of
https://github.com/serai-dex/serai.git
synced 2024-12-28 14:39:37 +00:00
37 lines
798 B
Rust
37 lines
798 B
Rust
|
#![cfg(feature = "multisig")]
|
||
|
|
||
|
use rand::rngs::OsRng;
|
||
|
|
||
|
use monero_sign::{SignError, key_image};
|
||
|
|
||
|
mod frost;
|
||
|
use crate::frost::generate_keys;
|
||
|
|
||
|
#[test]
|
||
|
fn test() -> Result<(), SignError> {
|
||
|
let (keys, group_private) = generate_keys(3, 5);
|
||
|
let image = key_image::single(&group_private);
|
||
|
|
||
|
let mut packages = vec![];
|
||
|
packages.resize(5 + 1, None);
|
||
|
let included = vec![1, 3, 4];
|
||
|
for i in &included {
|
||
|
let i = *i;
|
||
|
packages[i] = Some(
|
||
|
(
|
||
|
keys[0].verification_shares()[i].0,
|
||
|
key_image::multisig(&mut OsRng, &keys[i - 1], &included)
|
||
|
)
|
||
|
);
|
||
|
}
|
||
|
|
||
|
for i in included {
|
||
|
let mut packages = packages.clone();
|
||
|
packages.push(None);
|
||
|
let package = packages.swap_remove(i).unwrap().1;
|
||
|
assert_eq!(image, package.resolve(packages).unwrap());
|
||
|
}
|
||
|
|
||
|
Ok(())
|
||
|
}
|