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