应用程序和 enclave 之间的可信桥和可信代理接口。此代码接口进/出 enclave。解析 EDL 文件并生成可信桥和可信代理文件(.c 和 .h 文件)的 Edger 工具(包含在构建环境中)。
可信桥:
对于 ECALL,可信桥接任务是确保编组结构不与 enclave 内存重叠。
[in]:当一个指向属性为in的不可信内存的指针传递给enclave时,可信桥在enclave内部分配内存,并将指针指向的内存从外部复制到enclave内存中。
[out]:当指向具有 out 属性的不受信任内存的指针传递给 enclave 时,受信任的桥在受信任的内存中分配一个缓冲区,将缓冲区内容归零以清除任何先前的秘密,并将指向该缓冲区的指针传递给受信任的函数. 可信函数返回后,可信桥将可信缓冲区的内容复制到不可信内存中。
可信代理
对于 OCALL,受信任的代理在外部堆栈上分配内存以传递编组结构并检查指针参数及其完整范围是否在 enclave 内。
[in]:当从 enclave(OCALL)传递指向具有 in 属性的可信内存的指针时,可信代理在 enclave 外部分配内存,并将指针指向的内存从 enclave 内部复制到不受信任的内存。
[out]:当一个指向具有 out 属性的可信内存的指针从飞地(OCALL)传递时,可信代理在不可信堆栈上分配一个缓冲区,并将指向该缓冲区的指针传递给不可信函数。不可信函数返回后,可信代理将不可信缓冲区的内容复制到可信内存中。