(t *testing.T)
| 77 | } |
| 78 | |
| 79 | func TestECDSASign(t *testing.T) { |
| 80 | for _, data := range ecdsaTestData { |
| 81 | var err error |
| 82 | key, _ := os.ReadFile(data.keys["private"]) |
| 83 | |
| 84 | var ecdsaKey *ecdsa.PrivateKey |
| 85 | if ecdsaKey, err = jwt.ParseECPrivateKeyFromPEM(key); err != nil { |
| 86 | t.Errorf("Unable to parse ECDSA private key: %v", err) |
| 87 | } |
| 88 | |
| 89 | if data.valid { |
| 90 | parts := strings.Split(data.tokenString, ".") |
| 91 | toSign := strings.Join(parts[0:2], ".") |
| 92 | method := jwt.GetSigningMethod(data.alg) |
| 93 | sig, err := method.Sign(toSign, ecdsaKey) |
| 94 | if err != nil { |
| 95 | t.Errorf("[%v] Error signing token: %v", data.name, err) |
| 96 | } |
| 97 | |
| 98 | ssig := encodeSegment(sig) |
| 99 | if ssig == parts[2] { |
| 100 | t.Errorf("[%v] Identical signatures\nbefore:\n%v\nafter:\n%v", data.name, parts[2], ssig) |
| 101 | } |
| 102 | |
| 103 | err = method.Verify(toSign, sig, ecdsaKey.Public()) |
| 104 | if err != nil { |
| 105 | t.Errorf("[%v] Sign produced an invalid signature: %v", data.name, err) |
| 106 | } |
| 107 | } |
| 108 | } |
| 109 | } |
| 110 | |
| 111 | func BenchmarkECDSAParsing(b *testing.B) { |
| 112 | for _, data := range ecdsaTestData { |
nothing calls this directly
no test coverage detected