Merge pull request #4260 from filecoin-project/asr/wallet-abstract

Fix deletion of addresses from wallet
This commit is contained in:
Łukasz Magiera 2020-10-09 09:55:25 +02:00 committed by GitHub
commit e1792ffe4d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -110,14 +110,12 @@ func (w *Wallet) tryFind(addr address.Address) (types.KeyInfo, error) {
// We got an ErrKeyInfoNotFound error // We got an ErrKeyInfoNotFound error
// Try again, this time with the testnet prefix // Try again, this time with the testnet prefix
aChars := []rune(addr.String()) tAddress, err := swapMainnetForTestnetPrefix(addr.String())
prefixRunes := []rune(address.TestnetPrefix) if err != nil {
if len(prefixRunes) != 1 { return types.KeyInfo{}, err
return types.KeyInfo{}, xerrors.Errorf("unexpected prefix length: %d", len(prefixRunes))
} }
aChars[0] = prefixRunes[0] ki, err = w.keystore.Get(KNamePrefix + tAddress)
ki, err = w.keystore.Get(KNamePrefix + string(aChars))
if err != nil { if err != nil {
return types.KeyInfo{}, err return types.KeyInfo{}, err
} }
@ -291,6 +289,14 @@ func (w *Wallet) DeleteKey(addr address.Address) error {
return xerrors.Errorf("failed to delete key %s: %w", addr, err) return xerrors.Errorf("failed to delete key %s: %w", addr, err)
} }
tAddr, err := swapMainnetForTestnetPrefix(addr.String())
if err != nil {
return xerrors.Errorf("failed to swap prefixes: %w", err)
}
// TODO: Does this always error in the not-found case? Just ignoring an error return for now.
_ = w.keystore.Delete(KNamePrefix + tAddr)
return nil return nil
} }
@ -351,3 +357,14 @@ func ActSigType(typ string) crypto.SigType {
return 0 return 0
} }
} }
func swapMainnetForTestnetPrefix(addr string) (string, error) {
aChars := []rune(addr)
prefixRunes := []rune(address.TestnetPrefix)
if len(prefixRunes) != 1 {
return "", xerrors.Errorf("unexpected prefix length: %d", len(prefixRunes))
}
aChars[0] = prefixRunes[0]
return string(aChars), nil
}