Привет мир в C, используя SGX - PullRequest
0 голосов
/ 09 апреля 2019

Я заметил, что некоторые люди могут писать код SGX на С-коде. Я пытался сделать это, предположим, у меня есть следующий код. Тем не менее я не знаю, как написать Makefile, который может скомпилировать этот файл, так как я не нашел много информации в Интернете о том, как скомпилировать его.

main.c

#define ENCLAVE_FILE "enclave.signed.dll"
#define MAX_BUF_LEN 100
#include "sgx_urts.h"
#include "enclave_u.h"
#include "stdio.h"
#include <string>

int main()
{

    //Encalve starts
    sgx_enclave_id_t eid;
    sgx_status_t    ret = SGX_SUCCESS;
    sgx_launch_token_t token = { 0 };
    int updated = 0;
    char buffer[MAX_BUF_LEN] = "Hello world!";

    ret = sgx_create_enclave(ENCLAVE_FILE, SGX_DEBUG_FLAG, &token, &updated, &eid, NULL);

    if (ret != SGX_SUCCESS) {
        printf("\nApp: error %#x, failed to create enclave. \n", ret);
    }

    //Encalve starts


    // (ECALL will happen here).

    printf("\nApp: Buffertesrs:\n");

    printf("App: Buffer before ECALL: %s\n", buffer);

    encalveChangebuffer(eid, buffer, MAX_BUF_LEN);

    printf("App: Buffer before ECALL: %s\n", buffer);



}

encalve.c

#include "enclave_t.h"
#include "sgx_trts.h"
#include <stdio.h>
#include <string.h>

void encalveChangebuffer(char * buf, size_t len) {

    const char * secret = "Hello from Enclave 2";
    if (len > strlen(secret))
        memcpy(buf, secret, strlen(secret) + 1);
    else
        memcpy(buf, "false", strlen("false") + 1);

}

encalve.edl

enclave {
    trusted {
        /* define ECALLs here. */
        public void encalveChangebuffer([in,out,size=len] char * buf, size_t len);
    };

    untrusted {
        /* define OCALLs here. */
    };
};

Я ищу Makefile, который может компилировать код sgx c.

1 Ответ

0 голосов
/ 09 апреля 2019

Проверьте эту ссылку: Справочник разработчика SGX .

В нем есть раздел об инструменте Edger8r, в котором объясняется, как запустить этот инструмент для компиляции enclave.edl в кучу C-файлов. В нем также есть раздел о sgx_sign.exe, который необходим для создания подписанной DLL. Есть раздел «Файлы проекта анклавов», в котором перечислены все необходимые файлы и настройки инструмента сборки.

У меня нет ответов на все вопросы, но это должно послужить хорошей отправной точкой для создания вашего make-файла.

...