cabin

package
v0.7.6 Latest Latest
Warning

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

Go to latest
Published: Jan 18, 2024 License: AGPL-3.0 Imports: 22 Imported by: 0

Documentation

Index

Constants

View Source
const (
	// DefaultIDKeyScheme is the default jess tool for creating ID keys.
	DefaultIDKeyScheme = "Ed25519"

	// DefaultIDKeySecurityLevel is the default security level for creating ID keys.
	DefaultIDKeySecurityLevel = 256 // Ed25519 security level is fixed, setting is ignored.
)

Variables

This section is empty.

Functions

This section is empty.

Types

type ExchKey

type ExchKey struct {
	Created time.Time
	Expires time.Time
	// contains filtered or unexported fields
}

ExchKey holds the private information of a HubKey.

type Identity

type Identity struct {
	record.Base

	ID     string
	Map    string
	Hub    *hub.Hub
	Signet *jess.Signet

	ExchKeys map[string]*ExchKey
	// contains filtered or unexported fields
}

Identity holds the identity of a Hub.

func CreateIdentity

func CreateIdentity(ctx context.Context, mapName string) (*Identity, error)

CreateIdentity creates a new identity.

func EnsureIdentity

func EnsureIdentity(r record.Record) (*Identity, error)

EnsureIdentity makes sure a database record is an Identity.

func LoadIdentity

func LoadIdentity(key string) (id *Identity, changed bool, err error)

LoadIdentity loads an identify with the given key.

func (*Identity) ExportAnnouncement

func (id *Identity) ExportAnnouncement() ([]byte, error)

ExportAnnouncement serializes and signs the Announcement.

func (*Identity) ExportStatus

func (id *Identity) ExportStatus() ([]byte, error)

ExportStatus serializes and signs the Status.

func (*Identity) GetSignet

func (id *Identity) GetSignet(keyID string, recipient bool) (*jess.Signet, error)

GetSignet returns the private exchange key with the given ID.

func (*Identity) Lock

func (id *Identity) Lock()

Lock locks the Identity through the Hub lock.

func (*Identity) MaintainAnnouncement

func (id *Identity) MaintainAnnouncement(newInfo *hub.Announcement, selfcheck bool) (changed bool, err error)

MaintainAnnouncement maintains the Hub's Announcenemt and returns whether there was a change that should be communicated to other Hubs. If newInfo is nil, it will be derived from configuration.

func (*Identity) MaintainExchKeys added in v0.2.1

func (id *Identity) MaintainExchKeys(newStatus *hub.Status, now time.Time) (changed bool, err error)

MaintainExchKeys maintains the exchange keys, creating new ones and deprecating and deleting old ones.

func (*Identity) MaintainStatus

func (id *Identity) MaintainStatus(lanes []*hub.Lane, load *int, flags []string, selfcheck bool) (changed bool, err error)

MaintainStatus maintains the Hub's Status and returns whether there was a change that should be communicated to other Hubs.

func (*Identity) MakeOfflineStatus added in v0.3.13

func (id *Identity) MakeOfflineStatus() (offlineStatusExport []byte, err error)

MakeOfflineStatus creates and signs an offline status message.

func (*Identity) Save

func (id *Identity) Save() error

Save saves the Identity to the database.

func (*Identity) SignHubMsg

func (id *Identity) SignHubMsg(data []byte) ([]byte, error)

SignHubMsg signs a data blob with the identity's private key.

func (*Identity) SignVerificationRequest added in v0.3.0

func (id *Identity) SignVerificationRequest(request []byte, purpose, clientReference, serverReference string) (response []byte, err error)

SignVerificationRequest sign a verification request. The purpose and references must match the request, else the verification will fail.

func (*Identity) Unlock

func (id *Identity) Unlock()

Unlock unlocks the Identity through the Hub lock.

type Verification added in v0.3.0

type Verification struct {
	// Challenge is a random value chosen by the client.
	Challenge []byte `json:"c"`
	// Purpose defines the purpose of the verification. Protects against using verification for other purposes.
	Purpose string `json:"p"`
	// ClientReference is an optional field for exchanging metadata about the client. Protects against forwarding/relay attacks.
	ClientReference string `json:"cr"`
	// ServerReference is an optional field for exchanging metadata about the server. Protects against forwarding/relay attacks.
	ServerReference string `json:"sr"`
}

Verification is used to verify certain aspects of another Hub.

func CreateVerificationRequest added in v0.3.0

func CreateVerificationRequest(purpose, clientReference, serverReference string) (v *Verification, request []byte, err error)

CreateVerificationRequest creates a new verification request with the given purpose and references.

func (*Verification) Verify added in v0.3.0

func (v *Verification) Verify(response []byte, h *hub.Hub) error

Verify verifies the verification response and checks if everything is valid.

Jump to

Keyboard shortcuts

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