3200505d4d
Create a heap for the test enclave, which is allocated from /dev/null, and left unmeasured. This is beneficial by its own because it verifies that an enclave built from multiple choices, works properly. If LSM hooks are added for SGX some day, a multi source enclave has higher probability to trigger bugs on access control checks. The immediate need comes from the need to implement page reclaim tests. In order to trigger the page reclaimer, one can just set the size of the heap to high enough. Signed-off-by: Jarkko Sakkinen <jarkko@kernel.org> Signed-off-by: Reinette Chatre <reinette.chatre@intel.com> Signed-off-by: Dave Hansen <dave.hansen@linux.intel.com> Acked-by: Dave Hansen <dave.hansen@linux.intel.com> Link: https://lkml.kernel.org/r/e070c5f23578c29608051cab879b1d276963a27a.1636997631.git.reinette.chatre@intel.com
46 lines
929 B
C
46 lines
929 B
C
/* SPDX-License-Identifier: GPL-2.0 */
|
|
/*
|
|
* Copyright(c) 2016-20 Intel Corporation.
|
|
*/
|
|
|
|
#ifndef MAIN_H
|
|
#define MAIN_H
|
|
|
|
#define ENCL_HEAP_SIZE_DEFAULT 4096
|
|
|
|
struct encl_segment {
|
|
void *src;
|
|
off_t offset;
|
|
size_t size;
|
|
unsigned int prot;
|
|
unsigned int flags;
|
|
bool measure;
|
|
};
|
|
|
|
struct encl {
|
|
int fd;
|
|
void *bin;
|
|
off_t bin_size;
|
|
void *src;
|
|
size_t src_size;
|
|
size_t encl_size;
|
|
off_t encl_base;
|
|
unsigned int nr_segments;
|
|
struct encl_segment *segment_tbl;
|
|
struct sgx_secs secs;
|
|
struct sgx_sigstruct sigstruct;
|
|
};
|
|
|
|
extern unsigned char sign_key[];
|
|
extern unsigned char sign_key_end[];
|
|
|
|
void encl_delete(struct encl *ctx);
|
|
bool encl_load(const char *path, struct encl *encl, unsigned long heap_size);
|
|
bool encl_measure(struct encl *encl);
|
|
bool encl_build(struct encl *encl);
|
|
|
|
int sgx_enter_enclave(void *rdi, void *rsi, long rdx, u32 function, void *r8, void *r9,
|
|
struct sgx_enclave_run *run);
|
|
|
|
#endif /* MAIN_H */
|