fdfa07b0be
Putting the test code in the same package makes it easier for forks since they don't have to change the import paths as much and it also gets rid of the need for internal_test.go to bridge. Also, remove the exception from the lint checks about returning the unexported type since it is no longer required.
55 lines
1.2 KiB
Go
55 lines
1.2 KiB
Go
// Copyright (c) 2013-2016 The btcsuite developers
|
|
// Use of this source code is governed by an ISC
|
|
// license that can be found in the LICENSE file.
|
|
|
|
package btcec
|
|
|
|
import (
|
|
"bytes"
|
|
"testing"
|
|
)
|
|
|
|
func TestPrivKeys(t *testing.T) {
|
|
tests := []struct {
|
|
name string
|
|
key []byte
|
|
}{
|
|
{
|
|
name: "check curve",
|
|
key: []byte{
|
|
0xea, 0xf0, 0x2c, 0xa3, 0x48, 0xc5, 0x24, 0xe6,
|
|
0x39, 0x26, 0x55, 0xba, 0x4d, 0x29, 0x60, 0x3c,
|
|
0xd1, 0xa7, 0x34, 0x7d, 0x9d, 0x65, 0xcf, 0xe9,
|
|
0x3c, 0xe1, 0xeb, 0xff, 0xdc, 0xa2, 0x26, 0x94,
|
|
},
|
|
},
|
|
}
|
|
|
|
for _, test := range tests {
|
|
priv, pub := PrivKeyFromBytes(S256(), test.key)
|
|
|
|
_, err := ParsePubKey(pub.SerializeUncompressed(), S256())
|
|
if err != nil {
|
|
t.Errorf("%s privkey: %v", test.name, err)
|
|
continue
|
|
}
|
|
|
|
hash := []byte{0x0, 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9}
|
|
sig, err := priv.Sign(hash)
|
|
if err != nil {
|
|
t.Errorf("%s could not sign: %v", test.name, err)
|
|
continue
|
|
}
|
|
|
|
if !sig.Verify(hash, pub) {
|
|
t.Errorf("%s could not verify: %v", test.name, err)
|
|
continue
|
|
}
|
|
|
|
serializedKey := priv.Serialize()
|
|
if !bytes.Equal(serializedKey, test.key) {
|
|
t.Errorf("%s unexpected serialized bytes - got: %x, "+
|
|
"want: %x", test.name, serializedKey, test.key)
|
|
}
|
|
}
|
|
}
|