From 330754ef4f50b7e5c24008d8610521ab20e819fd Mon Sep 17 00:00:00 2001 From: doesnm Date: Wed, 4 Jun 2025 15:18:56 +0000 Subject: [PATCH] initial relic support as jarsigner alternative --- main.go | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/main.go b/main.go index 875ca94..6f9e5c4 100644 --- a/main.go +++ b/main.go @@ -80,6 +80,7 @@ type Config struct { KeyStoreAlias string `toml:"keystore_alias"` BinarySources []string `toml:"binarySources"` GithubToken string `toml:"github_token"` + RelicConfig string `toml:"relic_config"` } type User struct { @@ -545,6 +546,13 @@ func signJarWithJarsigner(jarFile string, keystore string, password string, alia return err, string(output) // Возвращаем ошибку и вывод как строку } +func signJarWithRelic(jarFile string, keystore string, password string, alias string,relicConfig string) (error, string) { + cmd := exec.Command("relic", "sign","--digest","SHA1","--key-alias",alias,"--file",jarFile,"--output",jarFile,"--key",keystore,"--config",relicConfig) + //cmd.Env = append(cmd.Env, "KEYSTORE_PASSWORD="+password) + output, err := cmd.CombinedOutput() // Сначала получаем вывод и ошибку + return err, string(output) // Возвращаем ошибку и вывод как строку +} + func createAppFromReleases(releases []Release, repo string, index int,indexCache Index,config Config) (App, []Package,error) { // Получаем информацию о репозитории repository, err := getRepositoryInfo(repo,config) @@ -599,7 +607,7 @@ func main() { var config Config configPath := flag.String("config", "config.toml", "Path to the configuration file") - +useRelic := flag.Bool("relic",false,"Use relic instead that jarsigner") // Parse the command-line flags flag.Parse() file, err := os.Open(*configPath) @@ -689,11 +697,20 @@ for _, source := range config.BinarySources { p12File := config.KeyStorePath // Укажите путь к вашему P12 файлу password := config.KeyStorePassword // Укажите пароль для P12 файла alias := config.KeyStoreAlias // Укажите алиас для ключа - + if *useRelic == true { +err, output := signJarWithRelic("index-v1.jar", p12File, password, alias,config.RelicConfig) + if err != nil { + fmt.Println("Error signing JAR:", err, output) + return + } + fmt.Println("JAR file signed successfully.") + }else{ err, output := signJarWithJarsigner("index-v1.jar", p12File, password, alias) if err != nil { fmt.Println("Error signing JAR:", err, output) return } fmt.Println("JAR file signed successfully.") + } +} \ No newline at end of file