diff --git a/.gitignore b/.gitignore index a78d845..e6ec902 100644 --- a/.gitignore +++ b/.gitignore @@ -12,4 +12,7 @@ Cargo.lock # MSVC Windows builds of rustc generate these, which store debugging information *.pdb -elf/ \ No newline at end of file +elf/ + +# code generated files +src/git_info.rs \ No newline at end of file diff --git a/.vscode/settings.json b/.vscode/settings.json index 207a3f2..fa3652b 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,6 +1,6 @@ { "rust-analyzer.linkedProjects": [ - "./crates/share_exchange_prove/Cargo.toml", + "./crates/bad_share_exchange_prove/Cargo.toml", "./crates/finalization_prove/Cargo.toml", "./crates/dvt_abi_host/Cargo.toml", "./crates/dvt_abi/Cargo.toml", diff --git a/Cargo.toml b/Cargo.toml index 5b26a26..cfdac5b 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -26,14 +26,17 @@ members = [ [dependencies] hex = "0.4.3" sp1-sdk = "3.4.0" + text_io = "0.1.12" -bls12_381 = "0.8.0" serde = { version = "1.0", features = ["derive"] } serde_json = "1.0" clap = { version = "4", features = ["derive"] } dvt_abi = { path = "crates/dvt_abi" } dvt_abi_host = { path = "crates/dvt_abi_host" } jsonschema = "0.16" +anyhow = "1.0.96" +colored = "3.0.0" +strip-ansi-escapes = "0.2.1" [build-dependencies] sp1-build = "4.0.0" diff --git a/Makefile b/Makefile index 8a3afea..3bacd5c 100644 --- a/Makefile +++ b/Makefile @@ -5,13 +5,22 @@ # Variables SHELL := /usr/bin/env bash REPO_ROOT := $(shell git rev-parse --show-toplevel) -TEST_SCRIPT := $(REPO_ROOT)/scripts/run.sh +TEST_SCRIPT := $(REPO_ROOT)/script/run.sh help: @echo "Makefile targets:" @echo " test Run all tests using the run_tests.sh script" @echo " help Show this help message" +install-git-hooks: + @ls -R ./.git/hooks > before.txt + @cp -r ./script/hooks/ ./.git/ + @chmod +x ./.git/hooks/pre-commit + @ls -R ./.git/hooks > after.txt + @diff before.txt after.txt || true + @rm before.txt after.txt + @echo "Hooks installed successfully." + test: @if [ ! -f "$(TEST_SCRIPT)" ]; then \ echo "Error: run_tests.sh not found in repository root."; \ diff --git a/build.rs b/build.rs index 4c43475..24e548d 100644 --- a/build.rs +++ b/build.rs @@ -1,4 +1,58 @@ +use std::fs; +use std::path::Path; +use std::process::Command; + fn main() { - sp1_build::build_program("crates/share_exchange_prove"); + let commit_hash = Command::new("git") + .args(["rev-parse", "HEAD"]) + .output() + .map(|output| String::from_utf8_lossy(&output.stdout).trim().to_string()) + .unwrap_or_else(|_| "unknown".to_string()); + + let uncommitted_output = Command::new("git") + .args(["status", "--porcelain"]) + .output() + .map(|output| String::from_utf8_lossy(&output.stdout).trim().to_string()) + .unwrap_or_else(|_| "".to_string()); + + let uncommitted_files: Vec = uncommitted_output + .lines() + .filter_map(|line| { + let file_path = line[3..].to_string(); // Remove git status prefixes (e.g., " M filename.txt") + if file_path.starts_with("crates/") { + Some(file_path) + } else { + None + } + }) + .collect(); + + let uncommitted_flag = !uncommitted_files.is_empty(); + + // Convert the file list into a Rust array representation + let uncommitted_files_array = format!( + "[{}]", + uncommitted_files + .iter() + .map(|file| format!(r#""{}""#, file)) + .collect::>() + .join(", ") + ); + + let git_info_content = format!( + r#"#[rustfmt::skip] +pub const COMMIT_HASH: &str = "{commit_hash}"; +pub const UNCOMMITTED_CHANGES: bool = {uncommitted_flag}; +pub const UNCOMMITTED_FILES: &[&str] = &{uncommitted_files_array}; +"# + ); + + let dest_path = Path::new("./src/git_info.rs"); + + fs::write(dest_path, git_info_content).expect("Failed to write git_info.rs"); + + sp1_build::build_program("crates/bad_share_exchange_prove"); sp1_build::build_program("crates/finalization_prove"); + sp1_build::build_program("crates/bad_parial_key_prove"); + sp1_build::build_program("crates/bad_encrypted_share_prove"); } diff --git a/crates/bad_encrypted_share_prove/Cargo.toml b/crates/bad_encrypted_share_prove/Cargo.toml new file mode 100644 index 0000000..255f5bf --- /dev/null +++ b/crates/bad_encrypted_share_prove/Cargo.toml @@ -0,0 +1,20 @@ +[package] +name = "bad_encrypted_share_prove" +version = "1.1.0" +edition = "2021" +publish = false + +[dependencies] +sp1-zkvm = "3.4.0" +ff = "0.13.0" +rand = "0.8.5" +group = "0.13.0" +serde = "1.0.216" +dvt_abi = { path = "../dvt_abi" } +bls_utils = { path = "../bls_utils" } +bls12_381 = { git = "https://github.com/NDobrev/bls12_381", branch="fp-to-bytes", features = ["experimental"]} +hex = "0.4" +chacha20 = "0.9.1" +sha2 = "0.9" + +hex-literal = "0.4.1" \ No newline at end of file diff --git a/crates/bad_encrypted_share_prove/src/main.rs b/crates/bad_encrypted_share_prove/src/main.rs new file mode 100644 index 0000000..da9854d --- /dev/null +++ b/crates/bad_encrypted_share_prove/src/main.rs @@ -0,0 +1,327 @@ +#![no_main] + +sp1_zkvm::entrypoint!(main); + +use std::result; + +use bls_utils::{self, bls, VerificationErrors}; + +use chacha20::cipher::{KeyIvInit, StreamCipher, StreamCipherSeek}; +use chacha20::{ChaCha20, Key, Nonce}; + +use bls12_381::{self, G1Affine, G1Projective, G2Affine}; +use dvt_abi::{AbiInitialCommitment, BLS_ID_SIZE}; +use sha2::{Digest, Sha256}; +use std::fmt; + +fn new_chacha20_cipher(base: &[u8], key_salt: &str, nonce_salt: &str) -> ChaCha20 { + let mut key_hasher = Sha256::new(); + key_hasher.update(base); + //key_hasher.update(key_salt.as_bytes()); + let key_hash = key_hasher.finalize(); + println!("key_hash: {}", hex::encode(key_hash)); + let key = Key::from_slice(&key_hash[..32]); + + let mut nonce_hasher = Sha256::new(); + nonce_hasher.update(base); + //nonce_hasher.update(nonce_salt.as_bytes()); + let nonce_hash = nonce_hasher.finalize(); + println!("nonce_hash: {}", hex::encode(&nonce_hash[..12])); + let nonce = Nonce::from_slice(&nonce_hash[..12]); + + ChaCha20::new(key, nonce) +} + +mod sealed { + pub trait Sealed {} +} + +pub trait ReadPrimitive: sealed::Sealed + Sized { + fn from_bytes(bytes: &[u8]) -> Self; +} + +impl sealed::Sealed for u8 {} +impl ReadPrimitive for u8 { + fn from_bytes(bytes: &[u8]) -> Self { + bytes[0] + } +} + +impl sealed::Sealed for i8 {} +impl ReadPrimitive for i8 { + fn from_bytes(bytes: &[u8]) -> Self { + bytes[0] as i8 + } +} + +impl sealed::Sealed for u16 {} +impl ReadPrimitive for u16 { + fn from_bytes(bytes: &[u8]) -> Self { + u16::from_le_bytes(bytes.try_into().unwrap()) + } +} + +impl sealed::Sealed for i16 {} +impl ReadPrimitive for i16 { + fn from_bytes(bytes: &[u8]) -> Self { + i16::from_le_bytes(bytes.try_into().unwrap()) + } +} + +impl sealed::Sealed for u32 {} +impl ReadPrimitive for u32 { + fn from_bytes(bytes: &[u8]) -> Self { + u32::from_le_bytes(bytes.try_into().unwrap()) + } +} + +impl sealed::Sealed for i32 {} +impl ReadPrimitive for i32 { + fn from_bytes(bytes: &[u8]) -> Self { + i32::from_le_bytes(bytes.try_into().unwrap()) + } +} + +#[derive(Debug)] +pub enum ReadError { + NotEnoughBytes { + pos: usize, + needed: usize, + remain: usize, + }, +} + +impl fmt::Display for ReadError { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + match self { + ReadError::NotEnoughBytes { + pos, + needed, + remain, + } => write!( + f, + "Not enough bytes at position {}, needed {}, but only {} remain.", + pos, needed, remain + ), + } + } +} + +impl std::error::Error for ReadError {} + +pub struct BinaryStream { + data: Vec, + pos: usize, +} + +impl BinaryStream { + pub fn new(data: Vec) -> Self { + Self { data, pos: 0 } + } + + fn bytes_left(&self) -> usize { + self.data.len().saturating_sub(self.pos) + } + + pub fn read_byte_array(&mut self) -> Result<[u8; N], ReadError> { + if self.bytes_left() < N { + // Slice a portion of the data that remains (up to N or the end) + return Err(ReadError::NotEnoughBytes { + pos: self.pos, + needed: N, + remain: self.bytes_left(), + }); + } + let bytes = self.data[self.pos..self.pos + N].try_into().unwrap(); + self.pos += N; + println!("Read bytes: {}", hex::encode(&bytes)); + Ok(bytes) + } + + pub fn read(&mut self) -> Result { + let size = std::mem::size_of::(); + if self.bytes_left() < size { + return Err(ReadError::NotEnoughBytes { + pos: self.pos, + needed: size, + remain: self.bytes_left(), + }); + } + let bytes = &self.data[self.pos..self.pos + size]; + self.pos += size; + println!("Read bytes: {}", hex::encode(bytes)); + Ok(T::from_bytes(bytes)) + } + + pub fn finalize(&mut self) { + assert!(self.pos == self.data.len()); + } +} + +fn parse_message( + msg: &[u8], + settings: dvt_abi::AbiGenerateSettings, + base_pubkeys: Vec, + commitment_hashes: Vec, + receiver_commitment_hash: dvt_abi::SHA256, +) -> Result { + let mut stream = BinaryStream { + data: msg.to_vec(), + pos: 0, + }; + + let gen_id = stream + .read_byte_array::<{ dvt_abi::GEN_ID_SIZE }>() + .map_err(|e| format!("Invalid gen_id: {e}"))?; + let _msg_type = stream + .read::() + .map_err(|e| format!("Invalid msg_type: {e}"))?; + let secret = stream + .read_byte_array::<{ dvt_abi::BLS_SECRET_SIZE }>() + .map_err(|e| format!("Invalid secret: {e}"))?; + let commitment_hash = stream + .read_byte_array::<{ dvt_abi::SHA256_SIZE }>() + .map_err(|e| format!("Invalid commitment_hash: {e}"))?; + let commitment_pubkey = stream + .read_byte_array::<{ dvt_abi::BLS_PUBKEY_SIZE }>() + .map_err(|e| format!("Invalid commitment_pubkey: {e}"))?; + let commitment_signature = stream + .read_byte_array::<{ dvt_abi::BLS_SIGNATURE_SIZE }>() + .map_err(|e| format!("Invalid commitment_signature: {e}"))?; + + stream.finalize(); + + let mut initial_commitment = dvt_abi::AbiInitialCommitment { + settings: settings, + base_pubkeys: base_pubkeys, + hash: [0u8; dvt_abi::SHA256_SIZE], + }; + + let initial_commitment_hash = bls_utils::compute_initial_commitment_hash(&initial_commitment); + + initial_commitment.hash = initial_commitment_hash.clone(); + // println!("gen_id {}", hex::encode(&gen_id)); + // println!("_msg_type {}", hex::encode(&[_msg_type])); + // println!("secret {}", hex::encode(&secret)); + // println!("commitment_hash {}", hex::encode(&commitment_hash)); + // println!("commitment_pubkey {}", hex::encode(&commitment_pubkey)); + // println!("commitment_signature {}", hex::encode(&commitment_signature)); + Ok(dvt_abi::AbiBlsSharedData { + verification_hashes: commitment_hashes, + initial_commitment: initial_commitment, + seeds_exchange_commitment: dvt_abi::AbiSeedExchangeCommitment { + initial_commitment_hash: initial_commitment_hash, + shared_secret: dvt_abi::AbiExchangedSecret { + secret: secret, + dst_base_hash: receiver_commitment_hash, + }, + commitment: dvt_abi::AbiCommitment { + hash: commitment_hash, + pubkey: commitment_pubkey, + signature: commitment_signature, + }, + }, + }) +} + +pub fn main() { + let data = bls_utils::read_bad_encrypted_share(); + + let pk = G1Affine::from_compressed(&data.sender_pubkey) + .into_option() + .unwrap(); + let sig = G2Affine::from_compressed(&data.signature) + .into_option() + .unwrap(); + + let p = bls12_381::pairing(&pk, &sig); + + let mut cipher2 = new_chacha20_cipher(p.to_bytes_raw().as_slice(), "", ""); + + let mut descrypted = data.encrypted_message.clone(); + cipher2.apply_keystream(&mut descrypted); + println!("decrypted {:?}", hex::encode(&descrypted)); + let data = match parse_message( + &descrypted, + data.settings, + data.base_pubkeys, + data.base_hashes, + data.receiver_commitment_hash, + ) { + Ok(data) => data, + Err(e) => { + println!("Error: {}", e); + return; + } + }; + + if data.verification_hashes.len() != data.initial_commitment.settings.n as usize { + panic!("The number of verification hashes does not match the number of keys\n"); + } + + if data.initial_commitment.settings.n < data.initial_commitment.settings.k { + panic!("N should be greater than or equal to k\n"); + } + + let found = data + .verification_hashes + .iter() + .any(|h| h == &data.initial_commitment.hash); + + if !found { + panic!( + "The seed exchange commitment hash {} is not part of the verification hashes {} \n", + hex::encode(data.initial_commitment.hash), + data.verification_hashes + .iter() + .map(hex::encode) + .collect::>() + .join(", ") + ); + } + + if !bls_utils::verify_initial_commitment_hash(&data.initial_commitment) { + panic!("Unsalshable error while verifying commitment hash\n"); + } + + match bls_utils::verify_seed_exchange_commitment( + &data.verification_hashes, + &data.seeds_exchange_commitment, + &data.initial_commitment, + ) { + Ok(()) => { + println!("The share is valid. We can't that the prove participant share is corrupted."); + } + + Err(e) => { + if let Some(verification_error) = e.downcast_ref::() { + match verification_error { + VerificationErrors::SlashableError(err) => { + println!("Slashable error seed exchange commitment: {}", err); + + for h in data.verification_hashes.iter() { + println!("Verification hash: {}", hex::encode(h)); + sp1_zkvm::io::commit(h); + } + + println!( + "Perpetrator public key: {}", + hex::encode(data.seeds_exchange_commitment.commitment.pubkey) + ); + for byte in data.seeds_exchange_commitment.commitment.pubkey { + sp1_zkvm::io::commit(&byte); + } + + return; + } + VerificationErrors::UnslashableError(err) => { + panic!("Unslashable error seed exchange commitment: {}", err); + } + } + } else { + panic!("Unknown error seed exchange commitment: {}", e); + } + } + } + panic!("The seed exchange commitment is valid"); +} diff --git a/crates/bad_parial_key_prove/Cargo.toml b/crates/bad_parial_key_prove/Cargo.toml new file mode 100644 index 0000000..80c7895 --- /dev/null +++ b/crates/bad_parial_key_prove/Cargo.toml @@ -0,0 +1,16 @@ +[package] +name = "bad_parial_key_prove" +version = "1.1.0" +edition = "2021" +publish = false + +[dependencies] +sp1-zkvm = "3.4.0" +ff = "0.13.0" +rand = "0.8.5" +group = "0.13.0" +serde = "1.0.216" +dvt_abi = { path = "../dvt_abi" } +bls_utils = { path = "../bls_utils" } +hex = "0.4" +chacha20 = "0.9.1" \ No newline at end of file diff --git a/crates/bad_parial_key_prove/src/main.rs b/crates/bad_parial_key_prove/src/main.rs new file mode 100644 index 0000000..6845dee --- /dev/null +++ b/crates/bad_parial_key_prove/src/main.rs @@ -0,0 +1,41 @@ +#![no_main] + +sp1_zkvm::entrypoint!(main); + +use core::panic; + +use bls_utils::{self, VerificationErrors}; + +pub fn main() { + let data = bls_utils::read_bad_partial_share_data(); + match bls_utils::prove_wrong_final_key_generation(&data) { + Ok(()) => { + panic!("Can't prove wrong doing"); + } + Err(e) => { + if let Some(verification_error) = e.downcast_ref::() { + match verification_error { + VerificationErrors::SlashableError(e) => { + for h in data.generations.iter() { + println!("Verification hash: {}", hex::encode(h.base_hash)); + sp1_zkvm::io::commit(&h.base_hash); + } + + println!( + "Perpetrator public key: {}", + hex::encode(data.bad_partial.commitment.pubkey) + ); + for byte in data.bad_partial.commitment.pubkey { + sp1_zkvm::io::commit(&byte); + } + return; + } + VerificationErrors::UnslashableError(e) => { + panic!("Unslashable error while proving: {e}"); + } + } + } + } + } + panic!("Can't prove wrong doing"); +} diff --git a/crates/share_exchange_prove/Cargo.toml b/crates/bad_share_exchange_prove/Cargo.toml similarity index 63% rename from crates/share_exchange_prove/Cargo.toml rename to crates/bad_share_exchange_prove/Cargo.toml index 5e1e2fb..4ca8dbc 100644 --- a/crates/share_exchange_prove/Cargo.toml +++ b/crates/bad_share_exchange_prove/Cargo.toml @@ -1,17 +1,15 @@ [package] -name = "share_exchange_prove" +name = "bad_share_exchange_prove" version = "1.1.0" edition = "2021" publish = false [dependencies] sp1-zkvm = "3.4.0" -bls12_381 = { git = "https://github.com/sp1-patches/bls12_381", features = ["experimental"] } ff = "0.13.0" rand = "0.8.5" group = "0.13.0" serde = "1.0.216" dvt_abi = { path = "../dvt_abi" } bls_utils = { path = "../bls_utils" } -sha2 = "0.10" hex = "0.4" \ No newline at end of file diff --git a/crates/share_exchange_prove/src/main.rs b/crates/bad_share_exchange_prove/src/main.rs similarity index 53% rename from crates/share_exchange_prove/src/main.rs rename to crates/bad_share_exchange_prove/src/main.rs index 2944a92..a21798d 100644 --- a/crates/share_exchange_prove/src/main.rs +++ b/crates/bad_share_exchange_prove/src/main.rs @@ -9,7 +9,7 @@ use bls_utils::{self, VerificationErrors}; pub fn main() { let data = bls_utils::read_bls_shared_data_from_host(); - if data.verification_hashes.len() == data.initial_commitment.settings.n as usize { + if data.verification_hashes.len() != data.initial_commitment.settings.n as usize { panic!("The number of verification hashes does not match the number of keys\n"); } @@ -17,11 +17,12 @@ pub fn main() { panic!("N should be greater than or equal to k\n"); } - let found = data.verification_hashes.iter().find(|h| { - h == &&data.initial_commitment.hash - }); + let found = data + .verification_hashes + .iter() + .any(|h| h == &data.initial_commitment.hash); - if found.is_none() { + if !found { panic!("The seed exchange commitment is not part of the verification hashes\n"); } @@ -35,25 +36,38 @@ pub fn main() { &data.initial_commitment, ) { Ok(()) => { - println!("OK while verifying initial commitment"); + println!("The share is valid. We can't prove participant share is corrupted."); } + Err(e) => { if let Some(verification_error) = e.downcast_ref::() { match verification_error { VerificationErrors::SlashableError(err) => { - println!("Slashable error while verifying initial: {}", err); + println!("Slashable error seed exchange commitment: {}", err); + + for h in data.verification_hashes.iter() { + println!("Verification hash: {}", hex::encode(h)); + sp1_zkvm::io::commit(h); + } + + println!( + "Perpetrator public key: {}", + hex::encode(data.seeds_exchange_commitment.commitment.pubkey) + ); + for byte in data.seeds_exchange_commitment.commitment.pubkey { + sp1_zkvm::io::commit(&byte); + } + return; } VerificationErrors::UnslashableError(err) => { - println!("Unslashable error while verifying: {}", err); - panic!(); + panic!("Unslashable error seed exchange commitment: {}", err); } } } else { - panic!("Unknown error while verifying initial: {}", e); + panic!("Unknown error seed exchange commitment: {}", e); } } } - panic!("The seed exchange commitment is valid"); } diff --git a/crates/bls_utils/Cargo.toml b/crates/bls_utils/Cargo.toml index 778f4b4..7480b25 100644 --- a/crates/bls_utils/Cargo.toml +++ b/crates/bls_utils/Cargo.toml @@ -5,12 +5,16 @@ authors = { workspace = true } edition = { workspace = true } [dependencies] -bls12_381 = { git = "https://github.com/sp1-patches/bls12_381", features = ["experimental"] } ff = "0.13.0" rand = "0.8.5" group = "0.13.0" serde = "1.0.216" dvt_abi = { path = "../dvt_abi" } -sha2 = "0.10" hex = "0.4" -sp1-zkvm = "3.4.0" \ No newline at end of file +sp1-zkvm = "3.4.0" +sp1-lib = "3.4.0" +sha2 = "0.9" +bls_org = { package = "bls12_381", version = "0.8.0"} +bls12_381 = { git = "https://github.com/sp1-patches/bls12_381", tag = "bls12_381-v0.8.0-patch-v1" , features = ["experimental"]} + + diff --git a/crates/bls_utils/src/bls.rs b/crates/bls_utils/src/bls.rs index 3a6c7ba..167ed74 100644 --- a/crates/bls_utils/src/bls.rs +++ b/crates/bls_utils/src/bls.rs @@ -7,6 +7,8 @@ use dvt_abi::{self}; use sha2::Sha256; use std::fmt; +use bls_org; + // https://en.wikipedia.org/wiki/Shamir%27s_Secret_Sharing // // In Shamir's secret sharing, a secret is encoded as a n-degree polynomial @@ -39,6 +41,21 @@ pub fn evaluate_polynomial(cfs: Vec, x: Scalar) -> G1Affine { } } +pub fn evaluate_polynomial_g1_projection(cfs: &Vec, x: Scalar) -> G1Projective { + let count = cfs.len(); + if count == 0 { + G1Projective::identity() + } else if count == 1 { + G1Projective::from(cfs[0]) + } else { + let mut y = cfs[count - 1]; + for i in 2..(count + 1) { + y = y * x + cfs[count - i]; + } + y + } +} + pub fn lagrange_interpolation( y_vec: &Vec, x_vec: &Vec, @@ -82,34 +99,108 @@ pub fn lagrange_interpolation( b *= v; } } - let li0 = a * b.invert().unwrap(); + let li0 = a * b.invert().expect("invalid valid point"); let tmp = y_vec[i] * li0; r = r + tmp; } Ok(G1Affine::from(r)) } -pub fn hash_message_to_g2(msg: &[u8], domain: &[u8]) -> G2Projective { - >>::hash_to_curve([msg], domain) -} - -pub fn bls_verify(pubkey: &G1Affine, signature: &G2Affine, message: &[u8]) -> bool { +pub fn hash_message_to_g2(msg: &[u8]) -> G2Projective { let domain = b"BLS_SIG_BLS12381G2_XMD:SHA-256_SSWU_RO_POP_"; - let pk_projective = G1Projective::from(pubkey); - let sig_projective = G2Projective::from(signature); + >>::hash_to_curve(msg, domain) +} - let hashed_msg = hash_message_to_g2(message, domain); - let left = pairing(&G1Affine::from(pk_projective), &G2Affine::from(hashed_msg)); - let right = pairing(&G1Affine::generator(), &G2Affine::from(sig_projective)); +pub fn bls_verify_precomputed_hash( + pubkey: &G1Affine, + signature: &G2Affine, + hashed_msg: &G2Affine, +) -> bool { + let left = pairing(&pubkey, &hashed_msg); + let right = pairing(&G1Affine::generator(), &signature); left == right } +pub fn bls_verify(pubkey: &G1Affine, signature: &G2Affine, message: &[u8]) -> bool { + let hashed_msg = hash_message_to_g2(message); + let msg_affine = G2Affine::from(hashed_msg); + bls_verify_precomputed_hash(pubkey, signature, &msg_affine) +} pub fn bls_id_from_u32(id: u32) -> Scalar { let unwrapped_le: [u8; 4] = (id as u32).to_le_bytes(); let mut bytes = [0u8; 32]; bytes[..4].copy_from_slice(&unwrapped_le); - Scalar::from_bytes(&bytes).unwrap() + Scalar::from_bytes(&bytes).expect("Invalid id") +} + +fn uncompress_bls_pubkey_slow( + pubkey: &dvt_abi::BLSPubkey, +) -> Result<[u8; 96], Box> { + // We use the original bls library to verify the key + // Becaus the sp1 library will crash if the key is invalid + let key = bls_org::G1Affine::from_compressed(&pubkey); + + return match key.into_option() { + Some(key) => Ok(key.to_uncompressed()), + None => Err(Box::new(std::io::Error::new( + std::io::ErrorKind::InvalidData, + format!("Invalid public key {}", hex::encode(&pubkey)), + ))), + }; +} + +fn to_g1_affine_slow(pubkey: &dvt_abi::BLSPubkey) -> Result> { + let bytes = uncompress_bls_pubkey_slow(&pubkey)?; + + let key = G1Affine::from_uncompressed(&bytes); + match key.into_option() { + Some(key) => Ok(key), + None => Err(Box::new(std::io::Error::new( + std::io::ErrorKind::InvalidData, + format!("Invalid public key {}", hex::encode(&pubkey)), + ))), + } +} + +fn uncompress_bls_signature_slow( + signature: &dvt_abi::BLSSignature, +) -> Result<[u8; 192], Box> { + // We use the original bls library to verify the key + // Becaus the sp1 library will crash if the key is invalid + let key = bls_org::G2Affine::from_compressed(&signature); + + return match key.into_option() { + Some(key) => Ok(key.to_uncompressed()), + None => Err(Box::new(std::io::Error::new( + std::io::ErrorKind::InvalidData, + "Invalid signature", + ))), + }; +} +fn to_g2_affine_slow( + signature: &dvt_abi::BLSSignature, +) -> Result> { + let bytes = uncompress_bls_signature_slow(&signature)?; + + let key = G2Affine::from_uncompressed(&bytes); + match key.into_option() { + Some(key) => Ok(key), + None => Err(Box::new(std::io::Error::new( + std::io::ErrorKind::InvalidData, + "Invalid signature", + ))), + } +} + +pub fn to_g1_affine(pubkey: &dvt_abi::BLSPubkey) -> G1Affine { + G1Affine::from_compressed(&pubkey) + .into_option() + .expect("G1 point is not torsion free.") +} + +pub fn to_g1_projection(pubkey: &dvt_abi::BLSPubkey) -> G1Projective { + G1Projective::from(to_g1_affine(pubkey)) } #[derive(PartialEq)] @@ -122,6 +213,41 @@ pub struct SecretKey { key: Scalar, } +#[derive(PartialEq)] +pub struct Signature { + sig: G2Affine, +} + +impl Signature { + pub fn to_hex(&self) -> String { + hex::encode(self.sig.to_compressed()) + } + + pub fn from_bytes( + bytes: &dvt_abi::BLSSignature, + ) -> Result> { + let g2 = G2Affine::from_compressed(&bytes).into_option(); + match g2 { + Some(g2) => Ok(Signature { sig: g2 }), + None => Err(Box::new(std::io::Error::new( + std::io::ErrorKind::InvalidData, + "Invalid signature", + ))), + } + } + + pub fn from_bytes_safe( + bytes: &dvt_abi::BLSSignature, + ) -> Result> { + let g2 = to_g2_affine_slow(bytes)?; + Ok(Signature { sig: g2 }) + } + + pub fn from_g2(g2: &G2Affine) -> Signature { + Signature { sig: *g2 } + } +} + impl PublicKey { pub fn to_hex(&self) -> String { hex::encode(self.key.to_compressed()) @@ -133,21 +259,32 @@ impl PublicKey { Some(g1) => Ok(PublicKey { key: g1 }), None => Err(Box::new(std::io::Error::new( std::io::ErrorKind::InvalidData, - "Invalid public key", + format!("Invalid public key {}", hex::encode(&bytes)), ))), } } + pub fn from_bytes_safe( + bytes: &dvt_abi::BLSPubkey, + ) -> Result> { + let g1 = to_g1_affine_slow(bytes)?; + Ok(PublicKey { key: g1 }) + } + pub fn from_g1(g1: &G1Affine) -> PublicKey { PublicKey { key: *g1 } } - pub fn verify_signature(&self, message: &[u8], signature: &dvt_abi::BLSSignature) -> bool { - bls_verify( - &self.key, - &G2Affine::from_compressed(signature).into_option().unwrap(), - message, - ) + pub fn verify_signature(&self, message: &[u8], signature: &Signature) -> bool { + bls_verify(&self.key, &signature.sig, message) + } + + pub fn verify_signature_precomputed_hash( + &self, + hashed_msg: &G2Affine, + signature: &Signature, + ) -> bool { + bls_verify_precomputed_hash(&self.key, &signature.sig, hashed_msg) } pub fn eq(&self, g1: &G1Affine) -> bool { @@ -168,18 +305,20 @@ impl SecretKey { let sk = Scalar::from_bytes(&le_bytes); - if sk.is_none().into() { - return Err(Box::new(std::io::Error::new( + match sk.into_option() { + Some(sk) => Ok(SecretKey { key: sk }), + None => Err(Box::new(std::io::Error::new( std::io::ErrorKind::InvalidData, "Invalid secret key", - ))); + ))), } - - Ok(SecretKey { key: sk.unwrap() }) } pub fn to_bytes(&self) -> [u8; 32] { - self.key.to_bytes() + let mut bytes = self.key.to_bytes(); + // Convert them to big-endian + bytes.reverse(); + return bytes; } } @@ -195,6 +334,30 @@ impl fmt::Debug for SecretKey { } } +impl fmt::Debug for Signature { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + write!(f, "Signature({})", self.to_hex()) + } +} + +impl fmt::Display for PublicKey { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + write!(f, "PublicKey({})", self.to_hex()) + } +} + +impl fmt::Display for SecretKey { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + write!(f, "SecretKey({})", hex::encode(self.to_bytes())) + } +} + +impl fmt::Display for Signature { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + write!(f, "Signature({})", self.to_hex()) + } +} + #[cfg(test)] mod tests { use dvt_abi::{BLSPubkey, BLSSignature}; diff --git a/crates/bls_utils/src/input.rs b/crates/bls_utils/src/input.rs index 544d623..84f2eda 100644 --- a/crates/bls_utils/src/input.rs +++ b/crates/bls_utils/src/input.rs @@ -58,7 +58,7 @@ fn read_hash_from_host() -> dvt_abi::SHA256 { } fn read_byte_vec_from_host() -> Vec { - let len = sp1_zkvm::io::read(); + let len = sp1_zkvm::io::read::(); let mut result = Vec::with_capacity(len as usize); for _ in 0..len { result.push(sp1_zkvm::io::read()); @@ -74,12 +74,6 @@ fn read_settings_from_host() -> dvt_abi::AbiGenerateSettings { } } -fn read_verification_vector_from_host(k: u8) -> dvt_abi::AbiVerificationVector { - dvt_abi::AbiVerificationVector { - pubkeys: read_vec_from_host(k), - } -} - fn read_commitment_from_host() -> dvt_abi::AbiCommitment { dvt_abi::AbiCommitment { hash: read_hash_from_host(), @@ -91,18 +85,16 @@ fn read_commitment_from_host() -> dvt_abi::AbiCommitment { fn read_initial_commitment_from_host() -> dvt_abi::AbiInitialCommitment { let hash = read_hash_from_host(); let settings = read_settings_from_host(); - let verification_vector = read_verification_vector_from_host(settings.k); + let base_pubkeys = read_vec_from_host(settings.k); dvt_abi::AbiInitialCommitment { hash: hash, settings: settings, - verification_vector: verification_vector, + base_pubkeys: base_pubkeys, } } fn read_exchange_secret_from_host() -> dvt_abi::AbiExchangedSecret { dvt_abi::AbiExchangedSecret { - src_id: read_bls_id_from_host(), - dst_id: read_bls_id_from_host(), secret: read_secret_from_host(), dst_base_hash: read_hash_from_host(), } @@ -119,22 +111,26 @@ fn read_seeds_exchange_commitment_from_host() -> dvt_abi::AbiSeedExchangeCommitm } } +fn read_signle_generation(k: u8) -> dvt_abi::AbiGeneration { + let verification_vector = read_vec_from_host(k); + let base_hash = read_hash_from_host(); + let partial_pubkey = read_pubkey_from_host(); + let message = read_byte_vec_from_host(); + let message_signature = read_signature_from_host(); + + dvt_abi::AbiGeneration { + verification_vector: verification_vector, + base_hash: base_hash, + partial_pubkey: partial_pubkey, + message_cleartext: message, + message_signature: message_signature, + } +} + fn read_generation_data(n: u8, k: u8) -> Vec { let mut result = Vec::new(); for _ in 0..n { - let verification_vector = read_vec_from_host(k); - let base_hash = read_hash_from_host(); - let partial_pubkey = read_pubkey_from_host(); - let message = read_byte_vec_from_host(); - let message_signature = read_signature_from_host(); - - result.push(dvt_abi::AbiGeneration { - verification_vector: verification_vector, - base_hash: base_hash, - partial_pubkey: partial_pubkey, - message_cleartext: message, - message_signature: message_signature, - }); + result.push(read_signle_generation(k)); } result } @@ -142,7 +138,7 @@ fn read_generation_data(n: u8, k: u8) -> Vec { pub fn read_bls_shared_data_from_host() -> dvt_abi::AbiBlsSharedData { let inital_commitment = read_initial_commitment_from_host(); let seeds_exchange_commitment = read_seeds_exchange_commitment_from_host(); - let verification_hashes = read_vec_from_host(inital_commitment.settings.k); + let verification_hashes = read_vec_from_host(inital_commitment.settings.n); dvt_abi::AbiBlsSharedData { verification_hashes: verification_hashes, initial_commitment: inital_commitment, @@ -160,3 +156,60 @@ pub fn read_finalization_data() -> dvt_abi::AbiFinalizationData { aggregate_pubkey: aggregate_pubkey, } } + +fn read_partial_generation_data(n: u8, k: u8) -> Vec { + let mut result = Vec::new(); + for _ in 0..n { + let verification_vector = read_vec_from_host(k); + let base_hash = read_hash_from_host(); + + result.push(dvt_abi::AbiBadPartialShareGeneration { + verification_vector: verification_vector, + base_hash: base_hash, + }); + } + result +} + +fn read_bad_partial_share() -> dvt_abi::AbiBadPartialShare { + let settings = read_settings_from_host(); + let data = read_signle_generation(settings.k); + let commitment = read_commitment_from_host(); + dvt_abi::AbiBadPartialShare { + settings: settings, + data: data, + commitment: commitment, + } +} + +pub fn read_bad_partial_share_data() -> dvt_abi::AbiBadPartialShareData { + let settings = read_settings_from_host(); + let generations = read_partial_generation_data(settings.n, settings.k); + let bad_partial = read_bad_partial_share(); + dvt_abi::AbiBadPartialShareData { + settings: settings, + generations: generations, + bad_partial: bad_partial, + } +} + +pub fn read_bad_encrypted_share() -> dvt_abi::AbiBadEncryptedShare { + let sender_pubkey = read_pubkey_from_host(); + let signature = read_signature_from_host(); + let receiver_pubkey = read_pubkey_from_host(); + let receiver_commitment_hash = read_hash_from_host(); + let encrypted_message = read_byte_vec_from_host(); + let settings = read_settings_from_host(); + let base_hashes = read_vec_from_host::(settings.n); + let base_pubkeys = read_vec_from_host::(settings.k); + dvt_abi::AbiBadEncryptedShare { + sender_pubkey: sender_pubkey, + signature: signature, + receiver_pubkey: receiver_pubkey, + receiver_commitment_hash: receiver_commitment_hash, + encrypted_message: encrypted_message, + settings: settings, + base_hashes: base_hashes, + base_pubkeys: base_pubkeys, + } +} diff --git a/crates/bls_utils/src/lib.rs b/crates/bls_utils/src/lib.rs index eb371cf..03dbe11 100644 --- a/crates/bls_utils/src/lib.rs +++ b/crates/bls_utils/src/lib.rs @@ -2,8 +2,12 @@ pub mod bls; pub mod input; pub mod verification; -pub use input::{read_bls_shared_data_from_host, read_finalization_data}; +pub use input::{ + read_bad_encrypted_share, read_bad_partial_share_data, read_bls_shared_data_from_host, + read_finalization_data, +}; pub use verification::{ - verify_generations, verify_initial_commitment_hash, verify_seed_exchange_commitment, VerificationErrors + compute_initial_commitment_hash, prove_wrong_final_key_generation, verify_generations, + verify_initial_commitment_hash, verify_seed_exchange_commitment, VerificationErrors, }; diff --git a/crates/bls_utils/src/verification.rs b/crates/bls_utils/src/verification.rs index ea414c5..160a6c8 100644 --- a/crates/bls_utils/src/verification.rs +++ b/crates/bls_utils/src/verification.rs @@ -1,10 +1,11 @@ use bls12_381::{G1Affine, G1Projective, G2Affine, Scalar}; -use dvt_abi::{self}; +use dvt_abi::{self, BLSPubkey, SHA256}; use sha2::{Digest, Sha256}; use crate::bls::{ - bls_id_from_u32, bls_verify, evaluate_polynomial, lagrange_interpolation, PublicKey, SecretKey, + bls_id_from_u32, evaluate_polynomial, evaluate_polynomial_g1_projection, hash_message_to_g2, + lagrange_interpolation, to_g1_affine, to_g1_projection, PublicKey, SecretKey, Signature, }; #[derive(Debug)] @@ -34,15 +35,17 @@ pub fn compute_seed_exchange_hash( let shared_secret = &seed_exchange.shared_secret; let mut hasher = Sha256::new(); - let sk = SecretKey::from_bytes(&shared_secret.secret).unwrap(); + let sk = SecretKey::from_bytes(&shared_secret.secret).expect("Invalid secret key"); hasher.update(&seed_exchange.initial_commitment_hash); hasher.update(&sk.to_bytes()); hasher.update(&shared_secret.dst_base_hash); - hasher.update(&shared_secret.src_id); - hasher.update(&shared_secret.dst_id); - hasher.finalize().to_vec().try_into().unwrap() + hasher + .finalize() + .to_vec() + .try_into() + .expect("Can't produce SHA256") } pub fn get_index_in_commitments( @@ -71,123 +74,106 @@ pub fn verify_seed_exchange_commitment( let commitment = &seed_exchange.commitment; let shared_secret = &seed_exchange.shared_secret; - if !bls_verify( - &G1Affine::from_compressed(&commitment.pubkey) - .into_option() - .unwrap(), - &G2Affine::from_compressed(&commitment.signature) - .into_option() - .unwrap(), - &commitment.hash, - ) { - // Return unslashable error - return Err(Box::new(VerificationErrors::UnslashableError( - String::from(format!( - "Invalid field seeds_exchange_commitment.commitment.signature {}\n", - hex::encode(commitment.signature) - )), - ))); - } + let pubkey = PublicKey::from_bytes_safe(&commitment.pubkey)?; - let sk = SecretKey::from_bytes(&shared_secret.secret); - if sk.is_err() { - return Err(Box::new(VerificationErrors::SlashableError(String::from( - format!( - "Invalid field seeds_exchange_commitment.shared_secret.secret: {} \n", - sk.unwrap_err() - ), + let signature = Signature::from_bytes(&commitment.signature)?; + + if !pubkey.verify_signature(&commitment.hash, &signature) { + return Err(Box::new(VerificationErrors::UnslashableError(format!( + "Invalid field seeds_exchange_commitment.commitment.signature {}, + message: {} + pubkey: {}, + \n", + hex::encode(&commitment.signature), + hex::encode(&commitment.hash), + hex::encode(&commitment.pubkey) )))); } - let sk = sk.unwrap(); + let sk = match SecretKey::from_bytes(&shared_secret.secret) { + Ok(sk) => sk, + Err(e) => { + return Err(Box::new(VerificationErrors::SlashableError(format!( + "Invalid field seeds_exchange_commitment.shared_secret.secret: {e} \n" + )))); + } + }; let computed_commitment_hash = compute_seed_exchange_hash(seed_exchange); if computed_commitment_hash.to_vec() != seed_exchange.commitment.hash { return Err(Box::new(VerificationErrors::SlashableError( - String::from(format!( + format!( "Invalid field seeds_exchange_commitment.commitment.hash. Expected: {:?}, got hash: {:?}\n", hex::encode(seed_exchange.commitment.hash), hex::encode(computed_commitment_hash.to_vec()) - )), + ), ))); } - let dest_id = get_index_in_commitments( + let dest_id = match get_index_in_commitments( verification_hashes, &seed_exchange.shared_secret.dst_base_hash, - ); - - if dest_id.is_err() { - return Err(Box::new(VerificationErrors::SlashableError(String::from( - format!( - "Invalid field seeds_exchange_commitment.shared_secret.dst_id: {} \n", - dest_id.unwrap_err() - ), - )))); - } - - let unwraped = dest_id.unwrap() + 1; - let test_id = bls_id_from_u32(unwraped); - - let mut cfst: Vec = Vec::new(); - for pubkey in &initial_commitment.verification_vector.pubkeys { - cfst.push(G1Affine::from_compressed(pubkey).into_option().unwrap()); - } + ) { + Ok(id) => id, + Err(e) => { + return Err(Box::new(VerificationErrors::SlashableError(format!( + "Invalid field seeds_exchange_commitment.shared_secret.dst_base_hash: {e} \n" + )))); + } + }; - let le_bytes = seed_exchange.shared_secret.dst_id.clone(); + // F(0) is always reserved for the aggregated key so we need to start from 1 + let dest_id = dest_id + 1; + let id = bls_id_from_u32(dest_id); - let id = Scalar::from_bytes(&le_bytes).unwrap(); + let cfst = initial_commitment + .base_pubkeys + .iter() + .into_iter() + .map(to_g1_affine) + .collect(); - if id != test_id { - return Err(Box::new(VerificationErrors::SlashableError(String::from( - "Invalid field seeds_exchange_commitment.shared_secret.dst_id\n", - )))); - } let eval_result = evaluate_polynomial(cfst, id); if !sk.to_public_key().eq(&eval_result) { - return Err(Box::new(VerificationErrors::SlashableError(String::from( - format!( - "Bad secret field : Expected secret with public key: {:?}, got public key: {:?}\n", - PublicKey::from_g1(&eval_result), - sk.to_public_key() - ), + return Err(Box::new(VerificationErrors::SlashableError(format!( + "Bad secret field : Expected secret with public key: {:?}, got public key: {:?}\n", + hex::encode(eval_result.to_compressed()), + sk.to_public_key() )))); } Ok(()) } -pub fn verify_initial_commitment_hash(commitment: &dvt_abi::AbiInitialCommitment) -> bool { +pub fn compute_initial_commitment_hash(commitment: &dvt_abi::AbiInitialCommitment) -> SHA256 { let mut hasher = Sha256::new(); + hasher.update(commitment.settings.gen_id); hasher.update([commitment.settings.n]); hasher.update([commitment.settings.k]); - hasher.update(commitment.settings.gen_id); - for pubkey in &commitment.verification_vector.pubkeys { + + let len = commitment.base_pubkeys.len() as u8; + hasher.update([len]); + + for pubkey in &commitment.base_pubkeys { hasher.update(&pubkey); } - let computed_hash = hasher.finalize().to_vec(); - computed_hash == commitment.hash + hasher + .finalize() + .to_vec() + .try_into() + .expect("Vec must be exactly 32 bytes") } -fn verify_generation_sig( - generation: &dvt_abi::AbiGeneration, -) -> Result<(), Box> { - let partial_pubkey = PublicKey::from_bytes(&generation.partial_pubkey)?; - if !partial_pubkey - .verify_signature(&generation.message_cleartext, &generation.message_signature) - { - return Err(Box::new(std::io::Error::new( - std::io::ErrorKind::InvalidData, - format!( - "Invalid signature {}", - hex::encode(generation.partial_pubkey) - ), - ))); - } - Ok(()) +pub fn verify_initial_commitment_hash(commitment: &dvt_abi::AbiInitialCommitment) -> bool { + print!( + "commitment.hash: {:?}, calced: {:?}\n", + hex::encode(commitment.hash), + hex::encode(compute_initial_commitment_hash(commitment)) + ); + compute_initial_commitment_hash(commitment) == commitment.hash } fn generate_initial_commitment( @@ -201,56 +187,90 @@ fn generate_initial_commitment( k: settings.k, gen_id: settings.gen_id, }, - verification_vector: dvt_abi::AbiVerificationVector { - pubkeys: generation.verification_vector.clone(), - }, - } -} - -fn print_vec_g1_as_hex(v: &Vec) { - for i in 0..v.len() { - println!("{} ", hex::encode(v[i].to_compressed())); + base_pubkeys: generation.verification_vector.clone(), } } -fn compute_agg_key_from_dvt( - verification_vectors: Vec, +fn agg_coefficients( + verification_vectors: &Vec>, ids: &Vec, -) -> Result> { - let verification_vectors: Vec> = verification_vectors +) -> Vec { + let verification_vectors: Vec> = verification_vectors .iter() - .map(|vector| -> Vec { + .map(|vector| -> Vec { vector - .pubkeys .iter() - .map(|pk: &[u8; 48]| G1Affine::from_compressed(&pk).into_option().unwrap()) + .map(|pk: &[u8; 48]| to_g1_projection(&pk)) .collect() }) .collect(); - let mut all_pts = Vec::new(); - - for i in 0..verification_vectors.len() { - let mut pts = Vec::new(); - let share_id = ids[i]; + let mut final_cfs = Vec::new(); + for i in 0..verification_vectors[0].len() { + let mut sum = G1Projective::identity(); for j in 0..verification_vectors.len() { - let pt = evaluate_polynomial(verification_vectors[j].clone(), share_id); - pts.push(pt); + sum = sum + verification_vectors[j][i]; } - all_pts.push(pts); + final_cfs.push(sum); } let mut final_keys = Vec::new(); + for i in 0..ids.len() { + let tmp = evaluate_polynomial_g1_projection(&final_cfs, ids[i]); + final_keys.push(tmp); + } + final_keys.iter().map(|x| G1Affine::from(x)).collect() +} - for i in 0..all_pts.len() { - let mut key: G1Affine = all_pts[i][0]; - for j in 1..all_pts[i].len() { - key = G1Affine::from(G1Projective::from(key) + G1Projective::from(all_pts[i][j])); +fn compute_agg_key_from_dvt( + verification_vectors: &Vec>, + ids: &Vec, +) -> Result> { + let coefficients = agg_coefficients(&verification_vectors, &ids); + let agg_key = lagrange_interpolation(&coefficients, &ids)?; + return Ok(PublicKey::from_g1(&agg_key)); +} + +pub fn verify_generation_hashes( + generations: &[dvt_abi::AbiGeneration], + settings: &dvt_abi::AbiGenerateSettings, +) -> Result<(), Box> { + if generations.len() == 0 { + return Err(Box::new(std::io::Error::new( + std::io::ErrorKind::InvalidData, + "Invalid number of generations", + ))); + } + for i in 1..generations.len() { + if generations[0].message_cleartext != generations[i].message_cleartext { + return Err(Box::new(std::io::Error::new( + std::io::ErrorKind::InvalidData, + "Invalid message cleartext", + ))); } - final_keys.push(key); } - let agg_key = lagrange_interpolation(&final_keys, &ids)?; - return Ok(agg_key); + let hashed_msg = G2Affine::from(&hash_message_to_g2(&generations[0].message_cleartext)); + + for (_, generation) in generations.iter().enumerate() { + let signature = Signature::from_bytes(&generation.message_signature)?; + let key = PublicKey::from_bytes(&generation.partial_pubkey)?; + if !key.verify_signature_precomputed_hash(&hashed_msg, &signature) { + return Err(Box::new(VerificationErrors::UnslashableError(format!( + "Invalid signature {}", + hex::encode(generation.message_signature) + )))); + } + + let initial_commitment = generate_initial_commitment(generation, &settings); + let ok = verify_initial_commitment_hash(&initial_commitment); + if !ok { + return Err(Box::new(VerificationErrors::UnslashableError(format!( + "Invalid initial commitment hash {}", + hex::encode(initial_commitment.hash) + )))); + } + } + Ok(()) } pub fn verify_generations( @@ -258,7 +278,6 @@ pub fn verify_generations( settings: &dvt_abi::AbiGenerateSettings, agg_key: &dvt_abi::BLSPubkey, ) -> Result<(), Box> { - if generations.len() != settings.n as usize { return Err(Box::new(std::io::Error::new( std::io::ErrorKind::InvalidData, @@ -266,73 +285,214 @@ pub fn verify_generations( ))); } + verify_generation_hashes(generations, settings)?; + let mut sorted = generations.to_vec(); sorted.sort_by(|a, b| a.base_hash.cmp(&b.base_hash)); - let verification_vectors = sorted + let verification_vectors: Vec> = sorted .iter() - .map(|generation| -> dvt_abi::AbiVerificationVector { - dvt_abi::AbiVerificationVector { - pubkeys: generation.verification_vector.clone(), - } - }) + .map(|generation| -> Vec { generation.verification_vector.clone() }) .collect(); - let ids = sorted + let ids: Vec = sorted .iter() .enumerate() .map(|(i, _)| -> Scalar { bls_id_from_u32((i + 1) as u32) }) .collect(); - let computed_key = compute_agg_key_from_dvt(verification_vectors, &ids)?; - - let agg_key = G1Affine::from_compressed(agg_key).into_option(); + let computed_key = compute_agg_key_from_dvt(&verification_vectors, &ids)?; + let agg_key = PublicKey::from_bytes(agg_key)?; - if agg_key.is_none() { - return Err(Box::new(std::io::Error::new( - std::io::ErrorKind::InvalidData, - "Invalid aggregate public key", - ))); - } - - let agg_key = agg_key.unwrap(); if computed_key != agg_key { return Err(Box::new(std::io::Error::new( std::io::ErrorKind::InvalidData, - format!("Computed key {} does not match aggregate public key {}", hex::encode(computed_key.to_compressed()), hex::encode(agg_key.to_compressed())), + format!( + "Computed key {} does not match aggregate public key {}", + computed_key, agg_key + ), ))); } - let partial_keys = sorted + let partial_keys: Vec = sorted .iter() .map(|generation| -> G1Affine { G1Affine::from_compressed(&generation.partial_pubkey) .into_option() - .unwrap() + .expect("Invalid public key") }) .collect(); - let computed_key = lagrange_interpolation(&partial_keys, &ids)?; + let computed_key = PublicKey::from_g1(&lagrange_interpolation(&partial_keys, &ids)?); if computed_key != agg_key { return Err(Box::new(std::io::Error::new( std::io::ErrorKind::InvalidData, - format!("Computed key {} does not match aggregate public key {}", hex::encode(computed_key.to_compressed()), hex::encode(agg_key.to_compressed())), + format!( + "Computed key {} does not match aggregate public key {}", + computed_key, agg_key + ), ))); } - for (_, generation) in generations.iter().enumerate() { - verify_generation_sig(generation)?; - let initial_commitment = generate_initial_commitment(generation, &settings); - let ok = verify_initial_commitment_hash(&initial_commitment); + Ok(()) +} + +pub fn compute_partial_share_hash( + settings: &dvt_abi::AbiGenerateSettings, + partial_share: &dvt_abi::AbiBadPartialShare, +) -> Vec { + let mut hasher = Sha256::new(); + hasher.update(&settings.gen_id); + hasher.update(&[settings.n]); + hasher.update(&[settings.k]); + + let len = partial_share.data.verification_vector.len() as u8; + hasher.update([len]); + + for pubkey in &partial_share.data.verification_vector { + hasher.update(&pubkey); + } + + hasher.update(&partial_share.data.base_hash); + hasher.update(&partial_share.data.partial_pubkey); + + let len = partial_share.data.message_cleartext.len() as u8; + hasher.update([len]); + hasher.update(&partial_share.data.message_cleartext); + hasher.update(&partial_share.data.message_signature); + + hasher.finalize().to_vec() +} + +pub fn prove_wrong_final_key_generation( + data: &dvt_abi::AbiBadPartialShareData, +) -> Result<(), Box> { + verify_commitment_signature(data)?; + // Verify that the generation base hashes are correct + + for (_, generation) in data.generations.iter().enumerate() { + let ok = verify_initial_commitment_hash(&dvt_abi::AbiInitialCommitment { + hash: generation.base_hash, + settings: data.settings.clone(), + base_pubkeys: generation.verification_vector.clone(), + }); if !ok { - return Err(Box::new(VerificationErrors::UnslashableError( - String::from(format!( - "Invalid initial commitment hash {}\n", - hex::encode(initial_commitment.hash) - )), - ))); + return Err(Box::new(VerificationErrors::UnslashableError(format!( + "Invalid generation base hash {}", + hex::encode(&generation.base_hash) + )))); } } + + let mut sorted_generation = data.generations.to_vec(); + sorted_generation.sort_by(|a, b| a.base_hash.cmp(&b.base_hash)); + + let perpetrator_index = + find_perpetrator_index(&data.bad_partial.data.base_hash, &sorted_generation)?; + + let key = match PublicKey::from_bytes_safe(&data.bad_partial.data.partial_pubkey) { + Ok(key) => key, + Err(e) => { + return Err(Box::new(VerificationErrors::SlashableError(format!( + "While uncompressing data.bad_partial.data.partial_pubkey {}", + e.to_string() + )))); + } + }; + + let sig = match Signature::from_bytes_safe(&data.bad_partial.data.message_signature) { + Ok(sig) => sig, + Err(e) => { + return Err(Box::new(VerificationErrors::SlashableError(format!( + "While uncompressing data.bad_partial.data.message_signature {}", + e.to_string() + )))); + } + }; + if !key.verify_signature(&data.bad_partial.data.message_cleartext, &sig) { + return Err(Box::new(VerificationErrors::SlashableError(format!( + "Invalid partial signature {} from key {}", + sig, key + )))); + } + + let perpetrator_bls_id = bls_id_from_u32((perpetrator_index + 1) as u32); + + let expected_key = compute_pubkey_share(sorted_generation, perpetrator_bls_id); + + if expected_key != key { + return Err(Box::new(VerificationErrors::SlashableError(format!( + "Computed key {} does not match expected key {}", + expected_key, key, + )))); + } + + Ok(()) +} + +fn verify_commitment_signature( + data: &dvt_abi::AbiBadPartialShareData, +) -> Result<(), Box> { + let computed_hash = compute_partial_share_hash(&data.settings, &data.bad_partial); + if computed_hash != data.bad_partial.commitment.hash { + return Err(Box::new(VerificationErrors::UnslashableError(format!( + "Invalid commitment hash expect {}, got {}", + hex::encode(&data.bad_partial.commitment.hash), + hex::encode(&computed_hash) + )))); + } + let key = PublicKey::from_bytes(&data.bad_partial.commitment.pubkey)?; + let sig = Signature::from_bytes(&data.bad_partial.commitment.signature)?; + // Verify that the commitment made by the participant has the correct hash and signature + + if !key.verify_signature(&data.bad_partial.commitment.hash, &sig) { + return Err(Box::new(VerificationErrors::UnslashableError(format!( + "Invalid commitment signature {} and key {}", + sig, key + )))); + } Ok(()) } + +fn find_perpetrator_index( + perpetrador_hash: &dvt_abi::SHA256, + sorted_generation: &Vec, +) -> Result> { + let mut perpetrator_index = None; + for i in 0..sorted_generation.len() { + if sorted_generation[i].base_hash == *perpetrador_hash { + perpetrator_index = Some(i); + } + } + let perpetrator_index = match perpetrator_index { + Some(i) => i, + None => { + return Err(Box::new(VerificationErrors::UnslashableError(format!( + "Could not find perpetrator generation {}", + hex::encode(perpetrador_hash) + )))); + } + }; + Ok(perpetrator_index) +} + +fn compute_pubkey_share( + sorted: Vec, + perpetrator_bls_id: Scalar, +) -> PublicKey { + let verification_vectors = sorted + .iter() + .map(|generation| -> Vec { generation.verification_vector.clone() }) + .collect(); + + let ids = sorted + .iter() + .enumerate() + .map(|(i, _)| -> Scalar { bls_id_from_u32((i + 1) as u32) }) + .collect(); + + let computed_keys = agg_coefficients(&verification_vectors, &ids); + let expected_key = evaluate_polynomial(computed_keys, perpetrator_bls_id); + PublicKey::from_g1(&expected_key) +} diff --git a/crates/dvt_abi/src/lib.rs b/crates/dvt_abi/src/lib.rs index 3577ec4..4602676 100644 --- a/crates/dvt_abi/src/lib.rs +++ b/crates/dvt_abi/src/lib.rs @@ -1,14 +1,15 @@ +use hex::decode; use serde::de::DeserializeOwned; use serde::Deserialize; - -use validator::Validate; - -use hex::decode; +use std::error::Error; use std::fs::File; use std::io::Read; +use std::path::Path; +use validator::Validate; -use std::error::Error; - +/// --------------------------------------------------------------------------- +/// Constants & Type Aliases +/// --------------------------------------------------------------------------- pub const BLS_SIGNATURE_SIZE: usize = 96; pub const BLS_PUBKEY_SIZE: usize = 48; pub const BLS_SECRET_SIZE: usize = 32; @@ -22,11 +23,9 @@ pub type BLSId = [u8; BLS_ID_SIZE]; pub type BLSSignature = [u8; BLS_SIGNATURE_SIZE]; pub type SHA256 = [u8; SHA256_SIZE]; -#[derive(Debug, Deserialize)] -pub struct DvtVerificationVector { - #[serde(rename(deserialize = "base_pubkeys"))] - pub pubkeys: Vec, -} +/// --------------------------------------------------------------------------- +/// DVT Data Structures (input side) +/// --------------------------------------------------------------------------- #[derive(Debug, Deserialize)] pub struct DvtGenerateSettings { @@ -41,8 +40,8 @@ pub type DvtVerificationHashes = Vec; pub struct DvtInitialCommitment { pub hash: String, pub settings: DvtGenerateSettings, - #[serde(rename(deserialize = "vvector"))] - pub verification_vector: DvtVerificationVector, + #[serde(rename(deserialize = "base_pubkeys"))] + pub base_pubkeys: Vec, } #[derive(Debug, Deserialize)] @@ -62,10 +61,6 @@ pub struct DvtShareExchangeCommitment { #[derive(Debug, Deserialize)] pub struct DvtExchangedSecret { - #[serde(rename(deserialize = "dst_share_id"))] - pub dst_id: String, - #[serde(rename(deserialize = "src_share_id"))] - pub src_id: String, #[serde(rename(deserialize = "shared_secret"))] pub secret: String, #[serde(rename(deserialize = "dst_base_hash"))] @@ -81,34 +76,74 @@ pub struct DvtShare { #[derive(Debug, Deserialize)] pub struct DvtBlsSharedData { #[serde(rename(deserialize = "base_hashes"))] - verification_hashes: DvtVerificationHashes, - initial_commitment: DvtInitialCommitment, - seeds_exchange_commitment: DvtShareExchangeCommitment, + pub verification_hashes: DvtVerificationHashes, + pub initial_commitment: DvtInitialCommitment, + pub seeds_exchange_commitment: DvtShareExchangeCommitment, } #[derive(Debug, Deserialize)] pub struct DvtGeneration { #[serde(rename(deserialize = "base_pubkeys"))] - verification_vector: Vec, - base_hash: String, - partial_pubkey: String, - message_cleartext: String, - message_signature: String, + pub verification_vector: Vec, + pub base_hash: String, + pub partial_pubkey: String, + pub message_cleartext: String, + pub message_signature: String, } #[derive(Debug, Deserialize)] pub struct DvtFinalizationData { - settings: DvtGenerateSettings, - generations: Vec, - aggregate_pubkey: String, + pub settings: DvtGenerateSettings, + pub generations: Vec, + pub aggregate_pubkey: String, } -#[derive(Debug)] -pub struct AbiVerificationVector { - pub pubkeys: Vec, +#[derive(Debug, Deserialize)] +pub struct DvtBadPartialShareGeneration { + #[serde(rename(deserialize = "base_pubkeys"))] + pub verification_vector: Vec, + pub base_hash: String, } -#[derive(Debug)] +#[derive(Debug, Deserialize)] +pub struct DvtBadPartialShare { + pub settings: DvtGenerateSettings, + pub data: DvtGeneration, + pub commitment: DvtCommitment, +} + +#[derive(Debug, Deserialize)] +pub struct DvtBadPartialShareData { + pub settings: DvtGenerateSettings, + pub generations: Vec, + pub bad_partial: DvtBadPartialShare, +} + +#[derive(Debug, Deserialize)] +pub struct DvtBadEncryptedShare { + #[serde(rename(deserialize = "sender_pubkey"))] + pub sender_pubkey: String, + #[serde(rename(deserialize = "receiver_signature"))] + pub signature: String, + #[serde(rename(deserialize = "receiver_pubkey"))] + pub receiver_pubkey: String, + #[serde(rename(deserialize = "receiver_base_secrets_commitment_hash"))] + pub receiver_commitment_hash: String, + #[serde(rename(deserialize = "encrypted_data"))] + pub encrypted_message: String, + #[serde(rename(deserialize = "settings"))] + pub settings: DvtGenerateSettings, + #[serde(rename(deserialize = "base_hashes"))] + pub base_hashes: DvtVerificationHashes, + #[serde(rename(deserialize = "base_pubkeys"))] + pub base_pubkeys: Vec, +} + +/// --------------------------------------------------------------------------- +/// ABI Data Structures (output side) +/// --------------------------------------------------------------------------- + +#[derive(Debug, Clone)] pub struct AbiGenerateSettings { pub n: u8, pub k: u8, @@ -121,13 +156,11 @@ pub type AbiVerificationHashes = Vec; pub struct AbiInitialCommitment { pub hash: SHA256, pub settings: AbiGenerateSettings, - pub verification_vector: AbiVerificationVector, + pub base_pubkeys: Vec, } #[derive(Debug)] pub struct AbiExchangedSecret { - pub src_id: BLSId, - pub dst_id: BLSId, pub dst_base_hash: SHA256, pub secret: BLSSecret, } @@ -169,176 +202,327 @@ pub struct AbiFinalizationData { pub aggregate_pubkey: BLSPubkey, } -fn decode_hex(input: &str) -> Result<[u8; N], Box> { - let bytes = decode(input).map_err(|e| format!("Failed to decode input: {}", e))?; +#[derive(Debug, Clone)] +pub struct AbiBadPartialShareGeneration { + pub verification_vector: Vec, + pub base_hash: SHA256, +} + +#[derive(Debug)] +pub struct AbiBadPartialShare { + pub settings: AbiGenerateSettings, + pub data: AbiGeneration, + pub commitment: AbiCommitment, +} + +#[derive(Debug)] +pub struct AbiBadPartialShareData { + pub settings: AbiGenerateSettings, + pub generations: Vec, + pub bad_partial: AbiBadPartialShare, +} - // Check the length +#[derive(Debug)] +pub struct AbiBadEncryptedShare { + pub sender_pubkey: BLSPubkey, + pub signature: BLSSignature, + pub receiver_pubkey: BLSPubkey, + pub receiver_commitment_hash: SHA256, + pub encrypted_message: Vec, + pub settings: AbiGenerateSettings, + pub base_hashes: AbiVerificationHashes, + pub base_pubkeys: Vec, +} + +/// --------------------------------------------------------------------------- +/// Trait: ToAbi +/// +/// Allows a "DvtX" type to convert itself to an "AbiX" type. +/// We'll use associated type T to indicate which ABI type it produces. +/// --------------------------------------------------------------------------- +pub trait ToAbi { + fn to_abi(&self) -> Result>; +} + +fn decode_hex(input: &str) -> Result<[u8; N], Box> { + let bytes = decode(input).map_err(|e| format!("Failed to decode input: {e}"))?; if bytes.len() != N { return Err(Box::new(std::io::Error::new( std::io::ErrorKind::InvalidData, - format!("Expected length {}, but got {}", N, bytes.len()), + format!("Expected length {N}, but got {}", bytes.len()), ))); } - let mut arr = [0u8; N]; arr.copy_from_slice(&bytes); Ok(arr) } -impl DvtVerificationVector { - pub fn to_abi(&self) -> Result> { - Ok(AbiVerificationVector { - pubkeys: self - .pubkeys - .iter() - .map(|p| decode_hex::(p)) - .collect::, _>>() - .map_err(|e| format!("Invalid pubkey: {}", e))?, - }) - } -} - -impl DvtGenerateSettings { - pub fn to_abi(&self) -> Result> { +/// --------------------------------------------------------------------------- +/// Implementations of ToAbi for each Dvt type -> corresponding Abi type +/// --------------------------------------------------------------------------- +impl ToAbi for DvtGenerateSettings { + fn to_abi(&self) -> Result> { Ok(AbiGenerateSettings { n: self.n, k: self.k, gen_id: decode_hex::(&self.gen_id) - .map_err(|e| format!("Invalid gen_id: {}", e))?, + .map_err(|e| format!("Invalid gen_id: {e}"))?, }) } } -impl DvtInitialCommitment { - pub fn to_abi(&self) -> Result> { +impl ToAbi for DvtInitialCommitment { + fn to_abi(&self) -> Result> { Ok(AbiInitialCommitment { hash: decode_hex::(&self.hash) - .map_err(|e| format!("Invalid hash: {}", e))?, + .map_err(|e| format!("Invalid hash: {e}"))?, settings: self .settings .to_abi() - .map_err(|e| format!("Invalid settings: {}", e))?, - verification_vector: self - .verification_vector - .to_abi() - .map_err(|e| format!("Invalid verification vector: {}", e))?, + .map_err(|e| format!("Invalid settings: {e}"))?, + base_pubkeys: self + .base_pubkeys + .iter() + .map(|p| decode_hex::(p)) + .collect::, _>>() + .map_err(|e| format!("Invalid pubkey: {e}"))?, }) } } -impl DvtExchangedSecret { - pub fn to_abi(&self) -> Result> { +impl ToAbi for DvtExchangedSecret { + fn to_abi(&self) -> Result> { Ok(AbiExchangedSecret { - src_id: decode_hex::(&self.src_id) - .map_err(|e| format!("Invalid id: {}", e))?, - dst_id: decode_hex::(&self.dst_id) - .map_err(|e| format!("Invalid id: {}", e))?, secret: decode_hex::(&self.secret) - .map_err(|e| format!("Invalid secret: {}", e))?, + .map_err(|e| format!("Invalid secret: {e}"))?, dst_base_hash: decode_hex::(&self.dst_base_hash) - .map_err(|e| format!("Invalid dst_base_hash: {}", e))?, + .map_err(|e| format!("Invalid dst_base_hash: {e}"))?, }) } } -impl DvtCommitment { - pub fn to_abi(&self) -> Result> { +impl ToAbi for DvtCommitment { + fn to_abi(&self) -> Result> { Ok(AbiCommitment { hash: decode_hex::(&self.hash) - .map_err(|e| format!("Invalid hash: {}", e))?, + .map_err(|e| format!("Invalid hash: {e}"))?, pubkey: decode_hex::(&self.pubkey) - .map_err(|e| format!("Invalid pubkey: {}", e))?, + .map_err(|e| format!("Invalid pubkey: {e}"))?, signature: decode_hex::(&self.signature) - .map_err(|e| format!("Invalid signature: {}", e))?, + .map_err(|e| format!("Invalid signature: {e}"))?, }) } } -impl DvtShareExchangeCommitment { - pub fn to_abi(&self) -> Result> { +impl ToAbi for DvtShareExchangeCommitment { + fn to_abi(&self) -> Result> { Ok(AbiSeedExchangeCommitment { initial_commitment_hash: decode_hex::(&self.initial_commitment_hash) - .map_err(|e| format!("Invalid initial_commitment_hash: {}", e))?, + .map_err(|e| format!("Invalid initial_commitment_hash: {e}"))?, shared_secret: self .shared_secret .to_abi() - .map_err(|e| format!("Invalid shared_secret: {}", e))?, + .map_err(|e| format!("Invalid shared_secret: {e}"))?, commitment: self .commitment .to_abi() - .map_err(|e| format!("Invalid commitment: {}", e))?, + .map_err(|e| format!("Invalid commitment: {e}"))?, }) } } -impl DvtBlsSharedData { - pub fn to_abi(&self) -> Result> { +impl ToAbi for DvtBlsSharedData { + fn to_abi(&self) -> Result> { + let verification_hashes = self + .verification_hashes + .iter() + .map(|h| decode_hex::(h)) + .collect::, _>>() + .map_err(|e| format!("Invalid verification hash: {e}"))?; + Ok(AbiBlsSharedData { - verification_hashes: self - .verification_hashes - .iter() - .map(|h| decode_hex::(h)) - .collect::, _>>() - .map_err(|e| format!("Invalid hash: {}", e))?, + verification_hashes, initial_commitment: self .initial_commitment .to_abi() - .map_err(|e| format!("Invalid initial_commitment: {}", e))?, + .map_err(|e| format!("Invalid initial_commitment: {e}"))?, seeds_exchange_commitment: self .seeds_exchange_commitment .to_abi() - .map_err(|e| format!("Invalid seeds_exchange_commitment: {}", e))?, + .map_err(|e| format!("Invalid seeds_exchange_commitment: {e}"))?, }) } } -impl DvtGeneration { - pub fn to_abi(&self) -> Result> { +impl ToAbi for DvtGeneration { + fn to_abi(&self) -> Result> { + let verification_vector = self + .verification_vector + .iter() + .map(|p| decode_hex::(p)) + .collect::, _>>() + .map_err(|e| format!("Invalid pubkey: {e}"))?; + Ok(AbiGeneration { - verification_vector: self - .verification_vector - .iter() - .map(|p| decode_hex::(p)) - .collect::, _>>() - .map_err(|e| format!("Invalid pubkey: {}", e))?, + verification_vector, base_hash: decode_hex::(&self.base_hash) - .map_err(|e| format!("Invalid base_hash: {}", e))?, + .map_err(|e| format!("Invalid base_hash: {e}"))?, partial_pubkey: decode_hex::(&self.partial_pubkey) - .map_err(|e| format!("Invalid partial_pubkey: {}", e))?, + .map_err(|e| format!("Invalid partial_pubkey: {e}"))?, message_cleartext: self.message_cleartext.as_bytes().to_vec(), message_signature: decode_hex::(&self.message_signature) - .map_err(|e| format!("Invalid message_signature: {}", e))?, + .map_err(|e| format!("Invalid message_signature: {e}"))?, }) } } -impl DvtFinalizationData { - pub fn to_abi(&self) -> Result> { +impl ToAbi for DvtFinalizationData { + fn to_abi(&self) -> Result> { + let settings = self + .settings + .to_abi() + .map_err(|e| format!("Invalid settings: {e}"))?; + + let generations = self + .generations + .iter() + .map(|g| g.to_abi()) + .collect::, _>>()?; + + let aggregate_pubkey = decode_hex::(&self.aggregate_pubkey) + .map_err(|e| format!("Invalid aggregate_pubkey: {e}"))?; + Ok(AbiFinalizationData { + settings, + generations, + aggregate_pubkey, + }) + } +} + +impl ToAbi for DvtBadPartialShareGeneration { + fn to_abi(&self) -> Result> { + let verification_vector = self + .verification_vector + .iter() + .map(|p| decode_hex::(p)) + .collect::, _>>() + .map_err(|e| format!("Invalid pubkey: {e}"))?; + + let base_hash = decode_hex::(&self.base_hash) + .map_err(|e| format!("Invalid base_hash: {e}"))?; + + Ok(AbiBadPartialShareGeneration { + verification_vector, + base_hash, + }) + } +} + +impl ToAbi for DvtBadPartialShare { + fn to_abi(&self) -> Result> { + Ok(AbiBadPartialShare { + settings: self + .settings + .to_abi() + .map_err(|e| format!("Invalid settings: {e}"))?, + data: self + .data + .to_abi() + .map_err(|e| format!("Invalid partial_data: {e}"))?, + commitment: self + .commitment + .to_abi() + .map_err(|e| format!("Invalid commitment: {e}"))?, + }) + } +} + +impl ToAbi for DvtBadPartialShareData { + fn to_abi(&self) -> Result> { + let settings = self + .settings + .to_abi() + .map_err(|e| format!("Invalid settings: {e}"))?; + + let generations = self + .generations + .iter() + .map(|g| g.to_abi()) + .collect::, _>>()?; + + let bad_partial = self + .bad_partial + .to_abi() + .map_err(|e| format!("Invalid bad_partial: {e}"))?; + + Ok(AbiBadPartialShareData { + settings, + generations, + bad_partial, + }) + } +} + +impl ToAbi for DvtBadEncryptedShare { + fn to_abi(&self) -> Result> { + Ok(AbiBadEncryptedShare { + sender_pubkey: decode_hex::(&self.sender_pubkey) + .map_err(|e| format!("Invalid sender_pubkey: {e}"))?, + receiver_pubkey: decode_hex::(&self.receiver_pubkey) + .map_err(|e| format!("Invalid receiver_pubkey: {e}"))?, + signature: decode_hex::(&self.signature) + .map_err(|e| format!("Invalid signature: {e}"))?, + receiver_commitment_hash: decode_hex::(&self.receiver_commitment_hash) + .map_err(|e| format!("Invalid receiver_commitment_hash: {e}"))?, + encrypted_message: decode(&self.encrypted_message) + .map_err(|e| format!("Invalid encrypted_share: {e}"))?, settings: self .settings .to_abi() - .map_err(|e| format!("Invalid settings: {}", e))?, - generations: self - .generations + .map_err(|e| format!("Invalid settings: {e}"))?, + base_hashes: self + .base_hashes .iter() - .map(|g| g.to_abi()) - .collect::, _>>()?, - aggregate_pubkey: decode_hex::(&self.aggregate_pubkey) - .map_err(|e| format!("Invalid aggregate_pubkey: {}", e))?, + .map(|h| decode_hex::(h)) + .collect::, _>>() + .map_err(|e| format!("Invalid base_hash: {e}"))?, + base_pubkeys: self + .base_pubkeys + .iter() + .map(|p| decode_hex::(p)) + .collect::, _>>() + .map_err(|e| format!("Invalid base_pubkey: {e}"))?, }) } } +/// --------------------------------------------------------------------------- +/// File & JSON Helpers +/// --------------------------------------------------------------------------- +fn check_if_file_exists(path: &str) -> Result<(), Box> { + if !Path::new(path).exists() { + return Err(format!("File '{}' does not exist.", path).into()); + } + Ok(()) +} + +pub fn read_text_file(filename: &str) -> Result> { + check_if_file_exists(filename)?; + let mut file = + File::open(filename).map_err(|e| format!("Error opening file {filename}: {e}"))?; + let mut contents = String::new(); + file.read_to_string(&mut contents) + .map_err(|e| format!("Error reading file {filename}: {e}"))?; + Ok(contents) +} + pub fn read_data_from_json_file(filename: &str) -> Result> where T: DeserializeOwned, { - let mut file = File::open(filename).map_err(|e| format!("Error opening file: {}", e))?; - let mut contents = String::new(); - file.read_to_string(&mut contents) - .map_err(|e| format!("Error reading file: {}", e))?; - - let data: T = serde_json::from_str(&contents)?; + let contents = read_text_file(filename)?; + let data: T = serde_json::from_str(&contents) + .map_err(|e| format!("Error parsing JSON in {filename}: {e}"))?; Ok(data) } diff --git a/crates/dvt_abi_host/Cargo.toml b/crates/dvt_abi_host/Cargo.toml index 0cad80f..07bcb2f 100644 --- a/crates/dvt_abi_host/Cargo.toml +++ b/crates/dvt_abi_host/Cargo.toml @@ -8,4 +8,4 @@ serde = { version = "1.0", features = ["derive"] } serde_json = "1.0" hex = "0.4.3" sp1-sdk = "3.4.0" -dvt_abi = { path = "../dvt_abi" } \ No newline at end of file +dvt_abi = { path = "../dvt_abi" } \ No newline at end of file diff --git a/crates/dvt_abi_host/src/lib.rs b/crates/dvt_abi_host/src/lib.rs index 0d5297f..6d1a359 100644 --- a/crates/dvt_abi_host/src/lib.rs +++ b/crates/dvt_abi_host/src/lib.rs @@ -1,10 +1,17 @@ -use dvt_abi; use sp1_sdk::SP1Stdin; fn write_array_to_prover(stdin: &mut SP1Stdin, data: &[u8; N]) { - for i in 0..N { - stdin.write(&[data[i]]); + for x in data.iter().take(N) { + stdin.write(x); } } + +fn write_vec_to_prover(stdin: &mut SP1Stdin, data: &[u8]) { + stdin.write(&[data.len() as u32]); + for x in data.iter().take(data.len()) { + stdin.write(x); + } +} + pub trait ProverSerialize { fn write(&self, stdin: &mut SP1Stdin); } @@ -17,26 +24,18 @@ impl ProverSerialize for dvt_abi::AbiGenerateSettings { } } -impl ProverSerialize for dvt_abi::AbiVerificationVector { - fn write(&self, stdin: &mut SP1Stdin) { - for i in 0..self.pubkeys.len() { - write_array_to_prover(stdin, &self.pubkeys[i]); - } - } -} - impl ProverSerialize for dvt_abi::AbiInitialCommitment { fn write(&self, stdin: &mut SP1Stdin) { write_array_to_prover(stdin, &self.hash); self.settings.write(stdin); - self.verification_vector.write(stdin); + for i in 0..self.base_pubkeys.len() { + write_array_to_prover(stdin, &self.base_pubkeys[i]); + } } } impl ProverSerialize for dvt_abi::AbiExchangedSecret { fn write(&self, stdin: &mut SP1Stdin) { - write_array_to_prover(stdin, &self.src_id); - write_array_to_prover(stdin, &self.dst_id); write_array_to_prover(stdin, &self.secret); write_array_to_prover(stdin, &self.dst_base_hash); } @@ -62,14 +61,20 @@ impl ProverSerialize for dvt_abi::AbiBlsSharedData { fn write(&self, stdin: &mut SP1Stdin) { self.initial_commitment.write(stdin); self.seeds_exchange_commitment.write(stdin); + if (self.initial_commitment.settings.n as usize) != self.verification_hashes.len() { + panic!( + "k != verification_hashes.len() {}", + self.verification_hashes.len() + ); + } self.verification_hashes.write(stdin); } } impl ProverSerialize for dvt_abi::AbiVerificationHashes { fn write(&self, stdin: &mut SP1Stdin) { - for i in 0..self.len() { - write_array_to_prover(stdin, &self[i]); + for x in self { + write_array_to_prover(stdin, x); } } } @@ -81,12 +86,7 @@ impl ProverSerialize for dvt_abi::AbiGeneration { } write_array_to_prover(stdin, &self.base_hash); write_array_to_prover(stdin, &self.partial_pubkey); - stdin.write(&(self.message_cleartext.len() as u32)); - - for i in 0..self.message_cleartext.len() { - stdin.write(&self.message_cleartext[i]); - } - //stdin.write(self.message_cleartext.as_bytes()); + write_vec_to_prover(stdin, &self.message_cleartext); write_array_to_prover(stdin, &self.message_signature); } } @@ -94,9 +94,57 @@ impl ProverSerialize for dvt_abi::AbiGeneration { impl ProverSerialize for dvt_abi::AbiFinalizationData { fn write(&self, stdin: &mut SP1Stdin) { self.settings.write(stdin); + if self.settings.n as usize != self.generations.len() { + panic!("k != generations.len() {}", self.generations.len()); + } + for i in 0..self.generations.len() { self.generations[i].write(stdin); } write_array_to_prover(stdin, &self.aggregate_pubkey); } } + +impl ProverSerialize for dvt_abi::AbiBadPartialShare { + fn write(&self, stdin: &mut SP1Stdin) { + self.settings.write(stdin); + self.data.write(stdin); + self.commitment.write(stdin); + } +} + +impl ProverSerialize for dvt_abi::AbiBadPartialShareGeneration { + fn write(&self, stdin: &mut SP1Stdin) { + for i in 0..self.verification_vector.len() { + write_array_to_prover(stdin, &self.verification_vector[i]); + } + write_array_to_prover(stdin, &self.base_hash); + } +} + +impl ProverSerialize for dvt_abi::AbiBadPartialShareData { + fn write(&self, stdin: &mut SP1Stdin) { + self.settings.write(stdin); + for i in 0..self.generations.len() { + self.generations[i].write(stdin); + } + + self.bad_partial.write(stdin); + } +} + +impl ProverSerialize for dvt_abi::AbiBadEncryptedShare { + fn write(&self, stdin: &mut SP1Stdin) { + write_array_to_prover(stdin, &self.sender_pubkey); + write_array_to_prover(stdin, &self.signature); + write_array_to_prover(stdin, &self.receiver_pubkey); + write_array_to_prover(stdin, &self.receiver_commitment_hash); + write_vec_to_prover(stdin, &self.encrypted_message); + self.settings.write(stdin); + self.base_hashes.write(stdin); + assert!(self.base_pubkeys.len() == self.settings.k as usize); + for i in 0..self.base_pubkeys.len() { + write_array_to_prover(stdin, &self.base_pubkeys[i]); + } + } +} diff --git a/crates/finalization_prove/Cargo.toml b/crates/finalization_prove/Cargo.toml index 7b7e774..af20cb1 100644 --- a/crates/finalization_prove/Cargo.toml +++ b/crates/finalization_prove/Cargo.toml @@ -6,12 +6,10 @@ publish = false [dependencies] sp1-zkvm = "3.4.0" -bls12_381 = { git = "https://github.com/sp1-patches/bls12_381", features = ["experimental"] } ff = "0.13.0" rand = "0.8.5" group = "0.13.0" serde = "1.0.216" dvt_abi = { path = "../dvt_abi" } bls_utils = { path = "../bls_utils" } -sha2 = "0.10" hex = "0.4" \ No newline at end of file diff --git a/crates/finalization_prove/src/main.rs b/crates/finalization_prove/src/main.rs index 45660db..c9d2173 100644 --- a/crates/finalization_prove/src/main.rs +++ b/crates/finalization_prove/src/main.rs @@ -11,4 +11,14 @@ pub fn main() { if ok.is_err() { panic!("{:?}", ok.unwrap_err().to_string()); } + + for g in data.generations.iter() { + println!("Verification hash: {}", hex::encode(&g.base_hash)); + sp1_zkvm::io::commit(&g.base_hash); + } + + println!("Aggregate pubkey: {}", hex::encode(&data.aggregate_pubkey)); + for byte in data.aggregate_pubkey.iter() { + sp1_zkvm::io::commit(byte); + } } diff --git a/doc/bad_encrypte_share_interactive.html b/doc/bad_encrypte_share_interactive.html new file mode 100644 index 0000000..6aa2074 --- /dev/null +++ b/doc/bad_encrypte_share_interactive.html @@ -0,0 +1,390 @@ + + + + + + Interactive JSON - Proper Formatting + + + + + +

Interactive JSON

+

+ Hover over a hash or signature field to see which fields + it covers (highlighted in green) and which coverage relationships appear on the right panel. +

+ +
+ +
+

+        
+ + +
+

Coverage Info

+
Hover over an item to see coverage details.
+
+
+ + + + + \ No newline at end of file diff --git a/doc/bad_partial_key_interactive.html b/doc/bad_partial_key_interactive.html new file mode 100644 index 0000000..efcc73a --- /dev/null +++ b/doc/bad_partial_key_interactive.html @@ -0,0 +1,504 @@ + + + + + + Interactive JSON - Proper Formatting + + + + + +

Interactive JSON

+

+ Hover over a hash or signature field to see which fields + it covers (highlighted in green) and which coverage relationships appear on the right panel. +

+ +
+ +
+

+        
+ + +
+

Coverage Info

+
Hover over an item to see coverage details.
+
+
+ + + + + \ No newline at end of file diff --git a/doc/bad_share_interactive.html b/doc/bad_share_interactive.html new file mode 100644 index 0000000..7e88398 --- /dev/null +++ b/doc/bad_share_interactive.html @@ -0,0 +1,476 @@ + + + + + + Interactive JSON - Proper Formatting + + + + + +

Interactive JSON

+

+ Hover over a hash or signature field to see which fields + it covers (highlighted in green) and which coverage relationships appear on the right panel. +

+ +
+ +
+

+        
+ + +
+

Coverage Info

+
Hover over an item to see coverage details.
+
+
+ + + + + \ No newline at end of file diff --git a/doc/finalization_interactive.html b/doc/finalization_interactive.html new file mode 100644 index 0000000..3611f44 --- /dev/null +++ b/doc/finalization_interactive.html @@ -0,0 +1,449 @@ + + + + + Interactive JSON - Proper Formatting + + + + +

Interactive JSON

+

+ Hover over a hash or signature field to see which fields + it covers (highlighted in green) and which coverage relationships appear on the right panel. +

+ +
+ +
+

+    
+ + +
+

Coverage Info

+
Hover over an item to see coverage details.
+
+
+ + + + diff --git a/examples/bad_partial_key.json b/examples/bad_partial_key.json new file mode 100644 index 0000000..5b217a1 --- /dev/null +++ b/examples/bad_partial_key.json @@ -0,0 +1,52 @@ +{ + "settings": { + "n": 3, + "k": 2, + "gen_id": "8d17e61db7b774d16cb165662a8c2c4a" + }, + "generations": [ + { + "base_pubkeys": [ + "826ba5e112164da5e0f2f6c36ae10cdd0f98a51030b9e50a91914e571bb0ead922383bc824c8b93932031fcddfe03917", + "8c42b651bf63ba29b594ddc7b1908aaadbe902183cc19a6d56269af068803ac422fe02a6401215bab5f2c1e813ef045b" + ], + "base_hash": "0ede927f55275a2a77c4307c16911d7de366fb08c3e35faa8dcb69555bb27ffc" + }, + { + "base_pubkeys": [ + "8a651156bf24c575100752c28f55e37505b0854465cd1a82e1979412deb93660cb55edfa0d19f81a4195cd9b4e39e0a1", + "a38c54b06463ef266d2b7085e86ba156ef6298eabc786028ea2fa8b8c1e1a1d6e66a42ed9e2813058d0a0ded4aefeed8" + ], + "base_hash": "11b5ea87edf50669f810957ffa237371b2791d80c9fbe349ad1e39669096f481" + }, + { + "base_pubkeys": [ + "a3f2809669c6649595a5a56b869e0883af0aed1bce58d378ad156e14eee618d77909193e5eee68ee2c1952c8d8104201", + "b130cafa8bdf0a5d1ef4b24dba1356d5ac7cfc0034fa5bbe9193beefe62b57f6a3f667497d891be5d56d9a0747e8b97f" + ], + "base_hash": "8549ce0b70029637d5de6469ceda2fb40a650a187854583d457c84631c9569e5" + } + ], + "bad_partial": { + "settings": { + "n": 3, + "k": 2, + "gen_id": "8d17e61db7b774d16cb165662a8c2c4a" + }, + "data": { + "base_pubkeys": [ + "826ba5e112164da5e0f2f6c36ae10cdd0f98a51030b9e50a91914e571bb0ead922383bc824c8b93932031fcddfe03917", + "8c42b651bf63ba29b594ddc7b1908aaadbe902183cc19a6d56269af068803ac422fe02a6401215bab5f2c1e813ef045b" + ], + "base_hash": "0ede927f55275a2a77c4307c16911d7de366fb08c3e35faa8dcb69555bb27ffc", + "partial_pubkey": "b57e6b1e905e0246236c500c67e7c4db731d757850d8e4076069ecc9cca61aed5a17b28c736131ed29c18a60d85fb39c", + "message_cleartext": "Sign with new partial key", + "message_signature": "b045b1645f3a33a373b593663c119092f47f805b038fca7832acd4dd46299c7718d8310939c898a410315a83ca48c1900f7845006b7a8d7ea75d2ea89b29d8872337352d9322b490f8c4bde5dda74cd23d0bf23e86b1090556640171bdda1621" + }, + "commitment": { + "hash": "e407c892f836907eb9791a2f03827df693f16e516947331ec4ab0f384f4c8e29", + "pubkey": "801c897678391f31519d917f9f49061230dbe580e2032fbf715dfa5699e66ffd69f9758ca505db668070b6464e05972b", + "signature": "b87cff4c84b506460b8b9ae81a3ad0292fc6022407bcf199ff91f290b31462f266f9d4936dfb0ac6d64a5c11ec4cc3b102a24f08555878aa4588f7b51ee965f9578401d3c38620072c4a56680c18d87c44c561c312c41e105df2f3a5b35f29c1" + } + } +} \ No newline at end of file diff --git a/examples/bat_encrypted_partial_key.json b/examples/bat_encrypted_partial_key.json new file mode 100644 index 0000000..9b8f42b --- /dev/null +++ b/examples/bat_encrypted_partial_key.json @@ -0,0 +1,7 @@ +{ + "sender_pubkey": "a45c34e1d3a8a559df0d592da07b3b98570b254cfc182eaa1e222c47a78f31184dfa94f4fbdf7992f62ace3cd072fd35", + "receiver_signature": "9391bf6f96f3c865074c84346233990bfb5556a2bb2b71ff8dc01c7a2a25ba30c1c7628d0fe89167b3012b62dc65067213f06912a7f516b1c8dadb2bb6cd27f033f95f0c7600c2ffd849a6486c03ab637df0ede07a8ac57d2134b1d81ca6b04b", + "encrypted_data": "e5c1a0411cfa8056f3ecb147f0c1b492d2343ca68dbba274ef558eba64729a6737a51ead1ca5b28c885d582ee3409c3373c64bb95680309ab6d9fcf524d461eb0f16c8efb304d04a13484455b4bd4eedfe45829ad1ea8aa806241f4c2251c1465df65a3f9e401393e4f4d4f932c0dff2e1f7f6f5fddad1c0fa316d01a91ba4418e2944e3ec17b19d3a07a7a4f5eb5ffd6e6a49a6680aecdb9a6fd015a74d4d48c6845d80bb466a5c13f3e81e245247cc1487cf81740525fd630d27f149e9f1136b224021aad48b09e8c6f3a8c33a04312d419ee2d096f1a6c65c63dcd2636d8fda33b90cf527d1f36608e6805f5c8c22812a651085cc93c25abe379a5daa628153fd9be8cea10476c62b9964a7245e7519996883cf1d0111197dac80ada10fead0ff3cdb5686fc32de5caef97382201c5372944278cfbcfd110afa376b91fc7e2d2af41c51789cf4314d7dbc2c757106f2d0bcccc039a85a0e6e21049c6b2e153d99d0c796090307f3150d1b2403fc1b2897c33d380d8fd1485dffec47170d8145e38672461da987801bfaa55569675c6ebde6095cd0a3b9b8cca07b7715ea6f594c4fea1ce0d9f4125c8cfb12457c31102606088b583aed415abea87924688315bc49556ff79ce6e103ba1d562d2153ef2d0edee0df23d087c94a64ac5a2bad9b1a3e041416d85dda8d3fd300987b28f387760f677123f595b4168b147fe19faa01959f71ae38baa10317dd692c5b49300fcfb355f918f07efa72aecb6e5df5f1a35dd99a97e6b14224f60d24641bbc958dc4aacd19eff6195206ac6cb6c5c401dac98ec0", + "reseiver_base_secrets_commitment_hash": "9426750225a5ba3aeb545d421d6ff79a5c229702617937de7162b6b3684ee157", + "receiver_pubkey": "8d9fd961e8213cb16359a860e993b2853f6217626501e9efa459407d3a2608560faa2eeae425df2c7dbd4d0bba4880f8" +} \ No newline at end of file diff --git a/examples/dvt_bad_share.json b/examples/dvt_bad_share.json index 880657e..9fde191 100644 --- a/examples/dvt_bad_share.json +++ b/examples/dvt_bad_share.json @@ -30,7 +30,7 @@ "dst_share_id": "0100000000000000000000000000000000000000000000000000000000000000" }, "commitment": { - "hash": "c64749b8b8e31e58e58d94a61580ba941a815014fb2e02462a6e887dbead4dd5", + "hash": "544823269d9fa1b21a60ff2a53dd2d9d25f6af145b76d0e9c0554ce6e4aefa31", "pubkey": "90346f9c5f3c09d96ea02acd0220daa8459f03866ed938c798e3716e42c7e033c9a7ef66a10f83af06d5c00b508c6d0f", "signature": "8f57d721c303916bc7768d328a8e0f5da1298a9f4f5780b489da842dbe47a8ffe1c97f680464b605246ee72be826e0610fe3506fadb5495dd07b1036ddce3571843bebb59fc22f22e544ba23eb98be939bca0ac19e53e2e7f634ea4218f8f258" } diff --git a/examples/finalization_test.json b/examples/finalization_test.json new file mode 100644 index 0000000..0165633 --- /dev/null +++ b/examples/finalization_test.json @@ -0,0 +1,65 @@ +{ + "settings": { + "n": 5, + "k": 3, + "gen_id": "89f0996b33ca953e0cf9b70a5f84cb50" + }, + "generations": [ + { + "base_pubkeys": [ + "aa772b2a290804da566759b4162de6ffc8f0a47b70908f8db932a3e8e1dff73eb04f59f7549df8a33219a333bb19659c", + "a19e4b16cc1d5de8c6fd87549f9fa1fa7de066c5cb566f610909e1a712780bf8c291e82e98b023121f70d980096e4af5", + "84496615716d84d3c1d69fb295c968ed4563acd51d0fd0cc624ccce384af1d479f7adbf0ee5cce74b80f248ff8224dee" + ], + "base_hash": "0bcbd9433dfde67e0dd7c501e255a2bdc31d6968e51b1290e6ef7d264911eb91", + "partial_pubkey": "8da434e68daef9af33e39ab727557a3cd86d7991cd6b545746bf92c8edec37012912cfa2292a21512bce9040a1c0e502", + "message_cleartext": "test for signing", + "message_signature": "8a751bd10706178f9dae64b18ccb758abd0535d9592ca06c3ac44831715c6cb4e66eff0b0248cdae23ec0f921963ae58040feb4862929549b690e2d8073f7b937e971c1a2387feb8d11fdc107390290bb254e941700932e15cc2d63165e09d52" + }, + { + "base_pubkeys": [ + "92cad77a95432bc1030d81b5465cb69be672c1dd0da752230bf8112f8449b03149e7fa208a6fae460a9f0a1d5bd175e9", + "98876a81fe982573ec5f986956bf9bf0bcb5349d95c3c8da0aefd05a49fea6215f59b0696f906547baed90ab245804e8", + "ad2c4e5b631fbded449ede4dca2d040b9c7eae58d1e73b3050486c1ba22c15a92d9ff13c05c356f974447e4fca84864a" + ], + "base_hash": "13602b274436a91ffa3bd3eb16927e011d81fe9e2e9673769a0152acbafe3e33", + "partial_pubkey": "a3cd061aab6013f7561978959482d79e9ca636392bc94d4bcad9cb6f90fe2cdf52100f211052f1570db0ca690b6a9903", + "message_cleartext": "test for signing", + "message_signature": "8268c0494f7228cb71472a9c8d05374336ac65b7af2b4fb52292867595d69138a75cfc9a5ff6f102de68a7e173a57f8e13a8378ef9e103adab85b9413b6455d0bb104fc176b0e4859f5c7719ac1f63955fecefbe9eca69a4fa42eadef5b27df5" + }, + { + "base_pubkeys": [ + "91283a9d9826347da8ef73ebe88a013989d2abecf0eb6368cb14e079da25fdf8e90fa2f793ad3566ac613882a93a531c", + "b059e3afa1f18c18eabb2be01a491b97b013b493e34bcf4fb288a7975e6a71a0e45d1d6b38d308a89726e99f09a7be85", + "a6d720d55aaae5b3a11758ca2dc5900ede471d508243b86d2adc715095c4a1efac82e96b6949763dfc288af555e8a9df" + ], + "base_hash": "1ae7975df76c5df0c301d390d82180ff536f5dbbf78942e53b4ec9e9e1497a1a", + "partial_pubkey": "8cbfb6cb7af927cfe5fb17621df7036de539b7ff4aa0620cdc218d6b7fe7f2e714a96bdeddb2a0dc24867a90594427e1", + "message_cleartext": "test for signing", + "message_signature": "8b796dd8e8a35a6b97bd740388ad2da0399839f7ce83ae85e8651e23a0d58db44ccaca43e747713624344945ee7f25d803fe0919c669518e9bce2b0ba16e88f4ca05f5568b482b1a0068158468bc3ea8c9764b3dae9c7cb56002fcd5ab2ef25c" + }, + { + "base_pubkeys": [ + "ac70a68387afb0ad4912970b72afc0e1143833091414498ecab27661677f7b2a79aebee35cfbd95731d3b77985b4dc72", + "97bcf8fe7f75a87f5b9e4852f4b76fdad62d8af3dc8895f4db74e74d2096b10976f262e2930c89fccc484bc9edf6c0f3", + "a04c57e48a2ad82468f702b1d444f37af91fe4a05034d003fd1ff422958d37c30d29760d443e9374aa98bc096abf4d2d" + ], + "base_hash": "54effb7411607a0c6484cb68cad8a30fd03e24c0fd561c5c8a4c5baa0509f9b3", + "partial_pubkey": "9892b390d9d3000c7bf04763006fbc617b7ba9c261fff35094aec3f43599f2c254ae667d9ba135747309b77cd02f1fbc", + "message_cleartext": "test for signing", + "message_signature": "999e7b24bee2587d687e8f358ed10627ef57ec54935bd7a500bbbb18a57e7aa21b800f8b1f487a980d7c93918fdbd8020b66ce9a9e5788a4826e610ac937d8c2ce0ad9c0ee9a5732cf73052493e9a500cc5100a15bdbf9e5b79104db52dbf07c" + }, + { + "base_pubkeys": [ + "a6e87e5bbed258d82a13c53e04c1c3fb5baa6649a28a0d00e4a934b6473575721a7f1f1c3787145f43a1bf15368619ee", + "858276460f23124923c94bf968024dd415a39a0f638d67f1d5f27ce8d8de75273d145cd70177a26bd76c07b8e784c98a", + "8174cc034101357048634437473371c7f6b8c39e2a305c2f95fc95c13ed03939a5c3bf2bdbbaab5351e8aa3443949038" + ], + "base_hash": "dbd8b546ab29bfa87aa9d568e8315037695e8802fa0e0c9ed9009fe8a0fde402", + "partial_pubkey": "b255c8a66fd1a13373537e8a4ba258f4990c141fc3c06daccda0711f5ebaffc092f0e5b0e4454e6344e2f97957be4017", + "message_cleartext": "test for signing", + "message_signature": "b61e78c430eaea45f8b7974c411dd6d50eb8748fde211089838b1ca93ddefd2d9571548c4ee2eb03eec232997dc3818c1917af21083157f19966c998c35e4acf6c59e8e92bf0988692026580e425742a754eb69255e834dc75d9b729cd7ca83a" + } + ], + "aggregate_pubkey": "a31d9a483703cd0da9873e5e76b4de5f7035d0a73d79b3be8667daa4fc7065a1bbb5bf77787fcf2a35bd327eecc4fa6b" +} \ No newline at end of file diff --git a/readme.md b/readme.md index 5305db7..5df1e60 100644 --- a/readme.md +++ b/readme.md @@ -1,24 +1,55 @@ -## Install SP1 ## +## Install SP1 curl -L https://sp1.succinct.xyz | bash PATH="$PATH:~/.sp1/bin" sp1up -## Run test ## +## Run test +``` make test +``` to run single test - +``` make test ARGS='--filter text_to_match' +``` -## Build ## +## Build cargo build -## Run ## +## Produce prove + +``` +./target/release/dvt_prover_host --input-file input_file.json --type share +``` + +for more information + +``` +./target/release/dvt_prover_host --help +``` + +## Proves + +### Invalid Share + +Demonstrates that some participants have sent an incorrect share. + +### Successful Final Verification + +Confirms that the DVT algorithm has completed successfully. + +### Incorrect Final Share Generation + +Shows that certain participants provided an invalid final share, though the algorithm can't conclude. + +### Malicious Share Exchange Encryption + +Reveals that some participants have sent improperly encrypted data that is either incorrect or malicious, violating the algorithm's invariants. + +### GIT hooks + +```make install-git-hooks``` -1. Prove that some exchanged change is wrong -2. Prove that crypted responce to the changed is not in the valid format -3. Prove some of the participaten generate the wrong share -4. Prove that dvt algorithm is properly executed diff --git a/script/hooks/pre-commit b/script/hooks/pre-commit new file mode 100755 index 0000000..b50e8a4 --- /dev/null +++ b/script/hooks/pre-commit @@ -0,0 +1,25 @@ +#!/bin/sh +echo "Local Pre-commit Hook...\n" + +set -eu + +if ! cargo fmt -- --check +then + echo "There are some code style issues." + echo "Run cargo fmt first." + exit 1 +fi + +if ! cargo clippy --all-targets -- -D warnings +then + echo "There are some clippy issues." + exit 1 +fi + +if ! cargo test +then + echo "There are some test issues." + exit 1 +fi + +exit 0 \ No newline at end of file diff --git a/script/misc/bad_encrypted_share_params.json b/script/misc/bad_encrypted_share_params.json new file mode 100644 index 0000000..90381be --- /dev/null +++ b/script/misc/bad_encrypted_share_params.json @@ -0,0 +1,4 @@ +{ + "cmd_extra_args": "execute --type=bad-encrypted-share --json-schema-file=spec/bad_partial_key_spec.json", + "expected_exit_code": 1 +} \ No newline at end of file diff --git a/script/misc/bad_partial_key_params.json b/script/misc/bad_partial_key_params.json new file mode 100644 index 0000000..1ca2645 --- /dev/null +++ b/script/misc/bad_partial_key_params.json @@ -0,0 +1,4 @@ +{ + "cmd_extra_args": "execute --type=bad-partial-key --json-schema-file=spec/bad_partial_key_spec.json", + "expected_exit_code": 1 +} \ No newline at end of file diff --git a/scripts/run.sh b/script/run.sh similarity index 94% rename from scripts/run.sh rename to script/run.sh index d0c1620..3d53290 100755 --- a/scripts/run.sh +++ b/script/run.sh @@ -27,6 +27,8 @@ total_fail_count=0 total_skip_count=0 total_disabled_count=0 +all_failed_test=() + # Parse arguments FILTER="" while [[ $# -gt 0 ]]; do @@ -76,7 +78,7 @@ run_tests_in_dir() { fi echo $scenario > scenario.json - target/release/dvt_prover_host --input-file scenario.json $cmd_args + target/release/dvt_prover_host $cmd_args --input-file scenario.json exit_code=$? ((execution_count++)) @@ -86,6 +88,7 @@ run_tests_in_dir() { else echo -e "${RED}[FAIL]${RESET}${BOLD} $test_file (expected exit code: $expected_exit_code, got $exit_code) ${RESET}" ((fail_count++)) + all_failed_test+=("$test_file (expected exit code: $expected_exit_code, got $exit_code)") fi rm scenario.json @@ -162,5 +165,7 @@ echo -e "${BOLD}${BLUE}----------------------------------------${RESET}" if [ $total_fail_count -eq 0 ]; then echo -e "${GREEN}All tests passed!${RESET}" else + echo -e "${RED}Some tests failed!${RESET}" + printf "%s\n" "${all_failed_test[@]}" echo -e "${RED}$total_fail_count test(s) failed.${RESET}" fi diff --git a/script/test_case_gen.sh b/script/test_case_gen.sh new file mode 100755 index 0000000..4f949c0 --- /dev/null +++ b/script/test_case_gen.sh @@ -0,0 +1,52 @@ +#!/bin/bash + +# Default values +INPUT_DIR="" +OUTPUT_DIR="" +TYPE_FILE="" + +# Parse named arguments +while [[ "$#" -gt 0 ]]; do + case $1 in + --input-dir) INPUT_DIR="$2"; shift ;; + --output-dir) OUTPUT_DIR="$2"; shift ;; + --type-file) TYPE_FILE="$2"; shift ;; + *) echo "Unknown parameter: $1"; exit 1 ;; + esac + shift +done + +# Ensure required arguments are provided +if [[ -z "$INPUT_DIR" || -z "$OUTPUT_DIR" || -z "$TYPE_FILE" ]]; then + echo "Usage: $0 --input-dir --output-dir --type-file " + exit 1 +fi + +# Ensure directories exist +if [[ ! -d "$INPUT_DIR" ]]; then + echo "Error: Input directory '$INPUT_DIR' not found!" + exit 1 +fi + +mkdir -p "$OUTPUT_DIR" # Create output directory if it doesn't exist + +# Ensure type.json exists +if [[ ! -f "$TYPE_FILE" ]]; then + echo "Error: Type file '$TYPE_FILE' not found!" + exit 1 +fi + +# Process each JSON file in the input directory +for FILE in "$INPUT_DIR"/*.json; do + # Skip type.json if it's in the input directory + [[ "$FILE" == "$TYPE_FILE" ]] && continue + + FILENAME=$(basename "$FILE") + OUTPUT_FILE="$OUTPUT_DIR/$FILENAME" + OUTPUT_FILE=$(echo "$OUTPUT_FILE" | sed -E 's/dvt-keygen-[0-9a-f]+-//') + jq --slurpfile type "$TYPE_FILE" '{params: $type[0], scenario: .}' "$FILE" > "$OUTPUT_FILE" + + echo "Processed: $FILE -> $OUTPUT_FILE" +done + +echo "Processing complete. Files saved in $OUTPUT_DIR." diff --git a/spec/bad_encrypted_partial_key_spec.json b/spec/bad_encrypted_partial_key_spec.json new file mode 100644 index 0000000..41abc99 --- /dev/null +++ b/spec/bad_encrypted_partial_key_spec.json @@ -0,0 +1,33 @@ +{ + "$schema": "http://json-schema.org/draft-04/schema#", + "type": "object", + "properties": { + "sender_pubkey": { + "type": "string", + "pattern": "^[A-f0-9]{96}$" + }, + "receiver_signature": { + "type": "string", + "pattern": "^[A-f0-9]{192}$" + }, + "encrypted_data": { + "type": "string", + "pattern": "^[A-f0-9]*$" + }, + "reseiver_base_secrets_commitment_hash": { + "type": "string", + "pattern": "^[A-f0-9]{64}$" + }, + "receiver_pubkey": { + "type": "string", + "pattern": "^[A-f0-9]{96}$" + } + }, + "required": [ + "sender_pubkey", + "receiver_signature", + "encrypted_data", + "reseiver_base_secrets_commitment_hash", + "receiver_pubkey" + ] + } \ No newline at end of file diff --git a/spec/bad_partial_key_spec.json b/spec/bad_partial_key_spec.json new file mode 100644 index 0000000..4cec6c9 --- /dev/null +++ b/spec/bad_partial_key_spec.json @@ -0,0 +1,141 @@ +{ + "$schema": "http://json-schema.org/draft-04/schema#", + "type": "object", + "properties": { + "settings": { + "type": "object", + "properties": { + "n": { + "type": "integer" + }, + "k": { + "type": "integer" + }, + "gen_id": { + "type": "string", + "pattern": "^[A-f0-9]{32}$" + } + }, + "required": [ + "n", + "k", + "gen_id" + ] + }, + "generations": { + "type": "array", + "items": { + "type": "object", + "properties": { + "base_pubkeys": { + "type": "array", + "items": { + "type": "string", + "pattern": "^[A-f0-9]{96}$" + } + }, + "base_hash": { + "type": "string", + "pattern": "^[A-f0-9]{64}$" + } + }, + "required": [ + "base_pubkeys", + "base_hash" + ] + } + }, + "bad_partial": { + "type": "object", + "properties": { + "settings": { + "type": "object", + "properties": { + "n": { + "type": "integer" + }, + "k": { + "type": "integer" + }, + "gen_id": { + "type": "string", + "pattern": "^[A-f0-9]{32}$" + } + }, + "required": [ + "n", + "k", + "gen_id" + ] + }, + "data": { + "type": "object", + "properties": { + "base_pubkeys": { + "type": "array", + "items": + { + "type": "string", + "pattern": "^[A-f0-9]{96}$" + } + }, + "base_hash": { + "type": "string", + "pattern": "^[A-f0-9]{64}$" + }, + "partial_pubkey": { + "type": "string", + "pattern": "^[A-f0-9]{96}$" + }, + "message_cleartext": { + "type": "string" + }, + "message_signature": { + "type": "string", + "pattern": "^[A-f0-9]{192}$" + } + }, + "required": [ + "base_pubkeys", + "base_hash", + "partial_pubkey", + "message_cleartext", + "message_signature" + ] + }, + "commitment": { + "type": "object", + "properties": { + "hash": { + "type": "string", + "pattern": "^[A-f0-9]{64}$" + }, + "pubkey": { + "type": "string", + "pattern": "^[A-f0-9]{96}$" + }, + "signature": { + "type": "string", + "pattern": "^[A-f0-9]{192}$" + } + }, + "required": [ + "hash", + "pubkey", + "signature" + ] + } + }, + "required": [ + "settings", + "data", + "commitment" + ] + } + }, + "required": [ + "settings", + "generations", + "bad_partial" + ] +} \ No newline at end of file diff --git a/src/main.rs b/src/main.rs index 45cee96..40a8033 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,153 +1,378 @@ -use sp1_sdk::{ - include_elf, utils, ProverClient, SP1Stdin, +use clap::{Parser, Subcommand, ValueEnum}; +use colored::*; +use dvt_abi::{ + read_data_from_json_file, read_text_file, AbiBlsSharedData, AbiFinalizationData, + DvtBadEncryptedShare, DvtBadPartialShareData, DvtBlsSharedData, DvtFinalizationData, ToAbi, }; -pub const SHARE_PROVER_ELF: &[u8] = include_elf!("share_exchange_prove"); -pub const FINALE_PROVER_ELF: &[u8] = include_elf!("finalization_prove"); - -use clap::{Parser, ValueEnum}; -use dvt_abi; use dvt_abi_host::ProverSerialize; -use std::env; +use jsonschema::JSONSchema; +use serde_json::Value; +use sp1_sdk::{include_elf, proof::SP1ProofWithPublicValues, utils, ProverClient, SP1Stdin}; +use std::{error::Error, process}; +pub mod git_info; + +fn style_error(msg: impl AsRef) -> String { + format!("❌ {}", msg.as_ref()).red().bold().to_string() +} + +fn style_warning(msg: impl AsRef) -> String { + format!("⚠️ {}", msg.as_ref()).yellow().bold().to_string() +} + +fn style_success(msg: impl AsRef) -> String { + format!("✅ {}", msg.as_ref()).green().bold().to_string() +} -use jsonschema::{JSONSchema}; -use std::fs::File; -use std::error::Error; -use std::io::Read; +fn style_cyan(msg: impl AsRef) -> String { + format!("🔎 {}", msg.as_ref()).cyan().bold().to_string() +} #[derive(Debug, Clone, ValueEnum)] -enum CommandType { +enum CircuitType { + BadShare, Finalization, - Share, + BadPartialKey, + BadEncryptedShare, +} + +#[derive(Subcommand, Debug)] +enum Commands { + Prove { + #[arg(long = "input-file", short = 'i')] + input_file: String, + #[arg(long = "type", value_enum)] + subtype: CircuitType, + #[arg(long = "output-file-path", short = 'o')] + output_file_path: Option, + #[arg(long = "json-schema-file")] + json_schema: Option, + }, + Execute { + #[arg(long = "input-file", short = 'i')] + input_file: String, + #[arg(long = "type", value_enum)] + subtype: CircuitType, + #[arg(long = "json-schema-file")] + json_schema: Option, + #[arg(long = "show-report", default_value_t = false)] + show_report: bool, + }, + ValidateSchema { + #[arg(long = "schema-file", short = 's')] + schema_file: String, + #[arg(long = "json-file", short = 'j')] + json_file: String, + }, + Verify { + #[arg(long = "input-file", short = 'i')] + proof_file: String, + #[arg(long = "type", value_enum)] + subtype: CircuitType, + #[arg(long = "show-report", default_value_t = false)] + show_report: bool, + }, } #[derive(Parser, Debug)] -#[command(author, version, about, long_about = None)] +#[command(author, version, about)] struct Cli { - #[arg(long = "show-report", default_value_t = false)] - show_report: bool, + #[command(subcommand)] + command: Commands, +} - #[arg(long = "input-file")] - input_file: String, +pub const SHARE_PROVER_ELF: &[u8] = include_elf!("bad_share_exchange_prove"); +pub const FINALE_PROVER_ELF: &[u8] = include_elf!("finalization_prove"); +pub const BAD_PARTIAL_KEY_PROVER_ELF: &[u8] = include_elf!("bad_parial_key_prove"); +pub const BAD_ENCRYPTED_SHARE_PROVER_ELF: &[u8] = include_elf!("bad_encrypted_share_prove"); - #[arg(long = "type", value_enum)] - command_type: CommandType, +fn run(cli: Cli) -> Result<(), Box> { + utils::setup_logger(); - #[arg(long = "json-schema-file")] - json_schema: Option, -} + match cli.command { + Commands::Prove { + input_file, + subtype, + output_file_path, + json_schema, + } => { + validate_if_needed(json_schema.as_deref(), &input_file)?; -fn read_text_file(filename: &str) -> Result> { - let mut file = File::open(filename).map_err(|e| format!("Error opening file: {}", e))?; - let mut contents = String::new(); - file.read_to_string(&mut contents) - .map_err(|e| format!("Error reading file: {}", e))?; - Ok(contents) -} + match subtype { + CircuitType::BadShare => { + let dvt_data = read_data_from_json_file::(&input_file) + .map_err(|e| style_error(format!("Failed to read share data: {e}")))?; + let abi_data: AbiBlsSharedData = dvt_data + .to_abi() + .map_err(|e| style_error(format!("Share data to ABI failed: {e}")))?; + prove( + &abi_data, + SHARE_PROVER_ELF, + &input_file, + output_file_path.as_deref(), + )?; + } + CircuitType::Finalization => { + let dvt_data = read_data_from_json_file::(&input_file) + .map_err(|e| { + style_error(format!("Failed to read finalization data: {e}")) + })?; + let abi_data: AbiFinalizationData = dvt_data.to_abi().map_err(|e| { + style_error(format!("Finalization data to ABI failed: {e}")) + })?; + prove( + &abi_data, + FINALE_PROVER_ELF, + &input_file, + output_file_path.as_deref(), + )?; + } + CircuitType::BadPartialKey => { + let dvt_data = read_data_from_json_file::(&input_file) + .map_err(|e| { + style_error(format!("Failed to read bad partial key data: {e}")) + })?; + let abi_data = dvt_data.to_abi().map_err(|e| { + style_error(format!("Bad partial key data to ABI failed: {e}")) + })?; + prove( + &abi_data, + BAD_PARTIAL_KEY_PROVER_ELF, + &input_file, + output_file_path.as_deref(), + )?; + } + CircuitType::BadEncryptedShare => { + let dvt_data = read_data_from_json_file::(&input_file) + .map_err(|e| { + style_error(format!("Failed to read bad encrypted share data: {e}")) + })?; + let abi_data = dvt_data.to_abi().map_err(|e| { + style_error(format!("Bad encrypted share data to ABI failed: {e}")) + })?; + prove( + &abi_data, + BAD_ENCRYPTED_SHARE_PROVER_ELF, + &input_file, + output_file_path.as_deref(), + )?; + } + } + } + Commands::Execute { + input_file, + subtype, + json_schema, + show_report, + } => { + validate_if_needed(json_schema.as_deref(), &input_file)?; -fn validate_json(schema_path: &str, json_path: &str) -> Result<(), Box> { - let schema = read_text_file(schema_path)?; - let json = read_text_file(json_path)?; + match subtype { + CircuitType::BadShare => { + let dvt_data = read_data_from_json_file::(&input_file) + .map_err(|e| style_error(format!("Failed to read share data: {e}")))?; + let abi_data: AbiBlsSharedData = dvt_data + .to_abi() + .map_err(|e| style_error(format!("Share data to ABI failed: {e}")))?; + execute(&abi_data, SHARE_PROVER_ELF, show_report)?; + } + CircuitType::Finalization => { + let dvt_data = read_data_from_json_file::(&input_file) + .map_err(|e| { + style_error(format!("Failed to read finalization data: {e}")) + })?; + let abi_data: AbiFinalizationData = dvt_data.to_abi().map_err(|e| { + style_error(format!("Finalization data to ABI failed: {e}")) + })?; + execute(&abi_data, FINALE_PROVER_ELF, show_report)?; + } + CircuitType::BadPartialKey => { + let dvt_data = read_data_from_json_file::(&input_file) + .map_err(|e| { + style_error(format!("Failed to read bad partial key data: {e}")) + })?; + let abi_data = dvt_data.to_abi().map_err(|e| { + style_error(format!("Bad partial key data to ABI failed: {e}")) + })?; + execute(&abi_data, BAD_PARTIAL_KEY_PROVER_ELF, show_report)?; + } + CircuitType::BadEncryptedShare => { + let dvt_data = read_data_from_json_file::(&input_file) + .map_err(|e| { + style_error(format!("Failed to read bad encrypted share data: {e}")) + })?; + let abi_data = dvt_data.to_abi().map_err(|e| { + style_error(format!("Bad encrypted share data to ABI failed: {e}")) + })?; + execute(&abi_data, BAD_ENCRYPTED_SHARE_PROVER_ELF, show_report)?; + } + } + } + Commands::ValidateSchema { + schema_file, + json_file, + } => { + if let Err(e) = validate_json(&schema_file, &json_file) { + return Err(style_error(format!("Schema validation error: {e}")).into()); + } else { + println!( + "{}", + style_success("Validation successful. No errors found.") + ); + } + } + Commands::Verify { + proof_file, + subtype, + show_report, + } => match subtype { + CircuitType::BadShare => { + verify_proof(SHARE_PROVER_ELF, &proof_file, show_report)?; + } + CircuitType::Finalization => { + verify_proof(FINALE_PROVER_ELF, &proof_file, show_report)?; + } + CircuitType::BadPartialKey => { + verify_proof(BAD_PARTIAL_KEY_PROVER_ELF, &proof_file, show_report)?; + } + CircuitType::BadEncryptedShare => { + verify_proof(BAD_ENCRYPTED_SHARE_PROVER_ELF, &proof_file, show_report)?; + } + }, + } - let schema = serde_json::from_str(&schema).unwrap(); - let data = serde_json::from_str(&json).unwrap(); + Ok(()) +} + +fn main() { + let commit_hash = git_info::COMMIT_HASH; + let uncommitted = git_info::UNCOMMITTED_CHANGES; + let uncommitted_files = git_info::UNCOMMITTED_FILES; - let compiled_schema = JSONSchema::compile(&schema); + println!("🔗 Commit Hash: {}", commit_hash); - if compiled_schema.is_err() { - return Err("invalid schema".into()); + if uncommitted { + println!("{}", style_warning("WARNING:Uncommitted Changes")); + println!("📂 Uncommitted Files in ./create:"); + for file in uncommitted_files { + println!(" 📄 {}", file); + } } - let compiled_schema = compiled_schema.unwrap(); - - let ok = compiled_schema.validate(&data); - if ok.is_err() { - let errors = ok.unwrap_err(); - for error in errors { - println!("{}", error); + let cli = Cli::parse(); + match run(cli) { + Ok(_) => {} + Err(e) => { + println!("{e}"); + process::exit(1); } - return Err("invalid json".into()); } +} + +fn execute(data: &T, elf: &[u8], show_report: bool) -> Result<(), Box> +where + T: ProverSerialize, +{ + let mut stdin = SP1Stdin::new(); + data.write(&mut stdin); + let client = ProverClient::new(); + let (_public_values, report) = client + .execute(elf, stdin) + .run() + .map_err(|e| style_error(format!("Verification failed: {e}")))?; + if show_report { + println!("{}\n{}", style_cyan("Verification report:"), report); + } + Ok(()) +} + +fn prove( + data: &T, + elf: &[u8], + input_file: &str, + output_file_path: Option<&str>, +) -> Result<(), Box> +where + T: ProverSerialize, +{ + let mut stdin = SP1Stdin::new(); + data.write(&mut stdin); + let client = ProverClient::new(); + let (pk, _) = client.setup(elf); + let proof = client + .prove(&pk, stdin) + .run() + .map_err(|e| style_error(format!("Proof generation failed: {e}")))?; + + let path = output_file_path + .map(|s| s.to_string()) + .unwrap_or_else(|| format!("{}_proof.bin", input_file)); + proof + .save(&path) + .map_err(|e| style_error(format!("Saving proof failed: {e}")))?; + println!("{} {}", style_success("Proof saved to:"), path); Ok(()) } -fn main() { - let args = Cli::parse(); +fn verify_proof(elf: &[u8], proof_file: &str, show_report: bool) -> Result<(), Box> { + let client = ProverClient::new(); + let (_, vk) = client.setup(elf); + + let proof_with_pub_values = SP1ProofWithPublicValues::load(proof_file).map_err(|e| { + style_error(format!( + "Failed to load proof form {} with error: {e}", + proof_file + )) + })?; + let proof = proof_with_pub_values.bytes(); + let public_values = proof_with_pub_values.public_values.to_vec(); + + let mut stdin = SP1Stdin::new(); + stdin.write_vec(proof); + stdin.write_vec(public_values); + stdin.write(&vk); + + let (_, report) = client + .execute(elf, stdin) + .run() + .map_err(|e| style_error(format!("Verification failed: {e}")))?; - if args.input_file.is_empty() { - eprintln!("No file name provided after '--input-file'."); - std::process::exit(1); + if show_report { + println!("{}", report); } + Ok(()) +} - if args.json_schema.is_some() { - let ok =validate_json(args.json_schema.unwrap().as_str(), args.input_file.as_str()); - if ok.is_err() { - eprintln!("{}", ok.unwrap_err()); - std::process::exit(1); - } +fn validate_if_needed(schema_path: Option<&str>, json_path: &str) -> Result<(), Box> { + if let Some(path) = schema_path { + validate_json(path, json_path)?; } + Ok(()) +} - utils::setup_logger(); +fn validate_json(schema_path: &str, json_path: &str) -> Result<(), Box> { + let schema_str = read_text_file(schema_path) + .map_err(|e| style_error(format!("Could not read schema file '{schema_path}': {e}")))?; + let json_str = read_text_file(json_path) + .map_err(|e| style_error(format!("Could not read JSON file '{json_path}': {e}")))?; - let mut stdin = SP1Stdin::new(); + let schema: Value = serde_json::from_str(&schema_str) + .map_err(|e| style_error(format!("Invalid JSON schema in '{schema_path}': {e}")))?; + let data: Value = serde_json::from_str(&json_str) + .map_err(|e| style_error(format!("Invalid JSON data in '{json_path}': {e}")))?; - // Depending on the command type, we could do different things here. - // For now, both variants handle the data similarly. - let report = match args.command_type { - CommandType::Share => { - let data = - dvt_abi::read_data_from_json_file::(&args.input_file) - .unwrap_or_else(|e| { - eprintln!("Error parsing JSON: {}", e); - std::process::exit(1); - }); - - let abi_data = data.to_abi().unwrap_or_else(|e| { - eprintln!("Error converting to ABI data: {}", e); - std::process::exit(1); - }); - - abi_data.write(&mut stdin); - let client = ProverClient::new(); - let (_public_values, report) = client - .execute(SHARE_PROVER_ELF, stdin) - .run() - .unwrap_or_else(|e| { - eprintln!("Failed to prove: {}", e); - std::process::exit(1); - }); - report - } - CommandType::Finalization => { - print!("finalization\n"); - - let data = - dvt_abi::read_data_from_json_file::(&args.input_file) - .unwrap_or_else(|e| { - eprintln!("Error parsing JSON: {}", e); - std::process::exit(1); - }); - - let abi_data = data.to_abi().unwrap_or_else(|e| { - eprintln!("Error converting to ABI data: {}", e); - std::process::exit(1); - }); - - abi_data.write(&mut stdin); - let client = ProverClient::new(); - let (_public_values, report) = client - .execute(FINALE_PROVER_ELF, stdin) - .run() - .unwrap_or_else(|e| { - eprintln!("Failed to prove: {}", e); - std::process::exit(1); - }); - report - } - }; + let compiled_schema = JSONSchema::compile(&schema) + .map_err(|e| style_error(format!("Failed to compile the JSON schema: {e}")))?; - if args.show_report { - println!("report: {}", args.show_report); - println!("executed: {}", report); + if let Err(validation_errors) = compiled_schema.validate(&data) { + for error in validation_errors { + eprintln!( + "{} {error}", + style_error(format!("Validation error in '{json_path}':")) + ); + } + return Err(style_error(format!("JSON validation failed for '{json_path}'")).into()); } + + Ok(()) } diff --git a/test_vectors/bad_encrypted_share/same_files.txt b/test_vectors/bad_encrypted_share/same_files.txt new file mode 100644 index 0000000..903867b --- /dev/null +++ b/test_vectors/bad_encrypted_share/same_files.txt @@ -0,0 +1,60 @@ +seeds-commitment-from-1-to-2-bad-hash-encrypted.json is SAME as: + - seeds-commitment-from-1-to-2-bad-signature-encrypted.json + - seeds-commitment-from-1-to-2-fewer-base-hashes-encrypted.json + - seeds-commitment-from-1-to-2-more-base-hashes-encrypted.json + - seeds-commitment-from-1-to-2-wrong-hash-encrypted.json + - seeds-commitment-from-1-to-2-wrong-signature-encrypted.json + +seeds-commitment-from-1-to-2-bad-secret-key-encrypted.json has no identical matches (ignoring whitespace) + +seeds-commitment-from-1-to-2-bad-signature-encrypted.json is SAME as: + - seeds-commitment-from-1-to-2-bad-hash-encrypted.json + - seeds-commitment-from-1-to-2-fewer-base-hashes-encrypted.json + - seeds-commitment-from-1-to-2-more-base-hashes-encrypted.json + - seeds-commitment-from-1-to-2-wrong-hash-encrypted.json + - seeds-commitment-from-1-to-2-wrong-signature-encrypted.json + +seeds-commitment-from-1-to-2-encrypted.json has no identical matches (ignoring whitespace) + +seeds-commitment-from-1-to-2-fewer-base-hashes-encrypted.json is SAME as: + - seeds-commitment-from-1-to-2-bad-hash-encrypted.json + - seeds-commitment-from-1-to-2-bad-signature-encrypted.json + - seeds-commitment-from-1-to-2-more-base-hashes-encrypted.json + - seeds-commitment-from-1-to-2-wrong-hash-encrypted.json + - seeds-commitment-from-1-to-2-wrong-signature-encrypted.json + +seeds-commitment-from-1-to-2-more-base-hashes-encrypted.json is SAME as: + - seeds-commitment-from-1-to-2-bad-hash-encrypted.json + - seeds-commitment-from-1-to-2-bad-signature-encrypted.json + - seeds-commitment-from-1-to-2-fewer-base-hashes-encrypted.json + - seeds-commitment-from-1-to-2-wrong-hash-encrypted.json + - seeds-commitment-from-1-to-2-wrong-signature-encrypted.json + +seeds-commitment-from-1-to-2-wrong-hash-encrypted.json is SAME as: + - seeds-commitment-from-1-to-2-bad-hash-encrypted.json + - seeds-commitment-from-1-to-2-bad-signature-encrypted.json + - seeds-commitment-from-1-to-2-fewer-base-hashes-encrypted.json + - seeds-commitment-from-1-to-2-more-base-hashes-encrypted.json + - seeds-commitment-from-1-to-2-wrong-signature-encrypted.json + +seeds-commitment-from-1-to-2-wrong-secret-key-encrypted.json has no identical matches (ignoring whitespace) + +seeds-commitment-from-1-to-2-wrong-signature-encrypted.json is SAME as: + - seeds-commitment-from-1-to-2-bad-hash-encrypted.json + - seeds-commitment-from-1-to-2-bad-signature-encrypted.json + - seeds-commitment-from-1-to-2-fewer-base-hashes-encrypted.json + - seeds-commitment-from-1-to-2-more-base-hashes-encrypted.json + - seeds-commitment-from-1-to-2-wrong-hash-encrypted.json + +seeds-commitment-from-1-to-2-zero-k-encrypted.json has no identical matches (ignoring whitespace) + +seeds-commitment-from-1-to-3-bad-hash-encrypted.json is SAME as: + - seeds-commitment-from-1-to-3-bad-signature-encrypted.json + +seeds-commitment-from-1-to-3-bad-secret-key-encrypted.json has no identical matches (ignoring whitespace) + +seeds-commitment-from-1-to-3-bad-signature-encrypted.json is SAME as: + - seeds-commitment-from-1-to-3-bad-hash-encrypted.json + +seeds-commitment-from-1-to-3-encrypted.json has no identical matches (ignoring whitespace) + diff --git a/test_vectors/bad_encrypted_share/seeds-commitment-from-1-to-2-bad-hash-encrypted.json b/test_vectors/bad_encrypted_share/seeds-commitment-from-1-to-2-bad-hash-encrypted.json new file mode 100644 index 0000000..7ee6b69 --- /dev/null +++ b/test_vectors/bad_encrypted_share/seeds-commitment-from-1-to-2-bad-hash-encrypted.json @@ -0,0 +1,27 @@ +{ + "params": { + "cmd_extra_args": "execute --type=bad-encrypted-share --json-schema-file=spec/bad_encrypted_partial_key_spec.json", + "expected_exit_code": 1 + }, + "scenario": { + "sender_pubkey": "97928b112d00235a7452dcc4bc1107c64b9a674082dbaeb4aed6d3f82b7e896b68c2eec79f410e3ebcc3aa939bb38909", + "receiver_signature": "98cd2c6ca685a7a8380ddca6fa125632cdec8ca523e961e95c809bd068c4018b88e46416bd02105b8139897f86cf2d06067d249ec63e87c0cb96c5ac42636c6aa538acbfd5d53594ded05c43fd73fe87c0ee83d885d9152b117df752372e17a1", + "encrypted_data": "826e15154b8b1e0f28b89de5432f3c8cfc144dff540759847b1769e684adbf50eee0ded0d36e1eb7cae8cd6e8dcf841c95f3588a9888980c3b376b30976dbf4b1387abeb7d31c918f7c8c4decee13c7644c81f71ff45971f580d42dd0a80dd656cdd2bf1d061c868fecddd272d370c499209e69d1c5e60c057780bdee43335ae311913a20d71f2fe4411d8f5e4a752f7fef11da6c0f279a142994c88d5a55a2122bf098ebd5fefcacd77c7df4dfdc72366b64e46901e2f3e3ed2a2dc0cfda6e841abd179d3dfa322b74c5e8d60afd8635c85292f2eda51db65c3aaaf54c7a1418b", + "receiver_base_secrets_commitment_hash": "6568dd285df3bf23d7697217273249841707951516e67c4954243d5d80ad23da", + "receiver_pubkey": "96cb0f9478f6a645cf69ef3a3a30828173f5ca84705d4bd93405dcb4a5d8e98be9d02426f3cf25fef4399a3ac9e8f98c", + "settings": { + "gen_id": "8d17e61db7b774d16cb165662a8c2c4a", + "n": 3, + "k": 2 + }, + "base_hashes": [ + "2cc6b806b3215210122226629b0d0872484d43754668bb90c4d1b5e401377890", + "6568dd285df3bf23d7697217273249841707951516e67c4954243d5d80ad23da", + "bdf6925e576dc08431ac6a590a64263c5ac3d8e5bd88113ac5777762fabd71a6" + ], + "base_pubkeys": [ + "a6602d395e8fbf67269a41a208613e42795c9e66d365dd87287162e31484cb0f84efaec36220714022bbd296e5357bc9", + "8a64f40fe2e976d01227b4085b42421c8c4c3549f539b8eb7ecad8833b5855ae1994126bfb9b6ff56a5f131f407462d8" + ] + } +} diff --git a/test_vectors/bad_encrypted_share/seeds-commitment-from-1-to-2-bad-secret-key-encrypted.json b/test_vectors/bad_encrypted_share/seeds-commitment-from-1-to-2-bad-secret-key-encrypted.json new file mode 100644 index 0000000..0ff04cd --- /dev/null +++ b/test_vectors/bad_encrypted_share/seeds-commitment-from-1-to-2-bad-secret-key-encrypted.json @@ -0,0 +1,27 @@ +{ + "params": { + "cmd_extra_args": "execute --type=bad-encrypted-share --json-schema-file=spec/bad_encrypted_partial_key_spec.json", + "expected_exit_code": 1 + }, + "scenario": { + "sender_pubkey": "97928b112d00235a7452dcc4bc1107c64b9a674082dbaeb4aed6d3f82b7e896b68c2eec79f410e3ebcc3aa939bb38909", + "receiver_signature": "98cd2c6ca685a7a8380ddca6fa125632cdec8ca523e961e95c809bd068c4018b88e46416bd02105b8139897f86cf2d06067d249ec63e87c0cb96c5ac42636c6aa538acbfd5d53594ded05c43fd73fe87c0ee83d885d9152b117df752372e17a1", + "encrypted_data": "826e15154b8b1e0f28b89de5432f3c8cfc4c1ade140cc4e4485093b60167d5e175490cbf27503ca3aa04c4d312ce11dc54d383601091101e28d5d59f15b031de901e80aedc1553d1fd2522dd21d2424183c81f71ff45971f580d42dd0a80dd656cdd2bf1d061c868fecddd272d370c499209e69d1c5e60c057780bdee43335ae31154474474881f0511f3a86c4e348a0198b8273e62b3143a2905b65ac2bba6447408138684b5e4558bcb06932b563883badf23ffe3464ea058548e59c042257ad4ece7dae207e1e50632b85fea3d54bbe9d5bfa47e3a46752508de9e7381e28ef", + "receiver_base_secrets_commitment_hash": "6568dd285df3bf23d7697217273249841707951516e67c4954243d5d80ad23da", + "receiver_pubkey": "96cb0f9478f6a645cf69ef3a3a30828173f5ca84705d4bd93405dcb4a5d8e98be9d02426f3cf25fef4399a3ac9e8f98c", + "settings": { + "gen_id": "8d17e61db7b774d16cb165662a8c2c4a", + "n": 3, + "k": 2 + }, + "base_hashes": [ + "2cc6b806b3215210122226629b0d0872484d43754668bb90c4d1b5e401377890", + "6568dd285df3bf23d7697217273249841707951516e67c4954243d5d80ad23da", + "bdf6925e576dc08431ac6a590a64263c5ac3d8e5bd88113ac5777762fabd71a6" + ], + "base_pubkeys": [ + "a6602d395e8fbf67269a41a208613e42795c9e66d365dd87287162e31484cb0f84efaec36220714022bbd296e5357bc9", + "8a64f40fe2e976d01227b4085b42421c8c4c3549f539b8eb7ecad8833b5855ae1994126bfb9b6ff56a5f131f407462d8" + ] + } +} diff --git a/test_vectors/bad_encrypted_share/seeds-commitment-from-1-to-2-bad-signature-encrypted.json b/test_vectors/bad_encrypted_share/seeds-commitment-from-1-to-2-bad-signature-encrypted.json new file mode 100644 index 0000000..7ee6b69 --- /dev/null +++ b/test_vectors/bad_encrypted_share/seeds-commitment-from-1-to-2-bad-signature-encrypted.json @@ -0,0 +1,27 @@ +{ + "params": { + "cmd_extra_args": "execute --type=bad-encrypted-share --json-schema-file=spec/bad_encrypted_partial_key_spec.json", + "expected_exit_code": 1 + }, + "scenario": { + "sender_pubkey": "97928b112d00235a7452dcc4bc1107c64b9a674082dbaeb4aed6d3f82b7e896b68c2eec79f410e3ebcc3aa939bb38909", + "receiver_signature": "98cd2c6ca685a7a8380ddca6fa125632cdec8ca523e961e95c809bd068c4018b88e46416bd02105b8139897f86cf2d06067d249ec63e87c0cb96c5ac42636c6aa538acbfd5d53594ded05c43fd73fe87c0ee83d885d9152b117df752372e17a1", + "encrypted_data": "826e15154b8b1e0f28b89de5432f3c8cfc144dff540759847b1769e684adbf50eee0ded0d36e1eb7cae8cd6e8dcf841c95f3588a9888980c3b376b30976dbf4b1387abeb7d31c918f7c8c4decee13c7644c81f71ff45971f580d42dd0a80dd656cdd2bf1d061c868fecddd272d370c499209e69d1c5e60c057780bdee43335ae311913a20d71f2fe4411d8f5e4a752f7fef11da6c0f279a142994c88d5a55a2122bf098ebd5fefcacd77c7df4dfdc72366b64e46901e2f3e3ed2a2dc0cfda6e841abd179d3dfa322b74c5e8d60afd8635c85292f2eda51db65c3aaaf54c7a1418b", + "receiver_base_secrets_commitment_hash": "6568dd285df3bf23d7697217273249841707951516e67c4954243d5d80ad23da", + "receiver_pubkey": "96cb0f9478f6a645cf69ef3a3a30828173f5ca84705d4bd93405dcb4a5d8e98be9d02426f3cf25fef4399a3ac9e8f98c", + "settings": { + "gen_id": "8d17e61db7b774d16cb165662a8c2c4a", + "n": 3, + "k": 2 + }, + "base_hashes": [ + "2cc6b806b3215210122226629b0d0872484d43754668bb90c4d1b5e401377890", + "6568dd285df3bf23d7697217273249841707951516e67c4954243d5d80ad23da", + "bdf6925e576dc08431ac6a590a64263c5ac3d8e5bd88113ac5777762fabd71a6" + ], + "base_pubkeys": [ + "a6602d395e8fbf67269a41a208613e42795c9e66d365dd87287162e31484cb0f84efaec36220714022bbd296e5357bc9", + "8a64f40fe2e976d01227b4085b42421c8c4c3549f539b8eb7ecad8833b5855ae1994126bfb9b6ff56a5f131f407462d8" + ] + } +} diff --git a/test_vectors/bad_encrypted_share/seeds-commitment-from-1-to-2-encrypted.json b/test_vectors/bad_encrypted_share/seeds-commitment-from-1-to-2-encrypted.json new file mode 100644 index 0000000..cf5f251 --- /dev/null +++ b/test_vectors/bad_encrypted_share/seeds-commitment-from-1-to-2-encrypted.json @@ -0,0 +1,27 @@ +{ + "params": { + "cmd_extra_args": "execute --type=bad-encrypted-share --json-schema-file=spec/bad_encrypted_partial_key_spec.json", + "expected_exit_code": 1 + }, + "scenario": { + "sender_pubkey": "97928b112d00235a7452dcc4bc1107c64b9a674082dbaeb4aed6d3f82b7e896b68c2eec79f410e3ebcc3aa939bb38909", + "receiver_signature": "98cd2c6ca685a7a8380ddca6fa125632cdec8ca523e961e95c809bd068c4018b88e46416bd02105b8139897f86cf2d06067d249ec63e87c0cb96c5ac42636c6aa538acbfd5d53594ded05c43fd73fe87c0ee83d885d9152b117df752372e17a1", + "encrypted_data": "8b5995c82de3e83e7c54f46fbdfb5ca352acb9657c3d6c783dd2707b636c5a87406a2204809e48a02b64c6708fddae9b541973d1d5f9d0aa309a3a5a31b623657869962c184549a0a88f4ff90addeec83b4587a8f7661565ab8d62d5632f1e52e274d8796c7afac53c10ad92775e49b13d11237c5bff78ece9dd86ef9107595ef06e82a7cce5bf460d8183ab5d1783d60681effb399d125b1d7a498804b760229977bb84210984bdd80417a49075f754e63b80077cc3606533ee6dfd70bbe5661ef3ace0df277ceae0b0aa28577dd4a2165573f64b0dfbfb354cfec510e6c99fda", + "receiver_base_secrets_commitment_hash": "6568dd285df3bf23d7697217273249841707951516e67c4954243d5d80ad23da", + "receiver_pubkey": "96cb0f9478f6a645cf69ef3a3a30828173f5ca84705d4bd93405dcb4a5d8e98be9d02426f3cf25fef4399a3ac9e8f98c", + "settings": { + "gen_id": "8d17e61db7b774d16cb165662a8c2c4a", + "n": 3, + "k": 2 + }, + "base_hashes": [ + "2cc6b806b3215210122226629b0d0872484d43754668bb90c4d1b5e401377890", + "6568dd285df3bf23d7697217273249841707951516e67c4954243d5d80ad23da", + "bdf6925e576dc08431ac6a590a64263c5ac3d8e5bd88113ac5777762fabd71a6" + ], + "base_pubkeys": [ + "a6602d395e8fbf67269a41a208613e42795c9e66d365dd87287162e31484cb0f84efaec36220714022bbd296e5357bc9", + "8a64f40fe2e976d01227b4085b42421c8c4c3549f539b8eb7ecad8833b5855ae1994126bfb9b6ff56a5f131f407462d8" + ] + } +} diff --git a/test_vectors/bad_encrypted_share/seeds-commitment-from-1-to-2-fewer-base-hashes-encrypted.json b/test_vectors/bad_encrypted_share/seeds-commitment-from-1-to-2-fewer-base-hashes-encrypted.json new file mode 100644 index 0000000..c291d93 --- /dev/null +++ b/test_vectors/bad_encrypted_share/seeds-commitment-from-1-to-2-fewer-base-hashes-encrypted.json @@ -0,0 +1,27 @@ +{ + "params": { + "cmd_extra_args": "execute --type=bad-encrypted-share --json-schema-file=spec/bad_encrypted_partial_key_spec.json", + "expected_exit_code": 1 + }, + "scenario": { + "sender_pubkey": "97928b112d00235a7452dcc4bc1107c64b9a674082dbaeb4aed6d3f82b7e896b68c2eec79f410e3ebcc3aa939bb38909", + "receiver_signature": "98cd2c6ca685a7a8380ddca6fa125632cdec8ca523e961e95c809bd068c4018b88e46416bd02105b8139897f86cf2d06067d249ec63e87c0cb96c5ac42636c6aa538acbfd5d53594ded05c43fd73fe87c0ee83d885d9152b117df752372e17a1", + "encrypted_data": "826e15154b8b1e0f28b89de5432f3c8cfc144dff540759847b1769e684adbf50eee0ded0d36e1eb7cae8cd6e8dcf841c95f3588a9888980c3b376b30976dbf4b1387abeb7d31c918f7c8c4decee13c7644c81f71ff45971f580d42dd0a80dd656cdd2bf1d061c868fecddd272d370c499209e69d1c5e60c057780bdee43335ae311913a20d71f2fe4411d8f5e4a752f7fef11da6c0f279a142994c88d5a55a2122bf098ebd5fefcacd77c7df4dfdc72366b64e46901e2f3e3ed2a2dc0cfda6e841abd179d3dfa322b74c5e8d60afd8635c85292f2eda51db65c3aaaf54c7a1418b", + "receiver_base_secrets_commitment_hash": "6568dd285df3bf23d7697217273249841707951516e67c4954243d5d80ad23da", + "receiver_pubkey": "96cb0f9478f6a645cf69ef3a3a30828173f5ca84705d4bd93405dcb4a5d8e98be9d02426f3cf25fef4399a3ac9e8f98c", + "settings": { + "gen_id": "8d17e61db7b774d16cb165662a8c2c4a", + "n": 3, + "k": 2 + }, + "base_hashes": [ + "2cc6b806b3215210122226629b0d0872484d43754668bb90c4d1b5e401377890", + "6568dd285df3bf23d7697217273249841707951516e67c4954243d5d80ad23da", + "bdf6925e576dc08431ac6a590a64263c5ac3d8e5bd88113ac5777762fabd71a6" + ], + "base_pubkeys": [ + "a6602d395e8fbf67269a41a208613e42795c9e66d365dd87287162e31484cb0f84efaec36220714022bbd296e5357bc9", + "8a64f40fe2e976d01227b4085b42421c8c4c3549f539b8eb7ecad8833b5855ae1994126bfb9b6ff56a5f131f407462d8" + ] +} +} diff --git a/test_vectors/bad_encrypted_share/seeds-commitment-from-1-to-2-more-base-hashes-encrypted.json b/test_vectors/bad_encrypted_share/seeds-commitment-from-1-to-2-more-base-hashes-encrypted.json new file mode 100644 index 0000000..7ee6b69 --- /dev/null +++ b/test_vectors/bad_encrypted_share/seeds-commitment-from-1-to-2-more-base-hashes-encrypted.json @@ -0,0 +1,27 @@ +{ + "params": { + "cmd_extra_args": "execute --type=bad-encrypted-share --json-schema-file=spec/bad_encrypted_partial_key_spec.json", + "expected_exit_code": 1 + }, + "scenario": { + "sender_pubkey": "97928b112d00235a7452dcc4bc1107c64b9a674082dbaeb4aed6d3f82b7e896b68c2eec79f410e3ebcc3aa939bb38909", + "receiver_signature": "98cd2c6ca685a7a8380ddca6fa125632cdec8ca523e961e95c809bd068c4018b88e46416bd02105b8139897f86cf2d06067d249ec63e87c0cb96c5ac42636c6aa538acbfd5d53594ded05c43fd73fe87c0ee83d885d9152b117df752372e17a1", + "encrypted_data": "826e15154b8b1e0f28b89de5432f3c8cfc144dff540759847b1769e684adbf50eee0ded0d36e1eb7cae8cd6e8dcf841c95f3588a9888980c3b376b30976dbf4b1387abeb7d31c918f7c8c4decee13c7644c81f71ff45971f580d42dd0a80dd656cdd2bf1d061c868fecddd272d370c499209e69d1c5e60c057780bdee43335ae311913a20d71f2fe4411d8f5e4a752f7fef11da6c0f279a142994c88d5a55a2122bf098ebd5fefcacd77c7df4dfdc72366b64e46901e2f3e3ed2a2dc0cfda6e841abd179d3dfa322b74c5e8d60afd8635c85292f2eda51db65c3aaaf54c7a1418b", + "receiver_base_secrets_commitment_hash": "6568dd285df3bf23d7697217273249841707951516e67c4954243d5d80ad23da", + "receiver_pubkey": "96cb0f9478f6a645cf69ef3a3a30828173f5ca84705d4bd93405dcb4a5d8e98be9d02426f3cf25fef4399a3ac9e8f98c", + "settings": { + "gen_id": "8d17e61db7b774d16cb165662a8c2c4a", + "n": 3, + "k": 2 + }, + "base_hashes": [ + "2cc6b806b3215210122226629b0d0872484d43754668bb90c4d1b5e401377890", + "6568dd285df3bf23d7697217273249841707951516e67c4954243d5d80ad23da", + "bdf6925e576dc08431ac6a590a64263c5ac3d8e5bd88113ac5777762fabd71a6" + ], + "base_pubkeys": [ + "a6602d395e8fbf67269a41a208613e42795c9e66d365dd87287162e31484cb0f84efaec36220714022bbd296e5357bc9", + "8a64f40fe2e976d01227b4085b42421c8c4c3549f539b8eb7ecad8833b5855ae1994126bfb9b6ff56a5f131f407462d8" + ] + } +} diff --git a/test_vectors/bad_encrypted_share/seeds-commitment-from-1-to-2-wrong-hash-encrypted.json b/test_vectors/bad_encrypted_share/seeds-commitment-from-1-to-2-wrong-hash-encrypted.json new file mode 100644 index 0000000..7ee6b69 --- /dev/null +++ b/test_vectors/bad_encrypted_share/seeds-commitment-from-1-to-2-wrong-hash-encrypted.json @@ -0,0 +1,27 @@ +{ + "params": { + "cmd_extra_args": "execute --type=bad-encrypted-share --json-schema-file=spec/bad_encrypted_partial_key_spec.json", + "expected_exit_code": 1 + }, + "scenario": { + "sender_pubkey": "97928b112d00235a7452dcc4bc1107c64b9a674082dbaeb4aed6d3f82b7e896b68c2eec79f410e3ebcc3aa939bb38909", + "receiver_signature": "98cd2c6ca685a7a8380ddca6fa125632cdec8ca523e961e95c809bd068c4018b88e46416bd02105b8139897f86cf2d06067d249ec63e87c0cb96c5ac42636c6aa538acbfd5d53594ded05c43fd73fe87c0ee83d885d9152b117df752372e17a1", + "encrypted_data": "826e15154b8b1e0f28b89de5432f3c8cfc144dff540759847b1769e684adbf50eee0ded0d36e1eb7cae8cd6e8dcf841c95f3588a9888980c3b376b30976dbf4b1387abeb7d31c918f7c8c4decee13c7644c81f71ff45971f580d42dd0a80dd656cdd2bf1d061c868fecddd272d370c499209e69d1c5e60c057780bdee43335ae311913a20d71f2fe4411d8f5e4a752f7fef11da6c0f279a142994c88d5a55a2122bf098ebd5fefcacd77c7df4dfdc72366b64e46901e2f3e3ed2a2dc0cfda6e841abd179d3dfa322b74c5e8d60afd8635c85292f2eda51db65c3aaaf54c7a1418b", + "receiver_base_secrets_commitment_hash": "6568dd285df3bf23d7697217273249841707951516e67c4954243d5d80ad23da", + "receiver_pubkey": "96cb0f9478f6a645cf69ef3a3a30828173f5ca84705d4bd93405dcb4a5d8e98be9d02426f3cf25fef4399a3ac9e8f98c", + "settings": { + "gen_id": "8d17e61db7b774d16cb165662a8c2c4a", + "n": 3, + "k": 2 + }, + "base_hashes": [ + "2cc6b806b3215210122226629b0d0872484d43754668bb90c4d1b5e401377890", + "6568dd285df3bf23d7697217273249841707951516e67c4954243d5d80ad23da", + "bdf6925e576dc08431ac6a590a64263c5ac3d8e5bd88113ac5777762fabd71a6" + ], + "base_pubkeys": [ + "a6602d395e8fbf67269a41a208613e42795c9e66d365dd87287162e31484cb0f84efaec36220714022bbd296e5357bc9", + "8a64f40fe2e976d01227b4085b42421c8c4c3549f539b8eb7ecad8833b5855ae1994126bfb9b6ff56a5f131f407462d8" + ] + } +} diff --git a/test_vectors/bad_encrypted_share/seeds-commitment-from-1-to-2-wrong-secret-key-encrypted.json b/test_vectors/bad_encrypted_share/seeds-commitment-from-1-to-2-wrong-secret-key-encrypted.json new file mode 100644 index 0000000..da81020 --- /dev/null +++ b/test_vectors/bad_encrypted_share/seeds-commitment-from-1-to-2-wrong-secret-key-encrypted.json @@ -0,0 +1,27 @@ +{ + "params": { + "cmd_extra_args": "execute --type=bad-encrypted-share --json-schema-file=spec/bad_encrypted_partial_key_spec.json", + "expected_exit_code": 1 + }, + "scenario": { + "sender_pubkey": "97928b112d00235a7452dcc4bc1107c64b9a674082dbaeb4aed6d3f82b7e896b68c2eec79f410e3ebcc3aa939bb38909", + "receiver_signature": "98cd2c6ca685a7a8380ddca6fa125632cdec8ca523e961e95c809bd068c4018b88e46416bd02105b8139897f86cf2d06067d249ec63e87c0cb96c5ac42636c6aa538acbfd5d53594ded05c43fd73fe87c0ee83d885d9152b117df752372e17a1", + "encrypted_data": "826e15154b8b1e0f28b89de5432f3c8cfc241e5bb2f6667b34346b7bb3ae227b6fcc301de1fb21a6c5f0fed4dbc4224cfee88941a192824642dd70ef751980add98f14e6399159d89317e4875fcabf4793c81f71ff45971f580d42dd0a80dd656cdd2bf1d061c868fecddd272d370c499209e69d1c5e60c057780bdee43335ae313924f8397ccb6df4ddbc89efcab29ad165a07175ca7157ab76a0f2f5fc0f2fc6b3b21f9d59f7ecb3272f3d70d3bec449b55a516b24b052475df38bb27f4133114925907a7121d16e350f9024f8f987b360c662ff77d5c761efd93158e8e95569", + "receiver_base_secrets_commitment_hash": "6568dd285df3bf23d7697217273249841707951516e67c4954243d5d80ad23da", + "receiver_pubkey": "96cb0f9478f6a645cf69ef3a3a30828173f5ca84705d4bd93405dcb4a5d8e98be9d02426f3cf25fef4399a3ac9e8f98c", + "settings": { + "gen_id": "8d17e61db7b774d16cb165662a8c2c4a", + "n": 3, + "k": 2 + }, + "base_hashes": [ + "2cc6b806b3215210122226629b0d0872484d43754668bb90c4d1b5e401377890", + "6568dd285df3bf23d7697217273249841707951516e67c4954243d5d80ad23da", + "bdf6925e576dc08431ac6a590a64263c5ac3d8e5bd88113ac5777762fabd71a6" + ], + "base_pubkeys": [ + "a6602d395e8fbf67269a41a208613e42795c9e66d365dd87287162e31484cb0f84efaec36220714022bbd296e5357bc9", + "8a64f40fe2e976d01227b4085b42421c8c4c3549f539b8eb7ecad8833b5855ae1994126bfb9b6ff56a5f131f407462d8" + ] + } +} diff --git a/test_vectors/bad_encrypted_share/seeds-commitment-from-1-to-2-wrong-signature-encrypted.json b/test_vectors/bad_encrypted_share/seeds-commitment-from-1-to-2-wrong-signature-encrypted.json new file mode 100644 index 0000000..7ee6b69 --- /dev/null +++ b/test_vectors/bad_encrypted_share/seeds-commitment-from-1-to-2-wrong-signature-encrypted.json @@ -0,0 +1,27 @@ +{ + "params": { + "cmd_extra_args": "execute --type=bad-encrypted-share --json-schema-file=spec/bad_encrypted_partial_key_spec.json", + "expected_exit_code": 1 + }, + "scenario": { + "sender_pubkey": "97928b112d00235a7452dcc4bc1107c64b9a674082dbaeb4aed6d3f82b7e896b68c2eec79f410e3ebcc3aa939bb38909", + "receiver_signature": "98cd2c6ca685a7a8380ddca6fa125632cdec8ca523e961e95c809bd068c4018b88e46416bd02105b8139897f86cf2d06067d249ec63e87c0cb96c5ac42636c6aa538acbfd5d53594ded05c43fd73fe87c0ee83d885d9152b117df752372e17a1", + "encrypted_data": "826e15154b8b1e0f28b89de5432f3c8cfc144dff540759847b1769e684adbf50eee0ded0d36e1eb7cae8cd6e8dcf841c95f3588a9888980c3b376b30976dbf4b1387abeb7d31c918f7c8c4decee13c7644c81f71ff45971f580d42dd0a80dd656cdd2bf1d061c868fecddd272d370c499209e69d1c5e60c057780bdee43335ae311913a20d71f2fe4411d8f5e4a752f7fef11da6c0f279a142994c88d5a55a2122bf098ebd5fefcacd77c7df4dfdc72366b64e46901e2f3e3ed2a2dc0cfda6e841abd179d3dfa322b74c5e8d60afd8635c85292f2eda51db65c3aaaf54c7a1418b", + "receiver_base_secrets_commitment_hash": "6568dd285df3bf23d7697217273249841707951516e67c4954243d5d80ad23da", + "receiver_pubkey": "96cb0f9478f6a645cf69ef3a3a30828173f5ca84705d4bd93405dcb4a5d8e98be9d02426f3cf25fef4399a3ac9e8f98c", + "settings": { + "gen_id": "8d17e61db7b774d16cb165662a8c2c4a", + "n": 3, + "k": 2 + }, + "base_hashes": [ + "2cc6b806b3215210122226629b0d0872484d43754668bb90c4d1b5e401377890", + "6568dd285df3bf23d7697217273249841707951516e67c4954243d5d80ad23da", + "bdf6925e576dc08431ac6a590a64263c5ac3d8e5bd88113ac5777762fabd71a6" + ], + "base_pubkeys": [ + "a6602d395e8fbf67269a41a208613e42795c9e66d365dd87287162e31484cb0f84efaec36220714022bbd296e5357bc9", + "8a64f40fe2e976d01227b4085b42421c8c4c3549f539b8eb7ecad8833b5855ae1994126bfb9b6ff56a5f131f407462d8" + ] + } +} diff --git a/test_vectors/bad_encrypted_share/seeds-commitment-from-1-to-2-zero-k-encrypted.json b/test_vectors/bad_encrypted_share/seeds-commitment-from-1-to-2-zero-k-encrypted.json new file mode 100644 index 0000000..7bd5fad --- /dev/null +++ b/test_vectors/bad_encrypted_share/seeds-commitment-from-1-to-2-zero-k-encrypted.json @@ -0,0 +1,27 @@ +{ + "params": { + "cmd_extra_args": "execute --type=bad-encrypted-share --json-schema-file=spec/bad_encrypted_partial_key_spec.json", + "expected_exit_code": 1 + }, + "scenario": { + "sender_pubkey": "97928b112d00235a7452dcc4bc1107c64b9a674082dbaeb4aed6d3f82b7e896b68c2eec79f410e3ebcc3aa939bb38909", + "receiver_signature": "98cd2c6ca685a7a8380ddca6fa125632cdec8ca523e961e95c809bd068c4018b88e46416bd02105b8139897f86cf2d06067d249ec63e87c0cb96c5ac42636c6aa538acbfd5d53594ded05c43fd73fe87c0ee83d885d9152b117df752372e17a1", + "encrypted_data": "826e15154b8b1e0f28b89de5432f3c8cfc144dff540759847b1769e684adbf50eee0ded0d36e1eb7cae8cd6e8dcf841c95349e1384a87897e5c7cdd3729cba293342063e291e46cfa16753a75dacdf732fc81f71ff45971f580d42dd0a80dd656cdd2bf1d061c868fecddd272d370c499209e69d1c5e60c057780bdee43335ae313275a5cbaf6148dab573b662fda294ba2601674438308269ce4099f2f1a810d2abbe2fd5947bdcaad729b348261f2d4ab9c0b1eb25d7ef9d9fad80834b20f58b550f1f1bb5deb0f0e28b1489f336491973243196461b70ef00a1b77e80d778c9", + "receiver_base_secrets_commitment_hash": "6568dd285df3bf23d7697217273249841707951516e67c4954243d5d80ad23da", + "receiver_pubkey": "96cb0f9478f6a645cf69ef3a3a30828173f5ca84705d4bd93405dcb4a5d8e98be9d02426f3cf25fef4399a3ac9e8f98c", + "settings": { + "gen_id": "8d17e61db7b774d16cb165662a8c2c4a", + "n": 3, + "k": 2 + }, + "base_hashes": [ + "2cc6b806b3215210122226629b0d0872484d43754668bb90c4d1b5e401377890", + "6568dd285df3bf23d7697217273249841707951516e67c4954243d5d80ad23da", + "bdf6925e576dc08431ac6a590a64263c5ac3d8e5bd88113ac5777762fabd71a6" + ], + "base_pubkeys": [ + "a6602d395e8fbf67269a41a208613e42795c9e66d365dd87287162e31484cb0f84efaec36220714022bbd296e5357bc9", + "8a64f40fe2e976d01227b4085b42421c8c4c3549f539b8eb7ecad8833b5855ae1994126bfb9b6ff56a5f131f407462d8" + ] + } +} diff --git a/test_vectors/bad_encrypted_share/seeds-commitment-from-1-to-3-bad-hash-encrypted.json b/test_vectors/bad_encrypted_share/seeds-commitment-from-1-to-3-bad-hash-encrypted.json new file mode 100644 index 0000000..9a05ef5 --- /dev/null +++ b/test_vectors/bad_encrypted_share/seeds-commitment-from-1-to-3-bad-hash-encrypted.json @@ -0,0 +1,27 @@ +{ + "params": { + "cmd_extra_args": "execute --type=bad-encrypted-share --json-schema-file=spec/bad_encrypted_partial_key_spec.json", + "expected_exit_code": 1 + }, + "scenario": { + "sender_pubkey": "97928b112d00235a7452dcc4bc1107c64b9a674082dbaeb4aed6d3f82b7e896b68c2eec79f410e3ebcc3aa939bb38909", + "receiver_signature": "a381fa190c4f269bf0feb69939287350381fce888c1f966ce705fbadc625abc66314b2efc79dc98f5f41b1a6c6c4262b06c5af7131702639f5423a8121bda5353d7ab9a3d91130c1c12dfe79609836b3a1e8156fb61267695e960d9e3e8194c1", + "encrypted_data": "f108d77c90225d0357c6fec550a0962f9812670bdc37560d2f8b54536bb26ee12ae6231b6d2f623442530f36df2cc1d37f1773ece9d1b9846d0b06855b15d9598692fd2472ae9b3150cf6d3af32c1dff789830ce96d31069f0f335b71152818087db61af72565608fb979b17b2c9f9108a1cfdb16c050d13a2fd2bc7d60d6d62fe3ede9e4a8ba15a41aefa5609579410f7d23af1d0802bafc272f4099875d62e236dc4f05eb07bfc3307cecf567d64a51624c1f71244b9693e88fdd96d5fe2c28eaf66d1f7cfd2735ffe81cf2333e1914f85529825464ff57d670c8088fb509c4a", + "receiver_base_secrets_commitment_hash": "bdf6925e576dc08431ac6a590a64263c5ac3d8e5bd88113ac5777762fabd71a6", + "receiver_pubkey": "b33a4b42995a61ee35a99de7f087233c572a48ff83cce22daa18d54c99b31bdcd16005f9e6384752a38ed44917257dde", + "settings": { + "gen_id": "8d17e61db7b774d16cb165662a8c2c4a", + "n": 3, + "k": 2 + }, + "base_hashes": [ + "2cc6b806b3215210122226629b0d0872484d43754668bb90c4d1b5e401377890", + "6568dd285df3bf23d7697217273249841707951516e67c4954243d5d80ad23da", + "bdf6925e576dc08431ac6a590a64263c5ac3d8e5bd88113ac5777762fabd71a6" + ], + "base_pubkeys": [ + "a6602d395e8fbf67269a41a208613e42795c9e66d365dd87287162e31484cb0f84efaec36220714022bbd296e5357bc9", + "8a64f40fe2e976d01227b4085b42421c8c4c3549f539b8eb7ecad8833b5855ae1994126bfb9b6ff56a5f131f407462d8" + ] + } +} diff --git a/test_vectors/bad_encrypted_share/seeds-commitment-from-1-to-3-bad-secret-key-encrypted.json b/test_vectors/bad_encrypted_share/seeds-commitment-from-1-to-3-bad-secret-key-encrypted.json new file mode 100644 index 0000000..3535902 --- /dev/null +++ b/test_vectors/bad_encrypted_share/seeds-commitment-from-1-to-3-bad-secret-key-encrypted.json @@ -0,0 +1,27 @@ +{ + "params": { + "cmd_extra_args": "execute --type=bad-encrypted-share --json-schema-file=spec/bad_encrypted_partial_key_spec.json", + "expected_exit_code": 1 + }, + "scenario": { + "sender_pubkey": "97928b112d00235a7452dcc4bc1107c64b9a674082dbaeb4aed6d3f82b7e896b68c2eec79f410e3ebcc3aa939bb38909", + "receiver_signature": "a381fa190c4f269bf0feb69939287350381fce888c1f966ce705fbadc625abc66314b2efc79dc98f5f41b1a6c6c4262b06c5af7131702639f5423a8121bda5353d7ab9a3d91130c1c12dfe79609836b3a1e8156fb61267695e960d9e3e8194c1", + "encrypted_data": "8e95acf5dd014061759b94a7eff9d893b919b49ab20bb173d42c709ddf9e3dcaf78b8134ce2ed95291d2ea5f43a5c89121fff7f22268515bef53403f1e9554122e0029978502046cee59959b6e6486cc2bd4a9d933792a03b2d6652f0e6d4b5fc8c7c7b2e572e71cb1e0459bdd9c068bb395393e4e3ee1fc49e8722164a3d1a46278c38823761afd31b4443c600e6df2229da5ed859c766d99e7148f1213fff2d6fafc308a6a939edec34d2938d2fbf21fcdfcce95907b6012f470e0cadaee605f96634b685431c5bc44ea80937e0926cb52175a886cdc422637874d0777aac0ff", + "receiver_base_secrets_commitment_hash": "bdf6925e576dc08431ac6a590a64263c5ac3d8e5bd88113ac5777762fabd71a6", + "receiver_pubkey": "b33a4b42995a61ee35a99de7f087233c572a48ff83cce22daa18d54c99b31bdcd16005f9e6384752a38ed44917257dde", + "settings": { + "gen_id": "8d17e61db7b774d16cb165662a8c2c4a", + "n": 3, + "k": 2 + }, + "base_hashes": [ + "2cc6b806b3215210122226629b0d0872484d43754668bb90c4d1b5e401377890", + "6568dd285df3bf23d7697217273249841707951516e67c4954243d5d80ad23da", + "bdf6925e576dc08431ac6a590a64263c5ac3d8e5bd88113ac5777762fabd71a6" + ], + "base_pubkeys": [ + "a6602d395e8fbf67269a41a208613e42795c9e66d365dd87287162e31484cb0f84efaec36220714022bbd296e5357bc9", + "8a64f40fe2e976d01227b4085b42421c8c4c3549f539b8eb7ecad8833b5855ae1994126bfb9b6ff56a5f131f407462d8" + ] + } +} diff --git a/test_vectors/bad_encrypted_share/seeds-commitment-from-1-to-3-bad-signature-encrypted.json b/test_vectors/bad_encrypted_share/seeds-commitment-from-1-to-3-bad-signature-encrypted.json new file mode 100644 index 0000000..9a05ef5 --- /dev/null +++ b/test_vectors/bad_encrypted_share/seeds-commitment-from-1-to-3-bad-signature-encrypted.json @@ -0,0 +1,27 @@ +{ + "params": { + "cmd_extra_args": "execute --type=bad-encrypted-share --json-schema-file=spec/bad_encrypted_partial_key_spec.json", + "expected_exit_code": 1 + }, + "scenario": { + "sender_pubkey": "97928b112d00235a7452dcc4bc1107c64b9a674082dbaeb4aed6d3f82b7e896b68c2eec79f410e3ebcc3aa939bb38909", + "receiver_signature": "a381fa190c4f269bf0feb69939287350381fce888c1f966ce705fbadc625abc66314b2efc79dc98f5f41b1a6c6c4262b06c5af7131702639f5423a8121bda5353d7ab9a3d91130c1c12dfe79609836b3a1e8156fb61267695e960d9e3e8194c1", + "encrypted_data": "f108d77c90225d0357c6fec550a0962f9812670bdc37560d2f8b54536bb26ee12ae6231b6d2f623442530f36df2cc1d37f1773ece9d1b9846d0b06855b15d9598692fd2472ae9b3150cf6d3af32c1dff789830ce96d31069f0f335b71152818087db61af72565608fb979b17b2c9f9108a1cfdb16c050d13a2fd2bc7d60d6d62fe3ede9e4a8ba15a41aefa5609579410f7d23af1d0802bafc272f4099875d62e236dc4f05eb07bfc3307cecf567d64a51624c1f71244b9693e88fdd96d5fe2c28eaf66d1f7cfd2735ffe81cf2333e1914f85529825464ff57d670c8088fb509c4a", + "receiver_base_secrets_commitment_hash": "bdf6925e576dc08431ac6a590a64263c5ac3d8e5bd88113ac5777762fabd71a6", + "receiver_pubkey": "b33a4b42995a61ee35a99de7f087233c572a48ff83cce22daa18d54c99b31bdcd16005f9e6384752a38ed44917257dde", + "settings": { + "gen_id": "8d17e61db7b774d16cb165662a8c2c4a", + "n": 3, + "k": 2 + }, + "base_hashes": [ + "2cc6b806b3215210122226629b0d0872484d43754668bb90c4d1b5e401377890", + "6568dd285df3bf23d7697217273249841707951516e67c4954243d5d80ad23da", + "bdf6925e576dc08431ac6a590a64263c5ac3d8e5bd88113ac5777762fabd71a6" + ], + "base_pubkeys": [ + "a6602d395e8fbf67269a41a208613e42795c9e66d365dd87287162e31484cb0f84efaec36220714022bbd296e5357bc9", + "8a64f40fe2e976d01227b4085b42421c8c4c3549f539b8eb7ecad8833b5855ae1994126bfb9b6ff56a5f131f407462d8" + ] + } +} diff --git a/test_vectors/bad_encrypted_share/seeds-commitment-from-1-to-3-encrypted.json b/test_vectors/bad_encrypted_share/seeds-commitment-from-1-to-3-encrypted.json new file mode 100644 index 0000000..f0b16a6 --- /dev/null +++ b/test_vectors/bad_encrypted_share/seeds-commitment-from-1-to-3-encrypted.json @@ -0,0 +1,27 @@ +{ + "params": { + "cmd_extra_args": "execute --type=bad-encrypted-share --json-schema-file=spec/bad_encrypted_partial_key_spec.json", + "expected_exit_code": 1 + }, + "scenario": { + "sender_pubkey": "97928b112d00235a7452dcc4bc1107c64b9a674082dbaeb4aed6d3f82b7e896b68c2eec79f410e3ebcc3aa939bb38909", + "receiver_signature": "a381fa190c4f269bf0feb69939287350381fce888c1f966ce705fbadc625abc66314b2efc79dc98f5f41b1a6c6c4262b06c5af7131702639f5423a8121bda5353d7ab9a3d91130c1c12dfe79609836b3a1e8156fb61267695e960d9e3e8194c1", + "encrypted_data": "5134e1253871d1e66bac9821d71c824d37fff29318ff0ca651e2e565e82cc5696e2ee83a4f95318b8b18be9f83b23c06c935352b8f820e756d9420b751d046d0a01b0e59c7f7fef109c9cd664d43e674da83e1628e34da6e961663f6cd258b3154bf6bbe03c0bb2dcaa80587ba46160fb5a943e8e78f823741bfb27dc7d4584cb32bd4774304eb976841afe946b6dc770f39695e8c28a22b45131135b5ca674a5f41159eac89854a0be86a00bf13db14682c273299522096b63e29f972cc237336af4d4fcab9589f1457ed69594a7ef20f817f13df98bf3325b5edeb9eb92123a7", + "receiver_base_secrets_commitment_hash": "bdf6925e576dc08431ac6a590a64263c5ac3d8e5bd88113ac5777762fabd71a6", + "receiver_pubkey": "b33a4b42995a61ee35a99de7f087233c572a48ff83cce22daa18d54c99b31bdcd16005f9e6384752a38ed44917257dde", + "settings": { + "gen_id": "8d17e61db7b774d16cb165662a8c2c4a", + "n": 3, + "k": 2 + }, + "base_hashes": [ + "2cc6b806b3215210122226629b0d0872484d43754668bb90c4d1b5e401377890", + "6568dd285df3bf23d7697217273249841707951516e67c4954243d5d80ad23da", + "bdf6925e576dc08431ac6a590a64263c5ac3d8e5bd88113ac5777762fabd71a6" + ], + "base_pubkeys": [ + "a6602d395e8fbf67269a41a208613e42795c9e66d365dd87287162e31484cb0f84efaec36220714022bbd296e5357bc9", + "8a64f40fe2e976d01227b4085b42421c8c4c3549f539b8eb7ecad8833b5855ae1994126bfb9b6ff56a5f131f407462d8" + ] + } +} diff --git a/test_vectors/finalization/bad-aggregate-pubkey.json b/test_vectors/finalization/bad-aggregate-pubkey.json deleted file mode 100644 index 4f98abb..0000000 --- a/test_vectors/finalization/bad-aggregate-pubkey.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "params": { - "cmd_extra_args": "--type=finalization --json-schema-file=spec/finalization_spec.json", - "expected_exit_code": 1 - }, - "scenario": { - "settings": { - "n": 5, - "k": 3, - "gen_id": "89f0996b33ca953e0cf9b70a5f84cb50" - }, - "generations": [ - { - "base_pubkeys": [ - "a1da3158e0a5305eb258b969dcfd24a4e5ea4d6665524619017a6a1ce7710cca1ccce4370d051fd55d401ba58b12a3b5", - "a51fd02773126ede1ad38afcd257c5f5b081995539f26bdc2011286cc62557ba0d375f46e193b4e216c31f16dd79847a", - "a6cbadf14b777d22aed8697d9f41e45fd870a46286f6aae93d0c5e924d74f2cac339863e7ad1d9bf3f9e82164e1ea2ee" - ], - "base_hash": "2438b43279a7420444af83aa840e381f4e9a79c87f82c125d1475152ce42e57f", - "partial_pubkey": "b18bf51b1dcb8689f7b1b5ac5d58b291c525516287f75c562a689e7b2f91633a30fa56740eb7c0e83603cf0f2eb91117", - "message_cleartext": "24610b589ba77b506b3383798cc0fc1f7be64b777fee6bdab14775e1a0ade524", - "message_signature": "8b59de1b727bd246e9a3fac4d753d096dc64b53d3d4093662f72e73fdc696f9fd2d637999cba289c2c5ab65eab3fd0df000ced0e0bb6503a0b805d864d2a56e1e5df1009b076a15e37d61ca00d30db1d216ba0ca7176dfb23005a9d67e5d18fc" - }, - { - "base_pubkeys": [ - "aecd2f577ec702eea283509932d7a326c67dad9c855a8449b110eff282dcc5ca238a33275e68d13c448f3832305d3a64", - "8f23a43d59befd88446a60b1a07e0936798c5bc0e8ff3ba9b014c40c6af05765fc6ba5da1056fb923122651212135408", - "9987347a1c9bd2a0a9f570c38e52a19f7b70d93a4b24a25dbf7cbaee1fcd4831521a0ffab46d066d7cdbc6f4f88364db" - ], - "base_hash": "24611a5ee2ba7b6cfb08f67999198f0c7b14614bffee78a75f17751e881d1924", - "partial_pubkey": "acce3b29357595b9827a4471df73b96587df525b8ea5476cee6d85146ab2008e78a4a58d40890e4c166a5a34c17b2955", - "message_cleartext": "24610b589ba77b506b3383798cc0fc1f7be64b777fee6bdab14775e1a0ade524", - "message_signature": "889284c45f33033ae131f6bcbcea7bc21a068f1c203cca0e4cf18d44738bd7870c13d33a0108f29758f3256b371a21ba0158b97b44d0af503f5cd55588311368be5994088e20d0c26752f5b06a91bf483ca3cafde5b471345d597cfc245909d8" - }, - { - "base_pubkeys": [ - "96de876b5ddfb0166fff60c301d5ef341203d611305b6a765b9e5ba412f7fe5847ae8603f61e01491ccd2c9649d06979", - "928d9467050dc2aeb3ae02aaba43e242bc6723a3e8870cba3877fac2f2cc7d6eacf1d0b39bfc7e49201c0c32360bcf3d", - "8c2cbe9e71ea75225a360b3451e8e876af5005fb8c4a02c2606dac1f54c76714e59982d5944e752dab40a5c1a76a1c07" - ], - "base_hash": "60010b5dc9747b508924f9fb8ce98021d3e693d0d5d36b2dc5df30e19d139680", - "partial_pubkey": "a704f7774c7028fc39093b640d3018bc55f1251d27194c506a5a41c96168f8dd8ff69118b8fd789f7897759006184686", - "message_cleartext": "24610b589ba77b506b3383798cc0fc1f7be64b777fee6bdab14775e1a0ade524", - "message_signature": "b85d4eeb42ce695ec5e77c4cc331b78cd3d4dc6fb46443e8894f690d6ef71d25e7a95036e5ac82315819db7c652056f0110ec66777516f38f714c865755f7f92d151d73f3bb523a7c2dd8e18f8936f79144cdc11eea0fc2dccadd70e786da7e4" - }, - { - "base_pubkeys": [ - "b69dc72c248437bd0be7d47554dd50221c0ac29be805e3c2d8e4f21bef4f2b6b60cd9a109559d5df4cae5da635c7879a", - "aa293fe7860e32db8a3e2c9578feeb554131aaa72d6993872780ac554735874fa8f3dbced82cfc6bf677ca79ce3c7340", - "ab10e5407fa7680f660cdca8b75f8e40dcd098b8b5b0f88525e3f2389dc6ffb470c9b6d377c3d1e30715283a713b07c2" - ], - "base_hash": "6d6573585c6852d96b241e8d13c002db19dd4beb950537dab7570949a0816d1c", - "partial_pubkey": "92683da0e3c25b8872f6371f4e98deeba6693b3778fd4d1818e13e16acf9bd6ad88d5f1b3514a7894afd538335bafdfa", - "message_cleartext": "24610b589ba77b506b3383798cc0fc1f7be64b777fee6bdab14775e1a0ade524", - "message_signature": "abf6c2c2593052744af15be101bfe78c2db57b263426a0fc9d3f679b74a712822d900fe024919d302a89adb61980320f03f6041224177f4e6528a9c13bd1e749de29fef2d7062259bf89cbe7f6ef509dbb632c872aea5b42d538a72490270dea" - }, - { - "base_pubkeys": [ - "95d1e771b6df3d1a33ecf2c49cedea4b1eeb0477b89cc6debf397b79d64bd6f6c9d3d2dd86fd0e8f803a3825bfc3fb67", - "8a9413aed9e746000747c10ea1d9fe1287aa86511569a941948590b97dd624d3f642118f0a39d5d11eebadd19ee24751", - "b5566edea3b7bd7d30efa402dc7d3047530dacc67a2fd808caf7700897664166c45cc57a7a08278fff1f4265d20c72fb" - ], - "base_hash": "ade24f5d9b58c6808d33dd373c8ffc0283c7ad77cc480745b175a69de3ad9bfb", - "partial_pubkey": "89584e99056382c7a9adcf43f0848f50729605bb3e2f4b750e66163f6d4c5d5f45ce94a450bff03f39c4225b689a8f2e", - "message_cleartext": "24610b589ba77b506b3383798cc0fc1f7be64b777fee6bdab14775e1a0ade524", - "message_signature": "8f1128a29b431e9035fcf35d04d8671a749040043987cc927f4bb929df963d02057c9cc83ea787189786c6683dcea0070db7892555e8b67766e62d335ca67d5534fbb8019430bd2b976aab78ae8d26b140c8277c1450ded65194142c5c4a1332" - } - ], - "aggregate_pubkey": "83c7a32c0bb0845991308a112420e4a7fd0424345341128146bade419dbbabdfedda178329866d4795d1b4b6e2799f99" - } -} \ No newline at end of file diff --git a/test_vectors/finalization/bad-base-hash.json b/test_vectors/finalization/bad-base-hash.json deleted file mode 100644 index c8f185a..0000000 --- a/test_vectors/finalization/bad-base-hash.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "params": { - "cmd_extra_args": "--type=finalization --json-schema-file=spec/finalization_spec.json", - "expected_exit_code": 1 - }, - "scenario": { - "settings": { - "n": 5, - "k": 3, - "gen_id": "89f0996b33ca953e0cf9b70a5f84cb50" - }, - "generations": [ - { - "base_pubkeys": [ - "a1da3158e0a5305eb258b969dcfd24a4e5ea4d6665524619017a6a1ce7710cca1ccce4370d051fd55d401ba58b12a3b5", - "a51fd02773126ede1ad38afcd257c5f5b081995539f26bdc2011286cc62557ba0d375f46e193b4e216c31f16dd79847a", - "a6cbadf14b777d22aed8697d9f41e45fd870a46286f6aae93d0c5e924d74f2cac339863e7ad1d9bf3f9e82164e1ea2ee" - ], - "base_hash": "2438b43279a7420444af83aa840e381f4e9a79c87f82c125d1475152ce42e57f", - "partial_pubkey": "b18bf51b1dcb8689f7b1b5ac5d58b291c525516287f75c562a689e7b2f91633a30fa56740eb7c0e83603cf0f2eb91117", - "message_cleartext": "24610b589ba77b506b3383798cc0fc1f7be64b777fee6bdab14775e1a0ade524", - "message_signature": "8b59de1b727bd246e9a3fac4d753d096dc64b53d3d4093662f72e73fdc696f9fd2d637999cba289c2c5ab65eab3fd0df000ced0e0bb6503a0b805d864d2a56e1e5df1009b076a15e37d61ca00d30db1d216ba0ca7176dfb23005a9d67e5d18fc" - }, - { - "base_pubkeys": [ - "aecd2f577ec702eea283509932d7a326c67dad9c855a8449b110eff282dcc5ca238a33275e68d13c448f3832305d3a64", - "8f23a43d59befd88446a60b1a07e0936798c5bc0e8ff3ba9b014c40c6af05765fc6ba5da1056fb923122651212135408", - "9987347a1c9bd2a0a9f570c38e52a19f7b70d93a4b24a25dbf7cbaee1fcd4831521a0ffab46d066d7cdbc6f4f88364db" - ], - "base_hash": "25611a5ee2ba7b6cfb08f67999198f0c7b14614bffee78a75f17751e881d1924", - "partial_pubkey": "acce3b29357595b9827a4471df73b96587df525b8ea5476cee6d85146ab2008e78a4a58d40890e4c166a5a34c17b2955", - "message_cleartext": "24610b589ba77b506b3383798cc0fc1f7be64b777fee6bdab14775e1a0ade524", - "message_signature": "889284c45f33033ae131f6bcbcea7bc21a068f1c203cca0e4cf18d44738bd7870c13d33a0108f29758f3256b371a21ba0158b97b44d0af503f5cd55588311368be5994088e20d0c26752f5b06a91bf483ca3cafde5b471345d597cfc245909d8" - }, - { - "base_pubkeys": [ - "96de876b5ddfb0166fff60c301d5ef341203d611305b6a765b9e5ba412f7fe5847ae8603f61e01491ccd2c9649d06979", - "928d9467050dc2aeb3ae02aaba43e242bc6723a3e8870cba3877fac2f2cc7d6eacf1d0b39bfc7e49201c0c32360bcf3d", - "8c2cbe9e71ea75225a360b3451e8e876af5005fb8c4a02c2606dac1f54c76714e59982d5944e752dab40a5c1a76a1c07" - ], - "base_hash": "60010b5dc9747b508924f9fb8ce98021d3e693d0d5d36b2dc5df30e19d139680", - "partial_pubkey": "a704f7774c7028fc39093b640d3018bc55f1251d27194c506a5a41c96168f8dd8ff69118b8fd789f7897759006184686", - "message_cleartext": "24610b589ba77b506b3383798cc0fc1f7be64b777fee6bdab14775e1a0ade524", - "message_signature": "b85d4eeb42ce695ec5e77c4cc331b78cd3d4dc6fb46443e8894f690d6ef71d25e7a95036e5ac82315819db7c652056f0110ec66777516f38f714c865755f7f92d151d73f3bb523a7c2dd8e18f8936f79144cdc11eea0fc2dccadd70e786da7e4" - }, - { - "base_pubkeys": [ - "b69dc72c248437bd0be7d47554dd50221c0ac29be805e3c2d8e4f21bef4f2b6b60cd9a109559d5df4cae5da635c7879a", - "aa293fe7860e32db8a3e2c9578feeb554131aaa72d6993872780ac554735874fa8f3dbced82cfc6bf677ca79ce3c7340", - "ab10e5407fa7680f660cdca8b75f8e40dcd098b8b5b0f88525e3f2389dc6ffb470c9b6d377c3d1e30715283a713b07c2" - ], - "base_hash": "6d6573585c6852d96b241e8d13c002db19dd4beb950537dab7570949a0816d1c", - "partial_pubkey": "92683da0e3c25b8872f6371f4e98deeba6693b3778fd4d1818e13e16acf9bd6ad88d5f1b3514a7894afd538335bafdfa", - "message_cleartext": "24610b589ba77b506b3383798cc0fc1f7be64b777fee6bdab14775e1a0ade524", - "message_signature": "abf6c2c2593052744af15be101bfe78c2db57b263426a0fc9d3f679b74a712822d900fe024919d302a89adb61980320f03f6041224177f4e6528a9c13bd1e749de29fef2d7062259bf89cbe7f6ef509dbb632c872aea5b42d538a72490270dea" - }, - { - "base_pubkeys": [ - "95d1e771b6df3d1a33ecf2c49cedea4b1eeb0477b89cc6debf397b79d64bd6f6c9d3d2dd86fd0e8f803a3825bfc3fb67", - "8a9413aed9e746000747c10ea1d9fe1287aa86511569a941948590b97dd624d3f642118f0a39d5d11eebadd19ee24751", - "b5566edea3b7bd7d30efa402dc7d3047530dacc67a2fd808caf7700897664166c45cc57a7a08278fff1f4265d20c72fb" - ], - "base_hash": "ade24f5d9b58c6808d33dd373c8ffc0283c7ad77cc480745b175a69de3ad9bfb", - "partial_pubkey": "89584e99056382c7a9adcf43f0848f50729605bb3e2f4b750e66163f6d4c5d5f45ce94a450bff03f39c4225b689a8f2e", - "message_cleartext": "24610b589ba77b506b3383798cc0fc1f7be64b777fee6bdab14775e1a0ade524", - "message_signature": "8f1128a29b431e9035fcf35d04d8671a749040043987cc927f4bb929df963d02057c9cc83ea787189786c6683dcea0070db7892555e8b67766e62d335ca67d5534fbb8019430bd2b976aab78ae8d26b140c8277c1450ded65194142c5c4a1332" - } - ], - "aggregate_pubkey": "88c9ee145c355e09eeedcda02b1d3df449e3c4a4ee1d975779ad07697fd7343b8ca5050d0241724b5afd325daa6e0224" - } -} \ No newline at end of file diff --git a/test_vectors/finalization/bad-message-signature.json b/test_vectors/finalization/bad-message-signature.json deleted file mode 100644 index 5e2b0a7..0000000 --- a/test_vectors/finalization/bad-message-signature.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "params": { - "cmd_extra_args": "--type=finalization --json-schema-file=spec/finalization_spec.json", - "expected_exit_code": 1 - }, - "scenario": { - "settings": { - "n": 5, - "k": 3, - "gen_id": "89f0996b33ca953e0cf9b70a5f84cb50" - }, - "generations": [ - { - "base_pubkeys": [ - "a1da3158e0a5305eb258b969dcfd24a4e5ea4d6665524619017a6a1ce7710cca1ccce4370d051fd55d401ba58b12a3b5", - "a51fd02773126ede1ad38afcd257c5f5b081995539f26bdc2011286cc62557ba0d375f46e193b4e216c31f16dd79847a", - "a6cbadf14b777d22aed8697d9f41e45fd870a46286f6aae93d0c5e924d74f2cac339863e7ad1d9bf3f9e82164e1ea2ee" - ], - "base_hash": "2438b43279a7420444af83aa840e381f4e9a79c87f82c125d1475152ce42e57f", - "partial_pubkey": "b18bf51b1dcb8689f7b1b5ac5d58b291c525516287f75c562a689e7b2f91633a30fa56740eb7c0e83603cf0f2eb91117", - "message_cleartext": "24610b589ba77b506b3383798cc0fc1f7be64b777fee6bdab14775e1a0ade524", - "message_signature": "8b59de1b727bd246e9a3fac4d753d096dc64b53d3d4093662f72e73fdc696f9fd2d637999cba289c2c5ab65eab3fd0df000ced0e0bb6503a0b805d864d2a56e1e5df1009b076a15e37d61ca00d30db1d216ba0ca7176dfb23005a9d67e5d18fc" - }, - { - "base_pubkeys": [ - "aecd2f577ec702eea283509932d7a326c67dad9c855a8449b110eff282dcc5ca238a33275e68d13c448f3832305d3a64", - "8f23a43d59befd88446a60b1a07e0936798c5bc0e8ff3ba9b014c40c6af05765fc6ba5da1056fb923122651212135408", - "9987347a1c9bd2a0a9f570c38e52a19f7b70d93a4b24a25dbf7cbaee1fcd4831521a0ffab46d066d7cdbc6f4f88364db" - ], - "base_hash": "24611a5ee2ba7b6cfb08f67999198f0c7b14614bffee78a75f17751e881d1924", - "partial_pubkey": "acce3b29357595b9827a4471df73b96587df525b8ea5476cee6d85146ab2008e78a4a58d40890e4c166a5a34c17b2955", - "message_cleartext": "24610b589ba77b506b3383798cc0fc1f7be64b777fee6bdab14775e1a0ade524", - "message_signature": "889284c45f33033ae131f6bcbcea7bc21a068f1c203cca0e4cf18d44738bd7870c13d33a0108f29758f3256b371a21ba1657807d2dcbbc3a2cbb397cc48066f3d5f13f1ce6c95eab9b919f297f272d10bc84dd72be4d6c30522cff555c6451f8" - }, - { - "base_pubkeys": [ - "96de876b5ddfb0166fff60c301d5ef341203d611305b6a765b9e5ba412f7fe5847ae8603f61e01491ccd2c9649d06979", - "928d9467050dc2aeb3ae02aaba43e242bc6723a3e8870cba3877fac2f2cc7d6eacf1d0b39bfc7e49201c0c32360bcf3d", - "8c2cbe9e71ea75225a360b3451e8e876af5005fb8c4a02c2606dac1f54c76714e59982d5944e752dab40a5c1a76a1c07" - ], - "base_hash": "60010b5dc9747b508924f9fb8ce98021d3e693d0d5d36b2dc5df30e19d139680", - "partial_pubkey": "a704f7774c7028fc39093b640d3018bc55f1251d27194c506a5a41c96168f8dd8ff69118b8fd789f7897759006184686", - "message_cleartext": "24610b589ba77b506b3383798cc0fc1f7be64b777fee6bdab14775e1a0ade524", - "message_signature": "b85d4eeb42ce695ec5e77c4cc331b78cd3d4dc6fb46443e8894f690d6ef71d25e7a95036e5ac82315819db7c652056f0110ec66777516f38f714c865755f7f92d151d73f3bb523a7c2dd8e18f8936f79144cdc11eea0fc2dccadd70e786da7e4" - }, - { - "base_pubkeys": [ - "b69dc72c248437bd0be7d47554dd50221c0ac29be805e3c2d8e4f21bef4f2b6b60cd9a109559d5df4cae5da635c7879a", - "aa293fe7860e32db8a3e2c9578feeb554131aaa72d6993872780ac554735874fa8f3dbced82cfc6bf677ca79ce3c7340", - "ab10e5407fa7680f660cdca8b75f8e40dcd098b8b5b0f88525e3f2389dc6ffb470c9b6d377c3d1e30715283a713b07c2" - ], - "base_hash": "6d6573585c6852d96b241e8d13c002db19dd4beb950537dab7570949a0816d1c", - "partial_pubkey": "92683da0e3c25b8872f6371f4e98deeba6693b3778fd4d1818e13e16acf9bd6ad88d5f1b3514a7894afd538335bafdfa", - "message_cleartext": "24610b589ba77b506b3383798cc0fc1f7be64b777fee6bdab14775e1a0ade524", - "message_signature": "abf6c2c2593052744af15be101bfe78c2db57b263426a0fc9d3f679b74a712822d900fe024919d302a89adb61980320f03f6041224177f4e6528a9c13bd1e749de29fef2d7062259bf89cbe7f6ef509dbb632c872aea5b42d538a72490270dea" - }, - { - "base_pubkeys": [ - "95d1e771b6df3d1a33ecf2c49cedea4b1eeb0477b89cc6debf397b79d64bd6f6c9d3d2dd86fd0e8f803a3825bfc3fb67", - "8a9413aed9e746000747c10ea1d9fe1287aa86511569a941948590b97dd624d3f642118f0a39d5d11eebadd19ee24751", - "b5566edea3b7bd7d30efa402dc7d3047530dacc67a2fd808caf7700897664166c45cc57a7a08278fff1f4265d20c72fb" - ], - "base_hash": "ade24f5d9b58c6808d33dd373c8ffc0283c7ad77cc480745b175a69de3ad9bfb", - "partial_pubkey": "89584e99056382c7a9adcf43f0848f50729605bb3e2f4b750e66163f6d4c5d5f45ce94a450bff03f39c4225b689a8f2e", - "message_cleartext": "24610b589ba77b506b3383798cc0fc1f7be64b777fee6bdab14775e1a0ade524", - "message_signature": "8f1128a29b431e9035fcf35d04d8671a749040043987cc927f4bb929df963d02057c9cc83ea787189786c6683dcea0070db7892555e8b67766e62d335ca67d5534fbb8019430bd2b976aab78ae8d26b140c8277c1450ded65194142c5c4a1332" - } - ], - "aggregate_pubkey": "88c9ee145c355e09eeedcda02b1d3df449e3c4a4ee1d975779ad07697fd7343b8ca5050d0241724b5afd325daa6e0224" - } -} \ No newline at end of file diff --git a/test_vectors/finalization/bad-partial-pubkey.json b/test_vectors/finalization/bad-partial-pubkey.json deleted file mode 100644 index d224471..0000000 --- a/test_vectors/finalization/bad-partial-pubkey.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "params": { - "cmd_extra_args": "--type=finalization --json-schema-file=spec/finalization_spec.json", - "expected_exit_code": 1 - }, - "scenario": { - "settings": { - "n": 5, - "k": 3, - "gen_id": "89f0996b33ca953e0cf9b70a5f84cb50" - }, - "generations": [ - { - "base_pubkeys": [ - "a1da3158e0a5305eb258b969dcfd24a4e5ea4d6665524619017a6a1ce7710cca1ccce4370d051fd55d401ba58b12a3b5", - "a51fd02773126ede1ad38afcd257c5f5b081995539f26bdc2011286cc62557ba0d375f46e193b4e216c31f16dd79847a", - "a6cbadf14b777d22aed8697d9f41e45fd870a46286f6aae93d0c5e924d74f2cac339863e7ad1d9bf3f9e82164e1ea2ee" - ], - "base_hash": "2438b43279a7420444af83aa840e381f4e9a79c87f82c125d1475152ce42e57f", - "partial_pubkey": "b18bf51b1dcb8689f7b1b5ac5d58b291c525516287f75c562a689e7b2f91633a30fa56740eb7c0e83603cf0f2eb91117", - "message_cleartext": "24610b589ba77b506b3383798cc0fc1f7be64b777fee6bdab14775e1a0ade524", - "message_signature": "8b59de1b727bd246e9a3fac4d753d096dc64b53d3d4093662f72e73fdc696f9fd2d637999cba289c2c5ab65eab3fd0df000ced0e0bb6503a0b805d864d2a56e1e5df1009b076a15e37d61ca00d30db1d216ba0ca7176dfb23005a9d67e5d18fc" - }, - { - "base_pubkeys": [ - "aecd2f577ec702eea283509932d7a326c67dad9c855a8449b110eff282dcc5ca238a33275e68d13c448f3832305d3a64", - "8f23a43d59befd88446a60b1a07e0936798c5bc0e8ff3ba9b014c40c6af05765fc6ba5da1056fb923122651212135408", - "9987347a1c9bd2a0a9f570c38e52a19f7b70d93a4b24a25dbf7cbaee1fcd4831521a0ffab46d066d7cdbc6f4f88364db" - ], - "base_hash": "24611a5ee2ba7b6cfb08f67999198f0c7b14614bffee78a75f17751e881d1924", - "partial_pubkey": "a7cbf040e4f0bc0924bd00e2d87760193affb1eaf3c8c296bb7b5bec88967832d9d9b80367ce0948513edc8df986c6ca", - "message_cleartext": "24610b589ba77b506b3383798cc0fc1f7be64b777fee6bdab14775e1a0ade524", - "message_signature": "889284c45f33033ae131f6bcbcea7bc21a068f1c203cca0e4cf18d44738bd7870c13d33a0108f29758f3256b371a21ba0158b97b44d0af503f5cd55588311368be5994088e20d0c26752f5b06a91bf483ca3cafde5b471345d597cfc245909d8" - }, - { - "base_pubkeys": [ - "96de876b5ddfb0166fff60c301d5ef341203d611305b6a765b9e5ba412f7fe5847ae8603f61e01491ccd2c9649d06979", - "928d9467050dc2aeb3ae02aaba43e242bc6723a3e8870cba3877fac2f2cc7d6eacf1d0b39bfc7e49201c0c32360bcf3d", - "8c2cbe9e71ea75225a360b3451e8e876af5005fb8c4a02c2606dac1f54c76714e59982d5944e752dab40a5c1a76a1c07" - ], - "base_hash": "60010b5dc9747b508924f9fb8ce98021d3e693d0d5d36b2dc5df30e19d139680", - "partial_pubkey": "a704f7774c7028fc39093b640d3018bc55f1251d27194c506a5a41c96168f8dd8ff69118b8fd789f7897759006184686", - "message_cleartext": "24610b589ba77b506b3383798cc0fc1f7be64b777fee6bdab14775e1a0ade524", - "message_signature": "b85d4eeb42ce695ec5e77c4cc331b78cd3d4dc6fb46443e8894f690d6ef71d25e7a95036e5ac82315819db7c652056f0110ec66777516f38f714c865755f7f92d151d73f3bb523a7c2dd8e18f8936f79144cdc11eea0fc2dccadd70e786da7e4" - }, - { - "base_pubkeys": [ - "b69dc72c248437bd0be7d47554dd50221c0ac29be805e3c2d8e4f21bef4f2b6b60cd9a109559d5df4cae5da635c7879a", - "aa293fe7860e32db8a3e2c9578feeb554131aaa72d6993872780ac554735874fa8f3dbced82cfc6bf677ca79ce3c7340", - "ab10e5407fa7680f660cdca8b75f8e40dcd098b8b5b0f88525e3f2389dc6ffb470c9b6d377c3d1e30715283a713b07c2" - ], - "base_hash": "6d6573585c6852d96b241e8d13c002db19dd4beb950537dab7570949a0816d1c", - "partial_pubkey": "92683da0e3c25b8872f6371f4e98deeba6693b3778fd4d1818e13e16acf9bd6ad88d5f1b3514a7894afd538335bafdfa", - "message_cleartext": "24610b589ba77b506b3383798cc0fc1f7be64b777fee6bdab14775e1a0ade524", - "message_signature": "abf6c2c2593052744af15be101bfe78c2db57b263426a0fc9d3f679b74a712822d900fe024919d302a89adb61980320f03f6041224177f4e6528a9c13bd1e749de29fef2d7062259bf89cbe7f6ef509dbb632c872aea5b42d538a72490270dea" - }, - { - "base_pubkeys": [ - "95d1e771b6df3d1a33ecf2c49cedea4b1eeb0477b89cc6debf397b79d64bd6f6c9d3d2dd86fd0e8f803a3825bfc3fb67", - "8a9413aed9e746000747c10ea1d9fe1287aa86511569a941948590b97dd624d3f642118f0a39d5d11eebadd19ee24751", - "b5566edea3b7bd7d30efa402dc7d3047530dacc67a2fd808caf7700897664166c45cc57a7a08278fff1f4265d20c72fb" - ], - "base_hash": "ade24f5d9b58c6808d33dd373c8ffc0283c7ad77cc480745b175a69de3ad9bfb", - "partial_pubkey": "89584e99056382c7a9adcf43f0848f50729605bb3e2f4b750e66163f6d4c5d5f45ce94a450bff03f39c4225b689a8f2e", - "message_cleartext": "24610b589ba77b506b3383798cc0fc1f7be64b777fee6bdab14775e1a0ade524", - "message_signature": "8f1128a29b431e9035fcf35d04d8671a749040043987cc927f4bb929df963d02057c9cc83ea787189786c6683dcea0070db7892555e8b67766e62d335ca67d5534fbb8019430bd2b976aab78ae8d26b140c8277c1450ded65194142c5c4a1332" - } - ], - "aggregate_pubkey": "88c9ee145c355e09eeedcda02b1d3df449e3c4a4ee1d975779ad07697fd7343b8ca5050d0241724b5afd325daa6e0224" - } -} \ No newline at end of file diff --git a/test_vectors/finalization/empty-generation.json b/test_vectors/finalization/empty-generation.json deleted file mode 100644 index bc87852..0000000 --- a/test_vectors/finalization/empty-generation.json +++ /dev/null @@ -1,61 +0,0 @@ -{ - "params": { - "cmd_extra_args": "--type=finalization --json-schema-file=spec/finalization_spec.json", - "expected_exit_code": 1 - }, - "scenario": { - "settings": { - "n": 5, - "k": 3, - "gen_id": "89f0996b33ca953e0cf9b70a5f84cb50" - }, - "generations": [ - { - "base_pubkeys": [ - "a1da3158e0a5305eb258b969dcfd24a4e5ea4d6665524619017a6a1ce7710cca1ccce4370d051fd55d401ba58b12a3b5", - "a51fd02773126ede1ad38afcd257c5f5b081995539f26bdc2011286cc62557ba0d375f46e193b4e216c31f16dd79847a", - "a6cbadf14b777d22aed8697d9f41e45fd870a46286f6aae93d0c5e924d74f2cac339863e7ad1d9bf3f9e82164e1ea2ee" - ], - "base_hash": "2438b43279a7420444af83aa840e381f4e9a79c87f82c125d1475152ce42e57f", - "partial_pubkey": "b18bf51b1dcb8689f7b1b5ac5d58b291c525516287f75c562a689e7b2f91633a30fa56740eb7c0e83603cf0f2eb91117", - "message_cleartext": "24610b589ba77b506b3383798cc0fc1f7be64b777fee6bdab14775e1a0ade524", - "message_signature": "8b59de1b727bd246e9a3fac4d753d096dc64b53d3d4093662f72e73fdc696f9fd2d637999cba289c2c5ab65eab3fd0df000ced0e0bb6503a0b805d864d2a56e1e5df1009b076a15e37d61ca00d30db1d216ba0ca7176dfb23005a9d67e5d18fc" - }, - null, - { - "base_pubkeys": [ - "96de876b5ddfb0166fff60c301d5ef341203d611305b6a765b9e5ba412f7fe5847ae8603f61e01491ccd2c9649d06979", - "928d9467050dc2aeb3ae02aaba43e242bc6723a3e8870cba3877fac2f2cc7d6eacf1d0b39bfc7e49201c0c32360bcf3d", - "8c2cbe9e71ea75225a360b3451e8e876af5005fb8c4a02c2606dac1f54c76714e59982d5944e752dab40a5c1a76a1c07" - ], - "base_hash": "60010b5dc9747b508924f9fb8ce98021d3e693d0d5d36b2dc5df30e19d139680", - "partial_pubkey": "a704f7774c7028fc39093b640d3018bc55f1251d27194c506a5a41c96168f8dd8ff69118b8fd789f7897759006184686", - "message_cleartext": "24610b589ba77b506b3383798cc0fc1f7be64b777fee6bdab14775e1a0ade524", - "message_signature": "b85d4eeb42ce695ec5e77c4cc331b78cd3d4dc6fb46443e8894f690d6ef71d25e7a95036e5ac82315819db7c652056f0110ec66777516f38f714c865755f7f92d151d73f3bb523a7c2dd8e18f8936f79144cdc11eea0fc2dccadd70e786da7e4" - }, - { - "base_pubkeys": [ - "b69dc72c248437bd0be7d47554dd50221c0ac29be805e3c2d8e4f21bef4f2b6b60cd9a109559d5df4cae5da635c7879a", - "aa293fe7860e32db8a3e2c9578feeb554131aaa72d6993872780ac554735874fa8f3dbced82cfc6bf677ca79ce3c7340", - "ab10e5407fa7680f660cdca8b75f8e40dcd098b8b5b0f88525e3f2389dc6ffb470c9b6d377c3d1e30715283a713b07c2" - ], - "base_hash": "6d6573585c6852d96b241e8d13c002db19dd4beb950537dab7570949a0816d1c", - "partial_pubkey": "92683da0e3c25b8872f6371f4e98deeba6693b3778fd4d1818e13e16acf9bd6ad88d5f1b3514a7894afd538335bafdfa", - "message_cleartext": "24610b589ba77b506b3383798cc0fc1f7be64b777fee6bdab14775e1a0ade524", - "message_signature": "abf6c2c2593052744af15be101bfe78c2db57b263426a0fc9d3f679b74a712822d900fe024919d302a89adb61980320f03f6041224177f4e6528a9c13bd1e749de29fef2d7062259bf89cbe7f6ef509dbb632c872aea5b42d538a72490270dea" - }, - { - "base_pubkeys": [ - "95d1e771b6df3d1a33ecf2c49cedea4b1eeb0477b89cc6debf397b79d64bd6f6c9d3d2dd86fd0e8f803a3825bfc3fb67", - "8a9413aed9e746000747c10ea1d9fe1287aa86511569a941948590b97dd624d3f642118f0a39d5d11eebadd19ee24751", - "b5566edea3b7bd7d30efa402dc7d3047530dacc67a2fd808caf7700897664166c45cc57a7a08278fff1f4265d20c72fb" - ], - "base_hash": "ade24f5d9b58c6808d33dd373c8ffc0283c7ad77cc480745b175a69de3ad9bfb", - "partial_pubkey": "89584e99056382c7a9adcf43f0848f50729605bb3e2f4b750e66163f6d4c5d5f45ce94a450bff03f39c4225b689a8f2e", - "message_cleartext": "24610b589ba77b506b3383798cc0fc1f7be64b777fee6bdab14775e1a0ade524", - "message_signature": "8f1128a29b431e9035fcf35d04d8671a749040043987cc927f4bb929df963d02057c9cc83ea787189786c6683dcea0070db7892555e8b67766e62d335ca67d5534fbb8019430bd2b976aab78ae8d26b140c8277c1450ded65194142c5c4a1332" - } - ], - "aggregate_pubkey": "88c9ee145c355e09eeedcda02b1d3df449e3c4a4ee1d975779ad07697fd7343b8ca5050d0241724b5afd325daa6e0224" - } -} \ No newline at end of file diff --git a/test_vectors/finalization/fewer-base-pubkeys.json b/test_vectors/finalization/fewer-base-pubkeys.json deleted file mode 100644 index a459b75..0000000 --- a/test_vectors/finalization/fewer-base-pubkeys.json +++ /dev/null @@ -1,70 +0,0 @@ -{ - "params": { - "cmd_extra_args": "--type=finalization --json-schema-file=spec/finalization_spec.json", - "expected_exit_code": 1 - }, - "scenario": { - "settings": { - "n": 5, - "k": 3, - "gen_id": "89f0996b33ca953e0cf9b70a5f84cb50" - }, - "generations": [ - { - "base_pubkeys": [ - "a1da3158e0a5305eb258b969dcfd24a4e5ea4d6665524619017a6a1ce7710cca1ccce4370d051fd55d401ba58b12a3b5", - "a51fd02773126ede1ad38afcd257c5f5b081995539f26bdc2011286cc62557ba0d375f46e193b4e216c31f16dd79847a", - "a6cbadf14b777d22aed8697d9f41e45fd870a46286f6aae93d0c5e924d74f2cac339863e7ad1d9bf3f9e82164e1ea2ee" - ], - "base_hash": "2438b43279a7420444af83aa840e381f4e9a79c87f82c125d1475152ce42e57f", - "partial_pubkey": "b18bf51b1dcb8689f7b1b5ac5d58b291c525516287f75c562a689e7b2f91633a30fa56740eb7c0e83603cf0f2eb91117", - "message_cleartext": "24610b589ba77b506b3383798cc0fc1f7be64b777fee6bdab14775e1a0ade524", - "message_signature": "8b59de1b727bd246e9a3fac4d753d096dc64b53d3d4093662f72e73fdc696f9fd2d637999cba289c2c5ab65eab3fd0df000ced0e0bb6503a0b805d864d2a56e1e5df1009b076a15e37d61ca00d30db1d216ba0ca7176dfb23005a9d67e5d18fc" - }, - { - "base_pubkeys": [ - "aecd2f577ec702eea283509932d7a326c67dad9c855a8449b110eff282dcc5ca238a33275e68d13c448f3832305d3a64", - "8f23a43d59befd88446a60b1a07e0936798c5bc0e8ff3ba9b014c40c6af05765fc6ba5da1056fb923122651212135408" - ], - "base_hash": "24611a5ee2ba7b6cfb08f67999198f0c7b14614bffee78a75f17751e881d1924", - "partial_pubkey": "acce3b29357595b9827a4471df73b96587df525b8ea5476cee6d85146ab2008e78a4a58d40890e4c166a5a34c17b2955", - "message_cleartext": "24610b589ba77b506b3383798cc0fc1f7be64b777fee6bdab14775e1a0ade524", - "message_signature": "889284c45f33033ae131f6bcbcea7bc21a068f1c203cca0e4cf18d44738bd7870c13d33a0108f29758f3256b371a21ba0158b97b44d0af503f5cd55588311368be5994088e20d0c26752f5b06a91bf483ca3cafde5b471345d597cfc245909d8" - }, - { - "base_pubkeys": [ - "96de876b5ddfb0166fff60c301d5ef341203d611305b6a765b9e5ba412f7fe5847ae8603f61e01491ccd2c9649d06979", - "928d9467050dc2aeb3ae02aaba43e242bc6723a3e8870cba3877fac2f2cc7d6eacf1d0b39bfc7e49201c0c32360bcf3d", - "8c2cbe9e71ea75225a360b3451e8e876af5005fb8c4a02c2606dac1f54c76714e59982d5944e752dab40a5c1a76a1c07" - ], - "base_hash": "60010b5dc9747b508924f9fb8ce98021d3e693d0d5d36b2dc5df30e19d139680", - "partial_pubkey": "a704f7774c7028fc39093b640d3018bc55f1251d27194c506a5a41c96168f8dd8ff69118b8fd789f7897759006184686", - "message_cleartext": "24610b589ba77b506b3383798cc0fc1f7be64b777fee6bdab14775e1a0ade524", - "message_signature": "b85d4eeb42ce695ec5e77c4cc331b78cd3d4dc6fb46443e8894f690d6ef71d25e7a95036e5ac82315819db7c652056f0110ec66777516f38f714c865755f7f92d151d73f3bb523a7c2dd8e18f8936f79144cdc11eea0fc2dccadd70e786da7e4" - }, - { - "base_pubkeys": [ - "b69dc72c248437bd0be7d47554dd50221c0ac29be805e3c2d8e4f21bef4f2b6b60cd9a109559d5df4cae5da635c7879a", - "aa293fe7860e32db8a3e2c9578feeb554131aaa72d6993872780ac554735874fa8f3dbced82cfc6bf677ca79ce3c7340", - "ab10e5407fa7680f660cdca8b75f8e40dcd098b8b5b0f88525e3f2389dc6ffb470c9b6d377c3d1e30715283a713b07c2" - ], - "base_hash": "6d6573585c6852d96b241e8d13c002db19dd4beb950537dab7570949a0816d1c", - "partial_pubkey": "92683da0e3c25b8872f6371f4e98deeba6693b3778fd4d1818e13e16acf9bd6ad88d5f1b3514a7894afd538335bafdfa", - "message_cleartext": "24610b589ba77b506b3383798cc0fc1f7be64b777fee6bdab14775e1a0ade524", - "message_signature": "abf6c2c2593052744af15be101bfe78c2db57b263426a0fc9d3f679b74a712822d900fe024919d302a89adb61980320f03f6041224177f4e6528a9c13bd1e749de29fef2d7062259bf89cbe7f6ef509dbb632c872aea5b42d538a72490270dea" - }, - { - "base_pubkeys": [ - "95d1e771b6df3d1a33ecf2c49cedea4b1eeb0477b89cc6debf397b79d64bd6f6c9d3d2dd86fd0e8f803a3825bfc3fb67", - "8a9413aed9e746000747c10ea1d9fe1287aa86511569a941948590b97dd624d3f642118f0a39d5d11eebadd19ee24751", - "b5566edea3b7bd7d30efa402dc7d3047530dacc67a2fd808caf7700897664166c45cc57a7a08278fff1f4265d20c72fb" - ], - "base_hash": "ade24f5d9b58c6808d33dd373c8ffc0283c7ad77cc480745b175a69de3ad9bfb", - "partial_pubkey": "89584e99056382c7a9adcf43f0848f50729605bb3e2f4b750e66163f6d4c5d5f45ce94a450bff03f39c4225b689a8f2e", - "message_cleartext": "24610b589ba77b506b3383798cc0fc1f7be64b777fee6bdab14775e1a0ade524", - "message_signature": "8f1128a29b431e9035fcf35d04d8671a749040043987cc927f4bb929df963d02057c9cc83ea787189786c6683dcea0070db7892555e8b67766e62d335ca67d5534fbb8019430bd2b976aab78ae8d26b140c8277c1450ded65194142c5c4a1332" - } - ], - "aggregate_pubkey": "88c9ee145c355e09eeedcda02b1d3df449e3c4a4ee1d975779ad07697fd7343b8ca5050d0241724b5afd325daa6e0224" - } -} \ No newline at end of file diff --git a/test_vectors/finalization/fewer-generations.json b/test_vectors/finalization/fewer-generations.json deleted file mode 100644 index 300b802..0000000 --- a/test_vectors/finalization/fewer-generations.json +++ /dev/null @@ -1,60 +0,0 @@ -{ - "params": { - "cmd_extra_args": "--type=finalization --json-schema-file=spec/finalization_spec.json", - "expected_exit_code": 101 - }, - "scenario": { - "settings": { - "n": 5, - "k": 3, - "gen_id": "89f0996b33ca953e0cf9b70a5f84cb50" - }, - "generations": [ - { - "base_pubkeys": [ - "a1da3158e0a5305eb258b969dcfd24a4e5ea4d6665524619017a6a1ce7710cca1ccce4370d051fd55d401ba58b12a3b5", - "a51fd02773126ede1ad38afcd257c5f5b081995539f26bdc2011286cc62557ba0d375f46e193b4e216c31f16dd79847a", - "a6cbadf14b777d22aed8697d9f41e45fd870a46286f6aae93d0c5e924d74f2cac339863e7ad1d9bf3f9e82164e1ea2ee" - ], - "base_hash": "2438b43279a7420444af83aa840e381f4e9a79c87f82c125d1475152ce42e57f", - "partial_pubkey": "b18bf51b1dcb8689f7b1b5ac5d58b291c525516287f75c562a689e7b2f91633a30fa56740eb7c0e83603cf0f2eb91117", - "message_cleartext": "24610b589ba77b506b3383798cc0fc1f7be64b777fee6bdab14775e1a0ade524", - "message_signature": "8b59de1b727bd246e9a3fac4d753d096dc64b53d3d4093662f72e73fdc696f9fd2d637999cba289c2c5ab65eab3fd0df000ced0e0bb6503a0b805d864d2a56e1e5df1009b076a15e37d61ca00d30db1d216ba0ca7176dfb23005a9d67e5d18fc" - }, - { - "base_pubkeys": [ - "aecd2f577ec702eea283509932d7a326c67dad9c855a8449b110eff282dcc5ca238a33275e68d13c448f3832305d3a64", - "8f23a43d59befd88446a60b1a07e0936798c5bc0e8ff3ba9b014c40c6af05765fc6ba5da1056fb923122651212135408", - "9987347a1c9bd2a0a9f570c38e52a19f7b70d93a4b24a25dbf7cbaee1fcd4831521a0ffab46d066d7cdbc6f4f88364db" - ], - "base_hash": "24611a5ee2ba7b6cfb08f67999198f0c7b14614bffee78a75f17751e881d1924", - "partial_pubkey": "acce3b29357595b9827a4471df73b96587df525b8ea5476cee6d85146ab2008e78a4a58d40890e4c166a5a34c17b2955", - "message_cleartext": "24610b589ba77b506b3383798cc0fc1f7be64b777fee6bdab14775e1a0ade524", - "message_signature": "889284c45f33033ae131f6bcbcea7bc21a068f1c203cca0e4cf18d44738bd7870c13d33a0108f29758f3256b371a21ba0158b97b44d0af503f5cd55588311368be5994088e20d0c26752f5b06a91bf483ca3cafde5b471345d597cfc245909d8" - }, - { - "base_pubkeys": [ - "96de876b5ddfb0166fff60c301d5ef341203d611305b6a765b9e5ba412f7fe5847ae8603f61e01491ccd2c9649d06979", - "928d9467050dc2aeb3ae02aaba43e242bc6723a3e8870cba3877fac2f2cc7d6eacf1d0b39bfc7e49201c0c32360bcf3d", - "8c2cbe9e71ea75225a360b3451e8e876af5005fb8c4a02c2606dac1f54c76714e59982d5944e752dab40a5c1a76a1c07" - ], - "base_hash": "60010b5dc9747b508924f9fb8ce98021d3e693d0d5d36b2dc5df30e19d139680", - "partial_pubkey": "a704f7774c7028fc39093b640d3018bc55f1251d27194c506a5a41c96168f8dd8ff69118b8fd789f7897759006184686", - "message_cleartext": "24610b589ba77b506b3383798cc0fc1f7be64b777fee6bdab14775e1a0ade524", - "message_signature": "b85d4eeb42ce695ec5e77c4cc331b78cd3d4dc6fb46443e8894f690d6ef71d25e7a95036e5ac82315819db7c652056f0110ec66777516f38f714c865755f7f92d151d73f3bb523a7c2dd8e18f8936f79144cdc11eea0fc2dccadd70e786da7e4" - }, - { - "base_pubkeys": [ - "b69dc72c248437bd0be7d47554dd50221c0ac29be805e3c2d8e4f21bef4f2b6b60cd9a109559d5df4cae5da635c7879a", - "aa293fe7860e32db8a3e2c9578feeb554131aaa72d6993872780ac554735874fa8f3dbced82cfc6bf677ca79ce3c7340", - "ab10e5407fa7680f660cdca8b75f8e40dcd098b8b5b0f88525e3f2389dc6ffb470c9b6d377c3d1e30715283a713b07c2" - ], - "base_hash": "6d6573585c6852d96b241e8d13c002db19dd4beb950537dab7570949a0816d1c", - "partial_pubkey": "92683da0e3c25b8872f6371f4e98deeba6693b3778fd4d1818e13e16acf9bd6ad88d5f1b3514a7894afd538335bafdfa", - "message_cleartext": "24610b589ba77b506b3383798cc0fc1f7be64b777fee6bdab14775e1a0ade524", - "message_signature": "abf6c2c2593052744af15be101bfe78c2db57b263426a0fc9d3f679b74a712822d900fe024919d302a89adb61980320f03f6041224177f4e6528a9c13bd1e749de29fef2d7062259bf89cbe7f6ef509dbb632c872aea5b42d538a72490270dea" - } - ], - "aggregate_pubkey": "88c9ee145c355e09eeedcda02b1d3df449e3c4a4ee1d975779ad07697fd7343b8ca5050d0241724b5afd325daa6e0224" - } -} \ No newline at end of file diff --git a/test_vectors/finalization/finalization_test.json b/test_vectors/finalization/finalization_test.json deleted file mode 100644 index 5eda468..0000000 --- a/test_vectors/finalization/finalization_test.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "params": { - "cmd_extra_args": "--type=finalization --json-schema-file=spec/finalization_spec.json", - "expected_exit_code": 0 - }, - "scenario": { - "settings": { - "n": 5, - "k": 3, - "gen_id": "89f0996b33ca953e0cf9b70a5f84cb50" - }, - "generations": [ - { - "base_pubkeys": [ - "aa772b2a290804da566759b4162de6ffc8f0a47b70908f8db932a3e8e1dff73eb04f59f7549df8a33219a333bb19659c", - "a19e4b16cc1d5de8c6fd87549f9fa1fa7de066c5cb566f610909e1a712780bf8c291e82e98b023121f70d980096e4af5", - "84496615716d84d3c1d69fb295c968ed4563acd51d0fd0cc624ccce384af1d479f7adbf0ee5cce74b80f248ff8224dee" - ], - "base_hash": "0bcbd9433dfde67e0dd7c501e255a2bdc31d6968e51b1290e6ef7d264911eb91", - "partial_pubkey": "8da434e68daef9af33e39ab727557a3cd86d7991cd6b545746bf92c8edec37012912cfa2292a21512bce9040a1c0e502", - "message_cleartext": "test for signing", - "message_signature": "8a751bd10706178f9dae64b18ccb758abd0535d9592ca06c3ac44831715c6cb4e66eff0b0248cdae23ec0f921963ae58040feb4862929549b690e2d8073f7b937e971c1a2387feb8d11fdc107390290bb254e941700932e15cc2d63165e09d52" - }, - { - "base_pubkeys": [ - "92cad77a95432bc1030d81b5465cb69be672c1dd0da752230bf8112f8449b03149e7fa208a6fae460a9f0a1d5bd175e9", - "98876a81fe982573ec5f986956bf9bf0bcb5349d95c3c8da0aefd05a49fea6215f59b0696f906547baed90ab245804e8", - "ad2c4e5b631fbded449ede4dca2d040b9c7eae58d1e73b3050486c1ba22c15a92d9ff13c05c356f974447e4fca84864a" - ], - "base_hash": "13602b274436a91ffa3bd3eb16927e011d81fe9e2e9673769a0152acbafe3e33", - "partial_pubkey": "a3cd061aab6013f7561978959482d79e9ca636392bc94d4bcad9cb6f90fe2cdf52100f211052f1570db0ca690b6a9903", - "message_cleartext": "test for signing", - "message_signature": "8268c0494f7228cb71472a9c8d05374336ac65b7af2b4fb52292867595d69138a75cfc9a5ff6f102de68a7e173a57f8e13a8378ef9e103adab85b9413b6455d0bb104fc176b0e4859f5c7719ac1f63955fecefbe9eca69a4fa42eadef5b27df5" - }, - { - "base_pubkeys": [ - "91283a9d9826347da8ef73ebe88a013989d2abecf0eb6368cb14e079da25fdf8e90fa2f793ad3566ac613882a93a531c", - "b059e3afa1f18c18eabb2be01a491b97b013b493e34bcf4fb288a7975e6a71a0e45d1d6b38d308a89726e99f09a7be85", - "a6d720d55aaae5b3a11758ca2dc5900ede471d508243b86d2adc715095c4a1efac82e96b6949763dfc288af555e8a9df" - ], - "base_hash": "1ae7975df76c5df0c301d390d82180ff536f5dbbf78942e53b4ec9e9e1497a1a", - "partial_pubkey": "8cbfb6cb7af927cfe5fb17621df7036de539b7ff4aa0620cdc218d6b7fe7f2e714a96bdeddb2a0dc24867a90594427e1", - "message_cleartext": "test for signing", - "message_signature": "8b796dd8e8a35a6b97bd740388ad2da0399839f7ce83ae85e8651e23a0d58db44ccaca43e747713624344945ee7f25d803fe0919c669518e9bce2b0ba16e88f4ca05f5568b482b1a0068158468bc3ea8c9764b3dae9c7cb56002fcd5ab2ef25c" - }, - { - "base_pubkeys": [ - "ac70a68387afb0ad4912970b72afc0e1143833091414498ecab27661677f7b2a79aebee35cfbd95731d3b77985b4dc72", - "97bcf8fe7f75a87f5b9e4852f4b76fdad62d8af3dc8895f4db74e74d2096b10976f262e2930c89fccc484bc9edf6c0f3", - "a04c57e48a2ad82468f702b1d444f37af91fe4a05034d003fd1ff422958d37c30d29760d443e9374aa98bc096abf4d2d" - ], - "base_hash": "54effb7411607a0c6484cb68cad8a30fd03e24c0fd561c5c8a4c5baa0509f9b3", - "partial_pubkey": "9892b390d9d3000c7bf04763006fbc617b7ba9c261fff35094aec3f43599f2c254ae667d9ba135747309b77cd02f1fbc", - "message_cleartext": "test for signing", - "message_signature": "999e7b24bee2587d687e8f358ed10627ef57ec54935bd7a500bbbb18a57e7aa21b800f8b1f487a980d7c93918fdbd8020b66ce9a9e5788a4826e610ac937d8c2ce0ad9c0ee9a5732cf73052493e9a500cc5100a15bdbf9e5b79104db52dbf07c" - }, - { - "base_pubkeys": [ - "a6e87e5bbed258d82a13c53e04c1c3fb5baa6649a28a0d00e4a934b6473575721a7f1f1c3787145f43a1bf15368619ee", - "858276460f23124923c94bf968024dd415a39a0f638d67f1d5f27ce8d8de75273d145cd70177a26bd76c07b8e784c98a", - "8174cc034101357048634437473371c7f6b8c39e2a305c2f95fc95c13ed03939a5c3bf2bdbbaab5351e8aa3443949038" - ], - "base_hash": "dbd8b546ab29bfa87aa9d568e8315037695e8802fa0e0c9ed9009fe8a0fde402", - "partial_pubkey": "b255c8a66fd1a13373537e8a4ba258f4990c141fc3c06daccda0711f5ebaffc092f0e5b0e4454e6344e2f97957be4017", - "message_cleartext": "test for signing", - "message_signature": "b61e78c430eaea45f8b7974c411dd6d50eb8748fde211089838b1ca93ddefd2d9571548c4ee2eb03eec232997dc3818c1917af21083157f19966c998c35e4acf6c59e8e92bf0988692026580e425742a754eb69255e834dc75d9b729cd7ca83a" - } - ], - "aggregate_pubkey": "a31d9a483703cd0da9873e5e76b4de5f7035d0a73d79b3be8667daa4fc7065a1bbb5bf77787fcf2a35bd327eecc4fa6b" - } -} \ No newline at end of file diff --git a/test_vectors/finalization/more-base-pubkeys.json b/test_vectors/finalization/more-base-pubkeys.json deleted file mode 100644 index 52b297b..0000000 --- a/test_vectors/finalization/more-base-pubkeys.json +++ /dev/null @@ -1,72 +0,0 @@ -{ - "params": { - "cmd_extra_args": "--type=finalization --json-schema-file=spec/finalization_spec.json", - "expected_exit_code": 1 - }, - "scenario": { - "settings": { - "n": 5, - "k": 3, - "gen_id": "89f0996b33ca953e0cf9b70a5f84cb50" - }, - "generations": [ - { - "base_pubkeys": [ - "a1da3158e0a5305eb258b969dcfd24a4e5ea4d6665524619017a6a1ce7710cca1ccce4370d051fd55d401ba58b12a3b5", - "a51fd02773126ede1ad38afcd257c5f5b081995539f26bdc2011286cc62557ba0d375f46e193b4e216c31f16dd79847a", - "a6cbadf14b777d22aed8697d9f41e45fd870a46286f6aae93d0c5e924d74f2cac339863e7ad1d9bf3f9e82164e1ea2ee" - ], - "base_hash": "2438b43279a7420444af83aa840e381f4e9a79c87f82c125d1475152ce42e57f", - "partial_pubkey": "b18bf51b1dcb8689f7b1b5ac5d58b291c525516287f75c562a689e7b2f91633a30fa56740eb7c0e83603cf0f2eb91117", - "message_cleartext": "24610b589ba77b506b3383798cc0fc1f7be64b777fee6bdab14775e1a0ade524", - "message_signature": "8b59de1b727bd246e9a3fac4d753d096dc64b53d3d4093662f72e73fdc696f9fd2d637999cba289c2c5ab65eab3fd0df000ced0e0bb6503a0b805d864d2a56e1e5df1009b076a15e37d61ca00d30db1d216ba0ca7176dfb23005a9d67e5d18fc" - }, - { - "base_pubkeys": [ - "aecd2f577ec702eea283509932d7a326c67dad9c855a8449b110eff282dcc5ca238a33275e68d13c448f3832305d3a64", - "8f23a43d59befd88446a60b1a07e0936798c5bc0e8ff3ba9b014c40c6af05765fc6ba5da1056fb923122651212135408", - "9987347a1c9bd2a0a9f570c38e52a19f7b70d93a4b24a25dbf7cbaee1fcd4831521a0ffab46d066d7cdbc6f4f88364db", - "a1da3158e0a5305eb258b969dcfd24a4e5ea4d6665524619017a6a1ce7710cca1ccce4370d051fd55d401ba58b12a3b5" - ], - "base_hash": "24611a5ee2ba7b6cfb08f67999198f0c7b14614bffee78a75f17751e881d1924", - "partial_pubkey": "acce3b29357595b9827a4471df73b96587df525b8ea5476cee6d85146ab2008e78a4a58d40890e4c166a5a34c17b2955", - "message_cleartext": "24610b589ba77b506b3383798cc0fc1f7be64b777fee6bdab14775e1a0ade524", - "message_signature": "889284c45f33033ae131f6bcbcea7bc21a068f1c203cca0e4cf18d44738bd7870c13d33a0108f29758f3256b371a21ba0158b97b44d0af503f5cd55588311368be5994088e20d0c26752f5b06a91bf483ca3cafde5b471345d597cfc245909d8" - }, - { - "base_pubkeys": [ - "96de876b5ddfb0166fff60c301d5ef341203d611305b6a765b9e5ba412f7fe5847ae8603f61e01491ccd2c9649d06979", - "928d9467050dc2aeb3ae02aaba43e242bc6723a3e8870cba3877fac2f2cc7d6eacf1d0b39bfc7e49201c0c32360bcf3d", - "8c2cbe9e71ea75225a360b3451e8e876af5005fb8c4a02c2606dac1f54c76714e59982d5944e752dab40a5c1a76a1c07" - ], - "base_hash": "60010b5dc9747b508924f9fb8ce98021d3e693d0d5d36b2dc5df30e19d139680", - "partial_pubkey": "a704f7774c7028fc39093b640d3018bc55f1251d27194c506a5a41c96168f8dd8ff69118b8fd789f7897759006184686", - "message_cleartext": "24610b589ba77b506b3383798cc0fc1f7be64b777fee6bdab14775e1a0ade524", - "message_signature": "b85d4eeb42ce695ec5e77c4cc331b78cd3d4dc6fb46443e8894f690d6ef71d25e7a95036e5ac82315819db7c652056f0110ec66777516f38f714c865755f7f92d151d73f3bb523a7c2dd8e18f8936f79144cdc11eea0fc2dccadd70e786da7e4" - }, - { - "base_pubkeys": [ - "b69dc72c248437bd0be7d47554dd50221c0ac29be805e3c2d8e4f21bef4f2b6b60cd9a109559d5df4cae5da635c7879a", - "aa293fe7860e32db8a3e2c9578feeb554131aaa72d6993872780ac554735874fa8f3dbced82cfc6bf677ca79ce3c7340", - "ab10e5407fa7680f660cdca8b75f8e40dcd098b8b5b0f88525e3f2389dc6ffb470c9b6d377c3d1e30715283a713b07c2" - ], - "base_hash": "6d6573585c6852d96b241e8d13c002db19dd4beb950537dab7570949a0816d1c", - "partial_pubkey": "92683da0e3c25b8872f6371f4e98deeba6693b3778fd4d1818e13e16acf9bd6ad88d5f1b3514a7894afd538335bafdfa", - "message_cleartext": "24610b589ba77b506b3383798cc0fc1f7be64b777fee6bdab14775e1a0ade524", - "message_signature": "abf6c2c2593052744af15be101bfe78c2db57b263426a0fc9d3f679b74a712822d900fe024919d302a89adb61980320f03f6041224177f4e6528a9c13bd1e749de29fef2d7062259bf89cbe7f6ef509dbb632c872aea5b42d538a72490270dea" - }, - { - "base_pubkeys": [ - "95d1e771b6df3d1a33ecf2c49cedea4b1eeb0477b89cc6debf397b79d64bd6f6c9d3d2dd86fd0e8f803a3825bfc3fb67", - "8a9413aed9e746000747c10ea1d9fe1287aa86511569a941948590b97dd624d3f642118f0a39d5d11eebadd19ee24751", - "b5566edea3b7bd7d30efa402dc7d3047530dacc67a2fd808caf7700897664166c45cc57a7a08278fff1f4265d20c72fb" - ], - "base_hash": "ade24f5d9b58c6808d33dd373c8ffc0283c7ad77cc480745b175a69de3ad9bfb", - "partial_pubkey": "89584e99056382c7a9adcf43f0848f50729605bb3e2f4b750e66163f6d4c5d5f45ce94a450bff03f39c4225b689a8f2e", - "message_cleartext": "24610b589ba77b506b3383798cc0fc1f7be64b777fee6bdab14775e1a0ade524", - "message_signature": "8f1128a29b431e9035fcf35d04d8671a749040043987cc927f4bb929df963d02057c9cc83ea787189786c6683dcea0070db7892555e8b67766e62d335ca67d5534fbb8019430bd2b976aab78ae8d26b140c8277c1450ded65194142c5c4a1332" - } - ], - "aggregate_pubkey": "88c9ee145c355e09eeedcda02b1d3df449e3c4a4ee1d975779ad07697fd7343b8ca5050d0241724b5afd325daa6e0224" - } -} \ No newline at end of file diff --git a/test_vectors/finalization/more-generations.json b/test_vectors/finalization/more-generations.json deleted file mode 100644 index 829d0e4..0000000 --- a/test_vectors/finalization/more-generations.json +++ /dev/null @@ -1,82 +0,0 @@ -{ - "params": { - "cmd_extra_args": "--type=finalization --json-schema-file=spec/finalization_spec.json", - "expected_exit_code": 1 - }, - "scenario": { - "settings": { - "n": 5, - "k": 3, - "gen_id": "89f0996b33ca953e0cf9b70a5f84cb50" - }, - "generations": [ - { - "base_pubkeys": [ - "a1da3158e0a5305eb258b969dcfd24a4e5ea4d6665524619017a6a1ce7710cca1ccce4370d051fd55d401ba58b12a3b5", - "a51fd02773126ede1ad38afcd257c5f5b081995539f26bdc2011286cc62557ba0d375f46e193b4e216c31f16dd79847a", - "a6cbadf14b777d22aed8697d9f41e45fd870a46286f6aae93d0c5e924d74f2cac339863e7ad1d9bf3f9e82164e1ea2ee" - ], - "base_hash": "2438b43279a7420444af83aa840e381f4e9a79c87f82c125d1475152ce42e57f", - "partial_pubkey": "b18bf51b1dcb8689f7b1b5ac5d58b291c525516287f75c562a689e7b2f91633a30fa56740eb7c0e83603cf0f2eb91117", - "message_cleartext": "24610b589ba77b506b3383798cc0fc1f7be64b777fee6bdab14775e1a0ade524", - "message_signature": "8b59de1b727bd246e9a3fac4d753d096dc64b53d3d4093662f72e73fdc696f9fd2d637999cba289c2c5ab65eab3fd0df000ced0e0bb6503a0b805d864d2a56e1e5df1009b076a15e37d61ca00d30db1d216ba0ca7176dfb23005a9d67e5d18fc" - }, - { - "base_pubkeys": [ - "aecd2f577ec702eea283509932d7a326c67dad9c855a8449b110eff282dcc5ca238a33275e68d13c448f3832305d3a64", - "8f23a43d59befd88446a60b1a07e0936798c5bc0e8ff3ba9b014c40c6af05765fc6ba5da1056fb923122651212135408", - "9987347a1c9bd2a0a9f570c38e52a19f7b70d93a4b24a25dbf7cbaee1fcd4831521a0ffab46d066d7cdbc6f4f88364db" - ], - "base_hash": "24611a5ee2ba7b6cfb08f67999198f0c7b14614bffee78a75f17751e881d1924", - "partial_pubkey": "acce3b29357595b9827a4471df73b96587df525b8ea5476cee6d85146ab2008e78a4a58d40890e4c166a5a34c17b2955", - "message_cleartext": "24610b589ba77b506b3383798cc0fc1f7be64b777fee6bdab14775e1a0ade524", - "message_signature": "889284c45f33033ae131f6bcbcea7bc21a068f1c203cca0e4cf18d44738bd7870c13d33a0108f29758f3256b371a21ba0158b97b44d0af503f5cd55588311368be5994088e20d0c26752f5b06a91bf483ca3cafde5b471345d597cfc245909d8" - }, - { - "base_pubkeys": [ - "96de876b5ddfb0166fff60c301d5ef341203d611305b6a765b9e5ba412f7fe5847ae8603f61e01491ccd2c9649d06979", - "928d9467050dc2aeb3ae02aaba43e242bc6723a3e8870cba3877fac2f2cc7d6eacf1d0b39bfc7e49201c0c32360bcf3d", - "8c2cbe9e71ea75225a360b3451e8e876af5005fb8c4a02c2606dac1f54c76714e59982d5944e752dab40a5c1a76a1c07" - ], - "base_hash": "60010b5dc9747b508924f9fb8ce98021d3e693d0d5d36b2dc5df30e19d139680", - "partial_pubkey": "a704f7774c7028fc39093b640d3018bc55f1251d27194c506a5a41c96168f8dd8ff69118b8fd789f7897759006184686", - "message_cleartext": "24610b589ba77b506b3383798cc0fc1f7be64b777fee6bdab14775e1a0ade524", - "message_signature": "b85d4eeb42ce695ec5e77c4cc331b78cd3d4dc6fb46443e8894f690d6ef71d25e7a95036e5ac82315819db7c652056f0110ec66777516f38f714c865755f7f92d151d73f3bb523a7c2dd8e18f8936f79144cdc11eea0fc2dccadd70e786da7e4" - }, - { - "base_pubkeys": [ - "b69dc72c248437bd0be7d47554dd50221c0ac29be805e3c2d8e4f21bef4f2b6b60cd9a109559d5df4cae5da635c7879a", - "aa293fe7860e32db8a3e2c9578feeb554131aaa72d6993872780ac554735874fa8f3dbced82cfc6bf677ca79ce3c7340", - "ab10e5407fa7680f660cdca8b75f8e40dcd098b8b5b0f88525e3f2389dc6ffb470c9b6d377c3d1e30715283a713b07c2" - ], - "base_hash": "6d6573585c6852d96b241e8d13c002db19dd4beb950537dab7570949a0816d1c", - "partial_pubkey": "92683da0e3c25b8872f6371f4e98deeba6693b3778fd4d1818e13e16acf9bd6ad88d5f1b3514a7894afd538335bafdfa", - "message_cleartext": "24610b589ba77b506b3383798cc0fc1f7be64b777fee6bdab14775e1a0ade524", - "message_signature": "abf6c2c2593052744af15be101bfe78c2db57b263426a0fc9d3f679b74a712822d900fe024919d302a89adb61980320f03f6041224177f4e6528a9c13bd1e749de29fef2d7062259bf89cbe7f6ef509dbb632c872aea5b42d538a72490270dea" - }, - { - "base_pubkeys": [ - "95d1e771b6df3d1a33ecf2c49cedea4b1eeb0477b89cc6debf397b79d64bd6f6c9d3d2dd86fd0e8f803a3825bfc3fb67", - "8a9413aed9e746000747c10ea1d9fe1287aa86511569a941948590b97dd624d3f642118f0a39d5d11eebadd19ee24751", - "b5566edea3b7bd7d30efa402dc7d3047530dacc67a2fd808caf7700897664166c45cc57a7a08278fff1f4265d20c72fb" - ], - "base_hash": "ade24f5d9b58c6808d33dd373c8ffc0283c7ad77cc480745b175a69de3ad9bfb", - "partial_pubkey": "89584e99056382c7a9adcf43f0848f50729605bb3e2f4b750e66163f6d4c5d5f45ce94a450bff03f39c4225b689a8f2e", - "message_cleartext": "24610b589ba77b506b3383798cc0fc1f7be64b777fee6bdab14775e1a0ade524", - "message_signature": "8f1128a29b431e9035fcf35d04d8671a749040043987cc927f4bb929df963d02057c9cc83ea787189786c6683dcea0070db7892555e8b67766e62d335ca67d5534fbb8019430bd2b976aab78ae8d26b140c8277c1450ded65194142c5c4a1332" - }, - { - "base_pubkeys": [ - "a1da3158e0a5305eb258b969dcfd24a4e5ea4d6665524619017a6a1ce7710cca1ccce4370d051fd55d401ba58b12a3b5", - "a51fd02773126ede1ad38afcd257c5f5b081995539f26bdc2011286cc62557ba0d375f46e193b4e216c31f16dd79847a", - "a6cbadf14b777d22aed8697d9f41e45fd870a46286f6aae93d0c5e924d74f2cac339863e7ad1d9bf3f9e82164e1ea2ee" - ], - "base_hash": "2438b43279a7420444af83aa840e381f4e9a79c87f82c125d1475152ce42e57f", - "partial_pubkey": "b18bf51b1dcb8689f7b1b5ac5d58b291c525516287f75c562a689e7b2f91633a30fa56740eb7c0e83603cf0f2eb91117", - "message_cleartext": "24610b589ba77b506b3383798cc0fc1f7be64b777fee6bdab14775e1a0ade524", - "message_signature": "8b59de1b727bd246e9a3fac4d753d096dc64b53d3d4093662f72e73fdc696f9fd2d637999cba289c2c5ab65eab3fd0df000ced0e0bb6503a0b805d864d2a56e1e5df1009b076a15e37d61ca00d30db1d216ba0ca7176dfb23005a9d67e5d18fc" - } - ], - "aggregate_pubkey": "88c9ee145c355e09eeedcda02b1d3df449e3c4a4ee1d975779ad07697fd7343b8ca5050d0241724b5afd325daa6e0224" - } -} \ No newline at end of file diff --git a/test_vectors/finalization/n-less-than-k.json b/test_vectors/finalization/n-less-than-k.json deleted file mode 100644 index 976f849..0000000 --- a/test_vectors/finalization/n-less-than-k.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "params": { - "cmd_extra_args": "--type=finalization --json-schema-file=spec/finalization_spec.json", - "expected_exit_code": 1 - }, - "scenario": { - "settings": { - "n": 2, - "k": 3, - "gen_id": "89f0996b33ca953e0cf9b70a5f84cb50" - }, - "generations": [ - { - "base_pubkeys": [ - "a1da3158e0a5305eb258b969dcfd24a4e5ea4d6665524619017a6a1ce7710cca1ccce4370d051fd55d401ba58b12a3b5", - "a51fd02773126ede1ad38afcd257c5f5b081995539f26bdc2011286cc62557ba0d375f46e193b4e216c31f16dd79847a", - "a6cbadf14b777d22aed8697d9f41e45fd870a46286f6aae93d0c5e924d74f2cac339863e7ad1d9bf3f9e82164e1ea2ee" - ], - "base_hash": "2438b43279a7420444af83aa840e381f4e9a79c87f82c125d1475152ce42e57f", - "partial_pubkey": "b18bf51b1dcb8689f7b1b5ac5d58b291c525516287f75c562a689e7b2f91633a30fa56740eb7c0e83603cf0f2eb91117", - "message_cleartext": "24610b589ba77b506b3383798cc0fc1f7be64b777fee6bdab14775e1a0ade524", - "message_signature": "8b59de1b727bd246e9a3fac4d753d096dc64b53d3d4093662f72e73fdc696f9fd2d637999cba289c2c5ab65eab3fd0df000ced0e0bb6503a0b805d864d2a56e1e5df1009b076a15e37d61ca00d30db1d216ba0ca7176dfb23005a9d67e5d18fc" - }, - { - "base_pubkeys": [ - "aecd2f577ec702eea283509932d7a326c67dad9c855a8449b110eff282dcc5ca238a33275e68d13c448f3832305d3a64", - "8f23a43d59befd88446a60b1a07e0936798c5bc0e8ff3ba9b014c40c6af05765fc6ba5da1056fb923122651212135408", - "9987347a1c9bd2a0a9f570c38e52a19f7b70d93a4b24a25dbf7cbaee1fcd4831521a0ffab46d066d7cdbc6f4f88364db" - ], - "base_hash": "24611a5ee2ba7b6cfb08f67999198f0c7b14614bffee78a75f17751e881d1924", - "partial_pubkey": "acce3b29357595b9827a4471df73b96587df525b8ea5476cee6d85146ab2008e78a4a58d40890e4c166a5a34c17b2955", - "message_cleartext": "24610b589ba77b506b3383798cc0fc1f7be64b777fee6bdab14775e1a0ade524", - "message_signature": "889284c45f33033ae131f6bcbcea7bc21a068f1c203cca0e4cf18d44738bd7870c13d33a0108f29758f3256b371a21ba0158b97b44d0af503f5cd55588311368be5994088e20d0c26752f5b06a91bf483ca3cafde5b471345d597cfc245909d8" - }, - { - "base_pubkeys": [ - "96de876b5ddfb0166fff60c301d5ef341203d611305b6a765b9e5ba412f7fe5847ae8603f61e01491ccd2c9649d06979", - "928d9467050dc2aeb3ae02aaba43e242bc6723a3e8870cba3877fac2f2cc7d6eacf1d0b39bfc7e49201c0c32360bcf3d", - "8c2cbe9e71ea75225a360b3451e8e876af5005fb8c4a02c2606dac1f54c76714e59982d5944e752dab40a5c1a76a1c07" - ], - "base_hash": "60010b5dc9747b508924f9fb8ce98021d3e693d0d5d36b2dc5df30e19d139680", - "partial_pubkey": "a704f7774c7028fc39093b640d3018bc55f1251d27194c506a5a41c96168f8dd8ff69118b8fd789f7897759006184686", - "message_cleartext": "24610b589ba77b506b3383798cc0fc1f7be64b777fee6bdab14775e1a0ade524", - "message_signature": "b85d4eeb42ce695ec5e77c4cc331b78cd3d4dc6fb46443e8894f690d6ef71d25e7a95036e5ac82315819db7c652056f0110ec66777516f38f714c865755f7f92d151d73f3bb523a7c2dd8e18f8936f79144cdc11eea0fc2dccadd70e786da7e4" - }, - { - "base_pubkeys": [ - "b69dc72c248437bd0be7d47554dd50221c0ac29be805e3c2d8e4f21bef4f2b6b60cd9a109559d5df4cae5da635c7879a", - "aa293fe7860e32db8a3e2c9578feeb554131aaa72d6993872780ac554735874fa8f3dbced82cfc6bf677ca79ce3c7340", - "ab10e5407fa7680f660cdca8b75f8e40dcd098b8b5b0f88525e3f2389dc6ffb470c9b6d377c3d1e30715283a713b07c2" - ], - "base_hash": "6d6573585c6852d96b241e8d13c002db19dd4beb950537dab7570949a0816d1c", - "partial_pubkey": "92683da0e3c25b8872f6371f4e98deeba6693b3778fd4d1818e13e16acf9bd6ad88d5f1b3514a7894afd538335bafdfa", - "message_cleartext": "24610b589ba77b506b3383798cc0fc1f7be64b777fee6bdab14775e1a0ade524", - "message_signature": "abf6c2c2593052744af15be101bfe78c2db57b263426a0fc9d3f679b74a712822d900fe024919d302a89adb61980320f03f6041224177f4e6528a9c13bd1e749de29fef2d7062259bf89cbe7f6ef509dbb632c872aea5b42d538a72490270dea" - }, - { - "base_pubkeys": [ - "95d1e771b6df3d1a33ecf2c49cedea4b1eeb0477b89cc6debf397b79d64bd6f6c9d3d2dd86fd0e8f803a3825bfc3fb67", - "8a9413aed9e746000747c10ea1d9fe1287aa86511569a941948590b97dd624d3f642118f0a39d5d11eebadd19ee24751", - "b5566edea3b7bd7d30efa402dc7d3047530dacc67a2fd808caf7700897664166c45cc57a7a08278fff1f4265d20c72fb" - ], - "base_hash": "ade24f5d9b58c6808d33dd373c8ffc0283c7ad77cc480745b175a69de3ad9bfb", - "partial_pubkey": "89584e99056382c7a9adcf43f0848f50729605bb3e2f4b750e66163f6d4c5d5f45ce94a450bff03f39c4225b689a8f2e", - "message_cleartext": "24610b589ba77b506b3383798cc0fc1f7be64b777fee6bdab14775e1a0ade524", - "message_signature": "8f1128a29b431e9035fcf35d04d8671a749040043987cc927f4bb929df963d02057c9cc83ea787189786c6683dcea0070db7892555e8b67766e62d335ca67d5534fbb8019430bd2b976aab78ae8d26b140c8277c1450ded65194142c5c4a1332" - } - ], - "aggregate_pubkey": "88c9ee145c355e09eeedcda02b1d3df449e3c4a4ee1d975779ad07697fd7343b8ca5050d0241724b5afd325daa6e0224" - } -} \ No newline at end of file diff --git a/test_vectors/finalization/report-bad-aggregate-pubkey.json b/test_vectors/finalization/report-bad-aggregate-pubkey.json new file mode 100644 index 0000000..ceec8fd --- /dev/null +++ b/test_vectors/finalization/report-bad-aggregate-pubkey.json @@ -0,0 +1,48 @@ +{ + "params": { + "cmd_extra_args": "execute --type=finalization --json-schema-file=spec/finalization_spec.json", + "expected_exit_code": 101 + }, + "scenario": { + "settings": { + "gen_id": "8d17e61db7b774d16cb165662a8c2c4a", + "n": 3, + "k": 2 + }, + "generations": [ + { + "base_pubkeys": [ + "a6602d395e8fbf67269a41a208613e42795c9e66d365dd87287162e31484cb0f84efaec36220714022bbd296e5357bc9", + "8a64f40fe2e976d01227b4085b42421c8c4c3549f539b8eb7ecad8833b5855ae1994126bfb9b6ff56a5f131f407462d8" + ], + "base_hash": "2cc6b806b3215210122226629b0d0872484d43754668bb90c4d1b5e401377890", + "partial_pubkey": "b6ac8c28c5f722cf095f83005bbfb403364231cd202e0793bfb69cd631e5cbc8d337a8dbe8dcb30615eea0a9dca98746", + "message_cleartext": "Sign with new partial key", + "message_signature": "b296d5309403d063f172cf97811f19cd1404f7b05f956d7b7ceaed375db1d3e6dc1b9f0544591bb562d25f7596abc9bd123b115dec61673a483ac4e5127959ee9886b94caa78c4c0393537d7ce5c203837f0073a14edde71f27b39af8794eb7b" + }, + { + "base_pubkeys": [ + "b66242ce81deb25d60560c0c8f7e35e4ed9760887d7e877461bc2ded650c7d2728bd0f657baa071842c3ea744e7696f3", + "b23adea88f2fec6830a1f5ffb50015d01cd78eb6fe4f13981d23e4b8e2d2b2735729e79acbcecff74cb1571f529fbbce" + ], + "base_hash": "6568dd285df3bf23d7697217273249841707951516e67c4954243d5d80ad23da", + "partial_pubkey": "b8a48c016637c63e746be3d360abc7873463f9cea529be2647a9e2961fa45e9334f668c63be069f59dafb1f085a0be4e", + "message_cleartext": "Sign with new partial key", + "message_signature": "8c0cb5c32e8e11f3e4f21895714ad1e5b00bfc9787b5dbeb4356111a8001728f7e5c7fdce8098fd7839766d7f84801050ccede1ec50b3f7573c43635887560f73156a8a0a93a96852dc5084a61caedc7c784d70a37f2e03eb7208bf22891afae" + }, + { + "base_pubkeys": [ + "954be017bd960e3208f1661c1e5f372d5d5ec0955d3db00b14438d9b90ebc3f6a67853ee82e29bd5325888cc73e1ed67", + "8dc5afd8b102920503849b4a89165d75741163c690f2557d77fd3bad75a142f00197aa9f5fbde27926374bd0b29a7c96" + ], + "base_hash": "bdf6925e576dc08431ac6a590a64263c5ac3d8e5bd88113ac5777762fabd71a6", + "partial_pubkey": "ab0da9f51cf2ecf856e25286622dec8021020a7a75f37dd15210c5cb45be67f8b6ef3db785fd3520e22f7729788a5da3", + "message_cleartext": "Sign with new partial key", + "message_signature": "8b033b10c5046c47e8eeabe79cf4eb599bc5fe6bc5c7141483e00a571ad037558b064dc8075bf06d5b952dac72777c4a04e0b6b843066af8e9226d0710e26206f8811fd1ab11d11f3eb524f253ecc97f3c92a6899198a88436947f0209c3da4b" + } + ], + "aggregate_pubkey": "b527a52a5facfe9f18c91091043d4c69883f243c0e388ab85d2a1a6e54dae8c405b0400e96a0d9eaa787a1aa6b292add", + "message_cleartext": "Sign with new partial key", + "message_signature": "8665d924397037638b6a39629caf555c39f80b7aa698c13424a1a67b34f47476182b853a8f18bf117bc9c41ef1d645800c63ebe45139d6e9fd2711bdda543a5af3385aed6d844db05a31de86109b390cbb13c08f7342dc09a6156d277a714e34" + } +} diff --git a/test_vectors/finalization/report-fewer-generations.json b/test_vectors/finalization/report-fewer-generations.json new file mode 100644 index 0000000..047a128 --- /dev/null +++ b/test_vectors/finalization/report-fewer-generations.json @@ -0,0 +1,38 @@ +{ + "params": { + "cmd_extra_args": "execute --type=finalization --json-schema-file=spec/finalization_spec.json", + "expected_exit_code": 101 + }, + "scenario": { + "settings": { + "gen_id": "8d17e61db7b774d16cb165662a8c2c4a", + "n": 3, + "k": 2 + }, + "generations": [ + { + "base_pubkeys": [ + "a6602d395e8fbf67269a41a208613e42795c9e66d365dd87287162e31484cb0f84efaec36220714022bbd296e5357bc9", + "8a64f40fe2e976d01227b4085b42421c8c4c3549f539b8eb7ecad8833b5855ae1994126bfb9b6ff56a5f131f407462d8" + ], + "base_hash": "2cc6b806b3215210122226629b0d0872484d43754668bb90c4d1b5e401377890", + "partial_pubkey": "b6ac8c28c5f722cf095f83005bbfb403364231cd202e0793bfb69cd631e5cbc8d337a8dbe8dcb30615eea0a9dca98746", + "message_cleartext": "Sign with new partial key", + "message_signature": "b296d5309403d063f172cf97811f19cd1404f7b05f956d7b7ceaed375db1d3e6dc1b9f0544591bb562d25f7596abc9bd123b115dec61673a483ac4e5127959ee9886b94caa78c4c0393537d7ce5c203837f0073a14edde71f27b39af8794eb7b" + }, + { + "base_pubkeys": [ + "b66242ce81deb25d60560c0c8f7e35e4ed9760887d7e877461bc2ded650c7d2728bd0f657baa071842c3ea744e7696f3", + "b23adea88f2fec6830a1f5ffb50015d01cd78eb6fe4f13981d23e4b8e2d2b2735729e79acbcecff74cb1571f529fbbce" + ], + "base_hash": "6568dd285df3bf23d7697217273249841707951516e67c4954243d5d80ad23da", + "partial_pubkey": "b8a48c016637c63e746be3d360abc7873463f9cea529be2647a9e2961fa45e9334f668c63be069f59dafb1f085a0be4e", + "message_cleartext": "Sign with new partial key", + "message_signature": "8c0cb5c32e8e11f3e4f21895714ad1e5b00bfc9787b5dbeb4356111a8001728f7e5c7fdce8098fd7839766d7f84801050ccede1ec50b3f7573c43635887560f73156a8a0a93a96852dc5084a61caedc7c784d70a37f2e03eb7208bf22891afae" + } + ], + "aggregate_pubkey": "a028de2876b1f1b52b6aac69c7edf8de70a77927b58ffccf28eb70f540457afb85cf2d99be07deeeb2b41f51331de2bd", + "message_cleartext": "Sign with new partial key", + "message_signature": "8665d924397037638b6a39629caf555c39f80b7aa698c13424a1a67b34f47476182b853a8f18bf117bc9c41ef1d645800c63ebe45139d6e9fd2711bdda543a5af3385aed6d844db05a31de86109b390cbb13c08f7342dc09a6156d277a714e34" + } +} diff --git a/test_vectors/finalization/report-gen-bad-base-hash.json b/test_vectors/finalization/report-gen-bad-base-hash.json new file mode 100644 index 0000000..27f5a94 --- /dev/null +++ b/test_vectors/finalization/report-gen-bad-base-hash.json @@ -0,0 +1,48 @@ +{ + "params": { + "cmd_extra_args": "execute --type=finalization --json-schema-file=spec/finalization_spec.json", + "expected_exit_code": 1 + }, + "scenario": { + "settings": { + "gen_id": "8d17e61db7b774d16cb165662a8c2c4a", + "n": 3, + "k": 2 + }, + "generations": [ + { + "base_pubkeys": [ + "a6602d395e8fbf67269a41a208613e42795c9e66d365dd87287162e31484cb0f84efaec36220714022bbd296e5357bc9", + "8a64f40fe2e976d01227b4085b42421c8c4c3549f539b8eb7ecad8833b5855ae1994126bfb9b6ff56a5f131f407462d8" + ], + "base_hash": "2cc6b806b3215210122226629b0d0872484d43754668bb90c4d1b5e401377890", + "partial_pubkey": "b6ac8c28c5f722cf095f83005bbfb403364231cd202e0793bfb69cd631e5cbc8d337a8dbe8dcb30615eea0a9dca98746", + "message_cleartext": "Sign with new partial key", + "message_signature": "b296d5309403d063f172cf97811f19cd1404f7b05f956d7b7ceaed375db1d3e6dc1b9f0544591bb562d25f7596abc9bd123b115dec61673a483ac4e5127959ee9886b94caa78c4c0393537d7ce5c203837f0073a14edde71f27b39af8794eb7b" + }, + { + "base_pubkeys": [ + "b66242ce81deb25d60560c0c8f7e35e4ed9760887d7e877461bc2ded650c7d2728bd0f657baa071842c3ea744e7696f3", + "b23adea88f2fec6830a1f5ffb50015d01cd78eb6fe4f13981d23e4b8e2d2b2735729e79acbcecff74cb1571f529fbbce" + ], + "base_hash": "6668dd285df3bf23d7697217273249841707951516e67c4954243d5d80ad23da", + "partial_pubkey": "b8a48c016637c63e746be3d360abc7873463f9cea529be2647a9e2961fa45e9334f668c63be069f59dafb1f085a0be4e", + "message_cleartext": "Sign with new partial key", + "message_signature": "8c0cb5c32e8e11f3e4f21895714ad1e5b00bfc9787b5dbeb4356111a8001728f7e5c7fdce8098fd7839766d7f84801050ccede1ec50b3f7573c43635887560f73156a8a0a93a96852dc5084a61caedc7c784d70a37f2e03eb7208bf22891afae" + }, + { + "base_pubkeys": [ + "954be017bd960e3208f1661c1e5f372d5d5ec0955d3db00b14438d9b90ebc3f6a67853ee82e29bd5325888cc73e1ed67", + "8dc5afd8b102920503849b4a89165d75741163c690f2557d77fd3bad75a142f00197aa9f5fbde27926374bd0b29a7c96" + ], + "base_hash": "bdf6925e576dc08431ac6a590a64263c5ac3d8e5bd88113ac5777762fabd71a6", + "partial_pubkey": "ab0da9f51cf2ecf856e25286622dec8021020a7a75f37dd15210c5cb45be67f8b6ef3db785fd3520e22f7729788a5da3", + "message_cleartext": "Sign with new partial key", + "message_signature": "8b033b10c5046c47e8eeabe79cf4eb599bc5fe6bc5c7141483e00a571ad037558b064dc8075bf06d5b952dac72777c4a04e0b6b843066af8e9226d0710e26206f8811fd1ab11d11f3eb524f253ecc97f3c92a6899198a88436947f0209c3da4b" + } + ], + "aggregate_pubkey": "a028de2876b1f1b52b6aac69c7edf8de70a77927b58ffccf28eb70f540457afb85cf2d99be07deeeb2b41f51331de2bd", + "message_cleartext": "Sign with new partial key", + "message_signature": "8665d924397037638b6a39629caf555c39f80b7aa698c13424a1a67b34f47476182b853a8f18bf117bc9c41ef1d645800c63ebe45139d6e9fd2711bdda543a5af3385aed6d844db05a31de86109b390cbb13c08f7342dc09a6156d277a714e34" + } +} diff --git a/test_vectors/finalization/report-gen-bad-message-signature.json b/test_vectors/finalization/report-gen-bad-message-signature.json new file mode 100644 index 0000000..ba2a936 --- /dev/null +++ b/test_vectors/finalization/report-gen-bad-message-signature.json @@ -0,0 +1,48 @@ +{ + "params": { + "cmd_extra_args": "execute --type=finalization --json-schema-file=spec/finalization_spec.json", + "expected_exit_code": 1 + }, + "scenario": { + "settings": { + "gen_id": "8d17e61db7b774d16cb165662a8c2c4a", + "n": 3, + "k": 2 + }, + "generations": [ + { + "base_pubkeys": [ + "a6602d395e8fbf67269a41a208613e42795c9e66d365dd87287162e31484cb0f84efaec36220714022bbd296e5357bc9", + "8a64f40fe2e976d01227b4085b42421c8c4c3549f539b8eb7ecad8833b5855ae1994126bfb9b6ff56a5f131f407462d8" + ], + "base_hash": "2cc6b806b3215210122226629b0d0872484d43754668bb90c4d1b5e401377890", + "partial_pubkey": "b6ac8c28c5f722cf095f83005bbfb403364231cd202e0793bfb69cd631e5cbc8d337a8dbe8dcb30615eea0a9dca98746", + "message_cleartext": "Sign with new partial key", + "message_signature": "b296d5309403d063f172cf97811f19cd1404f7b05f956d7b7ceaed375db1d3e6dc1b9f0544591bb562d25f7596abc9bd123b115dec61673a483ac4e5127959ee9886b94caa78c4c0393537d7ce5c203837f0073a14edde71f27b39af8794eb7b" + }, + { + "base_pubkeys": [ + "b66242ce81deb25d60560c0c8f7e35e4ed9760887d7e877461bc2ded650c7d2728bd0f657baa071842c3ea744e7696f3", + "b23adea88f2fec6830a1f5ffb50015d01cd78eb6fe4f13981d23e4b8e2d2b2735729e79acbcecff74cb1571f529fbbce" + ], + "base_hash": "6568dd285df3bf23d7697217273249841707951516e67c4954243d5d80ad23da", + "partial_pubkey": "b8a48c016637c63e746be3d360abc7873463f9cea529be2647a9e2961fa45e9334f668c63be069f59dafb1f085a0be4e", + "message_cleartext": "Sign with new partial key", + "message_signature": "8c0cb5c32e8e11f3e4f21895714ad1e5b00bfc9787b5dbeb4356111a8001728f7e5c7fdce8098fd7839766d7f848010507cc9336748665c51606f2a6817907aae47708300e5e11aefad2df227faf656c28b9e9805f37db3af1f50e4b609d4d23" + }, + { + "base_pubkeys": [ + "954be017bd960e3208f1661c1e5f372d5d5ec0955d3db00b14438d9b90ebc3f6a67853ee82e29bd5325888cc73e1ed67", + "8dc5afd8b102920503849b4a89165d75741163c690f2557d77fd3bad75a142f00197aa9f5fbde27926374bd0b29a7c96" + ], + "base_hash": "bdf6925e576dc08431ac6a590a64263c5ac3d8e5bd88113ac5777762fabd71a6", + "partial_pubkey": "ab0da9f51cf2ecf856e25286622dec8021020a7a75f37dd15210c5cb45be67f8b6ef3db785fd3520e22f7729788a5da3", + "message_cleartext": "Sign with new partial key", + "message_signature": "8b033b10c5046c47e8eeabe79cf4eb599bc5fe6bc5c7141483e00a571ad037558b064dc8075bf06d5b952dac72777c4a04e0b6b843066af8e9226d0710e26206f8811fd1ab11d11f3eb524f253ecc97f3c92a6899198a88436947f0209c3da4b" + } + ], + "aggregate_pubkey": "a028de2876b1f1b52b6aac69c7edf8de70a77927b58ffccf28eb70f540457afb85cf2d99be07deeeb2b41f51331de2bd", + "message_cleartext": "Sign with new partial key", + "message_signature": "8665d924397037638b6a39629caf555c39f80b7aa698c13424a1a67b34f47476182b853a8f18bf117bc9c41ef1d645800c63ebe45139d6e9fd2711bdda543a5af3385aed6d844db05a31de86109b390cbb13c08f7342dc09a6156d277a714e34" + } +} diff --git a/test_vectors/finalization/report-gen-bad-partial-pubkey.json b/test_vectors/finalization/report-gen-bad-partial-pubkey.json new file mode 100644 index 0000000..14050c7 --- /dev/null +++ b/test_vectors/finalization/report-gen-bad-partial-pubkey.json @@ -0,0 +1,48 @@ +{ + "params": { + "cmd_extra_args": "execute --type=finalization --json-schema-file=spec/finalization_spec.json", + "expected_exit_code": 101 + }, + "scenario": { + "settings": { + "gen_id": "8d17e61db7b774d16cb165662a8c2c4a", + "n": 3, + "k": 2 + }, + "generations": [ + { + "base_pubkeys": [ + "a6602d395e8fbf67269a41a208613e42795c9e66d365dd87287162e31484cb0f84efaec36220714022bbd296e5357bc9", + "8a64f40fe2e976d01227b4085b42421c8c4c3549f539b8eb7ecad8833b5855ae1994126bfb9b6ff56a5f131f407462d8" + ], + "base_hash": "2cc6b806b3215210122226629b0d0872484d43754668bb90c4d1b5e401377890", + "partial_pubkey": "b6ac8c28c5f722cf095f83005bbfb403364231cd202e0793bfb69cd631e5cbc8d337a8dbe8dcb30615eea0a9dca98746", + "message_cleartext": "Sign with new partial key", + "message_signature": "b296d5309403d063f172cf97811f19cd1404f7b05f956d7b7ceaed375db1d3e6dc1b9f0544591bb562d25f7596abc9bd123b115dec61673a483ac4e5127959ee9886b94caa78c4c0393537d7ce5c203837f0073a14edde71f27b39af8794eb7b" + }, + { + "base_pubkeys": [ + "b66242ce81deb25d60560c0c8f7e35e4ed9760887d7e877461bc2ded650c7d2728bd0f657baa071842c3ea744e7696f3", + "b23adea88f2fec6830a1f5ffb50015d01cd78eb6fe4f13981d23e4b8e2d2b2735729e79acbcecff74cb1571f529fbbce" + ], + "base_hash": "6568dd285df3bf23d7697217273249841707951516e67c4954243d5d80ad23da", + "partial_pubkey": "b3a2411915b2ec8e16aea04459af6e3ae784595e0a4d395014b7b96e3d88d637962b7b3c632564f1d8843449bdac5bc3", + "message_cleartext": "Sign with new partial key", + "message_signature": "8c0cb5c32e8e11f3e4f21895714ad1e5b00bfc9787b5dbeb4356111a8001728f7e5c7fdce8098fd7839766d7f84801050ccede1ec50b3f7573c43635887560f73156a8a0a93a96852dc5084a61caedc7c784d70a37f2e03eb7208bf22891afae" + }, + { + "base_pubkeys": [ + "954be017bd960e3208f1661c1e5f372d5d5ec0955d3db00b14438d9b90ebc3f6a67853ee82e29bd5325888cc73e1ed67", + "8dc5afd8b102920503849b4a89165d75741163c690f2557d77fd3bad75a142f00197aa9f5fbde27926374bd0b29a7c96" + ], + "base_hash": "bdf6925e576dc08431ac6a590a64263c5ac3d8e5bd88113ac5777762fabd71a6", + "partial_pubkey": "ab0da9f51cf2ecf856e25286622dec8021020a7a75f37dd15210c5cb45be67f8b6ef3db785fd3520e22f7729788a5da3", + "message_cleartext": "Sign with new partial key", + "message_signature": "8b033b10c5046c47e8eeabe79cf4eb599bc5fe6bc5c7141483e00a571ad037558b064dc8075bf06d5b952dac72777c4a04e0b6b843066af8e9226d0710e26206f8811fd1ab11d11f3eb524f253ecc97f3c92a6899198a88436947f0209c3da4b" + } + ], + "aggregate_pubkey": "a028de2876b1f1b52b6aac69c7edf8de70a77927b58ffccf28eb70f540457afb85cf2d99be07deeeb2b41f51331de2bd", + "message_cleartext": "Sign with new partial key", + "message_signature": "8665d924397037638b6a39629caf555c39f80b7aa698c13424a1a67b34f47476182b853a8f18bf117bc9c41ef1d645800c63ebe45139d6e9fd2711bdda543a5af3385aed6d844db05a31de86109b390cbb13c08f7342dc09a6156d277a714e34" + } +} diff --git a/test_vectors/finalization/report-gen-fewer-base-pubkeys.json b/test_vectors/finalization/report-gen-fewer-base-pubkeys.json new file mode 100644 index 0000000..b5b7d1a --- /dev/null +++ b/test_vectors/finalization/report-gen-fewer-base-pubkeys.json @@ -0,0 +1,47 @@ +{ + "params": { + "cmd_extra_args": "execute --type=finalization --json-schema-file=spec/finalization_spec.json", + "expected_exit_code": 1 + }, + "scenario": { + "settings": { + "gen_id": "8d17e61db7b774d16cb165662a8c2c4a", + "n": 3, + "k": 2 + }, + "generations": [ + { + "base_pubkeys": [ + "a6602d395e8fbf67269a41a208613e42795c9e66d365dd87287162e31484cb0f84efaec36220714022bbd296e5357bc9", + "8a64f40fe2e976d01227b4085b42421c8c4c3549f539b8eb7ecad8833b5855ae1994126bfb9b6ff56a5f131f407462d8" + ], + "base_hash": "2cc6b806b3215210122226629b0d0872484d43754668bb90c4d1b5e401377890", + "partial_pubkey": "b6ac8c28c5f722cf095f83005bbfb403364231cd202e0793bfb69cd631e5cbc8d337a8dbe8dcb30615eea0a9dca98746", + "message_cleartext": "Sign with new partial key", + "message_signature": "b296d5309403d063f172cf97811f19cd1404f7b05f956d7b7ceaed375db1d3e6dc1b9f0544591bb562d25f7596abc9bd123b115dec61673a483ac4e5127959ee9886b94caa78c4c0393537d7ce5c203837f0073a14edde71f27b39af8794eb7b" + }, + { + "base_pubkeys": [ + "b66242ce81deb25d60560c0c8f7e35e4ed9760887d7e877461bc2ded650c7d2728bd0f657baa071842c3ea744e7696f3" + ], + "base_hash": "6568dd285df3bf23d7697217273249841707951516e67c4954243d5d80ad23da", + "partial_pubkey": "b8a48c016637c63e746be3d360abc7873463f9cea529be2647a9e2961fa45e9334f668c63be069f59dafb1f085a0be4e", + "message_cleartext": "Sign with new partial key", + "message_signature": "8c0cb5c32e8e11f3e4f21895714ad1e5b00bfc9787b5dbeb4356111a8001728f7e5c7fdce8098fd7839766d7f84801050ccede1ec50b3f7573c43635887560f73156a8a0a93a96852dc5084a61caedc7c784d70a37f2e03eb7208bf22891afae" + }, + { + "base_pubkeys": [ + "954be017bd960e3208f1661c1e5f372d5d5ec0955d3db00b14438d9b90ebc3f6a67853ee82e29bd5325888cc73e1ed67", + "8dc5afd8b102920503849b4a89165d75741163c690f2557d77fd3bad75a142f00197aa9f5fbde27926374bd0b29a7c96" + ], + "base_hash": "bdf6925e576dc08431ac6a590a64263c5ac3d8e5bd88113ac5777762fabd71a6", + "partial_pubkey": "ab0da9f51cf2ecf856e25286622dec8021020a7a75f37dd15210c5cb45be67f8b6ef3db785fd3520e22f7729788a5da3", + "message_cleartext": "Sign with new partial key", + "message_signature": "8b033b10c5046c47e8eeabe79cf4eb599bc5fe6bc5c7141483e00a571ad037558b064dc8075bf06d5b952dac72777c4a04e0b6b843066af8e9226d0710e26206f8811fd1ab11d11f3eb524f253ecc97f3c92a6899198a88436947f0209c3da4b" + } + ], + "aggregate_pubkey": "a028de2876b1f1b52b6aac69c7edf8de70a77927b58ffccf28eb70f540457afb85cf2d99be07deeeb2b41f51331de2bd", + "message_cleartext": "Sign with new partial key", + "message_signature": "8665d924397037638b6a39629caf555c39f80b7aa698c13424a1a67b34f47476182b853a8f18bf117bc9c41ef1d645800c63ebe45139d6e9fd2711bdda543a5af3385aed6d844db05a31de86109b390cbb13c08f7342dc09a6156d277a714e34" + } +} diff --git a/test_vectors/finalization/report-gen-more-base-pubkeys.json b/test_vectors/finalization/report-gen-more-base-pubkeys.json new file mode 100644 index 0000000..f36e875 --- /dev/null +++ b/test_vectors/finalization/report-gen-more-base-pubkeys.json @@ -0,0 +1,49 @@ +{ + "params": { + "cmd_extra_args": "execute --type=finalization --json-schema-file=spec/finalization_spec.json", + "expected_exit_code": 1 + }, + "scenario": { + "settings": { + "gen_id": "8d17e61db7b774d16cb165662a8c2c4a", + "n": 3, + "k": 2 + }, + "generations": [ + { + "base_pubkeys": [ + "a6602d395e8fbf67269a41a208613e42795c9e66d365dd87287162e31484cb0f84efaec36220714022bbd296e5357bc9", + "8a64f40fe2e976d01227b4085b42421c8c4c3549f539b8eb7ecad8833b5855ae1994126bfb9b6ff56a5f131f407462d8" + ], + "base_hash": "2cc6b806b3215210122226629b0d0872484d43754668bb90c4d1b5e401377890", + "partial_pubkey": "b6ac8c28c5f722cf095f83005bbfb403364231cd202e0793bfb69cd631e5cbc8d337a8dbe8dcb30615eea0a9dca98746", + "message_cleartext": "Sign with new partial key", + "message_signature": "b296d5309403d063f172cf97811f19cd1404f7b05f956d7b7ceaed375db1d3e6dc1b9f0544591bb562d25f7596abc9bd123b115dec61673a483ac4e5127959ee9886b94caa78c4c0393537d7ce5c203837f0073a14edde71f27b39af8794eb7b" + }, + { + "base_pubkeys": [ + "b66242ce81deb25d60560c0c8f7e35e4ed9760887d7e877461bc2ded650c7d2728bd0f657baa071842c3ea744e7696f3", + "b23adea88f2fec6830a1f5ffb50015d01cd78eb6fe4f13981d23e4b8e2d2b2735729e79acbcecff74cb1571f529fbbce", + "a6602d395e8fbf67269a41a208613e42795c9e66d365dd87287162e31484cb0f84efaec36220714022bbd296e5357bc9" + ], + "base_hash": "6568dd285df3bf23d7697217273249841707951516e67c4954243d5d80ad23da", + "partial_pubkey": "b8a48c016637c63e746be3d360abc7873463f9cea529be2647a9e2961fa45e9334f668c63be069f59dafb1f085a0be4e", + "message_cleartext": "Sign with new partial key", + "message_signature": "8c0cb5c32e8e11f3e4f21895714ad1e5b00bfc9787b5dbeb4356111a8001728f7e5c7fdce8098fd7839766d7f84801050ccede1ec50b3f7573c43635887560f73156a8a0a93a96852dc5084a61caedc7c784d70a37f2e03eb7208bf22891afae" + }, + { + "base_pubkeys": [ + "954be017bd960e3208f1661c1e5f372d5d5ec0955d3db00b14438d9b90ebc3f6a67853ee82e29bd5325888cc73e1ed67", + "8dc5afd8b102920503849b4a89165d75741163c690f2557d77fd3bad75a142f00197aa9f5fbde27926374bd0b29a7c96" + ], + "base_hash": "bdf6925e576dc08431ac6a590a64263c5ac3d8e5bd88113ac5777762fabd71a6", + "partial_pubkey": "ab0da9f51cf2ecf856e25286622dec8021020a7a75f37dd15210c5cb45be67f8b6ef3db785fd3520e22f7729788a5da3", + "message_cleartext": "Sign with new partial key", + "message_signature": "8b033b10c5046c47e8eeabe79cf4eb599bc5fe6bc5c7141483e00a571ad037558b064dc8075bf06d5b952dac72777c4a04e0b6b843066af8e9226d0710e26206f8811fd1ab11d11f3eb524f253ecc97f3c92a6899198a88436947f0209c3da4b" + } + ], + "aggregate_pubkey": "a028de2876b1f1b52b6aac69c7edf8de70a77927b58ffccf28eb70f540457afb85cf2d99be07deeeb2b41f51331de2bd", + "message_cleartext": "Sign with new partial key", + "message_signature": "8665d924397037638b6a39629caf555c39f80b7aa698c13424a1a67b34f47476182b853a8f18bf117bc9c41ef1d645800c63ebe45139d6e9fd2711bdda543a5af3385aed6d844db05a31de86109b390cbb13c08f7342dc09a6156d277a714e34" + } +} diff --git a/test_vectors/finalization/report-gen-wrong-base-hash.json b/test_vectors/finalization/report-gen-wrong-base-hash.json new file mode 100644 index 0000000..3ec7209 --- /dev/null +++ b/test_vectors/finalization/report-gen-wrong-base-hash.json @@ -0,0 +1,48 @@ +{ + "params": { + "cmd_extra_args": "execute --type=finalization --json-schema-file=spec/finalization_spec.json", + "expected_exit_code": 1 + }, + "scenario": { + "settings": { + "gen_id": "8d17e61db7b774d16cb165662a8c2c4a", + "n": 3, + "k": 2 + }, + "generations": [ + { + "base_pubkeys": [ + "a6602d395e8fbf67269a41a208613e42795c9e66d365dd87287162e31484cb0f84efaec36220714022bbd296e5357bc9", + "8a64f40fe2e976d01227b4085b42421c8c4c3549f539b8eb7ecad8833b5855ae1994126bfb9b6ff56a5f131f407462d8" + ], + "base_hash": "2cc6b806b3215210122226629b0d0872484d43754668bb90c4d1b5e401377890", + "partial_pubkey": "b6ac8c28c5f722cf095f83005bbfb403364231cd202e0793bfb69cd631e5cbc8d337a8dbe8dcb30615eea0a9dca98746", + "message_cleartext": "Sign with new partial key", + "message_signature": "b296d5309403d063f172cf97811f19cd1404f7b05f956d7b7ceaed375db1d3e6dc1b9f0544591bb562d25f7596abc9bd123b115dec61673a483ac4e5127959ee9886b94caa78c4c0393537d7ce5c203837f0073a14edde71f27b39af8794eb7b" + }, + { + "base_pubkeys": [ + "b66242ce81deb25d60560c0c8f7e35e4ed9760887d7e877461bc2ded650c7d2728bd0f657baa071842c3ea744e7696f3", + "b23adea88f2fec6830a1f5ffb50015d01cd78eb6fe4f13981d23e4b8e2d2b2735729e79acbcecff74cb1571f529fbbce" + ], + "base_hash": "cbe7cc600de28e42a9cae781b289db68fe10a4a741250141535d6be98a874519", + "partial_pubkey": "b8a48c016637c63e746be3d360abc7873463f9cea529be2647a9e2961fa45e9334f668c63be069f59dafb1f085a0be4e", + "message_cleartext": "Sign with new partial key", + "message_signature": "8c0cb5c32e8e11f3e4f21895714ad1e5b00bfc9787b5dbeb4356111a8001728f7e5c7fdce8098fd7839766d7f84801050ccede1ec50b3f7573c43635887560f73156a8a0a93a96852dc5084a61caedc7c784d70a37f2e03eb7208bf22891afae" + }, + { + "base_pubkeys": [ + "954be017bd960e3208f1661c1e5f372d5d5ec0955d3db00b14438d9b90ebc3f6a67853ee82e29bd5325888cc73e1ed67", + "8dc5afd8b102920503849b4a89165d75741163c690f2557d77fd3bad75a142f00197aa9f5fbde27926374bd0b29a7c96" + ], + "base_hash": "bdf6925e576dc08431ac6a590a64263c5ac3d8e5bd88113ac5777762fabd71a6", + "partial_pubkey": "ab0da9f51cf2ecf856e25286622dec8021020a7a75f37dd15210c5cb45be67f8b6ef3db785fd3520e22f7729788a5da3", + "message_cleartext": "Sign with new partial key", + "message_signature": "8b033b10c5046c47e8eeabe79cf4eb599bc5fe6bc5c7141483e00a571ad037558b064dc8075bf06d5b952dac72777c4a04e0b6b843066af8e9226d0710e26206f8811fd1ab11d11f3eb524f253ecc97f3c92a6899198a88436947f0209c3da4b" + } + ], + "aggregate_pubkey": "a028de2876b1f1b52b6aac69c7edf8de70a77927b58ffccf28eb70f540457afb85cf2d99be07deeeb2b41f51331de2bd", + "message_cleartext": "Sign with new partial key", + "message_signature": "8665d924397037638b6a39629caf555c39f80b7aa698c13424a1a67b34f47476182b853a8f18bf117bc9c41ef1d645800c63ebe45139d6e9fd2711bdda543a5af3385aed6d844db05a31de86109b390cbb13c08f7342dc09a6156d277a714e34" + } +} diff --git a/test_vectors/finalization/report-gen-wrong-message-cleartext.json b/test_vectors/finalization/report-gen-wrong-message-cleartext.json new file mode 100644 index 0000000..ac467cb --- /dev/null +++ b/test_vectors/finalization/report-gen-wrong-message-cleartext.json @@ -0,0 +1,48 @@ +{ + "params": { + "cmd_extra_args": "execute --type=finalization --json-schema-file=spec/finalization_spec.json", + "expected_exit_code": 1 + }, + "scenario": { + "settings": { + "gen_id": "8d17e61db7b774d16cb165662a8c2c4a", + "n": 3, + "k": 2 + }, + "generations": [ + { + "base_pubkeys": [ + "a6602d395e8fbf67269a41a208613e42795c9e66d365dd87287162e31484cb0f84efaec36220714022bbd296e5357bc9", + "8a64f40fe2e976d01227b4085b42421c8c4c3549f539b8eb7ecad8833b5855ae1994126bfb9b6ff56a5f131f407462d8" + ], + "base_hash": "2cc6b806b3215210122226629b0d0872484d43754668bb90c4d1b5e401377890", + "partial_pubkey": "b6ac8c28c5f722cf095f83005bbfb403364231cd202e0793bfb69cd631e5cbc8d337a8dbe8dcb30615eea0a9dca98746", + "message_cleartext": "Sign with new partial key", + "message_signature": "b296d5309403d063f172cf97811f19cd1404f7b05f956d7b7ceaed375db1d3e6dc1b9f0544591bb562d25f7596abc9bd123b115dec61673a483ac4e5127959ee9886b94caa78c4c0393537d7ce5c203837f0073a14edde71f27b39af8794eb7b" + }, + { + "base_pubkeys": [ + "b66242ce81deb25d60560c0c8f7e35e4ed9760887d7e877461bc2ded650c7d2728bd0f657baa071842c3ea744e7696f3", + "b23adea88f2fec6830a1f5ffb50015d01cd78eb6fe4f13981d23e4b8e2d2b2735729e79acbcecff74cb1571f529fbbce" + ], + "base_hash": "6568dd285df3bf23d7697217273249841707951516e67c4954243d5d80ad23da", + "partial_pubkey": "b8a48c016637c63e746be3d360abc7873463f9cea529be2647a9e2961fa45e9334f668c63be069f59dafb1f085a0be4e", + "message_cleartext": "wrong message cleartext", + "message_signature": "8c0cb5c32e8e11f3e4f21895714ad1e5b00bfc9787b5dbeb4356111a8001728f7e5c7fdce8098fd7839766d7f84801050ccede1ec50b3f7573c43635887560f73156a8a0a93a96852dc5084a61caedc7c784d70a37f2e03eb7208bf22891afae" + }, + { + "base_pubkeys": [ + "954be017bd960e3208f1661c1e5f372d5d5ec0955d3db00b14438d9b90ebc3f6a67853ee82e29bd5325888cc73e1ed67", + "8dc5afd8b102920503849b4a89165d75741163c690f2557d77fd3bad75a142f00197aa9f5fbde27926374bd0b29a7c96" + ], + "base_hash": "bdf6925e576dc08431ac6a590a64263c5ac3d8e5bd88113ac5777762fabd71a6", + "partial_pubkey": "ab0da9f51cf2ecf856e25286622dec8021020a7a75f37dd15210c5cb45be67f8b6ef3db785fd3520e22f7729788a5da3", + "message_cleartext": "Sign with new partial key", + "message_signature": "8b033b10c5046c47e8eeabe79cf4eb599bc5fe6bc5c7141483e00a571ad037558b064dc8075bf06d5b952dac72777c4a04e0b6b843066af8e9226d0710e26206f8811fd1ab11d11f3eb524f253ecc97f3c92a6899198a88436947f0209c3da4b" + } + ], + "aggregate_pubkey": "a028de2876b1f1b52b6aac69c7edf8de70a77927b58ffccf28eb70f540457afb85cf2d99be07deeeb2b41f51331de2bd", + "message_cleartext": "Sign with new partial key", + "message_signature": "8665d924397037638b6a39629caf555c39f80b7aa698c13424a1a67b34f47476182b853a8f18bf117bc9c41ef1d645800c63ebe45139d6e9fd2711bdda543a5af3385aed6d844db05a31de86109b390cbb13c08f7342dc09a6156d277a714e34" + } +} diff --git a/test_vectors/finalization/report-gen-wrong-message-signature.json b/test_vectors/finalization/report-gen-wrong-message-signature.json new file mode 100644 index 0000000..2478289 --- /dev/null +++ b/test_vectors/finalization/report-gen-wrong-message-signature.json @@ -0,0 +1,48 @@ +{ + "params": { + "cmd_extra_args": "execute --type=finalization --json-schema-file=spec/finalization_spec.json", + "expected_exit_code": 1 + }, + "scenario": { + "settings": { + "gen_id": "8d17e61db7b774d16cb165662a8c2c4a", + "n": 3, + "k": 2 + }, + "generations": [ + { + "base_pubkeys": [ + "a6602d395e8fbf67269a41a208613e42795c9e66d365dd87287162e31484cb0f84efaec36220714022bbd296e5357bc9", + "8a64f40fe2e976d01227b4085b42421c8c4c3549f539b8eb7ecad8833b5855ae1994126bfb9b6ff56a5f131f407462d8" + ], + "base_hash": "2cc6b806b3215210122226629b0d0872484d43754668bb90c4d1b5e401377890", + "partial_pubkey": "b6ac8c28c5f722cf095f83005bbfb403364231cd202e0793bfb69cd631e5cbc8d337a8dbe8dcb30615eea0a9dca98746", + "message_cleartext": "Sign with new partial key", + "message_signature": "b296d5309403d063f172cf97811f19cd1404f7b05f956d7b7ceaed375db1d3e6dc1b9f0544591bb562d25f7596abc9bd123b115dec61673a483ac4e5127959ee9886b94caa78c4c0393537d7ce5c203837f0073a14edde71f27b39af8794eb7b" + }, + { + "base_pubkeys": [ + "b66242ce81deb25d60560c0c8f7e35e4ed9760887d7e877461bc2ded650c7d2728bd0f657baa071842c3ea744e7696f3", + "b23adea88f2fec6830a1f5ffb50015d01cd78eb6fe4f13981d23e4b8e2d2b2735729e79acbcecff74cb1571f529fbbce" + ], + "base_hash": "6568dd285df3bf23d7697217273249841707951516e67c4954243d5d80ad23da", + "partial_pubkey": "b8a48c016637c63e746be3d360abc7873463f9cea529be2647a9e2961fa45e9334f668c63be069f59dafb1f085a0be4e", + "message_cleartext": "Sign with new partial key", + "message_signature": "b0d6bff28419590cc9b2a0d66d7ceaa116195f50db3239e9f22890ffef2c1fee134c9e74b68f6c21fc00099028cfc40004b4fc358a50150030836efedbe030f5e17ceeba236d695d5f2fc342002a07788bceea57ccb906012a43703c76884992" + }, + { + "base_pubkeys": [ + "954be017bd960e3208f1661c1e5f372d5d5ec0955d3db00b14438d9b90ebc3f6a67853ee82e29bd5325888cc73e1ed67", + "8dc5afd8b102920503849b4a89165d75741163c690f2557d77fd3bad75a142f00197aa9f5fbde27926374bd0b29a7c96" + ], + "base_hash": "bdf6925e576dc08431ac6a590a64263c5ac3d8e5bd88113ac5777762fabd71a6", + "partial_pubkey": "ab0da9f51cf2ecf856e25286622dec8021020a7a75f37dd15210c5cb45be67f8b6ef3db785fd3520e22f7729788a5da3", + "message_cleartext": "Sign with new partial key", + "message_signature": "8b033b10c5046c47e8eeabe79cf4eb599bc5fe6bc5c7141483e00a571ad037558b064dc8075bf06d5b952dac72777c4a04e0b6b843066af8e9226d0710e26206f8811fd1ab11d11f3eb524f253ecc97f3c92a6899198a88436947f0209c3da4b" + } + ], + "aggregate_pubkey": "a028de2876b1f1b52b6aac69c7edf8de70a77927b58ffccf28eb70f540457afb85cf2d99be07deeeb2b41f51331de2bd", + "message_cleartext": "Sign with new partial key", + "message_signature": "8665d924397037638b6a39629caf555c39f80b7aa698c13424a1a67b34f47476182b853a8f18bf117bc9c41ef1d645800c63ebe45139d6e9fd2711bdda543a5af3385aed6d844db05a31de86109b390cbb13c08f7342dc09a6156d277a714e34" + } +} diff --git a/test_vectors/finalization/report-gen-wrong-partial-pubkey.json b/test_vectors/finalization/report-gen-wrong-partial-pubkey.json new file mode 100644 index 0000000..244f48a --- /dev/null +++ b/test_vectors/finalization/report-gen-wrong-partial-pubkey.json @@ -0,0 +1,48 @@ +{ + "params": { + "cmd_extra_args": "execute --type=finalization --json-schema-file=spec/finalization_spec.json", + "expected_exit_code": 1 + }, + "scenario": { + "settings": { + "gen_id": "8d17e61db7b774d16cb165662a8c2c4a", + "n": 3, + "k": 2 + }, + "generations": [ + { + "base_pubkeys": [ + "a6602d395e8fbf67269a41a208613e42795c9e66d365dd87287162e31484cb0f84efaec36220714022bbd296e5357bc9", + "8a64f40fe2e976d01227b4085b42421c8c4c3549f539b8eb7ecad8833b5855ae1994126bfb9b6ff56a5f131f407462d8" + ], + "base_hash": "2cc6b806b3215210122226629b0d0872484d43754668bb90c4d1b5e401377890", + "partial_pubkey": "b6ac8c28c5f722cf095f83005bbfb403364231cd202e0793bfb69cd631e5cbc8d337a8dbe8dcb30615eea0a9dca98746", + "message_cleartext": "Sign with new partial key", + "message_signature": "b296d5309403d063f172cf97811f19cd1404f7b05f956d7b7ceaed375db1d3e6dc1b9f0544591bb562d25f7596abc9bd123b115dec61673a483ac4e5127959ee9886b94caa78c4c0393537d7ce5c203837f0073a14edde71f27b39af8794eb7b" + }, + { + "base_pubkeys": [ + "b66242ce81deb25d60560c0c8f7e35e4ed9760887d7e877461bc2ded650c7d2728bd0f657baa071842c3ea744e7696f3", + "b23adea88f2fec6830a1f5ffb50015d01cd78eb6fe4f13981d23e4b8e2d2b2735729e79acbcecff74cb1571f529fbbce" + ], + "base_hash": "6568dd285df3bf23d7697217273249841707951516e67c4954243d5d80ad23da", + "partial_pubkey": "ab568c1d019cf509c792c1b425fd07f9e56baec261c2732156c25c3681b8fe1b0ca0f167ca2e2f2ed55945b43dea5724", + "message_cleartext": "Sign with new partial key", + "message_signature": "8c0cb5c32e8e11f3e4f21895714ad1e5b00bfc9787b5dbeb4356111a8001728f7e5c7fdce8098fd7839766d7f84801050ccede1ec50b3f7573c43635887560f73156a8a0a93a96852dc5084a61caedc7c784d70a37f2e03eb7208bf22891afae" + }, + { + "base_pubkeys": [ + "954be017bd960e3208f1661c1e5f372d5d5ec0955d3db00b14438d9b90ebc3f6a67853ee82e29bd5325888cc73e1ed67", + "8dc5afd8b102920503849b4a89165d75741163c690f2557d77fd3bad75a142f00197aa9f5fbde27926374bd0b29a7c96" + ], + "base_hash": "bdf6925e576dc08431ac6a590a64263c5ac3d8e5bd88113ac5777762fabd71a6", + "partial_pubkey": "ab0da9f51cf2ecf856e25286622dec8021020a7a75f37dd15210c5cb45be67f8b6ef3db785fd3520e22f7729788a5da3", + "message_cleartext": "Sign with new partial key", + "message_signature": "8b033b10c5046c47e8eeabe79cf4eb599bc5fe6bc5c7141483e00a571ad037558b064dc8075bf06d5b952dac72777c4a04e0b6b843066af8e9226d0710e26206f8811fd1ab11d11f3eb524f253ecc97f3c92a6899198a88436947f0209c3da4b" + } + ], + "aggregate_pubkey": "a028de2876b1f1b52b6aac69c7edf8de70a77927b58ffccf28eb70f540457afb85cf2d99be07deeeb2b41f51331de2bd", + "message_cleartext": "Sign with new partial key", + "message_signature": "8665d924397037638b6a39629caf555c39f80b7aa698c13424a1a67b34f47476182b853a8f18bf117bc9c41ef1d645800c63ebe45139d6e9fd2711bdda543a5af3385aed6d844db05a31de86109b390cbb13c08f7342dc09a6156d277a714e34" + } +} diff --git a/test_vectors/finalization/report-more-generations.json b/test_vectors/finalization/report-more-generations.json new file mode 100644 index 0000000..c16f2fa --- /dev/null +++ b/test_vectors/finalization/report-more-generations.json @@ -0,0 +1,58 @@ +{ + "params": { + "cmd_extra_args": "execute --type=finalization --json-schema-file=spec/finalization_spec.json", + "expected_exit_code": 101 + }, + "scenario": { + "settings": { + "gen_id": "8d17e61db7b774d16cb165662a8c2c4a", + "n": 3, + "k": 2 + }, + "generations": [ + { + "base_pubkeys": [ + "a6602d395e8fbf67269a41a208613e42795c9e66d365dd87287162e31484cb0f84efaec36220714022bbd296e5357bc9", + "8a64f40fe2e976d01227b4085b42421c8c4c3549f539b8eb7ecad8833b5855ae1994126bfb9b6ff56a5f131f407462d8" + ], + "base_hash": "2cc6b806b3215210122226629b0d0872484d43754668bb90c4d1b5e401377890", + "partial_pubkey": "b6ac8c28c5f722cf095f83005bbfb403364231cd202e0793bfb69cd631e5cbc8d337a8dbe8dcb30615eea0a9dca98746", + "message_cleartext": "Sign with new partial key", + "message_signature": "b296d5309403d063f172cf97811f19cd1404f7b05f956d7b7ceaed375db1d3e6dc1b9f0544591bb562d25f7596abc9bd123b115dec61673a483ac4e5127959ee9886b94caa78c4c0393537d7ce5c203837f0073a14edde71f27b39af8794eb7b" + }, + { + "base_pubkeys": [ + "b66242ce81deb25d60560c0c8f7e35e4ed9760887d7e877461bc2ded650c7d2728bd0f657baa071842c3ea744e7696f3", + "b23adea88f2fec6830a1f5ffb50015d01cd78eb6fe4f13981d23e4b8e2d2b2735729e79acbcecff74cb1571f529fbbce" + ], + "base_hash": "6568dd285df3bf23d7697217273249841707951516e67c4954243d5d80ad23da", + "partial_pubkey": "b8a48c016637c63e746be3d360abc7873463f9cea529be2647a9e2961fa45e9334f668c63be069f59dafb1f085a0be4e", + "message_cleartext": "Sign with new partial key", + "message_signature": "8c0cb5c32e8e11f3e4f21895714ad1e5b00bfc9787b5dbeb4356111a8001728f7e5c7fdce8098fd7839766d7f84801050ccede1ec50b3f7573c43635887560f73156a8a0a93a96852dc5084a61caedc7c784d70a37f2e03eb7208bf22891afae" + }, + { + "base_pubkeys": [ + "954be017bd960e3208f1661c1e5f372d5d5ec0955d3db00b14438d9b90ebc3f6a67853ee82e29bd5325888cc73e1ed67", + "8dc5afd8b102920503849b4a89165d75741163c690f2557d77fd3bad75a142f00197aa9f5fbde27926374bd0b29a7c96" + ], + "base_hash": "bdf6925e576dc08431ac6a590a64263c5ac3d8e5bd88113ac5777762fabd71a6", + "partial_pubkey": "ab0da9f51cf2ecf856e25286622dec8021020a7a75f37dd15210c5cb45be67f8b6ef3db785fd3520e22f7729788a5da3", + "message_cleartext": "Sign with new partial key", + "message_signature": "8b033b10c5046c47e8eeabe79cf4eb599bc5fe6bc5c7141483e00a571ad037558b064dc8075bf06d5b952dac72777c4a04e0b6b843066af8e9226d0710e26206f8811fd1ab11d11f3eb524f253ecc97f3c92a6899198a88436947f0209c3da4b" + }, + { + "base_pubkeys": [ + "a6602d395e8fbf67269a41a208613e42795c9e66d365dd87287162e31484cb0f84efaec36220714022bbd296e5357bc9", + "8a64f40fe2e976d01227b4085b42421c8c4c3549f539b8eb7ecad8833b5855ae1994126bfb9b6ff56a5f131f407462d8" + ], + "base_hash": "2cc6b806b3215210122226629b0d0872484d43754668bb90c4d1b5e401377890", + "partial_pubkey": "b6ac8c28c5f722cf095f83005bbfb403364231cd202e0793bfb69cd631e5cbc8d337a8dbe8dcb30615eea0a9dca98746", + "message_cleartext": "Sign with new partial key", + "message_signature": "b296d5309403d063f172cf97811f19cd1404f7b05f956d7b7ceaed375db1d3e6dc1b9f0544591bb562d25f7596abc9bd123b115dec61673a483ac4e5127959ee9886b94caa78c4c0393537d7ce5c203837f0073a14edde71f27b39af8794eb7b" + } + ], + "aggregate_pubkey": "a028de2876b1f1b52b6aac69c7edf8de70a77927b58ffccf28eb70f540457afb85cf2d99be07deeeb2b41f51331de2bd", + "message_cleartext": "Sign with new partial key", + "message_signature": "8665d924397037638b6a39629caf555c39f80b7aa698c13424a1a67b34f47476182b853a8f18bf117bc9c41ef1d645800c63ebe45139d6e9fd2711bdda543a5af3385aed6d844db05a31de86109b390cbb13c08f7342dc09a6156d277a714e34" + } +} diff --git a/test_vectors/finalization/report-n-less-than-k.json b/test_vectors/finalization/report-n-less-than-k.json new file mode 100644 index 0000000..fe17025 --- /dev/null +++ b/test_vectors/finalization/report-n-less-than-k.json @@ -0,0 +1,48 @@ +{ + "params": { + "cmd_extra_args": "execute --type=finalization --json-schema-file=spec/finalization_spec.json", + "expected_exit_code": 101 + }, + "scenario": { + "settings": { + "gen_id": "8d17e61db7b774d16cb165662a8c2c4a", + "n": 1, + "k": 2 + }, + "generations": [ + { + "base_pubkeys": [ + "a6602d395e8fbf67269a41a208613e42795c9e66d365dd87287162e31484cb0f84efaec36220714022bbd296e5357bc9", + "8a64f40fe2e976d01227b4085b42421c8c4c3549f539b8eb7ecad8833b5855ae1994126bfb9b6ff56a5f131f407462d8" + ], + "base_hash": "2cc6b806b3215210122226629b0d0872484d43754668bb90c4d1b5e401377890", + "partial_pubkey": "b6ac8c28c5f722cf095f83005bbfb403364231cd202e0793bfb69cd631e5cbc8d337a8dbe8dcb30615eea0a9dca98746", + "message_cleartext": "Sign with new partial key", + "message_signature": "b296d5309403d063f172cf97811f19cd1404f7b05f956d7b7ceaed375db1d3e6dc1b9f0544591bb562d25f7596abc9bd123b115dec61673a483ac4e5127959ee9886b94caa78c4c0393537d7ce5c203837f0073a14edde71f27b39af8794eb7b" + }, + { + "base_pubkeys": [ + "b66242ce81deb25d60560c0c8f7e35e4ed9760887d7e877461bc2ded650c7d2728bd0f657baa071842c3ea744e7696f3", + "b23adea88f2fec6830a1f5ffb50015d01cd78eb6fe4f13981d23e4b8e2d2b2735729e79acbcecff74cb1571f529fbbce" + ], + "base_hash": "6568dd285df3bf23d7697217273249841707951516e67c4954243d5d80ad23da", + "partial_pubkey": "b8a48c016637c63e746be3d360abc7873463f9cea529be2647a9e2961fa45e9334f668c63be069f59dafb1f085a0be4e", + "message_cleartext": "Sign with new partial key", + "message_signature": "8c0cb5c32e8e11f3e4f21895714ad1e5b00bfc9787b5dbeb4356111a8001728f7e5c7fdce8098fd7839766d7f84801050ccede1ec50b3f7573c43635887560f73156a8a0a93a96852dc5084a61caedc7c784d70a37f2e03eb7208bf22891afae" + }, + { + "base_pubkeys": [ + "954be017bd960e3208f1661c1e5f372d5d5ec0955d3db00b14438d9b90ebc3f6a67853ee82e29bd5325888cc73e1ed67", + "8dc5afd8b102920503849b4a89165d75741163c690f2557d77fd3bad75a142f00197aa9f5fbde27926374bd0b29a7c96" + ], + "base_hash": "bdf6925e576dc08431ac6a590a64263c5ac3d8e5bd88113ac5777762fabd71a6", + "partial_pubkey": "ab0da9f51cf2ecf856e25286622dec8021020a7a75f37dd15210c5cb45be67f8b6ef3db785fd3520e22f7729788a5da3", + "message_cleartext": "Sign with new partial key", + "message_signature": "8b033b10c5046c47e8eeabe79cf4eb599bc5fe6bc5c7141483e00a571ad037558b064dc8075bf06d5b952dac72777c4a04e0b6b843066af8e9226d0710e26206f8811fd1ab11d11f3eb524f253ecc97f3c92a6899198a88436947f0209c3da4b" + } + ], + "aggregate_pubkey": "a028de2876b1f1b52b6aac69c7edf8de70a77927b58ffccf28eb70f540457afb85cf2d99be07deeeb2b41f51331de2bd", + "message_cleartext": "Sign with new partial key", + "message_signature": "8665d924397037638b6a39629caf555c39f80b7aa698c13424a1a67b34f47476182b853a8f18bf117bc9c41ef1d645800c63ebe45139d6e9fd2711bdda543a5af3385aed6d844db05a31de86109b390cbb13c08f7342dc09a6156d277a714e34" + } +} diff --git a/test_vectors/finalization/report-wrong-aggregate-pubkey.json b/test_vectors/finalization/report-wrong-aggregate-pubkey.json new file mode 100644 index 0000000..ee5c340 --- /dev/null +++ b/test_vectors/finalization/report-wrong-aggregate-pubkey.json @@ -0,0 +1,48 @@ +{ + "params": { + "cmd_extra_args": "execute --type=finalization --json-schema-file=spec/finalization_spec.json", + "expected_exit_code": 1 + }, + "scenario": { + "settings": { + "gen_id": "8d17e61db7b774d16cb165662a8c2c4a", + "n": 3, + "k": 2 + }, + "generations": [ + { + "base_pubkeys": [ + "a6602d395e8fbf67269a41a208613e42795c9e66d365dd87287162e31484cb0f84efaec36220714022bbd296e5357bc9", + "8a64f40fe2e976d01227b4085b42421c8c4c3549f539b8eb7ecad8833b5855ae1994126bfb9b6ff56a5f131f407462d8" + ], + "base_hash": "2cc6b806b3215210122226629b0d0872484d43754668bb90c4d1b5e401377890", + "partial_pubkey": "b6ac8c28c5f722cf095f83005bbfb403364231cd202e0793bfb69cd631e5cbc8d337a8dbe8dcb30615eea0a9dca98746", + "message_cleartext": "Sign with new partial key", + "message_signature": "b296d5309403d063f172cf97811f19cd1404f7b05f956d7b7ceaed375db1d3e6dc1b9f0544591bb562d25f7596abc9bd123b115dec61673a483ac4e5127959ee9886b94caa78c4c0393537d7ce5c203837f0073a14edde71f27b39af8794eb7b" + }, + { + "base_pubkeys": [ + "b66242ce81deb25d60560c0c8f7e35e4ed9760887d7e877461bc2ded650c7d2728bd0f657baa071842c3ea744e7696f3", + "b23adea88f2fec6830a1f5ffb50015d01cd78eb6fe4f13981d23e4b8e2d2b2735729e79acbcecff74cb1571f529fbbce" + ], + "base_hash": "6568dd285df3bf23d7697217273249841707951516e67c4954243d5d80ad23da", + "partial_pubkey": "b8a48c016637c63e746be3d360abc7873463f9cea529be2647a9e2961fa45e9334f668c63be069f59dafb1f085a0be4e", + "message_cleartext": "Sign with new partial key", + "message_signature": "8c0cb5c32e8e11f3e4f21895714ad1e5b00bfc9787b5dbeb4356111a8001728f7e5c7fdce8098fd7839766d7f84801050ccede1ec50b3f7573c43635887560f73156a8a0a93a96852dc5084a61caedc7c784d70a37f2e03eb7208bf22891afae" + }, + { + "base_pubkeys": [ + "954be017bd960e3208f1661c1e5f372d5d5ec0955d3db00b14438d9b90ebc3f6a67853ee82e29bd5325888cc73e1ed67", + "8dc5afd8b102920503849b4a89165d75741163c690f2557d77fd3bad75a142f00197aa9f5fbde27926374bd0b29a7c96" + ], + "base_hash": "bdf6925e576dc08431ac6a590a64263c5ac3d8e5bd88113ac5777762fabd71a6", + "partial_pubkey": "ab0da9f51cf2ecf856e25286622dec8021020a7a75f37dd15210c5cb45be67f8b6ef3db785fd3520e22f7729788a5da3", + "message_cleartext": "Sign with new partial key", + "message_signature": "8b033b10c5046c47e8eeabe79cf4eb599bc5fe6bc5c7141483e00a571ad037558b064dc8075bf06d5b952dac72777c4a04e0b6b843066af8e9226d0710e26206f8811fd1ab11d11f3eb524f253ecc97f3c92a6899198a88436947f0209c3da4b" + } + ], + "aggregate_pubkey": "ab568c1d019cf509c792c1b425fd07f9e56baec261c2732156c25c3681b8fe1b0ca0f167ca2e2f2ed55945b43dea5724", + "message_cleartext": "Sign with new partial key", + "message_signature": "8665d924397037638b6a39629caf555c39f80b7aa698c13424a1a67b34f47476182b853a8f18bf117bc9c41ef1d645800c63ebe45139d6e9fd2711bdda543a5af3385aed6d844db05a31de86109b390cbb13c08f7342dc09a6156d277a714e34" + } +} diff --git a/test_vectors/finalization/report-zero-k.json b/test_vectors/finalization/report-zero-k.json new file mode 100644 index 0000000..35a9cc8 --- /dev/null +++ b/test_vectors/finalization/report-zero-k.json @@ -0,0 +1,48 @@ +{ + "params": { + "cmd_extra_args": "execute --type=finalization --json-schema-file=spec/finalization_spec.json", + "expected_exit_code": 1 + }, + "scenario": { + "settings": { + "gen_id": "8d17e61db7b774d16cb165662a8c2c4a", + "n": 3, + "k": 0 + }, + "generations": [ + { + "base_pubkeys": [ + "a6602d395e8fbf67269a41a208613e42795c9e66d365dd87287162e31484cb0f84efaec36220714022bbd296e5357bc9", + "8a64f40fe2e976d01227b4085b42421c8c4c3549f539b8eb7ecad8833b5855ae1994126bfb9b6ff56a5f131f407462d8" + ], + "base_hash": "2cc6b806b3215210122226629b0d0872484d43754668bb90c4d1b5e401377890", + "partial_pubkey": "b6ac8c28c5f722cf095f83005bbfb403364231cd202e0793bfb69cd631e5cbc8d337a8dbe8dcb30615eea0a9dca98746", + "message_cleartext": "Sign with new partial key", + "message_signature": "b296d5309403d063f172cf97811f19cd1404f7b05f956d7b7ceaed375db1d3e6dc1b9f0544591bb562d25f7596abc9bd123b115dec61673a483ac4e5127959ee9886b94caa78c4c0393537d7ce5c203837f0073a14edde71f27b39af8794eb7b" + }, + { + "base_pubkeys": [ + "b66242ce81deb25d60560c0c8f7e35e4ed9760887d7e877461bc2ded650c7d2728bd0f657baa071842c3ea744e7696f3", + "b23adea88f2fec6830a1f5ffb50015d01cd78eb6fe4f13981d23e4b8e2d2b2735729e79acbcecff74cb1571f529fbbce" + ], + "base_hash": "6568dd285df3bf23d7697217273249841707951516e67c4954243d5d80ad23da", + "partial_pubkey": "b8a48c016637c63e746be3d360abc7873463f9cea529be2647a9e2961fa45e9334f668c63be069f59dafb1f085a0be4e", + "message_cleartext": "Sign with new partial key", + "message_signature": "8c0cb5c32e8e11f3e4f21895714ad1e5b00bfc9787b5dbeb4356111a8001728f7e5c7fdce8098fd7839766d7f84801050ccede1ec50b3f7573c43635887560f73156a8a0a93a96852dc5084a61caedc7c784d70a37f2e03eb7208bf22891afae" + }, + { + "base_pubkeys": [ + "954be017bd960e3208f1661c1e5f372d5d5ec0955d3db00b14438d9b90ebc3f6a67853ee82e29bd5325888cc73e1ed67", + "8dc5afd8b102920503849b4a89165d75741163c690f2557d77fd3bad75a142f00197aa9f5fbde27926374bd0b29a7c96" + ], + "base_hash": "bdf6925e576dc08431ac6a590a64263c5ac3d8e5bd88113ac5777762fabd71a6", + "partial_pubkey": "ab0da9f51cf2ecf856e25286622dec8021020a7a75f37dd15210c5cb45be67f8b6ef3db785fd3520e22f7729788a5da3", + "message_cleartext": "Sign with new partial key", + "message_signature": "8b033b10c5046c47e8eeabe79cf4eb599bc5fe6bc5c7141483e00a571ad037558b064dc8075bf06d5b952dac72777c4a04e0b6b843066af8e9226d0710e26206f8811fd1ab11d11f3eb524f253ecc97f3c92a6899198a88436947f0209c3da4b" + } + ], + "aggregate_pubkey": "a028de2876b1f1b52b6aac69c7edf8de70a77927b58ffccf28eb70f540457afb85cf2d99be07deeeb2b41f51331de2bd", + "message_cleartext": "Sign with new partial key", + "message_signature": "8665d924397037638b6a39629caf555c39f80b7aa698c13424a1a67b34f47476182b853a8f18bf117bc9c41ef1d645800c63ebe45139d6e9fd2711bdda543a5af3385aed6d844db05a31de86109b390cbb13c08f7342dc09a6156d277a714e34" + } +} diff --git a/test_vectors/finalization/report.json b/test_vectors/finalization/report.json new file mode 100644 index 0000000..09e2412 --- /dev/null +++ b/test_vectors/finalization/report.json @@ -0,0 +1,48 @@ +{ + "params": { + "cmd_extra_args": "execute --type=finalization --json-schema-file=spec/finalization_spec.json", + "expected_exit_code": 0 + }, + "scenario": { + "settings": { + "gen_id": "8d17e61db7b774d16cb165662a8c2c4a", + "n": 3, + "k": 2 + }, + "generations": [ + { + "base_pubkeys": [ + "a6602d395e8fbf67269a41a208613e42795c9e66d365dd87287162e31484cb0f84efaec36220714022bbd296e5357bc9", + "8a64f40fe2e976d01227b4085b42421c8c4c3549f539b8eb7ecad8833b5855ae1994126bfb9b6ff56a5f131f407462d8" + ], + "base_hash": "2cc6b806b3215210122226629b0d0872484d43754668bb90c4d1b5e401377890", + "partial_pubkey": "b6ac8c28c5f722cf095f83005bbfb403364231cd202e0793bfb69cd631e5cbc8d337a8dbe8dcb30615eea0a9dca98746", + "message_cleartext": "Sign with new partial key", + "message_signature": "b296d5309403d063f172cf97811f19cd1404f7b05f956d7b7ceaed375db1d3e6dc1b9f0544591bb562d25f7596abc9bd123b115dec61673a483ac4e5127959ee9886b94caa78c4c0393537d7ce5c203837f0073a14edde71f27b39af8794eb7b" + }, + { + "base_pubkeys": [ + "b66242ce81deb25d60560c0c8f7e35e4ed9760887d7e877461bc2ded650c7d2728bd0f657baa071842c3ea744e7696f3", + "b23adea88f2fec6830a1f5ffb50015d01cd78eb6fe4f13981d23e4b8e2d2b2735729e79acbcecff74cb1571f529fbbce" + ], + "base_hash": "6568dd285df3bf23d7697217273249841707951516e67c4954243d5d80ad23da", + "partial_pubkey": "b8a48c016637c63e746be3d360abc7873463f9cea529be2647a9e2961fa45e9334f668c63be069f59dafb1f085a0be4e", + "message_cleartext": "Sign with new partial key", + "message_signature": "8c0cb5c32e8e11f3e4f21895714ad1e5b00bfc9787b5dbeb4356111a8001728f7e5c7fdce8098fd7839766d7f84801050ccede1ec50b3f7573c43635887560f73156a8a0a93a96852dc5084a61caedc7c784d70a37f2e03eb7208bf22891afae" + }, + { + "base_pubkeys": [ + "954be017bd960e3208f1661c1e5f372d5d5ec0955d3db00b14438d9b90ebc3f6a67853ee82e29bd5325888cc73e1ed67", + "8dc5afd8b102920503849b4a89165d75741163c690f2557d77fd3bad75a142f00197aa9f5fbde27926374bd0b29a7c96" + ], + "base_hash": "bdf6925e576dc08431ac6a590a64263c5ac3d8e5bd88113ac5777762fabd71a6", + "partial_pubkey": "ab0da9f51cf2ecf856e25286622dec8021020a7a75f37dd15210c5cb45be67f8b6ef3db785fd3520e22f7729788a5da3", + "message_cleartext": "Sign with new partial key", + "message_signature": "8b033b10c5046c47e8eeabe79cf4eb599bc5fe6bc5c7141483e00a571ad037558b064dc8075bf06d5b952dac72777c4a04e0b6b843066af8e9226d0710e26206f8811fd1ab11d11f3eb524f253ecc97f3c92a6899198a88436947f0209c3da4b" + } + ], + "aggregate_pubkey": "a028de2876b1f1b52b6aac69c7edf8de70a77927b58ffccf28eb70f540457afb85cf2d99be07deeeb2b41f51331de2bd", + "message_cleartext": "Sign with new partial key", + "message_signature": "8665d924397037638b6a39629caf555c39f80b7aa698c13424a1a67b34f47476182b853a8f18bf117bc9c41ef1d645800c63ebe45139d6e9fd2711bdda543a5af3385aed6d844db05a31de86109b390cbb13c08f7342dc09a6156d277a714e34" + } +} diff --git a/test_vectors/finalization/wrong-aggregate-pubkey.json b/test_vectors/finalization/wrong-aggregate-pubkey.json deleted file mode 100644 index fb8e7a1..0000000 --- a/test_vectors/finalization/wrong-aggregate-pubkey.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "params": { - "cmd_extra_args": "--type=finalization --json-schema-file=spec/finalization_spec.json", - "expected_exit_code": 1 - }, - "scenario": { - "settings": { - "n": 5, - "k": 3, - "gen_id": "89f0996b33ca953e0cf9b70a5f84cb50" - }, - "generations": [ - { - "base_pubkeys": [ - "a1da3158e0a5305eb258b969dcfd24a4e5ea4d6665524619017a6a1ce7710cca1ccce4370d051fd55d401ba58b12a3b5", - "a51fd02773126ede1ad38afcd257c5f5b081995539f26bdc2011286cc62557ba0d375f46e193b4e216c31f16dd79847a", - "a6cbadf14b777d22aed8697d9f41e45fd870a46286f6aae93d0c5e924d74f2cac339863e7ad1d9bf3f9e82164e1ea2ee" - ], - "base_hash": "2438b43279a7420444af83aa840e381f4e9a79c87f82c125d1475152ce42e57f", - "partial_pubkey": "b18bf51b1dcb8689f7b1b5ac5d58b291c525516287f75c562a689e7b2f91633a30fa56740eb7c0e83603cf0f2eb91117", - "message_cleartext": "24610b589ba77b506b3383798cc0fc1f7be64b777fee6bdab14775e1a0ade524", - "message_signature": "8b59de1b727bd246e9a3fac4d753d096dc64b53d3d4093662f72e73fdc696f9fd2d637999cba289c2c5ab65eab3fd0df000ced0e0bb6503a0b805d864d2a56e1e5df1009b076a15e37d61ca00d30db1d216ba0ca7176dfb23005a9d67e5d18fc" - }, - { - "base_pubkeys": [ - "aecd2f577ec702eea283509932d7a326c67dad9c855a8449b110eff282dcc5ca238a33275e68d13c448f3832305d3a64", - "8f23a43d59befd88446a60b1a07e0936798c5bc0e8ff3ba9b014c40c6af05765fc6ba5da1056fb923122651212135408", - "9987347a1c9bd2a0a9f570c38e52a19f7b70d93a4b24a25dbf7cbaee1fcd4831521a0ffab46d066d7cdbc6f4f88364db" - ], - "base_hash": "24611a5ee2ba7b6cfb08f67999198f0c7b14614bffee78a75f17751e881d1924", - "partial_pubkey": "acce3b29357595b9827a4471df73b96587df525b8ea5476cee6d85146ab2008e78a4a58d40890e4c166a5a34c17b2955", - "message_cleartext": "24610b589ba77b506b3383798cc0fc1f7be64b777fee6bdab14775e1a0ade524", - "message_signature": "889284c45f33033ae131f6bcbcea7bc21a068f1c203cca0e4cf18d44738bd7870c13d33a0108f29758f3256b371a21ba0158b97b44d0af503f5cd55588311368be5994088e20d0c26752f5b06a91bf483ca3cafde5b471345d597cfc245909d8" - }, - { - "base_pubkeys": [ - "96de876b5ddfb0166fff60c301d5ef341203d611305b6a765b9e5ba412f7fe5847ae8603f61e01491ccd2c9649d06979", - "928d9467050dc2aeb3ae02aaba43e242bc6723a3e8870cba3877fac2f2cc7d6eacf1d0b39bfc7e49201c0c32360bcf3d", - "8c2cbe9e71ea75225a360b3451e8e876af5005fb8c4a02c2606dac1f54c76714e59982d5944e752dab40a5c1a76a1c07" - ], - "base_hash": "60010b5dc9747b508924f9fb8ce98021d3e693d0d5d36b2dc5df30e19d139680", - "partial_pubkey": "a704f7774c7028fc39093b640d3018bc55f1251d27194c506a5a41c96168f8dd8ff69118b8fd789f7897759006184686", - "message_cleartext": "24610b589ba77b506b3383798cc0fc1f7be64b777fee6bdab14775e1a0ade524", - "message_signature": "b85d4eeb42ce695ec5e77c4cc331b78cd3d4dc6fb46443e8894f690d6ef71d25e7a95036e5ac82315819db7c652056f0110ec66777516f38f714c865755f7f92d151d73f3bb523a7c2dd8e18f8936f79144cdc11eea0fc2dccadd70e786da7e4" - }, - { - "base_pubkeys": [ - "b69dc72c248437bd0be7d47554dd50221c0ac29be805e3c2d8e4f21bef4f2b6b60cd9a109559d5df4cae5da635c7879a", - "aa293fe7860e32db8a3e2c9578feeb554131aaa72d6993872780ac554735874fa8f3dbced82cfc6bf677ca79ce3c7340", - "ab10e5407fa7680f660cdca8b75f8e40dcd098b8b5b0f88525e3f2389dc6ffb470c9b6d377c3d1e30715283a713b07c2" - ], - "base_hash": "6d6573585c6852d96b241e8d13c002db19dd4beb950537dab7570949a0816d1c", - "partial_pubkey": "92683da0e3c25b8872f6371f4e98deeba6693b3778fd4d1818e13e16acf9bd6ad88d5f1b3514a7894afd538335bafdfa", - "message_cleartext": "24610b589ba77b506b3383798cc0fc1f7be64b777fee6bdab14775e1a0ade524", - "message_signature": "abf6c2c2593052744af15be101bfe78c2db57b263426a0fc9d3f679b74a712822d900fe024919d302a89adb61980320f03f6041224177f4e6528a9c13bd1e749de29fef2d7062259bf89cbe7f6ef509dbb632c872aea5b42d538a72490270dea" - }, - { - "base_pubkeys": [ - "95d1e771b6df3d1a33ecf2c49cedea4b1eeb0477b89cc6debf397b79d64bd6f6c9d3d2dd86fd0e8f803a3825bfc3fb67", - "8a9413aed9e746000747c10ea1d9fe1287aa86511569a941948590b97dd624d3f642118f0a39d5d11eebadd19ee24751", - "b5566edea3b7bd7d30efa402dc7d3047530dacc67a2fd808caf7700897664166c45cc57a7a08278fff1f4265d20c72fb" - ], - "base_hash": "ade24f5d9b58c6808d33dd373c8ffc0283c7ad77cc480745b175a69de3ad9bfb", - "partial_pubkey": "89584e99056382c7a9adcf43f0848f50729605bb3e2f4b750e66163f6d4c5d5f45ce94a450bff03f39c4225b689a8f2e", - "message_cleartext": "24610b589ba77b506b3383798cc0fc1f7be64b777fee6bdab14775e1a0ade524", - "message_signature": "8f1128a29b431e9035fcf35d04d8671a749040043987cc927f4bb929df963d02057c9cc83ea787189786c6683dcea0070db7892555e8b67766e62d335ca67d5534fbb8019430bd2b976aab78ae8d26b140c8277c1450ded65194142c5c4a1332" - } - ], - "aggregate_pubkey": "ab568c1d019cf509c792c1b425fd07f9e56baec261c2732156c25c3681b8fe1b0ca0f167ca2e2f2ed55945b43dea5724" - } -} \ No newline at end of file diff --git a/test_vectors/finalization/wrong-base-hash.json b/test_vectors/finalization/wrong-base-hash.json deleted file mode 100644 index 5940404..0000000 --- a/test_vectors/finalization/wrong-base-hash.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "params": { - "cmd_extra_args": "--type=finalization --json-schema-file=spec/finalization_spec.json", - "expected_exit_code": 1 - }, - "scenario": { - "settings": { - "n": 5, - "k": 3, - "gen_id": "89f0996b33ca953e0cf9b70a5f84cb50" - }, - "generations": [ - { - "base_pubkeys": [ - "a1da3158e0a5305eb258b969dcfd24a4e5ea4d6665524619017a6a1ce7710cca1ccce4370d051fd55d401ba58b12a3b5", - "a51fd02773126ede1ad38afcd257c5f5b081995539f26bdc2011286cc62557ba0d375f46e193b4e216c31f16dd79847a", - "a6cbadf14b777d22aed8697d9f41e45fd870a46286f6aae93d0c5e924d74f2cac339863e7ad1d9bf3f9e82164e1ea2ee" - ], - "base_hash": "2438b43279a7420444af83aa840e381f4e9a79c87f82c125d1475152ce42e57f", - "partial_pubkey": "b18bf51b1dcb8689f7b1b5ac5d58b291c525516287f75c562a689e7b2f91633a30fa56740eb7c0e83603cf0f2eb91117", - "message_cleartext": "24610b589ba77b506b3383798cc0fc1f7be64b777fee6bdab14775e1a0ade524", - "message_signature": "8b59de1b727bd246e9a3fac4d753d096dc64b53d3d4093662f72e73fdc696f9fd2d637999cba289c2c5ab65eab3fd0df000ced0e0bb6503a0b805d864d2a56e1e5df1009b076a15e37d61ca00d30db1d216ba0ca7176dfb23005a9d67e5d18fc" - }, - { - "base_pubkeys": [ - "aecd2f577ec702eea283509932d7a326c67dad9c855a8449b110eff282dcc5ca238a33275e68d13c448f3832305d3a64", - "8f23a43d59befd88446a60b1a07e0936798c5bc0e8ff3ba9b014c40c6af05765fc6ba5da1056fb923122651212135408", - "9987347a1c9bd2a0a9f570c38e52a19f7b70d93a4b24a25dbf7cbaee1fcd4831521a0ffab46d066d7cdbc6f4f88364db" - ], - "base_hash": "cbe7cc600de28e42a9cae781b289db68fe10a4a741250141535d6be98a874519", - "partial_pubkey": "acce3b29357595b9827a4471df73b96587df525b8ea5476cee6d85146ab2008e78a4a58d40890e4c166a5a34c17b2955", - "message_cleartext": "24610b589ba77b506b3383798cc0fc1f7be64b777fee6bdab14775e1a0ade524", - "message_signature": "889284c45f33033ae131f6bcbcea7bc21a068f1c203cca0e4cf18d44738bd7870c13d33a0108f29758f3256b371a21ba0158b97b44d0af503f5cd55588311368be5994088e20d0c26752f5b06a91bf483ca3cafde5b471345d597cfc245909d8" - }, - { - "base_pubkeys": [ - "96de876b5ddfb0166fff60c301d5ef341203d611305b6a765b9e5ba412f7fe5847ae8603f61e01491ccd2c9649d06979", - "928d9467050dc2aeb3ae02aaba43e242bc6723a3e8870cba3877fac2f2cc7d6eacf1d0b39bfc7e49201c0c32360bcf3d", - "8c2cbe9e71ea75225a360b3451e8e876af5005fb8c4a02c2606dac1f54c76714e59982d5944e752dab40a5c1a76a1c07" - ], - "base_hash": "60010b5dc9747b508924f9fb8ce98021d3e693d0d5d36b2dc5df30e19d139680", - "partial_pubkey": "a704f7774c7028fc39093b640d3018bc55f1251d27194c506a5a41c96168f8dd8ff69118b8fd789f7897759006184686", - "message_cleartext": "24610b589ba77b506b3383798cc0fc1f7be64b777fee6bdab14775e1a0ade524", - "message_signature": "b85d4eeb42ce695ec5e77c4cc331b78cd3d4dc6fb46443e8894f690d6ef71d25e7a95036e5ac82315819db7c652056f0110ec66777516f38f714c865755f7f92d151d73f3bb523a7c2dd8e18f8936f79144cdc11eea0fc2dccadd70e786da7e4" - }, - { - "base_pubkeys": [ - "b69dc72c248437bd0be7d47554dd50221c0ac29be805e3c2d8e4f21bef4f2b6b60cd9a109559d5df4cae5da635c7879a", - "aa293fe7860e32db8a3e2c9578feeb554131aaa72d6993872780ac554735874fa8f3dbced82cfc6bf677ca79ce3c7340", - "ab10e5407fa7680f660cdca8b75f8e40dcd098b8b5b0f88525e3f2389dc6ffb470c9b6d377c3d1e30715283a713b07c2" - ], - "base_hash": "6d6573585c6852d96b241e8d13c002db19dd4beb950537dab7570949a0816d1c", - "partial_pubkey": "92683da0e3c25b8872f6371f4e98deeba6693b3778fd4d1818e13e16acf9bd6ad88d5f1b3514a7894afd538335bafdfa", - "message_cleartext": "24610b589ba77b506b3383798cc0fc1f7be64b777fee6bdab14775e1a0ade524", - "message_signature": "abf6c2c2593052744af15be101bfe78c2db57b263426a0fc9d3f679b74a712822d900fe024919d302a89adb61980320f03f6041224177f4e6528a9c13bd1e749de29fef2d7062259bf89cbe7f6ef509dbb632c872aea5b42d538a72490270dea" - }, - { - "base_pubkeys": [ - "95d1e771b6df3d1a33ecf2c49cedea4b1eeb0477b89cc6debf397b79d64bd6f6c9d3d2dd86fd0e8f803a3825bfc3fb67", - "8a9413aed9e746000747c10ea1d9fe1287aa86511569a941948590b97dd624d3f642118f0a39d5d11eebadd19ee24751", - "b5566edea3b7bd7d30efa402dc7d3047530dacc67a2fd808caf7700897664166c45cc57a7a08278fff1f4265d20c72fb" - ], - "base_hash": "ade24f5d9b58c6808d33dd373c8ffc0283c7ad77cc480745b175a69de3ad9bfb", - "partial_pubkey": "89584e99056382c7a9adcf43f0848f50729605bb3e2f4b750e66163f6d4c5d5f45ce94a450bff03f39c4225b689a8f2e", - "message_cleartext": "24610b589ba77b506b3383798cc0fc1f7be64b777fee6bdab14775e1a0ade524", - "message_signature": "8f1128a29b431e9035fcf35d04d8671a749040043987cc927f4bb929df963d02057c9cc83ea787189786c6683dcea0070db7892555e8b67766e62d335ca67d5534fbb8019430bd2b976aab78ae8d26b140c8277c1450ded65194142c5c4a1332" - } - ], - "aggregate_pubkey": "88c9ee145c355e09eeedcda02b1d3df449e3c4a4ee1d975779ad07697fd7343b8ca5050d0241724b5afd325daa6e0224" - } -} \ No newline at end of file diff --git a/test_vectors/finalization/wrong-genid.json b/test_vectors/finalization/wrong-genid.json deleted file mode 100644 index 45783ad..0000000 --- a/test_vectors/finalization/wrong-genid.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "params": { - "cmd_extra_args": "--type=finalization --json-schema-file=spec/finalization_spec.json", - "expected_exit_code": 1 - }, - "scenario": { - "settings": { - "n": 5, - "k": 3, - "gen_id": "737472696e672d666f722d77726f6e67" - }, - "generations": [ - { - "base_pubkeys": [ - "a1da3158e0a5305eb258b969dcfd24a4e5ea4d6665524619017a6a1ce7710cca1ccce4370d051fd55d401ba58b12a3b5", - "a51fd02773126ede1ad38afcd257c5f5b081995539f26bdc2011286cc62557ba0d375f46e193b4e216c31f16dd79847a", - "a6cbadf14b777d22aed8697d9f41e45fd870a46286f6aae93d0c5e924d74f2cac339863e7ad1d9bf3f9e82164e1ea2ee" - ], - "base_hash": "2438b43279a7420444af83aa840e381f4e9a79c87f82c125d1475152ce42e57f", - "partial_pubkey": "b18bf51b1dcb8689f7b1b5ac5d58b291c525516287f75c562a689e7b2f91633a30fa56740eb7c0e83603cf0f2eb91117", - "message_cleartext": "24610b589ba77b506b3383798cc0fc1f7be64b777fee6bdab14775e1a0ade524", - "message_signature": "8b59de1b727bd246e9a3fac4d753d096dc64b53d3d4093662f72e73fdc696f9fd2d637999cba289c2c5ab65eab3fd0df000ced0e0bb6503a0b805d864d2a56e1e5df1009b076a15e37d61ca00d30db1d216ba0ca7176dfb23005a9d67e5d18fc" - }, - { - "base_pubkeys": [ - "aecd2f577ec702eea283509932d7a326c67dad9c855a8449b110eff282dcc5ca238a33275e68d13c448f3832305d3a64", - "8f23a43d59befd88446a60b1a07e0936798c5bc0e8ff3ba9b014c40c6af05765fc6ba5da1056fb923122651212135408", - "9987347a1c9bd2a0a9f570c38e52a19f7b70d93a4b24a25dbf7cbaee1fcd4831521a0ffab46d066d7cdbc6f4f88364db" - ], - "base_hash": "24611a5ee2ba7b6cfb08f67999198f0c7b14614bffee78a75f17751e881d1924", - "partial_pubkey": "acce3b29357595b9827a4471df73b96587df525b8ea5476cee6d85146ab2008e78a4a58d40890e4c166a5a34c17b2955", - "message_cleartext": "24610b589ba77b506b3383798cc0fc1f7be64b777fee6bdab14775e1a0ade524", - "message_signature": "889284c45f33033ae131f6bcbcea7bc21a068f1c203cca0e4cf18d44738bd7870c13d33a0108f29758f3256b371a21ba0158b97b44d0af503f5cd55588311368be5994088e20d0c26752f5b06a91bf483ca3cafde5b471345d597cfc245909d8" - }, - { - "base_pubkeys": [ - "96de876b5ddfb0166fff60c301d5ef341203d611305b6a765b9e5ba412f7fe5847ae8603f61e01491ccd2c9649d06979", - "928d9467050dc2aeb3ae02aaba43e242bc6723a3e8870cba3877fac2f2cc7d6eacf1d0b39bfc7e49201c0c32360bcf3d", - "8c2cbe9e71ea75225a360b3451e8e876af5005fb8c4a02c2606dac1f54c76714e59982d5944e752dab40a5c1a76a1c07" - ], - "base_hash": "60010b5dc9747b508924f9fb8ce98021d3e693d0d5d36b2dc5df30e19d139680", - "partial_pubkey": "a704f7774c7028fc39093b640d3018bc55f1251d27194c506a5a41c96168f8dd8ff69118b8fd789f7897759006184686", - "message_cleartext": "24610b589ba77b506b3383798cc0fc1f7be64b777fee6bdab14775e1a0ade524", - "message_signature": "b85d4eeb42ce695ec5e77c4cc331b78cd3d4dc6fb46443e8894f690d6ef71d25e7a95036e5ac82315819db7c652056f0110ec66777516f38f714c865755f7f92d151d73f3bb523a7c2dd8e18f8936f79144cdc11eea0fc2dccadd70e786da7e4" - }, - { - "base_pubkeys": [ - "b69dc72c248437bd0be7d47554dd50221c0ac29be805e3c2d8e4f21bef4f2b6b60cd9a109559d5df4cae5da635c7879a", - "aa293fe7860e32db8a3e2c9578feeb554131aaa72d6993872780ac554735874fa8f3dbced82cfc6bf677ca79ce3c7340", - "ab10e5407fa7680f660cdca8b75f8e40dcd098b8b5b0f88525e3f2389dc6ffb470c9b6d377c3d1e30715283a713b07c2" - ], - "base_hash": "6d6573585c6852d96b241e8d13c002db19dd4beb950537dab7570949a0816d1c", - "partial_pubkey": "92683da0e3c25b8872f6371f4e98deeba6693b3778fd4d1818e13e16acf9bd6ad88d5f1b3514a7894afd538335bafdfa", - "message_cleartext": "24610b589ba77b506b3383798cc0fc1f7be64b777fee6bdab14775e1a0ade524", - "message_signature": "abf6c2c2593052744af15be101bfe78c2db57b263426a0fc9d3f679b74a712822d900fe024919d302a89adb61980320f03f6041224177f4e6528a9c13bd1e749de29fef2d7062259bf89cbe7f6ef509dbb632c872aea5b42d538a72490270dea" - }, - { - "base_pubkeys": [ - "95d1e771b6df3d1a33ecf2c49cedea4b1eeb0477b89cc6debf397b79d64bd6f6c9d3d2dd86fd0e8f803a3825bfc3fb67", - "8a9413aed9e746000747c10ea1d9fe1287aa86511569a941948590b97dd624d3f642118f0a39d5d11eebadd19ee24751", - "b5566edea3b7bd7d30efa402dc7d3047530dacc67a2fd808caf7700897664166c45cc57a7a08278fff1f4265d20c72fb" - ], - "base_hash": "ade24f5d9b58c6808d33dd373c8ffc0283c7ad77cc480745b175a69de3ad9bfb", - "partial_pubkey": "89584e99056382c7a9adcf43f0848f50729605bb3e2f4b750e66163f6d4c5d5f45ce94a450bff03f39c4225b689a8f2e", - "message_cleartext": "24610b589ba77b506b3383798cc0fc1f7be64b777fee6bdab14775e1a0ade524", - "message_signature": "8f1128a29b431e9035fcf35d04d8671a749040043987cc927f4bb929df963d02057c9cc83ea787189786c6683dcea0070db7892555e8b67766e62d335ca67d5534fbb8019430bd2b976aab78ae8d26b140c8277c1450ded65194142c5c4a1332" - } - ], - "aggregate_pubkey": "88c9ee145c355e09eeedcda02b1d3df449e3c4a4ee1d975779ad07697fd7343b8ca5050d0241724b5afd325daa6e0224" - } -} \ No newline at end of file diff --git a/test_vectors/finalization/wrong-message-cleartext.json b/test_vectors/finalization/wrong-message-cleartext.json deleted file mode 100644 index 0d4fd46..0000000 --- a/test_vectors/finalization/wrong-message-cleartext.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "params": { - "cmd_extra_args": "--type=finalization --json-schema-file=spec/finalization_spec.json", - "expected_exit_code": 1 - }, - "scenario": { - "settings": { - "n": 5, - "k": 3, - "gen_id": "89f0996b33ca953e0cf9b70a5f84cb50" - }, - "generations": [ - { - "base_pubkeys": [ - "a1da3158e0a5305eb258b969dcfd24a4e5ea4d6665524619017a6a1ce7710cca1ccce4370d051fd55d401ba58b12a3b5", - "a51fd02773126ede1ad38afcd257c5f5b081995539f26bdc2011286cc62557ba0d375f46e193b4e216c31f16dd79847a", - "a6cbadf14b777d22aed8697d9f41e45fd870a46286f6aae93d0c5e924d74f2cac339863e7ad1d9bf3f9e82164e1ea2ee" - ], - "base_hash": "2438b43279a7420444af83aa840e381f4e9a79c87f82c125d1475152ce42e57f", - "partial_pubkey": "b18bf51b1dcb8689f7b1b5ac5d58b291c525516287f75c562a689e7b2f91633a30fa56740eb7c0e83603cf0f2eb91117", - "message_cleartext": "24610b589ba77b506b3383798cc0fc1f7be64b777fee6bdab14775e1a0ade524", - "message_signature": "8b59de1b727bd246e9a3fac4d753d096dc64b53d3d4093662f72e73fdc696f9fd2d637999cba289c2c5ab65eab3fd0df000ced0e0bb6503a0b805d864d2a56e1e5df1009b076a15e37d61ca00d30db1d216ba0ca7176dfb23005a9d67e5d18fc" - }, - { - "base_pubkeys": [ - "aecd2f577ec702eea283509932d7a326c67dad9c855a8449b110eff282dcc5ca238a33275e68d13c448f3832305d3a64", - "8f23a43d59befd88446a60b1a07e0936798c5bc0e8ff3ba9b014c40c6af05765fc6ba5da1056fb923122651212135408", - "9987347a1c9bd2a0a9f570c38e52a19f7b70d93a4b24a25dbf7cbaee1fcd4831521a0ffab46d066d7cdbc6f4f88364db" - ], - "base_hash": "24611a5ee2ba7b6cfb08f67999198f0c7b14614bffee78a75f17751e881d1924", - "partial_pubkey": "acce3b29357595b9827a4471df73b96587df525b8ea5476cee6d85146ab2008e78a4a58d40890e4c166a5a34c17b2955", - "message_cleartext": "wrong message cleartext", - "message_signature": "889284c45f33033ae131f6bcbcea7bc21a068f1c203cca0e4cf18d44738bd7870c13d33a0108f29758f3256b371a21ba0158b97b44d0af503f5cd55588311368be5994088e20d0c26752f5b06a91bf483ca3cafde5b471345d597cfc245909d8" - }, - { - "base_pubkeys": [ - "96de876b5ddfb0166fff60c301d5ef341203d611305b6a765b9e5ba412f7fe5847ae8603f61e01491ccd2c9649d06979", - "928d9467050dc2aeb3ae02aaba43e242bc6723a3e8870cba3877fac2f2cc7d6eacf1d0b39bfc7e49201c0c32360bcf3d", - "8c2cbe9e71ea75225a360b3451e8e876af5005fb8c4a02c2606dac1f54c76714e59982d5944e752dab40a5c1a76a1c07" - ], - "base_hash": "60010b5dc9747b508924f9fb8ce98021d3e693d0d5d36b2dc5df30e19d139680", - "partial_pubkey": "a704f7774c7028fc39093b640d3018bc55f1251d27194c506a5a41c96168f8dd8ff69118b8fd789f7897759006184686", - "message_cleartext": "24610b589ba77b506b3383798cc0fc1f7be64b777fee6bdab14775e1a0ade524", - "message_signature": "b85d4eeb42ce695ec5e77c4cc331b78cd3d4dc6fb46443e8894f690d6ef71d25e7a95036e5ac82315819db7c652056f0110ec66777516f38f714c865755f7f92d151d73f3bb523a7c2dd8e18f8936f79144cdc11eea0fc2dccadd70e786da7e4" - }, - { - "base_pubkeys": [ - "b69dc72c248437bd0be7d47554dd50221c0ac29be805e3c2d8e4f21bef4f2b6b60cd9a109559d5df4cae5da635c7879a", - "aa293fe7860e32db8a3e2c9578feeb554131aaa72d6993872780ac554735874fa8f3dbced82cfc6bf677ca79ce3c7340", - "ab10e5407fa7680f660cdca8b75f8e40dcd098b8b5b0f88525e3f2389dc6ffb470c9b6d377c3d1e30715283a713b07c2" - ], - "base_hash": "6d6573585c6852d96b241e8d13c002db19dd4beb950537dab7570949a0816d1c", - "partial_pubkey": "92683da0e3c25b8872f6371f4e98deeba6693b3778fd4d1818e13e16acf9bd6ad88d5f1b3514a7894afd538335bafdfa", - "message_cleartext": "24610b589ba77b506b3383798cc0fc1f7be64b777fee6bdab14775e1a0ade524", - "message_signature": "abf6c2c2593052744af15be101bfe78c2db57b263426a0fc9d3f679b74a712822d900fe024919d302a89adb61980320f03f6041224177f4e6528a9c13bd1e749de29fef2d7062259bf89cbe7f6ef509dbb632c872aea5b42d538a72490270dea" - }, - { - "base_pubkeys": [ - "95d1e771b6df3d1a33ecf2c49cedea4b1eeb0477b89cc6debf397b79d64bd6f6c9d3d2dd86fd0e8f803a3825bfc3fb67", - "8a9413aed9e746000747c10ea1d9fe1287aa86511569a941948590b97dd624d3f642118f0a39d5d11eebadd19ee24751", - "b5566edea3b7bd7d30efa402dc7d3047530dacc67a2fd808caf7700897664166c45cc57a7a08278fff1f4265d20c72fb" - ], - "base_hash": "ade24f5d9b58c6808d33dd373c8ffc0283c7ad77cc480745b175a69de3ad9bfb", - "partial_pubkey": "89584e99056382c7a9adcf43f0848f50729605bb3e2f4b750e66163f6d4c5d5f45ce94a450bff03f39c4225b689a8f2e", - "message_cleartext": "24610b589ba77b506b3383798cc0fc1f7be64b777fee6bdab14775e1a0ade524", - "message_signature": "8f1128a29b431e9035fcf35d04d8671a749040043987cc927f4bb929df963d02057c9cc83ea787189786c6683dcea0070db7892555e8b67766e62d335ca67d5534fbb8019430bd2b976aab78ae8d26b140c8277c1450ded65194142c5c4a1332" - } - ], - "aggregate_pubkey": "88c9ee145c355e09eeedcda02b1d3df449e3c4a4ee1d975779ad07697fd7343b8ca5050d0241724b5afd325daa6e0224" - } -} \ No newline at end of file diff --git a/test_vectors/finalization/wrong-message-signature.json b/test_vectors/finalization/wrong-message-signature.json deleted file mode 100644 index 7b611f3..0000000 --- a/test_vectors/finalization/wrong-message-signature.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "params": { - "cmd_extra_args": "--type=finalization --json-schema-file=spec/finalization_spec.json", - "expected_exit_code": 1 - }, - "scenario": { - "settings": { - "n": 5, - "k": 3, - "gen_id": "89f0996b33ca953e0cf9b70a5f84cb50" - }, - "generations": [ - { - "base_pubkeys": [ - "a1da3158e0a5305eb258b969dcfd24a4e5ea4d6665524619017a6a1ce7710cca1ccce4370d051fd55d401ba58b12a3b5", - "a51fd02773126ede1ad38afcd257c5f5b081995539f26bdc2011286cc62557ba0d375f46e193b4e216c31f16dd79847a", - "a6cbadf14b777d22aed8697d9f41e45fd870a46286f6aae93d0c5e924d74f2cac339863e7ad1d9bf3f9e82164e1ea2ee" - ], - "base_hash": "2438b43279a7420444af83aa840e381f4e9a79c87f82c125d1475152ce42e57f", - "partial_pubkey": "b18bf51b1dcb8689f7b1b5ac5d58b291c525516287f75c562a689e7b2f91633a30fa56740eb7c0e83603cf0f2eb91117", - "message_cleartext": "24610b589ba77b506b3383798cc0fc1f7be64b777fee6bdab14775e1a0ade524", - "message_signature": "8b59de1b727bd246e9a3fac4d753d096dc64b53d3d4093662f72e73fdc696f9fd2d637999cba289c2c5ab65eab3fd0df000ced0e0bb6503a0b805d864d2a56e1e5df1009b076a15e37d61ca00d30db1d216ba0ca7176dfb23005a9d67e5d18fc" - }, - { - "base_pubkeys": [ - "aecd2f577ec702eea283509932d7a326c67dad9c855a8449b110eff282dcc5ca238a33275e68d13c448f3832305d3a64", - "8f23a43d59befd88446a60b1a07e0936798c5bc0e8ff3ba9b014c40c6af05765fc6ba5da1056fb923122651212135408", - "9987347a1c9bd2a0a9f570c38e52a19f7b70d93a4b24a25dbf7cbaee1fcd4831521a0ffab46d066d7cdbc6f4f88364db" - ], - "base_hash": "24611a5ee2ba7b6cfb08f67999198f0c7b14614bffee78a75f17751e881d1924", - "partial_pubkey": "acce3b29357595b9827a4471df73b96587df525b8ea5476cee6d85146ab2008e78a4a58d40890e4c166a5a34c17b2955", - "message_cleartext": "24610b589ba77b506b3383798cc0fc1f7be64b777fee6bdab14775e1a0ade524", - "message_signature": "968efa93e3e8f8c48fdd98e906950146e069e31973487f8e4e559249e1497ec27bc51faef80512b8eca4de8cbb1877b419a6eb8684b7f752cbd8f087c74be513106e70892a32b00dff8b679bda97c0b1092e1c24d2f157278e2e6b3b398564b6" - }, - { - "base_pubkeys": [ - "96de876b5ddfb0166fff60c301d5ef341203d611305b6a765b9e5ba412f7fe5847ae8603f61e01491ccd2c9649d06979", - "928d9467050dc2aeb3ae02aaba43e242bc6723a3e8870cba3877fac2f2cc7d6eacf1d0b39bfc7e49201c0c32360bcf3d", - "8c2cbe9e71ea75225a360b3451e8e876af5005fb8c4a02c2606dac1f54c76714e59982d5944e752dab40a5c1a76a1c07" - ], - "base_hash": "60010b5dc9747b508924f9fb8ce98021d3e693d0d5d36b2dc5df30e19d139680", - "partial_pubkey": "a704f7774c7028fc39093b640d3018bc55f1251d27194c506a5a41c96168f8dd8ff69118b8fd789f7897759006184686", - "message_cleartext": "24610b589ba77b506b3383798cc0fc1f7be64b777fee6bdab14775e1a0ade524", - "message_signature": "b85d4eeb42ce695ec5e77c4cc331b78cd3d4dc6fb46443e8894f690d6ef71d25e7a95036e5ac82315819db7c652056f0110ec66777516f38f714c865755f7f92d151d73f3bb523a7c2dd8e18f8936f79144cdc11eea0fc2dccadd70e786da7e4" - }, - { - "base_pubkeys": [ - "b69dc72c248437bd0be7d47554dd50221c0ac29be805e3c2d8e4f21bef4f2b6b60cd9a109559d5df4cae5da635c7879a", - "aa293fe7860e32db8a3e2c9578feeb554131aaa72d6993872780ac554735874fa8f3dbced82cfc6bf677ca79ce3c7340", - "ab10e5407fa7680f660cdca8b75f8e40dcd098b8b5b0f88525e3f2389dc6ffb470c9b6d377c3d1e30715283a713b07c2" - ], - "base_hash": "6d6573585c6852d96b241e8d13c002db19dd4beb950537dab7570949a0816d1c", - "partial_pubkey": "92683da0e3c25b8872f6371f4e98deeba6693b3778fd4d1818e13e16acf9bd6ad88d5f1b3514a7894afd538335bafdfa", - "message_cleartext": "24610b589ba77b506b3383798cc0fc1f7be64b777fee6bdab14775e1a0ade524", - "message_signature": "abf6c2c2593052744af15be101bfe78c2db57b263426a0fc9d3f679b74a712822d900fe024919d302a89adb61980320f03f6041224177f4e6528a9c13bd1e749de29fef2d7062259bf89cbe7f6ef509dbb632c872aea5b42d538a72490270dea" - }, - { - "base_pubkeys": [ - "95d1e771b6df3d1a33ecf2c49cedea4b1eeb0477b89cc6debf397b79d64bd6f6c9d3d2dd86fd0e8f803a3825bfc3fb67", - "8a9413aed9e746000747c10ea1d9fe1287aa86511569a941948590b97dd624d3f642118f0a39d5d11eebadd19ee24751", - "b5566edea3b7bd7d30efa402dc7d3047530dacc67a2fd808caf7700897664166c45cc57a7a08278fff1f4265d20c72fb" - ], - "base_hash": "ade24f5d9b58c6808d33dd373c8ffc0283c7ad77cc480745b175a69de3ad9bfb", - "partial_pubkey": "89584e99056382c7a9adcf43f0848f50729605bb3e2f4b750e66163f6d4c5d5f45ce94a450bff03f39c4225b689a8f2e", - "message_cleartext": "24610b589ba77b506b3383798cc0fc1f7be64b777fee6bdab14775e1a0ade524", - "message_signature": "8f1128a29b431e9035fcf35d04d8671a749040043987cc927f4bb929df963d02057c9cc83ea787189786c6683dcea0070db7892555e8b67766e62d335ca67d5534fbb8019430bd2b976aab78ae8d26b140c8277c1450ded65194142c5c4a1332" - } - ], - "aggregate_pubkey": "88c9ee145c355e09eeedcda02b1d3df449e3c4a4ee1d975779ad07697fd7343b8ca5050d0241724b5afd325daa6e0224" - } -} \ No newline at end of file diff --git a/test_vectors/finalization/wrong-partial-pubkey.json b/test_vectors/finalization/wrong-partial-pubkey.json deleted file mode 100644 index ab5b278..0000000 --- a/test_vectors/finalization/wrong-partial-pubkey.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "params": { - "cmd_extra_args": "--type=finalization --json-schema-file=spec/finalization_spec.json", - "expected_exit_code": 1 - }, - "scenario": { - "settings": { - "n": 5, - "k": 3, - "gen_id": "89f0996b33ca953e0cf9b70a5f84cb50" - }, - "generations": [ - { - "base_pubkeys": [ - "a1da3158e0a5305eb258b969dcfd24a4e5ea4d6665524619017a6a1ce7710cca1ccce4370d051fd55d401ba58b12a3b5", - "a51fd02773126ede1ad38afcd257c5f5b081995539f26bdc2011286cc62557ba0d375f46e193b4e216c31f16dd79847a", - "a6cbadf14b777d22aed8697d9f41e45fd870a46286f6aae93d0c5e924d74f2cac339863e7ad1d9bf3f9e82164e1ea2ee" - ], - "base_hash": "2438b43279a7420444af83aa840e381f4e9a79c87f82c125d1475152ce42e57f", - "partial_pubkey": "b18bf51b1dcb8689f7b1b5ac5d58b291c525516287f75c562a689e7b2f91633a30fa56740eb7c0e83603cf0f2eb91117", - "message_cleartext": "24610b589ba77b506b3383798cc0fc1f7be64b777fee6bdab14775e1a0ade524", - "message_signature": "8b59de1b727bd246e9a3fac4d753d096dc64b53d3d4093662f72e73fdc696f9fd2d637999cba289c2c5ab65eab3fd0df000ced0e0bb6503a0b805d864d2a56e1e5df1009b076a15e37d61ca00d30db1d216ba0ca7176dfb23005a9d67e5d18fc" - }, - { - "base_pubkeys": [ - "aecd2f577ec702eea283509932d7a326c67dad9c855a8449b110eff282dcc5ca238a33275e68d13c448f3832305d3a64", - "8f23a43d59befd88446a60b1a07e0936798c5bc0e8ff3ba9b014c40c6af05765fc6ba5da1056fb923122651212135408", - "9987347a1c9bd2a0a9f570c38e52a19f7b70d93a4b24a25dbf7cbaee1fcd4831521a0ffab46d066d7cdbc6f4f88364db" - ], - "base_hash": "24611a5ee2ba7b6cfb08f67999198f0c7b14614bffee78a75f17751e881d1924", - "partial_pubkey": "ab568c1d019cf509c792c1b425fd07f9e56baec261c2732156c25c3681b8fe1b0ca0f167ca2e2f2ed55945b43dea5724", - "message_cleartext": "24610b589ba77b506b3383798cc0fc1f7be64b777fee6bdab14775e1a0ade524", - "message_signature": "889284c45f33033ae131f6bcbcea7bc21a068f1c203cca0e4cf18d44738bd7870c13d33a0108f29758f3256b371a21ba0158b97b44d0af503f5cd55588311368be5994088e20d0c26752f5b06a91bf483ca3cafde5b471345d597cfc245909d8" - }, - { - "base_pubkeys": [ - "96de876b5ddfb0166fff60c301d5ef341203d611305b6a765b9e5ba412f7fe5847ae8603f61e01491ccd2c9649d06979", - "928d9467050dc2aeb3ae02aaba43e242bc6723a3e8870cba3877fac2f2cc7d6eacf1d0b39bfc7e49201c0c32360bcf3d", - "8c2cbe9e71ea75225a360b3451e8e876af5005fb8c4a02c2606dac1f54c76714e59982d5944e752dab40a5c1a76a1c07" - ], - "base_hash": "60010b5dc9747b508924f9fb8ce98021d3e693d0d5d36b2dc5df30e19d139680", - "partial_pubkey": "a704f7774c7028fc39093b640d3018bc55f1251d27194c506a5a41c96168f8dd8ff69118b8fd789f7897759006184686", - "message_cleartext": "24610b589ba77b506b3383798cc0fc1f7be64b777fee6bdab14775e1a0ade524", - "message_signature": "b85d4eeb42ce695ec5e77c4cc331b78cd3d4dc6fb46443e8894f690d6ef71d25e7a95036e5ac82315819db7c652056f0110ec66777516f38f714c865755f7f92d151d73f3bb523a7c2dd8e18f8936f79144cdc11eea0fc2dccadd70e786da7e4" - }, - { - "base_pubkeys": [ - "b69dc72c248437bd0be7d47554dd50221c0ac29be805e3c2d8e4f21bef4f2b6b60cd9a109559d5df4cae5da635c7879a", - "aa293fe7860e32db8a3e2c9578feeb554131aaa72d6993872780ac554735874fa8f3dbced82cfc6bf677ca79ce3c7340", - "ab10e5407fa7680f660cdca8b75f8e40dcd098b8b5b0f88525e3f2389dc6ffb470c9b6d377c3d1e30715283a713b07c2" - ], - "base_hash": "6d6573585c6852d96b241e8d13c002db19dd4beb950537dab7570949a0816d1c", - "partial_pubkey": "92683da0e3c25b8872f6371f4e98deeba6693b3778fd4d1818e13e16acf9bd6ad88d5f1b3514a7894afd538335bafdfa", - "message_cleartext": "24610b589ba77b506b3383798cc0fc1f7be64b777fee6bdab14775e1a0ade524", - "message_signature": "abf6c2c2593052744af15be101bfe78c2db57b263426a0fc9d3f679b74a712822d900fe024919d302a89adb61980320f03f6041224177f4e6528a9c13bd1e749de29fef2d7062259bf89cbe7f6ef509dbb632c872aea5b42d538a72490270dea" - }, - { - "base_pubkeys": [ - "95d1e771b6df3d1a33ecf2c49cedea4b1eeb0477b89cc6debf397b79d64bd6f6c9d3d2dd86fd0e8f803a3825bfc3fb67", - "8a9413aed9e746000747c10ea1d9fe1287aa86511569a941948590b97dd624d3f642118f0a39d5d11eebadd19ee24751", - "b5566edea3b7bd7d30efa402dc7d3047530dacc67a2fd808caf7700897664166c45cc57a7a08278fff1f4265d20c72fb" - ], - "base_hash": "ade24f5d9b58c6808d33dd373c8ffc0283c7ad77cc480745b175a69de3ad9bfb", - "partial_pubkey": "89584e99056382c7a9adcf43f0848f50729605bb3e2f4b750e66163f6d4c5d5f45ce94a450bff03f39c4225b689a8f2e", - "message_cleartext": "24610b589ba77b506b3383798cc0fc1f7be64b777fee6bdab14775e1a0ade524", - "message_signature": "8f1128a29b431e9035fcf35d04d8671a749040043987cc927f4bb929df963d02057c9cc83ea787189786c6683dcea0070db7892555e8b67766e62d335ca67d5534fbb8019430bd2b976aab78ae8d26b140c8277c1450ded65194142c5c4a1332" - } - ], - "aggregate_pubkey": "88c9ee145c355e09eeedcda02b1d3df449e3c4a4ee1d975779ad07697fd7343b8ca5050d0241724b5afd325daa6e0224" - } -} \ No newline at end of file diff --git a/test_vectors/finalization/zero-k.json b/test_vectors/finalization/zero-k.json deleted file mode 100644 index 268c1db..0000000 --- a/test_vectors/finalization/zero-k.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "params": { - "cmd_extra_args": "--type=finalization --json-schema-file=spec/finalization_spec.json", - "expected_exit_code": 1 - }, - "scenario": { - "settings": { - "n": 5, - "k": 0, - "gen_id": "89f0996b33ca953e0cf9b70a5f84cb50" - }, - "generations": [ - { - "base_pubkeys": [ - "a1da3158e0a5305eb258b969dcfd24a4e5ea4d6665524619017a6a1ce7710cca1ccce4370d051fd55d401ba58b12a3b5", - "a51fd02773126ede1ad38afcd257c5f5b081995539f26bdc2011286cc62557ba0d375f46e193b4e216c31f16dd79847a", - "a6cbadf14b777d22aed8697d9f41e45fd870a46286f6aae93d0c5e924d74f2cac339863e7ad1d9bf3f9e82164e1ea2ee" - ], - "base_hash": "2438b43279a7420444af83aa840e381f4e9a79c87f82c125d1475152ce42e57f", - "partial_pubkey": "b18bf51b1dcb8689f7b1b5ac5d58b291c525516287f75c562a689e7b2f91633a30fa56740eb7c0e83603cf0f2eb91117", - "message_cleartext": "24610b589ba77b506b3383798cc0fc1f7be64b777fee6bdab14775e1a0ade524", - "message_signature": "8b59de1b727bd246e9a3fac4d753d096dc64b53d3d4093662f72e73fdc696f9fd2d637999cba289c2c5ab65eab3fd0df000ced0e0bb6503a0b805d864d2a56e1e5df1009b076a15e37d61ca00d30db1d216ba0ca7176dfb23005a9d67e5d18fc" - }, - { - "base_pubkeys": [ - "aecd2f577ec702eea283509932d7a326c67dad9c855a8449b110eff282dcc5ca238a33275e68d13c448f3832305d3a64", - "8f23a43d59befd88446a60b1a07e0936798c5bc0e8ff3ba9b014c40c6af05765fc6ba5da1056fb923122651212135408", - "9987347a1c9bd2a0a9f570c38e52a19f7b70d93a4b24a25dbf7cbaee1fcd4831521a0ffab46d066d7cdbc6f4f88364db" - ], - "base_hash": "24611a5ee2ba7b6cfb08f67999198f0c7b14614bffee78a75f17751e881d1924", - "partial_pubkey": "acce3b29357595b9827a4471df73b96587df525b8ea5476cee6d85146ab2008e78a4a58d40890e4c166a5a34c17b2955", - "message_cleartext": "24610b589ba77b506b3383798cc0fc1f7be64b777fee6bdab14775e1a0ade524", - "message_signature": "889284c45f33033ae131f6bcbcea7bc21a068f1c203cca0e4cf18d44738bd7870c13d33a0108f29758f3256b371a21ba0158b97b44d0af503f5cd55588311368be5994088e20d0c26752f5b06a91bf483ca3cafde5b471345d597cfc245909d8" - }, - { - "base_pubkeys": [ - "96de876b5ddfb0166fff60c301d5ef341203d611305b6a765b9e5ba412f7fe5847ae8603f61e01491ccd2c9649d06979", - "928d9467050dc2aeb3ae02aaba43e242bc6723a3e8870cba3877fac2f2cc7d6eacf1d0b39bfc7e49201c0c32360bcf3d", - "8c2cbe9e71ea75225a360b3451e8e876af5005fb8c4a02c2606dac1f54c76714e59982d5944e752dab40a5c1a76a1c07" - ], - "base_hash": "60010b5dc9747b508924f9fb8ce98021d3e693d0d5d36b2dc5df30e19d139680", - "partial_pubkey": "a704f7774c7028fc39093b640d3018bc55f1251d27194c506a5a41c96168f8dd8ff69118b8fd789f7897759006184686", - "message_cleartext": "24610b589ba77b506b3383798cc0fc1f7be64b777fee6bdab14775e1a0ade524", - "message_signature": "b85d4eeb42ce695ec5e77c4cc331b78cd3d4dc6fb46443e8894f690d6ef71d25e7a95036e5ac82315819db7c652056f0110ec66777516f38f714c865755f7f92d151d73f3bb523a7c2dd8e18f8936f79144cdc11eea0fc2dccadd70e786da7e4" - }, - { - "base_pubkeys": [ - "b69dc72c248437bd0be7d47554dd50221c0ac29be805e3c2d8e4f21bef4f2b6b60cd9a109559d5df4cae5da635c7879a", - "aa293fe7860e32db8a3e2c9578feeb554131aaa72d6993872780ac554735874fa8f3dbced82cfc6bf677ca79ce3c7340", - "ab10e5407fa7680f660cdca8b75f8e40dcd098b8b5b0f88525e3f2389dc6ffb470c9b6d377c3d1e30715283a713b07c2" - ], - "base_hash": "6d6573585c6852d96b241e8d13c002db19dd4beb950537dab7570949a0816d1c", - "partial_pubkey": "92683da0e3c25b8872f6371f4e98deeba6693b3778fd4d1818e13e16acf9bd6ad88d5f1b3514a7894afd538335bafdfa", - "message_cleartext": "24610b589ba77b506b3383798cc0fc1f7be64b777fee6bdab14775e1a0ade524", - "message_signature": "abf6c2c2593052744af15be101bfe78c2db57b263426a0fc9d3f679b74a712822d900fe024919d302a89adb61980320f03f6041224177f4e6528a9c13bd1e749de29fef2d7062259bf89cbe7f6ef509dbb632c872aea5b42d538a72490270dea" - }, - { - "base_pubkeys": [ - "95d1e771b6df3d1a33ecf2c49cedea4b1eeb0477b89cc6debf397b79d64bd6f6c9d3d2dd86fd0e8f803a3825bfc3fb67", - "8a9413aed9e746000747c10ea1d9fe1287aa86511569a941948590b97dd624d3f642118f0a39d5d11eebadd19ee24751", - "b5566edea3b7bd7d30efa402dc7d3047530dacc67a2fd808caf7700897664166c45cc57a7a08278fff1f4265d20c72fb" - ], - "base_hash": "ade24f5d9b58c6808d33dd373c8ffc0283c7ad77cc480745b175a69de3ad9bfb", - "partial_pubkey": "89584e99056382c7a9adcf43f0848f50729605bb3e2f4b750e66163f6d4c5d5f45ce94a450bff03f39c4225b689a8f2e", - "message_cleartext": "24610b589ba77b506b3383798cc0fc1f7be64b777fee6bdab14775e1a0ade524", - "message_signature": "8f1128a29b431e9035fcf35d04d8671a749040043987cc927f4bb929df963d02057c9cc83ea787189786c6683dcea0070db7892555e8b67766e62d335ca67d5534fbb8019430bd2b976aab78ae8d26b140c8277c1450ded65194142c5c4a1332" - } - ], - "aggregate_pubkey": "88c9ee145c355e09eeedcda02b1d3df449e3c4a4ee1d975779ad07697fd7343b8ca5050d0241724b5afd325daa6e0224" - } -} \ No newline at end of file diff --git a/test_vectors/share/bad_commitment_hash.json b/test_vectors/share/bad_commitment_hash.json deleted file mode 100644 index 374ec80..0000000 --- a/test_vectors/share/bad_commitment_hash.json +++ /dev/null @@ -1,44 +0,0 @@ -{ - "params": { - "cmd_extra_args": "--type=share", - "expected_exit_code": 0 - }, - "scenario": { - "base_hashes": [ - "0bcbd9433dfde67e0dd7c501e255a2bdc31d6968e51b1290e6ef7d264911eb91", - "13602b274436a91ffa3bd3eb16927e011d81fe9e2e9673769a0152acbafe3e33", - "1ae7975df76c5df0c301d390d82180ff536f5dbbf78942e53b4ec9e9e1497a1a", - "54effb7411607a0c6484cb68cad8a30fd03e24c0fd561c5c8a4c5baa0509f9b3", - "dbd8b546ab29bfa87aa9d568e8315037695e8802fa0e0c9ed9009fe8a0fde402" - ], - "initial_commitment": { - "settings": { - "n": 5, - "k": 3, - "gen_id": "89f0996b33ca953e0cf9b70a5f84cb50" - }, - "vvector": { - "base_pubkeys": [ - "92cad77a95432bc1030d81b5465cb69be672c1dd0da752230bf8112f8449b03149e7fa208a6fae460a9f0a1d5bd175e9", - "98876a81fe982573ec5f986956bf9bf0bcb5349d95c3c8da0aefd05a49fea6215f59b0696f906547baed90ab245804e8", - "ad2c4e5b631fbded449ede4dca2d040b9c7eae58d1e73b3050486c1ba22c15a92d9ff13c05c356f974447e4fca84864a" - ] - }, - "hash": "13602b274436a91ffa3bd3eb16927e011d81fe9e2e9673769a0152acbafe3e33" - }, - "seeds_exchange_commitment": { - "initial_commitment_hash": "13602b274436a91ffa3bd3eb16927e011d81fe9e2e9673769a0152acbafe3e33", - "ssecret": { - "shared_secret": "5c31b041dcb4fad98c15bf14e77f398f7eaa84ec794911e6dc8c7aa0a20d4ee4", - "dst_base_hash": "0bcbd9433dfde67e0dd7c501e255a2bdc31d6968e51b1290e6ef7d264911eb91", - "src_share_id": "0200000000000000000000000000000000000000000000000000000000000000", - "dst_share_id": "0100000000000000000000000000000000000000000000000000000000000000" - }, - "commitment": { - "hash": "788a1ee2a97e6a3b0d284e70c1142a87c98662a37d9856b510ef97cfc76556d0", - "pubkey": "90346f9c5f3c09d96ea02acd0220daa8459f03866ed938c798e3716e42c7e033c9a7ef66a10f83af06d5c00b508c6d0f", - "signature": "8c7075d8613db04218c7fef5b5646e6d819993932877ac6b4ffed320c412579c1f040df772ce41792e01f892e7a7de87090159598ce000fe7dccd9a1c386f6b144704fd565650174076017d102f6fdcc3c8101f1cd77d1b80712c3e2c4e7c465" - } - } - } -} \ No newline at end of file diff --git a/test_vectors/share/dvt-keygen-1-to-2.json b/test_vectors/share/dvt-keygen-1-to-2.json deleted file mode 100644 index 8194d24..0000000 --- a/test_vectors/share/dvt-keygen-1-to-2.json +++ /dev/null @@ -1,44 +0,0 @@ -{ - "params": { - "cmd_extra_args": "--type=share", - "expected_exit_code": 1 - }, - "scenario": { - "base_hashes": [ - "0e17a5caf76e3a32463f43988710ba2d85a729387847f5f30487a213b76a3610", - "7a7d9cb2388a9c35a00ed72d26fb0f754d7b058d6c6612ef4db60c3bfd894b4a", - "aab55053176028063a024e6dba0e7e37bb8c01765b68bdd828475a3ed2de90ee", - "acaa302da559f993badf18aa4a20efa9e0ead9a18628a46b3935f0dcac3c199a", - "dd9c1415e6edf174c5daf7e5ab95d180d97f350f58625c92327803c3a9173de7" - ], - "initial_commitment": { - "settings": { - "n": 5, - "k": 3, - "gen_id": "89f0996b33ca953e0cf9b70a5f84cb50" - }, - "vvector": { - "base_pubkeys": [ - "b2ed5a0f141f24d10ba90ecf3b6b444a504087eec002dd03dfeec9b626e13965a7c70b6f1db4930be38bda88012c9543", - "b7052db58a90d300373aed2137a0d08c93b54863cc05d7b802a01d9178fd101c271cf98d14dce81186d48406c4d36a82", - "921b3907ad4c1d707137d0988f8db0c3bd49e619dabd621e37bb10b0eb09ad2fe8745c14605a4125c8111bde069733f0" - ] - }, - "hash": "0e17a5caf76e3a32463f43988710ba2d85a729387847f5f30487a213b76a3610" - }, - "seeds_exchange_commitment": { - "initial_commitment_hash": "0e17a5caf76e3a32463f43988710ba2d85a729387847f5f30487a213b76a3610", - "ssecret": { - "shared_secret": "5effda15144ee06ab2541bcc1dbb60347a5eda7ead02a2b387d047b7a4b245f6", - "dst_base_hash": "7a7d9cb2388a9c35a00ed72d26fb0f754d7b058d6c6612ef4db60c3bfd894b4a", - "src_share_id": "0100000000000000000000000000000000000000000000000000000000000000", - "dst_share_id": "0200000000000000000000000000000000000000000000000000000000000000" - }, - "commitment": { - "hash": "1284d01441722a62dcfc0f358f3934cf3f8a48bffa35036b1b62671af165bb05", - "pubkey": "a5bb44bc57124bf138572365870180400440581c519b6893796983a263fe2efe9f16fdb935e4990cfb0a03cb115ef8dc", - "signature": "b48509122ea6e5ca695d441a0e8e8c78d147b1f319aead09871ce00ce077d405214e4b07a1bba9d48a96830cfb66f2460779c81ee49909ffc5115bedbbd99eef04326af54a44926b086f2bada5a3e83e03b441631852042889d2a81ed7cbdade" - } - } - } -} \ No newline at end of file diff --git a/test_vectors/share/dvt-keygen-from-1-to-2-bad-dst-base-hash.json b/test_vectors/share/dvt-keygen-from-1-to-2-bad-dst-base-hash.json deleted file mode 100644 index 163b127..0000000 --- a/test_vectors/share/dvt-keygen-from-1-to-2-bad-dst-base-hash.json +++ /dev/null @@ -1,44 +0,0 @@ -{ - "params": { - "cmd_extra_args": "--type=share", - "expected_exit_code": 0 - }, - "scenario": { - "base_hashes": [ - "0e17a5caf76e3a32463f43988710ba2d85a729387847f5f30487a213b76a3610", - "7a7d9cb2388a9c35a00ed72d26fb0f754d7b058d6c6612ef4db60c3bfd894b4a", - "aab55053176028063a024e6dba0e7e37bb8c01765b68bdd828475a3ed2de90ee", - "acaa302da559f993badf18aa4a20efa9e0ead9a18628a46b3935f0dcac3c199a", - "dd9c1415e6edf174c5daf7e5ab95d180d97f350f58625c92327803c3a9173de7" - ], - "initial_commitment": { - "settings": { - "n": 5, - "k": 3, - "gen_id": "89f0996b33ca953e0cf9b70a5f84cb50" - }, - "vvector": { - "base_pubkeys": [ - "b2ed5a0f141f24d10ba90ecf3b6b444a504087eec002dd03dfeec9b626e13965a7c70b6f1db4930be38bda88012c9543", - "b7052db58a90d300373aed2137a0d08c93b54863cc05d7b802a01d9178fd101c271cf98d14dce81186d48406c4d36a82", - "921b3907ad4c1d707137d0988f8db0c3bd49e619dabd621e37bb10b0eb09ad2fe8745c14605a4125c8111bde069733f0" - ] - }, - "hash": "0e17a5caf76e3a32463f43988710ba2d85a729387847f5f30487a213b76a3610" - }, - "seeds_exchange_commitment": { - "initial_commitment_hash": "0e17a5caf76e3a32463f43988710ba2d85a729387847f5f30487a213b76a3610", - "ssecret": { - "shared_secret": "0000000000000000000000000000000000000000000000000000000000000000", - "dst_base_hash": "9cfe3338c678d9fb8e8ef9e8841bbcfd5e941dcd2698e654b12373a0894c2980", - "src_share_id": "0100000000000000000000000000000000000000000000000000000000000000", - "dst_share_id": "0200000000000000000000000000000000000000000000000000000000000000" - }, - "commitment": { - "hash": "f8de990eb08e3977f200d04e6e54a836bb97b167021ef93e3bdb1c59278cc73f", - "pubkey": "a5bb44bc57124bf138572365870180400440581c519b6893796983a263fe2efe9f16fdb935e4990cfb0a03cb115ef8dc", - "signature": "b3b9acff0c8e5352b0612feb88c757e5ef3aa6f55d49ec2e23cbbac14180ca8fd36173fdbb389352530c2654152097ff02e4852bf0707b311cf356ea20734fc29b48975272485095579ad286acc2a4eba8aaf7b08fc911afe01be4001314b64f" - } - } - } -} \ No newline at end of file diff --git a/test_vectors/share/dvt-keygen-from-1-to-2-bad-genid.json b/test_vectors/share/dvt-keygen-from-1-to-2-bad-genid.json deleted file mode 100644 index e1d1296..0000000 --- a/test_vectors/share/dvt-keygen-from-1-to-2-bad-genid.json +++ /dev/null @@ -1,45 +0,0 @@ - -{ - "params": { - "cmd_extra_args": "--type=share", - "expected_exit_code": 1 - }, - "scenario": { - "base_hashes": [ - "0e17a5caf76e3a32463f43988710ba2d85a729387847f5f30487a213b76a3610", - "7a7d9cb2388a9c35a00ed72d26fb0f754d7b058d6c6612ef4db60c3bfd894b4a", - "aab55053176028063a024e6dba0e7e37bb8c01765b68bdd828475a3ed2de90ee", - "acaa302da559f993badf18aa4a20efa9e0ead9a18628a46b3935f0dcac3c199a", - "dd9c1415e6edf174c5daf7e5ab95d180d97f350f58625c92327803c3a9173de7" - ], - "initial_commitment": { - "settings": { - "n": 5, - "k": 3, - "gen_id": "6261642d67656e65726174696f6e2d69" - }, - "vvector": { - "base_pubkeys": [ - "b2ed5a0f141f24d10ba90ecf3b6b444a504087eec002dd03dfeec9b626e13965a7c70b6f1db4930be38bda88012c9543", - "b7052db58a90d300373aed2137a0d08c93b54863cc05d7b802a01d9178fd101c271cf98d14dce81186d48406c4d36a82", - "921b3907ad4c1d707137d0988f8db0c3bd49e619dabd621e37bb10b0eb09ad2fe8745c14605a4125c8111bde069733f0" - ] - }, - "hash": "e920199cc836e76f6e954976957eb41cd330edc083f6acbf7c9e003c2f9984ab" - }, - "seeds_exchange_commitment": { - "initial_commitment_hash": "e920199cc836e76f6e954976957eb41cd330edc083f6acbf7c9e003c2f9984ab", - "ssecret": { - "shared_secret": "5effda15144ee06ab2541bcc1dbb60347a5eda7ead02a2b387d047b7a4b245f6", - "dst_base_hash": "7a7d9cb2388a9c35a00ed72d26fb0f754d7b058d6c6612ef4db60c3bfd894b4a", - "src_share_id": "0100000000000000000000000000000000000000000000000000000000000000", - "dst_share_id": "0200000000000000000000000000000000000000000000000000000000000000" - }, - "commitment": { - "hash": "c81be366dec3ebf1fa03f29c805170ed65ee3f7cd532db656e124490b1e89c14", - "pubkey": "a5bb44bc57124bf138572365870180400440581c519b6893796983a263fe2efe9f16fdb935e4990cfb0a03cb115ef8dc", - "signature": "80255585c3b0eac00ed52d49b8119a17ac4d39351667a0ccce98a94740aea072c2fe14ddcea54accec777ae1e29aa8b30df43b8059012ee5469fd52ae271fb1a2379694fea8305b0afc451fab44e6a9e48f1a4f889ad881ea5376ae8ea49750e" - } - } -} -} \ No newline at end of file diff --git a/test_vectors/share/dvt-keygen-from-1-to-2-bad-hash.json b/test_vectors/share/dvt-keygen-from-1-to-2-bad-hash.json deleted file mode 100644 index 0d2b444..0000000 --- a/test_vectors/share/dvt-keygen-from-1-to-2-bad-hash.json +++ /dev/null @@ -1,44 +0,0 @@ -{ - "params": { - "cmd_extra_args": "--type=share", - "expected_exit_code": 1 - }, - "scenario": { - "base_hashes": [ - "0e17a5caf76e3a32463f43988710ba2d85a729387847f5f30487a213b76a3610", - "7a7d9cb2388a9c35a00ed72d26fb0f754d7b058d6c6612ef4db60c3bfd894b4a", - "aab55053176028063a024e6dba0e7e37bb8c01765b68bdd828475a3ed2de90ee", - "acaa302da559f993badf18aa4a20efa9e0ead9a18628a46b3935f0dcac3c199a", - "dd9c1415e6edf174c5daf7e5ab95d180d97f350f58625c92327803c3a9173de7" - ], - "initial_commitment": { - "settings": { - "n": 5, - "k": 3, - "gen_id": "89f0996b33ca953e0cf9b70a5f84cb50" - }, - "vvector": { - "base_pubkeys": [ - "b2ed5a0f141f24d10ba90ecf3b6b444a504087eec002dd03dfeec9b626e13965a7c70b6f1db4930be38bda88012c9543", - "b7052db58a90d300373aed2137a0d08c93b54863cc05d7b802a01d9178fd101c271cf98d14dce81186d48406c4d36a82", - "921b3907ad4c1d707137d0988f8db0c3bd49e619dabd621e37bb10b0eb09ad2fe8745c14605a4125c8111bde069733f0" - ] - }, - "hash": "0e17a5caf76e3a32463f43988710ba2d85a729387847f5f30487a213b76a3610" - }, - "seeds_exchange_commitment": { - "initial_commitment_hash": "0e17a5caf76e3a32463f43988710ba2d85a729387847f5f30487a213b76a3610", - "ssecret": { - "shared_secret": "5effda15144ee06ab2541bcc1dbb60347a5eda7ead02a2b387d047b7a4b245f6", - "dst_base_hash": "7a7d9cb2388a9c35a00ed72d26fb0f754d7b058d6c6612ef4db60c3bfd894b4a", - "src_share_id": "0100000000000000000000000000000000000000000000000000000000000000", - "dst_share_id": "0200000000000000000000000000000000000000000000000000000000000000" - }, - "commitment": { - "hash": "1384d01441722a62dcfc0f358f3934cf3f8a48bffa35036b1b62671af165bb05", - "pubkey": "a5bb44bc57124bf138572365870180400440581c519b6893796983a263fe2efe9f16fdb935e4990cfb0a03cb115ef8dc", - "signature": "b48509122ea6e5ca695d441a0e8e8c78d147b1f319aead09871ce00ce077d405214e4b07a1bba9d48a96830cfb66f2460779c81ee49909ffc5115bedbbd99eef04326af54a44926b086f2bada5a3e83e03b441631852042889d2a81ed7cbdade" - } - } - } -} \ No newline at end of file diff --git a/test_vectors/share/dvt-keygen-from-1-to-2-bad-secret-key.json b/test_vectors/share/dvt-keygen-from-1-to-2-bad-secret-key.json deleted file mode 100644 index 1845441..0000000 --- a/test_vectors/share/dvt-keygen-from-1-to-2-bad-secret-key.json +++ /dev/null @@ -1,44 +0,0 @@ -{ - "params": { - "cmd_extra_args": "--type=share", - "expected_exit_code": 0 - }, - "scenario": { - "base_hashes": [ - "0e17a5caf76e3a32463f43988710ba2d85a729387847f5f30487a213b76a3610", - "7a7d9cb2388a9c35a00ed72d26fb0f754d7b058d6c6612ef4db60c3bfd894b4a", - "aab55053176028063a024e6dba0e7e37bb8c01765b68bdd828475a3ed2de90ee", - "acaa302da559f993badf18aa4a20efa9e0ead9a18628a46b3935f0dcac3c199a", - "dd9c1415e6edf174c5daf7e5ab95d180d97f350f58625c92327803c3a9173de7" - ], - "initial_commitment": { - "settings": { - "n": 5, - "k": 3, - "gen_id": "89f0996b33ca953e0cf9b70a5f84cb50" - }, - "vvector": { - "base_pubkeys": [ - "b2ed5a0f141f24d10ba90ecf3b6b444a504087eec002dd03dfeec9b626e13965a7c70b6f1db4930be38bda88012c9543", - "b7052db58a90d300373aed2137a0d08c93b54863cc05d7b802a01d9178fd101c271cf98d14dce81186d48406c4d36a82", - "921b3907ad4c1d707137d0988f8db0c3bd49e619dabd621e37bb10b0eb09ad2fe8745c14605a4125c8111bde069733f0" - ] - }, - "hash": "0e17a5caf76e3a32463f43988710ba2d85a729387847f5f30487a213b76a3610" - }, - "seeds_exchange_commitment": { - "initial_commitment_hash": "0e17a5caf76e3a32463f43988710ba2d85a729387847f5f30487a213b76a3610", - "ssecret": { - "shared_secret": "0000000000000000000000000000000000000000000000000000000000000000", - "dst_base_hash": "7a7d9cb2388a9c35a00ed72d26fb0f754d7b058d6c6612ef4db60c3bfd894b4a", - "src_share_id": "0100000000000000000000000000000000000000000000000000000000000000", - "dst_share_id": "0200000000000000000000000000000000000000000000000000000000000000" - }, - "commitment": { - "hash": "74fb237832bb387d012f8bc15e38ba472ea9a6875306020293b34490e342cc70", - "pubkey": "a5bb44bc57124bf138572365870180400440581c519b6893796983a263fe2efe9f16fdb935e4990cfb0a03cb115ef8dc", - "signature": "abb92103231e1973816d551e218edb4e3964e05b0c7b120242f9cca7b6927d2fb2e62a973d2e012714fc88920ca62b97043ce4df484cb22f8b4781fa9c7898492efcfcda43086984431577abd18f84c48d24f238731a751fd0765118dc955c71" - } - } - } -} \ No newline at end of file diff --git a/test_vectors/share/dvt-keygen-from-1-to-2-bad-signature.json b/test_vectors/share/dvt-keygen-from-1-to-2-bad-signature.json deleted file mode 100644 index b31cbc7..0000000 --- a/test_vectors/share/dvt-keygen-from-1-to-2-bad-signature.json +++ /dev/null @@ -1,44 +0,0 @@ -{ - "params": { - "cmd_extra_args": "--type=share", - "expected_exit_code": 1 - }, - "scenario": { - "base_hashes": [ - "0e17a5caf76e3a32463f43988710ba2d85a729387847f5f30487a213b76a3610", - "7a7d9cb2388a9c35a00ed72d26fb0f754d7b058d6c6612ef4db60c3bfd894b4a", - "aab55053176028063a024e6dba0e7e37bb8c01765b68bdd828475a3ed2de90ee", - "acaa302da559f993badf18aa4a20efa9e0ead9a18628a46b3935f0dcac3c199a", - "dd9c1415e6edf174c5daf7e5ab95d180d97f350f58625c92327803c3a9173de7" - ], - "initial_commitment": { - "settings": { - "n": 5, - "k": 3, - "gen_id": "89f0996b33ca953e0cf9b70a5f84cb50" - }, - "vvector": { - "base_pubkeys": [ - "b2ed5a0f141f24d10ba90ecf3b6b444a504087eec002dd03dfeec9b626e13965a7c70b6f1db4930be38bda88012c9543", - "b7052db58a90d300373aed2137a0d08c93b54863cc05d7b802a01d9178fd101c271cf98d14dce81186d48406c4d36a82", - "921b3907ad4c1d707137d0988f8db0c3bd49e619dabd621e37bb10b0eb09ad2fe8745c14605a4125c8111bde069733f0" - ] - }, - "hash": "0e17a5caf76e3a32463f43988710ba2d85a729387847f5f30487a213b76a3610" - }, - "seeds_exchange_commitment": { - "initial_commitment_hash": "0e17a5caf76e3a32463f43988710ba2d85a729387847f5f30487a213b76a3610", - "ssecret": { - "shared_secret": "5effda15144ee06ab2541bcc1dbb60347a5eda7ead02a2b387d047b7a4b245f6", - "dst_base_hash": "7a7d9cb2388a9c35a00ed72d26fb0f754d7b058d6c6612ef4db60c3bfd894b4a", - "src_share_id": "0100000000000000000000000000000000000000000000000000000000000000", - "dst_share_id": "0200000000000000000000000000000000000000000000000000000000000000" - }, - "commitment": { - "hash": "1284d01441722a62dcfc0f358f3934cf3f8a48bffa35036b1b62671af165bb05", - "pubkey": "a5bb44bc57124bf138572365870180400440581c519b6893796983a263fe2efe9f16fdb935e4990cfb0a03cb115ef8dc", - "signature": "a09ba2f361aece19599aa7d9946763308044bd4a75f4a732d22444c870fd58c2fa448efd9a7c51c5fcd7a126499c7f3213ba75552deb6596bb6b5c5009873281492cf875d3e1f228872d34b226eb9d539b3e0e39ba5ae308ae1b666e77cd6ad4" - } - } - } -} \ No newline at end of file diff --git a/test_vectors/share/dvt-keygen-from-1-to-2-fewer-base-hashes.json b/test_vectors/share/dvt-keygen-from-1-to-2-fewer-base-hashes.json deleted file mode 100644 index 9425b64..0000000 --- a/test_vectors/share/dvt-keygen-from-1-to-2-fewer-base-hashes.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "params": { - "cmd_extra_args": "--type=share", - "expected_exit_code": 1 - }, - "scenario": { - "base_hashes": [ - "0e17a5caf76e3a32463f43988710ba2d85a729387847f5f30487a213b76a3610", - "7a7d9cb2388a9c35a00ed72d26fb0f754d7b058d6c6612ef4db60c3bfd894b4a", - "aab55053176028063a024e6dba0e7e37bb8c01765b68bdd828475a3ed2de90ee", - "acaa302da559f993badf18aa4a20efa9e0ead9a18628a46b3935f0dcac3c199a" - ], - "initial_commitment": { - "settings": { - "n": 5, - "k": 3, - "gen_id": "89f0996b33ca953e0cf9b70a5f84cb50" - }, - "vvector": { - "base_pubkeys": [ - "b2ed5a0f141f24d10ba90ecf3b6b444a504087eec002dd03dfeec9b626e13965a7c70b6f1db4930be38bda88012c9543", - "b7052db58a90d300373aed2137a0d08c93b54863cc05d7b802a01d9178fd101c271cf98d14dce81186d48406c4d36a82", - "921b3907ad4c1d707137d0988f8db0c3bd49e619dabd621e37bb10b0eb09ad2fe8745c14605a4125c8111bde069733f0" - ] - }, - "hash": "0e17a5caf76e3a32463f43988710ba2d85a729387847f5f30487a213b76a3610" - }, - "seeds_exchange_commitment": { - "initial_commitment_hash": "0e17a5caf76e3a32463f43988710ba2d85a729387847f5f30487a213b76a3610", - "ssecret": { - "shared_secret": "5effda15144ee06ab2541bcc1dbb60347a5eda7ead02a2b387d047b7a4b245f6", - "dst_base_hash": "7a7d9cb2388a9c35a00ed72d26fb0f754d7b058d6c6612ef4db60c3bfd894b4a", - "src_share_id": "0100000000000000000000000000000000000000000000000000000000000000", - "dst_share_id": "0200000000000000000000000000000000000000000000000000000000000000" - }, - "commitment": { - "hash": "1284d01441722a62dcfc0f358f3934cf3f8a48bffa35036b1b62671af165bb05", - "pubkey": "a5bb44bc57124bf138572365870180400440581c519b6893796983a263fe2efe9f16fdb935e4990cfb0a03cb115ef8dc", - "signature": "b48509122ea6e5ca695d441a0e8e8c78d147b1f319aead09871ce00ce077d405214e4b07a1bba9d48a96830cfb66f2460779c81ee49909ffc5115bedbbd99eef04326af54a44926b086f2bada5a3e83e03b441631852042889d2a81ed7cbdade" - } - } - } -} \ No newline at end of file diff --git a/test_vectors/share/dvt-keygen-from-1-to-2-fewer-base-pubkeys.json b/test_vectors/share/dvt-keygen-from-1-to-2-fewer-base-pubkeys.json deleted file mode 100644 index df5f7b1..0000000 --- a/test_vectors/share/dvt-keygen-from-1-to-2-fewer-base-pubkeys.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "params": { - "cmd_extra_args": "--type=share", - "expected_exit_code": 1 - }, - "scenario": { - "base_hashes": [ - "0e17a5caf76e3a32463f43988710ba2d85a729387847f5f30487a213b76a3610", - "7a7d9cb2388a9c35a00ed72d26fb0f754d7b058d6c6612ef4db60c3bfd894b4a", - "aab55053176028063a024e6dba0e7e37bb8c01765b68bdd828475a3ed2de90ee", - "acaa302da559f993badf18aa4a20efa9e0ead9a18628a46b3935f0dcac3c199a", - "dd9c1415e6edf174c5daf7e5ab95d180d97f350f58625c92327803c3a9173de7" - ], - "initial_commitment": { - "settings": { - "n": 5, - "k": 2, - "gen_id": "89f0996b33ca953e0cf9b70a5f84cb50" - }, - "vvector": { - "base_pubkeys": [ - "b2ed5a0f141f24d10ba90ecf3b6b444a504087eec002dd03dfeec9b626e13965a7c70b6f1db4930be38bda88012c9543", - "b7052db58a90d300373aed2137a0d08c93b54863cc05d7b802a01d9178fd101c271cf98d14dce81186d48406c4d36a82" - ] - }, - "hash": "23e9eaa49d62f3d67fa8ebe2435c4c4f8eab21596c3b9e4f71fee13f8fc5c79f" - }, - "seeds_exchange_commitment": { - "initial_commitment_hash": "23e9eaa49d62f3d67fa8ebe2435c4c4f8eab21596c3b9e4f71fee13f8fc5c79f", - "ssecret": { - "shared_secret": "5effda15144ee06ab2541bcc1dbb60347a5eda7ead02a2b387d047b7a4b245f6", - "dst_base_hash": "7a7d9cb2388a9c35a00ed72d26fb0f754d7b058d6c6612ef4db60c3bfd894b4a", - "src_share_id": "0100000000000000000000000000000000000000000000000000000000000000", - "dst_share_id": "0200000000000000000000000000000000000000000000000000000000000000" - }, - "commitment": { - "hash": "57a8cd9d019be1b3b6da4895b9dac1c4f32d7f9c6cde43b92daff971352672a8", - "pubkey": "a5bb44bc57124bf138572365870180400440581c519b6893796983a263fe2efe9f16fdb935e4990cfb0a03cb115ef8dc", - "signature": "b689b9c50949b4a59e1bb2eaaf4f6248bcddf31debde5e9c7d606e535b2d51f0f169ffe0b1b1d08f0e188184247c0f5305809411f45a2adace92b1858a9838a5ed2cb02d620b05cd3227c2affa1fa9a120b29e9031dd70b9ce8e042d9cdfc23d" - } - } - } -} \ No newline at end of file diff --git a/test_vectors/share/dvt-keygen-from-1-to-2-more-base-hashes.json b/test_vectors/share/dvt-keygen-from-1-to-2-more-base-hashes.json deleted file mode 100644 index 4c2d3be..0000000 --- a/test_vectors/share/dvt-keygen-from-1-to-2-more-base-hashes.json +++ /dev/null @@ -1,45 +0,0 @@ -{ - "params": { - "cmd_extra_args": "--type=share", - "expected_exit_code": 1 - }, - "scenario": { - "base_hashes": [ - "0e17a5caf76e3a32463f43988710ba2d85a729387847f5f30487a213b76a3610", - "7a7d9cb2388a9c35a00ed72d26fb0f754d7b058d6c6612ef4db60c3bfd894b4a", - "aab55053176028063a024e6dba0e7e37bb8c01765b68bdd828475a3ed2de90ee", - "acaa302da559f993badf18aa4a20efa9e0ead9a18628a46b3935f0dcac3c199a", - "dd9c1415e6edf174c5daf7e5ab95d180d97f350f58625c92327803c3a9173de7", - "b60c8176c4d29d258965ea396601dbbbaa51a9ce647ef534e390d87826269f49" - ], - "initial_commitment": { - "settings": { - "n": 5, - "k": 3, - "gen_id": "89f0996b33ca953e0cf9b70a5f84cb50" - }, - "vvector": { - "base_pubkeys": [ - "b2ed5a0f141f24d10ba90ecf3b6b444a504087eec002dd03dfeec9b626e13965a7c70b6f1db4930be38bda88012c9543", - "b7052db58a90d300373aed2137a0d08c93b54863cc05d7b802a01d9178fd101c271cf98d14dce81186d48406c4d36a82", - "921b3907ad4c1d707137d0988f8db0c3bd49e619dabd621e37bb10b0eb09ad2fe8745c14605a4125c8111bde069733f0" - ] - }, - "hash": "0e17a5caf76e3a32463f43988710ba2d85a729387847f5f30487a213b76a3610" - }, - "seeds_exchange_commitment": { - "initial_commitment_hash": "0e17a5caf76e3a32463f43988710ba2d85a729387847f5f30487a213b76a3610", - "ssecret": { - "shared_secret": "5effda15144ee06ab2541bcc1dbb60347a5eda7ead02a2b387d047b7a4b245f6", - "dst_base_hash": "7a7d9cb2388a9c35a00ed72d26fb0f754d7b058d6c6612ef4db60c3bfd894b4a", - "src_share_id": "0100000000000000000000000000000000000000000000000000000000000000", - "dst_share_id": "0200000000000000000000000000000000000000000000000000000000000000" - }, - "commitment": { - "hash": "1284d01441722a62dcfc0f358f3934cf3f8a48bffa35036b1b62671af165bb05", - "pubkey": "a5bb44bc57124bf138572365870180400440581c519b6893796983a263fe2efe9f16fdb935e4990cfb0a03cb115ef8dc", - "signature": "b48509122ea6e5ca695d441a0e8e8c78d147b1f319aead09871ce00ce077d405214e4b07a1bba9d48a96830cfb66f2460779c81ee49909ffc5115bedbbd99eef04326af54a44926b086f2bada5a3e83e03b441631852042889d2a81ed7cbdade" - } - } - } -} \ No newline at end of file diff --git a/test_vectors/share/dvt-keygen-from-1-to-2-more-base-pubkeys.json b/test_vectors/share/dvt-keygen-from-1-to-2-more-base-pubkeys.json deleted file mode 100644 index 1aedb95..0000000 --- a/test_vectors/share/dvt-keygen-from-1-to-2-more-base-pubkeys.json +++ /dev/null @@ -1,45 +0,0 @@ -{ - "params": { - "cmd_extra_args": "--type=share", - "expected_exit_code": 1 - }, - "scenario": { - "base_hashes": [ - "0e17a5caf76e3a32463f43988710ba2d85a729387847f5f30487a213b76a3610", - "7a7d9cb2388a9c35a00ed72d26fb0f754d7b058d6c6612ef4db60c3bfd894b4a", - "aab55053176028063a024e6dba0e7e37bb8c01765b68bdd828475a3ed2de90ee", - "acaa302da559f993badf18aa4a20efa9e0ead9a18628a46b3935f0dcac3c199a", - "dd9c1415e6edf174c5daf7e5ab95d180d97f350f58625c92327803c3a9173de7" - ], - "initial_commitment": { - "settings": { - "n": 5, - "k": 4, - "gen_id": "89f0996b33ca953e0cf9b70a5f84cb50" - }, - "vvector": { - "base_pubkeys": [ - "b2ed5a0f141f24d10ba90ecf3b6b444a504087eec002dd03dfeec9b626e13965a7c70b6f1db4930be38bda88012c9543", - "b7052db58a90d300373aed2137a0d08c93b54863cc05d7b802a01d9178fd101c271cf98d14dce81186d48406c4d36a82", - "921b3907ad4c1d707137d0988f8db0c3bd49e619dabd621e37bb10b0eb09ad2fe8745c14605a4125c8111bde069733f0", - "b2ed5a0f141f24d10ba90ecf3b6b444a504087eec002dd03dfeec9b626e13965a7c70b6f1db4930be38bda88012c9543" - ] - }, - "hash": "b6e9c5cc25a93cd98d0960703e2db61a669a97397bec318815ca610e2942561b" - }, - "seeds_exchange_commitment": { - "initial_commitment_hash": "b6e9c5cc25a93cd98d0960703e2db61a669a97397bec318815ca610e2942561b", - "ssecret": { - "shared_secret": "5effda15144ee06ab2541bcc1dbb60347a5eda7ead02a2b387d047b7a4b245f6", - "dst_base_hash": "7a7d9cb2388a9c35a00ed72d26fb0f754d7b058d6c6612ef4db60c3bfd894b4a", - "src_share_id": "0100000000000000000000000000000000000000000000000000000000000000", - "dst_share_id": "0200000000000000000000000000000000000000000000000000000000000000" - }, - "commitment": { - "hash": "232fde930d26b6390e3c2ddb022ea68a40f0aca9a4cac680b514d579b4f2c6bb", - "pubkey": "a5bb44bc57124bf138572365870180400440581c519b6893796983a263fe2efe9f16fdb935e4990cfb0a03cb115ef8dc", - "signature": "8d95fe755fabe06e6640d191e3dc0c2d3f820eef1bbb7ef98fc1d331d4d73dd08b75334952812ef0ef0756a14b6188d505a099525c7f1a183bce48f9f37dc98d6d43a4f0022ad8844ac366936d4429fca13749aea380ad0c611827fa3ba62de9" - } - } - } -} \ No newline at end of file diff --git a/test_vectors/share/dvt-keygen-from-1-to-2-n-less-than-k.json b/test_vectors/share/dvt-keygen-from-1-to-2-n-less-than-k.json deleted file mode 100644 index 3f318b9..0000000 --- a/test_vectors/share/dvt-keygen-from-1-to-2-n-less-than-k.json +++ /dev/null @@ -1,44 +0,0 @@ -{ - "params": { - "cmd_extra_args": "--type=share", - "expected_exit_code": 1 - }, - "scenario": { - "base_hashes": [ - "0e17a5caf76e3a32463f43988710ba2d85a729387847f5f30487a213b76a3610", - "7a7d9cb2388a9c35a00ed72d26fb0f754d7b058d6c6612ef4db60c3bfd894b4a", - "aab55053176028063a024e6dba0e7e37bb8c01765b68bdd828475a3ed2de90ee", - "acaa302da559f993badf18aa4a20efa9e0ead9a18628a46b3935f0dcac3c199a", - "dd9c1415e6edf174c5daf7e5ab95d180d97f350f58625c92327803c3a9173de7" - ], - "initial_commitment": { - "settings": { - "n": 2, - "k": 3, - "gen_id": "89f0996b33ca953e0cf9b70a5f84cb50" - }, - "vvector": { - "base_pubkeys": [ - "b2ed5a0f141f24d10ba90ecf3b6b444a504087eec002dd03dfeec9b626e13965a7c70b6f1db4930be38bda88012c9543", - "b7052db58a90d300373aed2137a0d08c93b54863cc05d7b802a01d9178fd101c271cf98d14dce81186d48406c4d36a82", - "921b3907ad4c1d707137d0988f8db0c3bd49e619dabd621e37bb10b0eb09ad2fe8745c14605a4125c8111bde069733f0" - ] - }, - "hash": "5d3be9c57e3db3d2bd86865878f2d31e3cc691ef3bf91a0fd29af9dd92c8ebdd" - }, - "seeds_exchange_commitment": { - "initial_commitment_hash": "5d3be9c57e3db3d2bd86865878f2d31e3cc691ef3bf91a0fd29af9dd92c8ebdd", - "ssecret": { - "shared_secret": "5effda15144ee06ab2541bcc1dbb60347a5eda7ead02a2b387d047b7a4b245f6", - "dst_base_hash": "7a7d9cb2388a9c35a00ed72d26fb0f754d7b058d6c6612ef4db60c3bfd894b4a", - "src_share_id": "0100000000000000000000000000000000000000000000000000000000000000", - "dst_share_id": "0200000000000000000000000000000000000000000000000000000000000000" - }, - "commitment": { - "hash": "6d74dab596f531b4d120d72bedf1618b8bc9f4b66405256756020f3bb7902fd2", - "pubkey": "a5bb44bc57124bf138572365870180400440581c519b6893796983a263fe2efe9f16fdb935e4990cfb0a03cb115ef8dc", - "signature": "b931ff64f24d2a7f5780cc8da5ff007d92edf83921fd4797f450380197a4e093e2d1561c86480585506a9fa8cb2aff2c04f8cc4a5c768b4038b860215542c9bf7560f1aafb654ffc6ae5047c4495af82538aab8c4ff8bdc6bf9b241f3c1e2c83" - } - } - } -} \ No newline at end of file diff --git a/test_vectors/share/dvt-keygen-from-1-to-2-zero-k.json b/test_vectors/share/dvt-keygen-from-1-to-2-zero-k.json deleted file mode 100644 index bdab5a0..0000000 --- a/test_vectors/share/dvt-keygen-from-1-to-2-zero-k.json +++ /dev/null @@ -1,44 +0,0 @@ -{ - "params": { - "cmd_extra_args": "--type=share", - "expected_exit_code": 1 - }, - "scenario": { - "base_hashes": [ - "0e17a5caf76e3a32463f43988710ba2d85a729387847f5f30487a213b76a3610", - "7a7d9cb2388a9c35a00ed72d26fb0f754d7b058d6c6612ef4db60c3bfd894b4a", - "aab55053176028063a024e6dba0e7e37bb8c01765b68bdd828475a3ed2de90ee", - "acaa302da559f993badf18aa4a20efa9e0ead9a18628a46b3935f0dcac3c199a", - "dd9c1415e6edf174c5daf7e5ab95d180d97f350f58625c92327803c3a9173de7" - ], - "initial_commitment": { - "settings": { - "n": 2, - "k": 0, - "gen_id": "89f0996b33ca953e0cf9b70a5f84cb50" - }, - "vvector": { - "base_pubkeys": [ - "b2ed5a0f141f24d10ba90ecf3b6b444a504087eec002dd03dfeec9b626e13965a7c70b6f1db4930be38bda88012c9543", - "b7052db58a90d300373aed2137a0d08c93b54863cc05d7b802a01d9178fd101c271cf98d14dce81186d48406c4d36a82", - "921b3907ad4c1d707137d0988f8db0c3bd49e619dabd621e37bb10b0eb09ad2fe8745c14605a4125c8111bde069733f0" - ] - }, - "hash": "51c6f738399a2d058b25bbd7b5824dfe28a2acba72afb1ea413dce591279104b" - }, - "seeds_exchange_commitment": { - "initial_commitment_hash": "51c6f738399a2d058b25bbd7b5824dfe28a2acba72afb1ea413dce591279104b", - "ssecret": { - "shared_secret": "5effda15144ee06ab2541bcc1dbb60347a5eda7ead02a2b387d047b7a4b245f6", - "dst_base_hash": "7a7d9cb2388a9c35a00ed72d26fb0f754d7b058d6c6612ef4db60c3bfd894b4a", - "src_share_id": "0100000000000000000000000000000000000000000000000000000000000000", - "dst_share_id": "0200000000000000000000000000000000000000000000000000000000000000" - }, - "commitment": { - "hash": "d13eecdcdaa11818309164325fd12290141680e7e1375a7b00c97c5be19b300e", - "pubkey": "a5bb44bc57124bf138572365870180400440581c519b6893796983a263fe2efe9f16fdb935e4990cfb0a03cb115ef8dc", - "signature": "af92fa2c1dfd0c07132f47a7372d377f32343b2ad19a9d39ffe9e7575d6746f39afa58b39a73fff5f74dd643daacd199118f02e6f2703695bd152425f2c5d1e5682913b50c2107391dc83b310f0eb3f20efbf029e5cbc931c6ad5173b70a7b41" - } - } - } -} \ No newline at end of file diff --git a/test_vectors/share/initial_commitment_hash_missmatch.json b/test_vectors/share/initial_commitment_hash_missmatch.json deleted file mode 100644 index 2c006ac..0000000 --- a/test_vectors/share/initial_commitment_hash_missmatch.json +++ /dev/null @@ -1,44 +0,0 @@ -{ - "params": { - "cmd_extra_args": "--type=share", - "expected_exit_code": 1 - }, - "scenario": { - "base_hashes": [ - "0bcbd9433dfde67e0dd7c501e255a2bdc31d6968e51b1290e6ef7d264911eb91", - "13602b274436a91ffa3bd3eb16927e011d81fe9e2e9673769a0152acbafe3e33", - "1ae7975df76c5df0c301d390d82180ff536f5dbbf78942e53b4ec9e9e1497a1a", - "54effb7411607a0c6484cb68cad8a30fd03e24c0fd561c5c8a4c5baa0509f9b3", - "dbd8b546ab29bfa87aa9d568e8315037695e8802fa0e0c9ed9009fe8a0fde402" - ], - "initial_commitment": { - "settings": { - "n": 5, - "k": 3, - "gen_id": "89f0996b33ca953e0cf9b70a5f84cb50" - }, - "vvector": { - "base_pubkeys": [ - "92cad77a95432bc1030d81b5465cb69be672c1dd0da752230bf8112f8449b03149e7fa208a6fae460a9f0a1d5bd175e9", - "98876a81fe982573ec5f986956bf9bf0bcb5349d95c3c8da0aefd05a49fea6215f59b0696f906547baed90ab245804e8", - "ad2c4e5b631fbded449ede4dca2d040b9c7eae58d1e73b3050486c1ba22c15a92d9ff13c05c356f974447e4fca84864a" - ] - }, - "hash": "1ae7975df76c5df0c301d390d82180ff536f5dbbf78942e53b4ec9e9e1497a1a" - }, - "seeds_exchange_commitment": { - "initial_commitment_hash": "13602b274436a91ffa3bd3eb16927e011d81fe9e2e9673769a0152acbafe3e33", - "ssecret": { - "shared_secret": "5c31b041dcb4fad98c15bf14e77f398f7eaa84ec794911e6dc8c7aa0a20d4ee4", - "dst_base_hash": "0bcbd9433dfde67e0dd7c501e255a2bdc31d6968e51b1290e6ef7d264911eb91", - "src_share_id": "0200000000000000000000000000000000000000000000000000000000000000", - "dst_share_id": "0100000000000000000000000000000000000000000000000000000000000000" - }, - "commitment": { - "hash": "2f901d5cec8722e44afd59e94d0a56bf1506a72a0a60709920aad714d1a2ece0", - "pubkey": "90346f9c5f3c09d96ea02acd0220daa8459f03866ed938c798e3716e42c7e033c9a7ef66a10f83af06d5c00b508c6d0f", - "signature": "a9c08eff13742f78f1e5929888f223b5b5b12b4836b5417c5a135cf24f4e2a4c66a6cdef91be3098b7e7a6a63903b61302e3cf2b8653101da245cf01a8d82b25debe7b18a3a2eb1778f8628fd2c59c8687f6e048a31250fbc2804c20043b8443" - } - } - } -} \ No newline at end of file diff --git a/test_vectors/share/invalid_secret.json b/test_vectors/share/invalid_secret.json deleted file mode 100644 index b831aea..0000000 --- a/test_vectors/share/invalid_secret.json +++ /dev/null @@ -1,44 +0,0 @@ -{ - "params": { - "cmd_extra_args": "--type=share", - "expected_exit_code": 0 - }, - "scenario": { - "base_hashes": [ - "0bcbd9433dfde67e0dd7c501e255a2bdc31d6968e51b1290e6ef7d264911eb91", - "13602b274436a91ffa3bd3eb16927e011d81fe9e2e9673769a0152acbafe3e33", - "1ae7975df76c5df0c301d390d82180ff536f5dbbf78942e53b4ec9e9e1497a1a", - "54effb7411607a0c6484cb68cad8a30fd03e24c0fd561c5c8a4c5baa0509f9b3", - "dbd8b546ab29bfa87aa9d568e8315037695e8802fa0e0c9ed9009fe8a0fde402" - ], - "initial_commitment": { - "settings": { - "n": 5, - "k": 3, - "gen_id": "89f0996b33ca953e0cf9b70a5f84cb50" - }, - "vvector": { - "base_pubkeys": [ - "92cad77a95432bc1030d81b5465cb69be672c1dd0da752230bf8112f8449b03149e7fa208a6fae460a9f0a1d5bd175e9", - "98876a81fe982573ec5f986956bf9bf0bcb5349d95c3c8da0aefd05a49fea6215f59b0696f906547baed90ab245804e8", - "ad2c4e5b631fbded449ede4dca2d040b9c7eae58d1e73b3050486c1ba22c15a92d9ff13c05c356f974447e4fca84864a" - ] - }, - "hash": "13602b274436a91ffa3bd3eb16927e011d81fe9e2e9673769a0152acbafe3e33" - }, - "seeds_exchange_commitment": { - "initial_commitment_hash": "13602b274436a91ffa3bd3eb16927e011d81fe9e2e9673769a0152acbafe3e33", - "ssecret": { - "shared_secret": "6006686f1053699a05881dfedce7f62668917baeb4f02e5799d902e8db647176", - "dst_base_hash": "0bcbd9433dfde67e0dd7c501e255a2bdc31d6968e51b1290e6ef7d264911eb91", - "src_share_id": "0200000000000000000000000000000000000000000000000000000000000000", - "dst_share_id": "0100000000000000000000000000000000000000000000000000000000000000" - }, - "commitment": { - "hash": "4d7ac13ae7965dececd53ba4063e0ac4a6463bf9510816cca90fe614730f9e9b", - "pubkey": "90346f9c5f3c09d96ea02acd0220daa8459f03866ed938c798e3716e42c7e033c9a7ef66a10f83af06d5c00b508c6d0f", - "signature": "b7c126b82a8eeab769fd5bff196b2938d0cbba3b972a6eb1a42d420453065ace76fc421ec21f8113ebd034eca684b20208e828de3377b510d992a152e6c9bced9ad3ef8891de8e37ec87d6b264e5352990b3259b0ef0f555911e4f5c2d9820f1" - } - } - } -} \ No newline at end of file diff --git a/test_vectors/share/seeds-commitment-from-1-to-2-bad-hash.json b/test_vectors/share/seeds-commitment-from-1-to-2-bad-hash.json new file mode 100644 index 0000000..313fdeb --- /dev/null +++ b/test_vectors/share/seeds-commitment-from-1-to-2-bad-hash.json @@ -0,0 +1,37 @@ +{ + "params": { + "cmd_extra_args": "execute --type=bad-share --json-schema-file=spec/share_exchange_spec.json", + "expected_exit_code": 1 + }, + "scenario": { + "base_hashes": [ + "2cc6b806b3215210122226629b0d0872484d43754668bb90c4d1b5e401377890", + "6568dd285df3bf23d7697217273249841707951516e67c4954243d5d80ad23da", + "bdf6925e576dc08431ac6a590a64263c5ac3d8e5bd88113ac5777762fabd71a6" + ], + "initial_commitment": { + "settings": { + "gen_id": "8d17e61db7b774d16cb165662a8c2c4a", + "n": 3, + "k": 2 + }, + "base_pubkeys": [ + "a6602d395e8fbf67269a41a208613e42795c9e66d365dd87287162e31484cb0f84efaec36220714022bbd296e5357bc9", + "8a64f40fe2e976d01227b4085b42421c8c4c3549f539b8eb7ecad8833b5855ae1994126bfb9b6ff56a5f131f407462d8" + ], + "hash": "2cc6b806b3215210122226629b0d0872484d43754668bb90c4d1b5e401377890" + }, + "seeds_exchange_commitment": { + "initial_commitment_hash": "2cc6b806b3215210122226629b0d0872484d43754668bb90c4d1b5e401377890", + "ssecret": { + "shared_secret": "5d63e52532bd275e3c9db983d25bf5db2d1434bfdab683946e8b335abf921141", + "dst_base_hash": "6568dd285df3bf23d7697217273249841707951516e67c4954243d5d80ad23da" + }, + "commitment": { + "hash": "bdd3fca06ab3ec34a29aaa2c04cbf1085f0cbc886994d8cf0814b4ba4c625559", + "pubkey": "97928b112d00235a7452dcc4bc1107c64b9a674082dbaeb4aed6d3f82b7e896b68c2eec79f410e3ebcc3aa939bb38909", + "signature": "a98df58a92c09cf421f39b5b24fa4546fbdfb35621dea65b5223d7aa0d5e4767aacf1d077b39e9970b06fc95e05366ac0b1996a93145a889b14a9f58d56c4255de9af6fc8094ecdc247b9e7a2a4617b36610750d0fb9622a67d1b188f5a1cd28" + } + } + } +} diff --git a/test_vectors/share/seeds-commitment-from-1-to-2-bad-pubkey.json b/test_vectors/share/seeds-commitment-from-1-to-2-bad-pubkey.json new file mode 100644 index 0000000..94913b7 --- /dev/null +++ b/test_vectors/share/seeds-commitment-from-1-to-2-bad-pubkey.json @@ -0,0 +1,37 @@ +{ + "params": { + "cmd_extra_args": "execute --type=bad-share --json-schema-file=spec/share_exchange_spec.json", + "expected_exit_code": 1 + }, + "scenario": { + "base_hashes": [ + "2cc6b806b3215210122226629b0d0872484d43754668bb90c4d1b5e401377890", + "6568dd285df3bf23d7697217273249841707951516e67c4954243d5d80ad23da", + "bdf6925e576dc08431ac6a590a64263c5ac3d8e5bd88113ac5777762fabd71a6" + ], + "initial_commitment": { + "settings": { + "gen_id": "8d17e61db7b774d16cb165662a8c2c4a", + "n": 3, + "k": 2 + }, + "base_pubkeys": [ + "a6602d395e8fbf67269a41a208613e42795c9e66d365dd87287162e31484cb0f84efaec36220714022bbd296e5357bc9", + "8a64f40fe2e976d01227b4085b42421c8c4c3549f539b8eb7ecad8833b5855ae1994126bfb9b6ff56a5f131f407462d8" + ], + "hash": "2cc6b806b3215210122226629b0d0872484d43754668bb90c4d1b5e401377890" + }, + "seeds_exchange_commitment": { + "initial_commitment_hash": "2cc6b806b3215210122226629b0d0872484d43754668bb90c4d1b5e401377890", + "ssecret": { + "shared_secret": "5d63e52532bd275e3c9db983d25bf5db2d1434bfdab683946e8b335abf921141", + "dst_base_hash": "6568dd285df3bf23d7697217273249841707951516e67c4954243d5d80ad23da" + }, + "commitment": { + "hash": "bcd3fca06ab3ec34a29aaa2c04cbf1085f0cbc886994d8cf0814b4ba4c625559", + "pubkey": "92904028dc7b49aa16959935b514ae79febac6cfe7ff29de7be4aad04963010fc9f8013dc686093af7982cecd3bf267e", + "signature": "a98df58a92c09cf421f39b5b24fa4546fbdfb35621dea65b5223d7aa0d5e4767aacf1d077b39e9970b06fc95e05366ac0b1996a93145a889b14a9f58d56c4255de9af6fc8094ecdc247b9e7a2a4617b36610750d0fb9622a67d1b188f5a1cd28" + } + } + } +} diff --git a/test_vectors/share/seeds-commitment-from-1-to-2-bad-secret-key.json b/test_vectors/share/seeds-commitment-from-1-to-2-bad-secret-key.json new file mode 100644 index 0000000..feea7cb --- /dev/null +++ b/test_vectors/share/seeds-commitment-from-1-to-2-bad-secret-key.json @@ -0,0 +1,37 @@ +{ + "params": { + "cmd_extra_args": "execute --type=bad-share --json-schema-file=spec/share_exchange_spec.json", + "expected_exit_code": 0 + }, + "scenario": { + "base_hashes": [ + "2cc6b806b3215210122226629b0d0872484d43754668bb90c4d1b5e401377890", + "6568dd285df3bf23d7697217273249841707951516e67c4954243d5d80ad23da", + "bdf6925e576dc08431ac6a590a64263c5ac3d8e5bd88113ac5777762fabd71a6" + ], + "initial_commitment": { + "settings": { + "gen_id": "8d17e61db7b774d16cb165662a8c2c4a", + "n": 3, + "k": 2 + }, + "base_pubkeys": [ + "a6602d395e8fbf67269a41a208613e42795c9e66d365dd87287162e31484cb0f84efaec36220714022bbd296e5357bc9", + "8a64f40fe2e976d01227b4085b42421c8c4c3549f539b8eb7ecad8833b5855ae1994126bfb9b6ff56a5f131f407462d8" + ], + "hash": "2cc6b806b3215210122226629b0d0872484d43754668bb90c4d1b5e401377890" + }, + "seeds_exchange_commitment": { + "initial_commitment_hash": "2cc6b806b3215210122226629b0d0872484d43754668bb90c4d1b5e401377890", + "ssecret": { + "shared_secret": "0534c4653920476d7b67e9061831444084c65b4be49497f482828ec5be07d180", + "dst_base_hash": "6568dd285df3bf23d7697217273249841707951516e67c4954243d5d80ad23da" + }, + "commitment": { + "hash": "9c081628733bfe27402405aed945648bc627f9294d0e11c5e5f2b7557f1c629e", + "pubkey": "97928b112d00235a7452dcc4bc1107c64b9a674082dbaeb4aed6d3f82b7e896b68c2eec79f410e3ebcc3aa939bb38909", + "signature": "a5da23c0abb392e12f11e87b60e012a181406670f89644bb5b343ad383be02025547abd26f886602c0714aeaa8f7cdf110a5efc71b0e7cb2e6a0a6c82ce8fdb93b85f2817f49d03b0b0e96e4264b3f517e62a064364cde1df4f6f73b0a1ea44c" + } + } + } +} diff --git a/test_vectors/share/seeds-commitment-from-1-to-2-bad-signature.json b/test_vectors/share/seeds-commitment-from-1-to-2-bad-signature.json new file mode 100644 index 0000000..f8ac8a5 --- /dev/null +++ b/test_vectors/share/seeds-commitment-from-1-to-2-bad-signature.json @@ -0,0 +1,37 @@ +{ + "params": { + "cmd_extra_args": "execute --type=bad-share --json-schema-file=spec/share_exchange_spec.json", + "expected_exit_code": 1 + }, + "scenario": { + "base_hashes": [ + "2cc6b806b3215210122226629b0d0872484d43754668bb90c4d1b5e401377890", + "6568dd285df3bf23d7697217273249841707951516e67c4954243d5d80ad23da", + "bdf6925e576dc08431ac6a590a64263c5ac3d8e5bd88113ac5777762fabd71a6" + ], + "initial_commitment": { + "settings": { + "gen_id": "8d17e61db7b774d16cb165662a8c2c4a", + "n": 3, + "k": 2 + }, + "base_pubkeys": [ + "a6602d395e8fbf67269a41a208613e42795c9e66d365dd87287162e31484cb0f84efaec36220714022bbd296e5357bc9", + "8a64f40fe2e976d01227b4085b42421c8c4c3549f539b8eb7ecad8833b5855ae1994126bfb9b6ff56a5f131f407462d8" + ], + "hash": "2cc6b806b3215210122226629b0d0872484d43754668bb90c4d1b5e401377890" + }, + "seeds_exchange_commitment": { + "initial_commitment_hash": "2cc6b806b3215210122226629b0d0872484d43754668bb90c4d1b5e401377890", + "ssecret": { + "shared_secret": "5d63e52532bd275e3c9db983d25bf5db2d1434bfdab683946e8b335abf921141", + "dst_base_hash": "6568dd285df3bf23d7697217273249841707951516e67c4954243d5d80ad23da" + }, + "commitment": { + "hash": "bcd3fca06ab3ec34a29aaa2c04cbf1085f0cbc886994d8cf0814b4ba4c625559", + "pubkey": "97928b112d00235a7452dcc4bc1107c64b9a674082dbaeb4aed6d3f82b7e896b68c2eec79f410e3ebcc3aa939bb38909", + "signature": "a98df58a92c09cf421f39b5b24fa4546fbdfb35621dea65b5223d7aa0d5e4767aacf1d077b39e9970b06fc95e05366ac06174bc0e0c0ced9538d5bc9ce6fe90991bb568be5b86805f1897552482a8f57c745878336fe5d26a2a633e22dad6a9d" + } + } + } +} diff --git a/test_vectors/share/seeds-commitment-from-1-to-2-fewer-base-hashes.json b/test_vectors/share/seeds-commitment-from-1-to-2-fewer-base-hashes.json new file mode 100644 index 0000000..443694d --- /dev/null +++ b/test_vectors/share/seeds-commitment-from-1-to-2-fewer-base-hashes.json @@ -0,0 +1,36 @@ +{ + "params": { + "cmd_extra_args": "execute --type=bad-share --json-schema-file=spec/share_exchange_spec.json", + "expected_exit_code": 101 + }, + "scenario": { + "base_hashes": [ + "2cc6b806b3215210122226629b0d0872484d43754668bb90c4d1b5e401377890", + "6568dd285df3bf23d7697217273249841707951516e67c4954243d5d80ad23da" + ], + "initial_commitment": { + "settings": { + "gen_id": "8d17e61db7b774d16cb165662a8c2c4a", + "n": 3, + "k": 2 + }, + "base_pubkeys": [ + "a6602d395e8fbf67269a41a208613e42795c9e66d365dd87287162e31484cb0f84efaec36220714022bbd296e5357bc9", + "8a64f40fe2e976d01227b4085b42421c8c4c3549f539b8eb7ecad8833b5855ae1994126bfb9b6ff56a5f131f407462d8" + ], + "hash": "2cc6b806b3215210122226629b0d0872484d43754668bb90c4d1b5e401377890" + }, + "seeds_exchange_commitment": { + "initial_commitment_hash": "2cc6b806b3215210122226629b0d0872484d43754668bb90c4d1b5e401377890", + "ssecret": { + "shared_secret": "5d63e52532bd275e3c9db983d25bf5db2d1434bfdab683946e8b335abf921141", + "dst_base_hash": "6568dd285df3bf23d7697217273249841707951516e67c4954243d5d80ad23da" + }, + "commitment": { + "hash": "bcd3fca06ab3ec34a29aaa2c04cbf1085f0cbc886994d8cf0814b4ba4c625559", + "pubkey": "97928b112d00235a7452dcc4bc1107c64b9a674082dbaeb4aed6d3f82b7e896b68c2eec79f410e3ebcc3aa939bb38909", + "signature": "a98df58a92c09cf421f39b5b24fa4546fbdfb35621dea65b5223d7aa0d5e4767aacf1d077b39e9970b06fc95e05366ac0b1996a93145a889b14a9f58d56c4255de9af6fc8094ecdc247b9e7a2a4617b36610750d0fb9622a67d1b188f5a1cd28" + } + } + } +} diff --git a/test_vectors/share/seeds-commitment-from-1-to-2-more-base-hashes.json b/test_vectors/share/seeds-commitment-from-1-to-2-more-base-hashes.json new file mode 100644 index 0000000..094634f --- /dev/null +++ b/test_vectors/share/seeds-commitment-from-1-to-2-more-base-hashes.json @@ -0,0 +1,38 @@ +{ + "params": { + "cmd_extra_args": "execute --type=bad-share --json-schema-file=spec/share_exchange_spec.json", + "expected_exit_code": 101 + }, + "scenario": { + "base_hashes": [ + "2cc6b806b3215210122226629b0d0872484d43754668bb90c4d1b5e401377890", + "6568dd285df3bf23d7697217273249841707951516e67c4954243d5d80ad23da", + "bdf6925e576dc08431ac6a590a64263c5ac3d8e5bd88113ac5777762fabd71a6", + "b60c8176c4d29d258965ea396601dbbbaa51a9ce647ef534e390d87826269f49" + ], + "initial_commitment": { + "settings": { + "gen_id": "8d17e61db7b774d16cb165662a8c2c4a", + "n": 3, + "k": 2 + }, + "base_pubkeys": [ + "a6602d395e8fbf67269a41a208613e42795c9e66d365dd87287162e31484cb0f84efaec36220714022bbd296e5357bc9", + "8a64f40fe2e976d01227b4085b42421c8c4c3549f539b8eb7ecad8833b5855ae1994126bfb9b6ff56a5f131f407462d8" + ], + "hash": "2cc6b806b3215210122226629b0d0872484d43754668bb90c4d1b5e401377890" + }, + "seeds_exchange_commitment": { + "initial_commitment_hash": "2cc6b806b3215210122226629b0d0872484d43754668bb90c4d1b5e401377890", + "ssecret": { + "shared_secret": "5d63e52532bd275e3c9db983d25bf5db2d1434bfdab683946e8b335abf921141", + "dst_base_hash": "6568dd285df3bf23d7697217273249841707951516e67c4954243d5d80ad23da" + }, + "commitment": { + "hash": "bcd3fca06ab3ec34a29aaa2c04cbf1085f0cbc886994d8cf0814b4ba4c625559", + "pubkey": "97928b112d00235a7452dcc4bc1107c64b9a674082dbaeb4aed6d3f82b7e896b68c2eec79f410e3ebcc3aa939bb38909", + "signature": "a98df58a92c09cf421f39b5b24fa4546fbdfb35621dea65b5223d7aa0d5e4767aacf1d077b39e9970b06fc95e05366ac0b1996a93145a889b14a9f58d56c4255de9af6fc8094ecdc247b9e7a2a4617b36610750d0fb9622a67d1b188f5a1cd28" + } + } + } +} diff --git a/test_vectors/share/seeds-commitment-from-1-to-2-wrong-hash.json b/test_vectors/share/seeds-commitment-from-1-to-2-wrong-hash.json new file mode 100644 index 0000000..4c29b44 --- /dev/null +++ b/test_vectors/share/seeds-commitment-from-1-to-2-wrong-hash.json @@ -0,0 +1,37 @@ +{ + "params": { + "cmd_extra_args": "execute --type=bad-share --json-schema-file=spec/share_exchange_spec.json", + "expected_exit_code": 1 + }, + "scenario": { + "base_hashes": [ + "2cc6b806b3215210122226629b0d0872484d43754668bb90c4d1b5e401377890", + "6568dd285df3bf23d7697217273249841707951516e67c4954243d5d80ad23da", + "bdf6925e576dc08431ac6a590a64263c5ac3d8e5bd88113ac5777762fabd71a6" + ], + "initial_commitment": { + "settings": { + "gen_id": "8d17e61db7b774d16cb165662a8c2c4a", + "n": 3, + "k": 2 + }, + "base_pubkeys": [ + "a6602d395e8fbf67269a41a208613e42795c9e66d365dd87287162e31484cb0f84efaec36220714022bbd296e5357bc9", + "8a64f40fe2e976d01227b4085b42421c8c4c3549f539b8eb7ecad8833b5855ae1994126bfb9b6ff56a5f131f407462d8" + ], + "hash": "2cc6b806b3215210122226629b0d0872484d43754668bb90c4d1b5e401377890" + }, + "seeds_exchange_commitment": { + "initial_commitment_hash": "2cc6b806b3215210122226629b0d0872484d43754668bb90c4d1b5e401377890", + "ssecret": { + "shared_secret": "5d63e52532bd275e3c9db983d25bf5db2d1434bfdab683946e8b335abf921141", + "dst_base_hash": "6568dd285df3bf23d7697217273249841707951516e67c4954243d5d80ad23da" + }, + "commitment": { + "hash": "cbe7cc600de28e42a9cae781b289db68fe10a4a741250141535d6be98a874519", + "pubkey": "97928b112d00235a7452dcc4bc1107c64b9a674082dbaeb4aed6d3f82b7e896b68c2eec79f410e3ebcc3aa939bb38909", + "signature": "a98df58a92c09cf421f39b5b24fa4546fbdfb35621dea65b5223d7aa0d5e4767aacf1d077b39e9970b06fc95e05366ac0b1996a93145a889b14a9f58d56c4255de9af6fc8094ecdc247b9e7a2a4617b36610750d0fb9622a67d1b188f5a1cd28" + } + } + } +} diff --git a/test_vectors/share/seeds-commitment-from-1-to-2-wrong-pubkey.json b/test_vectors/share/seeds-commitment-from-1-to-2-wrong-pubkey.json new file mode 100644 index 0000000..1e8fe7a --- /dev/null +++ b/test_vectors/share/seeds-commitment-from-1-to-2-wrong-pubkey.json @@ -0,0 +1,37 @@ +{ + "params": { + "cmd_extra_args": "execute --type=bad-share --json-schema-file=spec/share_exchange_spec.json", + "expected_exit_code": 1 + }, + "scenario": { + "base_hashes": [ + "2cc6b806b3215210122226629b0d0872484d43754668bb90c4d1b5e401377890", + "6568dd285df3bf23d7697217273249841707951516e67c4954243d5d80ad23da", + "bdf6925e576dc08431ac6a590a64263c5ac3d8e5bd88113ac5777762fabd71a6" + ], + "initial_commitment": { + "settings": { + "gen_id": "8d17e61db7b774d16cb165662a8c2c4a", + "n": 3, + "k": 2 + }, + "base_pubkeys": [ + "a6602d395e8fbf67269a41a208613e42795c9e66d365dd87287162e31484cb0f84efaec36220714022bbd296e5357bc9", + "8a64f40fe2e976d01227b4085b42421c8c4c3549f539b8eb7ecad8833b5855ae1994126bfb9b6ff56a5f131f407462d8" + ], + "hash": "2cc6b806b3215210122226629b0d0872484d43754668bb90c4d1b5e401377890" + }, + "seeds_exchange_commitment": { + "initial_commitment_hash": "2cc6b806b3215210122226629b0d0872484d43754668bb90c4d1b5e401377890", + "ssecret": { + "shared_secret": "5d63e52532bd275e3c9db983d25bf5db2d1434bfdab683946e8b335abf921141", + "dst_base_hash": "6568dd285df3bf23d7697217273249841707951516e67c4954243d5d80ad23da" + }, + "commitment": { + "hash": "bcd3fca06ab3ec34a29aaa2c04cbf1085f0cbc886994d8cf0814b4ba4c625559", + "pubkey": "ab568c1d019cf509c792c1b425fd07f9e56baec261c2732156c25c3681b8fe1b0ca0f167ca2e2f2ed55945b43dea5724", + "signature": "a98df58a92c09cf421f39b5b24fa4546fbdfb35621dea65b5223d7aa0d5e4767aacf1d077b39e9970b06fc95e05366ac0b1996a93145a889b14a9f58d56c4255de9af6fc8094ecdc247b9e7a2a4617b36610750d0fb9622a67d1b188f5a1cd28" + } + } + } +} diff --git a/test_vectors/share/seeds-commitment-from-1-to-2-wrong-secret-key.json b/test_vectors/share/seeds-commitment-from-1-to-2-wrong-secret-key.json new file mode 100644 index 0000000..f40d1db --- /dev/null +++ b/test_vectors/share/seeds-commitment-from-1-to-2-wrong-secret-key.json @@ -0,0 +1,37 @@ +{ + "params": { + "cmd_extra_args": "execute --type=bad-share --json-schema-file=spec/share_exchange_spec.json", + "expected_exit_code": 0 + }, + "scenario": { + "base_hashes": [ + "2cc6b806b3215210122226629b0d0872484d43754668bb90c4d1b5e401377890", + "6568dd285df3bf23d7697217273249841707951516e67c4954243d5d80ad23da", + "bdf6925e576dc08431ac6a590a64263c5ac3d8e5bd88113ac5777762fabd71a6" + ], + "initial_commitment": { + "settings": { + "gen_id": "8d17e61db7b774d16cb165662a8c2c4a", + "n": 3, + "k": 2 + }, + "base_pubkeys": [ + "a6602d395e8fbf67269a41a208613e42795c9e66d365dd87287162e31484cb0f84efaec36220714022bbd296e5357bc9", + "8a64f40fe2e976d01227b4085b42421c8c4c3549f539b8eb7ecad8833b5855ae1994126bfb9b6ff56a5f131f407462d8" + ], + "hash": "2cc6b806b3215210122226629b0d0872484d43754668bb90c4d1b5e401377890" + }, + "seeds_exchange_commitment": { + "initial_commitment_hash": "2cc6b806b3215210122226629b0d0872484d43754668bb90c4d1b5e401377890", + "ssecret": { + "shared_secret": "6d3041c3c382d8111f9f24b4d1c6de5a01faf98d4f89929b76b8890cb434412a", + "dst_base_hash": "6568dd285df3bf23d7697217273249841707951516e67c4954243d5d80ad23da" + }, + "commitment": { + "hash": "a702379970a9a64d488175ce70f417c257b3b1ccc90418abd734ed2b67e1648e", + "pubkey": "97928b112d00235a7452dcc4bc1107c64b9a674082dbaeb4aed6d3f82b7e896b68c2eec79f410e3ebcc3aa939bb38909", + "signature": "89baafbe9ff90f44ed97e750491a28696f6264e319d650b2bdcfad8a540b4983a6748c277d21cfe95bee1ea8ce2a8183080d81520bdac4f03e1bc8e6578b99053c6e1f552e161f055d2a833e7d67f35c83ff38dca23d7e2e4ba22f84dae9d9ca" + } + } + } +} diff --git a/test_vectors/share/seeds-commitment-from-1-to-2-wrong-signature.json b/test_vectors/share/seeds-commitment-from-1-to-2-wrong-signature.json new file mode 100644 index 0000000..4a14491 --- /dev/null +++ b/test_vectors/share/seeds-commitment-from-1-to-2-wrong-signature.json @@ -0,0 +1,37 @@ +{ + "params": { + "cmd_extra_args": "execute --type=bad-share --json-schema-file=spec/share_exchange_spec.json", + "expected_exit_code": 1 + }, + "scenario": { + "base_hashes": [ + "2cc6b806b3215210122226629b0d0872484d43754668bb90c4d1b5e401377890", + "6568dd285df3bf23d7697217273249841707951516e67c4954243d5d80ad23da", + "bdf6925e576dc08431ac6a590a64263c5ac3d8e5bd88113ac5777762fabd71a6" + ], + "initial_commitment": { + "settings": { + "gen_id": "8d17e61db7b774d16cb165662a8c2c4a", + "n": 3, + "k": 2 + }, + "base_pubkeys": [ + "a6602d395e8fbf67269a41a208613e42795c9e66d365dd87287162e31484cb0f84efaec36220714022bbd296e5357bc9", + "8a64f40fe2e976d01227b4085b42421c8c4c3549f539b8eb7ecad8833b5855ae1994126bfb9b6ff56a5f131f407462d8" + ], + "hash": "2cc6b806b3215210122226629b0d0872484d43754668bb90c4d1b5e401377890" + }, + "seeds_exchange_commitment": { + "initial_commitment_hash": "2cc6b806b3215210122226629b0d0872484d43754668bb90c4d1b5e401377890", + "ssecret": { + "shared_secret": "5d63e52532bd275e3c9db983d25bf5db2d1434bfdab683946e8b335abf921141", + "dst_base_hash": "6568dd285df3bf23d7697217273249841707951516e67c4954243d5d80ad23da" + }, + "commitment": { + "hash": "bcd3fca06ab3ec34a29aaa2c04cbf1085f0cbc886994d8cf0814b4ba4c625559", + "pubkey": "97928b112d00235a7452dcc4bc1107c64b9a674082dbaeb4aed6d3f82b7e896b68c2eec79f410e3ebcc3aa939bb38909", + "signature": "a45f267f55368067b35a336474b6e479a06bca945880d1912f9bbca57863a4d3461d231e0dba62d74b302013ea22c63e01566afe14db71437cbf536ec2018a1d263698d9bd0e6be6afebc09d2947d0bbcc5f7c6c262e3308104e57748e8728af" + } + } + } +} diff --git a/test_vectors/share/seeds-commitment-from-1-to-2-zero-k.json b/test_vectors/share/seeds-commitment-from-1-to-2-zero-k.json new file mode 100644 index 0000000..9db4b8e --- /dev/null +++ b/test_vectors/share/seeds-commitment-from-1-to-2-zero-k.json @@ -0,0 +1,37 @@ +{ + "params": { + "cmd_extra_args": "execute --type=bad-share --json-schema-file=spec/share_exchange_spec.json", + "expected_exit_code": 101 + }, + "scenario": { + "base_hashes": [ + "2cc6b806b3215210122226629b0d0872484d43754668bb90c4d1b5e401377890", + "6568dd285df3bf23d7697217273249841707951516e67c4954243d5d80ad23da", + "bdf6925e576dc08431ac6a590a64263c5ac3d8e5bd88113ac5777762fabd71a6" + ], + "initial_commitment": { + "settings": { + "gen_id": "8d17e61db7b774d16cb165662a8c2c4a", + "n": 1, + "k": 0 + }, + "base_pubkeys": [ + "a6602d395e8fbf67269a41a208613e42795c9e66d365dd87287162e31484cb0f84efaec36220714022bbd296e5357bc9", + "8a64f40fe2e976d01227b4085b42421c8c4c3549f539b8eb7ecad8833b5855ae1994126bfb9b6ff56a5f131f407462d8" + ], + "hash": "2cc6b806b3215210122226629b0d0872484d43754668bb90c4d1b5e401377890" + }, + "seeds_exchange_commitment": { + "initial_commitment_hash": "2cc6b806b3215210122226629b0d0872484d43754668bb90c4d1b5e401377890", + "ssecret": { + "shared_secret": "5d63e52532bd275e3c9db983d25bf5db2d1434bfdab683946e8b335abf921141", + "dst_base_hash": "6568dd285df3bf23d7697217273249841707951516e67c4954243d5d80ad23da" + }, + "commitment": { + "hash": "bcd3fca06ab3ec34a29aaa2c04cbf1085f0cbc886994d8cf0814b4ba4c625559", + "pubkey": "97928b112d00235a7452dcc4bc1107c64b9a674082dbaeb4aed6d3f82b7e896b68c2eec79f410e3ebcc3aa939bb38909", + "signature": "a98df58a92c09cf421f39b5b24fa4546fbdfb35621dea65b5223d7aa0d5e4767aacf1d077b39e9970b06fc95e05366ac0b1996a93145a889b14a9f58d56c4255de9af6fc8094ecdc247b9e7a2a4617b36610750d0fb9622a67d1b188f5a1cd28" + } + } + } +} diff --git a/test_vectors/share/seeds-commitment-from-1-to-2.json b/test_vectors/share/seeds-commitment-from-1-to-2.json new file mode 100644 index 0000000..026de35 --- /dev/null +++ b/test_vectors/share/seeds-commitment-from-1-to-2.json @@ -0,0 +1,37 @@ +{ + "params": { + "cmd_extra_args": "execute --type=bad-share --json-schema-file=spec/share_exchange_spec.json", + "expected_exit_code": 1 + }, + "scenario": { + "base_hashes": [ + "2cc6b806b3215210122226629b0d0872484d43754668bb90c4d1b5e401377890", + "6568dd285df3bf23d7697217273249841707951516e67c4954243d5d80ad23da", + "bdf6925e576dc08431ac6a590a64263c5ac3d8e5bd88113ac5777762fabd71a6" + ], + "initial_commitment": { + "settings": { + "gen_id": "8d17e61db7b774d16cb165662a8c2c4a", + "n": 3, + "k": 2 + }, + "base_pubkeys": [ + "a6602d395e8fbf67269a41a208613e42795c9e66d365dd87287162e31484cb0f84efaec36220714022bbd296e5357bc9", + "8a64f40fe2e976d01227b4085b42421c8c4c3549f539b8eb7ecad8833b5855ae1994126bfb9b6ff56a5f131f407462d8" + ], + "hash": "2cc6b806b3215210122226629b0d0872484d43754668bb90c4d1b5e401377890" + }, + "seeds_exchange_commitment": { + "initial_commitment_hash": "2cc6b806b3215210122226629b0d0872484d43754668bb90c4d1b5e401377890", + "ssecret": { + "shared_secret": "5d63e52532bd275e3c9db983d25bf5db2d1434bfdab683946e8b335abf921141", + "dst_base_hash": "6568dd285df3bf23d7697217273249841707951516e67c4954243d5d80ad23da" + }, + "commitment": { + "hash": "bcd3fca06ab3ec34a29aaa2c04cbf1085f0cbc886994d8cf0814b4ba4c625559", + "pubkey": "97928b112d00235a7452dcc4bc1107c64b9a674082dbaeb4aed6d3f82b7e896b68c2eec79f410e3ebcc3aa939bb38909", + "signature": "a98df58a92c09cf421f39b5b24fa4546fbdfb35621dea65b5223d7aa0d5e4767aacf1d077b39e9970b06fc95e05366ac0b1996a93145a889b14a9f58d56c4255de9af6fc8094ecdc247b9e7a2a4617b36610750d0fb9622a67d1b188f5a1cd28" + } + } + } +} diff --git a/test_vectors/share/share_invalid_sig.json b/test_vectors/share/share_invalid_sig.json deleted file mode 100644 index 11ea560..0000000 --- a/test_vectors/share/share_invalid_sig.json +++ /dev/null @@ -1,44 +0,0 @@ -{ - "params": { - "cmd_extra_args": "--type=share", - "expected_exit_code": 1 - }, - "scenario":{ - "base_hashes": [ - "0bcbd9433dfde67e0dd7c501e255a2bdc31d6968e51b1290e6ef7d264911eb91", - "13602b274436a91ffa3bd3eb16927e011d81fe9e2e9673769a0152acbafe3e33", - "1ae7975df76c5df0c301d390d82180ff536f5dbbf78942e53b4ec9e9e1497a1a", - "54effb7411607a0c6484cb68cad8a30fd03e24c0fd561c5c8a4c5baa0509f9b3", - "dbd8b546ab29bfa87aa9d568e8315037695e8802fa0e0c9ed9009fe8a0fde402" - ], - "initial_commitment": { - "settings": { - "n": 5, - "k": 3, - "gen_id": "89f0996b33ca953e0cf9b70a5f84cb50" - }, - "vvector": { - "base_pubkeys": [ - "92cad77a95432bc1030d81b5465cb69be672c1dd0da752230bf8112f8449b03149e7fa208a6fae460a9f0a1d5bd175e9", - "98876a81fe982573ec5f986956bf9bf0bcb5349d95c3c8da0aefd05a49fea6215f59b0696f906547baed90ab245804e8", - "ad2c4e5b631fbded449ede4dca2d040b9c7eae58d1e73b3050486c1ba22c15a92d9ff13c05c356f974447e4fca84864a" - ] - }, - "hash": "13602b274436a91ffa3bd3eb16927e011d81fe9e2e9673769a0152acbafe3e33" - }, - "seeds_exchange_commitment": { - "initial_commitment_hash": "13602b274436a91ffa3bd3eb16927e011d81fe9e2e9673769a0152acbafe3e33", - "ssecret": { - "shared_secret": "5c31b041dcb4fad98c15bf14e77f398f7eaa84ec794911e6dc8c7aa0a20d4ee4", - "dst_base_hash": "0bcbd9433dfde67e0dd7c501e255a2bdc31d6968e51b1290e6ef7d264911eb91", - "src_share_id": "0200000000000000000000000000000000000000000000000000000000000000", - "dst_share_id": "0100000000000000000000000000000000000000000000000000000000000000" - }, - "commitment": { - "hash": "2f901d5cec8722e44afd59e94d0a56bf1506a72a0a60709920aad714d1a2ece0", - "pubkey": "90346f9c5f3c09d96ea02acd0220daa8459f03866ed938c798e3716e42c7e033c9a7ef66a10f83af06d5c00b508c6d0f", - "signature": "8c7075d8613db04218c7fef5b5646e6d819993932877ac6b4ffed320c412579c1f040df772ce41792e01f892e7a7de87090159598ce000fe7dccd9a1c386f6b144704fd565650174076017d102f6fdcc3c8101f1cd77d1b80712c3e2c4e7c465" - } - } - } -} diff --git a/test_vectors/share/share_test.json b/test_vectors/share/share_test.json deleted file mode 100644 index abb2b25..0000000 --- a/test_vectors/share/share_test.json +++ /dev/null @@ -1,44 +0,0 @@ -{ - "params": { - "cmd_extra_args": "--type=share --json-schema-file=spec/share_exchange_spec.json", - "expected_exit_code": 1 - }, - "scenario": { - "base_hashes": [ - "0bcbd9433dfde67e0dd7c501e255a2bdc31d6968e51b1290e6ef7d264911eb91", - "13602b274436a91ffa3bd3eb16927e011d81fe9e2e9673769a0152acbafe3e33", - "1ae7975df76c5df0c301d390d82180ff536f5dbbf78942e53b4ec9e9e1497a1a", - "54effb7411607a0c6484cb68cad8a30fd03e24c0fd561c5c8a4c5baa0509f9b3", - "dbd8b546ab29bfa87aa9d568e8315037695e8802fa0e0c9ed9009fe8a0fde402" - ], - "initial_commitment": { - "settings": { - "n": 5, - "k": 3, - "gen_id": "89f0996b33ca953e0cf9b70a5f84cb50" - }, - "vvector": { - "base_pubkeys": [ - "92cad77a95432bc1030d81b5465cb69be672c1dd0da752230bf8112f8449b03149e7fa208a6fae460a9f0a1d5bd175e9", - "98876a81fe982573ec5f986956bf9bf0bcb5349d95c3c8da0aefd05a49fea6215f59b0696f906547baed90ab245804e8", - "ad2c4e5b631fbded449ede4dca2d040b9c7eae58d1e73b3050486c1ba22c15a92d9ff13c05c356f974447e4fca84864a" - ] - }, - "hash": "13602b274436a91ffa3bd3eb16927e011d81fe9e2e9673769a0152acbafe3e33" - }, - "seeds_exchange_commitment": { - "initial_commitment_hash": "13602b274436a91ffa3bd3eb16927e011d81fe9e2e9673769a0152acbafe3e33", - "ssecret": { - "shared_secret": "5c31b041dcb4fad98c15bf14e77f398f7eaa84ec794911e6dc8c7aa0a20d4ee4", - "dst_base_hash": "0bcbd9433dfde67e0dd7c501e255a2bdc31d6968e51b1290e6ef7d264911eb91", - "src_share_id": "0200000000000000000000000000000000000000000000000000000000000000", - "dst_share_id": "0100000000000000000000000000000000000000000000000000000000000000" - }, - "commitment": { - "hash": "2f901d5cec8722e44afd59e94d0a56bf1506a72a0a60709920aad714d1a2ece0", - "pubkey": "90346f9c5f3c09d96ea02acd0220daa8459f03866ed938c798e3716e42c7e033c9a7ef66a10f83af06d5c00b508c6d0f", - "signature": "a9c08eff13742f78f1e5929888f223b5b5b12b4836b5417c5a135cf24f4e2a4c66a6cdef91be3098b7e7a6a63903b61302e3cf2b8653101da245cf01a8d82b25debe7b18a3a2eb1778f8628fd2c59c8687f6e048a31250fbc2804c20043b8443" - } - } - } -} \ No newline at end of file diff --git a/test_vectors/share/wrong_id.json b/test_vectors/share/wrong_id.json deleted file mode 100644 index af59641..0000000 --- a/test_vectors/share/wrong_id.json +++ /dev/null @@ -1,44 +0,0 @@ -{ - "params": { - "cmd_extra_args": "--type=share", - "expected_exit_code": 0 - }, - "scenario": { - "base_hashes": [ - "0bcbd9433dfde67e0dd7c501e255a2bdc31d6968e51b1290e6ef7d264911eb91", - "13602b274436a91ffa3bd3eb16927e011d81fe9e2e9673769a0152acbafe3e33", - "1ae7975df76c5df0c301d390d82180ff536f5dbbf78942e53b4ec9e9e1497a1a", - "54effb7411607a0c6484cb68cad8a30fd03e24c0fd561c5c8a4c5baa0509f9b3", - "dbd8b546ab29bfa87aa9d568e8315037695e8802fa0e0c9ed9009fe8a0fde402" - ], - "initial_commitment": { - "settings": { - "n": 5, - "k": 3, - "gen_id": "89f0996b33ca953e0cf9b70a5f84cb50" - }, - "vvector": { - "base_pubkeys": [ - "92cad77a95432bc1030d81b5465cb69be672c1dd0da752230bf8112f8449b03149e7fa208a6fae460a9f0a1d5bd175e9", - "98876a81fe982573ec5f986956bf9bf0bcb5349d95c3c8da0aefd05a49fea6215f59b0696f906547baed90ab245804e8", - "ad2c4e5b631fbded449ede4dca2d040b9c7eae58d1e73b3050486c1ba22c15a92d9ff13c05c356f974447e4fca84864a" - ] - }, - "hash": "13602b274436a91ffa3bd3eb16927e011d81fe9e2e9673769a0152acbafe3e33" - }, - "seeds_exchange_commitment": { - "initial_commitment_hash": "13602b274436a91ffa3bd3eb16927e011d81fe9e2e9673769a0152acbafe3e33", - "ssecret": { - "shared_secret": "5c31b041dcb4fad98c15bf14e77f398f7eaa84ec794911e6dc8c7aa0a20d4ee4", - "dst_base_hash": "0bcbd9433dfde67e0dd7c501e255a2bdc31d6968e51b1290e6ef7d264911eb91", - "src_share_id": "0200000000000000000000000000000000000000000000000000000000000000", - "dst_share_id": "0200000000000000000000000000000000000000000000000000000000000000" - }, - "commitment": { - "hash": "fe2807c0acc0766d9b917535e8c56a0a677fa0835cc40a713c0e56e699b639c8", - "pubkey": "90346f9c5f3c09d96ea02acd0220daa8459f03866ed938c798e3716e42c7e033c9a7ef66a10f83af06d5c00b508c6d0f", - "signature": "99d9453a241dc28ab285700f0beb58b6004594e4e393084decc40c7c974f922a6d79177e1a4f1b491423c6c58fb03f1a01633f66b60fd67d750cb0d1d00435a9fbc065b535e1ed35d0563b2fff9e16487db9a7938841bf82b8c5e178a0162cf8" - } - } - } -} \ No newline at end of file diff --git a/test_vectors/share_format/invalid_base_hashes_format.json b/test_vectors/share_format/invalid_base_hashes_format.json index fe03b94..addf054 100644 --- a/test_vectors/share_format/invalid_base_hashes_format.json +++ b/test_vectors/share_format/invalid_base_hashes_format.json @@ -1,6 +1,6 @@ { "params": { - "cmd_extra_args": "--type=share --json-schema-file=spec/share_exchange_spec.json", + "cmd_extra_args": "execute --type=bad-share --json-schema-file=spec/share_exchange_spec.json", "expected_exit_code": 1 }, "scenario": { diff --git a/test_vectors/share_format/invalid_gen_id_format.json b/test_vectors/share_format/invalid_gen_id_format.json index 8f4cec0..1bc4bdc 100644 --- a/test_vectors/share_format/invalid_gen_id_format.json +++ b/test_vectors/share_format/invalid_gen_id_format.json @@ -1,6 +1,6 @@ { "params": { - "cmd_extra_args": "--type=share --json-schema-file=spec/share_exchange_spec.json", + "cmd_extra_args": "execute --type=bad-share --json-schema-file=spec/share_exchange_spec.json", "expected_exit_code": 1 }, "scenario": { diff --git a/test_vectors/share_format/invalid_hash_format.json b/test_vectors/share_format/invalid_hash_format.json index a6c9513..b84b521 100644 --- a/test_vectors/share_format/invalid_hash_format.json +++ b/test_vectors/share_format/invalid_hash_format.json @@ -1,6 +1,6 @@ { "params": { - "cmd_extra_args": "--type=share --json-schema-file=spec/share_exchange_spec.json", + "cmd_extra_args": "execute --type=bad-share --json-schema-file=spec/share_exchange_spec.json", "expected_exit_code": 1 }, "scenario": { diff --git a/test_vectors/share_format/invalid_json.json b/test_vectors/share_format/invalid_json.json deleted file mode 100644 index c5cd170..0000000 --- a/test_vectors/share_format/invalid_json.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "params": { - "cmd_extra_args": "--type=share --json-schema-file=spec/share_exchange_spec.json", - "expected_exit_code": 1 - }, - "scenario": { - "base_hashes": [ - "0bcbd9433dfde67e0dd7c501e255a2bdc31d6968e51b1290e6ef7d264911eb91", - "13602b274436a91ffa3bd3eb16927e011d81fe9e2e9673769a0152acbafe3e33", - "1ae7975df76c5df0c301d390d82180ff536f5dbbf78942e53b4ec9e9e1497a1a", - "54effb7411607a0c6484cb68cad8a30fd03e24c0fd561c5c8a4c5baa0509f9b3", - "dbd8b546ab29bfa87aa9d568e8315037695e8802fa0e0c9ed9009fe8a0fde402" - ], - "initial_commitment": { - "settings": { - "n": 5, - "k": 3, - "gen_id": "89f0996b33ca953e0cf9b70a5f84cb50" - }, - "vvector": { - "base_pubkeys": [ - "92cad77a95432bc1030d81b5465cb69be672c1dd0da752230bf8112f8449b03149e7fa208a6fae460a9f0a1d5bd175e9", - "98876a81fe982573ec5f986956bf9bf0bcb5349d95c3c8da0aefd05a49fea6215f59b0696f906547baed90ab245804e8", - "ad2c4e5b631fbded449ede4dca2d040b9c7eae58d1e73b3050486c1ba22c15a92d9ff13c05c356f974447e4fca84864a" - ] - }, - "hash": "13602b274436a91ffa3bd3eb16927e011d81fe9e2e9673769a0152acbafe3e33" - }, - "seeds_exchange_commitment": { - "initial_commitment_hash": "13602b274436a91ffa3bd3eb16927e011d81fe9e2e9673769a0152acbafe3e33", - "ssecret": { - "shared_secret": "5c31b041dcb4fad98c15bf14e77f398f7eaa84ec794911e6dc8c7aa0a20d4ee4", - "dst_base_hash": "0bcbd9433dfde67e0dd7c501e255a2bdc31d6968e51b1290e6ef7d264911eb91", - "dst_share_id": "0100000000000000000000000000000000000000000000000000000000000000", - }, - "commitment": { - "hash": "2f901d5cec8722e44afd59e94d0a56bf1506a72a0a60709920aad714d1a2ece0", - "pubkey": "90346f9c5f3c09d96ea02acd0220daa8459f03866ed938c798e3716e42c7e033c9a7ef66a10f83af06d5c00b508c6d0f", - "signature": "a9c08eff13742f78f1e5929888f223b5b5b12b4836b5417c5a135cf24f4e2a4c66a6cdef91be3098b7e7a6a63903b61302e3cf2b8653101da245cf01a8d82b25debe7b18a3a2eb1778f8628fd2c59c8687f6e048a31250fbc2804c20043b8443" - } - } - } -} \ No newline at end of file diff --git a/test_vectors/share_format/invalid_pubkey_format.json b/test_vectors/share_format/invalid_pubkey_format.json index e67c4cf..e98c4a4 100644 --- a/test_vectors/share_format/invalid_pubkey_format.json +++ b/test_vectors/share_format/invalid_pubkey_format.json @@ -1,6 +1,6 @@ { "params": { - "cmd_extra_args": "--type=share --json-schema-file=spec/share_exchange_spec.json", + "cmd_extra_args": "execute --type=bad-share --json-schema-file=spec/share_exchange_spec.json", "expected_exit_code": 1 }, "scenario": { diff --git a/test_vectors/share_format/invalid_sig_format.json b/test_vectors/share_format/invalid_sig_format.json index 9580476..a9d6cee 100644 --- a/test_vectors/share_format/invalid_sig_format.json +++ b/test_vectors/share_format/invalid_sig_format.json @@ -1,6 +1,6 @@ { "params": { - "cmd_extra_args": "--type=share --json-schema-file=spec/share_exchange_spec.json", + "cmd_extra_args": "execute --type=bad-share --json-schema-file=spec/share_exchange_spec.json", "expected_exit_code": 1 }, "scenario": { diff --git a/test_vectors/share_format/missing_base_hashes.json b/test_vectors/share_format/missing_base_hashes.json index 6bc6d23..a31bb58 100644 --- a/test_vectors/share_format/missing_base_hashes.json +++ b/test_vectors/share_format/missing_base_hashes.json @@ -1,6 +1,6 @@ { "params": { - "cmd_extra_args": "--type=share", + "cmd_extra_args": "execute --type=bad-share --json-schema-file=spec/share_exchange_spec.json", "expected_exit_code": 1 }, "scenario": { diff --git a/test_vectors/share_format/missing_commitment_hash.json b/test_vectors/share_format/missing_commitment_hash.json index 474896c..7fe34b1 100644 --- a/test_vectors/share_format/missing_commitment_hash.json +++ b/test_vectors/share_format/missing_commitment_hash.json @@ -1,6 +1,6 @@ { "params": { - "cmd_extra_args": "--type=share --json-schema-file=spec/share_exchange_spec.json", + "cmd_extra_args": "execute --type=bad-share --json-schema-file=spec/share_exchange_spec.json", "expected_exit_code": 1 }, "scenario": { diff --git a/test_vectors/share_format/missing_dst_base_hash.json b/test_vectors/share_format/missing_dst_base_hash.json index eef5671..a97f1c0 100644 --- a/test_vectors/share_format/missing_dst_base_hash.json +++ b/test_vectors/share_format/missing_dst_base_hash.json @@ -1,6 +1,6 @@ { "params": { - "cmd_extra_args": "--type=share --json-schema-file=spec/share_exchange_spec.json", + "cmd_extra_args": "execute --type=bad-share --json-schema-file=spec/share_exchange_spec.json", "expected_exit_code": 1 }, "scenario": { diff --git a/test_vectors/share_format/missing_dst_share_id.json b/test_vectors/share_format/missing_dst_share_id.json index b94d348..913c762 100644 --- a/test_vectors/share_format/missing_dst_share_id.json +++ b/test_vectors/share_format/missing_dst_share_id.json @@ -1,6 +1,6 @@ { "params": { - "cmd_extra_args": "--type=share --json-schema-file=spec/share_exchange_spec.json", + "cmd_extra_args": "execute --type=bad-share --json-schema-file=spec/share_exchange_spec.json", "expected_exit_code": 1 }, "scenario": { diff --git a/test_vectors/share_format/missing_initial_commitment.json b/test_vectors/share_format/missing_initial_commitment.json index b9c5551..ea9fa3f 100644 --- a/test_vectors/share_format/missing_initial_commitment.json +++ b/test_vectors/share_format/missing_initial_commitment.json @@ -1,6 +1,6 @@ { "params": { - "cmd_extra_args": "--type=share", + "cmd_extra_args": "execute --type=bad-share --json-schema-file=spec/share_exchange_spec.json", "expected_exit_code": 1 }, "scenario": { diff --git a/test_vectors/share_format/missing_initial_commitments_hash.json b/test_vectors/share_format/missing_initial_commitments_hash.json index bebbc73..60a1dbc 100644 --- a/test_vectors/share_format/missing_initial_commitments_hash.json +++ b/test_vectors/share_format/missing_initial_commitments_hash.json @@ -1,6 +1,6 @@ { "params": { - "cmd_extra_args": "--type=share --json-schema-file=spec/share_exchange_spec.json", + "cmd_extra_args": "execute --type=bad-share --json-schema-file=spec/share_exchange_spec.json", "expected_exit_code": 1 }, "scenario": { diff --git a/test_vectors/share_format/missing_k.json b/test_vectors/share_format/missing_k.json index 5483231..e6ac57d 100644 --- a/test_vectors/share_format/missing_k.json +++ b/test_vectors/share_format/missing_k.json @@ -1,6 +1,6 @@ { "params": { - "cmd_extra_args": "--type=share", + "cmd_extra_args": "execute --type=bad-share --json-schema-file=spec/share_exchange_spec.json", "expected_exit_code": 1 }, "scenario": { diff --git a/test_vectors/share_format/missing_n.json b/test_vectors/share_format/missing_n.json index aab1afb..bb1e4db 100644 --- a/test_vectors/share_format/missing_n.json +++ b/test_vectors/share_format/missing_n.json @@ -1,6 +1,6 @@ { "params": { - "cmd_extra_args": "--type=share", + "cmd_extra_args": "execute --type=bad-share --json-schema-file=spec/share_exchange_spec.json", "expected_exit_code": 1 }, "scenario": { diff --git a/test_vectors/share_format/missing_pubkey.json b/test_vectors/share_format/missing_pubkey.json index 5bac97a..9bff8ad 100644 --- a/test_vectors/share_format/missing_pubkey.json +++ b/test_vectors/share_format/missing_pubkey.json @@ -1,6 +1,6 @@ { "params": { - "cmd_extra_args": "--type=share --json-schema-file=spec/share_exchange_spec.json", + "cmd_extra_args": "execute --type=bad-share --json-schema-file=spec/share_exchange_spec.json", "expected_exit_code": 1 }, "scenario": { diff --git a/test_vectors/share_format/missing_scr_share_id.json b/test_vectors/share_format/missing_scr_share_id.json index 9689982..2dc51cf 100644 --- a/test_vectors/share_format/missing_scr_share_id.json +++ b/test_vectors/share_format/missing_scr_share_id.json @@ -1,6 +1,6 @@ { "params": { - "cmd_extra_args": "--type=share --json-schema-file=spec/share_exchange_spec.json", + "cmd_extra_args": "execute --type=bad-share --json-schema-file=spec/share_exchange_spec.json", "expected_exit_code": 1 }, "scenario": { diff --git a/test_vectors/share_format/missing_secret.json b/test_vectors/share_format/missing_secret.json index 41f0fd2..1611380 100644 --- a/test_vectors/share_format/missing_secret.json +++ b/test_vectors/share_format/missing_secret.json @@ -1,6 +1,6 @@ { "params": { - "cmd_extra_args": "--type=share --json-schema-file=spec/share_exchange_spec.json", + "cmd_extra_args": "execute --type=bad-share --json-schema-file=spec/share_exchange_spec.json", "expected_exit_code": 1 }, "scenario": { diff --git a/test_vectors/share_format/missing_seed_exchange_commitment.json b/test_vectors/share_format/missing_seed_exchange_commitment.json index 12b025d..fd5299f 100644 --- a/test_vectors/share_format/missing_seed_exchange_commitment.json +++ b/test_vectors/share_format/missing_seed_exchange_commitment.json @@ -1,6 +1,6 @@ { "params": { - "cmd_extra_args": "--type=share", + "cmd_extra_args": "execute --type=bad-share --json-schema-file=spec/share_exchange_spec.json", "expected_exit_code": 1 }, "scenario": { diff --git a/test_vectors/share_format/missing_settings.json b/test_vectors/share_format/missing_settings.json index 51365a5..421b9a2 100644 --- a/test_vectors/share_format/missing_settings.json +++ b/test_vectors/share_format/missing_settings.json @@ -1,6 +1,6 @@ { "params": { - "cmd_extra_args": "--type=share --json-schema-file=spec/share_exchange_spec.json", + "cmd_extra_args": "execute --type=bad-share --json-schema-file=spec/share_exchange_spec.json", "expected_exit_code": 1 }, "scenario": { diff --git a/test_vectors/share_format/missing_sig.json b/test_vectors/share_format/missing_sig.json index 6ff5d28..44a61ee 100644 --- a/test_vectors/share_format/missing_sig.json +++ b/test_vectors/share_format/missing_sig.json @@ -1,6 +1,6 @@ { "params": { - "cmd_extra_args": "--type=share --json-schema-file=spec/share_exchange_spec.json", + "cmd_extra_args": "execute --type=bad-share --json-schema-file=spec/share_exchange_spec.json", "expected_exit_code": 1 }, "scenario": { diff --git a/test_vectors/share_format/missing_vvector.json b/test_vectors/share_format/missing_vvector.json index 583d1d4..22ac3d3 100644 --- a/test_vectors/share_format/missing_vvector.json +++ b/test_vectors/share_format/missing_vvector.json @@ -1,6 +1,6 @@ { "params": { - "cmd_extra_args": "--type=share --json-schema-file=spec/share_exchange_spec.json", + "cmd_extra_args": "execute --type=bad-share --json-schema-file=spec/share_exchange_spec.json", "expected_exit_code": 1 }, "scenario": { diff --git a/test_vectors/wrong_final_key_generation/badreport-gen-bad-base-hash.json b/test_vectors/wrong_final_key_generation/badreport-gen-bad-base-hash.json new file mode 100644 index 0000000..aa8246b --- /dev/null +++ b/test_vectors/wrong_final_key_generation/badreport-gen-bad-base-hash.json @@ -0,0 +1,58 @@ +{ + "params": { + "cmd_extra_args": "execute --type=bad-partial-key --json-schema-file=spec/bad_partial_key_spec.json", + "expected_exit_code": 1 + }, + "scenario": { + "settings": { + "gen_id": "8d17e61db7b774d16cb165662a8c2c4a", + "n": 3, + "k": 2 + }, + "generations": [ + { + "base_pubkeys": [ + "a6602d395e8fbf67269a41a208613e42795c9e66d365dd87287162e31484cb0f84efaec36220714022bbd296e5357bc9", + "8a64f40fe2e976d01227b4085b42421c8c4c3549f539b8eb7ecad8833b5855ae1994126bfb9b6ff56a5f131f407462d8" + ], + "base_hash": "2cc6b806b3215210122226629b0d0872484d43754668bb90c4d1b5e401377890" + }, + { + "base_pubkeys": [ + "b66242ce81deb25d60560c0c8f7e35e4ed9760887d7e877461bc2ded650c7d2728bd0f657baa071842c3ea744e7696f3", + "b23adea88f2fec6830a1f5ffb50015d01cd78eb6fe4f13981d23e4b8e2d2b2735729e79acbcecff74cb1571f529fbbce" + ], + "base_hash": "6568dd285df3bf23d7697217273249841707951516e67c4954243d5d80ad23da" + }, + { + "base_pubkeys": [ + "954be017bd960e3208f1661c1e5f372d5d5ec0955d3db00b14438d9b90ebc3f6a67853ee82e29bd5325888cc73e1ed67", + "8dc5afd8b102920503849b4a89165d75741163c690f2557d77fd3bad75a142f00197aa9f5fbde27926374bd0b29a7c96" + ], + "base_hash": "bdf6925e576dc08431ac6a590a64263c5ac3d8e5bd88113ac5777762fabd71a6" + } + ], + "bad_partial": { + "settings": { + "gen_id": "8d17e61db7b774d16cb165662a8c2c4a", + "n": 3, + "k": 2 + }, + "data": { + "base_pubkeys": [ + "a6602d395e8fbf67269a41a208613e42795c9e66d365dd87287162e31484cb0f84efaec36220714022bbd296e5357bc9", + "8a64f40fe2e976d01227b4085b42421c8c4c3549f539b8eb7ecad8833b5855ae1994126bfb9b6ff56a5f131f407462d8" + ], + "base_hash": "2dc6b806b3215210122226629b0d0872484d43754668bb90c4d1b5e401377890", + "partial_pubkey": "b6ac8c28c5f722cf095f83005bbfb403364231cd202e0793bfb69cd631e5cbc8d337a8dbe8dcb30615eea0a9dca98746", + "message_cleartext": "Sign with new partial key", + "message_signature": "b296d5309403d063f172cf97811f19cd1404f7b05f956d7b7ceaed375db1d3e6dc1b9f0544591bb562d25f7596abc9bd123b115dec61673a483ac4e5127959ee9886b94caa78c4c0393537d7ce5c203837f0073a14edde71f27b39af8794eb7b" + }, + "commitment": { + "hash": "60f9831f9d42a01febf6fc20e46df9ab802675d2990c7ccd8b407b444908981d", + "pubkey": "b33a4b42995a61ee35a99de7f087233c572a48ff83cce22daa18d54c99b31bdcd16005f9e6384752a38ed44917257dde", + "signature": "a34dd84a55b462d5aab12586c6bdcb6cfe9ef270f2c91bab67ab94c853f0dda2ff0cd7ca6dcc5f4d2784223d56ea520101974fc0df83e3b5f5442b75300a006de0093e0a4f4f7b15129cc1c5968f86ded895990d4e018774e84ff565603dbd22" + } + } + } +} diff --git a/test_vectors/wrong_final_key_generation/badreport-gen-bad-message-signature.json b/test_vectors/wrong_final_key_generation/badreport-gen-bad-message-signature.json new file mode 100644 index 0000000..264abbd --- /dev/null +++ b/test_vectors/wrong_final_key_generation/badreport-gen-bad-message-signature.json @@ -0,0 +1,58 @@ +{ + "params": { + "cmd_extra_args": "execute --type=bad-partial-key --json-schema-file=spec/bad_partial_key_spec.json", + "expected_exit_code": 0 + }, + "scenario": { + "settings": { + "gen_id": "8d17e61db7b774d16cb165662a8c2c4a", + "n": 3, + "k": 2 + }, + "generations": [ + { + "base_pubkeys": [ + "a6602d395e8fbf67269a41a208613e42795c9e66d365dd87287162e31484cb0f84efaec36220714022bbd296e5357bc9", + "8a64f40fe2e976d01227b4085b42421c8c4c3549f539b8eb7ecad8833b5855ae1994126bfb9b6ff56a5f131f407462d8" + ], + "base_hash": "2cc6b806b3215210122226629b0d0872484d43754668bb90c4d1b5e401377890" + }, + { + "base_pubkeys": [ + "b66242ce81deb25d60560c0c8f7e35e4ed9760887d7e877461bc2ded650c7d2728bd0f657baa071842c3ea744e7696f3", + "b23adea88f2fec6830a1f5ffb50015d01cd78eb6fe4f13981d23e4b8e2d2b2735729e79acbcecff74cb1571f529fbbce" + ], + "base_hash": "6568dd285df3bf23d7697217273249841707951516e67c4954243d5d80ad23da" + }, + { + "base_pubkeys": [ + "954be017bd960e3208f1661c1e5f372d5d5ec0955d3db00b14438d9b90ebc3f6a67853ee82e29bd5325888cc73e1ed67", + "8dc5afd8b102920503849b4a89165d75741163c690f2557d77fd3bad75a142f00197aa9f5fbde27926374bd0b29a7c96" + ], + "base_hash": "bdf6925e576dc08431ac6a590a64263c5ac3d8e5bd88113ac5777762fabd71a6" + } + ], + "bad_partial": { + "settings": { + "gen_id": "8d17e61db7b774d16cb165662a8c2c4a", + "n": 3, + "k": 2 + }, + "data": { + "base_pubkeys": [ + "a6602d395e8fbf67269a41a208613e42795c9e66d365dd87287162e31484cb0f84efaec36220714022bbd296e5357bc9", + "8a64f40fe2e976d01227b4085b42421c8c4c3549f539b8eb7ecad8833b5855ae1994126bfb9b6ff56a5f131f407462d8" + ], + "base_hash": "2cc6b806b3215210122226629b0d0872484d43754668bb90c4d1b5e401377890", + "partial_pubkey": "b6ac8c28c5f722cf095f83005bbfb403364231cd202e0793bfb69cd631e5cbc8d337a8dbe8dcb30615eea0a9dca98746", + "message_cleartext": "Sign with new partial key", + "message_signature": "b296d5309403d063f172cf97811f19cd1404f7b05f956d7b7ceaed375db1d3e6dc1b9f0544591bb562d25f7596abc9bd0d38c6759bdc8d89ea7d81560b7d00a24ba718dc0f9c3fea06430eafec4097dc992519b03c32d96e2d4fbc08bfa088f0" + }, + "commitment": { + "hash": "abe672d20ba7fac6e6a32d9a68dfa9d4e47bbfa9600b1fd3e877b47b43c4b5a4", + "pubkey": "b33a4b42995a61ee35a99de7f087233c572a48ff83cce22daa18d54c99b31bdcd16005f9e6384752a38ed44917257dde", + "signature": "a89970d8e0b945855cf6d302357e11d75ddce1de6255e78caa553ab38b46cca06d6d0b07283f2961ebc1d8ffb94ffdca06253ef6aa544f9b1c695ae5c97e7d4aa9482158e33d549e4d686ed32c3bc1014e85ca3a91504348fd4ebbf87480e619" + } + } + } +} diff --git a/test_vectors/wrong_final_key_generation/badreport-gen-bad-partial-pubkey.json b/test_vectors/wrong_final_key_generation/badreport-gen-bad-partial-pubkey.json new file mode 100644 index 0000000..9bd3c68 --- /dev/null +++ b/test_vectors/wrong_final_key_generation/badreport-gen-bad-partial-pubkey.json @@ -0,0 +1,58 @@ +{ + "params": { + "cmd_extra_args": "execute --type=bad-partial-key --json-schema-file=spec/bad_partial_key_spec.json", + "expected_exit_code": 0 + }, + "scenario": { + "settings": { + "gen_id": "8d17e61db7b774d16cb165662a8c2c4a", + "n": 3, + "k": 2 + }, + "generations": [ + { + "base_pubkeys": [ + "a6602d395e8fbf67269a41a208613e42795c9e66d365dd87287162e31484cb0f84efaec36220714022bbd296e5357bc9", + "8a64f40fe2e976d01227b4085b42421c8c4c3549f539b8eb7ecad8833b5855ae1994126bfb9b6ff56a5f131f407462d8" + ], + "base_hash": "2cc6b806b3215210122226629b0d0872484d43754668bb90c4d1b5e401377890" + }, + { + "base_pubkeys": [ + "b66242ce81deb25d60560c0c8f7e35e4ed9760887d7e877461bc2ded650c7d2728bd0f657baa071842c3ea744e7696f3", + "b23adea88f2fec6830a1f5ffb50015d01cd78eb6fe4f13981d23e4b8e2d2b2735729e79acbcecff74cb1571f529fbbce" + ], + "base_hash": "6568dd285df3bf23d7697217273249841707951516e67c4954243d5d80ad23da" + }, + { + "base_pubkeys": [ + "954be017bd960e3208f1661c1e5f372d5d5ec0955d3db00b14438d9b90ebc3f6a67853ee82e29bd5325888cc73e1ed67", + "8dc5afd8b102920503849b4a89165d75741163c690f2557d77fd3bad75a142f00197aa9f5fbde27926374bd0b29a7c96" + ], + "base_hash": "bdf6925e576dc08431ac6a590a64263c5ac3d8e5bd88113ac5777762fabd71a6" + } + ], + "bad_partial": { + "settings": { + "gen_id": "8d17e61db7b774d16cb165662a8c2c4a", + "n": 3, + "k": 2 + }, + "data": { + "base_pubkeys": [ + "a6602d395e8fbf67269a41a208613e42795c9e66d365dd87287162e31484cb0f84efaec36220714022bbd296e5357bc9", + "8a64f40fe2e976d01227b4085b42421c8c4c3549f539b8eb7ecad8833b5855ae1994126bfb9b6ff56a5f131f407462d8" + ], + "base_hash": "2cc6b806b3215210122226629b0d0872484d43754668bb90c4d1b5e401377890", + "partial_pubkey": "b1aa41407572491eaba23f7154c35ab6e962915c855182bd8cc473ae4fca436d346cbb521021ae0250c3230314b524bb", + "message_cleartext": "Sign with new partial key", + "message_signature": "b296d5309403d063f172cf97811f19cd1404f7b05f956d7b7ceaed375db1d3e6dc1b9f0544591bb562d25f7596abc9bd123b115dec61673a483ac4e5127959ee9886b94caa78c4c0393537d7ce5c203837f0073a14edde71f27b39af8794eb7b" + }, + "commitment": { + "hash": "968b559a15006f2fad01a1321e3825966ff51af75bac16056b0f5f9bf516a467", + "pubkey": "b33a4b42995a61ee35a99de7f087233c572a48ff83cce22daa18d54c99b31bdcd16005f9e6384752a38ed44917257dde", + "signature": "8ea78ca0c939a806042655b331bb37d0f5b8b8540512ead47f9fef8c9a1ee0e8fbbfdf5208dea58b89c3b5765aecde97166b2e297ba9e5aba6a889b316666b3e411e252f942af0d8777fe0706466fb2816679db420d188c87eab5bcd84c39cea" + } + } + } +} diff --git a/test_vectors/wrong_final_key_generation/badreport-gen-wrong-base-hash.json b/test_vectors/wrong_final_key_generation/badreport-gen-wrong-base-hash.json new file mode 100644 index 0000000..aabc081 --- /dev/null +++ b/test_vectors/wrong_final_key_generation/badreport-gen-wrong-base-hash.json @@ -0,0 +1,58 @@ +{ + "params": { + "cmd_extra_args": "execute --type=bad-partial-key --json-schema-file=spec/bad_partial_key_spec.json", + "expected_exit_code": 1 + }, + "scenario": { + "settings": { + "gen_id": "8d17e61db7b774d16cb165662a8c2c4a", + "n": 3, + "k": 2 + }, + "generations": [ + { + "base_pubkeys": [ + "a6602d395e8fbf67269a41a208613e42795c9e66d365dd87287162e31484cb0f84efaec36220714022bbd296e5357bc9", + "8a64f40fe2e976d01227b4085b42421c8c4c3549f539b8eb7ecad8833b5855ae1994126bfb9b6ff56a5f131f407462d8" + ], + "base_hash": "2cc6b806b3215210122226629b0d0872484d43754668bb90c4d1b5e401377890" + }, + { + "base_pubkeys": [ + "b66242ce81deb25d60560c0c8f7e35e4ed9760887d7e877461bc2ded650c7d2728bd0f657baa071842c3ea744e7696f3", + "b23adea88f2fec6830a1f5ffb50015d01cd78eb6fe4f13981d23e4b8e2d2b2735729e79acbcecff74cb1571f529fbbce" + ], + "base_hash": "6568dd285df3bf23d7697217273249841707951516e67c4954243d5d80ad23da" + }, + { + "base_pubkeys": [ + "954be017bd960e3208f1661c1e5f372d5d5ec0955d3db00b14438d9b90ebc3f6a67853ee82e29bd5325888cc73e1ed67", + "8dc5afd8b102920503849b4a89165d75741163c690f2557d77fd3bad75a142f00197aa9f5fbde27926374bd0b29a7c96" + ], + "base_hash": "bdf6925e576dc08431ac6a590a64263c5ac3d8e5bd88113ac5777762fabd71a6" + } + ], + "bad_partial": { + "settings": { + "gen_id": "8d17e61db7b774d16cb165662a8c2c4a", + "n": 3, + "k": 2 + }, + "data": { + "base_pubkeys": [ + "a6602d395e8fbf67269a41a208613e42795c9e66d365dd87287162e31484cb0f84efaec36220714022bbd296e5357bc9", + "8a64f40fe2e976d01227b4085b42421c8c4c3549f539b8eb7ecad8833b5855ae1994126bfb9b6ff56a5f131f407462d8" + ], + "base_hash": "cbe7cc600de28e42a9cae781b289db68fe10a4a741250141535d6be98a874519", + "partial_pubkey": "b6ac8c28c5f722cf095f83005bbfb403364231cd202e0793bfb69cd631e5cbc8d337a8dbe8dcb30615eea0a9dca98746", + "message_cleartext": "Sign with new partial key", + "message_signature": "b296d5309403d063f172cf97811f19cd1404f7b05f956d7b7ceaed375db1d3e6dc1b9f0544591bb562d25f7596abc9bd123b115dec61673a483ac4e5127959ee9886b94caa78c4c0393537d7ce5c203837f0073a14edde71f27b39af8794eb7b" + }, + "commitment": { + "hash": "41b8f240407c71931dfa51cd6c94bcca4ae8ca2184bf5e9e665fc18241d49e0d", + "pubkey": "b33a4b42995a61ee35a99de7f087233c572a48ff83cce22daa18d54c99b31bdcd16005f9e6384752a38ed44917257dde", + "signature": "b657c10cb3aa600a5fc24ed90051f4fdd52a21568a349dfe39daf956d09778ea1d19980be1c3bbc73dc1834f3848458508f468e961efe9b54e07d1890ca1ce0317dbdcee0b66d20bd73519211cf5a9794b820054ffc969380622a6e66340f973" + } + } + } +} diff --git a/test_vectors/wrong_final_key_generation/badreport-gen-wrong-message-cleartext.json b/test_vectors/wrong_final_key_generation/badreport-gen-wrong-message-cleartext.json new file mode 100644 index 0000000..b21afcc --- /dev/null +++ b/test_vectors/wrong_final_key_generation/badreport-gen-wrong-message-cleartext.json @@ -0,0 +1,58 @@ +{ + "params": { + "cmd_extra_args": "execute --type=bad-partial-key --json-schema-file=spec/bad_partial_key_spec.json", + "expected_exit_code": 0 + }, + "scenario": { + "settings": { + "gen_id": "8d17e61db7b774d16cb165662a8c2c4a", + "n": 3, + "k": 2 + }, + "generations": [ + { + "base_pubkeys": [ + "a6602d395e8fbf67269a41a208613e42795c9e66d365dd87287162e31484cb0f84efaec36220714022bbd296e5357bc9", + "8a64f40fe2e976d01227b4085b42421c8c4c3549f539b8eb7ecad8833b5855ae1994126bfb9b6ff56a5f131f407462d8" + ], + "base_hash": "2cc6b806b3215210122226629b0d0872484d43754668bb90c4d1b5e401377890" + }, + { + "base_pubkeys": [ + "b66242ce81deb25d60560c0c8f7e35e4ed9760887d7e877461bc2ded650c7d2728bd0f657baa071842c3ea744e7696f3", + "b23adea88f2fec6830a1f5ffb50015d01cd78eb6fe4f13981d23e4b8e2d2b2735729e79acbcecff74cb1571f529fbbce" + ], + "base_hash": "6568dd285df3bf23d7697217273249841707951516e67c4954243d5d80ad23da" + }, + { + "base_pubkeys": [ + "954be017bd960e3208f1661c1e5f372d5d5ec0955d3db00b14438d9b90ebc3f6a67853ee82e29bd5325888cc73e1ed67", + "8dc5afd8b102920503849b4a89165d75741163c690f2557d77fd3bad75a142f00197aa9f5fbde27926374bd0b29a7c96" + ], + "base_hash": "bdf6925e576dc08431ac6a590a64263c5ac3d8e5bd88113ac5777762fabd71a6" + } + ], + "bad_partial": { + "settings": { + "gen_id": "8d17e61db7b774d16cb165662a8c2c4a", + "n": 3, + "k": 2 + }, + "data": { + "base_pubkeys": [ + "a6602d395e8fbf67269a41a208613e42795c9e66d365dd87287162e31484cb0f84efaec36220714022bbd296e5357bc9", + "8a64f40fe2e976d01227b4085b42421c8c4c3549f539b8eb7ecad8833b5855ae1994126bfb9b6ff56a5f131f407462d8" + ], + "base_hash": "2cc6b806b3215210122226629b0d0872484d43754668bb90c4d1b5e401377890", + "partial_pubkey": "b6ac8c28c5f722cf095f83005bbfb403364231cd202e0793bfb69cd631e5cbc8d337a8dbe8dcb30615eea0a9dca98746", + "message_cleartext": "wrong message cleartext", + "message_signature": "b296d5309403d063f172cf97811f19cd1404f7b05f956d7b7ceaed375db1d3e6dc1b9f0544591bb562d25f7596abc9bd123b115dec61673a483ac4e5127959ee9886b94caa78c4c0393537d7ce5c203837f0073a14edde71f27b39af8794eb7b" + }, + "commitment": { + "hash": "c6e6461e1fbe9096038f9a785cef1060a6fea86bf40c37187709236108d35792", + "pubkey": "b33a4b42995a61ee35a99de7f087233c572a48ff83cce22daa18d54c99b31bdcd16005f9e6384752a38ed44917257dde", + "signature": "a0558185f54e6d4d5806eb52cc71844ccc55d9e579bae18ae1f573396a20eef2e5e9b678ed5d948e90ca25320fd620d700c14b07d21d9e725785489038f0e54404a1548c3a3e86a73431c3541818f20bb070e41b181e9f0024b6a03d935b60ed" + } + } + } +} diff --git a/test_vectors/wrong_final_key_generation/badreport-gen-wrong-message-signature.json b/test_vectors/wrong_final_key_generation/badreport-gen-wrong-message-signature.json new file mode 100644 index 0000000..4a3d86b --- /dev/null +++ b/test_vectors/wrong_final_key_generation/badreport-gen-wrong-message-signature.json @@ -0,0 +1,58 @@ +{ + "params": { + "cmd_extra_args": "execute --type=bad-partial-key --json-schema-file=spec/bad_partial_key_spec.json", + "expected_exit_code": 0 + }, + "scenario": { + "settings": { + "gen_id": "8d17e61db7b774d16cb165662a8c2c4a", + "n": 3, + "k": 2 + }, + "generations": [ + { + "base_pubkeys": [ + "a6602d395e8fbf67269a41a208613e42795c9e66d365dd87287162e31484cb0f84efaec36220714022bbd296e5357bc9", + "8a64f40fe2e976d01227b4085b42421c8c4c3549f539b8eb7ecad8833b5855ae1994126bfb9b6ff56a5f131f407462d8" + ], + "base_hash": "2cc6b806b3215210122226629b0d0872484d43754668bb90c4d1b5e401377890" + }, + { + "base_pubkeys": [ + "b66242ce81deb25d60560c0c8f7e35e4ed9760887d7e877461bc2ded650c7d2728bd0f657baa071842c3ea744e7696f3", + "b23adea88f2fec6830a1f5ffb50015d01cd78eb6fe4f13981d23e4b8e2d2b2735729e79acbcecff74cb1571f529fbbce" + ], + "base_hash": "6568dd285df3bf23d7697217273249841707951516e67c4954243d5d80ad23da" + }, + { + "base_pubkeys": [ + "954be017bd960e3208f1661c1e5f372d5d5ec0955d3db00b14438d9b90ebc3f6a67853ee82e29bd5325888cc73e1ed67", + "8dc5afd8b102920503849b4a89165d75741163c690f2557d77fd3bad75a142f00197aa9f5fbde27926374bd0b29a7c96" + ], + "base_hash": "bdf6925e576dc08431ac6a590a64263c5ac3d8e5bd88113ac5777762fabd71a6" + } + ], + "bad_partial": { + "settings": { + "gen_id": "8d17e61db7b774d16cb165662a8c2c4a", + "n": 3, + "k": 2 + }, + "data": { + "base_pubkeys": [ + "a6602d395e8fbf67269a41a208613e42795c9e66d365dd87287162e31484cb0f84efaec36220714022bbd296e5357bc9", + "8a64f40fe2e976d01227b4085b42421c8c4c3549f539b8eb7ecad8833b5855ae1994126bfb9b6ff56a5f131f407462d8" + ], + "base_hash": "2cc6b806b3215210122226629b0d0872484d43754668bb90c4d1b5e401377890", + "partial_pubkey": "b6ac8c28c5f722cf095f83005bbfb403364231cd202e0793bfb69cd631e5cbc8d337a8dbe8dcb30615eea0a9dca98746", + "message_cleartext": "Sign with new partial key", + "message_signature": "b7db8dc118d8421996cccecea476c2005581da585e788ea27a9126ff3a7cb786e414ff640a511cba5aafae3b1597e11f0c77e095bb0944a585c37eff120816b2c6b426a2d8ba76c47215512d3a8709e434548331522d29281753d01c165e1581" + }, + "commitment": { + "hash": "d29a79651dc21c2b02a6c203df601f5b763451524417409629c7b91051262950", + "pubkey": "b33a4b42995a61ee35a99de7f087233c572a48ff83cce22daa18d54c99b31bdcd16005f9e6384752a38ed44917257dde", + "signature": "b138811752bbdd56fc3a034d54c3fb0eaa39de4d39049c1635b1a458802cb6e40c997b0a8dc57094de93573b6070688915763ee12916db2c975f59cfa80e3d19ff645753bf650dd380b927932c1fcad880aa4ab3b3a1825dd98bcfd97d150ed2" + } + } + } +} diff --git a/test_vectors/wrong_final_key_generation/badreport-gen-wrong-partial-pubkey.json b/test_vectors/wrong_final_key_generation/badreport-gen-wrong-partial-pubkey.json new file mode 100644 index 0000000..92e798e --- /dev/null +++ b/test_vectors/wrong_final_key_generation/badreport-gen-wrong-partial-pubkey.json @@ -0,0 +1,58 @@ +{ + "params": { + "cmd_extra_args": "execute --type=bad-partial-key --json-schema-file=spec/bad_partial_key_spec.json", + "expected_exit_code": 0 + }, + "scenario": { + "settings": { + "gen_id": "8d17e61db7b774d16cb165662a8c2c4a", + "n": 3, + "k": 2 + }, + "generations": [ + { + "base_pubkeys": [ + "a6602d395e8fbf67269a41a208613e42795c9e66d365dd87287162e31484cb0f84efaec36220714022bbd296e5357bc9", + "8a64f40fe2e976d01227b4085b42421c8c4c3549f539b8eb7ecad8833b5855ae1994126bfb9b6ff56a5f131f407462d8" + ], + "base_hash": "2cc6b806b3215210122226629b0d0872484d43754668bb90c4d1b5e401377890" + }, + { + "base_pubkeys": [ + "b66242ce81deb25d60560c0c8f7e35e4ed9760887d7e877461bc2ded650c7d2728bd0f657baa071842c3ea744e7696f3", + "b23adea88f2fec6830a1f5ffb50015d01cd78eb6fe4f13981d23e4b8e2d2b2735729e79acbcecff74cb1571f529fbbce" + ], + "base_hash": "6568dd285df3bf23d7697217273249841707951516e67c4954243d5d80ad23da" + }, + { + "base_pubkeys": [ + "954be017bd960e3208f1661c1e5f372d5d5ec0955d3db00b14438d9b90ebc3f6a67853ee82e29bd5325888cc73e1ed67", + "8dc5afd8b102920503849b4a89165d75741163c690f2557d77fd3bad75a142f00197aa9f5fbde27926374bd0b29a7c96" + ], + "base_hash": "bdf6925e576dc08431ac6a590a64263c5ac3d8e5bd88113ac5777762fabd71a6" + } + ], + "bad_partial": { + "settings": { + "gen_id": "8d17e61db7b774d16cb165662a8c2c4a", + "n": 3, + "k": 2 + }, + "data": { + "base_pubkeys": [ + "a6602d395e8fbf67269a41a208613e42795c9e66d365dd87287162e31484cb0f84efaec36220714022bbd296e5357bc9", + "8a64f40fe2e976d01227b4085b42421c8c4c3549f539b8eb7ecad8833b5855ae1994126bfb9b6ff56a5f131f407462d8" + ], + "base_hash": "2cc6b806b3215210122226629b0d0872484d43754668bb90c4d1b5e401377890", + "partial_pubkey": "ab568c1d019cf509c792c1b425fd07f9e56baec261c2732156c25c3681b8fe1b0ca0f167ca2e2f2ed55945b43dea5724", + "message_cleartext": "Sign with new partial key", + "message_signature": "b296d5309403d063f172cf97811f19cd1404f7b05f956d7b7ceaed375db1d3e6dc1b9f0544591bb562d25f7596abc9bd123b115dec61673a483ac4e5127959ee9886b94caa78c4c0393537d7ce5c203837f0073a14edde71f27b39af8794eb7b" + }, + "commitment": { + "hash": "c25c80f646140f3384aed3d3e4223be4c6bb765bd18de5fef5e6d4ec90bbc5aa", + "pubkey": "b33a4b42995a61ee35a99de7f087233c572a48ff83cce22daa18d54c99b31bdcd16005f9e6384752a38ed44917257dde", + "signature": "8b85daabb841a0fa99582a0151e71957baedc77027d8696ed20d3472bf87210a467c2a5e0248301f1c350d5ce26d6bb107ff13618d73f783c5c759bb765392c04595eab69a5c2a59f925de08a4f67a11c4d09900952f91881ea783fa33146da4" + } + } + } +} diff --git a/test_vectors/wrong_final_key_generation/badreport-n-less-than-k.json b/test_vectors/wrong_final_key_generation/badreport-n-less-than-k.json new file mode 100644 index 0000000..95995d5 --- /dev/null +++ b/test_vectors/wrong_final_key_generation/badreport-n-less-than-k.json @@ -0,0 +1,58 @@ +{ + "params": { + "cmd_extra_args": "execute --type=bad-partial-key --json-schema-file=spec/bad_partial_key_spec.json", + "expected_exit_code": 1 + }, + "scenario": { + "settings": { + "gen_id": "8d17e61db7b774d16cb165662a8c2c4a", + "n": 3, + "k": 2 + }, + "generations": [ + { + "base_pubkeys": [ + "a6602d395e8fbf67269a41a208613e42795c9e66d365dd87287162e31484cb0f84efaec36220714022bbd296e5357bc9", + "8a64f40fe2e976d01227b4085b42421c8c4c3549f539b8eb7ecad8833b5855ae1994126bfb9b6ff56a5f131f407462d8" + ], + "base_hash": "2cc6b806b3215210122226629b0d0872484d43754668bb90c4d1b5e401377890" + }, + { + "base_pubkeys": [ + "b66242ce81deb25d60560c0c8f7e35e4ed9760887d7e877461bc2ded650c7d2728bd0f657baa071842c3ea744e7696f3", + "b23adea88f2fec6830a1f5ffb50015d01cd78eb6fe4f13981d23e4b8e2d2b2735729e79acbcecff74cb1571f529fbbce" + ], + "base_hash": "6568dd285df3bf23d7697217273249841707951516e67c4954243d5d80ad23da" + }, + { + "base_pubkeys": [ + "954be017bd960e3208f1661c1e5f372d5d5ec0955d3db00b14438d9b90ebc3f6a67853ee82e29bd5325888cc73e1ed67", + "8dc5afd8b102920503849b4a89165d75741163c690f2557d77fd3bad75a142f00197aa9f5fbde27926374bd0b29a7c96" + ], + "base_hash": "bdf6925e576dc08431ac6a590a64263c5ac3d8e5bd88113ac5777762fabd71a6" + } + ], + "bad_partial": { + "settings": { + "gen_id": "8d17e61db7b774d16cb165662a8c2c4a", + "n": 1, + "k": 2 + }, + "data": { + "base_pubkeys": [ + "a6602d395e8fbf67269a41a208613e42795c9e66d365dd87287162e31484cb0f84efaec36220714022bbd296e5357bc9", + "8a64f40fe2e976d01227b4085b42421c8c4c3549f539b8eb7ecad8833b5855ae1994126bfb9b6ff56a5f131f407462d8" + ], + "base_hash": "2cc6b806b3215210122226629b0d0872484d43754668bb90c4d1b5e401377890", + "partial_pubkey": "b6ac8c28c5f722cf095f83005bbfb403364231cd202e0793bfb69cd631e5cbc8d337a8dbe8dcb30615eea0a9dca98746", + "message_cleartext": "Sign with new partial key", + "message_signature": "b296d5309403d063f172cf97811f19cd1404f7b05f956d7b7ceaed375db1d3e6dc1b9f0544591bb562d25f7596abc9bd123b115dec61673a483ac4e5127959ee9886b94caa78c4c0393537d7ce5c203837f0073a14edde71f27b39af8794eb7b" + }, + "commitment": { + "hash": "f5a5fb270344ffb87d1bad1c50d6f9e36ef7710a9a827f22489a7648e9da9ea3", + "pubkey": "b33a4b42995a61ee35a99de7f087233c572a48ff83cce22daa18d54c99b31bdcd16005f9e6384752a38ed44917257dde", + "signature": "8367807867e5f0e80d76cffc5def040655aa727cec1509d6e83100df8fb0bbb539140a5dca927bba3253ae288b98fb7a087c45aa94bf646233a805491999f13d9a93389abbae3f86aec447fca81de67aa477a2fd771939d18054e8a94f101030" + } + } + } +} diff --git a/test_vectors/wrong_final_key_generation/badreport-wrong-genid.json b/test_vectors/wrong_final_key_generation/badreport-wrong-genid.json new file mode 100644 index 0000000..1141b6d --- /dev/null +++ b/test_vectors/wrong_final_key_generation/badreport-wrong-genid.json @@ -0,0 +1,58 @@ +{ + "params": { + "cmd_extra_args": "execute --type=bad-partial-key --json-schema-file=spec/bad_partial_key_spec.json", + "expected_exit_code": 1 + }, + "scenario": { + "settings": { + "gen_id": "8d17e61db7b774d16cb165662a8c2c4a", + "n": 3, + "k": 2 + }, + "generations": [ + { + "base_pubkeys": [ + "a6602d395e8fbf67269a41a208613e42795c9e66d365dd87287162e31484cb0f84efaec36220714022bbd296e5357bc9", + "8a64f40fe2e976d01227b4085b42421c8c4c3549f539b8eb7ecad8833b5855ae1994126bfb9b6ff56a5f131f407462d8" + ], + "base_hash": "2cc6b806b3215210122226629b0d0872484d43754668bb90c4d1b5e401377890" + }, + { + "base_pubkeys": [ + "b66242ce81deb25d60560c0c8f7e35e4ed9760887d7e877461bc2ded650c7d2728bd0f657baa071842c3ea744e7696f3", + "b23adea88f2fec6830a1f5ffb50015d01cd78eb6fe4f13981d23e4b8e2d2b2735729e79acbcecff74cb1571f529fbbce" + ], + "base_hash": "6568dd285df3bf23d7697217273249841707951516e67c4954243d5d80ad23da" + }, + { + "base_pubkeys": [ + "954be017bd960e3208f1661c1e5f372d5d5ec0955d3db00b14438d9b90ebc3f6a67853ee82e29bd5325888cc73e1ed67", + "8dc5afd8b102920503849b4a89165d75741163c690f2557d77fd3bad75a142f00197aa9f5fbde27926374bd0b29a7c96" + ], + "base_hash": "bdf6925e576dc08431ac6a590a64263c5ac3d8e5bd88113ac5777762fabd71a6" + } + ], + "bad_partial": { + "settings": { + "gen_id": "737472696e672d666f722d77726f6e67", + "n": 3, + "k": 2 + }, + "data": { + "base_pubkeys": [ + "a6602d395e8fbf67269a41a208613e42795c9e66d365dd87287162e31484cb0f84efaec36220714022bbd296e5357bc9", + "8a64f40fe2e976d01227b4085b42421c8c4c3549f539b8eb7ecad8833b5855ae1994126bfb9b6ff56a5f131f407462d8" + ], + "base_hash": "2cc6b806b3215210122226629b0d0872484d43754668bb90c4d1b5e401377890", + "partial_pubkey": "b6ac8c28c5f722cf095f83005bbfb403364231cd202e0793bfb69cd631e5cbc8d337a8dbe8dcb30615eea0a9dca98746", + "message_cleartext": "Sign with new partial key", + "message_signature": "b296d5309403d063f172cf97811f19cd1404f7b05f956d7b7ceaed375db1d3e6dc1b9f0544591bb562d25f7596abc9bd123b115dec61673a483ac4e5127959ee9886b94caa78c4c0393537d7ce5c203837f0073a14edde71f27b39af8794eb7b" + }, + "commitment": { + "hash": "63104ce69211e762c8c92e525931d0dad89cbb16e9860a31aa289c1326a393ee", + "pubkey": "b33a4b42995a61ee35a99de7f087233c572a48ff83cce22daa18d54c99b31bdcd16005f9e6384752a38ed44917257dde", + "signature": "8b15f0a2e0e98b6221cc1dad57b6b73ed0bcf354fbea2ce937f9dce749dcc0e619f802deac73327cf6fb5ec0f881f4431474bc7daffc5172118935ac1d1a77aa80142c76b124d9e9021b99fdaf1b4f18d1ba9e3e3e8854d24a57768925728f2c" + } + } + } +} diff --git a/test_vectors/wrong_final_key_generation/badreport-zero-k.json b/test_vectors/wrong_final_key_generation/badreport-zero-k.json new file mode 100644 index 0000000..1b72c8d --- /dev/null +++ b/test_vectors/wrong_final_key_generation/badreport-zero-k.json @@ -0,0 +1,58 @@ +{ + "params": { + "cmd_extra_args": "execute --type=bad-partial-key --json-schema-file=spec/bad_partial_key_spec.json", + "expected_exit_code": 1 + }, + "scenario": { + "settings": { + "gen_id": "8d17e61db7b774d16cb165662a8c2c4a", + "n": 3, + "k": 2 + }, + "generations": [ + { + "base_pubkeys": [ + "a6602d395e8fbf67269a41a208613e42795c9e66d365dd87287162e31484cb0f84efaec36220714022bbd296e5357bc9", + "8a64f40fe2e976d01227b4085b42421c8c4c3549f539b8eb7ecad8833b5855ae1994126bfb9b6ff56a5f131f407462d8" + ], + "base_hash": "2cc6b806b3215210122226629b0d0872484d43754668bb90c4d1b5e401377890" + }, + { + "base_pubkeys": [ + "b66242ce81deb25d60560c0c8f7e35e4ed9760887d7e877461bc2ded650c7d2728bd0f657baa071842c3ea744e7696f3", + "b23adea88f2fec6830a1f5ffb50015d01cd78eb6fe4f13981d23e4b8e2d2b2735729e79acbcecff74cb1571f529fbbce" + ], + "base_hash": "6568dd285df3bf23d7697217273249841707951516e67c4954243d5d80ad23da" + }, + { + "base_pubkeys": [ + "954be017bd960e3208f1661c1e5f372d5d5ec0955d3db00b14438d9b90ebc3f6a67853ee82e29bd5325888cc73e1ed67", + "8dc5afd8b102920503849b4a89165d75741163c690f2557d77fd3bad75a142f00197aa9f5fbde27926374bd0b29a7c96" + ], + "base_hash": "bdf6925e576dc08431ac6a590a64263c5ac3d8e5bd88113ac5777762fabd71a6" + } + ], + "bad_partial": { + "settings": { + "gen_id": "8d17e61db7b774d16cb165662a8c2c4a", + "n": 3, + "k": 0 + }, + "data": { + "base_pubkeys": [ + "a6602d395e8fbf67269a41a208613e42795c9e66d365dd87287162e31484cb0f84efaec36220714022bbd296e5357bc9", + "8a64f40fe2e976d01227b4085b42421c8c4c3549f539b8eb7ecad8833b5855ae1994126bfb9b6ff56a5f131f407462d8" + ], + "base_hash": "2cc6b806b3215210122226629b0d0872484d43754668bb90c4d1b5e401377890", + "partial_pubkey": "b6ac8c28c5f722cf095f83005bbfb403364231cd202e0793bfb69cd631e5cbc8d337a8dbe8dcb30615eea0a9dca98746", + "message_cleartext": "Sign with new partial key", + "message_signature": "b296d5309403d063f172cf97811f19cd1404f7b05f956d7b7ceaed375db1d3e6dc1b9f0544591bb562d25f7596abc9bd123b115dec61673a483ac4e5127959ee9886b94caa78c4c0393537d7ce5c203837f0073a14edde71f27b39af8794eb7b" + }, + "commitment": { + "hash": "6b896496080104ae52c023381a61e8bd1c03325e6401e73125c20f254ced7b7a", + "pubkey": "b33a4b42995a61ee35a99de7f087233c572a48ff83cce22daa18d54c99b31bdcd16005f9e6384752a38ed44917257dde", + "signature": "b179c9679b4df47fd22f483f1d40e6261d32cf7adf7995205a8e1564fdeb99b2d7ef4387b9e303fcd97c109e722a1d2118d0645a65fc1de4aae392c320adeba22aef744b9ba9c417b608deac5870f80ecb25d731220119523e7b0c92067e725a" + } + } + } +}