vault

package
v0.0.0-...-3ee3ac7 Latest Latest
Warning

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

Go to latest
Published: Feb 27, 2026 License: Apache-2.0 Imports: 11 Imported by: 0

Documentation

Index

Constants

View Source
const (
	VaultDirName     = ".chameleon/vault"
	ManifestFileName = "manifest.json"
	ModeFileName     = "mode.json"
	ModeAuthFileName = "mode_auth.json"
	IntegrityLogName = "integrity.log"
	VersionsDirName  = "versions"
	HashesDirName    = "hashes"
)
View Source
const DefaultParanoidMode = "readonly"
View Source
const MinModePasswordLength = 8

Variables

This section is empty.

Functions

func FormatVersion

func FormatVersion(entry *VersionEntry) string

FormatVersion formats a version entry for display

func SerializeSchema

func SerializeSchema(schema interface{}) ([]byte, error)

SerializeSchema converts schema to JSON for storage

Types

type IntegrityLogEntry

type IntegrityLogEntry struct {
	Timestamp time.Time
	Action    string // INIT, REGISTER, MIGRATE, VERIFY, etc.
	Version   string
	Details   map[string]string
}

IntegrityLogEntry represents a single entry in integrity.log

type Manifest

type Manifest struct {
	CurrentVersion string         `json:"current_version"`
	Versions       []VersionEntry `json:"versions"`
	ParanoidMode   string         `json:"paranoid_mode"` // Legacy compatibility field
}

Manifest represents the vault's manifest.json

type ModeAuthConfig

type ModeAuthConfig struct {
	Salt string `json:"salt"`
	Hash string `json:"hash"`
}

ModeAuthConfig stores password verifier for privileged mode changes.

type ModeConfig

type ModeConfig struct {
	ParanoidMode string `json:"paranoid_mode"`
}

ModeConfig stores current security/paranoid mode (source of truth)

type Vault

type Vault struct {
	RootPath string    // .chameleon/vault/
	Manifest *Manifest // Current state
}

Vault represents the Schema Vault system

func NewVault

func NewVault(rootPath string) *Vault

NewVault creates a vault instance (does not initialize on disk)

func (*Vault) AppendLog

func (v *Vault) AppendLog(action, version string, details map[string]string) error

appendLog appends an entry to integrity.log

func (*Vault) ComputeSchemaHash

func (v *Vault) ComputeSchemaHash(schemaPath string) (string, error)

ComputeSchemaHash computes SHA256 hash of schema file(s)

func (*Vault) DetectChanges

func (v *Vault) DetectChanges(schemaPath string) (bool, string, error)

DetectChanges checks if schema has changed since last version

func (*Vault) Exists

func (v *Vault) Exists() bool

Exists checks if vault exists on disk

func (*Vault) GetCurrentVersion

func (v *Vault) GetCurrentVersion() (*VersionEntry, error)

GetCurrentVersion returns the current version entry

func (*Vault) GetParanoidMode

func (v *Vault) GetParanoidMode() (string, error)

GetParanoidMode returns the current paranoid mode. Source of truth is mode.json; manifest is used only as backward-compatible fallback.

func (*Vault) GetStatus

func (v *Vault) GetStatus() (*VaultStatus, error)

GetStatus returns current vault status

func (*Vault) GetVersion

func (v *Vault) GetVersion(version string) (*VersionEntry, error)

GetVersion retrieves a specific version entry

func (*Vault) GetVersionContent

func (v *Vault) GetVersionContent(version string) ([]byte, error)

GetVersionContent reads the schema content for a specific version

func (*Vault) GetVersionHistory

func (v *Vault) GetVersionHistory() ([]VersionEntry, error)

GetVersionHistory returns all versions in chronological order

func (*Vault) HasModePassword

func (v *Vault) HasModePassword() bool

HasModePassword reports whether an admin password was configured for mode escalation.

func (*Vault) Initialize

func (v *Vault) Initialize() error

Initialize creates vault structure on disk

func (*Vault) Load

func (v *Vault) Load() error

Load reads the manifest from disk

func (*Vault) ReadLog

func (v *Vault) ReadLog() ([]string, error)

ReadLog reads the integrity log

func (*Vault) RegisterVersion

func (v *Vault) RegisterVersion(schemaPath string, author string, changesSummary string) (*VersionEntry, error)

RegisterVersion registers a new schema version in the vault

func (*Vault) SaveVersion

func (v *Vault) SaveVersion(version string, schemaContent []byte, hash string) error

SaveVersion saves a version snapshot to vault

func (*Vault) SetModePassword

func (v *Vault) SetModePassword(password string) error

SetModePassword configures (or rotates) the admin password for elevated mode changes.

func (*Vault) SetParanoidMode

func (v *Vault) SetParanoidMode(mode string) error

SetParanoidMode updates the current paranoid mode in mode.json.

func (*Vault) VerifyIntegrity

func (v *Vault) VerifyIntegrity() (*VerificationResult, error)

VerifyIntegrity checks vault integrity

func (*Vault) VerifyModePassword

func (v *Vault) VerifyModePassword(password string) (bool, error)

VerifyModePassword verifies whether password matches configured admin password.

type VaultStatus

type VaultStatus struct {
	Exists         bool
	CurrentVersion string
	TotalVersions  int
	IntegrityOK    bool
	LastModified   time.Time
}

VaultStatus represents current vault state

type VerificationResult

type VerificationResult struct {
	Valid        bool
	Issues       []string
	VersionsOK   []string
	VersionsFail []string
}

VerificationResult represents integrity check results

type VersionEntry

type VersionEntry struct {
	Version        string    `json:"version"`         // v001, v002, etc.
	Hash           string    `json:"hash"`            // SHA256 hash
	Timestamp      time.Time `json:"timestamp"`       // When registered
	Author         string    `json:"author"`          // Who registered it
	Parent         *string   `json:"parent"`          // Parent version (null for v001)
	Locked         bool      `json:"locked"`          // Immutability flag
	ChangesSummary string    `json:"changes_summary"` // Human-readable description
	Files          []string  `json:"files"`           // Schema files included
}

VersionEntry represents a single schema version in the vault

Jump to

Keyboard shortcuts

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