safing-portbase/crypto/random/random.go
2018-08-13 14:05:58 +02:00

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)
}