aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDimitri Sokolyuk <demon@dim13.org>2017-07-09 12:48:35 +0200
committerDimitri Sokolyuk <demon@dim13.org>2017-07-09 12:48:35 +0200
commitddc9f9f5ab245a30ad5369bf9eb76033d3dbe9bf (patch)
treee0a1ebdb21dc17d39fadfa3c5b5463517cbc9774
parent1a9115a96872af03f5fb97b0e6e6f84003b39fa4 (diff)
Add header template
-rw-r--r--zhead/header.go39
-rw-r--r--zhead/header_test.go24
2 files changed, 63 insertions, 0 deletions
diff --git a/zhead/header.go b/zhead/header.go
new file mode 100644
index 0000000..400be5b
--- /dev/null
+++ b/zhead/header.go
@@ -0,0 +1,39 @@
+package zhead
+
+import (
+ "bytes"
+ "text/template"
+ "time"
+)
+
+const header = `{{define "header" -}}
+date={{.Date.Format "2006-01-02T15:04:05Z07:00"}}
+key={{.KeyFile}}
+algorithm={{.Alg}}
+bocksize={{.BlockSize}}
+
+{{range .Sums}}{{printf "%x" .}}
+{{end}}{{end}}`
+
+type Header struct {
+ Date time.Time
+ KeyFile string
+ Alg string
+ BlockSize int
+ Sums [][]byte
+}
+
+const (
+ DefaultAlg = "SHA512/256"
+ DefaultBlockSize = 65535
+)
+
+func (h Header) Print() ([]byte, error) {
+ t, err := template.New("header").Parse(header)
+ if err != nil {
+ return nil, err
+ }
+ buf := new(bytes.Buffer)
+ err = t.ExecuteTemplate(buf, "header", h)
+ return buf.Bytes(), err
+}
diff --git a/zhead/header_test.go b/zhead/header_test.go
new file mode 100644
index 0000000..b6f8d35
--- /dev/null
+++ b/zhead/header_test.go
@@ -0,0 +1,24 @@
+package zhead
+
+import (
+ "testing"
+ "time"
+)
+
+func TestHeader(t *testing.T) {
+ h := Header{
+ Date: time.Now().UTC(),
+ KeyFile: "some.key",
+ Alg: DefaultAlg,
+ BlockSize: DefaultBlockSize,
+ Sums: [][]byte{
+ []byte{0, 1, 2, 3, 4, 5},
+ []byte{6, 7, 8, 9, 10},
+ },
+ }
+ body, err := h.Print()
+ if err != nil {
+ t.Fatal(err)
+ }
+ t.Log(string(body))
+}