20#include "sxsymcrypt/internal.h"
24#include <zephyr/sys/util.h>
25#include <silexpk/sxbuf/sxbufop.h>
26#include <sxsymcrypt/hashdefs.h>
27#include <silexpk/core.h>
29#define CRACEN_PSA_IS_KEY_FLAG(flag, attr) ((flag) == (psa_get_key_usage_flags((attr)) & (flag)))
30#define CRACEN_PSA_IS_KEY_TYPE(flag, attr) ((flag) == (psa_get_key_type((attr)) & (flag)))
32#if defined(__has_builtin) && __has_builtin(__builtin_abs)
33#define cracen_abs(x) __builtin_abs(x)
35#define cracen_abs(x) ((x) < 0 ? -(x) : (x))
47hash_get_algo(psa_algorithm_t alg,
const struct sxhashalg **sx_hash_algo);
79 size_t key_buffer_size,
struct sxkeyref *k);
114int cracen_be_sub(
const uint8_t *a,
const uint8_t *b, uint8_t *c,
size_t sz);
165 const size_t input_lengths[],
size_t input_count,
166 const struct sxhashalg *hashalg, uint8_t *digest);
180 const size_t input_length,
const struct sxhashalg *hashalg,
201 size_t input_count,
const struct sxhashalg *hashalg, uint8_t *digest);
220 const struct sxhashalg *hashalg, uint8_t *digest);
int32_t psa_status_t
Definition error.h:26
psa_status_t cracen_rnd_in_range(uint8_t *n, size_t sz, const uint8_t *upperlimit, size_t retrylimit)
Use cracen_get_random up to generate a random number in the range [1, upperlimit).
int cracen_get_rnd_in_range(const uint8_t *n, size_t nsz, uint8_t *out)
Generate a random number within the specified range.
__must_check psa_status_t hash_get_algo(psa_algorithm_t alg, const struct sxhashalg **sx_hash_algo)
void cracen_be_rshift(const uint8_t *a, int n, uint8_t *r, size_t sz)
Compute r = a >> n.
int cracen_hash_all_inputs(const uint8_t *inputs[], const size_t input_lengths[], size_t input_count, const struct sxhashalg *hashalg, uint8_t *digest)
Hash several elements, managing hardware reservation internally.
int cracen_hash_input_with_context(struct sxhash *hashopctx, const uint8_t *input, const size_t input_length, const struct sxhashalg *hashalg, uint8_t *digest)
Hash a single element with a previously created hash context(sxhash)
void cracen_be_xor(uint8_t *buf, size_t buf_sz, size_t xor_val)
Compute buf = buf ^ xor_val.
psa_status_t cracen_load_keyref(const psa_key_attributes_t *attributes, const uint8_t *key_buffer, size_t key_buffer_size, struct sxkeyref *k)
Loads key buffer and attributes.
int cracen_prepare_ik_key(const uint8_t *user_data)
Prepare ik key.
void cracen_xorbytes(uint8_t *a, const uint8_t *b, size_t sz)
XOR two byte buffers and store result in first buffer.
int cracen_be_sub(const uint8_t *a, const uint8_t *b, uint8_t *c, size_t sz)
Compute c = a - b.
void cracen_be_add(uint8_t *v, size_t v_size, size_t summand)
Compute v = v + summand.
int cracen_be_cmp(const uint8_t *a, const uint8_t *b, size_t sz, int carry)
Big-Endian compare with carry.
__must_check psa_status_t silex_statuscodes_to_psa(int sx_status)
int cracen_hash_input(const uint8_t *input, const size_t input_length, const struct sxhashalg *hashalg, uint8_t *digest)
Hash a single input, managing hardware reservation internally.
int cracen_hash_all_inputs_with_context(struct sxhash *sxhashopctx, const uint8_t *inputs[], const size_t input_lengths[], size_t input_count, const struct sxhashalg *hashalg, uint8_t *digest)
Hash several elements at different locations in memory with a previously created hash context(sxhash)
uint8_t owner_id
Definition common.h:41
uint8_t slot_number
Definition common.h:40