mirror of
https://github.com/jedisct1/libsodium.git
synced 2024-12-24 04:25:10 -07:00
Shorten
This commit is contained in:
parent
f9ef57db0b
commit
d854d39b51
@ -937,21 +937,17 @@ ge25519_scalarmult_base(ge25519_p3 *h, const unsigned char *a)
|
||||
}
|
||||
}
|
||||
|
||||
/* r = 2p */
|
||||
static void
|
||||
ge25519_p3_dbl_n(ge25519_p3 *r, const ge25519_p3 *p, const int n)
|
||||
ge25519_p3p3_dbl(ge25519_p3 *r, const ge25519_p3 *p)
|
||||
{
|
||||
ge25519_p2 p2;
|
||||
ge25519_p1p1 p1p1;
|
||||
int i;
|
||||
|
||||
ge25519_p3_to_p2(&p2, p);
|
||||
for (i = 0; i < n; i++) {
|
||||
ge25519_p2_dbl(&p1p1, &p2);
|
||||
ge25519_p1p1_to_p2(&p2, &p1p1);
|
||||
}
|
||||
ge25519_p3_dbl(&p1p1, p);
|
||||
ge25519_p1p1_to_p3(r, &p1p1);
|
||||
}
|
||||
|
||||
/* r = p+q */
|
||||
static void
|
||||
ge25519_p3_add(ge25519_p3 *r, const ge25519_p3 *p, const ge25519_p3 *q)
|
||||
{
|
||||
@ -963,25 +959,41 @@ ge25519_p3_add(ge25519_p3 *r, const ge25519_p3 *p, const ge25519_p3 *q)
|
||||
ge25519_p1p1_to_p3(r, &p1p1);
|
||||
}
|
||||
|
||||
/* r = r*(2^n)+q */
|
||||
static void
|
||||
ge25519_p3_dbladd(ge25519_p3 *r, const int n, const ge25519_p3 *q)
|
||||
{
|
||||
ge25519_p2 p2;
|
||||
ge25519_p1p1 p1p1;
|
||||
int i;
|
||||
|
||||
ge25519_p3_to_p2(&p2, r);
|
||||
for (i = 0; i < n; i++) {
|
||||
ge25519_p2_dbl(&p1p1, &p2);
|
||||
ge25519_p1p1_to_p2(&p2, &p1p1);
|
||||
}
|
||||
ge25519_p1p1_to_p3(r, &p1p1);
|
||||
ge25519_p3_add(r, r, q);
|
||||
}
|
||||
|
||||
/* multiply by the order of the main subgroup l = 2^252+27742317777372353535851937790883648493 */
|
||||
static void
|
||||
ge25519_mul_l(ge25519_p3 *r, const ge25519_p3 *p)
|
||||
{
|
||||
ge25519_p3 _10, _11, _100, _110, _1000, _1011, _10000, _100000, _100110,
|
||||
_1000000, _1010000, _1010011, _1100011, _1100111, _1101011, _10010011,
|
||||
_10010111, _10111101, _11010011, _11100111, _11101101, _11110101,
|
||||
i160, i179, i209, i232, i263, res;
|
||||
_10010111, _10111101, _11010011, _11100111, _11101101, _11110101;
|
||||
|
||||
ge25519_p3_dbl_n(&_10, p, 1);
|
||||
ge25519_p3p3_dbl(&_10, p);
|
||||
ge25519_p3_add(&_11, p, &_10);
|
||||
ge25519_p3_add(&_100, p, &_11);
|
||||
ge25519_p3_add(&_110, &_10, &_100);
|
||||
ge25519_p3_add(&_1000, &_10, &_110);
|
||||
ge25519_p3_add(&_1011, &_11, &_1000);
|
||||
ge25519_p3_dbl_n(&_10000, &_1000, 1);
|
||||
ge25519_p3_dbl_n(&_100000, &_10000, 1);
|
||||
ge25519_p3p3_dbl(&_10000, &_1000);
|
||||
ge25519_p3p3_dbl(&_100000, &_10000);
|
||||
ge25519_p3_add(&_100110, &_110, &_100000);
|
||||
ge25519_p3_dbl_n(&_1000000, &_100000, 1);
|
||||
ge25519_p3p3_dbl(&_1000000, &_100000);
|
||||
ge25519_p3_add(&_1010000, &_10000, &_1000000);
|
||||
ge25519_p3_add(&_1010011, &_11, &_1010000);
|
||||
ge25519_p3_add(&_1100011, &_10000, &_1010011);
|
||||
@ -995,37 +1007,22 @@ ge25519_mul_l(ge25519_p3 *r, const ge25519_p3 *p)
|
||||
ge25519_p3_add(&_11101101, &_110, &_11100111);
|
||||
ge25519_p3_add(&_11110101, &_1000, &_11101101);
|
||||
|
||||
ge25519_p3_add(&i160, &_1011, &_11110101);
|
||||
ge25519_p3_dbl_n(&i160, &i160, 126);
|
||||
ge25519_p3_add(&i160, &i160, &_1010011);
|
||||
ge25519_p3_dbl_n(&i160, &i160, 9);
|
||||
ge25519_p3_add(&i160, &i160, &_10);
|
||||
ge25519_p3_add(&i179, &_11110101, &i160);
|
||||
ge25519_p3_dbl_n(&i179, &i179, 7);
|
||||
ge25519_p3_add(&i179, &i179, &_1100111);
|
||||
ge25519_p3_dbl_n(&i179, &i179, 9);
|
||||
ge25519_p3_add(&i179, &i179, &_11110101);
|
||||
ge25519_p3_dbl_n(&i209, &i179, 11);
|
||||
ge25519_p3_add(&i209, &i209, &_10111101);
|
||||
ge25519_p3_dbl_n(&i209, &i209, 8);
|
||||
ge25519_p3_add(&i209, &i209, &_11100111);
|
||||
ge25519_p3_dbl_n(&i209, &i209, 9);
|
||||
ge25519_p3_add(&i232, &_1101011, &i209);
|
||||
ge25519_p3_dbl_n(&i232, &i232, 6);
|
||||
ge25519_p3_add(&i232, &i232, &_1011);
|
||||
ge25519_p3_dbl_n(&i232, &i232, 14);
|
||||
ge25519_p3_add(&i232, &i232, &_10010011);
|
||||
ge25519_p3_dbl_n(&i263, &i232, 10);
|
||||
ge25519_p3_add(&i263, &i263, &_1100011);
|
||||
ge25519_p3_dbl_n(&i263, &i263, 9);
|
||||
ge25519_p3_add(&i263, &i263, &_10010111);
|
||||
ge25519_p3_dbl_n(&i263, &i263, 10);
|
||||
|
||||
ge25519_p3_add(&res, &_11110101, &i263);
|
||||
ge25519_p3_dbl_n(&res, &res, 8);
|
||||
ge25519_p3_add(&res, &res, &_11010011);
|
||||
ge25519_p3_dbl_n(&res, &res, 8);
|
||||
ge25519_p3_add(r, &res, &_11101101);
|
||||
ge25519_p3_add(r, &_1011, &_11110101);
|
||||
ge25519_p3_dbladd(r, 126, &_1010011);
|
||||
ge25519_p3_dbladd(r, 9, &_10);
|
||||
ge25519_p3_add(r, r, &_11110101);
|
||||
ge25519_p3_dbladd(r, 7, &_1100111);
|
||||
ge25519_p3_dbladd(r, 9, &_11110101);
|
||||
ge25519_p3_dbladd(r, 11, &_10111101);
|
||||
ge25519_p3_dbladd(r, 8, &_11100111);
|
||||
ge25519_p3_dbladd(r, 9, &_1101011);
|
||||
ge25519_p3_dbladd(r, 6, &_1011);
|
||||
ge25519_p3_dbladd(r, 14, &_10010011);
|
||||
ge25519_p3_dbladd(r, 10, &_1100011);
|
||||
ge25519_p3_dbladd(r, 9, &_10010111);
|
||||
ge25519_p3_dbladd(r, 10, &_11110101);
|
||||
ge25519_p3_dbladd(r, 8, &_11010011);
|
||||
ge25519_p3_dbladd(r, 8, &_11101101);
|
||||
}
|
||||
|
||||
int
|
||||
|
Loading…
Reference in New Issue
Block a user