mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/netdev/net.git/
synced 2026-04-18 06:33:43 -04:00
Add a selftest for SGX. It is a trivial test where a simple enclave copies one 64-bit word of memory between two memory locations, but ensures that all SGX hardware and software infrastructure is functioning. Signed-off-by: Jarkko Sakkinen <jarkko@kernel.org> Signed-off-by: Borislav Petkov <bp@suse.de> Acked-by: Jethro Beekman <jethro@fortanix.com> Cc: linux-kselftest@vger.kernel.org Link: https://lkml.kernel.org/r/20201112220135.165028-21-jarkko@kernel.org
39 lines
761 B
C
39 lines
761 B
C
/* SPDX-License-Identifier: GPL-2.0 */
|
|
/*
|
|
* Copyright(c) 2016-20 Intel Corporation.
|
|
*/
|
|
|
|
#ifndef MAIN_H
|
|
#define MAIN_H
|
|
|
|
struct encl_segment {
|
|
off_t offset;
|
|
size_t size;
|
|
unsigned int prot;
|
|
unsigned int flags;
|
|
};
|
|
|
|
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;
|
|
};
|
|
|
|
void encl_delete(struct encl *ctx);
|
|
bool encl_load(const char *path, struct encl *encl);
|
|
bool encl_measure(struct encl *encl);
|
|
bool encl_build(struct encl *encl);
|
|
|
|
int sgx_call_vdso(void *rdi, void *rsi, long rdx, u32 function, void *r8, void *r9,
|
|
struct sgx_enclave_run *run);
|
|
|
|
#endif /* MAIN_H */
|