diff options
author | Rasmus Dahlberg <rasmus@rgdd.se> | 2023-03-18 13:20:27 +0100 |
---|---|---|
committer | Rasmus Dahlberg <rasmus@rgdd.se> | 2023-03-18 13:20:38 +0100 |
commit | b8b8e05c833dfb4c4191c8c1391e02d07e0e744f (patch) | |
tree | 65dfc946a218e81f97a2a8f867f4ef9661d0e4de /utils_state.go | |
parent | 15ffe76847c4c0383c4d0c0a35fb29d5031d093b (diff) |
renaming files and moving around
Diffstat (limited to 'utils_state.go')
-rw-r--r-- | utils_state.go | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/utils_state.go b/utils_state.go new file mode 100644 index 0000000..2273c24 --- /dev/null +++ b/utils_state.go @@ -0,0 +1,42 @@ +package main + +import ( + "crypto/sha256" + "encoding/json" + "fmt" + "os" + + ct "github.com/google/certificate-transparency-go" +) + +type treeHead struct { + TreeSize int64 `json:"tree_size"` + RootHash [sha256.Size]byte `json:root_hash"` +} + +func readState(opts options, logID []byte) (treeHead, error) { + if _, err := os.Stat(fmt.Sprintf("%s/%x/%s", opts.logDirectory, logID, opts.stateFile)); err != nil { + return treeHead{0, sha256.Sum256(nil)}, nil + } + b, err := os.ReadFile(fmt.Sprintf("%s/%x/%s", opts.logDirectory, logID, opts.stateFile)) + if err != nil { + return treeHead{}, err + } + var th treeHead + if err := json.Unmarshal(b, &th); err != nil { + return treeHead{}, err + } + return th, nil +} + +func readSnapshot(opts options, logID []byte) (ct.SignedTreeHead, error) { + b, err := os.ReadFile(fmt.Sprintf("%s/%x/%s", opts.logDirectory, logID, opts.sthFile)) + if err != nil { + return ct.SignedTreeHead{}, err + } + var sth ct.SignedTreeHead + if err := json.Unmarshal(b, &sth); err != nil { + return ct.SignedTreeHead{}, err + } + return sth, nil +} |