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 }