Software APIs
kmac_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_KMAC_SCA_COMMANDS_H_
6 #define OPENTITAN_SW_DEVICE_TESTS_PENETRATIONTESTS_JSON_KMAC_SCA_COMMANDS_H_
7 #include "sw/device/lib/ujson/ujson_derive.h"
8 #ifdef __cplusplus
9 extern "C" {
10 #endif
11 
12 #define KMACSCA_CMD_MAX_BATCH_DIGEST_BYTES 32
13 #define KMACSCA_CMD_MAX_DATA_BYTES 16
14 #define KMACSCA_CMD_MAX_KEY_BYTES 16
15 #define KMACSCA_CMD_MAX_LFSR_BYTES 4
16 #define KMACSCA_CMD_MAX_MSG_BYTES 16
17 
18 // clang-format off
19 
20 #define KMAC_SCA_SUBCOMMAND(_, value) \
21  value(_, Init) \
22  value(_, SetKey) \
23  value(_, SingleAbsorb) \
24  value(_, Batch) \
25  value(_, FixedKeySet) \
26  value(_, SeedLfsr)
27 UJSON_SERDE_ENUM(KmacScaSubcommand, kmac_sca_subcommand_t, KMAC_SCA_SUBCOMMAND);
28 
29 #define KMAC_SCA_KEY(field, string) \
30  field(key, uint8_t, KMACSCA_CMD_MAX_KEY_BYTES) \
31  field(key_length, size_t)
32 UJSON_SERDE_STRUCT(CryptotestKmacScaKey, cryptotest_kmac_sca_key_t, KMAC_SCA_KEY);
33 
34 #define KMAC_SCA_LFSR(field, string) \
35  field(seed, uint8_t, KMACSCA_CMD_MAX_LFSR_BYTES)
36 UJSON_SERDE_STRUCT(CryptotestKmacScaLfsr, cryptotest_kmac_sca_lfsr_t, KMAC_SCA_LFSR);
37 
38 #define KMAC_SCA_FPGA_MODE(field, string) \
39  field(fpga_mode, uint8_t)
40 UJSON_SERDE_STRUCT(CryptotestKmacScaFpgaMode, cryptotest_kmac_sca_fpga_mode_t, KMAC_SCA_FPGA_MODE);
41 
42 #define KMAC_SCA_DATA(field, string) \
43  field(data, uint8_t, KMACSCA_CMD_MAX_DATA_BYTES)
44 UJSON_SERDE_STRUCT(CryptotestKmacScaData, cryptotest_kmac_sca_data_t, KMAC_SCA_DATA);
45 
46 #define KMAC_SCA_MSG(field, string) \
47  field(msg, uint8_t, KMACSCA_CMD_MAX_MSG_BYTES) \
48  field(msg_length, size_t)
49 UJSON_SERDE_STRUCT(CryptotestKmacScaMsg, cryptotest_kmac_sca_msg_t, KMAC_SCA_MSG);
50 
51 #define KMAC_SCA_BATCH_DIGEST(field, string) \
52  field(batch_digest, uint8_t, KMACSCA_CMD_MAX_BATCH_DIGEST_BYTES)
53 UJSON_SERDE_STRUCT(CryptotestKmacScaBatchDigest, cryptotest_kmac_sca_batch_digest_t, KMAC_SCA_BATCH_DIGEST);
54 
55 // clang-format on
56 
57 #ifdef __cplusplus
58 }
59 #endif
60 #endif // OPENTITAN_SW_DEVICE_TESTS_PENETRATIONTESTS_JSON_KMAC_SCA_COMMANDS_H_