|
| static void | secp256k1_ge_verify (const secp256k1_ge *a) |
| |
| static void | secp256k1_gej_verify (const secp256k1_gej *a) |
| |
| static SECP256K1_INLINE void | secp256k1_ge_impl_set_gej_zinv (secp256k1_ge *r, const secp256k1_gej *a, const secp256k1_fe *zi) |
| |
| static void | secp256k1_ge_set_gej_zinv (secp256k1_ge *r, const secp256k1_gej *a, const secp256k1_fe *zi) |
| |
| static SECP256K1_INLINE void | secp256k1_ge_impl_set_ge_zinv (secp256k1_ge *r, const secp256k1_ge *a, const secp256k1_fe *zi) |
| |
| static void | secp256k1_ge_set_ge_zinv (secp256k1_ge *r, const secp256k1_ge *a, const secp256k1_fe *zi) |
| |
| static SECP256K1_INLINE void | secp256k1_ge_impl_set_xy (secp256k1_ge *r, const secp256k1_fe *x, const secp256k1_fe *y) |
| |
| static void | secp256k1_ge_set_xy (secp256k1_ge *r, const secp256k1_fe *x, const secp256k1_fe *y) |
| |
| static SECP256K1_INLINE int | secp256k1_ge_impl_is_infinity (const secp256k1_ge *a) |
| |
| static int | secp256k1_ge_is_infinity (const secp256k1_ge *a) |
| |
| static SECP256K1_INLINE void | secp256k1_ge_impl_neg (secp256k1_ge *r, const secp256k1_ge *a) |
| |
| static void | secp256k1_ge_neg (secp256k1_ge *r, const secp256k1_ge *a) |
| |
| static SECP256K1_INLINE void | secp256k1_ge_impl_set_gej (secp256k1_ge *r, secp256k1_gej *a) |
| |
| static void | secp256k1_ge_set_gej (secp256k1_ge *r, secp256k1_gej *a) |
| |
| static SECP256K1_INLINE void | secp256k1_ge_impl_set_gej_var (secp256k1_ge *r, secp256k1_gej *a) |
| |
| static void | secp256k1_ge_set_gej_var (secp256k1_ge *r, secp256k1_gej *a) |
| |
| static SECP256K1_INLINE void | secp256k1_ge_impl_set_all_gej (secp256k1_ge *r, const secp256k1_gej *a, size_t len) |
| |
| static void | secp256k1_ge_set_all_gej (secp256k1_ge *r, const secp256k1_gej *a, size_t len) |
| |
| static SECP256K1_INLINE void | secp256k1_ge_impl_set_all_gej_var (secp256k1_ge *r, const secp256k1_gej *a, size_t len) |
| |
| static void | secp256k1_ge_set_all_gej_var (secp256k1_ge *r, const secp256k1_gej *a, size_t len) |
| |
| static SECP256K1_INLINE void | secp256k1_ge_impl_table_set_globalz (size_t len, secp256k1_ge *a, const secp256k1_fe *zr) |
| |
| static void | secp256k1_ge_table_set_globalz (size_t len, secp256k1_ge *a, const secp256k1_fe *zr) |
| |
| static void | secp256k1_gej_set_infinity (secp256k1_gej *r) |
| |
| static void | secp256k1_ge_set_infinity (secp256k1_ge *r) |
| |
| static void | secp256k1_gej_clear (secp256k1_gej *r) |
| |
| static void | secp256k1_ge_clear (secp256k1_ge *r) |
| |
| static SECP256K1_INLINE int | secp256k1_ge_impl_set_xo_var (secp256k1_ge *r, const secp256k1_fe *x, int odd) |
| |
| static int | secp256k1_ge_set_xo_var (secp256k1_ge *r, const secp256k1_fe *x, int odd) |
| |
| static SECP256K1_INLINE void | secp256k1_gej_impl_set_ge (secp256k1_gej *r, const secp256k1_ge *a) |
| |
| static void | secp256k1_gej_set_ge (secp256k1_gej *r, const secp256k1_ge *a) |
| |
| static SECP256K1_INLINE int | secp256k1_gej_impl_eq_var (const secp256k1_gej *a, const secp256k1_gej *b) |
| |
| static int | secp256k1_gej_eq_var (const secp256k1_gej *a, const secp256k1_gej *b) |
| |
| static SECP256K1_INLINE int | secp256k1_gej_impl_eq_ge_var (const secp256k1_gej *a, const secp256k1_ge *b) |
| |
| static int | secp256k1_gej_eq_ge_var (const secp256k1_gej *a, const secp256k1_ge *b) |
| |
| static SECP256K1_INLINE int | secp256k1_ge_impl_eq_var (const secp256k1_ge *a, const secp256k1_ge *b) |
| |
| static int | secp256k1_ge_eq_var (const secp256k1_ge *a, const secp256k1_ge *b) |
| |
| static SECP256K1_INLINE int | secp256k1_gej_impl_eq_x_var (const secp256k1_fe *x, const secp256k1_gej *a) |
| |
| static int | secp256k1_gej_eq_x_var (const secp256k1_fe *x, const secp256k1_gej *a) |
| |
| static SECP256K1_INLINE void | secp256k1_gej_impl_neg (secp256k1_gej *r, const secp256k1_gej *a) |
| |
| static void | secp256k1_gej_neg (secp256k1_gej *r, const secp256k1_gej *a) |
| |
| static SECP256K1_INLINE int | secp256k1_gej_impl_is_infinity (const secp256k1_gej *a) |
| |
| static int | secp256k1_gej_is_infinity (const secp256k1_gej *a) |
| |
| static SECP256K1_INLINE int | secp256k1_ge_impl_is_valid_var (const secp256k1_ge *a) |
| |
| static int | secp256k1_ge_is_valid_var (const secp256k1_ge *a) |
| |
| static SECP256K1_INLINE void | secp256k1_gej_impl_double (secp256k1_gej *r, const secp256k1_gej *a) |
| |
| static SECP256K1_INLINE void | secp256k1_gej_double (secp256k1_gej *r, const secp256k1_gej *a) |
| |
| static SECP256K1_INLINE void | secp256k1_gej_impl_double_var (secp256k1_gej *r, const secp256k1_gej *a, secp256k1_fe *rzr) |
| |
| static void | secp256k1_gej_double_var (secp256k1_gej *r, const secp256k1_gej *a, secp256k1_fe *rzr) |
| |
| static SECP256K1_INLINE void | secp256k1_gej_impl_add_var (secp256k1_gej *r, const secp256k1_gej *a, const secp256k1_gej *b, secp256k1_fe *rzr) |
| |
| static void | secp256k1_gej_add_var (secp256k1_gej *r, const secp256k1_gej *a, const secp256k1_gej *b, secp256k1_fe *rzr) |
| |
| static SECP256K1_INLINE void | secp256k1_gej_impl_add_ge_var (secp256k1_gej *r, const secp256k1_gej *a, const secp256k1_ge *b, secp256k1_fe *rzr) |
| |
| static void | secp256k1_gej_add_ge_var (secp256k1_gej *r, const secp256k1_gej *a, const secp256k1_ge *b, secp256k1_fe *rzr) |
| |
| static SECP256K1_INLINE void | secp256k1_gej_impl_add_zinv_var (secp256k1_gej *r, const secp256k1_gej *a, const secp256k1_ge *b, const secp256k1_fe *bzinv) |
| |
| static void | secp256k1_gej_add_zinv_var (secp256k1_gej *r, const secp256k1_gej *a, const secp256k1_ge *b, const secp256k1_fe *bzinv) |
| |
| static SECP256K1_INLINE void | secp256k1_gej_impl_add_ge (secp256k1_gej *r, const secp256k1_gej *a, const secp256k1_ge *b) |
| |
| static void | secp256k1_gej_add_ge (secp256k1_gej *r, const secp256k1_gej *a, const secp256k1_ge *b) |
| |
| static SECP256K1_INLINE void | secp256k1_gej_impl_rescale (secp256k1_gej *r, const secp256k1_fe *s) |
| |
| static void | secp256k1_gej_rescale (secp256k1_gej *r, const secp256k1_fe *s) |
| |
| static SECP256K1_INLINE void | secp256k1_ge_impl_to_storage (secp256k1_ge_storage *r, const secp256k1_ge *a) |
| |
| static void | secp256k1_ge_to_storage (secp256k1_ge_storage *r, const secp256k1_ge *a) |
| |
| static void | secp256k1_ge_from_storage (secp256k1_ge *r, const secp256k1_ge_storage *a) |
| |
| static SECP256K1_INLINE void | secp256k1_gej_impl_cmov (secp256k1_gej *r, const secp256k1_gej *a, int flag) |
| |
| static SECP256K1_INLINE void | secp256k1_gej_cmov (secp256k1_gej *r, const secp256k1_gej *a, int flag) |
| |
| static SECP256K1_INLINE void | secp256k1_ge_storage_cmov (secp256k1_ge_storage *r, const secp256k1_ge_storage *a, int flag) |
| |
| static SECP256K1_INLINE void | secp256k1_ge_impl_mul_lambda (secp256k1_ge *r, const secp256k1_ge *a) |
| |
| static void | secp256k1_ge_mul_lambda (secp256k1_ge *r, const secp256k1_ge *a) |
| |
| static SECP256K1_INLINE int | secp256k1_ge_impl_is_in_correct_subgroup (const secp256k1_ge *ge) |
| |
| static int | secp256k1_ge_is_in_correct_subgroup (const secp256k1_ge *ge) |
| |
| static SECP256K1_INLINE int | secp256k1_ge_impl_x_on_curve_var (const secp256k1_fe *x) |
| |
| static int | secp256k1_ge_x_on_curve_var (const secp256k1_fe *x) |
| |
| static SECP256K1_INLINE int | secp256k1_ge_impl_x_frac_on_curve_var (const secp256k1_fe *xn, const secp256k1_fe *xd) |
| |
| static int | secp256k1_ge_x_frac_on_curve_var (const secp256k1_fe *xn, const secp256k1_fe *xd) |
| |
| static SECP256K1_INLINE void | secp256k1_ge_impl_to_bytes (unsigned char *buf, const secp256k1_ge *a) |
| |
| static void | secp256k1_ge_to_bytes (unsigned char *buf, const secp256k1_ge *a) |
| |
| static SECP256K1_INLINE void | secp256k1_ge_impl_from_bytes (secp256k1_ge *r, const unsigned char *buf) |
| |
| static void | secp256k1_ge_from_bytes (secp256k1_ge *r, const unsigned char *buf) |
| |
| static SECP256K1_INLINE void | secp256k1_ge_impl_to_bytes_ext (unsigned char *data, const secp256k1_ge *ge) |
| |
| static void | secp256k1_ge_to_bytes_ext (unsigned char *data, const secp256k1_ge *ge) |
| |
| static SECP256K1_INLINE void | secp256k1_ge_impl_from_bytes_ext (secp256k1_ge *ge, const unsigned char *data) |
| |
| static void | secp256k1_ge_from_bytes_ext (secp256k1_ge *ge, const unsigned char *data) |
| |
| static SECP256K1_INLINE int | secp256k1_ge_impl_parse (secp256k1_ge *elem, const unsigned char *pub, size_t size) |
| |
| static int | secp256k1_ge_parse (secp256k1_ge *elem, const unsigned char *pub, size_t size) |
| |
| static SECP256K1_INLINE void | secp256k1_ge_impl_serialize33 (secp256k1_ge *elem, unsigned char *pub33) |
| |
| static void | secp256k1_ge_serialize33 (secp256k1_ge *elem, unsigned char *pub33) |
| |
| static SECP256K1_INLINE void | secp256k1_ge_impl_serialize65 (secp256k1_ge *elem, unsigned char *pub65) |
| |
| static void | secp256k1_ge_serialize65 (secp256k1_ge *elem, unsigned char *pub65) |
| |
| static SECP256K1_INLINE void | secp256k1_ge_impl_serialize_ext33 (unsigned char *out33, secp256k1_ge *ge) |
| |
| static void | secp256k1_ge_serialize_ext33 (unsigned char *out33, secp256k1_ge *ge) |
| |
| static SECP256K1_INLINE int | secp256k1_ge_impl_parse_ext33 (secp256k1_ge *ge, const unsigned char *in33) |
| |
| static int | secp256k1_ge_parse_ext33 (secp256k1_ge *ge, const unsigned char *in33) |
| |
We need to calculate (rx,ry,rz) = (ax,ay,az) + (bx,by,1/bzinv). Due to secp256k1's isomorphism we can multiply the Z coordinates on both sides by bzinv, and get: (rx,ry,rz*bzinv) = (ax,ay,az*bzinv) + (bx,by,1). This means that (rx,ry,rz) can be calculated as (ax,ay,az*bzinv) + (bx,by,1), when not applying the bzinv factor to rz. The variable az below holds the modified Z coordinate for a, which is used for the computation of rx and ry, but not for rz.
Definition at line 691 of file group_impl.h.