commands

package
v0.0.46 Latest Latest
Warning

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

Go to latest
Published: Jan 15, 2025 License: AGPL-3.0, AGPL-3.0 Imports: 7 Imported by: 1

Documentation

Overview

Wire protocol commands.

Wire protocol commands.

Index

Constants

View Source
const (

	// ConsensusOk signifies that the GetConsensus request has completed
	// successfully.
	ConsensusOk = 0

	// ConsensusNotFound signifies that the document document corresponding
	// to the epoch in the GetConsensus was not found, but retrying later
	// may be successful.
	ConsensusNotFound = 1

	// ConsensusGone signifies that the document corresponding to the epoch
	// in the GetConsensus was not found, and that retrying later will
	// not be successful.
	ConsensusGone = 2

	// DescriptorOk signifies that the PostDescriptor request has completed
	// succcessfully.
	DescriptorOk = 0

	// DescriptorInvalid signifies that the PostDescriptor request has failed
	// due to an unspecified error.
	DescriptorInvalid = 1

	// DescriptorConflict signifies that the PostDescriptor request has
	// failed due to the uploaded descriptor conflicting with a previously
	// uploaded descriptor.
	DescriptorConflict = 2

	// DescriptorForbidden signifies that the PostDescriptor request has
	// failed due to an authentication error.
	DescriptorForbidden = 3

	// VoteOk signifies that the vote was accepted by the peer.
	VoteOk = 0

	// VoteTooLate signifies that the vote was too late.
	VoteTooLate = 1

	// VoteTooEarly signifies that the vote was too late.
	VoteTooEarly = 2

	// VoteNotAuthorized signifies that the voting entity's key is not authorized.
	VoteNotAuthorized = 3

	// VoteNotSigned signifies that the vote payload failed signature verification.
	VoteNotSigned = 4

	// VoteMalformed signifies that the vote payload was invalid.
	VoteMalformed = 5

	// VoteAlreadyReceived signifies that the vote from that peer was already received.
	VoteAlreadyReceived = 6

	// VoteNotFound signifies that the vote was not found.
	VoteNotFound = 7

	// RevealOk signifies that the reveal was accepted by the peer.
	RevealOk = 8

	// RevealTooEarly signifies that the peer is breaking protocol.
	RevealTooEarly = 9

	// RevealNotAuthorized signifies that the revealing entity's key is not authorized.
	RevealNotAuthorized = 10

	// RevealNotSigned signifies that the reveal payload failed signature verification.
	RevealNotSigned = 11

	// RevealAlreadyReceived signifies that the reveal from that peer was already received.
	RevealAlreadyReceived = 12

	// RevealTooLate signifies that the reveal from that peer arrived too late.
	RevealTooLate = 13

	// CertOk signifies that the certificate was accepted by the peer.
	CertOk = 14

	// CertTooEarly signifies that the peer is breaking protocol.
	CertTooEarly = 15

	// CertNotAuthorized signifies that the certifying entity's key is not
	CertNotAuthorized = 16

	// CertNotSigned signifies that the certficiate payload failed signature verification.
	CertNotSigned = 17

	// CertAlreadyReceived signifies that the certificate from that peer was already received.
	CertAlreadyReceived = 18

	// CertTooLate signifies that the certificate from that peer arrived too late.
	CertTooLate = 19

	// SigOK signifies that the signature was accepted by the peer.
	SigOk = 20

	// SigNotAuthorized signifies that the entity's key is not authorized.
	SigNotAuthorized = 21

	// SigNotSigned signifies that the signature command failed signature verification.
	SigNotSigned = 22

	// SigTooEarly signifies that the peer is breaking protocol.
	SigTooEarly = 23

	// SigTooLate signifies that the signature from that peer arrived too late.
	SigTooLate = 24

	// SigAlreadyReceived signifies that the signature from that peer was already received.
	SigAlreadyReceived = 25

	// SigInvalid signifies that the signature failed to deserialiez.
	SigInvalid = 26
)

Variables

This section is empty.

Functions

func HybridKeySize added in v0.0.44

func HybridKeySize(scheme nike.Scheme) int

