@@ -102,7 +102,7 @@ func TestSignAndValidate(t *testing.T) {
102102func TestEncodeAndDecodeAccessToken(t *testing.T) {
103103 const secret = "0123456789abcdefghijklmnopqrstuv"
104104 const token = "my access token"
105− c, err := NewCipher([]byte(secret))
105+ c, err := NewBase64Cipher(NewCFBCipher, []byte(secret))
106106 assert.Equal(t, nil, err)
107107
108108 encoded, err := c.Encrypt([]byte(token))
@@ -121,7 +121,7 @@ func TestEncodeAndDecodeAccessTokenB64(t *testing.T) {
121121
122122 secret, err := base64.URLEncoding.DecodeString(secretBase64)
123123 assert.Equal(t, nil, err)
124− c, err := NewCipher([]byte(secret))
124+ c, err := NewBase64Cipher(NewCFBCipher, []byte(secret))
125125 assert.Equal(t, nil, err)
126126
127127 encoded, err := c.Encrypt([]byte(token))
@@ -135,14 +135,12 @@ func TestEncodeAndDecodeAccessTokenB64(t *testing.T) {
135135}
136136
137137func TestEncryptAndDecrypt(t *testing.T) {
138− var err error
139−
140− // Test our 3 cipher types
141− for _, initCipher := range []func([]byte) (Cipher, error){NewCipher, NewCFBCipher, NewGCMCipher} {
138+ // Test our 2 cipher types
139+ for _, initCipher := range []func([]byte) (Cipher, error){NewCFBCipher, NewGCMCipher} {
142140 // Test all 3 valid AES sizes
143141 for _, secretSize := range []int{16, 24, 32} {
144142 secret := make([]byte, secretSize)
145− _, err = io.ReadFull(rand.Reader, secret)
143+ _, err := io.ReadFull(rand.Reader, secret)
146144 assert.Equal(t, nil, err)
147145
148146 c, err := initCipher(secret)
@@ -167,27 +165,55 @@ func TestEncryptAndDecrypt(t *testing.T) {
167165 }
168166}
169167
170−func TestDecryptWrongSecret(t *testing.T) {
168+func TestEncryptAndDecryptBase64(t *testing.T) {
169+ // Test our cipher types wrapped in Base64 encoder
170+ for _, initCipher := range []func([]byte) (Cipher, error){NewCFBCipher, NewGCMCipher} {
171+ // Test all 3 valid AES sizes
172+ for _, secretSize := range []int{16, 24, 32} {
173+ secret := make([]byte, secretSize)
174+ _, err := io.ReadFull(rand.Reader, secret)
175+ assert.Equal(t, nil, err)
176+
177+ c, err := NewBase64Cipher(initCipher, secret)
178+ assert.Equal(t, nil, err)
179+
180+ // Test various sizes sessions might be
181+ for _, dataSize := range []int{10, 100, 1000, 5000, 10000} {
182+ data := make([]byte, dataSize)
183+ _, err := io.ReadFull(rand.Reader, data)
184+ assert.Equal(t, nil, err)
185+
186+ encrypted, err := c.Encrypt(data)
187+ assert.Equal(t, nil, err)
188+ assert.NotEqual(t, encrypted, data)
189+
190+ decrypted, err := c.Decrypt(encrypted)
191+ assert.Equal(t, nil, err)
192+ assert.Equal(t, data, decrypted)
193+ assert.NotEqual(t, encrypted, decrypted)
194+ }
195+ }
196+ }
197+}
198+
199+func TestDecryptCFBWrongSecret(t *testing.T) {
171200 secret1 := []byte("0123456789abcdefghijklmnopqrstuv")
172201 secret2 := []byte("9876543210abcdefghijklmnopqrstuv")
173202
174− // Test CFB & Base64 (GCM is authenticated, it errors differently)
175− for _, initCipher := range []func([]byte) (Cipher, error){NewCipher, NewCFBCipher} {
176− c1, err := initCipher(secret1)
177− assert.Equal(t, nil, err)
203+ c1, err := NewCFBCipher(secret1)
204+ assert.Equal(t, nil, err)
178205
179− c2, err := initCipher(secret2)
180− assert.Equal(t, nil, err)
206+ c2, err := NewCFBCipher(secret2)
207+ assert.Equal(t, nil, err)
181208
182− data := []byte("f3928pufm982374dj02y485dsl34890u2t9nd4028s94dm58y2394087dhmsyt29h8df")
209+ data := []byte("f3928pufm982374dj02y485dsl34890u2t9nd4028s94dm58y2394087dhmsyt29h8df")
183210
184− ciphertext, err := c1.Encrypt(data)
185− assert.Equal(t, nil, err)
211+ ciphertext, err := c1.Encrypt(data)
212+ assert.Equal(t, nil, err)
186213
187− wrongData, err := c2.Decrypt(ciphertext)
188− assert.Equal(t, nil, err)
189− assert.NotEqual(t, data, wrongData)
190− }
214+ wrongData, err := c2.Decrypt(ciphertext)
215+ assert.Equal(t, nil, err)
216+ assert.NotEqual(t, data, wrongData)
191217}
192218
193219func TestDecryptGCMWrongSecret(t *testing.T) {
@@ -211,13 +237,11 @@ func TestDecryptGCMWrongSecret(t *testing.T) {
211237}
212238
213239func TestIntermixCiphersErrors(t *testing.T) {
214− var err error
215−
216240 // Encrypt with GCM, Decrypt with CFB: Results in Garbage data
217241 // Test all 3 valid AES sizes
218242 for _, secretSize := range []int{16, 24, 32} {
219243 secret := make([]byte, secretSize)
220− _, err = io.ReadFull(rand.Reader, secret)
244+ _, err := io.ReadFull(rand.Reader, secret)
221245 assert.Equal(t, nil, err)
222246
223247 gcm, err := NewGCMCipher(secret)
@@ -248,7 +272,7 @@ func TestIntermixCiphersErrors(t *testing.T) {
248272 // Test all 3 valid AES sizes
249273 for _, secretSize := range []int{16, 24, 32} {
250274 secret := make([]byte, secretSize)
251− _, err = io.ReadFull(rand.Reader, secret)
275+ _, err := io.ReadFull(rand.Reader, secret)
252276 assert.Equal(t, nil, err)
253277
254278 gcm, err := NewGCMCipher(secret)