summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorEuAndreh <eu@euandre.org>2024-01-01 17:38:11 -0300
committerEuAndreh <eu@euandre.org>2024-01-02 03:54:40 -0300
commit6b9b9f5ed60b2b96e913ae67ddd706adef8df449 (patch)
tree5cfd3d7d85557261a1725ea7451fc83c1406e734 /src
parentInit project: copy files and skeletons from others (diff)
downloadpindaiba-6b9b9f5ed60b2b96e913ae67ddd706adef8df449.tar.gz
pindaiba-6b9b9f5ed60b2b96e913ae67ddd706adef8df449.tar.xz
src/*.c: Group tests under a single #ifdef; remove SipHash code
Diffstat (limited to 'src')
-rw-r--r--src/catalog.c338
-rw-r--r--src/hash.c290
-rw-r--r--src/i18n.c13
-rw-r--r--src/logerr.c18
-rw-r--r--src/random.c10
5 files changed, 194 insertions, 475 deletions
diff --git a/src/catalog.c b/src/catalog.c
index 31aef9a..d543864 100644
--- a/src/catalog.c
+++ b/src/catalog.c
@@ -10,37 +10,6 @@
#include "logerr.h"
#include "catalog.h"
-#ifdef TEST
-#include "testing.h"
-#include "../tests/slurp.h"
-#endif
-
-
-#ifdef TEST
-static const char *const
-FNAME = __FILE__ ".txt";
-
-enum TEST_MSGCATALOG_ID {
- MSG_X_FIRST = 1,
- MSG_X_1,
- MSG_X_2,
- MSG_X_LAST,
- MSG_STANDALONE,
-};
-
-static const char *const
-TEST_MSGS[] = {
- "",
- [MSG_X_FIRST]="First line\n",
- [MSG_X_1]="a second\n",
- [MSG_X_2]="a third\n",
- [MSG_X_LAST]="and the last one\n",
- [MSG_STANDALONE]="single line message\n",
- NULL
-};
-#endif
-
-
static const char *const
CATALOG_NAME = NAME;
@@ -80,43 +49,6 @@ out:
return rc;
}
-#ifdef TEST
-static int
-test_i18n_init(void) {
- int rc = 0;
-
- test_start("i18n_init()");
-
- {
- testing("simple call without touching the environment");
-
- const int should_overwrite = 1;
- if (setenv(NLSPATH_KEY, "src/%N.en.cat", should_overwrite)) {
- logerr("setenv(\"%s\", \"src/%%N.en.cat\", 1): %s\n",
- NLSPATH_KEY, strerror(errno));
- rc = -1;
- goto out;
- }
-
- if (i18n_init()) {
- logerr("i18n_init()\n");
- rc = -1;
- goto out;
- }
-
- test_ok();
- }
-
-out:
- if (i18n_destroy()) {
- logerr("i18n_destroy()\n");
- rc = -1;
- }
- return rc;
-}
-#endif
-
-
int
i18n_destroy(void) {
int rc = 0;
@@ -136,31 +68,6 @@ out:
return rc;
}
-#ifdef TEST
-static int
-test_i18n_destroy(void) {
- int rc = 0;
-
- test_start("i18n_destroy()");
-
- {
- testing("simple call without init first");
-
- if (i18n_destroy()) {
- logerr("i18n_destroy()\n");
- rc = -1;
- goto out;
- }
-
- test_ok();
- }
-
-out:
- return rc;
-}
-#endif
-
-
/**
* Infallible: always returns a valid string, no matter what.
*/
@@ -183,70 +90,137 @@ s(const char* const MSGS[], const int msg_id) {
return ret;
}
-#ifdef TEST
-static int
-test_s(void) {
+int
+s_print_msgs(
+ const char *const MSGS[],
+ FILE *restrict stream,
+ const int msg_begin,
+ const int msg_end
+) {
int rc = 0;
- test_start("_()");
- FILE *file = NULL;
- char *str = NULL;
-
- {
- testing("empty string");
-
- file = fopen(FNAME, "w");
- if (!file) {
- perror("fopen(FNAME, \"w\")");
+ for (int i = msg_begin; i <= msg_end; i++) {
+ if (fprintf(stream, "%s", s(MSGS, i)) < 0) {
+ logerr("fprintf(stream, \"%%s\", _(%d)): %s\n", i,
+ strerror(errno));
rc = -1;
goto out;
}
+ }
- // FIXME: implement correct test
+out:
+ return rc;
+}
+
+int
+s_print_msg(const char *const MSGS[], FILE *const fd, const int msg_id) {
+ return s_print_msgs(MSGS, fd, msg_id, msg_id);
+}
+int
+dump_translatable_strings(const char *const MSGS[]) {
+ int rc = 0;
+ for (size_t i = 1; MSGS[i]; i++) {
+ if (printf("%ld ", i) < 0) {
+ logerr("printf(\"%%ld\", %d): %s\n", i);
+ rc = -1;
+ goto out;
+ }
- test_ok();
- }
+ for (size_t j = 0; MSGS[i][j]; j++) {
+ if (MSGS[i][j] == '\n') {
+ if (printf("\\n") < 0) {
+ logerr("printf(\"\\\\n\"): %s\n",
+ strerror(errno));
+ rc = -1;
+ goto out;
+ }
+ } else {
+ if (printf("%c", MSGS[i][j]) < 0) {
+ logerr("printf(\"%%c\", "
+ "MSGS[%ld][%ld]): %s\n",
+ i, j, strerror(errno));
+ rc = -1;
+ goto out;
+ }
+ }
+ }
-out:
- if (str) {
- free(str);
- }
- if (file) {
- if (fclose(file)) {
- logerr("fclose(file): %s\n", strerror(errno));
+ if (printf("\n\n") < 0) {
+ logerr("printf(\"\\n\\n\"): %s\n", strerror(errno));
rc = -1;
+ goto out;
}
}
+
+out:
return rc;
}
-#endif
-int
-s_print_msgs(
- const char *const MSGS[],
- FILE *restrict stream,
- const int msg_begin,
- const int msg_end
-) {
+
+#ifdef TEST
+#include "testing.h"
+#include "../tests/slurp.h"
+
+
+static const char *const
+FNAME = __FILE__ ".txt";
+
+enum TEST_MSGCATALOG_ID {
+ MSG_X_FIRST = 1,
+ MSG_X_1,
+ MSG_X_2,
+ MSG_X_LAST,
+ MSG_STANDALONE,
+};
+
+static const char *const
+TEST_MSGS[] = {
+ "",
+ [MSG_X_FIRST]="First line\n",
+ [MSG_X_1]="a second\n",
+ [MSG_X_2]="a third\n",
+ [MSG_X_LAST]="and the last one\n",
+ [MSG_STANDALONE]="single line message\n",
+ NULL
+};
+
+static int
+test_i18n_init(void) {
int rc = 0;
- for (int i = msg_begin; i <= msg_end; i++) {
- if (fprintf(stream, "%s", s(MSGS, i)) < 0) {
- logerr("fprintf(stream, \"%%s\", _(%d)): %s\n", i,
- strerror(errno));
+ test_start("i18n_init()");
+
+ {
+ testing("simple call without touching the environment");
+
+ const int should_overwrite = 1;
+ if (setenv(NLSPATH_KEY, "src/%N.en.cat", should_overwrite)) {
+ logerr("setenv(\"%s\", \"src/%%N.en.cat\", 1): %s\n",
+ NLSPATH_KEY, strerror(errno));
rc = -1;
goto out;
}
+
+ if (i18n_init()) {
+ logerr("i18n_init()\n");
+ rc = -1;
+ goto out;
+ }
+
+ test_ok();
}
out:
+ if (i18n_destroy()) {
+ logerr("i18n_destroy()\n");
+ rc = -1;
+ }
return rc;
}
-#ifdef TEST
static int
test_s_print_msgs(void) {
int rc = 0;
@@ -352,15 +326,67 @@ out:
}
return rc;
}
-#endif
+static int
+test_s(void) {
+ int rc = 0;
-int
-s_print_msg(const char *const MSGS[], FILE *const fd, const int msg_id) {
- return s_print_msgs(MSGS, fd, msg_id, msg_id);
+ test_start("_()");
+ FILE *file = NULL;
+ char *str = NULL;
+
+ {
+ testing("empty string");
+
+ file = fopen(FNAME, "w");
+ if (!file) {
+ perror("fopen(FNAME, \"w\")");
+ rc = -1;
+ goto out;
+ }
+
+ // FIXME: implement correct test
+
+
+
+ test_ok();
+ }
+
+out:
+ if (str) {
+ free(str);
+ }
+ if (file) {
+ if (fclose(file)) {
+ logerr("fclose(file): %s\n", strerror(errno));
+ rc = -1;
+ }
+ }
+ return rc;
+}
+
+static int
+test_i18n_destroy(void) {
+ int rc = 0;
+
+ test_start("i18n_destroy()");
+
+ {
+ testing("simple call without init first");
+
+ if (i18n_destroy()) {
+ logerr("i18n_destroy()\n");
+ rc = -1;
+ goto out;
+ }
+
+ test_ok();
+ }
+
+out:
+ return rc;
}
-#ifdef TEST
static int
test_s_print_msg(void) {
int rc = 0;
@@ -422,51 +448,7 @@ out:
}
return rc;
}
-#endif
-
-
-int
-dump_translatable_strings(const char *const MSGS[]) {
- int rc = 0;
-
- for (size_t i = 1; MSGS[i]; i++) {
- if (printf("%ld ", i) < 0) {
- logerr("printf(\"%%ld\", %d): %s\n", i);
- rc = -1;
- goto out;
- }
-
- for (size_t j = 0; MSGS[i][j]; j++) {
- if (MSGS[i][j] == '\n') {
- if (printf("\\n") < 0) {
- logerr("printf(\"\\\\n\"): %s\n",
- strerror(errno));
- rc = -1;
- goto out;
- }
- } else {
- if (printf("%c", MSGS[i][j]) < 0) {
- logerr("printf(\"%%c\", "
- "MSGS[%ld][%ld]): %s\n",
- i, j, strerror(errno));
- rc = -1;
- goto out;
- }
- }
- }
-
- if (printf("\n\n") < 0) {
- logerr("printf(\"\\n\\n\"): %s\n", strerror(errno));
- rc = -1;
- goto out;
- }
- }
-
-out:
- return rc;
-}
-#ifdef TEST
int
main(void) {
int rc = 0;
diff --git a/src/hash.c b/src/hash.c
index c8fd5d6..18ae1f8 100644
--- a/src/hash.c
+++ b/src/hash.c
@@ -2,19 +2,18 @@
#include <assert.h>
#include <stdbool.h>
+#include <stddef.h>
#include <stdio.h>
#include <stdint.h>
#include <string.h>
#include <pthread.h>
+#include <siphash.h>
+
#include "logerr.h"
#include "random.h"
#include "hash.h"
-#ifdef TEST
-#include "testing.h"
-#endif
-
// FIXME: verify that this is the correct type of mutex for the use case
static pthread_mutex_t
@@ -96,7 +95,19 @@ out:
return rc;
}
+/**
+ * @tags infallible
+*/
+void
+hash(const size_t len, const void *const in, uint8_t out[OUTPUT_LENGTH]) {
+ assert(SEED.initialized && "Missing call to hash_init() before using hash().");
+ siphash(in, len, SEED.bytes, out, 16);
+ return;
+}
+
+
#ifdef TEST
+#include "testing.h"
static void *
hash_init_thread(void *data) {
int *ret = (int *)data;
@@ -306,274 +317,7 @@ out:
}
return rc;
}
-#endif
-
-
-#define ROTL(x, b) (uint64_t)(((x) << (b)) | ((x) >> (64 - (b))))
-
-#define U32TO8_LE(p, v) \
- (p)[0] = (uint8_t)((v)); \
- (p)[1] = (uint8_t)((v) >> 8); \
- (p)[2] = (uint8_t)((v) >> 16); \
- (p)[3] = (uint8_t)((v) >> 24);
-
-#define U64TO8_LE(p, v) \
- U32TO8_LE((p), (uint32_t)((v))); \
- U32TO8_LE((p) + 4, (uint32_t)((v) >> 32));
-
-#define U8TO64_LE(p) \
- (((uint64_t)((p)[0])) | ((uint64_t)((p)[1]) << 8) | \
- ((uint64_t)((p)[2]) << 16) | ((uint64_t)((p)[3]) << 24) | \
- ((uint64_t)((p)[4]) << 32) | ((uint64_t)((p)[5]) << 40) | \
- ((uint64_t)((p)[6]) << 48) | ((uint64_t)((p)[7]) << 56))
-
-#define SIPROUND \
- do { \
- v0 += v1; \
- v1 = ROTL(v1, 13); \
- v1 ^= v0; \
- v0 = ROTL(v0, 32); \
- v2 += v3; \
- v3 = ROTL(v3, 16); \
- v3 ^= v2; \
- v0 += v3; \
- v3 = ROTL(v3, 21); \
- v3 ^= v0; \
- v2 += v1; \
- v1 = ROTL(v1, 17); \
- v1 ^= v2; \
- v2 = ROTL(v2, 32); \
- } while (0)
-
-/**
- * Computes a SipHash value
- * [in] key: pointer to the key data (read-only), must be 16 bytes
- * [in] input: pointer to input data (read-only)
- * [in] inlen: input data length in bytes (any size_t value)
- * [out] out: pointer to output data (write-only), 16 bytes must be allocated
- *
- * @tags infallible
-*/
-static void
-sip_hash(
- const uint8_t *const key,
- const size_t inlen,
- const void *const input,
- uint8_t out[OUTPUT_LENGTH]
-) {
- static const int cROUNDS = 2;
- static const int dROUNDS = 4;
-
- const unsigned char *ni = (const unsigned char *)input;
- const unsigned char *kk = (const unsigned char *)key;
-
- uint64_t v0 = UINT64_C(0x736f6d6570736575);
- uint64_t v1 = UINT64_C(0x646f72616e646f6d);
- uint64_t v2 = UINT64_C(0x6c7967656e657261);
- uint64_t v3 = UINT64_C(0x7465646279746573);
- uint64_t k0 = U8TO64_LE(kk); /// Here we are relying on `key` to
- uint64_t k1 = U8TO64_LE(kk + 8); /// be 16 bytes long.
- uint64_t m;
- int i;
- const unsigned char *end = ni + inlen - (inlen % sizeof(uint64_t));
- const int left = inlen & 7;
- uint64_t b = ((uint64_t)inlen) << 56;
- v3 ^= k1;
- v2 ^= k0;
- v1 ^= k1;
- v0 ^= k0;
-
- v1 ^= 0xee;
-
- for (; ni != end; ni += 8) {
- m = U8TO64_LE(ni);
- v3 ^= m;
-
- for (i = 0; i < cROUNDS; ++i) {
- SIPROUND;
- }
-
- v0 ^= m;
- }
-
- switch (left) {
- case 7:
- b |= ((uint64_t)ni[6]) << 48;
- /* fall-through */
- case 6:
- b |= ((uint64_t)ni[5]) << 40;
- /* fall-through */
- case 5:
- b |= ((uint64_t)ni[4]) << 32;
- /* fall-through */
- case 4:
- b |= ((uint64_t)ni[3]) << 24;
- /* fall-through */
- case 3:
- b |= ((uint64_t)ni[2]) << 16;
- /* fall-through */
- case 2:
- b |= ((uint64_t)ni[1]) << 8;
- /* fall-through */
- case 1:
- b |= ((uint64_t)ni[0]);
- break;
- case 0:
- break;
- }
-
- v3 ^= b;
-
- for (i = 0; i < cROUNDS; ++i) {
- SIPROUND;
- }
-
- v0 ^= b;
-
- v2 ^= 0xee;
-
- for (i = 0; i < dROUNDS; ++i) {
- SIPROUND;
- }
-
- b = v0 ^ v1 ^ v2 ^ v3;
- U64TO8_LE(out, b);
-
- v1 ^= 0xdd;
-
- for (i = 0; i < dROUNDS; ++i) {
- SIPROUND;
- }
-
- b = v0 ^ v1 ^ v2 ^ v3;
- U64TO8_LE(out + 8, b);
-
- return;
-}
-
-#ifdef TEST
-static const uint8_t
-TEST_VECTORS[64][OUTPUT_LENGTH] = {
- { 0xa3, 0x81, 0x7f, 0x04, 0xba, 0x25, 0xa8, 0xe6, 0x6d, 0xf6, 0x72, 0x14, 0xc7, 0x55, 0x02, 0x93 },
- { 0xda, 0x87, 0xc1, 0xd8, 0x6b, 0x99, 0xaf, 0x44, 0x34, 0x76, 0x59, 0x11, 0x9b, 0x22, 0xfc, 0x45 },
- { 0x81, 0x77, 0x22, 0x8d, 0xa4, 0xa4, 0x5d, 0xc7, 0xfc, 0xa3, 0x8b, 0xde, 0xf6, 0x0a, 0xff, 0xe4 },
- { 0x9c, 0x70, 0xb6, 0x0c, 0x52, 0x67, 0xa9, 0x4e, 0x5f, 0x33, 0xb6, 0xb0, 0x29, 0x85, 0xed, 0x51 },
- { 0xf8, 0x81, 0x64, 0xc1, 0x2d, 0x9c, 0x8f, 0xaf, 0x7d, 0x0f, 0x6e, 0x7c, 0x7b, 0xcd, 0x55, 0x79 },
- { 0x13, 0x68, 0x87, 0x59, 0x80, 0x77, 0x6f, 0x88, 0x54, 0x52, 0x7a, 0x07, 0x69, 0x0e, 0x96, 0x27 },
- { 0x14, 0xee, 0xca, 0x33, 0x8b, 0x20, 0x86, 0x13, 0x48, 0x5e, 0xa0, 0x30, 0x8f, 0xd7, 0xa1, 0x5e },
- { 0xa1, 0xf1, 0xeb, 0xbe, 0xd8, 0xdb, 0xc1, 0x53, 0xc0, 0xb8, 0x4a, 0xa6, 0x1f, 0xf0, 0x82, 0x39 },
- { 0x3b, 0x62, 0xa9, 0xba, 0x62, 0x58, 0xf5, 0x61, 0x0f, 0x83, 0xe2, 0x64, 0xf3, 0x14, 0x97, 0xb4 },
- { 0x26, 0x44, 0x99, 0x06, 0x0a, 0xd9, 0xba, 0xab, 0xc4, 0x7f, 0x8b, 0x02, 0xbb, 0x6d, 0x71, 0xed },
- { 0x00, 0x11, 0x0d, 0xc3, 0x78, 0x14, 0x69, 0x56, 0xc9, 0x54, 0x47, 0xd3, 0xf3, 0xd0, 0xfb, 0xba },
- { 0x01, 0x51, 0xc5, 0x68, 0x38, 0x6b, 0x66, 0x77, 0xa2, 0xb4, 0xdc, 0x6f, 0x81, 0xe5, 0xdc, 0x18 },
- { 0xd6, 0x26, 0xb2, 0x66, 0x90, 0x5e, 0xf3, 0x58, 0x82, 0x63, 0x4d, 0xf6, 0x85, 0x32, 0xc1, 0x25 },
- { 0x98, 0x69, 0xe2, 0x47, 0xe9, 0xc0, 0x8b, 0x10, 0xd0, 0x29, 0x93, 0x4f, 0xc4, 0xb9, 0x52, 0xf7 },
- { 0x31, 0xfc, 0xef, 0xac, 0x66, 0xd7, 0xde, 0x9c, 0x7e, 0xc7, 0x48, 0x5f, 0xe4, 0x49, 0x49, 0x02 },
- { 0x54, 0x93, 0xe9, 0x99, 0x33, 0xb0, 0xa8, 0x11, 0x7e, 0x08, 0xec, 0x0f, 0x97, 0xcf, 0xc3, 0xd9 },
- { 0x6e, 0xe2, 0xa4, 0xca, 0x67, 0xb0, 0x54, 0xbb, 0xfd, 0x33, 0x15, 0xbf, 0x85, 0x23, 0x05, 0x77 },
- { 0x47, 0x3d, 0x06, 0xe8, 0x73, 0x8d, 0xb8, 0x98, 0x54, 0xc0, 0x66, 0xc4, 0x7a, 0xe4, 0x77, 0x40 },
- { 0xa4, 0x26, 0xe5, 0xe4, 0x23, 0xbf, 0x48, 0x85, 0x29, 0x4d, 0xa4, 0x81, 0xfe, 0xae, 0xf7, 0x23 },
- { 0x78, 0x01, 0x77, 0x31, 0xcf, 0x65, 0xfa, 0xb0, 0x74, 0xd5, 0x20, 0x89, 0x52, 0x51, 0x2e, 0xb1 },
- { 0x9e, 0x25, 0xfc, 0x83, 0x3f, 0x22, 0x90, 0x73, 0x3e, 0x93, 0x44, 0xa5, 0xe8, 0x38, 0x39, 0xeb },
- { 0x56, 0x8e, 0x49, 0x5a, 0xbe, 0x52, 0x5a, 0x21, 0x8a, 0x22, 0x14, 0xcd, 0x3e, 0x07, 0x1d, 0x12 },
- { 0x4a, 0x29, 0xb5, 0x45, 0x52, 0xd1, 0x6b, 0x9a, 0x46, 0x9c, 0x10, 0x52, 0x8e, 0xff, 0x0a, 0xae },
- { 0xc9, 0xd1, 0x84, 0xdd, 0xd5, 0xa9, 0xf5, 0xe0, 0xcf, 0x8c, 0xe2, 0x9a, 0x9a, 0xbf, 0x69, 0x1c },
- { 0x2d, 0xb4, 0x79, 0xae, 0x78, 0xbd, 0x50, 0xd8, 0x88, 0x2a, 0x8a, 0x17, 0x8a, 0x61, 0x32, 0xad },
- { 0x8e, 0xce, 0x5f, 0x04, 0x2d, 0x5e, 0x44, 0x7b, 0x50, 0x51, 0xb9, 0xea, 0xcb, 0x8d, 0x8f, 0x6f },
- { 0x9c, 0x0b, 0x53, 0xb4, 0xb3, 0xc3, 0x07, 0xe8, 0x7e, 0xae, 0xe0, 0x86, 0x78, 0x14, 0x1f, 0x66 },
- { 0xab, 0xf2, 0x48, 0xaf, 0x69, 0xa6, 0xea, 0xe4, 0xbf, 0xd3, 0xeb, 0x2f, 0x12, 0x9e, 0xeb, 0x94 },
- { 0x06, 0x64, 0xda, 0x16, 0x68, 0x57, 0x4b, 0x88, 0xb9, 0x35, 0xf3, 0x02, 0x73, 0x58, 0xae, 0xf4 },
- { 0xaa, 0x4b, 0x9d, 0xc4, 0xbf, 0x33, 0x7d, 0xe9, 0x0c, 0xd4, 0xfd, 0x3c, 0x46, 0x7c, 0x6a, 0xb7 },
- { 0xea, 0x5c, 0x7f, 0x47, 0x1f, 0xaf, 0x6b, 0xde, 0x2b, 0x1a, 0xd7, 0xd4, 0x68, 0x6d, 0x22, 0x87 },
- { 0x29, 0x39, 0xb0, 0x18, 0x32, 0x23, 0xfa, 0xfc, 0x17, 0x23, 0xde, 0x4f, 0x52, 0xc4, 0x3d, 0x35 },
- { 0x7c, 0x39, 0x56, 0xca, 0x5e, 0xea, 0xfc, 0x3e, 0x36, 0x3e, 0x9d, 0x55, 0x65, 0x46, 0xeb, 0x68 },
- { 0x77, 0xc6, 0x07, 0x71, 0x46, 0xf0, 0x1c, 0x32, 0xb6, 0xb6, 0x9d, 0x5f, 0x4e, 0xa9, 0xff, 0xcf },
- { 0x37, 0xa6, 0x98, 0x6c, 0xb8, 0x84, 0x7e, 0xdf, 0x09, 0x25, 0xf0, 0xf1, 0x30, 0x9b, 0x54, 0xde },
- { 0xa7, 0x05, 0xf0, 0xe6, 0x9d, 0xa9, 0xa8, 0xf9, 0x07, 0x24, 0x1a, 0x2e, 0x92, 0x3c, 0x8c, 0xc8 },
- { 0x3d, 0xc4, 0x7d, 0x1f, 0x29, 0xc4, 0x48, 0x46, 0x1e, 0x9e, 0x76, 0xed, 0x90, 0x4f, 0x67, 0x11 },
- { 0x0d, 0x62, 0xbf, 0x01, 0xe6, 0xfc, 0x0e, 0x1a, 0x0d, 0x3c, 0x47, 0x51, 0xc5, 0xd3, 0x69, 0x2b },
- { 0x8c, 0x03, 0x46, 0x8b, 0xca, 0x7c, 0x66, 0x9e, 0xe4, 0xfd, 0x5e, 0x08, 0x4b, 0xbe, 0xe7, 0xb5 },
- { 0x52, 0x8a, 0x5b, 0xb9, 0x3b, 0xaf, 0x2c, 0x9c, 0x44, 0x73, 0xcc, 0xe5, 0xd0, 0xd2, 0x2b, 0xd9 },
- { 0xdf, 0x6a, 0x30, 0x1e, 0x95, 0xc9, 0x5d, 0xad, 0x97, 0xae, 0x0c, 0xc8, 0xc6, 0x91, 0x3b, 0xd8 },
- { 0x80, 0x11, 0x89, 0x90, 0x2c, 0x85, 0x7f, 0x39, 0xe7, 0x35, 0x91, 0x28, 0x5e, 0x70, 0xb6, 0xdb },
- { 0xe6, 0x17, 0x34, 0x6a, 0xc9, 0xc2, 0x31, 0xbb, 0x36, 0x50, 0xae, 0x34, 0xcc, 0xca, 0x0c, 0x5b },
- { 0x27, 0xd9, 0x34, 0x37, 0xef, 0xb7, 0x21, 0xaa, 0x40, 0x18, 0x21, 0xdc, 0xec, 0x5a, 0xdf, 0x89 },
- { 0x89, 0x23, 0x7d, 0x9d, 0xed, 0x9c, 0x5e, 0x78, 0xd8, 0xb1, 0xc9, 0xb1, 0x66, 0xcc, 0x73, 0x42 },
- { 0x4a, 0x6d, 0x80, 0x91, 0xbf, 0x5e, 0x7d, 0x65, 0x11, 0x89, 0xfa, 0x94, 0xa2, 0x50, 0xb1, 0x4c },
- { 0x0e, 0x33, 0xf9, 0x60, 0x55, 0xe7, 0xae, 0x89, 0x3f, 0xfc, 0x0e, 0x3d, 0xcf, 0x49, 0x29, 0x02 },
- { 0xe6, 0x1c, 0x43, 0x2b, 0x72, 0x0b, 0x19, 0xd1, 0x8e, 0xc8, 0xd8, 0x4b, 0xdc, 0x63, 0x15, 0x1b },
- { 0xf7, 0xe5, 0xae, 0xf5, 0x49, 0xf7, 0x82, 0xcf, 0x37, 0x90, 0x55, 0xa6, 0x08, 0x26, 0x9b, 0x16 },
- { 0x43, 0x8d, 0x03, 0x0f, 0xd0, 0xb7, 0xa5, 0x4f, 0xa8, 0x37, 0xf2, 0xad, 0x20, 0x1a, 0x64, 0x03 },
- { 0xa5, 0x90, 0xd3, 0xee, 0x4f, 0xbf, 0x04, 0xe3, 0x24, 0x7e, 0x0d, 0x27, 0xf2, 0x86, 0x42, 0x3f },
- { 0x5f, 0xe2, 0xc1, 0xa1, 0x72, 0xfe, 0x93, 0xc4, 0xb1, 0x5c, 0xd3, 0x7c, 0xae, 0xf9, 0xf5, 0x38 },
- { 0x2c, 0x97, 0x32, 0x5c, 0xbd, 0x06, 0xb3, 0x6e, 0xb2, 0x13, 0x3d, 0xd0, 0x8b, 0x3a, 0x01, 0x7c },
- { 0x92, 0xc8, 0x14, 0x22, 0x7a, 0x6b, 0xca, 0x94, 0x9f, 0xf0, 0x65, 0x9f, 0x00, 0x2a, 0xd3, 0x9e },
- { 0xdc, 0xe8, 0x50, 0x11, 0x0b, 0xd8, 0x32, 0x8c, 0xfb, 0xd5, 0x08, 0x41, 0xd6, 0x91, 0x1d, 0x87 },
- { 0x67, 0xf1, 0x49, 0x84, 0xc7, 0xda, 0x79, 0x12, 0x48, 0xe3, 0x2b, 0xb5, 0x92, 0x25, 0x83, 0xda },
- { 0x19, 0x38, 0xf2, 0xcf, 0x72, 0xd5, 0x4e, 0xe9, 0x7e, 0x94, 0x16, 0x6f, 0xa9, 0x1d, 0x2a, 0x36 },
- { 0x74, 0x48, 0x1e, 0x96, 0x46, 0xed, 0x49, 0xfe, 0x0f, 0x62, 0x24, 0x30, 0x16, 0x04, 0x69, 0x8e },
- { 0x57, 0xfc, 0xa5, 0xde, 0x98, 0xa9, 0xd6, 0xd8, 0x00, 0x64, 0x38, 0xd0, 0x58, 0x3d, 0x8a, 0x1d },
- { 0x9f, 0xec, 0xde, 0x1c, 0xef, 0xdc, 0x1c, 0xbe, 0xd4, 0x76, 0x36, 0x74, 0xd9, 0x57, 0x53, 0x59 },
- { 0xe3, 0x04, 0x0c, 0x00, 0xeb, 0x28, 0xf1, 0x53, 0x66, 0xca, 0x73, 0xcb, 0xd8, 0x72, 0xe7, 0x40 },
- { 0x76, 0x97, 0x00, 0x9a, 0x6a, 0x83, 0x1d, 0xfe, 0xcc, 0xa9, 0x1c, 0x59, 0x93, 0x67, 0x0f, 0x7a },
- { 0x58, 0x53, 0x54, 0x23, 0x21, 0xf5, 0x67, 0xa0, 0x05, 0xd5, 0x47, 0xa4, 0xf0, 0x47, 0x59, 0xbd },
- { 0x51, 0x50, 0xd1, 0x77, 0x2f, 0x50, 0x83, 0x4a, 0x50, 0x3e, 0x06, 0x9a, 0x97, 0x3f, 0xbd, 0x7c },
-};
-/**
- * @tags infallible
-*/
-static void
-test_sip_hash(void) {
- test_start("sip_hash()");
-
- {
- testing("upstream test vectors");
-
- const size_t LEN = 64;
- uint8_t in[64 /* LEN */];
-
- uint8_t out[OUTPUT_LENGTH];
- struct Seed key;
-
- const uint8_t length = sizeof(SEED.bytes) / sizeof(SEED.bytes[0]);
- for (uint8_t i = 0; i < length; ++i) {
- key.bytes[i] = i;
- }
-
- for (uint8_t i = 0; i < LEN; ++i) {
- in[i] = i;
- }
-
- for (uint8_t i = 0; i < LEN; ++i) {
- sip_hash(key.bytes, i, in, out);
- for (uint8_t j = 0; j < OUTPUT_LENGTH; j++) {
- assert(out[j] == TEST_VECTORS[i][j]);
- }
- }
-
- test_ok();
- }
-
- return;
-}
-#endif
-
-
-/**
- * @tags infallible
-*/
-void
-hash(const size_t len, const void *const in, uint8_t out[OUTPUT_LENGTH]) {
- assert(SEED.initialized && "Missing call to hash_init() before using hash().");
- sip_hash(SEED.bytes, len, in, out);
- return;
-}
-
-#ifdef TEST
-/**
- * @tags infallible
-*/
static void
test_hash(void) {
test_start("hash()");
@@ -621,10 +365,7 @@ test_hash(void) {
return;
}
-#endif
-
-#ifdef TEST
int
main(void) {
int rc = 0;
@@ -635,7 +376,6 @@ main(void) {
goto out;
}
- test_sip_hash();
test_hash();
out:
diff --git a/src/i18n.c b/src/i18n.c
index 60d900a..0711389 100644
--- a/src/i18n.c
+++ b/src/i18n.c
@@ -4,12 +4,6 @@
#include "i18n.h"
-#ifdef TEST
-#include <stdlib.h>
-
-#include "logerr.h"
-#include "catalog.h"
-#endif
const char *const
MSGS[] = {
@@ -55,7 +49,14 @@ MSGS[] = {
};
+
#ifdef TEST
+#include <stdlib.h>
+
+#include "logerr.h"
+#include "catalog.h"
+
+
int
main(void) {
int rc = 0;
diff --git a/src/logerr.c b/src/logerr.c
index eb160d2..ab13e78 100644
--- a/src/logerr.c
+++ b/src/logerr.c
@@ -6,15 +6,6 @@
#include "logerr.h"
-#ifdef TEST
-#include <assert.h>
-#include <errno.h>
-#include <string.h>
-
-#include "testing.h"
-#include "../tests/slurp.h"
-#endif
-
/**
* @tags infallible
@@ -38,7 +29,16 @@ vlogerr(
return;
}
+
#ifdef TEST
+#include <assert.h>
+#include <errno.h>
+#include <string.h>
+
+#include "testing.h"
+#include "../tests/slurp.h"
+
+
static const char *const
FNAME = __FILE__ ".txt";
diff --git a/src/random.c b/src/random.c
index d92d533..c6da688 100644
--- a/src/random.c
+++ b/src/random.c
@@ -10,10 +10,6 @@
#include "logerr.h"
#include "random.h"
-#ifdef TEST
-#include "testing.h"
-#endif
-
int
urandom_bytes(const size_t n, uint8_t (*const addr)[]) {
@@ -46,7 +42,10 @@ out:
return rc;
}
+
#ifdef TEST
+#include "testing.h"
+
static int
test_urandom_bytes(void) {
int rc = 0;
@@ -102,10 +101,7 @@ test_urandom_bytes(void) {
out:
return rc;
}
-#endif
-
-#ifdef TEST
int
main(void) {
int rc = 0;