|  | package crypto | 
|  |  | 
|  | // import ( | 
|  | // 	"io/ioutil" | 
|  | // 	"strings" | 
|  | // 	"testing" | 
|  |  | 
|  | // 	"github.com/SermoDigital/jose/jws" | 
|  | // ) | 
|  |  | 
|  | // var hmacTestData = []struct { | 
|  | // 	name        string | 
|  | // 	tokenString string | 
|  | // 	alg         string | 
|  | // 	claims      map[string]interface{} | 
|  | // 	valid       bool | 
|  | // }{ | 
|  | // 	{ | 
|  | // 		"web sample", | 
|  | // 		"eyJ0eXAiOiJKV1QiLA0KICJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJqb2UiLA0KICJleHAiOjEzMDA4MTkzODAsDQogImh0dHA6Ly9leGFtcGxlLmNvbS9pc19yb290Ijp0cnVlfQ.dBjftJeZ4CVP-mB92K27uhbUJU1p1r_wW1gFWFOEjXk", | 
|  | // 		"HS256", | 
|  | // 		map[string]interface{}{"iss": "joe", "exp": 1300819380, "http://example.com/is_root": true}, | 
|  | // 		true, | 
|  | // 	}, | 
|  | // 	{ | 
|  | // 		"HS384", | 
|  | // 		"eyJhbGciOiJIUzM4NCIsInR5cCI6IkpXVCJ9.eyJleHAiOjEuMzAwODE5MzhlKzA5LCJodHRwOi8vZXhhbXBsZS5jb20vaXNfcm9vdCI6dHJ1ZSwiaXNzIjoiam9lIn0.KWZEuOD5lbBxZ34g7F-SlVLAQ_r5KApWNWlZIIMyQVz5Zs58a7XdNzj5_0EcNoOy", | 
|  | // 		"HS384", | 
|  | // 		map[string]interface{}{"iss": "joe", "exp": 1300819380, "http://example.com/is_root": true}, | 
|  | // 		true, | 
|  | // 	}, | 
|  | // 	{ | 
|  | // 		"HS512", | 
|  | // 		"eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJleHAiOjEuMzAwODE5MzhlKzA5LCJodHRwOi8vZXhhbXBsZS5jb20vaXNfcm9vdCI6dHJ1ZSwiaXNzIjoiam9lIn0.CN7YijRX6Aw1n2jyI2Id1w90ja-DEMYiWixhYCyHnrZ1VfJRaFQz1bEbjjA5Fn4CLYaUG432dEYmSbS4Saokmw", | 
|  | // 		"HS512", | 
|  | // 		map[string]interface{}{"iss": "joe", "exp": 1300819380, "http://example.com/is_root": true}, | 
|  | // 		true, | 
|  | // 	}, | 
|  | // 	{ | 
|  | // 		"web sample: invalid", | 
|  | // 		"eyJ0eXAiOiJKV1QiLA0KICJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJqb2UiLA0KICJleHAiOjEzMDA4MTkzODAsDQogImh0dHA6Ly9leGFtcGxlLmNvbS9pc19yb290Ijp0cnVlfQ.dBjftJeZ4CVP-mB92K27uhbUJU1p1r_wW1gFWFOEjXo", | 
|  | // 		"HS256", | 
|  | // 		map[string]interface{}{"iss": "joe", "exp": 1300819380, "http://example.com/is_root": true}, | 
|  | // 		false, | 
|  | // 	}, | 
|  | // } | 
|  |  | 
|  | // // Sample data from http://tools.ietf.org/html/draft-jones-json-web-signature-04#appendix-A.1 | 
|  | // var hmacTestKey, _ = ioutil.ReadFile("test/hmacTestKey") | 
|  |  | 
|  | // func TestHMACVerify(t *testing.T) { | 
|  | // 	for _, data := range hmacTestData { | 
|  | // 		parts := strings.Split(data.tokenString, ".") | 
|  |  | 
|  | // 		method := jwt.GetSigningMethod(data.alg) | 
|  | // 		err := method.Verify(strings.Join(parts[0:2], "."), parts[2], hmacTestKey) | 
|  | // 		if data.valid && err != nil { | 
|  | // 			t.Errorf("[%v] Error while verifying key: %v", data.name, err) | 
|  | // 		} | 
|  | // 		if !data.valid && err == nil { | 
|  | // 			t.Errorf("[%v] Invalid key passed validation", data.name) | 
|  | // 		} | 
|  | // 	} | 
|  | // } | 
|  |  | 
|  | // func TestHMACSign(t *testing.T) { | 
|  | // 	for _, data := range hmacTestData { | 
|  | // 		if data.valid { | 
|  | // 			parts := strings.Split(data.tokenString, ".") | 
|  | // 			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) | 
|  | // 			} | 
|  | // 			if sig != parts[2] { | 
|  | // 				t.Errorf("[%v] Incorrect signature.\nwas:\n%v\nexpecting:\n%v", data.name, sig, parts[2]) | 
|  | // 			} | 
|  | // 		} | 
|  | // 	} | 
|  | // } | 
|  |  | 
|  | // // func BenchmarkHS256Signing(b *testing.B) { | 
|  | // // 	benchmarkSigning(b, jwt.SigningMethodHS256, hmacTestKey) | 
|  | // // } | 
|  |  | 
|  | // // func BenchmarkHS384Signing(b *testing.B) { | 
|  | // // 	benchmarkSigning(b, jwt.SigningMethodHS384, hmacTestKey) | 
|  | // // } | 
|  |  | 
|  | // // func BenchmarkHS512Signing(b *testing.B) { | 
|  | // // 	benchmarkSigning(b, jwt.SigningMethodHS512, hmacTestKey) | 
|  | // // } |