github.com/status-im/status-go@v1.1.0/account/generator/utils_test.go (about)

     1  package generator
     2  
     3  import (
     4  	"testing"
     5  
     6  	"github.com/stretchr/testify/assert"
     7  	"github.com/stretchr/testify/require"
     8  
     9  	"github.com/status-im/status-go/eth-node/types"
    10  	"github.com/status-im/status-go/extkeys"
    11  )
    12  
    13  func generateTestKey(t *testing.T) *extkeys.ExtendedKey {
    14  	mnemonic := extkeys.NewMnemonic()
    15  	mnemonicPhrase, err := mnemonic.MnemonicPhrase(extkeys.EntropyStrength128, extkeys.EnglishLanguage)
    16  	require.NoError(t, err)
    17  
    18  	masterExtendedKey, err := extkeys.NewMaster(mnemonic.MnemonicSeed(mnemonicPhrase, ""))
    19  	require.NoError(t, err)
    20  
    21  	return masterExtendedKey
    22  }
    23  
    24  func TestValidateKeystoreExtendedKey(t *testing.T) {
    25  	extendedKey1 := generateTestKey(t)
    26  	extendedKey2 := generateTestKey(t)
    27  
    28  	// new keystore file format
    29  	key := &types.Key{
    30  		PrivateKey:  extendedKey1.ToECDSA(),
    31  		ExtendedKey: extendedKey1,
    32  	}
    33  	assert.NoError(t, ValidateKeystoreExtendedKey(key))
    34  
    35  	// old keystore file format where the extended key was
    36  	// from another derivation path and not the same of the private key
    37  	oldKey := &types.Key{
    38  		PrivateKey:  extendedKey1.ToECDSA(),
    39  		ExtendedKey: extendedKey2,
    40  	}
    41  	assert.Error(t, ValidateKeystoreExtendedKey(oldKey))
    42  
    43  	// normal key where we don't have an extended key
    44  	normalKey := &types.Key{
    45  		PrivateKey:  extendedKey1.ToECDSA(),
    46  		ExtendedKey: nil,
    47  	}
    48  	assert.NoError(t, ValidateKeystoreExtendedKey(normalKey))
    49  }