package store
import (
bolt "go.etcd.io/bbolt"
)
// TrustPolicy governs how newly-seen remote CAs are handled, per
// DESIGN.md §5.2.
type TrustPolicy string
const (
TrustPolicyWhitelist TrustPolicy = "whitelist" // admin must approve (default)
TrustPolicyAutoTrust TrustPolicy = "auto-trust" // TOFU
)
// InstanceMeta holds this instance's own configuration.
type InstanceMeta struct {
Domain string `json:"domain"`
TrustPolicy TrustPolicy `json:"trust_policy"`
CertTTLHours int `json:"cert_ttl_hours"`
}
const metaKey = "instance"
func (s *Store) GetInstanceMeta() (InstanceMeta, error) {
var m InstanceMeta
err := s.db.View(func(tx *bolt.Tx) error {
return getJSON(tx, bucketMeta, metaKey, &m)
})
return m, err
}
func (s *Store) PutInstanceMeta(m InstanceMeta) error {
return s.db.Update(func(tx *bolt.Tx) error {
return putJSON(tx, bucketMeta, metaKey, m)
})
}