func encrypt(data []byte, key [32]byte) []byte { var nonce [24]byte _, err := io.ReadFull(rand.Reader, nonce[:]) if err != nil { panic(err) } out := make([]byte, len(nonce), len(nonce)+len(data)+secretbox.Overhead) copy(out, nonce[:]) return secretbox.Seal(out, data, &nonce, &key) }
func (s *httpService) getNewBackendSticky() (*httputil.ClientConn, *http.Cookie) { backend, addr := s.connectBackend() if backend == nil { return nil, nil } var nonce [24]byte _, err := io.ReadFull(rand.Reader, nonce[:]) if err != nil { panic(err) } out := make([]byte, len(nonce), len(nonce)+len(addr)+secretbox.Overhead) copy(out, nonce[:]) out = secretbox.Seal(out, []byte(addr), &nonce, s.cookieKey) return backend, &http.Cookie{Name: stickyCookie, Value: base64.StdEncoding.EncodeToString(out), Path: "/"} }