package model import ( "crypto/rsa" "strings" "github.com/go-jose/go-jose/v4" "github.com/google/uuid" ) type SigningKey struct { PrivateKey *rsa.PrivateKey KeyID uuid.UUID Algorithm jose.SignatureAlgorithm } func (k *SigningKey) ID() string { return strings.ReplaceAll(k.KeyID.String(), "-", "") } func (k *SigningKey) SignatureAlgorithm() jose.SignatureAlgorithm { return k.Algorithm } func (k *SigningKey) Key() any { return k.PrivateKey } type Key struct { PrivateKey *rsa.PrivateKey KeyID uuid.UUID SigningAlg jose.SignatureAlgorithm } func (k *Key) SigningKey() *SigningKey { return &SigningKey{ PrivateKey: k.PrivateKey, KeyID: k.KeyID, Algorithm: k.SigningAlg, } } func (k *Key) ID() string { return strings.ReplaceAll(k.KeyID.String(), "-", "") } func (k *Key) Algorithm() jose.SignatureAlgorithm { return k.SigningAlg } func (k *Key) Key() any { return &k.PrivateKey.PublicKey } func (k *Key) Use() string { return "sig" }