我在Enclave2中生成一个随机数,并希望通过另一个Enclave1将其传递给不受信任的代码。我在安全通道使用本地证明,从Enclave到Enlave调用。在Enclave1到Enclave2之间执行消息交换和关闭会话。
我正在使用Windows操作系统,随机数字的定义在Enclave2.cpp中是
....
void random_number(int *a)
{
sgx_read_rand((unsigned char *)a, 4);
}
...
这是我将Enclave2中的随机数返回到主程序(app.cpp)的地方。但是,我想通过Enclave 1返回生成的随机数。
void input_from_user()
{...
{
....
Enclave2_random_number(e2_enclave_id, &a);
..
Nodes[j][1] = (abs(a) % 4) + 1;
..
}
}
在这里,分别是Enclave1和Enclave2的edl部分。
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);
};
};