core: mbedtls: use SHA-512 crypto accelerated routines

Uses the recently provided accelerated SHA-512 routine.

Reviewed-by: Jerome Forissier <jerome.forissier@linaro.org>
Signed-off-by: Jens Wiklander <jens.wiklander@linaro.org>
diff --git a/lib/libmbedtls/core/hash.c b/lib/libmbedtls/core/hash.c
index 634d68a..d2977c5 100644
--- a/lib/libmbedtls/core/hash.c
+++ b/lib/libmbedtls/core/hash.c
@@ -14,6 +14,7 @@
 #include <mbedtls/platform_util.h>
 #include <mbedtls/sha1.h>
 #include <mbedtls/sha256.h>
+#include <mbedtls/sha512.h>
 #include <stdlib.h>
 #include <string_ext.h>
 #include <string.h>
@@ -225,3 +226,18 @@
 	return 0;
 }
 #endif /*MBEDTLS_SHA256_PROCESS_ALT*/
+
+#if defined(MBEDTLS_SHA512_PROCESS_ALT)
+int mbedtls_internal_sha512_process(mbedtls_sha512_context *ctx,
+				    const unsigned char data[64])
+{
+	MBEDTLS_INTERNAL_VALIDATE_RET(ctx != NULL,
+				      MBEDTLS_ERR_SHA512_BAD_INPUT_DATA);
+	MBEDTLS_INTERNAL_VALIDATE_RET((const unsigned char *)data != NULL,
+				      MBEDTLS_ERR_SHA512_BAD_INPUT_DATA);
+
+	crypto_accel_sha512_compress(ctx->state, data, 1);
+
+	return 0;
+}
+#endif /*MBEDTLS_SHA512_PROCESS_ALT*/
diff --git a/lib/libmbedtls/include/mbedtls_config_kernel.h b/lib/libmbedtls/include/mbedtls_config_kernel.h
index cd4d975..46d631a 100644
--- a/lib/libmbedtls/include/mbedtls_config_kernel.h
+++ b/lib/libmbedtls/include/mbedtls_config_kernel.h
@@ -39,6 +39,9 @@
 #if defined(CFG_CRYPTO_SHA384) || defined(CFG_CRYPTO_SHA512)
 #define MBEDTLS_SHA512_C
 #define MBEDTLS_MD_C
+#if defined(CFG_CORE_CRYPTO_SHA512_ACCEL)
+#define MBEDTLS_SHA512_PROCESS_ALT
+#endif
 #endif
 
 #if defined(CFG_CRYPTO_HMAC)