From 5d5c9f993a291ff3336c4755f851aca832625990 Mon Sep 17 00:00:00 2001 From: Jeromy Date: Tue, 21 Mar 2017 15:19:53 -0700 Subject: [PATCH] don't use 'test' ID generation in tutorial --- tutorial/001-the-host/README.md | 23 +++++++++++++++-------- tutorial/001-the-host/host.go | 22 ++++++++++++++-------- 2 files changed, 29 insertions(+), 16 deletions(-) diff --git a/tutorial/001-the-host/README.md b/tutorial/001-the-host/README.md index dd87ac5..66b91be 100644 --- a/tutorial/001-the-host/README.md +++ b/tutorial/001-the-host/README.md @@ -4,16 +4,25 @@ started. This guide will show how to construct and use a simple host. The host is an abstraction that manages services on top of a swarm. It provides a clean interface to connect to a service on a given remote peer. -First, you'll need an ID, and a place to store that ID. To generate a 'test' +First, you'll need an ID, and a place to store that ID. To generate an ID, you can do the following: ```go import ( - testutil "github.com/libp2p/go-testutil" + "crypto/rand" + + crypto "github.com/libp2p/go-libp2p-crypto" + peer "github.com/libp2p/go-libp2p-peer" pstore "github.com/libp2p/go-libp2p-peerstore" ) -// For toy applications, this is an easy way to get an identity -ident, err := testutil.RandIdentity() +// Generate an identity keypair using go's cryptographic randomness source +priv, pub, err := crypto.GenerateEd25519Key(rand.Reader) +if err != nil { + panic(err) +} + +// A peers ID is the hash of its public key +pid, err := peer.IDFromPublicKey(pub) if err != nil { panic(err) } @@ -21,10 +30,8 @@ if err != nil { // We've created the identity, now we need to store it. // A peerstore holds information about peers, including your own ps := pstore.NewPeerstore() - -// An identity is essentially a public/private keypair -ps.AddPrivKey(ident.ID(), ident.PrivateKey()) -ps.AddPubKey(ident.ID(), ident.PublicKey()) +ps.AddPrivKey(pid, priv) +ps.AddPubKey(pid, priv) ``` Next, you'll need at least one address that you want to listen on. You can go diff --git a/tutorial/001-the-host/host.go b/tutorial/001-the-host/host.go index 05b8b12..9c02820 100644 --- a/tutorial/001-the-host/host.go +++ b/tutorial/001-the-host/host.go @@ -2,18 +2,26 @@ package main import ( "context" + "crypto/rand" "fmt" + crypto "github.com/libp2p/go-libp2p-crypto" + peer "github.com/libp2p/go-libp2p-peer" pstore "github.com/libp2p/go-libp2p-peerstore" swarm "github.com/libp2p/go-libp2p-swarm" bhost "github.com/libp2p/go-libp2p/p2p/host/basic" - testutil "github.com/libp2p/go-testutil" ma "github.com/multiformats/go-multiaddr" ) func main() { - // For toy applications, this is an easy way to get an identity - ident, err := testutil.RandIdentity() + // Generate an identity keypair using go's cryptographic randomness source + priv, pub, err := crypto.GenerateEd25519Key(rand.Reader) + if err != nil { + panic(err) + } + + // A peers ID is the hash of its public key + pid, err := peer.IDFromPublicKey(pub) if err != nil { panic(err) } @@ -21,10 +29,8 @@ func main() { // We've created the identity, now we need to store it. // A peerstore holds information about peers, including your own ps := pstore.NewPeerstore() - - // An identity is essentially a public/private keypair - ps.AddPrivKey(ident.ID(), ident.PrivateKey()) - ps.AddPubKey(ident.ID(), ident.PublicKey()) + ps.AddPrivKey(pid, priv) + ps.AddPubKey(pid, pub) maddr, err := ma.NewMultiaddr("/ip4/0.0.0.0/tcp/9000") if err != nil { @@ -35,7 +41,7 @@ func main() { ctx := context.Background() // Put all this together - netw, err := swarm.NewNetwork(ctx, []ma.Multiaddr{maddr}, ident.ID(), ps, nil) + netw, err := swarm.NewNetwork(ctx, []ma.Multiaddr{maddr}, pid, ps, nil) if err != nil { panic(err) } -- GitLab