TEE_Result TA_EXPORT TA_InvokeCommandEntryPoint(void *sessionContext, uint32_t commandID, uint32_t paramTypes, TEE_Param params[4]) { TEE_Result tee_rv = TEE_SUCCESS; /* Check session context */ if (TEE_MemCompare(sessionContext, out_vector, SIZE_OF_VEC(out_vector))) { OT_LOG(LOG_ERR, "Not a correct session context"); return TEE_ERROR_GENERIC; } if (!(commandID == INVOKE_CMD_ID_1 || commandID == INVOKE_CMD_ID_2)) { OT_LOG(LOG_ERR, "Not a valid command ID"); return TEE_ERROR_BAD_PARAMETERS; } tee_rv = handle_params(paramTypes, params); if (tee_rv != TEE_SUCCESS) return tee_rv; if (storage_test(2)) return TEE_ERROR_GENERIC; if (crypto_test(2)) return TEE_ERROR_GENERIC; return TEE_SUCCESS; }
TEE_Result TA_EXPORT TA_OpenSessionEntryPoint(uint32_t paramTypes, TEE_Param params[4], void **sessionContext) { TEE_Result tee_rv = TEE_SUCCESS; OT_LOG(LOG_INFO, "Calling the Open session entry point"); tee_rv = handle_params(paramTypes, params); if (tee_rv != TEE_SUCCESS) return tee_rv; if (storage_test(2)) return TEE_ERROR_GENERIC; if (crypto_test(2)) return TEE_ERROR_GENERIC; if (*sessionContext != NULL) { OT_LOG(LOG_ERR, "Session context should be NULL"); return TEE_ERROR_BAD_PARAMETERS; } *sessionContext = TEE_Malloc(SIZE_OF_VEC(out_vector), 0); if (*sessionContext == NULL) { OT_LOG(LOG_ERR, "Can not malloc space for session context"); return TEE_ERROR_OUT_OF_MEMORY; } TEE_MemMove(*sessionContext, out_vector, SIZE_OF_VEC(out_vector)); return tee_rv; }
void TA_EXPORT TA_DestroyEntryPoint(void) { OT_LOG(LOG_INFO, "Calling the Destroy entry point"); if (storage_test(2)) TEE_Panic(TEE_ERROR_GENERIC); if (crypto_test(2)) TEE_Panic(TEE_ERROR_GENERIC); }
static uint8 at_stest(char *ret_buf) { struct ther_info *ti = get_ti(); if (ti->mode != CAL_MODE) enter_cal_mode(ti); storage_test(); return 0; }
TEE_Result TA_EXPORT TA_CreateEntryPoint(void) { OT_LOG(LOG_INFO, "Calling the create entry point"); if (storage_test(2)) return TEE_ERROR_GENERIC; if (crypto_test(2)) return TEE_ERROR_GENERIC; return TEE_SUCCESS; }
int main(void) { ElfObject elf; FILE *in; in = fopen("example.o", "r+"); ElfObject_init(in, &elf); fclose(in); List_test(); ElfObject_test(&elf); storage_test(&elf); ElfObject_free(&elf); return 0; }
void TA_EXPORT TA_CloseSessionEntryPoint(void *sessionContext) { OT_LOG(LOG_INFO, "Calling the Close session entry point"); if (storage_test(2)) TEE_Panic(TEE_ERROR_GENERIC); if (crypto_test(2)) TEE_Panic(TEE_ERROR_GENERIC); /* Check session context */ if (TEE_MemCompare(sessionContext, out_vector, SIZE_OF_VEC(out_vector))) { OT_LOG(LOG_ERR, "Not a correct session context"); TEE_Panic(TEE_ERROR_GENERIC); } TEE_Free(sessionContext); }