xref: /openbmc/linux/tools/testing/selftests/sgx/main.h (revision 4f2c0a4acffbec01079c28f839422e64ddeff004)
12adcba79SJarkko Sakkinen /* SPDX-License-Identifier: GPL-2.0 */
22adcba79SJarkko Sakkinen /*
32adcba79SJarkko Sakkinen  * Copyright(c) 2016-20 Intel Corporation.
42adcba79SJarkko Sakkinen  */
52adcba79SJarkko Sakkinen 
62adcba79SJarkko Sakkinen #ifndef MAIN_H
72adcba79SJarkko Sakkinen #define MAIN_H
82adcba79SJarkko Sakkinen 
93200505dSJarkko Sakkinen #define ENCL_HEAP_SIZE_DEFAULT	4096
103200505dSJarkko Sakkinen 
112adcba79SJarkko Sakkinen struct encl_segment {
1239f62536SJarkko Sakkinen 	void *src;
132adcba79SJarkko Sakkinen 	off_t offset;
142adcba79SJarkko Sakkinen 	size_t size;
152adcba79SJarkko Sakkinen 	unsigned int prot;
162adcba79SJarkko Sakkinen 	unsigned int flags;
175f0ce664SJarkko Sakkinen 	bool measure;
182adcba79SJarkko Sakkinen };
192adcba79SJarkko Sakkinen 
202adcba79SJarkko Sakkinen struct encl {
212adcba79SJarkko Sakkinen 	int fd;
222adcba79SJarkko Sakkinen 	void *bin;
232adcba79SJarkko Sakkinen 	off_t bin_size;
242adcba79SJarkko Sakkinen 	void *src;
252adcba79SJarkko Sakkinen 	size_t src_size;
262adcba79SJarkko Sakkinen 	size_t encl_size;
272adcba79SJarkko Sakkinen 	off_t encl_base;
282adcba79SJarkko Sakkinen 	unsigned int nr_segments;
292adcba79SJarkko Sakkinen 	struct encl_segment *segment_tbl;
302adcba79SJarkko Sakkinen 	struct sgx_secs secs;
312adcba79SJarkko Sakkinen 	struct sgx_sigstruct sigstruct;
322adcba79SJarkko Sakkinen };
332adcba79SJarkko Sakkinen 
340eaa8d15SJarkko Sakkinen extern unsigned char sign_key[];
350eaa8d15SJarkko Sakkinen extern unsigned char sign_key_end[];
360eaa8d15SJarkko Sakkinen 
372adcba79SJarkko Sakkinen void encl_delete(struct encl *ctx);
383200505dSJarkko Sakkinen bool encl_load(const char *path, struct encl *encl, unsigned long heap_size);
392adcba79SJarkko Sakkinen bool encl_measure(struct encl *encl);
402adcba79SJarkko Sakkinen bool encl_build(struct encl *encl);
41*33c5aac3SReinette Chatre uint64_t encl_get_entry(struct encl *encl, const char *symbol);
422adcba79SJarkko Sakkinen 
436a7171b8SJarkko Sakkinen int sgx_enter_enclave(void *rdi, void *rsi, long rdx, u32 function, void *r8, void *r9,
442adcba79SJarkko Sakkinen 		      struct sgx_enclave_run *run);
452adcba79SJarkko Sakkinen 
462adcba79SJarkko Sakkinen #endif /* MAIN_H */
47