mirror of https://github.com/schollz/croc.git
propogate errors
This commit is contained in:
parent
f238c4b22c
commit
8dc8783bd4
|
@ -36,22 +36,35 @@ func (e encryption) Salt() []byte {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Encrypt will generate an encryption, prefixed with the IV
|
// 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
|
// generate a random iv each time
|
||||||
// http://nvlpubs.nist.gov/nistpubs/Legacy/SP/nistspecialpublication800-38d.pdf
|
// http://nvlpubs.nist.gov/nistpubs/Legacy/SP/nistspecialpublication800-38d.pdf
|
||||||
// Section 8.2
|
// Section 8.2
|
||||||
ivBytes := make([]byte, 12)
|
ivBytes := make([]byte, 12)
|
||||||
rand.Read(ivBytes)
|
rand.Read(ivBytes)
|
||||||
b, _ := aes.NewCipher(e.key)
|
b, err := aes.NewCipher(e.key)
|
||||||
aesgcm, _ := cipher.NewGCM(b)
|
if err != nil {
|
||||||
encrypted := aesgcm.Seal(nil, ivBytes, plaintext, nil)
|
return
|
||||||
return append(ivBytes, encrypted...)
|
}
|
||||||
|
aesgcm, err := cipher.NewGCM(b)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
encrypted = aesgcm.Seal(nil, ivBytes, plaintext, nil)
|
||||||
|
encrypted = append(ivBytes, encrypted...)
|
||||||
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
// Decrypt an encryption
|
// Decrypt an encryption
|
||||||
func (e encryption) Decrypt(encrypted []byte) (plaintext []byte, err error) {
|
func (e encryption) Decrypt(encrypted []byte) (plaintext []byte, err error) {
|
||||||
b, _ := aes.NewCipher(e.key)
|
b, err := aes.NewCipher(e.key)
|
||||||
aesgcm, _ := cipher.NewGCM(b)
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
aesgcm, err := cipher.NewGCM(b)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
plaintext, err = aesgcm.Open(nil, encrypted[:12], encrypted[12:], nil)
|
plaintext, err = aesgcm.Open(nil, encrypted[:12], encrypted[12:], nil)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
|
@ -25,7 +25,8 @@ func TestEncryption(t *testing.T) {
|
||||||
assert.Nil(t, err)
|
assert.Nil(t, err)
|
||||||
jane, err := New([]byte("password"), bob.Salt())
|
jane, err := New([]byte("password"), bob.Salt())
|
||||||
assert.Nil(t, err)
|
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)
|
dec, err := jane.Decrypt(enc)
|
||||||
assert.Nil(t, err)
|
assert.Nil(t, err)
|
||||||
assert.Equal(t, dec, []byte("hello, world"))
|
assert.Equal(t, dec, []byte("hello, world"))
|
||||||
|
|
Loading…
Reference in New Issue