Skip to content

Commit 7723678

Browse files
authored
Merge pull request #1572 from smallstep/herman/fix-gosec-linter-issues
Fix `gosec` linter issues and upgrade `go.step.sm/crypto` to `v0.76.2`
2 parents c344f95 + cff282e commit 7723678

File tree

20 files changed

+90
-82
lines changed

20 files changed

+90
-82
lines changed

command/api/token/create.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -120,7 +120,7 @@ func createAction(ctx *cli.Context) (err error) {
120120
client := http.Client{
121121
Transport: transport,
122122
}
123-
resp, err := client.Do(post)
123+
resp, err := client.Do(post) // #nosec G704 -- request depends on configuration
124124
if err != nil {
125125
return err
126126
}

command/ca/acme/eab/list.go

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import (
55
"io"
66
"os"
77
"os/exec"
8+
"strings"
89

910
"github.com/pkg/errors"
1011
"github.com/urfave/cli"
@@ -99,8 +100,16 @@ func listAction(ctx *cli.Context) (err error) {
99100

100101
// prepare the $PAGER command to run when not disabled and when available
101102
pager := os.Getenv("PAGER")
103+
if strings.ContainsAny(pager, " \t\n;&|<>") {
104+
return errors.New("invalid PAGER environment value")
105+
}
106+
107+
if _, err := exec.LookPath(pager); err != nil {
108+
return fmt.Errorf("invalid PAGER environment value: %w", err)
109+
}
110+
102111
if usePager && pager != "" {
103-
cmd = exec.Command(pager)
112+
cmd = exec.Command(pager) // #nosec G702 -- $PAGER is intended to be provided by users; basic validation applied
104113
var err error
105114
out, err = cmd.StdinPipe()
106115
if err != nil {

command/ca/provisioner/add.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ import (
2828
)
2929

3030
func addCommand() cli.Command {
31-
return cli.Command{
31+
return cli.Command{ // #nosec G101 -- Google OIDC example values
3232
Name: "add",
3333
Action: cli.ActionFunc(addAction),
3434
Usage: "add a provisioner",

command/certificate/verify.go

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -250,7 +250,6 @@ func verifyAction(ctx *cli.Context) error {
250250

251251
switch {
252252
case (verifyCRL || verifyOCSP) && roots != "":
253-
//nolint:gosec // using default configuration for 3rd party endpoints
254253
tlsConfig := &tls.Config{
255254
RootCAs: rootPool,
256255
}
@@ -389,7 +388,7 @@ func VerifyOCSPEndpoint(endpoint string, cert, issuer *x509.Certificate, httpCli
389388
return false, errors.Errorf("error contacting OCSP server: %s", endpoint)
390389
}
391390
httpReq.Header.Add("Content-Type", "application/ocsp-request")
392-
httpResp, err := httpClient.Do(httpReq)
391+
httpResp, err := httpClient.Do(httpReq) // #nosec G704 -- request relies on values from certificate or intentionally provided by user
393392
if err != nil {
394393
return false, errors.Errorf("error contacting OCSP server: %s", endpoint)
395394
}

command/crypto/jwk/keyset.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -234,7 +234,7 @@ func rwLockKeySet(filename string) (jwks *jose.JSONWebKeySet, writeFunc func(boo
234234
return
235235
}
236236

237-
fd := int(f.Fd())
237+
fd := int(f.Fd()) // #nosec G115 -- uintptr comes from file descriptor
238238

239239
// non-blocking exclusive lock
240240
err = sysutils.FileLock(fd)

command/crypto/winpe/winpe.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ func extractPEAction(ctx *cli.Context) error {
6767
}
6868

6969
func extractPE(filename string) error {
70-
file, err := os.Open(filename)
70+
file, err := os.Open(filename) // #nosec G703 -- file to open intentionally relies on user configuration
7171
if err != nil {
7272
return errors.Wrapf(err, "error opening %s", filename)
7373
}

command/oauth/cmd.go

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -66,9 +66,9 @@ const (
6666
)
6767

6868
type token struct {
69-
AccessToken string `json:"access_token"`
69+
AccessToken string `json:"access_token"` // #nosec G117 -- JSON property
7070
IDToken string `json:"id_token"`
71-
RefreshToken string `json:"refresh_token"`
71+
RefreshToken string `json:"refresh_token"` // #nosec G117 -- JSON property
7272
ExpiresIn int `json:"expires_in"`
7373
TokenType string `json:"token_type"`
7474
Err string `json:"error,omitempty"`
@@ -571,13 +571,13 @@ type endpoint struct {
571571
}
572572

573573
var knownProviders = map[string]endpoint{
574-
"google": {
574+
"google": { // #nosec G101 -- no credentials; just well-known configuration values
575575
authorization: "https://accounts.google.com/o/oauth2/v2/auth",
576576
deviceAuthorization: "https://oauth2.googleapis.com/device/code",
577577
token: "https://www.googleapis.com/oauth2/v4/token",
578578
userInfo: "https://www.googleapis.com/oauth2/v3/userinfo",
579579
},
580-
"github": {
580+
"github": { // #nosec G101 -- no credentials; just well-known configuration values
581581
authorization: "https://github.com/login/oauth/authorize",
582582
deviceAuthorization: "https://github.com/login/device/code",
583583
token: "https://github.com/login/oauth/access_token",
@@ -712,7 +712,7 @@ func disco(provider string) (map[string]interface{}, error) {
712712
// application/json", without this header GitHub will use
713713
// application/x-www-form-urlencoded.
714714
func postForm(rawurl string, data url.Values) (*http.Response, error) {
715-
req, err := http.NewRequest("POST", rawurl, strings.NewReader(data.Encode()))
715+
req, err := http.NewRequest("POST", rawurl, strings.NewReader(data.Encode())) // #nosec G704 -- request intentionally relies on user data
716716
if err != nil {
717717
return nil, fmt.Errorf("create POST %s request failed: %w", rawurl, err)
718718
}
@@ -722,7 +722,7 @@ func postForm(rawurl string, data url.Values) (*http.Response, error) {
722722

723723
req.Header.Set("Content-Type", "application/x-www-form-urlencoded")
724724
req.Header.Set("Accept", "application/json")
725-
return http.DefaultClient.Do(req)
725+
return http.DefaultClient.Do(req) // #nosec G704 -- request intentionally relies on user configuration
726726
}
727727

728728
// NewServer creates http server
@@ -1106,7 +1106,7 @@ func (o *oauth) ServeHTTP(w http.ResponseWriter, req *http.Request) {
11061106

11071107
code, state := q.Get("code"), q.Get("state")
11081108
if code == "" || state == "" {
1109-
fmt.Fprintf(os.Stderr, "Invalid request received: http://%s%s\n", req.RemoteAddr, req.URL.String())
1109+
fmt.Fprintf(os.Stderr, "Invalid request received: http://%s%s\n", req.RemoteAddr, req.URL.String()) // #nosec G705 -- terminal output
11101110
fmt.Fprintf(os.Stderr, "You may have an app or browser plugin that needs to be turned off\n")
11111111
http.Error(w, "400 bad request", http.StatusBadRequest)
11121112
return

exec/exec.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ func RunWithPid(pidFile, name string, arg ...string) {
7979
cmd, exitCh, err := run(name, arg...)
8080
if err != nil {
8181
f.Close()
82-
os.Remove(f.Name())
82+
_ = os.Remove(f.Name()) // #nosec G703 -- file does not depend on user configuration
8383
errorAndExit(name, err)
8484
}
8585

@@ -94,7 +94,7 @@ func RunWithPid(pidFile, name string, arg ...string) {
9494
}
9595

9696
// clean, exit and wait until os.Exit
97-
os.Remove(f.Name())
97+
_ = os.Remove(f.Name()) // #nosec G703 -- file does not depend on user configuration
9898
exitCh <- getExitStatus(cmd)
9999
exitCh <- 0
100100
}

go.mod

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ require (
2727
github.com/stretchr/testify v1.11.1
2828
github.com/urfave/cli v1.22.17
2929
go.mozilla.org/pkcs7 v0.9.0
30-
go.step.sm/crypto v0.76.0
30+
go.step.sm/crypto v0.76.2
3131
golang.org/x/crypto v0.48.0
3232
golang.org/x/sys v0.41.0
3333
golang.org/x/term v0.40.0
@@ -36,12 +36,12 @@ require (
3636
)
3737

3838
require (
39-
cloud.google.com/go v0.121.6 // indirect
40-
cloud.google.com/go/auth v0.18.0 // indirect
39+
cloud.google.com/go v0.123.0 // indirect
40+
cloud.google.com/go/auth v0.18.1 // indirect
4141
cloud.google.com/go/auth/oauth2adapt v0.2.8 // indirect
4242
cloud.google.com/go/compute/metadata v0.9.0 // indirect
4343
cloud.google.com/go/iam v1.5.3 // indirect
44-
cloud.google.com/go/longrunning v0.7.0 // indirect
44+
cloud.google.com/go/longrunning v0.8.0 // indirect
4545
cloud.google.com/go/security v1.19.2 // indirect
4646
dario.cat/mergo v1.0.1 // indirect
4747
filippo.io/edwards25519 v1.1.0 // indirect
@@ -85,8 +85,8 @@ require (
8585
github.com/google/go-tpm-tools v0.4.7 // indirect
8686
github.com/google/go-tspi v0.3.0 // indirect
8787
github.com/google/s2a-go v0.1.9 // indirect
88-
github.com/googleapis/enterprise-certificate-proxy v0.3.9 // indirect
89-
github.com/googleapis/gax-go/v2 v2.16.0 // indirect
88+
github.com/googleapis/enterprise-certificate-proxy v0.3.11 // indirect
89+
github.com/googleapis/gax-go/v2 v2.17.0 // indirect
9090
github.com/huandu/xstrings v1.5.0 // indirect
9191
github.com/jackc/pgpassfile v1.0.0 // indirect
9292
github.com/jackc/pgservicefile v0.0.0-20240606120523-5a60cdf6a761 // indirect
@@ -124,20 +124,20 @@ require (
124124
go.opentelemetry.io/auto/sdk v1.2.1 // indirect
125125
go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.61.0 // indirect
126126
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.61.0 // indirect
127-
go.opentelemetry.io/otel v1.38.0 // indirect
128-
go.opentelemetry.io/otel/metric v1.38.0 // indirect
129-
go.opentelemetry.io/otel/trace v1.38.0 // indirect
127+
go.opentelemetry.io/otel v1.39.0 // indirect
128+
go.opentelemetry.io/otel/metric v1.39.0 // indirect
129+
go.opentelemetry.io/otel/trace v1.39.0 // indirect
130130
go.yaml.in/yaml/v2 v2.4.2 // indirect
131131
golang.org/x/net v0.49.0 // indirect
132132
golang.org/x/oauth2 v0.34.0 // indirect
133133
golang.org/x/sync v0.19.0 // indirect
134134
golang.org/x/text v0.34.0 // indirect
135135
golang.org/x/time v0.14.0 // indirect
136136
golang.org/x/tools v0.41.0 // indirect
137-
google.golang.org/api v0.260.0 // indirect
138-
google.golang.org/genproto v0.0.0-20251202230838-ff82c1b0f217 // indirect
139-
google.golang.org/genproto/googleapis/api v0.0.0-20251202230838-ff82c1b0f217 // indirect
140-
google.golang.org/genproto/googleapis/rpc v0.0.0-20251222181119-0a764e51fe1b // indirect
137+
google.golang.org/api v0.264.0 // indirect
138+
google.golang.org/genproto v0.0.0-20260128011058-8636f8732409 // indirect
139+
google.golang.org/genproto/googleapis/api v0.0.0-20260128011058-8636f8732409 // indirect
140+
google.golang.org/genproto/googleapis/rpc v0.0.0-20260128011058-8636f8732409 // indirect
141141
google.golang.org/grpc v1.78.0 // indirect
142142
google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.5.1 // indirect
143143
gopkg.in/yaml.v3 v3.0.1 // indirect

go.sum

Lines changed: 30 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,17 @@
1-
cloud.google.com/go v0.121.6 h1:waZiuajrI28iAf40cWgycWNgaXPO06dupuS+sgibK6c=
2-
cloud.google.com/go v0.121.6/go.mod h1:coChdst4Ea5vUpiALcYKXEpR1S9ZgXbhEzzMcMR66vI=
3-
cloud.google.com/go/auth v0.18.0 h1:wnqy5hrv7p3k7cShwAU/Br3nzod7fxoqG+k0VZ+/Pk0=
4-
cloud.google.com/go/auth v0.18.0/go.mod h1:wwkPM1AgE1f2u6dG443MiWoD8C3BtOywNsUMcUTVDRo=
1+
cloud.google.com/go v0.123.0 h1:2NAUJwPR47q+E35uaJeYoNhuNEM9kM8SjgRgdeOJUSE=
2+
cloud.google.com/go v0.123.0/go.mod h1:xBoMV08QcqUGuPW65Qfm1o9Y4zKZBpGS+7bImXLTAZU=
3+
cloud.google.com/go/auth v0.18.1 h1:IwTEx92GFUo2pJ6Qea0EU3zYvKnTAeRCODxfA/G5UWs=
4+
cloud.google.com/go/auth v0.18.1/go.mod h1:GfTYoS9G3CWpRA3Va9doKN9mjPGRS+v41jmZAhBzbrA=
55
cloud.google.com/go/auth/oauth2adapt v0.2.8 h1:keo8NaayQZ6wimpNSmW5OPc283g65QNIiLpZnkHRbnc=
66
cloud.google.com/go/auth/oauth2adapt v0.2.8/go.mod h1:XQ9y31RkqZCcwJWNSx2Xvric3RrU88hAYYbjDWYDL+c=
77
cloud.google.com/go/compute/metadata v0.9.0 h1:pDUj4QMoPejqq20dK0Pg2N4yG9zIkYGdBtwLoEkH9Zs=
88
cloud.google.com/go/compute/metadata v0.9.0/go.mod h1:E0bWwX5wTnLPedCKqk3pJmVgCBSM6qQI1yTBdEb3C10=
99
cloud.google.com/go/iam v1.5.3 h1:+vMINPiDF2ognBJ97ABAYYwRgsaqxPbQDlMnbHMjolc=
1010
cloud.google.com/go/iam v1.5.3/go.mod h1:MR3v9oLkZCTlaqljW6Eb2d3HGDGK5/bDv93jhfISFvU=
11-
cloud.google.com/go/kms v1.24.0 h1:SWltUuoPhTdv9q/P0YEAWQfoYT32O5HdfPgTiWMvrH8=
12-
cloud.google.com/go/kms v1.24.0/go.mod h1:QDH3z2SJ50lfNOE8EokKC1G40i7I0f8xTMCoiptcb5g=
13-
cloud.google.com/go/longrunning v0.7.0 h1:FV0+SYF1RIj59gyoWDRi45GiYUMM3K1qO51qoboQT1E=
14-
cloud.google.com/go/longrunning v0.7.0/go.mod h1:ySn2yXmjbK9Ba0zsQqunhDkYi0+9rlXIwnoAf+h+TPY=
11+
cloud.google.com/go/kms v1.25.0 h1:gVqvGGUmz0nYCmtoxWmdc1wli2L1apgP8U4fghPGSbQ=
12+
cloud.google.com/go/kms v1.25.0/go.mod h1:XIdHkzfj0bUO3E+LvwPg+oc7s58/Ns8Nd8Sdtljihbk=
13+
cloud.google.com/go/longrunning v0.8.0 h1:LiKK77J3bx5gDLi4SMViHixjD2ohlkwBi+mKA7EhfW8=
14+
cloud.google.com/go/longrunning v0.8.0/go.mod h1:UmErU2Onzi+fKDg2gR7dusz11Pe26aknR4kHmJJqIfk=
1515
cloud.google.com/go/security v1.19.2 h1:cF3FkCRRbRC1oXuaGZFl3qU2sdu2gP3iOAHKzL5y04Y=
1616
cloud.google.com/go/security v1.19.2/go.mod h1:KXmf64mnOsLVKe8mk/bZpU1Rsvxqc0Ej0A6tgCeN93w=
1717
dario.cat/mergo v1.0.1 h1:Ra4+bf83h2ztPIQYNP99R6m+Y7KfnARDfID+a+vLl4s=
@@ -198,10 +198,10 @@ github.com/google/s2a-go v0.1.9 h1:LGD7gtMgezd8a/Xak7mEWL0PjoTQFvpRudN895yqKW0=
198198
github.com/google/s2a-go v0.1.9/go.mod h1:YA0Ei2ZQL3acow2O62kdp9UlnvMmU7kA6Eutn0dXayM=
199199
github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=
200200
github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
201-
github.com/googleapis/enterprise-certificate-proxy v0.3.9 h1:TOpi/QG8iDcZlkQlGlFUti/ZtyLkliXvHDcyUIMuFrU=
202-
github.com/googleapis/enterprise-certificate-proxy v0.3.9/go.mod h1:MkHOF77EYAE7qfSuSS9PU6g4Nt4e11cnsDUowfwewLA=
203-
github.com/googleapis/gax-go/v2 v2.16.0 h1:iHbQmKLLZrexmb0OSsNGTeSTS0HO4YvFOG8g5E4Zd0Y=
204-
github.com/googleapis/gax-go/v2 v2.16.0/go.mod h1:o1vfQjjNZn4+dPnRdl/4ZD7S9414Y4xA+a/6Icj6l14=
201+
github.com/googleapis/enterprise-certificate-proxy v0.3.11 h1:vAe81Msw+8tKUxi2Dqh/NZMz7475yUvmRIkXr4oN2ao=
202+
github.com/googleapis/enterprise-certificate-proxy v0.3.11/go.mod h1:RFV7MUdlb7AgEq2v7FmMCfeSMCllAzWxFgRdusoGks8=
203+
github.com/googleapis/gax-go/v2 v2.17.0 h1:RksgfBpxqff0EZkDWYuz9q/uWsTVz+kf43LsZ1J6SMc=
204+
github.com/googleapis/gax-go/v2 v2.17.0/go.mod h1:mzaqghpQp4JDh3HvADwrat+6M3MOIDp5YKHhb9PAgDY=
205205
github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ=
206206
github.com/huandu/xstrings v1.5.0 h1:2ag3IFq9ZDANvthTwTiqSSZLjDc+BedvHPAp5tJy2TI=
207207
github.com/huandu/xstrings v1.5.0/go.mod h1:y5/lhBue+AyNmUVz9RLU9xbLR0o4KIIExikq4ovT0aE=
@@ -359,18 +359,18 @@ go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.6
359359
go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.61.0/go.mod h1:snMWehoOh2wsEwnvvwtDyFCxVeDAODenXHtn5vzrKjo=
360360
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.61.0 h1:F7Jx+6hwnZ41NSFTO5q4LYDtJRXBf2PD0rNBkeB/lus=
361361
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.61.0/go.mod h1:UHB22Z8QsdRDrnAtX4PntOl36ajSxcdUMt1sF7Y6E7Q=
362-
go.opentelemetry.io/otel v1.38.0 h1:RkfdswUDRimDg0m2Az18RKOsnI8UDzppJAtj01/Ymk8=
363-
go.opentelemetry.io/otel v1.38.0/go.mod h1:zcmtmQ1+YmQM9wrNsTGV/q/uyusom3P8RxwExxkZhjM=
364-
go.opentelemetry.io/otel/metric v1.38.0 h1:Kl6lzIYGAh5M159u9NgiRkmoMKjvbsKtYRwgfrA6WpA=
365-
go.opentelemetry.io/otel/metric v1.38.0/go.mod h1:kB5n/QoRM8YwmUahxvI3bO34eVtQf2i4utNVLr9gEmI=
366-
go.opentelemetry.io/otel/sdk v1.38.0 h1:l48sr5YbNf2hpCUj/FoGhW9yDkl+Ma+LrVl8qaM5b+E=
367-
go.opentelemetry.io/otel/sdk v1.38.0/go.mod h1:ghmNdGlVemJI3+ZB5iDEuk4bWA3GkTpW+DOoZMYBVVg=
362+
go.opentelemetry.io/otel v1.39.0 h1:8yPrr/S0ND9QEfTfdP9V+SiwT4E0G7Y5MO7p85nis48=
363+
go.opentelemetry.io/otel v1.39.0/go.mod h1:kLlFTywNWrFyEdH0oj2xK0bFYZtHRYUdv1NklR/tgc8=
364+
go.opentelemetry.io/otel/metric v1.39.0 h1:d1UzonvEZriVfpNKEVmHXbdf909uGTOQjA0HF0Ls5Q0=
365+
go.opentelemetry.io/otel/metric v1.39.0/go.mod h1:jrZSWL33sD7bBxg1xjrqyDjnuzTUB0x1nBERXd7Ftcs=
366+
go.opentelemetry.io/otel/sdk v1.39.0 h1:nMLYcjVsvdui1B/4FRkwjzoRVsMK8uL/cj0OyhKzt18=
367+
go.opentelemetry.io/otel/sdk v1.39.0/go.mod h1:vDojkC4/jsTJsE+kh+LXYQlbL8CgrEcwmt1ENZszdJE=
368368
go.opentelemetry.io/otel/sdk/metric v1.38.0 h1:aSH66iL0aZqo//xXzQLYozmWrXxyFkBJ6qT5wthqPoM=
369369
go.opentelemetry.io/otel/sdk/metric v1.38.0/go.mod h1:dg9PBnW9XdQ1Hd6ZnRz689CbtrUp0wMMs9iPcgT9EZA=
370-
go.opentelemetry.io/otel/trace v1.38.0 h1:Fxk5bKrDZJUH+AMyyIXGcFAPah0oRcT+LuNtJrmcNLE=
371-
go.opentelemetry.io/otel/trace v1.38.0/go.mod h1:j1P9ivuFsTceSWe1oY+EeW3sc+Pp42sO++GHkg4wwhs=
372-
go.step.sm/crypto v0.76.0 h1:K23BSaeoiY7Y5dvvijTeYC9EduDBetNwQYMBwMhi1aA=
373-
go.step.sm/crypto v0.76.0/go.mod h1:PXYJdKkK8s+GHLwLguFaLxHNAFsFL3tL1vSBrYfey5k=
370+
go.opentelemetry.io/otel/trace v1.39.0 h1:2d2vfpEDmCJ5zVYz7ijaJdOF59xLomrvj7bjt6/qCJI=
371+
go.opentelemetry.io/otel/trace v1.39.0/go.mod h1:88w4/PnZSazkGzz/w84VHpQafiU4EtqqlVdxWy+rNOA=
372+
go.step.sm/crypto v0.76.2 h1:JJ/yMcs/rmcCAwlo+afrHjq74XBFRTJw5B2y4Q4Z4c4=
373+
go.step.sm/crypto v0.76.2/go.mod h1:m6KlB/HzIuGFep0UWI5e0SYi38UxpoKeCg6qUaHV6/Q=
374374
go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto=
375375
go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE=
376376
go.uber.org/mock v0.6.0 h1:hyF9dfmbgIX5EfOdasqLsWD6xqpNZlXblLB/Dbnwv3Y=
@@ -471,14 +471,14 @@ golang.org/x/tools v0.41.0/go.mod h1:XSY6eDqxVNiYgezAVqqCeihT4j1U2CCsqvH3WhQpnlg
471471
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
472472
gonum.org/v1/gonum v0.16.0 h1:5+ul4Swaf3ESvrOnidPp4GZbzf0mxVQpDCYUQE7OJfk=
473473
gonum.org/v1/gonum v0.16.0/go.mod h1:fef3am4MQ93R2HHpKnLk4/Tbh/s0+wqD5nfa6Pnwy4E=
474-
google.golang.org/api v0.260.0 h1:XbNi5E6bOVEj/uLXQRlt6TKuEzMD7zvW/6tNwltE4P4=
475-
google.golang.org/api v0.260.0/go.mod h1:Shj1j0Phr/9sloYrKomICzdYgsSDImpTxME8rGLaZ/o=
476-
google.golang.org/genproto v0.0.0-20251202230838-ff82c1b0f217 h1:GvESR9BIyHUahIb0NcTum6itIWtdoglGX+rnGxm2934=
477-
google.golang.org/genproto v0.0.0-20251202230838-ff82c1b0f217/go.mod h1:yJ2HH4EHEDTd3JiLmhds6NkJ17ITVYOdV3m3VKOnws0=
478-
google.golang.org/genproto/googleapis/api v0.0.0-20251202230838-ff82c1b0f217 h1:fCvbg86sFXwdrl5LgVcTEvNC+2txB5mgROGmRL5mrls=
479-
google.golang.org/genproto/googleapis/api v0.0.0-20251202230838-ff82c1b0f217/go.mod h1:+rXWjjaukWZun3mLfjmVnQi18E1AsFbDN9QdJ5YXLto=
480-
google.golang.org/genproto/googleapis/rpc v0.0.0-20251222181119-0a764e51fe1b h1:Mv8VFug0MP9e5vUxfBcE3vUkV6CImK3cMNMIDFjmzxU=
481-
google.golang.org/genproto/googleapis/rpc v0.0.0-20251222181119-0a764e51fe1b/go.mod h1:j9x/tPzZkyxcgEFkiKEEGxfvyumM01BEtsW8xzOahRQ=
474+
google.golang.org/api v0.264.0 h1:+Fo3DQXBK8gLdf8rFZ3uLu39JpOnhvzJrLMQSoSYZJM=
475+
google.golang.org/api v0.264.0/go.mod h1:fAU1xtNNisHgOF5JooAs8rRaTkl2rT3uaoNGo9NS3R8=
476+
google.golang.org/genproto v0.0.0-20260128011058-8636f8732409 h1:VQZ/yAbAtjkHgH80teYd2em3xtIkkHd7ZhqfH2N9CsM=
477+
google.golang.org/genproto v0.0.0-20260128011058-8636f8732409/go.mod h1:rxKD3IEILWEu3P44seeNOAwZN4SaoKaQ/2eTg4mM6EM=
478+
google.golang.org/genproto/googleapis/api v0.0.0-20260128011058-8636f8732409 h1:merA0rdPeUV3YIIfHHcH4qBkiQAc1nfCKSI7lB4cV2M=
479+
google.golang.org/genproto/googleapis/api v0.0.0-20260128011058-8636f8732409/go.mod h1:fl8J1IvUjCilwZzQowmw2b7HQB2eAuYBabMXzWurF+I=
480+
google.golang.org/genproto/googleapis/rpc v0.0.0-20260128011058-8636f8732409 h1:H86B94AW+VfJWDqFeEbBPhEtHzJwJfTbgE2lZa54ZAQ=
481+
google.golang.org/genproto/googleapis/rpc v0.0.0-20260128011058-8636f8732409/go.mod h1:j9x/tPzZkyxcgEFkiKEEGxfvyumM01BEtsW8xzOahRQ=
482482
google.golang.org/grpc v1.78.0 h1:K1XZG/yGDJnzMdd/uZHAkVqJE+xIDOcmdSFZkBUicNc=
483483
google.golang.org/grpc v1.78.0/go.mod h1:I47qjTo4OKbMkjA/aOOwxDIiPSBofUtQUI5EfpWvW7U=
484484
google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.5.1 h1:F29+wU6Ee6qgu9TddPgooOdaqsxTMunOoj8KA5yuS5A=

0 commit comments

Comments
 (0)