c76ad94492
This commit adds a build step to travis to auto-delete unstable archives older than 14 days (our regular release schedule) from Azure via ci.go purge. The commit also pulls in the latest Azure storage code, also switching over from the old import path (github.com/Azure/azure-sdk-for-go) to the new split one (github.com/Azure/azure-storage-go).
36 lines
1.1 KiB
Go
36 lines
1.1 KiB
Go
package jwt
|
|
|
|
import (
|
|
"sync"
|
|
)
|
|
|
|
var signingMethods = map[string]func() SigningMethod{}
|
|
var signingMethodLock = new(sync.RWMutex)
|
|
|
|
// Implement SigningMethod to 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')
|
|
}
|
|
|
|
// Register 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
|
|
}
|
|
|
|
// Get 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
|
|
}
|