aboutsummaryrefslogtreecommitdiff
path: root/keys.go
diff options
context:
space:
mode:
Diffstat (limited to 'keys.go')
-rw-r--r--keys.go23
1 files changed, 23 insertions, 0 deletions
diff --git a/keys.go b/keys.go
index 0248a4b..896f1e8 100644
--- a/keys.go
+++ b/keys.go
@@ -3,6 +3,8 @@ package main
import (
"bytes"
"crypto/sha512"
+ "encoding/base64"
+ "encoding/binary"
"dim13.org/signify/bhash"
@@ -55,3 +57,24 @@ func (v *EncKey) IsValid(pass []byte) bool {
sum := sha512.Sum512(v.SecKey[:])
return bytes.Equal(sum[:len(v.Checksum)], v.Checksum[:])
}
+
+func Unmarshal(v interface{}, b []byte) error {
+ buf := bytes.NewReader(b)
+ dec := base64.NewDecoder(base64.StdEncoding, buf)
+ if err := binary.Read(dec, binary.BigEndian, v); err != nil {
+ return err
+ }
+ return nil
+}
+
+func Marshal(v interface{}) ([]byte, error) {
+ buf := new(bytes.Buffer)
+ enc := base64.NewEncoder(base64.StdEncoding, buf)
+ if err := binary.Write(enc, binary.BigEndian, v); err != nil {
+ return nil, err
+ }
+ if err := enc.Close(); err != nil {
+ return nil, err
+ }
+ return buf.Bytes(), nil
+}