Files
sub2api-add/plugins/subscription-admin/tools/manifestcheck/main.go
T
Qiufeng 5feae3ad41
Business Plugins CI / check (plugin-admin) (push) Successful in 3m13s
Business Plugins CI / check (subscription-admin) (push) Successful in 1m41s
chore: initialize standalone business plugin repository
2026-08-27 23:36:08 +08:00

46 lines
1.1 KiB
Go

package main
import (
"flag"
"fmt"
"os"
"git.awaioi.com/awaioi/sub2api-add/plugins/subscription-admin/internal/manifest"
)
func main() {
manifestPath := flag.String("manifest", "business-plugin-manifest.v1.json", "manifest path")
signaturePath := flag.String("signature", "", "optional detached signature path")
publicKeyPath := flag.String("public-key", "", "base64 Ed25519 public key file")
flag.Parse()
m, raw, err := manifest.Load(*manifestPath)
if err != nil {
fatal(err)
}
if (*signaturePath == "") != (*publicKeyPath == "") {
fatal(fmt.Errorf("-signature and -public-key must be provided together"))
}
if *signaturePath != "" {
signature, err := os.ReadFile(*signaturePath)
if err != nil {
fatal(err)
}
publicKey, err := os.ReadFile(*publicKeyPath)
if err != nil {
fatal(err)
}
if err := manifest.VerifyKeyID(signature, m.Publisher.KeyID); err != nil {
fatal(err)
}
if err := manifest.VerifySignature(raw, signature, publicKey); err != nil {
fatal(err)
}
}
fmt.Printf("manifest valid: %s\n", *manifestPath)
}
func fatal(err error) {
fmt.Fprintln(os.Stderr, err)
os.Exit(1)
}