Skip to content
SDK for developing enclaves
Branch: master
Clone or download
oeciteam and mikbras Merge #2025
2025: Part I: Replace hand-written edge routines r=mikbras a=mikbras

This PR establishes the infrastructure for replacing hand-written edge functions with EDL functions. It does the following.
1. Defines **internal.edl** with two initial functions:
    - **oe_internal_ping_ecall()**
    - **oe_internal_ping_ocall()**
2. Adds **cmake** rules for generating trusted and untrusted edger8r routines.
3. Adds wrappers to rename the generated **ecall** and **ocall** tables.
    - **host/sgx/internal_u_wrapper.c**
    - **enclave/core/sgx/internal_t_wrapper.c**
4. Registers the new tables as part of enclave initialization.
    - **oe_register_internal_ecall_function_table()**
    - **oe_register_internal_ocall_function_table()**

**Part II** of this PR will rework handwritten functions to use EDL.

Issue #2008

Co-authored-by: Mike Brasher <>
Latest commit 3dc3c9f Jul 15, 2019
Type Name Latest commit message Commit time
Failed to load latest commit information.
.jenkins Merge #2012 Jul 2, 2019
3rdparty [3rdparty][libcxx] Add the remaining new tests from the upgrade from … Jul 3, 2019
cmake [CMAKE] Replace special characters in testcase name Jul 5, 2019
common grammar Jul 2, 2019
debugger Fixes: Add size field. Initialize debug_enclave member. Jul 12, 2019
docs Fix docker container build instructions for SGX (non-DCAP) scenarios. Jul 12, 2019
enclave captitalization Jul 2, 2019
host Merge #2025 Jul 15, 2019
include Merge #2025 Jul 15, 2019
libc Merge branch 'user/hegatta/arm-trustzone-stage1' into user/hegatta/ar… Jun 25, 2019
libcxx Build enclaves on Windows using clang cross compilation (phase 1) Dec 28, 2018
pkgconfig rename posix to syscall. Jun 7, 2019
prereqs Removed SGX1FLC relevant files from prereqs folder. Jan 15, 2019
samples AttestedTLS sample: added a note to describe the need to link to libo… Jun 26, 2019
scripts Update docs and ansible to use new Intel SGX DCAP 1.2 driver. Jul 12, 2019
syscall Merge #1966 #1967 #1982 Jun 20, 2019
tests Fixes: Add size field. Initialize debug_enclave member. Jul 12, 2019
tools Updated oesgx to be current Jun 26, 2019
.check-license.ignore Do not attempt to check for a license on a submodule. May 22, 2019
.clang-format Update .clang-format to prioritize multi-line param functions Feb 27, 2018
.cspellignore Rename oe_identity_t.author_id to signer_id Aug 29, 2018
.gitattributes Remove merge=union attributes Oct 9, 2018
.gitignore AttestedTLS sample: replaced dynamically key generation with static ones Jun 22, 2019
.gitmodules Fix .gitmodules. Jun 28, 2019 Update GettingStartedDocs and Jul 11, 2019
CMakeGraphVizOptions.cmake Updated and cleaned cmake graph to reflect crypto changes. Jun 3, 2019
CMakeLists.txt PR feedback: Move debugrt under debugger. Jul 1, 2019
CMakeSettings.json Simplify Visual Studio 2017 configurations Jan 4, 2019
LICENSE Initial commit Aug 29, 2017 Update all references to old location of repo Jun 19, 2019
THIRD_PARTY_NOTICES Add getopt_long Windows implementation Mar 28, 2019
VERSION Bump version to v0.7.0 Jun 18, 2019
bors.toml Disallow bors r+ on PRs with the label "do not merge" Feb 7, 2019

Open Enclave SDK

Join the chat at


Open Enclave (OE) is an SDK for building enclave applications in C and C++. An enclave application partitions itself into two components (1) An untrusted component (called the host) and (2) A trusted component (called the enclave). An enclave is a secure container whose memory is protected from entities outside the enclave. These protections allow enclaves to perform secure computations with assurances that secrets will not be compromised.

This SDK is a fully open-source and transparent project, which plans to generalize enclave application models across enclave implementations from different hardware vendors. It's a non-vendor specific solution that supports enclave applications both on Linux and Windows platforms.

The current implementation of Open Enclave is built on Intel Software Guard Extensions (SGX), other enclave architectures (such as solutions from AMD or ARM) will be added in the future. This public preview focuses on the Linux platform.

Getting Started

If you would like to start developing apps with the preview Open Enclave SDK release, start here for instructions to install and use the SDK package:

If you would like to modify and build the Open Enclave SDK from sources, refer to the documents for getting started.


This project welcomes contributions and suggestions. Most contributions require you to agree to a Contributor License Agreement (CLA) declaring that you have the right to, and actually do, grant us the rights to use your contribution. For details, see Contributing to Open Enclave.

This project has adopted the Microsoft Open Source Code of Conduct. For more information see the Code of Conduct FAQ or contact with any additional questions or comments.

See the Development Guide for details about contributing code to this project, such as coding style and development processes.


This project is released under the MIT License.

You can’t perform that action at this time.