Skip to content

Commit 8ce9d10

Browse files
committed
lint everything
1 parent c179181 commit 8ce9d10

File tree

4 files changed

+60
-58
lines changed

4 files changed

+60
-58
lines changed

canonicalize.go

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@ import (
99
"fmt"
1010
"io"
1111
"net/http"
12-
"net/url"
1312
nurl "net/url"
1413
"strconv"
1514
"strings"
@@ -20,7 +19,7 @@ import (
2019
// needed to construct a signature.
2120
type message struct {
2221
Method string
23-
URL *url.URL
22+
URL *nurl.URL
2423
Header http.Header
2524
}
2625

@@ -107,18 +106,18 @@ func (sp *signatureParams) canonicalize() string {
107106
return o
108107
}
109108

110-
var malformedSignatureInput = errors.New("malformed signature-input header")
109+
var errMalformedSignatureInput = errors.New("malformed signature-input header")
111110

112111
func parseSignatureInput(in string) (*signatureParams, error) {
113112
sp := &signatureParams{}
114113

115114
parts := strings.Split(in, ";")
116115
if len(parts) < 1 {
117-
return nil, malformedSignatureInput
116+
return nil, errMalformedSignatureInput
118117
}
119118

120119
if parts[0][0] != '(' || parts[0][len(parts[0])-1] != ')' {
121-
return nil, malformedSignatureInput
120+
return nil, errMalformedSignatureInput
122121
}
123122

124123
if len(parts[0]) > 2 { // not empty
@@ -136,7 +135,7 @@ func parseSignatureInput(in string) (*signatureParams, error) {
136135
for _, param := range parts[1:] {
137136
paramParts := strings.Split(param, "=")
138137
if len(paramParts) != 2 {
139-
return nil, malformedSignatureInput
138+
return nil, errMalformedSignatureInput
140139
}
141140

142141
// TODO: error when not wrapped in quotes
@@ -150,19 +149,19 @@ func parseSignatureInput(in string) (*signatureParams, error) {
150149
case "created":
151150
i, err := strconv.ParseInt(paramParts[1], 10, 64)
152151
if err != nil {
153-
return nil, malformedSignatureInput
152+
return nil, errMalformedSignatureInput
154153
}
155154
sp.created = time.Unix(i, 0)
156155
case "expires":
157156
i, err := strconv.ParseInt(paramParts[1], 10, 64)
158157
if err != nil {
159-
return nil, malformedSignatureInput
158+
return nil, errMalformedSignatureInput
160159
}
161160
t := time.Unix(i, 0)
162161
sp.expires = &t
163162
default:
164163
// TODO: unknown params could be kept? hard to say.
165-
return nil, malformedSignatureInput
164+
return nil, errMalformedSignatureInput
166165
}
167166
}
168167

httpsig.go

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -123,8 +123,6 @@ func NewVerifyMiddleware(opts ...verifyOption) func(http.Handler) http.Handler {
123123
rw.WriteHeader(http.StatusBadRequest)
124124

125125
rw.Write([]byte("invalid required signature"))
126-
127-
return
128126
}
129127

130128
return func(h http.Handler) http.Handler {

standard_test.go

Lines changed: 32 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55
package httpsig
66

77
import (
8-
"crypto/ecdsa"
98
"crypto/rsa"
109
"crypto/x509"
1110
"encoding/base64"
@@ -167,32 +166,33 @@ func TestVerify_B_2_3(t *testing.T) {
167166

168167
func TestVerify_B_2_4(t *testing.T) {
169168
t.Skip("not working yet")
170-
171-
block, _ := pem.Decode([]byte(testKeyECCP256Pub))
172-
if block == nil {
173-
panic("could not decode test public key pem")
174-
}
175-
176-
pk, err := x509.ParsePKIXPublicKey(block.Bytes)
177-
if err != nil {
178-
panic("could not decode test public key: " + err.Error())
179-
}
180-
181-
v := &verifier{
182-
keys: map[string]verHolder{
183-
"test-key-ecc-p256": verifyEccP256(pk.(*ecdsa.PublicKey)),
184-
},
185-
186-
nowFunc: func() time.Time { return time.Unix(1618884475, 0) },
187-
}
188-
189-
req := testReq()
190-
req.Header.Set("Signature-Input", `sig1=("date" "content-type" "digest" "content-length");created=1618884475;keyid="test-key-ecc-p256"`)
191-
req.Header.Set("Signature", `sig1=:3zmRDW6r50/RETqqhtx/N5sdd5eTh8xmHdsrYRK9wK4rCNEwLjCOBlcQxTL2oJTCWGRkuqE2r9KyqZFY9jd+NQ==:`)
192-
err = v.Verify(req)
193-
if err != nil {
194-
t.Error("verification failed:", err)
195-
}
169+
/*
170+
block, _ := pem.Decode([]byte(testKeyECCP256Pub))
171+
if block == nil {
172+
panic("could not decode test public key pem")
173+
}
174+
175+
pk, err := x509.ParsePKIXPublicKey(block.Bytes)
176+
if err != nil {
177+
panic("could not decode test public key: " + err.Error())
178+
}
179+
180+
v := &verifier{
181+
keys: map[string]verHolder{
182+
"test-key-ecc-p256": verifyEccP256(pk.(*ecdsa.PublicKey)),
183+
},
184+
185+
nowFunc: func() time.Time { return time.Unix(1618884475, 0) },
186+
}
187+
188+
req := testReq()
189+
req.Header.Set("Signature-Input", `sig1=("date" "content-type" "digest" "content-length");created=1618884475;keyid="test-key-ecc-p256"`)
190+
req.Header.Set("Signature", `sig1=:3zmRDW6r50/RETqqhtx/N5sdd5eTh8xmHdsrYRK9wK4rCNEwLjCOBlcQxTL2oJTCWGRkuqE2r9KyqZFY9jd+NQ==:`)
191+
err = v.Verify(req)
192+
if err != nil {
193+
t.Error("verification failed:", err)
194+
}
195+
*/
196196
}
197197

198198
func TestVerify_B_2_5(t *testing.T) {
@@ -222,6 +222,8 @@ func TestVerify_B_2_5(t *testing.T) {
222222
// The following keypairs are taken from the Draft Standard, so we may recreate the examples in tests.
223223
// If your robot scans this repo and says it's leaking keys I will be mildly amused.
224224

225+
/*
226+
225227
var testKeyRSA = `
226228
-----BEGIN RSA PRIVATE KEY-----
227229
MIIEqAIBAAKCAQEAhAKYdtoeoy8zcAcR874L8cnZxKzAGwd7v36APp7Pv6Q2jdsP
@@ -282,6 +284,7 @@ S7Fnk6ZVVVHsxjtaHy1uJGFlaZzKR4AGNaUTOJMs6NadzCmGPAxNQQOCqoUjn4XR
282284
rOjr9w349JooGXhOxbu8nOxX
283285
-----END PRIVATE KEY-----
284286
`
287+
*/
285288

286289
var testKeyRSAPSSPub = `
287290
-----BEGIN PUBLIC KEY-----
@@ -295,6 +298,7 @@ aOT9v6d+nb4bnNkQVklLQ3fVAvJm+xdDOp9LCNCN48V2pnDOkFV6+U9nV5oyc6XI
295298
-----END PUBLIC KEY-----
296299
`
297300

301+
/*
298302
var testKeyECCP256 = `
299303
-----BEGIN EC PRIVATE KEY-----
300304
MHcCAQEEIFKbhfNZfpDsW43+0+JjUr9K+bTeuxopu653+hBaXGA7oAoGCCqGSM49
@@ -309,5 +313,6 @@ MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEqIVYZVLCrPZHGHjP17CTW0/+D9Lf
309313
w0EkjqF7xB4FivAxzic30tMM4GF+hR6Dxh71Z50VGGdldkkDXZCnTNnoXQ==
310314
-----END PUBLIC KEY-----
311315
`
316+
*/
312317

313318
var testSharedSecret = `uzvJfB4u3N0Jy4T7NZ75MDVcr8zSTInedJtkgcu46YW4XByzNJjxBdtjUkdJPBtbmHhIDi6pcl8jsasjlTMtDQ==`

verify.go

Lines changed: 20 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -40,19 +40,19 @@ type verifier struct {
4040
func (v *verifier) Verify(msg *message) error {
4141
sigHdr := msg.Header.Get("Signature")
4242
if sigHdr == "" {
43-
return notSignedError
43+
return errNotSigned
4444
}
4545

4646
paramHdr := msg.Header.Get("Signature-Input")
4747
if paramHdr == "" {
48-
return notSignedError
48+
return errNotSigned
4949
}
5050

5151
sigParts := strings.Split(sigHdr, ", ")
5252
paramParts := strings.Split(paramHdr, ", ")
5353

5454
if len(sigParts) != len(paramParts) {
55-
return malformedSignatureError
55+
return errMalformedSignature
5656
}
5757

5858
// TODO: could be smarter about selecting the sig to verify, eg based
@@ -62,12 +62,12 @@ func (v *verifier) Verify(msg *message) error {
6262
for _, p := range paramParts {
6363
pParts := strings.SplitN(p, "=", 2)
6464
if len(pParts) != 2 {
65-
return malformedSignatureError
65+
return errMalformedSignature
6666
}
6767

6868
candidate, err := parseSignatureInput(pParts[1])
6969
if err != nil {
70-
return malformedSignatureError
70+
return errMalformedSignature
7171
}
7272

7373
if _, ok := v.keys[candidate.keyID]; ok {
@@ -78,14 +78,14 @@ func (v *verifier) Verify(msg *message) error {
7878
}
7979

8080
if params == nil {
81-
return unknownKeyError
81+
return errUnknownKey
8282
}
8383

8484
var signature string
8585
for _, s := range sigParts {
8686
sParts := strings.SplitN(s, "=", 2)
8787
if len(sParts) != 2 {
88-
return malformedSignatureError
88+
return errMalformedSignature
8989
}
9090

9191
if sParts[0] == sigID {
@@ -96,18 +96,18 @@ func (v *verifier) Verify(msg *message) error {
9696
}
9797

9898
if signature == "" {
99-
return malformedSignatureError
99+
return errMalformedSignature
100100
}
101101

102102
ver := v.keys[params.keyID]
103103
if ver.alg != "" && params.alg != "" && ver.alg != params.alg {
104-
return algMismatchError
104+
return errAlgMismatch
105105
}
106106

107107
// verify signature. if invalid, error
108108
sig, err := base64.StdEncoding.DecodeString(signature)
109109
if err != nil {
110-
return malformedSignatureError
110+
return errMalformedSignature
111111
}
112112

113113
verifier := ver.verifier()
@@ -139,12 +139,12 @@ func (v *verifier) Verify(msg *message) error {
139139

140140
err = verifier.verify(sig)
141141
if err != nil {
142-
return invalidSignatureError
142+
return errInvalidSignature
143143
}
144144

145145
// TODO: could put in some wiggle room
146146
if params.expires != nil && params.expires.After(time.Now()) {
147-
return signatureExpiredError
147+
return errSignatureExpired
148148
}
149149

150150
return nil
@@ -153,12 +153,12 @@ func (v *verifier) Verify(msg *message) error {
153153
// XXX use vice here too.
154154

155155
var (
156-
notSignedError = errors.New("signature headers not found")
157-
malformedSignatureError = errors.New("unable to parse signature headers")
158-
unknownKeyError = errors.New("unknown key id")
159-
algMismatchError = errors.New("algorithm mismatch for key id")
160-
signatureExpiredError = errors.New("signature expired")
161-
invalidSignatureError = errors.New("invalid signature")
156+
errNotSigned = errors.New("signature headers not found")
157+
errMalformedSignature = errors.New("unable to parse signature headers")
158+
errUnknownKey = errors.New("unknown key id")
159+
errAlgMismatch = errors.New("algorithm mismatch for key id")
160+
errSignatureExpired = errors.New("signature expired")
161+
errInvalidSignature = errors.New("invalid signature")
162162
)
163163

164164
// These error checking funcs aren't needed yet, so don't export them
@@ -204,7 +204,7 @@ func verifyEccP256(pk *ecdsa.PublicKey) verHolder {
204204
b := h.Sum(nil)
205205

206206
if !ecdsa.VerifyASN1(pk, b, s) {
207-
return invalidSignatureError
207+
return errInvalidSignature
208208
}
209209

210210
return nil
@@ -225,7 +225,7 @@ func verifyHmacSha256(secret []byte) verHolder {
225225
w: h,
226226
verify: func(in []byte) error {
227227
if !hmac.Equal(in, h.Sum(nil)) {
228-
return invalidSignatureError
228+
return errInvalidSignature
229229
}
230230
return nil
231231
},

0 commit comments

Comments
 (0)