|
17 | 17 | package network
|
18 | 18 |
|
19 | 19 | import (
|
| 20 | + "bytes" |
20 | 21 | "crypto/ecdsa"
|
21 |
| - crand "crypto/rand" |
22 | 22 | "encoding/binary"
|
23 | 23 | "fmt"
|
24 | 24 | "math/rand"
|
@@ -48,7 +48,7 @@ func TestSubPeersMsg(t *testing.T) {
|
48 | 48 | }
|
49 | 49 |
|
50 | 50 | node := s.Nodes[0]
|
51 |
| - raddr := NewAddr(node) |
| 51 | + raddr := NewBzzAddrFromEnode(node) |
52 | 52 | pp.Register(raddr)
|
53 | 53 |
|
54 | 54 | // start the hive and wait for the connection
|
@@ -114,18 +114,15 @@ func testInitialPeersMsg(t *testing.T, peerPO, peerDepth int) {
|
114 | 114 | connect := func(a pot.Address, po int) (addrs []*BzzAddr) {
|
115 | 115 | n := rand.Intn(maxPeersPerPO)
|
116 | 116 | for i := 0; i < n; i++ {
|
117 |
| - peer, err := newDiscPeer(pot.RandomAddressAt(a, po)) |
118 |
| - if err != nil { |
119 |
| - t.Fatal(err) |
120 |
| - } |
| 117 | + peer := newDiscPeer(pot.RandomAddressAt(a, po)) |
121 | 118 | hive.On(peer)
|
122 | 119 | addrs = append(addrs, peer.BzzAddr)
|
123 | 120 | }
|
124 | 121 | return addrs
|
125 | 122 | }
|
126 | 123 | register := func(a pot.Address, po int) {
|
127 |
| - addr := pot.RandomAddressAt(a, po) |
128 |
| - hive.Register(&BzzAddr{OAddr: addr[:]}) |
| 124 | + discPeer := newDiscPeer(a) |
| 125 | + hive.Register(discPeer.BzzAddr) |
129 | 126 | }
|
130 | 127 |
|
131 | 128 | // generate connected and just registered peers
|
@@ -238,20 +235,21 @@ func testSortPeers(peers []*BzzAddr) []*BzzAddr {
|
238 | 235 | // as we are not creating a real node via the protocol,
|
239 | 236 | // we need to create the discovery peer objects for the additional kademlia
|
240 | 237 | // nodes manually
|
241 |
| -func newDiscPeer(addr pot.Address) (*Peer, error) { |
242 |
| - pKey, err := ecdsa.GenerateKey(crypto.S256(), crand.Reader) |
243 |
| - if err != nil { |
244 |
| - return nil, err |
245 |
| - } |
| 238 | +func newDiscPeer(addr pot.Address) *Peer { |
| 239 | + |
| 240 | + // deterministically create enode id |
| 241 | + // Input to the non-random input buffer is 2xaddress since it munches 256 bits |
| 242 | + addrSeed := append(addr.Bytes(), addr.Bytes()...) |
| 243 | + pKey, _ := ecdsa.GenerateKey(crypto.S256(), bytes.NewBuffer(addrSeed)) |
246 | 244 | pubKey := pKey.PublicKey
|
247 | 245 | nod := enode.NewV4(&pubKey, net.IPv4(127, 0, 0, 1), 0, 0)
|
248 |
| - bzzAddr := &BzzAddr{OAddr: addr[:], UAddr: []byte(nod.String())} |
| 246 | + bzzAddr := NewBzzAddr(addr[:], []byte(nod.String())) |
249 | 247 | id := nod.ID()
|
250 | 248 | p2pPeer := p2p.NewPeer(id, id.String(), nil)
|
251 | 249 | return NewPeer(&BzzPeer{
|
252 | 250 | Peer: protocols.NewPeer(p2pPeer, &dummyMsgRW{}, DiscoverySpec),
|
253 | 251 | BzzAddr: bzzAddr,
|
254 |
| - }, nil), nil |
| 252 | + }, nil) |
255 | 253 | }
|
256 | 254 |
|
257 | 255 | type dummyMsgRW struct{}
|
|
0 commit comments