blob: 5fdade9aac399ae0a7276c6a0235ce373adec7e3 (
plain) (
tree)
|
|
// Copyright © 2021 siddharth <s@ricketyspace.net>
// SPDX-License-Identifier: ISC
package lib
import (
"crypto/rand"
"math/big"
)
// Return a random number from range [min, max]
func RandomInt(min, max int64) int64 {
if min >= max {
panic("RandomInt: min cannot be >= max!")
}
var rn *big.Int
var err error
for {
rn, err = rand.Int(rand.Reader, big.NewInt(max+1))
if err != nil {
panic(err)
}
if rn.Int64() >= min {
return rn.Int64()
}
}
}
func RandomBytes(size int) ([]byte, error) {
k := make([]byte, size)
_, err := rand.Read(k)
if err != nil {
return []byte{}, err
}
return k, nil
}
// Randomly generates `min` to `max` bytes.
func RandomBytesWithLengthBetween(min, max int64) []byte {
bs := make([]byte, RandomInt(min, max))
_, err := rand.Read(bs)
if err != nil {
panic(err)
}
return bs
}
|