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