diff --git a/artifact/src/installinator.rs b/artifact/src/installinator.rs index 2f49d95..0c35cfd 100644 --- a/artifact/src/installinator.rs +++ b/artifact/src/installinator.rs @@ -62,4 +62,6 @@ pub enum InstallinatorArtifactKind { HostPhase2, /// The composite control plane artifact. ControlPlane, + /// Measurement Corpus + MeasurementCorpus, } diff --git a/artifact/src/kind.rs b/artifact/src/kind.rs index d89415d..d9f9d28 100644 --- a/artifact/src/kind.rs +++ b/artifact/src/kind.rs @@ -146,6 +146,12 @@ impl ArtifactKind { /// Derived from [`KnownArtifactKind::Trampoline`]. pub const TRAMPOLINE_PHASE_2: Self = Self::from_static("trampoline_phase_2"); + + /// Measurement Corpus identifier. + /// + /// Derived from [`KnownArtifactKind::MeasurementCorpus`]. + pub const MEASUREMENT_CORPUS: Self = + Self::from_static("measurement_corpus"); } impl From for ArtifactKind { @@ -206,6 +212,8 @@ pub enum KnownArtifactKind { ControlPlane, /// Individual control plane zone Zone, + /// MeasurementCorpus + MeasurementCorpus, // PSC Artifacts PscSp, @@ -241,6 +249,7 @@ impl KnownArtifactKind { | KnownArtifactKind::Host | KnownArtifactKind::Trampoline | KnownArtifactKind::InstallinatorDocument + | KnownArtifactKind::MeasurementCorpus | KnownArtifactKind::ControlPlane | KnownArtifactKind::Zone | KnownArtifactKind::PscSp @@ -283,6 +292,7 @@ impl KnownArtifactKind { | KnownArtifactKind::Host | KnownArtifactKind::Trampoline | KnownArtifactKind::InstallinatorDocument + | KnownArtifactKind::MeasurementCorpus | KnownArtifactKind::ControlPlane | KnownArtifactKind::Zone | KnownArtifactKind::PscSp diff --git a/bin/manifests/fake-non-semver.toml b/bin/manifests/fake-non-semver.toml index 33f5be3..1ef2508 100644 --- a/bin/manifests/fake-non-semver.toml +++ b/bin/manifests/fake-non-semver.toml @@ -87,3 +87,8 @@ source = { kind = "fake", size = "1MiB" } name = "fake-switch-rot-bootloader" version = "non-semver-2" source = { kind = "fake", size = "1MiB" } + +[[artifact.measurement_corpus]] +name = "fake-corpus" +version = "1.0.0" +source = { kind = "fake", size ="1MiB" } diff --git a/bin/manifests/fake.toml b/bin/manifests/fake.toml index 1cffc56..ae5e3f3 100644 --- a/bin/manifests/fake.toml +++ b/bin/manifests/fake.toml @@ -86,4 +86,8 @@ name = "fake-switch-rot-bootloader" version = "1.0.0" source = { kind = "fake", size = "1MiB" } +[[artifact.measurement_corpus]] +name = "fake-corpus" +version = "1.0.0" +source = { kind = "fake", size ="1MiB" } diff --git a/lib/src/artifact.rs b/lib/src/artifact.rs index 5848fb6..600b8a6 100644 --- a/lib/src/artifact.rs +++ b/lib/src/artifact.rs @@ -207,6 +207,13 @@ impl TempWrittenArtifact { hash: self.digest(), }) } + Some(KnownArtifactKind::MeasurementCorpus) => { + Some(InstallinatorArtifact { + name: self.name.clone(), + kind: InstallinatorArtifactKind::MeasurementCorpus, + hash: self.digest(), + }) + } Some(_) | None => None, }; artifact.into_iter() diff --git a/lib/src/assemble/manifest.rs b/lib/src/assemble/manifest.rs index 39ceb1a..8fb425f 100644 --- a/lib/src/assemble/manifest.rs +++ b/lib/src/assemble/manifest.rs @@ -428,6 +428,7 @@ impl ArtifactManifest { k, KnownArtifactKind::Zone | KnownArtifactKind::InstallinatorDocument + | KnownArtifactKind::MeasurementCorpus ) }) .collect(); @@ -493,6 +494,13 @@ impl<'a> FakeDataAttributes<'a> { "fake manifest should not have an installinator document" ); } + KnownArtifactKind::MeasurementCorpus => { + return make_filler_text( + &self.kind.to_string(), + self.version, + size, + ); + } // In production, all the bootloaders and RoTs claim to have the // same board (currently: `oxide-rot-1`). Let's do that here too.