github.com/hairyhenderson/gomplate/v4@v4.0.0-pre-2.0.20240520121557-362f058f0c93/crypto/aes_test.go (about) 1 package crypto 2 3 import ( 4 "bytes" 5 "testing" 6 7 "github.com/stretchr/testify/assert" 8 "github.com/stretchr/testify/require" 9 ) 10 11 func TestEncryptDecryptAESCBC(t *testing.T) { 12 // empty key is invalid 13 _, err := EncryptAESCBC([]byte{}, []byte("foo")) 14 require.Error(t, err) 15 16 // wrong-length keys are invalid 17 _, err = EncryptAESCBC(bytes.Repeat([]byte{'a'}, 1), []byte("foo")) 18 require.Error(t, err) 19 20 _, err = EncryptAESCBC(bytes.Repeat([]byte{'a'}, 15), []byte("foo")) 21 require.Error(t, err) 22 23 key := make([]byte, 32) 24 copy(key, []byte("password")) 25 26 // empty content is a pass-through 27 out, err := EncryptAESCBC(key, []byte{}) 28 require.NoError(t, err) 29 assert.Equal(t, []byte{}, out) 30 31 testdata := [][]byte{ 32 bytes.Repeat([]byte{'a'}, 1), 33 bytes.Repeat([]byte{'a'}, 15), 34 bytes.Repeat([]byte{'a'}, 16), 35 bytes.Repeat([]byte{'a'}, 31), 36 bytes.Repeat([]byte{'a'}, 32), 37 } 38 39 for _, d := range testdata { 40 out, err = EncryptAESCBC(key, d) 41 require.NoError(t, err) 42 assert.NotEqual(t, d, out) 43 44 out, err = DecryptAESCBC(key, out) 45 require.NoError(t, err) 46 assert.Equal(t, d, out) 47 } 48 49 // 128-bit key 50 key = bytes.Repeat([]byte{'a'}, 16) 51 out, err = EncryptAESCBC(key, []byte("foo")) 52 require.NoError(t, err) 53 assert.NotEqual(t, []byte("foo"), out) 54 55 out, err = DecryptAESCBC(key, out) 56 require.NoError(t, err) 57 assert.Equal(t, []byte("foo"), out) 58 59 // 192-bit key 60 key = bytes.Repeat([]byte{'a'}, 24) 61 out, err = EncryptAESCBC(key, []byte("foo")) 62 require.NoError(t, err) 63 assert.NotEqual(t, []byte("foo"), out) 64 65 out, err = DecryptAESCBC(key, out) 66 require.NoError(t, err) 67 assert.Equal(t, []byte("foo"), out) 68 }