package main

import (
	"crypto/ed25519"
	"encoding/base64"
	"encoding/json"
	"fmt"
	"os"
	"strings"
)

const gomulu = "bE1qYWOzKZasuepzdrtWGEIcDYAm6RvI6Ymy+HVpYcA="

func main() {
	anahtarYolu, sha, surum := os.Args[1], strings.ToLower(os.Args[2]), os.Args[3]
	ham, err := os.ReadFile(anahtarYolu)
	if err != nil {
		panic(err)
	}
	priv, err := base64.StdEncoding.DecodeString(strings.TrimSpace(string(ham)))
	if err != nil || len(priv) != ed25519.PrivateKeySize {
		panic("gizli anahtar bicimi gecersiz")
	}
	pub := ed25519.PrivateKey(priv).Public().(ed25519.PublicKey)
	if base64.StdEncoding.EncodeToString(pub) != gomulu {
		panic("gizli anahtar bridge'e gomulu acik anahtarla eslesmiyor")
	}
	metin := []byte("fikoyt-eklenti-v2\nbridge\n" + surum + "\n" + sha + "\n0")
	imza := ed25519.Sign(priv, metin)
	if !ed25519.Verify(pub, metin, imza) {
		panic("dogrulama basarisiz")
	}
	m := map[string]interface{}{
		"anahtar": "bridge", "surum": surum, "sha256": sha,
		"imza": base64.StdEncoding.EncodeToString(imza), "bicim": "v2", "acilis": false,
		"url": "https://fikoyt.com:9000/bridge/" + surum + "/bridge.exe",
	}
	out, _ := json.MarshalIndent(m, "", "  ")
	fmt.Println(string(out))
}