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