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