X-Git-Url: https://git.novaco.in/?a=blobdiff_plain;f=src%2Fwalletdb.cpp;h=64168ee80a2e8c5bb777d525c384a85e3e2e4afb;hb=98d23c1aaf2bfe1b1133c0f6adf9bceb586f31b2;hp=050d2eeb1a2e3b968d0094e1daecb6b196a2fd91;hpb=aab109cb39615ef4bc7a108cb7071c7c2f1dae65;p=novacoin.git diff --git a/src/walletdb.cpp b/src/walletdb.cpp index 050d2ee..64168ee 100644 --- a/src/walletdb.cpp +++ b/src/walletdb.cpp @@ -220,6 +220,7 @@ ReadKeyValue(CWallet* pwallet, CDataStream& ssKey, CDataStream& ssValue, // Taking advantage of the fact that pair serialization // is just the two items serialized one after the other ssKey >> strType; + if (strType == "name") { string strAddress; @@ -301,6 +302,36 @@ ReadKeyValue(CWallet* pwallet, CDataStream& ssKey, CDataStream& ssValue, // so set the wallet birthday to the beginning of time. pwallet->nTimeFirstKey = 1; } + else if (strType == "malpair") + { + string strKey, strKeyView; + + CMalleableKey mKey; + CMalleableKeyView keyView; + + ssKey >> strKeyView; + ssValue >> strKey; + + keyView.SetString(strKeyView); + mKey.SetString(strKey); + + if (mKey.IsNull()) + { + strErr = "Error reading wallet database: CMalleableKey is corrupt"; + return false; + } + if (mKey.GetID() != keyView.GetID()) + { + strErr = "Error reading wallet database: CMalleableKey view inconsistency"; + return false; + } + + if (!pwallet->LoadMalleableKey(mKey)) + { + strErr = "Error reading wallet database: LoadMalleableKey failed"; + return false; + } + } else if (strType == "key" || strType == "wkey") { vector vchPubKey; @@ -385,6 +416,20 @@ ReadKeyValue(CWallet* pwallet, CDataStream& ssKey, CDataStream& ssValue, } wss.fIsEncrypted = true; } + else if (strType == "malmeta") + { + string strKeyView; + ssKey >> strKeyView; + + CMalleableKeyView keyView; + keyView.SetString(strKeyView); + + CKeyMetadata keyMeta; + ssValue >> keyMeta; + wss.nKeyMeta++; + + pwallet->LoadMalleableKeyMetadata(keyView, keyMeta); + } else if (strType == "keymeta") { CPubKey vchPubKey; @@ -452,7 +497,7 @@ ReadKeyValue(CWallet* pwallet, CDataStream& ssKey, CDataStream& ssValue, static bool IsKeyType(string strType) { return (strType== "key" || strType == "wkey" || - strType == "mkey" || strType == "ckey"); + strType == "mkey" || strType == "ckey" || strType == "malpair"); } DBErrors CWalletDB::LoadWallet(CWallet* pwallet)