1 /*
2 * Copyright (C) 2022 Huawei Technologies Co., Ltd.
3 * Licensed under the Mulan PSL v2.
4 * You can use this software according to the terms and conditions of the Mulan PSL v2.
5 * You may obtain a copy of Mulan PSL v2 at:
6 * http://license.coscl.org.cn/MulanPSL2
7 * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR
8 * IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY OR FIT FOR A PARTICULAR
9 * PURPOSE.
10 * See the Mulan PSL v2 for more details.
11 */
12
13 #include <common_test.h>
14 #include <securec.h>
15
SetUp()16 void CryptoTest::SetUp()
17 {
18 TEEC_Result ret;
19 TEEC_UUID testId = CRYPTO_API_UUID;
20 ret = session.Start(&testId);
21 ASSERT_EQ(ret, TEEC_SUCCESS);
22 operation.started = 1;
23 operation.paramTypes = TEEC_PARAM_TYPES(TEEC_MEMREF_WHOLE, TEEC_NONE, TEEC_NONE, TEEC_NONE);
24 testMem.sharedMem.size = FUN_NAME_LEN;
25 testMem.sharedMem.flags = TEEC_MEM_OUTPUT | TEEC_MEM_INPUT;
26 ret = TEEC_AllocateSharedMemory(&session.context, &testMem.sharedMem);
27 (void)memset_s(reinterpret_cast<char*>(testMem.sharedMem.buffer), FUN_NAME_LEN, 0, FUN_NAME_LEN);
28 ASSERT_EQ(ret, TEEC_SUCCESS);
29 }
30
TearDown()31 void CryptoTest::TearDown()
32 {
33 TEEC_ReleaseSharedMemory(&testMem.sharedMem);
34 session.Destroy();
35 }
36
InvokeTest(const char * casename)37 TEEC_Result CryptoTest::InvokeTest(const char *casename)
38 {
39 int rc;
40 rc = strcpy_s(reinterpret_cast<char*>(testMem.sharedMem.buffer), FUN_NAME_LEN, casename);
41 if (rc != 0) {
42 return TEEC_FAIL;
43 }
44 operation.params[0].memref.parent = &testMem.sharedMem;
45 operation.params[0].memref.offset = 0;
46 operation.params[0].memref.size = testMem.sharedMem.size;
47 return TEEC_InvokeCommand(&session.session, CMD_RUN_BY_FUN_SEQ, &operation, &origin);
48 }
49