From 4865ac3532b1d54cfe99209e5e430182313cc9a9 Mon Sep 17 00:00:00 2001 From: Dimitri Sokolyuk Date: Sat, 5 Aug 2017 14:58:31 +0200 Subject: kiss --- key/gen_test.go | 88 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 88 insertions(+) create mode 100644 key/gen_test.go (limited to 'key/gen_test.go') diff --git a/key/gen_test.go b/key/gen_test.go new file mode 100644 index 0000000..7f86b4e --- /dev/null +++ b/key/gen_test.go @@ -0,0 +1,88 @@ +package key + +import ( + "bytes" + "encoding" + "encoding/base64" + "testing" +) + +type testInterface interface { + encoding.BinaryUnmarshaler + encoding.BinaryMarshaler + Validate() error +} + +func TestKeys(t *testing.T) { + var testCases = []struct { + caption string + key testInterface + rawValue string + }{ + { + caption: "sig", + key: new(Sig), + rawValue: "RWRbOC0bBf7abaGwGtq45KLDK63tgcF7CO4qTZSlTKCSbZTYlDfFm/DISQ60u+/jEzrk22suvXXAEsxQTe2xUOfV90get1YRGQo=", + }, + { + caption: "pub", + key: new(Pub), + rawValue: "RWRbOC0bBf7abfanaXuTYfCa6+YO69Kxyz8RD5nL/3Ta7umY6iOwnBrG", + }, + { + caption: "sec", + key: new(Sec), + rawValue: "RWRCSwAAAACzJBN2gC5//jVvDiV76rs4m2aKXkljqDpbOC0bBf7abZhV/Zygr6b0KIbSI56JQutwzsQeouxnnHuVTZp3IW4M9qdpe5Nh8Jrr5g7r0rHLPxEPmcv/dNru6ZjqI7CcGsY=", + }, + } + for _, tc := range testCases { + t.Run(tc.caption, func(t *testing.T) { + raw, err := base64.StdEncoding.DecodeString(tc.rawValue) + if err != nil { + t.Fatal(err) + } + if err := tc.key.UnmarshalBinary(raw); err != nil { + t.Fatal(err) + } + if err := tc.key.Validate(); err != nil { + t.Fatal(err) + } + out, err := tc.key.MarshalBinary() + if err != nil { + t.Fatal(err) + } + if !bytes.Equal(raw, out) { + t.Errorf("want %v, got %v", raw, out) + } + }) + } +} + +type mocDeriver struct{} + +func (mocDeriver) Derive(_ []byte, _, length int) ([]byte, error) { + return make([]byte, length), nil +} + +func TestPublic(t *testing.T) { + pub, sec, err := Generate(mocDeriver{}) + if err != nil { + t.Fatal(err) + } + p := sec.Public() + if *p != *pub { + t.Errorf("got %v, want %v", p, pub) + } +} + +func TestSign(t *testing.T) { + pub, sec, err := Generate(mocDeriver{}) + if err != nil { + t.Fatal(err) + } + msg := []byte{} + sig := sec.Sign(msg) + if err := sig.Verify(msg, pub); err != nil { + t.Error(err) + } +} -- cgit v1.2.3