Я генерирую случайное число в Enclave2 и хочу передать его ненадежному коду через другой Enclave1. Я использую местную аттестацию, где защищенный канал, Анклав для вызова Enlave. Обмен сообщениями и закрытие сеанса выполняется между Enclave1 и Enclave2.
Я использую ОС Windows, и мое случайное число определено в Enclave2.cpp
....
void random_number(int *a)
{
sgx_read_rand((unsigned char *)a, 4);
}
...
Здесь я возвращаю случайное число из Enclave2 в свою основную программу (app.cpp). Однако я хочу вернуть сгенерированное случайное число, сделав это через Анклав 1.
void input_from_user()
{...
{
....
Enclave2_random_number(e2_enclave_id, &a);
..
Nodes[j][1] = (abs(a) % 4) + 1;
..
}
}
Здесь - раздел edl Enclave1 и Enclave2 соответственно.
enclave {
include "sgx_eid.h"
from "../LocalAttestationCode/LocalAttestationCode.edl" import *;
trusted{
public uint32_t test_create_session(sgx_enclave_id_t src_enclave_id, sgx_enclave_id_t dest_enclave_id);
public uint32_t test_enclave_to_enclave_call(sgx_enclave_id_t src_enclave_id, sgx_enclave_id_t dest_enclave_id);
public uint32_t test_message_exchange(sgx_enclave_id_t src_enclave_id, sgx_enclave_id_t dest_enclave_id);
public uint32_t test_close_session(sgx_enclave_id_t src_enclave_id, sgx_enclave_id_t dest_enclave_id);
};
};
enclave {
include "sgx_eid.h"
from "../LocalAttestationCode/LocalAttestationCode.edl" import *;
trusted{
public uint32_t test_create_session(sgx_enclave_id_t src_enclave_id, sgx_enclave_id_t dest_enclave_id);
public uint32_t test_enclave_to_enclave_call(sgx_enclave_id_t src_enclave_id, sgx_enclave_id_t dest_enclave_id);
public uint32_t test_message_exchange(sgx_enclave_id_t src_enclave_id, sgx_enclave_id_t dest_enclave_id);
public void random_number([out] int *a);
public uint32_t test_close_session(sgx_enclave_id_t src_enclave_id, sgx_enclave_id_t dest_enclave_id);
};
};