aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFlorian Dold <florian.dold@gmail.com>2020-01-06 14:16:24 +0100
committerFlorian Dold <florian.dold@gmail.com>2020-01-06 14:16:24 +0100
commite8533c8a41e3fb29e51200d643382c8d5f882e5e (patch)
tree1b45c807840a5d9ac2cb17678756fe0ec5a574fa
parent1ad2fb331548adf635e9cff8786b468e54666371 (diff)
downloadgnunet-e8533c8a41e3fb29e51200d643382c8d5f882e5e.tar.gz
gnunet-e8533c8a41e3fb29e51200d643382c8d5f882e5e.zip
Don't normalize when deriving ECDSA public keys
-rw-r--r--src/util/crypto_ecc.c2
-rw-r--r--src/util/tweetnacl-gnunet.c7
-rw-r--r--src/util/tweetnacl-gnunet.h2
3 files changed, 5 insertions, 6 deletions
diff --git a/src/util/crypto_ecc.c b/src/util/crypto_ecc.c
index d4cfaa72c..237062eb7 100644
--- a/src/util/crypto_ecc.c
+++ b/src/util/crypto_ecc.c
@@ -174,7 +174,7 @@ GNUNET_CRYPTO_ecdsa_key_get_public (
174 struct GNUNET_CRYPTO_EcdsaPublicKey *pub) 174 struct GNUNET_CRYPTO_EcdsaPublicKey *pub)
175{ 175{
176 BENCHMARK_START (ecdsa_key_get_public); 176 BENCHMARK_START (ecdsa_key_get_public);
177 GNUNET_TWEETNACL_scalarmult_le_ed25519_base (pub->q_y, priv->d); 177 GNUNET_TWEETNACL_scalarmult_gnunet_ecdsa (pub->q_y, priv->d);
178 BENCHMARK_END (ecdsa_key_get_public); 178 BENCHMARK_END (ecdsa_key_get_public);
179} 179}
180 180
diff --git a/src/util/tweetnacl-gnunet.c b/src/util/tweetnacl-gnunet.c
index c3471ae66..f01667adb 100644
--- a/src/util/tweetnacl-gnunet.c
+++ b/src/util/tweetnacl-gnunet.c
@@ -429,7 +429,7 @@ GNUNET_TWEETNACL_sign_pk_from_seed (u8 *pk, const u8 *seed)
429} 429}
430 430
431void 431void
432GNUNET_TWEETNACL_scalarmult_le_ed25519_base (u8 *pk, const u8 *s) 432GNUNET_TWEETNACL_scalarmult_gnunet_ecdsa (u8 *pk, const u8 *s)
433{ 433{
434 u8 d[64]; 434 u8 d[64];
435 gf p[4]; 435 gf p[4];
@@ -437,9 +437,8 @@ GNUNET_TWEETNACL_scalarmult_le_ed25519_base (u8 *pk, const u8 *s)
437 // Treat s as little endian. 437 // Treat s as little endian.
438 for (u32 i = 0; i < 32; i++) 438 for (u32 i = 0; i < 32; i++)
439 d[i] = s[31 - i]; 439 d[i] = s[31 - i];
440 d[0] &= 248; 440
441 d[31] &= 127; 441 // For GNUnet, we don't normalize d
442 d[31] |= 64;
443 442
444 scalarbase (p, d); 443 scalarbase (p, d);
445 pack (pk, p); 444 pack (pk, p);
diff --git a/src/util/tweetnacl-gnunet.h b/src/util/tweetnacl-gnunet.h
index 2b2dc8e63..d052d8824 100644
--- a/src/util/tweetnacl-gnunet.h
+++ b/src/util/tweetnacl-gnunet.h
@@ -49,6 +49,6 @@ GNUNET_TWEETNACL_sign_detached (uint8_t *sig,
49 const uint8_t *sk); 49 const uint8_t *sk);
50 50
51void 51void
52GNUNET_TWEETNACL_scalarmult_le_ed25519_base (uint8_t *pk, const uint8_t *s); 52GNUNET_TWEETNACL_scalarmult_gnunet_ecdsa (uint8_t *pk, const uint8_t *s);
53 53
54#endif 54#endif