summaryrefslogtreecommitdiffstats
path: root/vendor/gitea.com/macaron/session/utils.go
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/gitea.com/macaron/session/utils.go')
-rw-r--r--vendor/gitea.com/macaron/session/utils.go63
1 files changed, 63 insertions, 0 deletions
diff --git a/vendor/gitea.com/macaron/session/utils.go b/vendor/gitea.com/macaron/session/utils.go
new file mode 100644
index 0000000000..762b978cdf
--- /dev/null
+++ b/vendor/gitea.com/macaron/session/utils.go
@@ -0,0 +1,63 @@
+// Copyright 2013 Beego Authors
+// Copyright 2014 The Macaron Authors
+//
+// Licensed under the Apache License, Version 2.0 (the "License"): you may
+// not use this file except in compliance with the License. You may obtain
+// a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+// License for the specific language governing permissions and limitations
+// under the License.
+
+package session
+
+import (
+ "bytes"
+ "crypto/rand"
+ "encoding/gob"
+ "io"
+
+ "github.com/unknwon/com"
+)
+
+func init() {
+ gob.Register([]interface{}{})
+ gob.Register(map[int]interface{}{})
+ gob.Register(map[string]interface{}{})
+ gob.Register(map[interface{}]interface{}{})
+ gob.Register(map[string]string{})
+ gob.Register(map[int]string{})
+ gob.Register(map[int]int{})
+ gob.Register(map[int]int64{})
+}
+
+func EncodeGob(obj map[interface{}]interface{}) ([]byte, error) {
+ for _, v := range obj {
+ gob.Register(v)
+ }
+ buf := bytes.NewBuffer(nil)
+ err := gob.NewEncoder(buf).Encode(obj)
+ return buf.Bytes(), err
+}
+
+func DecodeGob(encoded []byte) (out map[interface{}]interface{}, err error) {
+ buf := bytes.NewBuffer(encoded)
+ err = gob.NewDecoder(buf).Decode(&out)
+ return out, err
+}
+
+// NOTE: A local copy in case of underlying package change
+var alphanum = []byte("0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz")
+
+// generateRandomKey creates a random key with the given strength.
+func generateRandomKey(strength int) []byte {
+ k := make([]byte, strength)
+ if n, err := io.ReadFull(rand.Reader, k); n != strength || err != nil {
+ return com.RandomCreateBytes(strength, alphanum...)
+ }
+ return k
+}