ext: nrf: Add nrf cc310 glue layer

Add glue layer for using the nrf cc310 to keep the cc310 interface more generic.
Add readme on how to build mcuboot with nrf cc310 support.

Signed-off-by: Sigvart Hovland <sigvart.m@gmail.com>
diff --git a/ext/nrf/cc310_glue.h b/ext/nrf/cc310_glue.h
new file mode 100644
index 0000000..db34c34
--- /dev/null
+++ b/ext/nrf/cc310_glue.h
@@ -0,0 +1,58 @@
+/*
+ * Copyright (c) 2019 Nordic Semiconductor ASA
+ *
+ * SPDX-License-Identifier: LicenseRef-BSD-5-Clause-Nordic
+ */
+#ifndef NRF_CC310_GLUE_H__
+#define NRF_CC310_GLUE_H__
+
+#include <nrf.h>
+#include <nrf_cc310_bl_init.h>
+#include <nrf_cc310_bl_hash_sha256.h>
+#include <nrf_cc310_bl_ecdsa_verify_secp256r1.h>
+#include <generated_dts_board.h>
+#include <string.h>
+
+typedef nrf_cc310_bl_hash_context_sha256_t bootutil_sha256_context;
+
+int cc310_ecdsa_verify_secp256r1(uint8_t *hash,
+                                 uint8_t *public_key,
+                                 uint8_t *signature,
+                                 size_t hash_len);
+
+
+int cc310_init(void);
+
+static inline void cc310_sha256_init(nrf_cc310_bl_hash_context_sha256_t *ctx);
+
+void cc310_sha256_update(nrf_cc310_bl_hash_context_sha256_t *ctx,
+                         const void *data,
+                         uint32_t data_len);
+
+static inline void nrf_cc310_enable(void)
+{
+    NRF_CRYPTOCELL->ENABLE=1;
+}
+
+static inline void nrf_cc310_disable(void)
+{
+    NRF_CRYPTOCELL->ENABLE=1;
+}
+
+/* Enable and disable cc310 to reduce power consumption */
+static inline void cc310_sha256_init(nrf_cc310_bl_hash_context_sha256_t * ctx)
+{
+    cc310_init();
+    nrf_cc310_enable();
+    nrf_cc310_bl_hash_sha256_init(ctx);
+}
+
+static inline void cc310_sha256_finalize(bootutil_sha256_context *ctx,
+                                          uint8_t *output)
+{
+    nrf_cc310_bl_hash_sha256_finalize(ctx,
+                                      (nrf_cc310_bl_hash_digest_sha256_t *)output);
+    nrf_cc310_disable();
+}
+
+#endif /* NRF_CC310_GLUE_H__ */