diff options
author | Niall Sheridan <nsheridan@gmail.com> | 2016-09-10 17:40:23 +0100 |
---|---|---|
committer | Niall Sheridan <nsheridan@gmail.com> | 2016-09-10 17:40:23 +0100 |
commit | a30d6403f723765b8f9b7609e7eb3ade0f5434a0 (patch) | |
tree | dfd1197c292fa6fa3bcceae5e135bc8e3991f4c0 /cmd/cashier/client/keys.go | |
parent | d422741d8aab8cd4564141da57e2b98eed3c8a85 (diff) |
Make client a top-level package for consistency
Diffstat (limited to 'cmd/cashier/client/keys.go')
-rw-r--r-- | cmd/cashier/client/keys.go | 84 |
1 files changed, 0 insertions, 84 deletions
diff --git a/cmd/cashier/client/keys.go b/cmd/cashier/client/keys.go deleted file mode 100644 index 4b3b69e..0000000 --- a/cmd/cashier/client/keys.go +++ /dev/null @@ -1,84 +0,0 @@ -package client - -import ( - "crypto/ecdsa" - "crypto/elliptic" - "crypto/rand" - "crypto/rsa" - "fmt" - - "golang.org/x/crypto/ed25519" - "golang.org/x/crypto/ssh" -) - -// Key is a private key. -type Key interface{} -type keyfunc func(int) (Key, ssh.PublicKey, error) - -var ( - keytypes = map[string]keyfunc{ - "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 { - return nil, nil, err - } - pub, err := ssh.NewPublicKey(&k.PublicKey) - if err != nil { - return nil, nil, err - } - return k, pub, nil -} - -func generateECDSAKey(bits int) (Key, ssh.PublicKey, error) { - var curve elliptic.Curve - switch bits { - case 256: - curve = elliptic.P256() - case 384: - curve = elliptic.P384() - case 521: - curve = elliptic.P521() - default: - return nil, nil, fmt.Errorf("Unsupported key size. Valid sizes are '256', '384', '521'") - } - k, err := ecdsa.GenerateKey(curve, rand.Reader) - if err != nil { - return nil, nil, err - } - pub, err := ssh.NewPublicKey(&k.PublicKey) - if err != nil { - return nil, nil, err - } - return k, pub, nil -} - -// GenerateKey generates a ssh key-pair according to the type and size specified. -func GenerateKey(keytype string, bits int) (Key, ssh.PublicKey, error) { - f, ok := keytypes[keytype] - if !ok { - var valid []string - for k := range keytypes { - valid = append(valid, k) - } - return nil, nil, fmt.Errorf("Unsupported key type %s. Valid choices are %s", keytype, valid) - } - return f(bits) -} |