5 #ifndef OPENTITAN_SW_DEVICE_TESTS_PENETRATIONTESTS_JSON_CRYPTO_FI_COMMANDS_H_
6 #define OPENTITAN_SW_DEVICE_TESTS_PENETRATIONTESTS_JSON_CRYPTO_FI_COMMANDS_H_
7 #include "sw/device/lib/ujson/ujson_derive.h"
12 #define CRYPTOFI_HMAC_CMD_MAX_MESSAGE_BYTES 16
13 #define CRYPTOFI_HMAC_CMD_MAX_KEY_BYTES 32
14 #define CRYPTOFI_HMAC_CMD_MAX_TAG_WORDS 8
18 #define CRYPTOFI_SUBCOMMAND(_, value) \
24 value(_, ShadowRegAccess) \
25 value(_, ShadowRegRead)
26 UJSON_SERDE_ENUM(CryptoFiSubcommand, crypto_fi_subcommand_t, CRYPTOFI_SUBCOMMAND);
28 #define CRYPTOFI_AES_MODE(field, string) \
29 field(key_trigger, bool) \
30 field(plaintext_trigger, bool) \
31 field(encrypt_trigger, bool) \
32 field(ciphertext_trigger, bool)
33 UJSON_SERDE_STRUCT(CryptoFiAesMode, crypto_fi_aes_mode_t, CRYPTOFI_AES_MODE);
35 #define CRYPTOFI_KMAC_MODE(field, string) \
36 field(key_trigger, bool) \
37 field(absorb_trigger, bool) \
38 field(static_trigger, bool) \
39 field(squeeze_trigger, bool)
40 UJSON_SERDE_STRUCT(CryptoFiKmacMode, crypto_fi_kmac_mode_t, CRYPTOFI_KMAC_MODE);
42 #define CRYPTOFI_AES_CIPHERTEXT(field, string) \
43 field(ciphertext, uint8_t, 16) \
44 field(alerts, uint32_t, 3) \
45 field(err_status, uint32_t) \
46 field(ast_alerts, uint32_t, 2)
47 UJSON_SERDE_STRUCT(FiAesCiphertext, crypto_fi_aes_ciphertext_t, CRYPTOFI_AES_CIPHERTEXT);
49 #define CRYPTOFI_KMAC_STATE(field, string) \
50 field(share0, uint8_t, 200) \
51 field(share1, uint8_t, 200) \
52 field(digest, uint8_t, 8) \
53 field(alerts, uint32_t, 3) \
54 field(err_status, uint32_t) \
55 field(ast_alerts, uint32_t, 2)
56 UJSON_SERDE_STRUCT(FiKmacState, crypto_fi_kmac_state_t, CRYPTOFI_KMAC_STATE);
58 #define CRYPTOFI_KMAC_DIGEST(field, string) \
59 field(digest, uint8_t, 8) \
60 field(digest_2nd, uint8_t, 8) \
61 field(alerts, uint32_t, 3) \
62 field(err_status, uint32_t) \
63 field(ast_alerts, uint32_t, 2)
64 UJSON_SERDE_STRUCT(FiKmacDigest, crypto_fi_kmac_digest_t, CRYPTOFI_KMAC_DIGEST);
66 #define CRYPTOFI_TEST_RESULT_MULT(field, string) \
67 field(result, uint32_t, 3) \
68 field(alerts, uint32_t, 3) \
69 field(err_status, uint32_t) \
70 field(ast_alerts, uint32_t, 2)
71 UJSON_SERDE_STRUCT(CRYPTOFITestResultMult, crypto_fi_test_result_mult_t, CRYPTOFI_TEST_RESULT_MULT);
73 #define CRYPTOFI_HMAC_MESSAGE(field, string) \
74 field(message, uint8_t, CRYPTOFI_HMAC_CMD_MAX_MESSAGE_BYTES)
75 UJSON_SERDE_STRUCT(FiHmacMessage, crypto_fi_hmac_message_t, CRYPTOFI_HMAC_MESSAGE);
77 #define CRYPTOFI_HMAC_TAG(field, string) \
78 field(tag, uint32_t, CRYPTOFI_HMAC_CMD_MAX_TAG_WORDS) \
79 field(alerts, uint32_t, 3) \
80 field(err_status, uint32_t)
81 UJSON_SERDE_STRUCT(FiHmacTag, crypto_fi_hmac_tag_t, CRYPTOFI_HMAC_TAG);
83 #define CRYPTOFI_HMAC_MODE(field, string) \
84 field(start_trigger, bool) \
85 field(msg_trigger, bool) \
86 field(process_trigger, bool) \
87 field(finish_trigger, bool)
88 UJSON_SERDE_STRUCT(CryptoFiHmacMode, crypto_fi_hmac_mode_t, CRYPTOFI_HMAC_MODE);