shad-go/blowfish/blowfish_test.go
Sergey Paramoshkin dc939b6ed1
update repo
2023-10-02 22:32:41 +03:00

50 lines
931 B
Go

package blowfish_test
import (
"crypto/cipher"
"encoding/binary"
"fmt"
"testing"
"github.com/stretchr/testify/require"
"gitlab.com/manytask/itmo-go/private/blowfish"
)
var _ cipher.Block = (*blowfish.Blowfish)(nil)
func TestBlowfish(t *testing.T) {
b := blowfish.New([]byte("kek"))
for i, testCase := range []struct {
in uint64
enc uint64
dec uint64
}{
{
in: 0x0,
enc: 0x03e009b8123919ea,
dec: 0xc5b3bba65042b0bf,
},
{
in: 0x0123456789abcdef,
enc: 0x1c7879d650892fe0,
dec: 0xf714799fdf68637c,
},
} {
var in, out, expected [8]byte
t.Run(fmt.Sprint(i), func(t *testing.T) {
binary.BigEndian.PutUint64(in[:], testCase.in)
b.Encrypt(out[:], in[:])
binary.BigEndian.PutUint64(expected[:], testCase.enc)
require.Equal(t, expected, out)
b.Decrypt(out[:], in[:])
binary.BigEndian.PutUint64(expected[:], testCase.dec)
require.Equal(t, expected, out)
})
}
}