Skip to content

Commit 1438e2e

Browse files
author
Hugh Cunningham
committed
automatically decrypt secret package in round2
decrypt secret package from bytes in round2 instead of decrypting outside of round2 and passing in decrypted package
1 parent fc81d54 commit 1438e2e

File tree

2 files changed

+19
-48
lines changed

2 files changed

+19
-48
lines changed

src/dkg/round2.rs

Lines changed: 12 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@ use crate::dkg::error::Error;
1111
use crate::dkg::round1;
1212
use crate::frost;
1313
use crate::frost::keys::dkg::round1::Package as Round1Package;
14-
use crate::frost::keys::dkg::round1::SecretPackage as Round1SecretPackage;
1514
use crate::frost::keys::dkg::round2::Package;
1615
use crate::frost::keys::dkg::round2::SecretPackage;
1716
use crate::frost::keys::VerifiableSecretSharingCommitment;
@@ -258,19 +257,21 @@ impl PublicPackage {
258257
}
259258

260259
pub fn round2<'a, P, R>(
261-
self_identity: &Identity,
262-
round1_secret_package: &Round1SecretPackage,
260+
secret: &participant::Secret,
261+
round1_secret_package: &[u8],
263262
round1_public_packages: P,
264263
mut csrng: R,
265264
) -> Result<(Vec<u8>, Vec<PublicPackage>), Error>
266265
where
267266
P: IntoIterator<Item = &'a round1::PublicPackage>,
268267
R: RngCore + CryptoRng,
269268
{
270-
let round1_public_packages = round1_public_packages.into_iter().collect::<Vec<_>>();
269+
let self_identity = secret.to_identity();
270+
let round1_secret_package = round1::import_secret_package(round1_secret_package, secret)
271+
.map_err(Error::DecryptionError)?;
271272

272273
// Extract the min/max signers from the secret package
273-
let (min_signers, max_signers) = round1::get_secret_package_signers(round1_secret_package);
274+
let (min_signers, max_signers) = round1::get_secret_package_signers(&round1_secret_package);
274275

275276
let round1_public_packages = round1_public_packages.into_iter().collect::<Vec<_>>();
276277

@@ -333,7 +334,7 @@ where
333334

334335
// Encrypt the secret package
335336
let encrypted_secret_package =
336-
export_secret_package(&round2_secret_package, self_identity, &mut csrng)
337+
export_secret_package(&round2_secret_package, &self_identity, &mut csrng)
337338
.map_err(Error::EncryptionError)?;
338339

339340
// Convert the Identifier->Package map to an Identity->PublicPackage map
@@ -545,11 +546,8 @@ mod tests {
545546
)
546547
.expect("round 1 failed");
547548

548-
let round1_secret_package = round1::import_secret_package(&round1_secret_package, &secret)
549-
.expect("secret package import failed");
550-
551549
let (secret_package, round2_public_packages) = super::round2(
552-
&identity1,
550+
&secret,
553551
&round1_secret_package,
554552
[&package1, &package2, &package3],
555553
thread_rng(),
@@ -583,12 +581,9 @@ mod tests {
583581
.map(|id| round1::round1(id, 2, &identities, thread_rng()).expect("dkg round 1 failed"))
584582
.collect::<Vec<_>>();
585583

586-
let round1_secret_package = round1::import_secret_package(&round1_packages[0].0, &secret)
587-
.expect("secret package import failed");
588-
589584
let result = super::round2(
590-
&identities[0],
591-
&round1_secret_package,
585+
&secret,
586+
&round1_packages[0].0,
592587
[
593588
&round1_packages[0].1,
594589
&round1_packages[0].1,
@@ -618,12 +613,9 @@ mod tests {
618613
.map(|id| round1::round1(id, 2, &identities, thread_rng()).expect("dkg round 1 failed"))
619614
.collect::<Vec<_>>();
620615

621-
let round1_secret_package = round1::import_secret_package(&round1_packages[0].0, &secret)
622-
.expect("secret package import failed");
623-
624616
let result = super::round2(
625-
&identities[0],
626-
&round1_secret_package,
617+
&secret,
618+
&round1_packages[0].0,
627619
[&round1_packages[0].1, &round1_packages[1].1],
628620
thread_rng(),
629621
);

src/dkg/round3.rs

Lines changed: 7 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -162,22 +162,16 @@ mod tests {
162162
round1::round1(&identity2, 2, [&identity1, &identity2], thread_rng())
163163
.expect("round 1 failed");
164164

165-
let round1_secret_package_1 =
166-
round1::import_secret_package(&round1_secret_package_1, &secret1)
167-
.expect("secret package import failed");
168165
let (encrypted_secret_package, _) = round2::round2(
169-
&identity1,
166+
&secret1,
170167
&round1_secret_package_1,
171168
[&package1, &package2],
172169
thread_rng(),
173170
)
174171
.expect("round 2 failed");
175172

176-
let round1_secret_package_2 =
177-
round1::import_secret_package(&round1_secret_package_2, &secret2)
178-
.expect("secret package import failed");
179173
let (_, round2_public_packages_2) = round2::round2(
180-
&identity2,
174+
&secret2,
181175
&round1_secret_package_2,
182176
[&package1, &package2],
183177
thread_rng(),
@@ -217,22 +211,16 @@ mod tests {
217211
round1::round1(&identity2, 2, [&identity1, &identity2], thread_rng())
218212
.expect("round 1 failed");
219213

220-
let round1_secret_package_1 =
221-
round1::import_secret_package(&round1_secret_package_1, &secret1)
222-
.expect("secret package import failed");
223214
let (encrypted_secret_package, _) = round2::round2(
224-
&identity1,
215+
&secret1,
225216
&round1_secret_package_1,
226217
[&package1, &package2],
227218
thread_rng(),
228219
)
229220
.expect("round 2 failed");
230221

231-
let round1_secret_package_2 =
232-
round1::import_secret_package(&round1_secret_package_2, &secret2)
233-
.expect("secret package import failed");
234222
let (_, round2_public_packages_2) = round2::round2(
235-
&identity2,
223+
&secret2,
236224
&round1_secret_package_2,
237225
[&package1, &package2],
238226
thread_rng(),
@@ -290,33 +278,24 @@ mod tests {
290278
)
291279
.expect("round 1 failed");
292280

293-
let round1_secret_package_1 =
294-
round1::import_secret_package(&round1_secret_package_1, &secret1)
295-
.expect("secret package import failed");
296281
let (encrypted_secret_package, _) = round2::round2(
297-
&identity1,
282+
&secret1,
298283
&round1_secret_package_1,
299284
[&package1, &package2, &package3],
300285
thread_rng(),
301286
)
302287
.expect("round 2 failed");
303288

304-
let round1_secret_package_2 =
305-
round1::import_secret_package(&round1_secret_package_2, &secret2)
306-
.expect("secret package import failed");
307289
let (_, round2_public_packages_2) = round2::round2(
308-
&identity2,
290+
&secret2,
309291
&round1_secret_package_2,
310292
[&package1, &package2, &package3],
311293
thread_rng(),
312294
)
313295
.expect("round 2 failed");
314296

315-
let round1_secret_package_3 =
316-
round1::import_secret_package(&round1_secret_package_3, &secret3)
317-
.expect("secret package import failed");
318297
let (_, round2_public_packages_3) = round2::round2(
319-
&identity3,
298+
&secret3,
320299
&round1_secret_package_3,
321300
[&package1, &package2, &package3],
322301
thread_rng(),

0 commit comments

Comments
 (0)