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:
Gustav Simonsson
2015-01-25 02:07:20 +01:00
parent d792e95c21
commit 512ffa2bf4
7 changed files with 205 additions and 55 deletions

View File

@ -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:]
}