jws: add RS256 Verification for JWS
Provides helper method for verifying a signed JWT against a provided public key. Change-Id: I498ecfce07862c372fd5f81c1fcdc09692ed0f5c Reviewed-on: https://go-review.googlesource.com/21762 Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
This commit is contained in:
committed by
Brad Fitzpatrick
parent
f6a14f0423
commit
14446d3f8b
46
jws/jws_test.go
Normal file
46
jws/jws_test.go
Normal file
@@ -0,0 +1,46 @@
|
||||
// Copyright 2016 The Go Authors. All rights reserved.
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
package jws
|
||||
|
||||
import (
|
||||
"crypto/rand"
|
||||
"crypto/rsa"
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestSignAndVerify(t *testing.T) {
|
||||
header := &Header{
|
||||
Algorithm: "RS256",
|
||||
Typ: "JWT",
|
||||
}
|
||||
payload := &ClaimSet{
|
||||
Iss: "http://google.com/",
|
||||
Aud: "",
|
||||
Exp: 3610,
|
||||
Iat: 10,
|
||||
}
|
||||
|
||||
privateKey, err := rsa.GenerateKey(rand.Reader, 2048)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
token, err := Encode(header, payload, privateKey)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
err := Verify(token, &privateKey.PublicKey)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
}
|
||||
|
||||
func TestVerifyFailsOnMalformedClaim(t *testing.T) {
|
||||
err := Verify("abc.def", nil)
|
||||
if err == nil {
|
||||
t.Error("Improperly formed JWT should fail.")
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user