mirror of
https://github.com/safing/portbase
synced 2025-09-05 12:09:58 +00:00
37 lines
673 B
Go
37 lines
673 B
Go
package random
|
|
|
|
import (
|
|
"crypto/rand"
|
|
"fmt"
|
|
"io"
|
|
"math/big"
|
|
)
|
|
|
|
// just (mostly) a proxy for now, awesome stuff comes later
|
|
|
|
func Int(randSrc io.Reader, max *big.Int) (n *big.Int, err error) {
|
|
return rand.Int(randSrc, max)
|
|
}
|
|
|
|
func Prime(randSrc io.Reader, bits int) (p *big.Int, err error) {
|
|
return rand.Prime(randSrc, bits)
|
|
}
|
|
|
|
func Read(b []byte) (n int, err error) {
|
|
return rand.Read(b)
|
|
}
|
|
|
|
func Bytes(len int) ([]byte, error) {
|
|
r := make([]byte, len)
|
|
_, err := Read(r)
|
|
if err != nil {
|
|
return nil, fmt.Errorf("failed to get random data: %s", err)
|
|
}
|
|
return r, nil
|
|
}
|
|
|
|
type Reader struct{}
|
|
|
|
func (r Reader) Read(b []byte) (n int, err error) {
|
|
return Read(b)
|
|
}
|