installer: use soft-serve keygen lib
diff --git a/core/installer/keys.go b/core/installer/keys.go
index 695176f..d3dd1d7 100644
--- a/core/installer/keys.go
+++ b/core/installer/keys.go
@@ -1,40 +1,9 @@
package installer
import (
- "crypto/ed25519"
- "crypto/rand"
- "crypto/x509"
- "encoding/pem"
-
- "golang.org/x/crypto/ssh"
+ "github.com/charmbracelet/keygen"
)
-type KeyPair struct {
- Public string
- Private string
-}
-
-func NewSSHKeyPair() (KeyPair, error) {
- pub, priv, err := ed25519.GenerateKey(rand.Reader)
- if err != nil {
- return KeyPair{}, err
- }
- privEnc, err := x509.MarshalPKCS8PrivateKey(priv)
- if err != nil {
- return KeyPair{}, err
- }
- privPem := pem.EncodeToMemory(
- &pem.Block{
- Type: "PRIVATE KEY",
- Bytes: privEnc,
- },
- )
- pubKey, err := ssh.NewPublicKey(pub)
- if err != nil {
- return KeyPair{}, err
- }
- return KeyPair{
- Public: string(ssh.MarshalAuthorizedKey(pubKey)),
- Private: string(privPem),
- }, nil
+func NewSSHKeyPair(path string) (*keygen.KeyPair, error) {
+ return keygen.New(path, keygen.WithKeyType(keygen.Ed25519))
}