Add accounts package and refactor key stores
* Add initial UserAccount and AccountManager structs * Add NewAccount, Sign and Accounts functions * Refactor key stores to use key address as main identifier while keeping the UUID. * Use key address as file/dir names instead of UUID
This commit is contained in:
@ -134,7 +134,7 @@ func ImportPreSaleKey(keyStore KeyStore2, keyJSON []byte, password string) (*Key
|
||||
return nil, err
|
||||
}
|
||||
id := uuid.NewRandom()
|
||||
key.Id = &id
|
||||
key.Id = id
|
||||
err = keyStore.StoreKey(key, password)
|
||||
return key, err
|
||||
}
|
||||
@ -167,9 +167,10 @@ func decryptPreSaleKey(fileContent []byte, password string) (key *Key, err error
|
||||
ecKey := ToECDSA(ethPriv)
|
||||
key = &Key{
|
||||
Id: nil,
|
||||
Address: pubkeyToAddress(ecKey.PublicKey),
|
||||
PrivateKey: ecKey,
|
||||
}
|
||||
derivedAddr := ethutil.Bytes2Hex(key.Address())
|
||||
derivedAddr := ethutil.Bytes2Hex(key.Address)
|
||||
expectedAddr := preSaleKeyStruct.EthAddr
|
||||
if derivedAddr != expectedAddr {
|
||||
err = errors.New("decrypted addr not equal to expected addr")
|
||||
@ -223,3 +224,8 @@ func PKCS7Unpad(in []byte) []byte {
|
||||
}
|
||||
return in[:len(in)-int(padding)]
|
||||
}
|
||||
|
||||
func pubkeyToAddress(p ecdsa.PublicKey) []byte {
|
||||
pubBytes := FromECDSAPub(&p)
|
||||
return Sha3(pubBytes[1:])[12:]
|
||||
}
|
||||
|
Reference in New Issue
Block a user