@@ -47,26 +47,28 @@ type PackageRepository struct {
4747 Codename string `yaml:"codename"` // Repository identifier/codename
4848 URL string `yaml:"url"` // Repository base URL
4949 PKey string `yaml:"pkey"` // Public GPG key URL for verification
50+ PKeys []string `yaml:"pkeys,omitempty"` // Multiple public GPG key URLs for verification
5051 Component string `yaml:"component,omitempty"` // Repository component (e.g., "main", "restricted")
5152 Priority int `yaml:"priority,omitempty"` // Repository priority (higher numbers = higher priority)
5253 AllowPackages []string `yaml:"allowPackages,omitempty"` // Optional: specific packages to include from this repo (pinning)
5354}
5455
5556// ProviderRepoConfig represents the repository configuration for a provider
5657type ProviderRepoConfig struct {
57- Name string `yaml:"name"`
58- Type string `yaml:"type"` // Repository type: "rpm" or "deb"
59- BaseURL string `yaml:"baseURL"`
60- PkgPrefix string `yaml:"pkgPrefix"`
61- ReleaseFile string `yaml:"releaseFile"`
62- ReleaseSign string `yaml:"releaseSign"`
63- PbGPGKey string `yaml:"pbGPGKey"` // For DEB repositories (eLxr)
64- GPGKey string `yaml:"gpgKey"` // For RPM repositories (azl, emt)
65- GPGCheck bool `yaml:"gpgCheck"`
66- RepoGPGCheck bool `yaml:"repoGPGCheck"`
67- Enabled bool `yaml:"enabled"`
68- Component string `yaml:"component"` // Repository component/section identifier
69- BuildPath string `yaml:"buildPath"`
58+ Name string `yaml:"name"`
59+ Type string `yaml:"type"` // Repository type: "rpm" or "deb"
60+ BaseURL string `yaml:"baseURL"`
61+ PkgPrefix string `yaml:"pkgPrefix"`
62+ ReleaseFile string `yaml:"releaseFile"`
63+ ReleaseSign string `yaml:"releaseSign"`
64+ PbGPGKey string `yaml:"pbGPGKey"` // For DEB repositories (eLxr)
65+ GPGKey string `yaml:"gpgKey"` // For RPM repositories (azl, emt)
66+ GPGKeys []string `yaml:"gpgKeys,omitempty"`
67+ GPGCheck bool `yaml:"gpgCheck"`
68+ RepoGPGCheck bool `yaml:"repoGPGCheck"`
69+ Enabled bool `yaml:"enabled"`
70+ Component string `yaml:"component"` // Repository component/section identifier
71+ BuildPath string `yaml:"buildPath"`
7072}
7173
7274// ProviderRepoConfigs represents multiple repository configurations for a provider
@@ -864,13 +866,26 @@ func (prc *ProviderRepoConfig) ToRepoConfigData(arch string) (repoType, name, ur
864866 url = prc .BaseURL
865867 }
866868
867- // Handle GPG key URL construction
868- gpgKey = prc .GPGKey
869- if ! strings .HasPrefix (gpgKey , "http" ) && gpgKey != "" {
870- // For relative GPG key paths, use the constructed repository URL
871- gpgKey = fmt .Sprintf ("%s/%s" , url , gpgKey )
869+ gpgKeyValues := make ([]string , 0 , len (prc .GPGKeys )+ 1 )
870+ if len (prc .GPGKeys ) > 0 {
871+ gpgKeyValues = append (gpgKeyValues , prc .GPGKeys ... )
872+ }
873+ if prc .GPGKey != "" {
874+ gpgKeyValues = append (gpgKeyValues , prc .GPGKey )
875+ }
876+
877+ resolvedKeys := make ([]string , 0 , len (gpgKeyValues ))
878+ for _ , keyURL := range gpgKeyValues {
879+ keyURL = strings .TrimSpace (keyURL )
880+ if keyURL == "" {
881+ continue
882+ }
883+ if ! strings .HasPrefix (keyURL , "http" ) {
884+ keyURL = fmt .Sprintf ("%s/%s" , url , keyURL )
885+ }
886+ resolvedKeys = append (resolvedKeys , keyURL )
872887 }
873- // If gpgKey starts with http, use it as-is
888+ gpgKey = strings . Join ( resolvedKeys , "," )
874889
875890 // DEB-specific fields are empty for RPM
876891 pkgPrefix = ""
0 commit comments