#ifndef __BEE2_ECP_H
#define __BEE2_ECP_H
#include "bee2/math/ec.h"
#ifdef __cplusplus
extern "C" {
#endif
bool_t ecpCreateJ(
ec_o* ec,
const qr_o* f,
const octet A[],
const octet B[],
void* stack
);
size_t ecpCreateJ_keep(size_t n);
size_t ecpCreateJ_deep(size_t n, size_t f_deep);
bool_t ecpIsValid(
const ec_o* ec,
void* stack
);
size_t ecpIsValid_deep(size_t n, size_t f_deep);
bool_t ecpSeemsValidGroup(
const ec_o* ec,
void* stack
);
size_t ecpSeemsValidGroup_deep(size_t n, size_t f_deep);
bool_t ecpIsSafeGroup(
const ec_o* ec,
size_t mov_threshold,
void* stack
);
size_t ecpIsSafeGroup_deep(size_t n);
bool_t ecpIsOnA(
const word a[],
const ec_o* ec,
void* stack
);
size_t ecpIsOnA_deep(size_t n, size_t f_deep);
void ecpNegA(
word b[],
const word a[],
const ec_o* ec
);
bool_t ecpAddAA(
word c[],
const word a[],
const word b[],
const ec_o* ec,
void* stack
);
size_t ecpAddAA_deep(size_t n, size_t f_deep);
bool_t ecpSubAA(
word c[],
const word a[],
const word b[],
const ec_o* ec,
void* stack
);
size_t ecpSubAA_deep(size_t n, size_t f_deep);
void ecpSWU(
word b[],
const word a[],
const ec_o* ec,
void* stack
);
size_t ecpSWU_deep(size_t n, size_t f_deep);
#ifdef __cplusplus
}
#endif
#endif