Software APIs
rng_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_RNG_FI_COMMANDS_H_
6 #define OPENTITAN_SW_DEVICE_TESTS_PENETRATIONTESTS_JSON_RNG_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 RNGFI_SUBCOMMAND(_, value) \
15  value(_, CsrngInit) \
16  value(_, CsrngBias) \
17  value(_, CsrngBiasFWOverride) \
18  value(_, CsrngBiasFWOverrideStatic) \
19  value(_, EdnInit) \
20  value(_, EdnRespAck) \
21  value(_, EdnBias) \
22  value(_, FWOverride) \
23  value(_, EntropySrcBias)
24 UJSON_SERDE_ENUM(RngFiSubcommand, rng_fi_subcommand_t, RNGFI_SUBCOMMAND);
25 
26 #define CRYPTOFI_CSRNG_MODE(field, string) \
27  field(start_trigger, bool) \
28  field(valid_trigger, bool) \
29  field(read_trigger, bool) \
30  field(all_trigger, bool)
31 UJSON_SERDE_STRUCT(CryptoFiCsrngMode, crypto_fi_csrng_mode_t, CRYPTOFI_CSRNG_MODE);
32 
33 #define RNGFI_CSRNG_OUTPUT(field, string) \
34  field(res, uint32_t) \
35  field(rand, uint32_t, 16) \
36  field(alerts, uint32_t, 3) \
37  field(err_status, uint32_t) \
38  field(ast_alerts, uint32_t, 2)
39 UJSON_SERDE_STRUCT(RngFiCsrngOutput, rng_fi_csrng_output_t, RNGFI_CSRNG_OUTPUT);
40 
41 #define RNGFI_CSRNG_OV_OUTPUT(field, string) \
42  field(res, uint32_t) \
43  field(rand, uint32_t, 12) \
44  field(alerts, uint32_t, 3) \
45  field(err_status, uint32_t) \
46  field(ast_alerts, uint32_t, 2)
47 UJSON_SERDE_STRUCT(RngFiCsrngOvOutput, rng_fi_csrng_ov_output_t, RNGFI_CSRNG_OV_OUTPUT);
48 
49 #define RNGFI_ENTRBIAS_OUTPUT(field, string) \
50  field(rand, uint32_t, 32) \
51  field(alerts, uint32_t, 3) \
52  field(err_status, uint32_t) \
53  field(ast_alerts, uint32_t, 2)
54 UJSON_SERDE_STRUCT(RngFiEntrBiasOutput, rng_fi_entropy_src_bias_t, RNGFI_ENTRBIAS_OUTPUT);
55 
56 #define RNGFI_FWOVERWRITE_OUTPUT(field, string) \
57  field(rand, uint32_t, 32) \
58  field(alerts, uint32_t, 3) \
59  field(err_status, uint32_t) \
60  field(ast_alerts, uint32_t, 2)
61 UJSON_SERDE_STRUCT(RngFiFwOverwriteOutput, rng_fi_fw_overwrite_t, RNGFI_FWOVERWRITE_OUTPUT);
62 
63 #define RNGFI_EDN(field, string) \
64  field(collisions, uint32_t) \
65  field(rand, uint32_t, 16) \
66  field(alerts, uint32_t, 3) \
67  field(err_status, uint32_t) \
68  field(ast_alerts, uint32_t, 2)
69 UJSON_SERDE_STRUCT(RngFiEdn, rng_fi_edn_t, RNGFI_EDN);
70 
71 #define RNGFI_FWOVERWRITE_HEALTH(field, string) \
72  field(disable_health_check, bool)
73 UJSON_SERDE_STRUCT(RngFiFwOverwriteHealt, rng_fi_fw_overwrite_health_t, RNGFI_FWOVERWRITE_HEALTH);
74 
75 #define RNGFI_SEED(field, string) \
76  field(seed, uint32_t, 12)
77 UJSON_SERDE_STRUCT(RngFiSeed, rng_fi_seed_t, RNGFI_SEED);
78 
79 // clang-format on
80 
81 #ifdef __cplusplus
82 }
83 #endif
84 #endif // OPENTITAN_SW_DEVICE_TESTS_PENETRATIONTESTS_JSON_RNG_FI_COMMANDS_H_