version 1.1, 2014/01/08 05:00:01 |
version 1.2, 2014/01/08 05:51:35 |
|
|
fe25519_mul(&r->t, &p->x, &p->y); |
fe25519_mul(&r->t, &p->x, &p->y); |
} |
} |
|
|
|
#ifndef VERIFYONLY |
static void ge25519_mixadd2(ge25519_p3 *r, const ge25519_aff *q) |
static void ge25519_mixadd2(ge25519_p3 *r, const ge25519_aff *q) |
{ |
{ |
fe25519 a,b,t1,t2,c,d,e,f,g,h,qt; |
fe25519 a,b,t1,t2,c,d,e,f,g,h,qt; |
|
|
fe25519_mul(&r->z, &g, &f); |
fe25519_mul(&r->z, &g, &f); |
fe25519_mul(&r->t, &e, &h); |
fe25519_mul(&r->t, &e, &h); |
} |
} |
|
#endif |
|
|
static void add_p1p1(ge25519_p1p1 *r, const ge25519_p3 *p, const ge25519_p3 *q) |
static void add_p1p1(ge25519_p1p1 *r, const ge25519_p3 *p, const ge25519_p3 *q) |
{ |
{ |
|
|
fe25519_sub(&r->y, &d, &b); |
fe25519_sub(&r->y, &d, &b); |
} |
} |
|
|
|
#ifndef VERIFYONLY |
/* Constant-time version of: if(b) r = p */ |
/* Constant-time version of: if(b) r = p */ |
static void cmov_aff(ge25519_aff *r, const ge25519_aff *p, unsigned char b) |
static void cmov_aff(ge25519_aff *r, const ge25519_aff *p, unsigned char b) |
{ |
{ |
|
|
return x; |
return x; |
} |
} |
|
|
#ifndef VERIFYONLY |
|
static void choose_t(ge25519_aff *t, unsigned long long pos, signed char b) |
static void choose_t(ge25519_aff *t, unsigned long long pos, signed char b) |
{ |
{ |
/* constant time */ |
/* constant time */ |