Software APIs
hmac_commands.h
1 // Copyright lowRISC contributors (OpenTitan project).
2 // Licensed under the Apache License, Version 2.0, see LICENSE for details.
3 // SPDX-License-Identifier: Apache-2.0
4 
5 #ifndef OPENTITAN_SW_DEVICE_TESTS_CRYPTO_CRYPTOTEST_JSON_HMAC_COMMANDS_H_
6 #define OPENTITAN_SW_DEVICE_TESTS_CRYPTO_CRYPTOTEST_JSON_HMAC_COMMANDS_H_
7 #include "sw/device/lib/ujson/ujson_derive.h"
8 #ifdef __cplusplus
9 extern "C" {
10 #endif
11 
12 #define HMAC_CMD_MAX_MESSAGE_BYTES 256
13 #define HMAC_CMD_MAX_KEY_BYTES 192
14 #define HMAC_CMD_MAX_TAG_BYTES 64
15 
16 // clang-format off
17 
18 #define HMAC_HASH_ALG(_, value) \
19  value(_, Sha256) \
20  value(_, Sha384) \
21  value(_, Sha512) \
22  value(_, Sha3_256) \
23  value(_, Sha3_384) \
24  value(_, Sha3_512)
25 UJSON_SERDE_ENUM(CryptotestHmacHashAlg, cryptotest_hmac_hash_alg_t, HMAC_HASH_ALG);
26 
27 #define HMAC_MESSAGE(field, string) \
28  field(message, uint8_t, HMAC_CMD_MAX_MESSAGE_BYTES) \
29  field(message_len, size_t)
30 UJSON_SERDE_STRUCT(CryptotestHmacMessage, cryptotest_hmac_message_t, HMAC_MESSAGE);
31 
32 #define HMAC_KEY(field, string) \
33  field(key, uint8_t, HMAC_CMD_MAX_KEY_BYTES) \
34  field(key_len, size_t)
35 UJSON_SERDE_STRUCT(CryptotestHmacKey, cryptotest_hmac_key_t, HMAC_KEY);
36 
37 #define HMAC_TAG(field, string) \
38  field(tag, uint8_t, HMAC_CMD_MAX_TAG_BYTES) \
39  field(tag_len, size_t)
40 UJSON_SERDE_STRUCT(CryptotestHmacTag, cryptotest_hmac_tag_t, HMAC_TAG);
41 
42 // clang-format on
43 
44 #ifdef __cplusplus
45 }
46 #endif
47 #endif // OPENTITAN_SW_DEVICE_TESTS_CRYPTO_CRYPTOTEST_JSON_HMAC_COMMANDS_H_