types

package
v0.5.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 21, 2021 License: Apache-2.0 Imports: 8 Imported by: 11

Documentation

Index

Constants

View Source
const FrameHeaderLength = 10

4 magic bytes, 1 byte version, 1 byte type, 2 bytes extra, 2 bytes frame length

View Source
const MaxFrameSize = 65535*3 + 16

MaxFrameSize is the maximum size that a single frame can be, including all headers.

View Source
const MaxPayloadSize = 65535

MaxPayloadSize is the maximum size that a single frame can contain as a payload, not including headers.

View Source
const SignatureWithHopMinSize = ed25519.PublicKeySize + ed25519.SignatureSize + 1
View Source
const VirtualSnakePathIDLength = 8

Variables

View Source
var FrameMagicBytes = []byte{0x70, 0x69, 0x6e, 0x65}
View Source
var FullMask = PublicKey{
	0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
	0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
	0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
	0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
}

Functions

This section is empty.

Types

type Coordinates added in v0.5.0

type Coordinates []SwitchPortID

func (*Coordinates) Copy added in v0.5.0

func (a *Coordinates) Copy() Coordinates

func (Coordinates) DistanceTo added in v0.5.0

func (a Coordinates) DistanceTo(b Coordinates) int

func (Coordinates) EqualTo added in v0.5.0

func (p Coordinates) EqualTo(o Coordinates) bool

func (Coordinates) Len added in v0.5.0

func (s Coordinates) Len() int

func (Coordinates) Less added in v0.5.0

func (s Coordinates) Less(i, j int) bool

func (Coordinates) MarshalBinary added in v0.5.0

func (p Coordinates) MarshalBinary(buf []byte) (int, error)

func (Coordinates) Network added in v0.5.0

func (s Coordinates) Network() string

func (Coordinates) String added in v0.5.0

func (s Coordinates) String() string

func (Coordinates) Swap added in v0.5.0

func (s Coordinates) Swap(i, j int)

func (*Coordinates) UnmarshalBinary added in v0.5.0

func (p *Coordinates) UnmarshalBinary(b []byte) (int, error)

type Frame

type Frame struct {
	Version        FrameVersion
	Type           FrameType
	Extra          [2]byte
	Destination    Coordinates
	DestinationKey PublicKey
	Source         Coordinates
	SourceKey      PublicKey
	Payload        []byte
}

func (*Frame) MarshalBinary

func (f *Frame) MarshalBinary(buffer []byte) (int, error)

func (*Frame) Reset

func (f *Frame) Reset()

func (*Frame) UnmarshalBinary

func (f *Frame) UnmarshalBinary(data []byte) (int, error)

type FrameType

type FrameType uint8
const (
	TypeKeepalive                FrameType = iota       // protocol frame, direct to peers only
	TypeTreeAnnouncement                                // protocol frame, bypasses queues
	TypeTreeRouted                                      // traffic frame, forwarded using tree routing
	TypeVirtualSnakeBootstrap                           // protocol frame, forwarded using SNEK
	TypeVirtualSnakeBootstrapACK                        // protocol frame, forwarded using tree routing
	TypeVirtualSnakeSetup                               // protocol frame, forwarded using tree routing
	TypeVirtualSnakeTeardown                            // protocol frame, forwarded using special rules
	TypeVirtualSnakeRouted                              // traffic frame, forwarded using SNEK
	TypeSNEKPing                 FrameType = iota + 200 // traffic frame, forwarded using SNEK
	TypeSNEKPong                                        // traffic frame, forwarded using SNEK
	TypeTreePing                                        // traffic frame, forwarded using tree
	TypeTreePong                                        // traffic frame, forwarded using tree
)

func (FrameType) String

func (t FrameType) String() string

type FrameVersion

type FrameVersion uint8
const (
	Version0 FrameVersion = iota
)

func (FrameVersion) String

func (v FrameVersion) String() string

type PrivateKey

type PrivateKey [ed25519.PrivateKeySize]byte

func (PrivateKey) Public added in v0.4.0

func (a PrivateKey) Public() PublicKey

type PublicKey

type PublicKey [ed25519.PublicKeySize]byte

func (PublicKey) CompareTo

func (a PublicKey) CompareTo(b PublicKey) int

func (PublicKey) EqualMaskTo added in v0.4.0

func (a PublicKey) EqualMaskTo(b, m PublicKey) bool

func (PublicKey) Network

func (a PublicKey) Network() string

func (PublicKey) String

func (a PublicKey) String() string

type Root added in v0.5.0

type Root struct {
	RootPublicKey PublicKey
	RootSequence  Varu64
}

func (*Root) EqualTo added in v0.5.0

func (a *Root) EqualTo(b *Root) bool

type Signature

type Signature [ed25519.SignatureSize]byte

type SignatureWithHop

