Add RandomX hashing wrapper
This commit is contained in:
parent
285d68b78a
commit
1a927ccb44
3 changed files with 61 additions and 0 deletions
|
|
@ -550,6 +550,8 @@ libvexta_consensus_a_SOURCES = \
|
||||||
crypto/jh.cpp \
|
crypto/jh.cpp \
|
||||||
crypto/keccak.cpp \
|
crypto/keccak.cpp \
|
||||||
crypto/luffa.cpp \
|
crypto/luffa.cpp \
|
||||||
|
crypto/randomx_hash.cpp \
|
||||||
|
crypto/randomx_hash.h \
|
||||||
crypto/shavite.cpp \
|
crypto/shavite.cpp \
|
||||||
crypto/simd.cpp \
|
crypto/simd.cpp \
|
||||||
crypto/hashodo.h \
|
crypto/hashodo.h \
|
||||||
|
|
|
||||||
35
src/crypto/randomx_hash.cpp
Normal file
35
src/crypto/randomx_hash.cpp
Normal file
|
|
@ -0,0 +1,35 @@
|
||||||
|
#include <crypto/randomx_hash.h>
|
||||||
|
|
||||||
|
#include <randomx.h>
|
||||||
|
|
||||||
|
bool VextaRandomXHash(
|
||||||
|
const void* input,
|
||||||
|
std::size_t input_size,
|
||||||
|
const void* key,
|
||||||
|
std::size_t key_size,
|
||||||
|
uint8_t output[VEXTA_RANDOMX_HASH_SIZE])
|
||||||
|
{
|
||||||
|
randomx_cache* cache = randomx_alloc_cache(RANDOMX_FLAG_DEFAULT);
|
||||||
|
if (cache == nullptr) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
randomx_init_cache(cache, key, key_size);
|
||||||
|
|
||||||
|
randomx_vm* vm = randomx_create_vm(
|
||||||
|
RANDOMX_FLAG_DEFAULT,
|
||||||
|
cache,
|
||||||
|
nullptr);
|
||||||
|
|
||||||
|
if (vm == nullptr) {
|
||||||
|
randomx_release_cache(cache);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
randomx_calculate_hash(vm, input, input_size, output);
|
||||||
|
|
||||||
|
randomx_destroy_vm(vm);
|
||||||
|
randomx_release_cache(cache);
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
24
src/crypto/randomx_hash.h
Normal file
24
src/crypto/randomx_hash.h
Normal file
|
|
@ -0,0 +1,24 @@
|
||||||
|
#ifndef VEXTA_CRYPTO_RANDOMX_HASH_H
|
||||||
|
#define VEXTA_CRYPTO_RANDOMX_HASH_H
|
||||||
|
|
||||||
|
#include <cstddef>
|
||||||
|
#include <cstdint>
|
||||||
|
|
||||||
|
static constexpr std::size_t VEXTA_RANDOMX_HASH_SIZE = 32;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Calculate a RandomX hash using an explicit key.
|
||||||
|
*
|
||||||
|
* This wrapper intentionally uses RANDOMX_FLAG_DEFAULT so consensus hashing
|
||||||
|
* does not depend on CPU-specific runtime feature detection.
|
||||||
|
*
|
||||||
|
* Returns false if RandomX cache or VM allocation fails.
|
||||||
|
*/
|
||||||
|
bool VextaRandomXHash(
|
||||||
|
const void* input,
|
||||||
|
std::size_t input_size,
|
||||||
|
const void* key,
|
||||||
|
std::size_t key_size,
|
||||||
|
uint8_t output[VEXTA_RANDOMX_HASH_SIZE]);
|
||||||
|
|
||||||
|
#endif // VEXTA_CRYPTO_RANDOMX_HASH_H
|
||||||
Loading…
Reference in a new issue