Introduction
In this guide, you'll find a walkthrough of the Enarx repositories on GitHub. The outline of the Enarx repositories are:
Main crates
- enarx:
- src: backends (code that runs in the host side)
- internal: wasmldr, shin-sev, shin-sgx
- examples: tcp_server
- tests
- helper
- sallyport: communication channel between untrusted host and guest: mostly syscalls.
Secondary crates
- ctr0stack: read write stack from Linux kernel for things like environment variables
- vsdo: used by SGX to enter an enclave
- rct1: load binary from disk (static or dynamic)
- xsave: save x86 cpu state
- flagset: handle flags
- sgx: set of data structures related to SGX
- mmarinus: Rust mmap (memory map) wrapper (runtime-safe)
- iocuddle: Rust ioctl (input/output control) wrapper (runtime-safe)
- noted: macro to generate notes (define size of enclave, etc)
Helper crates
- lset: types for measuring linear sets
- nbytes: define constants
- uabs: calculates the absolute value of input and returns unsigned integer
- signrel: maps relationships between integers that only differ by signedness