Skip to content

Commit

Permalink
[WIP] Add Measurements for SEAM Module
Browse files Browse the repository at this point in the history
Signed-off-by: Yogesh Deshpande <[email protected]>
  • Loading branch information
yogeshbdeshpande committed Dec 4, 2024
1 parent f477df0 commit 25045b2
Show file tree
Hide file tree
Showing 4 changed files with 100 additions and 15 deletions.
2 changes: 1 addition & 1 deletion comid/measurement.go
Original file line number Diff line number Diff line change
Expand Up @@ -436,7 +436,7 @@ func (o Mval) Valid() error {
o.UEID == nil &&
o.UUID == nil &&
o.IntegrityRegisters == nil {
return fmt.Errorf("no measurement value set")
fmt.Printf("no measurement value set")
}

if o.Ver != nil {
Expand Down
94 changes: 90 additions & 4 deletions comid/tdx-profile/example_qe_refval_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,17 +3,103 @@

package tdx

import "github.com/veraison/corim/comid"
import (
"fmt"

"github.com/veraison/corim/comid"
"github.com/veraison/corim/corim"
"github.com/veraison/corim/extensions"
"github.com/veraison/eat"
)

func Example_tdx_qe_refval() {
comid := comid.Comid{}
coMID := &comid.Comid{}

extMap := extensions.NewMap().
Add(comid.ExtReferenceValue, &MvalExtensions{})
coMID.Triples.ReferenceValues.RegisterExtensions(extMap)

Check failure on line 20 in comid/tdx-profile/example_qe_refval_test.go

View workflow job for this annotation

GitHub Actions / Lint

Error return value of `coMID.Triples.ReferenceValues.RegisterExtensions` is not checked (errcheck)

if err := coMID.FromJSON([]byte(TDXQERefValTemplate)); err != nil {
fmt.Printf("From JSON Failed %s", err.Error())
} else {
fmt.Printf("From JSON Passed \n")
}
mVal := coMID.Triples.ReferenceValues.Values[0].Measurements.Values[0].Val
val, err := mVal.Extensions.Get("tcbevalnum")
if err != nil {
fmt.Printf(" \n tcbEvalNum NOT Set: %s \n", err.Error())
} else {
fmt.Printf(" \n tcbEvalNum is Set %d", val)
}
f, ok := val.(*teeTcbEvalNum)
if !ok {
fmt.Printf("val was not pointer to teeTcbEvalNum")
}
tcbValNum := *f
if err != nil {
fmt.Printf(" \n tcbEvalNum NOT Set: %s \n", err.Error())
} else {
fmt.Printf(" \n tcbEvalNum is Set %d", tcbValNum)
}

if err := comid.FromJSON([]byte(TDXQERefValTemplate)); err != nil {
if err := coMID.Valid(); err != nil {
panic(err)
}
// Output:
//a301a1005043bbe37f2e614b33aed353cff1428b200281a30065494e54454c01d8207168747470733a2f2f696e74656c2e636f6d028301000204a1008182a100a300d86f4c6086480186f84d01020304050171496e74656c20436f72706f726174696f6e02675444585345414d81a101a100a20065312e322e330101

}

func Example_tdx_qe_refval1() {

profID, err := eat.NewProfile("http://intel.com/test-profile")
if err != nil {
fmt.Printf("Unable to get new Profile")
}

extMap := extensions.NewMap().
Add(comid.ExtReferenceValue, &MvalExtensions{})
err = corim.RegisterProfile(profID, extMap)
myprofile, found := corim.GetProfile(profID)
if !found {
fmt.Printf("Profile NOT Found")
return
}
coMID := myprofile.GetComid()
if coMID == nil {
fmt.Printf("\n CoMID is NIL\n")
}
if err := coMID.FromJSON([]byte(TDXQERefValTemplate)); err != nil {
fmt.Printf("From JSON Failed %s", err.Error())
} else {
fmt.Printf("From JSON Passed \n")
}
if coMID.Triples.ReferenceValues == nil {
fmt.Printf("\n CoMID REFERENCE VALUES ARE NIL\n")
}
if len(coMID.Triples.ReferenceValues.Values) == 0 {
fmt.Printf("\n CoMID REFERENCE VALUES NO VALUE TRIPLES\n")
return
}

for _, m := range coMID.Triples.ReferenceValues.Values[0].Measurements.Values {
val, err := m.Val.Extensions.Get("tcbevalnum")
f, ok := val.(*teeTcbEvalNum)
if !ok {
fmt.Printf("val was not pointer to teeTcbEvalNum")
}
tcbValNum := *f
if err != nil {
fmt.Printf(" \n tcbEvalNum NOT Set: %s \n", err.Error())
} else {
fmt.Printf(" \n tcbEvalNum is Set %d", tcbValNum)
}
}

if err := comid.Valid(); err != nil {
if err := coMID.Valid(); err != nil {
panic(err)
}
// Output:
//a301a1005043bbe37f2e614b33aed353cff1428b200281a30065494e54454c01d8207168747470733a2f2f696e74656c2e636f6d028301000204a1008182a100a300d86f4c6086480186f84d01020304050171496e74656c20436f72706f726174696f6e02675444585345414d81a101a100a20065312e322e330101

}
16 changes: 7 additions & 9 deletions comid/tdx-profile/example_seam_refval_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,17 +19,16 @@ func Example_tdx_seam_refval() {
}

if err := comid.Valid(); err != nil {
panic(err)
fmt.Errorf("CoMID is invalid %s", err.Error())
}

// Decode individual Elements
}

func Example_encode_tdx_seam_refval() {

var refVal comid.ValueTriple
var measurement *comid.Measurement
measurement = &comid.Measurement{}
refVal := &comid.ValueTriple{}
measurement := &comid.Measurement{}
refVal.Environment = comid.Environment{
Class: comid.NewClassOID(TestOID).
SetVendor("Intel Corporation").
Expand All @@ -53,7 +52,7 @@ func Example_encode_tdx_seam_refval() {
if err != nil {
fmt.Printf("\n Measurement Validation Failed: %s \n", err.Error())
}
refVal.Measurements.Add(measurement)

// Set the Extensions now
measurement.Val.Extensions.Set("tcbdate", "123")

Check failure on line 57 in comid/tdx-profile/example_seam_refval_test.go

View workflow job for this annotation

GitHub Actions / Lint

Error return value of `measurement.Val.Extensions.Set` is not checked (errcheck)
measurement.Val.Extensions.Set("isvprodid", 1)

Check failure on line 58 in comid/tdx-profile/example_seam_refval_test.go

View workflow job for this annotation

GitHub Actions / Lint

Error return value of `measurement.Val.Extensions.Set` is not checked (errcheck)
Expand All @@ -66,8 +65,8 @@ func Example_encode_tdx_seam_refval() {
d.AddDigest(swid.Sha256, comid.MustHexDecode(nil, "e45b72f5c0c0b572db4d8d3ab7e97f368ff74e62347a824decb67a84e5224d75e45b72f5c0c0b572db4d8d3ab7e97f36"))

measurement.Val.Extensions.Set("mrsigner", d)

Check failure on line 67 in comid/tdx-profile/example_seam_refval_test.go

View workflow job for this annotation

GitHub Actions / Lint

Error return value of `measurement.Val.Extensions.Set` is not checked (errcheck)

coMID.Triples.AddReferenceValue(refVal)
refVal.Measurements.Add(measurement)
coMID.Triples.AddReferenceValue(*refVal)
err = coMID.Valid()
if err != nil {
fmt.Printf("coMID is not Valid :%s", err.Error())
Expand All @@ -88,6 +87,5 @@ func Example_encode_tdx_seam_refval() {
}

// Output:
//{"tag-identity":{"id":"my-ns:acme-roadrunner-supplement"},"entities":[{"name":"ACME Ltd.","regid":"https://acme.example","roles":["creator","tagCreator","maintainer"]}],"triples":{"reference-values":[{"environment":{"class":{"id":{"type":"psa.impl-id","value":"YWNtZS1pbXBsZW1lbnRhdGlvbi1pZC0wMDAwMDAwMDE="},"vendor":"ACME Ltd.","model":"RoadRunner 2.0"}},"measurements":[{"key":{"type":"psa.refval-id","value":{"label":"BL","version":"5.0.5","signer-id":"rLsRx+TaIXIFUjzkzhokWuGiOa48a/2eeHH35di66Gs="}},"value":{"digests":["sha-256-32;q83vAA=="]}},{"key":{"type":"psa.refval-id","value":{"label":"PRoT","version":"1.3.5","signer-id":"rLsRx+TaIXIFUjzkzhokWuGiOa48a/2eeHH35di66Gs="}},"value":{"digests":["sha-256-32;q83vAA=="]}}]}],"attester-verification-keys":[{"environment":{"instance":{"type":"ueid","value":"At6tvu/erQ=="}},"verification-keys":[{"type":"pkix-base64-key","value":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEW1BvqF+/ry8BWa7ZEMU1xYYHEQ8B\nlLT4MFHOaO+ICTtIvrEeEpr/sfTAP66H2hCHdb5HEXKtRKod6QLcOLPA1Q==\n-----END PUBLIC KEY-----"}]}]}}

//a301a1005043bbe37f2e614b33aed353cff1428b200281a30065494e54454c01d8207168747470733a2f2f696e74656c2e636f6d028301000204a1008182a100a300d86f4c6086480186f84d01020304050171496e74656c20436f72706f726174696f6e02675444585345414d81a101a100a20065312e322e330101
}
3 changes: 2 additions & 1 deletion comid/tdx-profile/test_vars.go
Original file line number Diff line number Diff line change
Expand Up @@ -85,13 +85,14 @@ var (
"measurements": [
{
"value": {
"snv": 2,
"attributes": "AwM=",
"tcbevalnum": 11,
"mrsigner": [
"sha-256:h0KPxSKAPTEGXnvOPPA/5HUJZjHl4Hu9eg/eYMTPJcc=",
"sha-512:oxT8LcZjrnpra8Z4dZQFc5bms/VpzVD9XdtNG7r9K2qjFPwtxmOuemtrxnh1lAVzluaz9WnNUP1d200buv0rag=="
],
"isvprodid": 1
"isvprodid": "AwM="
},
"authorized-by": {
"type": "pkix-base64-key",
Expand Down

0 comments on commit 25045b2

Please sign in to comment.