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)
This commit is contained in:
Riccardo Spagni 2016-02-13 19:51:30 +02:00
commit 999992a64b
No known key found for this signature in database
GPG key ID: 55432DF31CCD4FCD

View file

@ -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 * @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) STATIC INLINE int check_aes_hw(void)
{ {
int cpuid_results[4]; int cpuid_results[4];
@ -509,7 +529,7 @@ void cn_slow_hash(const void *data, size_t length, char *hash)
size_t i, j; size_t i, j;
uint64_t *p = NULL; uint64_t *p = NULL;
oaes_ctx *aes_ctx; 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 *) = static void (*const extra_hashes[4])(const void *, size_t, char *) =
{ {