diff options
author | root <sina@snix.ir> | 2022-02-02 20:48:37 +0000 |
---|---|---|
committer | root <sina@snix.ir> | 2022-02-02 20:48:37 +0000 |
commit | 777e3ada4b2f671e720be04d77da1aebfa2e9bc3 (patch) | |
tree | 2ce1cd1f4dc20b5d6e14bfc4fe555bc2901b350f /_example | |
parent | f464a924ce181f3e02767402e95701ac800d9df8 (diff) |
new stuff
Diffstat (limited to '_example')
-rw-r--r-- | _example/go.mod | 11 | ||||
-rw-r--r-- | _example/go.sum | 14 | ||||
-rw-r--r-- | _example/main.go | 97 |
3 files changed, 122 insertions, 0 deletions
diff --git a/_example/go.mod b/_example/go.mod new file mode 100644 index 0000000..f390d60 --- /dev/null +++ b/_example/go.mod @@ -0,0 +1,11 @@ +module httpec + +go 1.17 + +require snix.ir/ecookie v0.0.0-20220202195550-f464a924ce18 + +require ( + golang.org/x/crypto v0.0.0-20220131195533-30dcbda58838 // indirect + golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1 // indirect + snix.ir/rabbitio v0.0.0-20220123060014-f8c9838efbd6 // indirect +) diff --git a/_example/go.sum b/_example/go.sum new file mode 100644 index 0000000..07da0a6 --- /dev/null +++ b/_example/go.sum @@ -0,0 +1,14 @@ +golang.org/x/crypto v0.0.0-20220131195533-30dcbda58838 h1:71vQrMauZZhcTVK6KdYM+rklehEEwb3E+ZhaE5jrPrE= +golang.org/x/crypto v0.0.0-20220131195533-30dcbda58838/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= +golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1 h1:SrN+KX8Art/Sf4HNj6Zcz06G7VEz+7w9tdXTPOZ7+l4= +golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= +golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +snix.ir/ecookie v0.0.0-20220202195550-f464a924ce18 h1:AetXmIVUnnfeTlArpR8PC5H+3IL6apj83zNT44AU/wY= +snix.ir/ecookie v0.0.0-20220202195550-f464a924ce18/go.mod h1:95u5fjKPnI0AYOVjc/34csuV8fh/wSBqucTkI8dK8rM= +snix.ir/rabbitio v0.0.0-20220123060014-f8c9838efbd6 h1:LYGzvcaDnb0d6ZGWpG3j0qJjEIseRJaFwLN8gbIZ+Io= +snix.ir/rabbitio v0.0.0-20220123060014-f8c9838efbd6/go.mod h1:fGdJrOtVK0uqEI8x6SBI/NPAAQmtQi/4sjwQPShasEA= diff --git a/_example/main.go b/_example/main.go new file mode 100644 index 0000000..a327ebe --- /dev/null +++ b/_example/main.go @@ -0,0 +1,97 @@ +package main + +import ( + "encoding/json" + "fmt" + "log" + "net/http" + "time" + + "snix.ir/ecookie" +) + +type te struct { + IMMMMM int `json:"i"` + DMMMMM int `json:"d"` + Expire time.Time `json:"expire"` + SuperSecret string `json:"secret"` +} + +var key = []byte{ + 0x11, 0x12, 0x13, 0x14, + 0x11, 0x12, 0x13, 0x14, + 0x11, 0x12, 0x13, 0x14, + 0x11, 0x12, 0x13, 0x14, +} + +func main() { + http.HandleFunc("/set", setHand) + http.HandleFunc("/get", getHand) + err := http.ListenAndServe(":8080", nil) + log.Fatal(err) +} + +func setHand(w http.ResponseWriter, r *http.Request) { + x := new(te) + x.DMMMMM = 10000 + x.IMMMMM = 90000 + x.Expire = time.Now().Add(time.Hour) + x.SuperSecret = "some super secret data.. " + + d, err := json.Marshal(x) + if err != nil { + fmt.Println(err) + w.WriteHeader(http.StatusBadGateway) + return + } + cc, err := ecookie.NewEncryptor(key) + if err != nil { + fmt.Println(err) + w.WriteHeader(http.StatusBadGateway) + return + } + ec, err := cc.Encrypt(d) + if err != nil { + fmt.Println(err) + w.WriteHeader(http.StatusBadGateway) + return + } + http.SetCookie(w, &http.Cookie{ + Name: "auth", + Value: string(ec), + }) + + w.WriteHeader(http.StatusOK) + w.Write(ec) +} + +func getHand(w http.ResponseWriter, r *http.Request) { + x, err := r.Cookie("auth") + if err != nil { + fmt.Println(err) + return + } + + ee, err := ecookie.NewDecryptor(key) + if err != nil { + fmt.Println(err) + return + } + + ll, err := ee.Decrypt([]byte(x.Value)) + if err != nil { + fmt.Println(err) + return + } + + vv := new(te) + err = json.Unmarshal(ll, vv) + if err != nil { + fmt.Println(err) + return + } + + fmt.Println(vv) + fmt.Fprintf(w, "%+v", *vv) + +} |