values

package
v0.0.0-...-c01a966 Latest Latest
Warning

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

Go to latest
Published: Apr 28, 2021 License: Apache-2.0 Imports: 12 Imported by: 0

Documentation

Index

Constants

View Source
const KeyByteLength = 32
View Source
const (
	NonceByteLength = 24
)
View Source
const (
	SaltyRTCSubprotocol = "v1.saltyrtc.org"
)

Variables

View Source
var (
	CannotSplitMessage = errors.New("cannot split the message, probably no nonce sent")
)
View Source
var (
	DecryptionFailed = errors.New("decryption failed")
)
View Source
var (
	HexKeyNot32BytesLong = errors.New("given hexKey is not 32 bytes (64 hex chars) long")
)
View Source
var (
	OverflowReached = errors.New("overflow of combined sequence number reached")
)

Functions

func DecryptMessage

func DecryptMessage(
	data []byte,
	nonce [NonceByteLength]byte,
	publicKey Key,
	privateKey Key,
) ([]byte, error)

func EncryptMessage

func EncryptMessage(
	data []byte,
	nonce [NonceByteLength]byte,
	recipientPublicKey Key,
	senderPrivateKey Key,
) []byte

Types

type AddDeviceControlMessage

type AddDeviceControlMessage struct {
	Message
	UUID string `msgpack:"uuid"`
}

func NewAddDeviceControlMessage

func NewAddDeviceControlMessage(uuid string) AddDeviceControlMessage

type AddDeviceMessage

type AddDeviceMessage struct {
	PublicKey Key
	Nonce     [NonceByteLength]byte
	Data      []byte
}

func AddDeviceMessageFromBytes

func AddDeviceMessageFromBytes(message []byte) (*AddDeviceMessage, error)

func (AddDeviceMessage) ToBytes

func (m AddDeviceMessage) ToBytes() []byte

type AddDeviceRequestMessage

type AddDeviceRequestMessage struct {
	Message
}

type AddDeviceSolvedMessage

type AddDeviceSolvedMessage struct {
	Message
	UUID        string `msgpack:"uuid"`
	DeviceToken string `msgpack:"device_token"`
}

type Address

type Address int
var (
	UnassignedAddress Address = 0
	ServerAddress     Address = 0
	InitiatorAddress  Address = 1
	MaxAddress        Address = 255
)

func (Address) Bytes

func (a Address) Bytes() []byte

type ClientAuthMessage

type ClientAuthMessage struct {
	Message
	YourCookie   Cookie   `msgpack:"your_cookie"`
	SubProtocols []string `msgpack:"subprotocols"`
	PingInterval int      `msgpack:"ping_interval"`
	YourKey      Key      `msgpack:"your_key"`
}

func DecodeClientAuthMessageFromBytes

func DecodeClientAuthMessageFromBytes(
	data []byte,
	nonce [NonceByteLength]byte,
	publicKey,
	privateKey Key,
) (*ClientAuthMessage, error)

func (ClientAuthMessage) ContainsSubProtocol

func (m ClientAuthMessage) ContainsSubProtocol(subProtocol string) bool

type ClientHelloMessage

type ClientHelloMessage struct {
	Message
	Key Key `msgpack:"key"`
}

func DecodeClientHelloMessageFromBytes

func DecodeClientHelloMessageFromBytes(rawBytes []byte) (*ClientHelloMessage, error)

type ClientState

type ClientState int
const (
	Authenticated ClientState = 1
)

type CloseCode

type CloseCode uint
var (
	PathFullCode                      CloseCode = 3000
	ProtocolErrorCode                 CloseCode = 3001
	InternalErrorCode                 CloseCode = 3002
	HandoverOfTheSignalingChannelCode CloseCode = 3003
	DroppedByInitiatorCode            CloseCode = 3004
	InitiatorCouldNotDecryptCode      CloseCode = 3005
	NoSharedTaskFoundCode             CloseCode = 3006
	InvalidKeyCode                    CloseCode = 3007
	TimeoutCode                       CloseCode = 3008

	DropResponderProtocolErrorCode            CloseCode = 3001
	DropResponderInternalErrorCode            CloseCode = 3002
	DropResponderDroppedByInitiatorCode       CloseCode = 3004
	DropResponderInitiatorCouldNotDecryptCode CloseCode = 3005
)

func (CloseCode) Int

func (c CloseCode) Int() int

func (CloseCode) Message

func (c CloseCode) Message() string

type CombinedSequenceNumber

type CombinedSequenceNumber struct {
	SequenceNumber SequenceNumber
	OverflowNumber OverflowNumber
}

func NewCombinedSequenceNumber

func NewCombinedSequenceNumber(sequenceNumber SequenceNumber, overflowNumber OverflowNumber) CombinedSequenceNumber

func (CombinedSequenceNumber) Empty

func (n CombinedSequenceNumber) Empty() bool

func (CombinedSequenceNumber) Equal

func (n CombinedSequenceNumber) Equal(combinedSequenceNumber CombinedSequenceNumber) bool

func (CombinedSequenceNumber) Increment

