我有一个这样的 C++ 结构:
struct node
{
string splitOn;
string label;
bool isLeaf;
vector<string> childrenValues;
vector<node*> children;
};
我想将它从应用程序传递或读取到英特尔 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);
教育署:
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:英特尔 SGX enclave 不支持任何序列化库。
我也在这里问过类似的问题,但对我的小脑袋没有真正有用的答案。 https://github.com/intel/linux-sgx/issues/229