diff options
Diffstat (limited to 'vendor/github.com/quasoft/websspi/secctx/session.go')
-rw-r--r-- | vendor/github.com/quasoft/websspi/secctx/session.go | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/vendor/github.com/quasoft/websspi/secctx/session.go b/vendor/github.com/quasoft/websspi/secctx/session.go new file mode 100644 index 0000000000..6f8ce29c42 --- /dev/null +++ b/vendor/github.com/quasoft/websspi/secctx/session.go @@ -0,0 +1,36 @@ +package secctx + +import ( + "net/http" + + "github.com/gorilla/securecookie" + "github.com/gorilla/sessions" +) + +// CookieStore can store and retrieve SSPI context handles to/from an encrypted Cookie. +type CookieStore struct { + store *sessions.CookieStore +} + +// NewCookieStore creates a new CookieStore for storing and retrieving of SSPI context handles +// to/from encrypted Cookies +func NewCookieStore() *CookieStore { + s := &CookieStore{} + s.store = sessions.NewCookieStore([]byte(securecookie.GenerateRandomKey(32))) + return s +} + +// GetHandle retrieves a *websspi.CtxtHandle value from the store +func (s *CookieStore) GetHandle(r *http.Request) (interface{}, error) { + session, _ := s.store.Get(r, "websspi") + contextHandle := session.Values["contextHandle"] + return contextHandle, nil +} + +// SetHandle saves a *websspi.CtxtHandle value to the store +func (s *CookieStore) SetHandle(r *http.Request, w http.ResponseWriter, contextHandle interface{}) error { + session, _ := s.store.Get(r, "websspi") + session.Values["contextHandle"] = contextHandle + err := session.Save(r, w) + return err +} |