Crypto: Add support for HMAC functionalities

This patch introduces support for the HMAC functionalities.
The HMAC construction procedure is as described by RFC-2104.
It also adds the related Regression test suite to validate
the API implementation.

Change-Id: I622d866b34ba7e3a3e61e1a28d43fb80e49fd8ec
Signed-off-by: Louis Mayencourt <louis.mayencourt@arm.com>
diff --git a/secure_fw/services/crypto/crypto_alloc.c b/secure_fw/services/crypto/crypto_alloc.c
index 119e664..2a4d6bd 100644
--- a/secure_fw/services/crypto/crypto_alloc.c
+++ b/secure_fw/services/crypto/crypto_alloc.c
@@ -21,12 +21,6 @@
  */
 #define TFM_CRYPTO_CONC_OPER_NUM (8)
 
-/**
- * \brief This value is used to mark an handle as invalid.
- *
- */
-#define INVALID_HANDLE (0xFFFFFFFF)
-
 struct tfm_crypto_operation_s {
     uint32_t in_use;                /*!< Indicates if the operation is in use */
     enum tfm_crypto_operation_type type; /*!< Type of the operation */
@@ -93,7 +87,7 @@
             return TFM_CRYPTO_ERR_PSA_SUCCESS;
         }
     }
-    *handle = INVALID_HANDLE;
+    *handle = TFM_CRYPTO_INVALID_HANDLE;
 
     return TFM_CRYPTO_ERR_PSA_ERROR_NOT_PERMITTED;
 }
@@ -107,7 +101,7 @@
         memset_operation_context(i);
         operation[i].in_use = TFM_CRYPTO_NOT_IN_USE;
         operation[i].type = TFM_CRYPTO_OPERATION_NONE;
-        *handle = INVALID_HANDLE;
+        *handle = TFM_CRYPTO_INVALID_HANDLE;
         return TFM_CRYPTO_ERR_PSA_SUCCESS;
     }