aboutsummaryrefslogtreecommitdiff
path: root/internal/state/state_manager.go
blob: 60d2af1d5c1aff8ffbcdcde79af903b7b1b53450 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
package state

import (
	"context"

	"git.sigsum.org/sigsum-go/pkg/merkle"
	"git.sigsum.org/sigsum-go/pkg/types"
)

// StateManager coordinates access to a nodes tree heads and (co)signatures.
type StateManager interface {
	// ToCosignTreeHead returns the node's to-cosign tree head
	ToCosignTreeHead() *types.SignedTreeHead

	// CosignedTreeHead returns the node's cosigned tree head
	CosignedTreeHead(context.Context) (*types.CosignedTreeHead, error)

	// AddCosignature verifies that a cosignature is valid for the to-cosign
	// tree head before adding it
	AddCosignature(context.Context, *types.PublicKey, *types.Signature) error

	// Run peridically rotates the node's to-cosign and cosigned tree heads
	Run(context.Context)
}

// event is a verified cosignature request
type event struct {
	keyHash     *merkle.Hash
	cosignature *types.Signature
}