From 2ee0e76b960ed1b83ce51d395251a93836de2b56 Mon Sep 17 00:00:00 2001 From: Mariano Cano Date: Thu, 5 Nov 2026 17:19:12 -0800 Subject: [PATCH 1/8] Update crypto and go-jose This commit updates crypto and go-jose to v4. --- command/crypto/jwt/sign.go | 2 +- command/crypto/jwt/verify.go | 4 +- command/oauth/cmd.go | 4 +- go.mod | 55 ++++++------- go.sum | 146 ++++++++++++++++++----------------- integration/crypto_test.go | 7 +- token/token.go | 2 +- 7 files changed, 113 insertions(+), 107 deletions(-) diff --git a/command/crypto/jwt/sign.go b/command/crypto/jwt/sign.go index db47946e..97c91171 100644 --- a/command/crypto/jwt/sign.go +++ b/command/crypto/jwt/sign.go @@ -454,7 +454,7 @@ func signAction(ctx *cli.Context) error { aud["aud"] = c.Audience[0] } - raw, err := jose.Signed(signer).Claims(c).Claims(aud).Claims(payload).CompactSerialize() + raw, err := jose.Signed(signer).Claims(c).Claims(aud).Claims(payload).Serialize() if err != nil { return errors.Wrapf(err, "error serializing JWT") } diff --git a/command/crypto/jwt/verify.go b/command/crypto/jwt/verify.go index 2cc6a12d..4f57a13c 100644 --- a/command/crypto/jwt/verify.go +++ b/command/crypto/jwt/verify.go @@ -236,7 +236,7 @@ func verifyAction(ctx *cli.Context) error { expected := jose.Expected{Issuer: iss} if aud != "" { - expected.Audience = jose.Audience{aud} + expected.AnyAudience = jose.Audience{aud} } if tClaims.Expiry != nil || tClaims.NotBefore != nil { expected.Time = time.Now() @@ -268,7 +268,7 @@ func validateClaimsWithLeeway(ctx *cli.Context, c jose.Claims, e jose.Expected, ers = append(ers, "invalid ID claim (jti)") } - for _, v := range e.Audience { + for _, v := range e.AnyAudience { if !c.Audience.Contains(v) { ers = append(ers, "invalid audience claim (aud)") break diff --git a/command/oauth/cmd.go b/command/oauth/cmd.go index 1e1ea6ea..8e50df91 100644 --- a/command/oauth/cmd.go +++ b/command/oauth/cmd.go @@ -1015,7 +1015,7 @@ func (o *oauth) DoTwoLeggedAuthorization(issuer string) (*token, error) { return nil, errors.Wrapf(err, "error creating JWT signer") } - raw, err := jose.Signed(signer).Claims(c).CompactSerialize() + raw, err := jose.Signed(signer).Claims(c).Serialize() if err != nil { return nil, errors.Wrapf(err, "error serializing JWT") } @@ -1078,7 +1078,7 @@ func (o *oauth) DoJWTAuthorization(issuer, aud string) (*token, error) { return nil, errors.Wrapf(err, "error creating JWT signer") } - raw, err := jose.Signed(signer).Claims(c).CompactSerialize() + raw, err := jose.Signed(signer).Claims(c).Serialize() if err != nil { return nil, errors.Wrapf(err, "error serializing JWT") } diff --git a/go.mod b/go.mod index 844574e2..cddfa278 100644 --- a/go.mod +++ b/go.mod @@ -6,7 +6,6 @@ require ( github.com/Microsoft/go-winio v0.6.4 github.com/ccoveille/go-safecast/v2 v2.0.1 github.com/fxamacker/cbor/v2 v2.10.0 - github.com/go-jose/go-jose/v3 v3.0.5 github.com/google/go-cmp v0.7.0 github.com/google/go-tpm v0.9.8 github.com/google/uuid v1.6.0 @@ -16,9 +15,9 @@ require ( github.com/rogpeppe/go-internal v1.16.0 github.com/slackhq/nebula v1.11.2 github.com/smallstep/assert v0.0.0-20200723003110-82e2b9b3b262 - github.com/smallstep/certificates v0.30.2 + github.com/smallstep/certificates v0.30.3-0.20261105213751-6d5a251fbe01 github.com/smallstep/certinfo v1.18.0 - github.com/smallstep/cli-utils v0.12.2 + github.com/smallstep/cli-utils v0.13.0 github.com/smallstep/go-attestation v0.4.4-0.20260814222900-a849f4e2cd68 github.com/smallstep/linkedca v0.26.0 github.com/smallstep/truststore v0.13.0 @@ -27,7 +26,7 @@ require ( github.com/stretchr/testify v1.12.1 github.com/urfave/cli v1.22.17 go.mozilla.org/pkcs7 v0.10.0 - go.step.sm/crypto v0.91.1 + go.step.sm/crypto v0.92.0 golang.org/x/crypto v0.58.0 golang.org/x/sys v0.49.0 golang.org/x/term v0.47.0 @@ -40,9 +39,9 @@ require ( cloud.google.com/go/auth v0.24.1-0.20261001053825-dbc26066f70a // indirect cloud.google.com/go/auth/oauth2adapt v0.3.0 // indirect cloud.google.com/go/compute/metadata v0.10.0 // indirect - cloud.google.com/go/iam v1.12.0 // indirect - cloud.google.com/go/longrunning v1.2.0 // indirect - cloud.google.com/go/security v1.26.0 // indirect + cloud.google.com/go/iam v1.14.0 // indirect + cloud.google.com/go/longrunning v1.3.0 // indirect + cloud.google.com/go/security v1.29.1 // indirect dario.cat/mergo v1.0.2 // indirect filippo.io/bigmod v0.1.0 // indirect filippo.io/edwards25519 v1.2.0 // indirect @@ -62,7 +61,7 @@ require ( github.com/cespare/xxhash v1.1.0 // indirect github.com/cespare/xxhash/v2 v2.3.0 // indirect github.com/chzyer/readline v1.5.1 // indirect - github.com/coreos/go-oidc/v3 v3.17.0 // indirect + github.com/coreos/go-oidc/v3 v3.21.0 // indirect github.com/coreos/go-systemd/v22 v22.7.0 // indirect github.com/cpuguy83/go-md2man/v2 v2.0.7 // indirect github.com/dgraph-io/badger v1.6.2 // indirect @@ -71,8 +70,8 @@ require ( github.com/dgryski/go-farm v0.0.0-20200201041132-a6ae2369ad13 // indirect github.com/dustin/go-humanize v1.0.1 // indirect github.com/felixge/httpsnoop v1.1.0 // indirect - github.com/go-chi/chi/v5 v5.4.0 // indirect - github.com/go-jose/go-jose/v4 v4.1.6 // indirect + github.com/go-chi/chi/v5 v5.5.0 // indirect + github.com/go-jose/go-jose/v4 v4.1.9 // indirect github.com/go-logr/logr v1.4.4 // indirect github.com/go-logr/stdr v1.2.2 // indirect github.com/go-sql-driver/mysql v1.9.3 // indirect @@ -84,15 +83,16 @@ require ( github.com/google/certificate-transparency-go v1.3.2 // indirect github.com/google/go-tpm-tools v0.4.11 // indirect github.com/google/go-tspi v0.3.0 // indirect + github.com/google/pprof v0.0.0-20260802141513-ef3492d7dac3 // indirect github.com/google/s2a-go v0.1.11 // indirect - github.com/googleapis/enterprise-certificate-proxy v0.3.23 // indirect - github.com/googleapis/gax-go/v2 v2.26.2 // indirect + github.com/googleapis/enterprise-certificate-proxy v0.3.24 // indirect + github.com/googleapis/gax-go/v2 v2.27.0 // indirect github.com/huandu/xstrings v1.5.0 // indirect github.com/jackc/pgpassfile v1.0.0 // indirect github.com/jackc/pgservicefile v0.0.0-20240606120523-5a60cdf6a761 // indirect github.com/jackc/pgx/v5 v5.9.2 // indirect github.com/jackc/puddle/v2 v2.2.2 // indirect - github.com/klauspost/compress v1.18.7 // indirect + github.com/klauspost/compress v1.20.1 // indirect github.com/kylelemons/godebug v1.1.0 // indirect github.com/mattn/go-colorable v0.1.15 // indirect github.com/mattn/go-isatty v0.0.24 // indirect @@ -100,21 +100,22 @@ require ( github.com/mitchellh/copystructure v1.2.0 // indirect github.com/mitchellh/reflectwalk v1.0.2 // indirect github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect - github.com/newrelic/go-agent/v3 v3.42.0 // indirect + github.com/newrelic/go-agent/v3 v3.45.0 // indirect github.com/peterbourgon/diskv/v3 v3.0.1 // indirect github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c // indirect - github.com/prometheus/client_golang v1.23.2 // indirect - github.com/prometheus/client_model v0.6.2 // indirect - github.com/prometheus/common v0.67.5 // indirect - github.com/prometheus/procfs v0.19.2 // indirect + github.com/prometheus/client_golang v1.25.0 // indirect + github.com/prometheus/client_model v0.6.3 // indirect + github.com/prometheus/common v0.72.0 // indirect + github.com/prometheus/procfs v0.22.0 // indirect github.com/rs/xid v1.6.0 // indirect github.com/russross/blackfriday/v2 v2.1.0 // indirect github.com/schollz/jsonstore v1.1.0 // indirect github.com/shopspring/decimal v1.4.0 // indirect github.com/shurcooL/sanitized_anchor_name v1.0.0 // indirect github.com/sirupsen/logrus v1.10.2 // indirect + github.com/smallstep/android-attestation v0.0.0-20260722204520-a51b1564ebda // indirect github.com/smallstep/nosql v0.8.0 // indirect - github.com/smallstep/pkcs7 v0.2.1 // indirect + github.com/smallstep/pkcs7 v0.2.3 // indirect github.com/smallstep/scep v0.0.0-20250318231241-a25cabb69492 // indirect github.com/spf13/cast v1.7.0 // indirect github.com/weppos/publicsuffix-go v0.20.0 // indirect @@ -123,10 +124,10 @@ require ( go.opentelemetry.io/auto/sdk v1.2.1 // indirect go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.67.0 // indirect go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.69.0 // indirect - go.opentelemetry.io/otel v1.45.0 // indirect - go.opentelemetry.io/otel/metric v1.45.0 // indirect - go.opentelemetry.io/otel/trace v1.45.0 // indirect - go.yaml.in/yaml/v2 v2.4.3 // indirect + go.opentelemetry.io/otel v1.47.0 // indirect + go.opentelemetry.io/otel/log v1.47.0 // indirect + go.opentelemetry.io/otel/metric v1.47.0 // indirect + go.opentelemetry.io/otel/trace v1.47.0 // indirect go.yaml.in/yaml/v3 v3.0.5 // indirect golang.org/x/net v0.62.0 // indirect golang.org/x/oauth2 v0.37.0 // indirect @@ -134,11 +135,11 @@ require ( golang.org/x/text v0.43.0 // indirect golang.org/x/time v0.16.0 // indirect golang.org/x/tools v0.51.0 // indirect - google.golang.org/api v0.308.0 // indirect - google.golang.org/genproto v0.0.0-20260715232425-e75dac1f907d // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20260715232425-e75dac1f907d // indirect + google.golang.org/api v0.310.0 // indirect + google.golang.org/genproto v0.0.0-20261012220534-4341edf3f941 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20261012220534-4341edf3f941 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20261019180522-ce908d29299b // indirect - google.golang.org/grpc v1.84.0 // indirect + google.golang.org/grpc v1.85.0 // indirect google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.6.2 // indirect howett.net/plist v1.0.0 // indirect ) diff --git a/go.sum b/go.sum index 220eca99..8b4de037 100644 --- a/go.sum +++ b/go.sum @@ -6,14 +6,14 @@ cloud.google.com/go/auth/oauth2adapt v0.3.0 h1:FY8oSZpCYoUNv6QxVODuMjQz4IlSOVeiQ cloud.google.com/go/auth/oauth2adapt v0.3.0/go.mod h1:7+2uCm7++XFO+/lN06c2HXpDXb/NMNn2/UwyBPbTnkk= cloud.google.com/go/compute/metadata v0.10.0 h1:pyKMUQSwchgkIBBJGdILqQbs/BNJXqwSA7Ej6LAvvtY= cloud.google.com/go/compute/metadata v0.10.0/go.mod h1:rGFHRrIif570kSibjFTMbt6/4/tzgJWFGI/HVol4GIk= -cloud.google.com/go/iam v1.12.0 h1:Aki3bX9aHUDKPHfnRJfDcTdVedvy6quGBQcTqx3DRXk= -cloud.google.com/go/iam v1.12.0/go.mod h1:FEZ4lXpADAC2AIpQY7LANNjjwyQ2jK439CI2VaD+sLY= +cloud.google.com/go/iam v1.14.0 h1:YRIB1/4xxwJ+NfI6RQr1WaOoHHeV0MizJEj940nBXJA= +cloud.google.com/go/iam v1.14.0/go.mod h1:JTPZfbHdGXJrOYREtkRoFzCDGaBdbA7ILLKO/DDuav0= cloud.google.com/go/kms v1.36.0 h1:Yewd4nwxa5IOaYJX0dpfzEM5PMCcg6d2LOdrW7V7bbQ= cloud.google.com/go/kms v1.36.0/go.mod h1:BZZ2mD9XlonF2JRr7DVIokrTeHKG/CKde5aSPHqeuS4= -cloud.google.com/go/longrunning v1.2.0 h1:WjYH3YHBGCxGJP9M4dWGHBfXr/cFIjMkNgWcJj7/iMM= -cloud.google.com/go/longrunning v1.2.0/go.mod h1:5KMQALFGOCtFoi2xSOA1u3H7WKlhmckgiyFw7+LGQp0= -cloud.google.com/go/security v1.26.0 h1:xp/htSPHpyqo225Ju6PjNS9jxfcOEQMxnF229Oze62g= -cloud.google.com/go/security v1.26.0/go.mod h1:nd0i5OHXtJduMt0n6UnEojy7fiTfnfj/PSDeD7LAD+c= +cloud.google.com/go/longrunning v1.3.0 h1:lZ6c8SJJBmILp/Wnr3vGnBLa0q+cYfSHRCcUfVI2hpI= +cloud.google.com/go/longrunning v1.3.0/go.mod h1:wpgLxCn+UA3/TZ1bj/fW39mfDpwVlMPu1xKJyoMt7V0= +cloud.google.com/go/security v1.29.1 h1:irh7axea3e1bgtMa5TGQhbXr7ikZzY5hFicCRKYxfdw= +cloud.google.com/go/security v1.29.1/go.mod h1:Y0eV8RDggumXx3Aq3l92z/fq+4AFDr0pH/gTqEV88Q4= dario.cat/mergo v1.0.2 h1:85+piFYR1tMbRrLcDwR18y4UKJ3aH1Tbzi24VRW1TK8= dario.cat/mergo v1.0.2/go.mod h1:E/hbnu0NxMFBjpMIE34DRGLWqDy0g5FuKDhCb31ngxA= filippo.io/bigmod v0.1.0 h1:UNzDk7y9ADKST+axd9skUpBQeW7fG2KrTZyOE4uGQy8= @@ -55,26 +55,26 @@ github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAE github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= github.com/asaskevich/govalidator v0.0.0-20210307081110-f21760c49a8d h1:Byv0BzEl3/e6D5CLfI0j/7hiIEtvGVFPCZ7Ei2oq8iQ= github.com/asaskevich/govalidator v0.0.0-20210307081110-f21760c49a8d/go.mod h1:WaHUgvxTVq04UNunO+XhnAqY/wQc+bxr74GqbsZ/Jqw= -github.com/aws/aws-sdk-go-v2 v1.47.4 h1:bTvk6UdSSSvaQsfLVj1JRDEEqj/PDRwGf1KanaRzau0= -github.com/aws/aws-sdk-go-v2 v1.47.4/go.mod h1:XkrjAZvr705Nytv6PkPUhoSB2W9+vVHBp5oAWpkh8Ak= +github.com/aws/aws-sdk-go-v2 v1.47.5 h1:5yA+A+BiXbDq1ZLbYwPViwhEGDMdR0MEhL8Jh2LnLS4= +github.com/aws/aws-sdk-go-v2 v1.47.5/go.mod h1:iNIkogrRvFwm+1OQIUOP2lPBtlXZboOIUWiCa+pHEMw= github.com/aws/aws-sdk-go-v2/config v1.33.10 h1:RRb0GghYqq2ikMXzfT4r9NO9lVhOld3FIhJJWDIdk+w= github.com/aws/aws-sdk-go-v2/config v1.33.10/go.mod h1:BDSA7QGh6yrNQA5Z5aBnHWKMWdJDMD4IOlB4QjYSp5E= github.com/aws/aws-sdk-go-v2/credentials v1.20.10 h1:ItSjcLk+2M15RnRxO105uVIqLiVQn8y3gaeHC7W0iqs= github.com/aws/aws-sdk-go-v2/credentials v1.20.10/go.mod h1:eO4GlmGXB+gx+zDbhu3IENEFOmjrbVKJtOptJiIhngc= github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.20.4 h1:7ksj/zMap9+831SmNQZkcpmfuATp3DKr4BfLNnBdYXM= github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.20.4/go.mod h1:zhi8vDrD1dj76ysTWS6Ny1y6/EEW1Jrq2y8lzKeoqfs= -github.com/aws/aws-sdk-go-v2/internal/configsources v1.5.7 h1:fSNAt6hs4qLjb9tMZc6vj3PHlOCYGXK2JjJZ7AW2tf4= -github.com/aws/aws-sdk-go-v2/internal/configsources v1.5.7/go.mod h1:TMav+EuXQu5kNpZZz/6rIC8xx4mCsW+6AKHrjvOSAsE= -github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.8.7 h1:7NS6kqBjkWIN8P/AEdmtyq6eQGAhN1oHTZdzXclpH6Y= -github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.8.7/go.mod h1:1PFqtAUsIgF1nEVojzRJSf/v88zjzqrGW+w+UAtkXyQ= +github.com/aws/aws-sdk-go-v2/internal/configsources v1.5.8 h1:gzIWc3DTPfPbWKrQnmL6BV6WD7NPD1htxzgdk/bQ/Z4= +github.com/aws/aws-sdk-go-v2/internal/configsources v1.5.8/go.mod h1:vvUA5cDAZWGo4R14FZPZfXfJCmgsafOWEq78Kg0D+ug= +github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.8.8 h1:PWv+vG8aCLS8qd+HPdYhK7Vees90aKHWFFQ1AGYD/8E= +github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.8.8/go.mod h1:xxPZEpflYHJA12366ZGyq66z9dHPCoeCIu99Jck+MPw= github.com/aws/aws-sdk-go-v2/internal/v4a v1.5.7 h1:wYu55QUHARwu9YzeuY5yEJUTsIu8ahkmp1l3QmbzHn8= github.com/aws/aws-sdk-go-v2/internal/v4a v1.5.7/go.mod h1:OteEkhFAgFwQtZft/3myWo3tVWxdAo7cwV+7AbcpAtQ= github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.22 h1:qHfXn1Tm2Rh8kic/DvdKaiSVlHQRSr5C+rMuBR29D44= github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.22/go.mod h1:D4ytxJbGXu82l+2XF0q60bibysf+KkIbWfAOldAQwf8= github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.14.7 h1:6MSlRo7aiUVBftQ8XmW7XIh3EZqCbkN9zI0YlGW8nl0= github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.14.7/go.mod h1:OqapjZfp6VW4YJKKO4l68UdPvS4FIEYuEoq1JNkxCL0= -github.com/aws/aws-sdk-go-v2/service/kms v1.61.6 h1:FjwjlpoKphz6KCGH5/MnV5sAMuU83QE8c1AAy7ovEIs= -github.com/aws/aws-sdk-go-v2/service/kms v1.61.6/go.mod h1:hlPq3LmJknBzJ7P5GmOoi6HCL0DWSQp2PvKPuJ+ZS9Q= +github.com/aws/aws-sdk-go-v2/service/kms v1.62.2 h1:f0+3opcARrLmWoMciHVzlc1Ww8qFXhvrlscmPShpM+s= +github.com/aws/aws-sdk-go-v2/service/kms v1.62.2/go.mod h1:YVEFrNMhrD35Z6qdvzvpGHDbmFmhZ/Nf58Ubv9dROVU= github.com/aws/aws-sdk-go-v2/service/signin v1.10.5 h1:oFsZ3u5PPFSO1YZDGKFgyDuwgpbv/sTmVShEZfRnyaE= github.com/aws/aws-sdk-go-v2/service/signin v1.10.5/go.mod h1:P+IzYJeldxO0mHt8fX4cglzexP3akO94C/UuEA2ojP0= github.com/aws/aws-sdk-go-v2/service/sso v1.38.5 h1:EYD6E6CsgRQPazaOfZ6suyTgfZjg07HoT4S3qB9Exkg= @@ -83,8 +83,8 @@ github.com/aws/aws-sdk-go-v2/service/ssooidc v1.43.5 h1:v6V0AnJ0aDmivAIie/6iT7sG github.com/aws/aws-sdk-go-v2/service/ssooidc v1.43.5/go.mod h1:P2Lqn27Kph9z400MFOYIebFnKjZEwyUIAva6fFFMiRY= github.com/aws/aws-sdk-go-v2/service/sts v1.51.5 h1:OuyNaMncYP4ftrvcnOHJ9j3AxO3zsC5C/ewD0HoHdjQ= github.com/aws/aws-sdk-go-v2/service/sts v1.51.5/go.mod h1:Bhu66tgvf94uunUSiAc0Ew0avhnpSm0J8Hl1MYocRbo= -github.com/aws/smithy-go v1.28.6 h1:Pj+/sUviNYjow8ELRtNwKHZ9ECeF+7pATX3+shjLIrw= -github.com/aws/smithy-go v1.28.6/go.mod h1:YE2RhdIuDbA5E5bTdciG9KrW3+TiEONeUWCqxX9i1Fc= +github.com/aws/smithy-go v1.28.7 h1:h/n1SHrwVtaDYLz8mR1/Kq4Xh4RaFbFW7bOYckg9mfE= +github.com/aws/smithy-go v1.28.7/go.mod h1:YE2RhdIuDbA5E5bTdciG9KrW3+TiEONeUWCqxX9i1Fc= github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= github.com/boombuler/barcode v1.0.1-0.20190219062509-6c824513bacc/go.mod h1:paBWMcWSl3LHKBqUq+rly7CNSldXjb2rDl3JlRe0mD8= @@ -110,8 +110,8 @@ github.com/cncf/xds/go v0.0.0-20260202195803-dba9d589def2 h1:aBangftG7EVZoUb69Os github.com/cncf/xds/go v0.0.0-20260202195803-dba9d589def2/go.mod h1:qwXFYgsP6T7XnJtbKlf1HP8AjxZZyzxMmc+Lq5GjlU4= github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= github.com/coreos/go-etcd v2.0.0+incompatible/go.mod h1:Jez6KQU2B/sWsbdaef3ED8NzMklzPG4d5KIOhIy30Tk= -github.com/coreos/go-oidc/v3 v3.17.0 h1:hWBGaQfbi0iVviX4ibC7bk8OKT5qNr4klBaCHVNvehc= -github.com/coreos/go-oidc/v3 v3.17.0/go.mod h1:wqPbKFrVnE90vty060SB40FCJ8fTHTxSwyXJqZH+sI8= +github.com/coreos/go-oidc/v3 v3.21.0 h1:wZo4Q9Pum8dYEj0eMUPrqR+kvuGkeUplbLpNCkBqoWM= +github.com/coreos/go-oidc/v3 v3.21.0/go.mod h1:DYCf24+ncYi+XkIH97GY1+dqoRlbaSI26KVTCI9SrY4= github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= github.com/coreos/go-systemd/v22 v22.7.0 h1:LAEzFkke61DFROc7zNLX/WA2i5J8gYqe0rSj9KI28KA= github.com/coreos/go-systemd/v22 v22.7.0/go.mod h1:xNUYtjHu2EDXbsxz1i41wouACIwT7Ybq9o0BQhMwD0w= @@ -135,8 +135,8 @@ github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25Kn github.com/dustin/go-humanize v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkpeCY= github.com/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+mFykh5fBlto= github.com/envoyproxy/go-control-plane v0.14.0 h1:hbG2kr4RuFj222B6+7T83thSPqLjwBIfQawTkC++2HA= -github.com/envoyproxy/go-control-plane/envoy v1.37.0 h1:u3riX6BoYRfF4Dr7dwSOroNfdSbEPe9Yyl09/B6wBrQ= -github.com/envoyproxy/go-control-plane/envoy v1.37.0/go.mod h1:DReE9MMrmecPy+YvQOAOHNYMALuowAnbjjEMkkWOi6A= +github.com/envoyproxy/go-control-plane/envoy v1.39.1-0.20260819172001-e6e3fd93e4be h1:SWe0x6yfglnxuvOiYgTTnNq7QD/yvqthOh1RBI8Bj8w= +github.com/envoyproxy/go-control-plane/envoy v1.39.1-0.20260819172001-e6e3fd93e4be/go.mod h1:PYEOlng9XcrulfyWpm49jECTPV0LT4q8cO7fLW/xwgk= github.com/envoyproxy/protoc-gen-validate v1.3.3 h1:MVQghNeW+LZcmXe7SY1V36Z+WFMDjpqGAGacLe2T0ds= github.com/envoyproxy/protoc-gen-validate v1.3.3/go.mod h1:TsndJ/ngyIdQRhMcVVGDDHINPLWB7C82oDArY51KfB0= github.com/felixge/httpsnoop v1.1.0 h1:3YtUj32ZZkqZtt3sZZsClsymw/QDuVfpNhoA31zeORc= @@ -146,12 +146,10 @@ github.com/frankban/quicktest v1.14.6/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7z github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= github.com/fxamacker/cbor/v2 v2.10.0 h1:HVF3T5vYwLqO81ebPirWEPNv2SMrUMD3HLnKgEr6uWE= github.com/fxamacker/cbor/v2 v2.10.0/go.mod h1:uSwlToFuT9BZAKRxxVm3qQC8DR4tlWl7D6pf20iRYH4= -github.com/go-chi/chi/v5 v5.4.0 h1:+ufzvFTGKyin26Or5DLrlIDq4ygIDBVcj7oVNeeaYFE= -github.com/go-chi/chi/v5 v5.4.0/go.mod h1:d1IG7GtKPSjPyBP365PH8sAGVHk3qfB/IhjFNRH1wWM= -github.com/go-jose/go-jose/v3 v3.0.5 h1:BLLJWbC4nMZOfuPVxoZIxeYsn6Nl2r1fITaJ78UQlVQ= -github.com/go-jose/go-jose/v3 v3.0.5/go.mod h1:5b+7YgP7ZICgJDBdfjZaIt+H/9L9T/YQrVfLAMboGkQ= -github.com/go-jose/go-jose/v4 v4.1.6 h1:sNRkftxFJxwsILiQukqp5z83QBSmntVwmgRY7AqBDO4= -github.com/go-jose/go-jose/v4 v4.1.6/go.mod h1:x4oUasVrzR7071A4TnHLGSPpNOm2a21K9Kf04k1rs08= +github.com/go-chi/chi/v5 v5.5.0 h1:xdKQ1dJmVJsmgahrXSKhUx8NyVPzpwdlyrrQFpMPJgg= +github.com/go-chi/chi/v5 v5.5.0/go.mod h1:d1IG7GtKPSjPyBP365PH8sAGVHk3qfB/IhjFNRH1wWM= +github.com/go-jose/go-jose/v4 v4.1.9 h1:pKfeQkig1NmgK4hJrZYXLEYURXfoJB61Larw0uIW4gY= +github.com/go-jose/go-jose/v4 v4.1.9/go.mod h1:x4oUasVrzR7071A4TnHLGSPpNOm2a21K9Kf04k1rs08= github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= github.com/go-logr/logr v1.4.4 h1:tG4xh9yMsRCAiodLVTxyrkzSZ9+o0L1Kg/+cPVcbP/8= github.com/go-logr/logr v1.4.4/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= @@ -176,7 +174,6 @@ github.com/google/btree v1.1.3/go.mod h1:qOPhT0dTNdNzV6Z/lhRX0YXUafgPLFUh+gZMl76 github.com/google/certificate-transparency-go v1.0.21/go.mod h1:QeJfpSbVSfYc7RgB3gJFj9cbuQMMchQxrWXz8Ruopmg= github.com/google/certificate-transparency-go v1.3.2 h1:9ahSNZF2o7SYMaKaXhAumVEzXB2QaayzII9C8rv7v+A= github.com/google/certificate-transparency-go v1.3.2/go.mod h1:H5FpMUaGa5Ab2+KCYsxg6sELw3Flkl7pGZzWdBoYLXs= -github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= @@ -196,14 +193,16 @@ github.com/google/go-tspi v0.3.0 h1:ADtq8RKfP+jrTyIWIZDIYcKOMecRqNJFOew2IT0Inus= github.com/google/go-tspi v0.3.0/go.mod h1:xfMGI3G0PhxCdNVcYr1C4C+EizojDg/TXuX5by8CiHI= github.com/google/logger v1.1.1 h1:+6Z2geNxc9G+4D4oDO9njjjn2d0wN5d7uOo0vOIW1NQ= github.com/google/logger v1.1.1/go.mod h1:BkeJZ+1FhQ+/d087r4dzojEg1u2ZX+ZqG1jTUrLM+zQ= +github.com/google/pprof v0.0.0-20260802141513-ef3492d7dac3 h1:LMLX+LgTNWpfvCBdFebv6EsYotImrt/Ppc5cXIriCSo= +github.com/google/pprof v0.0.0-20260802141513-ef3492d7dac3/go.mod h1:jl5iWTm0/hd5PjEYEOuwAJ57L/CibdZfrqZ5XA5GrCk= github.com/google/s2a-go v0.1.11 h1:7v1V1TraNGP63WptsAkNqr2w8jgm4vM6A6qx6Lsw9iM= github.com/google/s2a-go v0.1.11/go.mod h1:pz4tyvwXvJLLbyrkh6FW1eS2zPUXMaTmyNhYtyP2tNw= 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.23 h1:J+VGF1wjAM2dU2kKUXZxJdDppRLReWP7KWcclfngQhc= -github.com/googleapis/enterprise-certificate-proxy v0.3.23/go.mod h1:Y8NO/15GNLkrXI3OR5xOFmeU3XLX1sLSdtlXgJ0zmIw= -github.com/googleapis/gax-go/v2 v2.26.2 h1:ydkmNXxj7bEmmeK5AihkKnWxyOyBR9TDebvp5L5izk8= -github.com/googleapis/gax-go/v2 v2.26.2/go.mod h1:sMKqnMesnKH+3wiRJROcttA+cJoZoGbZl1vDQ8XYtGk= +github.com/googleapis/enterprise-certificate-proxy v0.3.24 h1:G9iCJIY+AYVmUskKdjX8FVy7sG+nbzjOQ41cvlmhcvg= +github.com/googleapis/enterprise-certificate-proxy v0.3.24/go.mod h1:hEjCmnoakQzv5ImLUp6alkY7XgLlNoAxwTXmhHHNIsI= +github.com/googleapis/gax-go/v2 v2.27.0 h1:qe2iQOUzxb3fd6x6ewpIEixPQhJ+0Ihc/RRZhKA/2g0= +github.com/googleapis/gax-go/v2 v2.27.0/go.mod h1:RofiqDw3ehcG4L0H1zO3D2Itpwd3/uS/7wdmbNDF1DE= github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= github.com/huandu/xstrings v1.5.0 h1:2ag3IFq9ZDANvthTwTiqSSZLjDc+BedvHPAp5tJy2TI= github.com/huandu/xstrings v1.5.0/go.mod h1:y5/lhBue+AyNmUVz9RLU9xbLR0o4KIIExikq4ovT0aE= @@ -220,8 +219,8 @@ github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJS github.com/keybase/go-keychain v0.0.1 h1:way+bWYa6lDppZoZcgMbYsvC7GxljxrskdNInRtuthU= github.com/keybase/go-keychain v0.0.1/go.mod h1:PdEILRW3i9D8JcdM+FmY6RwkHGnhHxXwkPPMeUgOK1k= github.com/klauspost/compress v1.12.3/go.mod h1:8dP1Hq4DHOhN9w426knH3Rhby4rFm6D8eO+e+Dq5Gzg= -github.com/klauspost/compress v1.18.7 h1:aUyZsS4kH3QTKurYhAOwAHxllVPnOthb3vPfnF1Ehjw= -github.com/klauspost/compress v1.18.7/go.mod h1:cwPg85FWrGar70rWktvGQj8/hthj3wpl0PGDogxkrSQ= +github.com/klauspost/compress v1.20.1 h1:T7kKElXUMXrUJ2E9QhQhxFtcK5rPyLdsGZvdbLMPdiQ= +github.com/klauspost/compress v1.20.1/go.mod h1:LUdAzn7YLVvxLpc7y3V1m40wESHTgc1422pwwBSKYuI= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= github.com/kr/pretty v0.2.0/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= @@ -249,8 +248,10 @@ github.com/mitchellh/reflectwalk v1.0.2 h1:G2LzWKi524PWgd3mLHV8Y5k7s6XUvT0Gef6zx github.com/mitchellh/reflectwalk v1.0.2/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= -github.com/newrelic/go-agent/v3 v3.42.0 h1:aA2Ea1RT5eD59LtOS1KGFXSmaDs6kM3Jeqo7PpuQoFQ= -github.com/newrelic/go-agent/v3 v3.42.0/go.mod h1:sCgxDCVydoKD/C4S8BFxDtmFHvdWHtaIz/a3kiyNB/k= +github.com/newrelic/go-agent/v3 v3.45.0 h1:6Y/NvrdVOY+UuvGDPytBDqAECuvCb2uvU6k0qq8gxnE= +github.com/newrelic/go-agent/v3 v3.45.0/go.mod h1:2aY3paC/QaI9wf/qz9iD0lWP5AQ7UQ9Ks35iDA40ndU= +github.com/nsf/jsondiff v0.0.0-20260207060731-8e8d90c4c0ac h1:4YV96Dzy2csSnhzl14/Qk5YsSrKAQusGsIADDn/4/g8= +github.com/nsf/jsondiff v0.0.0-20260207060731-8e8d90c4c0ac/go.mod h1:mpRZBD8SJ55OIICQ3iWH0Yz3cjzA61JdqMLoWXeB2+8= github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= github.com/peterbourgon/diskv/v3 v3.0.1 h1:x06SQA46+PKIUftmEujdwSEpIx8kR+M9eLYsUxeYveU= github.com/peterbourgon/diskv/v3 v3.0.1/go.mod h1:kJ5Ny7vLdARGU3WUuy6uzO6T0nb/2gWcT1JiBvRmb5o= @@ -264,14 +265,14 @@ github.com/planetscale/vtprotobuf v0.6.1-0.20240319094008-0393e58bdf10/go.mod h1 github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/pquerna/otp v1.5.0 h1:NMMR+WrmaqXU4EzdGJEE1aUUI0AMRzsp96fFFWNPwxs= github.com/pquerna/otp v1.5.0/go.mod h1:dkJfzwRKNiegxyNb54X/3fLwhCynbMspSyWKnvi1AEg= -github.com/prometheus/client_golang v1.23.2 h1:Je96obch5RDVy3FDMndoUsjAhG5Edi49h0RJWRi/o0o= -github.com/prometheus/client_golang v1.23.2/go.mod h1:Tb1a6LWHB3/SPIzCoaDXI4I8UHKeFTEQ1YCr+0Gyqmg= -github.com/prometheus/client_model v0.6.2 h1:oBsgwpGs7iVziMvrGhE53c/GrLUsZdHnqNwqPLxwZyk= -github.com/prometheus/client_model v0.6.2/go.mod h1:y3m2F6Gdpfy6Ut/GBsUqTWZqCUvMVzSfMLjcu6wAwpE= -github.com/prometheus/common v0.67.5 h1:pIgK94WWlQt1WLwAC5j2ynLaBRDiinoAb86HZHTUGI4= -github.com/prometheus/common v0.67.5/go.mod h1:SjE/0MzDEEAyrdr5Gqc6G+sXI67maCxzaT3A2+HqjUw= -github.com/prometheus/procfs v0.19.2 h1:zUMhqEW66Ex7OXIiDkll3tl9a1ZdilUOd/F6ZXw4Vws= -github.com/prometheus/procfs v0.19.2/go.mod h1:M0aotyiemPhBCM0z5w87kL22CxfcH05ZpYlu+b4J7mw= +github.com/prometheus/client_golang v1.25.0 h1:cDtW1TcFsMi1RJc8khwCKB4VhzwV04aKqbYtNOXuiK0= +github.com/prometheus/client_golang v1.25.0/go.mod h1:j2X/4/kaQHLPnmyEU8zjmkndo1T317VpCIQEml8LTKk= +github.com/prometheus/client_model v0.6.3 h1:O0jaTVAYNxTHYInEPFJt5I3+sN8zqBtVMPTB1qyxiEo= +github.com/prometheus/client_model v0.6.3/go.mod h1:gpN5P9S7Rr6Yr92PiQ+Ixvhf6JZEkF1dnxsYL2aPBEM= +github.com/prometheus/common v0.72.0 h1:tAYsE+sPJxIncDAobm4H5aQjmox9ZxEIIqPbiffa8G4= +github.com/prometheus/common v0.72.0/go.mod h1:77NWqAQ2tXT7BIK40qjJdw5Acrsrg1TlHAnsQi3i6mk= +github.com/prometheus/procfs v0.22.0 h1:6q9+/JL9IKAPbCmBrv9n5O5Ty3NKnciV5X7YGw0oics= +github.com/prometheus/procfs v0.22.0/go.mod h1:CvmFr/GVhIjIvWJZW3tgkODBQMRIf0EyWMQLHCHab58= github.com/rogpeppe/go-internal v1.16.0 h1:O9DK+vNMDVGLr2BeZqmpLeMjiMNkuXfcqntWbZV6S5g= github.com/rogpeppe/go-internal v1.16.0/go.mod h1:DrUVZyrJU+txYW5/1kwtXQSMFio52ZOxX7yM1VHvnxs= github.com/rs/xid v1.6.0 h1:fV591PaemRlL6JfRxGDEPl69wICngIQ3shQtzfy2gxU= @@ -289,22 +290,25 @@ github.com/sirupsen/logrus v1.10.2 h1:G2SED73/qrAu6YwbdxOD6peLkCBI3z7L+ykJFTXJBB github.com/sirupsen/logrus v1.10.2/go.mod h1:SLEg8TqYulVKKfIGHldVp2K2aYz2DKSVBq4g/H5bR7Q= github.com/slackhq/nebula v1.11.2 h1:eP61cSfUuoEVGViD50gZBsAbBLPUAhoNOYewPmEwPG4= github.com/slackhq/nebula v1.11.2/go.mod h1:xz3SEyYeEhXY8MDlVu8S3Qt+SjncsSJ8bl4RXUgxtXQ= +github.com/smallstep/android-attestation v0.0.0-20260722204520-a51b1564ebda h1:IfbkxDvPbdr00RD5kgdzdCkPp4ANOLgXyVI8NkWjQ+I= +github.com/smallstep/android-attestation v0.0.0-20260722204520-a51b1564ebda/go.mod h1:WEOYAQ4qnt6LhEcreLGA0woxzE8k5e0vjGuIq72J5tw= github.com/smallstep/assert v0.0.0-20200723003110-82e2b9b3b262 h1:unQFBIznI+VYD1/1fApl1A+9VcBk+9dcqGfnePY87LY= github.com/smallstep/assert v0.0.0-20200723003110-82e2b9b3b262/go.mod h1:MyOHs9Po2fbM1LHej6sBUT8ozbxmMOFG+E+rx/GSGuc= -github.com/smallstep/certificates v0.30.2 h1:1G3xBi8sJ740iA1mMPW2Svv7EIZKJ4Zf/iQtA5QlN0Y= -github.com/smallstep/certificates v0.30.2/go.mod h1:oyaE/aEYUGDr+YiCZLAxxP22bOQqcSHTeDgp8Vv2rlY= +github.com/smallstep/certificates v0.30.3-0.20261105213751-6d5a251fbe01 h1:37RUToHubGV3jBtmuW1I6mwINrVYjljzRbGvg4S2P5s= +github.com/smallstep/certificates v0.30.3-0.20261105213751-6d5a251fbe01/go.mod h1:5H7gEyq41/ZNlGh/0oyrOwmnZtxDKbN5QuqDOcFtkzU= github.com/smallstep/certinfo v1.18.0 h1:q9T0DSkHSmD3gobEqy+3J6HbHpQIOUPEL1IOSvelRIQ= github.com/smallstep/certinfo v1.18.0/go.mod h1:OPwtFVAOx29OjOYsVtj9cDliDFywkVYPt+ExDg43kPs= -github.com/smallstep/cli-utils v0.12.2 h1:lGzM9PJrH/qawbzMC/s2SvgLdJPKDWKwKzx9doCVO+k= -github.com/smallstep/cli-utils v0.12.2/go.mod h1:uCPqefO29goHLGqFnwk0i8W7XJu18X3WHQFRtOm/00Y= +github.com/smallstep/cli-utils v0.13.0 h1:yoGBkW9DJJ6cEZS+UhoBPiYDUIXDz3SjAyBKrK7d/EY= +github.com/smallstep/cli-utils v0.13.0/go.mod h1:1k5tKEGCKpJZHipYTUzN1LhlMW3GoWwlrG7976WDMOY= github.com/smallstep/go-attestation v0.4.4-0.20260814222900-a849f4e2cd68 h1:KcK2guFXrE5sX/nvF1b+atHP6DjRB1gCv3ppyTXB2Zk= github.com/smallstep/go-attestation v0.4.4-0.20260814222900-a849f4e2cd68/go.mod h1:vNAduivU014fubg6ewygkAvQC0IQVXqdc8vaGl/0er4= github.com/smallstep/linkedca v0.26.0 h1:NsxTVo3zI3KwOFFiVodeHtuGgKq0b5kOUXVLjjNTvXY= github.com/smallstep/linkedca v0.26.0/go.mod h1:Z8c7EgVrSHNhshIhRnUGfKfE796+TwF2eyErhqANmJQ= github.com/smallstep/nosql v0.8.0 h1:FBTCUfKPmWYbrozW+RBKu+fnvbn+zr5rVli/XB4Jp4A= github.com/smallstep/nosql v0.8.0/go.mod h1:5dUpNotHLHhOUapP0PLBVVfp3tG1DFC31VRccg+Cqwo= -github.com/smallstep/pkcs7 v0.2.1 h1:6Kfzr/QizdIuB6LSv8y1LJdZ3aPSfTNhTLqAx9CTLfA= github.com/smallstep/pkcs7 v0.2.1/go.mod h1:RcXHsMfL+BzH8tRhmrF1NkkpebKpq3JEM66cOFxanf0= +github.com/smallstep/pkcs7 v0.2.3 h1:bhoQ3TeZmdoXTatcwxCbk+FMcdsyr0gYrrW2Xq2qr+s= +github.com/smallstep/pkcs7 v0.2.3/go.mod h1:7STkdKhZaZe4xNEXTtY4j1NGeST1gYM4GA40kC5iqr8= github.com/smallstep/scep v0.0.0-20250318231241-a25cabb69492 h1:k23+s51sgYix4Zgbvpmy+1ZgXLjr4ZTkBTqXmpnImwA= github.com/smallstep/scep v0.0.0-20250318231241-a25cabb69492/go.mod h1:QQhwLqCS13nhv8L5ov7NgusowENUtXdEzdytjmJHdZQ= github.com/smallstep/truststore v0.13.0 h1:90if9htAOblavbMeWlqNLnO9bsjjgVv2hQeQJCi/py4= @@ -359,26 +363,28 @@ go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.6 go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.67.0/go.mod h1:NoUCKYWK+3ecatC4HjkRktREheMeEtrXoQxrqYFeHSc= go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.69.0 h1:8tvICD4vSTOOsNrsI4Ljf6C+6UKvpTEH5XY3JMoyPoo= go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.69.0/go.mod h1:z9+yiacE0IHRqM4qFfkbt/JYlmYXgss8GY/jXoNuPJI= -go.opentelemetry.io/otel v1.45.0 h1:pdrWmLHofpubmArBv1LgFSv1Z0Ie/ppdZzu+kUN5EeU= -go.opentelemetry.io/otel v1.45.0/go.mod h1:XZxIqPapzEYnhNSScF5DIqXhm/rYi0FzCe2XddAwZfQ= -go.opentelemetry.io/otel/metric v1.45.0 h1:7Eg1uH7CJ5cXv9is6tnBe1FI6rj1nwUdbFypRm3br/M= -go.opentelemetry.io/otel/metric v1.45.0/go.mod h1:HAPbm1nd3p1PmFH7v2dR+6BjXxw+Lq4a2+pndMAm08s= -go.opentelemetry.io/otel/sdk v1.45.0 h1:4VVSMgQ83dUgW2aoX5f6JgLvHwIvzcuLnF9lUdCSpCw= -go.opentelemetry.io/otel/sdk v1.45.0/go.mod h1:Sr40LgXV7DsKMMJMKOhUWOgMWTfAaqvm2kF0g7ilwuA= -go.opentelemetry.io/otel/sdk/metric v1.45.0 h1:oVFszMfyj1Am6s24Vtc7wBb8BKLcwepJjNEYILuiE3o= -go.opentelemetry.io/otel/sdk/metric v1.45.0/go.mod h1:vUWUxDZvu1WVRj8JA8S0AdhsPrZoDpA2DdZauIh4mDA= -go.opentelemetry.io/otel/trace v1.45.0 h1:l/mP6Uv7oNO7/TblbhpbgMidxhq1uO/rPsikOyVhxag= -go.opentelemetry.io/otel/trace v1.45.0/go.mod h1:qoJJA2xNMnxRrdISU/kLtfUH2wNeQbiv+jhs/CxI8bc= -go.step.sm/crypto v0.91.1 h1:ZMMdj/A2rQ+Zr8hyCo4BHJd++c5T8VQIXJ8Sljg57p0= -go.step.sm/crypto v0.91.1/go.mod h1:Sin2AcA+BgYfx1Ulku2Rt0NwS1ky22joBoETFTG1fD4= +go.opentelemetry.io/otel v1.47.0 h1:j7ALJ/zgkS7Z6aeJW09p8VC9804bC+PpeTfCD4XPnOM= +go.opentelemetry.io/otel v1.47.0/go.mod h1:8wS9O2qfXrYrzp6hIF/HOYJJf/wIhFPhR2xLuP+iXQU= +go.opentelemetry.io/otel/log v1.47.0 h1:cOTS1CcLbSQeZKanGJ+0JpF/+t4PELi3O3bbl2lqCcI= +go.opentelemetry.io/otel/log v1.47.0/go.mod h1:9byitSQ5pLC6PpqwGXjqdMKya6ZTswHRZh2vvXT33nw= +go.opentelemetry.io/otel/metric v1.47.0 h1:4PptaldXx3Eat1XjMZ68pPJEs5wrhlemctZE9a3UdWY= +go.opentelemetry.io/otel/metric v1.47.0/go.mod h1:ADGSXxRrXM6bjbvLo535EstVFlPpPYZm4LBKixjDHwU= +go.opentelemetry.io/otel/sdk v1.47.0 h1:zWXEr4j2lFefG87TU6Yg8a7ngfohIKFZHKp0Hf5hC6I= +go.opentelemetry.io/otel/sdk v1.47.0/go.mod h1:VUc24kiOeoGsxG8G9ULx3fWKvB7jMhnGE8Oi607lgR0= +go.opentelemetry.io/otel/sdk/metric v1.47.0 h1:lfISg2j93VT6yqdk9OfUaZmw/GfcZqCCV3jdXtsPnKw= +go.opentelemetry.io/otel/sdk/metric v1.47.0/go.mod h1:ypLp+mW1Nt2x+Szt3b5/i1syodyts49lMOwxpDI3VGw= +go.opentelemetry.io/otel/trace v1.47.0 h1:JOjX/Oci8K94QHddo+bbfya/Ai/nf6/dt9ZfrFNWSrM= +go.opentelemetry.io/otel/trace v1.47.0/go.mod h1:jNaSLa2PZEYFG6fRjJABAu+bw4FS08uDmPg28lTghu0= +go.step.sm/crypto v0.92.0 h1:ifhnf9D2X12SokY000OL9GX038hJJ1xfoFzyX7FzgAs= +go.step.sm/crypto v0.92.0/go.mod h1:3ypkxvcrqPtpvPhRpNgHwoNQcJfFqWd401rxKbrlO5s= go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE= go.uber.org/mock v0.6.0 h1:hyF9dfmbgIX5EfOdasqLsWD6xqpNZlXblLB/Dbnwv3Y= go.uber.org/mock v0.6.0/go.mod h1:KiVJ4BqZJaMj4svdfmHM0AUx4NJYO8ZNpPnZn1Z+BBU= go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= -go.yaml.in/yaml/v2 v2.4.3 h1:6gvOSjQoTB3vt1l+CU+tSyi/HOjfOjRLJ4YwYZGwRO0= -go.yaml.in/yaml/v2 v2.4.3/go.mod h1:zSxWcmIDjOzPXpjlTTbAsKokqkDNAVtZO0WOMiT90s8= +go.yaml.in/yaml/v2 v2.4.4 h1:tuyd0P+2Ont/d6e2rl3be67goVK4R6deVxCUX5vyPaQ= +go.yaml.in/yaml/v2 v2.4.4/go.mod h1:gMZqIpDtDqOfM0uNfy0SkpRhvUryYH0Z6wdMYcacYXQ= go.yaml.in/yaml/v3 v3.0.5 h1:N6y/pJk8buWs9NY5ERU2HSMfm+IuD/OtfdAnq6kESPw= go.yaml.in/yaml/v3 v3.0.5/go.mod h1:HVTZu1O7/Vkt2N+BFy8Zza+lnLsABggaTM2ZpNIGuKg= golang.org/x/crypto v0.0.0-20181203042331-505ab145d0a9/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= @@ -471,16 +477,16 @@ golang.org/x/tools v0.51.0/go.mod h1:9eEncMayCV6zRMGhR5eZEC2iBx98qWcF1HZ9Z7wJOoA golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= gonum.org/v1/gonum v0.17.0 h1:VbpOemQlsSMrYmn7T2OUvQ4dqxQXU+ouZFQsZOx50z4= gonum.org/v1/gonum v0.17.0/go.mod h1:El3tOrEuMpv2UdMrbNlKEh9vd86bmQ6vqIcDwxEOc1E= -google.golang.org/api v0.308.0 h1:iGb+4qT3nVb3uuIzwor3yP2nyu+rMZr31PvLFiRNJQk= -google.golang.org/api v0.308.0/go.mod h1:4XMH+b/ZEfuTbK7FnrFRY9c4xfFHVflGTKuy/i5wUmE= -google.golang.org/genproto v0.0.0-20260715232425-e75dac1f907d h1:C9v1o0/4quuhOAfmRXA2j+we0PqZIp8traLdeogF3Ms= -google.golang.org/genproto v0.0.0-20260715232425-e75dac1f907d/go.mod h1:Wz2wFJntZFmLGo7pLDXZ3wYk5hyc0Mb+SkHhDDXT+lU= -google.golang.org/genproto/googleapis/api v0.0.0-20260715232425-e75dac1f907d h1:QwnJwPte4XXAkhPu26LTDIahnsMSUV0kK8HkxbC+Pc4= -google.golang.org/genproto/googleapis/api v0.0.0-20260715232425-e75dac1f907d/go.mod h1:WRrQ7/7N19PypuT0fxLOL5Lq0waoiRri4FbtHDEKrGE= +google.golang.org/api v0.310.0 h1:537ccDDmbwuwX1iof3Vtdz9vow6uJCgrSZJWedAWM0I= +google.golang.org/api v0.310.0/go.mod h1:5NUthU+LmGMKzYgRaScb+TTe1Lo7x4A+J7g+Yj8BRzA= +google.golang.org/genproto v0.0.0-20261012220534-4341edf3f941 h1:CXq2XEi5aEyLjjPZIwqrmQH8ZY4ctUwK7uyAx3mjX/U= +google.golang.org/genproto v0.0.0-20261012220534-4341edf3f941/go.mod h1:3gK0ehnhP0V7/x3ypGoLyT3d0n6TSi/EcsphIjHrcz4= +google.golang.org/genproto/googleapis/api v0.0.0-20261012220534-4341edf3f941 h1:DS/w3N8rsfrwxwgGSj6WhMsPo7aNQGmDx74J81zd0NQ= +google.golang.org/genproto/googleapis/api v0.0.0-20261012220534-4341edf3f941/go.mod h1:AuGAdi9KnXss7xbLxIKhCvk+Ro/SxpET/iS45DNYN+M= google.golang.org/genproto/googleapis/rpc v0.0.0-20261019180522-ce908d29299b h1:6WNWHZk91dp4gZ25642OALkuG1UVNZbwENJD19DnB8k= google.golang.org/genproto/googleapis/rpc v0.0.0-20261019180522-ce908d29299b/go.mod h1:OaIUM3+LpYcK2GXM4FTmhWoIq371Owdr+Cc7/BsYHHc= -google.golang.org/grpc v1.84.0 h1:soMyaPJ8pAak5PIQ0DGBUir0XRo2fRoMqhNWMLlLxO0= -google.golang.org/grpc v1.84.0/go.mod h1:ljCht0DrxQrXBDRTZp52Qxh3Ffk8CdYm2sj4O2QN2C0= +google.golang.org/grpc v1.85.0 h1:BPBCfuVRQ1qvBhKDOq9uvQllMvO59rKsYhXpp7Dd8vw= +google.golang.org/grpc v1.85.0/go.mod h1:0rQrOD58yjal/0EaVbGBANindixsCZNQPDV3VKtaKuQ= google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.6.2 h1:rgSNvqscFZ1JgV/4wH5GOsZFSFkR2Eua9As3KIr2LlM= google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.6.2/go.mod h1:iMEtFwDlAhjDU9L5mY6U1XLwlIId/G3h+QcBHDIvrJ8= google.golang.org/protobuf v1.36.12 h1:pJOKDDOyeXErUroCihFAd5LQuwXBSpVnKGrj5o/fwxc= diff --git a/integration/crypto_test.go b/integration/crypto_test.go index 1b282214..933041cd 100644 --- a/integration/crypto_test.go +++ b/integration/crypto_test.go @@ -17,7 +17,6 @@ import ( "testing" "time" - gojose "github.com/go-jose/go-jose/v3" "github.com/pquerna/otp" "github.com/pquerna/otp/totp" "github.com/rogpeppe/go-internal/testscript" @@ -502,7 +501,7 @@ func createToken(t *testing.T, jwk *jose.JSONWebKey, now time.Time) string { require.NoError(t, err) payload := make(map[string]any) - raw, err := jose.Signed(signer).Claims(c).Claims(payload).CompactSerialize() + raw, err := jose.Signed(signer).Claims(c).Claims(payload).Serialize() require.NoError(t, err) return raw @@ -527,11 +526,11 @@ func readKey(t *testing.T, file string) (*jose.JSONWebKey, []byte) { return jwk, b } -func readKeySet(t *testing.T, file string) (*gojose.JSONWebKeySet, []byte) { +func readKeySet(t *testing.T, file string) (*jose.JSONWebKeySet, []byte) { t.Helper() b := readBytes(t, file) - var jwks gojose.JSONWebKeySet + var jwks jose.JSONWebKeySet err := json.Unmarshal(b, &jwks) require.NoError(t, err) diff --git a/token/token.go b/token/token.go index a8e5eed7..e2b1a602 100644 --- a/token/token.go +++ b/token/token.go @@ -96,7 +96,7 @@ func (c *Claims) Sign(alg jose.SignatureAlgorithm, key any) (string, error) { c.Set("aud", c.Audience[0]) } - raw, err := jose.Signed(signer).Claims(c.Claims).Claims(c.ExtraClaims).CompactSerialize() + raw, err := jose.Signed(signer).Claims(c.Claims).Claims(c.ExtraClaims).Serialize() if err != nil { return "", errors.Wrapf(err, "error serializing JWT") } From f9e720ea11541847eac185ac6d78c4206ec36391 Mon Sep 17 00:00:00 2001 From: Mariano Cano Date: Thu, 5 Nov 2026 17:27:41 -0800 Subject: [PATCH 2/8] Fix Key ID column width in ACME EAB output Key IDs that are UUIDs, like the ones in step-ca-pro, are 36 characters long and left no space before the provisioner name. Increase the column width to 40 in `step ca acme eab list` and `step ca acme eab add`. --- command/ca/acme/eab/add.go | 2 +- command/ca/acme/eab/list.go | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/command/ca/acme/eab/add.go b/command/ca/acme/eab/add.go index 2fe70c79..96c26979 100644 --- a/command/ca/acme/eab/add.go +++ b/command/ca/acme/eab/add.go @@ -87,7 +87,7 @@ func addAction(ctx *cli.Context) (err error) { // TODO(hs): JSON output, so that executing this command can be more easily automated? out := os.Stdout - format := "%-36s%-28s%-48s%s\n" + format := "%-40s%-28s%-48s%s\n" fmt.Fprintf(out, format, "Key ID", "Provisioner", "Key (base64, raw url encoded)", "Reference") fmt.Fprintf(out, format, cliEAK.id, cliEAK.provisioner, cliEAK.key, cliEAK.reference) diff --git a/command/ca/acme/eab/list.go b/command/ca/acme/eab/list.go index 51e1bfe5..2b9566a5 100644 --- a/command/ca/acme/eab/list.go +++ b/command/ca/acme/eab/list.go @@ -128,7 +128,7 @@ func listAction(ctx *cli.Context) (err error) { } cursor := "" - format := "%-36s%-28s%-16s%-30s%-30s%-40s%s\n" + format := "%-40s%-28s%-16s%-30s%-30s%-40s%s\n" firstIteration := true startedPager := false From 60e86586fbdadd57a7019de4bab251d6c4d9a5be Mon Sep 17 00:00:00 2001 From: Mariano Cano Date: Thu, 5 Nov 2026 17:33:58 -0800 Subject: [PATCH 3/8] Fix govulncheck --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index cddfa278..ddf6736b 100644 --- a/go.mod +++ b/go.mod @@ -92,7 +92,7 @@ require ( github.com/jackc/pgservicefile v0.0.0-20240606120523-5a60cdf6a761 // indirect github.com/jackc/pgx/v5 v5.9.2 // indirect github.com/jackc/puddle/v2 v2.2.2 // indirect - github.com/klauspost/compress v1.20.1 // indirect + github.com/klauspost/compress v1.20.3 // indirect github.com/kylelemons/godebug v1.1.0 // indirect github.com/mattn/go-colorable v0.1.15 // indirect github.com/mattn/go-isatty v0.0.24 // indirect diff --git a/go.sum b/go.sum index 8b4de037..b2e8f75e 100644 --- a/go.sum +++ b/go.sum @@ -219,8 +219,8 @@ github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJS github.com/keybase/go-keychain v0.0.1 h1:way+bWYa6lDppZoZcgMbYsvC7GxljxrskdNInRtuthU= github.com/keybase/go-keychain v0.0.1/go.mod h1:PdEILRW3i9D8JcdM+FmY6RwkHGnhHxXwkPPMeUgOK1k= github.com/klauspost/compress v1.12.3/go.mod h1:8dP1Hq4DHOhN9w426knH3Rhby4rFm6D8eO+e+Dq5Gzg= -github.com/klauspost/compress v1.20.1 h1:T7kKElXUMXrUJ2E9QhQhxFtcK5rPyLdsGZvdbLMPdiQ= -github.com/klauspost/compress v1.20.1/go.mod h1:LUdAzn7YLVvxLpc7y3V1m40wESHTgc1422pwwBSKYuI= +github.com/klauspost/compress v1.20.3 h1:zWNoFqq/lSuYQRim3dUXlXeA0IqwuZGicdG5ZTfY5j4= +github.com/klauspost/compress v1.20.3/go.mod h1:LUdAzn7YLVvxLpc7y3V1m40wESHTgc1422pwwBSKYuI= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= github.com/kr/pretty v0.2.0/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= From 4ad9dc5ccb34cc44c7eeaa71e1b1d84e6690a45d Mon Sep 17 00:00:00 2001 From: Mariano Cano Date: Fri, 6 Nov 2026 15:35:38 -0800 Subject: [PATCH 4/8] Enforce oct key sizes required by go-jose v4 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Require the minimum HMAC key lengths from RFC 7518 §3.2 and exact sizes for AES key wrap algorithms in `step crypto jwk create`. Update the integration tests and changelog for the new behavior. --- CHANGELOG.md | 11 ++ command/crypto/jwk/create.go | 54 ++++++++- .../testdata/crypto/jwk-create-oct.txtar | 103 +++++++++++++----- integration/testdata/crypto/jwt-verify.txtar | 36 +++--- 4 files changed, 151 insertions(+), 53 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2d21ddea..3fe9820f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -21,6 +21,17 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0. ### Changed +- Enforce the minimum HMAC key lengths from RFC 7518 §3.2 after migrating to + go-jose v4. `oct` keys must now be at least 32 bytes for HS256, 48 bytes for + HS384, and 64 bytes for HS512. `step crypto jwk create` rejects smaller values + for `--size`, and `--insecure` no longer overrides the minimum. Existing + shorter keys can no longer be used with the `step crypto jwt` commands and + must be replaced (smallstep/cli#1732, smallstep/crypto#1157). +- Require the `--size` of `oct` keys in `step crypto jwk create` to match the + AES key wrap algorithm exactly: 16 bytes for A128KW and A128GCMKW, 24 bytes for + A192KW and A192GCMKW, and 32 bytes for A256KW and A256GCMKW + (smallstep/cli#1732, smallstep/crypto#1157). + ### Deprecated ### Removed diff --git a/command/crypto/jwk/create.go b/command/crypto/jwk/create.go index af4bb992..3f57c6bf 100644 --- a/command/crypto/jwk/create.go +++ b/command/crypto/jwk/create.go @@ -157,11 +157,11 @@ $ step crypto jwk create rsa-enc.pub.json rsa-enc.json \ --kty RSA --size 4096 --use enc ''' -Create a 192 bit symmetric encryption key for use with AES Key Wrap: +Create a 192 bit (24 bytes) symmetric encryption key for use with AES Key Wrap: ''' $ step crypto jwk create kw.pub.json kw.json \ - --kty oct --size 192 --use enc --alg A192GCMKW + --kty oct --size 24 --use enc --alg A192GCMKW ''' `, Flags: []cli.Flag{ @@ -459,11 +459,23 @@ func createAction(ctx *cli.Context) (err error) { } // If size is not set it will use a safe default if ctx.IsSet("size") { - if size < 16 && !ctx.Bool("insecure") { - return errs.MinSizeInsecureFlag(ctx, "size", "16") + if alg == "" { + switch use { + case "", "sig": + alg = jose.DefaultOctSigAlgorithm + case "enc": + alg = string(jose.DefaultOctKeyAlgorithm) + } } - if size <= 0 { - return errs.MinSizeFlag(ctx, "size", "0") + // go-jose v4 enforces RFC 7518 §3.2, which says an HMAC key must be at + // least as long as the hash output. + if n := hmacKeySize(alg); size < n { + return errs.MinSizeFlag(ctx, "size", strconv.Itoa(n)) + } + // go-jose selects the AES variant from the key size, so the size must + // match the algorithm exactly. + if n := aesKeySize(alg); n > 0 && size != n { + return fmt.Errorf("flag '--size' must be equal to %d", n) } } default: @@ -598,3 +610,33 @@ func createAction(ctx *cli.Context) (err error) { ui.Printf("Your private key has been saved in %s.\n", privFile) return nil } + +// hmacKeySize returns the minimum size in bytes of the key for the given HMAC +// algorithm, or 0 if alg is not an HMAC algorithm. +func hmacKeySize(alg string) int { + switch alg { + case jose.HS256: + return 32 + case jose.HS384: + return 48 + case jose.HS512: + return 64 + default: + return 0 + } +} + +// aesKeySize returns the exact size in bytes of the key for the given AES key +// wrap algorithm, or 0 if alg is not an AES key wrap algorithm. +func aesKeySize(alg string) int { + switch jose.KeyAlgorithm(alg) { + case jose.A128KW, jose.A128GCMKW: + return 16 + case jose.A192KW, jose.A192GCMKW: + return 24 + case jose.A256KW, jose.A256GCMKW: + return 32 + default: + return 0 + } +} diff --git a/integration/testdata/crypto/jwk-create-oct.txtar b/integration/testdata/crypto/jwk-create-oct.txtar index 733d5e04..82103157 100644 --- a/integration/testdata/crypto/jwk-create-oct.txtar +++ b/integration/testdata/crypto/jwk-create-oct.txtar @@ -1,81 +1,126 @@ # oct defaults -exec step crypto jwk create --password-file password.txt --kty oct oct-defaults.pub oct-defaults.priv +exec step crypto jwk create --password-file password.txt --kty oct oct-defaults.pub oct-defaults.priv check_jwk oct-defaults.pub oct-defaults.priv oct HS256 -# oct too small without insecure fails -! exec step crypto jwk create --password-file password.txt --size 4 --kty oct fail.pub fail.priv -stderr 'flag ''--size'' requires at least 16 unless ''--insecure'' flag is provided' +# oct too small +! exec step crypto jwk create --password-file password.txt --size 4 --kty oct fail.pub fail.priv +stderr 'flag ''--size'' must be greater than or equal to 32' -# oct small size with insecure -exec step crypto jwk create --password-file password.txt --kty oct --size 4 --insecure oct-small.pub oct-small.priv -check_jwk oct-small.pub oct-small.priv oct HS256 +# oct HS256 too small +! exec step crypto jwk create --password-file password.txt --size 31 --kty oct --alg HS256 fail.pub fail.priv +stderr 'flag ''--size'' must be greater than or equal to 32' -# oct size 0 with insecure fails -! exec step crypto jwk create --password-file password.txt --size 0 --insecure --kty oct fail.pub fail.priv -stderr 'must be greater than or equal to 0' +# oct HS384 too small +! exec step crypto jwk create --password-file password.txt --size 47 --kty oct --alg HS384 fail.pub fail.priv +stderr 'flag ''--size'' must be greater than or equal to 48' -# oct HS256 -exec step crypto jwk create --password-file password.txt --kty oct --alg HS256 --size 64 oct-hs256.pub oct-hs256.priv +# oct HS512 too small +! exec step crypto jwk create --password-file password.txt --size 63 --kty oct --alg HS512 fail.pub fail.priv +stderr 'flag ''--size'' must be greater than or equal to 64' + + +# oct HS256 min size +exec step crypto jwk create --password-file password.txt --kty oct --alg HS256 --size 32 oct-hs256.pub oct-hs256.priv check_jwk oct-hs256.pub oct-hs256.priv oct HS256 -# oct HS384 -exec step crypto jwk create --password-file password.txt --kty oct --alg HS384 --size 64 oct-hs384.pub oct-hs384.priv +# oct HS384 min size +exec step crypto jwk create --password-file password.txt --kty oct --alg HS384 --size 48 oct-hs384.pub oct-hs384.priv check_jwk oct-hs384.pub oct-hs384.priv oct HS384 -# oct HS512 -exec step crypto jwk create --password-file password.txt --kty oct --alg HS512 --size 64 oct-hs512.pub oct-hs512.priv +# oct HS512 min size +exec step crypto jwk create --password-file password.txt --kty oct --alg HS512 --size 64 oct-hs512.pub oct-hs512.priv check_jwk oct-hs512.pub oct-hs512.priv oct HS512 +# oct HS256 larger size +exec step crypto jwk create --password-file password.txt --kty oct --alg HS256 --size 48 oct-hs256-48.pub oct-hs256-48.priv +check_jwk oct-hs256-48.pub oct-hs256-48.priv oct HS256 + + +# oct HS384 larger size +exec step crypto jwk create --password-file password.txt --kty oct --alg HS384 --size 64 oct-hs384-64.pub oct-hs384-64.priv +check_jwk oct-hs384-64.pub oct-hs384-64.priv oct HS384 + + +# oct HS512 larger size +exec step crypto jwk create --password-file password.txt --kty oct --alg HS512 --size 80 oct-hs512-80.pub oct-hs512-80.priv +check_jwk oct-hs512-80.pub oct-hs512-80.priv oct HS512 + + # oct HS256 with enc use fails ! exec step crypto jwk create --password-file password.txt --kty oct --alg HS256 --size 32 --use enc fail.pub fail.priv stderr 'alg ''HS256'' is not compatible with kty ''oct''' # oct enc dir -exec step crypto jwk create --password-file password.txt --kty oct --alg dir --size 64 --use enc oct-enc-dir.pub oct-enc-dir.priv +exec step crypto jwk create --password-file password.txt --kty oct --alg dir --size 64 --use enc oct-enc-dir.pub oct-enc-dir.priv check_jwk oct-enc-dir.pub oct-enc-dir.priv oct dir # oct A128KW -exec step crypto jwk create --password-file password.txt --kty oct --alg A128KW --size 32 --use enc oct-a128kw.pub oct-a128kw.priv +exec step crypto jwk create --password-file password.txt --kty oct --alg A128KW --size 16 --use enc oct-a128kw.pub oct-a128kw.priv check_jwk oct-a128kw.pub oct-a128kw.priv oct A128KW # oct A192KW -exec step crypto jwk create --password-file password.txt --kty oct --alg A192KW --size 32 --use enc oct-a192kw.pub oct-a192kw.priv +exec step crypto jwk create --password-file password.txt --kty oct --alg A192KW --size 24 --use enc oct-a192kw.pub oct-a192kw.priv check_jwk oct-a192kw.pub oct-a192kw.priv oct A192KW # oct A256KW -exec step crypto jwk create --password-file password.txt --kty oct --alg A256KW --size 32 --use enc oct-a256kw.pub oct-a256kw.priv +exec step crypto jwk create --password-file password.txt --kty oct --alg A256KW --size 32 --use enc oct-a256kw.pub oct-a256kw.priv check_jwk oct-a256kw.pub oct-a256kw.priv oct A256KW # oct A128GCMKW -exec step crypto jwk create --password-file password.txt --kty oct --alg A128GCMKW --size 32 --use enc oct-a128gcmkw.pub oct-a128gcmkw.priv +exec step crypto jwk create --password-file password.txt --kty oct --alg A128GCMKW --size 16 --use enc oct-a128gcmkw.pub oct-a128gcmkw.priv check_jwk oct-a128gcmkw.pub oct-a128gcmkw.priv oct A128GCMKW # oct A192GCMKW -exec step crypto jwk create --password-file password.txt --kty oct --alg A192GCMKW --size 32 --use enc oct-a192gcmkw.pub oct-a192gcmkw.priv +exec step crypto jwk create --password-file password.txt --kty oct --alg A192GCMKW --size 24 --use enc oct-a192gcmkw.pub oct-a192gcmkw.priv check_jwk oct-a192gcmkw.pub oct-a192gcmkw.priv oct A192GCMKW # oct A256GCMKW -exec step crypto jwk create --password-file password.txt --kty oct --alg A256GCMKW --size 32 --use enc oct-a256gcmkw.pub oct-a256gcmkw.priv +exec step crypto jwk create --password-file password.txt --kty oct --alg A256GCMKW --size 32 --use enc oct-a256gcmkw.pub oct-a256gcmkw.priv check_jwk oct-a256gcmkw.pub oct-a256gcmkw.priv oct A256GCMKW -# oct 256 HS256 -exec step crypto jwk create --password-file password.txt --kty oct --alg HS256 --size 32 --kid foo oct-256-hs256.pub oct-256-hs256.priv -check_jwk oct-256-hs256.pub oct-256-hs256.priv oct HS256 +# oct A128KW fail +! exec step crypto jwk create --password-file password.txt --kty oct --alg A128KW --size 32 --use enc fail.pub fail.priv +stderr 'flag ''--size'' must be equal to 16' + + +# oct A192KW fail +! exec step crypto jwk create --password-file password.txt --kty oct --alg A192KW --size 48 --use enc fail.pub fail.priv +stderr 'flag ''--size'' must be equal to 24' + + +# oct A256KW fail +! exec step crypto jwk create --password-file password.txt --kty oct --alg A256KW --size 64 --use enc fail.pub fail.priv +stderr 'flag ''--size'' must be equal to 32' + + +# oct A128GCMKW fail +! exec step crypto jwk create --password-file password.txt --kty oct --alg A128GCMKW --size 32 --use enc fail.pub fail.priv +stderr 'flag ''--size'' must be equal to 16' + + +# oct A192GCMKW fail +! exec step crypto jwk create --password-file password.txt --kty oct --alg A192GCMKW --size 48 --use enc fail.pub fail.priv +stderr 'flag ''--size'' must be equal to 24' + + +# oct A256GCMKW fail +! exec step crypto jwk create --password-file password.txt --kty oct --alg A256GCMKW --size 64 --use enc fail.pub fail.priv +stderr 'flag ''--size'' must be equal to 32' # oct with RSA algorithm fails @@ -83,16 +128,16 @@ check_jwk oct-256-hs256.pub oct-256-hs256.priv oct HS256 stderr 'alg ''RS256'' is not compatible with kty ''oct''' -# oct with curve fails +# oct with curve fails ! exec step crypto jwk create --password-file password.txt --kty oct --alg HS256 --size 32 --curve P-256 fail.pub fail.priv stderr 'flag ''--crv'' is incompatible with ''--kty oct''' # oct without password -exec step crypto jwk create --no-password --insecure --kty oct oct-no-pass.pub oct-no-pass.priv +exec step crypto jwk create --no-password --insecure --kty oct oct-no-pass.pub oct-no-pass.priv check_jwk_without_password oct-no-pass.pub oct-no-pass.priv oct HS256 # oct without password without insecure fails -! exec step crypto jwk create --no-password --kty oct fail.pub fail.priv +! exec step crypto jwk create --no-password --kty oct fail.pub fail.priv stderr 'flag ''--no-password'' requires the ''--insecure'' flag' \ No newline at end of file diff --git a/integration/testdata/crypto/jwt-verify.txtar b/integration/testdata/crypto/jwt-verify.txtar index 0ba3ca70..da7a0fd0 100644 --- a/integration/testdata/crypto/jwt-verify.txtar +++ b/integration/testdata/crypto/jwt-verify.txtar @@ -1,17 +1,17 @@ # P-256 verification stdin p256token.txt -exec step crypto jwt verify -key p256.pem -iss TestIssuer -aud TestAudience +exec step crypto jwt verify -key p256.pem -iss TestIssuer -aud TestAudience # P-256 verify fails with RS256 alg stdin p256token.txt -! exec step crypto jwt verify -key p256.pem -alg RS256 -iss TestIssuer -aud TestAudience +! exec step crypto jwt verify -key p256.pem -alg RS256 -iss TestIssuer -aud TestAudience stderr 'alg ''RS256'' is not compatible with kty ''EC'' and crv ''P-256''' # P-256 verify fail with RSA384 alg stdin p256token.txt -! exec step crypto jwt verify -key p256.pem -alg RS384 -iss TestIssuer -aud TestAudience +! exec step crypto jwt verify -key p256.pem -alg RS384 -iss TestIssuer -aud TestAudience stderr 'alg ''RS384'' is not compatible with kty ''EC'' and crv ''P-256''' @@ -25,8 +25,8 @@ stdin rsatoken.txt ! exec step crypto jwt verify -key rsa.pem -iss TestIssuer -aud TestAudience stderr 'flag ''--alg'' is required with the given key' -# Ed25519 verification -stdin ed25519token.txt +# Ed25519 verification +stdin ed25519token.txt exec step crypto jwt verify -key ed25519.json -iss TestIssuer -aud TestAudience @@ -37,7 +37,7 @@ stdin stdout stderr 'error parsing token: compact JWS format must have three parts' -# Ed25519 verification fails with invalid signature +# Ed25519 verification fails with invalid signature stdin incomplete-signature.txt ! exec step crypto jwt verify -key ed25519.json -iss TestIssuer -aud TestAudience stderr 'validation failed: invalid signature' @@ -58,13 +58,13 @@ stderr 'validation failed: invalid audience claim' # Ed25519 verification fails with invalid data stdin invalid-header.txt ! exec step crypto jwt verify -key ed25519.json -iss TestIssuer -aud TestAudience -stderr 'error parsing token: invalid character ''o'' in literal false' +stderr 'error parsing token: invalid protected header' # Ed25519 verification fails with invalid JSON stdin invalid-header-json.txt ! exec step crypto jwt verify -key ed25519.json -iss TestIssuer -aud TestAudience -stderr 'error parsing token: json: cannot unmarshal array into Go value of type jose.rawHeader' +stderr 'error parsing token: invalid protected header' # Ed25519 verification fails with changed attribute @@ -76,13 +76,13 @@ stderr 'validation failed: invalid signature' # Ed25519 verification fails with bad header JSON stdin invalid-header-bad-json.txt ! exec step crypto jwt verify -key ed25519.json -iss TestIssuer -aud TestAudience -stderr 'error parsing token: unexpected end of JSON input' +stderr 'error parsing token: invalid protected header' # Ed25519 verification fails with invalid payload stdin invalid-payload.txt ! exec step crypto jwt verify -key ed25519.json -iss TestIssuer -aud TestAudience -stderr 'error parsing token: invalid character ''e'' looking for beginning of value' +stderr 'error parsing token: invalid protected header' # Verify with JWKS and KID 1 @@ -149,28 +149,28 @@ exec step crypto jwt verify -key rsa.pem -alg RS256 -iss TestIssuer -aud TestAud # Verify token created by OpenSSL without expiry succeeds stdin no-expiry-ossltoken.txt -exec step crypto jwt verify -key rsa.pem -alg RS256 -iss TestIssuer -aud TestAudience +exec step crypto jwt verify -key rsa.pem -alg RS256 -iss TestIssuer -aud TestAudience # Verify token created by OpenSSL without nbf succeeds stdin zero-not-before-ossltoken.txt -exec step crypto jwt verify -key rsa.pem -alg RS256 -iss TestIssuer -aud TestAudience +exec step crypto jwt verify -key rsa.pem -alg RS256 -iss TestIssuer -aud TestAudience -# Verify unsupported JSON serialized token +# Verify unsupported JSON serialized token stdin jwt-json-serialization.json ! exec step crypto jwt verify -key rsa.pem -alg RS256 -iss TestIssuer -aud TestAudience --no-exp-check -stderr 'error parsing token: unexpected end of JSON input' +stderr 'error parsing token: error parsing JWS: unexpected end of JSON input' -# Verify unsupported JSON serialized token +# Verify unsupported JSON serialized token stdin jwt-json-serialization-flattened.json ! exec step crypto jwt verify -key rsa.pem -alg RS256 -iss TestIssuer -aud TestAudience --no-exp-check -stderr 'error parsing token: unexpected end of JSON input' +stderr 'error parsing token: error parsing JWS: unexpected end of JSON input' -# Verify unsupported JSON serialized token +# Verify unsupported JSON serialized token stdin jwt-json-serialization-multi.json ! exec step crypto jwt verify -key rsa.pem -alg RS256 -iss TestIssuer -aud TestAudience --no-exp-check -stderr 'error parsing token: unexpected end of JSON input' +stderr 'error parsing token: error parsing JWS: unexpected end of JSON input' From 7ddafe6fbceab3faecc882dce478ef3629aaca96 Mon Sep 17 00:00:00 2001 From: Mariano Cano Date: Fri, 6 Nov 2026 17:55:36 -0800 Subject: [PATCH 5/8] Fix regressions from the go-jose v4 migration Allow step crypto jwt inspect, jws inspect, and jose format to display tokens with algorithms that go-jose v4 rejects when parsing, like none or ES256K. The verify commands keep rejecting them. Validate the --size of oct keys in jwk create in terms of the flag, in bytes, including the minimum for algorithms without a size of their own, like dir. Its help now states the units, and the shared flag only describes RSA keys, as the other commands do not support oct keys. Fix jwe encrypt with oct keys, which failed because JSONWebKey.Public() returns an empty key for symmetric keys. Keep the original protected header in jose format, which was reordered when serialized, invalidating the signature or authentication tag. Co-Authored-By: Claude Opus 5.5 --- CHANGELOG.md | 17 +- command/crypto/jose/jose.go | 53 ++++- command/crypto/jwe/encrypt.go | 12 +- command/crypto/jwk/create.go | 56 +++-- command/crypto/jws/inspect.go | 6 +- command/crypto/jwt/inspect.go | 6 +- flags/flags.go | 7 +- go.mod | 2 +- integration/crypto_test.go | 63 +++++- integration/testdata/crypto/jose-format.txtar | 114 +++++++++++ integration/testdata/crypto/jwe-encrypt.txtar | 193 ++++++++++++++++++ .../testdata/crypto/jwk-create-oct.txtar | 109 +++++++++- .../testdata/crypto/jwk-create-rsa.txtar | 2 +- integration/testdata/crypto/jws-inspect.txtar | 84 ++++++++ integration/testdata/crypto/jwt-inspect.txtar | 43 +++- integration/testdata/crypto/jwt-verify.txtar | 2 +- integration/testdata/crypto/keypair.txtar | 2 +- internal/joseutil/joseutil.go | 143 +++++++++++++ internal/joseutil/joseutil_test.go | 170 +++++++++++++++ utils/cli.go | 5 +- 20 files changed, 1034 insertions(+), 55 deletions(-) create mode 100644 integration/testdata/crypto/jose-format.txtar create mode 100644 integration/testdata/crypto/jwe-encrypt.txtar create mode 100644 integration/testdata/crypto/jws-inspect.txtar create mode 100644 internal/joseutil/joseutil.go create mode 100644 internal/joseutil/joseutil_test.go diff --git a/CHANGELOG.md b/CHANGELOG.md index 3fe9820f..53c63cc5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -25,12 +25,15 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0. go-jose v4. `oct` keys must now be at least 32 bytes for HS256, 48 bytes for HS384, and 64 bytes for HS512. `step crypto jwk create` rejects smaller values for `--size`, and `--insecure` no longer overrides the minimum. Existing - shorter keys can no longer be used with the `step crypto jwt` commands and - must be replaced (smallstep/cli#1732, smallstep/crypto#1157). + shorter keys can no longer be used to sign or verify with the + `step crypto jwt` and `step crypto jws` commands and must be replaced + (smallstep/cli#1732, smallstep/crypto#1157). - Require the `--size` of `oct` keys in `step crypto jwk create` to match the AES key wrap algorithm exactly: 16 bytes for A128KW and A128GCMKW, 24 bytes for - A192KW and A192GCMKW, and 32 bytes for A256KW and A256GCMKW - (smallstep/cli#1732, smallstep/crypto#1157). + A192KW and A192GCMKW, and 32 bytes for A256KW and A256GCMKW. Existing keys + whose size does not match their algorithm, including keys created without + `--size` for A128KW, A192KW, A128GCMKW, or A192GCMKW, are now rejected by + `step crypto jwe decrypt` (smallstep/cli#1732, smallstep/crypto#1157). ### Deprecated @@ -38,6 +41,12 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0. ### Fixed +- Fix `step crypto jwe encrypt` with `oct` keys, which failed with + `unsupported key type ''` (smallstep/cli#1732). +- Keep the original protected header in `step crypto jose format`, reordering + its fields invalidated the signature or authentication tag of the token + (smallstep/cli#1732). + ### Security --- diff --git a/command/crypto/jose/jose.go b/command/crypto/jose/jose.go index 50726cfe..cc591f9c 100644 --- a/command/crypto/jose/jose.go +++ b/command/crypto/jose/jose.go @@ -1,6 +1,7 @@ package jose import ( + "encoding/json" "fmt" "io" "os" @@ -10,6 +11,8 @@ import ( "github.com/pkg/errors" "github.com/urfave/cli" "go.step.sm/crypto/jose" + + "github.com/smallstep/cli/internal/joseutil" ) // Command returns the cli.Command for jose related subcommands. @@ -75,10 +78,10 @@ func formatAction(*cli.Context) error { // Attempt to parse an encrypted // If it fails parse a regular JWS var srz serializer - if enc, err := jose.ParseEncrypted(token); err == nil { + if enc, err := joseutil.ParseEncryptedInsecure(token); err == nil { srz = enc } else { - tok, err := jose.ParseJWS(token) + tok, err := joseutil.ParseSignedInsecure(token) if err != nil { return errors.Wrap(jose.TrimPrefix(err), "error parsing data") } @@ -90,14 +93,56 @@ func formatAction(*cli.Context) error { if err != nil { return errors.Wrap(jose.TrimPrefix(err), "error serializing data") } - fmt.Println(str) + fmt.Println(withCompactProtected(str, token)) } else { - fmt.Println(srz.FullSerialize()) + fmt.Println(withJSONProtected(srz.FullSerialize(), token)) } return nil } +// withCompactProtected returns the given compact serialization with the protected +// header of the original token in JSON format. go-jose marshals the header again +// when it serializes a token, which changes the bytes that the signature or the +// authentication tag cover if the fields are in a different order. +func withCompactProtected(compact, token string) string { + var jws struct { + Protected string `json:"protected"` + Signatures []struct { + Protected string `json:"protected"` + } `json:"signatures"` + } + if err := json.Unmarshal([]byte(token), &jws); err != nil { + return compact + } + + protected := jws.Protected + if protected == "" && len(jws.Signatures) == 1 { + protected = jws.Signatures[0].Protected + } + _, rest, ok := strings.Cut(compact, ".") + if protected == "" || !ok { + return compact + } + return strings.TrimRight(protected, "=") + "." + rest +} + +// withJSONProtected returns the given JSON serialization with the protected header +// of the original token in compact format, see withCompactProtected. +func withJSONProtected(full, token string) string { + var serialized struct { + Protected string `json:"protected"` + } + if err := json.Unmarshal([]byte(full), &serialized); err != nil { + return full + } + + protected, _, _ := strings.Cut(token, ".") + return strings.Replace(full, + `"protected":"`+serialized.Protected+`"`, + `"protected":"`+protected+`"`, 1) +} + var stripWhitespaceRegex = regexp.MustCompile(`\s`) // stripWhitespace strip all newlines and whitespace diff --git a/command/crypto/jwe/encrypt.go b/command/crypto/jwe/encrypt.go index a5e73beb..c98ce2f7 100644 --- a/command/crypto/jwe/encrypt.go +++ b/command/crypto/jwe/encrypt.go @@ -7,9 +7,10 @@ import ( "github.com/pkg/errors" "github.com/urfave/cli" + "go.step.sm/crypto/jose" + "github.com/smallstep/cli-utils/errs" "github.com/smallstep/cli-utils/ui" - "go.step.sm/crypto/jose" "github.com/smallstep/cli/flags" "github.com/smallstep/cli/utils" @@ -240,9 +241,12 @@ func encryptAction(ctx *cli.Context) error { KeyID: kid, } } else { - // Public keys are used for encryption - jwkPub := jwk.Public() - jwk = &jwkPub + // Public keys are used for encryption. go-jose JSONWebKey.Public() returns + // an empty key for oct, which are symmetric and are used as they are. + if !jose.IsSymmetric(jwk) { + jwkPub := jwk.Public() + jwk = &jwkPub + } if jwk.Use == "sig" { return errors.New("invalid jwk use: found 'sig' (signature), expecting 'enc' (encryption)") diff --git a/command/crypto/jwk/create.go b/command/crypto/jwk/create.go index 3f57c6bf..29020e23 100644 --- a/command/crypto/jwk/create.go +++ b/command/crypto/jwk/create.go @@ -11,13 +11,14 @@ import ( "github.com/pkg/errors" "github.com/urfave/cli" + "go.step.sm/crypto/jose" + "go.step.sm/crypto/keyutil" + "go.step.sm/crypto/randutil" + "github.com/smallstep/cli-utils/command" "github.com/smallstep/cli-utils/errs" "github.com/smallstep/cli-utils/fileutil" "github.com/smallstep/cli-utils/ui" - "go.step.sm/crypto/jose" - "go.step.sm/crypto/keyutil" - "go.step.sm/crypto/randutil" "github.com/smallstep/cli/flags" "github.com/smallstep/cli/utils" @@ -150,14 +151,14 @@ $ step crypto jwk create jwk.pub.json jwk.json \ --from-pem key.pem ''' -Create an 4096 bit RSA encryption key: +Create a 4096-bit RSA encryption key: ''' $ step crypto jwk create rsa-enc.pub.json rsa-enc.json \ --kty RSA --size 4096 --use enc ''' -Create a 192 bit (24 bytes) symmetric encryption key for use with AES Key Wrap: +Create a 24-byte (192-bit) symmetric encryption key for use with AES GCM key wrapping: ''' $ step crypto jwk create kw.pub.json kw.json \ @@ -186,7 +187,13 @@ If unset, default is EC. : Create an **RSA** keypair `, }, - flags.Size, + cli.IntFlag{ + Name: "size", + Usage: `The of the key for RSA and oct key types, in bits for RSA keys and in +bytes for oct keys. RSA keys require a minimum key size of 2048 bits. If unset, +default is 2048 bits for RSA keys. For oct keys, default is the size required +by the algorithm, or 32 bytes if the algorithm does not define one.`, + }, flags.Curve, cli.StringFlag{ Name: "alg, algorithm", @@ -446,7 +453,7 @@ func createAction(ctx *cli.Context) (err error) { return errs.MinSizeInsecureFlag(ctx, "size", strconv.Itoa(minimalSize)) } if size <= 0 { - return errs.MinSizeFlag(ctx, "size", "0") + return errs.MinSizeFlag(ctx, "size", "1") } } case "OKP": @@ -457,25 +464,38 @@ func createAction(ctx *cli.Context) (err error) { if ctx.IsSet("crv") { return errs.IncompatibleFlag(ctx, "crv", "--kty oct") } - // If size is not set it will use a safe default + // If size is not set it will use a safe default. GenerateJWK also checks + // the size of HMAC and AES key wrap algorithms, these checks report the + // problem in terms of the flag. if ctx.IsSet("size") { - if alg == "" { - switch use { - case "", "sig": - alg = jose.DefaultOctSigAlgorithm - case "enc": - alg = string(jose.DefaultOctKeyAlgorithm) + sizeAlg := alg + if sizeAlg == "" { + // Same defaults as GenerateJWK, which uses the signature algorithm for + // any use other than enc. + if use == "enc" { + sizeAlg = string(jose.DefaultOctKeyAlgorithm) + } else { + sizeAlg = jose.DefaultOctSigAlgorithm } } // go-jose v4 enforces RFC 7518 §3.2, which says an HMAC key must be at // least as long as the hash output. - if n := hmacKeySize(alg); size < n { - return errs.MinSizeFlag(ctx, "size", strconv.Itoa(n)) + if n := hmacKeySize(sizeAlg); n > 0 && size < n { + return errs.MinSizeFlag(ctx, "size", strconv.Itoa(n)+" bytes") } // go-jose selects the AES variant from the key size, so the size must // match the algorithm exactly. - if n := aesKeySize(alg); n > 0 && size != n { - return fmt.Errorf("flag '--size' must be equal to %d", n) + if n := aesKeySize(sizeAlg); n > 0 && size != n { + return fmt.Errorf("flag '--size' must be equal to %d bytes", n) + } + // Other algorithms only have a minimum. The size of a dir key depends on + // the content encryption algorithm, which is not known until encrypting. + if size < 16 && !ctx.Bool("insecure") { + return errs.MinSizeInsecureFlag(ctx, "size", "16 bytes") + } + // GenerateJWK would treat a size of 0 as unset and use the default. + if size <= 0 { + return errs.MinSizeFlag(ctx, "size", "1 byte") } } default: diff --git a/command/crypto/jws/inspect.go b/command/crypto/jws/inspect.go index bae78663..1db76e8a 100644 --- a/command/crypto/jws/inspect.go +++ b/command/crypto/jws/inspect.go @@ -10,10 +10,12 @@ import ( "github.com/pkg/errors" "github.com/urfave/cli" - "github.com/smallstep/cli-utils/errs" "go.step.sm/crypto/jose" + "github.com/smallstep/cli-utils/errs" + "github.com/smallstep/cli/flags" + "github.com/smallstep/cli/internal/joseutil" "github.com/smallstep/cli/utils" ) @@ -54,7 +56,7 @@ func inspectAction(ctx *cli.Context) error { return err } - tok, err := jose.ParseJWS(token) + tok, err := joseutil.ParseSignedInsecure(token) if err != nil { return errors.Wrap(jose.TrimPrefix(err), "error parsing token") } diff --git a/command/crypto/jwt/inspect.go b/command/crypto/jwt/inspect.go index a6f68aac..a9b4da56 100644 --- a/command/crypto/jwt/inspect.go +++ b/command/crypto/jwt/inspect.go @@ -10,9 +10,11 @@ import ( "github.com/pkg/errors" "github.com/urfave/cli" - "github.com/smallstep/cli-utils/errs" "go.step.sm/crypto/jose" + "github.com/smallstep/cli-utils/errs" + + "github.com/smallstep/cli/internal/joseutil" "github.com/smallstep/cli/utils" ) @@ -55,7 +57,7 @@ func inspectAction(ctx *cli.Context) error { } func printToken(token string) error { - tok, err := jose.ParseJWS(token) + tok, err := joseutil.ParseSignedInsecure(token) if err != nil { return errors.Wrap(jose.TrimPrefix(err), "error parsing token") } diff --git a/flags/flags.go b/flags/flags.go index f767b21d..c589b317 100644 --- a/flags/flags.go +++ b/flags/flags.go @@ -13,9 +13,10 @@ import ( "github.com/urfave/cli" "github.com/smallstep/certificates/api" + "go.step.sm/crypto/fingerprint" + "github.com/smallstep/cli-utils/errs" "github.com/smallstep/cli-utils/step" - "go.step.sm/crypto/fingerprint" "github.com/smallstep/cli/utils" ) @@ -53,8 +54,8 @@ If unset, default is EC. // Size is the flag to set the key size. Size = cli.IntFlag{ Name: "size", - Usage: `The (in bits) of the key for RSA and oct key types. RSA keys require a -minimum key size of 2048 bits. If unset, default is 2048 bits for RSA keys and 128 bits for oct keys.`, + Usage: `The (in bits) of the key for RSA key types. RSA keys require a +minimum key size of 2048 bits. If unset, default is 2048 bits for RSA keys.`, } // Curve is the flag to se the key curve. diff --git a/go.mod b/go.mod index ddf6736b..3ed3e00c 100644 --- a/go.mod +++ b/go.mod @@ -71,7 +71,7 @@ require ( github.com/dustin/go-humanize v1.0.1 // indirect github.com/felixge/httpsnoop v1.1.0 // indirect github.com/go-chi/chi/v5 v5.5.0 // indirect - github.com/go-jose/go-jose/v4 v4.1.9 // indirect + github.com/go-jose/go-jose/v4 v4.1.9 github.com/go-logr/logr v1.4.4 // indirect github.com/go-logr/stdr v1.2.2 // indirect github.com/go-sql-driver/mysql v1.9.3 // indirect diff --git a/integration/crypto_test.go b/integration/crypto_test.go index 933041cd..878c7183 100644 --- a/integration/crypto_test.go +++ b/integration/crypto_test.go @@ -86,6 +86,7 @@ func TestCryptoJWKCreateOctCommand(t *testing.T) { Cmds: map[string]func(ts *testscript.TestScript, neg bool, args []string){ "check_jwk": checkKeyPair, "check_jwk_without_password": checkKeyPairWithoutPassword, + "check_oct_size": checkOctKeySize, }, }) } @@ -191,7 +192,7 @@ func TestCryptoJWTCommand(t *testing.T) { require.NoError(t, err) err = os.WriteFile(filepath.Join(e.Cd, "invalid-header-bad-json.txt"), []byte(createFakeToken(t, `{"kty":"EC","alg":"ES256","}`, parts[1], parts[2])), 0600) require.NoError(t, err) - err = os.WriteFile(filepath.Join(e.Cd, "invalid-payload.txt"), []byte(createFakeToken(t, parts[0], "foo", parts[2])), 0600) + err = os.WriteFile(filepath.Join(e.Cd, "invalid-payload.txt"), []byte(createTokenWithPayload(t, ed25519JWK, "foo")), 0600) require.NoError(t, err) // write tokens created by OpenSSL @@ -232,6 +233,24 @@ func TestCryptoJWTCommand(t *testing.T) { }) } +func TestCryptoJWSInspectCommand(t *testing.T) { + testscript.Run(t, testscript.Params{ + Files: []string{"testdata/crypto/jws-inspect.txtar"}, + }) +} + +func TestCryptoJOSEFormatCommand(t *testing.T) { + testscript.Run(t, testscript.Params{ + Files: []string{"testdata/crypto/jose-format.txtar"}, + }) +} + +func TestCryptoJWEEncryptCommand(t *testing.T) { + testscript.Run(t, testscript.Params{ + Files: []string{"testdata/crypto/jwe-encrypt.txtar"}, + }) +} + func TestCryptoKeyPair(t *testing.T) { testscript.Run(t, testscript.Params{ Files: []string{"testdata/crypto/keypair.txtar"}, @@ -346,6 +365,29 @@ func checkKeyPairWithoutPassword(ts *testscript.TestScript, _ bool, args []strin checkKeyDetails(ts, pub, priv, args) } +// checkOctKeySize checks that the password protected oct key in the file in the +// first argument has the size in bytes given in the second argument. +func checkOctKeySize(ts *testscript.TestScript, neg bool, args []string) { + if neg { + ts.Fatalf("unsupported: ! check_oct_size") + } + if len(args) != 2 { + ts.Fatalf("expected 2 arguments, got %d", len(args)) + } + + want, err := strconv.Atoi(args[1]) + ts.Check(err) + jwk, err := jose.ParseKey([]byte(ts.ReadFile(args[0])), jose.WithPassword([]byte("password"))) + ts.Check(err) + key, ok := jwk.Key.([]byte) + if !ok { + ts.Fatalf("expected key %s to be a byte slice; got %T", args[0], jwk.Key) + } + if len(key) != want { + ts.Fatalf("expected key %s to have %d bytes; got %d", args[0], want, len(key)) + } +} + // checkKeyDetails checks that the public/private key pair is valid. It performs // the following checks: // @@ -556,6 +598,25 @@ func generateJWK(t *testing.T, kty, crv string) (*jose.JSONWebKey, []byte) { return &jwk, b } +// createTokenWithPayload returns a token with a valid signature over the given +// payload, so that verification reaches the payload. +func createTokenWithPayload(t *testing.T, jwk *jose.JSONWebKey, payload string) string { + t.Helper() + + so := new(jose.SignerOptions).WithType("JWT").WithHeader("kid", jwk.KeyID) + signer, err := jose.NewSigner(jose.SigningKey{ + Algorithm: jose.SignatureAlgorithm(jwk.Algorithm), + Key: jwk.Key, + }, so) + require.NoError(t, err) + + jws, err := signer.Sign([]byte(payload)) + require.NoError(t, err) + raw, err := jws.CompactSerialize() + require.NoError(t, err) + return raw +} + func createFakeToken(t *testing.T, header, payload, signature string) string { t.Helper() diff --git a/integration/testdata/crypto/jose-format.txtar b/integration/testdata/crypto/jose-format.txtar new file mode 100644 index 00000000..56192985 --- /dev/null +++ b/integration/testdata/crypto/jose-format.txtar @@ -0,0 +1,114 @@ +# format token with none-nosig header, and back to compact +stdin none-nosig.txt +exec step crypto jose format +stdout '"protected":' +cp stdout none-nosig.json +stdin none-nosig.json +exec step crypto jose format +stdout '^eyJhbGciOiJub25lIn0.eyJzdWIiOiJ4In0.$' + + +# format token with none header, and back to compact +stdin none.txt +exec step crypto jose format +stdout '"protected":' +cp stdout none.json +stdin none.json +exec step crypto jose format +stdout '^eyJhbGciOiJub25lIn0.eyJzdWIiOiJ4In0.c2lnbmF0dXJl$' + + +# format token with es256k header, and back to compact +stdin es256k.txt +exec step crypto jose format +stdout '"protected":' +cp stdout es256k.json +stdin es256k.json +exec step crypto jose format +stdout '^eyJhbGciOiJFUzI1NksifQ.eyJzdWIiOiJ4In0.c2lnbmF0dXJl$' + + +# format token with unknown header, and back to compact +stdin unknown.txt +exec step crypto jose format +stdout '"protected":' +cp stdout unknown.json +stdin unknown.json +exec step crypto jose format +stdout '^eyJhbGciOiJGT08ifQ.eyJzdWIiOiJ4In0.c2lnbmF0dXJl$' + + +# format token with noalg header, and back to compact +stdin noalg.txt +exec step crypto jose format +stdout '"protected":' +cp stdout noalg.json +stdin noalg.json +exec step crypto jose format +stdout '^eyJ0eXAiOiJKV1QifQ.eyJzdWIiOiJ4In0.c2lnbmF0dXJl$' + + +# format fails for invalid token +exec echo foo +stdin stdout +! exec step crypto jose format +stderr 'error parsing data: compact JWS format must have three parts' + + +# format keeps the protected header of jws-order +stdin jws-order.txt +exec step crypto jose format +stdout '"protected":"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9"' +cp stdout jws-order.json +stdin jws-order.json +exec step crypto jose format +stdout '^eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJ4In0.c2lnbmF0dXJl$' + + +# format keeps the protected header of jwe-order +stdin jwe-order.txt +exec step crypto jose format +stdout '"protected":"eyJlbmMiOiJBMjU2R0NNIiwiYWxnIjoiQTI1NktXIn0"' +cp stdout jwe-order.json +stdin jwe-order.json +exec step crypto jose format +stdout '^eyJlbmMiOiJBMjU2R0NNIiwiYWxnIjoiQTI1NktXIn0.YWFhYWFhYWE.YWFhYWFhYWE.YWFhYWFhYWE.YWFhYWFhYWE$' + + +# format keeps the protected header of jwe-unknown-alg +stdin jwe-unknown-alg.txt +exec step crypto jose format +stdout '"protected":"eyJhbGciOiJGT08iLCJlbmMiOiJBMjU2R0NNIn0"' +cp stdout jwe-unknown-alg.json +stdin jwe-unknown-alg.json +exec step crypto jose format +stdout '^eyJhbGciOiJGT08iLCJlbmMiOiJBMjU2R0NNIn0.YWFhYWFhYWE.YWFhYWFhYWE.YWFhYWFhYWE.YWFhYWFhYWE$' + + +# format keeps the protected header of jwe-unknown-enc +stdin jwe-unknown-enc.txt +exec step crypto jose format +stdout '"protected":"eyJhbGciOiJBMjU2S1ciLCJlbmMiOiJCQVIifQ"' +cp stdout jwe-unknown-enc.json +stdin jwe-unknown-enc.json +exec step crypto jose format +stdout '^eyJhbGciOiJBMjU2S1ciLCJlbmMiOiJCQVIifQ.YWFhYWFhYWE.YWFhYWFhYWE.YWFhYWFhYWE.YWFhYWFhYWE$' + +-- none-nosig.txt -- +eyJhbGciOiJub25lIn0.eyJzdWIiOiJ4In0. +-- none.txt -- +eyJhbGciOiJub25lIn0.eyJzdWIiOiJ4In0.c2lnbmF0dXJl +-- es256k.txt -- +eyJhbGciOiJFUzI1NksifQ.eyJzdWIiOiJ4In0.c2lnbmF0dXJl +-- unknown.txt -- +eyJhbGciOiJGT08ifQ.eyJzdWIiOiJ4In0.c2lnbmF0dXJl +-- noalg.txt -- +eyJ0eXAiOiJKV1QifQ.eyJzdWIiOiJ4In0.c2lnbmF0dXJl +-- jws-order.txt -- +eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJ4In0.c2lnbmF0dXJl +-- jwe-order.txt -- +eyJlbmMiOiJBMjU2R0NNIiwiYWxnIjoiQTI1NktXIn0.YWFhYWFhYWE.YWFhYWFhYWE.YWFhYWFhYWE.YWFhYWFhYWE +-- jwe-unknown-alg.txt -- +eyJhbGciOiJGT08iLCJlbmMiOiJBMjU2R0NNIn0.YWFhYWFhYWE.YWFhYWFhYWE.YWFhYWFhYWE.YWFhYWFhYWE +-- jwe-unknown-enc.txt -- +eyJhbGciOiJBMjU2S1ciLCJlbmMiOiJCQVIifQ.YWFhYWFhYWE.YWFhYWFhYWE.YWFhYWFhYWE.YWFhYWFhYWE diff --git a/integration/testdata/crypto/jwe-encrypt.txtar b/integration/testdata/crypto/jwe-encrypt.txtar new file mode 100644 index 00000000..c366c70c --- /dev/null +++ b/integration/testdata/crypto/jwe-encrypt.txtar @@ -0,0 +1,193 @@ +# oct A128KW round trip +exec step crypto jwk create --no-password --insecure --kty oct --use enc --alg A128KW a128kw.pub a128kw.priv +stdin secret.txt +exec step crypto jwe encrypt --key a128kw.priv --enc A256GCM +cp stdout a128kw.jwe +stdin a128kw.jwe +exec step crypto jwe decrypt --key a128kw.priv +stdout '^secret$' + +stdin secret.txt +exec step crypto jwe encrypt --key a128kw.pub --enc A256GCM +cp stdout a128kw-pub.jwe +stdin a128kw-pub.jwe +exec step crypto jwe decrypt --key a128kw.priv +stdout '^secret$' + + +# oct A192KW round trip +exec step crypto jwk create --no-password --insecure --kty oct --use enc --alg A192KW a192kw.pub a192kw.priv +stdin secret.txt +exec step crypto jwe encrypt --key a192kw.priv --enc A256GCM +cp stdout a192kw.jwe +stdin a192kw.jwe +exec step crypto jwe decrypt --key a192kw.priv +stdout '^secret$' + +stdin secret.txt +exec step crypto jwe encrypt --key a192kw.pub --enc A256GCM +cp stdout a192kw-pub.jwe +stdin a192kw-pub.jwe +exec step crypto jwe decrypt --key a192kw.priv +stdout '^secret$' + + +# oct A256KW round trip +exec step crypto jwk create --no-password --insecure --kty oct --use enc --alg A256KW a256kw.pub a256kw.priv +stdin secret.txt +exec step crypto jwe encrypt --key a256kw.priv --enc A256GCM +cp stdout a256kw.jwe +stdin a256kw.jwe +exec step crypto jwe decrypt --key a256kw.priv +stdout '^secret$' + +stdin secret.txt +exec step crypto jwe encrypt --key a256kw.pub --enc A256GCM +cp stdout a256kw-pub.jwe +stdin a256kw-pub.jwe +exec step crypto jwe decrypt --key a256kw.priv +stdout '^secret$' + + +# oct A128GCMKW round trip +exec step crypto jwk create --no-password --insecure --kty oct --use enc --alg A128GCMKW a128gcmkw.pub a128gcmkw.priv +stdin secret.txt +exec step crypto jwe encrypt --key a128gcmkw.priv --enc A256GCM +cp stdout a128gcmkw.jwe +stdin a128gcmkw.jwe +exec step crypto jwe decrypt --key a128gcmkw.priv +stdout '^secret$' + +stdin secret.txt +exec step crypto jwe encrypt --key a128gcmkw.pub --enc A256GCM +cp stdout a128gcmkw-pub.jwe +stdin a128gcmkw-pub.jwe +exec step crypto jwe decrypt --key a128gcmkw.priv +stdout '^secret$' + + +# oct A192GCMKW round trip +exec step crypto jwk create --no-password --insecure --kty oct --use enc --alg A192GCMKW a192gcmkw.pub a192gcmkw.priv +stdin secret.txt +exec step crypto jwe encrypt --key a192gcmkw.priv --enc A256GCM +cp stdout a192gcmkw.jwe +stdin a192gcmkw.jwe +exec step crypto jwe decrypt --key a192gcmkw.priv +stdout '^secret$' + +stdin secret.txt +exec step crypto jwe encrypt --key a192gcmkw.pub --enc A256GCM +cp stdout a192gcmkw-pub.jwe +stdin a192gcmkw-pub.jwe +exec step crypto jwe decrypt --key a192gcmkw.priv +stdout '^secret$' + + +# oct A256GCMKW round trip +exec step crypto jwk create --no-password --insecure --kty oct --use enc --alg A256GCMKW a256gcmkw.pub a256gcmkw.priv +stdin secret.txt +exec step crypto jwe encrypt --key a256gcmkw.priv --enc A256GCM +cp stdout a256gcmkw.jwe +stdin a256gcmkw.jwe +exec step crypto jwe decrypt --key a256gcmkw.priv +stdout '^secret$' + +stdin secret.txt +exec step crypto jwe encrypt --key a256gcmkw.pub --enc A256GCM +cp stdout a256gcmkw-pub.jwe +stdin a256gcmkw-pub.jwe +exec step crypto jwe decrypt --key a256gcmkw.priv +stdout '^secret$' + + +# oct dir round trip +exec step crypto jwk create --no-password --insecure --kty oct --use enc --alg dir dir.pub dir.priv +stdin secret.txt +exec step crypto jwe encrypt --key dir.priv --enc A256GCM +cp stdout dir.jwe +stdin dir.jwe +exec step crypto jwe decrypt --key dir.priv +stdout '^secret$' + +stdin secret.txt +exec step crypto jwe encrypt --key dir.pub --enc A256GCM +cp stdout dir-pub.jwe +stdin dir-pub.jwe +exec step crypto jwe decrypt --key dir.priv +stdout '^secret$' + + +# oct default algorithm round trip +exec step crypto jwk create --no-password --insecure --kty oct --use enc default.pub default.priv +stdin secret.txt +exec step crypto jwe encrypt --key default.priv +cp stdout default.jwe +stdin default.jwe +exec step crypto jwe decrypt --key default.priv +stdout '^secret$' + + +# oct round trip with a key set +stdin secret.txt +exec step crypto jwe encrypt --jwks oct-set.json --kid k1 +cp stdout jwks.jwe +stdin jwks.jwe +exec step crypto jwe decrypt --jwks oct-set.json --kid k1 +stdout '^secret$' + + +# RSA round trip uses the public key +exec step crypto jwk create --no-password --insecure --kty RSA --use enc --alg RSA-OAEP-256 rsa.pub rsa.priv +stdin secret.txt +exec step crypto jwe encrypt --key rsa.priv +cp stdout rsa.jwe +stdin rsa.jwe +exec step crypto jwe decrypt --key rsa.priv +stdout '^secret$' + +stdin secret.txt +exec step crypto jwe encrypt --key rsa.pub +cp stdout rsa-pub.jwe +stdin rsa-pub.jwe +exec step crypto jwe decrypt --key rsa.priv +stdout '^secret$' + + +# EC round trip uses the public key +exec step crypto jwk create --no-password --insecure --kty EC --use enc --alg ECDH-ES ec.pub ec.priv +stdin secret.txt +exec step crypto jwe encrypt --key ec.priv +cp stdout ec.jwe +stdin ec.jwe +exec step crypto jwe decrypt --key ec.priv +stdout '^secret$' + + +# oct key does not leak in the output +stdin secret.txt +exec step crypto jwe encrypt --key leak.json +! stdout '"k"' +! stdout 'AAECAwQFBgcICQoLDA0ODw' + + +# oct key with the wrong size for its algorithm fails +stdin secret.txt +! exec step crypto jwe encrypt --key mismatch.json +stderr 'alg ''A128KW'' requires a key of 16 bytes' + + +# oct key for signatures fails +stdin secret.txt +! exec step crypto jwe encrypt --key sig.json +stderr 'invalid jwk use: found ''sig'' \(signature\), expecting ''enc'' \(encryption\)' + +-- secret.txt -- +secret +-- leak.json -- +{"kty":"oct","alg":"A128KW","use":"enc","k":"AAECAwQFBgcICQoLDA0ODw"} +-- mismatch.json -- +{"kty":"oct","alg":"A128KW","use":"enc","k":"AAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHh8"} +-- sig.json -- +{"kty":"oct","alg":"HS256","use":"sig","k":"AAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHh8"} +-- oct-set.json -- +{"keys":[{"kty":"oct","alg":"A256KW","use":"enc","kid":"k1","k":"AAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHh8"}]} diff --git a/integration/testdata/crypto/jwk-create-oct.txtar b/integration/testdata/crypto/jwk-create-oct.txtar index 82103157..29c415b7 100644 --- a/integration/testdata/crypto/jwk-create-oct.txtar +++ b/integration/testdata/crypto/jwk-create-oct.txtar @@ -3,24 +3,78 @@ exec step crypto jwk create --password-file password.txt --kty oct oct-defaults. check_jwk oct-defaults.pub oct-defaults.priv oct HS256 +# oct default sizes +check_oct_size oct-defaults.priv 32 + +exec step crypto jwk create --password-file password.txt --kty oct --use enc oct-default-enc.pub oct-default-enc.priv +check_jwk oct-default-enc.pub oct-default-enc.priv oct A256GCMKW +check_oct_size oct-default-enc.priv 32 + +exec step crypto jwk create --password-file password.txt --kty oct --alg HS384 oct-default-hs384.pub oct-default-hs384.priv +check_jwk oct-default-hs384.pub oct-default-hs384.priv oct HS384 +check_oct_size oct-default-hs384.priv 48 + +exec step crypto jwk create --password-file password.txt --kty oct --alg HS512 oct-default-hs512.pub oct-default-hs512.priv +check_jwk oct-default-hs512.pub oct-default-hs512.priv oct HS512 +check_oct_size oct-default-hs512.priv 64 + +exec step crypto jwk create --password-file password.txt --kty oct --alg A128KW --use enc oct-default-a128kw.pub oct-default-a128kw.priv +check_jwk oct-default-a128kw.pub oct-default-a128kw.priv oct A128KW +check_oct_size oct-default-a128kw.priv 16 + +exec step crypto jwk create --password-file password.txt --kty oct --alg A192GCMKW --use enc oct-default-a192gcmkw.pub oct-default-a192gcmkw.priv +check_jwk oct-default-a192gcmkw.pub oct-default-a192gcmkw.priv oct A192GCMKW +check_oct_size oct-default-a192gcmkw.priv 24 + +exec step crypto jwk create --password-file password.txt --kty oct --alg dir --use enc oct-default-dir.pub oct-default-dir.priv +check_jwk oct-default-dir.pub oct-default-dir.priv oct dir +check_oct_size oct-default-dir.priv 32 + + +# oct has no default kid +! grep '"kid"' oct-defaults.pub + + +# oct with kid +exec step crypto jwk create --password-file password.txt --kty oct --kid foo oct-kid.pub oct-kid.priv +check_jwk oct-kid.pub oct-kid.priv oct HS256 +grep '"kid": "foo"' oct-kid.pub + + +# oct algorithm without a defined size too small +! exec step crypto jwk create --password-file password.txt --kty oct --alg foo --use foo --size 15 fail.pub fail.priv +stderr 'flag ''--size'' requires at least 16 bytes unless ''--insecure'' flag is provided' + + +# oct size checks do not set the algorithm of a PEM key +exec step crypto keypair --no-password --insecure --kty RSA rsa.pub rsa.pem +! exec step crypto jwk create --password-file password.txt --from-pem rsa.pem --kty oct --size 32 fail.pub fail.priv +stderr 'flag ''--alg'' is required with the given key' + + # oct too small ! exec step crypto jwk create --password-file password.txt --size 4 --kty oct fail.pub fail.priv -stderr 'flag ''--size'' must be greater than or equal to 32' +stderr 'flag ''--size'' must be greater than or equal to 32 bytes' + + +# oct custom use too small +! exec step crypto jwk create --password-file password.txt --size 4 --kty oct --use foo fail.pub fail.priv +stderr 'flag ''--size'' must be greater than or equal to 32 bytes' # oct HS256 too small ! exec step crypto jwk create --password-file password.txt --size 31 --kty oct --alg HS256 fail.pub fail.priv -stderr 'flag ''--size'' must be greater than or equal to 32' +stderr 'flag ''--size'' must be greater than or equal to 32 bytes' # oct HS384 too small ! exec step crypto jwk create --password-file password.txt --size 47 --kty oct --alg HS384 fail.pub fail.priv -stderr 'flag ''--size'' must be greater than or equal to 48' +stderr 'flag ''--size'' must be greater than or equal to 48 bytes' # oct HS512 too small ! exec step crypto jwk create --password-file password.txt --size 63 --kty oct --alg HS512 fail.pub fail.priv -stderr 'flag ''--size'' must be greater than or equal to 64' +stderr 'flag ''--size'' must be greater than or equal to 64 bytes' # oct HS256 min size @@ -63,6 +117,41 @@ exec step crypto jwk create --password-file password.txt --kty oct --alg dir --s check_jwk oct-enc-dir.pub oct-enc-dir.priv oct dir +# oct enc dir min size +exec step crypto jwk create --password-file password.txt --kty oct --alg dir --size 16 --use enc oct-enc-dir-16.pub oct-enc-dir-16.priv +check_jwk oct-enc-dir-16.pub oct-enc-dir-16.priv oct dir + + +# oct enc dir too small +! exec step crypto jwk create --password-file password.txt --kty oct --alg dir --size 15 --use enc fail.pub fail.priv +stderr 'flag ''--size'' requires at least 16 bytes unless ''--insecure'' flag is provided' + + +# oct enc dir too small with insecure +exec step crypto jwk create --password-file password.txt --insecure --kty oct --alg dir --size 15 --use enc oct-enc-dir-15.pub oct-enc-dir-15.priv +check_jwk oct-enc-dir-15.pub oct-enc-dir-15.priv oct dir + + +# oct enc dir negative size +! exec step crypto jwk create --password-file password.txt --kty oct --alg dir --size -1 --use enc fail.pub fail.priv +stderr 'flag ''--size'' requires at least 16 bytes unless ''--insecure'' flag is provided' + + +# oct enc dir negative size with insecure +! exec step crypto jwk create --password-file password.txt --insecure --kty oct --alg dir --size -1 --use enc fail.pub fail.priv +stderr 'flag ''--size'' must be greater than or equal to 1 byte' + + +# oct enc dir zero size +! exec step crypto jwk create --password-file password.txt --kty oct --alg dir --size 0 --use enc fail.pub fail.priv +stderr 'flag ''--size'' requires at least 16 bytes unless ''--insecure'' flag is provided' + + +# oct enc dir zero size with insecure +! exec step crypto jwk create --password-file password.txt --insecure --kty oct --alg dir --size 0 --use enc fail.pub fail.priv +stderr 'flag ''--size'' must be greater than or equal to 1 byte' + + # oct A128KW exec step crypto jwk create --password-file password.txt --kty oct --alg A128KW --size 16 --use enc oct-a128kw.pub oct-a128kw.priv check_jwk oct-a128kw.pub oct-a128kw.priv oct A128KW @@ -95,32 +184,32 @@ check_jwk oct-a256gcmkw.pub oct-a256gcmkw.priv oct A256GCMKW # oct A128KW fail ! exec step crypto jwk create --password-file password.txt --kty oct --alg A128KW --size 32 --use enc fail.pub fail.priv -stderr 'flag ''--size'' must be equal to 16' +stderr 'flag ''--size'' must be equal to 16 bytes' # oct A192KW fail ! exec step crypto jwk create --password-file password.txt --kty oct --alg A192KW --size 48 --use enc fail.pub fail.priv -stderr 'flag ''--size'' must be equal to 24' +stderr 'flag ''--size'' must be equal to 24 bytes' # oct A256KW fail ! exec step crypto jwk create --password-file password.txt --kty oct --alg A256KW --size 64 --use enc fail.pub fail.priv -stderr 'flag ''--size'' must be equal to 32' +stderr 'flag ''--size'' must be equal to 32 bytes' # oct A128GCMKW fail ! exec step crypto jwk create --password-file password.txt --kty oct --alg A128GCMKW --size 32 --use enc fail.pub fail.priv -stderr 'flag ''--size'' must be equal to 16' +stderr 'flag ''--size'' must be equal to 16 bytes' # oct A192GCMKW fail ! exec step crypto jwk create --password-file password.txt --kty oct --alg A192GCMKW --size 48 --use enc fail.pub fail.priv -stderr 'flag ''--size'' must be equal to 24' +stderr 'flag ''--size'' must be equal to 24 bytes' # oct A256GCMKW fail ! exec step crypto jwk create --password-file password.txt --kty oct --alg A256GCMKW --size 64 --use enc fail.pub fail.priv -stderr 'flag ''--size'' must be equal to 32' +stderr 'flag ''--size'' must be equal to 32 bytes' # oct with RSA algorithm fails diff --git a/integration/testdata/crypto/jwk-create-rsa.txtar b/integration/testdata/crypto/jwk-create-rsa.txtar index ad2e0f17..56c143f2 100644 --- a/integration/testdata/crypto/jwk-create-rsa.txtar +++ b/integration/testdata/crypto/jwk-create-rsa.txtar @@ -60,7 +60,7 @@ stderr 'the size of the RSA key should be at least 2048 bits' # RSA 0, PS256 ! exec step crypto jwk create --password-file password.txt --kty RSA --size 0 --alg PS256 --insecure fail.pub fail.priv -stderr 'flag ''--size'' must be greater than or equal to 0' +stderr 'flag ''--size'' must be greater than or equal to 1$' # RSA 2048, bad alg diff --git a/integration/testdata/crypto/jws-inspect.txtar b/integration/testdata/crypto/jws-inspect.txtar new file mode 100644 index 00000000..02ce008a --- /dev/null +++ b/integration/testdata/crypto/jws-inspect.txtar @@ -0,0 +1,84 @@ +# inspect token with none-nosig header +stdin none-nosig.txt +exec step crypto jws inspect --insecure +stdout '"sub":"x"' + +stdin none-nosig.txt +exec step crypto jws inspect --insecure --json +stdout '"alg": "none"' + + +# inspect token with none header +stdin none.txt +exec step crypto jws inspect --insecure +stdout '"sub":"x"' + +stdin none.txt +exec step crypto jws inspect --insecure --json +stdout '"alg": "none"' + + +# inspect token with es256k header +stdin es256k.txt +exec step crypto jws inspect --insecure +stdout '"sub":"x"' + +stdin es256k.txt +exec step crypto jws inspect --insecure --json +stdout '"alg": "ES256K"' + + +# inspect token with unknown header +stdin unknown.txt +exec step crypto jws inspect --insecure +stdout '"sub":"x"' + +stdin unknown.txt +exec step crypto jws inspect --insecure --json +stdout '"alg": "FOO"' + + +# inspect token with noalg header +stdin noalg.txt +exec step crypto jws inspect --insecure +stdout '"sub":"x"' + +stdin noalg.txt +exec step crypto jws inspect --insecure --json +stdout '"typ": "JWT"' + + +# inspect fails for invalid token +exec echo foo +stdin stdout +! exec step crypto jws inspect --insecure +stderr 'error parsing token: compact JWS format must have three parts' + + +# verify keeps rejecting algorithms that are not allowed +exec step crypto jwk create --no-password --insecure --kty EC key.pub key.priv + +stdin none.txt +! exec step crypto jws verify --key key.pub +stderr 'error parsing token: unexpected signature algorithm "none"' + +stdin es256k.txt +! exec step crypto jws verify --key key.pub +stderr 'error parsing token: unexpected signature algorithm "ES256K"' + + +# jwt verify keeps rejecting algorithms that are not allowed +stdin none.txt +! exec step crypto jwt verify --key key.pub --iss a --aud b +stderr 'error parsing token: unexpected signature algorithm "none"' + +-- none-nosig.txt -- +eyJhbGciOiJub25lIn0.eyJzdWIiOiJ4In0. +-- none.txt -- +eyJhbGciOiJub25lIn0.eyJzdWIiOiJ4In0.c2lnbmF0dXJl +-- es256k.txt -- +eyJhbGciOiJFUzI1NksifQ.eyJzdWIiOiJ4In0.c2lnbmF0dXJl +-- unknown.txt -- +eyJhbGciOiJGT08ifQ.eyJzdWIiOiJ4In0.c2lnbmF0dXJl +-- noalg.txt -- +eyJ0eXAiOiJKV1QifQ.eyJzdWIiOiJ4In0.c2lnbmF0dXJl diff --git a/integration/testdata/crypto/jwt-inspect.txtar b/integration/testdata/crypto/jwt-inspect.txtar index 34e2241a..30aee410 100644 --- a/integration/testdata/crypto/jwt-inspect.txtar +++ b/integration/testdata/crypto/jwt-inspect.txtar @@ -13,4 +13,45 @@ stderr '''step crypto jwt inspect'' requires the ''--insecure'' flag' exec echo foo stdin stdout ! exec step crypto jwt inspect --insecure -stderr 'error parsing token: compact JWS format must have three parts' \ No newline at end of file +stderr 'error parsing token: compact JWS format must have three parts' + +# inspect token with none-nosig header +stdin none-nosig.txt +exec step crypto jwt inspect --insecure +stdout '"alg": "none"' +stdout '"sub": "x"' + +# inspect token with none header +stdin none.txt +exec step crypto jwt inspect --insecure +stdout '"alg": "none"' +stdout '"sub": "x"' + +# inspect token with es256k header +stdin es256k.txt +exec step crypto jwt inspect --insecure +stdout '"alg": "ES256K"' +stdout '"sub": "x"' + +# inspect token with unknown header +stdin unknown.txt +exec step crypto jwt inspect --insecure +stdout '"alg": "FOO"' +stdout '"sub": "x"' + +# inspect token with noalg header +stdin noalg.txt +exec step crypto jwt inspect --insecure +stdout '"typ": "JWT"' +stdout '"sub": "x"' + +-- none-nosig.txt -- +eyJhbGciOiJub25lIn0.eyJzdWIiOiJ4In0. +-- none.txt -- +eyJhbGciOiJub25lIn0.eyJzdWIiOiJ4In0.c2lnbmF0dXJl +-- es256k.txt -- +eyJhbGciOiJFUzI1NksifQ.eyJzdWIiOiJ4In0.c2lnbmF0dXJl +-- unknown.txt -- +eyJhbGciOiJGT08ifQ.eyJzdWIiOiJ4In0.c2lnbmF0dXJl +-- noalg.txt -- +eyJ0eXAiOiJKV1QifQ.eyJzdWIiOiJ4In0.c2lnbmF0dXJl diff --git a/integration/testdata/crypto/jwt-verify.txtar b/integration/testdata/crypto/jwt-verify.txtar index da7a0fd0..7cc7dfd4 100644 --- a/integration/testdata/crypto/jwt-verify.txtar +++ b/integration/testdata/crypto/jwt-verify.txtar @@ -82,7 +82,7 @@ stderr 'error parsing token: invalid protected header' # Ed25519 verification fails with invalid payload stdin invalid-payload.txt ! exec step crypto jwt verify -key ed25519.json -iss TestIssuer -aud TestAudience -stderr 'error parsing token: invalid protected header' +stderr 'claim verify failed' # Verify with JWKS and KID 1 diff --git a/integration/testdata/crypto/keypair.txtar b/integration/testdata/crypto/keypair.txtar index fcaf65f6..4d6f1cdf 100644 --- a/integration/testdata/crypto/keypair.txtar +++ b/integration/testdata/crypto/keypair.txtar @@ -64,7 +64,7 @@ stderr 'flag ''--size'' requires at least 2048 unless ''--insecure'' flag is pro # RSA negative size ! exec step crypto keypair --kty RSA --size -1 --insecure rsa-error.pub rsa-error.priv -stderr 'flag ''--size'' must be greater than or equal to 0' +stderr 'flag ''--size'' must be greater than or equal to 1$' # RSA size 16 with insecure flag diff --git a/internal/joseutil/joseutil.go b/internal/joseutil/joseutil.go new file mode 100644 index 00000000..00eca4ee --- /dev/null +++ b/internal/joseutil/joseutil.go @@ -0,0 +1,143 @@ +// Package joseutil contains helpers for parsing JOSE objects. +package joseutil + +import ( + "encoding/base64" + "encoding/json" + "strings" + "unicode" + + jose "github.com/go-jose/go-jose/v4" +) + +// ParseSignedInsecure parses a JWS in compact or JSON serialization format +// accepting any signature algorithm, including none, unknown, or missing ones. It +// does not verify the signature. +// +// It is meant for commands that only display a token, which must be able to show +// tokens that go.step.sm/crypto/jose.ParseJWS rejects. Only the algorithm check +// is relaxed, go-jose still rejects other invalid headers, like an embedded key +// that it does not support. Do not use it to parse a token that will be verified. +func ParseSignedInsecure(s string) (*jose.JSONWebSignature, error) { + s = stripWhitespace(s) + if strings.HasPrefix(s, "{") { + return jose.ParseSignedJSON(s, signedJSONAlgorithms(s)) + } + protected, _, _ := strings.Cut(s, ".") + return jose.ParseSignedCompact(s, []jose.SignatureAlgorithm{ + "", jose.SignatureAlgorithm(protectedField(protected, "alg")), + }) +} + +// ParseEncryptedInsecure parses a JWE in compact or JSON serialization format +// accepting any key and content encryption algorithm, including unknown ones. +// They must still be present. It does not decrypt the content. +// +// It is meant for commands that only display a token, which must be able to show +// tokens that go.step.sm/crypto/jose.ParseEncrypted rejects. Only the algorithm +// checks are relaxed, see ParseSignedInsecure. Do not use it to parse a token that +// will be decrypted. +func ParseEncryptedInsecure(s string) (*jose.JSONWebEncryption, error) { + s = stripWhitespace(s) + headers := encryptedHeaders(s) + + // go-jose requires non-empty lists, and it reports missing headers itself. + keyAlgorithms := []jose.KeyAlgorithm{""} + contentEncryption := []jose.ContentEncryption{""} + for _, header := range headers { + keyAlgorithms = append(keyAlgorithms, jose.KeyAlgorithm(headerField(header, "alg"))) + contentEncryption = append(contentEncryption, jose.ContentEncryption(headerField(header, "enc"))) + } + if strings.HasPrefix(s, "{") { + return jose.ParseEncryptedJSON(s, keyAlgorithms, contentEncryption) + } + return jose.ParseEncryptedCompact(s, keyAlgorithms, contentEncryption) +} + +// signedJSONAlgorithms returns the algorithms that the given JWS in JSON +// serialization format declares. Parsing problems are ignored, as go-jose will +// report them. The result always includes the empty algorithm, which is the one +// go-jose reads when a header does not have an alg. +func signedJSONAlgorithms(s string) []jose.SignatureAlgorithm { + type signature struct { + Protected string `json:"protected"` + Header json.RawMessage `json:"header"` + } + var jws struct { + signature + Signatures []signature `json:"signatures"` + } + algs := []jose.SignatureAlgorithm{""} + if err := json.Unmarshal([]byte(s), &jws); err != nil { + return algs + } + for _, sig := range append(jws.Signatures, jws.signature) { + algs = append(algs, + jose.SignatureAlgorithm(protectedField(sig.Protected, "alg")), + jose.SignatureAlgorithm(headerField(sig.Header, "alg")), + ) + } + return algs +} + +// encryptedHeaders returns the JSON headers of the given JWE. Parsing problems +// are ignored, as go-jose will report them. +func encryptedHeaders(s string) [][]byte { + if !strings.HasPrefix(s, "{") { + protected, _, _ := strings.Cut(s, ".") + return [][]byte{decodeProtected(protected)} + } + + var jwe struct { + Protected string `json:"protected"` + Unprotected json.RawMessage `json:"unprotected"` + Header json.RawMessage `json:"header"` + Recipients []struct { + Header json.RawMessage `json:"header"` + } `json:"recipients"` + } + if err := json.Unmarshal([]byte(s), &jwe); err != nil { + return nil + } + headers := [][]byte{decodeProtected(jwe.Protected), jwe.Unprotected, jwe.Header} + for _, recipient := range jwe.Recipients { + headers = append(headers, recipient.Header) + } + return headers +} + +// decodeProtected returns the JSON of a base64url encoded protected header, or +// nil if it cannot be decoded. +func decodeProtected(protected string) []byte { + header, err := base64.RawURLEncoding.DecodeString(strings.TrimRight(protected, "=")) + if err != nil { + return nil + } + return header +} + +// protectedField returns a string field of a base64url encoded protected header, +// or an empty string if it does not have one. +func protectedField(protected, name string) string { + return headerField(decodeProtected(protected), name) +} + +// headerField returns a string field of a JSON header, or an empty string if it +// does not have one. +func headerField(header []byte, name string) string { + var fields map[string]any + if err := json.Unmarshal(header, &fields); err != nil { + return "" + } + value, _ := fields[name].(string) + return value +} + +func stripWhitespace(s string) string { + return strings.Map(func(r rune) rune { + if unicode.IsSpace(r) { + return -1 + } + return r + }, s) +} diff --git a/internal/joseutil/joseutil_test.go b/internal/joseutil/joseutil_test.go new file mode 100644 index 00000000..8348a900 --- /dev/null +++ b/internal/joseutil/joseutil_test.go @@ -0,0 +1,170 @@ +package joseutil + +import ( + "encoding/base64" + "testing" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" +) + +func b64(s string) string { + return base64.RawURLEncoding.EncodeToString([]byte(s)) +} + +func TestParseSignedInsecure(t *testing.T) { + payload := b64(`{"sub":"x"}`) + sig := b64("signature") + compact := func(header string) string { + return b64(header) + "." + payload + "." + sig + } + + tests := []struct { + name string + token string + want []string + }{ + {"supported alg", compact(`{"alg":"ES256"}`), []string{"ES256"}}, + {"none", compact(`{"alg":"none"}`), []string{"none"}}, + {"none without signature", b64(`{"alg":"none"}`) + "." + payload + ".", []string{"none"}}, + {"not allow-listed alg", compact(`{"alg":"ES256K"}`), []string{"ES256K"}}, + {"unknown alg", compact(`{"alg":"FOO"}`), []string{"FOO"}}, + {"no alg", compact(`{"typ":"JWT"}`), []string{""}}, + {"null alg", compact(`{"alg":null}`), []string{""}}, + {"whitespace", " " + compact(`{"alg":"none"}`) + "\n", []string{"none"}}, + { + "flattened JSON", + `{"payload":"` + payload + `","protected":"` + b64(`{"alg":"none"}`) + `","signature":"` + sig + `"}`, + []string{"none"}, + }, + { + "flattened JSON with alg in the unprotected header", + `{"payload":"` + payload + `","protected":"` + b64(`{"typ":"JWT"}`) + `","header":{"alg":"FOO"},"signature":"` + sig + `"}`, + []string{"FOO"}, + }, + { + "general JSON with multiple signatures", + `{"payload":"` + payload + `","signatures":[` + + `{"protected":"` + b64(`{"alg":"none"}`) + `","signature":"` + sig + `"},` + + `{"protected":"` + b64(`{"alg":"ES256K"}`) + `","signature":"` + sig + `"},` + + `{"protected":"` + b64(`{"typ":"JWT"}`) + `","header":{"alg":"FOO"},"signature":"` + sig + `"}]}`, + []string{"none", "ES256K", "FOO"}, + }, + } + for _, tc := range tests { + t.Run(tc.name, func(t *testing.T) { + tok, err := ParseSignedInsecure(tc.token) + require.NoError(t, err) + + got := make([]string, len(tok.Signatures)) + for i := range tok.Signatures { + got[i] = tok.Signatures[i].Header.Algorithm + } + assert.Equal(t, tc.want, got) + assert.JSONEq(t, `{"sub":"x"}`, string(tok.UnsafePayloadWithoutVerification())) + }) + } +} + +func TestParseSignedInsecure_errors(t *testing.T) { + tests := []struct { + name string + token string + wantErr string + }{ + {"not a token", "foo", "compact JWS format must have three parts"}, + {"invalid header encoding", "!!!." + b64("{}") + ".", "illegal base64 data"}, + {"invalid header JSON", b64("foo") + "." + b64("{}") + ".", "invalid protected header"}, + {"alg is not a string", b64(`{"alg":42}`) + "." + b64("{}") + ".", "failed to unmarshal algorithm"}, + {"invalid JSON", `{"payload":`, "unexpected end of JSON input"}, + } + for _, tc := range tests { + t.Run(tc.name, func(t *testing.T) { + _, err := ParseSignedInsecure(tc.token) + assert.ErrorContains(t, err, tc.wantErr) + }) + } +} + +func TestParseSignedInsecure_jsonWithoutSignature(t *testing.T) { + tok, err := ParseSignedInsecure(`{"payload":"` + b64(`{"sub":"x"}`) + `"}`) + require.NoError(t, err) + assert.JSONEq(t, `{"sub":"x"}`, string(tok.UnsafePayloadWithoutVerification())) +} + +// The result of ParseSignedInsecure must not make it possible to accept a token +// without a valid signature. +func TestParseSignedInsecure_doesNotVerify(t *testing.T) { + tok, err := ParseSignedInsecure(b64(`{"alg":"none"}`) + "." + b64(`{"sub":"x"}`) + ".") + require.NoError(t, err) + + _, err = tok.Verify([]byte("a-key-that-does-not-sign-this-token")) + assert.Error(t, err) +} + +func TestParseEncryptedInsecure(t *testing.T) { + part := b64("aaaaaaaa") + rest := "." + part + "." + part + "." + part + "." + part + jsonRest := `"iv":"` + part + `","ciphertext":"` + part + `","tag":"` + part + `"` + + tests := []struct { + name string + token string + wantAlg string + wantEnc string + }{ + {"supported", b64(`{"alg":"A256KW","enc":"A256GCM"}`) + rest, "A256KW", "A256GCM"}, + {"unknown alg", b64(`{"alg":"FOO","enc":"A256GCM"}`) + rest, "FOO", "A256GCM"}, + {"unknown enc", b64(`{"alg":"A256KW","enc":"BAR"}`) + rest, "A256KW", "BAR"}, + {"whitespace", " " + b64(`{"alg":"FOO","enc":"BAR"}`) + rest + "\n", "FOO", "BAR"}, + { + "flattened JSON", + `{"protected":"` + b64(`{"alg":"FOO","enc":"BAR"}`) + `","encrypted_key":"` + part + `",` + jsonRest + `}`, + "FOO", "BAR", + }, + { + "flattened JSON with shared unprotected header", + `{"protected":"` + b64(`{"typ":"JWT"}`) + `","unprotected":{"alg":"FOO","enc":"BAR"},"encrypted_key":"` + part + `",` + jsonRest + `}`, + "FOO", "BAR", + }, + { + "flattened JSON with per-recipient header", + `{"protected":"` + b64(`{"enc":"BAR"}`) + `","header":{"alg":"FOO"},"encrypted_key":"` + part + `",` + jsonRest + `}`, + "", "BAR", + }, + { + "general JSON with multiple recipients", + `{"protected":"` + b64(`{"enc":"BAR"}`) + `","recipients":[` + + `{"header":{"alg":"FOO"},"encrypted_key":"` + part + `"},` + + `{"header":{"alg":"BAZ"},"encrypted_key":"` + part + `"}],` + jsonRest + `}`, + "", "BAR", + }, + } + for _, tc := range tests { + t.Run(tc.name, func(t *testing.T) { + tok, err := ParseEncryptedInsecure(tc.token) + require.NoError(t, err) + assert.Equal(t, tc.wantAlg, tok.Header.Algorithm) + assert.Equal(t, tc.wantEnc, tok.Header.ExtraHeaders["enc"]) + }) + } +} + +func TestParseEncryptedInsecure_errors(t *testing.T) { + _, err := ParseEncryptedInsecure("foo") + assert.Error(t, err) + + part := b64("aaaaaaaa") + rest := "." + part + "." + part + "." + part + "." + part + _, err = ParseEncryptedInsecure(b64(`{"enc":"A256GCM"}`) + rest) + assert.ErrorContains(t, err, `missing header "alg"`) + + _, err = ParseEncryptedInsecure(b64(`{"alg":"A256KW"}`) + rest) + assert.ErrorContains(t, err, `missing header "enc"`) + + _, err = ParseEncryptedInsecure(b64(`{"alg":"none"}`) + "." + b64("{}") + ".") + assert.Error(t, err) + + _, err = ParseEncryptedInsecure(`{"protected":`) + assert.Error(t, err) +} diff --git a/utils/cli.go b/utils/cli.go index c2d06f65..2224f7c8 100644 --- a/utils/cli.go +++ b/utils/cli.go @@ -5,8 +5,9 @@ import ( "github.com/urfave/cli" - "github.com/smallstep/cli-utils/errs" "go.step.sm/crypto/keyutil" + + "github.com/smallstep/cli-utils/errs" ) // DefaultRSASize sets the default key size for RSA to 2048 bits. @@ -38,7 +39,7 @@ func GetKeyDetailsFromCLI(ctx *cli.Context, insecure bool, ktyKey, curveKey, siz return kty, crv, size, errs.MinSizeInsecureFlag(ctx, sizeKey, strconv.Itoa(minimalSize)) } if size <= 0 { - return kty, crv, size, errs.MinSizeFlag(ctx, sizeKey, "0") + return kty, crv, size, errs.MinSizeFlag(ctx, sizeKey, "1") } case "EC": if ctx.IsSet(sizeKey) { From 330cdc613c2fc0b99e5748bc4a69083dfd4df27c Mon Sep 17 00:00:00 2001 From: Mariano Cano Date: Fri, 6 Nov 2026 17:55:36 -0800 Subject: [PATCH 6/8] Use go tool for the development tools Define golangci-lint, goimports, govulncheck, and gotestsum in go.mod and run them with go tool, like other smallstep repositories, so their versions are pinned and they do not need to be installed. Bootstrapping only installs GoReleaser Pro now. Use the same version of golangci-lint in CI, and use this module as the local prefix in make fmt. Co-Authored-By: Claude Opus 5.5 --- .github/workflows/ci.yml | 2 +- Makefile | 21 +- docs/local-development.md | 7 +- go.mod | 206 +++++++++++++++- go.sum | 493 +++++++++++++++++++++++++++++++++++++- 5 files changed, 712 insertions(+), 17 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 7ea60dac..da9b611c 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -26,5 +26,5 @@ jobs: with: only-latest-golang: false run-codeql: true - golangci-lint-version: "v2.12.1" + golangci-lint-version: "v2.13.2" secrets: inherit diff --git a/Makefile b/Makefile index 4bb594ae..6465c599 100644 --- a/Makefile +++ b/Makefile @@ -26,6 +26,13 @@ GORELEASER_BUILD_ID?=default # all go files SRC=$(shell find . -type f -name '*.go' -or -name go.mod -or -name go.sum) +GOSRC=$(shell find . -type f -name '*.go') + +# tools run with `go tool`, their versions are defined in go.mod +GOIMPORTS=golang.org/x/tools/cmd/goimports +GOLANGCI_LINT=github.com/golangci/golangci-lint/v2/cmd/golangci-lint +GOTESTSUM=gotest.tools/gotestsum +GOVULNCHECK=golang.org/x/vuln/cmd/govulncheck all: lint test build @@ -104,10 +111,6 @@ GORELEASER_SKIP=$(if $(filter true,$(shell goreleaser --version | grep -q gorele TMPDIR := $(shell mktemp -d) bootstra%: GOPATH=$(shell go env GOPATH) bootstra%: - $Q curl -sSfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sh -s -- -b $$(go env GOPATH)/bin latest - $Q go install golang.org/x/vuln/cmd/govulncheck@latest - $Q go install gotest.tools/gotestsum@latest - $Q go install golang.org/x/tools/cmd/goimports@latest @echo "Installing GoReleaser Pro into $(GOPATH)/bin" $Q curl -o $(TMPDIR)/goreleaser.tar.gz -L $(GORELEASER_PRO_URL) $Q ls $(TMPDIR) @@ -149,10 +152,10 @@ goreleaser: ######################################### test: - $Q $(CGO_OVERRIDE) $(GOFLAGS) gotestsum -- -coverprofile=coverage.out -short -covermode=atomic ./... + $Q $(CGO_OVERRIDE) $(GOFLAGS) go tool $(GOTESTSUM) -- -coverprofile=coverage.out -short -covermode=atomic ./... race: - $Q $(CGO_OVERRIDE) $(GOFLAGS) gotestsum -- -race ./... + $Q $(CGO_OVERRIDE) $(GOFLAGS) go tool $(GOTESTSUM) -- -race ./... .PHONY: test race @@ -161,16 +164,16 @@ race: ######################################### fmt: - $Q goimports -local github.com/golangci/golangci-lint -l -w $(SRC) + $Q go tool $(GOIMPORTS) -local github.com/smallstep/cli -l -w $(GOSRC) lint: golint govulncheck golint: SHELL:=/bin/bash golint: - $Q LOG_LEVEL=error golangci-lint run --config <(curl -s https://raw.githubusercontent.com/smallstep/workflows/master/.golangci.yml) --timeout=30m + $Q LOG_LEVEL=error go tool $(GOLANGCI_LINT) run --config <(curl -s https://raw.githubusercontent.com/smallstep/workflows/master/.golangci.yml) --timeout=30m govulncheck: - $Q govulncheck ./... + $Q go tool $(GOVULNCHECK) ./... .PHONY: fmt lint golint govulncheck diff --git a/docs/local-development.md b/docs/local-development.md index e1045831..3104e766 100644 --- a/docs/local-development.md +++ b/docs/local-development.md @@ -29,10 +29,11 @@ learn more about `$GOPATH` in the ### Installing Dependencies and Bootstrapping Once you've cloned the repository to the appropriate location, you will now be -able to install any other dependencies via the `make bootstrap` command. +able to install GoReleaser Pro, which `make goreleaser` uses, via the +`make bootstrap` command. -You should only ever need to run this command once, as it will ensure you have -the right version of `golangci-lint` installed. +The other development tools, like `golangci-lint`, are defined in `go.mod` and +run with `go tool`, so the `make` targets that use them do not need any setup. ### Building step diff --git a/go.mod b/go.mod index 3ed3e00c..ebf53a21 100644 --- a/go.mod +++ b/go.mod @@ -6,6 +6,7 @@ require ( github.com/Microsoft/go-winio v0.6.4 github.com/ccoveille/go-safecast/v2 v2.0.1 github.com/fxamacker/cbor/v2 v2.10.0 + github.com/go-jose/go-jose/v4 v4.1.9 github.com/google/go-cmp v0.7.0 github.com/google/go-tpm v0.9.8 github.com/google/uuid v1.6.0 @@ -35,6 +36,9 @@ require ( ) require ( + 4d63.com/gocheckcompilerdirectives v1.4.0 // indirect + 4d63.com/gochecknoglobals v0.2.2 // indirect + charm.land/lipgloss/v2 v2.0.6 // indirect cloud.google.com/go v0.123.0 // indirect cloud.google.com/go/auth v0.24.1-0.20261001053825-dbc26066f70a // indirect cloud.google.com/go/auth/oauth2adapt v0.3.0 // indirect @@ -42,84 +46,262 @@ require ( cloud.google.com/go/iam v1.14.0 // indirect cloud.google.com/go/longrunning v1.3.0 // indirect cloud.google.com/go/security v1.29.1 // indirect + codeberg.org/chavacava/garif v0.2.0 // indirect + codeberg.org/polyfloyd/go-errorlint v1.9.0 // indirect dario.cat/mergo v1.0.2 // indirect + dev.gaijin.team/go/exhaustruct/v4 v4.0.0 // indirect + dev.gaijin.team/go/exhaustruct/v5 v5.0.3 // indirect + dev.gaijin.team/go/golib v0.8.1 // indirect filippo.io/bigmod v0.1.0 // indirect filippo.io/edwards25519 v1.2.0 // indirect + github.com/4meepo/tagalign v1.4.3 // indirect + github.com/Abirdcfly/dupword v0.1.8 // indirect + github.com/AdminBenni/iota-mixing v1.0.0 // indirect + github.com/AlwxSin/noinlineerr v1.0.6 // indirect github.com/AndreasBriese/bbloom v0.0.0-20190825152654-46b345b51c96 // indirect + github.com/Antonboom/errname v1.1.2 // indirect + github.com/Antonboom/nilnil v1.1.2 // indirect + github.com/Antonboom/testifylint v1.6.4 // indirect github.com/Azure/azure-sdk-for-go/sdk/azcore v1.23.3 // indirect github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.15.0 // indirect github.com/Azure/azure-sdk-for-go/sdk/internal v1.13.0 // indirect github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/azkeys v1.5.0 // indirect github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/internal v1.2.0 // indirect github.com/AzureAD/microsoft-authentication-library-for-go v1.10.1 // indirect + github.com/BurntSushi/toml v1.6.0 // indirect + github.com/ClickHouse/clickhouse-go-linter v1.2.1 // indirect + github.com/Djarvur/go-err113 v0.1.1 // indirect github.com/Masterminds/goutils v1.1.1 // indirect github.com/Masterminds/semver/v3 v3.5.0 // indirect github.com/Masterminds/sprig/v3 v3.3.0 // indirect + github.com/MirrexOne/unqueryvet v1.5.4 // indirect + github.com/OpenPeeDeeP/depguard/v2 v2.2.1 // indirect + github.com/alecthomas/chroma/v2 v2.27.0 // indirect + github.com/alecthomas/go-check-sumtype v0.3.1 // indirect + github.com/alexkohler/nakedret/v2 v2.0.6 // indirect + github.com/alexkohler/prealloc v1.1.0 // indirect + github.com/alfatraining/structtag v1.0.0 // indirect + github.com/alingse/asasalint v0.0.11 // indirect + github.com/alingse/nilnesserr v0.2.0 // indirect github.com/asaskevich/govalidator v0.0.0-20210307081110-f21760c49a8d // indirect + github.com/ashanbrown/forbidigo/v2 v2.3.1 // indirect + github.com/ashanbrown/makezero/v2 v2.2.1 // indirect github.com/beorn7/perks v1.0.1 // indirect + github.com/bitfield/gotestdox v0.2.2 // indirect + github.com/bkielbasa/cyclop v1.2.3 // indirect + github.com/blizzy78/varnamelen v0.8.0 // indirect + github.com/bombsimon/wsl/v4 v4.7.0 // indirect + github.com/bombsimon/wsl/v5 v5.9.0 // indirect github.com/boombuler/barcode v1.0.1 // indirect + github.com/breml/bidichk v0.3.3 // indirect + github.com/breml/errchkjson v0.4.1 // indirect + github.com/butuzov/ireturn v0.4.1 // indirect + github.com/butuzov/mirror v1.3.3 // indirect + github.com/catenacyber/perfsprint v0.10.1 // indirect + github.com/ccojocar/zxcvbn-go v1.0.4 // indirect github.com/cespare/xxhash v1.1.0 // indirect github.com/cespare/xxhash/v2 v2.3.0 // indirect + github.com/charithe/durationcheck v0.0.11 // indirect + github.com/charmbracelet/colorprofile v0.4.3 // indirect + github.com/charmbracelet/ultraviolet v0.0.0-20260811164956-006e29f97886 // indirect + github.com/charmbracelet/x/ansi v0.11.8 // indirect + github.com/charmbracelet/x/term v0.2.2 // indirect + github.com/charmbracelet/x/termios v0.1.1 // indirect + github.com/charmbracelet/x/windows v0.2.2 // indirect github.com/chzyer/readline v1.5.1 // indirect + github.com/ckaznocha/intrange v0.3.1 // indirect + github.com/clipperhouse/displaywidth v0.11.0 // indirect + github.com/clipperhouse/uax29/v2 v2.7.0 // indirect github.com/coreos/go-oidc/v3 v3.21.0 // indirect github.com/coreos/go-systemd/v22 v22.7.0 // indirect github.com/cpuguy83/go-md2man/v2 v2.0.7 // indirect + github.com/curioswitch/go-reassign v0.3.0 // indirect + github.com/daixiang0/gci v0.13.7 // indirect + github.com/dave/dst v0.27.3 // indirect + github.com/denis-tingaikin/go-header v0.5.0 // indirect github.com/dgraph-io/badger v1.6.2 // indirect github.com/dgraph-io/badger/v2 v2.2007.4 // indirect github.com/dgraph-io/ristretto v0.1.1 // indirect github.com/dgryski/go-farm v0.0.0-20200201041132-a6ae2369ad13 // indirect + github.com/dlclark/regexp2/v2 v2.2.1 // indirect + github.com/dnephin/pflag v1.0.7 // indirect github.com/dustin/go-humanize v1.0.1 // indirect + github.com/ettle/strcase v0.2.0 // indirect + github.com/fatih/color v1.19.0 // indirect + github.com/fatih/structtag v1.2.0 // indirect github.com/felixge/httpsnoop v1.1.0 // indirect + github.com/firefart/nonamedreturns v1.0.8 // indirect + github.com/fsnotify/fsnotify v1.9.0 // indirect + github.com/fzipp/gocyclo v0.6.0 // indirect + github.com/ghostiam/protogetter v0.3.21 // indirect github.com/go-chi/chi/v5 v5.5.0 // indirect - github.com/go-jose/go-jose/v4 v4.1.9 + github.com/go-critic/go-critic v0.14.4 // indirect github.com/go-logr/logr v1.4.4 // indirect github.com/go-logr/stdr v1.2.2 // indirect github.com/go-sql-driver/mysql v1.9.3 // indirect + github.com/go-toolsmith/astcast v1.1.0 // indirect + github.com/go-toolsmith/astcopy v1.1.0 // indirect + github.com/go-toolsmith/astequal v1.2.0 // indirect + github.com/go-toolsmith/astfmt v1.1.0 // indirect + github.com/go-toolsmith/astp v1.1.0 // indirect + github.com/go-toolsmith/strparse v1.1.0 // indirect + github.com/go-toolsmith/typep v1.1.0 // indirect + github.com/go-viper/mapstructure/v2 v2.5.0 // indirect + github.com/go-xmlfmt/xmlfmt v1.1.3 // indirect + github.com/gobwas/glob v0.2.3 // indirect + github.com/godoc-lint/godoc-lint v0.11.2 // indirect + github.com/gofrs/flock v0.13.0 // indirect github.com/golang-jwt/jwt/v5 v5.3.1 // indirect github.com/golang/glog v1.2.5 // indirect github.com/golang/protobuf v1.5.4 // indirect github.com/golang/snappy v0.0.4 // indirect + github.com/golangci/asciicheck v0.5.0 // indirect + github.com/golangci/canonicalheader v0.0.0-20260827115959-a25c71c521f6 // indirect + github.com/golangci/dupl v0.0.0-20260401084720-c99c5cf5c202 // indirect + github.com/golangci/go-printf-func-name v0.1.1 // indirect + github.com/golangci/gofmt v0.0.0-20260820135601-e84e05053792 // indirect + github.com/golangci/golangci-lint/v2 v2.13.2 // indirect + github.com/golangci/golines v0.15.0 // indirect + github.com/golangci/misspell v0.8.0 // indirect + github.com/golangci/plugin-module-register v0.1.2 // indirect + github.com/golangci/revgrep v0.8.0 // indirect + github.com/golangci/rowserrcheck v0.0.0-20260419091836-c5f79b8a11ba // indirect + github.com/golangci/swaggoswag v0.0.0-20250504205917-77f2aca3143e // indirect + github.com/golangci/unconvert v0.0.0-20250410112200-a129a6e6413e // indirect github.com/google/btree v1.1.3 // indirect github.com/google/certificate-transparency-go v1.3.2 // indirect github.com/google/go-tpm-tools v0.4.11 // indirect github.com/google/go-tspi v0.3.0 // indirect github.com/google/pprof v0.0.0-20260802141513-ef3492d7dac3 // indirect github.com/google/s2a-go v0.1.11 // indirect + github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 // indirect github.com/googleapis/enterprise-certificate-proxy v0.3.24 // indirect github.com/googleapis/gax-go/v2 v2.27.0 // indirect + github.com/gordonklaus/ineffassign v0.2.0 // indirect + github.com/gostaticanalysis/analysisutil v0.7.1 // indirect + github.com/gostaticanalysis/comment v1.5.0 // indirect + github.com/gostaticanalysis/forcetypeassert v0.2.0 // indirect + github.com/gostaticanalysis/nilerr v0.1.2 // indirect + github.com/hashicorp/go-immutable-radix/v2 v2.1.0 // indirect + github.com/hashicorp/go-version v1.9.0 // indirect + github.com/hashicorp/golang-lru/v2 v2.0.7 // indirect + github.com/hashicorp/hcl v1.0.1-vault-7 // indirect + github.com/hexops/gotextdiff v1.0.3 // indirect github.com/huandu/xstrings v1.5.0 // indirect + github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/jackc/pgpassfile v1.0.0 // indirect github.com/jackc/pgservicefile v0.0.0-20240606120523-5a60cdf6a761 // indirect github.com/jackc/pgx/v5 v5.9.2 // indirect github.com/jackc/puddle/v2 v2.2.2 // indirect + github.com/jgautheron/goconst v1.11.0 // indirect + github.com/jjti/go-spancheck v0.6.5 // indirect + github.com/julz/importas v0.2.0 // indirect + github.com/karamaru-alpha/copyloopvar v1.2.2 // indirect + github.com/kisielk/errcheck v1.20.0 // indirect + github.com/kkHAIKE/contextcheck v1.1.6 // indirect github.com/klauspost/compress v1.20.3 // indirect + github.com/kulti/thelper v0.7.1 // indirect + github.com/kunwardeep/paralleltest v1.0.15 // indirect github.com/kylelemons/godebug v1.1.0 // indirect + github.com/ldez/exptostd v0.4.5 // indirect + github.com/ldez/gomoddirectives v0.9.0 // indirect + github.com/ldez/grignotin v0.10.1 // indirect + github.com/ldez/structtags v0.6.1 // indirect + github.com/ldez/tagliatelle v0.7.2 // indirect + github.com/ldez/usetesting v0.5.0 // indirect + github.com/leonklingele/grouper v1.1.2 // indirect + github.com/lucasb-eyer/go-colorful v1.4.1 // indirect + github.com/macabu/inamedparam v0.2.0 // indirect + github.com/magiconair/properties v1.8.6 // indirect + github.com/manuelarte/embeddedstructfieldcheck v0.4.0 // indirect + github.com/manuelarte/funcorder v0.6.0 // indirect + github.com/maratori/testableexamples v1.0.1 // indirect + github.com/maratori/testpackage v1.1.2 // indirect + github.com/matoous/godox v1.1.0 // indirect github.com/mattn/go-colorable v0.1.15 // indirect github.com/mattn/go-isatty v0.0.24 // indirect + github.com/mattn/go-runewidth v0.0.24 // indirect + github.com/mgechev/revive v1.15.0 // indirect github.com/mgutz/ansi v0.0.0-20200706080929-d51e80ef957d // indirect github.com/mitchellh/copystructure v1.2.0 // indirect + github.com/mitchellh/go-homedir v1.1.0 // indirect + github.com/mitchellh/mapstructure v1.5.0 // indirect github.com/mitchellh/reflectwalk v1.0.2 // indirect + github.com/moricho/tparallel v0.3.2 // indirect + github.com/muesli/cancelreader v0.2.2 // indirect github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect + github.com/nakabonne/nestif v0.3.1 // indirect github.com/newrelic/go-agent/v3 v3.45.0 // indirect + github.com/nishanths/exhaustive v0.12.0 // indirect + github.com/nishanths/predeclared v0.2.2 // indirect + github.com/nunnatsa/ginkgolinter v0.24.0 // indirect + github.com/pelletier/go-toml v1.9.5 // indirect + github.com/pelletier/go-toml/v2 v2.4.3 // indirect github.com/peterbourgon/diskv/v3 v3.0.1 // indirect github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c // indirect github.com/prometheus/client_golang v1.25.0 // indirect github.com/prometheus/client_model v0.6.3 // indirect github.com/prometheus/common v0.72.0 // indirect github.com/prometheus/procfs v0.22.0 // indirect + github.com/quasilyte/go-ruleguard v0.4.5 // indirect + github.com/quasilyte/go-ruleguard/dsl v0.3.23 // indirect + github.com/quasilyte/gogrep v0.5.0 // indirect + github.com/quasilyte/regex/syntax v0.0.0-20210819130434-b3f0c404a727 // indirect + github.com/quasilyte/stdinfo v0.0.0-20220114132959-f7386bf02567 // indirect + github.com/raeperd/recvcheck v0.3.0 // indirect + github.com/rivo/uniseg v0.4.7 // indirect github.com/rs/xid v1.6.0 // indirect github.com/russross/blackfriday/v2 v2.1.0 // indirect + github.com/ryancurrah/gomodguard v1.4.1 // indirect + github.com/ryancurrah/gomodguard/v2 v2.1.3 // indirect + github.com/ryanrolds/sqlclosecheck v0.6.0 // indirect + github.com/sanposhiho/wastedassign/v2 v2.1.0 // indirect + github.com/santhosh-tekuri/jsonschema/v6 v6.0.3 // indirect + github.com/sashamelentyev/interfacebloat v1.1.0 // indirect + github.com/sashamelentyev/usestdlibvars v1.29.0 // indirect github.com/schollz/jsonstore v1.1.0 // indirect + github.com/securego/gosec/v2 v2.28.0 // indirect github.com/shopspring/decimal v1.4.0 // indirect github.com/shurcooL/sanitized_anchor_name v1.0.0 // indirect github.com/sirupsen/logrus v1.10.2 // indirect + github.com/sivchari/containedctx v1.0.3 // indirect github.com/smallstep/android-attestation v0.0.0-20260722204520-a51b1564ebda // indirect github.com/smallstep/nosql v0.8.0 // indirect github.com/smallstep/pkcs7 v0.2.3 // indirect github.com/smallstep/scep v0.0.0-20250318231241-a25cabb69492 // indirect + github.com/sonatard/noctx v0.5.1 // indirect + github.com/sourcegraph/go-diff v0.8.0 // indirect + github.com/spf13/afero v1.15.0 // indirect github.com/spf13/cast v1.7.0 // indirect + github.com/spf13/cobra v1.10.2 // indirect + github.com/spf13/jwalterweatherman v1.1.0 // indirect + github.com/spf13/pflag v1.0.10 // indirect + github.com/spf13/viper v1.12.0 // indirect + github.com/ssgreg/nlreturn/v2 v2.2.1 // indirect + github.com/stbenjam/no-sprintf-host-port v0.3.1 // indirect + github.com/stretchr/objx v0.5.3 // indirect + github.com/subosito/gotenv v1.4.1 // indirect + github.com/tetafro/godot v1.5.6 // indirect + github.com/timakin/bodyclose v0.0.0-20260129054331-73d1f95b84b4 // indirect + github.com/timonwong/loggercheck v0.11.0 // indirect + github.com/tomarrell/wrapcheck/v2 v2.12.0 // indirect + github.com/tommy-muehle/go-mnd/v2 v2.5.1 // indirect + github.com/ultraware/funlen v0.2.0 // indirect + github.com/ultraware/whitespace v0.2.0 // indirect + github.com/uudashr/gocognit v1.2.1 // indirect + github.com/uudashr/iface v1.5.1 // indirect github.com/weppos/publicsuffix-go v0.20.0 // indirect github.com/x448/float16 v0.8.4 // indirect + github.com/xen0n/gosmopolitan v1.3.0 // indirect + github.com/xo/terminfo v0.0.0-20220910002029-abceb7e1c41e // indirect + github.com/yagipy/maintidx v1.0.0 // indirect + github.com/yeya24/promlinter v0.3.0 // indirect + github.com/ykadowak/zerologlint v0.1.5 // indirect + gitlab.com/bosi/decorder v0.4.2 // indirect + go-simpler.org/musttag v0.14.0 // indirect + go-simpler.org/sloglint v0.12.0 // indirect + go.augendre.info/arangolint v0.4.0 // indirect + go.augendre.info/fatcontext v0.10.0 // indirect go.etcd.io/bbolt v1.4.3 // indirect go.opentelemetry.io/auto/sdk v1.2.1 // indirect go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.67.0 // indirect @@ -128,18 +310,38 @@ require ( go.opentelemetry.io/otel/log v1.47.0 // indirect go.opentelemetry.io/otel/metric v1.47.0 // indirect go.opentelemetry.io/otel/trace v1.47.0 // indirect + go.uber.org/multierr v1.11.0 // indirect + go.uber.org/zap v1.27.0 // indirect go.yaml.in/yaml/v3 v3.0.5 // indirect + golang.org/x/exp/typeparams v0.0.0-20260811152304-ee035b5b010f // indirect + golang.org/x/mod v0.42.0 // indirect golang.org/x/net v0.62.0 // indirect golang.org/x/oauth2 v0.37.0 // indirect golang.org/x/sync v0.24.0 // indirect + golang.org/x/telemetry v0.0.0-20261010193011-f71dc92da45e // indirect golang.org/x/text v0.43.0 // indirect golang.org/x/time v0.16.0 // indirect - golang.org/x/tools v0.51.0 // indirect + golang.org/x/tools v0.52.0 // indirect + golang.org/x/vuln v1.9.0 // indirect google.golang.org/api v0.310.0 // indirect google.golang.org/genproto v0.0.0-20261012220534-4341edf3f941 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20261012220534-4341edf3f941 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20261019180522-ce908d29299b // indirect google.golang.org/grpc v1.85.0 // indirect google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.6.2 // indirect + gopkg.in/ini.v1 v1.67.0 // indirect + gopkg.in/yaml.v2 v2.4.0 // indirect + gopkg.in/yaml.v3 v3.0.1 // indirect + gotest.tools/gotestsum v1.13.0 // indirect + honnef.co/go/tools v0.8.1 // indirect howett.net/plist v1.0.0 // indirect + mvdan.cc/gofumpt v0.11.0 // indirect + mvdan.cc/unparam v0.0.0-20260823230713-2fa3d841b0c8 // indirect +) + +tool ( + github.com/golangci/golangci-lint/v2/cmd/golangci-lint + golang.org/x/tools/cmd/goimports + golang.org/x/vuln/cmd/govulncheck + gotest.tools/gotestsum ) diff --git a/go.sum b/go.sum index b2e8f75e..9e6bdbd0 100644 --- a/go.sum +++ b/go.sum @@ -1,3 +1,9 @@ +4d63.com/gocheckcompilerdirectives v1.4.0 h1:ZLq62rbGWVmQhiZ8kuNVIT/M09xCSTdJz9K3xOdT/CY= +4d63.com/gocheckcompilerdirectives v1.4.0/go.mod h1:9ZOAiMOjqC/nRwci2fcUXVHUNLG/cH6r6rhUh+jTFtQ= +4d63.com/gochecknoglobals v0.2.2 h1:H1vdnwnMaZdQW/N+NrkT1SZMTBmcwHe9Vq8lJcYYTtU= +4d63.com/gochecknoglobals v0.2.2/go.mod h1:lLxwTQjL5eIesRbvnzIP3jZtG140FnTdz+AlMa+ogt0= +charm.land/lipgloss/v2 v2.0.6 h1:EaGKeuA8FvF+v2BT5VmZd2LoYLaMZJXA5n34th8nCIQ= +charm.land/lipgloss/v2 v2.0.6/go.mod h1:ipDDJNSGa1hlwDtSfW1s2/xR8Vdhbut4PXh2zEKZd0Q= cloud.google.com/go v0.123.0 h1:2NAUJwPR47q+E35uaJeYoNhuNEM9kM8SjgRgdeOJUSE= cloud.google.com/go v0.123.0/go.mod h1:xBoMV08QcqUGuPW65Qfm1o9Y4zKZBpGS+7bImXLTAZU= cloud.google.com/go/auth v0.24.1-0.20261001053825-dbc26066f70a h1:jW1ZLFy9oa5ai8LOI40z6s+DL1cO/L1KSm9hVGnibn8= @@ -14,14 +20,38 @@ cloud.google.com/go/longrunning v1.3.0 h1:lZ6c8SJJBmILp/Wnr3vGnBLa0q+cYfSHRCcUfV cloud.google.com/go/longrunning v1.3.0/go.mod h1:wpgLxCn+UA3/TZ1bj/fW39mfDpwVlMPu1xKJyoMt7V0= cloud.google.com/go/security v1.29.1 h1:irh7axea3e1bgtMa5TGQhbXr7ikZzY5hFicCRKYxfdw= cloud.google.com/go/security v1.29.1/go.mod h1:Y0eV8RDggumXx3Aq3l92z/fq+4AFDr0pH/gTqEV88Q4= +codeberg.org/chavacava/garif v0.2.0 h1:F0tVjhYbuOCnvNcU3YSpO6b3Waw6Bimy4K0mM8y6MfY= +codeberg.org/chavacava/garif v0.2.0/go.mod h1:P2BPbVbT4QcvLZrORc2T29szK3xEOlnl0GiPTJmEqBQ= +codeberg.org/polyfloyd/go-errorlint v1.9.0 h1:VkdEEmA1VBpH6ecQoMR4LdphVI3fA4RrCh2an7YmodI= +codeberg.org/polyfloyd/go-errorlint v1.9.0/go.mod h1:GPRRu2LzVijNn4YkrZYJfatQIdS+TrcK8rL5Xs24qw8= dario.cat/mergo v1.0.2 h1:85+piFYR1tMbRrLcDwR18y4UKJ3aH1Tbzi24VRW1TK8= dario.cat/mergo v1.0.2/go.mod h1:E/hbnu0NxMFBjpMIE34DRGLWqDy0g5FuKDhCb31ngxA= +dev.gaijin.team/go/exhaustruct/v4 v4.0.0 h1:873r7aNneqoBB3IaFIzhvt2RFYTuHgmMjoKfwODoI1Y= +dev.gaijin.team/go/exhaustruct/v4 v4.0.0/go.mod h1:aZ/k2o4Y05aMJtiux15x8iXaumE88YdiB0Ai4fXOzPI= +dev.gaijin.team/go/exhaustruct/v5 v5.0.3 h1:yOeA7DNjlT8y4yfmN6nWWYYggA13N523YAj9/TXbuTM= +dev.gaijin.team/go/exhaustruct/v5 v5.0.3/go.mod h1:KwtBsX8nHHH1YxhxkpiBq6bfsmw5WnazWpNvJPHgY9Y= +dev.gaijin.team/go/golib v0.8.1 h1:JYju4x9BSo+QD/AYeHULVDcvEhiFg8wOi6pT0IaZF5E= +dev.gaijin.team/go/golib v0.8.1/go.mod h1:c5fu7t1RSGMxSQgcUYO1sODbzsYnOCXJLmHeNG1Eb+0= filippo.io/bigmod v0.1.0 h1:UNzDk7y9ADKST+axd9skUpBQeW7fG2KrTZyOE4uGQy8= filippo.io/bigmod v0.1.0/go.mod h1:OjOXDNlClLblvXdwgFFOQFJEocLhhtai8vGLy0JCZlI= filippo.io/edwards25519 v1.2.0 h1:crnVqOiS4jqYleHd9vaKZ+HKtHfllngJIiOpNpoJsjo= filippo.io/edwards25519 v1.2.0/go.mod h1:xzAOLCNug/yB62zG1bQ8uziwrIqIuxhctzJT18Q77mc= +github.com/4meepo/tagalign v1.4.3 h1:Bnu7jGWwbfpAie2vyl63Zup5KuRv21olsPIha53BJr8= +github.com/4meepo/tagalign v1.4.3/go.mod h1:00WwRjiuSbrRJnSVeGWPLp2epS5Q/l4UEy0apLLS37c= +github.com/Abirdcfly/dupword v0.1.8 h1:SrhcUuGsROBuChFxHALRYzyyPODWn9zwghmzPvD9Cd8= +github.com/Abirdcfly/dupword v0.1.8/go.mod h1:XZrhVnI7YGpsTiWZANSQaBJ4QpL/Tq5vIEdKJJAs9WI= +github.com/AdminBenni/iota-mixing v1.0.0 h1:Os6lpjG2dp/AE5fYBPAA1zfa2qMdCAWwPMCgpwKq7wo= +github.com/AdminBenni/iota-mixing v1.0.0/go.mod h1:i4+tpAaB+qMVIV9OK3m4/DAynOd5bQFaOu+2AhtBCNY= +github.com/AlwxSin/noinlineerr v1.0.6 h1:KAvuxunTe9QxvqrFB7nZTdb/7Wzas4AvifslTnG0Ld8= +github.com/AlwxSin/noinlineerr v1.0.6/go.mod h1:+QgkkoYrMH7RHvcdxdlI7vYYEdgeoFOVjU9sUhw/rQc= github.com/AndreasBriese/bbloom v0.0.0-20190825152654-46b345b51c96 h1:cTp8I5+VIoKjsnZuH8vjyaysT/ses3EvZeaV/1UkF2M= github.com/AndreasBriese/bbloom v0.0.0-20190825152654-46b345b51c96/go.mod h1:bOvUY6CB00SOBii9/FifXqc0awNKxLFCL/+pkDPuyl8= +github.com/Antonboom/errname v1.1.2 h1:dxwONZJua3VB8Xh/VaCjqAcqF645sWWv7xj26zy7tdQ= +github.com/Antonboom/errname v1.1.2/go.mod h1:YeZIpgLMxT+SNkruGgYkLhzq/9vs3fsolTZegKaKDZI= +github.com/Antonboom/nilnil v1.1.2 h1:aNlFuJhaEseXe4fHO3xbjXlSeEiQVYa2lEkWD2s2hAY= +github.com/Antonboom/nilnil v1.1.2/go.mod h1:0ynwvphOLmAuMwTNDyBnDZmSwZoDpcFXmUHmzoHH2WA= +github.com/Antonboom/testifylint v1.6.4 h1:gs9fUEy+egzxkEbq9P4cpcMB6/G0DYdMeiFS87UiqmQ= +github.com/Antonboom/testifylint v1.6.4/go.mod h1:YO33FROXX2OoUfwjz8g+gUxQXio5i9qpVy7nXGbxDD4= github.com/Azure/azure-sdk-for-go/sdk/azcore v1.23.3 h1:qgnWTiWs1G7AqcKZegFvkJD1bmXJcaDU3uC0ELSgZ5U= github.com/Azure/azure-sdk-for-go/sdk/azcore v1.23.3/go.mod h1:XtxD48QPInqoj+GMlcRlXHEYsoOxFnP6w2JgIZ9rDS4= github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.15.0 h1:w3gDUJlJ0BfBsHH02DCBDwbkmMSXJqBj6nBOCo9iocY= @@ -40,6 +70,12 @@ github.com/AzureAD/microsoft-authentication-library-for-go v1.10.1 h1:0O6j18nQDo github.com/AzureAD/microsoft-authentication-library-for-go v1.10.1/go.mod h1:xdYAf5bjkOpsd3auA8riiJW4vneBubt9caavL7626jQ= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/BurntSushi/toml v1.5.0/go.mod h1:ukJfTF/6rtPPRCnwkur4qwRxa8vTRFBF0uk2lLoLwho= +github.com/BurntSushi/toml v1.6.0 h1:dRaEfpa2VI55EwlIW72hMRHdWouJeRF7TPYhI+AUQjk= +github.com/BurntSushi/toml v1.6.0/go.mod h1:ukJfTF/6rtPPRCnwkur4qwRxa8vTRFBF0uk2lLoLwho= +github.com/ClickHouse/clickhouse-go-linter v1.2.1 h1:zGEKIyd5YL08ieWG/LOUmlau2DxbxPVOfAeo+4Jz3ck= +github.com/ClickHouse/clickhouse-go-linter v1.2.1/go.mod h1:pLorS7ffPTfuUV9M0SJgfHA/h/WQPQUk2FWG9x74cQ4= +github.com/Djarvur/go-err113 v0.1.1 h1:eHfopDqXRwAi+YmCUas75ZE0+hoBHJ2GQNLYRSxao4g= +github.com/Djarvur/go-err113 v0.1.1/go.mod h1:IaWJdYFLg76t2ihfflPZnM1LIQszWOsFDh2hhhAVF6k= github.com/GoogleCloudPlatform/confidential-space/server v0.0.0-20260915221818-a6c0685fb9fc h1:LPSfe+IaXHrYCNzEVZ4O48UdwNxtiNIEwKgIyU4Aawg= github.com/GoogleCloudPlatform/confidential-space/server v0.0.0-20260915221818-a6c0685fb9fc/go.mod h1:M77DH8QPPCBBzfdwZPIWpAZdDHJZu0icyq6HTZAEojI= github.com/Masterminds/goutils v1.1.1 h1:5nUrii3FMTL5diU80unEVvNevw1nH4+ZV4DSLVJLSYI= @@ -50,11 +86,37 @@ github.com/Masterminds/sprig/v3 v3.3.0 h1:mQh0Yrg1XPo6vjYXgtf5OtijNAKJRNcTdOOGZe github.com/Masterminds/sprig/v3 v3.3.0/go.mod h1:Zy1iXRYNqNLUolqCpL4uhk6SHUMAOSCzdgBfDb35Lz0= github.com/Microsoft/go-winio v0.6.4 h1:kJF2pamtYCWXf0xAT8sAkwKC0pMl2HYBrRPHAqyUc+g= github.com/Microsoft/go-winio v0.6.4/go.mod h1:1xl5JXG4ze/m74GH6Dc4Mwxfc3VL5siRVQjIAlHH07U= +github.com/MirrexOne/unqueryvet v1.5.4 h1:38QOxShO7JmMWT+eCdDMbcUgGCOeJphVkzzRgyLJgsQ= +github.com/MirrexOne/unqueryvet v1.5.4/go.mod h1:fs9Zq6eh1LRIhsDIsxf9PONVUjYdFHdtkHIgZdJnyPU= github.com/OneOfOne/xxhash v1.2.2 h1:KMrpdQIwFcEqXDklaen+P1axHaj9BSKzvpUUfnHldSE= github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= +github.com/OpenPeeDeeP/depguard/v2 v2.2.1 h1:vckeWVESWp6Qog7UZSARNqfu/cZqvki8zsuj3piCMx4= +github.com/OpenPeeDeeP/depguard/v2 v2.2.1/go.mod h1:q4DKzC4UcVaAvcfd41CZh0PWpGgzrVxUYBlgKNGquUo= +github.com/alecthomas/assert/v2 v2.11.0 h1:2Q9r3ki8+JYXvGsDyBXwH3LcJ+WK5D0gc5E8vS6K3D0= +github.com/alecthomas/assert/v2 v2.11.0/go.mod h1:Bze95FyfUr7x34QZrjL+XP+0qgp/zg8yS+TtBj1WA3k= +github.com/alecthomas/chroma/v2 v2.27.0 h1:FodwmyOBgJULFYmDqibcp9pvfDLWdtPRh9v/r5BXYZs= +github.com/alecthomas/chroma/v2 v2.27.0/go.mod h1:NjJ3ciIgrqBNeIkWZ4e46nseoLDslxU1LmfCoL+wcY8= +github.com/alecthomas/go-check-sumtype v0.3.1 h1:u9aUvbGINJxLVXiFvHUlPEaD7VDULsrxJb4Aq31NLkU= +github.com/alecthomas/go-check-sumtype v0.3.1/go.mod h1:A8TSiN3UPRw3laIgWEUOHHLPa6/r9MtoigdlP5h3K/E= +github.com/alecthomas/repr v0.5.2 h1:SU73FTI9D1P5UNtvseffFSGmdNci/O6RsqzeXJtP0Qs= +github.com/alecthomas/repr v0.5.2/go.mod h1:Fr0507jx4eOXV7AlPV6AVZLYrLIuIeSOWtW57eE/O/4= +github.com/alexkohler/nakedret/v2 v2.0.6 h1:ME3Qef1/KIKr3kWX3nti3hhgNxw6aqN5pZmQiFSsuzQ= +github.com/alexkohler/nakedret/v2 v2.0.6/go.mod h1:l3RKju/IzOMQHmsEvXwkqMDzHHvurNQfAgE1eVmT40Q= +github.com/alexkohler/prealloc v1.1.0 h1:cKGRBqlXw5iyQGLYhrXrDlcHxugXpTq4tQ5c91wkf8M= +github.com/alexkohler/prealloc v1.1.0/go.mod h1:fT39Jge3bQrfA7nPMDngUfvUbQGQeJyGQnR+913SCig= +github.com/alfatraining/structtag v1.0.0 h1:2qmcUqNcCoyVJ0up879K614L9PazjBSFruTB0GOFjCc= +github.com/alfatraining/structtag v1.0.0/go.mod h1:p3Xi5SwzTi+Ryj64DqjLWz7XurHxbGsq6y3ubePJPus= +github.com/alingse/asasalint v0.0.11 h1:SFwnQXJ49Kx/1GghOFz1XGqHYKp21Kq1nHad/0WQRnw= +github.com/alingse/asasalint v0.0.11/go.mod h1:nCaoMhw7a9kSJObvQyVzNTPBDbNpdocqrSP7t/cW5+I= +github.com/alingse/nilnesserr v0.2.0 h1:raLem5KG7EFVb4UIDAXgrv3N2JIaffeKNtcEXkEWd/w= +github.com/alingse/nilnesserr v0.2.0/go.mod h1:1xJPrXonEtX7wyTq8Dytns5P2hNzoWymVUIaKm4HNFg= github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= github.com/asaskevich/govalidator v0.0.0-20210307081110-f21760c49a8d h1:Byv0BzEl3/e6D5CLfI0j/7hiIEtvGVFPCZ7Ei2oq8iQ= github.com/asaskevich/govalidator v0.0.0-20210307081110-f21760c49a8d/go.mod h1:WaHUgvxTVq04UNunO+XhnAqY/wQc+bxr74GqbsZ/Jqw= +github.com/ashanbrown/forbidigo/v2 v2.3.1 h1:KAZijvQ7zeIBKbhikT4jCm0TLYXC4u78bTiLh/8JROI= +github.com/ashanbrown/forbidigo/v2 v2.3.1/go.mod h1:2QDkLTzU6TV937eFROamXrW92M3paehdae4HCDCOZCM= +github.com/ashanbrown/makezero/v2 v2.2.1 h1:A7uU8dgB1PA9aelTxHMfHIQ8Qev8AB3JLxJUBUsejqM= +github.com/ashanbrown/makezero/v2 v2.2.1/go.mod h1:aEGT/9q3S8DHeE57C88z2a6xydvgx8J5hgXIGWgo0MY= github.com/aws/aws-sdk-go-v2 v1.47.5 h1:5yA+A+BiXbDq1ZLbYwPViwhEGDMdR0MEhL8Jh2LnLS4= github.com/aws/aws-sdk-go-v2 v1.47.5/go.mod h1:iNIkogrRvFwm+1OQIUOP2lPBtlXZboOIUWiCa+pHEMw= github.com/aws/aws-sdk-go-v2/config v1.33.10 h1:RRb0GghYqq2ikMXzfT4r9NO9lVhOld3FIhJJWDIdk+w= @@ -87,9 +149,31 @@ github.com/aws/smithy-go v1.28.7 h1:h/n1SHrwVtaDYLz8mR1/Kq4Xh4RaFbFW7bOYckg9mfE= github.com/aws/smithy-go v1.28.7/go.mod h1:YE2RhdIuDbA5E5bTdciG9KrW3+TiEONeUWCqxX9i1Fc= github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= +github.com/bitfield/gotestdox v0.2.2 h1:x6RcPAbBbErKLnapz1QeAlf3ospg8efBsedU93CDsnE= +github.com/bitfield/gotestdox v0.2.2/go.mod h1:D+gwtS0urjBrzguAkTM2wodsTQYFHdpx8eqRJ3N+9pY= +github.com/bkielbasa/cyclop v1.2.3 h1:faIVMIGDIANuGPWH031CZJTi2ymOQBULs9H21HSMa5w= +github.com/bkielbasa/cyclop v1.2.3/go.mod h1:kHTwA9Q0uZqOADdupvcFJQtp/ksSnytRMe8ztxG8Fuo= +github.com/blizzy78/varnamelen v0.8.0 h1:oqSblyuQvFsW1hbBHh1zfwrKe3kcSj0rnXkKzsQ089M= +github.com/blizzy78/varnamelen v0.8.0/go.mod h1:V9TzQZ4fLJ1DSrjVDfl89H7aMnTvKkApdHeyESmyR7k= +github.com/bombsimon/wsl/v4 v4.7.0 h1:1Ilm9JBPRczjyUs6hvOPKvd7VL1Q++PL8M0SXBDf+jQ= +github.com/bombsimon/wsl/v4 v4.7.0/go.mod h1:uV/+6BkffuzSAVYD+yGyld1AChO7/EuLrCF/8xTiapg= +github.com/bombsimon/wsl/v5 v5.9.0 h1:WCrgZ7RQnZO5oEwbVTlYgBdU3wL294kR1BSWV8vTfsU= +github.com/bombsimon/wsl/v5 v5.9.0/go.mod h1:kjo4HiAV5FDkHC8/uzJq9mBffEEd6WT/nvN7DoMovDM= github.com/boombuler/barcode v1.0.1-0.20190219062509-6c824513bacc/go.mod h1:paBWMcWSl3LHKBqUq+rly7CNSldXjb2rDl3JlRe0mD8= github.com/boombuler/barcode v1.0.1 h1:NDBbPmhS+EqABEs5Kg3n/5ZNjy73Pz7SIV+KCeqyXcs= github.com/boombuler/barcode v1.0.1/go.mod h1:paBWMcWSl3LHKBqUq+rly7CNSldXjb2rDl3JlRe0mD8= +github.com/breml/bidichk v0.3.3 h1:WSM67ztRusf1sMoqH6/c4OBCUlRVTKq+CbSeo0R17sE= +github.com/breml/bidichk v0.3.3/go.mod h1:ISbsut8OnjB367j5NseXEGGgO/th206dVa427kR8YTE= +github.com/breml/errchkjson v0.4.1 h1:keFSS8D7A2T0haP9kzZTi7o26r7kE3vymjZNeNDRDwg= +github.com/breml/errchkjson v0.4.1/go.mod h1:a23OvR6Qvcl7DG/Z4o0el6BRAjKnaReoPQFciAl9U3s= +github.com/butuzov/ireturn v0.4.1 h1:vWb3NO4t77iku/sjCQ/2pHTQeOmxEhjIriJqRLg1Y+I= +github.com/butuzov/ireturn v0.4.1/go.mod h1:q+DXKzTDV5guNuXLnIab9fKXizTn2miZHLhxH7V/GB4= +github.com/butuzov/mirror v1.3.3 h1:v0RsWBhfFc1RQqE/f3sHpSttKDtodFn0gFmtYyD4/hA= +github.com/butuzov/mirror v1.3.3/go.mod h1:h9BzzwYnTiHO0GzgvaTqIg7VSsOUhdIv51cHFFBmX1w= +github.com/catenacyber/perfsprint v0.10.1 h1:u7Riei30bk46XsG8nknMhKLXG9BcXz3+3tl/WpKm0PQ= +github.com/catenacyber/perfsprint v0.10.1/go.mod h1:DJTGsi/Zufpuus6XPGJyKOTMELe347o6akPvWG9Zcsc= +github.com/ccojocar/zxcvbn-go v1.0.4 h1:FWnCIRMXPj43ukfX000kvBZvV6raSxakYr1nzyNrUcc= +github.com/ccojocar/zxcvbn-go v1.0.4/go.mod h1:3GxGX+rHmueTUMvm5ium7irpyjmm7ikxYFOSJB21Das= github.com/ccoveille/go-safecast/v2 v2.0.1 h1:2+mIu3gXtwmWelBia2kkxfB8eP4orTHDH7ClSlWkd6I= github.com/ccoveille/go-safecast/v2 v2.0.1/go.mod h1:JIYA4CAR33blIDuE6fSwCp2sz1oOBahXnvmdBhOAABs= github.com/cespare/xxhash v1.1.0 h1:a6HrQnmkObjyL+Gs60czilIUGqrzKutQD6XZog3p+ko= @@ -97,6 +181,20 @@ github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghf github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs= github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +github.com/charithe/durationcheck v0.0.11 h1:g1/EX1eIiKS57NTWsYtHDZ/APfeXKhye1DidBcABctk= +github.com/charithe/durationcheck v0.0.11/go.mod h1:x5iZaixRNl8ctbM+3B2RrPG5t856TxRyVQEnbIEM2X4= +github.com/charmbracelet/colorprofile v0.4.3 h1:QPa1IWkYI+AOB+fE+mg/5/4HRMZcaXex9t5KX76i20Q= +github.com/charmbracelet/colorprofile v0.4.3/go.mod h1:/zT4BhpD5aGFpqQQqw7a+VtHCzu+zrQtt1zhMt9mR4Q= +github.com/charmbracelet/ultraviolet v0.0.0-20260811164956-006e29f97886 h1:rdnVWKgJpTVXKuKuJyxDJ+NFJdUaUqGvyGy61OcvlbA= +github.com/charmbracelet/ultraviolet v0.0.0-20260811164956-006e29f97886/go.mod h1:nAw0d9PhFp1qdzi2xhQU5YOu5sVpDIHWlaW2Uz/bCro= +github.com/charmbracelet/x/ansi v0.11.8 h1:JMFwp0CgDC2+jcOB162HH5k7I3FVbgFSMMYg7dSPBQQ= +github.com/charmbracelet/x/ansi v0.11.8/go.mod h1:ZNN+3mXny/516oTQPLMPIBeSINvNJJQ8uQXDgbeJxY0= +github.com/charmbracelet/x/term v0.2.2 h1:xVRT/S2ZcKdhhOuSP4t5cLi5o+JxklsoEObBSgfgZRk= +github.com/charmbracelet/x/term v0.2.2/go.mod h1:kF8CY5RddLWrsgVwpw4kAa6TESp6EB5y3uxGLeCqzAI= +github.com/charmbracelet/x/termios v0.1.1 h1:o3Q2bT8eqzGnGPOYheoYS8eEleT5ZVNYNy8JawjaNZY= +github.com/charmbracelet/x/termios v0.1.1/go.mod h1:rB7fnv1TgOPOyyKRJ9o+AsTU/vK5WHJ2ivHeut/Pcwo= +github.com/charmbracelet/x/windows v0.2.2 h1:IofanmuvaxnKHuV04sC0eBy/smG6kIKrWG2/jYn2GuM= +github.com/charmbracelet/x/windows v0.2.2/go.mod h1:/8XtdKZzedat74NQFn0NGlGL4soHB0YQZrETF96h75k= github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= github.com/chzyer/logex v1.2.1 h1:XHDu3E6q+gdHgsdTPH6ImJMIp436vR6MPtH8gP05QzM= github.com/chzyer/logex v1.2.1/go.mod h1:JLbx6lG2kDbNRFnfkgvh4eRJRPX1QCoOIWomwysCBrQ= @@ -106,6 +204,12 @@ github.com/chzyer/readline v1.5.1/go.mod h1:Eh+b79XXUwfKfcPLepksvw2tcLE/Ct21YObk github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= github.com/chzyer/test v1.0.0 h1:p3BQDXSxOhOG0P9z6/hGnII4LGiEPOYBhs8asl/fC04= github.com/chzyer/test v1.0.0/go.mod h1:2JlltgoNkt4TW/z9V/IzDdFaMTM2JPIi26O1pF38GC8= +github.com/ckaznocha/intrange v0.3.1 h1:j1onQyXvHUsPWujDH6WIjhyH26gkRt/txNlV7LspvJs= +github.com/ckaznocha/intrange v0.3.1/go.mod h1:QVepyz1AkUoFQkpEqksSYpNpUo3c5W7nWh/s6SHIJJk= +github.com/clipperhouse/displaywidth v0.11.0 h1:lBc6kY44VFw+TDx4I8opi/EtL9m20WSEFgwIwO+UVM8= +github.com/clipperhouse/displaywidth v0.11.0/go.mod h1:bkrFNkf81G8HyVqmKGxsPufD3JhNl3dSqnGhOoSD/o0= +github.com/clipperhouse/uax29/v2 v2.7.0 h1:+gs4oBZ2gPfVrKPthwbMzWZDaAFPGYK72F0NJv2v7Vk= +github.com/clipperhouse/uax29/v2 v2.7.0/go.mod h1:EFJ2TJMRUaplDxHKj1qAEhCtQPW2tJSwu5BF98AuoVM= github.com/cncf/xds/go v0.0.0-20260202195803-dba9d589def2 h1:aBangftG7EVZoUb69Os8IaYg++6uMOdKK83QtkkvJik= github.com/cncf/xds/go v0.0.0-20260202195803-dba9d589def2/go.mod h1:qwXFYgsP6T7XnJtbKlf1HP8AjxZZyzxMmc+Lq5GjlU4= github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= @@ -116,10 +220,23 @@ github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3Ee github.com/coreos/go-systemd/v22 v22.7.0 h1:LAEzFkke61DFROc7zNLX/WA2i5J8gYqe0rSj9KI28KA= github.com/coreos/go-systemd/v22 v22.7.0/go.mod h1:xNUYtjHu2EDXbsxz1i41wouACIwT7Ybq9o0BQhMwD0w= github.com/cpuguy83/go-md2man v1.0.10/go.mod h1:SmD6nW6nTyfqj6ABTjUi3V3JVMnlJmwcJI5acqYI6dE= +github.com/cpuguy83/go-md2man/v2 v2.0.6/go.mod h1:oOW0eioCTA6cOiMLiUPZOpcVxMig6NIQQ7OS05n1F4g= github.com/cpuguy83/go-md2man/v2 v2.0.7 h1:zbFlGlXEAKlwXpmvle3d8Oe3YnkKIK4xSRTd3sHPnBo= github.com/cpuguy83/go-md2man/v2 v2.0.7/go.mod h1:oOW0eioCTA6cOiMLiUPZOpcVxMig6NIQQ7OS05n1F4g= +github.com/curioswitch/go-reassign v0.3.0 h1:dh3kpQHuADL3cobV/sSGETA8DOv457dwl+fbBAhrQPs= +github.com/curioswitch/go-reassign v0.3.0/go.mod h1:nApPCCTtqLJN/s8HfItCcKV0jIPwluBOvZP+dsJGA88= +github.com/daixiang0/gci v0.13.7 h1:+0bG5eK9vlI08J+J/NWGbWPTNiXPG4WhNLJOkSxWITQ= +github.com/daixiang0/gci v0.13.7/go.mod h1:812WVN6JLFY9S6Tv76twqmNqevN0pa3SX3nih0brVzQ= +github.com/dave/dst v0.27.3 h1:P1HPoMza3cMEquVf9kKy8yXsFirry4zEnWOdYPOoIzY= +github.com/dave/dst v0.27.3/go.mod h1:jHh6EOibnHgcUW3WjKHisiooEkYwqpHLBSX1iOBhEyc= +github.com/dave/jennifer v1.7.1 h1:B4jJJDHelWcDhlRQxWeo0Npa/pYKBLrirAQoTN45txo= +github.com/dave/jennifer v1.7.1/go.mod h1:nXbxhEmQfOZhWml3D1cDK5M1FLnMSozpbFN/m3RmGZc= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM= +github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/denis-tingaikin/go-header v0.5.0 h1:SRdnP5ZKvcO9KKRP1KJrhFR3RrlGuD+42t4429eC9k8= +github.com/denis-tingaikin/go-header v0.5.0/go.mod h1:mMenU5bWrok6Wl2UsZjy+1okegmwQ3UgWl4V1D8gjlY= github.com/dgraph-io/badger v1.6.2 h1:mNw0qs90GVgGGWylh0umH5iag1j6n/PeJtNvL6KY/x8= github.com/dgraph-io/badger v1.6.2/go.mod h1:JW2yswe3V058sS0kZ2h/AXeDSqFjxnZcRrVH//y2UQE= github.com/dgraph-io/badger/v2 v2.2007.4 h1:TRWBQg8UrlUhaFdco01nO2uXwzKS7zd+HVdwV/GHc4o= @@ -131,6 +248,12 @@ github.com/dgraph-io/ristretto v0.1.1/go.mod h1:S1GPSBCYCIhmVNfcth17y2zZtQT6wzkz github.com/dgryski/go-farm v0.0.0-20190423205320-6a90982ecee2/go.mod h1:SqUrOPUnsFjfmXRMNPybcSiG0BgUW2AuFH8PAnS2iTw= github.com/dgryski/go-farm v0.0.0-20200201041132-a6ae2369ad13 h1:fAjc9m62+UWV/WAFKLNi6ZS0675eEUC9y3AlwSbQu1Y= github.com/dgryski/go-farm v0.0.0-20200201041132-a6ae2369ad13/go.mod h1:SqUrOPUnsFjfmXRMNPybcSiG0BgUW2AuFH8PAnS2iTw= +github.com/dlclark/regexp2 v1.12.0 h1:0j4c5qQmnC6XOWNjP3PIXURXN2gWx76rd3KvgdPkCz8= +github.com/dlclark/regexp2 v1.12.0/go.mod h1:DHkYz0B9wPfa6wondMfaivmHpzrQ3v9q8cnmRbL6yW8= +github.com/dlclark/regexp2/v2 v2.2.1 h1:mf4KkFUj0gJuarK8P+LgiS+Lit7m9N1yAwEfPbee7R0= +github.com/dlclark/regexp2/v2 v2.2.1/go.mod h1:avUrQvPaLz2DrFNHJF0taWAFFX2C1GMSSoeiqFjcBmU= +github.com/dnephin/pflag v1.0.7 h1:oxONGlWxhmUct0YzKTgrpQv9AUA1wtPBn7zuSjJqptk= +github.com/dnephin/pflag v1.0.7/go.mod h1:uxE91IoWURlOiTUIA8Mq5ZZkAv3dPUfZNaT80Zm7OQE= github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= github.com/dustin/go-humanize v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkpeCY= github.com/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+mFykh5fBlto= @@ -139,15 +262,31 @@ github.com/envoyproxy/go-control-plane/envoy v1.39.1-0.20260819172001-e6e3fd93e4 github.com/envoyproxy/go-control-plane/envoy v1.39.1-0.20260819172001-e6e3fd93e4be/go.mod h1:PYEOlng9XcrulfyWpm49jECTPV0LT4q8cO7fLW/xwgk= github.com/envoyproxy/protoc-gen-validate v1.3.3 h1:MVQghNeW+LZcmXe7SY1V36Z+WFMDjpqGAGacLe2T0ds= github.com/envoyproxy/protoc-gen-validate v1.3.3/go.mod h1:TsndJ/ngyIdQRhMcVVGDDHINPLWB7C82oDArY51KfB0= +github.com/ettle/strcase v0.2.0 h1:fGNiVF21fHXpX1niBgk0aROov1LagYsOwV/xqKDKR/Q= +github.com/ettle/strcase v0.2.0/go.mod h1:DajmHElDSaX76ITe3/VHVyMin4LWSJN5Z909Wp+ED1A= +github.com/fatih/color v1.19.0 h1:Zp3PiM21/9Ld6FzSKyL5c/BULoe/ONr9KlbYVOfG8+w= +github.com/fatih/color v1.19.0/go.mod h1:zNk67I0ZUT1bEGsSGyCZYZNrHuTkJJB+r6Q9VuMi0LE= +github.com/fatih/structtag v1.2.0 h1:/OdNE99OxoI/PqaW/SuSK9uxxT3f/tcSZgon/ssNSx4= +github.com/fatih/structtag v1.2.0/go.mod h1:mBJUNpUnHmRKrKlQQlmCrh5PuhftFbNv8Ys4/aAZl94= github.com/felixge/httpsnoop v1.1.0 h1:3YtUj32ZZkqZtt3sZZsClsymw/QDuVfpNhoA31zeORc= github.com/felixge/httpsnoop v1.1.0/go.mod h1:Zqxgdd+1Rkcz8euOqdr7lqgCRJztwr5hp9vDSi5UZCE= +github.com/firefart/nonamedreturns v1.0.8 h1:iB32Dl17zJl1zlVEj/WlUWgx0HiRyQ85OUw1WHa4/II= +github.com/firefart/nonamedreturns v1.0.8/go.mod h1:vxFNvm5AfP/8rgAKFzYmnqx0yp1HjrYsErZ9pHPTznA= github.com/frankban/quicktest v1.14.6 h1:7Xjx+VpznH+oBnejlPUj8oUpdxnVs4f8XU8WnHkI4W8= github.com/frankban/quicktest v1.14.6/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= +github.com/fsnotify/fsnotify v1.9.0 h1:2Ml+OJNzbYCTzsxtv8vKSFD9PbJjmhYF14k/jKC7S9k= +github.com/fsnotify/fsnotify v1.9.0/go.mod h1:8jBTzvmWwFyi3Pb8djgCCO5IBqzKJ/Jwo8TRcHyHii0= github.com/fxamacker/cbor/v2 v2.10.0 h1:HVF3T5vYwLqO81ebPirWEPNv2SMrUMD3HLnKgEr6uWE= github.com/fxamacker/cbor/v2 v2.10.0/go.mod h1:uSwlToFuT9BZAKRxxVm3qQC8DR4tlWl7D6pf20iRYH4= +github.com/fzipp/gocyclo v0.6.0 h1:lsblElZG7d3ALtGMx9fmxeTKZaLLpU8mET09yN4BBLo= +github.com/fzipp/gocyclo v0.6.0/go.mod h1:rXPyn8fnlpa0R2csP/31uerbiVBugk5whMdlyaLkLoA= +github.com/ghostiam/protogetter v0.3.21 h1:EeWTGvL/Eyosp653hiWb6Byx4b69iJC4/E+za7vQHoI= +github.com/ghostiam/protogetter v0.3.21/go.mod h1:iAKSpyoHwYzay+OpjoWgwzRtPFthEfuUvmlomTThck0= github.com/go-chi/chi/v5 v5.5.0 h1:xdKQ1dJmVJsmgahrXSKhUx8NyVPzpwdlyrrQFpMPJgg= github.com/go-chi/chi/v5 v5.5.0/go.mod h1:d1IG7GtKPSjPyBP365PH8sAGVHk3qfB/IhjFNRH1wWM= +github.com/go-critic/go-critic v0.14.4 h1:dSX4C3pWSeuMVxvQh6yG8U0ReSf3YOmKi4nwX5q7n/8= +github.com/go-critic/go-critic v0.14.4/go.mod h1:xwntfW6SYAd7h1OqDzmN6hBX/JxsEKl5up/Y2bsxgVQ= github.com/go-jose/go-jose/v4 v4.1.9 h1:pKfeQkig1NmgK4hJrZYXLEYURXfoJB61Larw0uIW4gY= github.com/go-jose/go-jose/v4 v4.1.9/go.mod h1:x4oUasVrzR7071A4TnHLGSPpNOm2a21K9Kf04k1rs08= github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= @@ -155,8 +294,41 @@ github.com/go-logr/logr v1.4.4 h1:tG4xh9yMsRCAiodLVTxyrkzSZ9+o0L1Kg/+cPVcbP/8= github.com/go-logr/logr v1.4.4/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= +github.com/go-quicktest/qt v1.102.0 h1:HSQxCeh5YZH3EL3W39ixjtyaEhcWSXQHtHnMBzSs474= +github.com/go-quicktest/qt v1.102.0/go.mod h1:p4lGIVX+8Wa6ZPNDvqcxq36XpUDLh42FLetFU7odllI= github.com/go-sql-driver/mysql v1.9.3 h1:U/N249h2WzJ3Ukj8SowVFjdtZKfu9vlLZxjPXV1aweo= github.com/go-sql-driver/mysql v1.9.3/go.mod h1:qn46aNg1333BRMNU69Lq93t8du/dwxI64Gl8i5p1WMU= +github.com/go-task/slim-sprig/v3 v3.0.0 h1:sUs3vkvUymDpBKi3qH1YSqBQk9+9D/8M2mN1vB6EwHI= +github.com/go-task/slim-sprig/v3 v3.0.0/go.mod h1:W848ghGpv3Qj3dhTPRyJypKRiqCdHZiAzKg9hl15HA8= +github.com/go-toolsmith/astcast v1.1.0 h1:+JN9xZV1A+Re+95pgnMgDboWNVnIMMQXwfBwLRPgSC8= +github.com/go-toolsmith/astcast v1.1.0/go.mod h1:qdcuFWeGGS2xX5bLM/c3U9lewg7+Zu4mr+xPwZIB4ZU= +github.com/go-toolsmith/astcopy v1.1.0 h1:YGwBN0WM+ekI/6SS6+52zLDEf8Yvp3n2seZITCUBt5s= +github.com/go-toolsmith/astcopy v1.1.0/go.mod h1:hXM6gan18VA1T/daUEHCFcYiW8Ai1tIwIzHY6srfEAw= +github.com/go-toolsmith/astequal v1.0.3/go.mod h1:9Ai4UglvtR+4up+bAD4+hCj7iTo4m/OXVTSLnCyTAx4= +github.com/go-toolsmith/astequal v1.1.0/go.mod h1:sedf7VIdCL22LD8qIvv7Nn9MuWJruQA/ysswh64lffQ= +github.com/go-toolsmith/astequal v1.2.0 h1:3Fs3CYZ1k9Vo4FzFhwwewC3CHISHDnVUPC4x0bI2+Cw= +github.com/go-toolsmith/astequal v1.2.0/go.mod h1:c8NZ3+kSFtFY/8lPso4v8LuJjdJiUFVnSuU3s0qrrDY= +github.com/go-toolsmith/astfmt v1.1.0 h1:iJVPDPp6/7AaeLJEruMsBUlOYCmvg0MoCfJprsOmcco= +github.com/go-toolsmith/astfmt v1.1.0/go.mod h1:OrcLlRwu0CuiIBp/8b5PYF9ktGVZUjlNMV634mhwuQ4= +github.com/go-toolsmith/astp v1.1.0 h1:dXPuCl6u2llURjdPLLDxJeZInAeZ0/eZwFJmqZMnpQA= +github.com/go-toolsmith/astp v1.1.0/go.mod h1:0T1xFGz9hicKs8Z5MfAqSUitoUYS30pDMsRVIDHs8CA= +github.com/go-toolsmith/pkgload v1.2.2 h1:0CtmHq/02QhxcF7E9N5LIFcYFsMR5rdovfqTtRKkgIk= +github.com/go-toolsmith/pkgload v1.2.2/go.mod h1:R2hxLNRKuAsiXCo2i5J6ZQPhnPMOVtU+f0arbFPWCus= +github.com/go-toolsmith/strparse v1.0.0/go.mod h1:YI2nUKP9YGZnL/L1/DLFBfixrcjslWct4wyljWhSRy8= +github.com/go-toolsmith/strparse v1.1.0 h1:GAioeZUK9TGxnLS+qfdqNbA4z0SSm5zVNtCQiyP2Bvw= +github.com/go-toolsmith/strparse v1.1.0/go.mod h1:7ksGy58fsaQkGQlY8WVoBFNyEPMGuJin1rfoPS4lBSQ= +github.com/go-toolsmith/typep v1.1.0 h1:fIRYDyF+JywLfqzyhdiHzRop/GQDxxNhLGQ6gFUNHus= +github.com/go-toolsmith/typep v1.1.0/go.mod h1:fVIw+7zjdsMxDA3ITWnH1yOiw1rnTQKCsF/sk2H/qig= +github.com/go-viper/mapstructure/v2 v2.5.0 h1:vM5IJoUAy3d7zRSVtIwQgBj7BiWtMPfmPEgAXnvj1Ro= +github.com/go-viper/mapstructure/v2 v2.5.0/go.mod h1:oJDH3BJKyqBA2TXFhDsKDGDTlndYOZ6rGS0BRZIxGhM= +github.com/go-xmlfmt/xmlfmt v1.1.3 h1:t8Ey3Uy7jDSEisW2K3somuMKIpzktkWptA0iFCnRUWY= +github.com/go-xmlfmt/xmlfmt v1.1.3/go.mod h1:aUCEOzzezBEjDBbFBoSiya/gduyIiWYRP6CnSFIV8AM= +github.com/gobwas/glob v0.2.3 h1:A4xDbljILXROh+kObIiy5kIaPYD8e96x1tgBhUI5J+Y= +github.com/gobwas/glob v0.2.3/go.mod h1:d3Ez4x06l9bZtSvzIay5+Yzi0fmZzPgnTbPcKjJAkT8= +github.com/godoc-lint/godoc-lint v0.11.2 h1:Bp0FkJWoSdNsBikdNgIcgtaoo+xz6I/Y9s5WSBQUeeM= +github.com/godoc-lint/godoc-lint v0.11.2/go.mod h1:iVpGdL1JCikNH2gGeAn3Hh+AgN5Gx/I/cxV+91L41jo= +github.com/gofrs/flock v0.13.0 h1:95JolYOvGMqeH31+FC7D2+uULf6mG61mEZ/A8dRYMzw= +github.com/gofrs/flock v0.13.0/go.mod h1:jxeyy9R1auM5S6JYDBhDt+E2TCo7DkratH4Pgi8P+Z0= github.com/golang-jwt/jwt/v5 v5.3.1 h1:kYf81DTWFe7t+1VvL7eS+jKFVWaUnK9cB1qbwn63YCY= github.com/golang-jwt/jwt/v5 v5.3.1/go.mod h1:fxCRLWMO43lRc8nhHWY6LGqRcf+1gQWArsqaEUEa5bE= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= @@ -168,12 +340,43 @@ github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6 github.com/golang/snappy v0.0.3/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/golang/snappy v0.0.4 h1:yAGX7huGHXlcLOEtBnF4w7FQwA26wojNCwOYAEhLjQM= github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= +github.com/golangci/asciicheck v0.5.0 h1:jczN/BorERZwK8oiFBOGvlGPknhvq0bjnysTj4nUfo0= +github.com/golangci/asciicheck v0.5.0/go.mod h1:5RMNAInbNFw2krqN6ibBxN/zfRFa9S6tA1nPdM0l8qQ= +github.com/golangci/canonicalheader v0.0.0-20260827115959-a25c71c521f6 h1:fVLolA3dG6s0brGetsiDAtcnpMSwVa2LqXJEw/9RJG4= +github.com/golangci/canonicalheader v0.0.0-20260827115959-a25c71c521f6/go.mod h1:1xo+NFW5S+bEf2DKXhaxuzvcDN5AR6o/KMwvqC5Mkpo= +github.com/golangci/dupl v0.0.0-20260401084720-c99c5cf5c202 h1:CbTB8KpqnViI6lIXxp03Oclc4VFHi3K4BWC1TacsZ+A= +github.com/golangci/dupl v0.0.0-20260401084720-c99c5cf5c202/go.mod h1:NUw9Zr2Sy7+HxzdjIULge71wI6yEg1lWQr7Evcu8K0E= +github.com/golangci/go-printf-func-name v0.1.1 h1:hIYTFJqAGp1iwoIfsNTpoq1xZAarogrvjO9AfiW3B4U= +github.com/golangci/go-printf-func-name v0.1.1/go.mod h1:Es64MpWEZbh0UBtTAICOZiB+miW53w/K9Or/4QogJss= +github.com/golangci/gofmt v0.0.0-20260820135601-e84e05053792 h1:WL8YKrt3UbOBqSRU7GpP5BTtQTMWtVtj+mfPijgZeIg= +github.com/golangci/gofmt v0.0.0-20260820135601-e84e05053792/go.mod h1:te5hX0dW4C5r6YbXs+6ysNr8Q5UTmdIqGbb+mlFiYmA= +github.com/golangci/golangci-lint/v2 v2.13.2 h1:bCyq3E4vo9qwzifjpzJqYndEt7Ncva80qkk8G2B4TXU= +github.com/golangci/golangci-lint/v2 v2.13.2/go.mod h1:5xaMd1kAxV7GSBPEyngw8gnnjoRocqW9UVKdBR6627w= +github.com/golangci/golines v0.15.0 h1:Qnph25g8Y1c5fdo1X7GaRDGgnMHgnxh4Gk4VfPTtRx0= +github.com/golangci/golines v0.15.0/go.mod h1:AZjXd23tbHMpowhtnGlj9KCNsysj72aeZVVHnVcZx10= +github.com/golangci/misspell v0.8.0 h1:qvxQhiE2/5z+BVRo1kwYA8yGz+lOlu5Jfvtx2b04Jbg= +github.com/golangci/misspell v0.8.0/go.mod h1:WZyyI2P3hxPY2UVHs3cS8YcllAeyfquQcKfdeE9AFVg= +github.com/golangci/plugin-module-register v0.1.2 h1:e5WM6PO6NIAEcij3B053CohVp3HIYbzSuP53UAYgOpg= +github.com/golangci/plugin-module-register v0.1.2/go.mod h1:1+QGTsKBvAIvPvoY/os+G5eoqxWn70HYDm2uvUyGuVw= +github.com/golangci/revgrep v0.8.0 h1:EZBctwbVd0aMeRnNUsFogoyayvKHyxlV3CdUA46FX2s= +github.com/golangci/revgrep v0.8.0/go.mod h1:U4R/s9dlXZsg8uJmaR1GrloUr14D7qDl8gi2iPXJH8k= +github.com/golangci/rowserrcheck v0.0.0-20260419091836-c5f79b8a11ba h1:lqtcnSMDuuJdu/LrKWi5RJzpSNLOJXYe/nzQutTI5kg= +github.com/golangci/rowserrcheck v0.0.0-20260419091836-c5f79b8a11ba/go.mod h1:sCBNcpRmhJCtbFGz49+IM3ETTFf7QdJ30AeYCd43NKk= +github.com/golangci/swaggoswag v0.0.0-20250504205917-77f2aca3143e h1:ai0EfmVYE2bRA5htgAG9r7s3tHsfjIhN98WshBTJ9jM= +github.com/golangci/swaggoswag v0.0.0-20250504205917-77f2aca3143e/go.mod h1:Vrn4B5oR9qRwM+f54koyeH3yzphlecwERs0el27Fr/s= +github.com/golangci/unconvert v0.0.0-20250410112200-a129a6e6413e h1:gD6P7NEo7Eqtt0ssnqSJNNndxe69DOQ24A5h7+i3KpM= +github.com/golangci/unconvert v0.0.0-20250410112200-a129a6e6413e/go.mod h1:h+wZwLjUTJnm/P2rwlbJdRPZXOzaT36/FwnPnY2inzc= github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/btree v1.1.3 h1:CVpQJjYgC4VbzxeGVHfvZrv1ctoYCAI8vbl07Fcxlyg= github.com/google/btree v1.1.3/go.mod h1:qOPhT0dTNdNzV6Z/lhRX0YXUafgPLFUh+gZMl761Gm4= github.com/google/certificate-transparency-go v1.0.21/go.mod h1:QeJfpSbVSfYc7RgB3gJFj9cbuQMMchQxrWXz8Ruopmg= github.com/google/certificate-transparency-go v1.3.2 h1:9ahSNZF2o7SYMaKaXhAumVEzXB2QaayzII9C8rv7v+A= github.com/google/certificate-transparency-go v1.3.2/go.mod h1:H5FpMUaGa5Ab2+KCYsxg6sELw3Flkl7pGZzWdBoYLXs= +github.com/google/go-cmdtest v0.4.1-0.20220921163831-55ab3332a786 h1:rcv+Ippz6RAtvaGgKxc+8FQIpxHgsF+HBzPyYL2cyVU= +github.com/google/go-cmdtest v0.4.1-0.20220921163831-55ab3332a786/go.mod h1:apVn/GCasLZUVpAJ6oWAuyP7Ne7CEsQbTnc0plM3m+o= +github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.8/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= @@ -195,18 +398,51 @@ github.com/google/logger v1.1.1 h1:+6Z2geNxc9G+4D4oDO9njjjn2d0wN5d7uOo0vOIW1NQ= github.com/google/logger v1.1.1/go.mod h1:BkeJZ+1FhQ+/d087r4dzojEg1u2ZX+ZqG1jTUrLM+zQ= github.com/google/pprof v0.0.0-20260802141513-ef3492d7dac3 h1:LMLX+LgTNWpfvCBdFebv6EsYotImrt/Ppc5cXIriCSo= github.com/google/pprof v0.0.0-20260802141513-ef3492d7dac3/go.mod h1:jl5iWTm0/hd5PjEYEOuwAJ57L/CibdZfrqZ5XA5GrCk= +github.com/google/renameio v0.1.0 h1:GOZbcHa3HfsPKPlmyPyN2KEohoMXOhdMbHrvbpl2QaA= +github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= github.com/google/s2a-go v0.1.11 h1:7v1V1TraNGP63WptsAkNqr2w8jgm4vM6A6qx6Lsw9iM= github.com/google/s2a-go v0.1.11/go.mod h1:pz4tyvwXvJLLbyrkh6FW1eS2zPUXMaTmyNhYtyP2tNw= +github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 h1:El6M4kTTCOh6aBiKaUGG7oYTSPP8MxqL4YI3kZKwcP4= +github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510/go.mod h1:pupxD2MaaD3pAXIBCelhxNneeOaAeabZDe5s4K6zSpQ= 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.24 h1:G9iCJIY+AYVmUskKdjX8FVy7sG+nbzjOQ41cvlmhcvg= github.com/googleapis/enterprise-certificate-proxy v0.3.24/go.mod h1:hEjCmnoakQzv5ImLUp6alkY7XgLlNoAxwTXmhHHNIsI= github.com/googleapis/gax-go/v2 v2.27.0 h1:qe2iQOUzxb3fd6x6ewpIEixPQhJ+0Ihc/RRZhKA/2g0= github.com/googleapis/gax-go/v2 v2.27.0/go.mod h1:RofiqDw3ehcG4L0H1zO3D2Itpwd3/uS/7wdmbNDF1DE= +github.com/gordonklaus/ineffassign v0.2.0 h1:Uths4KnmwxNJNzq87fwQQDDnbNb7De00VOk9Nu0TySs= +github.com/gordonklaus/ineffassign v0.2.0/go.mod h1:TIpymnagPSexySzs7F9FnO1XFTy8IT3a59vmZp5Y9Lw= +github.com/gostaticanalysis/analysisutil v0.7.1 h1:ZMCjoue3DtDWQ5WyU16YbjbQEQ3VuzwxALrpYd+HeKk= +github.com/gostaticanalysis/analysisutil v0.7.1/go.mod h1:v21E3hY37WKMGSnbsw2S/ojApNWb6C1//mXO48CXbVc= +github.com/gostaticanalysis/comment v1.4.2/go.mod h1:KLUTGDv6HOCotCH8h2erHKmpci2ZoR8VPu34YA2uzdM= +github.com/gostaticanalysis/comment v1.5.0 h1:X82FLl+TswsUMpMh17srGRuKaaXprTaytmEpgnKIDu8= +github.com/gostaticanalysis/comment v1.5.0/go.mod h1:V6eb3gpCv9GNVqb6amXzEUX3jXLVK/AdA+IrAMSqvEc= +github.com/gostaticanalysis/forcetypeassert v0.2.0 h1:uSnWrrUEYDr86OCxWa4/Tp2jeYDlogZiZHzGkWFefTk= +github.com/gostaticanalysis/forcetypeassert v0.2.0/go.mod h1:M5iPavzE9pPqWyeiVXSFghQjljW1+l/Uke3PXHS6ILY= +github.com/gostaticanalysis/nilerr v0.1.2 h1:S6nk8a9N8g062nsx63kUkF6AzbHGw7zzyHMcpu52xQU= +github.com/gostaticanalysis/nilerr v0.1.2/go.mod h1:A19UHhoY3y8ahoL7YKz6sdjDtduwTSI4CsymaC2htPA= +github.com/gostaticanalysis/testutil v0.3.1-0.20210208050101-bfb5c8eec0e4/go.mod h1:D+FIZ+7OahH3ePw/izIEeH5I06eKs1IKI4Xr64/Am3M= +github.com/gostaticanalysis/testutil v0.5.0 h1:Dq4wT1DdTwTGCQQv3rl3IvD5Ld0E6HiY+3Zh0sUGqw8= +github.com/gostaticanalysis/testutil v0.5.0/go.mod h1:OLQSbuM6zw2EvCcXTz1lVq5unyoNft372msDY0nY5Hs= +github.com/hashicorp/go-immutable-radix/v2 v2.1.0 h1:CUW5RYIcysz+D3B+l1mDeXrQ7fUvGGCwJfdASSzbrfo= +github.com/hashicorp/go-immutable-radix/v2 v2.1.0/go.mod h1:hgdqLXA4f6NIjRVisM1TJ9aOJVNRqKZj+xDGF6m7PBw= +github.com/hashicorp/go-uuid v1.0.3 h1:2gKiV6YVmrJ1i2CKKa9obLvRieoRGviZFL26PcT/Co8= +github.com/hashicorp/go-uuid v1.0.3/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= +github.com/hashicorp/go-version v1.2.1/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= +github.com/hashicorp/go-version v1.9.0 h1:CeOIz6k+LoN3qX9Z0tyQrPtiB1DFYRPfCIBtaXPSCnA= +github.com/hashicorp/go-version v1.9.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= +github.com/hashicorp/golang-lru/v2 v2.0.7 h1:a+bsQ5rvGLjzHuww6tVxozPZFVghXaHOwFs4luLUK2k= +github.com/hashicorp/golang-lru/v2 v2.0.7/go.mod h1:QeFd9opnmA6QUJc5vARoKUSoFhyfM2/ZepoAG6RGpeM= github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= +github.com/hashicorp/hcl v1.0.1-vault-7 h1:ag5OxFVy3QYTFTJODRzTKVZ6xvdfLLCA1cy/Y6xGI0I= +github.com/hashicorp/hcl v1.0.1-vault-7/go.mod h1:XYhtn6ijBSAj6n4YqAaf7RBPS4I06AItNorpy+MoQNM= +github.com/hexops/gotextdiff v1.0.3 h1:gitA9+qJrrTCsiCl7+kh75nPqQt1cx4ZkudSTLoUqJM= +github.com/hexops/gotextdiff v1.0.3/go.mod h1:pSWU5MAI3yDq+fZBTazCSJysOMbxWL1BSow5/V2vxeg= github.com/huandu/xstrings v1.5.0 h1:2ag3IFq9ZDANvthTwTiqSSZLjDc+BedvHPAp5tJy2TI= github.com/huandu/xstrings v1.5.0/go.mod h1:y5/lhBue+AyNmUVz9RLU9xbLR0o4KIIExikq4ovT0aE= github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= +github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= +github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= github.com/jackc/pgpassfile v1.0.0 h1:/6Hmqy13Ss2zCq62VdNG8tM1wchn8zjSGOBJ6icpsIM= github.com/jackc/pgpassfile v1.0.0/go.mod h1:CEx0iS5ambNFdcRtxPj5JhEz+xB6uRky5eyVu/W2HEg= github.com/jackc/pgservicefile v0.0.0-20240606120523-5a60cdf6a761 h1:iCEnooe7UlwOQYpKFhBabPMi4aNAfoODPEFNiAnClxo= @@ -216,8 +452,20 @@ github.com/jackc/pgx/v5 v5.9.2/go.mod h1:mal1tBGAFfLHvZzaYh77YS/eC6IX9OWbRV1QIIM github.com/jackc/puddle/v2 v2.2.2 h1:PR8nw+E/1w0GLuRFSmiioY6UooMp6KJv0/61nB7icHo= github.com/jackc/puddle/v2 v2.2.2/go.mod h1:vriiEXHvEE654aYKXXjOvZM39qJ0q+azkZFrfEOc3H4= github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= +github.com/jgautheron/goconst v1.11.0 h1:KgN90z5qXt5f0Uzf3cWXev3hfMMFUyNeKdpkSBRvLDk= +github.com/jgautheron/goconst v1.11.0/go.mod h1:0p+wv1lFOiUr0IlNNT1nrm6+8DB8u2sU6KHGzFRXHDc= +github.com/jjti/go-spancheck v0.6.5 h1:lmi7pKxa37oKYIMScialXUK6hP3iY5F1gu+mLBPgYB8= +github.com/jjti/go-spancheck v0.6.5/go.mod h1:aEogkeatBrbYsyW6y5TgDfihCulDYciL1B7rG2vSsrU= +github.com/julz/importas v0.2.0 h1:y+MJN/UdL63QbFJHws9BVC5RpA2iq0kpjrFajTGivjQ= +github.com/julz/importas v0.2.0/go.mod h1:pThlt589EnCYtMnmhmRYY/qn9lCf/frPOK+WMx3xiJY= +github.com/karamaru-alpha/copyloopvar v1.2.2 h1:yfNQvP9YaGQR7VaWLYcfZUlRP2eo2vhExWKxD/fP6q0= +github.com/karamaru-alpha/copyloopvar v1.2.2/go.mod h1:oY4rGZqZ879JkJMtX3RRkcXRkmUvH0x35ykgaKgsgJY= github.com/keybase/go-keychain v0.0.1 h1:way+bWYa6lDppZoZcgMbYsvC7GxljxrskdNInRtuthU= github.com/keybase/go-keychain v0.0.1/go.mod h1:PdEILRW3i9D8JcdM+FmY6RwkHGnhHxXwkPPMeUgOK1k= +github.com/kisielk/errcheck v1.20.0 h1:9rwHBNKzd4wkDWcROy3DvFGNqEPlkxBg305rvk7HabI= +github.com/kisielk/errcheck v1.20.0/go.mod h1:O+f80MKNwX8Oor2jwgpeQ9An7uJm+hRSgT+h22knRJU= +github.com/kkHAIKE/contextcheck v1.1.6 h1:7HIyRcnyzxL9Lz06NGhiKvenXq7Zw6Q0UQu/ttjfJCE= +github.com/kkHAIKE/contextcheck v1.1.6/go.mod h1:3dDbMRNBFaq8HFXWC1JyvDSPm43CmE6IuHam8Wr0rkg= github.com/klauspost/compress v1.12.3/go.mod h1:8dP1Hq4DHOhN9w426knH3Rhby4rFm6D8eO+e+Dq5Gzg= github.com/klauspost/compress v1.20.3 h1:zWNoFqq/lSuYQRim3dUXlXeA0IqwuZGicdG5ZTfY5j4= github.com/klauspost/compress v1.20.3/go.mod h1:LUdAzn7YLVvxLpc7y3V1m40wESHTgc1422pwwBSKYuI= @@ -229,30 +477,100 @@ github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= +github.com/kulti/thelper v0.7.1 h1:fI8QITAoFVLx+y+vSyuLBP+rcVIB8jKooNSCT2EiI98= +github.com/kulti/thelper v0.7.1/go.mod h1:NsMjfQEy6sd+9Kfw8kCP61W1I0nerGSYSFnGaxQkcbs= +github.com/kunwardeep/paralleltest v1.0.15 h1:ZMk4Qt306tHIgKISHWFJAO1IDQJLc6uDyJMLyncOb6w= +github.com/kunwardeep/paralleltest v1.0.15/go.mod h1:di4moFqtfz3ToSKxhNjhOZL+696QtJGCFe132CbBLGk= github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc= github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= +github.com/ldez/exptostd v0.4.5 h1:kv2ZGUVI6VwRfp/+bcQ6Nbx0ghFWcGIKInkG/oFn1aQ= +github.com/ldez/exptostd v0.4.5/go.mod h1:QRjHRMXJrCTIm9WxVNH6VW7oN7KrGSht69bIRwvdFsM= +github.com/ldez/gomoddirectives v0.9.0 h1:2YV/EX7nVlWL4jySusYTzBKHuE3D2fgcRsQuMa3yIoo= +github.com/ldez/gomoddirectives v0.9.0/go.mod h1:DdZzfm9MdXCjn2/UGYXCFfo+tzrp2Ib4iD2Q0kIJkwE= +github.com/ldez/grignotin v0.10.1 h1:keYi9rYsgbvqAZGI1liek5c+jv9UUjbvdj3Tbn5fn4o= +github.com/ldez/grignotin v0.10.1/go.mod h1:UlDbXFCARrXbWGNGP3S5vsysNXAPhnSuBufpTEbwOas= +github.com/ldez/structtags v0.6.1 h1:bUooFLbXx41tW8SvkfwfFkkjPYvFFs59AAMgVg6DUBk= +github.com/ldez/structtags v0.6.1/go.mod h1:YDxVSgDy/MON6ariaxLF2X09bh19qL7MtGBN5MrvbdY= +github.com/ldez/tagliatelle v0.7.2 h1:KuOlL70/fu9paxuxbeqlicJnCspCRjH0x8FW+NfgYUk= +github.com/ldez/tagliatelle v0.7.2/go.mod h1:PtGgm163ZplJfZMZ2sf5nhUT170rSuPgBimoyYtdaSI= +github.com/ldez/usetesting v0.5.0 h1:3/QtzZObBKLy1F4F8jLuKJiKBjjVFi1IavpoWbmqLwc= +github.com/ldez/usetesting v0.5.0/go.mod h1:Spnb4Qppf8JTuRgblLrEWb7IE6rDmUpGvxY3iRrzvDQ= +github.com/leonklingele/grouper v1.1.2 h1:o1ARBDLOmmasUaNDesWqWCIFH3u7hoFlM84YrjT3mIY= +github.com/leonklingele/grouper v1.1.2/go.mod h1:6D0M/HVkhs2yRKRFZUoGjeDy7EZTfFBE9gl4kjmIGkA= +github.com/lucasb-eyer/go-colorful v1.4.1 h1:1EO+WB73+EH8EVbzlrG3KLAfEypQWVHIBqlTf+2hNss= +github.com/lucasb-eyer/go-colorful v1.4.1/go.mod h1:R4dSotOR9KMtayYi1e77YzuveK+i7ruzyGqttikkLy0= +github.com/macabu/inamedparam v0.2.0 h1:VyPYpOc10nkhI2qeNUdh3Zket4fcZjEWe35poddBCpE= +github.com/macabu/inamedparam v0.2.0/go.mod h1:+Pee9/YfGe5LJ62pYXqB89lJ+0k5bsR8Wgz/C0Zlq3U= github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= +github.com/magiconair/properties v1.8.6 h1:5ibWZ6iY0NctNGWo87LalDlEZ6R41TqbbDamhfG/Qzo= +github.com/magiconair/properties v1.8.6/go.mod h1:y3VJvCyxH9uVvJTWEGAELF3aiYNyPKd5NZ3oSwXrF60= github.com/manifoldco/promptui v0.9.0 h1:3V4HzJk1TtXW1MTZMP7mdlwbBpIinw3HztaIlYthEiA= github.com/manifoldco/promptui v0.9.0/go.mod h1:ka04sppxSGFAtxX0qhlYQjISsg9mR4GWtQEhdbn6Pgg= +github.com/manuelarte/embeddedstructfieldcheck v0.4.0 h1:3mAIyaGRtjK6EO9E73JlXLtiy7ha80b2ZVGyacxgfww= +github.com/manuelarte/embeddedstructfieldcheck v0.4.0/go.mod h1:z8dFSyXqp+fC6NLDSljRJeNQJJDWnY7RoWFzV3PC6UM= +github.com/manuelarte/funcorder v0.6.0 h1:0hBngc4fa1IgNiI65A7sFGkMvoMCc878RjqB5V7rWP0= +github.com/manuelarte/funcorder v0.6.0/go.mod h1:id3NDhXdQBmeqXH7eVC6Z89xS6JxvZ8kF9xUxpArU/g= +github.com/maratori/testableexamples v1.0.1 h1:HfOQXs+XgfeRBJ+Wz0XfH+FHnoY9TVqL6Fcevpzy4q8= +github.com/maratori/testableexamples v1.0.1/go.mod h1:XE2F/nQs7B9N08JgyRmdGjYVGqxWwClLPCGSQhXQSrQ= +github.com/maratori/testpackage v1.1.2 h1:ffDSh+AgqluCLMXhM19f/cpvQAKygKAJXFl9aUjmbqs= +github.com/maratori/testpackage v1.1.2/go.mod h1:8F24GdVDFW5Ew43Et02jamrVMNXLUNaOynhDssITGfc= +github.com/matoous/godox v1.1.0 h1:W5mqwbyWrwZv6OQ5Z1a/DHGMOvXYCBP3+Ht7KMoJhq4= +github.com/matoous/godox v1.1.0/go.mod h1:jgE/3fUXiTurkdHOLT5WEkThTSuE7yxHv5iWPa80afs= +github.com/matryer/is v1.4.0 h1:sosSmIWwkYITGrxZ25ULNDeKiMNzFSr4V/eqBQP0PeE= +github.com/matryer/is v1.4.0/go.mod h1:8I/i5uYgLzgsgEloJE1U6xx5HkBQpAZvepWuujKwMRU= github.com/mattn/go-colorable v0.1.15 h1:+u9SLTRGnXv73cEsnsmoZBom+dMU88B2M0aDcWy0/jY= github.com/mattn/go-colorable v0.1.15/go.mod h1:6LmQG8QLFO4G5z1gPvYEzlUgJ2wF+stgPZH1UqBm1s8= github.com/mattn/go-isatty v0.0.24 h1:tGZZoVgT/KiqK1c8ocVLeDS8BSWMRd47J3Lbz7vsReI= github.com/mattn/go-isatty v0.0.24/go.mod h1:nMCL3Zebbrt45jsMDgnfIwz6ydEQApk5oEI3HqDio6A= +github.com/mattn/go-runewidth v0.0.24 h1:cpokDiIn0MGnhdHwuWnJBITySJ20QyNGnY2kR/ay2DU= +github.com/mattn/go-runewidth v0.0.24/go.mod h1:XBkDxAl56ILZc9knddidhrOlY5R/pDhgLpndooCuJAs= +github.com/mgechev/revive v1.15.0 h1:vJ0HzSBzfNyPbHKolgiFjHxLek9KUijhqh42yGoqZ8Q= +github.com/mgechev/revive v1.15.0/go.mod h1:LlAKO3QQe9OJ0pVZzI2GPa8CbXGZ/9lNpCGvK4T/a8A= github.com/mgutz/ansi v0.0.0-20200706080929-d51e80ef957d h1:5PJl274Y63IEHC+7izoQE9x6ikvDFZS2mDVS3drnohI= github.com/mgutz/ansi v0.0.0-20200706080929-d51e80ef957d/go.mod h1:01TrycV0kFyexm33Z7vhZRXopbI8J3TDReVlkTgMUxE= github.com/mitchellh/copystructure v1.2.0 h1:vpKXTN4ewci03Vljg/q9QvCGUDttBOGBIa15WveJJGw= github.com/mitchellh/copystructure v1.2.0/go.mod h1:qLl+cE2AmVv+CoeAwDPye/v+N2HKCj9FbZEVFJRxO9s= +github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y= github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= +github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY= +github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= github.com/mitchellh/reflectwalk v1.0.2 h1:G2LzWKi524PWgd3mLHV8Y5k7s6XUvT0Gef6zxSIeXaQ= github.com/mitchellh/reflectwalk v1.0.2/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= +github.com/moricho/tparallel v0.3.2 h1:odr8aZVFA3NZrNybggMkYO3rgPRcqjeQUlBBFVxKHTI= +github.com/moricho/tparallel v0.3.2/go.mod h1:OQ+K3b4Ln3l2TZveGCywybl68glfLEwFGqvnjok8b+U= +github.com/muesli/cancelreader v0.2.2 h1:3I4Kt4BQjOR54NavqnDogx/MIoWBFa0StPA8ELUXHmA= +github.com/muesli/cancelreader v0.2.2/go.mod h1:3XuTXfFS2VjM+HTLZY9Ak0l6eUKfijIfMUZ4EgX0QYo= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= +github.com/nakabonne/nestif v0.3.1 h1:wm28nZjhQY5HyYPx+weN3Q65k6ilSBxDb8v5S81B81U= +github.com/nakabonne/nestif v0.3.1/go.mod h1:9EtoZochLn5iUprVDmDjqGKPofoUEBL8U4Ngq6aY7OE= github.com/newrelic/go-agent/v3 v3.45.0 h1:6Y/NvrdVOY+UuvGDPytBDqAECuvCb2uvU6k0qq8gxnE= github.com/newrelic/go-agent/v3 v3.45.0/go.mod h1:2aY3paC/QaI9wf/qz9iD0lWP5AQ7UQ9Ks35iDA40ndU= +github.com/nishanths/exhaustive v0.12.0 h1:vIY9sALmw6T/yxiASewa4TQcFsVYZQQRUQJhKRf3Swg= +github.com/nishanths/exhaustive v0.12.0/go.mod h1:mEZ95wPIZW+x8kC4TgC+9YCUgiST7ecevsVDTgc2obs= +github.com/nishanths/predeclared v0.2.2 h1:V2EPdZPliZymNAn79T8RkNApBjMmVKh5XRpLm/w98Vk= +github.com/nishanths/predeclared v0.2.2/go.mod h1:RROzoN6TnGQupbC+lqggsOlcgysk3LMK/HI84Mp280c= github.com/nsf/jsondiff v0.0.0-20260207060731-8e8d90c4c0ac h1:4YV96Dzy2csSnhzl14/Qk5YsSrKAQusGsIADDn/4/g8= github.com/nsf/jsondiff v0.0.0-20260207060731-8e8d90c4c0ac/go.mod h1:mpRZBD8SJ55OIICQ3iWH0Yz3cjzA61JdqMLoWXeB2+8= +github.com/nunnatsa/ginkgolinter v0.24.0 h1:Mp0EagluLFP98JatP6nqp/gGEoljNG97uf9AcxcBVy8= +github.com/nunnatsa/ginkgolinter v0.24.0/go.mod h1:2ZMRuzX6+3XXyY6UZOwb6n+MCocVGbkIsDBC4vuWz5c= +github.com/onsi/ginkgo/v2 v2.32.0 h1:Hw7s2pVrQo/8Yz5N77qdnpHaoc+c6cC9WIV1Jce+J6E= +github.com/onsi/ginkgo/v2 v2.32.0/go.mod h1:+aXOY+vzZ5mu2iI2HpTZUPmM//oQfsNFX6gU9kNcA44= +github.com/onsi/gomega v1.42.1 h1:iN1rCUX+44NZ1Dc97MPoeFYbFR0vh8zxoxMFwKdyZ6I= +github.com/onsi/gomega v1.42.1/go.mod h1:REff/hsDsodHoKlWsP2mAPhu1+5/6hVYNf9rIEBpeSg= +github.com/otiai10/copy v1.2.0/go.mod h1:rrF5dJ5F0t/EWSYODDu4j9/vEeYHMkc8jt0zJChqQWw= +github.com/otiai10/copy v1.14.0 h1:dCI/t1iTdYGtkvCuBG2BgR6KZa83PTclw4U5n2wAllU= +github.com/otiai10/copy v1.14.0/go.mod h1:ECfuL02W+/FkTWZWgQqXPWZgW9oeKCSQ5qVfSc4qc4w= +github.com/otiai10/curr v0.0.0-20150429015615-9b4961190c95/go.mod h1:9qAhocn7zKJG+0mI8eUu6xqkFDYS2kb2saOteoSB3cE= +github.com/otiai10/curr v1.0.0/go.mod h1:LskTG5wDwr8Rs+nNQ+1LlxRjAtTZZjtJW4rMXl6j4vs= +github.com/otiai10/mint v1.3.0/go.mod h1:F5AjcsTsWUqX+Na9fpHb52P8pcRX2CI6A3ctIT91xUo= +github.com/otiai10/mint v1.3.1/go.mod h1:/yxELlJQ0ufhjUwhshSj+wFjZ78CnZ48/1wtmBH1OTc= github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= +github.com/pelletier/go-toml v1.9.5 h1:4yBQzkHv+7BHq2PQUZF3Mx0IYxG7LsP222s7Agd3ve8= +github.com/pelletier/go-toml v1.9.5/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c= +github.com/pelletier/go-toml/v2 v2.4.3 h1:GTRvJQutkOSftxIFD5xw9aepkYNuPWmVJpffdDPYVpY= +github.com/pelletier/go-toml/v2 v2.4.3/go.mod h1:2gIqNv+qfxSVS7cM2xJQKtLSTLUE9V8t9Stt+h56mCY= github.com/peterbourgon/diskv/v3 v3.0.1 h1:x06SQA46+PKIUftmEujdwSEpIx8kR+M9eLYsUxeYveU= github.com/peterbourgon/diskv/v3 v3.0.1/go.mod h1:kJ5Ny7vLdARGU3WUuy6uzO6T0nb/2gWcT1JiBvRmb5o= github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c h1:+mdjkGKdHQG3305AYmdv1U2eRNDiU2ErMBj1gwrq8eQ= @@ -273,6 +591,20 @@ github.com/prometheus/common v0.72.0 h1:tAYsE+sPJxIncDAobm4H5aQjmox9ZxEIIqPbiffa github.com/prometheus/common v0.72.0/go.mod h1:77NWqAQ2tXT7BIK40qjJdw5Acrsrg1TlHAnsQi3i6mk= github.com/prometheus/procfs v0.22.0 h1:6q9+/JL9IKAPbCmBrv9n5O5Ty3NKnciV5X7YGw0oics= github.com/prometheus/procfs v0.22.0/go.mod h1:CvmFr/GVhIjIvWJZW3tgkODBQMRIf0EyWMQLHCHab58= +github.com/quasilyte/go-ruleguard v0.4.5 h1:AGY0tiOT5hJX9BTdx/xBdoCubQUAE2grkqY2lSwvZcA= +github.com/quasilyte/go-ruleguard v0.4.5/go.mod h1:Vl05zJ538vcEEwu16V/Hdu7IYZWyKSwIy4c88Ro1kRE= +github.com/quasilyte/go-ruleguard/dsl v0.3.23 h1:lxjt5B6ZCiBeeNO8/oQsegE6fLeCzuMRoVWSkXC4uvY= +github.com/quasilyte/go-ruleguard/dsl v0.3.23/go.mod h1:KeCP03KrjuSO0H1kTuZQCWlQPulDV6YMIXmpQss17rU= +github.com/quasilyte/gogrep v0.5.0 h1:eTKODPXbI8ffJMN+W2aE0+oL0z/nh8/5eNdiO34SOAo= +github.com/quasilyte/gogrep v0.5.0/go.mod h1:Cm9lpz9NZjEoL1tgZ2OgeUKPIxL1meE7eo60Z6Sk+Ng= +github.com/quasilyte/regex/syntax v0.0.0-20210819130434-b3f0c404a727 h1:TCg2WBOl980XxGFEZSS6KlBGIV0diGdySzxATTWoqaU= +github.com/quasilyte/regex/syntax v0.0.0-20210819130434-b3f0c404a727/go.mod h1:rlzQ04UMyJXu/aOvhd8qT+hvDrFpiwqp8MRXDY9szc0= +github.com/quasilyte/stdinfo v0.0.0-20220114132959-f7386bf02567 h1:M8mH9eK4OUR4lu7Gd+PU1fV2/qnDNfzT635KRSObncs= +github.com/quasilyte/stdinfo v0.0.0-20220114132959-f7386bf02567/go.mod h1:DWNGW8A4Y+GyBgPuaQJuWiy0XYftx4Xm/y5Jqk9I6VQ= +github.com/raeperd/recvcheck v0.3.0 h1:PM+XYvyxIj3bo+kobJfFTdTuU3Lmfu96mKDbyHDbRt8= +github.com/raeperd/recvcheck v0.3.0/go.mod h1:PZNwG+HztFYMH2ZPq0Hu3QgkV2yiA6VrtNz9c1fXWJo= +github.com/rivo/uniseg v0.4.7 h1:WUdvkW8uEhrYfLC4ZzdpI2ztxP1I582+49Oc5Mq64VQ= +github.com/rivo/uniseg v0.4.7/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88= github.com/rogpeppe/go-internal v1.16.0 h1:O9DK+vNMDVGLr2BeZqmpLeMjiMNkuXfcqntWbZV6S5g= github.com/rogpeppe/go-internal v1.16.0/go.mod h1:DrUVZyrJU+txYW5/1kwtXQSMFio52ZOxX7yM1VHvnxs= github.com/rs/xid v1.6.0 h1:fV591PaemRlL6JfRxGDEPl69wICngIQ3shQtzfy2gxU= @@ -280,14 +612,34 @@ github.com/rs/xid v1.6.0/go.mod h1:7XoLgs4eV+QndskICGsho+ADou8ySMSjJKDIan90Nz0= github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g= github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= +github.com/ryancurrah/gomodguard v1.4.1 h1:eWC8eUMNZ/wM/PWuZBv7JxxqT5fiIKSIyTvjb7Elr+g= +github.com/ryancurrah/gomodguard v1.4.1/go.mod h1:qnMJwV1hX9m+YJseXEBhd2s90+1Xn6x9dLz11ualI1I= +github.com/ryancurrah/gomodguard/v2 v2.1.3 h1:E7sz3PJwE9Ba1reVxSpF6XLCPJZ74Kfw/LabTNM4GIA= +github.com/ryancurrah/gomodguard/v2 v2.1.3/go.mod h1:CQicdLGatWMxLX53JzoBjYlsNZhHbmLv2AVa0s2aivU= +github.com/ryanrolds/sqlclosecheck v0.6.0 h1:pEyL9okISdg1F1SEpJNlrEotkTGerv5BMk7U4AG0eVg= +github.com/ryanrolds/sqlclosecheck v0.6.0/go.mod h1:xyX16hsDaCMXHrMJ3JMzGf5OpDfHTOTTQrT7HOFUmeU= +github.com/sanposhiho/wastedassign/v2 v2.1.0 h1:crurBF7fJKIORrV85u9UUpePDYGWnwvv3+A96WvwXT0= +github.com/sanposhiho/wastedassign/v2 v2.1.0/go.mod h1:+oSmSC+9bQ+VUAxA66nBb0Z7N8CK7mscKTDYC6aIek4= +github.com/santhosh-tekuri/jsonschema/v6 v6.0.3 h1:1EYB5IzjZawrrnELUi78f9fPu57HuXjmddZPjrls/28= +github.com/santhosh-tekuri/jsonschema/v6 v6.0.3/go.mod h1:JXeL+ps8p7/KNMjDQk3TCwPpBy0wYklyWTfbkIzdIFU= +github.com/sashamelentyev/interfacebloat v1.1.0 h1:xdRdJp0irL086OyW1H/RTZTr1h/tMEOsumirXcOJqAw= +github.com/sashamelentyev/interfacebloat v1.1.0/go.mod h1:+Y9yU5YdTkrNvoX0xHc84dxiN1iBi9+G8zZIhPVoNjQ= +github.com/sashamelentyev/usestdlibvars v1.29.0 h1:8J0MoRrw4/NAXtjQqTHrbW9NN+3iMf7Knkq057v4XOQ= +github.com/sashamelentyev/usestdlibvars v1.29.0/go.mod h1:8PpnjHMk5VdeWlVb4wCdrB8PNbLqZ3wBZTZWkrpZZL8= github.com/schollz/jsonstore v1.1.0 h1:WZBDjgezFS34CHI+myb4s8GGpir3UMpy7vWoCeO0n6E= github.com/schollz/jsonstore v1.1.0/go.mod h1:15c6+9guw8vDRyozGjN3FoILt0wpruJk9Pi66vjaZfg= +github.com/securego/gosec/v2 v2.28.0 h1:ZsSdiDb0AtTpLFVol5z91gbMei9ZiLEPG/pZjZujp7c= +github.com/securego/gosec/v2 v2.28.0/go.mod h1:lb4/9AHe+lJy/kjWmWRWWsEipvbwGKuxf+tY1Pmjdnk= +github.com/sergi/go-diff v1.3.1 h1:xkr+Oxo4BOQKmkn/B9eMK0g5Kg/983T9DqqPHwYqD+8= +github.com/sergi/go-diff v1.3.1/go.mod h1:aMJSSKb2lpPvRNec0+w3fl7LP9IOFzdc9Pa4NFbPK1I= github.com/shopspring/decimal v1.4.0 h1:bxl37RwXBklmTi0C79JfXCEBD1cqqHt0bbgBAGFp81k= github.com/shopspring/decimal v1.4.0/go.mod h1:gawqmDU56v4yIKSwfBSFip1HdCCXN8/+DMd9qYNcwME= github.com/shurcooL/sanitized_anchor_name v1.0.0 h1:PdmoCO6wvbs+7yrJyMORt4/BmY5IYyJwS/kOiWx8mHo= github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= github.com/sirupsen/logrus v1.10.2 h1:G2SED73/qrAu6YwbdxOD6peLkCBI3z7L+ykJFTXJBBo= github.com/sirupsen/logrus v1.10.2/go.mod h1:SLEg8TqYulVKKfIGHldVp2K2aYz2DKSVBq4g/H5bR7Q= +github.com/sivchari/containedctx v1.0.3 h1:x+etemjbsh2fB5ewm5FeLNi5bUjK0V8n0RB+Wwfd0XE= +github.com/sivchari/containedctx v1.0.3/go.mod h1:c1RDvCbnJLtH4lLcYD/GqwiBSSf4F5Qk0xld2rBqzJ4= github.com/slackhq/nebula v1.11.2 h1:eP61cSfUuoEVGViD50gZBsAbBLPUAhoNOYewPmEwPG4= github.com/slackhq/nebula v1.11.2/go.mod h1:xz3SEyYeEhXY8MDlVu8S3Qt+SjncsSJ8bl4RXUgxtXQ= github.com/smallstep/android-attestation v0.0.0-20260722204520-a51b1564ebda h1:IfbkxDvPbdr00RD5kgdzdCkPp4ANOLgXyVI8NkWjQ+I= @@ -317,21 +669,43 @@ github.com/smallstep/zcrypto v0.0.0-20221001003018-1ab2364d2a91 h1:XE0cgVBMkYPxO github.com/smallstep/zcrypto v0.0.0-20221001003018-1ab2364d2a91/go.mod h1:9AA5+s5DF+8sE93nQ7HUalesU2SDqNfvrwn+dls9upw= github.com/smallstep/zlint v0.0.0-20220930192201-67fb4aa21910 h1:eIjaqvVEq+8eWaZd56yA7Ux5W6gJ9kqvq9ZWTsp3fkc= github.com/smallstep/zlint v0.0.0-20220930192201-67fb4aa21910/go.mod h1:GeHHT7sJDI9ti3oEaFnvx1F4N8n3ZSw2YM1+sbEoxc4= +github.com/sonatard/noctx v0.5.1 h1:wklWg9c9ZYugOAk7qG4yP4PBrlQsmSLPTvW1K4PRQMs= +github.com/sonatard/noctx v0.5.1/go.mod h1:64XdbzFb18XL4LporKXp8poqZtPKbCrqQ402CV+kJas= +github.com/sourcegraph/go-diff v0.8.0 h1:ipIyu4cTsLbIrln4l0qtHA3r0a7gyK4ntKjtQytHhvY= +github.com/sourcegraph/go-diff v0.8.0/go.mod h1:hWlcO7Al+UZStZAP8rBumHpCK5ZHQ5BXsMls8p4+F5E= github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= github.com/spaolacci/murmur3 v1.1.0 h1:7c1g84S4BPRrfL5Xrdp6fOJ206sU9y293DDHaoy0bLI= github.com/spaolacci/murmur3 v1.1.0/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= +github.com/spf13/afero v1.15.0 h1:b/YBCLWAJdFWJTN9cLhiXXcD7mzKn9Dm86dNnfyQw1I= +github.com/spf13/afero v1.15.0/go.mod h1:NC2ByUVxtQs4b3sIUphxK0NioZnmxgyCrfzeuq8lxMg= github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= github.com/spf13/cast v1.7.0 h1:ntdiHjuueXFgm5nzDRdOS4yfT43P5Fnud6DH50rz/7w= github.com/spf13/cast v1.7.0/go.mod h1:ancEpBxwJDODSW/UG4rDrAqiKolqNNh2DX3mk86cAdo= github.com/spf13/cobra v0.0.5/go.mod h1:3K3wKZymM7VvHMDS9+Akkh4K60UwM26emMESw8tLCHU= +github.com/spf13/cobra v1.10.2 h1:DMTTonx5m65Ic0GOoRY2c16WCbHxOOw6xxezuLaBpcU= +github.com/spf13/cobra v1.10.2/go.mod h1:7C1pvHqHw5A4vrJfjNwvOdzYu0Gml16OCs2GRiTUUS4= github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= +github.com/spf13/jwalterweatherman v1.1.0 h1:ue6voC5bR5F8YxI5S67j9i582FU4Qvo2bmqnqMYADFk= +github.com/spf13/jwalterweatherman v1.1.0/go.mod h1:aNWZUN0dPAAO/Ljvb5BEdw96iTZ0EXowPYD95IqWIGo= github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= +github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= +github.com/spf13/pflag v1.0.9/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= +github.com/spf13/pflag v1.0.10 h1:4EBh2KAYBwaONj6b2Ye1GiHfwjqyROoF4RwYO+vPwFk= +github.com/spf13/pflag v1.0.10/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/spf13/viper v1.3.2/go.mod h1:ZiWeW+zYFKm7srdB9IoDzzZXaJaI5eL9QjNiN/DMA2s= +github.com/spf13/viper v1.12.0 h1:CZ7eSOd3kZoaYDLbXnmzgQI5RlciuXBMA+18HwHRfZQ= +github.com/spf13/viper v1.12.0/go.mod h1:b6COn30jlNxbm/V2IqWiNWkJ+vZNiMNksliPCiuKtSI= +github.com/ssgreg/nlreturn/v2 v2.2.1 h1:X4XDI7jstt3ySqGU86YGAURbxw3oTDPK9sPEi6YEwQ0= +github.com/ssgreg/nlreturn/v2 v2.2.1/go.mod h1:E/iiPB78hV7Szg2YfRgyIrk1AD6JVMTRkkxBiELzh2I= +github.com/stbenjam/no-sprintf-host-port v0.3.1 h1:AyX7+dxI4IdLBPtDbsGAyqiTSLpCP9hWRrXQDU4Cm/g= +github.com/stbenjam/no-sprintf-host-port v0.3.1/go.mod h1:ODbZesTCHMVKthBHskvUUexdcNHAQRXk9NpSsL8p/HQ= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= github.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA= +github.com/stretchr/objx v0.5.3 h1:jmXUvGomnU1o3W/V5h2VEradbpJDwGrzugQQvL0POH4= +github.com/stretchr/objx v0.5.3/go.mod h1:rDQraq+vQZU7Fde9LOZLr8Tax6zZvy4kuNKF+QYS+U0= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= @@ -342,17 +716,67 @@ github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXl github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= github.com/stretchr/testify v1.12.1 h1:EuwCh5fleGS7H32xRwO3wRGT7DxrDhLAT6FF8MpWDWE= github.com/stretchr/testify v1.12.1/go.mod h1:MDEgiDPPsNp5cuIrHPPCyornHKgEVbtFUmoNlxoYthg= +github.com/subosito/gotenv v1.4.1 h1:jyEFiXpy21Wm81FBN71l9VoMMV8H8jG+qIK3GCpY6Qs= +github.com/subosito/gotenv v1.4.1/go.mod h1:ayKnFf/c6rvx/2iiLrJUk1e6plDbT3edrFNGqEflhK0= +github.com/tenntenn/modver v1.0.1 h1:2klLppGhDgzJrScMpkj9Ujy3rXPUspSjAcev9tSEBgA= +github.com/tenntenn/modver v1.0.1/go.mod h1:bePIyQPb7UeioSRkw3Q0XeMhYZSMx9B8ePqg6SAMGH0= +github.com/tenntenn/text/transform v0.0.0-20200319021203-7eef512accb3 h1:f+jULpRQGxTSkNYKJ51yaw6ChIqO+Je8UqsTKN/cDag= +github.com/tenntenn/text/transform v0.0.0-20200319021203-7eef512accb3/go.mod h1:ON8b8w4BN/kE1EOhwT0o+d62W65a6aPw1nouo9LMgyY= +github.com/tetafro/godot v1.5.6 h1:IEkrFCwXaYHlOn4mGzGS3F3dkP6m9t0jpwqBFPIkKiA= +github.com/tetafro/godot v1.5.6/go.mod h1:eOkMrVQurDui411nBY2FA05EYH01r14LuWY/NrVDVcU= +github.com/timakin/bodyclose v0.0.0-20260129054331-73d1f95b84b4 h1:SiHe5XLTn9sFWJ5pBwJ5FN/4j34q9ZlOAD//kMoMYp0= +github.com/timakin/bodyclose v0.0.0-20260129054331-73d1f95b84b4/go.mod h1:sDHLK7rb/59v/ZxZ7KtymgcoxuUMxjXq8gtu9VMOK8M= +github.com/timonwong/loggercheck v0.11.0 h1:jdaMpYBl+Uq9mWPXv1r8jc5fC3gyXx4/WGwTnnNKn4M= +github.com/timonwong/loggercheck v0.11.0/go.mod h1:HEAWU8djynujaAVX7QI65Myb8qgfcZ1uKbdpg3ZzKl8= +github.com/tomarrell/wrapcheck/v2 v2.12.0 h1:H/qQ1aNWz/eeIhxKAFvkfIA+N7YDvq6TWVFL27Of9is= +github.com/tomarrell/wrapcheck/v2 v2.12.0/go.mod h1:AQhQuZd0p7b6rfW+vUwHm5OMCGgp63moQ9Qr/0BpIWo= +github.com/tommy-muehle/go-mnd/v2 v2.5.1 h1:NowYhSdyE/1zwK9QCLeRb6USWdoif80Ie+v+yU8u1Zw= +github.com/tommy-muehle/go-mnd/v2 v2.5.1/go.mod h1:WsUAkMJMYww6l/ufffCD3m+P7LEvr8TnZn9lwVDlgzw= github.com/ugorji/go/codec v0.0.0-20181204163529-d75b2dcb6bc8/go.mod h1:VFNgLljTbGfSG7qAOspJ7OScBnGdDN/yBr0sguwnwf0= +github.com/ultraware/funlen v0.2.0 h1:gCHmCn+d2/1SemTdYMiKLAHFYxTYz7z9VIDRaTGyLkI= +github.com/ultraware/funlen v0.2.0/go.mod h1:ZE0q4TsJ8T1SQcjmkhN/w+MceuatI6pBFSxxyteHIJA= +github.com/ultraware/whitespace v0.2.0 h1:TYowo2m9Nfj1baEQBjuHzvMRbp19i+RCcRYrSWoFa+g= +github.com/ultraware/whitespace v0.2.0/go.mod h1:XcP1RLD81eV4BW8UhQlpaR+SDc2givTvyI8a586WjW8= github.com/urfave/cli v1.22.17 h1:SYzXoiPfQjHBbkYxbew5prZHS1TOLT3ierW8SYLqtVQ= github.com/urfave/cli v1.22.17/go.mod h1:b0ht0aqgH/6pBYzzxURyrM4xXNgsoT/n2ZzwQiEhNVo= +github.com/uudashr/gocognit v1.2.1 h1:CSJynt5txTnORn/DkhiB4mZjwPuifyASC8/6Q0I/QS4= +github.com/uudashr/gocognit v1.2.1/go.mod h1:acaubQc6xYlXFEMb9nWX2dYBzJ/bIjEkc1zzvyIZg5Q= +github.com/uudashr/iface v1.5.1 h1:BS3yrgaT55s3dAtJoxuTnsZNbsejq/mVuzp49YDyfBA= +github.com/uudashr/iface v1.5.1/go.mod h1:5UWoT6SvTdTww/KToRj6clO+n4Kg3/NrAQvgOB+5Ggw= github.com/weppos/publicsuffix-go v0.12.0/go.mod h1:z3LCPQ38eedDQSwmsSRW4Y7t2L8Ln16JPQ02lHAdn5k= github.com/weppos/publicsuffix-go v0.20.0 h1:59ypvSUbW3Dunc6zVm+v+MmXf2Q6cGiNDkxgRIzEnaA= github.com/weppos/publicsuffix-go v0.20.0/go.mod h1:5ZC/Uv3fIEUE0eP6o9+Yg4+5+W8V0/BieMi05feGXVA= github.com/weppos/publicsuffix-go/publicsuffix/generator v0.0.0-20220704091424-e0182326a282/go.mod h1:GHfoeIdZLdZmLjMlzBftbTDntahTttUMWjxZwQJhULE= github.com/x448/float16 v0.8.4 h1:qLwI1I70+NjRFUR3zs1JPUCgaCXSh3SW62uAKT1mSBM= github.com/x448/float16 v0.8.4/go.mod h1:14CWIYCyZA/cWjXOioeEpHeN/83MdbZDRQHoFcYsOfg= +github.com/xen0n/gosmopolitan v1.3.0 h1:zAZI1zefvo7gcpbCOrPSHJZJYA9ZgLfJqtKzZ5pHqQM= +github.com/xen0n/gosmopolitan v1.3.0/go.mod h1:rckfr5T6o4lBtM1ga7mLGKZmLxswUoH1zxHgNXOsEt4= +github.com/xo/terminfo v0.0.0-20220910002029-abceb7e1c41e h1:JVG44RsyaB9T2KIHavMF/ppJZNG9ZpyihvCd0w101no= +github.com/xo/terminfo v0.0.0-20220910002029-abceb7e1c41e/go.mod h1:RbqR21r5mrJuqunuUZ/Dhy/avygyECGrLceyNeo4LiM= github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q= +github.com/yagipy/maintidx v1.0.0 h1:h5NvIsCz+nRDapQ0exNv4aJ0yXSI0420omVANTv3GJM= +github.com/yagipy/maintidx v1.0.0/go.mod h1:0qNf/I/CCZXSMhsRsrEPDZ+DkekpKLXAJfsTACwgXLk= +github.com/yeya24/promlinter v0.3.0 h1:JVDbMp08lVCP7Y6NP3qHroGAO6z2yGKQtS5JsjqtoFs= +github.com/yeya24/promlinter v0.3.0/go.mod h1:cDfJQQYv9uYciW60QT0eeHlFodotkYZlL+YcPQN+mW4= +github.com/ykadowak/zerologlint v0.1.5 h1:Gy/fMz1dFQN9JZTPjv1hxEk+sRWm05row04Yoolgdiw= +github.com/ykadowak/zerologlint v0.1.5/go.mod h1:KaUskqF3e/v59oPmdq1U1DnKcuHokl2/K1U4pmIELKg= +github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.4.1/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= +gitlab.com/bosi/decorder v0.4.2 h1:qbQaV3zgwnBZ4zPMhGLW4KZe7A7NwxEhJx39R3shffo= +gitlab.com/bosi/decorder v0.4.2/go.mod h1:muuhHoaJkA9QLcYHq4Mj8FJUwDZ+EirSHRiaTcTf6T8= +go-simpler.org/assert v0.9.0 h1:PfpmcSvL7yAnWyChSjOz6Sp6m9j5lyK8Ok9pEL31YkQ= +go-simpler.org/assert v0.9.0/go.mod h1:74Eqh5eI6vCK6Y5l3PI8ZYFXG4Sa+tkr70OIPJAUr28= +go-simpler.org/musttag v0.14.0 h1:XGySZATqQYSEV3/YTy+iX+aofbZZllJaqwFWs+RTtSo= +go-simpler.org/musttag v0.14.0/go.mod h1:uP8EymctQjJ4Z1kUnjX0u2l60WfUdQxCwSNKzE1JEOE= +go-simpler.org/sloglint v0.12.0 h1:UzWDlLWNE5FLqsvyq3tWYHuQMbqrervOhT8qPl4Mmw4= +go-simpler.org/sloglint v0.12.0/go.mod h1:jBjjC2bm8rYrs88oTRlFX497kWjJsyZWYoNaXkGRI6I= +go.augendre.info/arangolint v0.4.0 h1:xSCZjRoS93nXazBSg5d0OGCi9APPLNMmmLrC995tR50= +go.augendre.info/arangolint v0.4.0/go.mod h1:l+f/b4plABuFISuKnTGD4RioXiCCgghv2xqst/xOvAA= +go.augendre.info/fatcontext v0.10.0 h1:HhFopmivh8U1+AU7f0kuwUeg2eiIns7YsGQOMHwSJ90= +go.augendre.info/fatcontext v0.10.0/go.mod h1:pqpGvA9GlrXy+aXkp8L2dKz12Zp4g2FhzcAtwToU+2w= go.etcd.io/bbolt v1.4.3 h1:dEadXpI6G79deX5prL3QRNP6JB8UxVkqo4UPnHaNXJo= go.etcd.io/bbolt v1.4.3/go.mod h1:tKQlpPaYCVFctUIgFKFnAlvbmB3tpy1vkTnDWohtc0E= go.mozilla.org/pkcs7 v0.10.0 h1:jmljzDzNYFzaP1dFlgmCiQml9e+iEMmv8/NNs4evQbg= @@ -383,12 +807,17 @@ go.uber.org/mock v0.6.0 h1:hyF9dfmbgIX5EfOdasqLsWD6xqpNZlXblLB/Dbnwv3Y= go.uber.org/mock v0.6.0/go.mod h1:KiVJ4BqZJaMj4svdfmHM0AUx4NJYO8ZNpPnZn1Z+BBU= go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= +go.uber.org/zap v1.27.0 h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8= +go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= go.yaml.in/yaml/v2 v2.4.4 h1:tuyd0P+2Ont/d6e2rl3be67goVK4R6deVxCUX5vyPaQ= go.yaml.in/yaml/v2 v2.4.4/go.mod h1:gMZqIpDtDqOfM0uNfy0SkpRhvUryYH0Z6wdMYcacYXQ= +go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg= go.yaml.in/yaml/v3 v3.0.5 h1:N6y/pJk8buWs9NY5ERU2HSMfm+IuD/OtfdAnq6kESPw= go.yaml.in/yaml/v3 v3.0.5/go.mod h1:HVTZu1O7/Vkt2N+BFy8Zza+lnLsABggaTM2ZpNIGuKg= golang.org/x/crypto v0.0.0-20181203042331-505ab145d0a9/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.13.0/go.mod h1:y6Z2r+Rw4iayiXXAIxJIDAJ1zMW4yaTpebo8fPOliYc= golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU= @@ -396,14 +825,31 @@ golang.org/x/crypto v0.23.0/go.mod h1:CKFgDieR+mRhux2Lsu27y0fO304Db0wZe70UKqHu0v golang.org/x/crypto v0.33.0/go.mod h1:bVdXmD7IV/4GdElGPozy6U7lWdRXA4qyRVGJV57uQ5M= golang.org/x/crypto v0.58.0 h1:COkYLr4k7nDI4r6QtMML2AfzeIswWHAJthLS6K/M/54= golang.org/x/crypto v0.58.0/go.mod h1:Xh+kl5A+M0gMiWDytH2Hhr5Z7WbNCpv/eB/EFgfSk+w= +golang.org/x/exp v0.0.0-20250620022241-b7579e27df2b h1:M2rDM6z3Fhozi9O7NWsxAkg/yqS/lQJ6PmkyIV3YP+o= +golang.org/x/exp v0.0.0-20250620022241-b7579e27df2b/go.mod h1:3//PLf8L/X+8b4vuAfHzxeRUl04Adcb341+IGKfnqS8= +golang.org/x/exp/typeparams v0.0.0-20220428152302-39d4317da171/go.mod h1:AbB0pIl9nAr9wVwH+Z2ZpaocVmF5I4GyWCDIsVjR0bk= +golang.org/x/exp/typeparams v0.0.0-20230203172020-98cc5a0785f9/go.mod h1:AbB0pIl9nAr9wVwH+Z2ZpaocVmF5I4GyWCDIsVjR0bk= +golang.org/x/exp/typeparams v0.0.0-20260811152304-ee035b5b010f h1:+lI8cDJ4uceLipg2f1ODay7fEuLkk0BIHXd6PB8icxo= +golang.org/x/exp/typeparams v0.0.0-20260811152304-ee035b5b010f/go.mod h1:PqrXSW65cXDZH0k4IeUbhmg/bcAZDbzNz3byBpKCsXo= +golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.6.0-dev.0.20220106191415-9b9b3d81d5e3/go.mod h1:3p9vT2HGsQu2K1YbXdKPJLVgG5VJdoTa1poYQBtP1AY= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.15.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= golang.org/x/mod v0.17.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= +golang.org/x/mod v0.42.0 h1:ICeL3t2L30ljSPHHxDnR4fqVcBt/zR2zJAb9juavmQg= +golang.org/x/mod v0.42.0/go.mod h1:u5fzIrRInkL8MaO1cbRkUHT64v303YIT5KEqpNr7jRs= +golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20211015210444-4f30a5c0130f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= @@ -415,6 +861,10 @@ golang.org/x/net v0.62.0/go.mod h1:WgDCOTH8iwtB66T4/GfI94AHo/hhdb7Hah9NDseQfiI= golang.org/x/oauth2 v0.37.0 h1:JUlcxA8oAtauLfiH8FX2/FkAWHAdi0QtGCGc+hofE98= golang.org/x/oauth2 v0.37.0/go.mod h1:IxwZNxUULJmpBFf9K/9NTMSIfZZuvuTy1gGxhigP/58= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= @@ -426,9 +876,16 @@ golang.org/x/sync v0.24.0/go.mod h1:sUUOizhqBxiL6pEWpqNLUiaJn1ShEbZ6BBqskPbjZm0= golang.org/x/sys v0.0.0-20181122145206-62eef0e2fa9b/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181205085412-a5c9d58dba9a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190626221950-04f50cda93cb/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20211019181941-9d821ace8654/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20211105183446-c75c47738b0c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220310020820-b874c991c1a5/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-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= @@ -443,6 +900,8 @@ golang.org/x/sys v0.30.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.49.0 h1:XbzkgYJHdqh/8m2Uu0W/dQv8nktxx4BFHp1M0gROTXA= golang.org/x/sys v0.49.0/go.mod h1:hNLxWAXmnKAxqDtdwIYC4bM9oQPEecfsnNMuSxOs3og= golang.org/x/telemetry v0.0.0-20240228155512-f48c80bd79b2/go.mod h1:TeRTkGYfJXctD9OcfyVLyj2J3IxLnKwHJR8f4D8a3YE= +golang.org/x/telemetry v0.0.0-20261010193011-f71dc92da45e h1:P6NGsugec4oASJ+yKMNgTndeo0h2CbixZLvQIe9h5R4= +golang.org/x/telemetry v0.0.0-20261010193011-f71dc92da45e/go.mod h1:GNu+nb+E5axfGmP+Uu3ZVQu5lE/Xk42MjZOHWUD94/o= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= @@ -454,7 +913,9 @@ golang.org/x/term v0.29.0/go.mod h1:6bl4lRlvVuDgSf3179VpIxBF0o10JUpXWOnI7nErv7s= golang.org/x/term v0.47.0 h1:cpyOwQkr2Nzxe2p6KnrTG7Ei2wtzjsuSjhpXXepZ/BM= golang.org/x/term v0.47.0/go.mod h1:efAfAuG6RKABvg1ArGebRkvX6LXul14SM67o2e4mUCY= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= @@ -468,13 +929,27 @@ golang.org/x/time v0.16.0 h1:vMb6ptszcQMkcwiRTAuNNU50gom6++Q/6gY2hDM6VDE= golang.org/x/time v0.16.0/go.mod h1:rVKOqvZeKvrDKTQiAHJ7wmwP0RzleSphoEA9RcdLA0s= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20200329025819-fd4102a86c65/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= +golang.org/x/tools v0.0.0-20200724022722-7017fd6b1305/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= +golang.org/x/tools v0.1.1-0.20210205202024-ef80cdb6ec6d/go.mod h1:9bzcO0MWcOuT0tm1iBGzDVPshzfwoVvREIui8C+MHqU= +golang.org/x/tools v0.1.1-0.20210302220138-2ac05c832e1a/go.mod h1:9bzcO0MWcOuT0tm1iBGzDVPshzfwoVvREIui8C+MHqU= +golang.org/x/tools v0.1.10/go.mod h1:Uh6Zz+xoGYZom868N8YTex3t7RhtHDBrE8Gzo9bV56E= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= golang.org/x/tools v0.13.0/go.mod h1:HvlwmtVNQAhOuCjW7xxvovg8wbNq7LwfXh/k7wXUl58= golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d/go.mod h1:aiJjzUbINMkxbQROHiO6hDPo2LHcIPhhQsa9DLh0yGk= -golang.org/x/tools v0.51.0 h1:k4Xc/1Om9jwkBJBo4NVLMSARBoWtK10mx+W5BnXCeAI= -golang.org/x/tools v0.51.0/go.mod h1:9eEncMayCV6zRMGhR5eZEC2iBx98qWcF1HZ9Z7wJOoA= +golang.org/x/tools v0.52.0 h1:ryxg4U63oaUYk7uOLTF37n43f4qgtGvqV4Ioit1BaEs= +golang.org/x/tools v0.52.0/go.mod h1:ItcP5UNaVGG+Yc4eIYmaFLNJ4soEopkx5Y2d4lcEurs= +golang.org/x/tools/go/expect v0.1.1-deprecated h1:jpBZDwmgPhXsKZC6WhL20P4b/wmnpsEAGHaNy0n/rJM= +golang.org/x/tools/go/expect v0.1.1-deprecated/go.mod h1:eihoPOH+FgIqa3FpoTwguz/bVUSGBlGQU67vpBeOrBY= +golang.org/x/tools/go/packages/packagestest v0.1.1-deprecated h1:1h2MnaIAIXISqTFKdENegdpAgUXz6NrPEsbIeWaBRvM= +golang.org/x/tools/go/packages/packagestest v0.1.1-deprecated/go.mod h1:RVAQXBGNv1ib0J382/DPCRS/BPnsGebyM1Gj5VSDpG8= +golang.org/x/vuln v1.9.0 h1:12VaqnI9kJfqwRoPptxoqsUhQtdfrSbdksT7X/KY/sc= +golang.org/x/vuln v1.9.0/go.mod h1:E/Frwm0xp49fTyBW+6CQHdkvobknbwUM49yEpMGUauw= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= gonum.org/v1/gonum v0.17.0 h1:VbpOemQlsSMrYmn7T2OUvQ4dqxQXU+ouZFQsZOx50z4= gonum.org/v1/gonum v0.17.0/go.mod h1:El3tOrEuMpv2UdMrbNlKEh9vd86bmQ6vqIcDwxEOc1E= google.golang.org/api v0.310.0 h1:537ccDDmbwuwX1iof3Vtdz9vow6uJCgrSZJWedAWM0I= @@ -495,12 +970,26 @@ gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8 gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= +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/yaml.v1 v1.0.0-20140924161607-9f9df34309c0/go.mod h1:WDnlLJ4WF5VGsH/HVa3CI79GS0ol3YnhVnKP89i0kNg= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gotest.tools/gotestsum v1.13.0 h1:+Lh454O9mu9AMG1APV4o0y7oDYKyik/3kBOiCqiEpRo= +gotest.tools/gotestsum v1.13.0/go.mod h1:7f0NS5hFb0dWr4NtcsAsF0y1kzjEFfAil0HiBQJE03Q= +gotest.tools/v3 v3.5.2 h1:7koQfIKdy+I8UTetycgUqXWSDwpgv193Ka+qRsmBY8Q= +gotest.tools/v3 v3.5.2/go.mod h1:LtdLGcnqToBH83WByAAi/wiwSFCArdFIUV/xxN4pcjA= +honnef.co/go/tools v0.8.1 h1:+JKf3xJ1ni4CwrhVg4/pqsfPGP6vNAXcKbMXJodYx3w= +honnef.co/go/tools v0.8.1/go.mod h1:XA+OnlRA9EDh/ukGvXMNSZNKGwFQJ+5dER0ioUkOxks= howett.net/plist v1.0.0 h1:7CrbWYbPPO/PyNy38b2EB/+gYbjCe2DXBxgtOOZbSQM= howett.net/plist v1.0.0/go.mod h1:lqaXoTrLY4hg8tnEzNru53gicrbv7rrk+2xJA/7hw9g= +mvdan.cc/gofumpt v0.11.0 h1:0H01XB95PnN2QgCSR9ELdZyTlJqNZ7181B0BTMh5VZc= +mvdan.cc/gofumpt v0.11.0/go.mod h1:BeT5wCsOJt6J9zT2MZIOGszjUHzFkn1/l9g6xAzqsXo= +mvdan.cc/unparam v0.0.0-20260823230713-2fa3d841b0c8 h1:Re1NRyLpiAt9kB+ImaaoapwWiQXrKwER4tY8fLOkDew= +mvdan.cc/unparam v0.0.0-20260823230713-2fa3d841b0c8/go.mod h1:MrS/+zJ1M2xvGXhKktiHbNQeQPyg3Qel+KkzT+f7/i4= software.sslmate.com/src/go-pkcs12 v0.7.4 h1:OvJ7g/OB9RuVAOzahlFLns6HeIcP+SJotsDqmLfhd8w= software.sslmate.com/src/go-pkcs12 v0.7.4/go.mod h1:Qiz0EyvDRJjjxGyUQa2cCNZn/wMyzrRJ/qcDXOQazLI= From 83831f999804ca56b955cf86043cc51ffd323abf Mon Sep 17 00:00:00 2001 From: Mariano Cano Date: Fri, 6 Nov 2026 17:55:36 -0800 Subject: [PATCH 7/8] Format imports using the local prefix Run make fmt, which now uses github.com/smallstep/cli as the local prefix. This only changes the grouping of imports. Co-Authored-By: Claude Opus 5.5 --- cmd/step/main.go | 1 + command/ca/acme/eab/add.go | 1 + command/ca/acme/eab/list.go | 1 + command/ca/admin/add.go | 3 ++- command/ca/admin/admin.go | 3 ++- command/ca/admin/list.go | 3 ++- command/ca/admin/update.go | 3 ++- command/ca/certificate.go | 3 ++- command/ca/federation.go | 3 ++- command/ca/health.go | 1 + command/ca/init.go | 7 ++++--- command/ca/policy/actions/policy.go | 3 ++- command/ca/policy/actions/remove.go | 1 + command/ca/policy/actions/view.go | 3 ++- command/ca/policy/x509/wildcards.go | 3 ++- command/ca/provisioner/add.go | 5 +++-- command/ca/provisioner/caConfigClient.go | 3 ++- command/ca/provisioner/getEncryptedKey.go | 1 + command/ca/provisioner/list.go | 1 + command/ca/provisioner/provisioner.go | 3 ++- command/ca/provisioner/remove.go | 1 + command/ca/provisioner/update.go | 1 + command/ca/provisioner/webhook/add.go | 3 ++- command/ca/provisioner/webhook/update.go | 3 ++- command/ca/provisioner/webhook/webhook.go | 3 ++- command/ca/rekey.go | 5 +++-- command/ca/renew.go | 7 ++++--- command/ca/revoke.go | 7 ++++--- command/ca/root.go | 3 ++- command/ca/sign.go | 3 ++- command/ca/token.go | 5 +++-- command/certificate/create.go | 7 ++++--- command/certificate/fingerprint.go | 3 ++- command/certificate/inspect.go | 3 ++- command/certificate/install.go | 5 +++-- command/certificate/key.go | 3 ++- command/certificate/lint.go | 3 ++- command/certificate/needsRenewal.go | 3 ++- command/certificate/p12.go | 5 +++-- command/certificate/sign.go | 5 +++-- command/certificate/verify.go | 3 ++- command/crl/inspect.go | 5 +++-- command/crypto/change-pass.go | 5 +++-- command/crypto/jwe/decrypt.go | 3 ++- command/crypto/jwk/keyset.go | 3 ++- command/crypto/jwk/public.go | 3 ++- command/crypto/jwk/thumbprint.go | 3 ++- command/crypto/jws/sign.go | 3 ++- command/crypto/jws/verify.go | 3 ++- command/crypto/jwt/sign.go | 3 ++- command/crypto/jwt/verify.go | 3 ++- command/crypto/key/fingerprint.go | 3 ++- command/crypto/key/format.go | 9 +++++---- command/crypto/key/inspect.go | 5 +++-- command/crypto/key/public.go | 5 +++-- command/crypto/key/sign.go | 5 +++-- command/crypto/key/verify.go | 5 +++-- command/crypto/keypair.go | 7 ++++--- command/oauth/cmd.go | 5 +++-- command/ssh/certificate.go | 5 +++-- command/ssh/checkHost.go | 3 ++- command/ssh/config.go | 3 ++- command/ssh/fingerprint.go | 3 ++- command/ssh/hosts.go | 1 + command/ssh/login.go | 3 ++- command/ssh/proxycommand.go | 3 ++- command/ssh/rekey.go | 1 + command/ssh/renew.go | 1 + command/ssh/revoke.go | 1 + command/ssh/ssh.go | 3 ++- exec/exec.go | 1 + internal/cmd/root.go | 5 +++-- internal/cryptoutil/cryptoutil.go | 3 ++- internal/kdf/argon2.go | 1 + internal/sshutil/agent.go | 3 ++- token/provision/provision.go | 3 ++- token/provision/provision_test.go | 3 ++- utils/cautils/acme_flow.go | 3 ++- utils/cautils/acmeutils.go | 7 ++++--- utils/cautils/bootstrap.go | 5 +++-- utils/cautils/certificate_flow.go | 7 ++++--- utils/cautils/client.go | 1 + utils/cautils/token_flow.go | 1 + utils/cautils/token_generator.go | 5 +++-- utils/cautils/tpm.go | 5 +++-- 85 files changed, 188 insertions(+), 103 deletions(-) diff --git a/cmd/step/main.go b/cmd/step/main.go index 8dc5e7b1..9ac58921 100644 --- a/cmd/step/main.go +++ b/cmd/step/main.go @@ -2,6 +2,7 @@ package main import ( "github.com/smallstep/certificates/ca" + "github.com/smallstep/cli-utils/step" "github.com/smallstep/cli/internal/cmd" diff --git a/command/ca/acme/eab/add.go b/command/ca/acme/eab/add.go index 96c26979..cb07f9a1 100644 --- a/command/ca/acme/eab/add.go +++ b/command/ca/acme/eab/add.go @@ -8,6 +8,7 @@ import ( "github.com/urfave/cli" adminAPI "github.com/smallstep/certificates/authority/admin/api" + "github.com/smallstep/cli-utils/errs" "github.com/smallstep/cli/flags" diff --git a/command/ca/acme/eab/list.go b/command/ca/acme/eab/list.go index 2b9566a5..67631a44 100644 --- a/command/ca/acme/eab/list.go +++ b/command/ca/acme/eab/list.go @@ -11,6 +11,7 @@ import ( "github.com/urfave/cli" "github.com/smallstep/certificates/ca" + "github.com/smallstep/cli-utils/errs" "github.com/smallstep/cli/flags" diff --git a/command/ca/admin/add.go b/command/ca/admin/add.go index 5ccdee6e..77611ca9 100644 --- a/command/ca/admin/add.go +++ b/command/ca/admin/add.go @@ -8,9 +8,10 @@ import ( "github.com/urfave/cli" adminAPI "github.com/smallstep/certificates/authority/admin/api" - "github.com/smallstep/cli-utils/errs" "github.com/smallstep/linkedca" + "github.com/smallstep/cli-utils/errs" + "github.com/smallstep/cli/flags" "github.com/smallstep/cli/utils/cautils" ) diff --git a/command/ca/admin/admin.go b/command/ca/admin/admin.go index 73944753..3609b4a0 100644 --- a/command/ca/admin/admin.go +++ b/command/ca/admin/admin.go @@ -7,9 +7,10 @@ import ( "github.com/urfave/cli" "github.com/smallstep/certificates/ca" + "github.com/smallstep/linkedca" + "github.com/smallstep/cli-utils/errs" "github.com/smallstep/cli-utils/ui" - "github.com/smallstep/linkedca" ) // Command returns the jwk subcommand. diff --git a/command/ca/admin/list.go b/command/ca/admin/list.go index c3e33a29..a5ac546d 100644 --- a/command/ca/admin/list.go +++ b/command/ca/admin/list.go @@ -7,9 +7,10 @@ import ( "github.com/urfave/cli" - "github.com/smallstep/cli-utils/errs" "github.com/smallstep/linkedca" + "github.com/smallstep/cli-utils/errs" + "github.com/smallstep/cli/flags" "github.com/smallstep/cli/utils/cautils" ) diff --git a/command/ca/admin/update.go b/command/ca/admin/update.go index e01d8f2e..5c987b37 100644 --- a/command/ca/admin/update.go +++ b/command/ca/admin/update.go @@ -8,9 +8,10 @@ import ( "github.com/urfave/cli" adminAPI "github.com/smallstep/certificates/authority/admin/api" - "github.com/smallstep/cli-utils/errs" "github.com/smallstep/linkedca" + "github.com/smallstep/cli-utils/errs" + "github.com/smallstep/cli/flags" "github.com/smallstep/cli/utils/cautils" ) diff --git a/command/ca/certificate.go b/command/ca/certificate.go index 74ea4db9..e1e57c7c 100644 --- a/command/ca/certificate.go +++ b/command/ca/certificate.go @@ -7,11 +7,12 @@ import ( "github.com/pkg/errors" "github.com/urfave/cli" + "go.step.sm/crypto/pemutil" + "github.com/smallstep/cli-utils/command" "github.com/smallstep/cli-utils/errs" "github.com/smallstep/cli-utils/step" "github.com/smallstep/cli-utils/ui" - "go.step.sm/crypto/pemutil" "github.com/smallstep/cli/flags" "github.com/smallstep/cli/token" diff --git a/command/ca/federation.go b/command/ca/federation.go index a1f3da74..de91d2ef 100644 --- a/command/ca/federation.go +++ b/command/ca/federation.go @@ -11,11 +11,12 @@ import ( "github.com/smallstep/certificates/api" "github.com/smallstep/certificates/ca" "github.com/smallstep/certificates/pki" + "go.step.sm/crypto/pemutil" + "github.com/smallstep/cli-utils/command" "github.com/smallstep/cli-utils/errs" "github.com/smallstep/cli-utils/fileutil" "github.com/smallstep/cli-utils/ui" - "go.step.sm/crypto/pemutil" "github.com/smallstep/cli/flags" ) diff --git a/command/ca/health.go b/command/ca/health.go index 3ad013c5..cfb6ceb6 100644 --- a/command/ca/health.go +++ b/command/ca/health.go @@ -9,6 +9,7 @@ import ( "github.com/smallstep/certificates/ca" "github.com/smallstep/certificates/pki" + "github.com/smallstep/cli-utils/errs" "github.com/smallstep/cli/flags" diff --git a/command/ca/init.go b/command/ca/init.go index 37fc6066..06786d0e 100644 --- a/command/ca/init.go +++ b/command/ca/init.go @@ -18,13 +18,14 @@ import ( "github.com/smallstep/certificates/cas/apiv1" "github.com/smallstep/certificates/pki" - "github.com/smallstep/cli-utils/errs" - "github.com/smallstep/cli-utils/step" - "github.com/smallstep/cli-utils/ui" "go.step.sm/crypto/kms" _ "go.step.sm/crypto/kms/azurekms" // enable azurekms "go.step.sm/crypto/pemutil" + "github.com/smallstep/cli-utils/errs" + "github.com/smallstep/cli-utils/step" + "github.com/smallstep/cli-utils/ui" + "github.com/smallstep/cli/flags" "github.com/smallstep/cli/utils" "github.com/smallstep/cli/utils/cautils" diff --git a/command/ca/policy/actions/policy.go b/command/ca/policy/actions/policy.go index 82b77f95..8f6626a1 100644 --- a/command/ca/policy/actions/policy.go +++ b/command/ca/policy/actions/policy.go @@ -10,9 +10,10 @@ import ( "google.golang.org/protobuf/encoding/protojson" "github.com/smallstep/certificates/ca" - "github.com/smallstep/cli-utils/errs" "github.com/smallstep/linkedca" + "github.com/smallstep/cli-utils/errs" + "github.com/smallstep/cli/command/ca/policy/policycontext" "github.com/smallstep/cli/internal/command" ) diff --git a/command/ca/policy/actions/remove.go b/command/ca/policy/actions/remove.go index 7171329f..6d49c050 100644 --- a/command/ca/policy/actions/remove.go +++ b/command/ca/policy/actions/remove.go @@ -8,6 +8,7 @@ import ( "github.com/urfave/cli" "github.com/smallstep/certificates/ca" + "github.com/smallstep/cli-utils/errs" "github.com/smallstep/cli/command/ca/policy/policycontext" diff --git a/command/ca/policy/actions/view.go b/command/ca/policy/actions/view.go index 543dc36c..37bb028e 100644 --- a/command/ca/policy/actions/view.go +++ b/command/ca/policy/actions/view.go @@ -8,9 +8,10 @@ import ( "github.com/urfave/cli" "github.com/smallstep/certificates/ca" - "github.com/smallstep/cli-utils/errs" "github.com/smallstep/linkedca" + "github.com/smallstep/cli-utils/errs" + "github.com/smallstep/cli/command/ca/policy/policycontext" "github.com/smallstep/cli/flags" "github.com/smallstep/cli/internal/command" diff --git a/command/ca/policy/x509/wildcards.go b/command/ca/policy/x509/wildcards.go index 108d4945..0c9e8321 100644 --- a/command/ca/policy/x509/wildcards.go +++ b/command/ca/policy/x509/wildcards.go @@ -3,10 +3,11 @@ package x509 import ( "context" + "github.com/urfave/cli" + "github.com/smallstep/cli/command/ca/policy/actions" "github.com/smallstep/cli/flags" "github.com/smallstep/cli/internal/command" - "github.com/urfave/cli" ) var provisionerFilterFlag = cli.StringFlag{ diff --git a/command/ca/provisioner/add.go b/command/ca/provisioner/add.go index af110771..f8a8b13d 100644 --- a/command/ca/provisioner/add.go +++ b/command/ca/provisioner/add.go @@ -15,13 +15,14 @@ import ( "github.com/pkg/errors" "github.com/urfave/cli" - "github.com/smallstep/cli-utils/errs" - "github.com/smallstep/cli-utils/ui" "github.com/smallstep/linkedca" "go.step.sm/crypto/jose" "go.step.sm/crypto/mldsa" "go.step.sm/crypto/pemutil" + "github.com/smallstep/cli-utils/errs" + "github.com/smallstep/cli-utils/ui" + "github.com/smallstep/cli/flags" "github.com/smallstep/cli/internal/cast" "github.com/smallstep/cli/internal/sliceutil" diff --git a/command/ca/provisioner/caConfigClient.go b/command/ca/provisioner/caConfigClient.go index eceb20a6..d096e55c 100644 --- a/command/ca/provisioner/caConfigClient.go +++ b/command/ca/provisioner/caConfigClient.go @@ -9,8 +9,9 @@ import ( "github.com/smallstep/certificates/authority/config" "github.com/smallstep/certificates/authority/provisioner" "github.com/smallstep/certificates/ca" - "github.com/smallstep/cli-utils/ui" "github.com/smallstep/linkedca" + + "github.com/smallstep/cli-utils/ui" ) // nodb implements the certificates/Adminclient interface with noops. diff --git a/command/ca/provisioner/getEncryptedKey.go b/command/ca/provisioner/getEncryptedKey.go index 1c9a78b8..66724109 100644 --- a/command/ca/provisioner/getEncryptedKey.go +++ b/command/ca/provisioner/getEncryptedKey.go @@ -7,6 +7,7 @@ import ( "github.com/urfave/cli" "github.com/smallstep/certificates/pki" + "github.com/smallstep/cli-utils/errs" "github.com/smallstep/cli/flags" diff --git a/command/ca/provisioner/list.go b/command/ca/provisioner/list.go index 4e5efeec..b7352a3c 100644 --- a/command/ca/provisioner/list.go +++ b/command/ca/provisioner/list.go @@ -8,6 +8,7 @@ import ( "github.com/urfave/cli" "github.com/smallstep/certificates/pki" + "github.com/smallstep/cli-utils/errs" "github.com/smallstep/cli/flags" diff --git a/command/ca/provisioner/provisioner.go b/command/ca/provisioner/provisioner.go index c0e9bcff..cec0a126 100644 --- a/command/ca/provisioner/provisioner.go +++ b/command/ca/provisioner/provisioner.go @@ -13,9 +13,10 @@ import ( "github.com/smallstep/certificates/authority/config" "github.com/smallstep/certificates/authority/provisioner" "github.com/smallstep/certificates/ca" + "github.com/smallstep/linkedca" + "github.com/smallstep/cli-utils/errs" "github.com/smallstep/cli-utils/ui" - "github.com/smallstep/linkedca" "github.com/smallstep/cli/command/ca/provisioner/webhook" "github.com/smallstep/cli/utils" diff --git a/command/ca/provisioner/remove.go b/command/ca/provisioner/remove.go index f4d0855e..f820a910 100644 --- a/command/ca/provisioner/remove.go +++ b/command/ca/provisioner/remove.go @@ -4,6 +4,7 @@ import ( "github.com/urfave/cli" "github.com/smallstep/certificates/ca" + "github.com/smallstep/cli-utils/errs" "github.com/smallstep/cli/flags" ) diff --git a/command/ca/provisioner/update.go b/command/ca/provisioner/update.go index 5ecd7f34..733be5d2 100644 --- a/command/ca/provisioner/update.go +++ b/command/ca/provisioner/update.go @@ -14,6 +14,7 @@ import ( "github.com/urfave/cli" "github.com/smallstep/certificates/ca" + "github.com/smallstep/cli-utils/errs" "github.com/smallstep/cli-utils/ui" diff --git a/command/ca/provisioner/webhook/add.go b/command/ca/provisioner/webhook/add.go index d6dda214..305c00fd 100644 --- a/command/ca/provisioner/webhook/add.go +++ b/command/ca/provisioner/webhook/add.go @@ -5,9 +5,10 @@ import ( "github.com/urfave/cli" - "github.com/smallstep/cli-utils/errs" "github.com/smallstep/linkedca" + "github.com/smallstep/cli-utils/errs" + "github.com/smallstep/cli/flags" "github.com/smallstep/cli/utils" ) diff --git a/command/ca/provisioner/webhook/update.go b/command/ca/provisioner/webhook/update.go index abcbbdac..3f7753f2 100644 --- a/command/ca/provisioner/webhook/update.go +++ b/command/ca/provisioner/webhook/update.go @@ -7,9 +7,10 @@ import ( "github.com/urfave/cli" "github.com/smallstep/certificates/ca" - "github.com/smallstep/cli-utils/errs" "github.com/smallstep/linkedca" + "github.com/smallstep/cli-utils/errs" + "github.com/smallstep/cli/flags" "github.com/smallstep/cli/utils" ) diff --git a/command/ca/provisioner/webhook/webhook.go b/command/ca/provisioner/webhook/webhook.go index b4ac65a2..08741827 100644 --- a/command/ca/provisioner/webhook/webhook.go +++ b/command/ca/provisioner/webhook/webhook.go @@ -9,9 +9,10 @@ import ( "github.com/smallstep/certificates/authority/config" "github.com/smallstep/certificates/ca" + "github.com/smallstep/linkedca" + "github.com/smallstep/cli-utils/errs" "github.com/smallstep/cli-utils/ui" - "github.com/smallstep/linkedca" "github.com/smallstep/cli/utils/cautils" ) diff --git a/command/ca/rekey.go b/command/ca/rekey.go index aa80dcac..84290eac 100644 --- a/command/ca/rekey.go +++ b/command/ca/rekey.go @@ -13,11 +13,12 @@ import ( "github.com/urfave/cli" "github.com/smallstep/certificates/pki" + "go.step.sm/crypto/keyutil" + "go.step.sm/crypto/pemutil" + "github.com/smallstep/cli-utils/command" "github.com/smallstep/cli-utils/errs" "github.com/smallstep/cli-utils/ui" - "go.step.sm/crypto/keyutil" - "go.step.sm/crypto/pemutil" "github.com/smallstep/cli/flags" "github.com/smallstep/cli/internal/cryptoutil" diff --git a/command/ca/renew.go b/command/ca/renew.go index ba2b5783..723883de 100644 --- a/command/ca/renew.go +++ b/command/ca/renew.go @@ -25,13 +25,14 @@ import ( "github.com/smallstep/certificates/api" "github.com/smallstep/certificates/ca" "github.com/smallstep/certificates/pki" + "go.step.sm/crypto/jose" + "go.step.sm/crypto/pemutil" + "go.step.sm/crypto/x509util" + "github.com/smallstep/cli-utils/command" "github.com/smallstep/cli-utils/errs" "github.com/smallstep/cli-utils/fileutil" "github.com/smallstep/cli-utils/ui" - "go.step.sm/crypto/jose" - "go.step.sm/crypto/pemutil" - "go.step.sm/crypto/x509util" "github.com/smallstep/cli/flags" "github.com/smallstep/cli/internal/cryptoutil" diff --git a/command/ca/revoke.go b/command/ca/revoke.go index 026d1514..e4e5af4b 100644 --- a/command/ca/revoke.go +++ b/command/ca/revoke.go @@ -19,14 +19,15 @@ import ( "github.com/smallstep/certificates/authority/provisioner" "github.com/smallstep/certificates/ca" "github.com/smallstep/certificates/pki" - "github.com/smallstep/cli-utils/command" - "github.com/smallstep/cli-utils/errs" - "github.com/smallstep/cli-utils/ui" "go.step.sm/crypto/jose" "go.step.sm/crypto/pemutil" "go.step.sm/crypto/x509util" "golang.org/x/crypto/ocsp" + "github.com/smallstep/cli-utils/command" + "github.com/smallstep/cli-utils/errs" + "github.com/smallstep/cli-utils/ui" + "github.com/smallstep/cli/flags" "github.com/smallstep/cli/utils/cautils" ) diff --git a/command/ca/root.go b/command/ca/root.go index 9bbaaa2c..5c3e8e11 100644 --- a/command/ca/root.go +++ b/command/ca/root.go @@ -9,10 +9,11 @@ import ( "github.com/urfave/cli" "github.com/smallstep/certificates/ca" + "go.step.sm/crypto/pemutil" + "github.com/smallstep/cli-utils/command" "github.com/smallstep/cli-utils/errs" "github.com/smallstep/cli-utils/ui" - "go.step.sm/crypto/pemutil" "github.com/smallstep/cli/flags" ) diff --git a/command/ca/sign.go b/command/ca/sign.go index 5129aa89..add9b416 100644 --- a/command/ca/sign.go +++ b/command/ca/sign.go @@ -8,10 +8,11 @@ import ( "github.com/urfave/cli" "github.com/smallstep/certificates/api" + "go.step.sm/crypto/pemutil" + "github.com/smallstep/cli-utils/command" "github.com/smallstep/cli-utils/errs" "github.com/smallstep/cli-utils/ui" - "go.step.sm/crypto/pemutil" "github.com/smallstep/cli/flags" "github.com/smallstep/cli/token" diff --git a/command/ca/token.go b/command/ca/token.go index e074171c..2c5572b5 100644 --- a/command/ca/token.go +++ b/command/ca/token.go @@ -9,11 +9,12 @@ import ( "github.com/smallstep/certificates/api" "github.com/smallstep/certificates/pki" + "go.step.sm/crypto/pemutil" + "golang.org/x/crypto/ssh" + "github.com/smallstep/cli-utils/command" "github.com/smallstep/cli-utils/errs" "github.com/smallstep/cli-utils/fileutil" - "go.step.sm/crypto/pemutil" - "golang.org/x/crypto/ssh" "github.com/smallstep/cli/flags" "github.com/smallstep/cli/utils" diff --git a/command/certificate/create.go b/command/certificate/create.go index 5ab72823..632df50f 100644 --- a/command/certificate/create.go +++ b/command/certificate/create.go @@ -9,13 +9,14 @@ import ( "github.com/pkg/errors" "github.com/urfave/cli" + "go.step.sm/crypto/keyutil" + "go.step.sm/crypto/pemutil" + "go.step.sm/crypto/x509util" + "github.com/smallstep/cli-utils/command" "github.com/smallstep/cli-utils/errs" "github.com/smallstep/cli-utils/fileutil" "github.com/smallstep/cli-utils/ui" - "go.step.sm/crypto/keyutil" - "go.step.sm/crypto/pemutil" - "go.step.sm/crypto/x509util" "github.com/smallstep/cli/flags" "github.com/smallstep/cli/internal/cryptoutil" diff --git a/command/certificate/fingerprint.go b/command/certificate/fingerprint.go index edac3693..937c41fc 100644 --- a/command/certificate/fingerprint.go +++ b/command/certificate/fingerprint.go @@ -11,10 +11,11 @@ import ( "github.com/pkg/errors" "github.com/urfave/cli" - "github.com/smallstep/cli-utils/errs" "go.step.sm/crypto/fingerprint" "go.step.sm/crypto/pemutil" + "github.com/smallstep/cli-utils/errs" + "github.com/smallstep/cli/flags" "github.com/smallstep/cli/utils" ) diff --git a/command/certificate/inspect.go b/command/certificate/inspect.go index 2b273ac8..862564dd 100644 --- a/command/certificate/inspect.go +++ b/command/certificate/inspect.go @@ -12,10 +12,11 @@ import ( "github.com/urfave/cli" "github.com/smallstep/certinfo" - "github.com/smallstep/cli-utils/errs" zx509 "github.com/smallstep/zcrypto/x509" "go.step.sm/crypto/pemutil" + "github.com/smallstep/cli-utils/errs" + "github.com/smallstep/cli/flags" "github.com/smallstep/cli/utils" ) diff --git a/command/certificate/install.go b/command/certificate/install.go index cab7524e..d8775745 100644 --- a/command/certificate/install.go +++ b/command/certificate/install.go @@ -9,10 +9,11 @@ import ( "github.com/urfave/cli" "github.com/smallstep/certinfo" - "github.com/smallstep/cli-utils/command" - "github.com/smallstep/cli-utils/errs" "github.com/smallstep/truststore" "go.step.sm/crypto/pemutil" + + "github.com/smallstep/cli-utils/command" + "github.com/smallstep/cli-utils/errs" ) func installCommand() cli.Command { diff --git a/command/certificate/key.go b/command/certificate/key.go index ba4da5c5..fb5be7bc 100644 --- a/command/certificate/key.go +++ b/command/certificate/key.go @@ -6,11 +6,12 @@ import ( "github.com/urfave/cli" + "go.step.sm/crypto/pemutil" + "github.com/smallstep/cli-utils/command" "github.com/smallstep/cli-utils/errs" "github.com/smallstep/cli-utils/fileutil" "github.com/smallstep/cli-utils/ui" - "go.step.sm/crypto/pemutil" "github.com/smallstep/cli/flags" "github.com/smallstep/cli/utils" diff --git a/command/certificate/lint.go b/command/certificate/lint.go index 8eecde2b..6c13c968 100644 --- a/command/certificate/lint.go +++ b/command/certificate/lint.go @@ -8,10 +8,11 @@ import ( "github.com/pkg/errors" "github.com/urfave/cli" - "github.com/smallstep/cli-utils/errs" zx509 "github.com/smallstep/zcrypto/x509" "github.com/smallstep/zlint" + "github.com/smallstep/cli-utils/errs" + "github.com/smallstep/cli/flags" ) diff --git a/command/certificate/needsRenewal.go b/command/certificate/needsRenewal.go index d82afd2d..385c2ba4 100644 --- a/command/certificate/needsRenewal.go +++ b/command/certificate/needsRenewal.go @@ -11,9 +11,10 @@ import ( "github.com/pkg/errors" "github.com/urfave/cli" - "github.com/smallstep/cli-utils/errs" "go.step.sm/crypto/pemutil" + "github.com/smallstep/cli-utils/errs" + "github.com/smallstep/cli/flags" ) diff --git a/command/certificate/p12.go b/command/certificate/p12.go index 2f6f53b2..137dac19 100644 --- a/command/certificate/p12.go +++ b/command/certificate/p12.go @@ -8,12 +8,13 @@ import ( "github.com/urfave/cli" "software.sslmate.com/src/go-pkcs12" + "go.step.sm/crypto/pemutil" + "go.step.sm/crypto/x509util" + "github.com/smallstep/cli-utils/command" "github.com/smallstep/cli-utils/errs" "github.com/smallstep/cli-utils/fileutil" "github.com/smallstep/cli-utils/ui" - "go.step.sm/crypto/pemutil" - "go.step.sm/crypto/x509util" "github.com/smallstep/cli/flags" "github.com/smallstep/cli/utils" diff --git a/command/certificate/sign.go b/command/certificate/sign.go index 07e2fa1d..12044922 100644 --- a/command/certificate/sign.go +++ b/command/certificate/sign.go @@ -12,13 +12,14 @@ import ( "time" "github.com/pkg/errors" - "github.com/smallstep/cli-utils/errs" - "github.com/smallstep/cli-utils/ui" "github.com/urfave/cli" "go.step.sm/crypto/mldsa" "go.step.sm/crypto/pemutil" "go.step.sm/crypto/x509util" + "github.com/smallstep/cli-utils/errs" + "github.com/smallstep/cli-utils/ui" + "github.com/smallstep/cli/flags" "github.com/smallstep/cli/internal/cryptoutil" "github.com/smallstep/cli/utils" diff --git a/command/certificate/verify.go b/command/certificate/verify.go index d904b5fb..6bce8bed 100644 --- a/command/certificate/verify.go +++ b/command/certificate/verify.go @@ -15,9 +15,10 @@ import ( "github.com/urfave/cli" "golang.org/x/crypto/ocsp" - "github.com/smallstep/cli-utils/errs" "go.step.sm/crypto/x509util" + "github.com/smallstep/cli-utils/errs" + "github.com/smallstep/cli/flags" "github.com/smallstep/cli/internal/crlutil" ) diff --git a/command/crl/inspect.go b/command/crl/inspect.go index ece9b694..d554c777 100644 --- a/command/crl/inspect.go +++ b/command/crl/inspect.go @@ -16,11 +16,12 @@ import ( "github.com/pkg/errors" "github.com/urfave/cli" - "github.com/smallstep/cli-utils/command" - "github.com/smallstep/cli-utils/errs" "go.step.sm/crypto/pemutil" "go.step.sm/crypto/x509util" + "github.com/smallstep/cli-utils/command" + "github.com/smallstep/cli-utils/errs" + "github.com/smallstep/cli/flags" "github.com/smallstep/cli/internal/crlutil" "github.com/smallstep/cli/utils" diff --git a/command/crypto/change-pass.go b/command/crypto/change-pass.go index 9fe8ea14..47b73d13 100644 --- a/command/crypto/change-pass.go +++ b/command/crypto/change-pass.go @@ -9,12 +9,13 @@ import ( "github.com/pkg/errors" "github.com/urfave/cli" + "go.step.sm/crypto/jose" + "go.step.sm/crypto/pemutil" + "github.com/smallstep/cli-utils/command" "github.com/smallstep/cli-utils/errs" "github.com/smallstep/cli-utils/fileutil" "github.com/smallstep/cli-utils/ui" - "go.step.sm/crypto/jose" - "go.step.sm/crypto/pemutil" "github.com/smallstep/cli/flags" ) diff --git a/command/crypto/jwe/decrypt.go b/command/crypto/jwe/decrypt.go index 8e26d359..c99cdafa 100644 --- a/command/crypto/jwe/decrypt.go +++ b/command/crypto/jwe/decrypt.go @@ -7,9 +7,10 @@ import ( "github.com/pkg/errors" "github.com/urfave/cli" + "go.step.sm/crypto/jose" + "github.com/smallstep/cli-utils/errs" "github.com/smallstep/cli-utils/ui" - "go.step.sm/crypto/jose" "github.com/smallstep/cli/utils" ) diff --git a/command/crypto/jwk/keyset.go b/command/crypto/jwk/keyset.go index 4cef7b97..8c5da84c 100644 --- a/command/crypto/jwk/keyset.go +++ b/command/crypto/jwk/keyset.go @@ -10,9 +10,10 @@ import ( "github.com/pkg/errors" "github.com/urfave/cli" + "go.step.sm/crypto/jose" + "github.com/smallstep/cli-utils/errs" "github.com/smallstep/cli-utils/ui" - "go.step.sm/crypto/jose" "github.com/smallstep/cli/utils/sysutils" ) diff --git a/command/crypto/jwk/public.go b/command/crypto/jwk/public.go index 349837ff..dc7521dc 100644 --- a/command/crypto/jwk/public.go +++ b/command/crypto/jwk/public.go @@ -9,8 +9,9 @@ import ( "github.com/pkg/errors" "github.com/urfave/cli" - "github.com/smallstep/cli-utils/ui" "go.step.sm/crypto/jose" + + "github.com/smallstep/cli-utils/ui" ) func publicCommand() cli.Command { diff --git a/command/crypto/jwk/thumbprint.go b/command/crypto/jwk/thumbprint.go index a91661ad..45b8cda1 100644 --- a/command/crypto/jwk/thumbprint.go +++ b/command/crypto/jwk/thumbprint.go @@ -11,8 +11,9 @@ import ( "github.com/pkg/errors" "github.com/urfave/cli" - "github.com/smallstep/cli-utils/ui" "go.step.sm/crypto/jose" + + "github.com/smallstep/cli-utils/ui" ) func thumbprintCommand() cli.Command { diff --git a/command/crypto/jws/sign.go b/command/crypto/jws/sign.go index b5ae0e55..934220ee 100644 --- a/command/crypto/jws/sign.go +++ b/command/crypto/jws/sign.go @@ -10,9 +10,10 @@ import ( "github.com/pkg/errors" "github.com/urfave/cli" - "github.com/smallstep/cli-utils/errs" "go.step.sm/crypto/jose" "go.step.sm/crypto/pemutil" + + "github.com/smallstep/cli-utils/errs" ) func signCommand() cli.Command { diff --git a/command/crypto/jws/verify.go b/command/crypto/jws/verify.go index b62c83ef..9e91dfff 100644 --- a/command/crypto/jws/verify.go +++ b/command/crypto/jws/verify.go @@ -6,9 +6,10 @@ import ( "github.com/pkg/errors" "github.com/urfave/cli" - "github.com/smallstep/cli-utils/errs" "go.step.sm/crypto/jose" + "github.com/smallstep/cli-utils/errs" + "github.com/smallstep/cli/flags" "github.com/smallstep/cli/utils" ) diff --git a/command/crypto/jwt/sign.go b/command/crypto/jwt/sign.go index 97c91171..cb5f00c4 100644 --- a/command/crypto/jwt/sign.go +++ b/command/crypto/jwt/sign.go @@ -12,11 +12,12 @@ import ( "github.com/pkg/errors" "github.com/urfave/cli" - "github.com/smallstep/cli-utils/errs" "go.step.sm/crypto/jose" "go.step.sm/crypto/pemutil" "go.step.sm/crypto/randutil" + "github.com/smallstep/cli-utils/errs" + "github.com/smallstep/cli/flags" ) diff --git a/command/crypto/jwt/verify.go b/command/crypto/jwt/verify.go index 4f57a13c..38fef845 100644 --- a/command/crypto/jwt/verify.go +++ b/command/crypto/jwt/verify.go @@ -9,9 +9,10 @@ import ( "github.com/pkg/errors" "github.com/urfave/cli" - "github.com/smallstep/cli-utils/errs" "go.step.sm/crypto/jose" + "github.com/smallstep/cli-utils/errs" + "github.com/smallstep/cli/flags" "github.com/smallstep/cli/utils" ) diff --git a/command/crypto/key/fingerprint.go b/command/crypto/key/fingerprint.go index 2ff03608..64c03e18 100644 --- a/command/crypto/key/fingerprint.go +++ b/command/crypto/key/fingerprint.go @@ -15,11 +15,12 @@ import ( "github.com/pkg/errors" "github.com/urfave/cli" - "github.com/smallstep/cli-utils/errs" "go.step.sm/crypto/fingerprint" "go.step.sm/crypto/pemutil" "golang.org/x/crypto/ssh" + "github.com/smallstep/cli-utils/errs" + "github.com/smallstep/cli/flags" "github.com/smallstep/cli/utils" ) diff --git a/command/crypto/key/format.go b/command/crypto/key/format.go index dcd98a8f..bfe0fffe 100644 --- a/command/crypto/key/format.go +++ b/command/crypto/key/format.go @@ -13,15 +13,16 @@ import ( "github.com/pkg/errors" "github.com/urfave/cli" - "github.com/smallstep/cli-utils/command" - "github.com/smallstep/cli-utils/errs" - "github.com/smallstep/cli-utils/fileutil" - "github.com/smallstep/cli-utils/ui" "go.step.sm/crypto/jose" "go.step.sm/crypto/mldsa" "go.step.sm/crypto/pemutil" "golang.org/x/crypto/ssh" + "github.com/smallstep/cli-utils/command" + "github.com/smallstep/cli-utils/errs" + "github.com/smallstep/cli-utils/fileutil" + "github.com/smallstep/cli-utils/ui" + "github.com/smallstep/cli/flags" "github.com/smallstep/cli/utils" ) diff --git a/command/crypto/key/inspect.go b/command/crypto/key/inspect.go index 4c1b9b5a..85be45d7 100644 --- a/command/crypto/key/inspect.go +++ b/command/crypto/key/inspect.go @@ -11,11 +11,12 @@ import ( "github.com/pkg/errors" "github.com/urfave/cli" - "github.com/smallstep/cli-utils/command" - "github.com/smallstep/cli-utils/errs" "go.step.sm/crypto/mldsa" "go.step.sm/crypto/pemutil" + "github.com/smallstep/cli-utils/command" + "github.com/smallstep/cli-utils/errs" + "github.com/smallstep/cli/utils" ) diff --git a/command/crypto/key/public.go b/command/crypto/key/public.go index 7484cdb1..e8331289 100644 --- a/command/crypto/key/public.go +++ b/command/crypto/key/public.go @@ -6,12 +6,13 @@ import ( "github.com/urfave/cli" + "go.step.sm/crypto/keyutil" + "go.step.sm/crypto/pemutil" + "github.com/smallstep/cli-utils/command" "github.com/smallstep/cli-utils/errs" "github.com/smallstep/cli-utils/fileutil" "github.com/smallstep/cli-utils/ui" - "go.step.sm/crypto/keyutil" - "go.step.sm/crypto/pemutil" "github.com/smallstep/cli/flags" "github.com/smallstep/cli/utils" diff --git a/command/crypto/key/sign.go b/command/crypto/key/sign.go index 2767909a..c5d1a0a0 100644 --- a/command/crypto/key/sign.go +++ b/command/crypto/key/sign.go @@ -15,11 +15,12 @@ import ( "github.com/pkg/errors" "github.com/urfave/cli" - "github.com/smallstep/cli-utils/command" - "github.com/smallstep/cli-utils/errs" "go.step.sm/crypto/mldsa" "go.step.sm/crypto/pemutil" + "github.com/smallstep/cli-utils/command" + "github.com/smallstep/cli-utils/errs" + "github.com/smallstep/cli/utils" ) diff --git a/command/crypto/key/verify.go b/command/crypto/key/verify.go index 63454fe7..4fb0be1d 100644 --- a/command/crypto/key/verify.go +++ b/command/crypto/key/verify.go @@ -12,11 +12,12 @@ import ( "github.com/pkg/errors" "github.com/urfave/cli" - "github.com/smallstep/cli-utils/command" - "github.com/smallstep/cli-utils/errs" "go.step.sm/crypto/mldsa" "go.step.sm/crypto/pemutil" + "github.com/smallstep/cli-utils/command" + "github.com/smallstep/cli-utils/errs" + "github.com/smallstep/cli/utils" ) diff --git a/command/crypto/keypair.go b/command/crypto/keypair.go index 80874837..389df0d3 100644 --- a/command/crypto/keypair.go +++ b/command/crypto/keypair.go @@ -4,13 +4,14 @@ import ( "github.com/pkg/errors" "github.com/urfave/cli" - "github.com/smallstep/cli-utils/command" - "github.com/smallstep/cli-utils/errs" - "github.com/smallstep/cli-utils/ui" "go.step.sm/crypto/jose" "go.step.sm/crypto/keyutil" "go.step.sm/crypto/pemutil" + "github.com/smallstep/cli-utils/command" + "github.com/smallstep/cli-utils/errs" + "github.com/smallstep/cli-utils/ui" + "github.com/smallstep/cli/flags" "github.com/smallstep/cli/utils" ) diff --git a/command/oauth/cmd.go b/command/oauth/cmd.go index 8e50df91..5408cc78 100644 --- a/command/oauth/cmd.go +++ b/command/oauth/cmd.go @@ -22,11 +22,12 @@ import ( "github.com/pkg/errors" "github.com/urfave/cli" - "github.com/smallstep/cli-utils/command" - "github.com/smallstep/cli-utils/errs" "go.step.sm/crypto/jose" "go.step.sm/crypto/randutil" + "github.com/smallstep/cli-utils/command" + "github.com/smallstep/cli-utils/errs" + "github.com/smallstep/cli/exec" "github.com/smallstep/cli/flags" "github.com/smallstep/cli/utils" diff --git a/command/ssh/certificate.go b/command/ssh/certificate.go index ab89bf84..c08d0bce 100644 --- a/command/ssh/certificate.go +++ b/command/ssh/certificate.go @@ -20,12 +20,13 @@ import ( "github.com/smallstep/certificates/authority/provisioner" "github.com/smallstep/certificates/ca" "github.com/smallstep/certificates/ca/identity" + "go.step.sm/crypto/keyutil" + "go.step.sm/crypto/pemutil" + "github.com/smallstep/cli-utils/command" "github.com/smallstep/cli-utils/errs" "github.com/smallstep/cli-utils/fileutil" "github.com/smallstep/cli-utils/ui" - "go.step.sm/crypto/keyutil" - "go.step.sm/crypto/pemutil" "github.com/smallstep/cli/flags" "github.com/smallstep/cli/internal/sshutil" diff --git a/command/ssh/checkHost.go b/command/ssh/checkHost.go index 7a7ad45d..926db15c 100644 --- a/command/ssh/checkHost.go +++ b/command/ssh/checkHost.go @@ -11,9 +11,10 @@ import ( "github.com/smallstep/certificates/ca" caErrs "github.com/smallstep/certificates/errs" + "go.step.sm/crypto/jose" + "github.com/smallstep/cli-utils/command" "github.com/smallstep/cli-utils/errs" - "go.step.sm/crypto/jose" "github.com/smallstep/cli/flags" "github.com/smallstep/cli/token" diff --git a/command/ssh/config.go b/command/ssh/config.go index 3c14a40d..100b9564 100644 --- a/command/ssh/config.go +++ b/command/ssh/config.go @@ -14,11 +14,12 @@ import ( "github.com/smallstep/certificates/authority/provisioner" "github.com/smallstep/certificates/ca" "github.com/smallstep/certificates/templates" + "golang.org/x/crypto/ssh" + "github.com/smallstep/cli-utils/command" "github.com/smallstep/cli-utils/errs" "github.com/smallstep/cli-utils/step" "github.com/smallstep/cli-utils/ui" - "golang.org/x/crypto/ssh" "github.com/smallstep/cli/flags" "github.com/smallstep/cli/internal/sshutil" diff --git a/command/ssh/fingerprint.go b/command/ssh/fingerprint.go index 96a7e11c..493b4385 100644 --- a/command/ssh/fingerprint.go +++ b/command/ssh/fingerprint.go @@ -5,9 +5,10 @@ import ( "github.com/urfave/cli" - "github.com/smallstep/cli-utils/errs" "go.step.sm/crypto/sshutil" + "github.com/smallstep/cli-utils/errs" + "github.com/smallstep/cli/flags" "github.com/smallstep/cli/utils" ) diff --git a/command/ssh/hosts.go b/command/ssh/hosts.go index 9ffc25d3..54cbad2e 100644 --- a/command/ssh/hosts.go +++ b/command/ssh/hosts.go @@ -9,6 +9,7 @@ import ( "github.com/urfave/cli" "github.com/smallstep/certificates/ca" + "github.com/smallstep/cli-utils/command" "github.com/smallstep/cli-utils/errs" diff --git a/command/ssh/login.go b/command/ssh/login.go index 567bcff3..21e6de00 100644 --- a/command/ssh/login.go +++ b/command/ssh/login.go @@ -11,10 +11,11 @@ import ( "github.com/smallstep/certificates/api" "github.com/smallstep/certificates/authority/provisioner" "github.com/smallstep/certificates/ca" + "go.step.sm/crypto/keyutil" + "github.com/smallstep/cli-utils/command" "github.com/smallstep/cli-utils/errs" "github.com/smallstep/cli-utils/ui" - "go.step.sm/crypto/keyutil" "github.com/smallstep/cli/flags" "github.com/smallstep/cli/internal/sshutil" diff --git a/command/ssh/proxycommand.go b/command/ssh/proxycommand.go index 0a0293b3..a63085ff 100644 --- a/command/ssh/proxycommand.go +++ b/command/ssh/proxycommand.go @@ -15,9 +15,10 @@ import ( "github.com/smallstep/certificates/api" "github.com/smallstep/certificates/authority/provisioner" "github.com/smallstep/certificates/ca" + "go.step.sm/crypto/keyutil" + "github.com/smallstep/cli-utils/command" "github.com/smallstep/cli-utils/errs" - "go.step.sm/crypto/keyutil" "github.com/smallstep/cli/exec" "github.com/smallstep/cli/flags" diff --git a/command/ssh/rekey.go b/command/ssh/rekey.go index a384f9a4..7271d0ee 100644 --- a/command/ssh/rekey.go +++ b/command/ssh/rekey.go @@ -11,6 +11,7 @@ import ( "github.com/smallstep/certificates/api" "github.com/smallstep/certificates/authority/provisioner" "github.com/smallstep/certificates/ca/identity" + "github.com/smallstep/cli-utils/command" "github.com/smallstep/cli-utils/errs" "github.com/smallstep/cli-utils/fileutil" diff --git a/command/ssh/renew.go b/command/ssh/renew.go index 1498b038..2ce53e2c 100644 --- a/command/ssh/renew.go +++ b/command/ssh/renew.go @@ -11,6 +11,7 @@ import ( "github.com/smallstep/certificates/api" "github.com/smallstep/certificates/authority/provisioner" "github.com/smallstep/certificates/ca/identity" + "github.com/smallstep/cli-utils/command" "github.com/smallstep/cli-utils/errs" "github.com/smallstep/cli-utils/fileutil" diff --git a/command/ssh/revoke.go b/command/ssh/revoke.go index 5944abb2..2c581957 100644 --- a/command/ssh/revoke.go +++ b/command/ssh/revoke.go @@ -11,6 +11,7 @@ import ( "github.com/smallstep/certificates/api" "github.com/smallstep/certificates/authority/provisioner" "github.com/smallstep/certificates/ca" + "github.com/smallstep/cli-utils/command" "github.com/smallstep/cli-utils/errs" "github.com/smallstep/cli-utils/ui" diff --git a/command/ssh/ssh.go b/command/ssh/ssh.go index 24a4e8d8..6aefe5f8 100644 --- a/command/ssh/ssh.go +++ b/command/ssh/ssh.go @@ -12,9 +12,10 @@ import ( "github.com/smallstep/certificates/authority/provisioner" "github.com/smallstep/certificates/ca" "github.com/smallstep/certificates/errs" + "go.step.sm/crypto/keyutil" + "github.com/smallstep/cli-utils/command" "github.com/smallstep/cli-utils/ui" - "go.step.sm/crypto/keyutil" "github.com/smallstep/cli/flags" "github.com/smallstep/cli/internal/sshutil" diff --git a/exec/exec.go b/exec/exec.go index e5899117..f1c2dc78 100644 --- a/exec/exec.go +++ b/exec/exec.go @@ -13,6 +13,7 @@ import ( "syscall" "github.com/pkg/errors" + "github.com/smallstep/cli/utils/sysutils" ) diff --git a/internal/cmd/root.go b/internal/cmd/root.go index 3e8e4984..e39c4c36 100644 --- a/internal/cmd/root.go +++ b/internal/cmd/root.go @@ -12,6 +12,9 @@ import ( "github.com/urfave/cli" + "go.step.sm/crypto/jose" + "go.step.sm/crypto/pemutil" + "github.com/smallstep/cli-utils/command" "github.com/smallstep/cli-utils/fileutil" "github.com/smallstep/cli-utils/step" @@ -19,8 +22,6 @@ import ( "github.com/smallstep/cli-utils/usage" "github.com/smallstep/cli/command/version" "github.com/smallstep/cli/internal/plugin" - "go.step.sm/crypto/jose" - "go.step.sm/crypto/pemutil" // Enabled cas interfaces. _ "github.com/smallstep/certificates/cas/cloudcas" diff --git a/internal/cryptoutil/cryptoutil.go b/internal/cryptoutil/cryptoutil.go index 5178655e..6c6c17ee 100644 --- a/internal/cryptoutil/cryptoutil.go +++ b/internal/cryptoutil/cryptoutil.go @@ -16,12 +16,13 @@ import ( "strconv" "strings" - "github.com/smallstep/cli/internal/plugin" "go.step.sm/crypto/jose" "go.step.sm/crypto/kms" "go.step.sm/crypto/kms/apiv1" "go.step.sm/crypto/mldsa" "go.step.sm/crypto/pemutil" + + "github.com/smallstep/cli/internal/plugin" ) // IsKMS returns true if the given uri is a KMS URI. It will return false if a diff --git a/internal/kdf/argon2.go b/internal/kdf/argon2.go index b5a9cb5b..5d3fe077 100644 --- a/internal/kdf/argon2.go +++ b/internal/kdf/argon2.go @@ -4,6 +4,7 @@ import ( "fmt" "github.com/pkg/errors" + "github.com/smallstep/cli/internal/cast" ) diff --git a/internal/sshutil/agent.go b/internal/sshutil/agent.go index 51c36211..f10bca22 100644 --- a/internal/sshutil/agent.go +++ b/internal/sshutil/agent.go @@ -7,9 +7,10 @@ import ( "time" "github.com/pkg/errors" - "github.com/smallstep/cli/internal/cast" "golang.org/x/crypto/ssh" "golang.org/x/crypto/ssh/agent" + + "github.com/smallstep/cli/internal/cast" ) type options struct { diff --git a/token/provision/provision.go b/token/provision/provision.go index a931c03d..53004863 100644 --- a/token/provision/provision.go +++ b/token/provision/provision.go @@ -1,8 +1,9 @@ package provision import ( - "github.com/smallstep/cli/token" "go.step.sm/crypto/jose" + + "github.com/smallstep/cli/token" ) // Token defines a one time use token that is intended to be exchanged diff --git a/token/provision/provision_test.go b/token/provision/provision_test.go index fe400177..e7930a02 100644 --- a/token/provision/provision_test.go +++ b/token/provision/provision_test.go @@ -6,10 +6,11 @@ import ( "testing" "time" - "github.com/smallstep/cli/token" "github.com/stretchr/testify/assert" "go.step.sm/crypto/jose" "go.step.sm/crypto/pemutil" + + "github.com/smallstep/cli/token" ) func withFixedTime(tok *Token, t time.Time) { diff --git a/utils/cautils/acme_flow.go b/utils/cautils/acme_flow.go index 1549a496..c1aed13c 100644 --- a/utils/cautils/acme_flow.go +++ b/utils/cautils/acme_flow.go @@ -6,8 +6,9 @@ import ( "github.com/pkg/errors" "github.com/urfave/cli" - "github.com/smallstep/cli-utils/ui" "go.step.sm/crypto/pemutil" + + "github.com/smallstep/cli-utils/ui" ) // ACMECreateCertFlow performs an ACME transaction to get a new certificate. diff --git a/utils/cautils/acmeutils.go b/utils/cautils/acmeutils.go index 570a6944..f6189396 100644 --- a/utils/cautils/acmeutils.go +++ b/utils/cautils/acmeutils.go @@ -30,9 +30,6 @@ import ( acmeAPI "github.com/smallstep/certificates/acme/api" "github.com/smallstep/certificates/ca" "github.com/smallstep/certificates/pki" - "github.com/smallstep/cli-utils/errs" - "github.com/smallstep/cli-utils/fileutil" - "github.com/smallstep/cli-utils/ui" "go.step.sm/crypto/jose" "go.step.sm/crypto/keyutil" "go.step.sm/crypto/mldsa" @@ -40,6 +37,10 @@ import ( "go.step.sm/crypto/tpm" tpmstorage "go.step.sm/crypto/tpm/storage" + "github.com/smallstep/cli-utils/errs" + "github.com/smallstep/cli-utils/fileutil" + "github.com/smallstep/cli-utils/ui" + "github.com/smallstep/cli/flags" "github.com/smallstep/cli/internal/cryptoutil" "github.com/smallstep/cli/utils" diff --git a/utils/cautils/bootstrap.go b/utils/cautils/bootstrap.go index b2971f6f..48bd2b13 100644 --- a/utils/cautils/bootstrap.go +++ b/utils/cautils/bootstrap.go @@ -15,12 +15,13 @@ import ( "github.com/smallstep/certificates/ca" "github.com/smallstep/certificates/pki" + "github.com/smallstep/truststore" + "go.step.sm/crypto/pemutil" + "github.com/smallstep/cli-utils/errs" "github.com/smallstep/cli-utils/fileutil" "github.com/smallstep/cli-utils/step" "github.com/smallstep/cli-utils/ui" - "github.com/smallstep/truststore" - "go.step.sm/crypto/pemutil" "github.com/smallstep/cli/utils" ) diff --git a/utils/cautils/certificate_flow.go b/utils/cautils/certificate_flow.go index aa8ffac8..4914ebfb 100644 --- a/utils/cautils/certificate_flow.go +++ b/utils/cautils/certificate_flow.go @@ -22,13 +22,14 @@ import ( "github.com/smallstep/certificates/authority/provisioner" "github.com/smallstep/certificates/ca" "github.com/smallstep/certificates/pki" - "github.com/smallstep/cli-utils/errs" - "github.com/smallstep/cli-utils/fileutil" - "github.com/smallstep/cli-utils/ui" "go.step.sm/crypto/keyutil" "go.step.sm/crypto/pemutil" "go.step.sm/crypto/x509util" + "github.com/smallstep/cli-utils/errs" + "github.com/smallstep/cli-utils/fileutil" + "github.com/smallstep/cli-utils/ui" + "github.com/smallstep/cli/flags" "github.com/smallstep/cli/token" "github.com/smallstep/cli/utils" diff --git a/utils/cautils/client.go b/utils/cautils/client.go index f1801cc7..a28f355b 100644 --- a/utils/cautils/client.go +++ b/utils/cautils/client.go @@ -15,6 +15,7 @@ import ( "github.com/smallstep/certificates/authority/provisioner" "github.com/smallstep/certificates/ca" "github.com/smallstep/certificates/pki" + "github.com/smallstep/cli-utils/errs" "github.com/smallstep/cli-utils/ui" diff --git a/utils/cautils/token_flow.go b/utils/cautils/token_flow.go index ebdfa564..94421b59 100644 --- a/utils/cautils/token_flow.go +++ b/utils/cautils/token_flow.go @@ -11,6 +11,7 @@ import ( "github.com/smallstep/certificates/authority/provisioner" "github.com/smallstep/certificates/pki" + "github.com/smallstep/cli-utils/errs" "github.com/smallstep/cli-utils/ui" diff --git a/utils/cautils/token_generator.go b/utils/cautils/token_generator.go index df3ebf47..bd22a208 100644 --- a/utils/cautils/token_generator.go +++ b/utils/cautils/token_generator.go @@ -18,12 +18,13 @@ import ( "github.com/smallstep/certificates/authority/provisioner" "github.com/smallstep/certificates/pki" - "github.com/smallstep/cli-utils/errs" - "github.com/smallstep/cli-utils/ui" "go.step.sm/crypto/jose" "go.step.sm/crypto/pemutil" "go.step.sm/crypto/randutil" + "github.com/smallstep/cli-utils/errs" + "github.com/smallstep/cli-utils/ui" + "github.com/smallstep/cli/exec" "github.com/smallstep/cli/internal/cryptoutil" "github.com/smallstep/cli/token" diff --git a/utils/cautils/tpm.go b/utils/cautils/tpm.go index d1976073..ade0e223 100644 --- a/utils/cautils/tpm.go +++ b/utils/cautils/tpm.go @@ -26,14 +26,15 @@ import ( "github.com/smallstep/certificates/acme" "github.com/smallstep/certificates/ca" - "github.com/smallstep/cli-utils/errs" - "github.com/smallstep/cli-utils/ui" "go.step.sm/crypto/jose" "go.step.sm/crypto/keyutil" "go.step.sm/crypto/kms/uri" "go.step.sm/crypto/tpm" tpmstorage "go.step.sm/crypto/tpm/storage" + "github.com/smallstep/cli-utils/errs" + "github.com/smallstep/cli-utils/ui" + "github.com/smallstep/cli/utils" ) From 1f970f1a867042d82c0fbaa2b4a22c885d35f41f Mon Sep 17 00:00:00 2001 From: Mariano Cano Date: Fri, 6 Nov 2026 18:20:58 -0800 Subject: [PATCH 8/8] Fix imports --- Makefile | 2 +- cmd/step/main.go | 1 - command/ca/acme/eab/add.go | 1 - command/ca/acme/eab/eab.go | 3 +-- command/ca/acme/eab/list.go | 1 - command/ca/admin/add.go | 3 +-- command/ca/admin/admin.go | 3 +-- command/ca/admin/list.go | 3 +-- command/ca/admin/update.go | 3 +-- command/ca/certificate.go | 3 +-- command/ca/federation.go | 3 +-- command/ca/health.go | 1 - command/ca/health_test.go | 5 ++--- command/ca/init.go | 7 +++---- command/ca/policy/actions/policy.go | 3 +-- command/ca/policy/actions/remove.go | 1 - command/ca/policy/actions/view.go | 3 +-- command/ca/provisioner/add.go | 5 ++--- command/ca/provisioner/caConfigClient.go | 3 +-- command/ca/provisioner/getEncryptedKey.go | 1 - command/ca/provisioner/list.go | 1 - command/ca/provisioner/provisioner.go | 3 +-- command/ca/provisioner/remove.go | 2 +- command/ca/provisioner/update.go | 2 -- command/ca/provisioner/webhook/add.go | 3 +-- command/ca/provisioner/webhook/update.go | 3 +-- command/ca/provisioner/webhook/webhook.go | 3 +-- command/ca/rekey.go | 5 ++--- command/ca/renew.go | 7 +++---- command/ca/revoke.go | 9 ++++----- command/ca/root.go | 3 +-- command/ca/sign.go | 3 +-- command/ca/token.go | 6 +++--- command/certificate/create.go | 7 +++---- command/certificate/fingerprint.go | 9 ++++----- command/certificate/inspect.go | 3 +-- command/certificate/inspect_test.go | 3 ++- command/certificate/install.go | 5 ++--- command/certificate/key.go | 3 +-- command/certificate/lint.go | 3 +-- command/certificate/needsRenewal.go | 3 +-- command/certificate/p12.go | 5 ++--- command/certificate/remote.go | 1 + command/certificate/sign.go | 6 +++--- command/certificate/verify.go | 3 +-- command/crl/inspect.go | 5 ++--- command/crypto/change-pass.go | 5 ++--- command/crypto/hash/hash.go | 14 +++++++------- command/crypto/jose/jose.go | 1 + command/crypto/jwe/decrypt.go | 3 +-- command/crypto/jwe/encrypt.go | 3 +-- command/crypto/jwk/create.go | 7 +++---- command/crypto/jwk/keyset.go | 3 +-- command/crypto/jwk/public.go | 3 +-- command/crypto/jwk/thumbprint.go | 3 +-- command/crypto/jws/inspect.go | 3 +-- command/crypto/jws/sign.go | 7 +++---- command/crypto/jws/verify.go | 3 +-- command/crypto/jwt/inspect.go | 3 +-- command/crypto/jwt/sign.go | 3 +-- command/crypto/jwt/verify.go | 3 +-- command/crypto/key/fingerprint.go | 10 +++++----- command/crypto/key/format.go | 6 +++--- command/crypto/key/inspect.go | 5 ++--- command/crypto/key/public.go | 5 ++--- command/crypto/key/sign.go | 5 ++--- command/crypto/key/verify.go | 5 ++--- command/crypto/keypair.go | 7 +++---- command/crypto/rand/rand.go | 1 - command/oauth/cmd.go | 5 ++--- command/ssh/certificate.go | 5 ++--- command/ssh/checkHost.go | 3 +-- command/ssh/config.go | 4 ++-- command/ssh/fingerprint.go | 3 +-- command/ssh/hosts.go | 1 - command/ssh/list.go | 1 - command/ssh/login.go | 3 +-- command/ssh/proxycommand.go | 3 +-- command/ssh/rekey.go | 2 -- command/ssh/renew.go | 1 - command/ssh/revoke.go | 1 - command/ssh/ssh.go | 3 +-- flags/flags.go | 3 +-- flags/flags_test.go | 3 ++- internal/cmd/root.go | 6 +++--- internal/crlutil/crlutil.go | 1 + token/parse.go | 1 + token/provision/provision_test.go | 1 + token/token.go | 1 + utils/cautils/acme_flow.go | 3 +-- utils/cautils/acmeutils.go | 7 +++---- utils/cautils/bootstrap.go | 5 ++--- utils/cautils/certificate_flow.go | 7 +++---- utils/cautils/client.go | 2 -- utils/cautils/token_flow.go | 1 - utils/cautils/token_generator.go | 5 ++--- utils/cautils/tpm.go | 7 +++---- utils/cli.go | 3 +-- 98 files changed, 142 insertions(+), 218 deletions(-) diff --git a/Makefile b/Makefile index 6465c599..d1fbc2d7 100644 --- a/Makefile +++ b/Makefile @@ -164,7 +164,7 @@ race: ######################################### fmt: - $Q go tool $(GOIMPORTS) -local github.com/smallstep/cli -l -w $(GOSRC) + $Q go tool $(GOIMPORTS) -local github.com/smallstep/cli/ -l -w $(GOSRC) lint: golint govulncheck diff --git a/cmd/step/main.go b/cmd/step/main.go index 9ac58921..8dc5e7b1 100644 --- a/cmd/step/main.go +++ b/cmd/step/main.go @@ -2,7 +2,6 @@ package main import ( "github.com/smallstep/certificates/ca" - "github.com/smallstep/cli-utils/step" "github.com/smallstep/cli/internal/cmd" diff --git a/command/ca/acme/eab/add.go b/command/ca/acme/eab/add.go index cb07f9a1..96c26979 100644 --- a/command/ca/acme/eab/add.go +++ b/command/ca/acme/eab/add.go @@ -8,7 +8,6 @@ import ( "github.com/urfave/cli" adminAPI "github.com/smallstep/certificates/authority/admin/api" - "github.com/smallstep/cli-utils/errs" "github.com/smallstep/cli/flags" diff --git a/command/ca/acme/eab/eab.go b/command/ca/acme/eab/eab.go index b989482b..4f90bbbf 100644 --- a/command/ca/acme/eab/eab.go +++ b/command/ca/acme/eab/eab.go @@ -9,10 +9,9 @@ import ( "github.com/pkg/errors" "github.com/urfave/cli" - "github.com/smallstep/linkedca" - "github.com/smallstep/certificates/authority/admin" "github.com/smallstep/certificates/ca" + "github.com/smallstep/linkedca" ) type cliEAK struct { diff --git a/command/ca/acme/eab/list.go b/command/ca/acme/eab/list.go index 67631a44..2b9566a5 100644 --- a/command/ca/acme/eab/list.go +++ b/command/ca/acme/eab/list.go @@ -11,7 +11,6 @@ import ( "github.com/urfave/cli" "github.com/smallstep/certificates/ca" - "github.com/smallstep/cli-utils/errs" "github.com/smallstep/cli/flags" diff --git a/command/ca/admin/add.go b/command/ca/admin/add.go index 77611ca9..5ccdee6e 100644 --- a/command/ca/admin/add.go +++ b/command/ca/admin/add.go @@ -8,9 +8,8 @@ import ( "github.com/urfave/cli" adminAPI "github.com/smallstep/certificates/authority/admin/api" - "github.com/smallstep/linkedca" - "github.com/smallstep/cli-utils/errs" + "github.com/smallstep/linkedca" "github.com/smallstep/cli/flags" "github.com/smallstep/cli/utils/cautils" diff --git a/command/ca/admin/admin.go b/command/ca/admin/admin.go index 3609b4a0..73944753 100644 --- a/command/ca/admin/admin.go +++ b/command/ca/admin/admin.go @@ -7,10 +7,9 @@ import ( "github.com/urfave/cli" "github.com/smallstep/certificates/ca" - "github.com/smallstep/linkedca" - "github.com/smallstep/cli-utils/errs" "github.com/smallstep/cli-utils/ui" + "github.com/smallstep/linkedca" ) // Command returns the jwk subcommand. diff --git a/command/ca/admin/list.go b/command/ca/admin/list.go index a5ac546d..c3e33a29 100644 --- a/command/ca/admin/list.go +++ b/command/ca/admin/list.go @@ -7,9 +7,8 @@ import ( "github.com/urfave/cli" - "github.com/smallstep/linkedca" - "github.com/smallstep/cli-utils/errs" + "github.com/smallstep/linkedca" "github.com/smallstep/cli/flags" "github.com/smallstep/cli/utils/cautils" diff --git a/command/ca/admin/update.go b/command/ca/admin/update.go index 5c987b37..e01d8f2e 100644 --- a/command/ca/admin/update.go +++ b/command/ca/admin/update.go @@ -8,9 +8,8 @@ import ( "github.com/urfave/cli" adminAPI "github.com/smallstep/certificates/authority/admin/api" - "github.com/smallstep/linkedca" - "github.com/smallstep/cli-utils/errs" + "github.com/smallstep/linkedca" "github.com/smallstep/cli/flags" "github.com/smallstep/cli/utils/cautils" diff --git a/command/ca/certificate.go b/command/ca/certificate.go index e1e57c7c..74ea4db9 100644 --- a/command/ca/certificate.go +++ b/command/ca/certificate.go @@ -7,12 +7,11 @@ import ( "github.com/pkg/errors" "github.com/urfave/cli" - "go.step.sm/crypto/pemutil" - "github.com/smallstep/cli-utils/command" "github.com/smallstep/cli-utils/errs" "github.com/smallstep/cli-utils/step" "github.com/smallstep/cli-utils/ui" + "go.step.sm/crypto/pemutil" "github.com/smallstep/cli/flags" "github.com/smallstep/cli/token" diff --git a/command/ca/federation.go b/command/ca/federation.go index de91d2ef..a1f3da74 100644 --- a/command/ca/federation.go +++ b/command/ca/federation.go @@ -11,12 +11,11 @@ import ( "github.com/smallstep/certificates/api" "github.com/smallstep/certificates/ca" "github.com/smallstep/certificates/pki" - "go.step.sm/crypto/pemutil" - "github.com/smallstep/cli-utils/command" "github.com/smallstep/cli-utils/errs" "github.com/smallstep/cli-utils/fileutil" "github.com/smallstep/cli-utils/ui" + "go.step.sm/crypto/pemutil" "github.com/smallstep/cli/flags" ) diff --git a/command/ca/health.go b/command/ca/health.go index cfb6ceb6..3ad013c5 100644 --- a/command/ca/health.go +++ b/command/ca/health.go @@ -9,7 +9,6 @@ import ( "github.com/smallstep/certificates/ca" "github.com/smallstep/certificates/pki" - "github.com/smallstep/cli-utils/errs" "github.com/smallstep/cli/flags" diff --git a/command/ca/health_test.go b/command/ca/health_test.go index 3c3c330b..4c21a1eb 100644 --- a/command/ca/health_test.go +++ b/command/ca/health_test.go @@ -13,11 +13,10 @@ import ( "github.com/stretchr/testify/require" "github.com/urfave/cli" - "go.step.sm/crypto/minica" - "go.step.sm/crypto/pemutil" - "github.com/smallstep/certificates/authority/config" stepca "github.com/smallstep/certificates/ca" + "go.step.sm/crypto/minica" + "go.step.sm/crypto/pemutil" ) // reservePort "reserves" a TCP port by opening a listener on a random diff --git a/command/ca/init.go b/command/ca/init.go index 06786d0e..37fc6066 100644 --- a/command/ca/init.go +++ b/command/ca/init.go @@ -18,13 +18,12 @@ import ( "github.com/smallstep/certificates/cas/apiv1" "github.com/smallstep/certificates/pki" - "go.step.sm/crypto/kms" - _ "go.step.sm/crypto/kms/azurekms" // enable azurekms - "go.step.sm/crypto/pemutil" - "github.com/smallstep/cli-utils/errs" "github.com/smallstep/cli-utils/step" "github.com/smallstep/cli-utils/ui" + "go.step.sm/crypto/kms" + _ "go.step.sm/crypto/kms/azurekms" // enable azurekms + "go.step.sm/crypto/pemutil" "github.com/smallstep/cli/flags" "github.com/smallstep/cli/utils" diff --git a/command/ca/policy/actions/policy.go b/command/ca/policy/actions/policy.go index 8f6626a1..82b77f95 100644 --- a/command/ca/policy/actions/policy.go +++ b/command/ca/policy/actions/policy.go @@ -10,9 +10,8 @@ import ( "google.golang.org/protobuf/encoding/protojson" "github.com/smallstep/certificates/ca" - "github.com/smallstep/linkedca" - "github.com/smallstep/cli-utils/errs" + "github.com/smallstep/linkedca" "github.com/smallstep/cli/command/ca/policy/policycontext" "github.com/smallstep/cli/internal/command" diff --git a/command/ca/policy/actions/remove.go b/command/ca/policy/actions/remove.go index 6d49c050..7171329f 100644 --- a/command/ca/policy/actions/remove.go +++ b/command/ca/policy/actions/remove.go @@ -8,7 +8,6 @@ import ( "github.com/urfave/cli" "github.com/smallstep/certificates/ca" - "github.com/smallstep/cli-utils/errs" "github.com/smallstep/cli/command/ca/policy/policycontext" diff --git a/command/ca/policy/actions/view.go b/command/ca/policy/actions/view.go index 37bb028e..543dc36c 100644 --- a/command/ca/policy/actions/view.go +++ b/command/ca/policy/actions/view.go @@ -8,9 +8,8 @@ import ( "github.com/urfave/cli" "github.com/smallstep/certificates/ca" - "github.com/smallstep/linkedca" - "github.com/smallstep/cli-utils/errs" + "github.com/smallstep/linkedca" "github.com/smallstep/cli/command/ca/policy/policycontext" "github.com/smallstep/cli/flags" diff --git a/command/ca/provisioner/add.go b/command/ca/provisioner/add.go index f8a8b13d..af110771 100644 --- a/command/ca/provisioner/add.go +++ b/command/ca/provisioner/add.go @@ -15,14 +15,13 @@ import ( "github.com/pkg/errors" "github.com/urfave/cli" + "github.com/smallstep/cli-utils/errs" + "github.com/smallstep/cli-utils/ui" "github.com/smallstep/linkedca" "go.step.sm/crypto/jose" "go.step.sm/crypto/mldsa" "go.step.sm/crypto/pemutil" - "github.com/smallstep/cli-utils/errs" - "github.com/smallstep/cli-utils/ui" - "github.com/smallstep/cli/flags" "github.com/smallstep/cli/internal/cast" "github.com/smallstep/cli/internal/sliceutil" diff --git a/command/ca/provisioner/caConfigClient.go b/command/ca/provisioner/caConfigClient.go index d096e55c..eceb20a6 100644 --- a/command/ca/provisioner/caConfigClient.go +++ b/command/ca/provisioner/caConfigClient.go @@ -9,9 +9,8 @@ import ( "github.com/smallstep/certificates/authority/config" "github.com/smallstep/certificates/authority/provisioner" "github.com/smallstep/certificates/ca" - "github.com/smallstep/linkedca" - "github.com/smallstep/cli-utils/ui" + "github.com/smallstep/linkedca" ) // nodb implements the certificates/Adminclient interface with noops. diff --git a/command/ca/provisioner/getEncryptedKey.go b/command/ca/provisioner/getEncryptedKey.go index 66724109..1c9a78b8 100644 --- a/command/ca/provisioner/getEncryptedKey.go +++ b/command/ca/provisioner/getEncryptedKey.go @@ -7,7 +7,6 @@ import ( "github.com/urfave/cli" "github.com/smallstep/certificates/pki" - "github.com/smallstep/cli-utils/errs" "github.com/smallstep/cli/flags" diff --git a/command/ca/provisioner/list.go b/command/ca/provisioner/list.go index b7352a3c..4e5efeec 100644 --- a/command/ca/provisioner/list.go +++ b/command/ca/provisioner/list.go @@ -8,7 +8,6 @@ import ( "github.com/urfave/cli" "github.com/smallstep/certificates/pki" - "github.com/smallstep/cli-utils/errs" "github.com/smallstep/cli/flags" diff --git a/command/ca/provisioner/provisioner.go b/command/ca/provisioner/provisioner.go index cec0a126..c0e9bcff 100644 --- a/command/ca/provisioner/provisioner.go +++ b/command/ca/provisioner/provisioner.go @@ -13,10 +13,9 @@ import ( "github.com/smallstep/certificates/authority/config" "github.com/smallstep/certificates/authority/provisioner" "github.com/smallstep/certificates/ca" - "github.com/smallstep/linkedca" - "github.com/smallstep/cli-utils/errs" "github.com/smallstep/cli-utils/ui" + "github.com/smallstep/linkedca" "github.com/smallstep/cli/command/ca/provisioner/webhook" "github.com/smallstep/cli/utils" diff --git a/command/ca/provisioner/remove.go b/command/ca/provisioner/remove.go index f820a910..892350eb 100644 --- a/command/ca/provisioner/remove.go +++ b/command/ca/provisioner/remove.go @@ -4,8 +4,8 @@ import ( "github.com/urfave/cli" "github.com/smallstep/certificates/ca" - "github.com/smallstep/cli-utils/errs" + "github.com/smallstep/cli/flags" ) diff --git a/command/ca/provisioner/update.go b/command/ca/provisioner/update.go index 733be5d2..d0f1b8fa 100644 --- a/command/ca/provisioner/update.go +++ b/command/ca/provisioner/update.go @@ -14,10 +14,8 @@ import ( "github.com/urfave/cli" "github.com/smallstep/certificates/ca" - "github.com/smallstep/cli-utils/errs" "github.com/smallstep/cli-utils/ui" - "github.com/smallstep/linkedca" "go.step.sm/crypto/jose" "go.step.sm/crypto/mldsa" diff --git a/command/ca/provisioner/webhook/add.go b/command/ca/provisioner/webhook/add.go index 305c00fd..d6dda214 100644 --- a/command/ca/provisioner/webhook/add.go +++ b/command/ca/provisioner/webhook/add.go @@ -5,9 +5,8 @@ import ( "github.com/urfave/cli" - "github.com/smallstep/linkedca" - "github.com/smallstep/cli-utils/errs" + "github.com/smallstep/linkedca" "github.com/smallstep/cli/flags" "github.com/smallstep/cli/utils" diff --git a/command/ca/provisioner/webhook/update.go b/command/ca/provisioner/webhook/update.go index 3f7753f2..abcbbdac 100644 --- a/command/ca/provisioner/webhook/update.go +++ b/command/ca/provisioner/webhook/update.go @@ -7,9 +7,8 @@ import ( "github.com/urfave/cli" "github.com/smallstep/certificates/ca" - "github.com/smallstep/linkedca" - "github.com/smallstep/cli-utils/errs" + "github.com/smallstep/linkedca" "github.com/smallstep/cli/flags" "github.com/smallstep/cli/utils" diff --git a/command/ca/provisioner/webhook/webhook.go b/command/ca/provisioner/webhook/webhook.go index 08741827..b4ac65a2 100644 --- a/command/ca/provisioner/webhook/webhook.go +++ b/command/ca/provisioner/webhook/webhook.go @@ -9,10 +9,9 @@ import ( "github.com/smallstep/certificates/authority/config" "github.com/smallstep/certificates/ca" - "github.com/smallstep/linkedca" - "github.com/smallstep/cli-utils/errs" "github.com/smallstep/cli-utils/ui" + "github.com/smallstep/linkedca" "github.com/smallstep/cli/utils/cautils" ) diff --git a/command/ca/rekey.go b/command/ca/rekey.go index 84290eac..aa80dcac 100644 --- a/command/ca/rekey.go +++ b/command/ca/rekey.go @@ -13,12 +13,11 @@ import ( "github.com/urfave/cli" "github.com/smallstep/certificates/pki" - "go.step.sm/crypto/keyutil" - "go.step.sm/crypto/pemutil" - "github.com/smallstep/cli-utils/command" "github.com/smallstep/cli-utils/errs" "github.com/smallstep/cli-utils/ui" + "go.step.sm/crypto/keyutil" + "go.step.sm/crypto/pemutil" "github.com/smallstep/cli/flags" "github.com/smallstep/cli/internal/cryptoutil" diff --git a/command/ca/renew.go b/command/ca/renew.go index 723883de..ba2b5783 100644 --- a/command/ca/renew.go +++ b/command/ca/renew.go @@ -25,14 +25,13 @@ import ( "github.com/smallstep/certificates/api" "github.com/smallstep/certificates/ca" "github.com/smallstep/certificates/pki" - "go.step.sm/crypto/jose" - "go.step.sm/crypto/pemutil" - "go.step.sm/crypto/x509util" - "github.com/smallstep/cli-utils/command" "github.com/smallstep/cli-utils/errs" "github.com/smallstep/cli-utils/fileutil" "github.com/smallstep/cli-utils/ui" + "go.step.sm/crypto/jose" + "go.step.sm/crypto/pemutil" + "go.step.sm/crypto/x509util" "github.com/smallstep/cli/flags" "github.com/smallstep/cli/internal/cryptoutil" diff --git a/command/ca/revoke.go b/command/ca/revoke.go index e4e5af4b..1be767a8 100644 --- a/command/ca/revoke.go +++ b/command/ca/revoke.go @@ -14,19 +14,18 @@ import ( "github.com/pkg/errors" "github.com/urfave/cli" + "golang.org/x/crypto/ocsp" "github.com/smallstep/certificates/api" "github.com/smallstep/certificates/authority/provisioner" "github.com/smallstep/certificates/ca" "github.com/smallstep/certificates/pki" - "go.step.sm/crypto/jose" - "go.step.sm/crypto/pemutil" - "go.step.sm/crypto/x509util" - "golang.org/x/crypto/ocsp" - "github.com/smallstep/cli-utils/command" "github.com/smallstep/cli-utils/errs" "github.com/smallstep/cli-utils/ui" + "go.step.sm/crypto/jose" + "go.step.sm/crypto/pemutil" + "go.step.sm/crypto/x509util" "github.com/smallstep/cli/flags" "github.com/smallstep/cli/utils/cautils" diff --git a/command/ca/root.go b/command/ca/root.go index 5c3e8e11..9bbaaa2c 100644 --- a/command/ca/root.go +++ b/command/ca/root.go @@ -9,11 +9,10 @@ import ( "github.com/urfave/cli" "github.com/smallstep/certificates/ca" - "go.step.sm/crypto/pemutil" - "github.com/smallstep/cli-utils/command" "github.com/smallstep/cli-utils/errs" "github.com/smallstep/cli-utils/ui" + "go.step.sm/crypto/pemutil" "github.com/smallstep/cli/flags" ) diff --git a/command/ca/sign.go b/command/ca/sign.go index add9b416..5129aa89 100644 --- a/command/ca/sign.go +++ b/command/ca/sign.go @@ -8,11 +8,10 @@ import ( "github.com/urfave/cli" "github.com/smallstep/certificates/api" - "go.step.sm/crypto/pemutil" - "github.com/smallstep/cli-utils/command" "github.com/smallstep/cli-utils/errs" "github.com/smallstep/cli-utils/ui" + "go.step.sm/crypto/pemutil" "github.com/smallstep/cli/flags" "github.com/smallstep/cli/token" diff --git a/command/ca/token.go b/command/ca/token.go index 2c5572b5..42f4b849 100644 --- a/command/ca/token.go +++ b/command/ca/token.go @@ -7,14 +7,14 @@ import ( "github.com/pkg/errors" "github.com/urfave/cli" - "github.com/smallstep/certificates/api" - "github.com/smallstep/certificates/pki" - "go.step.sm/crypto/pemutil" "golang.org/x/crypto/ssh" + "github.com/smallstep/certificates/api" + "github.com/smallstep/certificates/pki" "github.com/smallstep/cli-utils/command" "github.com/smallstep/cli-utils/errs" "github.com/smallstep/cli-utils/fileutil" + "go.step.sm/crypto/pemutil" "github.com/smallstep/cli/flags" "github.com/smallstep/cli/utils" diff --git a/command/certificate/create.go b/command/certificate/create.go index 632df50f..5ab72823 100644 --- a/command/certificate/create.go +++ b/command/certificate/create.go @@ -9,14 +9,13 @@ import ( "github.com/pkg/errors" "github.com/urfave/cli" - "go.step.sm/crypto/keyutil" - "go.step.sm/crypto/pemutil" - "go.step.sm/crypto/x509util" - "github.com/smallstep/cli-utils/command" "github.com/smallstep/cli-utils/errs" "github.com/smallstep/cli-utils/fileutil" "github.com/smallstep/cli-utils/ui" + "go.step.sm/crypto/keyutil" + "go.step.sm/crypto/pemutil" + "go.step.sm/crypto/x509util" "github.com/smallstep/cli/flags" "github.com/smallstep/cli/internal/cryptoutil" diff --git a/command/certificate/fingerprint.go b/command/certificate/fingerprint.go index 937c41fc..f5ef95bb 100644 --- a/command/certificate/fingerprint.go +++ b/command/certificate/fingerprint.go @@ -5,19 +5,18 @@ import ( "crypto/x509" "fmt" - //nolint:gosec // support for sha1 fingerprints - _ "crypto/sha1" - "github.com/pkg/errors" "github.com/urfave/cli" + "github.com/smallstep/cli-utils/errs" "go.step.sm/crypto/fingerprint" "go.step.sm/crypto/pemutil" - "github.com/smallstep/cli-utils/errs" - "github.com/smallstep/cli/flags" "github.com/smallstep/cli/utils" + + //nolint:gosec // support for sha1 fingerprints + _ "crypto/sha1" ) func fingerprintCommand() cli.Command { diff --git a/command/certificate/inspect.go b/command/certificate/inspect.go index 862564dd..2b273ac8 100644 --- a/command/certificate/inspect.go +++ b/command/certificate/inspect.go @@ -12,11 +12,10 @@ import ( "github.com/urfave/cli" "github.com/smallstep/certinfo" + "github.com/smallstep/cli-utils/errs" zx509 "github.com/smallstep/zcrypto/x509" "go.step.sm/crypto/pemutil" - "github.com/smallstep/cli-utils/errs" - "github.com/smallstep/cli/flags" "github.com/smallstep/cli/utils" ) diff --git a/command/certificate/inspect_test.go b/command/certificate/inspect_test.go index 9a0d2e69..238420b2 100644 --- a/command/certificate/inspect_test.go +++ b/command/certificate/inspect_test.go @@ -6,8 +6,9 @@ import ( "flag" "testing" - "github.com/smallstep/assert" "github.com/urfave/cli" + + "github.com/smallstep/assert" "go.step.sm/crypto/pemutil" ) diff --git a/command/certificate/install.go b/command/certificate/install.go index d8775745..cab7524e 100644 --- a/command/certificate/install.go +++ b/command/certificate/install.go @@ -9,11 +9,10 @@ import ( "github.com/urfave/cli" "github.com/smallstep/certinfo" - "github.com/smallstep/truststore" - "go.step.sm/crypto/pemutil" - "github.com/smallstep/cli-utils/command" "github.com/smallstep/cli-utils/errs" + "github.com/smallstep/truststore" + "go.step.sm/crypto/pemutil" ) func installCommand() cli.Command { diff --git a/command/certificate/key.go b/command/certificate/key.go index fb5be7bc..ba4da5c5 100644 --- a/command/certificate/key.go +++ b/command/certificate/key.go @@ -6,12 +6,11 @@ import ( "github.com/urfave/cli" - "go.step.sm/crypto/pemutil" - "github.com/smallstep/cli-utils/command" "github.com/smallstep/cli-utils/errs" "github.com/smallstep/cli-utils/fileutil" "github.com/smallstep/cli-utils/ui" + "go.step.sm/crypto/pemutil" "github.com/smallstep/cli/flags" "github.com/smallstep/cli/utils" diff --git a/command/certificate/lint.go b/command/certificate/lint.go index 6c13c968..8eecde2b 100644 --- a/command/certificate/lint.go +++ b/command/certificate/lint.go @@ -8,11 +8,10 @@ import ( "github.com/pkg/errors" "github.com/urfave/cli" + "github.com/smallstep/cli-utils/errs" zx509 "github.com/smallstep/zcrypto/x509" "github.com/smallstep/zlint" - "github.com/smallstep/cli-utils/errs" - "github.com/smallstep/cli/flags" ) diff --git a/command/certificate/needsRenewal.go b/command/certificate/needsRenewal.go index 385c2ba4..d82afd2d 100644 --- a/command/certificate/needsRenewal.go +++ b/command/certificate/needsRenewal.go @@ -11,9 +11,8 @@ import ( "github.com/pkg/errors" "github.com/urfave/cli" - "go.step.sm/crypto/pemutil" - "github.com/smallstep/cli-utils/errs" + "go.step.sm/crypto/pemutil" "github.com/smallstep/cli/flags" ) diff --git a/command/certificate/p12.go b/command/certificate/p12.go index 137dac19..2f6f53b2 100644 --- a/command/certificate/p12.go +++ b/command/certificate/p12.go @@ -8,13 +8,12 @@ import ( "github.com/urfave/cli" "software.sslmate.com/src/go-pkcs12" - "go.step.sm/crypto/pemutil" - "go.step.sm/crypto/x509util" - "github.com/smallstep/cli-utils/command" "github.com/smallstep/cli-utils/errs" "github.com/smallstep/cli-utils/fileutil" "github.com/smallstep/cli-utils/ui" + "go.step.sm/crypto/pemutil" + "go.step.sm/crypto/x509util" "github.com/smallstep/cli/flags" "github.com/smallstep/cli/utils" diff --git a/command/certificate/remote.go b/command/certificate/remote.go index 211de504..ce7850ca 100644 --- a/command/certificate/remote.go +++ b/command/certificate/remote.go @@ -9,6 +9,7 @@ import ( "strings" "github.com/pkg/errors" + "go.step.sm/crypto/x509util" ) diff --git a/command/certificate/sign.go b/command/certificate/sign.go index 12044922..cfb02fe2 100644 --- a/command/certificate/sign.go +++ b/command/certificate/sign.go @@ -13,12 +13,12 @@ import ( "github.com/pkg/errors" "github.com/urfave/cli" - "go.step.sm/crypto/mldsa" - "go.step.sm/crypto/pemutil" - "go.step.sm/crypto/x509util" "github.com/smallstep/cli-utils/errs" "github.com/smallstep/cli-utils/ui" + "go.step.sm/crypto/mldsa" + "go.step.sm/crypto/pemutil" + "go.step.sm/crypto/x509util" "github.com/smallstep/cli/flags" "github.com/smallstep/cli/internal/cryptoutil" diff --git a/command/certificate/verify.go b/command/certificate/verify.go index 6bce8bed..d904b5fb 100644 --- a/command/certificate/verify.go +++ b/command/certificate/verify.go @@ -15,9 +15,8 @@ import ( "github.com/urfave/cli" "golang.org/x/crypto/ocsp" - "go.step.sm/crypto/x509util" - "github.com/smallstep/cli-utils/errs" + "go.step.sm/crypto/x509util" "github.com/smallstep/cli/flags" "github.com/smallstep/cli/internal/crlutil" diff --git a/command/crl/inspect.go b/command/crl/inspect.go index d554c777..ece9b694 100644 --- a/command/crl/inspect.go +++ b/command/crl/inspect.go @@ -16,11 +16,10 @@ import ( "github.com/pkg/errors" "github.com/urfave/cli" - "go.step.sm/crypto/pemutil" - "go.step.sm/crypto/x509util" - "github.com/smallstep/cli-utils/command" "github.com/smallstep/cli-utils/errs" + "go.step.sm/crypto/pemutil" + "go.step.sm/crypto/x509util" "github.com/smallstep/cli/flags" "github.com/smallstep/cli/internal/crlutil" diff --git a/command/crypto/change-pass.go b/command/crypto/change-pass.go index 47b73d13..9fe8ea14 100644 --- a/command/crypto/change-pass.go +++ b/command/crypto/change-pass.go @@ -9,13 +9,12 @@ import ( "github.com/pkg/errors" "github.com/urfave/cli" - "go.step.sm/crypto/jose" - "go.step.sm/crypto/pemutil" - "github.com/smallstep/cli-utils/command" "github.com/smallstep/cli-utils/errs" "github.com/smallstep/cli-utils/fileutil" "github.com/smallstep/cli-utils/ui" + "go.step.sm/crypto/jose" + "go.step.sm/crypto/pemutil" "github.com/smallstep/cli/flags" ) diff --git a/command/crypto/hash/hash.go b/command/crypto/hash/hash.go index 0c997adb..42ab7619 100644 --- a/command/crypto/hash/hash.go +++ b/command/crypto/hash/hash.go @@ -1,6 +1,13 @@ package hash import ( + "github.com/pkg/errors" + "github.com/urfave/cli" + + "github.com/smallstep/cli-utils/errs" + + "github.com/smallstep/cli/flags" + //nolint:gosec // md5 can only be used with --insecure flag "crypto/md5" //nolint:gosec // sha1 is being used to calculate a hash, not a key @@ -16,13 +23,6 @@ import ( "os" "path" "strings" - - "github.com/pkg/errors" - "github.com/urfave/cli" - - "github.com/smallstep/cli-utils/errs" - - "github.com/smallstep/cli/flags" ) type hashConstructor func() hash.Hash diff --git a/command/crypto/jose/jose.go b/command/crypto/jose/jose.go index cc591f9c..f3c8f5f0 100644 --- a/command/crypto/jose/jose.go +++ b/command/crypto/jose/jose.go @@ -10,6 +10,7 @@ import ( "github.com/pkg/errors" "github.com/urfave/cli" + "go.step.sm/crypto/jose" "github.com/smallstep/cli/internal/joseutil" diff --git a/command/crypto/jwe/decrypt.go b/command/crypto/jwe/decrypt.go index c99cdafa..8e26d359 100644 --- a/command/crypto/jwe/decrypt.go +++ b/command/crypto/jwe/decrypt.go @@ -7,10 +7,9 @@ import ( "github.com/pkg/errors" "github.com/urfave/cli" - "go.step.sm/crypto/jose" - "github.com/smallstep/cli-utils/errs" "github.com/smallstep/cli-utils/ui" + "go.step.sm/crypto/jose" "github.com/smallstep/cli/utils" ) diff --git a/command/crypto/jwe/encrypt.go b/command/crypto/jwe/encrypt.go index c98ce2f7..7060dde9 100644 --- a/command/crypto/jwe/encrypt.go +++ b/command/crypto/jwe/encrypt.go @@ -7,10 +7,9 @@ import ( "github.com/pkg/errors" "github.com/urfave/cli" - "go.step.sm/crypto/jose" - "github.com/smallstep/cli-utils/errs" "github.com/smallstep/cli-utils/ui" + "go.step.sm/crypto/jose" "github.com/smallstep/cli/flags" "github.com/smallstep/cli/utils" diff --git a/command/crypto/jwk/create.go b/command/crypto/jwk/create.go index 29020e23..d53fd3ac 100644 --- a/command/crypto/jwk/create.go +++ b/command/crypto/jwk/create.go @@ -11,14 +11,13 @@ import ( "github.com/pkg/errors" "github.com/urfave/cli" - "go.step.sm/crypto/jose" - "go.step.sm/crypto/keyutil" - "go.step.sm/crypto/randutil" - "github.com/smallstep/cli-utils/command" "github.com/smallstep/cli-utils/errs" "github.com/smallstep/cli-utils/fileutil" "github.com/smallstep/cli-utils/ui" + "go.step.sm/crypto/jose" + "go.step.sm/crypto/keyutil" + "go.step.sm/crypto/randutil" "github.com/smallstep/cli/flags" "github.com/smallstep/cli/utils" diff --git a/command/crypto/jwk/keyset.go b/command/crypto/jwk/keyset.go index 8c5da84c..4cef7b97 100644 --- a/command/crypto/jwk/keyset.go +++ b/command/crypto/jwk/keyset.go @@ -10,10 +10,9 @@ import ( "github.com/pkg/errors" "github.com/urfave/cli" - "go.step.sm/crypto/jose" - "github.com/smallstep/cli-utils/errs" "github.com/smallstep/cli-utils/ui" + "go.step.sm/crypto/jose" "github.com/smallstep/cli/utils/sysutils" ) diff --git a/command/crypto/jwk/public.go b/command/crypto/jwk/public.go index dc7521dc..349837ff 100644 --- a/command/crypto/jwk/public.go +++ b/command/crypto/jwk/public.go @@ -9,9 +9,8 @@ import ( "github.com/pkg/errors" "github.com/urfave/cli" - "go.step.sm/crypto/jose" - "github.com/smallstep/cli-utils/ui" + "go.step.sm/crypto/jose" ) func publicCommand() cli.Command { diff --git a/command/crypto/jwk/thumbprint.go b/command/crypto/jwk/thumbprint.go index 45b8cda1..a91661ad 100644 --- a/command/crypto/jwk/thumbprint.go +++ b/command/crypto/jwk/thumbprint.go @@ -11,9 +11,8 @@ import ( "github.com/pkg/errors" "github.com/urfave/cli" - "go.step.sm/crypto/jose" - "github.com/smallstep/cli-utils/ui" + "go.step.sm/crypto/jose" ) func thumbprintCommand() cli.Command { diff --git a/command/crypto/jws/inspect.go b/command/crypto/jws/inspect.go index 1db76e8a..7612dde5 100644 --- a/command/crypto/jws/inspect.go +++ b/command/crypto/jws/inspect.go @@ -10,9 +10,8 @@ import ( "github.com/pkg/errors" "github.com/urfave/cli" - "go.step.sm/crypto/jose" - "github.com/smallstep/cli-utils/errs" + "go.step.sm/crypto/jose" "github.com/smallstep/cli/flags" "github.com/smallstep/cli/internal/joseutil" diff --git a/command/crypto/jws/sign.go b/command/crypto/jws/sign.go index 934220ee..e4faa691 100644 --- a/command/crypto/jws/sign.go +++ b/command/crypto/jws/sign.go @@ -4,16 +4,15 @@ import ( "fmt" "os" - "github.com/smallstep/cli/flags" - "github.com/smallstep/cli/utils" - "github.com/pkg/errors" "github.com/urfave/cli" + "github.com/smallstep/cli-utils/errs" "go.step.sm/crypto/jose" "go.step.sm/crypto/pemutil" - "github.com/smallstep/cli-utils/errs" + "github.com/smallstep/cli/flags" + "github.com/smallstep/cli/utils" ) func signCommand() cli.Command { diff --git a/command/crypto/jws/verify.go b/command/crypto/jws/verify.go index 9e91dfff..b62c83ef 100644 --- a/command/crypto/jws/verify.go +++ b/command/crypto/jws/verify.go @@ -6,9 +6,8 @@ import ( "github.com/pkg/errors" "github.com/urfave/cli" - "go.step.sm/crypto/jose" - "github.com/smallstep/cli-utils/errs" + "go.step.sm/crypto/jose" "github.com/smallstep/cli/flags" "github.com/smallstep/cli/utils" diff --git a/command/crypto/jwt/inspect.go b/command/crypto/jwt/inspect.go index a9b4da56..10036d76 100644 --- a/command/crypto/jwt/inspect.go +++ b/command/crypto/jwt/inspect.go @@ -10,9 +10,8 @@ import ( "github.com/pkg/errors" "github.com/urfave/cli" - "go.step.sm/crypto/jose" - "github.com/smallstep/cli-utils/errs" + "go.step.sm/crypto/jose" "github.com/smallstep/cli/internal/joseutil" "github.com/smallstep/cli/utils" diff --git a/command/crypto/jwt/sign.go b/command/crypto/jwt/sign.go index cb5f00c4..97c91171 100644 --- a/command/crypto/jwt/sign.go +++ b/command/crypto/jwt/sign.go @@ -12,12 +12,11 @@ import ( "github.com/pkg/errors" "github.com/urfave/cli" + "github.com/smallstep/cli-utils/errs" "go.step.sm/crypto/jose" "go.step.sm/crypto/pemutil" "go.step.sm/crypto/randutil" - "github.com/smallstep/cli-utils/errs" - "github.com/smallstep/cli/flags" ) diff --git a/command/crypto/jwt/verify.go b/command/crypto/jwt/verify.go index 38fef845..4f57a13c 100644 --- a/command/crypto/jwt/verify.go +++ b/command/crypto/jwt/verify.go @@ -9,9 +9,8 @@ import ( "github.com/pkg/errors" "github.com/urfave/cli" - "go.step.sm/crypto/jose" - "github.com/smallstep/cli-utils/errs" + "go.step.sm/crypto/jose" "github.com/smallstep/cli/flags" "github.com/smallstep/cli/utils" diff --git a/command/crypto/key/fingerprint.go b/command/crypto/key/fingerprint.go index 64c03e18..db89f025 100644 --- a/command/crypto/key/fingerprint.go +++ b/command/crypto/key/fingerprint.go @@ -9,20 +9,20 @@ import ( "fmt" "os" - //nolint:gosec // support for sha1 fingerprints - _ "crypto/sha1" - "github.com/pkg/errors" "github.com/urfave/cli" - "go.step.sm/crypto/fingerprint" - "go.step.sm/crypto/pemutil" "golang.org/x/crypto/ssh" "github.com/smallstep/cli-utils/errs" + "go.step.sm/crypto/fingerprint" + "go.step.sm/crypto/pemutil" "github.com/smallstep/cli/flags" "github.com/smallstep/cli/utils" + + //nolint:gosec // support for sha1 fingerprints + _ "crypto/sha1" ) func fingerprintCommand() cli.Command { diff --git a/command/crypto/key/format.go b/command/crypto/key/format.go index bfe0fffe..cf34786a 100644 --- a/command/crypto/key/format.go +++ b/command/crypto/key/format.go @@ -13,15 +13,15 @@ import ( "github.com/pkg/errors" "github.com/urfave/cli" - "go.step.sm/crypto/jose" - "go.step.sm/crypto/mldsa" - "go.step.sm/crypto/pemutil" "golang.org/x/crypto/ssh" "github.com/smallstep/cli-utils/command" "github.com/smallstep/cli-utils/errs" "github.com/smallstep/cli-utils/fileutil" "github.com/smallstep/cli-utils/ui" + "go.step.sm/crypto/jose" + "go.step.sm/crypto/mldsa" + "go.step.sm/crypto/pemutil" "github.com/smallstep/cli/flags" "github.com/smallstep/cli/utils" diff --git a/command/crypto/key/inspect.go b/command/crypto/key/inspect.go index 85be45d7..4c1b9b5a 100644 --- a/command/crypto/key/inspect.go +++ b/command/crypto/key/inspect.go @@ -11,11 +11,10 @@ import ( "github.com/pkg/errors" "github.com/urfave/cli" - "go.step.sm/crypto/mldsa" - "go.step.sm/crypto/pemutil" - "github.com/smallstep/cli-utils/command" "github.com/smallstep/cli-utils/errs" + "go.step.sm/crypto/mldsa" + "go.step.sm/crypto/pemutil" "github.com/smallstep/cli/utils" ) diff --git a/command/crypto/key/public.go b/command/crypto/key/public.go index e8331289..7484cdb1 100644 --- a/command/crypto/key/public.go +++ b/command/crypto/key/public.go @@ -6,13 +6,12 @@ import ( "github.com/urfave/cli" - "go.step.sm/crypto/keyutil" - "go.step.sm/crypto/pemutil" - "github.com/smallstep/cli-utils/command" "github.com/smallstep/cli-utils/errs" "github.com/smallstep/cli-utils/fileutil" "github.com/smallstep/cli-utils/ui" + "go.step.sm/crypto/keyutil" + "go.step.sm/crypto/pemutil" "github.com/smallstep/cli/flags" "github.com/smallstep/cli/utils" diff --git a/command/crypto/key/sign.go b/command/crypto/key/sign.go index c5d1a0a0..2767909a 100644 --- a/command/crypto/key/sign.go +++ b/command/crypto/key/sign.go @@ -15,11 +15,10 @@ import ( "github.com/pkg/errors" "github.com/urfave/cli" - "go.step.sm/crypto/mldsa" - "go.step.sm/crypto/pemutil" - "github.com/smallstep/cli-utils/command" "github.com/smallstep/cli-utils/errs" + "go.step.sm/crypto/mldsa" + "go.step.sm/crypto/pemutil" "github.com/smallstep/cli/utils" ) diff --git a/command/crypto/key/verify.go b/command/crypto/key/verify.go index 4fb0be1d..63454fe7 100644 --- a/command/crypto/key/verify.go +++ b/command/crypto/key/verify.go @@ -12,11 +12,10 @@ import ( "github.com/pkg/errors" "github.com/urfave/cli" - "go.step.sm/crypto/mldsa" - "go.step.sm/crypto/pemutil" - "github.com/smallstep/cli-utils/command" "github.com/smallstep/cli-utils/errs" + "go.step.sm/crypto/mldsa" + "go.step.sm/crypto/pemutil" "github.com/smallstep/cli/utils" ) diff --git a/command/crypto/keypair.go b/command/crypto/keypair.go index 389df0d3..80874837 100644 --- a/command/crypto/keypair.go +++ b/command/crypto/keypair.go @@ -4,13 +4,12 @@ import ( "github.com/pkg/errors" "github.com/urfave/cli" - "go.step.sm/crypto/jose" - "go.step.sm/crypto/keyutil" - "go.step.sm/crypto/pemutil" - "github.com/smallstep/cli-utils/command" "github.com/smallstep/cli-utils/errs" "github.com/smallstep/cli-utils/ui" + "go.step.sm/crypto/jose" + "go.step.sm/crypto/keyutil" + "go.step.sm/crypto/pemutil" "github.com/smallstep/cli/flags" "github.com/smallstep/cli/utils" diff --git a/command/crypto/rand/rand.go b/command/crypto/rand/rand.go index 1f252532..1cf62a55 100644 --- a/command/crypto/rand/rand.go +++ b/command/crypto/rand/rand.go @@ -13,7 +13,6 @@ import ( "github.com/smallstep/cli-utils/command" "github.com/smallstep/cli-utils/errs" - "go.step.sm/crypto/fingerprint" "go.step.sm/crypto/randutil" ) diff --git a/command/oauth/cmd.go b/command/oauth/cmd.go index 5408cc78..8e50df91 100644 --- a/command/oauth/cmd.go +++ b/command/oauth/cmd.go @@ -22,11 +22,10 @@ import ( "github.com/pkg/errors" "github.com/urfave/cli" - "go.step.sm/crypto/jose" - "go.step.sm/crypto/randutil" - "github.com/smallstep/cli-utils/command" "github.com/smallstep/cli-utils/errs" + "go.step.sm/crypto/jose" + "go.step.sm/crypto/randutil" "github.com/smallstep/cli/exec" "github.com/smallstep/cli/flags" diff --git a/command/ssh/certificate.go b/command/ssh/certificate.go index c08d0bce..ab89bf84 100644 --- a/command/ssh/certificate.go +++ b/command/ssh/certificate.go @@ -20,13 +20,12 @@ import ( "github.com/smallstep/certificates/authority/provisioner" "github.com/smallstep/certificates/ca" "github.com/smallstep/certificates/ca/identity" - "go.step.sm/crypto/keyutil" - "go.step.sm/crypto/pemutil" - "github.com/smallstep/cli-utils/command" "github.com/smallstep/cli-utils/errs" "github.com/smallstep/cli-utils/fileutil" "github.com/smallstep/cli-utils/ui" + "go.step.sm/crypto/keyutil" + "go.step.sm/crypto/pemutil" "github.com/smallstep/cli/flags" "github.com/smallstep/cli/internal/sshutil" diff --git a/command/ssh/checkHost.go b/command/ssh/checkHost.go index 926db15c..7a7ad45d 100644 --- a/command/ssh/checkHost.go +++ b/command/ssh/checkHost.go @@ -11,10 +11,9 @@ import ( "github.com/smallstep/certificates/ca" caErrs "github.com/smallstep/certificates/errs" - "go.step.sm/crypto/jose" - "github.com/smallstep/cli-utils/command" "github.com/smallstep/cli-utils/errs" + "go.step.sm/crypto/jose" "github.com/smallstep/cli/flags" "github.com/smallstep/cli/token" diff --git a/command/ssh/config.go b/command/ssh/config.go index 100b9564..d5450ae1 100644 --- a/command/ssh/config.go +++ b/command/ssh/config.go @@ -10,12 +10,12 @@ import ( "github.com/pkg/errors" "github.com/urfave/cli" + "golang.org/x/crypto/ssh" + "github.com/smallstep/certificates/api" "github.com/smallstep/certificates/authority/provisioner" "github.com/smallstep/certificates/ca" "github.com/smallstep/certificates/templates" - "golang.org/x/crypto/ssh" - "github.com/smallstep/cli-utils/command" "github.com/smallstep/cli-utils/errs" "github.com/smallstep/cli-utils/step" diff --git a/command/ssh/fingerprint.go b/command/ssh/fingerprint.go index 493b4385..96a7e11c 100644 --- a/command/ssh/fingerprint.go +++ b/command/ssh/fingerprint.go @@ -5,9 +5,8 @@ import ( "github.com/urfave/cli" - "go.step.sm/crypto/sshutil" - "github.com/smallstep/cli-utils/errs" + "go.step.sm/crypto/sshutil" "github.com/smallstep/cli/flags" "github.com/smallstep/cli/utils" diff --git a/command/ssh/hosts.go b/command/ssh/hosts.go index 54cbad2e..9ffc25d3 100644 --- a/command/ssh/hosts.go +++ b/command/ssh/hosts.go @@ -9,7 +9,6 @@ import ( "github.com/urfave/cli" "github.com/smallstep/certificates/ca" - "github.com/smallstep/cli-utils/command" "github.com/smallstep/cli-utils/errs" diff --git a/command/ssh/list.go b/command/ssh/list.go index 3067a747..82238d77 100644 --- a/command/ssh/list.go +++ b/command/ssh/list.go @@ -8,7 +8,6 @@ import ( "github.com/smallstep/cli-utils/command" "github.com/smallstep/cli-utils/errs" - libsshutil "go.step.sm/crypto/sshutil" "github.com/smallstep/cli/internal/sshutil" diff --git a/command/ssh/login.go b/command/ssh/login.go index 21e6de00..567bcff3 100644 --- a/command/ssh/login.go +++ b/command/ssh/login.go @@ -11,11 +11,10 @@ import ( "github.com/smallstep/certificates/api" "github.com/smallstep/certificates/authority/provisioner" "github.com/smallstep/certificates/ca" - "go.step.sm/crypto/keyutil" - "github.com/smallstep/cli-utils/command" "github.com/smallstep/cli-utils/errs" "github.com/smallstep/cli-utils/ui" + "go.step.sm/crypto/keyutil" "github.com/smallstep/cli/flags" "github.com/smallstep/cli/internal/sshutil" diff --git a/command/ssh/proxycommand.go b/command/ssh/proxycommand.go index a63085ff..0a0293b3 100644 --- a/command/ssh/proxycommand.go +++ b/command/ssh/proxycommand.go @@ -15,10 +15,9 @@ import ( "github.com/smallstep/certificates/api" "github.com/smallstep/certificates/authority/provisioner" "github.com/smallstep/certificates/ca" - "go.step.sm/crypto/keyutil" - "github.com/smallstep/cli-utils/command" "github.com/smallstep/cli-utils/errs" + "go.step.sm/crypto/keyutil" "github.com/smallstep/cli/exec" "github.com/smallstep/cli/flags" diff --git a/command/ssh/rekey.go b/command/ssh/rekey.go index 7271d0ee..0be528ad 100644 --- a/command/ssh/rekey.go +++ b/command/ssh/rekey.go @@ -11,12 +11,10 @@ import ( "github.com/smallstep/certificates/api" "github.com/smallstep/certificates/authority/provisioner" "github.com/smallstep/certificates/ca/identity" - "github.com/smallstep/cli-utils/command" "github.com/smallstep/cli-utils/errs" "github.com/smallstep/cli-utils/fileutil" "github.com/smallstep/cli-utils/ui" - "go.step.sm/crypto/keyutil" "go.step.sm/crypto/pemutil" diff --git a/command/ssh/renew.go b/command/ssh/renew.go index 2ce53e2c..1498b038 100644 --- a/command/ssh/renew.go +++ b/command/ssh/renew.go @@ -11,7 +11,6 @@ import ( "github.com/smallstep/certificates/api" "github.com/smallstep/certificates/authority/provisioner" "github.com/smallstep/certificates/ca/identity" - "github.com/smallstep/cli-utils/command" "github.com/smallstep/cli-utils/errs" "github.com/smallstep/cli-utils/fileutil" diff --git a/command/ssh/revoke.go b/command/ssh/revoke.go index 2c581957..5944abb2 100644 --- a/command/ssh/revoke.go +++ b/command/ssh/revoke.go @@ -11,7 +11,6 @@ import ( "github.com/smallstep/certificates/api" "github.com/smallstep/certificates/authority/provisioner" "github.com/smallstep/certificates/ca" - "github.com/smallstep/cli-utils/command" "github.com/smallstep/cli-utils/errs" "github.com/smallstep/cli-utils/ui" diff --git a/command/ssh/ssh.go b/command/ssh/ssh.go index 6aefe5f8..24a4e8d8 100644 --- a/command/ssh/ssh.go +++ b/command/ssh/ssh.go @@ -12,10 +12,9 @@ import ( "github.com/smallstep/certificates/authority/provisioner" "github.com/smallstep/certificates/ca" "github.com/smallstep/certificates/errs" - "go.step.sm/crypto/keyutil" - "github.com/smallstep/cli-utils/command" "github.com/smallstep/cli-utils/ui" + "go.step.sm/crypto/keyutil" "github.com/smallstep/cli/flags" "github.com/smallstep/cli/internal/sshutil" diff --git a/flags/flags.go b/flags/flags.go index c589b317..a320f5eb 100644 --- a/flags/flags.go +++ b/flags/flags.go @@ -13,10 +13,9 @@ import ( "github.com/urfave/cli" "github.com/smallstep/certificates/api" - "go.step.sm/crypto/fingerprint" - "github.com/smallstep/cli-utils/errs" "github.com/smallstep/cli-utils/step" + "go.step.sm/crypto/fingerprint" "github.com/smallstep/cli/utils" ) diff --git a/flags/flags_test.go b/flags/flags_test.go index b1b1d4bc..14272184 100644 --- a/flags/flags_test.go +++ b/flags/flags_test.go @@ -10,9 +10,10 @@ import ( "reflect" "testing" - "github.com/smallstep/assert" "github.com/stretchr/testify/require" "github.com/urfave/cli" + + "github.com/smallstep/assert" "go.step.sm/crypto/fingerprint" ) diff --git a/internal/cmd/root.go b/internal/cmd/root.go index e39c4c36..5a2cd76a 100644 --- a/internal/cmd/root.go +++ b/internal/cmd/root.go @@ -12,14 +12,14 @@ import ( "github.com/urfave/cli" - "go.step.sm/crypto/jose" - "go.step.sm/crypto/pemutil" - "github.com/smallstep/cli-utils/command" "github.com/smallstep/cli-utils/fileutil" "github.com/smallstep/cli-utils/step" "github.com/smallstep/cli-utils/ui" "github.com/smallstep/cli-utils/usage" + "go.step.sm/crypto/jose" + "go.step.sm/crypto/pemutil" + "github.com/smallstep/cli/command/version" "github.com/smallstep/cli/internal/plugin" diff --git a/internal/crlutil/crlutil.go b/internal/crlutil/crlutil.go index a704d6c7..245d6108 100644 --- a/internal/crlutil/crlutil.go +++ b/internal/crlutil/crlutil.go @@ -16,6 +16,7 @@ import ( "time" "github.com/pkg/errors" + "go.step.sm/crypto/mldsa" ) diff --git a/token/parse.go b/token/parse.go index 4c409345..7fe72928 100644 --- a/token/parse.go +++ b/token/parse.go @@ -7,6 +7,7 @@ import ( "time" "github.com/pkg/errors" + "go.step.sm/crypto/jose" ) diff --git a/token/provision/provision_test.go b/token/provision/provision_test.go index e7930a02..352baa74 100644 --- a/token/provision/provision_test.go +++ b/token/provision/provision_test.go @@ -7,6 +7,7 @@ import ( "time" "github.com/stretchr/testify/assert" + "go.step.sm/crypto/jose" "go.step.sm/crypto/pemutil" diff --git a/token/token.go b/token/token.go index e2b1a602..4e4a8277 100644 --- a/token/token.go +++ b/token/token.go @@ -4,6 +4,7 @@ import ( "time" "github.com/pkg/errors" + "go.step.sm/crypto/jose" "go.step.sm/crypto/keyutil" ) diff --git a/utils/cautils/acme_flow.go b/utils/cautils/acme_flow.go index c1aed13c..1549a496 100644 --- a/utils/cautils/acme_flow.go +++ b/utils/cautils/acme_flow.go @@ -6,9 +6,8 @@ import ( "github.com/pkg/errors" "github.com/urfave/cli" - "go.step.sm/crypto/pemutil" - "github.com/smallstep/cli-utils/ui" + "go.step.sm/crypto/pemutil" ) // ACMECreateCertFlow performs an ACME transaction to get a new certificate. diff --git a/utils/cautils/acmeutils.go b/utils/cautils/acmeutils.go index f6189396..570a6944 100644 --- a/utils/cautils/acmeutils.go +++ b/utils/cautils/acmeutils.go @@ -30,6 +30,9 @@ import ( acmeAPI "github.com/smallstep/certificates/acme/api" "github.com/smallstep/certificates/ca" "github.com/smallstep/certificates/pki" + "github.com/smallstep/cli-utils/errs" + "github.com/smallstep/cli-utils/fileutil" + "github.com/smallstep/cli-utils/ui" "go.step.sm/crypto/jose" "go.step.sm/crypto/keyutil" "go.step.sm/crypto/mldsa" @@ -37,10 +40,6 @@ import ( "go.step.sm/crypto/tpm" tpmstorage "go.step.sm/crypto/tpm/storage" - "github.com/smallstep/cli-utils/errs" - "github.com/smallstep/cli-utils/fileutil" - "github.com/smallstep/cli-utils/ui" - "github.com/smallstep/cli/flags" "github.com/smallstep/cli/internal/cryptoutil" "github.com/smallstep/cli/utils" diff --git a/utils/cautils/bootstrap.go b/utils/cautils/bootstrap.go index 48bd2b13..b2971f6f 100644 --- a/utils/cautils/bootstrap.go +++ b/utils/cautils/bootstrap.go @@ -15,13 +15,12 @@ import ( "github.com/smallstep/certificates/ca" "github.com/smallstep/certificates/pki" - "github.com/smallstep/truststore" - "go.step.sm/crypto/pemutil" - "github.com/smallstep/cli-utils/errs" "github.com/smallstep/cli-utils/fileutil" "github.com/smallstep/cli-utils/step" "github.com/smallstep/cli-utils/ui" + "github.com/smallstep/truststore" + "go.step.sm/crypto/pemutil" "github.com/smallstep/cli/utils" ) diff --git a/utils/cautils/certificate_flow.go b/utils/cautils/certificate_flow.go index 4914ebfb..aa8ffac8 100644 --- a/utils/cautils/certificate_flow.go +++ b/utils/cautils/certificate_flow.go @@ -22,13 +22,12 @@ import ( "github.com/smallstep/certificates/authority/provisioner" "github.com/smallstep/certificates/ca" "github.com/smallstep/certificates/pki" - "go.step.sm/crypto/keyutil" - "go.step.sm/crypto/pemutil" - "go.step.sm/crypto/x509util" - "github.com/smallstep/cli-utils/errs" "github.com/smallstep/cli-utils/fileutil" "github.com/smallstep/cli-utils/ui" + "go.step.sm/crypto/keyutil" + "go.step.sm/crypto/pemutil" + "go.step.sm/crypto/x509util" "github.com/smallstep/cli/flags" "github.com/smallstep/cli/token" diff --git a/utils/cautils/client.go b/utils/cautils/client.go index a28f355b..80e88fa4 100644 --- a/utils/cautils/client.go +++ b/utils/cautils/client.go @@ -15,10 +15,8 @@ import ( "github.com/smallstep/certificates/authority/provisioner" "github.com/smallstep/certificates/ca" "github.com/smallstep/certificates/pki" - "github.com/smallstep/cli-utils/errs" "github.com/smallstep/cli-utils/ui" - "go.step.sm/crypto/keyutil" "go.step.sm/crypto/pemutil" diff --git a/utils/cautils/token_flow.go b/utils/cautils/token_flow.go index 94421b59..ebdfa564 100644 --- a/utils/cautils/token_flow.go +++ b/utils/cautils/token_flow.go @@ -11,7 +11,6 @@ import ( "github.com/smallstep/certificates/authority/provisioner" "github.com/smallstep/certificates/pki" - "github.com/smallstep/cli-utils/errs" "github.com/smallstep/cli-utils/ui" diff --git a/utils/cautils/token_generator.go b/utils/cautils/token_generator.go index bd22a208..df3ebf47 100644 --- a/utils/cautils/token_generator.go +++ b/utils/cautils/token_generator.go @@ -18,13 +18,12 @@ import ( "github.com/smallstep/certificates/authority/provisioner" "github.com/smallstep/certificates/pki" + "github.com/smallstep/cli-utils/errs" + "github.com/smallstep/cli-utils/ui" "go.step.sm/crypto/jose" "go.step.sm/crypto/pemutil" "go.step.sm/crypto/randutil" - "github.com/smallstep/cli-utils/errs" - "github.com/smallstep/cli-utils/ui" - "github.com/smallstep/cli/exec" "github.com/smallstep/cli/internal/cryptoutil" "github.com/smallstep/cli/token" diff --git a/utils/cautils/tpm.go b/utils/cautils/tpm.go index ade0e223..1f136d6b 100644 --- a/utils/cautils/tpm.go +++ b/utils/cautils/tpm.go @@ -21,20 +21,19 @@ import ( "github.com/fxamacker/cbor/v2" "github.com/google/go-tpm/legacy/tpm2" - "github.com/smallstep/go-attestation/attest" "github.com/urfave/cli" "github.com/smallstep/certificates/acme" "github.com/smallstep/certificates/ca" + "github.com/smallstep/cli-utils/errs" + "github.com/smallstep/cli-utils/ui" + "github.com/smallstep/go-attestation/attest" "go.step.sm/crypto/jose" "go.step.sm/crypto/keyutil" "go.step.sm/crypto/kms/uri" "go.step.sm/crypto/tpm" tpmstorage "go.step.sm/crypto/tpm/storage" - "github.com/smallstep/cli-utils/errs" - "github.com/smallstep/cli-utils/ui" - "github.com/smallstep/cli/utils" ) diff --git a/utils/cli.go b/utils/cli.go index 2224f7c8..7803976e 100644 --- a/utils/cli.go +++ b/utils/cli.go @@ -5,9 +5,8 @@ import ( "github.com/urfave/cli" - "go.step.sm/crypto/keyutil" - "github.com/smallstep/cli-utils/errs" + "go.step.sm/crypto/keyutil" ) // DefaultRSASize sets the default key size for RSA to 2048 bits.