mirror of
https://github.com/nolen777/eagle0.git
synced 2026-07-28 20:55:44 +00:00
Add optional Ed25519 signing to the manifest_manager. When a signing key is provided, the manifest is signed and the signature is prepended as a header comment that clients can verify. Changes: - manifest_manager: Accept optional private key file as 3rd argument - manifest_manager: Sign manifest content and prepend signature line - installer_build.yml: Pass MANIFEST_SIGNING_KEY to manifest_manager - unity_build.yml: Pass MANIFEST_SIGNING_KEY to manifest_manager - Add generate_manifest_keys.go script to create key pairs The signature line format is: # signature=<base64-encoded-ed25519-signature> To enable signing: 1. Run: go run scripts/generate_manifest_keys.go 2. Add the private key as GitHub secret MANIFEST_SIGNING_KEY 3. Embed the public key in the installer for verification (PR 4) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
42 lines
1.1 KiB
Go
42 lines
1.1 KiB
Go
// +build ignore
|
|
|
|
// Script to generate Ed25519 key pair for manifest signing.
|
|
// Run with: go run scripts/generate_manifest_keys.go
|
|
//
|
|
// This will output:
|
|
// - Private key (base64): Store as MANIFEST_SIGNING_KEY GitHub secret
|
|
// - Public key (base64): Embed in EagleInstaller for verification
|
|
|
|
package main
|
|
|
|
import (
|
|
"crypto/ed25519"
|
|
"crypto/rand"
|
|
"encoding/base64"
|
|
"fmt"
|
|
"log"
|
|
)
|
|
|
|
func main() {
|
|
// Generate Ed25519 key pair
|
|
publicKey, privateKey, err := ed25519.GenerateKey(rand.Reader)
|
|
if err != nil {
|
|
log.Fatalf("Failed to generate key pair: %v", err)
|
|
}
|
|
|
|
// Encode keys as base64
|
|
privateKeyB64 := base64.StdEncoding.EncodeToString(privateKey)
|
|
publicKeyB64 := base64.StdEncoding.EncodeToString(publicKey)
|
|
|
|
fmt.Println("=== Ed25519 Key Pair for Manifest Signing ===")
|
|
fmt.Println()
|
|
fmt.Println("PRIVATE KEY (store as GitHub secret MANIFEST_SIGNING_KEY):")
|
|
fmt.Println(privateKeyB64)
|
|
fmt.Println()
|
|
fmt.Println("PUBLIC KEY (embed in EagleInstaller.cs for verification):")
|
|
fmt.Println(publicKeyB64)
|
|
fmt.Println()
|
|
fmt.Printf("Private key size: %d bytes\n", len(privateKey))
|
|
fmt.Printf("Public key size: %d bytes\n", len(publicKey))
|
|
}
|