Add random to Open Enclave Pal

This commit is contained in:
Matthew Parkinson
2021-03-26 16:29:15 +00:00
committed by Matthew Parkinson
parent cc5f1cfe9f
commit 5419e58633
3 changed files with 29 additions and 1 deletions

View File

@@ -7,6 +7,7 @@
#include <array>
#ifdef OPEN_ENCLAVE
extern "C" void* oe_memset_s(void* p, size_t p_size, int c, size_t size);
extern "C" int oe_random(void* data, size_t size);
extern "C" [[noreturn]] void oe_abort();
namespace snmalloc
@@ -37,7 +38,7 @@ namespace snmalloc
* Bitmap of PalFeatures flags indicating the optional features that this
* PAL supports.
*/
static constexpr uint64_t pal_features = 0;
static constexpr uint64_t pal_features = Entropy;
static constexpr size_t page_size = Aal::smallest_page_size;
@@ -66,6 +67,17 @@ namespace snmalloc
{
oe_memset_s(p, size, 0, size);
}
/**
* Source of Entropy
*/
static uint64_t get_entropy64()
{
uint64_t result = 0;
if (oe_random(&result, sizeof(result)) != 0)
error("Failed to get system randomness");
return result;
}
};
}
#endif

View File

@@ -15,6 +15,14 @@ extern "C" void* oe_memset_s(void* p, size_t p_size, int c, size_t size)
return memset(p, c, size);
}
extern "C" int oe_random(void* p, size_t p_size)
{
UNUSED(p_size);
UNUSED(p);
// Stub for random data.
return 0;
}
extern "C" void oe_abort()
{
abort();

View File

@@ -11,6 +11,14 @@ extern "C" void* oe_memset_s(void* p, size_t p_size, int c, size_t size)
return memset(p, c, size);
}
extern "C" int oe_random(void* p, size_t p_size)
{
UNUSED(p_size);
UNUSED(p);
// Stub for random data.
return 0;
}
extern "C" void oe_abort()
{
abort();