Skip to content

Commit

Permalink
[WIP] Add Integrity Registers
Browse files Browse the repository at this point in the history
Signed-off-by: Yogesh Deshpande <[email protected]>
  • Loading branch information
yogeshbdeshpande committed Jan 26, 2024
1 parent da24191 commit 0ebbb33
Show file tree
Hide file tree
Showing 3 changed files with 96 additions and 1 deletion.
47 changes: 47 additions & 0 deletions comid/integregisters.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
// Copyright 2024 Contributors to the Veraison project.
// SPDX-License-Identifier: Apache-2.0
package comid

import (
"fmt"

"github.com/veraison/swid"
)

// IRegisterIndex is the interface that must be implemented by a;; RegisterValues.
type IRegisterIndex interface{}

type IntegReg struct {
register map[IRegisterIndex]Digests
}

func NewIntegRegister() (*IntegReg, error) {
reg := make(map[IRegisterIndex]Digests)
return &IntegReg{register: reg}, nil
}

func (i *IntegReg) AddDigest(index IRegisterIndex, digest swid.HashEntry) error {
switch t := index.(type) {
case string, uint, int, uint64:
digests, _ := i.register[t]
digests = append(digests, digest)
i.register[t] = digests

default:
return fmt.Errorf("unexpected type for int: %T", t)
}
return nil
}

func (i *IntegReg) RemoveDigest(index IRegisterIndex, digest swid.HashEntry) error {

return nil
}

func (o IntegReg) MarshalCBOR() ([]byte, error) {

Check failure on line 41 in comid/integregisters.go

View workflow job for this annotation

GitHub Actions / Lint

receiver-naming: receiver name o should be consistent with previous receiver name i for IntegReg (revive)
return em.Marshal(o.register)
}

func (o *IntegReg) UnMarshalCBOR(data []byte) error {

Check failure on line 45 in comid/integregisters.go

View workflow job for this annotation

GitHub Actions / Lint

receiver-naming: receiver name o should be consistent with previous receiver name i for IntegReg (revive)
return dm.Unmarshal(data, &o.register)
}
48 changes: 48 additions & 0 deletions comid/integregisters_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
// Copyright 2024 Contributors to the Veraison project.
// SPDX-License-Identifier: Apache-2.0

package comid

import (
"fmt"
"testing"

"github.com/stretchr/testify/require"
"github.com/veraison/swid"
)

func TestIntegRegister_MarshalCBOR_OK(t *testing.T) {
bank, err := NewIntegRegister()
require.NoError(t, err)

entry := &swid.HashEntry{}

hash := []byte("124354658697908012435465869790801243546586979080")
err = entry.Set(swid.Sha384, hash)
require.NoError(t, err)
err = bank.AddDigest(0, *entry)

require.NoError(t, err)
err = bank.AddDigest(1, *entry)
require.NoError(t, err)
err = bank.AddDigest(2, *entry)
require.NoError(t, err)
hash1 := []byte("124354658697908012435465869790801243546586979090")
err = entry.Set(swid.Sha384, hash1)
require.NoError(t, err)
err = bank.AddDigest(0, *entry)
require.NoError(t, err)
bytes, err := bank.MarshalCBOR()
require.NoError(t, err)
fmt.Printf("CBOR Payload = %x", bytes)

}

func TestINtegRegister_UnMarshalCBOR_OK(t *testing.T) {
bstr := MustHexDecode(nil, `a302818207583031323433353436353836393739303830313234333534363538363937393038303132343335343635383639373930383000828207583031323433353436353836393739303830313234333534363538363937393038303132343335343635383639373930383082075830313234333534363538363937393038303132343335343635383639373930383031323433353436353836393739303930018182075830313234333534363538363937393038303132343335343635383639373930383031323433353436353836393739303830`)
bank, err := NewIntegRegister()
require.NoError(t, err)
err = bank.UnMarshalCBOR(bstr)
require.NoError(t, err)

}
2 changes: 1 addition & 1 deletion comid/measurement.go
Original file line number Diff line number Diff line change
Expand Up @@ -310,7 +310,7 @@ type Mval struct {
SerialNumber *string `cbor:"8,keyasint,omitempty" json:"serial-number,omitempty"`
UEID *eat.UEID `cbor:"9,keyasint,omitempty" json:"ueid,omitempty"`
UUID *UUID `cbor:"10,keyasint,omitempty" json:"uuid,omitempty"`

IntegReg *IntegReg `cbor:"14,keyasint,omitempty" json:"integ-reg,omitempty"`
Extensions
}

Expand Down

0 comments on commit 0ebbb33

Please sign in to comment.