write -> sum
diff --git a/crypto/hmac.go b/crypto/hmac.go index a9afb1f..1cb7f6e 100644 --- a/crypto/hmac.go +++ b/crypto/hmac.go
@@ -50,7 +50,8 @@ return ErrInvalidKey } hasher := hmac.New(m.Hash.New, keyBytes) - if hmac.Equal(signature, hasher.Sum(raw)) { + hasher.Write(raw) + if hmac.Equal(signature, hasher.Sum(nil)) { return nil } return ErrSignatureInvalid @@ -64,7 +65,8 @@ return nil, ErrInvalidKey } hasher := hmac.New(m.Hash.New, keyBytes) - return Signature(hasher.Sum(data)), nil + hasher.Write(data) + return Signature(hasher.Sum(nil)), nil } // Hasher implements the SigningMethod interface.
diff --git a/crypto/hmac_test.go b/crypto/hmac_test.go index ff46861..129e293 100644 --- a/crypto/hmac_test.go +++ b/crypto/hmac_test.go
@@ -1,10 +1,11 @@ package crypto // import ( -// "github.com/dgrijalva/jwt-go" // "io/ioutil" // "strings" // "testing" + +// "github.com/SermoDigital/jose/jws" // ) // var hmacTestData = []struct { @@ -66,7 +67,7 @@ // for _, data := range hmacTestData { // if data.valid { // parts := strings.Split(data.tokenString, ".") -// method := jwt.GetSigningMethod(data.alg) +// method := jws.GetSigningMethod(data.alg) // sig, err := method.Sign(strings.Join(parts[0:2], "."), hmacTestKey) // if err != nil { // t.Errorf("[%v] Error signing token: %v", data.name, err) @@ -78,14 +79,14 @@ // } // } -// func BenchmarkHS256Signing(b *testing.B) { -// benchmarkSigning(b, jwt.SigningMethodHS256, hmacTestKey) -// } +// // func BenchmarkHS256Signing(b *testing.B) { +// // benchmarkSigning(b, jwt.SigningMethodHS256, hmacTestKey) +// // } -// func BenchmarkHS384Signing(b *testing.B) { -// benchmarkSigning(b, jwt.SigningMethodHS384, hmacTestKey) -// } +// // func BenchmarkHS384Signing(b *testing.B) { +// // benchmarkSigning(b, jwt.SigningMethodHS384, hmacTestKey) +// // } -// func BenchmarkHS512Signing(b *testing.B) { -// benchmarkSigning(b, jwt.SigningMethodHS512, hmacTestKey) -// } +// // func BenchmarkHS512Signing(b *testing.B) { +// // benchmarkSigning(b, jwt.SigningMethodHS512, hmacTestKey) +// // }