@@ -3,6 +3,7 @@ package encryption
33import (
44 "crypto/rand"
55 "encoding/base64"
6+ "fmt"
67 "io"
78 "testing"
89
@@ -54,7 +55,7 @@ func TestEncryptAndDecrypt(t *testing.T) {
5455 t.Run(name, func(t *testing.T) {
5556 // Test all 3 valid AES sizes
5657 for _, secretSize := range []int{16, 24, 32} {
57− t.Run(string(secretSize), func(t *testing.T) {
58+ t.Run(fmt.Sprintf("%d", secretSize), func(t *testing.T) {
5859 secret := make([]byte, secretSize)
5960 _, err := io.ReadFull(rand.Reader, secret)
6061 assert.Equal(t, nil, err)
@@ -75,33 +76,8 @@ func TestEncryptAndDecrypt(t *testing.T) {
7576 t.Run(cName, func(t *testing.T) {
7677 // Test various sizes sessions might be
7778 for _, dataSize := range []int{10, 100, 1000, 5000, 10000} {
78− t.Run(string(dataSize), func(t *testing.T) {
79− data := make([]byte, dataSize)
80− _, err := io.ReadFull(rand.Reader, data)
81− assert.Equal(t, nil, err)
82−
83− // Ensure our Encrypt function doesn't encrypt in place
84− immutableData := make([]byte, len(data))
85− copy(immutableData, data)
86−
87− encrypted, err := c.Encrypt(data)
88− assert.Equal(t, nil, err)
89− assert.NotEqual(t, encrypted, data)
90− // Encrypt didn't operate in-place on []byte
91− assert.Equal(t, data, immutableData)
92−
93− // Ensure our Decrypt function doesn't decrypt in place
94− immutableEnc := make([]byte, len(encrypted))
95− copy(immutableEnc, encrypted)
96−
97− decrypted, err := c.Decrypt(encrypted)
98− assert.Equal(t, nil, err)
99− // Original data back
100− assert.Equal(t, data, decrypted)
101− // Decrypt didn't operate in-place on []byte
102− assert.Equal(t, encrypted, immutableEnc)
103− // Encrypt/Decrypt actually did something
104− assert.NotEqual(t, encrypted, decrypted)
79+ t.Run(fmt.Sprintf("%d", dataSize), func(t *testing.T) {
80+ runEncryptAndDecrypt(t, c, dataSize)
10581 })
10682 }
10783 })
@@ -112,6 +88,35 @@ func TestEncryptAndDecrypt(t *testing.T) {
11288 }
11389}
11490
91+func runEncryptAndDecrypt(t *testing.T, c Cipher, dataSize int) {
92+ data := make([]byte, dataSize)
93+ _, err := io.ReadFull(rand.Reader, data)
94+ assert.Equal(t, nil, err)
95+
96+ // Ensure our Encrypt function doesn't encrypt in place
97+ immutableData := make([]byte, len(data))
98+ copy(immutableData, data)
99+
100+ encrypted, err := c.Encrypt(data)
101+ assert.Equal(t, nil, err)
102+ assert.NotEqual(t, encrypted, data)
103+ // Encrypt didn't operate in-place on []byte
104+ assert.Equal(t, data, immutableData)
105+
106+ // Ensure our Decrypt function doesn't decrypt in place
107+ immutableEnc := make([]byte, len(encrypted))
108+ copy(immutableEnc, encrypted)
109+
110+ decrypted, err := c.Decrypt(encrypted)
111+ assert.Equal(t, nil, err)
112+ // Original data back
113+ assert.Equal(t, data, decrypted)
114+ // Decrypt didn't operate in-place on []byte
115+ assert.Equal(t, encrypted, immutableEnc)
116+ // Encrypt/Decrypt actually did something
117+ assert.NotEqual(t, encrypted, decrypted)
118+}
119+
115120func TestDecryptCFBWrongSecret(t *testing.T) {
116121 secret1 := []byte("0123456789abcdefghijklmnopqrstuv")
117122 secret2 := []byte("9876543210abcdefghijklmnopqrstuv")
@@ -156,7 +161,7 @@ func TestDecryptGCMWrongSecret(t *testing.T) {
156161func TestGCMtoCFBErrors(t *testing.T) {
157162 // Test all 3 valid AES sizes
158163 for _, secretSize := range []int{16, 24, 32} {
159− t.Run(string(secretSize), func(t *testing.T) {
164+ t.Run(fmt.Sprintf("%d", secretSize), func(t *testing.T) {
160165 secret := make([]byte, secretSize)
161166 _, err := io.ReadFull(rand.Reader, secret)
162167 assert.Equal(t, nil, err)
@@ -169,7 +174,7 @@ func TestGCMtoCFBErrors(t *testing.T) {
169174
170175 // Test various sizes sessions might be
171176 for _, dataSize := range []int{10, 100, 1000, 5000, 10000} {
172− t.Run(string(dataSize), func(t *testing.T) {
177+ t.Run(fmt.Sprintf("%d", dataSize), func(t *testing.T) {
173178 data := make([]byte, dataSize)
174179 _, err := io.ReadFull(rand.Reader, data)
175180 assert.Equal(t, nil, err)
@@ -193,7 +198,7 @@ func TestGCMtoCFBErrors(t *testing.T) {
193198func TestCFBtoGCMErrors(t *testing.T) {
194199 // Test all 3 valid AES sizes
195200 for _, secretSize := range []int{16, 24, 32} {
196− t.Run(string(secretSize), func(t *testing.T) {
201+ t.Run(fmt.Sprintf("%d", secretSize), func(t *testing.T) {
197202 secret := make([]byte, secretSize)
198203 _, err := io.ReadFull(rand.Reader, secret)
199204 assert.Equal(t, nil, err)
@@ -206,7 +211,7 @@ func TestCFBtoGCMErrors(t *testing.T) {
206211
207212 // Test various sizes sessions might be
208213 for _, dataSize := range []int{10, 100, 1000, 5000, 10000} {
209− t.Run(string(dataSize), func(t *testing.T) {
214+ t.Run(fmt.Sprintf("%d", dataSize), func(t *testing.T) {
210215 data := make([]byte, dataSize)
211216 _, err := io.ReadFull(rand.Reader, data)
212217 assert.Equal(t, nil, err)