2022-09-05 03:06:08 -04:00
|
|
|
/*
|
|
|
|
Copyright (c) Edgeless Systems GmbH
|
|
|
|
|
|
|
|
SPDX-License-Identifier: AGPL-3.0-only
|
|
|
|
*/
|
|
|
|
|
2022-08-01 03:11:13 -04:00
|
|
|
package attestation
|
|
|
|
|
|
|
|
import (
|
2023-03-08 08:13:57 -05:00
|
|
|
"bytes"
|
2022-08-01 03:11:13 -04:00
|
|
|
"testing"
|
|
|
|
|
2022-09-21 07:47:57 -04:00
|
|
|
"github.com/edgelesssys/constellation/v2/internal/crypto/testvector"
|
2022-08-01 03:11:13 -04:00
|
|
|
"github.com/stretchr/testify/assert"
|
|
|
|
"github.com/stretchr/testify/require"
|
|
|
|
)
|
|
|
|
|
|
|
|
func TestDeriveClusterID(t *testing.T) {
|
|
|
|
require := require.New(t)
|
|
|
|
assert := assert.New(t)
|
|
|
|
|
|
|
|
testvector := testvector.HKDFClusterID
|
|
|
|
clusterID, err := DeriveClusterID(testvector.Secret, testvector.Salt)
|
|
|
|
require.NoError(err)
|
|
|
|
assert.Equal(testvector.Output, clusterID)
|
|
|
|
|
|
|
|
clusterIDdiff, err := DeriveClusterID(testvector.Secret, []byte("different-salt"))
|
|
|
|
require.NoError(err)
|
|
|
|
assert.NotEqual(clusterID, clusterIDdiff)
|
|
|
|
|
|
|
|
clusterIDdiff, err = DeriveClusterID([]byte("different-secret"), testvector.Salt)
|
|
|
|
require.NoError(err)
|
|
|
|
assert.NotEqual(clusterID, clusterIDdiff)
|
|
|
|
}
|
2023-03-08 08:13:57 -05:00
|
|
|
|
|
|
|
func TestCompareExtraData(t *testing.T) {
|
|
|
|
testCases := map[string]struct {
|
|
|
|
ExtraData1 []byte
|
|
|
|
ExtraData2 []byte
|
|
|
|
Expected bool
|
|
|
|
}{
|
|
|
|
"equal": {
|
|
|
|
ExtraData1: bytes.Repeat([]byte{0xAB}, 32),
|
|
|
|
ExtraData2: bytes.Repeat([]byte{0xAB}, 32),
|
|
|
|
Expected: true,
|
|
|
|
},
|
|
|
|
"unequal": {
|
|
|
|
ExtraData1: bytes.Repeat([]byte{0xAB}, 32),
|
|
|
|
ExtraData2: bytes.Repeat([]byte{0xCD}, 32),
|
|
|
|
Expected: false,
|
|
|
|
},
|
|
|
|
"unequal length": {
|
|
|
|
ExtraData1: bytes.Repeat([]byte{0xAB}, 32),
|
|
|
|
ExtraData2: bytes.Repeat([]byte{0xAB}, 64),
|
|
|
|
Expected: false,
|
|
|
|
},
|
|
|
|
"unequal length, padded with 0": {
|
|
|
|
ExtraData1: []byte{0xAB, 0xAB, 0xAB, 0xAB},
|
|
|
|
ExtraData2: []byte{0xAB, 0xAB, 0xAB, 0xAB, 0x00, 0x00, 0x00, 0x00},
|
|
|
|
Expected: true,
|
|
|
|
},
|
|
|
|
"unequal length, prefixed with 0": {
|
|
|
|
ExtraData1: []byte{0x00, 0x00, 0x00, 0x00, 0xAB, 0xAB, 0xAB, 0xAB},
|
|
|
|
ExtraData2: []byte{0xAB, 0xAB, 0xAB, 0xAB},
|
|
|
|
Expected: false,
|
|
|
|
},
|
|
|
|
}
|
|
|
|
|
|
|
|
for name, tc := range testCases {
|
|
|
|
t.Run(name, func(t *testing.T) {
|
|
|
|
assert := assert.New(t)
|
|
|
|
|
|
|
|
actual := CompareExtraData(tc.ExtraData1, tc.ExtraData2)
|
|
|
|
assert.Equal(tc.Expected, actual)
|
|
|
|
actual = CompareExtraData(tc.ExtraData2, tc.ExtraData1)
|
|
|
|
assert.Equal(tc.Expected, actual)
|
|
|
|
})
|
|
|
|
}
|
|
|
|
}
|