improved some prompts for clarity
This commit is contained in:
parent
519623678c
commit
2cd6862cca
|
@ -44,8 +44,8 @@ fn request_inputs_commitments(
|
|||
for p in participants {
|
||||
writeln!(
|
||||
logger,
|
||||
"Please enter JSON encoded commitments for participant {:#?}:",
|
||||
p
|
||||
"Please enter JSON encoded commitments for participant {}:",
|
||||
hex::encode(p.serialize())
|
||||
)?; // TODO: improve printing
|
||||
|
||||
let mut commitments_input = String::new();
|
||||
|
@ -62,7 +62,7 @@ fn request_inputs_commitments(
|
|||
fn print_commitments(logger: &mut dyn Write, signing_package: &SigningPackage) {
|
||||
writeln!(
|
||||
logger,
|
||||
"SigningPackage:\n{}",
|
||||
"Signing Package:\n{}",
|
||||
serde_json::to_string(&signing_package).unwrap()
|
||||
)
|
||||
.unwrap();
|
||||
|
|
|
@ -34,8 +34,8 @@ fn request_inputs_signature_shares(
|
|||
for p in participants.participants {
|
||||
writeln!(
|
||||
logger,
|
||||
"Please enter JSON encoded signatures for participant {:?}:",
|
||||
p
|
||||
"Please enter JSON encoded signature shares for participant {}:",
|
||||
hex::encode(p.serialize())
|
||||
)
|
||||
.unwrap();
|
||||
|
||||
|
|
|
@ -140,12 +140,12 @@ fn check_step_2() {
|
|||
assert!(signing_package.is_ok());
|
||||
assert!(signing_package.unwrap() == expected_signing_package);
|
||||
|
||||
let expected = "The message to be signed (hex encoded)\nPlease enter JSON encoded commitments for participant Identifier(\n \"0100000000000000000000000000000000000000000000000000000000000000\",\n):\nPlease enter JSON encoded commitments for participant Identifier(\n \"0300000000000000000000000000000000000000000000000000000000000000\",\n):\nSigning Package: {\"signing_commitments\":{\"0100000000000000000000000000000000000000000000000000000000000000\":{\"hiding\":\"5078f5c6d679654bb88a8887242d49cc21a553ed26caed4d52570c6656fb9b92\",\"binding\":\"936b660d3008d8298b0a7220a327a0813ffedd9d07604bdc73d7cffef63c0da0\",\"ciphersuite\":\"FROST(Ed25519, SHA-512)\"},\"0300000000000000000000000000000000000000000000000000000000000000\":{\"hiding\":\"91c2469b501fe5af8493f9ae77c8f57999460af317f2d9f2d4378ae0e665860e\",\"binding\":\"c225618accff2266a45d87dc3219b04c774ca26c8629c4fa483e7e87da820007\",\"ciphersuite\":\"FROST(Ed25519, SHA-512)\"}},\"message\":\"74657374\",\"ciphersuite\":\"FROST(Ed25519, SHA-512)\"}\n";
|
||||
let expected = "The message to be signed (hex encoded)\nPlease enter JSON encoded commitments for participant 0100000000000000000000000000000000000000000000000000000000000000:\nPlease enter JSON encoded commitments for participant 0300000000000000000000000000000000000000000000000000000000000000:\nSigning Package:\n{\"signing_commitments\":{\"0100000000000000000000000000000000000000000000000000000000000000\":{\"hiding\":\"5078f5c6d679654bb88a8887242d49cc21a553ed26caed4d52570c6656fb9b92\",\"binding\":\"936b660d3008d8298b0a7220a327a0813ffedd9d07604bdc73d7cffef63c0da0\",\"ciphersuite\":\"FROST(Ed25519, SHA-512)\"},\"0300000000000000000000000000000000000000000000000000000000000000\":{\"hiding\":\"91c2469b501fe5af8493f9ae77c8f57999460af317f2d9f2d4378ae0e665860e\",\"binding\":\"c225618accff2266a45d87dc3219b04c774ca26c8629c4fa483e7e87da820007\",\"ciphersuite\":\"FROST(Ed25519, SHA-512)\"}},\"message\":\"74657374\",\"ciphersuite\":\"FROST(Ed25519, SHA-512)\"}\n";
|
||||
|
||||
let (_, res) = &buf.into_parts();
|
||||
let actual = hex::encode(res.as_ref().unwrap());
|
||||
let actual = String::from_utf8(res.as_ref().unwrap().to_owned()).unwrap();
|
||||
|
||||
assert_eq!(hex::encode(expected), actual)
|
||||
assert_eq!(expected, actual)
|
||||
}
|
||||
|
||||
use crate::{
|
||||
|
@ -212,10 +212,10 @@ fn check_step_3() {
|
|||
signing_package,
|
||||
);
|
||||
|
||||
let expected = "Please enter JSON encoded signatures for participant Identifier(\"0100000000000000000000000000000000000000000000000000000000000000\"):\nPlease enter JSON encoded signatures for participant Identifier(\"0300000000000000000000000000000000000000000000000000000000000000\"):\nGroup signature: \"72c948a63797c693e8e978fdb703a1f5a7590472a539da13b71dd6c2b8c1b2a664b7b4af6194439357c5d15f366760fce53c985a186709e74bb0f8e5078ea805\"\n";
|
||||
let expected = "Please enter JSON encoded signature shares for participant 0100000000000000000000000000000000000000000000000000000000000000:\nPlease enter JSON encoded signature shares for participant 0300000000000000000000000000000000000000000000000000000000000000:\nGroup signature: \"72c948a63797c693e8e978fdb703a1f5a7590472a539da13b71dd6c2b8c1b2a664b7b4af6194439357c5d15f366760fce53c985a186709e74bb0f8e5078ea805\"\n";
|
||||
|
||||
let (_, res) = &buf.into_parts();
|
||||
let actual = hex::encode(res.as_ref().unwrap());
|
||||
let actual = String::from_utf8(res.as_ref().unwrap().to_owned()).unwrap();
|
||||
|
||||
assert_eq!(hex::encode(expected), actual)
|
||||
assert_eq!(expected, actual)
|
||||
}
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
use frost::{round1, Error};
|
||||
use frost_ed25519 as frost;
|
||||
use participant::round1::{generate_key_package, print_values, request_inputs};
|
||||
use participant::round1::{print_values, request_inputs};
|
||||
use participant::round2::{generate_signature, print_values_round_2, round_2_request_inputs};
|
||||
use participant::Logger;
|
||||
use rand::thread_rng;
|
||||
|
@ -10,7 +10,6 @@ use std::io::BufRead;
|
|||
pub enum CliError {
|
||||
Config,
|
||||
Signing,
|
||||
KeyPackage,
|
||||
}
|
||||
|
||||
pub struct ParticipantError {
|
||||
|
@ -31,16 +30,7 @@ pub fn cli(input: &mut impl BufRead, logger: &mut dyn Logger) -> Result<(), Part
|
|||
|
||||
let round_1_config_ok = round_1_config.unwrap();
|
||||
|
||||
let key_package = generate_key_package(&round_1_config_ok);
|
||||
|
||||
if let Err(e) = key_package {
|
||||
return Err(ParticipantError {
|
||||
frost_error: e,
|
||||
cli_error: CliError::KeyPackage,
|
||||
});
|
||||
}
|
||||
|
||||
let key_package_ok = key_package.unwrap();
|
||||
let key_package_ok = round_1_config_ok.key_package;
|
||||
|
||||
logger.log("Key Package succesfully created.".to_string());
|
||||
|
||||
|
|
|
@ -10,7 +10,7 @@ use std::io::BufRead;
|
|||
// TODO: Rethink the types here. They're inconsistent with each other
|
||||
#[derive(Debug, PartialEq)]
|
||||
pub struct Round1Config {
|
||||
pub secret_share: SecretShare,
|
||||
pub key_package: KeyPackage,
|
||||
}
|
||||
|
||||
// pub trait Logger {
|
||||
|
@ -22,22 +22,20 @@ pub fn request_inputs(
|
|||
input: &mut impl BufRead,
|
||||
logger: &mut dyn Logger,
|
||||
) -> Result<Round1Config, Error> {
|
||||
logger.log("Your JSON-encoded secret share:".to_string());
|
||||
logger.log("Your JSON-encoded secret share or key package:".to_string());
|
||||
|
||||
let mut secret_share_json = String::new();
|
||||
let mut json = String::new();
|
||||
|
||||
input.read_line(&mut secret_share_json).unwrap();
|
||||
input.read_line(&mut json).unwrap();
|
||||
|
||||
let secret_share: SecretShare =
|
||||
serde_json::from_str(&secret_share_json).map_err(|_| Error::InvalidSecretShare)?;
|
||||
let key_package = if let Ok(secret_share) = serde_json::from_str::<SecretShare>(&json) {
|
||||
KeyPackage::try_from(secret_share.clone())?
|
||||
} else {
|
||||
// TODO: Improve error
|
||||
serde_json::from_str::<KeyPackage>(&json).map_err(|_| Error::InvalidSecretShare)?
|
||||
};
|
||||
|
||||
Ok(Round1Config { secret_share })
|
||||
}
|
||||
|
||||
pub fn generate_key_package(config: &Round1Config) -> Result<KeyPackage, Error> {
|
||||
let key_package = KeyPackage::try_from(config.secret_share.clone())?;
|
||||
|
||||
Ok(key_package)
|
||||
Ok(Round1Config { key_package })
|
||||
}
|
||||
|
||||
// The nonces are printed out here for demo purposes only. The hiding and binding nonces are SECRET and not to be shared.
|
||||
|
|
|
@ -1,125 +1,125 @@
|
|||
#[cfg(test)]
|
||||
use frost::Identifier;
|
||||
use frost::{
|
||||
keys::{
|
||||
KeyPackage, SecretShare, SigningShare, VerifiableSecretSharingCommitment, VerifyingShare,
|
||||
},
|
||||
VerifyingKey,
|
||||
};
|
||||
use frost_ed25519 as frost;
|
||||
use hex::FromHex;
|
||||
use participant::round1::{generate_key_package, request_inputs, Round1Config};
|
||||
// #[cfg(test)]
|
||||
// use frost::Identifier;
|
||||
// use frost::{
|
||||
// keys::{
|
||||
// KeyPackage, SecretShare, SigningShare, VerifiableSecretSharingCommitment, VerifyingShare,
|
||||
// },
|
||||
// VerifyingKey,
|
||||
// };
|
||||
// use frost_ed25519 as frost;
|
||||
// use hex::FromHex;
|
||||
// use participant::round1::{request_inputs, Round1Config};
|
||||
|
||||
use participant::Logger;
|
||||
// use participant::Logger;
|
||||
|
||||
const PUBLIC_KEY: &str = "adf6ab1f882d04988eadfaa52fb175bf37b6247785d7380fde3fb9d68032470d";
|
||||
const GROUP_PUBLIC_KEY: &str = "087e22f970daf6ac5b07b55bd7fc0af6dea199ab847dc34fc92a6f8641a1bb8e";
|
||||
const SIGNING_SHARE: &str = "ceed7dd148a1a1ec2e65b50ecab6a7c453ccbd38c397c3506a540b7cf0dd9104";
|
||||
const VSS_COMMITMENT: [&str; 3] = [
|
||||
"087e22f970daf6ac5b07b55bd7fc0af6dea199ab847dc34fc92a6f8641a1bb8e",
|
||||
"926d5910e146dccb9148ca39dc7607f4f7123ff1c0ffaf109add1d165c568bf2",
|
||||
"291bb78d7e4ef124f5aa6a36cbcf8c276e70fbb4e208212e916d762fc42c1bbc",
|
||||
];
|
||||
const SECRET_SHARE_JSON: &str = r#"{"identifier":"0100000000000000000000000000000000000000000000000000000000000000","value":"ceed7dd148a1a1ec2e65b50ecab6a7c453ccbd38c397c3506a540b7cf0dd9104","commitment":["087e22f970daf6ac5b07b55bd7fc0af6dea199ab847dc34fc92a6f8641a1bb8e","926d5910e146dccb9148ca39dc7607f4f7123ff1c0ffaf109add1d165c568bf2", "291bb78d7e4ef124f5aa6a36cbcf8c276e70fbb4e208212e916d762fc42c1bbc"],"ciphersuite":"FROST(Ed25519, SHA-512)"}"#;
|
||||
// const PUBLIC_KEY: &str = "adf6ab1f882d04988eadfaa52fb175bf37b6247785d7380fde3fb9d68032470d";
|
||||
// const GROUP_PUBLIC_KEY: &str = "087e22f970daf6ac5b07b55bd7fc0af6dea199ab847dc34fc92a6f8641a1bb8e";
|
||||
// const SIGNING_SHARE: &str = "ceed7dd148a1a1ec2e65b50ecab6a7c453ccbd38c397c3506a540b7cf0dd9104";
|
||||
// const VSS_COMMITMENT: [&str; 3] = [
|
||||
// "087e22f970daf6ac5b07b55bd7fc0af6dea199ab847dc34fc92a6f8641a1bb8e",
|
||||
// "926d5910e146dccb9148ca39dc7607f4f7123ff1c0ffaf109add1d165c568bf2",
|
||||
// "291bb78d7e4ef124f5aa6a36cbcf8c276e70fbb4e208212e916d762fc42c1bbc",
|
||||
// ];
|
||||
// const SECRET_SHARE_JSON: &str = r#"{"identifier":"0100000000000000000000000000000000000000000000000000000000000000","value":"ceed7dd148a1a1ec2e65b50ecab6a7c453ccbd38c397c3506a540b7cf0dd9104","commitment":["087e22f970daf6ac5b07b55bd7fc0af6dea199ab847dc34fc92a6f8641a1bb8e","926d5910e146dccb9148ca39dc7607f4f7123ff1c0ffaf109add1d165c568bf2", "291bb78d7e4ef124f5aa6a36cbcf8c276e70fbb4e208212e916d762fc42c1bbc"],"ciphersuite":"FROST(Ed25519, SHA-512)"}"#;
|
||||
|
||||
pub struct TestLogger(Vec<String>);
|
||||
// pub struct TestLogger(Vec<String>);
|
||||
|
||||
impl Logger for TestLogger {
|
||||
fn log(&mut self, value: String) {
|
||||
self.0.push(value);
|
||||
}
|
||||
}
|
||||
// impl Logger for TestLogger {
|
||||
// fn log(&mut self, value: String) {
|
||||
// self.0.push(value);
|
||||
// }
|
||||
// }
|
||||
|
||||
#[test]
|
||||
fn check_valid_round_1_inputs() {
|
||||
let config = Round1Config {
|
||||
secret_share: SecretShare::new(
|
||||
Identifier::try_from(1).unwrap(),
|
||||
SigningShare::deserialize(<[u8; 32]>::from_hex(SIGNING_SHARE).unwrap()).unwrap(),
|
||||
VerifiableSecretSharingCommitment::deserialize(
|
||||
VSS_COMMITMENT
|
||||
.iter()
|
||||
.map(|s| hex::decode(s).unwrap().try_into().unwrap())
|
||||
.collect(),
|
||||
)
|
||||
.unwrap(),
|
||||
),
|
||||
};
|
||||
// #[test]
|
||||
// fn check_valid_round_1_inputs() {
|
||||
// let config = Round1Config {
|
||||
// secret_share: SecretShare::new(
|
||||
// Identifier::try_from(1).unwrap(),
|
||||
// SigningShare::deserialize(<[u8; 32]>::from_hex(SIGNING_SHARE).unwrap()).unwrap(),
|
||||
// VerifiableSecretSharingCommitment::deserialize(
|
||||
// VSS_COMMITMENT
|
||||
// .iter()
|
||||
// .map(|s| hex::decode(s).unwrap().try_into().unwrap())
|
||||
// .collect(),
|
||||
// )
|
||||
// .unwrap(),
|
||||
// ),
|
||||
// };
|
||||
|
||||
let mut test_logger = TestLogger(Vec::new());
|
||||
// let mut test_logger = TestLogger(Vec::new());
|
||||
|
||||
let input = SECRET_SHARE_JSON;
|
||||
let mut valid_input = input.as_bytes();
|
||||
// let input = SECRET_SHARE_JSON;
|
||||
// let mut valid_input = input.as_bytes();
|
||||
|
||||
let expected = request_inputs(&mut valid_input, &mut test_logger).unwrap();
|
||||
// let expected = request_inputs(&mut valid_input, &mut test_logger).unwrap();
|
||||
|
||||
assert_eq!(expected, config);
|
||||
}
|
||||
// assert_eq!(expected, config);
|
||||
// }
|
||||
|
||||
#[test]
|
||||
fn check_0_input_for_identifier() {
|
||||
let mut test_logger = TestLogger(Vec::new());
|
||||
// #[test]
|
||||
// fn check_0_input_for_identifier() {
|
||||
// let mut test_logger = TestLogger(Vec::new());
|
||||
|
||||
let input = r#"{"identifier":"0000000000000000000000000000000000000000000000000000000000000000","value":"ceed7dd148a1a1ec2e65b50ecab6a7c453ccbd38c397c3506a540b7cf0dd9104","commitment":["087e22f970daf6ac5b07b55bd7fc0af6dea199ab847dc34fc92a6f8641a1bb8e","291bb78d7e4ef124f5aa6a36cbcf8c276e70fbb4e208212e916d762fc42c1bbc"],"ciphersuite":"FROST(Ed25519, SHA-512)"}"#;
|
||||
let mut invalid_input = input.as_bytes();
|
||||
// let input = r#"{"identifier":"0000000000000000000000000000000000000000000000000000000000000000","value":"ceed7dd148a1a1ec2e65b50ecab6a7c453ccbd38c397c3506a540b7cf0dd9104","commitment":["087e22f970daf6ac5b07b55bd7fc0af6dea199ab847dc34fc92a6f8641a1bb8e","291bb78d7e4ef124f5aa6a36cbcf8c276e70fbb4e208212e916d762fc42c1bbc"],"ciphersuite":"FROST(Ed25519, SHA-512)"}"#;
|
||||
// let mut invalid_input = input.as_bytes();
|
||||
|
||||
let expected = request_inputs(&mut invalid_input, &mut test_logger);
|
||||
// let expected = request_inputs(&mut invalid_input, &mut test_logger);
|
||||
|
||||
assert!(expected.is_err());
|
||||
}
|
||||
// assert!(expected.is_err());
|
||||
// }
|
||||
|
||||
#[test]
|
||||
fn check_invalid_length_signing_share() {
|
||||
let mut test_logger = TestLogger(Vec::new());
|
||||
// #[test]
|
||||
// fn check_invalid_length_signing_share() {
|
||||
// let mut test_logger = TestLogger(Vec::new());
|
||||
|
||||
let input = r#"{"identifier":"0100000000000000000000000000000000000000000000000000000000000000","value":"ed7dd148a1a1ec2e65b50ecab6a7c453ccbd38c397c3506a540b7cf0dd9104","commitment":["087e22f970daf6ac5b07b55bd7fc0af6dea199ab847dc34fc92a6f8641a1bb8e","291bb78d7e4ef124f5aa6a36cbcf8c276e70fbb4e208212e916d762fc42c1bbc"],"ciphersuite":"FROST(Ed25519, SHA-512)"}"#;
|
||||
// let input = r#"{"identifier":"0100000000000000000000000000000000000000000000000000000000000000","value":"ed7dd148a1a1ec2e65b50ecab6a7c453ccbd38c397c3506a540b7cf0dd9104","commitment":["087e22f970daf6ac5b07b55bd7fc0af6dea199ab847dc34fc92a6f8641a1bb8e","291bb78d7e4ef124f5aa6a36cbcf8c276e70fbb4e208212e916d762fc42c1bbc"],"ciphersuite":"FROST(Ed25519, SHA-512)"}"#;
|
||||
|
||||
let mut invalid_input = input.as_bytes();
|
||||
// let mut invalid_input = input.as_bytes();
|
||||
|
||||
let expected = request_inputs(&mut invalid_input, &mut test_logger);
|
||||
// let expected = request_inputs(&mut invalid_input, &mut test_logger);
|
||||
|
||||
assert!(expected.is_err());
|
||||
}
|
||||
// assert!(expected.is_err());
|
||||
// }
|
||||
|
||||
// TODO: Handle this error differently
|
||||
#[test]
|
||||
fn check_invalid_length_vss_commitment() {
|
||||
let mut test_logger = TestLogger(Vec::new());
|
||||
// // TODO: Handle this error differently
|
||||
// #[test]
|
||||
// fn check_invalid_length_vss_commitment() {
|
||||
// let mut test_logger = TestLogger(Vec::new());
|
||||
|
||||
let input = r#"{"identifier":"0100000000000000000000000000000000000000000000000000000000000000","value":"ceed7dd148a1a1ec2e65b50ecab6a7c453ccbd38c397c3506a540b7cf0dd9104","commitment":["7e22f970daf6ac5b07b55bd7fc0af6dea199ab847dc34fc92a6f8641a1bb8e","291bb78d7e4ef124f5aa6a36cbcf8c276e70fbb4e208212e916d762fc42c1bbc"],"ciphersuite":"FROST(Ed25519, SHA-512)"}"#;
|
||||
// let input = r#"{"identifier":"0100000000000000000000000000000000000000000000000000000000000000","value":"ceed7dd148a1a1ec2e65b50ecab6a7c453ccbd38c397c3506a540b7cf0dd9104","commitment":["7e22f970daf6ac5b07b55bd7fc0af6dea199ab847dc34fc92a6f8641a1bb8e","291bb78d7e4ef124f5aa6a36cbcf8c276e70fbb4e208212e916d762fc42c1bbc"],"ciphersuite":"FROST(Ed25519, SHA-512)"}"#;
|
||||
|
||||
let mut invalid_input = input.as_bytes();
|
||||
// let mut invalid_input = input.as_bytes();
|
||||
|
||||
let expected = request_inputs(&mut invalid_input, &mut test_logger);
|
||||
assert!(expected.is_err())
|
||||
}
|
||||
// let expected = request_inputs(&mut invalid_input, &mut test_logger);
|
||||
// assert!(expected.is_err())
|
||||
// }
|
||||
|
||||
#[test]
|
||||
fn check_key_package_generation() {
|
||||
let config = Round1Config {
|
||||
secret_share: serde_json::from_str(SECRET_SHARE_JSON).unwrap(),
|
||||
};
|
||||
// #[test]
|
||||
// fn check_key_package_generation() {
|
||||
// let config = Round1Config {
|
||||
// secret_share: serde_json::from_str(SECRET_SHARE_JSON).unwrap(),
|
||||
// };
|
||||
|
||||
let expected = KeyPackage::new(
|
||||
Identifier::try_from(1).unwrap(),
|
||||
SigningShare::deserialize(<[u8; 32]>::from_hex(SIGNING_SHARE).unwrap()).unwrap(),
|
||||
VerifyingShare::deserialize(<[u8; 32]>::from_hex(PUBLIC_KEY).unwrap()).unwrap(),
|
||||
VerifyingKey::from_hex(GROUP_PUBLIC_KEY).unwrap(),
|
||||
);
|
||||
let key_package = generate_key_package(&config).unwrap();
|
||||
// let expected = KeyPackage::new(
|
||||
// Identifier::try_from(1).unwrap(),
|
||||
// SigningShare::deserialize(<[u8; 32]>::from_hex(SIGNING_SHARE).unwrap()).unwrap(),
|
||||
// VerifyingShare::deserialize(<[u8; 32]>::from_hex(PUBLIC_KEY).unwrap()).unwrap(),
|
||||
// VerifyingKey::from_hex(GROUP_PUBLIC_KEY).unwrap(),
|
||||
// );
|
||||
// let key_package = generate_key_package(&config).unwrap();
|
||||
|
||||
assert!(expected == key_package)
|
||||
}
|
||||
// assert!(expected == key_package)
|
||||
// }
|
||||
|
||||
#[test]
|
||||
fn check_key_package_generation_fails_with_invalid_secret_share() {
|
||||
let input = r#"{"identifier":"0100000000000000000000000000000000000000000000000000000000000000","value":"afc0ba51fd450297725f9efe714400d51a1180a273177b5dd8ad3b8cba41560d","commitment":["087e22f970daf6ac5b07b55bd7fc0af6dea199ab847dc34fc92a6f8641a1bb8e","291bb78d7e4ef124f5aa6a36cbcf8c276e70fbb4e208212e916d762fc42c1bbc"],"ciphersuite":"FROST(Ed25519, SHA-512)"}"#;
|
||||
let config = Round1Config {
|
||||
secret_share: serde_json::from_str(input).unwrap(),
|
||||
};
|
||||
let key_package = generate_key_package(&config);
|
||||
assert!(key_package.is_err());
|
||||
}
|
||||
// #[test]
|
||||
// fn check_key_package_generation_fails_with_invalid_secret_share() {
|
||||
// let input = r#"{"identifier":"0100000000000000000000000000000000000000000000000000000000000000","value":"afc0ba51fd450297725f9efe714400d51a1180a273177b5dd8ad3b8cba41560d","commitment":["087e22f970daf6ac5b07b55bd7fc0af6dea199ab847dc34fc92a6f8641a1bb8e","291bb78d7e4ef124f5aa6a36cbcf8c276e70fbb4e208212e916d762fc42c1bbc"],"ciphersuite":"FROST(Ed25519, SHA-512)"}"#;
|
||||
// let config = Round1Config {
|
||||
// secret_share: serde_json::from_str(input).unwrap(),
|
||||
// };
|
||||
// let key_package = generate_key_package(&config);
|
||||
// assert!(key_package.is_err());
|
||||
// }
|
||||
|
||||
// #[test]
|
||||
// fn check_print_values() {
|
||||
|
|
Loading…
Reference in New Issue