diff mbox series

ecc: add l_ecc_point_is_infinity

Message ID 20231012133812.139893-1-prestwoj@gmail.com (mailing list archive)
State New
Headers show
Series ecc: add l_ecc_point_is_infinity | expand

Checks

Context Check Description
tedd_an/pre-ci_am success Success
prestwoj/iwd-ci-build success Build - Configure
prestwoj/iwd-ci-clang success clang PASS
prestwoj/iwd-ci-makecheckvalgrind success Make Check w/Valgrind
prestwoj/iwd-ci-makecheck success Make Check
prestwoj/iwd-ci-makedistcheck success Make Distcheck
prestwoj/iwd-ci-testrunner fail test-runner - FAIL: testNetconfig

Commit Message

James Prestwood Oct. 12, 2023, 1:38 p.m. UTC
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.
---
 ell/ecc.c   | 5 +++++
 ell/ecc.h   | 1 +
 ell/ell.sym | 1 +
 3 files changed, 7 insertions(+)

Comments

Denis Kenzior Oct. 17, 2023, 3 p.m. UTC | #1
Hi James,

On 10/12/23 08:38, James Prestwood wrote:
> 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.
> ---
>   ell/ecc.c   | 5 +++++
>   ell/ecc.h   | 1 +
>   ell/ell.sym | 1 +
>   3 files changed, 7 insertions(+)

Applied, thanks.

Regards,
-Denis
diff mbox series

Patch

diff --git a/ell/ecc.c b/ell/ecc.c
index 73ddb96..518f405 100644
--- a/ell/ecc.c
+++ b/ell/ecc.c
@@ -1026,3 +1026,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);
+}
diff --git a/ell/ecc.h b/ell/ecc.h
index 981bf95..2c2c73a 100644
--- a/ell/ecc.h
+++ b/ell/ecc.h
@@ -114,6 +114,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 7b5caa1..84c45b1 100644
--- a/ell/ell.sym
+++ b/ell/ell.sym
@@ -594,6 +594,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;