diff --git a/encryption/encryption.go b/encryption/encryption.go index 909d48cc9936341be6191e7165422cc25ae7a029..a940f01037d19ffd8016d76c8029a5a7e2b16cd4 100644 --- a/encryption/encryption.go +++ b/encryption/encryption.go @@ -27,41 +27,49 @@ func Md5HashString(bytesToHash []byte) string { } func Encrypt(plaintext string, key string) (string, error) { - c, err := aes.NewCipher([]byte(key)) + if len(key) != 32 { + return "", errors.New("key should be 32 bytes") + } + + block, err := aes.NewCipher([]byte(key)) if err != nil { return "", err } - gcm, err := cipher.NewGCM(c) + aesGcm, err := cipher.NewGCM(block) if err != nil { return "", err } - nonce := make([]byte, gcm.NonceSize()) + nonce := make([]byte, aesGcm.NonceSize()) if _, err = io.ReadFull(rand.Reader, nonce); err != nil { return "", err } - return string(gcm.Seal(nonce, nonce, []byte(plaintext), nil)), nil + return string(aesGcm.Seal(nonce, nonce, []byte(plaintext), nil)), nil } func Decrypt(ciphertext string, key string) (string, error) { - c, err := aes.NewCipher([]byte(key)) + if len(key) != 32 { + return "", errors.New("key should be 32 bytes") + } + + block, err := aes.NewCipher([]byte(key)) if err != nil { return "", err } - gcm, err := cipher.NewGCM(c) + aesGcm, err := cipher.NewGCM(block) if err != nil { return "", err } - nonceSize := gcm.NonceSize() + nonceSize := aesGcm.NonceSize() if len(ciphertext) < nonceSize { return "", errors.New("ciphertext too short") } nonce, ciphertext := ciphertext[:nonceSize], ciphertext[nonceSize:] - value, err := gcm.Open(nil, []byte(nonce), []byte(ciphertext), nil) + value, err := aesGcm.Open(nil, []byte(nonce), []byte(ciphertext), nil) return string(value), err }