Skip to content

Commit 764ff37

Browse files
jonasnickreal-or-random
authored andcommitted
musig: replace point_{save,load} with ge_{to,from}_bytes
1 parent 54d3922 commit 764ff37

File tree

3 files changed

+8
-49
lines changed

3 files changed

+8
-49
lines changed

src/modules/musig/keyagg.h

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -27,15 +27,6 @@ typedef struct {
2727
int parity_acc;
2828
} secp256k1_keyagg_cache_internal;
2929

30-
/* Save and load points to and from byte arrays, similar to
31-
* secp256k1_pubkey_{save,load}. */
32-
static void secp256k1_point_save(unsigned char *data, secp256k1_ge *ge);
33-
34-
/* In contrast to pubkey_load, point_load does not attempt to check that data
35-
* has been initialized, since it is assumed that this check already happened
36-
* (e.g. by comparing magic bytes) */
37-
static void secp256k1_point_load(secp256k1_ge *ge, const unsigned char *data);
38-
3930
/* point_save_ext and point_load_ext are identical to point_save and point_load
4031
* except that they allow saving and loading the point at infinity */
4132
static void secp256k1_point_save_ext(unsigned char *data, secp256k1_ge *ge);

src/modules/musig/keyagg_impl.h

Lines changed: 4 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -17,43 +17,11 @@
1717
#include "../../hash.h"
1818
#include "../../util.h"
1919

20-
static void secp256k1_point_save(unsigned char *data, secp256k1_ge *ge) {
21-
if (sizeof(secp256k1_ge_storage) == 64) {
22-
secp256k1_ge_storage s;
23-
secp256k1_ge_to_storage(&s, ge);
24-
memcpy(data, &s, sizeof(s));
25-
} else {
26-
VERIFY_CHECK(!secp256k1_ge_is_infinity(ge));
27-
secp256k1_fe_normalize_var(&ge->x);
28-
secp256k1_fe_normalize_var(&ge->y);
29-
secp256k1_fe_get_b32(data, &ge->x);
30-
secp256k1_fe_get_b32(data + 32, &ge->y);
31-
}
32-
}
33-
34-
static void secp256k1_point_load(secp256k1_ge *ge, const unsigned char *data) {
35-
if (sizeof(secp256k1_ge_storage) == 64) {
36-
/* When the secp256k1_ge_storage type is exactly 64 byte, use its
37-
* representation as conversion is very fast. */
38-
secp256k1_ge_storage s;
39-
memcpy(&s, data, sizeof(s));
40-
secp256k1_ge_from_storage(ge, &s);
41-
} else {
42-
/* Otherwise, fall back to 32-byte big endian for X and Y. */
43-
secp256k1_fe x, y;
44-
int ret = 1;
45-
ret &= secp256k1_fe_set_b32_limit(&x, data);
46-
ret &= secp256k1_fe_set_b32_limit(&y, data + 32);
47-
VERIFY_CHECK(ret);
48-
secp256k1_ge_set_xy(ge, &x, &y);
49-
}
50-
}
51-
5220
static void secp256k1_point_save_ext(unsigned char *data, secp256k1_ge *ge) {
5321
if (secp256k1_ge_is_infinity(ge)) {
5422
memset(data, 0, 64);
5523
} else {
56-
secp256k1_point_save(data, ge);
24+
secp256k1_ge_to_bytes(data, ge);
5725
}
5826
}
5927

@@ -62,7 +30,7 @@ static void secp256k1_point_load_ext(secp256k1_ge *ge, const unsigned char *data
6230
if (secp256k1_memcmp_var(data, zeros, sizeof(zeros)) == 0) {
6331
secp256k1_ge_set_infinity(ge);
6432
} else {
65-
secp256k1_point_load(ge, data);
33+
secp256k1_ge_from_bytes(ge, data);
6634
}
6735
}
6836

