Hardened memory operations for constant power buffer manipulation. More...
#include <stddef.h>
#include <stdint.h>
#include "sw/device/lib/base/hardened.h"
#include "sw/device/lib/base/macros.h"
Go to the source code of this file.
Functions | |
void | hardened_memcpy (uint32_t *OT_RESTRICT dest, const uint32_t *OT_RESTRICT src, size_t word_len) |
Copies 32-bit words between non-overlapping regions. More... | |
void | hardened_memshred (uint32_t *dest, size_t word_len) |
Fills a 32-bit aligned region of memory with random data. More... | |
hardened_bool_t | hardened_memeq (const uint32_t *lhs, const uint32_t *rhs, size_t word_len) |
Compare two potentially-overlapping 32-bit aligned regions of memory for equality. More... | |
Hardened memory operations for constant power buffer manipulation.
Definition in file hardened_memory.h.
void hardened_memcpy | ( | uint32_t *OT_RESTRICT | dest, |
const uint32_t *OT_RESTRICT | src, | ||
size_t | word_len | ||
) |
Copies 32-bit words between non-overlapping regions.
Unlike memcpy()
, this function has important differences:
Input pointers MUST be 32-bit aligned, although they do not need to actually point to memory declared as uint32_t
per the C aliasing rules. Internally, this function is careful to not dereference its operands directly, and instead uses dedicated load/store intrinsics.
dest | The destination of the copy. |
src | The source of the copy. |
word_len | The number of words to copy. |
hardened_bool_t hardened_memeq | ( | const uint32_t * | lhs, |
const uint32_t * | rhs, | ||
size_t | word_len | ||
) |
Compare two potentially-overlapping 32-bit aligned regions of memory for equality.
Unlike memcmp()
, this function has important differences:
hardened_bool_t
.Input pointers MUST be 32-bit aligned, although they do not need to actually point to memory declared as uint32_t
per the C aliasing rules. Internally, this function is careful to not dereference its operands directly, and instead uses dedicated load/store intrinsics.
lhs | The first buffer to compare. |
rhs | The second buffer to compare. |
word_len | The number of words to write. |
Definition at line 115 of file hardened_memory.c.
void hardened_memshred | ( | uint32_t * | dest, |
size_t | word_len | ||
) |
Fills a 32-bit aligned region of memory with random data.
Unlike memset()
, this function has important differences:
Input pointers MUST be 32-bit aligned, although they do not need to actually point to memory declared as uint32_t
per the C aliasing rules. Internally, this function is careful to not dereference its operands directly, and instead uses dedicated load/store intrinsics.
dest | The destination of the set. |
word_len | The number of words to write. |
Definition at line 85 of file hardened_memory.c.