diff options
author | moneromooo-monero <moneromooo-monero@users.noreply.github.com> | 2016-02-09 09:29:12 +0000 |
---|---|---|
committer | moneromooo-monero <moneromooo-monero@users.noreply.github.com> | 2016-02-09 09:30:34 +0000 |
commit | 74aef213fe7971cc5374b46f9129f281fa6ee456 (patch) | |
tree | 60844dd2ab96f7508d1a907caa2f0f80a12abbcd | |
parent | Merge pull request #650 (diff) | |
download | monero-74aef213fe7971cc5374b46f9129f281fa6ee456.tar.xz |
crypto: use software AES based on the MONERO_USE_SOFTWARE_AES env var
Setting to no or 0 also works. If set, any other value enables it.
Useful for running with valgrind in cases where it fails at
properly implementing AES-NI.
-rw-r--r-- | src/crypto/slow-hash.c | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/src/crypto/slow-hash.c b/src/crypto/slow-hash.c index 903a3792f..faaf127ce 100644 --- a/src/crypto/slow-hash.c +++ b/src/crypto/slow-hash.c @@ -187,6 +187,16 @@ STATIC INLINE void xor_blocks(uint8_t *a, const uint8_t *b) * @return true if the CPU supports AES, false otherwise */ +STATIC INLINE int force_software_aes(void) +{ + const char *env = getenv("MONERO_USE_SOFTWARE_AES"); + if (!env) + return 0; + if (!strcmp(env, "0") || !strcmp(env, "no")) + return 0; + return 1; +} + STATIC INLINE int check_aes_hw(void) { int cpuid_results[4]; @@ -509,7 +519,7 @@ void cn_slow_hash(const void *data, size_t length, char *hash) size_t i, j; uint64_t *p = NULL; oaes_ctx *aes_ctx; - int useAes = check_aes_hw(); + int useAes = !force_software_aes() && check_aes_hw(); static void (*const extra_hashes[4])(const void *, size_t, char *) = { |