aboutsummaryrefslogtreecommitdiff
path: root/sig.go
diff options
context:
space:
mode:
authorDimitri Sokolyuk <demon@dim13.org>2016-09-18 13:23:50 +0200
committerDimitri Sokolyuk <demon@dim13.org>2016-09-18 13:23:50 +0200
commitab444fef442808f7ff41f70992f19f4b2417841d (patch)
tree7202ce2b0e4ca9ea52eaed908a3eb4e512592017 /sig.go
parent753387164ce9d0b610ceae93830cfe1f26f0fdd2 (diff)
ReadFull
Diffstat (limited to 'sig.go')
-rw-r--r--sig.go34
1 files changed, 34 insertions, 0 deletions
diff --git a/sig.go b/sig.go
new file mode 100644
index 0000000..5abea82
--- /dev/null
+++ b/sig.go
@@ -0,0 +1,34 @@
+package main
+
+import (
+ "bytes"
+ "encoding/base64"
+ "io"
+
+ "golang.org/x/crypto/ed25519"
+)
+
+type Sig struct {
+ PKAlg [2]byte
+ KeyNum [KeyNumLen]byte
+ Sig [ed25519.SignatureSize]byte
+}
+
+func (v *Sig) Unmarshal(b []byte) error {
+ buf := bytes.NewBuffer(b)
+ dec := base64.NewDecoder(base64.StdEncoding, buf)
+ io.ReadFull(dec, v.PKAlg[:])
+ io.ReadFull(dec, v.KeyNum[:])
+ io.ReadFull(dec, v.Sig[:])
+ return nil
+}
+
+func (v *Sig) Marshal() ([]byte, error) {
+ buf := new(bytes.Buffer)
+ enc := base64.NewEncoder(base64.StdEncoding, buf)
+ enc.Write(v.PKAlg[:])
+ enc.Write(v.KeyNum[:])
+ enc.Write(v.Sig[:])
+ enc.Close()
+ return buf.Bytes(), nil
+}