1 // SPDX-License-Identifier: BSD-2-Clause
2 /*
3 * Copyright (c) 2020, Open Mobile Platform LLC
4 */
5
6 #include <assert.h>
7 #include <tee_internal_api.h>
8 #include <tee_internal_api_extensions.h>
9
10 /* This TA header */
11 #include <plugin_ta.h>
12
13 #include <string.h>
14 #include <stdint.h>
15
TA_CreateEntryPoint(void)16 TEE_Result TA_CreateEntryPoint(void)
17 {
18 return TEE_SUCCESS;
19 }
20
TA_DestroyEntryPoint(void)21 void TA_DestroyEntryPoint(void)
22 {
23 }
24
TA_OpenSessionEntryPoint(uint32_t param_types,TEE_Param __maybe_unused params[4],void __maybe_unused ** sess_ctx)25 TEE_Result TA_OpenSessionEntryPoint(uint32_t param_types,
26 TEE_Param __maybe_unused params[4],
27 void __maybe_unused **sess_ctx)
28 {
29 uint32_t exp_param_types =
30 TEE_PARAM_TYPES(TEE_PARAM_TYPE_NONE, TEE_PARAM_TYPE_NONE,
31 TEE_PARAM_TYPE_NONE, TEE_PARAM_TYPE_NONE);
32
33 if (param_types != exp_param_types)
34 return TEE_ERROR_BAD_PARAMETERS;
35
36 return TEE_SUCCESS;
37 }
38
TA_CloseSessionEntryPoint(void __unused * sess_ctx)39 void TA_CloseSessionEntryPoint(void __unused *sess_ctx)
40 {
41 }
42
syslog_plugin_ping(void)43 static TEE_Result syslog_plugin_ping(void)
44 {
45 int n = 0;
46 TEE_Result res = TEE_SUCCESS;
47 static uint32_t inc_var = 0;
48 char log_str[64] = { 0 };
49 TEE_UUID syslog_uuid = SYSLOG_PLUGIN_UUID;
50
51 n = snprintf(log_str, sizeof(log_str), "Hello, plugin! value = 0x%x",
52 inc_var++);
53 if (n > (int)sizeof(log_str))
54 return TEE_ERROR_GENERIC;
55
56 IMSG("Push syslog plugin string \"%s\"", log_str);
57
58 res = tee_invoke_supp_plugin(&syslog_uuid, TO_SYSLOG_CMD, LOG_INFO,
59 log_str, n, NULL);
60 if (res)
61 EMSG("invoke plugin failed with code 0x%x", res);
62
63 return res;
64 }
65
TA_InvokeCommandEntryPoint(void __unused * sess_ctx,uint32_t cmd_id,uint32_t param_types,TEE_Param __unused params[4])66 TEE_Result TA_InvokeCommandEntryPoint(void __unused *sess_ctx,
67 uint32_t cmd_id, uint32_t param_types,
68 TEE_Param __unused params[4])
69 {
70 uint32_t exp_param_types =
71 TEE_PARAM_TYPES(TEE_PARAM_TYPE_NONE, TEE_PARAM_TYPE_NONE,
72 TEE_PARAM_TYPE_NONE, TEE_PARAM_TYPE_NONE);
73
74 if (param_types != exp_param_types)
75 return TEE_ERROR_BAD_PARAMETERS;
76
77 switch (cmd_id) {
78 case PLUGIN_TA_PING:
79 return syslog_plugin_ping();
80 default:
81 return TEE_ERROR_NOT_SUPPORTED;
82 }
83 }
84