aboutsummaryrefslogtreecommitdiff
path: root/src/crypto
diff options
context:
space:
mode:
Diffstat (limited to 'src/crypto')
-rw-r--r--src/crypto/blake256.c9
-rw-r--r--src/crypto/rx-slow-hash.c21
2 files changed, 19 insertions, 11 deletions
diff --git a/src/crypto/blake256.c b/src/crypto/blake256.c
index 1e305b3a6..bb2c5fb40 100644
--- a/src/crypto/blake256.c
+++ b/src/crypto/blake256.c
@@ -40,6 +40,7 @@
#include <string.h>
#include <stdio.h>
#include <stdint.h>
+#include <memwipe.h>
#include "blake256.h"
#define U8TO32(p) \
@@ -277,7 +278,7 @@ void hmac_blake256_init(hmac_state *S, const uint8_t *_key, uint64_t keylen) {
}
blake256_update(&S->outer, pad, 512);
- memset(keyhash, 0, 32);
+ memwipe(keyhash, sizeof(keyhash));
}
// keylen = number of bytes
@@ -307,7 +308,7 @@ void hmac_blake224_init(hmac_state *S, const uint8_t *_key, uint64_t keylen) {
}
blake224_update(&S->outer, pad, 512);
- memset(keyhash, 0, 32);
+ memwipe(keyhash, sizeof(keyhash));
}
// datalen = number of bits
@@ -327,7 +328,7 @@ void hmac_blake256_final(hmac_state *S, uint8_t *digest) {
blake256_final(&S->inner, ihash);
blake256_update(&S->outer, ihash, 256);
blake256_final(&S->outer, digest);
- memset(ihash, 0, 32);
+ memwipe(ihash, sizeof(ihash));
}
void hmac_blake224_final(hmac_state *S, uint8_t *digest) {
@@ -335,7 +336,7 @@ void hmac_blake224_final(hmac_state *S, uint8_t *digest) {
blake224_final(&S->inner, ihash);
blake224_update(&S->outer, ihash, 224);
blake224_final(&S->outer, digest);
- memset(ihash, 0, 32);
+ memwipe(ihash, sizeof(ihash));
}
// keylen = number of bytes; inlen = number of bytes
diff --git a/src/crypto/rx-slow-hash.c b/src/crypto/rx-slow-hash.c
index a7a459ad3..969bf8a0f 100644
--- a/src/crypto/rx-slow-hash.c
+++ b/src/crypto/rx-slow-hash.c
@@ -62,6 +62,7 @@ static CTHR_MUTEX_TYPE rx_dataset_mutex = CTHR_MUTEX_INIT;
static rx_state rx_s[2] = {{CTHR_MUTEX_INIT,{0},0,0},{CTHR_MUTEX_INIT,{0},0,0}};
static randomx_dataset *rx_dataset;
+static int rx_dataset_nomem;
static uint64_t rx_dataset_height;
static THREADV randomx_vm *rx_vm = NULL;
@@ -246,20 +247,25 @@ void rx_slow_hash(const uint64_t mainheight, const uint64_t seedheight, const ch
}
if (miners) {
CTHR_MUTEX_LOCK(rx_dataset_mutex);
- if (rx_dataset == NULL) {
- rx_dataset = randomx_alloc_dataset(RANDOMX_FLAG_LARGE_PAGES);
+ if (!rx_dataset_nomem) {
if (rx_dataset == NULL) {
- mdebug(RX_LOGCAT, "Couldn't use largePages for RandomX dataset");
- rx_dataset = randomx_alloc_dataset(RANDOMX_FLAG_DEFAULT);
+ rx_dataset = randomx_alloc_dataset(RANDOMX_FLAG_LARGE_PAGES);
+ if (rx_dataset == NULL) {
+ mdebug(RX_LOGCAT, "Couldn't use largePages for RandomX dataset");
+ rx_dataset = randomx_alloc_dataset(RANDOMX_FLAG_DEFAULT);
+ }
+ if (rx_dataset != NULL)
+ rx_initdata(rx_sp->rs_cache, miners, seedheight);
}
- if (rx_dataset != NULL)
- rx_initdata(rx_sp->rs_cache, miners, seedheight);
}
if (rx_dataset != NULL)
flags |= RANDOMX_FLAG_FULL_MEM;
else {
miners = 0;
- mwarning(RX_LOGCAT, "Couldn't allocate RandomX dataset for miner");
+ if (!rx_dataset_nomem) {
+ rx_dataset_nomem = 1;
+ mwarning(RX_LOGCAT, "Couldn't allocate RandomX dataset for miner");
+ }
}
CTHR_MUTEX_UNLOCK(rx_dataset_mutex);
}
@@ -309,5 +315,6 @@ void rx_stop_mining(void) {
rx_dataset = NULL;
randomx_release_dataset(rd);
}
+ rx_dataset_nomem = 0;
CTHR_MUTEX_UNLOCK(rx_dataset_mutex);
}