94 lines
2.1 KiB
Go
94 lines
2.1 KiB
Go
package speck_test
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"git.omicron.one/playground/cryptography/cipher"
|
|
"git.omicron.one/playground/cryptography/cipher/speck"
|
|
"github.com/stretchr/testify/assert"
|
|
)
|
|
|
|
func testKey(param speck.SpeckParameters) []byte {
|
|
switch param {
|
|
case speck.Speck3264:
|
|
return make([]byte, 64/8)
|
|
case speck.Speck4872:
|
|
return make([]byte, 72/8)
|
|
case speck.Speck4896, speck.Speck6496, speck.Speck9696:
|
|
return make([]byte, 96/8)
|
|
case speck.Speck64128, speck.Speck128128:
|
|
return make([]byte, 128/8)
|
|
case speck.Speck96144:
|
|
return make([]byte, 144/8)
|
|
case speck.Speck128192:
|
|
return make([]byte, 192/8)
|
|
case speck.Speck128256:
|
|
return make([]byte, 256/8)
|
|
}
|
|
panic("unreachable")
|
|
}
|
|
|
|
func TestNew(t *testing.T) {
|
|
notImplemented := []speck.SpeckParameters{
|
|
speck.Speck3264,
|
|
speck.Speck4872,
|
|
speck.Speck4896,
|
|
speck.Speck6496,
|
|
speck.Speck64128,
|
|
speck.Speck9696,
|
|
speck.Speck96144,
|
|
}
|
|
implemented := []speck.SpeckParameters{
|
|
speck.Speck128128,
|
|
speck.Speck128192,
|
|
speck.Speck128256,
|
|
}
|
|
|
|
for _, param := range notImplemented {
|
|
key := testKey(param)
|
|
ctx, err := speck.New(key, param)
|
|
assert.Nil(t, ctx)
|
|
assert.ErrorContains(t, err, "Not implemented")
|
|
}
|
|
|
|
for _, param := range implemented {
|
|
key := testKey(param)
|
|
ctx, err := speck.New(key, param)
|
|
assert.Nil(t, err)
|
|
assert.NotNil(t, ctx)
|
|
}
|
|
}
|
|
|
|
func TestInvalidKeyLength(t *testing.T) {
|
|
params := []speck.SpeckParameters{
|
|
speck.Speck3264,
|
|
speck.Speck4872,
|
|
speck.Speck4896,
|
|
speck.Speck6496,
|
|
speck.Speck64128,
|
|
speck.Speck9696,
|
|
speck.Speck96144,
|
|
speck.Speck128128,
|
|
speck.Speck128192,
|
|
speck.Speck128256,
|
|
}
|
|
for _, param := range params {
|
|
key := testKey(param)
|
|
ctx, err := speck.New(key[1:], param)
|
|
assert.Nil(t, ctx)
|
|
assert.ErrorIs(t, cipher.ErrInvalidKeyLength, err)
|
|
}
|
|
}
|
|
|
|
func TestInvalidParam(t *testing.T) {
|
|
assert.PanicsWithValue(t, "Invalid parameters", func() {
|
|
speck.New(nil, -1)
|
|
})
|
|
assert.PanicsWithValue(t, "Invalid parameters", func() {
|
|
speck.New(nil, 0)
|
|
})
|
|
assert.PanicsWithValue(t, "Invalid parameters", func() {
|
|
speck.New(nil, speck.Speck128256+1)
|
|
})
|
|
}
|