From 96b3240628850acff70e1ad7836121557c629991 Mon Sep 17 00:00:00 2001 From: Marten Seemann Date: Wed, 20 Feb 2019 18:10:23 +0800 Subject: [PATCH] add a command line flag to set the key type --- example/client/main.go | 25 ++++++++++++++++++++++--- example/server/main.go | 23 +++++++++++++++++++++-- 2 files changed, 43 insertions(+), 5 deletions(-) diff --git a/example/client/main.go b/example/client/main.go index 7e8ffca..678ece6 100644 --- a/example/client/main.go +++ b/example/client/main.go @@ -23,22 +23,41 @@ func main() { func startClient() error { port := flag.Int("p", 5533, "port") peerIDString := flag.String("id", "", "peer ID") + keyType := flag.String("key", "ecdsa", "rsa, ecdsa, ed25519 or secp256k1") flag.Parse() - peerID, err := peer.IDB58Decode(*peerIDString) + var priv ic.PrivKey + var err error + switch *keyType { + case "rsa": + fmt.Printf("Generated new peer with an RSA key.") + priv, _, err = ic.GenerateRSAKeyPair(2048, rand.Reader) + case "ecdsa": + fmt.Printf("Generated new peer with an ECDSA key.") + priv, _, err = ic.GenerateECDSAKeyPair(rand.Reader) + case "ed25519": + fmt.Printf("Generated new peer with an Ed25519 key.") + priv, _, err = ic.GenerateEd25519Key(rand.Reader) + case "secp256k1": + fmt.Printf("Generated new peer with an Secp256k1 key.") + priv, _, err = ic.GenerateSecp256k1Key(rand.Reader) + default: + return fmt.Errorf("unknown key type: %s", *keyType) + } if err != nil { return err } - priv, _, err := ic.GenerateECDSAKeyPair(rand.Reader) + peerID, err := peer.IDB58Decode(*peerIDString) if err != nil { return err } + id, err := peer.IDFromPrivateKey(priv) if err != nil { return err } - fmt.Printf("Generated new peer with an ECDSA key. Peer ID: %s\n", id.Pretty()) + fmt.Printf(" Peer ID: %s\n", id.Pretty()) tp, err := libp2ptls.New(priv) if err != nil { return err diff --git a/example/server/main.go b/example/server/main.go index d837165..9988ec0 100644 --- a/example/server/main.go +++ b/example/server/main.go @@ -21,17 +21,36 @@ func main() { func startServer() error { port := flag.Int("p", 5533, "port") + keyType := flag.String("key", "ecdsa", "rsa, ecdsa, ed25519 or secp256k1") flag.Parse() - priv, _, err := ic.GenerateECDSAKeyPair(rand.Reader) + var priv ic.PrivKey + var err error + switch *keyType { + case "rsa": + fmt.Printf("Generated new peer with an RSA key.") + priv, _, err = ic.GenerateRSAKeyPair(2048, rand.Reader) + case "ecdsa": + fmt.Printf("Generated new peer with an ECDSA key.") + priv, _, err = ic.GenerateECDSAKeyPair(rand.Reader) + case "ed25519": + fmt.Printf("Generated new peer with an Ed25519 key.") + priv, _, err = ic.GenerateEd25519Key(rand.Reader) + case "secp256k1": + fmt.Printf("Generated new peer with an Secp256k1 key.") + priv, _, err = ic.GenerateSecp256k1Key(rand.Reader) + default: + return fmt.Errorf("unknown key type: %s", *keyType) + } if err != nil { return err } + id, err := peer.IDFromPrivateKey(priv) if err != nil { return err } - fmt.Printf("Generated new peer with an ECDSA key. Peer ID: %s\n", id.Pretty()) + fmt.Printf(" Peer ID: %s\n", id.Pretty()) tp, err := libp2ptls.New(priv) if err != nil { return err