Software APIs
aes_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_AES_SCA_COMMANDS_H_
6 #define OPENTITAN_SW_DEVICE_TESTS_PENETRATIONTESTS_JSON_AES_SCA_COMMANDS_H_
7 #include "sw/device/lib/ujson/ujson_derive.h"
8 #ifdef __cplusplus
9 extern "C" {
10 #endif
11 
12 #define AESSCA_CMD_MAX_MSG_BYTES 16
13 #define AESSCA_CMD_MAX_KEY_BYTES 16
14 #define AESSCA_CMD_MAX_LFSR_BYTES 4
15 #define AESSCA_CMD_MAX_DATA_BYTES 16
16 
17 // clang-format off
18 
19 // AES SCA arguments
20 
21 #define AESSCA_SUBCOMMAND(_, value) \
22  value(_, BatchAlternativeEncrypt) \
23  value(_, BatchEncrypt) \
24  value(_, BatchEncryptRandom) \
25  value(_, BatchPlaintextSet) \
26  value(_, FvsrDataBatchEncrypt) \
27  value(_, FvsrKeyBatchEncrypt) \
28  value(_, FvsrKeyBatchGenerate) \
29  value(_, FvsrKeySet) \
30  value(_, FvsrKeyStartBatchGenerate) \
31  value(_, Init) \
32  value(_, KeySet) \
33  value(_, SeedLfsr) \
34  value(_, SeedLfsrOrder) \
35  value(_, SingleEncrypt)
36 UJSON_SERDE_ENUM(AesScaSubcommand, aes_sca_subcommand_t, AESSCA_SUBCOMMAND);
37 
38 #define AES_SCA_KEY(field, string) \
39  field(key, uint8_t, AESSCA_CMD_MAX_KEY_BYTES) \
40  field(key_length, size_t)
41 UJSON_SERDE_STRUCT(CryptotestAesScaKey, aes_sca_key_t, AES_SCA_KEY);
42 
43 #define AES_SCA_DATA(field, string) \
44  field(data, uint8_t, AESSCA_CMD_MAX_DATA_BYTES)
45 UJSON_SERDE_STRUCT(CryptotestAesScaData, aes_sca_data_t, AES_SCA_DATA);
46 
47 #define AES_SCA_TEXT(field, string) \
48  field(text, uint8_t, AESSCA_CMD_MAX_DATA_BYTES) \
49  field(text_length, size_t)
50 UJSON_SERDE_STRUCT(CryptotestAesScaText, aes_sca_text_t, AES_SCA_TEXT);
51 
52 #define AES_SCA_LFSR(field, string) \
53  field(seed, uint8_t, AESSCA_CMD_MAX_LFSR_BYTES)
54 UJSON_SERDE_STRUCT(CryptotestAesScaLfsr, aes_sca_lfsr_t, AES_SCA_LFSR);
55 
56 #define AES_SCA_CIPHERTEXT(field, string) \
57  field(ciphertext, uint8_t, AESSCA_CMD_MAX_MSG_BYTES) \
58  field(ciphertext_length, uint32_t)
59 UJSON_SERDE_STRUCT(CryptotestAesScaCiphertext, aes_sca_ciphertext_t, AES_SCA_CIPHERTEXT);
60 
61 #define AES_SCA_FPGA_MODE(field, string) \
62  field(fpga_mode, uint8_t)
63 UJSON_SERDE_STRUCT(CryptotestAesScaFpgaMode, aes_sca_fpga_mode_t, AES_SCA_FPGA_MODE);
64 
65 #define AES_SCA_CMD(field, string) \
66  field(cmd, uint32_t)
67 UJSON_SERDE_STRUCT(CryptotestAesScaCmd, aes_sca_cmd_t, AES_SCA_CMD);
68 // clang-format on
69 
70 #ifdef __cplusplus
71 }
72 #endif
73 #endif // OPENTITAN_SW_DEVICE_TESTS_PENETRATIONTESTS_JSON_AES_SCA_COMMANDS_H_