You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
58 lines
1.3 KiB
58 lines
1.3 KiB
// Copyright (c) 2013-2014 The btcsuite developers |
|
// Use of this source code is governed by an ISC |
|
// license that can be found in the LICENSE file. |
|
|
|
package btcec_test |
|
|
|
import ( |
|
"bytes" |
|
"testing" |
|
|
|
"github.com/btcsuite/btcd/btcec" |
|
) |
|
|
|
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 := btcec.PrivKeyFromBytes(btcec.S256(), test.key) |
|
|
|
_, err := btcec.ParsePubKey( |
|
pub.SerializeUncompressed(), btcec.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) |
|
} |
|
} |
|
}
|
|
|