Darien Raymond 7 年 前
コミット
8cfe77383f
2 ファイル変更17 行追加7 行削除
  1. 12 0
      common/serial/hash.go
  2. 5 7
      proxy/vmess/encoding/client.go

+ 12 - 0
common/serial/hash.go

@@ -0,0 +1,12 @@
+package serial
+
+import (
+	"hash"
+)
+
+func WriteHash(h hash.Hash) func(b []byte) (int, error) {
+	return func(b []byte) (int, error) {
+		h.Sum(b[:0])
+		return h.Size(), nil
+	}
+}

+ 5 - 7
proxy/vmess/encoding/client.go

@@ -88,13 +88,11 @@ func (c *ClientSession) EncodeRequestHeader(header *protocol.RequestHeader, writ
 		common.Must(buffer.AppendSupplier(buf.ReadFullFrom(rand.Reader, int32(padingLen))))
 	}
 
-	fnv1a := fnv.New32a()
-	common.Must2(fnv1a.Write(buffer.Bytes()))
-
-	common.Must(buffer.AppendSupplier(func(b []byte) (int, error) {
-		fnv1a.Sum(b[:0])
-		return fnv1a.Size(), nil
-	}))
+	{
+		fnv1a := fnv.New32a()
+		common.Must2(fnv1a.Write(buffer.Bytes()))
+		common.Must(buffer.AppendSupplier(serial.WriteHash(fnv1a)))
+	}
 
 	timestampHash := md5.New()
 	common.Must2(timestampHash.Write(hashTimestamp(timestamp)))