Types

type Cert

type Cert struct {
	Epoch     uint64
	PublicKey sign.PublicKey
	Payload   []byte
}

Cert is a potential consensus which is exchanged by Directory Authorities.

func (*Cert) Length added in v0.0.44

func (c *Cert) Length() int

func (*Cert) ToBytes

func (c *Cert) ToBytes() []byte

ToBytes serializes the Cert and returns the resulting slice.

type CertStatus

type CertStatus struct {
	ErrorCode uint8
}

CertStatus is a resonse status for a Cert command.

func (*CertStatus) Length added in v0.0.44

func (c *CertStatus) Length() int

func (*CertStatus) ToBytes

func (c *CertStatus) ToBytes() []byte

ToBytes serializes the CertStatus and returns the resulting slice.

type Command

type Command interface {
	// ToBytes serializes the command and returns the resulting slice.
	ToBytes() []byte

	// Length returns the length in bytes of the given command.
	Length() int
}

Command is the common interface exposed by all message command structures.

type Commands

type Commands struct {
	MaxMessageLenServerToClient int
	MaxMessageLenClientToServer int
	// contains filtered or unexported fields
}

Commands encapsulates all of the wire protocol commands so that it can pass around a sphinx geometry where needed.

func NewMixnetCommands added in v0.0.44

func NewMixnetCommands(geo *geo.Geometry) *Commands

NewMixnetCommands creates a Commands instance suitale to be used by mixnet nodes.

func NewPKICommands

func NewPKICommands(pkiSignatureScheme sign.Scheme) *Commands

NewPKICommands creates a Commands instance suitale to be used by PKI nodes.

func NewStorageReplicaCommands added in v0.0.44

func NewStorageReplicaCommands(geo *geo.Geometry, scheme nike.Scheme) *Commands

NewStorageReplicaCommands creates a Commands instance suitale to be used by storage replica nodes.

func (*Commands) FromBytes

func (c *Commands) FromBytes(b []byte) (Command, error)

FromBytes de-serializes the command in the buffer b, returning a Command or an error.

func (*Commands) MaxCommandSize added in v0.0.44

func (c *Commands) MaxCommandSize() int

type Consensus

type Consensus struct {
	ErrorCode uint8
	Payload   []byte
}

Consensus is a de-serialized consensus command.

func (*Consensus) Length added in v0.0.44

func (c *Consensus) Length() int

func (*Consensus) ToBytes

func (c *Consensus) ToBytes() []byte

ToBytes serializes the Consensus and returns the resulting byte slice.

type Consensus2 added in v0.0.46

type Consensus2 struct {
	Cmds *Commands

	ErrorCode  uint8
	ChunkNum   uint32
	ChunkTotal uint32
	Payload    []byte
}

Consensus2 is used to send a PKI document in compressed binary chunks.

func (*Consensus2) Length added in v0.0.46

func (c *Consensus2) Length() int

func (*Consensus2) ToBytes added in v0.0.46

func (c *Consensus2) ToBytes() []byte

ToBytes serializes the Consensus and returns the resulting byte slice.

type Disconnect

type Disconnect struct {
	Cmds *Commands
}

Disconnect is a de-serialized disconnect command.

func (*Disconnect) Length added in v0.0.44

func (c *Disconnect) Length() int

func (*Disconnect) ToBytes

func (c *Disconnect) ToBytes() []byte

ToBytes serializes the Disconnect and returns the resulting slice.

type GetConsensus

type GetConsensus struct {
	Epoch              uint64
	Cmds               *Commands
	MixnetTransmission bool // if GetConsensus is sent over the mixnet, if true we need to pad the message
}

GetConsensus is a de-serialized get_consensus command.

func (*GetConsensus) Length added in v0.0.44

func (c *GetConsensus) Length() int

func (*GetConsensus) ToBytes

func (c *GetConsensus) ToBytes() []byte

ToBytes serializes the GetConsensus and returns the resulting byte slice.

type GetConsensus2 added in v0.0.46

type GetConsensus2 struct {
	Cmds  *Commands
	Epoch uint64
}

func (*GetConsensus2) Length added in v0.0.46

