From 8dc8783bd492c72dbb56f67843d8df42032e5863 Mon Sep 17 00:00:00 2001 From: Zack Scholl Date: Sat, 27 Apr 2019 17:03:05 -0700 Subject: [PATCH] propogate errors --- src/crypt/crypt.go | 27 ++++++++++++++++++++------- src/crypt/crypt_test.go | 3 ++- 2 files changed, 22 insertions(+), 8 deletions(-) diff --git a/src/crypt/crypt.go b/src/crypt/crypt.go index d7a27ee..2be5793 100644 --- a/src/crypt/crypt.go +++ b/src/crypt/crypt.go @@ -36,22 +36,35 @@ func (e encryption) Salt() []byte { } // Encrypt will generate an encryption, prefixed with the IV -func (e encryption) Encrypt(plaintext []byte) []byte { +func (e encryption) Encrypt(plaintext []byte) (encrypted []byte, err error) { // generate a random iv each time // http://nvlpubs.nist.gov/nistpubs/Legacy/SP/nistspecialpublication800-38d.pdf // Section 8.2 ivBytes := make([]byte, 12) rand.Read(ivBytes) - b, _ := aes.NewCipher(e.key) - aesgcm, _ := cipher.NewGCM(b) - encrypted := aesgcm.Seal(nil, ivBytes, plaintext, nil) - return append(ivBytes, encrypted...) + b, err := aes.NewCipher(e.key) + if err != nil { + return + } + aesgcm, err := cipher.NewGCM(b) + if err != nil { + return + } + encrypted = aesgcm.Seal(nil, ivBytes, plaintext, nil) + encrypted = append(ivBytes, encrypted...) + return } // Decrypt an encryption func (e encryption) Decrypt(encrypted []byte) (plaintext []byte, err error) { - b, _ := aes.NewCipher(e.key) - aesgcm, _ := cipher.NewGCM(b) + b, err := aes.NewCipher(e.key) + if err != nil { + return + } + aesgcm, err := cipher.NewGCM(b) + if err != nil { + return + } plaintext, err = aesgcm.Open(nil, encrypted[:12], encrypted[12:], nil) return } diff --git a/src/crypt/crypt_test.go b/src/crypt/crypt_test.go index c80e510..29d891e 100644 --- a/src/crypt/crypt_test.go +++ b/src/crypt/crypt_test.go @@ -25,7 +25,8 @@ func TestEncryption(t *testing.T) { assert.Nil(t, err) jane, err := New([]byte("password"), bob.Salt()) assert.Nil(t, err) - enc := bob.Encrypt([]byte("hello, world")) + enc, err := bob.Encrypt([]byte("hello, world")) + assert.Nil(t, err) dec, err := jane.Decrypt(enc) assert.Nil(t, err) assert.Equal(t, dec, []byte("hello, world"))