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 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) }
func LoadRSAPrivateKeyFromDisk(location string) *rsa.PrivateKey { keyData, e := ioutil.ReadFile(location) if e != nil { panic(e.Error()) } key, e := jwt.ParseRSAPrivateKeyFromPEM(keyData) if e != nil { panic(e.Error()) } return key }
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 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 TestRSAPSSSign(t *testing.T) { var err error key, _ := ioutil.ReadFile("test/sample_key") var rsaPSSKey *rsa.PrivateKey if rsaPSSKey, err = jwt.ParseRSAPrivateKeyFromPEM(key); err != nil { t.Errorf("Unable to parse RSA private key: %v", err) } for _, data := range rsaPSSTestData { if data.valid { parts := strings.Split(data.tokenString, ".") method := jwt.GetSigningMethod(data.alg) sig, err := method.Sign(strings.Join(parts[0:2], "."), rsaPSSKey) if err != nil { t.Errorf("[%v] Error signing token: %v", data.name, err) } if sig == parts[2] { t.Errorf("[%v] Signatures shouldn't match\nnew:\n%v\noriginal:\n%v", data.name, sig, parts[2]) } } } }