Software APIs
hmac_sca_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_PENETRATIONTESTS_JSON_HMAC_SCA_COMMANDS_H_
6 #define OPENTITAN_SW_DEVICE_TESTS_PENETRATIONTESTS_JSON_HMAC_SCA_COMMANDS_H_
7 #include "sw/device/lib/ujson/ujson_derive.h"
8 #ifdef __cplusplus
9 extern "C" {
10 #endif
11 
12 #define HMACSCA_CMD_MAX_MESSAGE_BYTES 16
13 #define HMACSCA_CMD_MAX_KEY_BYTES 32
14 #define HMACSCA_CMD_MAX_TAG_BYTES 32
15 
16 // clang-format off
17 
18 #define HMACSCA_SUBCOMMAND(_, value) \
19  value(_, Init) \
20  value(_, BatchFvsr) \
21  value(_, BatchRandom) \
22  value(_, Single)
23 UJSON_SERDE_ENUM(HmacScaSubcommand, hmac_sca_subcommand_t, HMACSCA_SUBCOMMAND);
24 
25 #define HMACSCA_MESSAGE(field, string) \
26  field(message, uint8_t, HMACSCA_CMD_MAX_MESSAGE_BYTES)
27 UJSON_SERDE_STRUCT(PenetrationtestHmacScaMessage, penetrationtest_hmac_sca_message_t, HMACSCA_MESSAGE);
28 
29 #define HMACSCA_KEY(field, string) \
30  field(key, uint8_t, HMACSCA_CMD_MAX_KEY_BYTES) \
31  field(mask, uint8_t, HMACSCA_CMD_MAX_KEY_BYTES)
32 UJSON_SERDE_STRUCT(PenetrationtestHmacScaKey, penetrationtest_hmac_sca_key_t, HMACSCA_KEY);
33 
34 #define HMACSCA_TAG(field, string) \
35  field(tag, uint8_t, HMACSCA_CMD_MAX_TAG_BYTES)
36 UJSON_SERDE_STRUCT(PenetrationtestHmacScaTag, penetrationtest_hmac_sca_tag_t, HMACSCA_TAG);
37 
38 #define HMACSCA_NUM_IT(field, string) \
39  field(num_iterations, uint32_t)
40 UJSON_SERDE_STRUCT(PenetrationtestHmacScaNumIt, penetrationtest_hmac_sca_num_it_t, HMACSCA_NUM_IT);
41 
42 // clang-format on
43 
44 #ifdef __cplusplus
45 }
46 #endif
47 #endif // OPENTITAN_SW_DEVICE_TESTS_PENETRATIONTESTS_JSON_HMAC_SCA_COMMANDS_H_