Release Builds

1. Introduction

Task enclaves need to be built and signed in special ways to be used in a production environment. When you want to use Sharemind HI in production, we will share the necessary additional build environment and instructions with you. This page provides a high-level overview.

2. Reproducible Builds

Task enclaves should be build in a reproducible way, so source code auditors and task enclave developers produce the same task enclave binaries, with the same MRENCLAVE value.

3. Building

Make sure to point your task enclave project to the production Sharemind HI release. In the standard template this is done through the sharemind-hi_ROOT CMake variable in the config.local file. Then, if you set you SGX_MODE or CMAKE_BUILD_MODE manually, make sure they have the values HW and Release, respectively. Then you can build your packages as usual.

make -j$(nproc)
# Use either one of these:
cpack -G DEB
cpack -G TGZ

4. Signing

Right now, the Sharemind HI SDK only supports the two-phase signing process (Intel® SGX Developer Reference, p 22). Hence, in the release mode cpack will only create packages with the unsigned enclaves, which you can then separately sign with your production enclave signing key.

5. Deployment

The Sharemind HI Server is distributed via the Sharemind APT repository. You don’t need to follow this way when deploying production task enclaves to the target machine.