Software APIs
sha3_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_SHA3_SCA_COMMANDS_H_
6 #define OPENTITAN_SW_DEVICE_TESTS_PENETRATIONTESTS_JSON_SHA3_SCA_COMMANDS_H_
7 #include "sw/device/lib/ujson/ujson_derive.h"
8 #ifdef __cplusplus
9 extern "C" {
10 #endif
11 
12 #define SHA3SCA_CMD_MAX_BATCH_DIGEST_BYTES 32
13 #define SHA3SCA_CMD_MAX_DATA_BYTES 16
14 #define SHA3SCA_CMD_MAX_LFSR_BYTES 4
15 #define SHA3SCA_CMD_MAX_MSG_BYTES 16
16 #define SHA3SCA_CMD_MAX_STATUS_BYTES 1
17 
18 // clang-format off
19 
20 #define SHA3_SCA_SUBCOMMAND(_, value) \
21  value(_, Init) \
22  value(_, SingleAbsorb) \
23  value(_, Batch) \
24  value(_, FixedMessageSet) \
25  value(_, SeedLfsr) \
26  value(_, DisableMasking)
27 UJSON_SERDE_ENUM(Sha3ScaSubcommand, sha3_sca_subcommand_t, SHA3_SCA_SUBCOMMAND);
28 
29 #define SHA3_SCA_MASKS(field, string) \
30  field(masks_off, uint8_t)
31 UJSON_SERDE_STRUCT(CryptotestSha3ScaMasks, cryptotest_sha3_sca_masks_off_t, SHA3_SCA_MASKS);
32 
33 #define SHA3_SCA_LFSR(field, string) \
34  field(seed, uint8_t, SHA3SCA_CMD_MAX_LFSR_BYTES)
35 UJSON_SERDE_STRUCT(CryptotestSha3ScaLfsr, cryptotest_sha3_sca_lfsr_t, SHA3_SCA_LFSR);
36 
37 #define SHA3_SCA_DATA(field, string) \
38  field(data, uint8_t, SHA3SCA_CMD_MAX_DATA_BYTES)
39 UJSON_SERDE_STRUCT(CryptotestSha3ScaData, cryptotest_sha3_sca_data_t, SHA3_SCA_DATA);
40 
41 #define SHA3_SCA_FPGA_MODE(field, string) \
42  field(fpga_mode, uint8_t)
43 UJSON_SERDE_STRUCT(CryptotestSha3ScaFpgaMode, cryptotest_sha3_sca_fpga_mode_t, SHA3_SCA_FPGA_MODE);
44 
45 #define SHA3_SCA_MSG(field, string) \
46  field(msg, uint8_t, SHA3SCA_CMD_MAX_MSG_BYTES) \
47  field(msg_length, size_t)
48 UJSON_SERDE_STRUCT(CryptotestSha3ScaMsg, cryptotest_sha3_sca_msg_t, SHA3_SCA_MSG);
49 
50 #define SHA3_SCA_STATUS(field, string) \
51  field(status, uint8_t)
52 UJSON_SERDE_STRUCT(CryptotestSha3ScaStatus, cryptotest_sha3_sca_status_t, SHA3_SCA_STATUS);
53 
54 #define SHA3_SCA_BATCH_DIGEST(field, string) \
55  field(batch_digest, uint8_t, SHA3SCA_CMD_MAX_BATCH_DIGEST_BYTES)
56 UJSON_SERDE_STRUCT(CryptotestSha3ScaBatchDigest, cryptotest_sha3_sca_batch_digest_t, SHA3_SCA_BATCH_DIGEST);
57 
58 // clang-format on
59 
60 #ifdef __cplusplus
61 }
62 #endif
63 #endif // OPENTITAN_SW_DEVICE_TESTS_PENETRATIONTESTS_JSON_SHA3_SCA_COMMANDS_H_