blob: c5946058083d882114e4b0bc5a6dab2c3eb9417e [file] [log] [blame]
package crypto_test
// import (
// "github.com/dgrijalva/jwt-go"
// "io/ioutil"
// "strings"
// "testing"
// )
// var rsaTestData = []struct {
// name string
// tokenString string
// alg string
// claims map[string]interface{}
// valid bool
// }{
// {
// "Basic RS256",
// "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJmb28iOiJiYXIifQ.FhkiHkoESI_cG3NPigFrxEk9Z60_oXrOT2vGm9Pn6RDgYNovYORQmmA0zs1AoAOf09ly2Nx2YAg6ABqAYga1AcMFkJljwxTT5fYphTuqpWdy4BELeSYJx5Ty2gmr8e7RonuUztrdD5WfPqLKMm1Ozp_T6zALpRmwTIW0QPnaBXaQD90FplAg46Iy1UlDKr-Eupy0i5SLch5Q-p2ZpaL_5fnTIUDlxC3pWhJTyx_71qDI-mAA_5lE_VdroOeflG56sSmDxopPEG3bFlSu1eowyBfxtu0_CuVd-M42RU75Zc4Gsj6uV77MBtbMrf4_7M_NUTSgoIF3fRqxrj0NzihIBg",
// "RS256",
// map[string]interface{}{"foo": "bar"},
// true,
// },
// {
// "Basic RS384",
// "eyJhbGciOiJSUzM4NCIsInR5cCI6IkpXVCJ9.eyJmb28iOiJiYXIifQ.W-jEzRfBigtCWsinvVVuldiuilzVdU5ty0MvpLaSaqK9PlAWWlDQ1VIQ_qSKzwL5IXaZkvZFJXT3yL3n7OUVu7zCNJzdwznbC8Z-b0z2lYvcklJYi2VOFRcGbJtXUqgjk2oGsiqUMUMOLP70TTefkpsgqDxbRh9CDUfpOJgW-dU7cmgaoswe3wjUAUi6B6G2YEaiuXC0XScQYSYVKIzgKXJV8Zw-7AN_DBUI4GkTpsvQ9fVVjZM9csQiEXhYekyrKu1nu_POpQonGd8yqkIyXPECNmmqH5jH4sFiF67XhD7_JpkvLziBpI-uh86evBUadmHhb9Otqw3uV3NTaXLzJw",
// "RS384",
// map[string]interface{}{"foo": "bar"},
// true,
// },
// {
// "Basic RS512",
// "eyJhbGciOiJSUzUxMiIsInR5cCI6IkpXVCJ9.eyJmb28iOiJiYXIifQ.zBlLlmRrUxx4SJPUbV37Q1joRcI9EW13grnKduK3wtYKmDXbgDpF1cZ6B-2Jsm5RB8REmMiLpGms-EjXhgnyh2TSHE-9W2gA_jvshegLWtwRVDX40ODSkTb7OVuaWgiy9y7llvcknFBTIg-FnVPVpXMmeV_pvwQyhaz1SSwSPrDyxEmksz1hq7YONXhXPpGaNbMMeDTNP_1oj8DZaqTIL9TwV8_1wb2Odt_Fy58Ke2RVFijsOLdnyEAjt2n9Mxihu9i3PhNBkkxa2GbnXBfq3kzvZ_xxGGopLdHhJjcGWXO-NiwI9_tiu14NRv4L2xC0ItD9Yz68v2ZIZEp_DuzwRQ",
// "RS512",
// map[string]interface{}{"foo": "bar"},
// true,
// },
// {
// "basic invalid: foo => bar",
// "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJmb28iOiJiYXIifQ.EhkiHkoESI_cG3NPigFrxEk9Z60_oXrOT2vGm9Pn6RDgYNovYORQmmA0zs1AoAOf09ly2Nx2YAg6ABqAYga1AcMFkJljwxTT5fYphTuqpWdy4BELeSYJx5Ty2gmr8e7RonuUztrdD5WfPqLKMm1Ozp_T6zALpRmwTIW0QPnaBXaQD90FplAg46Iy1UlDKr-Eupy0i5SLch5Q-p2ZpaL_5fnTIUDlxC3pWhJTyx_71qDI-mAA_5lE_VdroOeflG56sSmDxopPEG3bFlSu1eowyBfxtu0_CuVd-M42RU75Zc4Gsj6uV77MBtbMrf4_7M_NUTSgoIF3fRqxrj0NzihIBg",
// "RS256",
// map[string]interface{}{"foo": "bar"},
// false,
// },
// }
// func TestRSAVerify(t *testing.T) {
// keyData, _ := ioutil.ReadFile("test/sample_key.pub")
// key, _ := jwt.ParseRSAPublicKeyFromPEM(keyData)
// for _, data := range rsaTestData {
// parts := strings.Split(data.tokenString, ".")
// method := jwt.GetSigningMethod(data.alg)
// err := method.Verify(strings.Join(parts[0:2], "."), parts[2], key)
// 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 TestRSASign(t *testing.T) {
// keyData, _ := ioutil.ReadFile("test/sample_key")
// key, _ := jwt.ParseRSAPrivateKeyFromPEM(keyData)
// for _, data := range rsaTestData {
// if data.valid {
// parts := strings.Split(data.tokenString, ".")
// method := jwt.GetSigningMethod(data.alg)
// sig, err := method.Sign(strings.Join(parts[0:2], "."), key)
// 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 TestRSAVerifyWithPreParsedPrivateKey(t *testing.T) {
// key, _ := ioutil.ReadFile("test/sample_key.pub")
// parsedKey, err := jwt.ParseRSAPublicKeyFromPEM(key)
// if err != nil {
// t.Fatal(err)
// }
// testData := rsaTestData[0]
// parts := strings.Split(testData.tokenString, ".")
// err = jwt.SigningMethodRS256.Verify(strings.Join(parts[0:2], "."), parts[2], parsedKey)
// if err != nil {
// t.Errorf("[%v] Error while verifying key: %v", testData.name, err)
// }
// }
// func TestRSAWithPreParsedPrivateKey(t *testing.T) {
// key, _ := ioutil.ReadFile("test/sample_key")
// parsedKey, err := jwt.ParseRSAPrivateKeyFromPEM(key)
// if err != nil {
// t.Fatal(err)
// }
// testData := rsaTestData[0]
// parts := strings.Split(testData.tokenString, ".")
// sig, err := jwt.SigningMethodRS256.Sign(strings.Join(parts[0:2], "."), parsedKey)
// if err != nil {
// t.Errorf("[%v] Error signing token: %v", testData.name, err)
// }
// if sig != parts[2] {
// t.Errorf("[%v] Incorrect signature.\nwas:\n%v\nexpecting:\n%v", testData.name, sig, parts[2])
// }
// }
// func TestRSAKeyParsing(t *testing.T) {
// key, _ := ioutil.ReadFile("test/sample_key")
// pubKey, _ := ioutil.ReadFile("test/sample_key.pub")
// badKey := []byte("All your base are belong to key")
// // Test parsePrivateKey
// if _, e := jwt.ParseRSAPrivateKeyFromPEM(key); e != nil {
// t.Errorf("Failed to parse valid private key: %v", e)
// }
// if k, e := jwt.ParseRSAPrivateKeyFromPEM(pubKey); e == nil {
// t.Errorf("Parsed public key as valid private key: %v", k)
// }
// if k, e := jwt.ParseRSAPrivateKeyFromPEM(badKey); e == nil {
// t.Errorf("Parsed invalid key as valid private key: %v", k)
// }
// // Test parsePublicKey
// if _, e := jwt.ParseRSAPublicKeyFromPEM(pubKey); e != nil {
// t.Errorf("Failed to parse valid public key: %v", e)
// }
// if k, e := jwt.ParseRSAPublicKeyFromPEM(key); e == nil {
// t.Errorf("Parsed private key as valid public key: %v", k)
// }
// if k, e := jwt.ParseRSAPublicKeyFromPEM(badKey); e == nil {
// t.Errorf("Parsed invalid key as valid private key: %v", k)
// }
// }
// func BenchmarkRS256Signing(b *testing.B) {
// key, _ := ioutil.ReadFile("test/sample_key")
// parsedKey, err := jwt.ParseRSAPrivateKeyFromPEM(key)
// if err != nil {
// b.Fatal(err)
// }
// benchmarkSigning(b, jwt.SigningMethodRS256, parsedKey)
// }
// func BenchmarkRS384Signing(b *testing.B) {
// key, _ := ioutil.ReadFile("test/sample_key")
// parsedKey, err := jwt.ParseRSAPrivateKeyFromPEM(key)
// if err != nil {
// b.Fatal(err)
// }
// benchmarkSigning(b, jwt.SigningMethodRS384, parsedKey)
// }
// func BenchmarkRS512Signing(b *testing.B) {
// key, _ := ioutil.ReadFile("test/sample_key")
// parsedKey, err := jwt.ParseRSAPrivateKeyFromPEM(key)
// if err != nil {
// b.Fatal(err)
// }
// benchmarkSigning(b, jwt.SigningMethodRS512, parsedKey)
// }