aboutsummaryrefslogtreecommitdiff
path: root/enc.go
diff options
context:
space:
mode:
authorDimitri Sokolyuk <demon@dim13.org>2016-09-18 16:57:20 +0200
committerDimitri Sokolyuk <demon@dim13.org>2016-09-18 16:57:20 +0200
commit12e5f9b5d1688e6c896801a15364c59dea5a301e (patch)
tree468fa956a264250bb4aba133bea7e2bfeed86817 /enc.go
parent0baeb781e47e3334162c086dfbe198f79f435789 (diff)
Check checksum
Diffstat (limited to 'enc.go')
-rw-r--r--enc.go6
1 files changed, 6 insertions, 0 deletions
diff --git a/enc.go b/enc.go
index 4e21662..f76123e 100644
--- a/enc.go
+++ b/enc.go
@@ -2,8 +2,10 @@ package main
import (
"bytes"
+ "crypto/sha512"
"encoding/base64"
"encoding/binary"
+ "errors"
"io"
"golang.org/x/crypto/ed25519"
@@ -29,6 +31,10 @@ func (v *EncKey) Unmarshal(b []byte) error {
io.ReadFull(dec, v.Checksum[:])
io.ReadFull(dec, v.KeyNum[:])
io.ReadFull(dec, v.SecKey[:])
+ sum := sha512.Sum512(v.SecKey[:])
+ if !bytes.Equal(sum[:len(v.Checksum)], v.Checksum[:]) {
+ return errors.New("checksum mismatch")
+ }
return nil
}