aboutsummaryrefslogtreecommitdiff
path: root/src/gnunet/util/rnd.go
blob: a9f247f8ae80566bb16496a3f227840c163ba9e8 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
package util

import (
	"bytes"
	"crypto/rand"
	"encoding/binary"
)

// RndArray fills a buffer with random content
func RndArray(b []byte) {
	rand.Read(b)
}

// NewRndArray creates a new buffer of given size; filled with random content.
func NewRndArray(size int) []byte {
	b := make([]byte, size)
	rand.Read(b)
	return b
}

// RndUInt64 returns a new 64-bit unsigned random integer.
func RndUInt64() uint64 {
	b := make([]byte, 8)
	RndArray(b)
	var v uint64
	c := bytes.NewBuffer(b)
	binary.Read(c, binary.BigEndian, &v)
	return v
}

// RndInt64 returns a new 64-bit signed random integer.
func RndInt64() int64 {
	return int64(RndUInt64())
}

// RndUInt32 returns a new 32-bit unsigned random integer.
func RndUInt32() uint32 {
	return uint32(RndUInt64())
}

// RndInt32 returns a new 32-bit signed random integer.
func RndInt32() int32 {
	return int32(RndUInt64())
}

// RndUInt16 returns a new 16-bit unsigned random integer.
func RndUInt16() uint16 {
	return uint16(RndUInt64())
}

// RndInt16 returns a new 16-bit signed random integer.
func RndInt16() int16 {
	return int16(RndUInt64())
}