blob: c7778d547ec66998b2d68f6452de8cc945627fa6 [file] [log] [blame]
Pascal Brandc639ac82015-07-02 08:53:34 +02001/*
2 * Copyright (c) 2014, STMicroelectronics International N.V.
3 *
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License Version 2 as
6 * published by the Free Software Foundation.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 */
13
14#include "xtest_test.h"
Etienne Carriere726d8bc2017-03-21 15:45:59 +010015#include <pta_invoke_tests.h>
Pascal Brandc639ac82015-07-02 08:53:34 +020016#include <tee_client_api.h>
17#include <ta_create_fail_test.h>
18#include <ta_crypt.h>
19#include <ta_os_test.h>
20#include <ta_rpc_test.h>
21#include <ta_sims_test.h>
Ovidiu Mihalachi15cecff2019-04-02 16:36:31 +030022#include <ta_miss_test.h>
23#include <ta_sims_keepalive_test.h>
Pascal Brandc639ac82015-07-02 08:53:34 +020024#include <ta_storage.h>
Jens Wiklanderac27ec12015-07-15 15:23:14 +020025#include <ta_concurrent.h>
Jens Wiklander70672972016-04-06 00:01:45 +020026#include <ta_concurrent_large.h>
Pascal Brandc639ac82015-07-02 08:53:34 +020027#include <enc_fs_key_manager_test.h>
James Kungdf1e6cf2015-09-14 22:42:24 +080028#include <ta_storage_benchmark.h>
Jens Wiklander02389a92016-12-16 11:13:38 +010029#include <ta_socket.h>
Javier Almansa Sobrinocddc0002020-02-10 13:35:37 +000030#include <ta_tpm_log_test.h>
Pascal Brandc639ac82015-07-02 08:53:34 +020031#include <tee_api_defines.h>
Jens Wiklander02389a92016-12-16 11:13:38 +010032#include <__tee_isocket_defines.h>
33#include <__tee_tcpsocket_defines.h>
34#include <__tee_udpsocket_defines.h>
Etienne Carriere50abf9a2017-03-24 11:33:50 +010035#include <ta_sdp_basic.h>
Jerome Forissiere3688342015-09-24 10:45:17 -070036#ifdef WITH_GP_TESTS
Pascal Brand8a74e362015-09-10 12:41:52 +020037#include <tee_api_types.h>
38#include <TTA_DS_protocol.h>
39#endif
Pascal Brandc639ac82015-07-02 08:53:34 +020040
41ADBG_ENUM_TABLE_DEFINE_BEGIN(TEEC_Result)
42ADBG_ENUM_TABLE_ENTRY(TEEC_SUCCESS),
43ADBG_ENUM_TABLE_ENTRY(TEE_ERROR_CORRUPT_OBJECT),
44ADBG_ENUM_TABLE_ENTRY(TEE_ERROR_CORRUPT_OBJECT_2),
45ADBG_ENUM_TABLE_ENTRY(TEE_ERROR_STORAGE_NOT_AVAILABLE),
46ADBG_ENUM_TABLE_ENTRY(TEE_ERROR_STORAGE_NOT_AVAILABLE_2),
47ADBG_ENUM_TABLE_ENTRY(TEEC_ERROR_GENERIC),
48ADBG_ENUM_TABLE_ENTRY(TEEC_ERROR_ACCESS_DENIED),
49ADBG_ENUM_TABLE_ENTRY(TEEC_ERROR_CANCEL),
50ADBG_ENUM_TABLE_ENTRY(TEEC_ERROR_ACCESS_CONFLICT),
51ADBG_ENUM_TABLE_ENTRY(TEEC_ERROR_EXCESS_DATA),
52ADBG_ENUM_TABLE_ENTRY(TEEC_ERROR_BAD_FORMAT),
53ADBG_ENUM_TABLE_ENTRY(TEEC_ERROR_BAD_PARAMETERS),
54ADBG_ENUM_TABLE_ENTRY(TEEC_ERROR_BAD_STATE),
55ADBG_ENUM_TABLE_ENTRY(TEEC_ERROR_ITEM_NOT_FOUND),
56ADBG_ENUM_TABLE_ENTRY(TEEC_ERROR_NOT_IMPLEMENTED),
57ADBG_ENUM_TABLE_ENTRY(TEEC_ERROR_NOT_SUPPORTED),
58ADBG_ENUM_TABLE_ENTRY(TEEC_ERROR_NO_DATA),
59ADBG_ENUM_TABLE_ENTRY(TEEC_ERROR_OUT_OF_MEMORY),
60ADBG_ENUM_TABLE_ENTRY(TEEC_ERROR_BUSY),
61ADBG_ENUM_TABLE_ENTRY(TEEC_ERROR_COMMUNICATION),
62ADBG_ENUM_TABLE_ENTRY(TEEC_ERROR_SECURITY),
63ADBG_ENUM_TABLE_ENTRY(TEEC_ERROR_SHORT_BUFFER),
64ADBG_ENUM_TABLE_ENTRY(TEEC_ERROR_EXTERNAL_CANCEL),
65ADBG_ENUM_TABLE_ENTRY(TEE_ERROR_OVERFLOW),
66ADBG_ENUM_TABLE_ENTRY(TEE_ERROR_TARGET_DEAD),
67ADBG_ENUM_TABLE_ENTRY(TEE_ERROR_STORAGE_NO_SPACE),
68ADBG_ENUM_TABLE_ENTRY(TEE_ERROR_MAC_INVALID),
69ADBG_ENUM_TABLE_ENTRY(TEE_ERROR_SIGNATURE_INVALID),
70ADBG_ENUM_TABLE_ENTRY(TEE_ERROR_TIME_NOT_SET),
Jens Wiklander02389a92016-12-16 11:13:38 +010071ADBG_ENUM_TABLE_ENTRY(TEE_ERROR_TIME_NEEDS_RESET),
72ADBG_ENUM_TABLE_ENTRY(TEE_ISOCKET_ERROR_PROTOCOL),
73ADBG_ENUM_TABLE_ENTRY(TEE_ISOCKET_ERROR_REMOTE_CLOSED),
74ADBG_ENUM_TABLE_ENTRY(TEE_ISOCKET_ERROR_TIMEOUT),
75ADBG_ENUM_TABLE_ENTRY(TEE_ISOCKET_ERROR_OUT_OF_RESOURCES),
76ADBG_ENUM_TABLE_ENTRY(TEE_ISOCKET_ERROR_LARGE_BUFFER),
77ADBG_ENUM_TABLE_ENTRY(TEE_ISOCKET_WARNING_PROTOCOL),
78ADBG_ENUM_TABLE_ENTRY(TEE_ISOCKET_ERROR_HOSTNAME),
79ADBG_ENUM_TABLE_ENTRY(TEE_ISOCKET_UDP_WARNING_UNKNOWN_OUT_OF_BAND)
Pascal Brandc639ac82015-07-02 08:53:34 +020080ADBG_ENUM_TABLE_DEFINE_END(TEEC_Result);
81
82ADBG_ENUM_TABLE_DEFINE_BEGIN(TEEC_ErrorOrigin)
83ADBG_ENUM_TABLE_ENTRY(TEEC_ORIGIN_API),
84ADBG_ENUM_TABLE_ENTRY(TEEC_ORIGIN_COMMS),
85ADBG_ENUM_TABLE_ENTRY(TEEC_ORIGIN_TEE),
86ADBG_ENUM_TABLE_ENTRY(TEEC_ORIGIN_TRUSTED_APP)
87ADBG_ENUM_TABLE_DEFINE_END(TEEC_ErrorOrigin);
88
Etienne Carriere109c1d72019-01-09 11:02:02 +010089#ifdef CFG_PKCS11_TA
90ADBG_ENUM_TABLE_DEFINE_BEGIN(CK_RV)
91ADBG_ENUM_TABLE_ENTRY(CKR_OK),
92ADBG_ENUM_TABLE_ENTRY(CKR_CANCEL),
93ADBG_ENUM_TABLE_ENTRY(CKR_HOST_MEMORY),
94ADBG_ENUM_TABLE_ENTRY(CKR_SLOT_ID_INVALID),
95ADBG_ENUM_TABLE_ENTRY(CKR_GENERAL_ERROR),
96ADBG_ENUM_TABLE_ENTRY(CKR_FUNCTION_FAILED),
97ADBG_ENUM_TABLE_ENTRY(CKR_ARGUMENTS_BAD),
98ADBG_ENUM_TABLE_ENTRY(CKR_NO_EVENT),
99ADBG_ENUM_TABLE_ENTRY(CKR_NEED_TO_CREATE_THREADS),
100ADBG_ENUM_TABLE_ENTRY(CKR_CANT_LOCK),
101ADBG_ENUM_TABLE_ENTRY(CKR_ATTRIBUTE_READ_ONLY),
102ADBG_ENUM_TABLE_ENTRY(CKR_ATTRIBUTE_SENSITIVE),
103ADBG_ENUM_TABLE_ENTRY(CKR_ATTRIBUTE_TYPE_INVALID),
104ADBG_ENUM_TABLE_ENTRY(CKR_ATTRIBUTE_VALUE_INVALID),
105ADBG_ENUM_TABLE_ENTRY(CKR_ACTION_PROHIBITED),
106ADBG_ENUM_TABLE_ENTRY(CKR_DATA_INVALID),
107ADBG_ENUM_TABLE_ENTRY(CKR_DATA_LEN_RANGE),
108ADBG_ENUM_TABLE_ENTRY(CKR_DEVICE_ERROR),
109ADBG_ENUM_TABLE_ENTRY(CKR_DEVICE_MEMORY),
110ADBG_ENUM_TABLE_ENTRY(CKR_DEVICE_REMOVED),
111ADBG_ENUM_TABLE_ENTRY(CKR_ENCRYPTED_DATA_INVALID),
112ADBG_ENUM_TABLE_ENTRY(CKR_ENCRYPTED_DATA_LEN_RANGE),
113ADBG_ENUM_TABLE_ENTRY(CKR_FUNCTION_CANCELED),
114ADBG_ENUM_TABLE_ENTRY(CKR_FUNCTION_NOT_PARALLEL),
115ADBG_ENUM_TABLE_ENTRY(CKR_FUNCTION_NOT_SUPPORTED),
116ADBG_ENUM_TABLE_ENTRY(CKR_KEY_HANDLE_INVALID),
117ADBG_ENUM_TABLE_ENTRY(CKR_KEY_SIZE_RANGE),
118ADBG_ENUM_TABLE_ENTRY(CKR_KEY_TYPE_INCONSISTENT),
119ADBG_ENUM_TABLE_ENTRY(CKR_KEY_NOT_NEEDED),
120ADBG_ENUM_TABLE_ENTRY(CKR_KEY_CHANGED),
121ADBG_ENUM_TABLE_ENTRY(CKR_KEY_NEEDED),
122ADBG_ENUM_TABLE_ENTRY(CKR_KEY_INDIGESTIBLE),
123ADBG_ENUM_TABLE_ENTRY(CKR_KEY_FUNCTION_NOT_PERMITTED),
124ADBG_ENUM_TABLE_ENTRY(CKR_KEY_NOT_WRAPPABLE),
125ADBG_ENUM_TABLE_ENTRY(CKR_KEY_UNEXTRACTABLE),
126ADBG_ENUM_TABLE_ENTRY(CKR_MECHANISM_INVALID),
127ADBG_ENUM_TABLE_ENTRY(CKR_MECHANISM_PARAM_INVALID),
128ADBG_ENUM_TABLE_ENTRY(CKR_OBJECT_HANDLE_INVALID),
129ADBG_ENUM_TABLE_ENTRY(CKR_OPERATION_ACTIVE),
130ADBG_ENUM_TABLE_ENTRY(CKR_OPERATION_NOT_INITIALIZED),
131ADBG_ENUM_TABLE_ENTRY(CKR_PIN_INCORRECT),
132ADBG_ENUM_TABLE_ENTRY(CKR_PIN_INVALID),
133ADBG_ENUM_TABLE_ENTRY(CKR_PIN_LEN_RANGE),
134ADBG_ENUM_TABLE_ENTRY(CKR_PIN_EXPIRED),
135ADBG_ENUM_TABLE_ENTRY(CKR_PIN_LOCKED),
136ADBG_ENUM_TABLE_ENTRY(CKR_SESSION_CLOSED),
137ADBG_ENUM_TABLE_ENTRY(CKR_SESSION_COUNT),
138ADBG_ENUM_TABLE_ENTRY(CKR_SESSION_HANDLE_INVALID),
139ADBG_ENUM_TABLE_ENTRY(CKR_SESSION_PARALLEL_NOT_SUPPORTED),
140ADBG_ENUM_TABLE_ENTRY(CKR_SESSION_READ_ONLY),
141ADBG_ENUM_TABLE_ENTRY(CKR_SESSION_EXISTS),
142ADBG_ENUM_TABLE_ENTRY(CKR_SESSION_READ_ONLY_EXISTS),
143ADBG_ENUM_TABLE_ENTRY(CKR_SESSION_READ_WRITE_SO_EXISTS),
144ADBG_ENUM_TABLE_ENTRY(CKR_SIGNATURE_INVALID),
145ADBG_ENUM_TABLE_ENTRY(CKR_SIGNATURE_LEN_RANGE),
146ADBG_ENUM_TABLE_ENTRY(CKR_TEMPLATE_INCOMPLETE),
147ADBG_ENUM_TABLE_ENTRY(CKR_TEMPLATE_INCONSISTENT),
148ADBG_ENUM_TABLE_ENTRY(CKR_TOKEN_NOT_PRESENT),
149ADBG_ENUM_TABLE_ENTRY(CKR_TOKEN_NOT_RECOGNIZED),
150ADBG_ENUM_TABLE_ENTRY(CKR_TOKEN_WRITE_PROTECTED),
151ADBG_ENUM_TABLE_ENTRY(CKR_UNWRAPPING_KEY_HANDLE_INVALID),
152ADBG_ENUM_TABLE_ENTRY(CKR_UNWRAPPING_KEY_SIZE_RANGE),
153ADBG_ENUM_TABLE_ENTRY(CKR_UNWRAPPING_KEY_TYPE_INCONSISTENT),
154ADBG_ENUM_TABLE_ENTRY(CKR_USER_ALREADY_LOGGED_IN),
155ADBG_ENUM_TABLE_ENTRY(CKR_USER_NOT_LOGGED_IN),
156ADBG_ENUM_TABLE_ENTRY(CKR_USER_PIN_NOT_INITIALIZED),
157ADBG_ENUM_TABLE_ENTRY(CKR_USER_TYPE_INVALID),
158ADBG_ENUM_TABLE_ENTRY(CKR_USER_ANOTHER_ALREADY_LOGGED_IN),
159ADBG_ENUM_TABLE_ENTRY(CKR_USER_TOO_MANY_TYPES),
160ADBG_ENUM_TABLE_ENTRY(CKR_WRAPPED_KEY_INVALID),
161ADBG_ENUM_TABLE_ENTRY(CKR_WRAPPED_KEY_LEN_RANGE),
162ADBG_ENUM_TABLE_ENTRY(CKR_WRAPPING_KEY_HANDLE_INVALID),
163ADBG_ENUM_TABLE_ENTRY(CKR_WRAPPING_KEY_SIZE_RANGE),
164ADBG_ENUM_TABLE_ENTRY(CKR_WRAPPING_KEY_TYPE_INCONSISTENT),
165ADBG_ENUM_TABLE_ENTRY(CKR_RANDOM_SEED_NOT_SUPPORTED),
166ADBG_ENUM_TABLE_ENTRY(CKR_RANDOM_NO_RNG),
167ADBG_ENUM_TABLE_ENTRY(CKR_DOMAIN_PARAMS_INVALID),
168ADBG_ENUM_TABLE_ENTRY(CKR_CURVE_NOT_SUPPORTED),
169ADBG_ENUM_TABLE_ENTRY(CKR_BUFFER_TOO_SMALL),
170ADBG_ENUM_TABLE_ENTRY(CKR_SAVED_STATE_INVALID),
171ADBG_ENUM_TABLE_ENTRY(CKR_INFORMATION_SENSITIVE),
172ADBG_ENUM_TABLE_ENTRY(CKR_STATE_UNSAVEABLE),
173ADBG_ENUM_TABLE_ENTRY(CKR_CRYPTOKI_NOT_INITIALIZED),
174ADBG_ENUM_TABLE_ENTRY(CKR_CRYPTOKI_ALREADY_INITIALIZED),
175ADBG_ENUM_TABLE_ENTRY(CKR_MUTEX_BAD),
176ADBG_ENUM_TABLE_ENTRY(CKR_MUTEX_NOT_LOCKED),
177ADBG_ENUM_TABLE_ENTRY(CKR_NEW_PIN_MODE),
178ADBG_ENUM_TABLE_ENTRY(CKR_NEXT_OTP),
179ADBG_ENUM_TABLE_ENTRY(CKR_EXCEEDED_MAX_ITERATIONS),
180ADBG_ENUM_TABLE_ENTRY(CKR_FIPS_SELF_TEST_FAILED),
181ADBG_ENUM_TABLE_ENTRY(CKR_LIBRARY_LOAD_FAILED),
182ADBG_ENUM_TABLE_ENTRY(CKR_PIN_TOO_WEAK),
183ADBG_ENUM_TABLE_ENTRY(CKR_PUBLIC_KEY_INVALID),
184ADBG_ENUM_TABLE_ENTRY(CKR_FUNCTION_REJECTED),
185ADBG_ENUM_TABLE_ENTRY(CKR_VENDOR_DEFINED)
186ADBG_ENUM_TABLE_DEFINE_END(CK_RV);
187#endif /*CFG_PKCS11_TA*/
188
Pascal Brandc639ac82015-07-02 08:53:34 +0200189#define ECC_SELF_TEST_UUID \
190 { 0xf34f4f3c, 0xab30, 0x4573, \
191 { 0x91, 0xBF, 0x3C, 0x57, 0x02, 0x4D, 0x51, 0x99 } }
192
193const TEEC_UUID crypt_user_ta_uuid = TA_CRYPT_UUID;
194const TEEC_UUID os_test_ta_uuid = TA_OS_TEST_UUID;
195const TEEC_UUID create_fail_test_ta_uuid = TA_CREATE_FAIL_TEST_UUID;
196const TEEC_UUID ecc_test_ta_uuid = ECC_SELF_TEST_UUID;
Etienne Carriere726d8bc2017-03-21 15:45:59 +0100197const TEEC_UUID pta_invoke_tests_ta_uuid = PTA_INVOKE_TESTS_UUID;
Pascal Brandc639ac82015-07-02 08:53:34 +0200198const TEEC_UUID rpc_test_ta_uuid = TA_RPC_TEST_UUID;
199const TEEC_UUID sims_test_ta_uuid = TA_SIMS_TEST_UUID;
Ovidiu Mihalachi15cecff2019-04-02 16:36:31 +0300200const TEEC_UUID miss_test_ta_uuid = TA_MISS_TEST_UUID;
201const TEEC_UUID sims_keepalive_test_ta_uuid = TA_SIMS_KEEP_ALIVE_TEST_UUID;
Pascal Brandc639ac82015-07-02 08:53:34 +0200202const TEEC_UUID storage_ta_uuid = TA_STORAGE_UUID;
Jerome Forissiere3854162016-08-12 12:40:12 +0200203const TEEC_UUID storage2_ta_uuid = TA_STORAGE2_UUID;
Pascal Brandc639ac82015-07-02 08:53:34 +0200204const TEEC_UUID enc_fs_key_manager_test_ta_uuid = ENC_FS_KEY_MANAGER_TEST_UUID;
Jens Wiklanderac27ec12015-07-15 15:23:14 +0200205const TEEC_UUID concurrent_ta_uuid = TA_CONCURRENT_UUID;
Jens Wiklander70672972016-04-06 00:01:45 +0200206const TEEC_UUID concurrent_large_ta_uuid = TA_CONCURRENT_LARGE_UUID;
James Kungdf1e6cf2015-09-14 22:42:24 +0800207const TEEC_UUID storage_benchmark_ta_uuid = TA_STORAGE_BENCHMARK_UUID;
Jens Wiklander02389a92016-12-16 11:13:38 +0100208const TEEC_UUID socket_ta_uuid = TA_SOCKET_UUID;
Etienne Carriere50abf9a2017-03-24 11:33:50 +0100209const TEEC_UUID sdp_basic_ta_uuid = TA_SDP_BASIC_UUID;
Javier Almansa Sobrinocddc0002020-02-10 13:35:37 +0000210const TEEC_UUID tpm_log_test_ta_uuid = TA_TPM_LOG_TEST_UUID;
Jerome Forissiere3688342015-09-24 10:45:17 -0700211#ifdef WITH_GP_TESTS
Pascal Brand8a74e362015-09-10 12:41:52 +0200212const TEEC_UUID gp_tta_ds_uuid = TA_TTA_DS_UUID;
213#endif