github.com/karalabe/go-ethereum@v0.8.5/ethutil/rand.go (about)

     1  package ethutil
     2  
     3  import (
     4  	"crypto/rand"
     5  	"encoding/binary"
     6  	"io"
     7  )
     8  
     9  func randomUint64(r io.Reader) (uint64, error) {
    10  	b := make([]byte, 8)
    11  	n, err := r.Read(b)
    12  	if n != len(b) {
    13  		return 0, io.ErrShortBuffer
    14  	}
    15  	if err != nil {
    16  		return 0, err
    17  	}
    18  	return binary.BigEndian.Uint64(b), nil
    19  }
    20  
    21  // RandomUint64 returns a cryptographically random uint64 value.
    22  func RandomUint64() (uint64, error) {
    23  	return randomUint64(rand.Reader)
    24  }