Etienne Carriere | 9b7b70d | 2020-05-16 10:27:23 +0200 | [diff] [blame] | 1 | // SPDX-License-Identifier: GPL-2.0 |
Pascal Brand | c639ac8 | 2015-07-02 08:53:34 +0200 | [diff] [blame] | 2 | /* |
| 3 | * Copyright (c) 2014, STMicroelectronics International N.V. |
Pascal Brand | c639ac8 | 2015-07-02 08:53:34 +0200 | [diff] [blame] | 4 | */ |
| 5 | |
| 6 | #include "xtest_test.h" |
Jens Wiklander | 94fb158 | 2021-05-19 10:14:57 +0200 | [diff] [blame] | 7 | #include <enc_fs_key_manager_test.h> |
Etienne Carriere | 726d8bc | 2017-03-21 15:45:59 +0100 | [diff] [blame] | 8 | #include <pta_invoke_tests.h> |
Jens Wiklander | ac27ec1 | 2015-07-15 15:23:14 +0200 | [diff] [blame] | 9 | #include <ta_concurrent.h> |
Jens Wiklander | 7067297 | 2016-04-06 00:01:45 +0200 | [diff] [blame] | 10 | #include <ta_concurrent_large.h> |
Jens Wiklander | 94fb158 | 2021-05-19 10:14:57 +0200 | [diff] [blame] | 11 | #include <ta_create_fail_test.h> |
| 12 | #include <ta_crypt.h> |
| 13 | #include <ta_large.h> |
| 14 | #include <ta_miss_test.h> |
| 15 | #include <ta_os_test.h> |
| 16 | #include <ta_rpc_test.h> |
| 17 | #include <ta_sdp_basic.h> |
| 18 | #include <ta_sims_keepalive_test.h> |
| 19 | #include <ta_sims_test.h> |
Jens Wiklander | 02389a9 | 2016-12-16 11:13:38 +0100 | [diff] [blame] | 20 | #include <ta_socket.h> |
Jens Wiklander | 94fb158 | 2021-05-19 10:14:57 +0200 | [diff] [blame] | 21 | #include <ta_storage_benchmark.h> |
| 22 | #include <ta_storage.h> |
Aleksandr Anisimov | 01f6f06 | 2021-01-19 11:02:25 +0300 | [diff] [blame] | 23 | #include <ta_supp_plugin.h> |
Jens Wiklander | 94fb158 | 2021-05-19 10:14:57 +0200 | [diff] [blame] | 24 | #include <ta_tpm_log_test.h> |
Ruchika Gupta | 7a7bc8d | 2021-12-01 10:44:14 +0530 | [diff] [blame] | 25 | #include <ta_bti.h> |
Pascal Brand | c639ac8 | 2015-07-02 08:53:34 +0200 | [diff] [blame] | 26 | #include <tee_api_defines.h> |
Jens Wiklander | 94fb158 | 2021-05-19 10:14:57 +0200 | [diff] [blame] | 27 | #include <tee_client_api.h> |
Jens Wiklander | 02389a9 | 2016-12-16 11:13:38 +0100 | [diff] [blame] | 28 | #include <__tee_isocket_defines.h> |
| 29 | #include <__tee_tcpsocket_defines.h> |
| 30 | #include <__tee_udpsocket_defines.h> |
Pascal Brand | c639ac8 | 2015-07-02 08:53:34 +0200 | [diff] [blame] | 31 | |
| 32 | ADBG_ENUM_TABLE_DEFINE_BEGIN(TEEC_Result) |
| 33 | ADBG_ENUM_TABLE_ENTRY(TEEC_SUCCESS), |
| 34 | ADBG_ENUM_TABLE_ENTRY(TEE_ERROR_CORRUPT_OBJECT), |
| 35 | ADBG_ENUM_TABLE_ENTRY(TEE_ERROR_CORRUPT_OBJECT_2), |
| 36 | ADBG_ENUM_TABLE_ENTRY(TEE_ERROR_STORAGE_NOT_AVAILABLE), |
| 37 | ADBG_ENUM_TABLE_ENTRY(TEE_ERROR_STORAGE_NOT_AVAILABLE_2), |
| 38 | ADBG_ENUM_TABLE_ENTRY(TEEC_ERROR_GENERIC), |
| 39 | ADBG_ENUM_TABLE_ENTRY(TEEC_ERROR_ACCESS_DENIED), |
| 40 | ADBG_ENUM_TABLE_ENTRY(TEEC_ERROR_CANCEL), |
| 41 | ADBG_ENUM_TABLE_ENTRY(TEEC_ERROR_ACCESS_CONFLICT), |
| 42 | ADBG_ENUM_TABLE_ENTRY(TEEC_ERROR_EXCESS_DATA), |
| 43 | ADBG_ENUM_TABLE_ENTRY(TEEC_ERROR_BAD_FORMAT), |
| 44 | ADBG_ENUM_TABLE_ENTRY(TEEC_ERROR_BAD_PARAMETERS), |
| 45 | ADBG_ENUM_TABLE_ENTRY(TEEC_ERROR_BAD_STATE), |
| 46 | ADBG_ENUM_TABLE_ENTRY(TEEC_ERROR_ITEM_NOT_FOUND), |
| 47 | ADBG_ENUM_TABLE_ENTRY(TEEC_ERROR_NOT_IMPLEMENTED), |
| 48 | ADBG_ENUM_TABLE_ENTRY(TEEC_ERROR_NOT_SUPPORTED), |
| 49 | ADBG_ENUM_TABLE_ENTRY(TEEC_ERROR_NO_DATA), |
| 50 | ADBG_ENUM_TABLE_ENTRY(TEEC_ERROR_OUT_OF_MEMORY), |
| 51 | ADBG_ENUM_TABLE_ENTRY(TEEC_ERROR_BUSY), |
| 52 | ADBG_ENUM_TABLE_ENTRY(TEEC_ERROR_COMMUNICATION), |
| 53 | ADBG_ENUM_TABLE_ENTRY(TEEC_ERROR_SECURITY), |
| 54 | ADBG_ENUM_TABLE_ENTRY(TEEC_ERROR_SHORT_BUFFER), |
| 55 | ADBG_ENUM_TABLE_ENTRY(TEEC_ERROR_EXTERNAL_CANCEL), |
| 56 | ADBG_ENUM_TABLE_ENTRY(TEE_ERROR_OVERFLOW), |
| 57 | ADBG_ENUM_TABLE_ENTRY(TEE_ERROR_TARGET_DEAD), |
| 58 | ADBG_ENUM_TABLE_ENTRY(TEE_ERROR_STORAGE_NO_SPACE), |
| 59 | ADBG_ENUM_TABLE_ENTRY(TEE_ERROR_MAC_INVALID), |
| 60 | ADBG_ENUM_TABLE_ENTRY(TEE_ERROR_SIGNATURE_INVALID), |
| 61 | ADBG_ENUM_TABLE_ENTRY(TEE_ERROR_TIME_NOT_SET), |
Jens Wiklander | 02389a9 | 2016-12-16 11:13:38 +0100 | [diff] [blame] | 62 | ADBG_ENUM_TABLE_ENTRY(TEE_ERROR_TIME_NEEDS_RESET), |
| 63 | ADBG_ENUM_TABLE_ENTRY(TEE_ISOCKET_ERROR_PROTOCOL), |
| 64 | ADBG_ENUM_TABLE_ENTRY(TEE_ISOCKET_ERROR_REMOTE_CLOSED), |
| 65 | ADBG_ENUM_TABLE_ENTRY(TEE_ISOCKET_ERROR_TIMEOUT), |
| 66 | ADBG_ENUM_TABLE_ENTRY(TEE_ISOCKET_ERROR_OUT_OF_RESOURCES), |
| 67 | ADBG_ENUM_TABLE_ENTRY(TEE_ISOCKET_ERROR_LARGE_BUFFER), |
| 68 | ADBG_ENUM_TABLE_ENTRY(TEE_ISOCKET_WARNING_PROTOCOL), |
| 69 | ADBG_ENUM_TABLE_ENTRY(TEE_ISOCKET_ERROR_HOSTNAME), |
| 70 | ADBG_ENUM_TABLE_ENTRY(TEE_ISOCKET_UDP_WARNING_UNKNOWN_OUT_OF_BAND) |
Pascal Brand | c639ac8 | 2015-07-02 08:53:34 +0200 | [diff] [blame] | 71 | ADBG_ENUM_TABLE_DEFINE_END(TEEC_Result); |
| 72 | |
| 73 | ADBG_ENUM_TABLE_DEFINE_BEGIN(TEEC_ErrorOrigin) |
| 74 | ADBG_ENUM_TABLE_ENTRY(TEEC_ORIGIN_API), |
| 75 | ADBG_ENUM_TABLE_ENTRY(TEEC_ORIGIN_COMMS), |
| 76 | ADBG_ENUM_TABLE_ENTRY(TEEC_ORIGIN_TEE), |
| 77 | ADBG_ENUM_TABLE_ENTRY(TEEC_ORIGIN_TRUSTED_APP) |
| 78 | ADBG_ENUM_TABLE_DEFINE_END(TEEC_ErrorOrigin); |
| 79 | |
Etienne Carriere | 109c1d7 | 2019-01-09 11:02:02 +0100 | [diff] [blame] | 80 | #ifdef CFG_PKCS11_TA |
| 81 | ADBG_ENUM_TABLE_DEFINE_BEGIN(CK_RV) |
| 82 | ADBG_ENUM_TABLE_ENTRY(CKR_OK), |
| 83 | ADBG_ENUM_TABLE_ENTRY(CKR_CANCEL), |
| 84 | ADBG_ENUM_TABLE_ENTRY(CKR_HOST_MEMORY), |
| 85 | ADBG_ENUM_TABLE_ENTRY(CKR_SLOT_ID_INVALID), |
| 86 | ADBG_ENUM_TABLE_ENTRY(CKR_GENERAL_ERROR), |
| 87 | ADBG_ENUM_TABLE_ENTRY(CKR_FUNCTION_FAILED), |
| 88 | ADBG_ENUM_TABLE_ENTRY(CKR_ARGUMENTS_BAD), |
| 89 | ADBG_ENUM_TABLE_ENTRY(CKR_NO_EVENT), |
| 90 | ADBG_ENUM_TABLE_ENTRY(CKR_NEED_TO_CREATE_THREADS), |
| 91 | ADBG_ENUM_TABLE_ENTRY(CKR_CANT_LOCK), |
| 92 | ADBG_ENUM_TABLE_ENTRY(CKR_ATTRIBUTE_READ_ONLY), |
| 93 | ADBG_ENUM_TABLE_ENTRY(CKR_ATTRIBUTE_SENSITIVE), |
| 94 | ADBG_ENUM_TABLE_ENTRY(CKR_ATTRIBUTE_TYPE_INVALID), |
| 95 | ADBG_ENUM_TABLE_ENTRY(CKR_ATTRIBUTE_VALUE_INVALID), |
| 96 | ADBG_ENUM_TABLE_ENTRY(CKR_ACTION_PROHIBITED), |
| 97 | ADBG_ENUM_TABLE_ENTRY(CKR_DATA_INVALID), |
| 98 | ADBG_ENUM_TABLE_ENTRY(CKR_DATA_LEN_RANGE), |
| 99 | ADBG_ENUM_TABLE_ENTRY(CKR_DEVICE_ERROR), |
| 100 | ADBG_ENUM_TABLE_ENTRY(CKR_DEVICE_MEMORY), |
| 101 | ADBG_ENUM_TABLE_ENTRY(CKR_DEVICE_REMOVED), |
| 102 | ADBG_ENUM_TABLE_ENTRY(CKR_ENCRYPTED_DATA_INVALID), |
| 103 | ADBG_ENUM_TABLE_ENTRY(CKR_ENCRYPTED_DATA_LEN_RANGE), |
| 104 | ADBG_ENUM_TABLE_ENTRY(CKR_FUNCTION_CANCELED), |
| 105 | ADBG_ENUM_TABLE_ENTRY(CKR_FUNCTION_NOT_PARALLEL), |
| 106 | ADBG_ENUM_TABLE_ENTRY(CKR_FUNCTION_NOT_SUPPORTED), |
| 107 | ADBG_ENUM_TABLE_ENTRY(CKR_KEY_HANDLE_INVALID), |
| 108 | ADBG_ENUM_TABLE_ENTRY(CKR_KEY_SIZE_RANGE), |
| 109 | ADBG_ENUM_TABLE_ENTRY(CKR_KEY_TYPE_INCONSISTENT), |
| 110 | ADBG_ENUM_TABLE_ENTRY(CKR_KEY_NOT_NEEDED), |
| 111 | ADBG_ENUM_TABLE_ENTRY(CKR_KEY_CHANGED), |
| 112 | ADBG_ENUM_TABLE_ENTRY(CKR_KEY_NEEDED), |
| 113 | ADBG_ENUM_TABLE_ENTRY(CKR_KEY_INDIGESTIBLE), |
| 114 | ADBG_ENUM_TABLE_ENTRY(CKR_KEY_FUNCTION_NOT_PERMITTED), |
| 115 | ADBG_ENUM_TABLE_ENTRY(CKR_KEY_NOT_WRAPPABLE), |
| 116 | ADBG_ENUM_TABLE_ENTRY(CKR_KEY_UNEXTRACTABLE), |
| 117 | ADBG_ENUM_TABLE_ENTRY(CKR_MECHANISM_INVALID), |
| 118 | ADBG_ENUM_TABLE_ENTRY(CKR_MECHANISM_PARAM_INVALID), |
| 119 | ADBG_ENUM_TABLE_ENTRY(CKR_OBJECT_HANDLE_INVALID), |
| 120 | ADBG_ENUM_TABLE_ENTRY(CKR_OPERATION_ACTIVE), |
| 121 | ADBG_ENUM_TABLE_ENTRY(CKR_OPERATION_NOT_INITIALIZED), |
| 122 | ADBG_ENUM_TABLE_ENTRY(CKR_PIN_INCORRECT), |
| 123 | ADBG_ENUM_TABLE_ENTRY(CKR_PIN_INVALID), |
| 124 | ADBG_ENUM_TABLE_ENTRY(CKR_PIN_LEN_RANGE), |
| 125 | ADBG_ENUM_TABLE_ENTRY(CKR_PIN_EXPIRED), |
| 126 | ADBG_ENUM_TABLE_ENTRY(CKR_PIN_LOCKED), |
| 127 | ADBG_ENUM_TABLE_ENTRY(CKR_SESSION_CLOSED), |
| 128 | ADBG_ENUM_TABLE_ENTRY(CKR_SESSION_COUNT), |
| 129 | ADBG_ENUM_TABLE_ENTRY(CKR_SESSION_HANDLE_INVALID), |
| 130 | ADBG_ENUM_TABLE_ENTRY(CKR_SESSION_PARALLEL_NOT_SUPPORTED), |
| 131 | ADBG_ENUM_TABLE_ENTRY(CKR_SESSION_READ_ONLY), |
| 132 | ADBG_ENUM_TABLE_ENTRY(CKR_SESSION_EXISTS), |
| 133 | ADBG_ENUM_TABLE_ENTRY(CKR_SESSION_READ_ONLY_EXISTS), |
| 134 | ADBG_ENUM_TABLE_ENTRY(CKR_SESSION_READ_WRITE_SO_EXISTS), |
| 135 | ADBG_ENUM_TABLE_ENTRY(CKR_SIGNATURE_INVALID), |
| 136 | ADBG_ENUM_TABLE_ENTRY(CKR_SIGNATURE_LEN_RANGE), |
| 137 | ADBG_ENUM_TABLE_ENTRY(CKR_TEMPLATE_INCOMPLETE), |
| 138 | ADBG_ENUM_TABLE_ENTRY(CKR_TEMPLATE_INCONSISTENT), |
| 139 | ADBG_ENUM_TABLE_ENTRY(CKR_TOKEN_NOT_PRESENT), |
| 140 | ADBG_ENUM_TABLE_ENTRY(CKR_TOKEN_NOT_RECOGNIZED), |
| 141 | ADBG_ENUM_TABLE_ENTRY(CKR_TOKEN_WRITE_PROTECTED), |
| 142 | ADBG_ENUM_TABLE_ENTRY(CKR_UNWRAPPING_KEY_HANDLE_INVALID), |
| 143 | ADBG_ENUM_TABLE_ENTRY(CKR_UNWRAPPING_KEY_SIZE_RANGE), |
| 144 | ADBG_ENUM_TABLE_ENTRY(CKR_UNWRAPPING_KEY_TYPE_INCONSISTENT), |
| 145 | ADBG_ENUM_TABLE_ENTRY(CKR_USER_ALREADY_LOGGED_IN), |
| 146 | ADBG_ENUM_TABLE_ENTRY(CKR_USER_NOT_LOGGED_IN), |
| 147 | ADBG_ENUM_TABLE_ENTRY(CKR_USER_PIN_NOT_INITIALIZED), |
| 148 | ADBG_ENUM_TABLE_ENTRY(CKR_USER_TYPE_INVALID), |
| 149 | ADBG_ENUM_TABLE_ENTRY(CKR_USER_ANOTHER_ALREADY_LOGGED_IN), |
| 150 | ADBG_ENUM_TABLE_ENTRY(CKR_USER_TOO_MANY_TYPES), |
| 151 | ADBG_ENUM_TABLE_ENTRY(CKR_WRAPPED_KEY_INVALID), |
| 152 | ADBG_ENUM_TABLE_ENTRY(CKR_WRAPPED_KEY_LEN_RANGE), |
| 153 | ADBG_ENUM_TABLE_ENTRY(CKR_WRAPPING_KEY_HANDLE_INVALID), |
| 154 | ADBG_ENUM_TABLE_ENTRY(CKR_WRAPPING_KEY_SIZE_RANGE), |
| 155 | ADBG_ENUM_TABLE_ENTRY(CKR_WRAPPING_KEY_TYPE_INCONSISTENT), |
| 156 | ADBG_ENUM_TABLE_ENTRY(CKR_RANDOM_SEED_NOT_SUPPORTED), |
| 157 | ADBG_ENUM_TABLE_ENTRY(CKR_RANDOM_NO_RNG), |
| 158 | ADBG_ENUM_TABLE_ENTRY(CKR_DOMAIN_PARAMS_INVALID), |
| 159 | ADBG_ENUM_TABLE_ENTRY(CKR_CURVE_NOT_SUPPORTED), |
| 160 | ADBG_ENUM_TABLE_ENTRY(CKR_BUFFER_TOO_SMALL), |
| 161 | ADBG_ENUM_TABLE_ENTRY(CKR_SAVED_STATE_INVALID), |
| 162 | ADBG_ENUM_TABLE_ENTRY(CKR_INFORMATION_SENSITIVE), |
| 163 | ADBG_ENUM_TABLE_ENTRY(CKR_STATE_UNSAVEABLE), |
| 164 | ADBG_ENUM_TABLE_ENTRY(CKR_CRYPTOKI_NOT_INITIALIZED), |
| 165 | ADBG_ENUM_TABLE_ENTRY(CKR_CRYPTOKI_ALREADY_INITIALIZED), |
| 166 | ADBG_ENUM_TABLE_ENTRY(CKR_MUTEX_BAD), |
| 167 | ADBG_ENUM_TABLE_ENTRY(CKR_MUTEX_NOT_LOCKED), |
| 168 | ADBG_ENUM_TABLE_ENTRY(CKR_NEW_PIN_MODE), |
| 169 | ADBG_ENUM_TABLE_ENTRY(CKR_NEXT_OTP), |
| 170 | ADBG_ENUM_TABLE_ENTRY(CKR_EXCEEDED_MAX_ITERATIONS), |
| 171 | ADBG_ENUM_TABLE_ENTRY(CKR_FIPS_SELF_TEST_FAILED), |
| 172 | ADBG_ENUM_TABLE_ENTRY(CKR_LIBRARY_LOAD_FAILED), |
| 173 | ADBG_ENUM_TABLE_ENTRY(CKR_PIN_TOO_WEAK), |
| 174 | ADBG_ENUM_TABLE_ENTRY(CKR_PUBLIC_KEY_INVALID), |
| 175 | ADBG_ENUM_TABLE_ENTRY(CKR_FUNCTION_REJECTED), |
| 176 | ADBG_ENUM_TABLE_ENTRY(CKR_VENDOR_DEFINED) |
| 177 | ADBG_ENUM_TABLE_DEFINE_END(CK_RV); |
| 178 | #endif /*CFG_PKCS11_TA*/ |
| 179 | |
Pascal Brand | c639ac8 | 2015-07-02 08:53:34 +0200 | [diff] [blame] | 180 | #define ECC_SELF_TEST_UUID \ |
| 181 | { 0xf34f4f3c, 0xab30, 0x4573, \ |
| 182 | { 0x91, 0xBF, 0x3C, 0x57, 0x02, 0x4D, 0x51, 0x99 } } |
| 183 | |
| 184 | const TEEC_UUID crypt_user_ta_uuid = TA_CRYPT_UUID; |
| 185 | const TEEC_UUID os_test_ta_uuid = TA_OS_TEST_UUID; |
| 186 | const TEEC_UUID create_fail_test_ta_uuid = TA_CREATE_FAIL_TEST_UUID; |
| 187 | const TEEC_UUID ecc_test_ta_uuid = ECC_SELF_TEST_UUID; |
Etienne Carriere | 726d8bc | 2017-03-21 15:45:59 +0100 | [diff] [blame] | 188 | const TEEC_UUID pta_invoke_tests_ta_uuid = PTA_INVOKE_TESTS_UUID; |
Pascal Brand | c639ac8 | 2015-07-02 08:53:34 +0200 | [diff] [blame] | 189 | const TEEC_UUID rpc_test_ta_uuid = TA_RPC_TEST_UUID; |
| 190 | const TEEC_UUID sims_test_ta_uuid = TA_SIMS_TEST_UUID; |
Ovidiu Mihalachi | 15cecff | 2019-04-02 16:36:31 +0300 | [diff] [blame] | 191 | const TEEC_UUID miss_test_ta_uuid = TA_MISS_TEST_UUID; |
| 192 | const TEEC_UUID sims_keepalive_test_ta_uuid = TA_SIMS_KEEP_ALIVE_TEST_UUID; |
Pascal Brand | c639ac8 | 2015-07-02 08:53:34 +0200 | [diff] [blame] | 193 | const TEEC_UUID storage_ta_uuid = TA_STORAGE_UUID; |
Jerome Forissier | e385416 | 2016-08-12 12:40:12 +0200 | [diff] [blame] | 194 | const TEEC_UUID storage2_ta_uuid = TA_STORAGE2_UUID; |
Pascal Brand | c639ac8 | 2015-07-02 08:53:34 +0200 | [diff] [blame] | 195 | const TEEC_UUID enc_fs_key_manager_test_ta_uuid = ENC_FS_KEY_MANAGER_TEST_UUID; |
Jens Wiklander | ac27ec1 | 2015-07-15 15:23:14 +0200 | [diff] [blame] | 196 | const TEEC_UUID concurrent_ta_uuid = TA_CONCURRENT_UUID; |
Jens Wiklander | 7067297 | 2016-04-06 00:01:45 +0200 | [diff] [blame] | 197 | const TEEC_UUID concurrent_large_ta_uuid = TA_CONCURRENT_LARGE_UUID; |
James Kung | df1e6cf | 2015-09-14 22:42:24 +0800 | [diff] [blame] | 198 | const TEEC_UUID storage_benchmark_ta_uuid = TA_STORAGE_BENCHMARK_UUID; |
Jens Wiklander | 02389a9 | 2016-12-16 11:13:38 +0100 | [diff] [blame] | 199 | const TEEC_UUID socket_ta_uuid = TA_SOCKET_UUID; |
Etienne Carriere | 50abf9a | 2017-03-24 11:33:50 +0100 | [diff] [blame] | 200 | const TEEC_UUID sdp_basic_ta_uuid = TA_SDP_BASIC_UUID; |
Javier Almansa Sobrino | cddc000 | 2020-02-10 13:35:37 +0000 | [diff] [blame] | 201 | const TEEC_UUID tpm_log_test_ta_uuid = TA_TPM_LOG_TEST_UUID; |
Aleksandr Anisimov | 01f6f06 | 2021-01-19 11:02:25 +0300 | [diff] [blame] | 202 | const TEEC_UUID supp_plugin_test_ta_uuid = TA_SUPP_PLUGIN_UUID; |
Jens Wiklander | 94fb158 | 2021-05-19 10:14:57 +0200 | [diff] [blame] | 203 | const TEEC_UUID large_ta_uuid = TA_LARGE_UUID; |
Ruchika Gupta | 7a7bc8d | 2021-12-01 10:44:14 +0530 | [diff] [blame] | 204 | const TEEC_UUID bti_test_ta_uuid = TA_BTI_UUID; |