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) {