Merge pull request #3511
0beb94f3
device: fix endianess dependence on subaddress secret key generation (moneromooo-monero)
This commit is contained in:
commit
3a9290ba6f
|
@ -31,6 +31,7 @@
|
||||||
|
|
||||||
|
|
||||||
#include "device_default.hpp"
|
#include "device_default.hpp"
|
||||||
|
#include "common/int-util.h"
|
||||||
#include "cryptonote_basic/account.h"
|
#include "cryptonote_basic/account.h"
|
||||||
#include "cryptonote_basic/subaddress_index.h"
|
#include "cryptonote_basic/subaddress_index.h"
|
||||||
#include "ringct/rctOps.h"
|
#include "ringct/rctOps.h"
|
||||||
|
@ -195,10 +196,13 @@ namespace hw {
|
||||||
|
|
||||||
crypto::secret_key device_default::get_subaddress_secret_key(const crypto::secret_key &a, const cryptonote::subaddress_index &index) {
|
crypto::secret_key device_default::get_subaddress_secret_key(const crypto::secret_key &a, const cryptonote::subaddress_index &index) {
|
||||||
const char prefix[] = "SubAddr";
|
const char prefix[] = "SubAddr";
|
||||||
char data[sizeof(prefix) + sizeof(crypto::secret_key) + sizeof(cryptonote::subaddress_index)];
|
char data[sizeof(prefix) + sizeof(crypto::secret_key) + 2 * sizeof(uint32_t)];
|
||||||
memcpy(data, prefix, sizeof(prefix));
|
memcpy(data, prefix, sizeof(prefix));
|
||||||
memcpy(data + sizeof(prefix), &a, sizeof(crypto::secret_key));
|
memcpy(data + sizeof(prefix), &a, sizeof(crypto::secret_key));
|
||||||
memcpy(data + sizeof(prefix) + sizeof(crypto::secret_key), &index, sizeof(cryptonote::subaddress_index));
|
uint32_t idx = SWAP32LE(index.major);
|
||||||
|
memcpy(data + sizeof(prefix) + sizeof(crypto::secret_key), &idx, sizeof(uint32_t));
|
||||||
|
idx = SWAP32LE(index.minor);
|
||||||
|
memcpy(data + sizeof(prefix) + sizeof(crypto::secret_key) + sizeof(uint32_t), &idx, sizeof(uint32_t));
|
||||||
crypto::secret_key m;
|
crypto::secret_key m;
|
||||||
crypto::hash_to_scalar(data, sizeof(data), m);
|
crypto::hash_to_scalar(data, sizeof(data), m);
|
||||||
return m;
|
return m;
|
||||||
|
|
Loading…
Reference in New Issue