Skip to content

Commit 577166a

Browse files
committed
nrf_security: Don't use stdlib abs
In the TF-M build the stdlib functions such as abs are not available. Create a cracen local abs function which either uses the builtin implementation or a local implementation. Signed-off-by: Georgios Vasilakis <georgios.vasilakis@nordicsemi.no>
1 parent bed2033 commit 577166a

1 file changed

Lines changed: 8 additions & 2 deletions

File tree

subsys/nrf_security/src/drivers/cracen/cracenpsa/src/internal/ecc/cracen_ecc_helpers.c

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,12 @@
2424
#include <zephyr/sys/util.h>
2525
#include <psa/nrf_platform_key_ids.h>
2626

27+
#if defined(__has_builtin) && __has_builtin(__builtin_abs)
28+
#define cracen_abs(x) __builtin_abs(x)
29+
#else
30+
#define cracen_abs(x) ((x) < 0 ? -(x) : (x))
31+
#endif
32+
2733
#define NOT_ENABLED_CURVE (0)
2834

2935
#if defined(PSA_NEED_CRACEN_KEY_TYPE_ECC_BRAINPOOL_P_R1)
@@ -734,11 +740,11 @@ psa_status_t cracen_ecc_h2e_sswu(sx_pk_req *req, psa_ecc_family_t curve_family,
734740

735741
if (z_int < 0) {
736742
safe_memzero(zero_t_gx1_x_buf, sx_pk_curve_opsize(sx_curve));
737-
cracen_be_add(zero_t_gx1_x_buf, sx_pk_curve_opsize(sx_curve), abs(z_int));
743+
cracen_be_add(zero_t_gx1_x_buf, sx_pk_curve_opsize(sx_curve), cracen_abs(z_int));
738744
cracen_be_sub(sx_pk_curve_prime(sx_curve), zero_t_gx1_x_buf, z_buf,
739745
sx_pk_curve_opsize(sx_curve));
740746
} else {
741-
cracen_be_add(z_buf, sx_pk_curve_opsize(sx_curve), abs(z_int));
747+
cracen_be_add(z_buf, sx_pk_curve_opsize(sx_curve), cracen_abs(z_int));
742748
}
743749

744750
sx_const_op modulo = {.sz = sx_pk_curve_opsize(sx_curve),

0 commit comments

Comments
 (0)