diff options
author | Niall Sheridan <nsheridan@gmail.com> | 2016-09-03 19:14:13 +0100 |
---|---|---|
committer | Niall Sheridan <nsheridan@gmail.com> | 2016-09-03 19:14:13 +0100 |
commit | 0af43a29b7cabb6710cd1cb335785ff60dbf758f (patch) | |
tree | 28733eca29ef955254ba449504534fb3e6da0986 /cmd/cashier/keys.go | |
parent | dba3de4451f29fc0b8cb6474b9bbb18ed61d9eac (diff) |
Move signing & agent logic out of the main package
Diffstat (limited to 'cmd/cashier/keys.go')
-rw-r--r-- | cmd/cashier/keys.go | 82 |
1 files changed, 0 insertions, 82 deletions
diff --git a/cmd/cashier/keys.go b/cmd/cashier/keys.go deleted file mode 100644 index ac0a9f7..0000000 --- a/cmd/cashier/keys.go +++ /dev/null @@ -1,82 +0,0 @@ -package main - -import ( - "crypto/ecdsa" - "crypto/elliptic" - "crypto/rand" - "crypto/rsa" - "fmt" - - "golang.org/x/crypto/ed25519" - "golang.org/x/crypto/ssh" -) - -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 -} - -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) -} |