From 12e5f9b5d1688e6c896801a15364c59dea5a301e Mon Sep 17 00:00:00 2001 From: Dimitri Sokolyuk Date: Sun, 18 Sep 2016 16:57:20 +0200 Subject: Check checksum --- enc.go | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'enc.go') 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 } -- cgit v1.2.3