Added some nice helper methods
This commit is contained in:
parent
b761bf653a
commit
98bd4f3ec6
|
@ -1,6 +1,9 @@
|
|||
project(ed25519)
|
||||
cmake_minimum_required(VERSION 3.9)
|
||||
|
||||
set(CMAKE_CXX_STANDARD 11)
|
||||
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
||||
|
||||
option(USE_OPENSSL "Use openssl for sha 512 (Faster than the default installation" ON)
|
||||
|
||||
set(SOURCE
|
||||
|
|
11
include/ge.h
11
include/ge.h
|
@ -51,10 +51,13 @@ typedef struct {
|
|||
fe T2d;
|
||||
} ge_cached;
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
void ge_p3_tobytes(unsigned char *s, const ge_p3 *h);
|
||||
void ge_tobytes(unsigned char *s, const ge_p2 *h);
|
||||
int ge_frombytes_negate_vartime(ge_p3 *h, const unsigned char *s);
|
||||
|
||||
void ge_add(ge_p1p1 *r, const ge_p3 *p, const ge_cached *q);
|
||||
void ge_sub(ge_p1p1 *r, const ge_p3 *p, const ge_cached *q);
|
||||
void ge_double_scalarmult_vartime(ge_p2 *r, const unsigned char *a, const ge_p3 *A, const unsigned char *b);
|
||||
|
@ -62,7 +65,6 @@ void ge_scalarmult_vartime(ge_p2 *r, const unsigned char *a, const ge_p3 *A);
|
|||
void ge_madd(ge_p1p1 *r, const ge_p3 *p, const ge_precomp *q);
|
||||
void ge_msub(ge_p1p1 *r, const ge_p3 *p, const ge_precomp *q);
|
||||
void ge_scalarmult_base(ge_p3 *h, const unsigned char *a);
|
||||
|
||||
void ge_p1p1_to_p2(ge_p2 *r, const ge_p1p1 *p);
|
||||
void ge_p1p1_to_p3(ge_p3 *r, const ge_p1p1 *p);
|
||||
void ge_p2_0(ge_p2 *h);
|
||||
|
@ -71,5 +73,10 @@ void ge_p3_0(ge_p3 *h);
|
|||
void ge_p3_dbl(ge_p1p1 *r, const ge_p3 *p);
|
||||
void ge_p3_to_cached(ge_cached *r, const ge_p3 *p);
|
||||
void ge_p3_to_p2(ge_p2 *r, const ge_p3 *p);
|
||||
void ge_p2_to_p3(ge_p3 *r, const ge_p2 *p);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
|
|
@ -6,7 +6,15 @@ The set of scalars is \Z/l
|
|||
where l = 2^252 + 27742317777372353535851937790883648493.
|
||||
*/
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
void sc_reduce(unsigned char *s);
|
||||
void sc_muladd(unsigned char *s, const unsigned char *a, const unsigned char *b, const unsigned char *c);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
|
7
src/ge.c
7
src/ge.c
|
@ -63,7 +63,7 @@ static void slide(signed char *r, const unsigned char *a) {
|
|||
*/
|
||||
void ge_scalarmult_vartime(ge_p2 *r, const unsigned char *a, const ge_p3 *A) {
|
||||
unsigned char zero[32];
|
||||
memset(zero, 0, sizeof(zero));
|
||||
memset(zero, 0, 32);
|
||||
ge_double_scalarmult_vartime(r, a, A, zero);
|
||||
}
|
||||
|
||||
|
@ -327,6 +327,11 @@ void ge_p3_to_p2(ge_p2 *r, const ge_p3 *p) {
|
|||
fe_copy(r->Z, p->Z);
|
||||
}
|
||||
|
||||
void ge_p2_to_p3(ge_p3 *r, const ge_p2 *p) {
|
||||
uint8_t buffer[32];
|
||||
ge_tobytes(buffer, p);
|
||||
ge_frombytes_negate_vartime(r, buffer);
|
||||
}
|
||||
|
||||
void ge_p3_tobytes(unsigned char *s, const ge_p3 *h) {
|
||||
fe recip;
|
||||
|
|
Loading…
Reference in New Issue