type SignatureWithHop struct {
	Hop       Varu64
	PublicKey PublicKey
	Signature Signature
}

func (*SignatureWithHop) MarshalBinary

func (a *SignatureWithHop) MarshalBinary(data []byte) (int, error)

func (*SignatureWithHop) UnmarshalBinary

func (a *SignatureWithHop) UnmarshalBinary(data []byte) (int, error)

type SwitchAnnouncement

type SwitchAnnouncement struct {
	Root
	Signatures []SignatureWithHop
}

func (*SwitchAnnouncement) AncestorParent added in v0.4.0

func (a *SwitchAnnouncement) AncestorParent() PublicKey

func (*SwitchAnnouncement) Coords

func (a *SwitchAnnouncement) Coords() Coordinates

func (*SwitchAnnouncement) IsLoopOrChildOf added in v0.4.0

func (a *SwitchAnnouncement) IsLoopOrChildOf(pk PublicKey) bool

func (*SwitchAnnouncement) MarshalBinary

func (a *SwitchAnnouncement) MarshalBinary(buffer []byte) (int, error)

func (*SwitchAnnouncement) PeerCoords added in v0.2.0

func (a *SwitchAnnouncement) PeerCoords() Coordinates

func (*SwitchAnnouncement) SanityCheck added in v0.5.0

func (a *SwitchAnnouncement) SanityCheck(from PublicKey) error

func (*SwitchAnnouncement) Sign

func (a *SwitchAnnouncement) Sign(privKey ed25519.PrivateKey, forPort SwitchPortID) error

func (*SwitchAnnouncement) UnmarshalBinary

func (a *SwitchAnnouncement) UnmarshalBinary(data []byte) (int, error)

type SwitchPortID

type SwitchPortID Varu64

type Varu64

type Varu64 uint64

func (Varu64) Length

func (n Varu64) Length() int

func (Varu64) MarshalBinary

func (n Varu64) MarshalBinary(b []byte) (int, error)

func (*Varu64) UnmarshalBinary

func (n *Varu64) UnmarshalBinary(buf []byte) (int, error)

type VirtualSnakeBootstrap added in v0.3.0

type VirtualSnakeBootstrap struct {
	PathID    VirtualSnakePathID
	SourceSig VirtualSnakePathSig
	Root
}

func (*VirtualSnakeBootstrap) MarshalBinary added in v0.3.0

func (v *VirtualSnakeBootstrap) MarshalBinary(buf []byte) (int, error)

func (*VirtualSnakeBootstrap) UnmarshalBinary added in v0.3.0

func (v *VirtualSnakeBootstrap) UnmarshalBinary(buf []byte) (int, error)

type VirtualSnakeBootstrapACK added in v0.3.0

type VirtualSnakeBootstrapACK struct {
	PathID         VirtualSnakePathID
	SourceSig      VirtualSnakePathSig
	DestinationSig VirtualSnakePathSig
	Root
}

func (*VirtualSnakeBootstrapACK) MarshalBinary added in v0.3.0

func (v *VirtualSnakeBootstrapACK) MarshalBinary(buf []byte) (int, error)

func (*VirtualSnakeBootstrapACK) UnmarshalBinary added in v0.3.0

func (v *VirtualSnakeBootstrapACK) UnmarshalBinary(buf []byte) (int, error)

type VirtualSnakePathID added in v0.3.0

type VirtualSnakePathID [VirtualSnakePathIDLength]byte

func (VirtualSnakePathID) MarshalJSON added in v0.4.0

func (p VirtualSnakePathID) MarshalJSON() ([]byte, error)

type VirtualSnakePathSig added in v0.5.0

type VirtualSnakePathSig [ed25519.SignatureSize]byte

type VirtualSnakeSetup added in v0.3.0

type VirtualSnakeSetup struct {
	PathID         VirtualSnakePathID
	SourceSig      VirtualSnakePathSig
	DestinationSig VirtualSnakePathSig
	Root
}

func (*VirtualSnakeSetup) MarshalBinary added in v0.3.0

func (v *VirtualSnakeSetup) MarshalBinary(buf []byte) (int, error)

func (*VirtualSnakeSetup) UnmarshalBinary added in v0.3.0

func (v *VirtualSnakeSetup) UnmarshalBinary(buf []byte) (int, error)

type VirtualSnakeTeardown added in v0.3.0

type VirtualSnakeTeardown struct {
	PathID VirtualSnakePathID
}

func (*VirtualSnakeTeardown) MarshalBinary added in v0.3.0

func (v *VirtualSnakeTeardown) MarshalBinary(buf []byte) (int, error)

func (*VirtualSnakeTeardown) UnmarshalBinary added in v0.3.0

func (v *VirtualSnakeTeardown) UnmarshalBinary(buf []byte) (int, error)

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL