wormhole/node/pkg/common/symmetric_test.go

62 lines
1.8 KiB
Go

package common
import (
"encoding/hex"
"testing"
"github.com/stretchr/testify/assert"
)
func TestAESGCM(t *testing.T) {
type test struct {
data []byte
enc string
}
key := []byte("01234567890123456789012345678901")
tests := []test{
{data: []byte("lower"), enc: "7b3023dde90ca9598eff203d92145d0c363c61743edf23110bee39c1b01200fc6f"},
{data: []byte("UPPER"), enc: "f70a6549fd8a004551f2f3aeebc74d03efd3520aace6bd51f1b38cac8a94aae352"},
{data: []byte("Mixed"), enc: "95af0109040796bda46a223acebca97305aff135bd628ce70812d59a13c1a821ac"},
{data: []byte("AlphaNum1"), enc: "6385f1d2ae006fc7fa2b5e0b74f12b71bf25e2ec3d9ee70baf142703a7c187de08a22806d3"},
{data: []byte("12345"), enc: "bd083e01ca72af788a04866ddd9c0d061f64bc0a0e0d23432fbf1d6fcc724c126c"},
}
for _, testCase := range tests {
// Verify that we can encrypt plain text
t.Run(string(testCase.data), func(t *testing.T) {
enc, err := EncryptAESGCM(testCase.data, key)
assert.Nil(t, err)
assert.NotNil(t, enc)
// AESGCM is non-deterministic, so we cannot expect consistent cipher text
})
// Verify that we can decrypt cipher text
t.Run(string(testCase.data), func(t *testing.T) {
// Convert the test hexified cipher text back to bytes, mostly for testcase readability purposes
enc, err := hex.DecodeString(testCase.enc)
assert.Nil(t, err)
assert.NotNil(t, enc)
dec, err := DecryptAESGCM(enc, key)
assert.Nil(t, err)
assert.NotNil(t, dec)
assert.Equal(t, testCase.data, dec)
})
// Verify that we can encrypt plain text, decrypt cipher text, and verify that both match
t.Run(string(testCase.data), func(t *testing.T) {
enc, err := EncryptAESGCM(testCase.data, key)
assert.Nil(t, err)
assert.NotNil(t, enc)
dec, err := DecryptAESGCM(enc, key)
assert.Nil(t, err)
assert.NotNil(t, dec)
assert.Equal(t, testCase.data, dec)
})
}
}