aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRiccardo Spagni <ric@spagni.net>2016-02-13 19:51:30 +0200
committerRiccardo Spagni <ric@spagni.net>2016-02-13 19:51:30 +0200
commit999992a64b53c7834b5650ea1aaa28bb74d42e36 (patch)
tree41229ea34e01e4f46f50df2b2cbddeba592f44c2
parentMerge pull request #651 (diff)
parentcrypto: only check MONERO_USE_SOFTWARE_AES once (diff)
downloadmonero-999992a64b53c7834b5650ea1aaa28bb74d42e36.tar.xz
Merge pull request #652
c7e6b77 crypto: only check MONERO_USE_SOFTWARE_AES once (moneromooo-monero) 74aef21 crypto: use software AES based on the MONERO_USE_SOFTWARE_AES env var (moneromooo-monero)
-rw-r--r--src/crypto/slow-hash.c22
1 files changed, 21 insertions, 1 deletions
diff --git a/src/crypto/slow-hash.c b/src/crypto/slow-hash.c
index 903a3792f..4efa8af6c 100644
--- a/src/crypto/slow-hash.c
+++ b/src/crypto/slow-hash.c
@@ -187,6 +187,26 @@ 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)
+{
+ static int use = -1;
+
+ if (use != -1)
+ return use;
+
+ const char *env = getenv("MONERO_USE_SOFTWARE_AES");
+ if (!env) {
+ use = 0;
+ }
+ else if (!strcmp(env, "0") || !strcmp(env, "no")) {
+ use = 0;
+ }
+ else {
+ use = 1;
+ }
+ return use;
+}
+
STATIC INLINE int check_aes_hw(void)
{
int cpuid_results[4];
@@ -509,7 +529,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 *) =
{