diff options
author | Niall Sheridan <nsheridan@gmail.com> | 2016-05-18 21:30:34 +0100 |
---|---|---|
committer | Niall Sheridan <nsheridan@gmail.com> | 2016-05-18 21:30:34 +0100 |
commit | 1474955143f29c61639df2a106287a36b9a93214 (patch) | |
tree | 7c258ab9334796428d94aec2f4db719ecbabb6d1 /client/keys.go | |
parent | 9e5a1e1d458ebf60cf692c5f58651aa182d4518d (diff) |
Support ed25519 ssh keys
Diffstat (limited to 'client/keys.go')
-rw-r--r-- | client/keys.go | 18 |
1 files changed, 16 insertions, 2 deletions
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 { |