SST: Add asset authentication token in the APIs

This patch adds asset authentication token in the APIs to be used in
the future for asset key derivation. It also updates all files which
depend on these APIs and their documentation

Change-Id: I53e193b3dd3151798588c5515cd5198270836acf
Signed-off-by: Marc Moreno <marc.morenoberengue@arm.com>
diff --git a/interface/src/tfm_sst_api.c b/interface/src/tfm_sst_api.c
index d363c0a..ab47fd8 100644
--- a/interface/src/tfm_sst_api.c
+++ b/interface/src/tfm_sst_api.c
@@ -8,70 +8,125 @@
 #include "tfm_sst_defs.h"
 #include "tfm_ns_lock.h"
 
-enum tfm_sst_err_t tfm_sst_create(uint32_t asset_uuid)
+enum tfm_sst_err_t tfm_sst_create(uint32_t asset_uuid, const uint8_t* token,
+                                  uint32_t token_size)
 {
+    struct tfm_sst_token_t s_token;
+
+    /* Pack the token information in the token structure */
+    s_token.token = token;
+    s_token.token_size = token_size;
+
     return tfm_ns_lock_svc_dispatch(SVC_TFM_SST_CREATE,
                                     asset_uuid,
-                                    0,
+                                    (uint32_t)&s_token,
                                     0,
                                     0);
 }
 
 enum tfm_sst_err_t tfm_sst_get_info(uint32_t asset_uuid,
+                                    const uint8_t* token,
+                                    uint32_t token_size,
                                     struct tfm_sst_asset_info_t *info)
 {
+    struct tfm_sst_token_t s_token;
+
+    /* Pack the token information in the token structure */
+    s_token.token = token;
+    s_token.token_size = token_size;
+
     return tfm_ns_lock_svc_dispatch(SVC_TFM_SST_GET_INFO,
                                     asset_uuid,
+                                    (uint32_t)&s_token,
                                     (uint32_t)info,
-                                    0,
                                     0);
 }
 
 enum tfm_sst_err_t tfm_sst_get_attributes(uint32_t asset_uuid,
+                                          const uint8_t* token,
+                                          uint32_t token_size,
                                           struct tfm_sst_asset_attrs_t *attrs)
 {
+    struct tfm_sst_token_t s_token;
+
+    /* Pack the token information in the token structure */
+    s_token.token = token;
+    s_token.token_size = token_size;
+
     return tfm_ns_lock_svc_dispatch(SVC_TFM_SST_GET_ATTRIBUTES,
                                     asset_uuid,
+                                    (uint32_t)&s_token,
                                     (uint32_t)attrs,
-                                    0,
                                     0);
 }
 
 enum tfm_sst_err_t tfm_sst_set_attributes(uint32_t asset_uuid,
+                                      const uint8_t* token,
+                                      uint32_t token_size,
                                       const struct tfm_sst_asset_attrs_t *attrs)
 {
+    struct tfm_sst_token_t s_token;
+
+    /* Pack the token information in the token structure */
+    s_token.token = token;
+    s_token.token_size = token_size;
+
     return tfm_ns_lock_svc_dispatch(SVC_TFM_SST_SET_ATTRIBUTES,
                                     asset_uuid,
+                                    (uint32_t)&s_token,
                                     (uint32_t)attrs,
-                                    0,
                                     0);
 }
 
 enum tfm_sst_err_t tfm_sst_read(uint32_t asset_uuid,
+                                const uint8_t* token,
+                                uint32_t token_size,
                                 struct tfm_sst_buf_t* data)
 {
+    struct tfm_sst_token_t s_token;
+
+    /* Pack the token information in the token structure */
+    s_token.token = token;
+    s_token.token_size = token_size;
+
     return tfm_ns_lock_svc_dispatch(SVC_TFM_SST_READ,
                                     asset_uuid,
+                                    (uint32_t)&s_token,
                                     (uint32_t)data,
-                                    0,
                                     0);
 }
 
 enum tfm_sst_err_t tfm_sst_write(uint32_t asset_uuid,
+                                 const uint8_t* token,
+                                 uint32_t token_size,
                                  struct tfm_sst_buf_t* data)
 {
+    struct tfm_sst_token_t s_token;
+
+    /* Pack the token information in the token structure */
+    s_token.token = token;
+    s_token.token_size = token_size;
+
     return tfm_ns_lock_svc_dispatch(SVC_TFM_SST_WRITE,
                                     asset_uuid,
+                                    (uint32_t)&s_token,
                                     (uint32_t)data,
-                                    0,
                                     0);
 }
 
