fetch_ml/cmd/gen-keys/main.go
Jeremie Fraeys abd27bf0a2
refactor(go): Update Go commands and TUI controller
Update api-server and gen-keys main files

Update TUI controller commands, helpers, and settings
2026-02-23 14:13:14 -05:00

54 lines
1.6 KiB
Go

// Package main implements a tool for generating Ed25519 signing keys
package main
import (
"flag"
"fmt"
"log"
"os"
"github.com/jfraeys/fetch_ml/internal/crypto"
)
func main() {
var (
outDir = flag.String("out", "./keys", "Output directory for keys")
keyID = flag.String("key-id", "manifest-signer-1", "Key identifier")
)
flag.Parse()
// Create output directory
if err := os.MkdirAll(*outDir, 0700); err != nil {
log.Fatalf("Failed to create output directory: %v", err)
}
// Generate keypair
publicKey, privateKey, err := crypto.GenerateSigningKeys()
if err != nil {
log.Fatalf("Failed to generate signing keys: %v", err)
}
// Define paths
privKeyPath := fmt.Sprintf("%s/%s_private.key", *outDir, *keyID)
pubKeyPath := fmt.Sprintf("%s/%s_public.key", *outDir, *keyID)
// Save private key (restricted permissions)
if err := crypto.SavePrivateKeyToFile(privateKey, privKeyPath); err != nil {
log.Fatalf("Failed to save private key: %v", err)
}
// Save public key
if err := crypto.SavePublicKeyToFile(publicKey, pubKeyPath); err != nil {
log.Fatalf("Failed to save public key: %v", err)
}
// Print summary
fmt.Printf("Generated Ed25519 signing keys\n")
fmt.Printf(" Key ID: %s\n", *keyID)
fmt.Printf(" Private key: %s (permissions: 0600)\n", privKeyPath)
fmt.Printf(" Public key: %s\n", pubKeyPath)
fmt.Printf("\nImportant:\n")
fmt.Printf(" - Store the private key securely (it can sign manifests)\n")
fmt.Printf(" - Distribute the public key to verification systems\n")
fmt.Printf(" - Set environment variable: FETCHML_SIGNING_KEY_PATH=%s\n", privKeyPath)
}