Software APIs
ecdh_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_ECDH_COMMANDS_H_
6 #define OPENTITAN_SW_DEVICE_TESTS_CRYPTO_CRYPTOTEST_JSON_ECDH_COMMANDS_H_
7 #include "sw/device/lib/ujson/ujson_derive.h"
8 #ifdef __cplusplus
9 extern "C" {
10 #endif
11 
12 #define ECDH_CMD_MAX_PRIVATE_KEY_BYTES 48
13 #define ECDH_CMD_MAX_SHARED_SECRET_BYTES 48
14 #define ECDH_CMD_MAX_COORDINATE_BYTES 48
15 #define ECDH_CMD_MAX_PRIVATE_KEY_SHARE_BYTES 64
16 
17 // clang-format off
18 
19 #define ECDH_CURVE(_, value) \
20  value(_, P256) \
21  value(_, P384)
22 UJSON_SERDE_ENUM(CryptotestEcdhCurve, cryptotest_ecdh_curve_t, ECDH_CURVE);
23 
24 #define ECDH_PRIVATE_KEY(field, string) \
25  field(d0, uint8_t, ECDH_CMD_MAX_PRIVATE_KEY_SHARE_BYTES) \
26  field(d0_len, size_t) \
27  field(d1, uint8_t, ECDH_CMD_MAX_PRIVATE_KEY_SHARE_BYTES) \
28  field(d1_len, size_t)
29 UJSON_SERDE_STRUCT(CryptotestEcdhPrivateKey, cryptotest_ecdh_private_key_t, ECDH_PRIVATE_KEY);
30 
31 #define ECDH_COORDINATE(field, string) \
32  field(coordinate, uint8_t, ECDH_CMD_MAX_COORDINATE_BYTES) \
33  field(coordinate_len, size_t)
34 UJSON_SERDE_STRUCT(CryptotestEcdhCoordinate, cryptotest_ecdh_coordinate_t, ECDH_COORDINATE);
35 
36 #define ECDH_DERIVE_OUTPUT(field, string) \
37  field(ok, uint8_t) \
38  field(shared_secret, uint8_t, ECDH_CMD_MAX_SHARED_SECRET_BYTES) \
39  field(shared_secret_len, size_t)
40 UJSON_SERDE_STRUCT(CryptotestEcdhDeriveOutput, cryptotest_ecdh_derive_output_t, ECDH_DERIVE_OUTPUT);
41 
42 // clang-format on
43 
44 #ifdef __cplusplus
45 }
46 #endif
47 #endif // OPENTITAN_SW_DEVICE_TESTS_CRYPTO_CRYPTOTEST_JSON_ECDH_COMMANDS_H_