Software APIs
crypto_fi_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_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"
8 #ifdef __cplusplus
9 extern "C" {
10 #endif
11 
12 // clang-format off
13 
14 #define CRYPTOFI_SUBCOMMAND(_, value) \
15  value(_, Aes) \
16  value(_, Init) \
17  value(_, Kmac) \
18  value(_, KmacState) \
19  value(_, ShadowRegAccess) \
20  value(_, ShadowRegRead)
21 UJSON_SERDE_ENUM(CryptoFiSubcommand, crypto_fi_subcommand_t, CRYPTOFI_SUBCOMMAND);
22 
23 #define CRYPTOFI_AES_MODE(field, string) \
24  field(key_trigger, bool) \
25  field(plaintext_trigger, bool) \
26  field(encrypt_trigger, bool) \
27  field(ciphertext_trigger, bool)
28 UJSON_SERDE_STRUCT(CryptoFiAesMode, crypto_fi_aes_mode_t, CRYPTOFI_AES_MODE);
29 
30 #define CRYPTOFI_KMAC_MODE(field, string) \
31  field(key_trigger, bool) \
32  field(absorb_trigger, bool) \
33  field(static_trigger, bool) \
34  field(squeeze_trigger, bool)
35 UJSON_SERDE_STRUCT(CryptoFiKmacMode, crypto_fi_kmac_mode_t, CRYPTOFI_KMAC_MODE);
36 
37 #define CRYPTOFI_AES_CIPHERTEXT(field, string) \
38  field(ciphertext, uint8_t, 16) \
39  field(alerts, uint32_t, 3) \
40  field(err_status, uint32_t) \
41  field(ast_alerts, uint32_t, 2)
42 UJSON_SERDE_STRUCT(FiAesCiphertext, crypto_fi_aes_ciphertext_t, CRYPTOFI_AES_CIPHERTEXT);
43 
44 #define CRYPTOFI_KMAC_STATE(field, string) \
45  field(share0, uint8_t, 200) \
46  field(share1, uint8_t, 200) \
47  field(digest, uint8_t, 8) \
48  field(alerts, uint32_t, 3) \
49  field(err_status, uint32_t) \
50  field(ast_alerts, uint32_t, 2)
51 UJSON_SERDE_STRUCT(FiKmacState, crypto_fi_kmac_state_t, CRYPTOFI_KMAC_STATE);
52 
53 #define CRYPTOFI_KMAC_DIGEST(field, string) \
54  field(digest, uint8_t, 8) \
55  field(digest_2nd, uint8_t, 8) \
56  field(alerts, uint32_t, 3) \
57  field(err_status, uint32_t) \
58  field(ast_alerts, uint32_t, 2)
59 UJSON_SERDE_STRUCT(FiKmacDigest, crypto_fi_kmac_digest_t, CRYPTOFI_KMAC_DIGEST);
60 
61 #define CRYPTOFI_TEST_RESULT_MULT(field, string) \
62  field(result, uint32_t, 3) \
63  field(alerts, uint32_t, 3) \
64  field(err_status, uint32_t) \
65  field(ast_alerts, uint32_t, 2)
66 UJSON_SERDE_STRUCT(CRYPTOFITestResultMult, crypto_fi_test_result_mult_t, CRYPTOFI_TEST_RESULT_MULT);
67 
68 // clang-format on
69 
70 #ifdef __cplusplus
71 }
72 #endif
73 #endif // OPENTITAN_SW_DEVICE_TESTS_PENETRATIONTESTS_JSON_CRYPTO_FI_COMMANDS_H_