4f1c1e4268
Update the indirect dependency to remove the transitional github.com/form3tech-oss/jwt-go
dependency from the dependency graph.
Updates:
- github.com/Azure/go-autorest/autorest v0.11.24: https://github.com/Azure/go-autorest/compare/autorest/v0.11.20...autorest/v0.11.24
- github.com/Azure/go-autorest/autorest/adal v0.9.18: https://github.com/Azure/go-autorest/compare/autorest/adal/v0.9.15...autorest/adal/v0.9.18
- github.com/golang-jwt/jwt v4.2.0: https://github.com/golang-jwt/jwt/compare/v4.0.0...v4.2.0
- golang.org/x/crypto v0.0.0-20211215153901-e495a2d5b3d3: 32db794688...e495a2d5b3
Before this:
go mod graph | grep 'jwt'
github.com/Azure/go-autorest/autorest/adal@v0.9.15 github.com/golang-jwt/jwt/v4@v4.0.0
github.com/Azure/go-autorest/autorest/adal@v0.9.13 github.com/form3tech-oss/jwt-go@v3.2.2+incompatible
After this:
go mod graph | grep 'jwt'
github.com/Azure/go-autorest/autorest@v0.11.24 github.com/golang-jwt/jwt/v4@v4.2.0
github.com/Azure/go-autorest/autorest/adal@v0.9.18 github.com/golang-jwt/jwt/v4@v4.0.0
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
46 lines
1.4 KiB
Go
46 lines
1.4 KiB
Go
package jwt
|
|
|
|
import (
|
|
"sync"
|
|
)
|
|
|
|
var signingMethods = map[string]func() SigningMethod{}
|
|
var signingMethodLock = new(sync.RWMutex)
|
|
|
|
// SigningMethod can be used add new methods for signing or verifying tokens.
|
|
type SigningMethod interface {
|
|
Verify(signingString, signature string, key interface{}) error // Returns nil if signature is valid
|
|
Sign(signingString string, key interface{}) (string, error) // Returns encoded signature or error
|
|
Alg() string // returns the alg identifier for this method (example: 'HS256')
|
|
}
|
|
|
|
// RegisterSigningMethod registers the "alg" name and a factory function for signing method.
|
|
// This is typically done during init() in the method's implementation
|
|
func RegisterSigningMethod(alg string, f func() SigningMethod) {
|
|
signingMethodLock.Lock()
|
|
defer signingMethodLock.Unlock()
|
|
|
|
signingMethods[alg] = f
|
|
}
|
|
|
|
// GetSigningMethod retrieves a signing method from an "alg" string
|
|
func GetSigningMethod(alg string) (method SigningMethod) {
|
|
signingMethodLock.RLock()
|
|
defer signingMethodLock.RUnlock()
|
|
|
|
if methodF, ok := signingMethods[alg]; ok {
|
|
method = methodF()
|
|
}
|
|
return
|
|
}
|
|
|
|
// GetAlgorithms returns a list of registered "alg" names
|
|
func GetAlgorithms() (algs []string) {
|
|
signingMethodLock.RLock()
|
|
defer signingMethodLock.RUnlock()
|
|
|
|
for alg := range signingMethods {
|
|
algs = append(algs, alg)
|
|
}
|
|
return
|
|
}
|