void TEE_CloseAndDeletePersistentObject(TEE_ObjectHandle object) { TEE_Result res; if (object == TEE_HANDLE_NULL) return; res = utee_storage_obj_del(object); if (res != TEE_SUCCESS) TEE_Panic(0); }
TEE_Result TEE_CloseAndDeletePersistentObject1(TEE_ObjectHandle object) { TEE_Result res; if (object == TEE_HANDLE_NULL) return TEE_ERROR_STORAGE_NOT_AVAILABLE; res = utee_storage_obj_del((unsigned long)object); if (res != TEE_SUCCESS && res != TEE_ERROR_STORAGE_NOT_AVAILABLE) TEE_Panic(0); return res; }
TEE_Result TEE_GetObjectInfo1(TEE_ObjectHandle object, TEE_ObjectInfo *objectInfo) { TEE_Result res; res = utee_cryp_obj_get_info((uint32_t)object, objectInfo); if (res == TEE_ERROR_CORRUPT_OBJECT) { res = utee_storage_obj_del(object); if (res != TEE_SUCCESS) TEE_Panic(0); return TEE_ERROR_CORRUPT_OBJECT; } if (res != TEE_SUCCESS && res != TEE_ERROR_STORAGE_NOT_AVAILABLE) TEE_Panic(res); return res; }
TEE_Result TEE_RestrictObjectUsage1(TEE_ObjectHandle object, uint32_t objectUsage) { TEE_Result res; res = utee_cryp_obj_restrict_usage((uint32_t)object, objectUsage); if (res == TEE_ERROR_CORRUPT_OBJECT) { res = utee_storage_obj_del(object); if (res != TEE_SUCCESS) TEE_Panic(0); return TEE_ERROR_CORRUPT_OBJECT; } if (res != TEE_SUCCESS && res != TEE_ERROR_STORAGE_NOT_AVAILABLE) TEE_Panic(0); return res; }
TEE_Result TEE_CopyObjectAttributes1(TEE_ObjectHandle destObject, TEE_ObjectHandle srcObject) { TEE_Result res; TEE_ObjectInfo dst_info; TEE_ObjectInfo src_info; res = utee_cryp_obj_get_info((uint32_t)destObject, &dst_info); if (res != TEE_SUCCESS) goto err; res = utee_cryp_obj_get_info((uint32_t)srcObject, &src_info); if (res != TEE_SUCCESS) goto err; if ((src_info.handleFlags & TEE_HANDLE_FLAG_INITIALIZED) == 0) TEE_Panic(0); if ((dst_info.handleFlags & TEE_HANDLE_FLAG_PERSISTENT) != 0) TEE_Panic(0); if ((dst_info.handleFlags & TEE_HANDLE_FLAG_INITIALIZED) != 0) TEE_Panic(0); res = utee_cryp_obj_copy((uint32_t)destObject, (uint32_t)srcObject); if (res != TEE_SUCCESS) TEE_Panic(0); goto out; err: if (res == TEE_ERROR_CORRUPT_OBJECT) { res = utee_storage_obj_del(srcObject); if (res != TEE_SUCCESS) TEE_Panic(0); return TEE_ERROR_CORRUPT_OBJECT; } if (res == TEE_ERROR_STORAGE_NOT_AVAILABLE) return res; TEE_Panic(0); out: return TEE_SUCCESS; }