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