1
0
mirror of https://github.com/trezor/trezor-firmware.git synced 2024-10-10 09:58:59 +00:00
trezor-firmware/ed25519-donna/ed25519-donna-impl-base.h

66 lines
1.8 KiB
C
Raw Normal View History

/*
Timing safe memory compare
*/
int ed25519_verify(const unsigned char *x, const unsigned char *y, size_t len);
2016-04-22 15:47:48 +00:00
/*
conversions
*/
void ge25519_p1p1_to_partial(ge25519 *r, const ge25519_p1p1 *p);
2016-04-22 15:47:48 +00:00
void ge25519_p1p1_to_full(ge25519 *r, const ge25519_p1p1 *p);
2016-04-22 15:47:48 +00:00
void ge25519_full_to_pniels(ge25519_pniels *p, const ge25519 *r);
2016-04-22 15:47:48 +00:00
/*
adding & doubling
*/
void ge25519_double_p1p1(ge25519_p1p1 *r, const ge25519 *p);
2016-04-22 15:47:48 +00:00
#ifndef ED25519_NO_PRECOMP
void ge25519_nielsadd2_p1p1(ge25519_p1p1 *r, const ge25519 *p, const ge25519_niels *q, unsigned char signbit);
#endif
2016-04-22 15:47:48 +00:00
/* computes [s1]p1 + [s2]p2 */
#if USE_MONERO
void ge25519_double_scalarmult_vartime2(ge25519 *r, const ge25519 *p1, const bignum256modm s1, const ge25519 *p2, const bignum256modm s2);
#endif
void ge25519_pnielsadd_p1p1(ge25519_p1p1 *r, const ge25519 *p, const ge25519_pniels *q, unsigned char signbit);
2016-04-22 15:47:48 +00:00
void ge25519_double_partial(ge25519 *r, const ge25519 *p);
2016-04-22 15:47:48 +00:00
void ge25519_double(ge25519 *r, const ge25519 *p);
2016-04-22 15:47:48 +00:00
void ge25519_nielsadd2(ge25519 *r, const ge25519_niels *q);
2016-04-22 15:47:48 +00:00
void ge25519_pnielsadd(ge25519_pniels *r, const ge25519 *p, const ge25519_pniels *q);
2016-04-22 15:47:48 +00:00
/*
pack & unpack
*/
void ge25519_pack(unsigned char r[32], const ge25519 *p);
2016-04-22 15:47:48 +00:00
int ge25519_unpack_negative_vartime(ge25519 *r, const unsigned char p[32]);
2016-04-22 15:47:48 +00:00
/*
scalarmults
*/
void ge25519_set_neutral(ge25519 *r);
2016-04-22 15:47:48 +00:00
2017-03-28 16:01:42 +00:00
/* computes [s1]p1 + [s2]base */
void ge25519_double_scalarmult_vartime(ge25519 *r, const ge25519 *p1, const bignum256modm s1, const bignum256modm s2);
2017-03-28 16:01:42 +00:00
/* computes [s1]p1, constant time */
void ge25519_scalarmult(ge25519 *r, const ge25519 *p1, const bignum256modm s1);
void ge25519_scalarmult_base_choose_niels(ge25519_niels *t, const uint8_t table[256][96], uint32_t pos, signed char b);
2016-04-22 15:47:48 +00:00
/* computes [s]basepoint */
void ge25519_scalarmult_base_niels(ge25519 *r, const uint8_t basepoint_table[256][96], const bignum256modm s);