quickjs-tart

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

misuse.c (4530B)


      1 
      2 #define TEST_NAME "misuse"
      3 #include "cmptest.h"
      4 
      5 #ifdef HAVE_CATCHABLE_ABRT
      6 # include <signal.h>
      7 #ifndef _WIN32
      8 # include <unistd.h>
      9 #endif
     10 
     11 static void
     12 sigabrt_handler_15(int sig)
     13 {
     14     (void) sig;
     15     _exit(0);
     16 }
     17 
     18 # ifndef SODIUM_LIBRARY_MINIMAL
     19 static void
     20 sigabrt_handler_14(int sig)
     21 {
     22     (void) sig;
     23     signal(SIGABRT, sigabrt_handler_15);
     24     assert(crypto_box_curve25519xchacha20poly1305_easy
     25            (guard_page, guard_page, crypto_stream_xchacha20_MESSAGEBYTES_MAX - 1,
     26             guard_page, guard_page, guard_page) == -1);
     27     _exit(1);
     28 }
     29 
     30 static void
     31 sigabrt_handler_13(int sig)
     32 {
     33     (void) sig;
     34     signal(SIGABRT, sigabrt_handler_14);
     35     assert(crypto_box_curve25519xchacha20poly1305_easy_afternm
     36            (guard_page, guard_page, crypto_stream_xchacha20_MESSAGEBYTES_MAX - 1,
     37             guard_page, guard_page) == -1);
     38     _exit(1);
     39 }
     40 # endif
     41 
     42 static void
     43 sigabrt_handler_12(int sig)
     44 {
     45     (void) sig;
     46 # ifdef SODIUM_LIBRARY_MINIMAL
     47     signal(SIGABRT, sigabrt_handler_15);
     48 # else
     49     signal(SIGABRT, sigabrt_handler_13);
     50 # endif
     51     assert(crypto_pwhash_str_alg((char *) guard_page,
     52                                  "", 0U, 1U, 1U, -1) == -1);
     53     _exit(1);
     54 }
     55 
     56 static void
     57 sigabrt_handler_11(int sig)
     58 {
     59     (void) sig;
     60     signal(SIGABRT, sigabrt_handler_12);
     61     assert(crypto_box_easy(guard_page, guard_page,
     62                            crypto_stream_xsalsa20_MESSAGEBYTES_MAX,
     63                            guard_page, guard_page, guard_page) == -1);
     64     _exit(1);
     65 }
     66 
     67 static void
     68 sigabrt_handler_10(int sig)
     69 {
     70     (void) sig;
     71     signal(SIGABRT, sigabrt_handler_11);
     72     assert(crypto_box_easy_afternm(guard_page, guard_page,
     73                                    crypto_stream_xsalsa20_MESSAGEBYTES_MAX,
     74                                    guard_page, guard_page) == -1);
     75     _exit(1);
     76 }
     77 
     78 static void
     79 sigabrt_handler_9(int sig)
     80 {
     81     (void) sig;
     82     signal(SIGABRT, sigabrt_handler_10);
     83     assert(sodium_base642bin(guard_page, 1, (const char *) guard_page, 1,
     84                              NULL, NULL, NULL, -1) == -1);
     85     _exit(1);
     86 }
     87 
     88 static void
     89 sigabrt_handler_8(int sig)
     90 {
     91     (void) sig;
     92     signal(SIGABRT, sigabrt_handler_9);
     93     assert(sodium_bin2base64((char *) guard_page, 1, guard_page, 1,
     94                              sodium_base64_VARIANT_ORIGINAL) == NULL);
     95     _exit(1);
     96 }
     97 
     98 static void
     99 sigabrt_handler_7(int sig)
    100 {
    101     (void) sig;
    102     signal(SIGABRT, sigabrt_handler_8);
    103     assert(sodium_bin2base64((char *) guard_page, 1,
    104                              guard_page, 1, -1) == NULL);
    105     _exit(1);
    106 }
    107 
    108 static void
    109 sigabrt_handler_6(int sig)
    110 {
    111     (void) sig;
    112     signal(SIGABRT, sigabrt_handler_7);
    113     assert(sodium_pad(NULL, guard_page, SIZE_MAX, 16, 1) == -1);
    114     _exit(1);
    115 }
    116 
    117 static void
    118 sigabrt_handler_5(int sig)
    119 {
    120     (void) sig;
    121     signal(SIGABRT, sigabrt_handler_6);
    122     assert(crypto_aead_xchacha20poly1305_ietf_encrypt(guard_page, NULL, NULL, UINT64_MAX,
    123                                                       NULL, 0, NULL,
    124                                                       guard_page, guard_page) == -1);
    125     _exit(1);
    126 }
    127 
    128 static void
    129 sigabrt_handler_4(int sig)
    130 {
    131     (void) sig;
    132     signal(SIGABRT, sigabrt_handler_5);
    133     assert(crypto_aead_chacha20poly1305_ietf_encrypt(guard_page, NULL, NULL, UINT64_MAX,
    134                                                      NULL, 0, NULL,
    135                                                      guard_page, guard_page) == -1);
    136     _exit(1);
    137 }
    138 
    139 static void
    140 sigabrt_handler_3(int sig)
    141 {
    142     (void) sig;
    143     signal(SIGABRT, sigabrt_handler_4);
    144     assert(crypto_aead_chacha20poly1305_encrypt(guard_page, NULL, NULL, UINT64_MAX,
    145                                                 NULL, 0, NULL,
    146                                                 guard_page, guard_page) == -1);
    147     _exit(1);
    148 }
    149 
    150 static void
    151 sigabrt_handler_2(int sig)
    152 {
    153     (void) sig;
    154     signal(SIGABRT, sigabrt_handler_3);
    155 #if SIZE_MAX > 0x4000000000ULL
    156     randombytes_buf_deterministic(guard_page, 0x4000000001ULL, guard_page);
    157 #else
    158     abort();
    159 #endif
    160     _exit(1);
    161 }
    162 
    163 static void
    164 sigabrt_handler_1(int sig)
    165 {
    166     (void) sig;
    167     signal(SIGABRT, sigabrt_handler_2);
    168     assert(crypto_kx_server_session_keys(NULL, NULL, guard_page, guard_page,
    169                                          guard_page) == -1);
    170     _exit(1);
    171 }
    172 
    173 int
    174 main(void)
    175 {
    176     signal(SIGABRT, sigabrt_handler_1);
    177     assert(crypto_kx_client_session_keys(NULL, NULL, guard_page, guard_page,
    178                                          guard_page) == -1);
    179     return 1;
    180 }
    181 #else
    182 int
    183 main(void)
    184 {
    185     return 0;
    186 }
    187 #endif