| 12345678910111213141516171819202122232425262728293031323334353637 |
- // Package vmess contains protocol definition, io lib for VMess.
- package vmess
- import (
- "fmt"
- "io"
- )
- // VMessInput implements the input message of VMess protocol. It only contains
- // the header of a input message. The data part will be handled by conection
- // handler directly, in favor of data streaming.
- type VMessInput struct {
- version byte
- userHash [16]byte
- respKey [16]byte
- iv [16]byte
- respHead [4]byte
- command byte
- port uint16
- target [256]byte
- }
- func Read(reader io.Reader) (input *VMessInput, err error) {
- buffer := make([]byte, 17 /* version + user hash */)
- nBytes, err := reader.Read(buffer)
- if err != nil {
- return
- }
- if nBytes != len(buffer) {
- err = fmt.Errorf("Unexpected length of header %d", nBytes)
- return
- }
- return
- }
- type VMessOutput [4]byte
|