wallet JSON update for non-deterministic wallet data

wallet2::store_keys() and wallet2::load_keys() should only use the JSON
attribute "seed_language" when applicable. That is only for
deterministic wallets.

 - store_keys()  don't add JSON attribute "seed_language" if
   seed_language is empty

 - load_keys()  don't call set_seed_language if JSON attribute
   "seed_language" not present
This commit is contained in:
warptangent 2014-12-06 03:09:46 -08:00
parent 4c6230d6cf
commit f9822c483e

View File

@ -486,8 +486,11 @@ bool wallet2::store_keys(const std::string& keys_file_name, const std::string& p
rapidjson::Value value(rapidjson::kStringType); rapidjson::Value value(rapidjson::kStringType);
value.SetString(account_data.c_str(), account_data.length()); value.SetString(account_data.c_str(), account_data.length());
json.AddMember("key_data", value, json.GetAllocator()); json.AddMember("key_data", value, json.GetAllocator());
value.SetString(seed_language.c_str(), seed_language.length()); if (!seed_language.empty())
json.AddMember("seed_language", value, json.GetAllocator()); {
value.SetString(seed_language.c_str(), seed_language.length());
json.AddMember("seed_language", value, json.GetAllocator());
}
// Serialize the JSON object // Serialize the JSON object
rapidjson::StringBuffer buffer; rapidjson::StringBuffer buffer;
@ -553,8 +556,11 @@ void wallet2::load_keys(const std::string& keys_file_name, const std::string& pa
{ {
account_data = std::string(json["key_data"].GetString(), json["key_data"].GetString() + account_data = std::string(json["key_data"].GetString(), json["key_data"].GetString() +
json["key_data"].GetStringLength()); json["key_data"].GetStringLength());
set_seed_language(std::string(json["seed_language"].GetString(), json["seed_language"].GetString() + if (json.HasMember("seed_language"))
json["seed_language"].GetStringLength())); {
set_seed_language(std::string(json["seed_language"].GetString(), json["seed_language"].GetString() +
json["seed_language"].GetStringLength()));
}
} }
const cryptonote::account_keys& keys = m_account.get_keys(); const cryptonote::account_keys& keys = m_account.get_keys();