我有一个vector<vector <string>> a
;我怎样才能将它传递到飞地?我如何声明 edl 函数。
非常感谢应用程序、edl 和 enclave 的示例函数声明。
我知道这一点:SGX Enclave 边缘函数的 C++ 参数 https://stackoverflow.com/questions/41901884/c-arguments-to-sgx-enclave-edge-functions.
一个样品甚至可以通过vector<string>
对我来说没问题。
更新1:
我想出了这个:
App.cpp
const char *convert(const std::string & s)
{
return s.c_str();
}
vector<string> members_data;
member_data.push_back("apple");
member_data.push_back("orange"); //just for sample
std::vector<const char*> vc;
std::transform(members_data.begin(), members_data.end(), std::back_inserter(vc), convert);
edl:
trusted {
public void ecall_receive_vector([in, size=len] const char **arr, size_t len);
};
enclave
void ecall_receive_vector(const char *arr[], size_t len)
{
vector<string> v(arr, arr+len);
printf("%s\n", v[2].c_str());
}
但是enclave没有接收到任何数据,程序编译完美,没有错误。有人可以帮忙吗? printf 是示例 ocall。