forked from cerc-io/plugeth
trie, whisper/whisperv5: use math/rand Read function
This commit is contained in:
parent
9a2720fb35
commit
f1534f5797
@ -377,7 +377,7 @@ func (randTest) Generate(r *rand.Rand, size int) reflect.Value {
|
||||
if len(allKeys) < 2 || r.Intn(100) < 10 {
|
||||
// new key
|
||||
key := make([]byte, r.Intn(50))
|
||||
randRead(r, key)
|
||||
r.Read(key)
|
||||
allKeys = append(allKeys, key)
|
||||
return key
|
||||
}
|
||||
@ -401,22 +401,6 @@ func (randTest) Generate(r *rand.Rand, size int) reflect.Value {
|
||||
return reflect.ValueOf(steps)
|
||||
}
|
||||
|
||||
// rand.Rand provides a Read method in Go 1.7 and later, but
|
||||
// we can't use it yet.
|
||||
func randRead(r *rand.Rand, b []byte) {
|
||||
pos := 0
|
||||
val := 0
|
||||
for n := 0; n < len(b); n++ {
|
||||
if pos == 0 {
|
||||
val = r.Int()
|
||||
pos = 7
|
||||
}
|
||||
b[n] = byte(val)
|
||||
val >>= 8
|
||||
pos--
|
||||
}
|
||||
}
|
||||
|
||||
func runRandTest(rt randTest) bool {
|
||||
db, _ := ethdb.NewMemDatabase()
|
||||
tr, _ := New(common.Hash{}, db)
|
||||
|
@ -18,7 +18,7 @@ package whisperv5
|
||||
|
||||
import (
|
||||
"math/big"
|
||||
"math/rand"
|
||||
mrand "math/rand"
|
||||
"testing"
|
||||
"time"
|
||||
|
||||
@ -33,12 +33,12 @@ var seed int64
|
||||
// reproduciblity independent of their sequence.
|
||||
func InitSingleTest() {
|
||||
seed = time.Now().Unix()
|
||||
rand.Seed(seed)
|
||||
mrand.Seed(seed)
|
||||
}
|
||||
|
||||
func InitDebugTest(i int64) {
|
||||
seed = i
|
||||
rand.Seed(seed)
|
||||
mrand.Seed(seed)
|
||||
}
|
||||
|
||||
type FilterTestCase struct {
|
||||
@ -55,7 +55,7 @@ func generateFilter(t *testing.T, symmetric bool) (*Filter, error) {
|
||||
const topicNum = 8
|
||||
f.Topics = make([]TopicType, topicNum)
|
||||
for i := 0; i < topicNum; i++ {
|
||||
randomize(f.Topics[i][:])
|
||||
mrand.Read(f.Topics[i][:])
|
||||
f.Topics[i][0] = 0x01
|
||||
}
|
||||
|
||||
@ -68,7 +68,7 @@ func generateFilter(t *testing.T, symmetric bool) (*Filter, error) {
|
||||
|
||||
if symmetric {
|
||||
f.KeySym = make([]byte, 12)
|
||||
randomize(f.KeySym)
|
||||
mrand.Read(f.KeySym)
|
||||
f.SymKeyHash = crypto.Keccak256Hash(f.KeySym)
|
||||
} else {
|
||||
f.KeyAsym, err = crypto.GenerateKey()
|
||||
@ -87,7 +87,7 @@ func generateTestCases(t *testing.T, SizeTestFilters int) []FilterTestCase {
|
||||
for i := 0; i < SizeTestFilters; i++ {
|
||||
f, _ := generateFilter(t, true)
|
||||
cases[i].f = f
|
||||
cases[i].alive = (rand.Int()&int(1) == 0)
|
||||
cases[i].alive = (mrand.Int()&int(1) == 0)
|
||||
}
|
||||
return cases
|
||||
}
|
||||
@ -147,7 +147,7 @@ func TestComparePubKey(t *testing.T) {
|
||||
}
|
||||
|
||||
// generate key3 == key1
|
||||
rand.Seed(seed)
|
||||
mrand.Seed(seed)
|
||||
key3, err := crypto.GenerateKey()
|
||||
if err != nil {
|
||||
t.Fatalf("failed to generate third key with seed %d: %s.", seed, err)
|
||||
@ -193,7 +193,7 @@ func TestMatchEnvelope(t *testing.T) {
|
||||
}
|
||||
|
||||
// encrypt symmetrically
|
||||
i := rand.Int() % 4
|
||||
i := mrand.Int() % 4
|
||||
fsym.Topics[i] = params.Topic
|
||||
fasym.Topics[i] = params.Topic
|
||||
msg = NewSentMessage(params)
|
||||
@ -544,7 +544,7 @@ func TestWatchers(t *testing.T) {
|
||||
|
||||
var envelopes [NumMessages]*Envelope
|
||||
for i = 0; i < NumMessages; i++ {
|
||||
j = rand.Uint32() % NumFilters
|
||||
j = mrand.Uint32() % NumFilters
|
||||
e = generateCompatibeEnvelope(t, tst[j].f)
|
||||
envelopes[i] = e
|
||||
tst[j].msgCnt++
|
||||
@ -597,7 +597,7 @@ func TestWatchers(t *testing.T) {
|
||||
envelopes[0] = e
|
||||
tst[0].msgCnt++
|
||||
for i = 1; i < NumMessages; i++ {
|
||||
j = rand.Uint32() % NumFilters
|
||||
j = mrand.Uint32() % NumFilters
|
||||
e = generateCompatibeEnvelope(t, tst[j].f)
|
||||
envelopes[i] = e
|
||||
tst[j].msgCnt++
|
||||
|
@ -128,7 +128,7 @@ func (msg *SentMessage) appendPadding(params *MessageParams) {
|
||||
panic("please fix the padding algorithm before releasing new version")
|
||||
}
|
||||
buf := make([]byte, padSize)
|
||||
randomize(buf[1:])
|
||||
mrand.Read(buf[1:])
|
||||
buf[0] = byte(padSize)
|
||||
if params.Padding != nil {
|
||||
copy(buf[1:], params.Padding)
|
||||
@ -365,19 +365,3 @@ func (msg *ReceivedMessage) hash() []byte {
|
||||
}
|
||||
return crypto.Keccak256(msg.Raw)
|
||||
}
|
||||
|
||||
// rand.Rand provides a Read method in Go 1.7 and later,
|
||||
// but we can't use it yet.
|
||||
func randomize(b []byte) {
|
||||
cnt := 0
|
||||
val := mrand.Int63()
|
||||
for n := 0; n < len(b); n++ {
|
||||
b[n] = byte(val)
|
||||
val >>= 8
|
||||
cnt++
|
||||
if cnt >= 7 {
|
||||
cnt = 0
|
||||
val = mrand.Int63()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -18,7 +18,7 @@ package whisperv5
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"math/rand"
|
||||
mrand "math/rand"
|
||||
"testing"
|
||||
|
||||
"github.com/ethereum/go-ethereum/crypto"
|
||||
@ -34,13 +34,13 @@ func generateMessageParams() (*MessageParams, error) {
|
||||
// set all the parameters except p.Dst
|
||||
|
||||
buf := make([]byte, 1024)
|
||||
randomize(buf)
|
||||
sz := rand.Intn(400)
|
||||
mrand.Read(buf)
|
||||
sz := mrand.Intn(400)
|
||||
|
||||
var p MessageParams
|
||||
p.PoW = 0.01
|
||||
p.WorkTime = 1
|
||||
p.TTL = uint32(rand.Intn(1024))
|
||||
p.TTL = uint32(mrand.Intn(1024))
|
||||
p.Payload = make([]byte, sz)
|
||||
p.Padding = make([]byte, padSizeLimitUpper)
|
||||
p.KeySym = make([]byte, aesKeyLength)
|
||||
@ -132,7 +132,7 @@ func TestMessageEncryption(t *testing.T) {
|
||||
|
||||
func TestMessageWrap(t *testing.T) {
|
||||
seed = int64(1777444222)
|
||||
rand.Seed(seed)
|
||||
mrand.Seed(seed)
|
||||
target := 128.0
|
||||
|
||||
params, err := generateMessageParams()
|
||||
@ -168,7 +168,7 @@ func TestMessageWrap(t *testing.T) {
|
||||
func TestMessageSeal(t *testing.T) {
|
||||
// this test depends on deterministic choice of seed (1976726903)
|
||||
seed = int64(1976726903)
|
||||
rand.Seed(seed)
|
||||
mrand.Seed(seed)
|
||||
|
||||
params, err := generateMessageParams()
|
||||
if err != nil {
|
||||
@ -179,8 +179,8 @@ func TestMessageSeal(t *testing.T) {
|
||||
params.TTL = 1
|
||||
aesnonce := make([]byte, 12)
|
||||
salt := make([]byte, 12)
|
||||
randomize(aesnonce)
|
||||
randomize(salt)
|
||||
mrand.Read(aesnonce)
|
||||
mrand.Read(salt)
|
||||
|
||||
env := NewEnvelope(params.TTL, params.Topic, salt, aesnonce, msg)
|
||||
if err != nil {
|
||||
|
@ -18,6 +18,7 @@ package whisperv5
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
mrand "math/rand"
|
||||
"testing"
|
||||
"time"
|
||||
|
||||
@ -49,7 +50,7 @@ func TestWhisperBasic(t *testing.T) {
|
||||
}
|
||||
|
||||
peerID := make([]byte, 64)
|
||||
randomize(peerID)
|
||||
mrand.Read(peerID)
|
||||
peer, _ := w.getPeer(peerID)
|
||||
if peer != nil {
|
||||
t.Fatal("found peer for random key.")
|
||||
@ -212,7 +213,7 @@ func TestWhisperSymKeyManagement(t *testing.T) {
|
||||
|
||||
// add existing id, nothing should change
|
||||
randomKey := make([]byte, 16)
|
||||
randomize(randomKey)
|
||||
mrand.Read(randomKey)
|
||||
err = w.AddSymKey(id1, randomKey)
|
||||
if err == nil {
|
||||
t.Fatalf("failed AddSymKey with seed %d.", seed)
|
||||
|
Loading…
Reference in New Issue
Block a user