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 <gtest/gtest.h> 14 #include <test_defines.h> 15 #include <common_test.h> 16 #include <securec.h> 17 #include <tee_client_api.h> 18 #include <tee_client_type.h> 19 #include <test_log.h> 20 #include <test_tcf_cmdid.h> 21 22 using namespace testing::ext; 23 /** 24 * @testcase.name : TEE_GetPropertyAsString_WithoutEnum_GPD_TA_APPID 25 * @testcase.desc : test TA call TEE_GetPropertyAsString to get value of GPD_TA_APPID 26 * @testcase.expect : return TEEC_SUCCESS, get value is correct 27 */ 28 TEE_TEST(TeeTCF1Test, TEE_GetPropertyAsString_WithoutEnum_GPD_TA_APPID, Function | MediumTest | Level0) 29 { 30 TEEC_Result ret; 31 int rc; 32 TestData value = { 0 }; 33 value.cmd = CMD_TEE_GetPropertyAsString; 34 value.propSet = TEE_PROPSET_CURRENT_TA; 35 rc = memcpy_s(value.inBuffer, BIG_SIZE, GPD_TA_APPID, sizeof(GPD_TA_APPID)); 36 ASSERT_EQ(rc, 0); 37 value.inBufferLen = sizeof(GPD_TA_APPID); 38 39 ret = Invoke_GetPropertyAsX(GetContext(), GetSession(), &value); 40 ASSERT_EQ(ret, TEEC_SUCCESS); 41 ASSERT_EQ(value.origin, TEEC_ORIGIN_TRUSTED_APP); 42 ASSERT_STREQ(value.outBuffer, VALUE_PREDEFINED_UUID); 43 ASSERT_EQ(value.outBufferLen, BIG_SIZE); 44 } 45 46 /** 47 * @testcase.name : TEE_GetPropertyAsString_WithoutEnum_GPD_TA_SERVICENAME 48 * @testcase.desc : test TA call TEE_GetPropertyAsString to get value of GPD_TA_SERVICENAME 49 * @testcase.expect : return TEEC_ERROR_ITEM_NOT_FOUND, can not get value 50 */ 51 TEE_TEST(TeeTCF1Test, TEE_GetPropertyAsString_WithoutEnum_GPD_TA_SERVICENAME, Function | MediumTest | Level0) 52 { 53 TEEC_Result ret; 54 int rc; 55 TestData value = { 0 }; 56 value.cmd = CMD_TEE_GetPropertyAsString; 57 value.propSet = TEE_PROPSET_CURRENT_TA; 58 rc = memcpy_s(value.inBuffer, BIG_SIZE, GPD_TA_SERVICENAME, sizeof(GPD_TA_SERVICENAME)); 59 ASSERT_EQ(rc, 0); 60 value.inBufferLen = sizeof(GPD_TA_SERVICENAME); 61 62 ret = Invoke_GetPropertyAsX(GetContext(), GetSession(), &value); 63 ASSERT_EQ(ret, TEEC_ERROR_ITEM_NOT_FOUND); 64 ASSERT_EQ(value.origin, TEEC_ORIGIN_TRUSTED_APP); 65 } 66 67 /** 68 * @testcase.name : TEE_GetPropertyAsString_WithoutEnum_GPD_CLIENT_IDENTITY 69 * @testcase.desc : test TA call TEE_GetPropertyAsString to get value of GPD_CLIENT_IDENTITY 70 * @testcase.expect : return TEEC_SUCCESS, get value is correct 71 */ 72 TEE_TEST(TeeTCF1Test, TEE_GetPropertyAsString_WithoutEnum_GPD_CLIENT_IDENTITY, Function | MediumTest | Level0) 73 { 74 TEEC_Result ret; 75 int rc; 76 TestData value = { 0 }; 77 value.cmd = CMD_TEE_GetPropertyAsString; 78 value.propSet = TEE_PROPSET_CURRENT_CLIENT; 79 rc = memcpy_s(value.inBuffer, BIG_SIZE, GPD_CLIENT_IDENTITY, sizeof(GPD_CLIENT_IDENTITY)); 80 ASSERT_EQ(rc, 0); 81 value.inBufferLen = sizeof(GPD_CLIENT_IDENTITY); 82 83 ret = Invoke_GetPropertyAsX(GetContext(), GetSession(), &value); 84 ASSERT_EQ(ret, TEEC_SUCCESS); 85 ASSERT_EQ(value.origin, TEEC_ORIGIN_TRUSTED_APP); 86 ASSERT_STREQ(value.outBuffer, VALUE_PREDEFINED_CLIENT_IDENTITY); 87 } 88 89 /** 90 * @testcase.name : TEE_GetPropertyAsString_WithoutEnum_GPD_CLIENT_IDENTITY_PropsetIsWrong 91 * @testcase.desc : test TA call TEE_GetPropertyAsString to get value of GPD_CLIENT_IDENTITY, Propset is wrong 92 * @testcase.expect : return TEEC_ERROR_ITEM_NOT_FOUND, can not get value 93 */ 94 TEE_TEST(TeeTCF1Test, TEE_GetPropertyAsString_WithoutEnum_GPD_CLIENT_IDENTITY_PropsetIsWrong, 95 Function | MediumTest | Level0) 96 { 97 TEEC_Result ret; 98 int rc; 99 TestData value = { 0 }; 100 value.cmd = CMD_TEE_GetPropertyAsString; 101 value.propSet = TEE_PROPSET_CURRENT_TA; 102 rc = memcpy_s(value.inBuffer, BIG_SIZE, GPD_CLIENT_IDENTITY, sizeof(GPD_CLIENT_IDENTITY)); 103 ASSERT_EQ(rc, 0); 104 value.inBufferLen = sizeof(GPD_CLIENT_IDENTITY); 105 106 ret = Invoke_GetPropertyAsX(GetContext(), GetSession(), &value); 107 ASSERT_EQ(ret, TEEC_ERROR_ITEM_NOT_FOUND); 108 ASSERT_EQ(value.origin, TEEC_ORIGIN_TRUSTED_APP); 109 } 110 111 /** 112 * @testcase.name : TEE_GetPropertyAsString_WithoutEnum_GPD_TA_VERSION 113 * @testcase.desc : test TA call TEE_GetPropertyAsString to get value of GPD_TA_VERSION 114 * @testcase.expect : return TEEC_SUCCESS, get value is correct 115 */ 116 TEE_TEST(TeeTCF1Test, TEE_GetPropertyAsString_WithoutEnum_GPD_TA_VERSION, Function | MediumTest | Level0) 117 { 118 TEEC_Result ret; 119 int rc; 120 TestData value = { 0 }; 121 value.cmd = CMD_TEE_GetPropertyAsString; 122 value.propSet = TEE_PROPSET_CURRENT_TA; 123 rc = memcpy_s(value.inBuffer, BIG_SIZE, GPD_TA_VERSION, sizeof(GPD_TA_VERSION)); 124 ASSERT_EQ(rc, 0); 125 value.inBufferLen = sizeof(GPD_TA_VERSION); 126 127 ret = Invoke_GetPropertyAsX(GetContext(), GetSession(), &value); 128 ASSERT_EQ(ret, TEEC_SUCCESS); 129 ASSERT_EQ(value.origin, TEEC_ORIGIN_TRUSTED_APP); 130 ASSERT_STREQ(value.outBuffer, VALUE_PREDEFINED_TA_VERSION); 131 } 132 133 /** 134 * @testcase.name : TEE_GetPropertyAsString_WithoutEnum_GPD_TA_DESCRIPTION 135 * @testcase.desc : test TA call TEE_GetPropertyAsString to get value of GPD_TA_DESCRIPTION 136 * @testcase.expect : return TEEC_SUCCESS, get value is correct 137 */ 138 TEE_TEST(TeeTCF1Test, TEE_GetPropertyAsString_WithoutEnum_GPD_TA_DESCRIPTION, Function | MediumTest | Level0) 139 { 140 TEEC_Result ret; 141 int rc; 142 143 TestData value = { 0 }; 144 value.cmd = CMD_TEE_GetPropertyAsString; 145 value.propSet = TEE_PROPSET_CURRENT_TA; 146 rc = memcpy_s(value.inBuffer, BIG_SIZE, GPD_TA_DESCRIPTION, sizeof(GPD_TA_DESCRIPTION)); 147 ASSERT_EQ(rc, 0); 148 value.inBufferLen = sizeof(GPD_TA_DESCRIPTION); 149 150 ret = Invoke_GetPropertyAsX(GetContext(), GetSession(), &value); 151 ASSERT_EQ(ret, TEEC_SUCCESS); 152 ASSERT_EQ(value.origin, TEEC_ORIGIN_TRUSTED_APP); 153 ASSERT_STREQ(value.outBuffer, VALUE_PREDEFINED_TA_DESCRIPTION); 154 } 155 156 /** 157 * @testcase.name : TEE_GetPropertyAsString_WithoutEnum_GPD_TEE_APIVERSION 158 * @testcase.desc : test TA call TEE_GetPropertyAsString to get value of GPD_TEE_APIVERSION 159 * @testcase.expect : return TEEC_SUCCESS, get value is correct 160 */ 161 TEE_TEST(TeeTCF1Test, TEE_GetPropertyAsString_WithoutEnum_GPD_TEE_APIVERSION, Function | MediumTest | Level0) 162 { 163 TEEC_Result ret; 164 int rc; 165 166 TestData value = { 0 }; 167 value.cmd = CMD_TEE_GetPropertyAsString; 168 value.propSet = TEE_PROPSET_IMPLEMENTATION; 169 rc = memcpy_s(value.inBuffer, BIG_SIZE, GPD_TEE_APIVERSION, sizeof(GPD_TEE_APIVERSION)); 170 ASSERT_EQ(rc, 0); 171 value.inBufferLen = sizeof(GPD_TEE_APIVERSION); 172 173 ret = Invoke_GetPropertyAsX(GetContext(), GetSession(), &value); 174 ASSERT_EQ(ret, TEEC_SUCCESS); 175 ASSERT_EQ(value.origin, TEEC_ORIGIN_TRUSTED_APP); 176 ASSERT_STREQ(value.outBuffer, TEE_API_VERSION); 177 } 178 179 /** 180 * @testcase.name : TEE_GetPropertyAsString_WithoutEnum_GPD_TEE_DESCRIPTION 181 * @testcase.desc : test TA call TEE_GetPropertyAsString to get value of GPD_TEE_DESCRIPTION 182 * @testcase.expect : return TEEC_SUCCESS, get value is correct 183 */ 184 TEE_TEST(TeeTCF1Test, TEE_GetPropertyAsString_WithoutEnum_GPD_TEE_DESCRIPTION, Function | MediumTest | Level0) 185 { 186 TEEC_Result ret; 187 int rc; 188 189 TestData value = { 0 }; 190 value.cmd = CMD_TEE_GetPropertyAsString; 191 value.propSet = TEE_PROPSET_IMPLEMENTATION; 192 rc = memcpy_s(value.inBuffer, BIG_SIZE, GPD_TEE_DESCRIPTION, sizeof(GPD_TEE_DESCRIPTION)); 193 ASSERT_EQ(rc, 0); 194 value.inBufferLen = sizeof(GPD_TEE_DESCRIPTION); 195 196 ret = Invoke_GetPropertyAsX(GetContext(), GetSession(), &value); 197 ASSERT_EQ(ret, TEEC_SUCCESS); 198 ASSERT_EQ(value.origin, TEEC_ORIGIN_TRUSTED_APP); 199 ASSERT_STREQ(value.outBuffer, TEE_BUILD_VER); 200 } 201 202 /** 203 * @testcase.name : TEE_GetPropertyAsString_WithoutEnum_GPD_TEE_TRUSTEDOS_IMP_VERSION 204 * @testcase.desc : test TA call TEE_GetPropertyAsString to get value of GPD_TEE_TRUSTEDOS_IMP_VERSION 205 * @testcase.expect : return TEEC_SUCCESS, get value is correct 206 */ 207 TEE_TEST(TeeTCF1Test, TEE_GetPropertyAsString_WithoutEnum_GPD_TEE_TRUSTEDOS_IMP_VERSION, Function | MediumTest | Level0) 208 { 209 TEEC_Result ret; 210 int rc; 211 212 TestData value = { 0 }; 213 value.cmd = CMD_TEE_GetPropertyAsString; 214 value.propSet = TEE_PROPSET_IMPLEMENTATION; 215 rc = memcpy_s(value.inBuffer, BIG_SIZE, GPD_TEE_TRUSTEDOS_IMP_VERSION, sizeof(GPD_TEE_TRUSTEDOS_IMP_VERSION)); 216 ASSERT_EQ(rc, 0); 217 value.inBufferLen = sizeof(GPD_TEE_TRUSTEDOS_IMP_VERSION); 218 219 ret = Invoke_GetPropertyAsX(GetContext(), GetSession(), &value); 220 ASSERT_EQ(ret, TEEC_SUCCESS); 221 ASSERT_EQ(value.origin, TEEC_ORIGIN_TRUSTED_APP); 222 ASSERT_STREQ(value.outBuffer, TEE_IMP_VERSION); 223 } 224 225 /** 226 * @testcase.name : TEE_GetPropertyAsString_WithoutEnum_GPD_TEE_TRUSTEDOS_IMP_BINARYVERSION 227 * @testcase.desc : test TA call TEE_GetPropertyAsString to get value of GPD_TEE_TRUSTEDOS_IMP_BINARYVERSION 228 * @testcase.expect : return TEEC_SUCCESS, get value is correct 229 */ 230 TEE_TEST(TeeTCF1Test, TEE_GetPropertyAsString_WithoutEnum_GPD_TEE_TRUSTEDOS_IMP_BINARYVERSION, 231 Function | MediumTest | Level0) 232 { 233 TEEC_Result ret; 234 int rc; 235 236 TestData value = { 0 }; 237 value.cmd = CMD_TEE_GetPropertyAsString; 238 value.propSet = TEE_PROPSET_IMPLEMENTATION; 239 rc = memcpy_s(value.inBuffer, BIG_SIZE, GPD_TEE_TRUSTEDOS_IMP_BINARYVERSION, 240 sizeof(GPD_TEE_TRUSTEDOS_IMP_BINARYVERSION)); 241 ASSERT_EQ(rc, 0); 242 value.inBufferLen = sizeof(GPD_TEE_TRUSTEDOS_IMP_BINARYVERSION); 243 244 ret = Invoke_GetPropertyAsX(GetContext(), GetSession(), &value); 245 ASSERT_EQ(ret, TEEC_SUCCESS); 246 ASSERT_EQ(value.origin, TEEC_ORIGIN_TRUSTED_APP); 247 ASSERT_STREQ(value.outBuffer, TEE_IMP_VERSION); 248 } 249 250 /** 251 * @testcase.name : TEE_GetPropertyAsString_WithoutEnum_GPD_TEE_FIRMWARE_IMP_VERSION 252 * @testcase.desc : test TA call TEE_GetPropertyAsString to get value of GPD_TEE_FIRMWARE_IMP_VERSION 253 * @testcase.expect : return TEEC_SUCCESS, get value is correct 254 */ 255 TEE_TEST(TeeTCF1Test, TEE_GetPropertyAsString_WithoutEnum_GPD_TEE_FIRMWARE_IMP_VERSION, Function | MediumTest | Level0) 256 { 257 TEEC_Result ret; 258 int rc; 259 260 TestData value = { 0 }; 261 value.cmd = CMD_TEE_GetPropertyAsString; 262 value.propSet = TEE_PROPSET_IMPLEMENTATION; 263 rc = memcpy_s(value.inBuffer, BIG_SIZE, GPD_TEE_FIRMWARE_IMP_VERSION, sizeof(GPD_TEE_FIRMWARE_IMP_VERSION)); 264 ASSERT_EQ(rc, 0); 265 value.inBufferLen = sizeof(GPD_TEE_FIRMWARE_IMP_VERSION); 266 267 ret = Invoke_GetPropertyAsX(GetContext(), GetSession(), &value); 268 ASSERT_EQ(ret, TEEC_SUCCESS); 269 ASSERT_EQ(value.origin, TEEC_ORIGIN_TRUSTED_APP); 270 ASSERT_STREQ(value.outBuffer, TEE_FIRMWARE_IMP_VERSION); 271 } 272 273 /** 274 * @testcase.name : TEE_GetPropertyAsString_WithoutEnum_GPD_TEE_FIRMWARE_IMP_BINARYVERSION 275 * @testcase.desc : test TA call TEE_GetPropertyAsString to get value of GPD_TEE_FIRMWARE_IMP_BINARYVERSION 276 * @testcase.expect : return TEEC_SUCCESS, get value is correct 277 */ 278 TEE_TEST(TeeTCF1Test, TEE_GetPropertyAsString_WithoutEnum_GPD_TEE_FIRMWARE_IMP_BINARYVERSION, 279 Function | MediumTest | Level0) 280 { 281 TEEC_Result ret; 282 int rc; 283 284 TestData value = { 0 }; 285 value.cmd = CMD_TEE_GetPropertyAsString; 286 value.propSet = TEE_PROPSET_IMPLEMENTATION; 287 rc = memcpy_s(value.inBuffer, BIG_SIZE, GPD_TEE_FIRMWARE_IMP_BINARYVERSION, 288 sizeof(GPD_TEE_FIRMWARE_IMP_BINARYVERSION)); 289 ASSERT_EQ(rc, 0); 290 value.inBufferLen = sizeof(GPD_TEE_FIRMWARE_IMP_BINARYVERSION); 291 292 ret = Invoke_GetPropertyAsX(GetContext(), GetSession(), &value); 293 ASSERT_EQ(ret, TEEC_SUCCESS); 294 ASSERT_EQ(value.origin, TEEC_ORIGIN_TRUSTED_APP); 295 ASSERT_STREQ(value.outBuffer, TEE_FIRMWARE_IMP_VERSION); 296 } 297 298 /** 299 * @testcase.name : TEE_GetPropertyAsString_WithoutEnum_GPD_TEE_TRUSTEDOS_MANUFACTURER 300 * @testcase.desc : test TA call TEE_GetPropertyAsString to get value of GPD_TEE_TRUSTEDOS_MANUFACTURER 301 * @testcase.expect : return TEEC_SUCCESS, get value is correct 302 */ 303 TEE_TEST(TeeTCF1Test, TEE_GetPropertyAsString_WithoutEnum_GPD_TEE_TRUSTEDOS_MANUFACTURER, Function | MediumTest | Level0) 304 { 305 TEEC_Result ret; 306 int rc; 307 308 TestData value = { 0 }; 309 value.cmd = CMD_TEE_GetPropertyAsString; 310 value.propSet = TEE_PROPSET_IMPLEMENTATION; 311 rc = memcpy_s(value.inBuffer, BIG_SIZE, GPD_TEE_TRUSTEDOS_MANUFACTURER, sizeof(GPD_TEE_TRUSTEDOS_MANUFACTURER)); 312 ASSERT_EQ(rc, 0); 313 value.inBufferLen = sizeof(GPD_TEE_TRUSTEDOS_MANUFACTURER); 314 315 ret = Invoke_GetPropertyAsX(GetContext(), GetSession(), &value); 316 ASSERT_EQ(ret, TEEC_SUCCESS); 317 ASSERT_EQ(value.origin, TEEC_ORIGIN_TRUSTED_APP); 318 ASSERT_STREQ(value.outBuffer, TEE_MANUFACTURER); 319 } 320 321 /** 322 * @testcase.name : TEE_GetPropertyAsString_WithoutEnum_GPD_TEE_FIRMWARE_MANUFACTURER 323 * @testcase.desc : test TA call TEE_GetPropertyAsString to get value of GPD_TEE_FIRMWARE_MANUFACTURER 324 * @testcase.expect : return TEEC_SUCCESS, get value is correct 325 */ 326 TEE_TEST(TeeTCF1Test, TEE_GetPropertyAsString_WithoutEnum_GPD_TEE_FIRMWARE_MANUFACTURER, Function | MediumTest | Level0) 327 { 328 TEEC_Result ret; 329 int rc; 330 331 TestData value = { 0 }; 332 value.cmd = CMD_TEE_GetPropertyAsString; 333 value.propSet = TEE_PROPSET_IMPLEMENTATION; 334 rc = memcpy_s(value.inBuffer, BIG_SIZE, GPD_TEE_FIRMWARE_MANUFACTURER, sizeof(GPD_TEE_FIRMWARE_MANUFACTURER)); 335 ASSERT_EQ(rc, 0); 336 value.inBufferLen = sizeof(GPD_TEE_FIRMWARE_MANUFACTURER); 337 338 ret = Invoke_GetPropertyAsX(GetContext(), GetSession(), &value); 339 ASSERT_EQ(ret, TEEC_SUCCESS); 340 ASSERT_EQ(value.origin, TEEC_ORIGIN_TRUSTED_APP); 341 ASSERT_STREQ(value.outBuffer, TEE_FIRMWARE_MANUFACTURER); 342 } 343 344 /** 345 * @testcase.name : TEE_GetPropertyAsString_WithoutEnum_PropsetIsZero 346 * @testcase.desc : test TA call TEE_GetPropertyAsString while Propset Is Zero 347 * @testcase.expect : return TEEC_ERROR_ITEM_NOT_FOUND 348 */ 349 TEE_TEST(TeeTCF1Test, TEE_GetPropertyAsString_WithoutEnum_PropsetIsZero, Function | MediumTest | Level0) 350 { 351 TEEC_Result ret; 352 int rc; 353 354 TestData value = { 0 }; 355 value.cmd = CMD_TEE_GetPropertyAsString; 356 value.propSet = TEE_PROPSET_ZERO; 357 rc = memcpy_s(value.inBuffer, BIG_SIZE, GPD_TA_APPID, sizeof(GPD_TA_APPID)); 358 ASSERT_EQ(rc, 0); 359 value.inBufferLen = sizeof(GPD_TA_APPID); 360 ret = Invoke_GetPropertyAsX(GetContext(), GetSession(), &value); 361 ASSERT_EQ(ret, TEEC_ERROR_ITEM_NOT_FOUND); 362 ASSERT_EQ(value.origin, TEEC_ORIGIN_TRUSTED_APP); 363 } 364 365 /** 366 * @testcase.name : TEE_GetPropertyAsString_WithoutEnum_NameIsNULL 367 * @testcase.desc : test TA call TEE_GetPropertyAsString while name is null 368 * @testcase.expect : return TEEC_ERROR_ITEM_NOT_FOUND 369 */ 370 TEE_TEST(TeeTCF1Test, TEE_GetPropertyAsString_WithoutEnum_NameIsNULL, Function | MediumTest | Level0) 371 { 372 TEEC_Result ret; 373 374 TestData value = { 0 }; 375 value.cmd = CMD_TEE_GetPropertyAsString; 376 value.caseId = INPUT_ISNULL; 377 value.propSet = TEE_PROPSET_CURRENT_TA; 378 ret = Invoke_GetPropertyAsX(GetContext(), GetSession(), &value); 379 ASSERT_EQ(ret, TEEC_ERROR_ITEM_NOT_FOUND); 380 ASSERT_EQ(value.origin, TEEC_ORIGIN_TRUSTED_APP); 381 } 382 383 /** 384 * @testcase.name : TEE_GetPropertyAsString_WithoutEnum_NameIsZero 385 * @testcase.desc : test TA call TEE_GetPropertyAsString while name value is zero 386 * @testcase.expect : return TEEC_ERROR_ITEM_NOT_FOUND 387 */ 388 TEE_TEST(TeeTCF1Test, TEE_GetPropertyAsString_WithoutEnum_NameIsZero, Function | MediumTest | Level0) 389 { 390 TEEC_Result ret; 391 392 TestData value = { 0 }; 393 value.cmd = CMD_TEE_GetPropertyAsString; 394 value.propSet = TEE_PROPSET_CURRENT_TA; 395 ret = Invoke_GetPropertyAsX(GetContext(), GetSession(), &value); 396 ASSERT_EQ(ret, TEEC_ERROR_ITEM_NOT_FOUND); 397 ASSERT_EQ(value.origin, TEEC_ORIGIN_TRUSTED_APP); 398 } 399 400 /** 401 * @testcase.name : TEE_GetPropertyAsString_WithoutEnum_ValueBufferIsNULL 402 * @testcase.desc : test TA call TEE_GetPropertyAsString while value buffer is null 403 * @testcase.expect : return TEEC_ERROR_SHORT_BUFFER 404 */ 405 TEE_TEST(TeeTCF1Test, TEE_GetPropertyAsString_WithoutEnum_ValueBufferIsNULL, Function | MediumTest | Level0) 406 { 407 TEEC_Result ret; 408 int rc; 409 410 TestData value = { 0 }; 411 value.cmd = CMD_TEE_GetPropertyAsString; 412 value.caseId = OUTPUT_ISNULL; 413 value.propSet = TEE_PROPSET_CURRENT_TA; 414 rc = memcpy_s(value.inBuffer, BIG_SIZE, GPD_TA_APPID, sizeof(GPD_TA_APPID)); 415 ASSERT_EQ(rc, 0); 416 value.inBufferLen = sizeof(GPD_TA_APPID); 417 ret = Invoke_GetPropertyAsX(GetContext(), GetSession(), &value); 418 ASSERT_EQ(ret, TEEC_ERROR_SHORT_BUFFER); 419 ASSERT_EQ(value.origin, TEEC_ORIGIN_TRUSTED_APP); 420 } 421 422 /** 423 * @testcase.name : TEE_GetPropertyAsString_WithoutEnum_ValueBufferSizeIsNULL 424 * @testcase.desc : test TA call TEE_GetPropertyAsString while value buffer size is null 425 * @testcase.expect : return TEEC_ERROR_SHORT_BUFFER 426 */ 427 TEE_TEST(TeeTCF1Test, TEE_GetPropertyAsString_WithoutEnum_ValueBufferSizeIsNULL, Function | MediumTest | Level0) 428 { 429 TEEC_Result ret; 430 int rc; 431 432 TestData value = { 0 }; 433 value.cmd = CMD_TEE_GetPropertyAsString; 434 value.caseId = OUTPUTBUFFERSIZE_ISNULL; 435 value.propSet = TEE_PROPSET_CURRENT_TA; 436 rc = memcpy_s(value.inBuffer, BIG_SIZE, GPD_TA_APPID, sizeof(GPD_TA_APPID)); 437 ASSERT_EQ(rc, 0); 438 value.inBufferLen = sizeof(GPD_TA_APPID); 439 ret = Invoke_GetPropertyAsX(GetContext(), GetSession(), &value); 440 ASSERT_EQ(ret, TEEC_ERROR_SHORT_BUFFER); 441 ASSERT_EQ(value.origin, TEEC_ORIGIN_TRUSTED_APP); 442 } 443 444 /** 445 * @testcase.name : TEE_GetPropertyAsString_WithoutEnum_ValueBufferSizeIsZero 446 * @testcase.desc : test TA call TEE_GetPropertyAsString while value buffer size is zero 447 * @testcase.expect : return TEEC_ERROR_SHORT_BUFFER 448 */ 449 TEE_TEST(TeeTCF1Test, TEE_GetPropertyAsString_WithoutEnum_ValueBufferSizeIsZero, Function | MediumTest | Level0) 450 { 451 TEEC_Result ret; 452 int rc; 453 454 TestData value = { 0 }; 455 value.cmd = CMD_TEE_GetPropertyAsString; 456 value.caseId = OUTPUTBUFFERSIZE_ISZERO; 457 value.propSet = TEE_PROPSET_CURRENT_TA; 458 rc = memcpy_s(value.inBuffer, BIG_SIZE, GPD_TA_APPID, sizeof(GPD_TA_APPID)); 459 ASSERT_EQ(rc, 0); 460 value.inBufferLen = sizeof(GPD_TA_APPID); 461 462 ret = Invoke_GetPropertyAsX(GetContext(), GetSession(), &value); 463 ASSERT_EQ(ret, TEEC_ERROR_SHORT_BUFFER); 464 ASSERT_EQ(value.origin, TEEC_ORIGIN_TRUSTED_APP); 465 } 466 467 /** 468 * @testcase.name : TEE_GetPropertyAsString_WithoutEnum_NameNotFound 469 * @testcase.desc : test TA call TEE_GetPropertyAsString while Name Not Found 470 * @testcase.expect : return TEEC_ERROR_ITEM_NOT_FOUND 471 */ 472 TEE_TEST(TeeTCF1Test, TEE_GetPropertyAsString_WithoutEnum_NameNotFound, Function | MediumTest | Level0) 473 { 474 TEEC_Result ret; 475 int rc; 476 477 TestData value = { 0 }; 478 value.cmd = CMD_TEE_GetPropertyAsString; 479 value.propSet = TEE_PROPSET_CURRENT_TA; 480 rc = memcpy_s(value.inBuffer, BIG_SIZE, PROPERTY_NAME_UNKNOWN, sizeof(PROPERTY_NAME_UNKNOWN)); 481 ASSERT_EQ(rc, 0); 482 value.inBufferLen = sizeof(PROPERTY_NAME_UNKNOWN); 483 484 ret = Invoke_GetPropertyAsX(GetContext(), GetSession(), &value); 485 ASSERT_EQ(ret, TEEC_ERROR_ITEM_NOT_FOUND); 486 ASSERT_EQ(value.origin, TEEC_ORIGIN_TRUSTED_APP); 487 } 488 489 /** 490 * @testcase.name : TEE_GetPropertyAsString_WithoutEnum_BufferTooShort 491 * @testcase.desc : test TA call TEE_GetPropertyAsString while out buffer is too short 492 * @testcase.expect : return TEEC_ERROR_SHORT_BUFFER 493 */ 494 TEE_TEST(TeeTCF1Test, TEE_GetPropertyAsString_WithoutEnum_BufferTooShort, Function | MediumTest | Level0) 495 { 496 TEEC_Result ret; 497 int rc; 498 499 TestData value = { 0 }; 500 value.cmd = CMD_TEE_GetPropertyAsString; 501 value.caseId = OUTPUTBUFFERSIZE_TOOSHORT; 502 value.propSet = TEE_PROPSET_CURRENT_TA; 503 rc = memcpy_s(value.inBuffer, BIG_SIZE, GPD_TA_APPID, sizeof(GPD_TA_APPID)); 504 ASSERT_EQ(rc, 0); 505 value.inBufferLen = sizeof(GPD_TA_APPID); 506 507 ret = Invoke_GetPropertyAsX(GetContext(), GetSession(), &value); 508 ASSERT_EQ(ret, TEEC_ERROR_SHORT_BUFFER); 509 ASSERT_EQ(value.origin, TEEC_ORIGIN_TRUSTED_APP); 510 }