Skip to content

Commit

Permalink
Add AdvisoryID Tests
Browse files Browse the repository at this point in the history
Signed-off-by: Yogesh Deshpande <[email protected]>
  • Loading branch information
yogeshbdeshpande committed Jan 27, 2025
1 parent aa0c483 commit a984e37
Show file tree
Hide file tree
Showing 6 changed files with 122 additions and 45 deletions.
26 changes: 13 additions & 13 deletions comid/tdx-profile/mval_extensions.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,19 +14,19 @@ import (
// MValExtensions contains the Intel TDX profile extensions which can appear in
// both Reference Values and Endorsed Values
type MValExtensions struct {
TcbDate *time.Time `cbor:"-72,keyasint,omitempty" json:"tcbdate,omitempty"`
IsvSVN *TeeSVN `cbor:"-73,keyasint,omitempty" json:"isvsvn,omitempty"`
InstanceID *TeeInstanceID `cbor:"-77,keyasint,omitempty" json:"instanceid,omitempty"`
PCEID *TeePCEID `cbor:"-80,keyasint,omitempty" json:"pceid,omitempty"`
MiscSelect *TeeMiscSelect `cbor:"-81,keyasint,omitempty" json:"miscselect,omitempty"`
Attributes *TeeAttributes `cbor:"-82,keyasint,omitempty" json:"attributes,omitempty"`
MrTee *TeeDigest `cbor:"-83,keyasint,omitempty" json:"mrtee,omitempty"`
MrSigner *TeeDigest `cbor:"-84,keyasint,omitempty" json:"mrsigner,omitempty"`
IsvProdID *TeeIsvProdID `cbor:"-85,keyasint,omitempty" json:"isvprodid,omitempty"`
TcbEvalNum *TeeTcbEvalNum `cbor:"-86,keyasint,omitempty" json:"tcbevalnum,omitempty"`
TcbStatus *TeeTcbStatus `cbor:"-88,keyasint,omitempty" json:"tcbstatus,omitempty"`
AdvisoryIDs *TeeAdvisoryID `cbor:"-89,keyasint,omitempty" json:"advisoryids,omitempty"`
Epoch *time.Time `cbor:"-90, keyasint,omitempty" json:"epoch,omitempty"`
TcbDate *time.Time `cbor:"-72,keyasint,omitempty" json:"tcbdate,omitempty"`
IsvSVN *TeeSVN `cbor:"-73,keyasint,omitempty" json:"isvsvn,omitempty"`
InstanceID *TeeInstanceID `cbor:"-77,keyasint,omitempty" json:"instanceid,omitempty"`
PCEID *TeePCEID `cbor:"-80,keyasint,omitempty" json:"pceid,omitempty"`
MiscSelect *TeeMiscSelect `cbor:"-81,keyasint,omitempty" json:"miscselect,omitempty"`
Attributes *TeeAttributes `cbor:"-82,keyasint,omitempty" json:"attributes,omitempty"`
MrTee *TeeDigest `cbor:"-83,keyasint,omitempty" json:"mrtee,omitempty"`
MrSigner *TeeDigest `cbor:"-84,keyasint,omitempty" json:"mrsigner,omitempty"`
IsvProdID *TeeIsvProdID `cbor:"-85,keyasint,omitempty" json:"isvprodid,omitempty"`
TcbEvalNum *TeeTcbEvalNum `cbor:"-86,keyasint,omitempty" json:"tcbevalnum,omitempty"`
TcbStatus *TeeTcbStatus `cbor:"-88,keyasint,omitempty" json:"tcbstatus,omitempty"`
AdvisoryIDs *TeeAdvisoryIDs `cbor:"-89,keyasint,omitempty" json:"advisoryids,omitempty"`
Epoch *time.Time `cbor:"-90, keyasint,omitempty" json:"epoch,omitempty"`

TeeCryptoKeys *comid.CryptoKeys `cbor:"-91, keyasint,omitempty" json:"teecryptokeys,omitempty"`
TCBCompSvn *TeeTcbCompSvn `cbor:"-125, keyasint,omitempty" json:"tcbcompsvn,omitempty"`
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,11 @@ package tdx

import "fmt"

type TeeAdvisoryID setType
type TeeAdvisoryIDs setType

func NewTeeAdvisory(val []any) *TeeAdvisoryID {
var adv TeeAdvisoryID
func NewAdvisoryIDs(val []any) *TeeAdvisoryIDs {
var adv TeeAdvisoryIDs
if len(val) == 0 {
fmt.Printf("nothing specified for val")
return nil
}

Expand All @@ -22,29 +21,29 @@ func NewTeeAdvisory(val []any) *TeeAdvisoryID {
return &adv
}

func (o *TeeAdvisoryID) AddAdvisory(val []any) error {
func (o *TeeAdvisoryIDs) AddAdvisoryIDs(val []any) error {
for _, v := range val {
switch t := v.(type) {
case string:
*o = append(*o, t)
default:
return fmt.Errorf("invalid type for tee advisory %T", t)
return fmt.Errorf("invalid type: %T for AdvisoryIDs", t)
}
}
return nil
}

func (o TeeAdvisoryID) IsValid() error {
func (o TeeAdvisoryIDs) Valid() error {
if len(o) == 0 {
return fmt.Errorf("empty tee advisory")
return fmt.Errorf("empty AdvisoryIDs")

}
for _, v := range o {
switch t := v.(type) {
case string:
continue
default:
return fmt.Errorf("invalid type for tee advisory %T", t)
return fmt.Errorf("invalid type: %T for AdvisoryIDs", t)
}
}
return nil
Expand Down
73 changes: 73 additions & 0 deletions comid/tdx-profile/teeadvisoryids_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
package tdx

import (
"testing"

"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)

func initAdvisoryIDs() []any {
s := make([]any, len(TestAdvisoryIDs))
for i := range TestAdvisoryIDs {
s[i] = TestAdvisoryIDs[i]
}
return s
}

func TestAdvisoryIDs_NewAdvisoryIDs_OK(t *testing.T) {
a := initAdvisoryIDs()
adv := NewAdvisoryIDs(a)
require.NotNil(t, adv)
}

func TestAdvisoryIDs_NewAdvisoryIDs_NOK(t *testing.T) {
a := make([]any, len(TestAdvisoryIDs))
for i := range TestAdvisoryIDs {
a[i] = i
}
adv := NewAdvisoryIDs(a)
require.Nil(t, adv)
}

func TestAdvisoryIDs_AddAdvisoryIDs_OK(t *testing.T) {
a := initAdvisoryIDs()
adv := TeeAdvisoryIDs{}
err := adv.AddAdvisoryIDs(a)
require.NoError(t, err)
}

func TestAdvisoryIDs_AddAdvisoryIDs_NOK(t *testing.T) {
expectedErr := "invalid type: float64 for AdvisoryIDs"
s := make([]any, len(TestInvalidAdvisoryIDs))
for i := range TestInvalidAdvisoryIDs {
s[i] = TestInvalidAdvisoryIDs[i]
}
adv := TeeAdvisoryIDs{}
err := adv.AddAdvisoryIDs(s)
assert.EqualError(t, err, expectedErr)
}

func TestAdvisoryIDs_Valid_OK(t *testing.T) {
a := initAdvisoryIDs()
adv := NewAdvisoryIDs(a)
err := adv.Valid()
require.NoError(t, err)
}

func TestAdvisoryIDs_Valid_NOK(t *testing.T) {
expectedErr := "empty AdvisoryIDs"
adv := TeeAdvisoryIDs{}
err := adv.Valid()
assert.EqualError(t, err, expectedErr)

expectedErr = "invalid type: float64 for AdvisoryIDs"
s := make([]any, len(TestInvalidAdvisoryIDs))
for i := range TestInvalidAdvisoryIDs {
s[i] = TestInvalidAdvisoryIDs[i]
}
adv = TeeAdvisoryIDs(s)
err = adv.Valid()
assert.EqualError(t, err, expectedErr)

}
2 changes: 1 addition & 1 deletion comid/tdx-profile/teetcbstatus.go
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ func (o *TeeTcbStatus) AddTcbStatus(val []any) error {
case string:
*o = append(*o, t)
default:
return fmt.Errorf("invalid type: %T for tee tcb status", t)
return fmt.Errorf("invalid type: %T for tcb status", t)
}
}
return nil
Expand Down
19 changes: 10 additions & 9 deletions comid/tdx-profile/teetcbstatus_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ func initTcbStatus() []any {
}
return s
}

func TestTcbStatus_NewTeeTcbStatus_OK(t *testing.T) {
s := initTcbStatus()
status := NewTeeTcbStatus(s)
Expand All @@ -40,10 +41,10 @@ func TestTcbStatus_AddTcbStatus_OK(t *testing.T) {
}

func TestTcbStatus_AddTcbStatus_NOK(t *testing.T) {
expectedErr := "invalid type: int for tee tcb status"
s := make([]any, len(TestTCBStatus))
for i := range TestTCBStatus {
s[i] = i
expectedErr := "invalid type: int for tcb status"
s := make([]any, len(TestInvalidTCBStatus))
for i := range TestInvalidTCBStatus {
s[i] = TestInvalidTCBStatus[i]
}
status := TeeTcbStatus{}
err := status.AddTcbStatus(s)
Expand All @@ -62,12 +63,12 @@ func TestTcbStatus_Valid_NOK(t *testing.T) {
status := TeeTcbStatus{}
err := status.Valid()
assert.EqualError(t, err, expectedErr)
expectedErr = "invalid type []interface {} for tcb status"
s := make([]any, len(TestTCBStatus))
for i := range TestTCBStatus {
s[i] = i
expectedErr = "invalid type int for tcb status"
s := make([]any, len(TestInvalidTCBStatus))
for i := range TestInvalidTCBStatus {
s[i] = TestInvalidTCBStatus[i]
}
status = TeeTcbStatus{s}
status = TeeTcbStatus(s)
err = status.Valid()
assert.EqualError(t, err, expectedErr)
}
30 changes: 17 additions & 13 deletions comid/tdx-profile/test_vars.go
Original file line number Diff line number Diff line change
@@ -1,19 +1,23 @@
package tdx

var (
TestRegID = "https://intel.com"
TestOID = "2.16.840.1.113741.1.2.3.4.5"
TestUIntInstance = 45
TestByteInstance = []byte{0x45, 0x46, 0x47}
TestInvalidProdID = -23
TestUIntISVProdID = 23
TestBytesISVProdID = []byte{0x01, 0x02, 0x03}
TestInvalidInstance = -1
TestTeeAttributes = []byte{0x09, 0x0A, 0x0B}
TestTeeMiscSelect = []byte{0x0B, 0x0C, 0x0D}
TestPCEID = "PCEID001"
TestCompSVN = []uint{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}
TestTCBStatus = []string{"OutOfDate", "ConfigurationNeeded", "UpToDate"}
TestRegID = "https://intel.com"
TestOID = "2.16.840.1.113741.1.2.3.4.5"
TestUIntInstance = 45
TestByteInstance = []byte{0x45, 0x46, 0x47}
TestInvalidProdID = -23
TestUIntISVProdID = 23
TestBytesISVProdID = []byte{0x01, 0x02, 0x03}
TestInvalidInstance = -1
TestTeeAttributes = []byte{0x09, 0x0A, 0x0B}
TestTeeMiscSelect = []byte{0x0B, 0x0C, 0x0D}
TestPCEID = "PCEID001"
TestCompSVN = []uint{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}
TestTCBStatus = []string{"OutOfDate", "ConfigurationNeeded", "UpToDate"}
TestInvalidTCBStatus = []int{1, 2, 3}
TestAdvisoryIDs = []string{"SA-00078", "SA-00077", "SA-00079"}
TestInvalidAdvisoryIDs = []float64{1.234, 2.567}

TDXPCERefValTemplate = `{
"lang": "en-GB",
"tag-identity": {
Expand Down

0 comments on commit a984e37

Please sign in to comment.