diff --git a/cmd/comidCreate.go b/cmd/comidCreate.go index 02b1a4d..55ad551 100644 --- a/cmd/comidCreate.go +++ b/cmd/comidCreate.go @@ -1,4 +1,4 @@ -// Copyright 2021-2024 Contributors to the Veraison project. +// Copyright 2021-2025 Contributors to the Veraison project. // SPDX-License-Identifier: Apache-2.0 package cmd @@ -10,11 +10,14 @@ import ( "github.com/spf13/afero" "github.com/spf13/cobra" "github.com/veraison/corim/comid" + "github.com/veraison/corim/corim" + "github.com/veraison/eat" ) var ( comidCreateFiles []string comidCreateDirs []string + comidCreateProfile string comidCreateOutputDir string ) @@ -27,11 +30,13 @@ func NewComidCreateCmd() *cobra.Command { Long: `create one or more CBOR-encoded CoMID(s) from the supplied JSON template(s) Create CoMIDs from templates t1.json and t2.json, plus any template found in - the templates/ directory. Save them to the current working directory. + the templates/ directory, with an optional supplied profile. + Save them to the current working directory. cocli comid create --template=t1.json \ --template=t2.json \ - --template-dir=templates + --template-dir=templates \ + --profile="tag:arm.com,2024:cca_platform#1.1.0" Create one CoMID from template t3.json and save it to the comids/ directory. Note that the output directory must exist. @@ -78,6 +83,10 @@ func NewComidCreateCmd() *cobra.Command { &comidCreateDirs, "template-dir", "T", []string{}, "a directory containing CoMID template files", ) + cmd.Flags().StringVarP( + &comidCreateProfile, "profile", "p", "", "an optional scheme specific profile applicable to all CoMID JSON templates", + ) + cmd.Flags().StringVarP( &comidCreateOutputDir, "output-dir", "o", ".", "directory where the created files are stored", ) @@ -96,7 +105,8 @@ func templateToCBOR(tmplFile, outputDir string) (string, error) { var ( tmplData, cborData []byte cborFile string - c comid.Comid + c *comid.Comid + p *eat.Profile err error ) @@ -104,7 +114,15 @@ func templateToCBOR(tmplFile, outputDir string) (string, error) { return "", fmt.Errorf("error loading template from %s: %w", tmplFile, err) } - if err = c.FromJSON(tmplData); err != nil { + if comidCreateProfile != "" { + p, err = eat.NewProfile(comidCreateProfile) + if err != nil { + return "", fmt.Errorf("error creating profile %q for template: %w", comidCreateProfile, err) + } + } + + c, err = corim.UnmarshalComidFromJSON(tmplData, p) + if err != nil { return "", fmt.Errorf("error decoding template from %s: %w", tmplFile, err) } diff --git a/cmd/comidCreate_test.go b/cmd/comidCreate_test.go index 9bac5dc..b2f41ca 100644 --- a/cmd/comidCreate_test.go +++ b/cmd/comidCreate_test.go @@ -1,4 +1,4 @@ -// Copyright 2021-2024 Contributors to the Veraison project. +// Copyright 2021-2025 Contributors to the Veraison project. // SPDX-License-Identifier: Apache-2.0 package cmd @@ -10,6 +10,7 @@ import ( "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" "github.com/veraison/corim/comid" + "github.com/veraison/corim/profiles/tdx" ) func Test_ComidCreateCmd_unknown_argument(t *testing.T) { @@ -126,3 +127,45 @@ func Test_ComidCreateCmd_template_from_dir_to_custom_dir(t *testing.T) { _, err = fs.Stat(expectedFileName) assert.NoError(t, err) } + +func Test_ComidCreateCmd_WithProfile(t *testing.T) { + var err error + profile := "--profile=" + testProfile + cmd := NewComidCreateCmd() + fs = afero.NewMemMapFs() + err = afero.WriteFile(fs, "ok.json", []byte(tdx.TDXSeamRefValJSONTemplate), 0644) + require.NoError(t, err) + + args := []string{ + "--template=ok.json", + profile, + } + cmd.SetArgs(args) + + err = cmd.Execute() + assert.NoError(t, err) + + expectedFileName := "ok.cbor" + + _, err = fs.Stat(expectedFileName) + assert.NoError(t, err) + +} + +func Test_ComidCreateCmd_InvalidProfile(t *testing.T) { + var err error + profile := "--profile=" + testInvalidProfile + cmd := NewComidCreateCmd() + fs = afero.NewMemMapFs() + err = afero.WriteFile(fs, "ok.json", []byte(tdx.TDXSeamRefValJSONTemplate), 0644) + require.NoError(t, err) + + args := []string{ + "--template=ok.json", + profile, + } + cmd.SetArgs(args) + + err = cmd.Execute() + assert.EqualError(t, err, "1/1 creations(s) failed") +} diff --git a/cmd/comidDisplay.go b/cmd/comidDisplay.go index 41683e6..a45b8e3 100644 --- a/cmd/comidDisplay.go +++ b/cmd/comidDisplay.go @@ -1,4 +1,4 @@ -// Copyright 2021-2024 Contributors to the Veraison project. +// Copyright 2021-2025 Contributors to the Veraison project. // SPDX-License-Identifier: Apache-2.0 package cmd @@ -9,11 +9,13 @@ import ( "github.com/spf13/afero" "github.com/spf13/cobra" + "github.com/veraison/eat" ) var ( - comidDisplayFiles []string - comidDisplayDirs []string + comidDisplayFiles []string + comidDisplayDirs []string + comidDisplayProfile string ) var comidDisplayCmd = NewComidDisplayCmd() @@ -65,6 +67,10 @@ func NewComidDisplayCmd() *cobra.Command { &comidDisplayFiles, "file", "f", []string{}, "a CoMID file (in CBOR format)", ) + cmd.Flags().StringVarP( + &comidDisplayProfile, "profile", "p", "", "an optional, scheme-specific profile applicable to all CoMID files", + ) + cmd.Flags().StringArrayVarP( &comidDisplayDirs, "dir", "d", []string{}, "a directory containing CoMID files (in CBOR format)", ) @@ -75,6 +81,7 @@ func NewComidDisplayCmd() *cobra.Command { func displayComidFile(file string) error { var ( data []byte + p *eat.Profile err error ) @@ -82,8 +89,14 @@ func displayComidFile(file string) error { return fmt.Errorf("error loading CoMID from %s: %w", file, err) } + if comidDisplayProfile != "" { + p, err = eat.NewProfile(comidDisplayProfile) + if err != nil { + return fmt.Errorf("error creating profile %q from template: %w", comidDisplayProfile, err) + } + } // use file name as heading - return printComid(data, ">> ["+file+"]") + return printComid(data, p, ">> ["+file+"]") } func checkComidDisplayArgs() error { diff --git a/cmd/comidDisplay_test.go b/cmd/comidDisplay_test.go index cc43a92..6ef336e 100644 --- a/cmd/comidDisplay_test.go +++ b/cmd/comidDisplay_test.go @@ -1,4 +1,4 @@ -// Copyright 2021 Contributors to the Veraison project. +// Copyright 2021-2025 Contributors to the Veraison project. // SPDX-License-Identifier: Apache-2.0 package cmd @@ -10,6 +10,7 @@ import ( "github.com/spf13/afero" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" + "github.com/veraison/corim/profiles/tdx" ) func Test_ComidDisplayCmd_unknown_argument(t *testing.T) { @@ -99,3 +100,22 @@ func Test_ComidDisplayCmd_file_with_valid_comid_from_dir(t *testing.T) { err = cmd.Execute() assert.NoError(t, err) } + +func Test_ComidDisplayCmd_With_profile_with_valid_comid(t *testing.T) { + var err error + profile := "--profile=" + testProfile + cmd := NewComidDisplayCmd() + + fs = afero.NewMemMapFs() + err = afero.WriteFile(fs, "ok.cbor", []byte(tdx.ComidSeamRefVal), 0644) + require.NoError(t, err) + + args := []string{ + "--file=ok.cbor", + profile, + } + cmd.SetArgs(args) + + err = cmd.Execute() + assert.NoError(t, err) +} diff --git a/cmd/comidValidate.go b/cmd/comidValidate.go index 0aef876..3b21652 100644 --- a/cmd/comidValidate.go +++ b/cmd/comidValidate.go @@ -1,4 +1,4 @@ -// Copyright 2021-2024 Contributors to the Veraison project. +// Copyright 2021-2025 Contributors to the Veraison project. // SPDX-License-Identifier: Apache-2.0 package cmd @@ -9,12 +9,14 @@ import ( "github.com/spf13/afero" "github.com/spf13/cobra" - "github.com/veraison/corim/comid" + "github.com/veraison/corim/corim" + "github.com/veraison/eat" ) var ( - comidValidateFiles []string - comidValidateDirs []string + comidValidateFiles []string + comidValidateDirs []string + comidValidateProfile string ) var comidValidateCmd = NewComidValidateCmd() @@ -67,6 +69,10 @@ func NewComidValidateCmd() *cobra.Command { &comidValidateFiles, "file", "f", []string{}, "a CoMID file (in CBOR format)", ) + cmd.Flags().StringVarP( + &comidValidateProfile, "profile", "p", "", "an optional, scheme-specific profile applicable to all CoMID files", + ) + cmd.Flags().StringArrayVarP( &comidValidateDirs, "dir", "d", []string{}, "a directory containing CoMID files (in CBOR format)", ) @@ -78,14 +84,22 @@ func validateComid(file string) error { var ( data []byte err error - c comid.Comid + p *eat.Profile ) if data, err = afero.ReadFile(fs, file); err != nil { return fmt.Errorf("error loading CoMID from %s: %w", file, err) } - if err = c.FromCBOR(data); err != nil { + if comidValidateProfile != "" { + p, err = eat.NewProfile(comidValidateProfile) + if err != nil { + return fmt.Errorf("error creating profile %q for CoMID: %w", comidValidateProfile, err) + } + } + + c, err := corim.UnmarshalComidFromCBOR(data, p) + if err != nil { return fmt.Errorf("error decoding CoMID from %s: %w", file, err) } diff --git a/cmd/comidValidate_test.go b/cmd/comidValidate_test.go index 6c78c20..a0cbcf8 100644 --- a/cmd/comidValidate_test.go +++ b/cmd/comidValidate_test.go @@ -1,14 +1,16 @@ -// Copyright 2021 Contributors to the Veraison project. +// Copyright 2021-2025 Contributors to the Veraison project. // SPDX-License-Identifier: Apache-2.0 package cmd import ( + "fmt" "testing" "github.com/spf13/afero" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" + "github.com/veraison/corim/profiles/tdx" ) func Test_ComidValidateCmd_unknown_argument(t *testing.T) { @@ -114,3 +116,24 @@ func Test_ComidValidateCmd_file_with_valid_comid_from_dir(t *testing.T) { err = cmd.Execute() assert.NoError(t, err) } + +func Test_ComidValidateCmd_with_valid_comid(t *testing.T) { + var err error + profile := "--profile=" + testProfile + cmd := NewComidValidateCmd() + + fs = afero.NewMemMapFs() + err = afero.WriteFile(fs, "ok.cbor", []byte(tdx.ComidSeamRefVal), 0644) + require.NoError(t, err) + + args := []string{ + "--file=ok.cbor", + profile, + } + cmd.SetArgs(args) + + fmt.Printf("%x\n", []byte(tdx.ComidSeamRefVal)) + + err = cmd.Execute() + assert.NoError(t, err) +} diff --git a/cmd/common.go b/cmd/common.go index adce111..3083704 100644 --- a/cmd/common.go +++ b/cmd/common.go @@ -1,4 +1,4 @@ -// Copyright 2021-2024 Contributors to the Veraison project. +// Copyright 2021-2025 Contributors to the Veraison project. // SPDX-License-Identifier: Apache-2.0 package cmd @@ -10,8 +10,9 @@ import ( "strings" "github.com/spf13/afero" - "github.com/veraison/corim/comid" + "github.com/veraison/corim/corim" "github.com/veraison/corim/cots" + "github.com/veraison/eat" "github.com/veraison/swid" ) @@ -67,8 +68,28 @@ func printJSONFromCBOR(fcl FromCBORLoader, cbor []byte, heading string) error { return nil } -func printComid(cbor []byte, heading string) error { - return printJSONFromCBOR(&comid.Comid{}, cbor, heading) +func printComidWithExtensions(cbor []byte, profile *eat.Profile, heading string) error { + var ( + err error + j []byte + ) + c, err := corim.UnmarshalComidFromCBOR(cbor, profile) + if err != nil { + return fmt.Errorf("error decoding CoMID from CBOR: %w", err) + } + + indent := " " + if j, err = json.MarshalIndent(c, "", indent); err != nil { + return fmt.Errorf("JSON encoding failed: %w", err) + } + + fmt.Println(heading) + fmt.Println(string(j)) + return nil +} + +func printComid(cbor []byte, profile *eat.Profile, heading string) error { + return printComidWithExtensions(cbor, profile, heading) } func printCoswid(cbor []byte, heading string) error { diff --git a/cmd/corimCreate.go b/cmd/corimCreate.go index bf23a40..b5409cb 100644 --- a/cmd/corimCreate.go +++ b/cmd/corimCreate.go @@ -1,4 +1,4 @@ -// Copyright 2021-2024 Contributors to the Veraison project. +// Copyright 2021-2025 Contributors to the Veraison project. // SPDX-License-Identifier: Apache-2.0 package cmd @@ -50,7 +50,7 @@ func NewCorimCreateCmd() *cobra.Command { --comid=comid1.cbor \ --coswid=coswid1.cbor \ --coswid=dir/coswid2.cbor \ - --cots=cots1.cbor + --cots=cots1.cbor \ --output=corim.cbor `, @@ -140,11 +140,12 @@ func corimTemplateToCBOR(tmplFile string, comidFiles, coswidFiles, cotsFiles []s return "", fmt.Errorf("error decoding template from %s: %w", tmplFile, err) } + p := c.Profile // append CoMID(s) for _, comidFile := range comidFiles { var ( comidCBOR []byte - m comid.Comid + m *comid.Comid ) comidCBOR, err = afero.ReadFile(fs, comidFile) @@ -152,12 +153,12 @@ func corimTemplateToCBOR(tmplFile string, comidFiles, coswidFiles, cotsFiles []s return "", fmt.Errorf("error loading CoMID from %s: %w", comidFile, err) } - err = m.FromCBOR(comidCBOR) + m, err := corim.UnmarshalComidFromCBOR(comidCBOR, p) if err != nil { return "", fmt.Errorf("error loading CoMID from %s: %w", comidFile, err) } - if c.AddComid(&m) == nil { + if c.AddComid(m) == nil { return "", fmt.Errorf( "error adding CoMID from %s (check its validity using the %q sub-command)", comidFile, "comid validate", diff --git a/cmd/corimDisplay.go b/cmd/corimDisplay.go index 9edd6cd..da5d8f8 100644 --- a/cmd/corimDisplay.go +++ b/cmd/corimDisplay.go @@ -1,4 +1,4 @@ -// Copyright 2021-2024 Contributors to the Veraison project. +// Copyright 2021-2025 Contributors to the Veraison project. // SPDX-License-Identifier: Apache-2.0 package cmd @@ -12,6 +12,7 @@ import ( "github.com/spf13/cobra" "github.com/veraison/corim/corim" "github.com/veraison/corim/cots" + "github.com/veraison/eat" ) var ( @@ -79,7 +80,7 @@ func displaySignedCorim(s corim.SignedCorim, corimFile string, showTags bool) er if showTags { fmt.Println("Tags:") - displayTags(s.UnsignedCorim.Tags) + displayTags(s.UnsignedCorim.Tags, s.UnsignedCorim.Profile) } return nil @@ -96,7 +97,7 @@ func displayUnsignedCorim(u corim.UnsignedCorim, corimFile string, showTags bool if showTags { fmt.Println("Tags:") - displayTags(u.Tags) + displayTags(u.Tags, u.Profile) } return nil @@ -131,13 +132,13 @@ func display(corimFile string, showTags bool) error { } // displayTags processes and displays embedded tags within a CoRIM. -func displayTags(tags []corim.Tag) { +func displayTags(tags []corim.Tag, p *eat.Profile) { for i, t := range tags { hdr := fmt.Sprintf(">> [ %d ]", i) switch t.Number { case corim.ComidTag: - if err := printComid(t.Content, hdr); err != nil { + if err := printComid(t.Content, p, hdr); err != nil { fmt.Printf(">> skipping malformed CoMID tag at index %d: %v\n", i, err) } case corim.CoswidTag: diff --git a/cmd/root.go b/cmd/root.go index 6297d24..9af3418 100644 --- a/cmd/root.go +++ b/cmd/root.go @@ -1,4 +1,4 @@ -// Copyright 2021-2024 Contributors to the Veraison project. +// Copyright 2021-2025 Contributors to the Veraison project. // SPDX-License-Identifier: Apache-2.0 package cmd @@ -12,8 +12,8 @@ import ( "github.com/spf13/afero" "github.com/spf13/cobra" "github.com/spf13/viper" - "github.com/veraison/apiclient/auth" + _ "github.com/veraison/corim/profiles/tdx" ) var ( diff --git a/cmd/test_vars.go b/cmd/test_vars.go index a3bb794..f4a00eb 100644 --- a/cmd/test_vars.go +++ b/cmd/test_vars.go @@ -1,4 +1,4 @@ -// Copyright 2021-2024 Contributors to the Veraison project. +// Copyright 2021-2025 Contributors to the Veraison project. // SPDX-License-Identifier: Apache-2.0 package cmd @@ -28,8 +28,10 @@ var ( testCorimInvalid = comid.MustHexDecode(nil, "d901f5a100505c57e8f446cd421b91c908cf93e13cfc", ) - testMetaInvalid = []byte("{}") - testMetaValid = []byte(`{ + testProfile = "2.16.840.1.113741.1.16.1" + testInvalidProfile = "example" + testMetaInvalid = []byte("{}") + testMetaValid = []byte(`{ "signer": { "name": "ACME Ltd signing key", "uri": "https://acme.example" diff --git a/go.mod b/go.mod index 4402323..13d6d05 100644 --- a/go.mod +++ b/go.mod @@ -11,9 +11,10 @@ require ( github.com/spf13/viper v1.9.0 github.com/stretchr/testify v1.10.0 github.com/veraison/apiclient v0.3.1-0.20240807160142-9141ad363e45 - github.com/veraison/corim v1.1.3-0.20250709120018-e3379e6d507e + github.com/veraison/corim v1.1.3-0.20251209184640-2bc0f3805b95 + github.com/veraison/eat v0.0.0-20210331113810-3da8a4dd42ff github.com/veraison/go-cose v1.3.0 - github.com/veraison/swid v1.1.1-0.20230911094910-8ffdd07a22ca + github.com/veraison/swid v1.1.1-0.20251003121634-fd1f7f1e1897 ) require ( @@ -21,7 +22,7 @@ require ( github.com/davecgh/go-spew v1.1.1 // indirect github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0 // indirect github.com/fsnotify/fsnotify v1.5.1 // indirect - github.com/fxamacker/cbor/v2 v2.7.0 // indirect + github.com/fxamacker/cbor/v2 v2.8.0 // indirect github.com/goccy/go-json v0.10.2 // indirect github.com/golang/protobuf v1.5.3 // indirect github.com/hashicorp/hcl v1.0.0 // indirect @@ -41,7 +42,6 @@ require ( github.com/spf13/cast v1.4.1 // indirect github.com/spf13/jwalterweatherman v1.1.0 // indirect github.com/subosito/gotenv v1.2.0 // indirect - github.com/veraison/eat v0.0.0-20210331113810-3da8a4dd42ff // indirect github.com/x448/float16 v0.8.4 // indirect golang.org/x/crypto v0.31.0 // indirect golang.org/x/net v0.23.0 // indirect diff --git a/go.sum b/go.sum index 3ae66cf..5c2cd76 100644 --- a/go.sum +++ b/go.sum @@ -91,8 +91,8 @@ github.com/fsnotify/fsnotify v1.5.1 h1:mZcQUHVQUQWoPXXtuf9yuEXKudkV2sx1E06UadKWp github.com/fsnotify/fsnotify v1.5.1/go.mod h1:T3375wBYaZdLLcVNkcVbzGHY7f1l/uK5T5Ai1i3InKU= github.com/fxamacker/cbor/v2 v2.2.0/go.mod h1:TA1xS00nchWmaBnEIxPSE5oHLuJBAVvqrtAnWBwBCVo= github.com/fxamacker/cbor/v2 v2.3.0/go.mod h1:TA1xS00nchWmaBnEIxPSE5oHLuJBAVvqrtAnWBwBCVo= -github.com/fxamacker/cbor/v2 v2.7.0 h1:iM5WgngdRBanHcxugY4JySA0nk1wZorNOpTgCMedv5E= -github.com/fxamacker/cbor/v2 v2.7.0/go.mod h1:pxXPTn3joSm21Gbwsv0w9OSA2y1HFR9qXEeXQVeNoDQ= +github.com/fxamacker/cbor/v2 v2.8.0 h1:fFtUGXUzXPHTIUdne5+zzMPTfffl3RD5qYnkY40vtxU= +github.com/fxamacker/cbor/v2 v2.8.0/go.mod h1:vM4b+DJCtHn+zz7h3FFp/hDAI9WNWCsZj23V5ytsSxQ= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= @@ -323,16 +323,14 @@ github.com/subosito/gotenv v1.2.0 h1:Slr1R9HxAlEKefgq5jn9U+DnETlIUa6HfgEzj0g5d7s github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw= github.com/veraison/apiclient v0.3.1-0.20240807160142-9141ad363e45 h1:o+gCzGtusXZOOXuJavzvpraSk8ify4U60Aq9r/4vOho= github.com/veraison/apiclient v0.3.1-0.20240807160142-9141ad363e45/go.mod h1:LCXFZ3D/tJ3HLAOHUg8bnAKGvgTl53e1ntwdwjVbQ5A= -github.com/veraison/corim v1.1.3-0.20250619112130-f48404b84d34 h1:aI5rkyTG9JGRqMMlbn/ylATBs9jYHi+BHmE9ImgBETY= -github.com/veraison/corim v1.1.3-0.20250619112130-f48404b84d34/go.mod h1:fPCcsZuPVfLbkobgcpKV/HCJAIWXiI7xavEaq6ElbQI= -github.com/veraison/corim v1.1.3-0.20250709120018-e3379e6d507e h1:JtaVcARwSuH9PE1F6Ufcef7VGZqHTFrDKpVO/6YUPh0= -github.com/veraison/corim v1.1.3-0.20250709120018-e3379e6d507e/go.mod h1:fPCcsZuPVfLbkobgcpKV/HCJAIWXiI7xavEaq6ElbQI= +github.com/veraison/corim v1.1.3-0.20251209184640-2bc0f3805b95 h1:9510lMkuVAPdJpcOpvFGymhI5mWHKuh2o4E+EAD5Ums= +github.com/veraison/corim v1.1.3-0.20251209184640-2bc0f3805b95/go.mod h1:96PQ0lk+O9bzutKTDz66G2DaARYUp1BeR06EYwEwSH0= github.com/veraison/eat v0.0.0-20210331113810-3da8a4dd42ff h1:r6I2eJL/z8dp5flsQIKHMeDjyV6UO8If3MaVBLvTjF4= github.com/veraison/eat v0.0.0-20210331113810-3da8a4dd42ff/go.mod h1:+kxt8iuFiVvKRs2VQ1Ho7bbAScXAB/kHFFuP5Biw19I= github.com/veraison/go-cose v1.3.0 h1:2/H5w8kdSpQJyVtIhx8gmwPJ2uSz1PkyWFx0idbd7rk= github.com/veraison/go-cose v1.3.0/go.mod h1:df09OV91aHoQWLmy1KsDdYiagtXgyAwAl8vFeFn1gMc= -github.com/veraison/swid v1.1.1-0.20230911094910-8ffdd07a22ca h1:osmCKwWO/xM68Kz+rIXio1DNzEY2NdJOpGpoy5r8NlE= -github.com/veraison/swid v1.1.1-0.20230911094910-8ffdd07a22ca/go.mod h1:d5jt76uMNbTfQ+f2qU4Lt8RvWOTsv6PFgstIM1QdMH0= +github.com/veraison/swid v1.1.1-0.20251003121634-fd1f7f1e1897 h1:ze1ulqK70S7PRignyZzFDBJHNVEDyISk5FDv9Uh3UFw= +github.com/veraison/swid v1.1.1-0.20251003121634-fd1f7f1e1897/go.mod h1:d5jt76uMNbTfQ+f2qU4Lt8RvWOTsv6PFgstIM1QdMH0= github.com/x448/float16 v0.8.4 h1:qLwI1I70+NjRFUR3zs1JPUCgaCXSh3SW62uAKT1mSBM= github.com/x448/float16 v0.8.4/go.mod h1:14CWIYCyZA/cWjXOioeEpHeN/83MdbZDRQHoFcYsOfg= github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=