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/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);
}