Я пытаюсь передать два целых числа в анклав SGX, объединить их и затем вернуть результат обратно в приложение. Однако при компиляции кода ничего не происходит, кроме создания анклава. Ошибка отсутствует, и она, похоже, никогда не достигает функции ECALL.
Если кому-то известно об учебнике, который делает это, и я могу использовать его в качестве справки, то это будет очень признательно.
EDL:
enclave {
from "sgx_tae_service.edl" import *;
/* enum definition */
enum TEE_ERROR {
TEE_ERROR_INVALID_SIGNATURE = 0,
TEE_ERROR_INVALID_COUNTER = 1,
TEE_ERROR_INVALID_SECRET = 2
};
trusted {
/* define ECALLs here. */
public int in_enclave([in] int* a, [in] int* b);
};
untrusted {
/* define OCALLs here. */
void ocall_print_int([out] int* i);
};
};
Анклав. cpp
int in_enclave(int* a, int* b){
ocall_print("In the Enclave.");
int result =0;
result = a + b;
ocall_print_int(&result);
}
Приложение cpp
int test(void) {
if (initialize_enclave(&global_eid, "enclave.token", "enclave.signed.so") < 0) {
std::cout << "Fail to initialize enclave." << std::endl;
return 1;
}else{
std::cout<<"Enclave made. "<<"\n";
}
int a =34, b =23,point = 0;
in_enclave(global_eid,&point,&a,&b);
return 0; }