blob: 96760d909fe32787a61615f038da885a4a3d4c6c [file] [log] [blame]
Minos Galanakis2c824b42025-03-20 09:28:45 +00001/* Common definitions used for clients and services */
2
3/*
4 * Copyright The Mbed TLS Contributors
5 * SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later
6 */
7
8#include <psa/service.h>
9
10#ifdef DEBUG
11#define DEBUG_TEST 1
12#else
13#define DEBUG_TEST 0
14#endif
15
16#define PRINT(...) \
17 do { if (DEBUG_TEST) fprintf(stderr, __VA_ARGS__); } while (0)
18#define INFO(...) \
19 do { if (DEBUG_TEST) { PRINT("%s", __FILE__); PRINT(" INFO: " __VA_ARGS__); printf("\n"); \
20 } } while (0)
21
22#define PROGRAMMER_ERROR(...) \
23 do { if (DEBUG_TEST) { PRINT("%s:%d:%s(): PROGRAMMER ERROR", __FILE__, __LINE__, __func__); \
24 PRINT(__VA_ARGS__); } abort(); } while (0)
25
26#define FATAL(...) \
27 do { if (DEBUG_TEST) { PRINT("%s:%d:%s(): INTERNAL ERROR", __FILE__, __LINE__, __func__); PRINT( \
28 __VA_ARGS__); } abort(); } while (0)
29
30
31#define PROJECT_ID 'M'
32#define PATHNAMESIZE 64
33
34/* Increasing this might break on some platforms */
35#define MAX_FRAGMENT_SIZE 200
36
37#define CONNECT_REQUEST 1
38#define CALL_REQUEST 2
39#define CLOSE_REQUEST 3
40#define VERSION_REQUEST 4
41#define READ_REQUEST 5
42#define READ_RESPONSE 6
43#define WRITE_REQUEST 7
44#define WRITE_RESPONSE 8
45#define SKIP_REQUEST 9
46#define PSA_REPLY 10
47
48#define NON_SECURE (1 << 30)
49
50/* Note that this implementation is functional and not secure */
51extern int __psa_ff_client_security_state;
52
53struct message_text {
54 int qid;
55 int32_t psa_type;
56 char buf[MAX_FRAGMENT_SIZE];
57};
58
59
60struct message {
61 long message_type;
62 struct message_text message_text;
63};
64
65struct request_msg_internal {
66 psa_invec invec;
67 size_t skip_num;
68};
69
70struct skip_request_msg {
71 long message_type;
72 struct request_msg_internal message_text;
73};
74
75typedef struct vectors {
76 const psa_invec *in_vec;
77 size_t in_len;
78 psa_outvec *out_vec;
79 size_t out_len;
80} vectors_t;
81
82typedef struct vector_sizes {
83 size_t invec_sizes[PSA_MAX_IOVEC];
84 size_t outvec_sizes[PSA_MAX_IOVEC];
85} vector_sizes_t;