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