Skip to content

Commit e890822

Browse files
committed
examples: do not retry generating seckey randomness in musig
1 parent 70b6be1 commit e890822

File tree

1 file changed

+11
-8
lines changed

1 file changed

+11
-8
lines changed

examples/musig.c

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -38,14 +38,17 @@ struct signer {
3838
/* Create a key pair, store it in signer_secrets->keypair and signer->pubkey */
3939
static int create_keypair(const secp256k1_context* ctx, struct signer_secrets *signer_secrets, struct signer *signer) {
4040
unsigned char seckey[32];
41-
while (1) {
42-
if (!fill_random(seckey, sizeof(seckey))) {
43-
printf("Failed to generate randomness\n");
44-
return 0;
45-
}
46-
if (secp256k1_keypair_create(ctx, &signer_secrets->keypair, seckey)) {
47-
break;
48-
}
41+
42+
if (!fill_random(seckey, sizeof(seckey))) {
43+
printf("Failed to generate randomness\n");
44+
return 0;
45+
}
46+
/* Try to create a keypair with a valid context. This only fails if the
47+
* secret key is zero or out of range (greater than secp256k1's order). Note
48+
* that the probability of this occurring is negligible with a properly
49+
* functioning random number generator. */
50+
if (!secp256k1_keypair_create(ctx, &signer_secrets->keypair, seckey)) {
51+
return 0;
4952
}
5053
if (!secp256k1_keypair_pub(ctx, &signer->pubkey, &signer_secrets->keypair)) {
5154
return 0;

0 commit comments

Comments
 (0)