14 #error "enclave.h and host.h must not be included in the same compilation unit."    17 #include <openenclave/bits/asym_keys.h>    18 #include "bits/defs.h"    37 #define sscanf_s sscanf    46 #if defined(_ARM_) || defined(_M_ARM) || defined(__arm__) || \    47     defined(__thumb__) || defined(__aarch64__)    73     bool is_first_handler,
   241 void __oe_assert_fail(
   257 #define oe_assert(EXPR)                                                \   261             __oe_assert_fail(#EXPR, __FILE__, __LINE__, __FUNCTION__); \   264 #define oe_assert(EXPR)   267 #if (OE_API_VERSION < 2)   268 #error "Only OE_API_VERSION of 2 is supported"   270 #define oe_get_report oe_get_report_v2   298     const uint8_t* report_data,
   299     size_t report_data_size,
   300     const void* opt_params,
   301     size_t opt_params_size,
   302     uint8_t** report_buffer,
   303     size_t* report_buffer_size);
   312 #if (OE_API_VERSION < 2)   313 #error "Only OE_API_VERSION of 2 is supported"   315 #define oe_get_target_info oe_get_target_info_v2   339     const uint8_t* report,
   341     void** target_info_buffer,
   342     size_t* target_info_size);
   368     const uint8_t* report,
   390     const uint8_t* report,
   394 #if (OE_API_VERSION < 2)   395 #error "Only OE_API_VERSION of 2 is supported"   397 #define oe_get_seal_key_by_policy oe_get_seal_key_by_policy_v2   425     uint8_t** key_buffer,
   426     size_t* key_buffer_size,
   428     size_t* key_info_size);
   430 #if (OE_API_VERSION < 2)   431 #error "Only OE_API_VERSION of 2 is supported"   433 #define oe_get_seal_key oe_get_seal_key_v2   458     const oe_asymmetric_key_params_t* key_params,
   459     uint8_t** key_buffer,
   460     size_t* key_buffer_size,
   462     size_t* key_info_size);
   481     const oe_asymmetric_key_params_t* key_params,
   482     const uint8_t* key_info,
   483     size_t key_info_size,
   484     uint8_t** key_buffer,
   485     size_t* key_buffer_size);
   509     const oe_asymmetric_key_params_t* key_params,
   510     uint8_t** key_buffer,
   511     size_t* key_buffer_size,
   513     size_t* key_info_size);
   532     const oe_asymmetric_key_params_t* key_params,
   533     const uint8_t* key_info,
   534     size_t key_info_size,
   535     uint8_t** key_buffer,
   536     size_t* key_buffer_size);
   549     size_t key_buffer_size,
   551     size_t key_info_size);
   573     const uint8_t* key_info,
   574     size_t key_info_size,
   575     uint8_t** key_buffer,
   576     size_t* key_buffer_size);
   635     const unsigned char* subject_name,
   636     uint8_t* private_key,
   637     size_t private_key_size,
   639     size_t public_key_size,
   640     uint8_t** output_cert,
   641     size_t* output_cert_size);
   681     uint8_t* cert_in_der,
   682     size_t cert_in_der_len,
 void * oe_host_malloc(size_t size)
