Update api-server and gen-keys main files Update TUI controller commands, helpers, and settings
54 lines
1.6 KiB
Go
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)
|
|
}
|