Added support for the Key Separation and Sharing (KSS) feature.
Provided a set of new encryption and decryption functions such as sgx_hmac256_*.
Provided a new untrusted API: sgx_get_target_info.
Provided a new untrusted API: sgx_create_enclave_from_buffer_ex.
Updated the cryptography library and Architecture Enclaves to use Intel(R) Integrated
Performance Primitives Cryptography 2019 Update 1.
Fixed bugs.
Signed-off-by: Li, Xun <xun.li@intel.com>
When this file is parsed on its own for syntactic correctness (via
bazel's parse_headers feature), the use of SIGSET_BYTE_SIZE in
$SIGSET_BYTE_SIZE fails to parse as $(64/8). This simplifies the
expression so that $8 is syntactically correct.
Signed-off-by: Dionna Glaze <dionnaglaze@google.com>
Header files that contain "using namespace std;" do not work well in
codebases that have custom implementations for common classes such as
"string". This is a C++ Core guideline (SF.7).
Signed-off-by: Dionna Glaze <dionnaglaze@google.com>
Support for Ubuntu 18.04 LTS 64-bit Desktop and Server version
Provided a new set of SGX common loader APIs in sgx_enclave_common.h
Provided the sample code for Switchless Call
Provided a new API in tcrypto: sgx_ecc256_calculate_pub_from_priv
sgx_create_enclave API will ignore the parameter of launch token and will not update it after function successfully returns
Change Intel SGX PSW installer for Ubuntu by
- Using .deb installer.
- Using name libsgx-enclave-common_{version string}-1_amd64.deb.
- Installing Intel SGX Enclave Common loader library.
Bug fixes
Signed-off-by: Li, Xun <xun.li@intel.com>
The sgx_uswitchless.h header is used in both trusted and untrusted
contexts from transitive inclusions. The sgx_urts.h header is strictly
an untrusted domain header. Users that depend on the untrusted runtime
should not depend on the transitive include behavior to provide
sgx_urts.h.
Signed-off-by: Dionna Glaze <dionnaglaze@google.com>
The libc implementation newlib defines these symbols and causes a compiler error. Per the standard (ISO 9899:1999 reserved identifiers section), any identifier beginning with two underscores or an underscore and a capital letter is reserved for libc. The definitions are not used anywhere in the source code either.
Signed-off-by: Dionna Glaze <dionnaglaze@google.com>
Currently we seed random number generator with timestamp in seconds.
Because of this we have to insert 1 second delay in each testcase to
ensure the randomness, which prevents us from testing applications
effeciently.
Simulation mode is not supposed to be used in production, but
developing applications on environtment without SGX HW is still common.
So let's seed with timestamp in nanoseconds in simulation mode.
Signed-off-by: Naoya Horiguchi <n-horiguchi@ah.jp.nec.com>
The load_regs assembly function uses its caller's frame pointer.
C/C++ compilers are allowed to make optimizations to their
representation of the stack, and frequently omit the frame pointer.
The functions _EEXIT in t_instructions.cpp and _SE3 in
u_instructions.cpp both call load_regs, and thus should be the only ones
that should be affected by deoptimization.
Even -O0 may omit the frame pointer (indeed we found this to be the case
when compiling with GCC 7.3.0), so this change also makes that requirement
explicit by by means of -fno-omit-frame-pointer.
The analogous attribute for -fno-omit-frame-pointer is not available in
clang, so the clang version of the LOAD_REGS_ATTRIBUTES is simply
[[clang:optnone]].
An added bonus of switching the -O0 flag over to an attribute in source
code is that alternate build tools are easier to port to :)
Signed-off-by: Dionna Glaze <dionnaglaze@google.com>
Document that _mm_pause definition requires -ffreestanding.
Guard the definition of __STDC_FORMAT_MACROS with #ifndef/#endif.
Consistently refer to std::hex with std:: qualification in SignTool.
Signed-off-by: Dionna Glaze <dionnaglaze@google.com>
CodeGen.ml checks whether a plugin is available and if so, invoked the plugin to emit edge routines.
Signed-off-by: Anand Krishnamoorthi <anakrish@microsoft.com>