mirror of
https://github.com/XTLS/Xray-core.git
synced 2025-08-22 01:26:49 +08:00
@@ -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]++
|
||||
|
Reference in New Issue
Block a user