From c9e595e61bcde6a0b90fbebe0becb39bf1c6f618 Mon Sep 17 00:00:00 2001 From: Dimitri Sokolyuk Date: Thu, 20 Jul 2017 23:54:15 +0200 Subject: Don't panic --- bhash/bhash.go | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) (limited to 'bhash/bhash.go') diff --git a/bhash/bhash.go b/bhash/bhash.go index 0c1d659..614a30c 100644 --- a/bhash/bhash.go +++ b/bhash/bhash.go @@ -20,10 +20,10 @@ const ( ) // Hash computes bcrypt hash -func Hash(pass, salt []byte) []byte { +func Hash(pass, salt []byte) ([]byte, error) { c, err := blowfish.NewSaltedCipher(pass, salt) if err != nil { - panic(err) + return nil, err } // key expansion for i := 0; i < rounds; i++ { @@ -42,11 +42,11 @@ func Hash(pass, salt []byte) []byte { binary.Read(bytes.NewReader(v), binary.LittleEndian, &u) binary.Write(buf, binary.BigEndian, u) } - return buf.Bytes() + return buf.Bytes(), nil } // Pbkdf returns derivated key -func Pbkdf(pass, salt []byte, iter, keyLen int) []byte { +func Pbkdf(pass, salt []byte, iter, keyLen int) ([]byte, error) { // collapse password h := sha512.New() h.Write(pass) @@ -61,13 +61,19 @@ func Pbkdf(pass, salt []byte, iter, keyLen int) []byte { h.Reset() h.Write(salt) binary.Write(h, binary.BigEndian, uint32(n)) - tmp := Hash(sha2pass, h.Sum(nil)) + tmp, err := Hash(sha2pass, h.Sum(nil)) + if err != nil { + return nil, err + } copy(out, tmp) for i := 1; i < iter; i++ { h.Reset() h.Write(tmp) - tmp = Hash(sha2pass, h.Sum(nil)) + tmp, err = Hash(sha2pass, h.Sum(nil)) + if err != nil { + return nil, err + } for x := range tmp { out[x] ^= tmp[x] } @@ -78,5 +84,5 @@ func Pbkdf(pass, salt []byte, iter, keyLen int) []byte { key[dst] = out[x] } } - return key[:keyLen] + return key[:keyLen], nil } -- cgit v1.2.3