@@ -82,7 +50,7 @@ static void secp256k1_keyagg_cache_save(secp256k1_musig_keyagg_cache *cache, sec
8250
unsigned char *ptr = cache->data;
8351
memcpy(ptr, secp256k1_musig_keyagg_cache_magic, 4);
8452
ptr += 4;
85-
secp256k1_point_save(ptr, &cache_i->pk);
53+
secp256k1_ge_to_bytes(ptr, &cache_i->pk);
8654
ptr += 64;
8755
secp256k1_point_save_ext(ptr, &cache_i->second_pk);
8856
ptr += 64;
@@ -97,7 +65,7 @@ static int secp256k1_keyagg_cache_load(const secp256k1_context* ctx, secp256k1_k
9765
const unsigned char *ptr = cache->data;
9866
ARG_CHECK(secp256k1_memcmp_var(ptr, secp256k1_musig_keyagg_cache_magic, 4) == 0);
9967
ptr += 4;
100-
secp256k1_point_load(&cache_i->pk, ptr);
68+
secp256k1_ge_from_bytes(&cache_i->pk, ptr);
10169
ptr += 64;
10270
secp256k1_point_load_ext(&cache_i->second_pk, ptr);
10371
ptr += 64;

src/modules/musig/session_impl.h

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -26,15 +26,15 @@ static void secp256k1_musig_secnonce_save(secp256k1_musig_secnonce *secnonce, co
2626
memcpy(&secnonce->data[0], secp256k1_musig_secnonce_magic, 4);
2727
secp256k1_scalar_get_b32(&secnonce->data[4], &k[0]);
2828
secp256k1_scalar_get_b32(&secnonce->data[36], &k[1]);
29-
secp256k1_point_save(&secnonce->data[68], pk);
29+
secp256k1_ge_to_bytes(&secnonce->data[68], pk);
3030
}
3131

3232
static int secp256k1_musig_secnonce_load(const secp256k1_context* ctx, secp256k1_scalar *k, secp256k1_ge *pk, secp256k1_musig_secnonce *secnonce) {
3333
int is_zero;
3434
ARG_CHECK(secp256k1_memcmp_var(&secnonce->data[0], secp256k1_musig_secnonce_magic, 4) == 0);
3535
secp256k1_scalar_set_b32(&k[0], &secnonce->data[4], NULL);
3636
secp256k1_scalar_set_b32(&k[1], &secnonce->data[36], NULL);
37-
secp256k1_point_load(pk, &secnonce->data[68]);
37+
secp256k1_ge_from_bytes(pk, &secnonce->data[68]);
3838
/* We make very sure that the nonce isn't invalidated by checking the values
3939
* in addition to the magic. */
4040
is_zero = secp256k1_scalar_is_zero(&k[0]) & secp256k1_scalar_is_zero(&k[1]);
@@ -62,7 +62,7 @@ static void secp256k1_musig_pubnonce_save(secp256k1_musig_pubnonce* nonce, secp2
6262
int i;
6363
memcpy(&nonce->data[0], secp256k1_musig_pubnonce_magic, 4);
6464
for (i = 0; i < 2; i++) {
65-
secp256k1_point_save(nonce->data + 4+64*i, &ge[i]);
65+
secp256k1_ge_to_bytes(nonce->data + 4+64*i, &ge[i]);
6666
}
6767
}
6868

@@ -73,7 +73,7 @@ static int secp256k1_musig_pubnonce_load(const secp256k1_context* ctx, secp256k1
7373

7474
ARG_CHECK(secp256k1_memcmp_var(&nonce->data[0], secp256k1_musig_pubnonce_magic, 4) == 0);
7575
for (i = 0; i < 2; i++) {
76-
secp256k1_point_load(&ge[i], nonce->data + 4 + 64*i);
76+
secp256k1_ge_from_bytes(&ge[i], nonce->data + 4 + 64*i);
7777
}
7878
return 1;
7979
}

0 commit comments

Comments
 (0)