Open Enclave  0.13.0
Macros | Typedefs | Functions
enclave.h File Reference

This file defines the programming interface for developing enclaves. More...

#include <openenclave/bits/asym_keys.h>
#include "bits/defs.h"
#include "bits/evidence.h"
#include "bits/exception.h"
#include "bits/fs.h"
#include "bits/module.h"
#include "bits/properties.h"
#include "bits/result.h"
#include "bits/types.h"
Include dependency graph for enclave.h:

Go to the source code of this file.

Macros

#define sscanf_s   sscanf
 
#define oe_assert(EXPR)
 Evaluates assertion. More...
 
#define oe_get_report   oe_get_report_v2
 
#define oe_get_target_info   oe_get_target_info_v2
 
#define oe_get_seal_key_by_policy   oe_get_seal_key_by_policy_v2
 
#define oe_get_seal_key   oe_get_seal_key_v2
 

Typedefs

typedef oe_result_t(* oe_identity_verify_callback_t) (oe_identity_t *identity, void *arg)
 identity validation callback type More...
 

Functions

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 relocations. More...
 
oe_result_t oe_remove_vectored_exception_handler (oe_vectored_exception_handler_t vectored_handler)
 Remove an existing vectored exception handler. More...
 
bool oe_is_within_enclave (const void *ptr, size_t size)
 Check whether the given buffer is strictly within the enclave. More...
 
bool oe_is_outside_enclave (const void *ptr, size_t size)
 Check whether the given buffer is strictly outside the enclave. More...
 
void * oe_host_malloc (size_t size)
 Allocate bytes from the host's heap. More...
 
void * oe_host_realloc (void *ptr, size_t size)
 Reallocate bytes from the host's heap. More...
 
void * oe_host_calloc (size_t nmemb, size_t size)
 Allocate zero-filled bytes from the host's heap. More...
 
void oe_host_free (void *ptr)
 Release allocated memory. More...
 
char * oe_host_strndup (const char *str, size_t n)
 Make a heap copy of a string. More...
 
void oe_abort (void) OE_NO_RETURN
 Abort execution of the enclave. More...
 
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. More...
 
void oe_free_report (uint8_t *report_buffer)
 Frees a report buffer obtained from oe_get_report. More...
 
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. More...
 
void oe_free_target_info (void *target_info)
 Frees target info obtained from oe_get_target_info. More...
 
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. More...
 
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. More...
 
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. More...
 
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. More...
 
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. More...
 
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. More...
 
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. More...
 
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. More...
 
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. More...
 
void oe_free_seal_key (uint8_t *key_buffer, uint8_t *key_info)
 Frees a key and/or key info. More...
 
oe_enclave_toe_get_enclave (void)
 Obtains the enclave handle. More...
 
oe_result_t oe_random (void *data, size_t size)
 Generate a sequence of random bytes. More...
 
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. More...
 
void oe_free_attestation_certificate (uint8_t *cert)
 Free the given cert. More...
 
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 More...
 

Detailed Description

This file defines the programming interface for developing enclaves.