Software APIs
hash_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_HASH_COMMANDS_H_
6 #define OPENTITAN_SW_DEVICE_TESTS_CRYPTO_CRYPTOTEST_JSON_HASH_COMMANDS_H_
7 #include "sw/device/lib/ujson/ujson_derive.h"
8 #ifdef __cplusplus
9 extern "C" {
10 #endif
11 
12 #define HASH_CMD_MAX_MESSAGE_BYTES 17068
13 #define HASH_CMD_MAX_CUSTOMIZATION_STRING_BYTES 16
14 #define HASH_CMD_MAX_DIGEST_BYTES 256
15 
16 // clang-format off
17 
18 #define HASH_ALGORITHM(_, value) \
19  value(_, Sha256) \
20  value(_, Sha384) \
21  value(_, Sha512) \
22  value(_, Sha3_224) \
23  value(_, Sha3_256) \
24  value(_, Sha3_384) \
25  value(_, Sha3_512) \
26  value(_, Shake128) \
27  value(_, Shake256) \
28  value(_, Cshake128) \
29  value(_, Cshake256)
30 UJSON_SERDE_ENUM(CryptotestHashAlgorithm, cryptotest_hash_algorithm_t, HASH_ALGORITHM);
31 
32 #define SHAKE_DIGEST_LENGTH(field, string) \
33  field(length, size_t)
34 UJSON_SERDE_STRUCT(CryptotestHashShakeDigestLength, cryptotest_hash_shake_digest_length_t, SHAKE_DIGEST_LENGTH);
35 
36 #define HASH_MESSAGE(field, string) \
37  field(message, uint8_t, HASH_CMD_MAX_MESSAGE_BYTES) \
38  field(message_len, size_t) \
39  field(customization_string, uint8_t, HASH_CMD_MAX_CUSTOMIZATION_STRING_BYTES) \
40  field(customization_string_len, size_t)
41 UJSON_SERDE_STRUCT(CryptotestHashMessage, cryptotest_hash_message_t, HASH_MESSAGE);
42 
43 #define HASH_OUTPUT(field, string) \
44  field(oneshot_digest, uint8_t, HASH_CMD_MAX_DIGEST_BYTES) \
45  field(stepwise_digest, uint8_t, HASH_CMD_MAX_DIGEST_BYTES) \
46  field(digest_len, size_t)
47 UJSON_SERDE_STRUCT(CryptotestHashOutput, cryptotest_hash_output_t, HASH_OUTPUT);
48 
49 // clang-format on
50 
51 #ifdef __cplusplus
52 }
53 #endif
54 #endif // OPENTITAN_SW_DEVICE_TESTS_CRYPTO_CRYPTOTEST_JSON_HASH_COMMANDS_H_