mirror of
https://github.com/serai-dex/serai.git
synced 2025-12-08 12:19:24 +00:00
Rename ThresholdKeys::secret_share to ThresholdKeys::original_secret_share
This commit is contained in:
40
Cargo.lock
generated
40
Cargo.lock
generated
@@ -1068,7 +1068,7 @@ dependencies = [
|
|||||||
"bitcoin",
|
"bitcoin",
|
||||||
"hex",
|
"hex",
|
||||||
"k256",
|
"k256",
|
||||||
"modular-frost 0.10.0",
|
"modular-frost 0.10.1",
|
||||||
"rand_core",
|
"rand_core",
|
||||||
"secp256k1",
|
"secp256k1",
|
||||||
"serde",
|
"serde",
|
||||||
@@ -2247,7 +2247,7 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "dkg"
|
name = "dkg"
|
||||||
version = "0.6.0"
|
version = "0.6.1"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"borsh",
|
"borsh",
|
||||||
"ciphersuite 0.4.1",
|
"ciphersuite 0.4.1",
|
||||||
@@ -2261,7 +2261,7 @@ name = "dkg-dealer"
|
|||||||
version = "0.6.0"
|
version = "0.6.0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"ciphersuite 0.4.1",
|
"ciphersuite 0.4.1",
|
||||||
"dkg 0.6.0",
|
"dkg 0.6.1",
|
||||||
"rand_core",
|
"rand_core",
|
||||||
"std-shims",
|
"std-shims",
|
||||||
"zeroize",
|
"zeroize",
|
||||||
@@ -2272,7 +2272,7 @@ name = "dkg-musig"
|
|||||||
version = "0.6.0"
|
version = "0.6.0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"ciphersuite 0.4.1",
|
"ciphersuite 0.4.1",
|
||||||
"dkg 0.6.0",
|
"dkg 0.6.1",
|
||||||
"dkg-recovery",
|
"dkg-recovery",
|
||||||
"multiexp 0.4.0",
|
"multiexp 0.4.0",
|
||||||
"rand_core",
|
"rand_core",
|
||||||
@@ -2287,7 +2287,7 @@ version = "0.6.0"
|
|||||||
dependencies = [
|
dependencies = [
|
||||||
"chacha20",
|
"chacha20",
|
||||||
"ciphersuite 0.4.1",
|
"ciphersuite 0.4.1",
|
||||||
"dkg 0.6.0",
|
"dkg 0.6.1",
|
||||||
"dleq 0.4.1",
|
"dleq 0.4.1",
|
||||||
"flexible-transcript",
|
"flexible-transcript",
|
||||||
"multiexp 0.4.0",
|
"multiexp 0.4.0",
|
||||||
@@ -2299,10 +2299,10 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "dkg-promote"
|
name = "dkg-promote"
|
||||||
version = "0.6.0"
|
version = "0.6.1"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"ciphersuite 0.4.1",
|
"ciphersuite 0.4.1",
|
||||||
"dkg 0.6.0",
|
"dkg 0.6.1",
|
||||||
"dkg-recovery",
|
"dkg-recovery",
|
||||||
"dleq 0.4.1",
|
"dleq 0.4.1",
|
||||||
"flexible-transcript",
|
"flexible-transcript",
|
||||||
@@ -2316,7 +2316,7 @@ name = "dkg-recovery"
|
|||||||
version = "0.6.0"
|
version = "0.6.0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"ciphersuite 0.4.1",
|
"ciphersuite 0.4.1",
|
||||||
"dkg 0.6.0",
|
"dkg 0.6.1",
|
||||||
"thiserror 2.0.14",
|
"thiserror 2.0.14",
|
||||||
"zeroize",
|
"zeroize",
|
||||||
]
|
]
|
||||||
@@ -2584,7 +2584,7 @@ dependencies = [
|
|||||||
"flexible-transcript",
|
"flexible-transcript",
|
||||||
"group",
|
"group",
|
||||||
"k256",
|
"k256",
|
||||||
"modular-frost 0.10.0",
|
"modular-frost 0.10.1",
|
||||||
"rand_core",
|
"rand_core",
|
||||||
"thiserror 1.0.64",
|
"thiserror 1.0.64",
|
||||||
"tokio",
|
"tokio",
|
||||||
@@ -2748,7 +2748,7 @@ checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80"
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "flexible-transcript"
|
name = "flexible-transcript"
|
||||||
version = "0.3.2"
|
version = "0.3.3"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"blake2",
|
"blake2",
|
||||||
"digest 0.10.7",
|
"digest 0.10.7",
|
||||||
@@ -2971,7 +2971,7 @@ dependencies = [
|
|||||||
"ciphersuite 0.4.1",
|
"ciphersuite 0.4.1",
|
||||||
"flexible-transcript",
|
"flexible-transcript",
|
||||||
"group",
|
"group",
|
||||||
"modular-frost 0.10.0",
|
"modular-frost 0.10.1",
|
||||||
"rand_core",
|
"rand_core",
|
||||||
"schnorr-signatures 0.5.1",
|
"schnorr-signatures 0.5.1",
|
||||||
"schnorrkel",
|
"schnorrkel",
|
||||||
@@ -4953,12 +4953,12 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "modular-frost"
|
name = "modular-frost"
|
||||||
version = "0.10.0"
|
version = "0.10.1"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"ciphersuite 0.4.1",
|
"ciphersuite 0.4.1",
|
||||||
"dalek-ff-group",
|
"dalek-ff-group",
|
||||||
"digest 0.10.7",
|
"digest 0.10.7",
|
||||||
"dkg 0.6.0",
|
"dkg 0.6.1",
|
||||||
"dkg-dealer",
|
"dkg-dealer",
|
||||||
"dkg-recovery",
|
"dkg-recovery",
|
||||||
"flexible-transcript",
|
"flexible-transcript",
|
||||||
@@ -8152,7 +8152,7 @@ dependencies = [
|
|||||||
"frame-system",
|
"frame-system",
|
||||||
"frost-schnorrkel",
|
"frost-schnorrkel",
|
||||||
"hex",
|
"hex",
|
||||||
"modular-frost 0.10.0",
|
"modular-frost 0.10.1",
|
||||||
"monero-wallet",
|
"monero-wallet",
|
||||||
"multiaddr",
|
"multiaddr",
|
||||||
"parity-scale-codec",
|
"parity-scale-codec",
|
||||||
@@ -8214,7 +8214,7 @@ dependencies = [
|
|||||||
"hex",
|
"hex",
|
||||||
"libp2p",
|
"libp2p",
|
||||||
"log",
|
"log",
|
||||||
"modular-frost 0.10.0",
|
"modular-frost 0.10.1",
|
||||||
"parity-scale-codec",
|
"parity-scale-codec",
|
||||||
"rand_core",
|
"rand_core",
|
||||||
"schnorr-signatures 0.5.1",
|
"schnorr-signatures 0.5.1",
|
||||||
@@ -8239,7 +8239,7 @@ dependencies = [
|
|||||||
"blake2",
|
"blake2",
|
||||||
"borsh",
|
"borsh",
|
||||||
"ciphersuite 0.4.1",
|
"ciphersuite 0.4.1",
|
||||||
"dkg 0.6.0",
|
"dkg 0.6.1",
|
||||||
"dockertest",
|
"dockertest",
|
||||||
"hex",
|
"hex",
|
||||||
"parity-scale-codec",
|
"parity-scale-codec",
|
||||||
@@ -8483,7 +8483,7 @@ dependencies = [
|
|||||||
"bitcoin-serai",
|
"bitcoin-serai",
|
||||||
"ciphersuite 0.4.1",
|
"ciphersuite 0.4.1",
|
||||||
"dalek-ff-group",
|
"dalek-ff-group",
|
||||||
"dkg 0.6.0",
|
"dkg 0.6.1",
|
||||||
"dkg-dealer",
|
"dkg-dealer",
|
||||||
"dkg-musig",
|
"dkg-musig",
|
||||||
"dkg-recovery",
|
"dkg-recovery",
|
||||||
@@ -8591,7 +8591,7 @@ dependencies = [
|
|||||||
"hex",
|
"hex",
|
||||||
"k256",
|
"k256",
|
||||||
"log",
|
"log",
|
||||||
"modular-frost 0.10.0",
|
"modular-frost 0.10.1",
|
||||||
"monero-simple-request-rpc",
|
"monero-simple-request-rpc",
|
||||||
"monero-wallet",
|
"monero-wallet",
|
||||||
"parity-scale-codec",
|
"parity-scale-codec",
|
||||||
@@ -8617,7 +8617,7 @@ name = "serai-processor-messages"
|
|||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"borsh",
|
"borsh",
|
||||||
"dkg 0.6.0",
|
"dkg 0.6.1",
|
||||||
"parity-scale-codec",
|
"parity-scale-codec",
|
||||||
"serai-coins-primitives",
|
"serai-coins-primitives",
|
||||||
"serai-in-instructions-primitives",
|
"serai-in-instructions-primitives",
|
||||||
@@ -8633,7 +8633,7 @@ dependencies = [
|
|||||||
"borsh",
|
"borsh",
|
||||||
"ciphersuite 0.4.1",
|
"ciphersuite 0.4.1",
|
||||||
"curve25519-dalek",
|
"curve25519-dalek",
|
||||||
"dkg 0.6.0",
|
"dkg 0.6.1",
|
||||||
"dockertest",
|
"dockertest",
|
||||||
"ethereum-serai",
|
"ethereum-serai",
|
||||||
"hex",
|
"hex",
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "dkg"
|
name = "dkg"
|
||||||
version = "0.6.0"
|
version = "0.6.1"
|
||||||
description = "Distributed key generation over ff/group"
|
description = "Distributed key generation over ff/group"
|
||||||
license = "MIT"
|
license = "MIT"
|
||||||
repository = "https://github.com/serai-dex/serai/tree/develop/crypto/dkg"
|
repository = "https://github.com/serai-dex/serai/tree/develop/crypto/dkg"
|
||||||
|
|||||||
@@ -47,7 +47,7 @@ pub fn test_musig() {
|
|||||||
|
|
||||||
verification_shares.insert(
|
verification_shares.insert(
|
||||||
these_keys.params().i(),
|
these_keys.params().i(),
|
||||||
<Ristretto as Ciphersuite>::generator() * **these_keys.secret_share(),
|
<Ristretto as Ciphersuite>::generator() * **these_keys.original_secret_share(),
|
||||||
);
|
);
|
||||||
|
|
||||||
assert_eq!(these_keys.group_key(), group_key);
|
assert_eq!(these_keys.group_key(), group_key);
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "dkg-promote"
|
name = "dkg-promote"
|
||||||
version = "0.6.0"
|
version = "0.6.1"
|
||||||
description = "Promotions for keys from the dkg crate"
|
description = "Promotions for keys from the dkg crate"
|
||||||
license = "MIT"
|
license = "MIT"
|
||||||
repository = "https://github.com/serai-dex/serai/tree/develop/crypto/dkg/promote"
|
repository = "https://github.com/serai-dex/serai/tree/develop/crypto/dkg/promote"
|
||||||
@@ -25,7 +25,7 @@ transcript = { package = "flexible-transcript", path = "../../transcript", versi
|
|||||||
ciphersuite = { path = "../../ciphersuite", version = "^0.4.1", default-features = false, features = ["std"] }
|
ciphersuite = { path = "../../ciphersuite", version = "^0.4.1", default-features = false, features = ["std"] }
|
||||||
dleq = { path = "../../dleq", version = "^0.4.1", default-features = false, features = ["std", "serialize"] }
|
dleq = { path = "../../dleq", version = "^0.4.1", default-features = false, features = ["std", "serialize"] }
|
||||||
|
|
||||||
dkg = { path = "../", version = "0.6", default-features = false, features = ["std"] }
|
dkg = { path = "../", version = "0.6.1", default-features = false, features = ["std"] }
|
||||||
|
|
||||||
[dev-dependencies]
|
[dev-dependencies]
|
||||||
zeroize = { version = "^1.5", default-features = false, features = ["std", "zeroize_derive"] }
|
zeroize = { version = "^1.5", default-features = false, features = ["std", "zeroize_derive"] }
|
||||||
|
|||||||
@@ -104,12 +104,12 @@ impl<C1: Ciphersuite, C2: Ciphersuite<F = C1::F, G = C1::G>> GeneratorPromotion<
|
|||||||
) -> (GeneratorPromotion<C1, C2>, GeneratorProof<C1>) {
|
) -> (GeneratorPromotion<C1, C2>, GeneratorProof<C1>) {
|
||||||
// Do a DLEqProof for the new generator
|
// Do a DLEqProof for the new generator
|
||||||
let proof = GeneratorProof {
|
let proof = GeneratorProof {
|
||||||
share: C2::generator() * base.secret_share().deref(),
|
share: C2::generator() * base.original_secret_share().deref(),
|
||||||
proof: DLEqProof::prove(
|
proof: DLEqProof::prove(
|
||||||
rng,
|
rng,
|
||||||
&mut transcript(&base.original_group_key(), base.params().i()),
|
&mut transcript(&base.original_group_key(), base.params().i()),
|
||||||
&[C1::generator(), C2::generator()],
|
&[C1::generator(), C2::generator()],
|
||||||
base.secret_share(),
|
base.original_secret_share(),
|
||||||
),
|
),
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -159,7 +159,7 @@ impl<C1: Ciphersuite, C2: Ciphersuite<F = C1::F, G = C1::G>> GeneratorPromotion<
|
|||||||
ThresholdKeys::new(
|
ThresholdKeys::new(
|
||||||
params,
|
params,
|
||||||
self.base.interpolation().clone(),
|
self.base.interpolation().clone(),
|
||||||
self.base.secret_share().clone(),
|
self.base.original_secret_share().clone(),
|
||||||
verification_shares,
|
verification_shares,
|
||||||
)
|
)
|
||||||
.unwrap(),
|
.unwrap(),
|
||||||
|
|||||||
@@ -99,13 +99,16 @@ fn test_generator_promotion() {
|
|||||||
for (i, promoting) in promotions.drain() {
|
for (i, promoting) in promotions.drain() {
|
||||||
let promoted = promoting.complete(&clone_without(&proofs, &i)).unwrap();
|
let promoted = promoting.complete(&clone_without(&proofs, &i)).unwrap();
|
||||||
assert_eq!(keys[usize::from(u16::from(i) - 1)].params(), promoted.params());
|
assert_eq!(keys[usize::from(u16::from(i) - 1)].params(), promoted.params());
|
||||||
assert_eq!(keys[usize::from(u16::from(i) - 1)].secret_share(), promoted.secret_share());
|
assert_eq!(
|
||||||
|
keys[usize::from(u16::from(i) - 1)].original_secret_share(),
|
||||||
|
promoted.original_secret_share()
|
||||||
|
);
|
||||||
assert_eq!(new_group_key, promoted.group_key());
|
assert_eq!(new_group_key, promoted.group_key());
|
||||||
for l in 0 .. PARTICIPANTS {
|
for l in 0 .. PARTICIPANTS {
|
||||||
let verification_share =
|
let verification_share =
|
||||||
promoted.original_verification_share(Participant::new(l + 1).unwrap());
|
promoted.original_verification_share(Participant::new(l + 1).unwrap());
|
||||||
assert_eq!(
|
assert_eq!(
|
||||||
AltGenerator::<Ristretto>::generator() * **keys[usize::from(l)].secret_share(),
|
AltGenerator::<Ristretto>::generator() * **keys[usize::from(l)].original_secret_share(),
|
||||||
verification_share
|
verification_share
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -444,8 +444,8 @@ impl<C: Ciphersuite> ThresholdKeys<C> {
|
|||||||
(self.core.group_key * self.scalar) + (C::generator() * self.offset)
|
(self.core.group_key * self.scalar) + (C::generator() * self.offset)
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Return the secret share for these keys.
|
/// Return the underlying secret share for these keys, without any tweaks applied.
|
||||||
pub fn secret_share(&self) -> &Zeroizing<C::F> {
|
pub fn original_secret_share(&self) -> &Zeroizing<C::F> {
|
||||||
&self.core.secret_share
|
&self.core.secret_share
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -489,7 +489,7 @@ impl<C: Ciphersuite> ThresholdKeys<C> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// The interpolation occurs multiplicatively, letting us scale by the scalar now
|
// The interpolation occurs multiplicatively, letting us scale by the scalar now
|
||||||
let secret_share_scaled = Zeroizing::new(self.scalar * self.secret_share().deref());
|
let secret_share_scaled = Zeroizing::new(self.scalar * self.original_secret_share().deref());
|
||||||
let mut secret_share = Zeroizing::new(
|
let mut secret_share = Zeroizing::new(
|
||||||
self.core.interpolation.interpolation_factor(self.params().i(), &included) *
|
self.core.interpolation.interpolation_factor(self.params().i(), &included) *
|
||||||
secret_share_scaled.deref(),
|
secret_share_scaled.deref(),
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "modular-frost"
|
name = "modular-frost"
|
||||||
version = "0.10.0"
|
version = "0.10.1"
|
||||||
description = "Modular implementation of FROST over ff/group"
|
description = "Modular implementation of FROST over ff/group"
|
||||||
license = "MIT"
|
license = "MIT"
|
||||||
repository = "https://github.com/serai-dex/serai/tree/develop/crypto/frost"
|
repository = "https://github.com/serai-dex/serai/tree/develop/crypto/frost"
|
||||||
@@ -39,7 +39,7 @@ multiexp = { path = "../multiexp", version = "0.4", default-features = false, fe
|
|||||||
|
|
||||||
schnorr = { package = "schnorr-signatures", path = "../schnorr", version = "^0.5.1", default-features = false, features = ["std"] }
|
schnorr = { package = "schnorr-signatures", path = "../schnorr", version = "^0.5.1", default-features = false, features = ["std"] }
|
||||||
|
|
||||||
dkg = { path = "../dkg", version = "0.6", default-features = false, features = ["std"] }
|
dkg = { path = "../dkg", version = "0.6.1", default-features = false, features = ["std"] }
|
||||||
dkg-recovery = { path = "../dkg/recovery", version = "0.6", default-features = false, features = ["std"], optional = true }
|
dkg-recovery = { path = "../dkg/recovery", version = "0.6", default-features = false, features = ["std"], optional = true }
|
||||||
dkg-dealer = { path = "../dkg/dealer", version = "0.6", default-features = false, features = ["std"], optional = true }
|
dkg-dealer = { path = "../dkg/dealer", version = "0.6", default-features = false, features = ["std"], optional = true }
|
||||||
|
|
||||||
|
|||||||
@@ -125,8 +125,11 @@ impl<C: Curve, A: Algorithm<C>> AlgorithmMachine<C, A> {
|
|||||||
let mut params = self.params;
|
let mut params = self.params;
|
||||||
|
|
||||||
let mut rng = ChaCha20Rng::from_seed(*seed.0);
|
let mut rng = ChaCha20Rng::from_seed(*seed.0);
|
||||||
let (nonces, commitments) =
|
let (nonces, commitments) = Commitments::new::<_>(
|
||||||
Commitments::new::<_>(&mut rng, params.keys.secret_share(), ¶ms.algorithm.nonces());
|
&mut rng,
|
||||||
|
params.keys.original_secret_share(),
|
||||||
|
¶ms.algorithm.nonces(),
|
||||||
|
);
|
||||||
let addendum = params.algorithm.preprocess_addendum(&mut rng, ¶ms.keys);
|
let addendum = params.algorithm.preprocess_addendum(&mut rng, ¶ms.keys);
|
||||||
|
|
||||||
let preprocess = Preprocess { commitments, addendum };
|
let preprocess = Preprocess { commitments, addendum };
|
||||||
|
|||||||
@@ -133,7 +133,7 @@ fn vectors_to_multisig_keys<C: Curve>(vectors: &Vectors) -> HashMap<Participant,
|
|||||||
assert_eq!(usize::from(these_keys.params().n()), shares.len());
|
assert_eq!(usize::from(these_keys.params().n()), shares.len());
|
||||||
let participant = Participant::new(i).unwrap();
|
let participant = Participant::new(i).unwrap();
|
||||||
assert_eq!(these_keys.params().i(), participant);
|
assert_eq!(these_keys.params().i(), participant);
|
||||||
assert_eq!(these_keys.secret_share().deref(), &shares[usize::from(i - 1)]);
|
assert_eq!(these_keys.original_secret_share().deref(), &shares[usize::from(i - 1)]);
|
||||||
assert_eq!(hex::encode(these_keys.group_key().to_bytes().as_ref()), vectors.group_key);
|
assert_eq!(hex::encode(these_keys.group_key().to_bytes().as_ref()), vectors.group_key);
|
||||||
keys.insert(participant, these_keys);
|
keys.insert(participant, these_keys);
|
||||||
}
|
}
|
||||||
@@ -346,13 +346,20 @@ pub fn test_with_vectors<R: RngCore + CryptoRng, C: Curve, H: Hram<C>>(
|
|||||||
|
|
||||||
// Calculate the expected nonces
|
// Calculate the expected nonces
|
||||||
let mut expected = (C::generator() *
|
let mut expected = (C::generator() *
|
||||||
C::random_nonce(keys[i].secret_share(), &mut TransparentRng(vec![randomness.0])).deref())
|
C::random_nonce(
|
||||||
|
keys[i].original_secret_share(),
|
||||||
|
&mut TransparentRng(vec![randomness.0]),
|
||||||
|
)
|
||||||
|
.deref())
|
||||||
.to_bytes()
|
.to_bytes()
|
||||||
.as_ref()
|
.as_ref()
|
||||||
.to_vec();
|
.to_vec();
|
||||||
expected.extend(
|
expected.extend(
|
||||||
(C::generator() *
|
(C::generator() *
|
||||||
C::random_nonce(keys[i].secret_share(), &mut TransparentRng(vec![randomness.1]))
|
C::random_nonce(
|
||||||
|
keys[i].original_secret_share(),
|
||||||
|
&mut TransparentRng(vec![randomness.1]),
|
||||||
|
)
|
||||||
.deref())
|
.deref())
|
||||||
.to_bytes()
|
.to_bytes()
|
||||||
.as_ref(),
|
.as_ref(),
|
||||||
|
|||||||
Reference in New Issue
Block a user