wallet: add encrypted seed functionality

This uses luigi1111's CN_Add method.
See https://xmr.llcoins.net for details.
This commit is contained in:
moneromooo-monero 2017-08-06 16:51:40 +01:00
parent 02e5dcd2fa
commit 651baaec46
No known key found for this signature in database
GPG key ID: 686F07454D6CEFC3
6 changed files with 63 additions and 5 deletions

View file

@ -869,4 +869,21 @@ namespace cryptonote
block_hashes_calculated = block_hashes_calculated_count;
block_hashes_cached = block_hashes_cached_count;
}
//---------------------------------------------------------------
crypto::secret_key encrypt_key(const crypto::secret_key &key, const std::string &passphrase)
{
crypto::hash hash;
crypto::cn_slow_hash(passphrase.data(), passphrase.size(), hash);
sc_add((unsigned char*)key.data, (const unsigned char*)key.data, (const unsigned char*)hash.data);
return key;
}
//---------------------------------------------------------------
crypto::secret_key decrypt_key(const crypto::secret_key &key, const std::string &passphrase)
{
crypto::hash hash;
crypto::cn_slow_hash(passphrase.data(), passphrase.size(), hash);
sc_sub((unsigned char*)key.data, (const unsigned char*)key.data, (const unsigned char*)hash.data);
return key;
}
}

View file

@ -212,6 +212,8 @@ namespace cryptonote
bool is_valid_decomposed_amount(uint64_t amount);
void get_hash_stats(uint64_t &tx_hashes_calculated, uint64_t &tx_hashes_cached, uint64_t &block_hashes_calculated, uint64_t & block_hashes_cached);
crypto::secret_key encrypt_key(const crypto::secret_key &key, const std::string &passphrase);
crypto::secret_key decrypt_key(const crypto::secret_key &key, const std::string &passphrase);
#define CHECKED_GET_SPECIFIC_VARIANT(variant_var, specific_type, variable_name, fail_return_val) \
CHECK_AND_ASSERT_MES(variant_var.type() == typeid(specific_type), fail_return_val, "wrong variant type: " << variant_var.type().name() << ", expected " << typeid(specific_type).name()); \
specific_type& variable_name = boost::get<specific_type>(variant_var);