goweb/session/gorilla/cookie.go

34 lines
943 B
Go
Raw Normal View History

2018-12-06 21:42:01 +01:00
package gorilla
import (
"crypto/rand"
"github.com/gorilla/sessions"
"github.com/pkg/errors"
)
// CreateCookieSessionStore creates and returns a new cookie session store
// with random authentication and encryption keys
func CreateCookieSessionStore(authKeySize, encryptKeySize int, defaultOptions *sessions.Options) (sessions.Store, error) {
authenticationKey, err := generateRandomBytes(authKeySize)
2018-12-06 21:42:01 +01:00
if err != nil {
return nil, errors.Wrap(err, "error while generating cookie authentication key")
}
encryptionKey, err := generateRandomBytes(encryptKeySize)
2018-12-06 21:42:01 +01:00
if err != nil {
return nil, errors.Wrap(err, "error while generating cookie encryption key")
}
store := sessions.NewCookieStore(authenticationKey, encryptionKey)
store.Options = defaultOptions
2018-12-06 21:42:01 +01:00
return store, nil
}
func generateRandomBytes(n int) ([]byte, error) {
b := make([]byte, n)
_, err := rand.Read(b)
if err != nil {
return nil, err
}
return b, nil
}