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  }