diff --git a/addy.go b/addy.go index f45d4dc..c2878e1 100644 --- a/addy.go +++ b/addy.go @@ -3,13 +3,13 @@ package main import ( "bytes" "crypto/hmac" + "crypto/rand" "crypto/sha256" "encoding/base32" "encoding/json" "flag" "fmt" "log" - "math/rand" "net/http" "os" "strings" @@ -230,10 +230,14 @@ func addyAliasAPIDelete(w http.ResponseWriter, r *http.Request) { } func generateRandomString(length int) string { - charset := "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789" + const charset = "abcdefghijklmnopqrstuvwxyz0123456789" result := make([]byte, length) - for i := range result { - result[i] = charset[rand.Intn(len(charset))] + buf := make([]byte, length) + if _, err := rand.Read(buf); err != nil { + panic("crypto/rand unavailable: " + err.Error()) + } + for i, b := range buf { + result[i] = charset[int(b)%len(charset)] } return string(result) }