From 4426c5f9e813c10cd9e9ace10da6f424b2823e10 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Magnus=20=C3=85hall?= Date: Sun, 1 Jun 2025 08:58:12 +0200 Subject: [PATCH] Added configurable key type --- pkg.go | 30 +++++++++++++++++++++++++----- 1 file changed, 25 insertions(+), 5 deletions(-) diff --git a/pkg.go b/pkg.go index f92244b..11acddd 100644 --- a/pkg.go +++ b/pkg.go @@ -22,6 +22,13 @@ import ( "time" ) +type KeyType int + +const ( + KeyEd25519 KeyType = iota + KeyEcDSA +) + type Manager struct { privKey crypto.PrivateKey PubKey crypto.PublicKey @@ -29,16 +36,29 @@ type Manager struct { Initialized bool } -func NewManager(private, public string, expireDays int) (mngr Manager, err error) { // {{{ - mngr.privKey, err = jwt.ParseEdPrivateKeyFromPEM([]byte(private)) - if err != nil { +func NewManager(keyType KeyType, private, public string, expireDays int) (mngr Manager, err error) { // {{{ + var errPriv, errPub error + + switch keyType { + case KeyEcDSA: + mngr.privKey, errPriv = jwt.ParseECPrivateKeyFromPEM([]byte(private)) + mngr.PubKey, errPub = jwt.ParseECPublicKeyFromPEM([]byte(public)) + + case KeyEd25519: + mngr.privKey, errPriv = jwt.ParseEdPrivateKeyFromPEM([]byte(private)) + mngr.PubKey, errPub = jwt.ParseEdPublicKeyFromPEM([]byte(public)) + } + + if errPriv != nil { + err = errPriv return } - mngr.PubKey, err = jwt.ParseEdPublicKeyFromPEM([]byte(public)) - if err != nil { + if errPub != nil { + err = errPub return } + mngr.ExpireDays = expireDays mngr.Initialized = true return