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