func (c *GetConsensus2) Length() int

func (*GetConsensus2) ToBytes added in v0.0.46

func (c *GetConsensus2) ToBytes() []byte

ToBytes serializes the GetConsensus and returns the resulting byte slice.

type GetVote

type GetVote struct {
	Cmds *Commands

	Epoch     uint64
	PublicKey sign.PublicKey
}

GetVote is a de-serialized get_vote command.

func (*GetVote) Length added in v0.0.44

func (c *GetVote) Length() int

func (*GetVote) ToBytes

func (v *GetVote) ToBytes() []byte

ToBytes serializes the GetVote and returns the resulting slice.

type Message

type Message struct {
	Geo  *geo.Geometry
	Cmds *Commands

	QueueSizeHint uint8
	Sequence      uint32
	Payload       []byte
}

Message is a de-serialized message command containing a message.

func (*Message) Length added in v0.0.44

func (c *Message) Length() int

func (*Message) ToBytes

func (c *Message) ToBytes() []byte

ToBytes serializes the Message and returns the resulting slice.

type MessageACK

type MessageACK struct {
	Geo  *geo.Geometry
	Cmds *Commands

	QueueSizeHint uint8
	Sequence      uint32
	ID            [constants.SURBIDLength]byte
	Payload       []byte
}

MessageACK is a de-serialized message command containing an ACK.

func (*MessageACK) Length added in v0.0.44

func (c *MessageACK) Length() int

func (*MessageACK) ToBytes

func (c *MessageACK) ToBytes() []byte

ToBytes serializes the MessageACK and returns the resulting slice.

type MessageEmpty

type MessageEmpty struct {
	Cmds *Commands

	Sequence uint32
}

MessageEmpty is a de-serialized message command signifying a empty queue.

func (*MessageEmpty) Length added in v0.0.44

func (c *MessageEmpty) Length() int

func (*MessageEmpty) ToBytes

func (c *MessageEmpty) ToBytes() []byte

ToBytes serializes the MessageEmpty and returns the resulting slice.

type NoOp

type NoOp struct {
	Cmds *Commands
}

NoOp is a de-serialized noop command.

func (*NoOp) Length added in v0.0.44

func (c *NoOp) Length() int

func (*NoOp) ToBytes

func (c *NoOp) ToBytes() []byte

ToBytes serializes the NoOp and returns the resulting slice.

type PostDescriptor

type PostDescriptor struct {
	Epoch   uint64
	Payload []byte
}

PostDescriptor is a de-serialized post_descriptor command.

func (*PostDescriptor) Length added in v0.0.44

func (c *PostDescriptor) Length() int

func (*PostDescriptor) ToBytes

func (c *PostDescriptor) ToBytes() []byte

ToBytes serializes the PostDescriptor and returns the resulting byte slice.

type PostDescriptorStatus

type PostDescriptorStatus struct {
	ErrorCode uint8
}

PostDescriptorStatus is a de-serialized post_descriptor_status command.

func (*PostDescriptorStatus) Length added in v0.0.44

func (c *PostDescriptorStatus) Length() int

func (*PostDescriptorStatus) ToBytes

func (c *PostDescriptorStatus) ToBytes() []byte

ToBytes serializes the PostDescriptorStatus and returns the resulting byte slice.

type PostReplicaDescriptor added in v0.0.44

type PostReplicaDescriptor struct {
	Epoch   uint64
	Payload []byte
}

PostReplicaDescriptor is a de-serialized post_descriptor command.

func (*PostReplicaDescriptor) Length added in v0.0.44

func (c *PostReplicaDescriptor) Length() int

func (*PostReplicaDescriptor) ToBytes added in v0.0.44

func (c *PostReplicaDescriptor) ToBytes() []byte

ToBytes serializes the PostReplicaDescriptor and returns the resulting byte slice.

type PostReplicaDescriptorStatus added in v0.0.44

type PostReplicaDescriptorStatus struct {
	ErrorCode uint8
}

PostReplicaDescriptorStatus is a de-serialized post_replica_descriptor_status command.

func (*PostReplicaDescriptorStatus) Length added in v0.0.44

