| /* SPDX-License-Identifier: GPL-2.0 */ | |
| /* | |
| * Copyright(c) 2016-20 Intel Corporation. | |
| */ | |
| #ifndef MAIN_H | |
| #define MAIN_H | |
| #define ENCL_HEAP_SIZE_DEFAULT 4096 | |
| struct encl_segment { | |
| void *src; | |
| off_t offset; | |
| size_t size; | |
| unsigned int prot; | |
| unsigned int flags; | |
| bool measure; | |
| }; | |
| struct encl { | |
| int fd; | |
| void *bin; | |
| off_t bin_size; | |
| void *src; | |
| size_t src_size; | |
| size_t encl_size; | |
| off_t encl_base; | |
| unsigned int nr_segments; | |
| struct encl_segment *segment_tbl; | |
| struct sgx_secs secs; | |
| struct sgx_sigstruct sigstruct; | |
| }; | |
| extern unsigned char sign_key[]; | |
| extern unsigned char sign_key_end[]; | |
| void encl_delete(struct encl *ctx); | |
| bool encl_load(const char *path, struct encl *encl, unsigned long heap_size); | |
| bool encl_measure(struct encl *encl); | |
| bool encl_build(struct encl *encl); | |
| uint64_t encl_get_entry(struct encl *encl, const char *symbol); | |
| int sgx_enter_enclave(void *rdi, void *rsi, long rdx, u32 function, void *r8, void *r9, | |
| struct sgx_enclave_run *run); | |
| #endif /* MAIN_H */ |