Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package falcoctl for openSUSE:Factory checked in at 2026-01-29 17:45:09 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/falcoctl (Old) and /work/SRC/openSUSE:Factory/.falcoctl.new.1995 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "falcoctl" Thu Jan 29 17:45:09 2026 rev:11 rq:1329669 version:0.12.2 Changes: -------- --- /work/SRC/openSUSE:Factory/falcoctl/falcoctl.changes 2026-01-22 15:16:00.742817297 +0100 +++ /work/SRC/openSUSE:Factory/.falcoctl.new.1995/falcoctl.changes 2026-01-29 17:45:38.383093525 +0100 @@ -1,0 +2,13 @@ +Wed Jan 28 12:32:04 UTC 2026 - Johannes Kastl <[email protected]> + +- Update to version 0.12.2: + * chore(deps): Bump github.com/theupdateframework/go-tuf/v2 + * fix(signature): pass registry credentials to cosign for + signature verification + * chore(deps): Bump actions/checkout in the actions group + * chore(deps): Bump github.com/sigstore/sigstore from 1.10.3 to + 1.10.4 + * chore(deps): Bump github.com/sigstore/rekor from 1.4.3 to 1.5.0 + * chore(deps): Bump github.com/theupdateframework/go-tuf/v2 + +------------------------------------------------------------------- Old: ---- falcoctl-0.12.1.obscpio New: ---- falcoctl-0.12.2.obscpio ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ falcoctl.spec ++++++ --- /var/tmp/diff_new_pack.A1IuFF/_old 2026-01-29 17:45:39.691148762 +0100 +++ /var/tmp/diff_new_pack.A1IuFF/_new 2026-01-29 17:45:39.695148931 +0100 @@ -17,7 +17,7 @@ Name: falcoctl -Version: 0.12.1 +Version: 0.12.2 Release: 0 Summary: CLI / Administrative tooling for Falco License: Apache-2.0 ++++++ _service ++++++ --- /var/tmp/diff_new_pack.A1IuFF/_old 2026-01-29 17:45:39.743150958 +0100 +++ /var/tmp/diff_new_pack.A1IuFF/_new 2026-01-29 17:45:39.751151296 +0100 @@ -3,7 +3,7 @@ <param name="url">https://github.com/falcosecurity/falcoctl</param> <param name="scm">git</param> <param name="exclude">.git</param> - <param name="revision">v0.12.1</param> + <param name="revision">v0.12.2</param> <param name="versionformat">@PARENT_TAG@</param> <param name="versionrewrite-pattern">v(.*)</param> <param name="changesgenerate">enable</param> ++++++ _servicedata ++++++ --- /var/tmp/diff_new_pack.A1IuFF/_old 2026-01-29 17:45:39.775152309 +0100 +++ /var/tmp/diff_new_pack.A1IuFF/_new 2026-01-29 17:45:39.779152478 +0100 @@ -1,6 +1,6 @@ <servicedata> <service name="tar_scm"> <param name="url">https://github.com/falcosecurity/falcoctl</param> - <param name="changesrevision">d35bf927a3c8ae109907183dcefea19ec9e9a054</param></service></servicedata> + <param name="changesrevision">ae89b7462adb8e9eff3b00eabe1da923211562e3</param></service></servicedata> (No newline at EOF) ++++++ falcoctl-0.12.1.obscpio -> falcoctl-0.12.2.obscpio ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/falcoctl-0.12.1/cmd/artifact/install/install.go new/falcoctl-0.12.2/cmd/artifact/install/install.go --- old/falcoctl-0.12.1/cmd/artifact/install/install.go 2026-01-21 15:09:32.000000000 +0100 +++ new/falcoctl-0.12.2/cmd/artifact/install/install.go 2026-01-27 09:07:04.000000000 +0100 @@ -297,7 +297,7 @@ digestRef := fmt.Sprintf("%s@%s", repo, result.RootDigest) logger.Info("Verifying signature for artifact", logger.Args("digest", digestRef)) - err = signature.Verify(ctx, digestRef, sig) + err = signature.Verify(ctx, digestRef, sig, o.PlainHTTP) if err != nil { return fmt.Errorf("error while verifying signature for %s: %w", digestRef, err) } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/falcoctl-0.12.1/cmd/registry/auth/basic/basic.go new/falcoctl-0.12.2/cmd/registry/auth/basic/basic.go --- old/falcoctl-0.12.1/cmd/registry/auth/basic/basic.go 2026-01-21 15:09:32.000000000 +0100 +++ new/falcoctl-0.12.2/cmd/registry/auth/basic/basic.go 2026-01-27 09:07:04.000000000 +0100 @@ -26,7 +26,6 @@ "github.com/spf13/cobra" "github.com/spf13/viper" "golang.org/x/term" - "oras.land/oras-go/v2/registry/remote/credentials" "github.com/falcosecurity/falcoctl/internal/config" "github.com/falcosecurity/falcoctl/internal/login/basic" @@ -110,11 +109,9 @@ client := authn.NewClient() // create credential store - credentialStore, err := credentials.NewStore(config.RegistryCredentialConfPath(), credentials.StoreOptions{ - AllowPlaintextPut: true, - }) + credentialStore, err := authn.NewCredentialStore() if err != nil { - return fmt.Errorf("unable to create new store: %w", err) + return fmt.Errorf("unable to create credential store: %w", err) } if err := basic.Login(ctx, client, credentialStore, reg, o.username, o.password); err != nil { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/falcoctl-0.12.1/go.mod new/falcoctl-0.12.2/go.mod --- old/falcoctl-0.12.1/go.mod 2026-01-21 15:09:32.000000000 +0100 +++ new/falcoctl-0.12.2/go.mod 2026-01-27 09:07:04.000000000 +0100 @@ -1,6 +1,6 @@ module github.com/falcosecurity/falcoctl -go 1.25.0 +go 1.25.5 require ( cloud.google.com/go/storage v1.57.1 @@ -26,7 +26,7 @@ github.com/pterm/pterm v0.12.80 github.com/robfig/cron/v3 v3.0.1 github.com/sigstore/cosign/v3 v3.0.4 - github.com/sigstore/sigstore v1.10.3 + github.com/sigstore/sigstore v1.10.4 github.com/sigstore/sigstore/pkg/signature/kms/aws v1.10.3 github.com/sigstore/sigstore/pkg/signature/kms/azure v1.10.3 github.com/sigstore/sigstore/pkg/signature/kms/gcp v1.10.3 @@ -41,8 +41,8 @@ golang.org/x/oauth2 v0.34.0 golang.org/x/sys v0.40.0 golang.org/x/term v0.38.0 - google.golang.org/api v0.259.0 - gopkg.in/ini.v1 v1.67.0 + google.golang.org/api v0.260.0 + gopkg.in/ini.v1 v1.67.1 gopkg.in/yaml.v3 v3.0.1 k8s.io/api v0.35.0 k8s.io/apimachinery v0.35.0 @@ -168,18 +168,18 @@ github.com/fsnotify/fsnotify v1.9.0 // indirect github.com/fxamacker/cbor/v2 v2.9.0 // indirect github.com/gabriel-vasile/mimetype v1.4.11 // indirect - github.com/go-chi/chi/v5 v5.2.3 // indirect + github.com/go-chi/chi/v5 v5.2.4 // indirect github.com/go-errors/errors v1.5.1 // indirect github.com/go-jose/go-jose/v4 v4.1.3 // indirect github.com/go-logr/logr v1.4.3 // indirect github.com/go-logr/stdr v1.2.2 // indirect github.com/go-openapi/analysis v0.24.1 // indirect - github.com/go-openapi/errors v0.22.5 // indirect + github.com/go-openapi/errors v0.22.6 // indirect github.com/go-openapi/jsonpointer v0.22.4 // indirect github.com/go-openapi/jsonreference v0.21.4 // indirect github.com/go-openapi/loads v0.23.2 // indirect github.com/go-openapi/runtime v0.29.2 // indirect - github.com/go-openapi/spec v0.22.2 // indirect + github.com/go-openapi/spec v0.22.3 // indirect github.com/go-openapi/strfmt v0.25.0 // indirect github.com/go-openapi/swag v0.25.4 // indirect github.com/go-openapi/swag/cmdutils v0.25.4 // indirect @@ -211,7 +211,7 @@ github.com/google/pprof v0.0.0-20250602020802-c6617b811d0e // indirect github.com/google/s2a-go v0.1.9 // indirect github.com/google/uuid v1.6.0 // indirect - github.com/googleapis/enterprise-certificate-proxy v0.3.7 // indirect + github.com/googleapis/enterprise-certificate-proxy v0.3.9 // indirect github.com/googleapis/gax-go/v2 v2.16.0 // indirect github.com/gorilla/handlers v1.5.2 // indirect github.com/gorilla/mux v1.8.1 // indirect @@ -285,21 +285,21 @@ github.com/prometheus/procfs v0.19.2 // indirect github.com/redis/go-redis/extra/rediscmd/v9 v9.5.3 // indirect github.com/redis/go-redis/extra/redisotel/v9 v9.5.3 // indirect - github.com/redis/go-redis/v9 v9.14.1 // indirect + github.com/redis/go-redis/v9 v9.17.2 // indirect github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec // indirect github.com/russross/blackfriday/v2 v2.1.0 // indirect github.com/ryanuber/go-glob v1.0.0 // indirect github.com/sagikazarmark/locafero v0.11.0 // indirect github.com/sassoftware/relic v7.2.1+incompatible // indirect - github.com/secure-systems-lab/go-securesystemslib v0.9.1 // indirect + github.com/secure-systems-lab/go-securesystemslib v0.10.0 // indirect github.com/shibumi/go-pathspec v1.3.0 // indirect github.com/sigstore/fulcio v1.8.5 // indirect github.com/sigstore/protobuf-specs v0.5.0 // indirect - github.com/sigstore/rekor v1.4.3 // indirect + github.com/sigstore/rekor v1.5.0 // indirect github.com/sigstore/rekor-tiles/v2 v2.0.1 // indirect github.com/sigstore/sigstore-go v1.1.4 // indirect github.com/sigstore/timestamp-authority/v2 v2.0.4 // indirect - github.com/sirupsen/logrus v1.9.4-0.20230606125235-dd1b4c2e81af // indirect + github.com/sirupsen/logrus v1.9.4 // indirect github.com/sourcegraph/conc v0.3.1-0.20240121214520-5f936abd7ae8 // indirect github.com/spf13/afero v1.15.0 // indirect github.com/spf13/cast v1.10.0 // indirect @@ -308,7 +308,7 @@ github.com/syndtr/goleveldb v1.0.1-0.20220721030215-126854af5e6d // indirect github.com/thales-e-security/pool v0.0.2 // indirect github.com/theupdateframework/go-tuf v0.7.0 // indirect - github.com/theupdateframework/go-tuf/v2 v2.3.0 // indirect + github.com/theupdateframework/go-tuf/v2 v2.4.1 // indirect github.com/tidwall/btree v1.6.0 // indirect github.com/tidwall/buntdb v1.3.0 // indirect github.com/tidwall/gjson v1.18.0 // indirect @@ -385,7 +385,7 @@ sigs.k8s.io/kustomize/api v0.20.1 // indirect sigs.k8s.io/kustomize/kyaml v0.20.1 // indirect sigs.k8s.io/randfill v1.0.0 // indirect - sigs.k8s.io/release-utils v0.12.2 // indirect + sigs.k8s.io/release-utils v0.12.3 // indirect sigs.k8s.io/structured-merge-diff/v6 v6.3.0 // indirect sigs.k8s.io/yaml v1.6.0 // indirect ) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/falcoctl-0.12.1/go.sum new/falcoctl-0.12.2/go.sum --- old/falcoctl-0.12.1/go.sum 2026-01-21 15:09:32.000000000 +0100 +++ new/falcoctl-0.12.2/go.sum 2026-01-27 09:07:04.000000000 +0100 @@ -377,8 +377,8 @@ github.com/gkampitakis/go-diff v1.3.2/go.mod h1:LLgOrpqleQe26cte8s36HTWcTmMEur6OPYerdAAS9tk= github.com/gkampitakis/go-snaps v0.5.15 h1:amyJrvM1D33cPHwVrjo9jQxX8g/7E2wYdZ+01KS3zGE= github.com/gkampitakis/go-snaps v0.5.15/go.mod h1:HNpx/9GoKisdhw9AFOBT1N7DBs9DiHo/hGheFGBZ+mc= -github.com/go-chi/chi/v5 v5.2.3 h1:WQIt9uxdsAbgIYgid+BpYc+liqQZGMHRaUwp0JUcvdE= -github.com/go-chi/chi/v5 v5.2.3/go.mod h1:L2yAIGWB3H+phAw1NxKwWM+7eUH/lU8pOMm5hHcoops= +github.com/go-chi/chi/v5 v5.2.4 h1:WtFKPHwlywe8Srng8j2BhOD9312j9cGUxG1SP4V2cR4= +github.com/go-chi/chi/v5 v5.2.4/go.mod h1:X7Gx4mteadT3eDOMTsXzmI4/rwUpOwBHLpAfupzFJP0= github.com/go-errors/errors v1.5.1 h1:ZwEMSLRCapFLflTpT7NKaAc7ukJ8ZPEjzlxt8rPN8bk= github.com/go-errors/errors v1.5.1/go.mod h1:sIVyrIiJhuEF+Pj9Ebtd6P/rEYROXFi3BopGUQ5a5Og= github.com/go-jose/go-jose/v4 v4.1.3 h1:CVLmWDhDVRa6Mi/IgCgaopNosCaHz7zrMeF9MlZRkrs= @@ -395,8 +395,8 @@ github.com/go-oauth2/oauth2/v4 v4.5.3/go.mod h1:ryzb7zr8fdQBlciD0+tcnEWeOok5B0J8V/DniwYqQ2k= github.com/go-openapi/analysis v0.24.1 h1:Xp+7Yn/KOnVWYG8d+hPksOYnCYImE3TieBa7rBOesYM= github.com/go-openapi/analysis v0.24.1/go.mod h1:dU+qxX7QGU1rl7IYhBC8bIfmWQdX4Buoea4TGtxXY84= -github.com/go-openapi/errors v0.22.5 h1:Yfv4O/PRYpNF3BNmVkEizcHb3uLVVsrDt3LNdgAKRY4= -github.com/go-openapi/errors v0.22.5/go.mod h1:z9S8ASTUqx7+CP1Q8dD8ewGH/1JWFFLX/2PmAYNQLgk= +github.com/go-openapi/errors v0.22.6 h1:eDxcf89O8odEnohIXwEjY1IB4ph5vmbUsBMsFNwXWPo= +github.com/go-openapi/errors v0.22.6/go.mod h1:z9S8ASTUqx7+CP1Q8dD8ewGH/1JWFFLX/2PmAYNQLgk= github.com/go-openapi/jsonpointer v0.22.4 h1:dZtK82WlNpVLDW2jlA1YCiVJFVqkED1MegOUy9kR5T4= github.com/go-openapi/jsonpointer v0.22.4/go.mod h1:elX9+UgznpFhgBuaMQ7iu4lvvX1nvNsesQ3oxmYTw80= github.com/go-openapi/jsonreference v0.21.4 h1:24qaE2y9bx/q3uRK/qN+TDwbok1NhbSmGjjySRCHtC8= @@ -405,8 +405,8 @@ github.com/go-openapi/loads v0.23.2/go.mod h1:IEVw1GfRt/P2Pplkelxzj9BYFajiWOtY2nHZNj4UnWY= github.com/go-openapi/runtime v0.29.2 h1:UmwSGWNmWQqKm1c2MGgXVpC2FTGwPDQeUsBMufc5Yj0= github.com/go-openapi/runtime v0.29.2/go.mod h1:biq5kJXRJKBJxTDJXAa00DOTa/anflQPhT0/wmjuy+0= -github.com/go-openapi/spec v0.22.2 h1:KEU4Fb+Lp1qg0V4MxrSCPv403ZjBl8Lx1a83gIPU8Qc= -github.com/go-openapi/spec v0.22.2/go.mod h1:iIImLODL2loCh3Vnox8TY2YWYJZjMAKYyLH2Mu8lOZs= +github.com/go-openapi/spec v0.22.3 h1:qRSmj6Smz2rEBxMnLRBMeBWxbbOvuOoElvSvObIgwQc= +github.com/go-openapi/spec v0.22.3/go.mod h1:iIImLODL2loCh3Vnox8TY2YWYJZjMAKYyLH2Mu8lOZs= github.com/go-openapi/strfmt v0.25.0 h1:7R0RX7mbKLa9EYCTHRcCuIPcaqlyQiWNPTXwClK0saQ= github.com/go-openapi/strfmt v0.25.0/go.mod h1:nNXct7OzbwrMY9+5tLX4I21pzcmE6ccMGXl3jFdPfn8= github.com/go-openapi/swag v0.25.4 h1:OyUPUFYDPDBMkqyxOTkqDYFnrhuhi9NR6QVUvIochMU= @@ -535,8 +535,8 @@ github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/googleapis/enterprise-certificate-proxy v0.3.7 h1:zrn2Ee/nWmHulBx5sAVrGgAa0f2/R35S4DJwfFaUPFQ= -github.com/googleapis/enterprise-certificate-proxy v0.3.7/go.mod h1:MkHOF77EYAE7qfSuSS9PU6g4Nt4e11cnsDUowfwewLA= +github.com/googleapis/enterprise-certificate-proxy v0.3.9 h1:TOpi/QG8iDcZlkQlGlFUti/ZtyLkliXvHDcyUIMuFrU= +github.com/googleapis/enterprise-certificate-proxy v0.3.9/go.mod h1:MkHOF77EYAE7qfSuSS9PU6g4Nt4e11cnsDUowfwewLA= github.com/googleapis/gax-go/v2 v2.16.0 h1:iHbQmKLLZrexmb0OSsNGTeSTS0HO4YvFOG8g5E4Zd0Y= github.com/googleapis/gax-go/v2 v2.16.0/go.mod h1:o1vfQjjNZn4+dPnRdl/4ZD7S9414Y4xA+a/6Icj6l14= github.com/gookit/assert v0.1.1 h1:lh3GcawXe/p+cU7ESTZ5Ui3Sm/x8JWpIis4/1aF0mY0= @@ -813,8 +813,8 @@ github.com/redis/go-redis/extra/rediscmd/v9 v9.5.3/go.mod h1:3dZmcLn3Qw6FLlWASn1g4y+YO9ycEFUOM+bhBmzLVKQ= github.com/redis/go-redis/extra/redisotel/v9 v9.5.3 h1:kuvuJL/+MZIEdvtb/kTBRiRgYaOmx1l+lYJyVdrRUOs= github.com/redis/go-redis/extra/redisotel/v9 v9.5.3/go.mod h1:7f/FMrf5RRRVHXgfk7CzSVzXHiWeuOQUu2bsVqWoa+g= -github.com/redis/go-redis/v9 v9.14.1 h1:nDCrEiJmfOWhD76xlaw+HXT0c9hfNWeXgl0vIRYSDvQ= -github.com/redis/go-redis/v9 v9.14.1/go.mod h1:huWgSWd8mW6+m0VPhJjSSQ+d6Nh1VICQ6Q5lHuCH/Iw= +github.com/redis/go-redis/v9 v9.17.2 h1:P2EGsA4qVIM3Pp+aPocCJ7DguDHhqrXNhVcEp4ViluI= +github.com/redis/go-redis/v9 v9.17.2/go.mod h1:u410H11HMLoB+TP67dz8rL9s6QW2j76l0//kSOd3370= github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec h1:W09IVJc94icq4NjY3clb7Lk8O1qJ8BdBEF8z0ibU0rE= github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec/go.mod h1:qqbHyh8v60DhA7CoWK5oRCqLrMHRGoxYCSS9EjAz6Eo= github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= @@ -833,8 +833,8 @@ github.com/sassoftware/relic/v7 v7.6.2 h1:rS44Lbv9G9eXsukknS4mSjIAuuX+lMq/FnStgmZlUv4= github.com/sassoftware/relic/v7 v7.6.2/go.mod h1:kjmP0IBVkJZ6gXeAu35/KCEfca//+PKM6vTAsyDPY+k= github.com/sclevine/agouti v3.0.0+incompatible/go.mod h1:b4WX9W9L1sfQKXeJf1mUTLZKJ48R1S7H23Ji7oFO5Bw= -github.com/secure-systems-lab/go-securesystemslib v0.9.1 h1:nZZaNz4DiERIQguNy0cL5qTdn9lR8XKHf4RUyG1Sx3g= -github.com/secure-systems-lab/go-securesystemslib v0.9.1/go.mod h1:np53YzT0zXGMv6x4iEWc9Z59uR+x+ndLwCLqPYpLXVU= +github.com/secure-systems-lab/go-securesystemslib v0.10.0 h1:l+H5ErcW0PAehBNrBxoGv1jjNpGYdZ9RcheFkB2WI14= +github.com/secure-systems-lab/go-securesystemslib v0.10.0/go.mod h1:MRKONWmRoFzPNQ9USRF9i1mc7MvAVvF1LlW8X5VWDvk= github.com/sergi/go-diff v1.1.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM= github.com/sergi/go-diff v1.2.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM= github.com/sergi/go-diff v1.3.1 h1:xkr+Oxo4BOQKmkn/B9eMK0g5Kg/983T9DqqPHwYqD+8= @@ -847,12 +847,12 @@ github.com/sigstore/fulcio v1.8.5/go.mod h1:tSLYK3JsKvJpDW1BsIsVHZgHj+f8TjXARzqIUWSsSPQ= github.com/sigstore/protobuf-specs v0.5.0 h1:F8YTI65xOHw70NrvPwJ5PhAzsvTnuJMGLkA4FIkofAY= github.com/sigstore/protobuf-specs v0.5.0/go.mod h1:+gXR+38nIa2oEupqDdzg4qSBT0Os+sP7oYv6alWewWc= -github.com/sigstore/rekor v1.4.3 h1:2+aw4Gbgumv8vYM/QVg6b+hvr4x4Cukur8stJrVPKU0= -github.com/sigstore/rekor v1.4.3/go.mod h1:o0zgY087Q21YwohVvGwV9vK1/tliat5mfnPiVI3i75o= +github.com/sigstore/rekor v1.5.0 h1:rL7SghHd5HLCtsCrxw0yQg+NczGvM75EjSPPWuGjaiQ= +github.com/sigstore/rekor v1.5.0/go.mod h1:D7JoVCUkxwQOpPDNYeu+CE8zeBC18Y5uDo6tF8s2rcQ= github.com/sigstore/rekor-tiles/v2 v2.0.1 h1:1Wfz15oSRNGF5Dzb0lWn5W8+lfO50ork4PGIfEKjZeo= github.com/sigstore/rekor-tiles/v2 v2.0.1/go.mod h1:Pjsbhzj5hc3MKY8FfVTYHBUHQEnP0ozC4huatu4x7OU= -github.com/sigstore/sigstore v1.10.3 h1:s7fBYYOzW/2Vd0nND2ZdpWySb5vRF2u9eix/NZMHJm0= -github.com/sigstore/sigstore v1.10.3/go.mod h1:T26vXIkpnGEg391v3TaZ8EERcXbnjtZb/1erh5jbIQk= +github.com/sigstore/sigstore v1.10.4 h1:ytOmxMgLdcUed3w1SbbZOgcxqwMG61lh1TmZLN+WeZE= +github.com/sigstore/sigstore v1.10.4/go.mod h1:tDiyrdOref3q6qJxm2G+JHghqfmvifB7hw+EReAfnbI= github.com/sigstore/sigstore-go v1.1.4 h1:wTTsgCHOfqiEzVyBYA6mDczGtBkN7cM8mPpjJj5QvMg= github.com/sigstore/sigstore-go v1.1.4/go.mod h1:2U/mQOT9cjjxrtIUeKDVhL+sHBKsnWddn8URlswdBsg= github.com/sigstore/sigstore/pkg/signature/kms/aws v1.10.3 h1:D/FRl5J9UYAJPGZRAJbP0dH78pfwWnKsyCSBwFBU8CI= @@ -867,8 +867,8 @@ github.com/sigstore/timestamp-authority/v2 v2.0.4/go.mod h1:EXJLiMDBqRPlzC02hPiFSiYTCqSuUpU68a4vr0DFePM= github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= github.com/sirupsen/logrus v1.8.1/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= -github.com/sirupsen/logrus v1.9.4-0.20230606125235-dd1b4c2e81af h1:Sp5TG9f7K39yfB+If0vjp97vuT74F72r8hfRpP8jLU0= -github.com/sirupsen/logrus v1.9.4-0.20230606125235-dd1b4c2e81af/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= +github.com/sirupsen/logrus v1.9.4 h1:TsZE7l11zFCLZnZ+teH4Umoq5BhEIfIzfRDZ1Uzql2w= +github.com/sirupsen/logrus v1.9.4/go.mod h1:ftWc9WdOfJ0a92nsE2jF5u5ZwH8Bv2zdeOC42RjbV2g= github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= github.com/smartystreets/assertions v1.1.0 h1:MkTeG1DMwsrdH7QtLXy5W+fUxWq+vmb6cLmyJ7aRtF0= github.com/smartystreets/assertions v1.1.0/go.mod h1:tcbTF8ujkAEcZ8TElKY+i30BzYlVhC/LOxJk7iOWnoo= @@ -906,6 +906,7 @@ github.com/stretchr/testify v1.7.2/go.mod h1:R6va5+xMeoiuVRoj+gSkQ7d3FALtqAAGI1FQKckRals= github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= github.com/stretchr/testify v1.8.2/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= +github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U= github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= github.com/subosito/gotenv v1.6.0 h1:9NlTDc1FTs4qu0DDq7AEtTPNw6SVm7uBMsUCUjABIf8= @@ -916,8 +917,8 @@ github.com/thales-e-security/pool v0.0.2/go.mod h1:qtpMm2+thHtqhLzTwgDBj/OuNnMpupY8mv0Phz0gjhU= github.com/theupdateframework/go-tuf v0.7.0 h1:CqbQFrWo1ae3/I0UCblSbczevCCbS31Qvs5LdxRWqRI= github.com/theupdateframework/go-tuf v0.7.0/go.mod h1:uEB7WSY+7ZIugK6R1hiBMBjQftaFzn7ZCDJcp1tCUug= -github.com/theupdateframework/go-tuf/v2 v2.3.0 h1:gt3X8xT8qu/HT4w+n1jgv+p7koi5ad8XEkLXXZqG9AA= -github.com/theupdateframework/go-tuf/v2 v2.3.0/go.mod h1:xW8yNvgXRncmovMLvBxKwrKpsOwJZu/8x+aB0KtFcdw= +github.com/theupdateframework/go-tuf/v2 v2.4.1 h1:K6ewW064rKZCPkRo1W/CTbTtm/+IB4+coG1iNURAGCw= +github.com/theupdateframework/go-tuf/v2 v2.4.1/go.mod h1:Nex2enPVYDFCklrnbTzl3OVwD7fgIAj0J5++z/rvCj8= github.com/tidwall/assert v0.1.0 h1:aWcKyRBUAdLoVebxo95N7+YZVTFF/ASTr7BN4sLP6XI= github.com/tidwall/assert v0.1.0/go.mod h1:QLYtGyeqse53vuELQheYl9dngGCJQ+mTtlxcktb+Kj8= github.com/tidwall/btree v0.0.0-20191029221954-400434d76274/go.mod h1:huei1BkDWJ3/sLXmO+bsCNELL+Bp2Kks9OLyQFkzvA8= @@ -1182,7 +1183,6 @@ golang.org/x/sys v0.0.0-20220319134239-a9b59b0215f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220412211240-33da011f77ad/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20221010170243-090e33056c14/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= @@ -1233,8 +1233,8 @@ golang.org/x/xerrors v0.0.0-20220517211312-f3a8303e98df/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= gonum.org/v1/gonum v0.16.0 h1:5+ul4Swaf3ESvrOnidPp4GZbzf0mxVQpDCYUQE7OJfk= gonum.org/v1/gonum v0.16.0/go.mod h1:fef3am4MQ93R2HHpKnLk4/Tbh/s0+wqD5nfa6Pnwy4E= -google.golang.org/api v0.259.0 h1:90TaGVIxScrh1Vn/XI2426kRpBqHwWIzVBzJsVZ5XrQ= -google.golang.org/api v0.259.0/go.mod h1:LC2ISWGWbRoyQVpxGntWwLWN/vLNxxKBK9KuJRI8Te4= +google.golang.org/api v0.260.0 h1:XbNi5E6bOVEj/uLXQRlt6TKuEzMD7zvW/6tNwltE4P4= +google.golang.org/api v0.260.0/go.mod h1:Shj1j0Phr/9sloYrKomICzdYgsSDImpTxME8rGLaZ/o= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.6.6/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= @@ -1274,8 +1274,9 @@ gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc= gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= gopkg.in/ini.v1 v1.56.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= -gopkg.in/ini.v1 v1.67.0 h1:Dgnx+6+nfE+IfzjUEISNeydPJh9AXNNsWbGP9KzCsOA= gopkg.in/ini.v1 v1.67.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= +gopkg.in/ini.v1 v1.67.1 h1:tVBILHy0R6e4wkYOn3XmiITt/hEVH4TFMYvAX2Ytz6k= +gopkg.in/ini.v1 v1.67.1/go.mod h1:x/cyOwCgZqOkJoDIJ3c1KNHMo10+nLGAhh+kn3Zizss= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= @@ -1352,8 +1353,8 @@ sigs.k8s.io/kustomize/kyaml v0.20.1/go.mod h1:0EmkQHRUsJxY8Ug9Niig1pUMSCGHxQ5RklbpV/Ri6po= sigs.k8s.io/randfill v1.0.0 h1:JfjMILfT8A6RbawdsK2JXGBR5AQVfd+9TbzrlneTyrU= sigs.k8s.io/randfill v1.0.0/go.mod h1:XeLlZ/jmk4i1HRopwe7/aU3H5n1zNUcX6TM94b3QxOY= -sigs.k8s.io/release-utils v0.12.2 h1:H06v3FuLElAkf7Ikkd9ll8hnhdtQ+OgktJAni3iIAl8= -sigs.k8s.io/release-utils v0.12.2/go.mod h1:Ab9Lb/FpGUw4lUXj1QYbUcF2TRzll+GS7Md54W1G7sA= +sigs.k8s.io/release-utils v0.12.3 h1:iNVJY81QfmMCmXxMg8IvvkkeQNk6ZWlLj+iPKSlKyVQ= +sigs.k8s.io/release-utils v0.12.3/go.mod h1:BvbNmm1BmM3cnEpBmNHWL3wOSziOdGlsYR8vCFq/Q0o= sigs.k8s.io/structured-merge-diff/v6 v6.3.0 h1:jTijUJbW353oVOd9oTlifJqOGEkUw2jB/fXCbTiQEco= sigs.k8s.io/structured-merge-diff/v6 v6.3.0/go.mod h1:M3W8sfWvn2HhQDIbGWj3S099YozAsymCo/wrT5ohRUE= sigs.k8s.io/yaml v1.6.0 h1:G8fkbMSAFqgEFgh4b1wmtzDnioxFCUgTZhlbj5P9QYs= diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/falcoctl-0.12.1/internal/cosign/verify.go new/falcoctl-0.12.2/internal/cosign/verify.go --- old/falcoctl-0.12.1/internal/cosign/verify.go 2026-01-21 15:09:32.000000000 +0100 +++ new/falcoctl-0.12.2/internal/cosign/verify.go 2026-01-27 09:07:04.000000000 +0100 @@ -112,6 +112,11 @@ return fmt.Errorf("constructing client options: %w", err) } + // Allow HTTP registries when configured + if c.AllowHTTPRegistry || c.AllowInsecure { + c.NameOptions = append(c.NameOptions, name.Insecure) + } + co := &cosign.CheckOpts{ Annotations: c.Annotations.Annotations, RegistryClientOpts: ociremoteOpts, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/falcoctl-0.12.1/internal/follower/follower.go new/falcoctl-0.12.2/internal/follower/follower.go --- old/falcoctl-0.12.1/internal/follower/follower.go 2026-01-21 15:09:32.000000000 +0100 +++ new/falcoctl-0.12.2/internal/follower/follower.go 2026-01-27 09:07:04.000000000 +0100 @@ -387,7 +387,8 @@ // Verify the signature if needed if f.Config.Signature != nil { f.logger.Debug("Verifying signature", f.logger.Args("followerName", f.ref, "digest", digestRef)) - err = signature.Verify(ctx, digestRef, f.Config.Signature) + //nolint:staticcheck // Ignore QF1008: we want to keep embedded config.Signature field + err = signature.Verify(ctx, digestRef, f.Config.Signature, f.Config.PlainHTTP) if err != nil { return filePaths, res, fmt.Errorf("could not verify signature for %s: %w", res.RootDigest, err) } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/falcoctl-0.12.1/internal/signature/signature.go new/falcoctl-0.12.2/internal/signature/signature.go --- old/falcoctl-0.12.1/internal/signature/signature.go 2026-01-21 15:09:32.000000000 +0100 +++ new/falcoctl-0.12.2/internal/signature/signature.go 2026-01-27 09:07:04.000000000 +0100 @@ -17,15 +17,18 @@ import ( "context" + "fmt" "github.com/sigstore/cosign/v3/cmd/cosign/cli/options" "github.com/falcosecurity/falcoctl/internal/cosign" "github.com/falcosecurity/falcoctl/pkg/index/index" + "github.com/falcosecurity/falcoctl/pkg/oci/authn" ) // Verify checks that a fully qualified reference is signed according to the parameters. -func Verify(ctx context.Context, ref string, signature *index.Signature) error { +// It uses the same authentication sources as falcoctl's artifact operations. +func Verify(ctx context.Context, ref string, signature *index.Signature, plainHTTP bool) error { if signature == nil { // nothing to do return nil @@ -36,7 +39,17 @@ return nil } + keychain, err := authn.NewKeychain() + if err != nil { + return fmt.Errorf("failed to create keychain: %w", err) + } + v := cosign.VerifyCommand{ + RegistryOptions: options.RegistryOptions{ + AllowHTTPRegistry: plainHTTP, + AllowInsecure: plainHTTP, + Keychain: keychain, + }, CertVerifyOptions: options.CertVerifyOptions{ CertIdentity: signature.Cosign.CertificateIdentity, CertIdentityRegexp: signature.Cosign.CertificateIdentityRegexp, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/falcoctl-0.12.1/internal/signature/signature_test.go new/falcoctl-0.12.2/internal/signature/signature_test.go --- old/falcoctl-0.12.1/internal/signature/signature_test.go 2026-01-21 15:09:32.000000000 +0100 +++ new/falcoctl-0.12.2/internal/signature/signature_test.go 2026-01-27 09:07:04.000000000 +0100 @@ -24,7 +24,7 @@ func TestVerify_NilSignature(t *testing.T) { ctx := context.Background() - err := Verify(ctx, "ghcr.io/test/image:latest", nil) + err := Verify(ctx, "ghcr.io/test/image:latest", nil, false) if err != nil { t.Errorf("Verify with nil signature should return nil, got: %v", err) } @@ -35,7 +35,7 @@ sig := &index.Signature{ Cosign: nil, } - err := Verify(ctx, "ghcr.io/test/image:latest", sig) + err := Verify(ctx, "ghcr.io/test/image:latest", sig, false) if err != nil { t.Errorf("Verify with nil Cosign should return nil, got: %v", err) } @@ -50,7 +50,7 @@ }, } // Empty ref should fail during parsing - err := Verify(ctx, "", sig) + err := Verify(ctx, "", sig, false) if err == nil { t.Error("Verify with empty ref should return an error") } @@ -65,8 +65,78 @@ }, } // Invalid ref should fail during parsing - err := Verify(ctx, "not a valid ref!!!", sig) + err := Verify(ctx, "not a valid ref!!!", sig, false) if err == nil { t.Error("Verify with invalid ref should return an error") } } + +func TestVerify_PlainHTTP(t *testing.T) { + ctx := context.Background() + sig := &index.Signature{ + Cosign: &index.CosignSignature{ + CertificateOidcIssuer: "https://token.actions.githubusercontent.com", + CertificateIdentity: "[email protected]", + }, + } + // This should create keychain and set plainHTTP options correctly + // It will fail because the image doesn't exist, but the keychain creation should work + err := Verify(ctx, "localhost:5000/test/image:latest", sig, true) + // We expect an error (image doesn't exist), but not a keychain creation error + if err == nil { + t.Error("Verify should fail for non-existent image") + } + // The error should be about the image not existing, not about keychain + if err != nil && err.Error() == "failed to create keychain" { + t.Errorf("Verify should not fail on keychain creation: %v", err) + } +} + +func TestVerify_WithKeyRef(t *testing.T) { + ctx := context.Background() + sig := &index.Signature{ + Cosign: &index.CosignSignature{ + KeyRef: "cosign.pub", + }, + } + // This tests that KeyRef is properly passed to cosign + err := Verify(ctx, "ghcr.io/test/image:latest", sig, false) + // We expect an error (image doesn't exist), but the signature config should be valid + if err == nil { + t.Error("Verify should fail for non-existent image") + } +} + +func TestVerify_WithIgnoreTlog(t *testing.T) { + ctx := context.Background() + sig := &index.Signature{ + Cosign: &index.CosignSignature{ + CertificateOidcIssuer: "https://token.actions.githubusercontent.com", + CertificateIdentity: "[email protected]", + IgnoreTlog: true, + }, + } + // This tests that IgnoreTlog is properly passed to cosign + err := Verify(ctx, "ghcr.io/test/image:latest", sig, false) + // We expect an error (image doesn't exist), but the signature config should be valid + if err == nil { + t.Error("Verify should fail for non-existent image") + } +} + +func TestVerify_WithCertIdentityRegexp(t *testing.T) { + ctx := context.Background() + sig := &index.Signature{ + Cosign: &index.CosignSignature{ + CertificateOidcIssuer: "https://token.actions.githubusercontent.com", + CertificateIdentityRegexp: ".*@example.com", + CertificateOidcIssuerRegexp: "https://token.actions.*", + }, + } + // This tests that regexp options are properly passed to cosign + err := Verify(ctx, "ghcr.io/test/image:latest", sig, false) + // We expect an error (image doesn't exist), but the signature config should be valid + if err == nil { + t.Error("Verify should fail for non-existent image") + } +} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/falcoctl-0.12.1/pkg/oci/authn/client.go new/falcoctl-0.12.2/pkg/oci/authn/client.go --- old/falcoctl-0.12.1/pkg/oci/authn/client.go 2026-01-21 15:09:32.000000000 +0100 +++ new/falcoctl-0.12.2/pkg/oci/authn/client.go 2026-01-27 09:07:04.000000000 +0100 @@ -1,5 +1,5 @@ // SPDX-License-Identifier: Apache-2.0 -// Copyright (C) 2023 The Falco Authors +// Copyright (C) 2026 The Falco Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -23,6 +23,8 @@ "oras.land/oras-go/v2/registry/remote/auth" "oras.land/oras-go/v2/registry/remote/credentials" + + "github.com/falcosecurity/falcoctl/internal/config" ) const ( @@ -151,3 +153,11 @@ c.ClientTokenCache = cache } } + +// NewCredentialStore creates a new credential store using falcoctl's configuration. +// This is the single source of truth for creating credential stores in falcoctl. +func NewCredentialStore() (credentials.Store, error) { + return credentials.NewStore(config.RegistryCredentialConfPath(), credentials.StoreOptions{ + AllowPlaintextPut: true, + }) +} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/falcoctl-0.12.1/pkg/oci/authn/keychain.go new/falcoctl-0.12.2/pkg/oci/authn/keychain.go --- old/falcoctl-0.12.1/pkg/oci/authn/keychain.go 1970-01-01 01:00:00.000000000 +0100 +++ new/falcoctl-0.12.2/pkg/oci/authn/keychain.go 2026-01-27 09:07:04.000000000 +0100 @@ -0,0 +1,101 @@ +// SPDX-License-Identifier: Apache-2.0 +// Copyright (C) 2026 The Falco Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package authn + +import ( + "context" + + "github.com/google/go-containerregistry/pkg/authn" + "github.com/google/go-containerregistry/pkg/v1/google" + "golang.org/x/exp/slices" + "oras.land/oras-go/v2/registry/remote/credentials" + + "github.com/falcosecurity/falcoctl/internal/config" +) + +// Keychain implements authn.Keychain using the same authentication +// sources that falcoctl uses for pulling artifacts: +// 1. Falcoctl credential store (from falcoctl registry auth basic). +// 2. OAuth2 client credentials (from falcoctl's config). +// 3. GCP credentials (for registries configured with falcoctl registry auth gcp). +type Keychain struct { + credentialStore credentials.Store + oauthStore OAuthClientCredentialsStore +} + +// NewKeychain creates a new keychain that uses falcoctl's authentication sources. +func NewKeychain() (*Keychain, error) { + credentialStore, err := NewCredentialStore() + if err != nil { + return nil, err + } + + return &Keychain{ + credentialStore: credentialStore, + oauthStore: NewOauthClientCredentialsStore(), + }, nil +} + +// Resolve implements authn.Keychain. +func (k *Keychain) Resolve(resource authn.Resource) (authn.Authenticator, error) { + ctx := context.Background() + registry := resource.RegistryStr() + + // 1. Try credential store (from falcoctl registry auth basic) + cred, err := k.credentialStore.Get(ctx, registry) + if err == nil && (cred.Username != "" || cred.AccessToken != "") { + if cred.AccessToken != "" { + return authn.FromConfig(authn.AuthConfig{ + RegistryToken: cred.AccessToken, + }), nil + } + return authn.FromConfig(authn.AuthConfig{ + Username: cred.Username, + Password: cred.Password, + }), nil + } + + // 2. Try OAuth2 client credentials + oauthCred, err := k.oauthStore.Credential(ctx, registry) + if err == nil && oauthCred.AccessToken != "" { + return authn.FromConfig(authn.AuthConfig{ + RegistryToken: oauthCred.AccessToken, + }), nil + } + + // 3. Try GCP credentials (for registries configured with falcoctl registry auth gcp) + if isGCPRegistry(registry) { + return google.Keychain.Resolve(resource) + } + + // No credentials found + return authn.Anonymous, nil +} + +// isGCPRegistry checks if the registry is configured for GCP authentication +// in falcoctl's configuration (via falcoctl registry auth gcp). +func isGCPRegistry(registry string) bool { + gcpAuths, err := config.Gcps() + if err != nil { + return false + } + + idx := slices.IndexFunc(gcpAuths, func(c config.GcpAuth) bool { + return c.Registry == registry + }) + + return idx != -1 +} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/falcoctl-0.12.1/pkg/oci/utils/utils.go new/falcoctl-0.12.2/pkg/oci/utils/utils.go --- old/falcoctl-0.12.1/pkg/oci/utils/utils.go 2026-01-21 15:09:32.000000000 +0100 +++ new/falcoctl-0.12.2/pkg/oci/utils/utils.go 2026-01-27 09:07:04.000000000 +0100 @@ -1,5 +1,5 @@ // SPDX-License-Identifier: Apache-2.0 -// Copyright (C) 2023 The Falco Authors +// Copyright (C) 2026 The Falco Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -21,9 +21,7 @@ "oras.land/oras-go/v2/registry/remote" "oras.land/oras-go/v2/registry/remote/auth" - "oras.land/oras-go/v2/registry/remote/credentials" - "github.com/falcosecurity/falcoctl/internal/config" "github.com/falcosecurity/falcoctl/pkg/oci/authn" ocipuller "github.com/falcosecurity/falcoctl/pkg/oci/puller" ocipusher "github.com/falcosecurity/falcoctl/pkg/oci/pusher" @@ -53,11 +51,9 @@ // Client returns a new auth.Client. // It authenticates the client if credentials are found in the system. func Client(enableClientTokenCache bool) (remote.Client, error) { - credentialStore, err := credentials.NewStore(config.RegistryCredentialConfPath(), credentials.StoreOptions{ - AllowPlaintextPut: true, - }) + credentialStore, err := authn.NewCredentialStore() if err != nil { - return nil, fmt.Errorf("unable to create new store: %w", err) + return nil, fmt.Errorf("unable to create credential store: %w", err) } // create client that ++++++ falcoctl.obsinfo ++++++ --- /var/tmp/diff_new_pack.A1IuFF/_old 2026-01-29 17:45:40.423179674 +0100 +++ /var/tmp/diff_new_pack.A1IuFF/_new 2026-01-29 17:45:40.427179843 +0100 @@ -1,5 +1,5 @@ name: falcoctl -version: 0.12.1 -mtime: 1769004572 -commit: d35bf927a3c8ae109907183dcefea19ec9e9a054 +version: 0.12.2 +mtime: 1769501224 +commit: ae89b7462adb8e9eff3b00eabe1da923211562e3 ++++++ vendor.tar.gz ++++++ /work/SRC/openSUSE:Factory/falcoctl/vendor.tar.gz /work/SRC/openSUSE:Factory/.falcoctl.new.1995/vendor.tar.gz differ: char 145, line 1
