Documentation ¶
Index ¶
- Constants
- type ClientTransport
- func (t *ClientTransport) GetDstPort(seed []byte) (uint16, error)
- func (t *ClientTransport) GetParams() (proto.Message, error)
- func (*ClientTransport) ID() pb.TransportType
- func (*ClientTransport) Name() string
- func (t ClientTransport) ParseParams(data *anypb.Any) (any, error)
- func (*ClientTransport) Prepare(...) error
- func (t *ClientTransport) PrepareKeys(pubkey [32]byte, sharedSecret []byte, dRand io.Reader) error
- func (t *ClientTransport) SetParams(p any, unchecked ...bool) error
- func (*ClientTransport) String() string
- func (t ClientTransport) WrapConn(conn net.Conn) (net.Conn, error)
- type Obfs4Keys
- type Transport
- func (Transport) GetDstPort(libVersion uint, seed []byte, params any) (uint16, error)
- func (Transport) GetIdentifier(r *cj.DecoyRegistration) string
- func (Transport) GetProto() pb.IPProto
- func (Transport) LogPrefix() string
- func (Transport) Name() string
- func (t Transport) ParamStrings(p any) []string
- func (Transport) ParseParams(libVersion uint, data *anypb.Any) (any, error)
- func (Transport) WrapConnection(data *bytes.Buffer, c net.Conn, phantom net.IP, ...) (*cj.DecoyRegistration, net.Conn, error)
Constants ¶
const ( MaxHandshakeLength = 8192 ClientMinPadLength = (ServerMinHandshakeLength + InlineSeedFrameLength) - ClientMinHandshakeLength ClientMaxPadLength = MaxHandshakeLength - ClientMinHandshakeLength ClientMinHandshakeLength = ntor.RepresentativeLength + MarkLength + MacLength ServerMinPadLength = 0 ServerMaxPadLength = MaxHandshakeLength - (ServerMinHandshakeLength + InlineSeedFrameLength) ServerMinHandshakeLength = ntor.RepresentativeLength + ntor.AuthLength + MarkLength + MacLength MarkLength = sha256.Size / 2 MacLength = sha256.Size / 2 PacketOverhead = 2 + 1 SeedPacketPayloadLength = drbg.SeedLength InlineSeedFrameLength = framing.FrameOverhead + PacketOverhead + SeedPacketPayloadLength )
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type ClientTransport ¶
type ClientTransport struct { Parameters *pb.GenericTransportParams // contains filtered or unexported fields }
ClientTransport implements the client side transport interface for the Min transport. The significant difference is that there is an instance of this structure per client session, where the station side Transport struct has one instance to be re-used for all sessions.
func (*ClientTransport) GetDstPort ¶
func (t *ClientTransport) GetDstPort(seed []byte) (uint16, error)
GetDstPort returns the destination port that the client should open the phantom connection to
func (*ClientTransport) GetParams ¶
func (t *ClientTransport) GetParams() (proto.Message, error)
GetParams returns a generic protobuf with any parameters from both the registration and the transport.
func (*ClientTransport) ID ¶
func (*ClientTransport) ID() pb.TransportType
ID provides an identifier that will be sent to the conjure station during the registration so that the station knows what transport to expect connecting to the chosen phantom.
func (*ClientTransport) Name ¶
func (*ClientTransport) Name() string
Name returns a string identifier for the Transport for logging
func (ClientTransport) ParseParams ¶
func (t ClientTransport) ParseParams(data *anypb.Any) (any, error)
ParseParams gives the specific transport an option to parse a generic object into parameters provided by the station in the registration response during registration.
func (*ClientTransport) PrepareKeys ¶
func (*ClientTransport) SetParams ¶
func (t *ClientTransport) SetParams(p any, unchecked ...bool) error
SetParams allows the caller to set parameters associated with the transport, returning an error if the provided generic message is not compatible.
func (*ClientTransport) String ¶
func (*ClientTransport) String() string
String returns a string identifier for the Transport for logging (including string formatters)
type Transport ¶
type Transport struct{}
Transport implements the station Transport interface for the obfs4 transport
func (Transport) GetDstPort ¶
GetDstPort Given the library version, a seed, and a generic object containing parameters the transport should be able to return the destination port that a clients phantom connection will attempt to reach
func (Transport) GetIdentifier ¶
func (Transport) GetIdentifier(r *cj.DecoyRegistration) string
GetIdentifier implements the station Transport interface
func (Transport) GetProto ¶
GetProto returns the next layer protocol that the transport uses. Implements the Transport interface.
func (Transport) ParamStrings ¶
ParamStrings returns an array of tag string that will be added to tunStats when a proxy session is closed. For now, no params of interest.
func (Transport) ParseParams ¶
ParseParams gives the specific transport an option to parse a generic object into parameters provided by the client during registration.