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 struct encl_segment { 10 off_t offset; 11 size_t size; 12 unsigned int prot; 13 unsigned int flags; 14 }; 15 16 struct encl { 17 int fd; 18 void *bin; 19 off_t bin_size; 20 void *src; 21 size_t src_size; 22 size_t encl_size; 23 off_t encl_base; 24 unsigned int nr_segments; 25 struct encl_segment *segment_tbl; 26 struct sgx_secs secs; 27 struct sgx_sigstruct sigstruct; 28 }; 29 30 extern unsigned char sign_key[]; 31 extern unsigned char sign_key_end[]; 32 33 void encl_delete(struct encl *ctx); 34 bool encl_load(const char *path, struct encl *encl); 35 bool encl_measure(struct encl *encl); 36 bool encl_build(struct encl *encl); 37 38 int sgx_enter_enclave(void *rdi, void *rsi, long rdx, u32 function, void *r8, void *r9, 39 struct sgx_enclave_run *run); 40 41 #endif /* MAIN_H */ 42