|
#define | SECP256K1_GE_CONST(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p) {SECP256K1_FE_CONST((a),(b),(c),(d),(e),(f),(g),(h)), SECP256K1_FE_CONST((i),(j),(k),(l),(m),(n),(o),(p)), 0} |
|
#define | SECP256K1_GE_CONST_INFINITY {SECP256K1_FE_CONST(0, 0, 0, 0, 0, 0, 0, 0), SECP256K1_FE_CONST(0, 0, 0, 0, 0, 0, 0, 0), 1} |
|
#define | SECP256K1_GEJ_CONST(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p) {SECP256K1_FE_CONST((a),(b),(c),(d),(e),(f),(g),(h)), SECP256K1_FE_CONST((i),(j),(k),(l),(m),(n),(o),(p)), SECP256K1_FE_CONST(0, 0, 0, 0, 0, 0, 0, 1), 0} |
|
#define | SECP256K1_GEJ_CONST_INFINITY {SECP256K1_FE_CONST(0, 0, 0, 0, 0, 0, 0, 0), SECP256K1_FE_CONST(0, 0, 0, 0, 0, 0, 0, 0), SECP256K1_FE_CONST(0, 0, 0, 0, 0, 0, 0, 0), 1} |
|
#define | SECP256K1_GE_STORAGE_CONST(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p) {SECP256K1_FE_STORAGE_CONST((a),(b),(c),(d),(e),(f),(g),(h)), SECP256K1_FE_STORAGE_CONST((i),(j),(k),(l),(m),(n),(o),(p))} |
|
#define | SECP256K1_GE_STORAGE_CONST_GET(t) SECP256K1_FE_STORAGE_CONST_GET(t.x), SECP256K1_FE_STORAGE_CONST_GET(t.y) |
|
#define | SECP256K1_GE_X_MAGNITUDE_MAX 4 |
| Maximum allowed magnitudes for group element coordinates in affine (x, y) and jacobian (x, y, z) representation. More...
|
|
#define | SECP256K1_GE_Y_MAGNITUDE_MAX 3 |
|
#define | SECP256K1_GEJ_X_MAGNITUDE_MAX 4 |
|
#define | SECP256K1_GEJ_Y_MAGNITUDE_MAX 4 |
|
#define | SECP256K1_GEJ_Z_MAGNITUDE_MAX 1 |
|
#define | SECP256K1_GE_VERIFY(a) secp256k1_ge_verify(a) |
|
#define | SECP256K1_GEJ_VERIFY(a) secp256k1_gej_verify(a) |
|
|
static void | secp256k1_ge_set_xy (secp256k1_ge *r, const secp256k1_fe *x, const secp256k1_fe *y) |
| Set a group element equal to the point with given X and Y coordinates. More...
|
|
static int | secp256k1_ge_set_xo_var (secp256k1_ge *r, const secp256k1_fe *x, int odd) |
| Set a group element (affine) equal to the point with the given X coordinate, and given oddness for Y. More...
|
|
static int | secp256k1_ge_x_on_curve_var (const secp256k1_fe *x) |
| Determine whether x is a valid X coordinate on the curve. More...
|
|
static int | secp256k1_ge_x_frac_on_curve_var (const secp256k1_fe *xn, const secp256k1_fe *xd) |
| Determine whether fraction xn/xd is a valid X coordinate on the curve (xd != 0). More...
|
|
static int | secp256k1_ge_is_infinity (const secp256k1_ge *a) |
| Check whether a group element is the point at infinity. More...
|
|
static int | secp256k1_ge_is_valid_var (const secp256k1_ge *a) |
| Check whether a group element is valid (i.e., on the curve). More...
|
|
static void | secp256k1_ge_neg (secp256k1_ge *r, const secp256k1_ge *a) |
| Set r equal to the inverse of a (i.e., mirrored around the X axis) More...
|
|
static void | secp256k1_ge_set_gej (secp256k1_ge *r, secp256k1_gej *a) |
| Set a group element equal to another which is given in jacobian coordinates. More...
|
|
static void | secp256k1_ge_set_gej_var (secp256k1_ge *r, secp256k1_gej *a) |
| Set a group element equal to another which is given in jacobian coordinates. More...
|
|
static void | secp256k1_ge_set_all_gej_var (secp256k1_ge *r, const secp256k1_gej *a, size_t len) |
| Set a batch of group elements equal to the inputs given in jacobian coordinates. More...
|
|
static void | secp256k1_ge_table_set_globalz (size_t len, secp256k1_ge *a, const secp256k1_fe *zr) |
| Bring a batch of inputs to the same global z "denominator", based on ratios between (omitted) z coordinates of adjacent elements. More...
|
|
static int | secp256k1_ge_eq_var (const secp256k1_ge *a, const secp256k1_ge *b) |
| Check two group elements (affine) for equality in variable time. More...
|
|
static void | secp256k1_ge_set_infinity (secp256k1_ge *r) |
| Set a group element (affine) equal to the point at infinity. More...
|
|
static void | secp256k1_gej_set_infinity (secp256k1_gej *r) |
| Set a group element (jacobian) equal to the point at infinity. More...
|
|
static void | secp256k1_gej_set_ge (secp256k1_gej *r, const secp256k1_ge *a) |
| Set a group element (jacobian) equal to another which is given in affine coordinates. More...
|
|
static int | secp256k1_gej_eq_var (const secp256k1_gej *a, const secp256k1_gej *b) |
| Check two group elements (jacobian) for equality in variable time. More...
|
|
static int | secp256k1_gej_eq_ge_var (const secp256k1_gej *a, const secp256k1_ge *b) |
| Check two group elements (jacobian and affine) for equality in variable time. More...
|
|
static int | secp256k1_gej_eq_x_var (const secp256k1_fe *x, const secp256k1_gej *a) |
| Compare the X coordinate of a group element (jacobian). More...
|
|
static void | secp256k1_gej_neg (secp256k1_gej *r, const secp256k1_gej *a) |
| Set r equal to the inverse of a (i.e., mirrored around the X axis) More...
|
|
static int | secp256k1_gej_is_infinity (const secp256k1_gej *a) |
| Check whether a group element is the point at infinity. More...
|
|
static void | secp256k1_gej_double (secp256k1_gej *r, const secp256k1_gej *a) |
| Set r equal to the double of a. More...
|
|
static void | secp256k1_gej_double_var (secp256k1_gej *r, const secp256k1_gej *a, secp256k1_fe *rzr) |
| Set r equal to the double of a. More...
|
|
static void | secp256k1_gej_add_var (secp256k1_gej *r, const secp256k1_gej *a, const secp256k1_gej *b, secp256k1_fe *rzr) |
| Set r equal to the sum of a and b. More...
|
|
static void | secp256k1_gej_add_ge (secp256k1_gej *r, const secp256k1_gej *a, const secp256k1_ge *b) |
| Set r equal to the sum of a and b (with b given in affine coordinates, and not infinity). More...
|
|
static void | secp256k1_gej_add_ge_var (secp256k1_gej *r, const secp256k1_gej *a, const secp256k1_ge *b, secp256k1_fe *rzr) |
| Set r equal to the sum of a and b (with b given in affine coordinates). More...
|
|
static void | secp256k1_gej_add_zinv_var (secp256k1_gej *r, const secp256k1_gej *a, const secp256k1_ge *b, const secp256k1_fe *bzinv) |
| Set r equal to the sum of a and b (with the inverse of b's Z coordinate passed as bzinv). More...
|
|
static void | secp256k1_ge_mul_lambda (secp256k1_ge *r, const secp256k1_ge *a) |
| Set r to be equal to lambda times a, where lambda is chosen in a way such that this is very fast. More...
|
|
static void | secp256k1_gej_clear (secp256k1_gej *r) |
| Clear a secp256k1_gej to prevent leaking sensitive information. More...
|
|
static void | secp256k1_ge_clear (secp256k1_ge *r) |
| Clear a secp256k1_ge to prevent leaking sensitive information. More...
|
|
static void | secp256k1_ge_to_storage (secp256k1_ge_storage *r, const secp256k1_ge *a) |
| Convert a group element to the storage type. More...
|
|
static void | secp256k1_ge_from_storage (secp256k1_ge *r, const secp256k1_ge_storage *a) |
| Convert a group element back from the storage type. More...
|
|
static void | secp256k1_gej_cmov (secp256k1_gej *r, const secp256k1_gej *a, int flag) |
| If flag is true, set *r equal to *a; otherwise leave it. More...
|
|
static void | secp256k1_ge_storage_cmov (secp256k1_ge_storage *r, const secp256k1_ge_storage *a, int flag) |
| If flag is true, set *r equal to *a; otherwise leave it. More...
|
|
static void | secp256k1_gej_rescale (secp256k1_gej *r, const secp256k1_fe *b) |
| Rescale a jacobian point by b which must be non-zero. More...
|
|
static void | secp256k1_ge_to_bytes (unsigned char *buf, const secp256k1_ge *a) |
| Convert a group element that is not infinity to a 64-byte array. More...
|
|
static void | secp256k1_ge_from_bytes (secp256k1_ge *r, const unsigned char *buf) |
| Convert a 64-byte array into group element. More...
|
|
static void | secp256k1_ge_to_bytes_ext (unsigned char *data, const secp256k1_ge *ge) |
| Convert a group element (that is allowed to be infinity) to a 64-byte array. More...
|
|
static void | secp256k1_ge_from_bytes_ext (secp256k1_ge *ge, const unsigned char *data) |
| Convert a 64-byte array into a group element. More...
|
|
static int | secp256k1_ge_is_in_correct_subgroup (const secp256k1_ge *ge) |
| Determine if a point (which is assumed to be on the curve) is in the correct (sub)group of the curve. More...
|
|
static void | secp256k1_ge_verify (const secp256k1_ge *a) |
| Check invariants on an affine group element (no-op unless VERIFY is enabled). More...
|
|
static void | secp256k1_gej_verify (const secp256k1_gej *a) |
| Check invariants on a Jacobian group element (no-op unless VERIFY is enabled). More...
|
|