package jwtutil import ( "github.com/lestrrat-go/jwx/v2/jwa" "github.com/lestrrat-go/jwx/v2/jwk" "github.com/pkg/errors" ) func NewKeySet(keys ...jwk.Key) (jwk.Set, error) { set := jwk.NewSet() for _, k := range keys { if err := set.AddKey(k); err != nil { return nil, errors.WithStack(err) } } return set, nil } func NewSymmetricKey(secret []byte) (jwk.Key, error) { key, err := jwk.FromRaw(secret) if err != nil { return nil, errors.WithStack(err) } if err := key.Set(jwk.AlgorithmKey, jwa.HS256); err != nil { return nil, errors.WithStack(err) } return key, nil } func NewSymmetricKeySet(secrets ...[]byte) (jwk.Set, error) { keys := make([]jwk.Key, len(secrets)) for idx, sec := range secrets { key, err := NewSymmetricKey(sec) if err != nil { return nil, errors.WithStack(err) } keys[idx] = key } keySet, err := NewKeySet(keys...) if err != nil { return nil, errors.WithStack(err) } return keySet, nil }