config

package
v0.4.2 Latest Latest
Warning

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

Go to latest
Published: Nov 7, 2024 License: AGPL-3.0 Imports: 14 Imported by: 0

Documentation

Overview

related: katzenpost:authority/voting/server/config/config.go

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Config

type Config struct {
	Server     *Server
	Logging    *Logging
	Parameters *Parameters
	Debug      *Debug

	// Note: these are an iterative step; useful to register non-volunteer nodes within the appchain
	Mixes        []*Node
	GatewayNodes []*Node
	ServiceNodes []*Node
	Topology     *Topology

	SphinxGeometry *geo.Geometry
}

Config is the top level authority configuration.

func Load

func Load(b []byte, forceGenOnly bool) (*Config, error)

Load parses and validates the provided buffer b as a config file body and returns the Config.

func LoadFile

func LoadFile(f string, forceGenOnly bool) (*Config, error)

LoadFile loads, parses and validates the provided file and returns the Config.

func (*Config) FixupAndValidate

func (cfg *Config) FixupAndValidate(forceGenOnly bool) error

FixupAndValidate applies defaults to config entries and validates the supplied configuration. Most people should call one of the Load variants instead.

type Debug

type Debug struct {
	// Layers is the number of non-provider layers in the network topology.
	Layers int

	// MinNodesPerLayer is the minimum number of nodes per layer required to
	// form a valid Document.
	MinNodesPerLayer int

	// GenerateOnly halts and cleans up the server right after long term
	// key generation.
	GenerateOnly bool
}

Debug is the authority debug configuration.

type Layer added in v0.4.1

type Layer struct {
	Nodes []Node
}

Layer holds a slice of Nodes

type Logging

type Logging struct {
	// Disable disables logging entirely.
	Disable bool

	// File specifies the log file, if omitted stdout will be used.
	File string

	// Level specifies the log level.
	Level string
}

Logging is the authority logging configuration.

type Node added in v0.4.1

type Node struct {
	// Identifier is the human readable node identifier, to be set iff
	// the node is a Provider.
	Identifier string

	// IdentityPublicKeyPem is the node's public signing key also known
	// as the identity key.
	IdentityPublicKeyPem string
}

Node is an authority mix node or provider entry.

type Parameters

type Parameters struct {
	// SendRatePerMinute is the rate per minute.
	SendRatePerMinute uint64

	// Mu is the inverse of the mean of the exponential distribution
	// that is used to select the delay for each hop.
	Mu float64

	// MuMaxDelay sets the maximum delay for Mu.
	MuMaxDelay uint64

	// LambdaP is the inverse of the mean of the exponential distribution
	// that is used to select the delay between clients sending from their egress
	// FIFO queue or drop decoy message.
	LambdaP float64

	// LambdaPMaxDelay sets the maximum delay for LambdaP.
	LambdaPMaxDelay uint64

	// LambdaL is the inverse of the mean of the exponential distribution
	// that is used to select the delay between clients sending loop decoys.
	LambdaL float64

	// LambdaLMaxDelay sets the maximum delay for LambdaP.
	LambdaLMaxDelay uint64

	// LambdaD is the inverse of the mean of the exponential distribution
	// that is used to select the delay between clients sending deop decoys.
	LambdaD float64

	// LambdaDMaxDelay sets the maximum delay for LambdaP.
	LambdaDMaxDelay uint64

	// LambdaM is the inverse of the mean of the exponential distribution
	// that is used to select the delay between sending mix node decoys.
	LambdaM float64

	// LambdaG is the inverse of the mean of the exponential distribution
	// that is used to select the delay between sending gateway node decoys.
	//
	// WARNING: This is not used via the TOML config file; this field is only
	// used internally by the dirauth server state machine.
	LambdaG float64

	// LambdaMMaxDelay sets the maximum delay for LambdaP.
	LambdaMMaxDelay uint64

	// LambdaGMaxDelay sets the maximum delay for LambdaG.
	LambdaGMaxDelay uint64
}

Parameters is the network parameters.

type Server

type Server struct {
	// Identifier is the human readable identifier for the node (eg: FQDN).
	Identifier string

	// WireKEMScheme is the wire protocol KEM scheme to use.
	WireKEMScheme string

	// PKISignatureScheme specifies the cryptographic signature scheme
	PKISignatureScheme string

	// Addresses are the IP address/port combinations that the server will bind
	// to for incoming connections.
	Addresses []string

	// DataDir is the absolute path to the server's state files.
	DataDir string
}

type Topology added in v0.4.1

type Topology struct {
	Layers []Layer
}

Topology contains a slice of Layers, each containing a slice of Nodes

Jump to

Keyboard shortcuts

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