Attest: Implement get token size API

Extend the attestation API with the implementation of
psa_initial_attest_get_token_size() function. It is
meant for retrieving the exact size of the initial
attestation token, but current version just returns
a hard coded value.

Replacement of handwritten veneers to the auto-generated
veneers.

Change-Id: Ibc91c6cdaeecec59c4e1f18576783cb55723e9ec
Signed-off-by: Tamas Ban <tamas.ban@arm.com>
diff --git a/interface/include/tfm_initial_attestation_veneers.h b/interface/include/tfm_initial_attestation_veneers.h
deleted file mode 100644
index 502ab3e..0000000
--- a/interface/include/tfm_initial_attestation_veneers.h
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * Copyright (c) 2018, Arm Limited. All rights reserved.
- *
- * SPDX-License-Identifier: BSD-3-Clause
- *
- */
-
-#ifndef __TFM_INITIAL_ATTESTATION_VENEERS_H__
-#define __TFM_INITIAL_ATTESTATION_VENEERS_H__
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include "psa_client.h"
-
-/**
- * \brief Get initial attestation token
- *
- * \param[in]     in_vec     Pointer to in_vec array, which contains input data
- *                           to attestation service
- * \param[in]     num_invec  Number of elements in in_vec array
- * \param[in/out] out_vec    Pointer out_vec array, which contains output data
- *                           to attestation service
- * \param[in]     num_outvec Number of elements in out_vec array
- *
- * \return Returns error code as specified in \ref psa_attest_err_t
- */
-enum psa_attest_err_t
-tfm_attest_veneer_get_token(const psa_invec  *in_vec,  uint32_t num_invec,
-                                  psa_outvec *out_vec, uint32_t num_outvec);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __TFM_INITIAL_ATTESTATION_VENEERS_H__ */
diff --git a/interface/include/tfm_veneers.h b/interface/include/tfm_veneers.h
index 1e03e08..c238b35 100644
--- a/interface/include/tfm_veneers.h
+++ b/interface/include/tfm_veneers.h
@@ -52,6 +52,7 @@
 
 /******** TFM_SP_INITIAL_ATTESTATION ********/
 psa_status_t tfm_initial_attest_get_token_veneer(struct psa_invec *in_vec, size_t in_len, struct psa_outvec *out_vec, size_t out_len);
+psa_status_t tfm_initial_attest_get_token_size_veneer(struct psa_invec *in_vec, size_t in_len, struct psa_outvec *out_vec, size_t out_len);
 
 #ifdef TFM_PARTITION_TEST_CORE
 /******** TFM_SP_CORE_TEST ********/
diff --git a/interface/src/tfm_initial_attestation_api.c b/interface/src/tfm_initial_attestation_api.c
index b935f34..ae58701 100644
--- a/interface/src/tfm_initial_attestation_api.c
+++ b/interface/src/tfm_initial_attestation_api.c
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2018, Arm Limited. All rights reserved.
+ * Copyright (c) 2018-2019, Arm Limited. All rights reserved.
  *
  * SPDX-License-Identifier: BSD-3-Clause
  *
  */
 
 #include "psa_initial_attestation_api.h"
-#include "tfm_initial_attestation_veneers.h"
+#include "tfm_veneers.h"
 #include "tfm_ns_lock.h"
 #include "psa_client.h"
 
@@ -18,6 +18,7 @@
 {
     psa_invec  in_vec[1];
     psa_outvec out_vec[1];
+    uint32_t res;
 
     in_vec[0].base = challenge_obj;
     in_vec[0].len  = challenge_size;
@@ -25,7 +26,30 @@
     out_vec[0].base = token;
     out_vec[0].len  = *token_size;
 
-    return tfm_ns_lock_dispatch((veneer_fn)tfm_attest_veneer_get_token,
+    res = tfm_ns_lock_dispatch((veneer_fn)tfm_initial_attest_get_token_veneer,
+                                (uint32_t)in_vec,  1,
+                                (uint32_t)out_vec, 1);
+
+    *token_size = out_vec[0].len;
+
+    return res;
+}
+
+enum psa_attest_err_t
+psa_initial_attest_get_token_size(uint32_t  challenge_size,
+                                  uint32_t *token_size)
+{
+    psa_invec  in_vec[1];
+    psa_outvec out_vec[1];
+
+    in_vec[0].base = &challenge_size;
+    in_vec[0].len  = sizeof(uint32_t);
+
+    out_vec[0].base = token_size;
+    out_vec[0].len  = sizeof(uint32_t);
+
+    return tfm_ns_lock_dispatch((veneer_fn) \
+                                tfm_initial_attest_get_token_size_veneer,
                                 (uint32_t)in_vec,  1,
                                 (uint32_t)out_vec, 1);
 }