github.com/prysmaticlabs/prysm@v1.4.4/beacon-chain/p2p/options_test.go (about) 1 package p2p 2 3 import ( 4 "crypto/rand" 5 "encoding/hex" 6 "io/ioutil" 7 "net" 8 "testing" 9 10 gethCrypto "github.com/ethereum/go-ethereum/crypto" 11 "github.com/ethereum/go-ethereum/p2p/enode" 12 "github.com/ethereum/go-ethereum/p2p/enr" 13 "github.com/libp2p/go-libp2p-core/crypto" 14 "github.com/prysmaticlabs/prysm/shared/params" 15 "github.com/prysmaticlabs/prysm/shared/testutil/assert" 16 "github.com/prysmaticlabs/prysm/shared/testutil/require" 17 ) 18 19 func TestPrivateKeyLoading(t *testing.T) { 20 file, err := ioutil.TempFile(t.TempDir(), "key") 21 require.NoError(t, err) 22 key, _, err := crypto.GenerateSecp256k1Key(rand.Reader) 23 require.NoError(t, err, "Could not generate key") 24 raw, err := key.Raw() 25 if err != nil { 26 panic(err) 27 } 28 out := hex.EncodeToString(raw) 29 30 err = ioutil.WriteFile(file.Name(), []byte(out), params.BeaconIoConfig().ReadWritePermissions) 31 require.NoError(t, err, "Could not write key to file") 32 log.WithField("file", file.Name()).WithField("key", out).Info("Wrote key to file") 33 cfg := &Config{ 34 PrivateKey: file.Name(), 35 } 36 pKey, err := privKey(cfg) 37 require.NoError(t, err, "Could not apply option") 38 newPkey := convertToInterfacePrivkey(pKey) 39 rawBytes, err := key.Raw() 40 require.NoError(t, err) 41 newRaw, err := newPkey.Raw() 42 require.NoError(t, err) 43 assert.DeepEqual(t, rawBytes, newRaw, "Private keys do not match") 44 } 45 46 func TestIPV6Support(t *testing.T) { 47 key, err := gethCrypto.GenerateKey() 48 require.NoError(t, err) 49 db, err := enode.OpenDB("") 50 if err != nil { 51 log.Error("could not open node's peer database") 52 } 53 lNode := enode.NewLocalNode(db, key) 54 mockIPV6 := net.IP{0xff, 0x02, 0xAA, 0, 0x1F, 0, 0x2E, 0, 0, 0x36, 0x45, 0, 0, 0, 0, 0x02} 55 lNode.Set(enr.IP(mockIPV6)) 56 ma, err := convertToSingleMultiAddr(lNode.Node()) 57 if err != nil { 58 t.Fatal(err) 59 } 60 ipv6Exists := false 61 for _, p := range ma.Protocols() { 62 if p.Name == "ip4" { 63 t.Error("Got ip4 address instead of ip6") 64 } 65 if p.Name == "ip6" { 66 ipv6Exists = true 67 } 68 } 69 if !ipv6Exists { 70 t.Error("Multiaddress did not have ipv6 protocol") 71 } 72 }