installer: env and app manager
diff --git a/core/installer/keys.go b/core/installer/keys.go
new file mode 100644
index 0000000..bb39c4d
--- /dev/null
+++ b/core/installer/keys.go
@@ -0,0 +1,32 @@
+package installer
+
+import (
+ "crypto/ed25519"
+ "crypto/rand"
+ "crypto/x509"
+ "encoding/pem"
+
+ "golang.org/x/crypto/ssh"
+)
+
+func GenerateSSHKeys() (string, string, error) {
+ pub, priv, err := ed25519.GenerateKey(rand.Reader)
+ if err != nil {
+ return "", "", err
+ }
+ privEnc, err := x509.MarshalPKCS8PrivateKey(priv)
+ if err != nil {
+ return "", "", err
+ }
+ privPem := pem.EncodeToMemory(
+ &pem.Block{
+ Type: "PRIVATE KEY",
+ Bytes: privEnc,
+ },
+ )
+ pubKey, err := ssh.NewPublicKey(pub)
+ if err != nil {
+ return "", "", err
+ }
+ return string(ssh.MarshalAuthorizedKey(pubKey)), string(privPem), nil
+}