Skip to content

Commit a82e1c2

Browse files
committed
fix: skip importing go-jose just for parsing a date
1 parent de1283d commit a82e1c2

File tree

4 files changed

+18
-30
lines changed

4 files changed

+18
-30
lines changed

go.mod

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@ require (
88
github.com/Masterminds/semver/v3 v3.3.1
99
github.com/fatih/color v1.18.0
1010
github.com/go-chi/chi/v5 v5.2.1
11-
github.com/go-jose/go-jose/v4 v4.1.2
1211
github.com/go-playground/validator/v10 v10.26.0
1312
github.com/gofrs/flock v0.12.1
1413
github.com/oklog/ulid/v2 v2.1.0

go.sum

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,6 @@ github.com/gabriel-vasile/mimetype v1.4.8 h1:FfZ3gj38NjllZIeJAmMhr+qKL8Wu+nOoI3G
3232
github.com/gabriel-vasile/mimetype v1.4.8/go.mod h1:ByKUIKGjh1ODkGM1asKUbQZOLGrPjydw3hYPU2YU9t8=
3333
github.com/go-chi/chi/v5 v5.2.1 h1:KOIHODQj58PmL80G2Eak4WdvUzjSJSm0vG72crDCqb8=
3434
github.com/go-chi/chi/v5 v5.2.1/go.mod h1:L2yAIGWB3H+phAw1NxKwWM+7eUH/lU8pOMm5hHcoops=
35-
github.com/go-jose/go-jose/v4 v4.1.2 h1:TK/7NqRQZfgAh+Td8AlsrvtPoUyiHh0LqVvokh+1vHI=
36-
github.com/go-jose/go-jose/v4 v4.1.2/go.mod h1:22cg9HWM1pOlnRiY+9cQYJ9XHmya1bYW8OeDM6Ku6Oo=
3735
github.com/go-playground/assert/v2 v2.2.0 h1:JvknZsQTYeFEAhQwI4qEt9cyV5ONwRHC+lYKSsYSR8s=
3836
github.com/go-playground/assert/v2 v2.2.0/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4=
3937
github.com/go-playground/locales v0.14.1 h1:EWaQ/wswjilfKLTECiXz7Rh+3BjFhfDFKv/oXslEjJA=
@@ -142,8 +140,6 @@ go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0=
142140
go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y=
143141
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
144142
golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
145-
golang.org/x/crypto v0.37.0 h1:kJNSjF/Xp7kU0iB2Z+9viTPMW4EqqsrywMXLJOOsXSE=
146-
golang.org/x/crypto v0.37.0/go.mod h1:vg+k43peMZ0pUMhYmVAWysMK35e6ioLh3wB8ZCAfbVc=
147143
golang.org/x/crypto v0.39.0 h1:SHs+kF4LP+f+p14esP5jAoDpHU8Gu/v9lFRK6IT5imM=
148144
golang.org/x/crypto v0.39.0/go.mod h1:L+Xg3Wf6HoL4Bn4238Z6ft6KfEpN0tJGo53AAPC632U=
149145
golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4=
@@ -156,8 +152,6 @@ golang.org/x/oauth2 v0.30.0 h1:dnDm7JmhM45NNpd8FDDeLhK6FwqbOf4MLCM9zb1BOHI=
156152
golang.org/x/oauth2 v0.30.0/go.mod h1:B++QgG3ZKulg6sRPGD/mqlHQs5rB3Ml9erfeDY7xKlU=
157153
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
158154
golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
159-
golang.org/x/sync v0.13.0 h1:AauUjRAJ9OSnvULf/ARrrVywoJDy0YS2AwQ98I37610=
160-
golang.org/x/sync v0.13.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA=
161155
golang.org/x/sync v0.15.0 h1:KWH3jNZsfyT6xfAfKiz6MRNmd46ByHDYaZ7KSkCtdW8=
162156
golang.org/x/sync v0.15.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA=
163157
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
@@ -169,22 +163,16 @@ golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBc
169163
golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
170164
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
171165
golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
172-
golang.org/x/sys v0.32.0 h1:s77OFDvIQeibCmezSnk/q6iAfkdiQaJi4VzroCFrN20=
173-
golang.org/x/sys v0.32.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k=
174166
golang.org/x/sys v0.33.0 h1:q3i8TbbEz+JRD9ywIRlyRAQbM0qF7hu24q3teo2hbuw=
175167
golang.org/x/sys v0.33.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k=
176168
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
177169
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
178-
golang.org/x/term v0.31.0 h1:erwDkOK1Msy6offm1mOgvspSkslFnIGsFnxOKoufg3o=
179-
golang.org/x/term v0.31.0/go.mod h1:R4BeIy7D95HzImkxGkTW1UQTtP54tio2RyHz7PwK0aw=
180170
golang.org/x/term v0.32.0 h1:DR4lr0TjUs3epypdhTOkMmuF5CDFJ/8pOnbzMZPQ7bg=
181171
golang.org/x/term v0.32.0/go.mod h1:uZG1FhGx848Sqfsq4/DlJr3xGGsYMu/L5GW4abiaEPQ=
182172
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
183173
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
184174
golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
185175
golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
186-
golang.org/x/text v0.24.0 h1:dd5Bzh4yt5KYA8f9CJHCP4FB4D51c2c6JvN37xJJkJ0=
187-
golang.org/x/text v0.24.0/go.mod h1:L8rBsPeo2pSS+xqN0d5u2ikmjtmoJbDBT1b7nHvFCdU=
188176
golang.org/x/text v0.26.0 h1:P42AVeLghgTYr4+xUnTRKDMqpar+PtX7KWuNQL21L8M=
189177
golang.org/x/text v0.26.0/go.mod h1:QK15LZJUUQVJxhz7wXgxSy/CJaTFjd0G+YLonydOVQA=
190178
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=

internal/auth/jwt.go

Lines changed: 16 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -6,36 +6,37 @@ import (
66
"errors"
77
"fmt"
88
"strings"
9-
10-
"github.com/go-jose/go-jose/v4/jwt"
9+
"time"
1110
)
1211

13-
// jwtClaims represents the expected claims contained in the JWT token.
14-
type jwtClaims struct {
15-
ExpiresAt *jwt.NumericDate `json:"exp,omitempty"`
16-
}
17-
18-
// unsafeParseJWT parses a JWT without verifying its signature and returns its claims.
12+
// unsafeGetJWTExpiry parses a JWT without verifying its signature and returns its expiry time.
1913
// WARNING: This is intentionally unsafe and must not be used for trust decisions.
20-
func unsafeParseJWT(token string) (*jwtClaims, error) {
14+
func unsafeGetJWTExpiry(token string) (time.Time, error) {
2115
if token == "" {
22-
return nil, errors.New("jwt: empty token")
16+
return time.Time{}, errors.New("jwt: empty token")
2317
}
2418
parts := strings.Split(token, ".")
2519
if len(parts) < 2 {
26-
return nil, fmt.Errorf("jwt: malformed token, expected 3 parts, got %d", len(parts))
20+
return time.Time{}, fmt.Errorf("jwt: malformed token, expected 3 parts, got %d", len(parts))
2721
}
2822
payloadSeg := parts[1]
2923

3024
// Base64 URL decode without padding as per RFC 7515.
3125
payloadBytes, err := base64.RawURLEncoding.DecodeString(payloadSeg)
3226
if err != nil {
33-
return nil, fmt.Errorf("jwt: decode payload: %w", err)
27+
return time.Time{}, fmt.Errorf("jwt: decode payload: %w", err)
3428
}
3529

36-
var claims jwtClaims
30+
var claims struct {
31+
ExpiresAt *int64 `json:"exp,omitempty"`
32+
}
3733
if err := json.Unmarshal(payloadBytes, &claims); err != nil {
38-
return nil, fmt.Errorf("jwt: unmarshal claims: %w", err)
34+
return time.Time{}, fmt.Errorf("jwt: unmarshal claims: %w", err)
3935
}
40-
return &claims, nil
36+
37+
if claims.ExpiresAt == nil {
38+
return time.Time{}, errors.New("jwt: no expiry time found")
39+
}
40+
41+
return time.Unix(*claims.ExpiresAt, 0), nil
4142
}

internal/auth/legacy.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ func (ts *legacyCLITokenSource) unsafeGetLegacyCLIToken() (*oauth2.Token, error)
2626
return nil, fmt.Errorf("cannot retrieve token: %w", err)
2727
}
2828

29-
at, err := unsafeParseJWT(bt.String())
29+
expiry, err := unsafeGetJWTExpiry(bt.String())
3030

3131
if err != nil {
3232
return nil, fmt.Errorf("cannot parse token: %w", err)
@@ -35,7 +35,7 @@ func (ts *legacyCLITokenSource) unsafeGetLegacyCLIToken() (*oauth2.Token, error)
3535
return &oauth2.Token{
3636
AccessToken: bt.String(),
3737
TokenType: "Bearer",
38-
Expiry: at.ExpiresAt.Time(),
38+
Expiry: expiry,
3939
}, nil
4040
}
4141

0 commit comments

Comments
 (0)