Memclave Artifact Documentation
Loading...
Searching...
No Matches
vud_ime.h File Reference
#include "vud.h"
#include "vud_mem.h"

Go to the source code of this file.

Typedefs

typedef enum vud_ime_default_kernel vud_ime_default_kernel
 

Enumerations

enum  vud_ime_default_kernel { VUD_IME_SK_MSG = 1 , VUD_IME_SK_XCHG_1 , VUD_IME_SK_XCHG_2 , VUD_IME_SK_XCHG_3 }
 

Functions

 __attribute__ ((deprecated)) void vud_ime_launch_sk(vud_rank *r
 launch a subkernel on a rank of DPUs
 
void vud_ime_load (vud_rank *r, const char *path)
 set the next subkernel (ELF file not .sk) to load
 
void vud_ime_load_auth_only (vud_rank *r, const char *path)
 set the next subkernel to load - do not encrypt; only authenticate
 
void vud_ime_launch (vud_rank *r)
 load a subkernel (ELF file not .sk) on a rank of DPUs
 
void vud_ime_launch_default (vud_rank *r, vud_ime_default_kernel kernel)
 launch on of the system subkernels
 
void vud_ime_install_key (vud_rank *r, const uint8_t key[32], const uint64_t common_pk[32], const uint64_t pk[64][32])
 perform a key exchange with the rank and install a new user key
 
void vud_ime_wait (vud_rank *r)
 wait until the whole rank has exposed the MUX to the guest system
 

Variables

const char * path
 
size_t n
 
size_t const char ** paths
 
size_t const char const uint64_t * addrs
 

Typedef Documentation

◆ vud_ime_default_kernel

Enumeration Type Documentation

◆ vud_ime_default_kernel

Enumerator
VUD_IME_SK_MSG 
VUD_IME_SK_XCHG_1 
VUD_IME_SK_XCHG_2 
VUD_IME_SK_XCHG_3 

Function Documentation

◆ __attribute__()

__attribute__ ( (deprecated)  )

launch a subkernel on a rank of DPUs

deploy multiple subkernels to a rank of DPUs and launch the first one

Parameters
rpointer to the concrete rank
pathpath to the subkernel
rrank to deploy subkernels on
nnumber of subkernels
pathsarray of paths to subkernels
addrsaddresses to deploy subkernels to - should not alias each other

◆ vud_ime_install_key()

void vud_ime_install_key ( vud_rank r,
const uint8_t  key[32],
const uint64_t  common_pk[32],
const uint64_t  pk[64][32] 
)

perform a key exchange with the rank and install a new user key

Parameters
rrank to install key on
key256-bit key to install
common_pkpublic key to expect of all DPUs - may be NULL
pkpublic key to expect from each DPU - preferred if not NULL

◆ vud_ime_launch()

void vud_ime_launch ( vud_rank r)

load a subkernel (ELF file not .sk) on a rank of DPUs

This function requires that a key has been installed on the rank. It will load the ELF file into memory, convert it into the SK format and then encrypt and tag it. Only then will it be sent to the rank.

The file to load can be set using the vud_ime_load function.

Parameters
rrank to load subkernel on

◆ vud_ime_launch_default()

void vud_ime_launch_default ( vud_rank r,
vud_ime_default_kernel  kernel 
)

launch on of the system subkernels

Parameters
rrank to launch on
kernelchosen subkernel - note that the xchg sks call each other

◆ vud_ime_load()

void vud_ime_load ( vud_rank r,
const char *  path 
)

set the next subkernel (ELF file not .sk) to load

This function sets the next subkernel to load in the rank structure. Functions looking up symbol locations use this information. The vud_ime_launch function also relies on this information.

Parameters
rrank to change the next subkernel location off
pathpath to a subkernel

◆ vud_ime_load_auth_only()

void vud_ime_load_auth_only ( vud_rank r,
const char *  path 
)

set the next subkernel to load - do not encrypt; only authenticate

Parameters
rrank to change the next subkernel location off
pathpath to a subkernel

◆ vud_ime_wait()

void vud_ime_wait ( vud_rank r)

wait until the whole rank has exposed the MUX to the guest system

Parameters
rpointer to the concrete rank

Variable Documentation

◆ addrs

size_t const char const uint64_t* addrs

◆ n

size_t n

◆ path

const char* path

◆ paths

size_t const char** paths