summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/ec25519.c29
1 files changed, 16 insertions, 13 deletions
diff --git a/src/ec25519.c b/src/ec25519.c
index d35e368..889264d 100644
--- a/src/ec25519.c
+++ b/src/ec25519.c
@@ -72,11 +72,14 @@ static void squeeze(unsigned int a[32]) {
u += a[31]; a[31] = u;
}
-static const unsigned int minusp[32] = {
- 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128
-};
-
static void freeze(unsigned int a[32]) {
+ static const unsigned int minusp[32] = {
+ 19, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 128
+ };
+
unsigned int aorig[32];
unsigned int j;
unsigned int negative;
@@ -186,15 +189,6 @@ static void select(unsigned int out[32], const unsigned int r[32], const unsigne
}
}
-static const unsigned int rho_s[32] = {
- 0xb0, 0xa0, 0x0e, 0x4a, 0x27, 0x1b, 0xee, 0xc4,
- 0x78, 0xe4, 0x2f, 0xad, 0x06, 0x18, 0x43, 0x2f,
- 0xa7, 0xd7, 0xfb, 0x3d, 0x99, 0x00, 0x4d, 0x2b,
- 0x0b, 0xdf, 0xc1, 0x4f, 0x80, 0x24, 0x83, 0x2b
-};
-
-static const unsigned int zero[32] = {0};
-
static void square_root(unsigned int out[32], const unsigned int z[32]) {
static const unsigned int minus1[32] = {
0xec, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
@@ -203,6 +197,13 @@ static void square_root(unsigned int out[32], const unsigned int z[32]) {
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f
};
+ static const unsigned int rho_s[32] = {
+ 0xb0, 0xa0, 0x0e, 0x4a, 0x27, 0x1b, 0xee, 0xc4,
+ 0x78, 0xe4, 0x2f, 0xad, 0x06, 0x18, 0x43, 0x2f,
+ 0xa7, 0xd7, 0xfb, 0x3d, 0x99, 0x00, 0x4d, 0x2b,
+ 0x0b, 0xdf, 0xc1, 0x4f, 0x80, 0x24, 0x83, 0x2b
+ };
+
/* raise z to power (2^252-2), check if power (2^253-5) equals -1 */
unsigned int z2[32];
@@ -344,6 +345,8 @@ static void recip(unsigned int out[32], const unsigned int z[32]) {
}
void ecc_25519_load(ecc_25519_work *out, const ecc_public_key_256 *in) {
+ static const unsigned int zero[32] = {0};
+
int i;
unsigned int X2[32], _1_a_X2[32], d_X2_a_X2[32], Y[32], Yt[32];
unsigned int d_X2[32] = {0x04, 0x6d, 0x07} /* 486660 */, a_X2[32] = {0x08, 0x6d, 0x07} /* 486664 */;