Я хочу передать данные из одного анклава в другой, используя локальную аттестацию - PullRequest
0 голосов
/ 13 апреля 2019

Я генерирую случайное число в 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);

    };
};
...