4#ifndef OPENTITAN_SW_DEVICE_SILICON_CREATOR_LIB_DRIVERS_HMAC_H_
5#define OPENTITAN_SW_DEVICE_SILICON_CREATOR_LIB_DRIVERS_HMAC_H_
10#include "sw/device/silicon_creator/lib/error.h"
20 kHmacDigestNumBytes = 32,
24 kHmacDigestNumWords = kHmacDigestNumBytes /
sizeof(uint32_t),
31 uint32_t digest[kHmacDigestNumWords];
42 uint32_t msg_len_upper;
43 uint32_t msg_len_lower;
44 uint32_t digest[kHmacDigestNumWords];
57void hmac_sha256_configure(
bool big_endian_digest);
64void hmac_sha256_start(
void);
69inline void hmac_sha256_init(
void) {
70 hmac_sha256_configure(
false);
84void hmac_sha256_update(
const void *data,
size_t len);
96void hmac_sha256_update_words(
const uint32_t *data,
size_t len);
101void hmac_sha256_process(
void);
114void hmac_sha256_final_truncated(uint32_t *digest,
size_t len);
123inline void hmac_sha256_final(hmac_digest_t *digest) {
124 hmac_sha256_final_truncated(digest->digest,
ARRAYSIZE(digest->digest));
135void hmac_sha256(
const void *data,
size_t len, hmac_digest_t *digest);
151void hmac_sha256_save(hmac_context_t *ctx);
162void hmac_sha256_restore(
const hmac_context_t *ctx);