diff options
author | James Prestwood <prestwoj@gmail.com> | 2023-10-12 06:38:12 -0700 |
---|---|---|
committer | Denis Kenzior <denkenz@gmail.com> | 2023-10-17 09:59:59 -0500 |
commit | 79f97d9b00485e7ad6f9344fbafeb57957890ccc (patch) | |
tree | 1ffa9c762adc2403f57a8f887acecfcf0f6b0de0 | |
parent | 8ea2d161da73e336fe8e5fa5809fd621dfd064b3 (diff) |
ecc: add l_ecc_point_is_infinity
When creating a point from raw data the validity and if
infinity is checked but there doesn't exist any way to check
a point for infinity after doing some arithmetic on it. Some
specs requires a resulting point be checked for infinity.
-rw-r--r-- | ell/ecc.c | 5 | ||||
-rw-r--r-- | ell/ecc.h | 1 | ||||
-rw-r--r-- | ell/ell.sym | 1 |
3 files changed, 7 insertions, 0 deletions
@@ -1011,3 +1011,8 @@ LIB_EXPORT bool l_ecc_points_are_equal(const struct l_ecc_point *a, return ((memcmp(a->x, b->x, a->curve->ndigits * 8) == 0) && (memcmp(a->y, b->y, a->curve->ndigits * 8) == 0)); } + +LIB_EXPORT bool l_ecc_point_is_infinity(const struct l_ecc_point *p) +{ + return _ecc_point_is_zero(p); +} @@ -99,6 +99,7 @@ bool l_ecc_scalars_are_equal(const struct l_ecc_scalar *a, bool l_ecc_points_are_equal(const struct l_ecc_point *a, const struct l_ecc_point *b); +bool l_ecc_point_is_infinity(const struct l_ecc_point *p); #ifdef __cplusplus } diff --git a/ell/ell.sym b/ell/ell.sym index 7d07c868..c457a762 100644 --- a/ell/ell.sym +++ b/ell/ell.sym @@ -598,6 +598,7 @@ global: l_ecc_point_clone; l_ecc_point_get_curve; l_ecc_points_are_equal; + l_ecc_point_is_infinity; l_ecc_scalar_add; l_ecc_scalar_free; l_ecc_scalar_get_data; |