ARMv8 Crypto Extensions compile logic
diff --git a/include/mbedtls/check_config.h b/include/mbedtls/check_config.h
index 120c1d3..43dae12 100644
--- a/include/mbedtls/check_config.h
+++ b/include/mbedtls/check_config.h
@@ -73,6 +73,10 @@
#error "MBEDTLS_AESNI_C defined, but not all prerequisites"
#endif
+#if defined(MBEDTLS_ARMV8CE_AES_C) && !defined(MBEDTLS_HAVE_ASM)
+#error "MBEDTLS_ARMV8CE_AES_C defined, but not all prerequisites"
+#endif
+
#if defined(MBEDTLS_CTR_DRBG_C) && !defined(MBEDTLS_AES_C)
#error "MBEDTLS_CTR_DRBG_C defined, but not all prerequisites"
#endif
@@ -879,3 +883,4 @@
typedef int mbedtls_iso_c_forbids_empty_translation_units;
#endif /* MBEDTLS_CHECK_CONFIG_H */
+
diff --git a/include/mbedtls/config.h b/include/mbedtls/config.h
index 1e6e052..c3cfdb1 100644
--- a/include/mbedtls/config.h
+++ b/include/mbedtls/config.h
@@ -49,6 +49,7 @@
* library/aria.c
* library/timing.c
* include/mbedtls/bn_mul.h
+ * library/armv8ce_aes.c
*
* Required by:
* MBEDTLS_AESNI_C
@@ -2150,6 +2151,21 @@
#define MBEDTLS_AESNI_C
/**
+ * \def MBEDTLS_ARMV8CE_AES_C
+ *
+ * Enable ARMv8 Crypto Extensions for AES and GCM
+ *
+ * Module: library/aesni.c
+ * Caller: library/aes.c
+ * library/gcm.c
+ *
+ * Requires: MBEDTLS_HAVE_ASM
+ *
+ * This module utilizes ARMv8 Crypto Extensions for AES and GCM
+ */
+//#define MBEDTLS_ARMV8CE_AES_C
+
+/**
* \def MBEDTLS_AES_C
*
* Enable the AES block cipher.
diff --git a/library/CMakeLists.txt b/library/CMakeLists.txt
index 33e2cfc..223ac88 100644
--- a/library/CMakeLists.txt
+++ b/library/CMakeLists.txt
@@ -15,6 +15,7 @@
aesni.c
arc4.c
aria.c
+ armv8ce_aes.c
asn1parse.c
asn1write.c
base64.c
diff --git a/library/Makefile b/library/Makefile
index b76a84b..d49c3cd 100644
--- a/library/Makefile
+++ b/library/Makefile
@@ -72,6 +72,7 @@
aesni.o \
arc4.o \
aria.o \
+ armv8ce_aes.o \
asn1parse.o \
asn1write.o \
base64.o \
diff --git a/library/version_features.c b/library/version_features.c
index d2840fa..cf29582 100644
--- a/library/version_features.c
+++ b/library/version_features.c
@@ -600,6 +600,9 @@
#if defined(MBEDTLS_AESNI_C)
"MBEDTLS_AESNI_C",
#endif /* MBEDTLS_AESNI_C */
+#if defined(MBEDTLS_ARMV8CE_AES_C)
+ "MBEDTLS_ARMV8CE_AES_C",
+#endif /* MBEDTLS_ARMV8CE_AES_C */
#if defined(MBEDTLS_AES_C)
"MBEDTLS_AES_C",
#endif /* MBEDTLS_AES_C */