Fix for constant time (step 9)
This commit is contained in:
@@ -1,5 +1,7 @@
|
|||||||
2014-01-23 Niibe Yutaka <gniibe@fsij.org>
|
2014-01-23 Niibe Yutaka <gniibe@fsij.org>
|
||||||
|
|
||||||
|
* src/jpc.c (jpc_add_ac_signed): Fix for constant time.
|
||||||
|
|
||||||
* src/ec_p256.c (ecdsa): Bug fix for k selection.
|
* src/ec_p256.c (ecdsa): Bug fix for k selection.
|
||||||
|
|
||||||
2014-01-22 Niibe Yutaka <gniibe@fsij.org>
|
2014-01-22 Niibe Yutaka <gniibe@fsij.org>
|
||||||
|
|||||||
17
src/jpc.c
17
src/jpc.c
@@ -81,7 +81,7 @@ jpc_double (jpc *X, const jpc *A)
|
|||||||
void
|
void
|
||||||
jpc_add_ac_signed (jpc *X, const jpc *A, const ac *B, int minus)
|
jpc_add_ac_signed (jpc *X, const jpc *A, const ac *B, int minus)
|
||||||
{
|
{
|
||||||
bn256 a[1], b[1], c[1], d[1];
|
bn256 a[1], b[1], c[1], d[1], tmp[1];
|
||||||
#define minus_B_y c
|
#define minus_B_y c
|
||||||
#define c_sqr a
|
#define c_sqr a
|
||||||
#define c_cube b
|
#define c_cube b
|
||||||
@@ -96,9 +96,15 @@ jpc_add_ac_signed (jpc *X, const jpc *A, const ac *B, int minus)
|
|||||||
{
|
{
|
||||||
memcpy (X->x, B->x, sizeof (bn256));
|
memcpy (X->x, B->x, sizeof (bn256));
|
||||||
if (minus)
|
if (minus)
|
||||||
bn256_sub (X->y, P256, B->y);
|
{
|
||||||
|
memcpy (tmp, B->y, sizeof (bn256));
|
||||||
|
bn256_sub (X->y, P256, B->y);
|
||||||
|
}
|
||||||
else
|
else
|
||||||
memcpy (X->y, B->y, sizeof (bn256));
|
{
|
||||||
|
memcpy (X->y, B->y, sizeof (bn256));
|
||||||
|
bn256_sub (tmp, P256, B->y);
|
||||||
|
}
|
||||||
memset (X->z, 0, sizeof (bn256));
|
memset (X->z, 0, sizeof (bn256));
|
||||||
X->z->word[0] = 1;
|
X->z->word[0] = 1;
|
||||||
return;
|
return;
|
||||||
@@ -115,7 +121,10 @@ jpc_add_ac_signed (jpc *X, const jpc *A, const ac *B, int minus)
|
|||||||
modp256_mul (b, b, minus_B_y);
|
modp256_mul (b, b, minus_B_y);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
modp256_mul (b, b, B->y);
|
{
|
||||||
|
bn256_sub (tmp, P256, B->y);
|
||||||
|
modp256_mul (b, b, B->y);
|
||||||
|
}
|
||||||
|
|
||||||
if (bn256_cmp (A->x, a) == 0 && bn256_cmp (A->y, b) == 0)
|
if (bn256_cmp (A->x, a) == 0 && bn256_cmp (A->y, b) == 0)
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user