|
|
- package crypto
-
- import (
- "fmt"
- "testing"
-
- "github.com/stretchr/testify/assert"
- "github.com/stretchr/testify/require"
-
- wire "github.com/tendermint/go-wire"
- )
-
- type BadKey struct {
- PrivKeyEd25519
- }
-
- // Wrap fulfils interface for PrivKey struct
- func (pk BadKey) Wrap() PrivKey {
- return PrivKey{pk}
- }
-
- func (pk BadKey) Bytes() []byte {
- return wire.BinaryBytes(pk.Wrap())
- }
-
- func (pk BadKey) ValidateKey() error {
- return fmt.Errorf("fuggly key")
- }
-
- func init() {
- PrivKeyMapper.
- RegisterImplementation(BadKey{}, "bad", 0x66)
- }
-
- func TestReadPrivKey(t *testing.T) {
- assert, require := assert.New(t), require.New(t)
-
- // garbage in, garbage out
- garbage := []byte("hjgewugfbiewgofwgewr")
- _, err := PrivKeyFromBytes(garbage)
- require.Error(err)
-
- edKey := GenPrivKeyEd25519()
- badKey := BadKey{edKey}
-
- cases := []struct {
- key PrivKey
- valid bool
- }{
- {edKey.Wrap(), true},
- {badKey.Wrap(), false},
- }
-
- for i, tc := range cases {
- data := tc.key.Bytes()
- key, err := PrivKeyFromBytes(data)
- if tc.valid {
- assert.NoError(err, "%d", i)
- assert.Equal(tc.key, key, "%d", i)
- } else {
- assert.Error(err, "%d: %#v", i, key)
- }
- }
-
- }
|