Software APIs
sphincsplus_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_SPHINCSPLUS_COMMANDS_H_
6 #define OPENTITAN_SW_DEVICE_TESTS_CRYPTO_CRYPTOTEST_JSON_SPHINCSPLUS_COMMANDS_H_
7 #include "sw/device/lib/ujson/ujson_derive.h"
8 #ifdef __cplusplus
9 extern "C" {
10 #endif
11 
12 #define SPHINCSPLUS_CMD_MAX_MESSAGE_BYTES 3300
13 #define SPHINCSPLUS_CMD_MAX_SIGNATURE_BYTES 7856
14 #define SPHINCSPLUS_CMD_MAX_PUBLIC_KEY_BYTES 32
15 
16 // clang-format off
17 
18 #define SPHINCSPLUS_OPERATION(_, value) \
19  value(_, Verify)
20 UJSON_SERDE_ENUM(CryptotestSphincsPlusOperation, cryptotest_sphincsplus_operation_t, SPHINCSPLUS_OPERATION);
21 
22 #define SPHINCSPLUS_HASH_ALG(_, value) \
23  value(_, Sha256) \
24  value(_, Shake256)
25 UJSON_SERDE_ENUM(CryptotestSphincsPlusHashAlg, cryptotest_sphincsplus_hash_alg_t, SPHINCSPLUS_HASH_ALG);
26 
27 #define SPHINCSPLUS_MESSAGE(field, string) \
28  field(message, uint8_t, SPHINCSPLUS_CMD_MAX_MESSAGE_BYTES) \
29  field(message_len, size_t)
30 UJSON_SERDE_STRUCT(CryptotestSphincsPlusMessage, cryptotest_sphincsplus_message_t, SPHINCSPLUS_MESSAGE);
31 
32 #define SPHINCSPLUS_SIGNATURE(field, string) \
33  field(signature, uint8_t, SPHINCSPLUS_CMD_MAX_SIGNATURE_BYTES) \
34  field(signature_len, size_t)
35 UJSON_SERDE_STRUCT(CryptotestSphincsPlusSignature, cryptotest_sphincsplus_signature_t, SPHINCSPLUS_SIGNATURE);
36 
37 #define SPHINCSPLUS_PUBLIC_KEY(field, string) \
38  field(public, uint8_t, SPHINCSPLUS_CMD_MAX_PUBLIC_KEY_BYTES) \
39  field(public_len, size_t)
40 UJSON_SERDE_STRUCT(CryptotestSphincsPlusPublicKey, cryptotest_sphincsplus_public_key_t, SPHINCSPLUS_PUBLIC_KEY);
41 
42 #define SPHINCSPLUS_VERIFY_OUTPUT(_, value) \
43  value(_, Success) \
44  value(_, Failure)
45 UJSON_SERDE_ENUM(CryptotestSphincsPlusVerifyOutput, cryptotest_sphincsplus_verify_output_t, SPHINCSPLUS_VERIFY_OUTPUT);
46 
47 // clang-format on
48 
49 #ifdef __cplusplus
50 }
51 #endif
52 #endif // OPENTITAN_SW_DEVICE_TESTS_CRYPTO_CRYPTOTEST_JSON_SPHINCSPLUS_COMMANDS_H_