Implement a FROST variant of Schnorrkel (#274)

* Minor lint

* Update frost-schnorrkel to the latest modular-frost

* Tidy up the schnorrkel library
This commit is contained in:
Luke Parker
2023-04-10 06:05:17 -04:00
committed by GitHub
parent bc19975a8a
commit 82c34dcc76
7 changed files with 252 additions and 0 deletions

View File

@@ -0,0 +1,25 @@
use rand_core::OsRng;
use group::GroupEncoding;
use frost::{
Participant,
tests::{key_gen, algorithm_machines, sign},
};
use schnorrkel::{keys::PublicKey, context::SigningContext};
use crate::Schnorrkel;
#[test]
fn test() {
const CONTEXT: &[u8] = b"FROST Schnorrkel Test";
const MSG: &[u8] = b"Hello, World!";
let keys = key_gen(&mut OsRng);
let key = keys[&Participant::new(1).unwrap()].group_key();
let machines = algorithm_machines(&mut OsRng, Schnorrkel::new(CONTEXT), &keys);
let signature = sign(&mut OsRng, Schnorrkel::new(CONTEXT), keys, machines, MSG);
let key = PublicKey::from_bytes(key.to_bytes().as_ref()).unwrap();
key.verify(&mut SigningContext::new(CONTEXT).bytes(MSG), &signature).unwrap()
}