3. A Guide to Keystone Components¶
The Keystone repository (https://github.com/keystone-enclave/keystone) consists of a number of sub-components as gitmodules or directories. This is a brief overview of them.
Keystone bootrom, including trusted boot chain.
Linux buildroot. Builds a minimal working Linux image for our test platforms.
Contains read-the-docs formatted and hosted documentation, such as this article.
Unmodified toolchain for building riscv targets. Required to build all other components.
Prebuilt toolchains are available here <https://github.com/keystone-enclave/firesim-riscv-tools-prebuilt/releases>.
A loadable module for Keystone Enclave. Works in kernels >= 4.17
Linux kernel with riscv patches. We use 4.15 with patches for the loadable module support.
The proxy-kernel for machine-mode riscv. Trusted core component of Keystone, and includes the security monitor (in sm directory).
Qemu with riscv patches and minor modifications to better support PMP and Keystone needs for emulation. Our default testing platform.
Tools, libraries, and tests for building applications on Keystone.
A submodule that implements the default minimal Keystone runtime running in S-mode for enclaves.