blob: 45e80821e4f6c2c21db38f8608602d8fd80e83ba [file] [log] [blame]
Miklos Balint87da2512018-04-19 13:45:50 +02001/*
2 * Copyright (c) 2018, Arm Limited. All rights reserved.
3 *
4 * SPDX-License-Identifier: BSD-3-Clause
5 *
6 */
7
8#include "interface/include/psa_client.h"
9#include "tfm_ns_lock.h"
10#include "tfm_api.h"
11
12/**** API functions ****/
13
14uint32_t psa_version(uint32_t sid)
15{
16 return tfm_ns_lock_dispatch((veneer_fn)tfm_psa_version_veneer,
17 sid,
18 0,
19 0,
20 0);
21}
22
23psa_handle_t psa_connect(uint32_t sid, uint32_t minor_version)
24{
25 return tfm_ns_lock_dispatch((veneer_fn)tfm_psa_connect_veneer,
26 sid,
27 minor_version,
28 0,
29 0);
30}
31
32psa_error_t psa_call(psa_handle_t handle,
33 const psa_invec *in_vec,
34 size_t in_len,
35 const psa_outvec *out_vec,
36 size_t out_len)
37{
Miklos Balintdd1ea1c2018-08-03 15:48:48 +020038 /* FixMe: sanity check can be added to offload some NS thread checks from
39 * TFM secure API
40 */
41
Miklos Balint87da2512018-04-19 13:45:50 +020042 /* Due to v8M restrictions, TF-M NS API needs to add another layer of
43 * serialization in order for NS to pass arguments to S
44 */
45 psa_invec in_vecs, out_vecs;
46 in_vecs.base = in_vec;
47 in_vecs.len = in_len;
48 out_vecs.base = out_vec;
49 out_vecs.len = out_len;
50 return tfm_ns_lock_dispatch((veneer_fn)tfm_psa_call_veneer,
51 (uint32_t)handle,
52 (uint32_t)&in_vecs,
53 (uint32_t)&out_vecs,
54 0);
55}
56
57void psa_close(psa_handle_t handle)
58{
59 tfm_ns_lock_dispatch((veneer_fn)tfm_psa_close_veneer,
60 (uint32_t)handle,
61 0,
62 0,
63 0);
64}
65