项目目录结构

SampleEnclave为例,目录结构如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
.
├── App
│   ├── App.cpp
│   ├── App.h
│   ├── Edger8rSyntax
│   │   ├── Arrays.cpp
│   │   ├── Functions.cpp
│   │   ├── Pointers.cpp
│   │   └── Types.cpp
│   └── TrustedLibrary
│   ├── Libc.cpp
│   ├── Libcxx.cpp
│   └── Thread.cpp
├── Enclave
│   ├── Edger8rSyntax
│   │   ├── Arrays.cpp
│   │   ├── Arrays.edl
│   │   ├── Functions.cpp
│   │   ├── Functions.edl
│   │   ├── Pointers.cpp
│   │   ├── Pointers.edl
│   │   ├── Types.cpp
│   │   └── Types.edl
│   ├── Enclave.config.xml
│   ├── Enclave.cpp
│   ├── Enclave.edl
│   ├── Enclave.h
│   ├── Enclave.lds
│   ├── Enclave_private_test.pem
│   └── TrustedLibrary
│   ├── Libc.cpp
│   ├── Libc.edl
│   ├── Libcxx.cpp
│   ├── Libcxx.edl
│   ├── Thread.cpp
│   └── Thread.edl
├── Include
│   └── user_types.h
├── Makefile
└── README.txt
  • App目录:存放应用程序中的不可信代码部分
    • App.cpp文件:应用程序中的不可信部分代码,其中包括了创建Enclave及销毁Enclave的代码,也定义了一些相关的返回码供使用者查看Enclave程序的执行状态。其中的main函数是整个项目的入口函数。
    • App.h文件:应用程序中的不可信部分代码的头文件,定义了一些宏常量和函数声明。
    • Edger8rSyntax文件夹:提供了一些工具。
    • TrustedLibrary文件夹:提供了一些函数库。
  • Enclave目录:存放应用程序中的可信代码部分和可信与不可信代码接口文件
    • Enclave.config.xml文件:Enclave的配置文件,定义了Enclave的元数据信息。
    • Enclave.cpp文件:应用程序中的可信部分代码,包括了可信函数的实现。
    • Enclave.h文件:应用程序中的可信部分代码的头文件,定义了一些宏常量和函数声明。
    • Enclave.edl文件:Enclave的接口定义文件,定义了不可信代码调用可信代码的ECALL函数接口和可信代码调用不可信代码的OCALL函数接口,trusted{}中定义了ECALL函数接口,untrusted{}中定义了OCALL函数接口。
    • Enclave.lds文件:定义了一些Enclave可执行文件信息。
    • Enclave_private_test.pem文件:SGX生成的私钥。
    • Edger8rSyntax文件夹:提供了一些工具。
    • TrustedLibrary文件夹:提供了一些函数库。
  • Include目录:存放被Enclave接口定义文件Enclave.edl使用的头文件,包括一些宏定义
    • user_types.h文件:定义了用户自定义的类型
  • Makefile文件:项目的编译文件,定义了项目的编译信息