Files
hanko/backend/crypto/jwk/generator_rsa.go

44 lines
737 B
Go

package jwk
import (
"crypto/rand"
"crypto/rsa"
"github.com/lestrrat-go/jwx/v2/jwa"
"github.com/lestrrat-go/jwx/v2/jwk"
)
// RSAKeyGenerator
type RSAKeyGenerator struct {
}
func (g *RSAKeyGenerator) Generate(id string) (jwk.Key, error) {
rawKey, err := rsa.GenerateKey(rand.Reader, 4096)
if err != nil {
return nil, err
} else if err = rawKey.Validate(); err != nil {
return nil, err
}
key, err := jwk.FromRaw(rawKey)
if err != nil {
return nil, err
}
err = key.Set(jwk.KeyIDKey, id)
if err != nil {
return nil, err
}
err = key.Set(jwk.AlgorithmKey, jwa.RS256)
if err != nil {
return nil, err
}
err = key.Set(jwk.KeyUsageKey, jwk.ForSignature)
if err != nil {
return nil, err
}
return key, nil
}