p2p-keygen: key generator for persistent identities
This commit is contained in:
parent
55b32dbfdc
commit
169c839295
|
@ -21,5 +21,5 @@ func WriteIdentity(k crypto.PrivKey, path string) error {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
return ioutil.WriteFile(path, bytes, 0500)
|
return ioutil.WriteFile(path, bytes, 0400)
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,48 @@
|
||||||
|
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)
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue