quickjs-tart

quickjs-based runtime for wallet-core logic
Log | Files | Refs | README | LICENSE

common.h (2020B)


      1 /* 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 */
     51 extern int __psa_ff_client_security_state;
     52 
     53 struct message_text {
     54     int qid;
     55     int32_t psa_type;
     56     char buf[MAX_FRAGMENT_SIZE];
     57 };
     58 
     59 
     60 struct message {
     61     long message_type;
     62     struct message_text message_text;
     63 };
     64 
     65 struct request_msg_internal {
     66     psa_invec invec;
     67     size_t skip_num;
     68 };
     69 
     70 struct skip_request_msg {
     71     long message_type;
     72     struct request_msg_internal message_text;
     73 };
     74 
     75 typedef 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 
     82 typedef struct vector_sizes {
     83     size_t invec_sizes[PSA_MAX_IOVEC];
     84     size_t outvec_sizes[PSA_MAX_IOVEC];
     85 } vector_sizes_t;