Skip to content

Commit a706b19

Browse files
authored
igvm_defs, igvm: introduce corim measurement header (#99)
Introduce a CoRIM document and CoRIM signature header to allow CoRIM payloads to be described for a given platform. This is the bare-minimum support to start proving out CoRIM support for IGVM files, with more support tracked by #115. This is gated behind a new `corim` feature.
1 parent fc0fa3f commit a706b19

5 files changed

Lines changed: 611 additions & 29 deletions

File tree

igvm/Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,3 +53,4 @@ static_assertions.workspace = true
5353
default = []
5454
capi = ["igvm-c"]
5555
igvm-c = [] # Add exports that allow the library to be used from C
56+
corim = ["igvm_defs/corim"]

igvm/src/c_api.rs

Lines changed: 25 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -290,7 +290,7 @@ fn get_header(
290290
.initialization_headers
291291
.get(index as usize)
292292
.ok_or(IgvmResult::IGVMAPI_INVALID_PARAMETER)?
293-
.write_binary_header(&mut header_binary)
293+
.write_binary_header(&mut header_binary, &mut FileDataSerializer::new(0))
294294
.map_err(|_| IgvmResult::IGVMAPI_INVALID_FILE)?;
295295
}
296296
IgvmHeaderSection::HEADER_SECTION_DIRECTIVE => {
@@ -322,17 +322,30 @@ fn get_header_data(
322322
let igvm = handle_lock.get_mut()?;
323323
let mut header_data = FileDataSerializer::new(0);
324324

325-
if section == IgvmHeaderSection::HEADER_SECTION_DIRECTIVE {
326-
let header = igvm
327-
.file
328-
.directive_headers
329-
.get(index as usize)
330-
.ok_or(IgvmResult::IGVMAPI_INVALID_PARAMETER)?;
331-
header
332-
.write_binary_header(&mut Vec::<u8>::new(), &mut header_data)
333-
.map_err(|_| IgvmResult::IGVMAPI_INVALID_FILE)?;
334-
} else {
335-
return Err(IgvmResult::IGVMAPI_INVALID_PARAMETER);
325+
match section {
326+
IgvmHeaderSection::HEADER_SECTION_INITIALIZATION => {
327+
let header = igvm
328+
.file
329+
.initialization_headers
330+
.get(index as usize)
331+
.ok_or(IgvmResult::IGVMAPI_INVALID_PARAMETER)?;
332+
header
333+
.write_binary_header(&mut Vec::<u8>::new(), &mut header_data)
334+
.map_err(|_| IgvmResult::IGVMAPI_INVALID_FILE)?;
335+
}
336+
IgvmHeaderSection::HEADER_SECTION_DIRECTIVE => {
337+
let header = igvm
338+
.file
339+
.directive_headers
340+
.get(index as usize)
341+
.ok_or(IgvmResult::IGVMAPI_INVALID_PARAMETER)?;
342+
header
343+
.write_binary_header(&mut Vec::<u8>::new(), &mut header_data)
344+
.map_err(|_| IgvmResult::IGVMAPI_INVALID_FILE)?;
345+
}
346+
_ => {
347+
return Err(IgvmResult::IGVMAPI_INVALID_PARAMETER);
348+
}
336349
}
337350

338351
let header_data = header_data.take();

0 commit comments

Comments
 (0)