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