Allocate bytes from the host's heap. 
void oe_free_report(uint8_t *report_buffer)
Frees a report buffer obtained from oe_get_report. 
enum _oe_seal_policy oe_seal_policy_t
This enumeration type defines the policy used to derive a seal key. 
oe_result_t oe_get_public_key(const oe_asymmetric_key_params_t *key_params, const uint8_t *key_info, size_t key_info_size, uint8_t **key_buffer, size_t *key_buffer_size)
Returns a public key that is associated with the identity of the enclave. 
This file defines the types used by the OE SDK. 
void oe_host_free(void *ptr)
Release allocated memory. 
oe_result_t oe_random(void *data, size_t size)
Generate a sequence of random bytes. 
Structure to hold the parsed form of a report. 
Definition: report.h:112
oe_result_t oe_get_private_key_by_policy(oe_seal_policy_t seal_policy, const oe_asymmetric_key_params_t *key_params, uint8_t **key_buffer, size_t *key_buffer_size, uint8_t **key_info, size_t *key_info_size)
Returns a private key that is associated with the identity of the enclave and the specified policy...
Structure to represent the identity of an enclave. 
Definition: report.h:80
This file defines structures and options for SGX evidence generation and verification. 
void oe_free_target_info(void *target_info)
Frees target info obtained from oe_get_target_info. 
void * oe_host_calloc(size_t nmemb, size_t size)
Allocate zero-filled bytes from the host's heap. 
oe_result_t oe_verify_report(const uint8_t *report, size_t report_size, oe_report_t *parsed_report)
Verify the integrity of the report and its signature. 
oe_result_t oe_get_report_v2(uint32_t flags, const uint8_t *report_data, size_t report_data_size, const void *opt_params, size_t opt_params_size, uint8_t **report_buffer, size_t *report_buffer_size)
Get a report signed by the enclave platform for use in attestation. 
This file defines data structures to set up vectored exception handlers in the enclave. 
oe_result_t oe_get_seal_key_v2(const uint8_t *key_info, size_t key_info_size, uint8_t **key_buffer, size_t *key_buffer_size)
Get a symmetric encryption key from the enclave platform using existing key information. 
This file defines Open Enclave return codes (results). 
enum _oe_result oe_result_t
This enumeration type defines return codes for Open Enclave functions. 
void oe_free_attestation_certificate(uint8_t *cert)
Free the given cert. 
char * oe_host_strndup(const char *str, size_t n)
Make a heap copy of a string. 
uint64_t(* oe_vectored_exception_handler_t)(oe_exception_record_t *exception_context)
oe_vectored_exception_handler_t - Function pointer for a vectored exception handler in an enclave...
Definition: exception.h:169
oe_result_t oe_verify_attestation_certificate(uint8_t *cert_in_der, size_t cert_in_der_len, oe_identity_verify_callback_t enclave_identity_callback, void *arg)
oe_verify_attestation_certificate 
void oe_free_key(uint8_t *key_buffer, size_t key_buffer_size, uint8_t *key_info, size_t key_info_size)
Frees the given key and/or key info. 
oe_result_t oe_generate_attestation_certificate(const unsigned char *subject_name, uint8_t *private_key, size_t private_key_size, uint8_t *public_key, size_t public_key_size, uint8_t **output_cert, size_t *output_cert_size)
oe_generate_attestation_certificate. 
void oe_free_seal_key(uint8_t *key_buffer, uint8_t *key_info)
Frees a key and/or key info. 
This file defines the properties for an enclave. 
oe_result_t oe_get_private_key(const oe_asymmetric_key_params_t *key_params, const uint8_t *key_info, size_t key_info_size, uint8_t **key_buffer, size_t *key_buffer_size)
Returns a private key that is associated with the identity of the enclave. 
oe_result_t oe_remove_vectored_exception_handler(oe_vectored_exception_handler_t vectored_handler)
Remove an existing vectored exception handler. 
oe_result_t oe_get_public_key_by_policy(oe_seal_policy_t seal_policy, const oe_asymmetric_key_params_t *key_params, uint8_t **key_buffer, size_t *key_buffer_size, uint8_t **key_info, size_t *key_info_size)
Returns a public key that is associated with the identity of the enclave and the specified policy...
bool oe_is_within_enclave(const void *ptr, size_t size)
Check whether the given buffer is strictly within the enclave. 
oe_enclave_t * oe_get_enclave(void)
Obtains the enclave handle. 
void * oe_host_realloc(void *ptr, size_t size)
Reallocate bytes from the host's heap. 
oe_result_t oe_get_target_info_v2(const uint8_t *report, size_t report_size, void **target_info_buffer, size_t *target_info_size)
Extracts additional platform specific data from the report and writes it to target_info_buffer. 
oe_result_t oe_add_vectored_exception_handler(bool is_first_handler, oe_vectored_exception_handler_t vectored_handler)
OP-TEE provides single-threaded enclaves only, and its ELF loader does not support thread-local reloc...
oe_result_t oe_parse_report(const uint8_t *report, size_t report_size, oe_report_t *parsed_report)
Parse an enclave report into a standard format for reading. 
This file defines functions to load the optional modules available. 
bool oe_is_outside_enclave(const void *ptr, size_t size)
Check whether the given buffer is strictly outside the enclave. 
oe_result_t oe_get_seal_key_by_policy_v2(oe_seal_policy_t seal_policy, uint8_t **key_buffer, size_t *key_buffer_size, uint8_t **key_info, size_t *key_info_size)
Get a symmetric encryption key derived from the specified policy and coupled to the enclave platform...
struct _oe_enclave oe_enclave_t
This is an opaque handle to an enclave returned by oe_create_enclave(). 
Definition: types.h:144
void oe_abort(void) OE_NO_RETURN
Abort execution of the enclave. 
oe_result_t(* oe_identity_verify_callback_t)(oe_identity_t *identity, void *arg)
identity validation callback type 
Definition: enclave.h:655