2

私は持っていvector<vector <string>> aます; どうすればそれをエンクレーブに渡すことができますか? edl 関数の宣言方法。app、edl、および enclave の関数宣言のサンプルは大歓迎です。

私はこれを認識しています: C++ Arguments to SGX Enclave Edge Functions

Aでも合格するサンプルvector<string>は、私にとっては問題ありません。

update1: 私はこれを思いつきました:

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);
};

飛び地

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 です。

4

1 に答える 1