Help us shape the future of Go! Take the 2026 Go Developer Survey

audit

package
v0.9.0 Latest Latest
Warning

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

Go to latest
Published: Oct 28, 2026 License: EUPL-1.2 Imports: 18 Imported by: 0

Documentation

Overview

Package audit writes a hash-chained JSONL audit log and verifies it.

Index

Constants

View Source
const TimestampDir = "timestamps"

TimestampDir est le sous-dossier de dir qui reçoit les jetons RFC 3161.

Variables

This section is empty.

Functions

func Anchored added in v0.7.0

func Anchored(dir, head string) (bool, error)

Anchored indique si un jeton lisible de dir/timestamps porte l'empreinte de head.

func Digest added in v0.7.0

func Digest(head string) ([]byte, error)

Digest décode "sha256:<64 hex>" en 32 octets bruts (l'empreinte horodatée).

func Head(dir string) (string, error)

Head renvoie le dernier hash de la chaîne, "" si le journal est vide ou absent.

func ReadLines added in v0.7.0

func ReadLines(dir string, fn func(file string, lineNo int, l Line, err error) error) error

ReadLines parcourt en lecture seule les fichiers *.jsonl de dir dans l'ordre de la chaîne et appelle fn pour chaque ligne non vide (numérotées dès 1). Une ligne illisible est transmise avec err non nil et l à zéro. Un retour non nil de fn arrête le parcours et est renvoyé. Un dossier absent n'est pas une erreur : aucun appel, nil.

func SaveToken added in v0.7.0

func SaveToken(dir string, info tsp.Info, token []byte) (string, error)

SaveToken range le jeton (DER seul) sous un nom dérivé de genTime et de la tête ancrée. Un jeton déjà présent sous ce nom est conservé tel quel.

func Verify

func Verify(dir string) (string, int, error)

Verify walks all *.jsonl files in name order and checks the hash chain. It returns the last hash and the number of lines. A missing or empty dir yields ("sha256:0", 0, nil). Errors name <file>:<line>.

Types

type Level

type Level string

Level selects how much of each payload is stored.

const (
	Full     Level = "full"
	Metadata Level = "metadata"
)

type Line added in v0.7.0

type Line struct {
	Seq     uint64          `json:"seq"`
	TS      string          `json:"ts"`
	Session string          `json:"session"`
	Type    event.Type      `json:"type"`
	Payload json.RawMessage `json:"payload"`
	Prev    string          `json:"prev"`
	Hash    string          `json:"hash,omitempty"`
}

Line est l'enregistrement canonique sur disque ; l'ordre des champs fait partie du hash.

type TimestampSummary added in v0.7.0

type TimestampSummary struct {
	Count, Valid     int
	LastFile         string
	LastLine         int
	LastTime         time.Time
	TSA              string
	LinesAfter       int
	Errors, Warnings []string
}

TimestampSummary résume l'état de l'ancrage de la chaîne.

func VerifyTimestamps added in v0.7.0

func VerifyTimestamps(dir string, roots *x509.CertPool) (TimestampSummary, error)

VerifyTimestamps vérifie la chaîne puis chaque jeton de dir/timestamps. L'erreur n'est non nil que si la chaîne est cassée ou illisible.

type Writer

type Writer struct {
	// contains filtered or unexported fields
}

Writer appends chained, fsynced lines. Safe for concurrent use, and across processes sharing the same dir (exclusive flock on <dir>/.lock per Write; the chain tail is re-read from disk inside the lock).

func Open

func Open(dir string, level Level, redact func(string) string) (*Writer, error)

Open creates dir (0700, chmod'ed if it already exists), chmods existing *.jsonl files to 0600 and checks the chain tail. An unparsable last line is an error.

func (*Writer) Close

func (w *Writer) Close() error

Close releases the lock file.

func (*Writer) Write

func (w *Writer) Write(e event.Event) error

Write appends e to the log and fsyncs. After a failed write the Writer is broken and every later Write fails (fail closed).

Jump to

Keyboard shortcuts

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