mirror of
https://github.com/monero-project/monero.git
synced 2025-08-05 05:44:16 -04:00
wallet: allow adjusting number of rounds for the key derivation function
This commit is contained in:
parent
0dddfeacc9
commit
bcab579864
14 changed files with 76 additions and 52 deletions
|
@ -125,7 +125,7 @@ namespace hw {
|
|||
/* ======================================================================= */
|
||||
virtual bool get_public_address(cryptonote::account_public_address &pubkey) = 0;
|
||||
virtual bool get_secret_keys(crypto::secret_key &viewkey , crypto::secret_key &spendkey) = 0;
|
||||
virtual bool generate_chacha_key(const cryptonote::account_keys &keys, crypto::chacha_key &key) = 0;
|
||||
virtual bool generate_chacha_key(const cryptonote::account_keys &keys, crypto::chacha_key &key, uint64_t kdf_rounds) = 0;
|
||||
|
||||
/* ======================================================================= */
|
||||
/* SUB ADDRESS */
|
||||
|
|
|
@ -100,14 +100,14 @@ namespace hw {
|
|||
/* WALLET & ADDRESS */
|
||||
/* ======================================================================= */
|
||||
|
||||
bool device_default::generate_chacha_key(const cryptonote::account_keys &keys, crypto::chacha_key &key) {
|
||||
bool device_default::generate_chacha_key(const cryptonote::account_keys &keys, crypto::chacha_key &key, uint64_t kdf_rounds) {
|
||||
const crypto::secret_key &view_key = keys.m_view_secret_key;
|
||||
const crypto::secret_key &spend_key = keys.m_spend_secret_key;
|
||||
tools::scrubbed_arr<char, sizeof(view_key) + sizeof(spend_key) + 1> data;
|
||||
memcpy(data.data(), &view_key, sizeof(view_key));
|
||||
memcpy(data.data() + sizeof(view_key), &spend_key, sizeof(spend_key));
|
||||
data[sizeof(data) - 1] = CHACHA8_KEY_TAIL;
|
||||
crypto::generate_chacha_key(data.data(), sizeof(data), key);
|
||||
crypto::generate_chacha_key(data.data(), sizeof(data), key, kdf_rounds);
|
||||
return true;
|
||||
}
|
||||
bool device_default::get_public_address(cryptonote::account_public_address &pubkey) {
|
||||
|
|
|
@ -73,7 +73,7 @@ namespace hw {
|
|||
/* ======================================================================= */
|
||||
bool get_public_address(cryptonote::account_public_address &pubkey) override;
|
||||
bool get_secret_keys(crypto::secret_key &viewkey , crypto::secret_key &spendkey) override;
|
||||
bool generate_chacha_key(const cryptonote::account_keys &keys, crypto::chacha_key &key) override;
|
||||
bool generate_chacha_key(const cryptonote::account_keys &keys, crypto::chacha_key &key, uint64_t kdf_rounds) override;
|
||||
|
||||
/* ======================================================================= */
|
||||
/* SUB ADDRESS */
|
||||
|
|
|
@ -531,20 +531,20 @@ namespace hw {
|
|||
return true;
|
||||
}
|
||||
|
||||
bool device_ledger::generate_chacha_key(const cryptonote::account_keys &keys, crypto::chacha_key &key) {
|
||||
bool device_ledger::generate_chacha_key(const cryptonote::account_keys &keys, crypto::chacha_key &key, uint64_t kdf_rounds) {
|
||||
AUTO_LOCK_CMD();
|
||||
|
||||
#ifdef DEBUG_HWDEVICE
|
||||
crypto::chacha_key key_x;
|
||||
cryptonote::account_keys keys_x = hw::ledger::decrypt(keys);
|
||||
this->controle_device->generate_chacha_key(keys_x, key_x);
|
||||
this->controle_device->generate_chacha_key(keys_x, key_x, kdf_rounds);
|
||||
#endif
|
||||
|
||||
send_simple(INS_GET_CHACHA8_PREKEY);
|
||||
|
||||
char prekey[200];
|
||||
memmove(prekey, &this->buffer_recv[0], 200);
|
||||
crypto::generate_chacha_key_prehashed(&prekey[0], sizeof(prekey), key);
|
||||
crypto::generate_chacha_key_prehashed(&prekey[0], sizeof(prekey), key, kdf_rounds);
|
||||
|
||||
#ifdef DEBUG_HWDEVICE
|
||||
hw::ledger::check32("generate_chacha_key_prehashed", "key", (char*)key_x.data(), (char*)key.data());
|
||||
|
|
|
@ -156,7 +156,7 @@ namespace hw {
|
|||
/* ======================================================================= */
|
||||
bool get_public_address(cryptonote::account_public_address &pubkey) override;
|
||||
bool get_secret_keys(crypto::secret_key &viewkey , crypto::secret_key &spendkey) override;
|
||||
bool generate_chacha_key(const cryptonote::account_keys &keys, crypto::chacha_key &key) override;
|
||||
bool generate_chacha_key(const cryptonote::account_keys &keys, crypto::chacha_key &key, uint64_t kdf_rounds) override;
|
||||
|
||||
|
||||
/* ======================================================================= */
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue