Add cookie session store helper
This commit is contained in:
parent
2cb1bf1881
commit
d62b42ab97
|
@ -0,0 +1,32 @@
|
|||
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) (sessions.Store, error) {
|
||||
authenticationKey, err := generateRandomBytes(64)
|
||||
if err != nil {
|
||||
return nil, errors.Wrap(err, "error while generating cookie authentication key")
|
||||
}
|
||||
encryptionKey, err := generateRandomBytes(32)
|
||||
if err != nil {
|
||||
return nil, errors.Wrap(err, "error while generating cookie encryption key")
|
||||
}
|
||||
store := sessions.NewCookieStore(authenticationKey, encryptionKey)
|
||||
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
|
||||
}
|
Loading…
Reference in New Issue