diff --git a/proxy/vless/encryption/common.go b/proxy/vless/encryption/common.go index 58c096e3..76a646e8 100644 --- a/proxy/vless/encryption/common.go +++ b/proxy/vless/encryption/common.go @@ -16,6 +16,7 @@ import ( var MaxNonce = bytes.Repeat([]byte{255}, 12) +//go:inline func EncodeHeader(h []byte, t byte, l int) { switch t { case 1: @@ -35,6 +36,7 @@ func EncodeHeader(h []byte, t byte, l int) { h[4] = byte(l) } +//go:inline func DecodeHeader(h []byte) (t byte, l int, err error) { l = int(h[3])<<8 | int(h[4]) if h[0] == 23 && h[1] == 3 && h[2] == 3 { @@ -52,6 +54,7 @@ func DecodeHeader(h []byte) (t byte, l int, err error) { return } +//go:inline func ReadAndDecodeHeader(conn net.Conn) (h []byte, t byte, l int, err error) { h = make([]byte, 5) if _, err = io.ReadFull(conn, h); err != nil { @@ -61,6 +64,7 @@ func ReadAndDecodeHeader(conn net.Conn) (h []byte, t byte, l int, err error) { return } +//go:inline func ReadAndDiscardPaddings(conn net.Conn) (h []byte, t byte, l int, err error) { for { if h, t, l, err = ReadAndDecodeHeader(conn); err != nil || t != 23 { @@ -72,6 +76,7 @@ func ReadAndDiscardPaddings(conn net.Conn) (h []byte, t byte, l int, err error) } } +//go:inline func NewAead(c byte, secret, salt, info []byte) (aead cipher.AEAD) { key := make([]byte, 32) hkdf.New(sha256.New, secret, salt, info).Read(key) @@ -84,6 +89,7 @@ func NewAead(c byte, secret, salt, info []byte) (aead cipher.AEAD) { return } +//go:inline func IncreaseNonce(nonce []byte) { for i := range 12 { nonce[11-i]++