Encryption: Extract encryption into service (#38442)

* Add encryption service

* Add tests for encryption service

* Inject encryption service into http server

* Replace encryption global function usage in login tests

* Apply suggestions from code review

Co-authored-by: Emil Tullstedt <emil.tullstedt@grafana.com>

* Migrate to Wire

* Undo non-desired changes

* Move Encryption bindings to OSS Wire set

Co-authored-by: Joan López de la Franca Beltran <joanjan14@gmail.com>
Co-authored-by: Joan López de la Franca Beltran <5459617+joanlopez@users.noreply.github.com>
Co-authored-by: Emil Tullstedt <emil.tullstedt@grafana.com>
This commit is contained in:
Tania B
2021-08-30 19:39:55 +02:00
committed by GitHub
co-authored by Emil Tullstedt Joan López de la Franca Beltran Joan López de la Franca Beltran
parent 79e79fe244
commit a0108a1e5b
7 changed files with 161 additions and 22 deletions
@@ -0,0 +1,39 @@
package ossencryption
import (
"testing"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
func TestEncryption(t *testing.T) {
svc := Service{}
t.Run("getting encryption key", func(t *testing.T) {
key, err := encryptionKeyToBytes("secret", "salt")
require.NoError(t, err)
assert.Len(t, key, 32)
key, err = encryptionKeyToBytes("a very long secret key that is larger then 32bytes", "salt")
require.NoError(t, err)
assert.Len(t, key, 32)
})
t.Run("decrypting basic payload", func(t *testing.T) {
encrypted, err := svc.Encrypt([]byte("grafana"), "1234")
require.NoError(t, err)
decrypted, err := svc.Decrypt(encrypted, "1234")
require.NoError(t, err)
assert.Equal(t, []byte("grafana"), decrypted)
})
t.Run("decrypting empty payload should return error", func(t *testing.T) {
_, err := svc.Decrypt([]byte(""), "1234")
require.Error(t, err)
assert.Equal(t, "unable to compute salt", err.Error())
})
}