func (c *PostReplicaDescriptorStatus) Length() int

func (*PostReplicaDescriptorStatus) ToBytes added in v0.0.44

func (c *PostReplicaDescriptorStatus) ToBytes() []byte

ToBytes serializes the PostReplicaDescriptorStatus and returns the resulting byte slice.

type ReplicaMessage added in v0.0.44

type ReplicaMessage struct {
	Cmds   *Commands
	Geo    *geo.Geometry
	Scheme nike.Scheme

	SenderEPubKey []byte
	DEK           *[32]byte
	Ciphertext    []byte
}

ReplicaMessage used over wire protocol from couriers to replicas, one replica at a time.

func (*ReplicaMessage) Length added in v0.0.44

func (c *ReplicaMessage) Length() int

func (*ReplicaMessage) ToBytes added in v0.0.44

func (c *ReplicaMessage) ToBytes() []byte

type ReplicaMessageReply added in v0.0.44

type ReplicaMessageReply struct {
	Cmds *Commands

	ErrorCode     uint8
	EnvelopeHash  *[32]byte
	EnvelopeReply []byte
}

ReplicaMessageReply is sent by replicas to couriers as a reply to the ReplicaMessage command.

func (*ReplicaMessageReply) Length added in v0.0.44

func (c *ReplicaMessageReply) Length() int

func (*ReplicaMessageReply) ToBytes added in v0.0.44

func (c *ReplicaMessageReply) ToBytes() []byte

type ReplicaRead added in v0.0.44

type ReplicaRead struct {
	Cmds *Commands

	BoxID *[32]byte
}

ReplicaRead isn't used directly on the wire protocol but is embedded inside the ReplicaMessage which of course are sent by the couriers to the replicas.

func (*ReplicaRead) Length added in v0.0.44

func (c *ReplicaRead) Length() int

func (*ReplicaRead) ToBytes added in v0.0.44

func (c *ReplicaRead) ToBytes() []byte

type ReplicaReadReply added in v0.0.44

type ReplicaReadReply struct {
	Cmds *Commands
	Geo  *geo.Geometry

	ErrorCode uint8
	BoxID     *[32]byte
	Signature *[32]byte
	Payload   []byte
}

ReplicaReadReply isn't used directly on the wire protocol but is embedded inside the ReplicaMessageReply which of course are sent by the replicas to the couriers. Therefore the ReplicaReadReply command is never padded because it is always encapsulated by the ReplicaMessageReply which is padded.

func (*ReplicaReadReply) Length added in v0.0.44

func (c *ReplicaReadReply) Length() int

func (*ReplicaReadReply) ToBytes added in v0.0.44

func (c *ReplicaReadReply) ToBytes() []byte

type ReplicaWrite added in v0.0.44

type ReplicaWrite struct {
	Cmds *Commands

	BoxID     *[32]byte
	Signature *[32]byte
	Payload   []byte
}

ReplicaWrite has two distinct uses. Firstly, it is to be used directly on the wire for replication between replicas. Secondly, it can be embedded inside a ReplicaMessage which of course are sent from couriers to replicas.

func (*ReplicaWrite) Length added in v0.0.44

func (c *ReplicaWrite) Length() int

func (*ReplicaWrite) ToBytes added in v0.0.44

func (c *ReplicaWrite) ToBytes() []byte

type ReplicaWriteReply added in v0.0.44

type ReplicaWriteReply struct {
	Cmds *Commands

	ErrorCode uint8
}

ReplicaWriteReply can facilitate replication between replicas as the reply to the ReplicaWrite command. Otherwise it is embedded in a ReplicaMessageReply and sent from replicas to couriers.

func (*ReplicaWriteReply) Length added in v0.0.44

func (c *ReplicaWriteReply) Length() int

func (*ReplicaWriteReply) ToBytes added in v0.0.44

func (c *ReplicaWriteReply) ToBytes() []byte

type RetrieveMessage

type RetrieveMessage struct {
	Sequence uint32
	Cmds     *Commands
}

RetrieveMessage is a de-serialized retrieve_message command.

