blob: 89d3b161252b4d6f4b4d6b37601897c831601374 [file] [log] [blame]
Etienne Carriere9b7b70d2020-05-16 10:27:23 +02001// SPDX-License-Identifier: GPL-2.0
Pascal Brandc639ac82015-07-02 08:53:34 +02002/*
3 * Copyright (c) 2014, STMicroelectronics International N.V.
Pascal Brandc639ac82015-07-02 08:53:34 +02004 */
5
6#include <stdio.h>
7#include <string.h>
8#include <stdlib.h>
9#include <sys/types.h>
10#include <unistd.h>
11#include "xtest_test.h"
12#include "xtest_helpers.h"
Pascal Brandc639ac82015-07-02 08:53:34 +020013#include "tee_api_defines.h"
14#include "tee_client_api.h"
15#include "xml_client_api.h"
16
17static bool xtest_init = false;
18
19static bool xtest_tee_init(ADBG_Case_t *c)
20{
21 if (xtest_init)
22 return true;
23
24 SHARE_MEM01 = malloc(sizeof(TEEC_SharedMemory));
25 if (!ADBG_EXPECT_NOT_NULL(c, SHARE_MEM01))
26 goto exit;
27
28 SHARE_MEM02 = malloc(sizeof(TEEC_SharedMemory));
29 if (!ADBG_EXPECT_NOT_NULL(c, SHARE_MEM02))
30 goto exit;
31
32 SESSION01 = malloc(sizeof(TEEC_Session));
33 if (!ADBG_EXPECT_NOT_NULL(c, SESSION01))
34 goto exit;
35
36 CONTEXT01 = malloc(sizeof(TEEC_Context));
37 if (!ADBG_EXPECT_NOT_NULL(c, CONTEXT01))
38 goto exit;
39
40 OPERATION01 = malloc(sizeof(TEEC_Operation));
41 if (!ADBG_EXPECT_NOT_NULL(c, OPERATION01))
42 goto exit;
43
44 OPERATION02 = malloc(sizeof(TEEC_Operation));
45 if (!ADBG_EXPECT_NOT_NULL(c, OPERATION02))
46 goto exit;
47
48 xtest_init = true;
49
50 return xtest_init;
51
52exit:
53 if (SHARE_MEM01) {
54 free(SHARE_MEM01);
55 SHARE_MEM01 = NULL;
56 }
57 if (SHARE_MEM02) {
58 free(SHARE_MEM02);
59 SHARE_MEM02 = NULL;
60 }
61 if (SESSION01) {
62 free(SESSION01);
63 SESSION01 = NULL;
64 }
65 if (CONTEXT01) {
66 free(CONTEXT01);
67 CONTEXT01 = NULL;
68 }
69 if (OPERATION01) {
70 free(OPERATION01);
71 OPERATION01 = NULL;
72 }
73 if (OPERATION02) {
74 free(OPERATION02);
75 OPERATION02 = NULL;
76 }
77
78 xtest_init = false;
79 return xtest_init;
80}
81
82/*29-84-6d*/
83static void xtest_tee_7001(ADBG_Case_t *c)
84{
85 if (!ADBG_EXPECT_TRUE(c, xtest_tee_init(c)))
86 return;
87 TEEC_SelectApp(CLIENT_APP01, THREAD01_DEFAULT);
88 XML_InitializeContext(c, _device, CONTEXT01, TEEC_SUCCESS);
89 ADBG_EXPECT(c, TEEC_SUCCESS,
90 AllocateSharedMemory(CONTEXT01, SHARE_MEM01, SIZE_VALUE01,
91 TEEC_MEM_INPUT));
92 TEEC_ReleaseSharedMemory(SHARE_MEM01);
93 TEEC_FinalizeContext(CONTEXT01);
94}
Jens Wiklander14f48872018-06-29 15:30:13 +020095ADBG_CASE_DEFINE(regression, 7001, xtest_tee_7001,
96 "Allocate_In RELEASE_SHARED_MEMORY_WHEN_ALLOCATED");
Pascal Brandc639ac82015-07-02 08:53:34 +020097
98/*29-c2-4c*/
99static void xtest_tee_7002(ADBG_Case_t *c)
100{
101 if (!ADBG_EXPECT_TRUE(c, xtest_tee_init(c)))
102 return;
103 TEEC_SelectApp(CLIENT_APP01, THREAD01_DEFAULT);
104 XML_InitializeContext(c, _device, CONTEXT01, TEEC_SUCCESS);
105 ADBG_EXPECT(c, TEEC_ERROR_OUT_OF_MEMORY,
106 AllocateSharedMemory(CONTEXT01, SHARE_MEM01,
107 SIZE_OVER_MEMORY, TEEC_MEM_INPUT));
108 TEEC_FinalizeContext(CONTEXT01);
109}
Jens Wiklander14f48872018-06-29 15:30:13 +0200110ADBG_CASE_DEFINE(regression, 7002, xtest_tee_7002,
111 "Allocate_out_of_memory INITIALIZE_CONTEXT_NAMES");
Pascal Brandc639ac82015-07-02 08:53:34 +0200112
113/*29-b0-da*/
114static void xtest_tee_7003(ADBG_Case_t *c)
115{
116 if (!ADBG_EXPECT_TRUE(c, xtest_tee_init(c)))
117 return;
118 TEEC_SelectApp(CLIENT_APP01, THREAD01_DEFAULT);
119 XML_InitializeContext(c, _device, CONTEXT01, TEEC_SUCCESS);
120 ADBG_EXPECT(c, TEEC_SUCCESS,
121 AllocateSharedMemory(CONTEXT01, SHARE_MEM01, BIG_SIZE,
122 TEEC_MEM_OUTPUT));
123 TEEC_ReleaseSharedMemory(NULL);
124 TEEC_ReleaseSharedMemory(SHARE_MEM01);
125 TEEC_FinalizeContext(CONTEXT01);
126}
Jens Wiklander14f48872018-06-29 15:30:13 +0200127ADBG_CASE_DEFINE(regression, 7003, xtest_tee_7003,
128 "ReleaseSharedMemory_null RELEASE_SHARED_MEMORY_WHEN_ALLOCATED");
Pascal Brandc639ac82015-07-02 08:53:34 +0200129
130/*29-1c-00*/
131static void xtest_tee_7004(ADBG_Case_t *c)
132{
133 if (!ADBG_EXPECT_TRUE(c, xtest_tee_init(c)))
134 return;
135 TEEC_SelectApp(CLIENT_APP01, THREAD01_DEFAULT);
136 XML_InitializeContext(c, _device, CONTEXT01, TEEC_SUCCESS);
137 ADBG_EXPECT(c, TEEC_SUCCESS,
138 AllocateSharedMemory(CONTEXT01, SHARE_MEM01, SIZE_VALUE01,
139 TEEC_MEM_INOUT));
140 TEEC_ReleaseSharedMemory(SHARE_MEM01);
141 TEEC_FinalizeContext(CONTEXT01);
142}
Jens Wiklander14f48872018-06-29 15:30:13 +0200143ADBG_CASE_DEFINE(regression, 7004, xtest_tee_7004,
144 "Allocate_InOut RELEASE_SHARED_MEMORY_WHEN_ALLOCATED");
Pascal Brandc639ac82015-07-02 08:53:34 +0200145
146/*29-9f-a2*/
147static void xtest_tee_7005(ADBG_Case_t *c)
148{
149 if (!ADBG_EXPECT_TRUE(c, xtest_tee_init(c)))
150 return;
151 TEEC_SelectApp(CLIENT_APP01, THREAD01_DEFAULT);
152 XML_InitializeContext(c, _device, CONTEXT01, TEEC_SUCCESS);
153 ADBG_EXPECT(c, TEEC_SUCCESS,
154 RegisterSharedMemory(CONTEXT01, SHARE_MEM01, SIZE_VALUE01,
155 TEEC_MEM_INPUT));
156 TEEC_ReleaseSharedMemory(SHARE_MEM01);
157 TEEC_FinalizeContext(CONTEXT01);
158}
Jens Wiklander14f48872018-06-29 15:30:13 +0200159ADBG_CASE_DEFINE(regression, 7005, xtest_tee_7005,
160 "Register_In RELEASE_SHARED_MEMORY_WHEN_REGISTERED");
Pascal Brandc639ac82015-07-02 08:53:34 +0200161
162/*29-11-02*/
163static void xtest_tee_7006(ADBG_Case_t *c)
164{
165 if (!ADBG_EXPECT_TRUE(c, xtest_tee_init(c)))
166 return;
167 TEEC_SelectApp(CLIENT_APP01, THREAD01_DEFAULT);
168 XML_InitializeContext(c, _device, CONTEXT01, TEEC_SUCCESS);
169 ADBG_EXPECT(c, TEEC_SUCCESS,
170 RegisterSharedMemory(CONTEXT01, SHARE_MEM01, SIZE_VALUE01,
171 TEEC_MEM_OUTPUT));
172 TEEC_ReleaseSharedMemory(SHARE_MEM01);
173 TEEC_FinalizeContext(CONTEXT01);
174}
Jens Wiklander14f48872018-06-29 15:30:13 +0200175ADBG_CASE_DEFINE(regression, 7006, xtest_tee_7006,
176 "Register_notZeroLength_Out RELEASE_SHARED_MEMORY_WHEN_REGISTERED");
Pascal Brandc639ac82015-07-02 08:53:34 +0200177
178/*29-1f-a2*/
179static void xtest_tee_7007(ADBG_Case_t *c)
180{
181 if (!ADBG_EXPECT_TRUE(c, xtest_tee_init(c)))
182 return;
183 TEEC_SelectApp(CLIENT_APP01, THREAD01_DEFAULT);
184 XML_InitializeContext(c, _device, CONTEXT01, TEEC_SUCCESS);
185 ADBG_EXPECT(c, TEEC_SUCCESS,
186 RegisterSharedMemory(CONTEXT01, SHARE_MEM01, BIG_SIZE,
187 TEEC_MEM_INOUT));
188 TEEC_ReleaseSharedMemory(SHARE_MEM01);
189 TEEC_FinalizeContext(CONTEXT01);
190}
Jens Wiklander14f48872018-06-29 15:30:13 +0200191ADBG_CASE_DEFINE(regression, 7007, xtest_tee_7007,
192 "Register_InOut RELEASE_SHARED_MEMORY_WHEN_REGISTERED");
Pascal Brandc639ac82015-07-02 08:53:34 +0200193
194/*29-2e-8d*/
195static void xtest_tee_7008(ADBG_Case_t *c)
196{
197 if (!ADBG_EXPECT_TRUE(c, xtest_tee_init(c)))
198 return;
199 TEEC_SelectApp(CLIENT_APP01, THREAD01_DEFAULT);
200 XML_InitializeContext(c, _device, CONTEXT01, TEEC_SUCCESS);
201 ADBG_EXPECT(c, TEEC_SUCCESS,
202 RegisterSharedMemory(CONTEXT01, SHARE_MEM01, ZERO,
203 TEEC_MEM_OUTPUT));
204 TEEC_ReleaseSharedMemory(SHARE_MEM01);
205 TEEC_FinalizeContext(CONTEXT01);
206}
Jens Wiklander14f48872018-06-29 15:30:13 +0200207ADBG_CASE_DEFINE(regression, 7008, xtest_tee_7008,
208 "Register_zeroLength_Out RELEASE_SHARED_MEMORY_WHEN_REGISTERED");
Pascal Brandc639ac82015-07-02 08:53:34 +0200209
210/*29-2b-3f*/
211static void xtest_tee_7009(ADBG_Case_t *c)
212{
213 if (!ADBG_EXPECT_TRUE(c, xtest_tee_init(c)))
214 return;
215 TEEC_SelectApp(CLIENT_APP01, THREAD01_DEFAULT);
216 XML_InitializeContext(c, _device, CONTEXT01, TEEC_SUCCESS);
217 XML_OpenSession(c, CONTEXT01, SESSION01, &UUID_Unknown,
218 TEEC_LOGIN_PUBLIC, NULL, NULL,
219 TEEC_ORIGIN_ANY_NOT_TRUSTED_APP, TEEC_UNDEFINED_ERROR);
220 TEEC_FinalizeContext(CONTEXT01);
221}
Jens Wiklander14f48872018-06-29 15:30:13 +0200222ADBG_CASE_DEFINE(regression, 7009, xtest_tee_7009,
223 "OpenSession_error_notExistingTA OPEN_SESSION_TARGET_TRUSTED_APP");
Pascal Brandc639ac82015-07-02 08:53:34 +0200224
225/*29-cd-39*/
226static void xtest_tee_7010(ADBG_Case_t *c)
227{
228 if (!ADBG_EXPECT_TRUE(c, xtest_tee_init(c)))
229 return;
230 TEEC_SelectApp(CLIENT_APP01, THREAD01_DEFAULT);
231 XML_InitializeContext(c, _device, CONTEXT01, TEEC_SUCCESS);
232 ADBG_EXPECT(c, TEEC_SUCCESS,
233 AllocateSharedMemory(CONTEXT01, SHARE_MEM01, ZERO,
234 TEEC_MEM_OUTPUT));
235 TEEC_ReleaseSharedMemory(SHARE_MEM01);
236 TEEC_FinalizeContext(CONTEXT01);
237}
Jens Wiklander14f48872018-06-29 15:30:13 +0200238ADBG_CASE_DEFINE(regression, 7010, xtest_tee_7010,
239 "Allocate_Out RELEASE_SHARED_MEMORY_WHEN_ALLOCATED");
Pascal Brandc639ac82015-07-02 08:53:34 +0200240
Pascal Brandc639ac82015-07-02 08:53:34 +0200241/*29-a2-e3*/
242static void xtest_tee_7013(ADBG_Case_t *c)
243{
244 if (!ADBG_EXPECT_TRUE(c, xtest_tee_init(c)))
245 return;
246 TEEC_SelectApp(CLIENT_APP01, THREAD01_DEFAULT);
247 XML_InitializeContext(c, _device, CONTEXT01, TEEC_SUCCESS);
248 XML_OpenSession(c, CONTEXT01, SESSION01,
249 &UUID_TTA_answerSuccessTo_OpenSession_Invoke,
250 INVALID_CONNECTION_METHODS, NULL, NULL,
251 TEEC_ORIGIN_ANY_NOT_TRUSTED_APP, TEEC_UNDEFINED_ERROR);
252 TEEC_FinalizeContext(CONTEXT01);
253}
Jens Wiklander14f48872018-06-29 15:30:13 +0200254ADBG_CASE_DEFINE(regression, 7013, xtest_tee_7013,
255 "OpenSession_error_originTEE OPEN_SESSION_TARGET_TRUSTED_APP");
Pascal Brandc639ac82015-07-02 08:53:34 +0200256
Pascal Brandc639ac82015-07-02 08:53:34 +0200257/*29-db-48*/
258static void xtest_tee_7016(ADBG_Case_t *c)
259{
260 if (!ADBG_EXPECT_TRUE(c, xtest_tee_init(c)))
261 return;
262 TEEC_SelectApp(CLIENT_APP01, THREAD01_DEFAULT);
263 TEEC_CloseSession(NULL);
264}
Jens Wiklander14f48872018-06-29 15:30:13 +0200265ADBG_CASE_DEFINE(regression, 7016, xtest_tee_7016,
266 "CloseSession_null CLOSE_SESSION_IGNORE_SESSION_NULL");
Pascal Brandc639ac82015-07-02 08:53:34 +0200267
268/*29-a1-83*/
269static void xtest_tee_7017(ADBG_Case_t *c)
270{
271 if (!ADBG_EXPECT_TRUE(c, xtest_tee_init(c)))
272 return;
273 TEEC_SelectApp(CLIENT_APP01, THREAD01_DEFAULT);
274 XML_InitializeContext(c, INVALID_NOT_EXISTING_TEE, CONTEXT01,
275 TEEC_UNDEFINED_ERROR);
276}
Jens Wiklander14f48872018-06-29 15:30:13 +0200277ADBG_CASE_DEFINE(regression, 7017, xtest_tee_7017,
278 "InitializeContext_NotExistingTEE INITIALIZE_CONTEXT_NAMES");
Pascal Brandc639ac82015-07-02 08:53:34 +0200279
280/*29-c1-a5*/
281static void xtest_tee_7018(ADBG_Case_t *c)
282{
283 if (!ADBG_EXPECT_TRUE(c, xtest_tee_init(c)))
284 return;
285 TEEC_SelectApp(CLIENT_APP01, THREAD01_DEFAULT);
286 TEEC_FinalizeContext(NULL);
287}
Jens Wiklander14f48872018-06-29 15:30:13 +0200288ADBG_CASE_DEFINE(regression, 7018, xtest_tee_7018,
289 "FinalizeContext_null FINALIZE_CONTEXT_IGNORE_NULL");
Pascal Brandc639ac82015-07-02 08:53:34 +0200290
291/*29-91-aa*/
292static void xtest_tee_7019(ADBG_Case_t *c)
293{
294 if (!ADBG_EXPECT_TRUE(c, xtest_tee_init(c)))
295 return;
296 TEEC_createThread(CLIENT_APP01, THREAD02);
297 TEEC_SelectApp(CLIENT_APP01, THREAD01_DEFAULT);
298 XML_InitializeContext(c, _device, CONTEXT01, TEEC_SUCCESS);
299 TEEC_SelectApp(CLIENT_APP01, THREAD02);
300 thr2_ctx.c = c;
301 thr2_ctx.ctx = CONTEXT01;
302 ctx_init_finalize(thr2_ctx);
303 TEEC_SelectApp(CLIENT_APP01, THREAD01_DEFAULT);
304 TEEC_FinalizeContext(CONTEXT01);
305}
Jens Wiklander74abfe32017-01-03 14:17:47 +0100306ADBG_CASE_DEFINE(regression, 7019, xtest_tee_7019,
Jens Wiklander25a57fe2016-12-26 21:46:24 +0100307 "InitializeContext_concurrentContext INITIALIZE_CONTEXT_NAMES");