From cb4e32933dffa36407d711017b41a5b5646bc8e1 Mon Sep 17 00:00:00 2001 From: Tom Dohrmann Date: Mon, 19 Aug 2024 10:43:51 +0200 Subject: [PATCH] manifest: add ProductName field --- internal/manifest/manifest.go | 6 ++++++ internal/manifest/referencevalues.go | 11 +++++++++++ packages/by-name/contrast/package.nix | 11 +++++++++-- 3 files changed, 26 insertions(+), 2 deletions(-) diff --git a/internal/manifest/manifest.go b/internal/manifest/manifest.go index 7fbf21821c..ac70d1ab13 100644 --- a/internal/manifest/manifest.go +++ b/internal/manifest/manifest.go @@ -99,6 +99,12 @@ func (r SNPReferenceValues) Validate() error { return fmt.Errorf("field MicrocodeVersion in manifest cannot be empty") } + switch r.ProductName { + case Milan, Genoa: + default: + return fmt.Errorf("unknown product name: %s", r.ProductName) + } + if len(r.TrustedMeasurement) != abi.MeasurementSize*2 { return fmt.Errorf("trusted measurement has invalid length: %d (expected %d)", len(r.TrustedMeasurement), abi.MeasurementSize*2) } diff --git a/internal/manifest/referencevalues.go b/internal/manifest/referencevalues.go index 065fe2c504..7911feb4a1 100644 --- a/internal/manifest/referencevalues.go +++ b/internal/manifest/referencevalues.go @@ -34,6 +34,7 @@ type EmbeddedReferenceValues map[string]ReferenceValues // SNPReferenceValues contains reference values for SEV-SNP. type SNPReferenceValues struct { MinimumTCB SNPTCB + ProductName ProductName TrustedMeasurement HexString } @@ -78,6 +79,16 @@ func (s *SVN) UnmarshalJSON(data []byte) error { return nil } +// ProductName is the name mentioned in the VCEK/ASK/ARK. +type ProductName string + +const ( + // Milan is the product name for 3rd generation EPYC CPUs. + Milan ProductName = "Milan" + // Genoa is the product name for 4th generation EPYC CPUs. + Genoa ProductName = "Genoa" +) + // HexString is a hex encoded string. type HexString string diff --git a/packages/by-name/contrast/package.nix b/packages/by-name/contrast/package.nix index d2af7d5a97..f236e170ec 100644 --- a/packages/by-name/contrast/package.nix +++ b/packages/by-name/contrast/package.nix @@ -68,6 +68,7 @@ let microsoft.kata-igvm.launch-digest ) ); + productName = "Milan"; } ]; }; @@ -82,8 +83,14 @@ let kata.snp-launch-digest; in [ - { trustedMeasurement = lib.removeSuffix "\n" (builtins.readFile "${launch-digest}/milan.hex"); } - { trustedMeasurement = lib.removeSuffix "\n" (builtins.readFile "${launch-digest}/genoa.hex"); } + { + trustedMeasurement = lib.removeSuffix "\n" (builtins.readFile "${launch-digest}/milan.hex"); + productName = "Milan"; + } + { + trustedMeasurement = lib.removeSuffix "\n" (builtins.readFile "${launch-digest}/genoa.hex"); + productName = "Genoa"; + } ]; };