Skip to content

Commit 312ff27

Browse files
committed
musig: Securely clear secnonce in partial_sign
Replace memset which can be optimized out.
1 parent f36afb8 commit 312ff27

File tree

1 file changed

+6
-2
lines changed

1 file changed

+6
-2
lines changed

src/modules/musig/session_impl.h

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -678,8 +678,12 @@ int secp256k1_musig_partial_sign(const secp256k1_context* ctx, secp256k1_musig_p
678678
/* Fails if the magic doesn't match */
679679
ret = secp256k1_musig_secnonce_load(ctx, k, &pk, secnonce);
680680
/* Set nonce to zero to avoid nonce reuse. This will cause subsequent calls
681-
* of this function to fail */
682-
memset(secnonce, 0, sizeof(*secnonce));
681+
* of this function to fail. Declassify as memclear marks the bytes
682+
* as undefined. */
683+
secp256k1_memclear(secnonce, sizeof(*secnonce));
684+
secp256k1_declassify(ctx, secnonce->data, sizeof(secp256k1_musig_secnonce_magic));
685+
secp256k1_declassify(ctx, &secnonce->data[68], 64);
686+
683687
if (!ret) {
684688
secp256k1_musig_partial_sign_clear(&sk, k);
685689
return 0;

0 commit comments

Comments
 (0)