aboutsummaryrefslogtreecommitdiff
path: root/src/crypto/chacha.h
diff options
context:
space:
mode:
authorRiccardo Spagni <ric@spagni.net>2018-03-14 16:04:10 +0200
committerRiccardo Spagni <ric@spagni.net>2018-03-14 16:04:10 +0200
commit102a51bcd48a3cd2cb794aab7dbe243393f155b3 (patch)
tree513aa5706a9ee849adab2f7cbe719de6741a8b43 /src/crypto/chacha.h
parentMerge pull request #3378 (diff)
parentwallet2: check_tx_key() shouldn't require hardware encryption (diff)
downloadmonero-102a51bcd48a3cd2cb794aab7dbe243393f155b3.tar.xz
Merge pull request #3350
4405e4fc wallet2: check_tx_key() shouldn't require hardware encryption (stoffu) 7dfa5e9e chacha: call prehashed version explicitly as generate_chacha_key_prehashed hash: add prehashed version cn_slow_hash_prehashed slow-hash: let cn_slow_hash take 4th parameter for deciding prehashed or not slow-hash: add support for prehashed version for the other 3 platforms (stoffu) b2d23b18 crypto: revert odd namespace changes made in #3303 (stoffu) 8705beaf keypair::generate: always require hw::device to avoid possible mistake (stoffu) 27a196b1 device: untangle cyclic depenency (stoffu) c9b38b47 device: made function prototypes consistent with pre-#3303 codebase (stoffu)
Diffstat (limited to '')
-rw-r--r--src/crypto/chacha.h11
1 files changed, 9 insertions, 2 deletions
diff --git a/src/crypto/chacha.h b/src/crypto/chacha.h
index 22da53bd0..7a120931a 100644
--- a/src/crypto/chacha.h
+++ b/src/crypto/chacha.h
@@ -69,10 +69,17 @@ namespace crypto {
chacha20(data, length, key.data(), reinterpret_cast<const uint8_t*>(&iv), cipher);
}
- inline void generate_chacha_key(const void *data, size_t size, chacha_key& key, int cn_variant = 0, bool prehashed=false) {
+ inline void generate_chacha_key(const void *data, size_t size, chacha_key& key) {
static_assert(sizeof(chacha_key) <= sizeof(hash), "Size of hash must be at least that of chacha_key");
tools::scrubbed_arr<char, HASH_SIZE> pwd_hash;
- crypto::cn_slow_hash_pre(data, size, pwd_hash.data(), cn_variant, prehashed);
+ crypto::cn_slow_hash(data, size, pwd_hash.data(), 0/*variant*/, 0/*prehashed*/);
+ memcpy(&key, pwd_hash.data(), sizeof(key));
+ }
+
+ inline void generate_chacha_key_prehashed(const void *data, size_t size, chacha_key& key) {
+ static_assert(sizeof(chacha_key) <= sizeof(hash), "Size of hash must be at least that of chacha_key");
+ tools::scrubbed_arr<char, HASH_SIZE> pwd_hash;
+ crypto::cn_slow_hash(data, size, pwd_hash.data(), 0/*variant*/, 1/*prehashed*/);
memcpy(&key, pwd_hash.data(), sizeof(key));
}