refactor: add jwks pkg for generating jwk sets

This commit is contained in:
Trong Huu Nguyen
2021-10-16 10:28:49 +02:00
parent 9b15da6251
commit e7d5a6073c

49
pkg/jwks/jwks.go Normal file
View File

@@ -0,0 +1,49 @@
package jwks
import (
"crypto/rand"
"crypto/rsa"
"github.com/lestrrat-go/jwx/jwa"
"github.com/lestrrat-go/jwx/jwk"
)
type Pair struct {
Private jwk.Set
Public jwk.Set
}
func NewJwksPair() (*Pair, error) {
privateKey, err := rsa.GenerateKey(rand.Reader, 2048)
if err != nil {
return nil, err
}
key, err := jwk.New(privateKey)
if err != nil {
return nil, err
}
err = jwk.AssignKeyID(key)
if err != nil {
return nil, err
}
err = key.Set(jwk.AlgorithmKey, jwa.RS256)
if err != nil {
return nil, err
}
privateKeys := jwk.NewSet()
privateKeys.Add(key)
publicKeys, err := jwk.PublicSetOf(privateKeys)
if err != nil {
return nil, err
}
return &Pair{
Private: privateKeys,
Public: publicKeys,
}, nil
}