-enum tfm_sst_err_t tfm_sst_delete(uint32_t asset_uuid)
+enum tfm_sst_err_t tfm_sst_delete(uint32_t asset_uuid,
+                                  const uint8_t* token,
+                                  uint32_t token_size)
 {
+    struct tfm_sst_token_t s_token;
+
+    /* Pack the token information in the token structure */
+    s_token.token = token;
+    s_token.token_size = token_size;
+
     return tfm_ns_lock_svc_dispatch(SVC_TFM_SST_DELETE,
                                     asset_uuid,
-                                    0,
+                                    (uint32_t)&s_token,
                                     0,
                                     0);
 }
diff --git a/interface/src/tfm_sst_svc_handler.c b/interface/src/tfm_sst_svc_handler.c
index beab20d..8277169c 100644
--- a/interface/src/tfm_sst_svc_handler.c
+++ b/interface/src/tfm_sst_svc_handler.c
@@ -11,70 +11,77 @@
 #include "tfm_id_mngr.h"
 
 /* SVC function implementations */
-enum tfm_sst_err_t tfm_sst_svc_create(uint32_t asset_uuid)
+enum tfm_sst_err_t tfm_sst_svc_create(uint32_t asset_uuid,
+                                    const struct tfm_sst_token_t *s_token)
 {
     uint32_t app_id;
 
     app_id = tfm_sst_get_cur_id();
 
-    return tfm_sst_veneer_create(app_id, asset_uuid);
+    return tfm_sst_veneer_create(app_id, asset_uuid, s_token);
 }
 
 enum tfm_sst_err_t tfm_sst_svc_get_info(uint32_t asset_uuid,
+                                        const struct tfm_sst_token_t *s_token,
                                         struct tfm_sst_asset_info_t *info)
 {
     uint32_t app_id;
 
     app_id = tfm_sst_get_cur_id();
 
-    return tfm_sst_veneer_get_info(app_id, asset_uuid, info);
+    return tfm_sst_veneer_get_info(app_id, asset_uuid, s_token, info);
 }
 
 enum tfm_sst_err_t tfm_sst_svc_get_attributes(uint32_t asset_uuid,
-                                            struct tfm_sst_asset_attrs_t *attrs)
+                                          const struct tfm_sst_token_t *s_token,
+                                          struct tfm_sst_asset_attrs_t *attrs)
 {
     uint32_t app_id;
 
     app_id = tfm_sst_get_cur_id();
 
-    return tfm_sst_veneer_get_attributes(app_id, asset_uuid, attrs);
+    return tfm_sst_veneer_get_attributes(app_id, asset_uuid, s_token, attrs);
 }
 
 enum tfm_sst_err_t tfm_sst_svc_set_attributes(uint32_t asset_uuid,
+                                      const struct tfm_sst_token_t *s_token,
                                       const struct tfm_sst_asset_attrs_t *attrs)
 {
     uint32_t app_id;
 
     app_id = tfm_sst_get_cur_id();
 
-    return tfm_sst_veneer_set_attributes(app_id, asset_uuid, attrs);
+    return tfm_sst_veneer_set_attributes(app_id, asset_uuid, s_token, attrs);
 }
 
 enum tfm_sst_err_t tfm_sst_svc_read(uint32_t asset_uuid,
+                                    const struct tfm_sst_token_t *s_token,
                                     struct tfm_sst_buf_t* data)
 {
     uint32_t app_id;
 
     app_id = tfm_sst_get_cur_id();
 
-    return tfm_sst_veneer_read(app_id, asset_uuid, data);
+    return tfm_sst_veneer_read(app_id, asset_uuid, s_token, data);
 }
 
 enum tfm_sst_err_t tfm_sst_svc_write(uint32_t asset_uuid,
+                                     const struct tfm_sst_token_t *s_token,
                                      struct tfm_sst_buf_t* data)
 {
     uint32_t app_id;
 
     app_id = tfm_sst_get_cur_id();
 
-    return tfm_sst_veneer_write(app_id, asset_uuid, data);
+    return tfm_sst_veneer_write(app_id, asset_uuid, s_token, data);
 }
 
-enum tfm_sst_err_t tfm_sst_svc_delete(uint32_t asset_uuid)
+enum tfm_sst_err_t tfm_sst_svc_delete(uint32_t asset_uuid,
+                                      const struct tfm_sst_token_t *s_token)
 {
     uint32_t app_id;
 
     app_id = tfm_sst_get_cur_id();
 
-    return tfm_sst_veneer_delete(app_id, asset_uuid);
+    return tfm_sst_veneer_delete(app_id, asset_uuid, s_token);
 }