go-libp2p-daemon/p2p-keygen/main.go

49 lines
861 B
Go

package main
import (
"flag"
"fmt"
"log"
p2pd "github.com/libp2p/go-libp2p-daemon"
crypto "github.com/libp2p/go-libp2p-crypto"
peer "github.com/libp2p/go-libp2p-peer"
)
func main() {
file := flag.String("f", "identity", "output key file")
ktype := flag.String("t", "rsa", "key type; rsa or ed25519")
bits := flag.Int("b", 2048, "key size in bits (for rsa)")
flag.Parse()
var typ int
switch *ktype {
case "rsa":
typ = crypto.RSA
case "ed25519":
typ = crypto.Ed25519
default:
log.Fatalf("Unknown key type %s; must be rsa or ed25519", *ktype)
}
priv, pub, err := crypto.GenerateKeyPair(typ, *bits)
if err != nil {
log.Fatal(err)
}
id, err := peer.IDFromPublicKey(pub)
if err != nil {
log.Fatal(err)
}
fmt.Printf("Peer ID: %s\n", id.Pretty())
err = p2pd.WriteIdentity(priv, *file)
if err != nil {
log.Fatal(err)
}
}