func (*RetrieveMessage) Length added in v0.0.44

func (c *RetrieveMessage) Length() int

func (*RetrieveMessage) ToBytes

func (c *RetrieveMessage) ToBytes() []byte

ToBytes serializes the RetrieveMessage and returns the resulting slice.

type Reveal

type Reveal struct {
	Epoch     uint64
	PublicKey sign.PublicKey
	Payload   []byte
}

Reveal is a de-serialized reveal command exchanged by authorities.

func (*Reveal) Length added in v0.0.44

func (c *Reveal) Length() int

func (*Reveal) ToBytes

func (r *Reveal) ToBytes() []byte

ToBytes serializes the Reveal and returns the resulting byte slice.

type RevealStatus

type RevealStatus struct {
	ErrorCode uint8
}

RevealStatus is a de-serialized revealStatus command.

func (*RevealStatus) Length added in v0.0.44

func (c *RevealStatus) Length() int

func (*RevealStatus) ToBytes

func (r *RevealStatus) ToBytes() []byte

ToBytes serializes the RevealStatus and returns the resulting byte slice.

type SendPacket

type SendPacket struct {
	SphinxPacket []byte
	Cmds         *Commands
}

SendPacket is a de-serialized send_packet command.

func (*SendPacket) Length added in v0.0.44

func (c *SendPacket) Length() int

func (*SendPacket) ToBytes

func (c *SendPacket) ToBytes() []byte

ToBytes serializes the SendPacket and returns the resulting slice.

type SendRetrievePacket added in v0.0.36

type SendRetrievePacket struct {
	Geo  *geo.Geometry
	Cmds *Commands

	SphinxPacket []byte
}

SendRetrievePacket is a command that sends a message or decoy and also retrieves a new message or decoy.

func (*SendRetrievePacket) Length added in v0.0.44

func (c *SendRetrievePacket) Length() int

func (*SendRetrievePacket) ToBytes added in v0.0.36

func (c *SendRetrievePacket) ToBytes() []byte

type SendRetrievePacketReply added in v0.0.36

type SendRetrievePacketReply struct {
	Cmds *Commands
	Geo  *geo.Geometry

	SURBID  [constants.SURBIDLength]byte
	Payload []byte
}

SendRetrievePacketReply is the reply command for a previously sent `SendRetrievePacket`

func (*SendRetrievePacketReply) Length added in v0.0.44

func (c *SendRetrievePacketReply) Length() int

func (*SendRetrievePacketReply) ToBytes added in v0.0.36

func (c *SendRetrievePacketReply) ToBytes() []byte

type Sig

type Sig struct {
	Epoch     uint64
	PublicKey sign.PublicKey
	Payload   []byte
}

Sig is a signature which is exchanged by Directory Authorities.

func (*Sig) Length added in v0.0.44

func (c *Sig) Length() int

func (*Sig) ToBytes

func (c *Sig) ToBytes() []byte

ToBytes serializes the Sig and returns the resulting slice.

type SigStatus

type SigStatus struct {
	ErrorCode uint8
}

SigStatus is a resonse status for a Sig command.

func (*SigStatus) Length added in v0.0.44

func (c *SigStatus) Length() int

func (*SigStatus) ToBytes

func (c *SigStatus) ToBytes() []byte

ToBytes serializes the Status and returns the resulting slice.

type Vote

type Vote struct {
	Epoch     uint64
	PublicKey sign.PublicKey
	Payload   []byte
}

Vote is a vote which is exchanged by Directory Authorities.

func (*Vote) Length added in v0.0.44

func (c *Vote) Length() int

func (*Vote) ToBytes

func (c *Vote) ToBytes() []byte

ToBytes serializes the Vote and returns the resulting slice.

type VoteStatus

type VoteStatus struct {
	ErrorCode uint8
}

VoteStatus is a resonse status for a Vote command.

func (*VoteStatus) Length added in v0.0.44

func (c *VoteStatus) Length() int

func (*VoteStatus) ToBytes

func (c *VoteStatus) ToBytes() []byte

ToBytes serializes the VoteStatus and returns the resulting slice.

Jump to

Keyboard shortcuts

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