Skip to content

Commit fc81d54

Browse files
committed
Automatically decrypt the secret package passed to dkg::round3
1 parent a562e38 commit fc81d54

File tree

1 file changed

+12
-20
lines changed

1 file changed

+12
-20
lines changed

src/dkg/round3.rs

Lines changed: 12 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -8,17 +8,17 @@ use crate::dkg::group_key::GroupSecretKey;
88
use crate::dkg::group_key::GroupSecretKeyShard;
99
use crate::dkg::round1;
1010
use crate::dkg::round2;
11-
use crate::frost::keys::dkg::round2::SecretPackage as Round2SecretPackage;
11+
use crate::dkg::round2::import_secret_package;
12+
use crate::frost::keys::dkg::part3;
13+
use crate::frost::keys::KeyPackage;
14+
use crate::frost::keys::PublicKeyPackage;
1215
use crate::participant::Secret;
13-
use reddsa::frost::redjubjub::keys::dkg::part3;
14-
use reddsa::frost::redjubjub::keys::KeyPackage;
15-
use reddsa::frost::redjubjub::keys::PublicKeyPackage;
1616
use std::borrow::Borrow;
1717
use std::collections::BTreeMap;
1818

1919
pub fn round3<'a, P, Q>(
2020
secret: &Secret,
21-
round2_secret_package: &Round2SecretPackage,
21+
round2_secret_package: &[u8],
2222
round1_public_packages: P,
2323
round2_public_packages: Q,
2424
) -> Result<(KeyPackage, PublicKeyPackage, GroupSecretKey), Error>
@@ -27,10 +27,12 @@ where
2727
Q: IntoIterator<Item = &'a round2::PublicPackage>,
2828
{
2929
let identity = secret.to_identity();
30+
let round2_secret_package =
31+
import_secret_package(round2_secret_package, secret).map_err(Error::DecryptionError)?;
3032
let round1_public_packages = round1_public_packages.into_iter().collect::<Vec<_>>();
3133
let round2_public_packages = round2_public_packages.into_iter().collect::<Vec<_>>();
3234

33-
let (min_signers, max_signers) = round2::get_secret_package_signers(round2_secret_package);
35+
let (min_signers, max_signers) = round2::get_secret_package_signers(&round2_secret_package);
3436

3537
// Ensure that the number of public packages provided matches max_signers
3638
let expected_round1_packages = max_signers as usize;
@@ -125,7 +127,7 @@ where
125127
assert_eq!(round2_public_packages.len(), round2_frost_packages.len());
126128

127129
let (key_package, public_key_package) = part3(
128-
round2_secret_package,
130+
&round2_secret_package,
129131
&round1_frost_packages,
130132
&round2_frost_packages,
131133
)
@@ -142,7 +144,6 @@ where
142144
mod tests {
143145
use super::*;
144146
use crate::dkg::round1;
145-
use crate::dkg::round2::import_secret_package;
146147
use crate::participant::Secret;
147148
use rand::thread_rng;
148149

@@ -188,12 +189,9 @@ mod tests {
188189
.find(|p| p.recipient_identity().eq(&identity1))
189190
.expect("should have package for identity1")];
190191

191-
let secret_package = import_secret_package(&encrypted_secret_package, &secret1)
192-
.expect("round 2 secret package import failed");
193-
194192
let result = round3(
195193
&secret1,
196-
&secret_package,
194+
&encrypted_secret_package,
197195
[&package2],
198196
round2_public_packages,
199197
);
@@ -246,12 +244,9 @@ mod tests {
246244
.find(|p| p.recipient_identity().eq(&identity1))
247245
.expect("should have package for identity1")];
248246

249-
let secret_package = import_secret_package(&encrypted_secret_package, &secret1)
250-
.expect("round 2 secret package import failed");
251-
252247
let result = round3(
253248
&secret1,
254-
&secret_package,
249+
&encrypted_secret_package,
255250
[&package1, &package1],
256251
round2_public_packages,
257252
);
@@ -339,12 +334,9 @@ mod tests {
339334
.expect("should have package for identity1"),
340335
];
341336

342-
let secret_package = import_secret_package(&encrypted_secret_package, &secret1)
343-
.expect("round 2 secret package import failed");
344-
345337
round3(
346338
&secret1,
347-
&secret_package,
339+
&encrypted_secret_package,
348340
[&package1, &package2, &package3],
349341
round2_public_packages,
350342
)

0 commit comments

Comments
 (0)