/openenclave

SDK for developing enclaves

Primary LanguageCMIT LicenseMIT

Open Enclave SDK

Bors enabled Build Status Join the chat at https://gitter.im/openenclave/community

Introduction

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 protected memory region that provides confidentiality for data and code execution. It is an instance of a Trusted Execution Environment (TEE) which is usually secured by hardware, for example, Intel Software Guard Extensions (SGX).

This SDK aims to generalize the development of enclave applications across TEEs from different hardware vendors. While the current implementation is focused on Intel SGX, support for ARM TrustZone is already under development. As an open source project, this SDK also strives to provide a transparent solution that is agnostic to specific vendors, service providers and choice of operating systems.

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 run Ubuntu 16.04 or Ubuntu 18.04 in a Hyper-V VM on SGX capable hardware, see Setting up a Linux Hyper-V VM on Windows with SGX Support.

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

Contributing

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 opencode@microsoft.com 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. Also see our Governance Model for how we maintain the project.

Licensing

This project is released under the MIT License.