本文介绍了SGX项目的目录结构,方便贯通基础的SGX开发思路,借号内容为SGX项目的关键文件,也就是我们开发或者科研需要修改的文件,以SampleEnclave项目为例,这个项目是一个最初始化的SGX项目
1、App文件夹是作为非安全区的代码编写区,里面有非安全的代码编写文件App.cpp
2、Enclave文件夹是安全区代码区的编写区,包含安全区Enclave的代码编写区Enclave.cpp和Ecall、Ocall函数的实现
3、Include文件夹是一些用户自定义的头文件编写区
4、app是make编译后生成的可执行文件
5、enclave.signed.so是未经过数字签名的Enclave库文件,它包含了Enclave的二进制代码和数据,但没有经过数字签名
6、enclave.signed.so是经过数字签名的Enclave库文件,它包含了Enclave的二进制代码和数据,并且已经经过数字签名
7、makefile文件是make编译项目的配置文件
8、README.txt文件是项目的介绍
1、Edger8rSyntax文件夹提供一些可信工具
2、TrustedLibrary文件夹可信函数库
3、App.cpp是整个项目的入口文件和非安全区的代码编写文件,是我们主要开发的文件,里面在main函数中来调用Ecall函数和Ocall函数,完成安全区Enclave的创建和销毁
4、App.h文件是应用程序中的不可信部分代码的头文件,定义了一些宏常量和函数声明
1、Edger8rSyntax文件夹提供一些可信工具
2、TrustedLibrary文件夹可信函数库
3、Enclave.config.xml文件是Enclave的配置文件,定义了Enclave的元数据信息
4、 Enclave.cpp文件是应用程序中的可信部分代码,在里面实现自己的可信函数,是主要编写的区域
5、 Enclave.h文件是应用程序中的可信部分代码的头文件,包含了Enclave的接口定义和数据结构,定义了一些宏常量和函数声明,在Enclave.cpp中实现自己的可信函数后,要把可信函数名添加到这里面,相当于一个接口定义的感觉
6、Enclave.edl文件是Enclave的接口定义文件,ECALL函数接口和OECALL函数接口,trusted中定义ECALL函数接口,untrusted中定义OECALL函数接口,相当于一个区分的感觉
7、 Enclave.lds文件定义了一些Enclave可执行文件信息
8、 Enclave_private.pem文件是SGX生成的私钥
1、user_types.h文件是作为用户自定义的头文件编写区