diff --git a/cmake_targets/CMakeLists.txt b/cmake_targets/CMakeLists.txt
index db03e98c23eacb0808bd6106bb8592749aa1369b..e1d5fcb12a3ed98126e0db99829025f67a2006d3 100644
--- a/cmake_targets/CMakeLists.txt
+++ b/cmake_targets/CMakeLists.txt
@@ -1538,20 +1538,17 @@ endif()
 
 message ("NETTLE VERSION_INSTALLED  = ${NETTLE_VERSION}")
 
-string(REGEX MATCH "[+-]?[0-9]+([.][0-9]+)?" nv ${NETTLE_VERSION})
+string(REGEX REPLACE "([0-9]+).*" "\\1" NETTLE_VERSION_MAJOR ${NETTLE_VERSION})
+string(REGEX REPLACE "[0-9]+\\.([0-9]+).*" "\\1" NETTLE_VERSION_MINOR ${NETTLE_VERSION})
+message ("NETTLE_VERSION_MAJOR = ${NETTLE_VERSION_MAJOR}")
+message ("NETTLE_VERSION_MINOR = ${NETTLE_VERSION_MINOR}")
 
-# WE only pass the major and first minor in the define and ignore the rest
-#message("NETTLE_VERSION USED = ${nv}")
-
-# we need to remove decimal as floating point arithematic does not work properly with C preprocessor
-STRING(REGEX REPLACE "[.]" "" nv ${nv})
-
-if ("${nv}" STREQUAL "")
+if ("${NETTLE_VERSION_MAJOR}" STREQUAL "" OR "${NETTLE_VERSION_MINOR}" STREQUAL "")
   message( FATAL_ERROR "The nettle version not detected properly. Try to run build_oai -I again" )
 endif()
 
-set (NETTLE_VERSION "${nv}")
-add_definitions("-DNETTLE_VERSION=${NETTLE_VERSION}")
+add_definitions("-DNETTLE_VERSION_MAJOR=${NETTLE_VERSION_MAJOR}")
+add_definitions("-DNETTLE_VERSION_MINOR=${NETTLE_VERSION_MINOR}")
 
 pkg_search_module(XPM xpm)
 if(NOT ${XPM_FOUND})
diff --git a/openair3/TEST/test_aes128_ctr_decrypt.c b/openair3/TEST/test_aes128_ctr_decrypt.c
index 15416c5e4bb6f8646c5170cc0c21908ac04eeed7..4106cb90bb9520557eae80d053e81ef9721d7263 100644
--- a/openair3/TEST/test_aes128_ctr_decrypt.c
+++ b/openair3/TEST/test_aes128_ctr_decrypt.c
@@ -48,7 +48,7 @@ void test_uncipher_ctr(const struct nettle_cipher *cipher, const uint8_t *key,
   uint8_t *data = malloc(length);
   uint8_t *ctr = malloc(cipher->block_size);
 
-#if NETTLE_VERSION <= 27
+#if NETTLE_VERSION_MAJOR < 3
   cipher->set_encrypt_key(ctx, key_length,  key);
 #else
   cipher->set_encrypt_key(ctx,  key);
diff --git a/openair3/TEST/test_aes128_ctr_encrypt.c b/openair3/TEST/test_aes128_ctr_encrypt.c
index dab80b3602a362ae0a635ff8e077137cc39298db..399200aab4f88fd0d1768f427b2e4a65498e6c40 100644
--- a/openair3/TEST/test_aes128_ctr_encrypt.c
+++ b/openair3/TEST/test_aes128_ctr_encrypt.c
@@ -47,7 +47,7 @@ static void test_cipher_ctr(const struct nettle_cipher *cipher, const uint8_t *k
   uint8_t *data = malloc(length);
   uint8_t *ctr = malloc(cipher->block_size);
 
-#if NETTLE_VERSION <= 27
+#if NETTLE_VERSION_MAJOR < 3
   cipher->set_encrypt_key(ctx, key_length, key);
 #else
   cipher->set_encrypt_key(ctx, key);