Encrypt with GCM, Decrypt with CFB: Results in Garbage data
(t *testing.T)
| 160 | |
| 161 | // Encrypt with GCM, Decrypt with CFB: Results in Garbage data |
| 162 | func TestGCMtoCFBErrors(t *testing.T) { |
| 163 | // Test all 3 valid AES sizes |
| 164 | for _, secretSize := range []int{16, 24, 32} { |
| 165 | t.Run(fmt.Sprintf("%d", secretSize), func(t *testing.T) { |
| 166 | secret := make([]byte, secretSize) |
| 167 | _, err := io.ReadFull(rand.Reader, secret) |
| 168 | assert.Equal(t, nil, err) |
| 169 | |
| 170 | gcm, err := NewGCMCipher(secret) |
| 171 | assert.Equal(t, nil, err) |
| 172 | |
| 173 | cfb, err := NewCFBCipher(secret) |
| 174 | assert.Equal(t, nil, err) |
| 175 | |
| 176 | // Test various sizes sessions might be |
| 177 | for _, dataSize := range []int{10, 100, 1000, 5000, 10000} { |
| 178 | t.Run(fmt.Sprintf("%d", dataSize), func(t *testing.T) { |
| 179 | data := make([]byte, dataSize) |
| 180 | _, err := io.ReadFull(rand.Reader, data) |
| 181 | assert.Equal(t, nil, err) |
| 182 | |
| 183 | encrypted, err := gcm.Encrypt(data) |
| 184 | assert.Equal(t, nil, err) |
| 185 | assert.NotEqual(t, encrypted, data) |
| 186 | |
| 187 | decrypted, err := cfb.Decrypt(encrypted) |
| 188 | assert.Equal(t, nil, err) |
| 189 | // Data is mangled |
| 190 | assert.NotEqual(t, data, decrypted) |
| 191 | assert.NotEqual(t, encrypted, decrypted) |
| 192 | }) |
| 193 | } |
| 194 | }) |
| 195 | } |
| 196 | } |
| 197 | |
| 198 | // Encrypt with CFB, Decrypt with GCM: Results in errors |
| 199 | func TestCFBtoGCMErrors(t *testing.T) { |
nothing calls this directly
no test coverage detected