SHA-256 over raw asset bytes and over the canonical JSON form of metadata (encoding/json already sorts map keys and preserves struct field order deterministically, so no separate canonicalization library is needed for our own fixed types). A Timestamper interface stands in for the RFC-3161 timestamp step — no concrete implementation yet, since which TSA to use is an open decision (CLAUDE.md "Offene Punkte") that directly affects the archive's evidentiary weight, not a purely technical choice to make silently. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
19 lines
788 B
Go
19 lines
788 B
Go
package evidence
|
|
|
|
import "context"
|
|
|
|
// Timestamper fragt einen RFC-3161-Zeitstempel für einen Hash (i. d. R.
|
|
// aus HashBytes/HashMetadata) bei einer Time-Stamp Authority (TSA) an
|
|
// und liefert den rohen Zeitstempel-Token zurück, wie er unverändert in
|
|
// evidence_package.timestamp_token gespeichert wird.
|
|
//
|
|
// Es gibt hier bewusst noch keine konkrete Implementierung: welche TSA
|
|
// verwendet wird, ist in CLAUDE.md als offener Punkt vermerkt (freie
|
|
// TSA vs. eIDAS-qualifizierter Zeitstempeldienst — das betrifft direkt
|
|
// die Beweiskraft des Archivs und ist keine rein technische
|
|
// Entscheidung). Sobald das geklärt ist, implementiert ein konkreter
|
|
// Typ dieses Interface.
|
|
type Timestamper interface {
|
|
Timestamp(ctx context.Context, hash []byte) (token []byte, err error)
|
|
}
|