Software APIs
drbg_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_CRYPTO_CRYPTOTEST_JSON_DRBG_COMMANDS_H_
6 #define OPENTITAN_SW_DEVICE_TESTS_CRYPTO_CRYPTOTEST_JSON_DRBG_COMMANDS_H_
7 #include "sw/device/lib/ujson/ujson_derive.h"
8 #ifdef __cplusplus
9 extern "C" {
10 #endif
11 
12 #define DRBG_CMD_MAX_ENTROPY_BYTES 48
13 #define DRBG_CMD_MAX_PERSONALIZATION_STRING_BYTES 48
14 #define DRBG_CMD_MAX_ADDITIONAL_INPUT_BYTES 48
15 #define DRBG_CMD_MAX_OUTPUT_BYTES 64
16 
17 // clang-format off
18 
19 #define DRBG_INPUT(field, string) \
20  field(entropy, uint8_t, DRBG_CMD_MAX_ENTROPY_BYTES) \
21  field(entropy_len, size_t) \
22  field(personalization_string, uint8_t, DRBG_CMD_MAX_PERSONALIZATION_STRING_BYTES) \
23  field(personalization_string_len, size_t) \
24  field(reseed, uint8_t) \
25  field(reseed_entropy, uint8_t, DRBG_CMD_MAX_ENTROPY_BYTES) \
26  field(reseed_entropy_len, size_t) \
27  field(reseed_additional_input, uint8_t, DRBG_CMD_MAX_ADDITIONAL_INPUT_BYTES) \
28  field(reseed_additional_input_len, size_t) \
29  field(additional_input_1, uint8_t, DRBG_CMD_MAX_ADDITIONAL_INPUT_BYTES) \
30  field(additional_input_1_len, size_t) \
31  field(additional_input_2, uint8_t, DRBG_CMD_MAX_ADDITIONAL_INPUT_BYTES) \
32  field(additional_input_2_len, size_t) \
33  field(output_len, size_t)
34 UJSON_SERDE_STRUCT(CryptotestDrbgInput, cryptotest_drbg_input_t, DRBG_INPUT);
35 
36 #define DRBG_OUTPUT(field, string) \
37  field(output, uint8_t, DRBG_CMD_MAX_OUTPUT_BYTES) \
38  field(output_len, size_t)
39 UJSON_SERDE_STRUCT(CryptotestDrbgOutput, cryptotest_drbg_output_t, DRBG_OUTPUT);
40 
41 // clang-format on
42 
43 #ifdef __cplusplus
44 }
45 #endif
46 #endif // OPENTITAN_SW_DEVICE_TESTS_CRYPTO_CRYPTOTEST_JSON_DRBG_COMMANDS_H_