import "v2ray.com/core/proxy/vmess/encoding"
auth.go client.go commands.go encoding.go errors.generated.go server.go
var ( ErrCommandTypeMismatch = newError("Command type mismatch.") ErrUnknownCommand = newError("Unknown command.") ErrCommandTooLarge = newError("Command too large.") )
Authenticate authenticates a byte array using Fnv hash.
GenerateChacha20Poly1305Key generates a 32-byte key from a given 16-byte array.
func GenerateChunkNonce(nonce []byte, size uint32) crypto.BytesGenerator
type ClientSession struct {
// contains filtered or unexported fields
}
ClientSession stores connection session info for VMess client.
NewClientSession creates a new ClientSession.
func (c *ClientSession) DecodeResponseBody(request *protocol.RequestHeader, reader io.Reader) buf.Reader
func (c *ClientSession) DecodeResponseHeader(reader io.Reader) (*protocol.ResponseHeader, error)
func (c *ClientSession) EncodeRequestBody(request *protocol.RequestHeader, writer io.Writer) buf.Writer
func (c *ClientSession) EncodeRequestHeader(header *protocol.RequestHeader, writer io.Writer) error
type CommandFactory interface { Marshal(command interface{}, writer io.Writer) error Unmarshal(data []byte) (interface{}, error) }
type CommandSwitchAccountFactory struct { }
func (f *CommandSwitchAccountFactory) Marshal(command interface{}, writer io.Writer) error
func (f *CommandSwitchAccountFactory) Unmarshal(data []byte) (interface{}, error)
type FnvAuthenticator struct { }
FnvAuthenticator is an AEAD based on Fnv hash.
func (*FnvAuthenticator) NonceSize() int
NonceSize implements AEAD.NonceSize().
func (*FnvAuthenticator) Open(dst, nonce, ciphertext, additionalData []byte) ([]byte, error)
Open implements AEAD.Open().
func (*FnvAuthenticator) Overhead() int
Overhead impelements AEAD.Overhead().
func (*FnvAuthenticator) Seal(dst, nonce, plaintext, additionalData []byte) []byte
Seal implements AEAD.Seal().
type NoOpAuthenticator struct{}
func (NoOpAuthenticator) NonceSize() int
func (NoOpAuthenticator) Open(dst, nonce, ciphertext, additionalData []byte) ([]byte, error)
Open implements AEAD.Open().
func (NoOpAuthenticator) Overhead() int
func (NoOpAuthenticator) Seal(dst, nonce, plaintext, additionalData []byte) []byte
Seal implements AEAD.Seal().
type ServerSession struct {
// contains filtered or unexported fields
}
ServerSession keeps information for a session in VMess server.
func NewServerSession(validator *vmess.TimedUserValidator, sessionHistory *SessionHistory) *ServerSession
NewServerSession creates a new ServerSession, using the given UserValidator. The ServerSession instance doesn't take ownership of the validator.
func (s *ServerSession) DecodeRequestBody(request *protocol.RequestHeader, reader io.Reader) buf.Reader
DecodeRequestBody returns Reader from which caller can fetch decrypted body.
func (s *ServerSession) DecodeRequestHeader(reader io.Reader) (*protocol.RequestHeader, error)
DecodeRequestHeader decodes and returns (if successful) a RequestHeader from an input stream.
func (s *ServerSession) EncodeResponseBody(request *protocol.RequestHeader, writer io.Writer) buf.Writer
EncodeResponseBody returns a Writer that auto-encrypt content written by caller.
func (s *ServerSession) EncodeResponseHeader(header *protocol.ResponseHeader, writer io.Writer)
EncodeResponseHeader writes encoded response header into the given writer.
SessionHistory keeps track of historical session ids, to prevent replay attacks.
func NewSessionHistory() *SessionHistory
NewSessionHistory creates a new SessionHistory object.
func (h *SessionHistory) Close() error
Close implements common.Closable.
type ShakeSizeParser struct {
// contains filtered or unexported fields
}
func NewShakeSizeParser(nonce []byte) *ShakeSizeParser
func (s *ShakeSizeParser) Decode(b []byte) (uint16, error)
func (s *ShakeSizeParser) Encode(size uint16, b []byte) []byte
func (s *ShakeSizeParser) MaxPaddingLen() uint16
func (s *ShakeSizeParser) NextPaddingLen() uint16
func (*ShakeSizeParser) SizeBytes() int32
Package encoding imports 29 packages (graph) and is imported by 26 packages. Updated 2020-10-15. Refresh now. Tools for package owners.