aboutsummaryrefslogtreecommitdiff
path: root/utils_state.go
diff options
context:
space:
mode:
authorRasmus Dahlberg <rasmus@rgdd.se>2023-03-18 13:20:27 +0100
committerRasmus Dahlberg <rasmus@rgdd.se>2023-03-18 13:20:38 +0100
commitb8b8e05c833dfb4c4191c8c1391e02d07e0e744f (patch)
tree65dfc946a218e81f97a2a8f867f4ef9661d0e4de /utils_state.go
parent15ffe76847c4c0383c4d0c0a35fb29d5031d093b (diff)
renaming files and moving around
Diffstat (limited to 'utils_state.go')
-rw-r--r--utils_state.go42
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
+}