Skip to main content

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

Lab machines & workflow

  • linux: used by the Lab machines (SGX and SEV)
  • spdx: GitHub Actions to find OSI license (written in Python)