У меня есть такая структура С++:
struct node
{
string splitOn;
string label;
bool isLeaf;
vector<string> childrenValues;
vector<node*> children;
};
Я хотел передать или прочитать это из приложения в анклав Intel SGX. На основании того, что упомянуто здесь: https://software.intel.com/en-us/forums/intel-software-guard-extensions-intel-sgx/topic/703489
Я пробовал это:
ПРИЛОЖЕНИЕ:
node *root = new node;
root = buildDecisionTree(dataTable, root, *tableInfo); //this initializes the root
void *data3 = static_cast<void*>(root);
ecall_my_dtree(global_eid, &ecall_return, data3);
EDL:
public int ecall_my_dtree([user_check] void* data);
Анклав:
int ecall_my_dtree(void *data2)
node* root2 = static_cast<node*>(data2);
Но, похоже, root2 не может правильно инициализироваться и указывает на мусор.
О user_check: https://software.intel.com/en-us/node/708978< /а>
Любая помощь относительно того, как я мог правильно читать данные внутри анклава. PS: анклав Intel SGX не поддерживает библиотеки сериализации.
Я тоже задавал аналогичный вопрос здесь, но не нашел реального полезного ответа для моего маленького мозга. https://github.com/intel/linux-sgx/issues/229
node
сfwrite
, которая не будет работать при чтении из другого процесса. Кроме того, почему слепки? Почему бы не использовать правильный тип указателя? Это EDL ограничено? - person Margaret Bloom   schedule 24.03.2018