From 3edaad9317db280db903a18ec85a70e6c32cabf9 Mon Sep 17 00:00:00 2001 From: Alex Auvolat Date: Mon, 27 Jan 2020 17:01:32 +0100 Subject: [PATCH] Use better randomness --- main.go | 9 ++++++--- ssha.go | 8 ++++++-- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/main.go b/main.go index bc81384..d665caf 100644 --- a/main.go +++ b/main.go @@ -12,7 +12,7 @@ import ( "fmt" "io/ioutil" "log" - "math/rand" + "crypto/rand" "os" "os/signal" "syscall" @@ -264,7 +264,10 @@ func (server *Server) init() error { } admin_pass := make([]byte, 8) - rand.Read(admin_pass) + _, err = rand.Read(admin_pass) + if err != nil { + return err + } admin_pass_str := base64.RawURLEncoding.EncodeToString(admin_pass) admin_pass_hash := SSHAEncode([]byte(admin_pass_str)) @@ -286,7 +289,7 @@ func (server *Server) init() error { } server.logger.Printf( - "It seems to be a new installation, we created a default user for you:\n\n dn: %s\n password: %s\n\nWe didn't use true random, you should replace it as soon as possible.", + "It seems to be a new installation, we created a default user for you:\n\n dn: %s\n password: %s\n\nWe recommend replacing it as soon as possible.", admin_dn, admin_pass_str, ) diff --git a/ssha.go b/ssha.go index f1c5a8b..134c058 100644 --- a/ssha.go +++ b/ssha.go @@ -1,11 +1,12 @@ package main import ( + "log" "bytes" "crypto/sha1" "encoding/base64" "fmt" - "math/rand" + "crypto/rand" ) // Encode encodes the []byte of raw password @@ -38,7 +39,10 @@ func SSHAMatches(encodedPassPhrase string, rawPassPhrase []byte) bool { // makeSalt make a 32 byte array containing random bytes. func makeSalt() []byte { sbytes := make([]byte, 32) - rand.Read(sbytes) + _, err := rand.Read(sbytes) + if err != nil { + log.Panicf("Could not read random bytes: %s", err) + } return sbytes }