mirror of https://github.com/hashicorp/consul
47 lines
860 B
Go
47 lines
860 B
Go
|
// 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("got no errors; want improperly formed JWT not to be verified")
|
||
|
}
|
||
|
}
|