aboutsummaryrefslogtreecommitdiff
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
parent0baeb781e47e3334162c086dfbe198f79f435789 (diff)
Check checksum
-rw-r--r--enc.go6
-rw-r--r--enc_test.go1
-rw-r--r--file.go5
-rw-r--r--file_test.go1
-rw-r--r--pub_test.go1
-rw-r--r--sig_test.go1
6 files changed, 6 insertions, 9 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
}
diff --git a/enc_test.go b/enc_test.go
index a6b1c2b..5af09d4 100644
--- a/enc_test.go
+++ b/enc_test.go
@@ -10,7 +10,6 @@ var b64enc = []byte(`RWRCSwAAAACzJBN2gC5//jVvDiV76rs4m2aKXkljqDpbOC0bBf7abZhV/Zy
func TestUnmarshalEnc(t *testing.T) {
v := new(EncKey)
v.Unmarshal(b64enc)
- t.Logf("%+v", v)
out, _ := v.Marshal()
if !bytes.Equal(b64enc, out) {
t.Errorf("expected %v, got %v", b64enc, out)
diff --git a/file.go b/file.go
index 795dda0..4f3d449 100644
--- a/file.go
+++ b/file.go
@@ -11,11 +11,6 @@ import (
"strings"
)
-type B64 interface {
- Marshal() ([]byte, error)
- Unmarshal([]byte) error
-}
-
type File struct {
Comment string
B64 []byte
diff --git a/file_test.go b/file_test.go
index 1f39988..e3a8bbb 100644
--- a/file_test.go
+++ b/file_test.go
@@ -17,7 +17,6 @@ func TestParseFile(t *testing.T) {
if err != nil {
t.Error(err)
}
- t.Log(f)
buf := new(bytes.Buffer)
f.Encode(buf)
t.Logf("%v", buf.String())
diff --git a/pub_test.go b/pub_test.go
index f47b1ed..e2e995a 100644
--- a/pub_test.go
+++ b/pub_test.go
@@ -10,7 +10,6 @@ var b64pub = []byte(`RWRbOC0bBf7abfanaXuTYfCa6+YO69Kxyz8RD5nL/3Ta7umY6iOwnBrG`)
func TestUnmarshalPub(t *testing.T) {
v := new(PubKey)
v.Unmarshal(b64pub)
- t.Logf("%+v", v)
out, _ := v.Marshal()
if !bytes.Equal(b64pub, out) {
t.Errorf("expected %v, got %v", b64pub, out)
diff --git a/sig_test.go b/sig_test.go
index 8547e2b..dc2d595 100644
--- a/sig_test.go
+++ b/sig_test.go
@@ -10,7 +10,6 @@ var b64sig = []byte(`RWRbOC0bBf7abaGwGtq45KLDK63tgcF7CO4qTZSlTKCSbZTYlDfFm/DISQ6
func TestUnmarshalSig(t *testing.T) {
v := new(Sig)
v.Unmarshal(b64sig)
- t.Logf("%+v", v)
out, _ := v.Marshal()
if !bytes.Equal(b64sig, out) {
t.Errorf("expected %v, got %v", b64sig, out)