From 1474955143f29c61639df2a106287a36b9a93214 Mon Sep 17 00:00:00 2001 From: Niall Sheridan Date: Wed, 18 May 2016 21:30:34 +0100 Subject: Support ed25519 ssh keys --- client/keys.go | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) (limited to 'client/keys.go') diff --git a/client/keys.go b/client/keys.go index d2f14f7..a2f95e9 100644 --- a/client/keys.go +++ b/client/keys.go @@ -7,6 +7,7 @@ import ( "crypto/rsa" "fmt" + "golang.org/x/crypto/ed25519" "golang.org/x/crypto/ssh" ) @@ -15,11 +16,24 @@ type keyfunc func(int) (key, ssh.PublicKey, error) var ( keytypes = map[string]keyfunc{ - "rsa": generateRSAKey, - "ecdsa": generateECDSAKey, + "rsa": generateRSAKey, + "ecdsa": generateECDSAKey, + "ed25519": generateED25519Key, } ) +func generateED25519Key(bits int) (key, ssh.PublicKey, error) { + p, k, err := ed25519.GenerateKey(rand.Reader) + if err != nil { + return nil, nil, err + } + pub, err := ssh.NewPublicKey(p) + if err != nil { + return nil, nil, err + } + return k, pub, nil +} + func generateRSAKey(bits int) (key, ssh.PublicKey, error) { k, err := rsa.GenerateKey(rand.Reader, bits) if err != nil { -- cgit v1.2.3