1 /* SPDX-License-Identifier: GPL-2.0 */ 2 /* 3 * Copyright(c) 2016-20 Intel Corporation. 4 */ 5 6 #ifndef MAIN_H 7 #define MAIN_H 8 9 #define ENCL_HEAP_SIZE_DEFAULT 4096 10 11 struct encl_segment { 12 void *src; 13 off_t offset; 14 size_t size; 15 unsigned int prot; 16 unsigned int flags; 17 bool measure; 18 }; 19 20 struct encl { 21 int fd; 22 void *bin; 23 off_t bin_size; 24 void *src; 25 size_t src_size; 26 size_t encl_size; 27 off_t encl_base; 28 unsigned int nr_segments; 29 struct encl_segment *segment_tbl; 30 struct sgx_secs secs; 31 struct sgx_sigstruct sigstruct; 32 }; 33 34 extern unsigned char sign_key[]; 35 extern unsigned char sign_key_end[]; 36 37 void encl_delete(struct encl *ctx); 38 bool encl_load(const char *path, struct encl *encl, unsigned long heap_size); 39 bool encl_measure(struct encl *encl); 40 bool encl_build(struct encl *encl); 41 uint64_t encl_get_entry(struct encl *encl, const char *symbol); 42 43 int sgx_enter_enclave(void *rdi, void *rsi, long rdx, u32 function, void *r8, void *r9, 44 struct sgx_enclave_run *run); 45 46 #endif /* MAIN_H */ 47