@@ -105,14 +105,14 @@ func TestEncodeAndDecodeAccessToken(t *testing.T) {
105105 c, err := NewCipher([]byte(secret))
106106 assert.Equal(t, nil, err)
107107
108− encoded, err := c.Encrypt(token)
108+ encoded, err := c.Encrypt([]byte(token))
109109 assert.Equal(t, nil, err)
110110
111111 decoded, err := c.Decrypt(encoded)
112112 assert.Equal(t, nil, err)
113113
114− assert.NotEqual(t, token, encoded)
115− assert.Equal(t, token, decoded)
114+ assert.NotEqual(t, []byte(token), encoded)
115+ assert.Equal(t, []byte(token), decoded)
116116}
117117
118118func TestEncodeAndDecodeAccessTokenB64(t *testing.T) {
@@ -124,14 +124,115 @@ func TestEncodeAndDecodeAccessTokenB64(t *testing.T) {
124124 c, err := NewCipher([]byte(secret))
125125 assert.Equal(t, nil, err)
126126
127− encoded, err := c.Encrypt(token)
127+ encoded, err := c.Encrypt([]byte(token))
128128 assert.Equal(t, nil, err)
129129
130130 decoded, err := c.Decrypt(encoded)
131131 assert.Equal(t, nil, err)
132132
133− assert.NotEqual(t, token, encoded)
134− assert.Equal(t, token, decoded)
133+ assert.NotEqual(t, []byte(token), encoded)
134+ assert.Equal(t, []byte(token), decoded)
135+}
136+
137+func TestEncryptAndDecryptBase64(t *testing.T) {
138+ var err error
139+
140+ // Test all 3 valid AES sizes
141+ for _, secretSize := range []int{16, 24, 32} {
142+ secret := make([]byte, secretSize)
143+ _, err = io.ReadFull(rand.Reader, secret)
144+ assert.Equal(t, nil, err)
145+
146+ // NewCipher creates a Base64 wrapper of CFBCipher
147+ c, err := NewCipher(secret)
148+ assert.Equal(t, nil, err)
149+
150+ // Test various sizes sessions might be
151+ for _, dataSize := range []int{10, 100, 1000, 5000, 10000} {
152+ data := make([]byte, dataSize)
153+ _, err := io.ReadFull(rand.Reader, data)
154+ assert.Equal(t, nil, err)
155+
156+ encrypted, err := c.Encrypt(data)
157+ assert.Equal(t, nil, err)
158+
159+ decrypted, err := c.Decrypt(encrypted)
160+ assert.Equal(t, nil, err)
161+ assert.Equal(t, data, decrypted)
162+ }
163+ }
164+}
165+
166+func TestDecryptBase64WrongSecret(t *testing.T) {
167+ var err error
168+
169+ secret1 := []byte("0123456789abcdefghijklmnopqrstuv")
170+ secret2 := []byte("9876543210abcdefghijklmnopqrstuv")
171+
172+ c1, err := NewCipher(secret1)
173+ assert.Equal(t, nil, err)
174+
175+ c2, err := NewCipher(secret2)
176+ assert.Equal(t, nil, err)
177+
178+ data := []byte("f3928pufm982374dj02y485dsl34890u2t9nd4028s94dm58y2394087dhmsyt29h8df")
179+
180+ ciphertext, err := c1.Encrypt(data)
181+ assert.Equal(t, nil, err)
182+
183+ wrongData, err := c2.Decrypt(ciphertext)
184+ assert.Equal(t, nil, err)
185+ assert.NotEqual(t, data, wrongData)
186+}
187+
188+func TestEncryptAndDecryptCFB(t *testing.T) {
189+ var err error
190+
191+ // Test all 3 valid AES sizes
192+ for _, secretSize := range []int{16, 24, 32} {
193+ secret := make([]byte, secretSize)
194+ _, err = io.ReadFull(rand.Reader, secret)
195+ assert.Equal(t, nil, err)
196+
197+ c, err := NewCFBCipher(secret)
198+ assert.Equal(t, nil, err)
199+
200+ // Test various sizes sessions might be
201+ for _, dataSize := range []int{10, 100, 1000, 5000, 10000} {
202+ data := make([]byte, dataSize)
203+ _, err := io.ReadFull(rand.Reader, data)
204+ assert.Equal(t, nil, err)
205+
206+ encrypted, err := c.Encrypt(data)
207+ assert.Equal(t, nil, err)
208+
209+ decrypted, err := c.Decrypt(encrypted)
210+ assert.Equal(t, nil, err)
211+ assert.Equal(t, data, decrypted)
212+ }
213+ }
214+}
215+
216+func TestDecryptCFBWrongSecret(t *testing.T) {
217+ var err error
218+
219+ secret1 := []byte("0123456789abcdefghijklmnopqrstuv")
220+ secret2 := []byte("9876543210abcdefghijklmnopqrstuv")
221+
222+ c1, err := NewCFBCipher(secret1)
223+ assert.Equal(t, nil, err)
224+
225+ c2, err := NewCFBCipher(secret2)
226+ assert.Equal(t, nil, err)
227+
228+ data := []byte("f3928pufm982374dj02y485dsl34890u2t9nd4028s94dm58y2394087dhmsyt29h8df")
229+
230+ ciphertext, err := c1.Encrypt(data)
231+ assert.Equal(t, nil, err)
232+
233+ wrongData, err := c2.Decrypt(ciphertext)
234+ assert.Equal(t, nil, err)
235+ assert.NotEqual(t, data, wrongData)
135236}
136237
137238func TestEncodeIntoAndDecodeIntoAccessToken(t *testing.T) {