mirror of
https://github.com/hanzoai/metrics.git
synced 2026-10-30 20:03:39 +00:00
### Describe Your Changes It was [decided](https://github.com/VictoriaMetrics/VictoriaMetrics/issues/9439#issuecomment-3612299461) that OIDC authentication in vmauth will be part of open source repo. That requires opensourcing lib/jwt. PR does not contain any changes in logic, just copy-paste from enterprise repository. Related to https://github.com/VictoriaMetrics/VictoriaMetrics/issues/9439 ### Checklist The following checks are **mandatory**: - [ ] My change adheres to [VictoriaMetrics contributing guidelines](https://docs.victoriametrics.com/victoriametrics/contributing/#pull-request-checklist). - [ ] My change adheres to [VictoriaMetrics development goals](https://docs.victoriametrics.com/victoriametrics/goals/).
24 lines
527 B
Go
24 lines
527 B
Go
package jwt
|
|
|
|
import (
|
|
"crypto/x509"
|
|
"encoding/pem"
|
|
"fmt"
|
|
)
|
|
|
|
// ParseKey parses key in PEM format.
|
|
// It returns a *rsa.PublicKey, *dsa.PublicKey, *ecdsa.PublicKey, or ed25519.PublicKey.
|
|
func ParseKey(key []byte) (any, error) {
|
|
b, _ := pem.Decode(key)
|
|
if b == nil {
|
|
return nil, fmt.Errorf("failed to parse key %q: failed to decode PEM block containing public key", key)
|
|
}
|
|
|
|
k, err := x509.ParsePKIXPublicKey(b.Bytes)
|
|
if err != nil {
|
|
return nil, fmt.Errorf("failed to parse key %q: %v", key, err)
|
|
}
|
|
|
|
return k, nil
|
|
}
|