From 06d7569fa38a05afafe7a9e02fd3a47bd7d01dbc Mon Sep 17 00:00:00 2001 From: Matt Baer Date: Mon, 12 Mar 2018 11:00:52 -0400 Subject: [PATCH] Parse JWT keys correctly This now parses into rsa.{Public|Private}Key structs, as required by current jwt library. --- session.go | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/session.go b/session.go index 66a117d..4f5ad37 100644 --- a/session.go +++ b/session.go @@ -1,6 +1,7 @@ package htmlhouse import ( + "crypto/rsa" "fmt" jwt "github.com/dgrijalva/jwt-go" "github.com/juju/errgo" @@ -30,22 +31,32 @@ func newSessionInfo(houseID string) *sessionInfo { func newSessionManager(cfg *config) (sessionManager, error) { mgr := &defaultSessionManager{} - var err error - - mgr.signKey, err = ioutil.ReadFile(cfg.PrivateKey) + // Read and parse private key + signBytes, err := ioutil.ReadFile(cfg.PrivateKey) + if err != nil { + return mgr, errgo.Mask(err) + } + mgr.signKey, err = jwt.ParseRSAPrivateKeyFromPEM(signBytes) if err != nil { return mgr, errgo.Mask(err) } - mgr.verifyKey, err = ioutil.ReadFile(cfg.PublicKey) + // Read and parse public key + verifyBytes, err := ioutil.ReadFile(cfg.PublicKey) if err != nil { return mgr, errgo.Mask(err) } + mgr.verifyKey, err = jwt.ParseRSAPublicKeyFromPEM(verifyBytes) + if err != nil { + return mgr, errgo.Mask(err) + } + return mgr, nil } type defaultSessionManager struct { - verifyKey, signKey []byte + verifyKey *rsa.PublicKey + signKey *rsa.PrivateKey } func (m *defaultSessionManager) readToken(r *http.Request) (string, error) {