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