@@ -4,14 +4,13 @@ import (
4
4
"context"
5
5
"crypto/ecdsa"
6
6
"fmt"
7
- "io/ioutil "
7
+ "io"
8
8
"net/http"
9
9
"strings"
10
10
"sync"
11
11
"time"
12
12
13
13
"github.com/golang-jwt/jwt/v4"
14
- "github.com/pkg/errors"
15
14
"github.com/shogo82148/go-retry"
16
15
)
17
16
@@ -69,20 +68,20 @@ func fetchPublicKey(ctx context.Context, keyURL string) (*ecdsa.PublicKey, error
69
68
70
69
req , err := http .NewRequestWithContext (ctx , http .MethodGet , keyURL , nil )
71
70
if err != nil {
72
- return nil , errors . Wrapf ( err , "failed to new GET request for %s" , keyURL )
71
+ return nil , fmt . Errorf ( "failed to new GET request for %s: %w " , keyURL , err )
73
72
}
74
73
resp , err := client .Do (req )
75
74
if err != nil {
76
- return nil , errors . Wrapf ( err , "failed to get public key from %s" , keyURL )
75
+ return nil , fmt . Errorf ( "failed to get public key from %s: %w " , keyURL , err )
77
76
}
78
77
defer resp .Body .Close ()
79
- pem , err := ioutil .ReadAll (resp .Body )
78
+ pem , err := io .ReadAll (resp .Body )
80
79
if err != nil {
81
- return nil , errors . Wrapf ( err , "failed to get public key from %s" , keyURL )
80
+ return nil , fmt . Errorf ( "failed to get public key from %s: %w " , keyURL , err )
82
81
}
83
82
publicKey , err := jwt .ParseECPublicKeyFromPEM (pem )
84
83
if err != nil {
85
- return nil , errors . Wrapf ( err , "failed to parse public key from %s" , keyURL )
84
+ return nil , fmt . Errorf ( "failed to parse public key from %s: %w " , keyURL , err )
86
85
}
87
86
publicKeysCache .Store (keyURL , publicKey )
88
87
@@ -92,11 +91,11 @@ func fetchPublicKey(ctx context.Context, keyURL string) (*ecdsa.PublicKey, error
92
91
func headerString (token * jwt.Token , name string ) (string , error ) {
93
92
_v , ok := token .Header [name ]
94
93
if ! ok {
95
- return "" , errors .Errorf ("no %s in token header" , name )
94
+ return "" , fmt .Errorf ("no %s in token header" , name )
96
95
}
97
96
v , ok := _v .(string )
98
97
if ! ok {
99
- return "" , errors .Errorf ("no %s string in token header" , name )
98
+ return "" , fmt .Errorf ("no %s string in token header" , name )
100
99
}
101
100
return v , nil
102
101
}
@@ -112,12 +111,12 @@ func publicKeyURL(token *jwt.Token) (string, error) {
112
111
return "" , err
113
112
}
114
113
if alg , _ := headerString (token , "alg" ); alg != "ES256" {
115
- return "" , errors . New ("alg must be ES256" )
114
+ return "" , fmt . Errorf ("alg must be ES256" )
116
115
}
117
116
118
117
parts := strings .Split (arn , ":" )
119
118
if len (parts ) < 4 {
120
- return "" , errors .Errorf ("invalid arn format %s" , arn )
119
+ return "" , fmt .Errorf ("invalid arn format %s" , arn )
121
120
}
122
121
partition , region := parts [1 ], parts [3 ]
123
122
switch partition {
@@ -135,5 +134,5 @@ func publicKeyURL(token *jwt.Token) (string, error) {
135
134
kid ,
136
135
), nil
137
136
}
138
- return "" , errors .Errorf ("unsupported arn partition %s" , arn )
137
+ return "" , fmt .Errorf ("unsupported arn partition %s" , arn )
139
138
}
0 commit comments