1 /*
2  * Copyright (c) 2021-2023, Arm Limited and Contributors. All rights reserved.
3  *
4  * SPDX-License-Identifier: BSD-3-Clause
5  */
6 
7 #include "psa_crypto_client.h"
8 
9 #include <service/crypto/include/psa/crypto.h>
10 #include <stddef.h>
11 
12 struct psa_crypto_client psa_crypto_client_instance = {
13 
14 	.base.session = NULL,
15 
16 	/* To conform to PSA API, psa_crypto_init needs to be called.
17 	 * This state variable is used enforces this.
18 	 */
19 	.init_status = PSA_ERROR_BAD_STATE
20 };
21 
psa_crypto_init(void)22 psa_status_t psa_crypto_init(void)
23 {
24 	/* Must be called after psa_crypto_client_init */
25 	if (psa_crypto_client_instance.base.session)
26 		psa_crypto_client_instance.init_status = PSA_SUCCESS;
27 
28 	return psa_crypto_client_instance.init_status;
29 }
30 
psa_crypto_client_init(struct rpc_caller_session * session)31 psa_status_t psa_crypto_client_init(struct rpc_caller_session *session)
32 {
33 	return service_client_init(&psa_crypto_client_instance.base, session);
34 }
35 
psa_crypto_client_deinit(void)36 void psa_crypto_client_deinit(void)
37 {
38 	service_client_deinit(&psa_crypto_client_instance.base);
39 	psa_crypto_client_instance.init_status = PSA_ERROR_BAD_STATE;
40 }
41 
psa_crypto_client_rpc_status(void)42 int psa_crypto_client_rpc_status(void)
43 {
44 	return psa_crypto_client_instance.base.rpc_status;
45 }
46