zitadel-oidc/pkg/op/signer.go
2023-09-01 14:33:16 +03:00

38 lines
711 B
Go

package op
import (
"errors"
jose "github.com/go-jose/go-jose/v3"
)
var (
ErrSignerCreationFailed = errors.New("signer creation failed")
)
type SigningKey interface {
SignatureAlgorithm() jose.SignatureAlgorithm
Key() interface{}
ID() string
}
func SignerFromKey(key SigningKey) (jose.Signer, error) {
signer, err := jose.NewSigner(jose.SigningKey{
Algorithm: key.SignatureAlgorithm(),
Key: &jose.JSONWebKey{
Key: key.Key(),
KeyID: key.ID(),
},
}, &jose.SignerOptions{})
if err != nil {
return nil, ErrSignerCreationFailed //TODO: log / wrap error?
}
return signer, nil
}
type Key interface {
ID() string
Algorithm() jose.SignatureAlgorithm
Use() string
Key() interface{}
}