~netlandish/gobwebs

ed867aa585bb18c2bb076837c5b8d458ca619748 — Peter Sanchez 1 year, 3 months ago dc0adb0
Using more secure random seeding
1 files changed, 3 insertions(+), 9 deletions(-)

M crypto/crypto.go
M crypto/crypto.go => crypto/crypto.go +3 -9
@@ 5,10 5,10 @@ import (
	"crypto/cipher"
	"crypto/rand"
	"encoding/base64"
	"encoding/binary"
	"errors"
	"io"
	mrand "math/rand"
	"time"
)

// ErrInvalidValue ...


@@ 37,17 37,11 @@ type KeyWallet struct {
func GenerateKey(keylen int, alpha bool) []byte {
	key := make([]byte, keylen)
	if alpha {
		var seed [8]byte
		_, err := rand.Read(seed[:])
		if err != nil {
			// XXX Panic?
			panic("cannot seed cryptographically secure random number generator")
		}
		mrand.Seed(int64(binary.LittleEndian.Uint64(seed[:])))
		r := mrand.New(mrand.NewSource(time.Now().UnixNano()))

		chars := `abcdefghijkmnpqrstuvwxyzABCDEFGHIJKLMNPQRSTUVWXYZ0123456789!@#$%^&*()-_=+[]{}\\|'";:/?.>,<`
		for i := 0; i < keylen; i++ {
			key[i] = chars[mrand.Intn(len(chars))]
			key[i] = chars[r.Intn(len(chars))]
		}
		return key
	}