type Cookie [16]byte

func NewRandomCookie

func NewRandomCookie() (*Cookie, error)

func (Cookie) Empty

func (c Cookie) Empty() bool

func (Cookie) Equal

func (c Cookie) Equal(cookie Cookie) bool

type Device

type Device struct {
	Token     string
	PublicKey string
}

type DisconnectedMessage

type DisconnectedMessage struct {
	Message
	ID Address `msgpack:"id"`
}

func NewDisconnectedMessage

func NewDisconnectedMessage(id Address) DisconnectedMessage

type DropResponderMessage

type DropResponderMessage struct {
	Message
	ID     Address   `msgpack:"id"`
	Reason CloseCode `msgpack:"reason"`
}

func DecodeDropResponderMessageFromBytes

func DecodeDropResponderMessageFromBytes(
	data []byte,
	nonce [NonceByteLength]byte,
	publicKey,
	privateKey Key,
) (*DropResponderMessage, error)

type Key

type Key [KeyByteLength]byte

func FromHex

func FromHex(hexKey string) (*Key, error)

func (Key) Bytes

func (k Key) Bytes() [KeyByteLength]byte

func (Key) Empty

func (k Key) Empty() bool

func (Key) Equals

func (k Key) Equals(key Key) bool

func (Key) HexString

func (k Key) HexString() string

type Message

type Message struct {
	Type MessageType `msgpack:"type"`
}

func (*Message) MessageType

func (m *Message) MessageType() MessageType

type MessageType

type MessageType string
const (
	ServerHello      MessageType = "server-hello"
	ClientHello      MessageType = "client-hello"
	ClientAuth       MessageType = "client-auth"
	ServerAuth       MessageType = "server-auth"
	NewInitiator     MessageType = "new-initiator"
	NewResponder     MessageType = "new-responder"
	DropResponder    MessageType = "drop-responder"
	Disconnected     MessageType = "disconnected"
	SendError        MessageType = "send-error"
	AddDeviceControl MessageType = "add-device-control"
)

type NewInitiatorMessage

type NewInitiatorMessage struct {
	Message
}

func NewNewInitiatorMessage

func NewNewInitiatorMessage() NewInitiatorMessage

type NewResponderMessage

type NewResponderMessage struct {
	Message
	ID Address `msgpack:"id"`
}

func NewNewResponderMessage

func NewNewResponderMessage(responderAddress Address) NewResponderMessage

type Nonce

type Nonce struct {
	Cookie         Cookie
	Source         Address
	Destination    Address
	OverflowNumber OverflowNumber
	SequenceNumber SequenceNumber
}

func NonceFromBytes

func NonceFromBytes(bytes [NonceByteLength]byte) Nonce

func (Nonce) Bytes

func (n Nonce) Bytes() [NonceByteLength]byte

func (Nonce) String

func (n Nonce) String() string

type OverflowNumber

type OverflowNumber [2]byte

func NewOverflowNumber

func NewOverflowNumber() OverflowNumber

func OverflowNumberFromInt

func OverflowNumberFromInt(value uint16) OverflowNumber

func (OverflowNumber) Empty

func (n OverflowNumber) Empty() bool

func (OverflowNumber) Equal

func (n OverflowNumber) Equal(overflowNumber OverflowNumber) bool

func (OverflowNumber) Int

func (n OverflowNumber) Int() uint16

type SendErrorMessage

type SendErrorMessage struct {
	Message
	ID []byte `msgpack:"id"`
}

type SequenceNumber

type SequenceNumber [4]byte

func NewSequenceNumber

func NewSequenceNumber() (*SequenceNumber, error)

func SequenceNumberFromInt

func SequenceNumberFromInt(value uint32) SequenceNumber

func (SequenceNumber) Empty

func (n SequenceNumber) Empty() bool

func (SequenceNumber) Equal

func (n SequenceNumber) Equal(sequenceNumber SequenceNumber) bool

func (SequenceNumber) Int

func (n SequenceNumber) Int() uint32

type ServerAuthMessage

type ServerAuthMessage struct {
	Message
	YourCookie         Cookie     `msgpack:"your_cookie"`
	SignedKeys         []byte     `msgpack:"signed_keys"`
	InitiatorConnected *bool      `msgpack:"initiator_connected,omitempty"`
	Responders         *[]Address `msgpack:"responders"`
}

func NewServerAuthMessage

func NewServerAuthMessage(
	incomingCookie Cookie,
	outgoingSessionPublicKey Key,
	clientPermanentPublicKey Key,
	serverPermanentPrivateKey Key,
	nonce Nonce,
	initiatorConnected *bool,
	responderAddresses *[]Address,
) ServerAuthMessage

type ServerHelloMessage

type ServerHelloMessage struct {
	Message
	Key Key `msgpack:"key"`
}

func NewServerHelloMessage

func NewServerHelloMessage(sessionPublicKey Key) ServerHelloMessage

type TypedMessage

type TypedMessage interface {
	MessageType() MessageType
}

Jump to

Keyboard shortcuts

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