aboutsummaryrefslogtreecommitdiffstats
path: root/src/libcryptobox/base64/base64.c
diff options
context:
space:
mode:
authorVsevolod Stakhov <vsevolod@rspamd.com>2023-07-26 10:49:23 +0100
committerVsevolod Stakhov <vsevolod@rspamd.com>2023-07-26 10:49:23 +0100
commit537a7180a0d5132c11636c4fd8b1450cd99d352c (patch)
treefb9f8c84955a411bdffbd6371ea32f2716fb3687 /src/libcryptobox/base64/base64.c
parent5fd7a90fdaa33f52c59bdb0ca84451e5c1e22365 (diff)
downloadrspamd-537a7180a0d5132c11636c4fd8b1450cd99d352c.tar.gz
rspamd-537a7180a0d5132c11636c4fd8b1450cd99d352c.zip
[Rework] Use clang-format to unify formatting in all sources
No meaningful changes.
Diffstat (limited to 'src/libcryptobox/base64/base64.c')
-rw-r--r--src/libcryptobox/base64/base64.c368
1 files changed, 305 insertions, 63 deletions
diff --git a/src/libcryptobox/base64/base64.c b/src/libcryptobox/base64/base64.c
index efa356252..0dc93b3d2 100644
--- a/src/libcryptobox/base64/base64.c
+++ b/src/libcryptobox/base64/base64.c
@@ -24,24 +24,264 @@
extern unsigned cpu_config;
const uint8_t
-base64_table_dec[256] =
-{
- 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
- 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
- 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 62, 255, 255, 255, 63,
- 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 255, 255, 255, 254, 255, 255,
- 255, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
- 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 255, 255, 255, 255, 255,
- 255, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
- 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 255, 255, 255, 255, 255,
- 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
- 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
- 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
- 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
- 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
- 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
- 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
- 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ base64_table_dec[256] =
+ {
+ 255,
+ 255,
+ 255,
+ 255,
+ 255,
+ 255,
+ 255,
+ 255,
+ 255,
+ 255,
+ 255,
+ 255,
+ 255,
+ 255,
+ 255,
+ 255,
+ 255,
+ 255,
+ 255,
+ 255,
+ 255,
+ 255,
+ 255,
+ 255,
+ 255,
+ 255,
+ 255,
+ 255,
+ 255,
+ 255,
+ 255,
+ 255,
+ 255,
+ 255,
+ 255,
+ 255,
+ 255,
+ 255,
+ 255,
+ 255,
+ 255,
+ 255,
+ 255,
+ 62,
+ 255,
+ 255,
+ 255,
+ 63,
+ 52,
+ 53,
+ 54,
+ 55,
+ 56,
+ 57,
+ 58,
+ 59,
+ 60,
+ 61,
+ 255,
+ 255,
+ 255,
+ 254,
+ 255,
+ 255,
+ 255,
+ 0,
+ 1,
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7,
+ 8,
+ 9,
+ 10,
+ 11,
+ 12,
+ 13,
+ 14,
+ 15,
+ 16,
+ 17,
+ 18,
+ 19,
+ 20,
+ 21,
+ 22,
+ 23,
+ 24,
+ 25,
+ 255,
+ 255,
+ 255,
+ 255,
+ 255,
+ 255,
+ 26,
+ 27,
+ 28,
+ 29,
+ 30,
+ 31,
+ 32,
+ 33,
+ 34,
+ 35,
+ 36,
+ 37,
+ 38,
+ 39,
+ 40,
+ 41,
+ 42,
+ 43,
+ 44,
+ 45,
+ 46,
+ 47,
+ 48,
+ 49,
+ 50,
+ 51,
+ 255,
+ 255,
+ 255,
+ 255,
+ 255,
+ 255,
+ 255,
+ 255,
+ 255,
+ 255,
+ 255,
+ 255,
+ 255,
+ 255,
+ 255,
+ 255,
+ 255,
+ 255,
+ 255,
+ 255,
+ 255,
+ 255,
+ 255,
+ 255,
+ 255,
+ 255,
+ 255,
+ 255,
+ 255,
+ 255,
+ 255,
+ 255,
+ 255,
+ 255,
+ 255,
+ 255,
+ 255,
+ 255,
+ 255,
+ 255,
+ 255,
+ 255,
+ 255,
+ 255,
+ 255,
+ 255,
+ 255,
+ 255,
+ 255,
+ 255,
+ 255,
+ 255,
+ 255,
+ 255,
+ 255,
+ 255,
+ 255,
+ 255,
+ 255,
+ 255,
+ 255,
+ 255,
+ 255,
+ 255,
+ 255,
+ 255,
+ 255,
+ 255,
+ 255,
+ 255,
+ 255,
+ 255,
+ 255,
+ 255,
+ 255,
+ 255,
+ 255,
+ 255,
+ 255,
+ 255,
+ 255,
+ 255,
+ 255,
+ 255,
+ 255,
+ 255,
+ 255,
+ 255,
+ 255,
+ 255,
+ 255,
+ 255,
+ 255,
+ 255,
+ 255,
+ 255,
+ 255,
+ 255,
+ 255,
+ 255,
+ 255,
+ 255,
+ 255,
+ 255,
+ 255,
+ 255,
+ 255,
+ 255,
+ 255,
+ 255,
+ 255,
+ 255,
+ 255,
+ 255,
+ 255,
+ 255,
+ 255,
+ 255,
+ 255,
+ 255,
+ 255,
+ 255,
+ 255,
+ 255,
+ 255,
+ 255,
+ 255,
+ 255,
+ 255,
+ 255,
+ 255,
+ 255,
+ 255,
};
static const char base64_alphabet[] = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz+/";
@@ -51,52 +291,54 @@ typedef struct base64_impl {
unsigned short min_len;
unsigned int cpu_flags;
const char *desc;
- int (*decode) (const char *in, size_t inlen,
- unsigned char *out, size_t *outlen);
+ int (*decode)(const char *in, size_t inlen,
+ unsigned char *out, size_t *outlen);
} base64_impl_t;
#define BASE64_DECLARE(ext) \
- int base64_decode_##ext(const char *in, size_t inlen, unsigned char *out, size_t *outlen);
-#define BASE64_IMPL(cpuflags, min_len, desc, ext) \
- {0, (min_len), (cpuflags), desc, base64_decode_##ext}
+ int base64_decode_##ext(const char *in, size_t inlen, unsigned char *out, size_t *outlen);
+#define BASE64_IMPL(cpuflags, min_len, desc, ext) \
+ { \
+ 0, (min_len), (cpuflags), desc, base64_decode_##ext \
+ }
BASE64_DECLARE(ref);
#define BASE64_REF BASE64_IMPL(0, 0, "ref", ref)
#ifdef RSPAMD_HAS_TARGET_ATTR
-# if defined(HAVE_SSE42)
-int base64_decode_sse42 (const char *in, size_t inlen,
- unsigned char *out, size_t *outlen) __attribute__((__target__("sse4.2")));
+#if defined(HAVE_SSE42)
+int base64_decode_sse42(const char *in, size_t inlen,
+ unsigned char *out, size_t *outlen) __attribute__((__target__("sse4.2")));
BASE64_DECLARE(sse42);
-# define BASE64_SSE42 BASE64_IMPL(CPUID_SSE42, 24, "sse42", sse42)
-# endif
+#define BASE64_SSE42 BASE64_IMPL(CPUID_SSE42, 24, "sse42", sse42)
+#endif
#endif
#ifdef RSPAMD_HAS_TARGET_ATTR
-# if defined(HAVE_AVX2)
-int base64_decode_avx2 (const char *in, size_t inlen,
- unsigned char *out, size_t *outlen) __attribute__((__target__("avx2")));
+#if defined(HAVE_AVX2)
+int base64_decode_avx2(const char *in, size_t inlen,
+ unsigned char *out, size_t *outlen) __attribute__((__target__("avx2")));
BASE64_DECLARE(avx2);
-# define BASE64_AVX2 BASE64_IMPL(CPUID_AVX2, 128, "avx2", avx2)
-# endif
+#define BASE64_AVX2 BASE64_IMPL(CPUID_AVX2, 128, "avx2", avx2)
+#endif
#endif
static base64_impl_t base64_list[] = {
- BASE64_REF,
+ BASE64_REF,
#ifdef BASE64_SSE42
- BASE64_SSE42,
+ BASE64_SSE42,
#endif
#ifdef BASE64_AVX2
- BASE64_AVX2,
+ BASE64_AVX2,
#endif
};
static const base64_impl_t *base64_ref = &base64_list[0];
const char *
-base64_load (void)
+base64_load(void)
{
guint i;
const base64_impl_t *opt_impl = base64_ref;
@@ -105,7 +347,7 @@ base64_load (void)
base64_list[0].enabled = true;
if (cpu_config != 0) {
- for (i = 1; i < G_N_ELEMENTS (base64_list); i++) {
+ for (i = 1; i < G_N_ELEMENTS(base64_list); i++) {
if (base64_list[i].cpu_flags & cpu_config) {
base64_list[i].enabled = true;
opt_impl = &base64_list[i];
@@ -118,68 +360,68 @@ base64_load (void)
}
gboolean
-rspamd_cryptobox_base64_decode (const gchar *in, gsize inlen,
- guchar *out, gsize *outlen)
+rspamd_cryptobox_base64_decode(const gchar *in, gsize inlen,
+ guchar *out, gsize *outlen)
{
const base64_impl_t *opt_impl = base64_ref;
- for (gint i = G_N_ELEMENTS (base64_list) - 1; i > 0; i --) {
+ for (gint i = G_N_ELEMENTS(base64_list) - 1; i > 0; i--) {
if (base64_list[i].enabled && base64_list[i].min_len <= inlen) {
opt_impl = &base64_list[i];
break;
}
}
- return opt_impl->decode (in, inlen, out, outlen);
+ return opt_impl->decode(in, inlen, out, outlen);
}
double
-base64_test (bool generic, size_t niters, size_t len, size_t str_len)
+base64_test(bool generic, size_t niters, size_t len, size_t str_len)
{
size_t cycles;
guchar *in, *out, *tmp;
gdouble t1, t2, total = 0;
gsize outlen;
- g_assert (len > 0);
- in = g_malloc (len);
- tmp = g_malloc (len);
- ottery_rand_bytes (in, len);
+ g_assert(len > 0);
+ in = g_malloc(len);
+ tmp = g_malloc(len);
+ ottery_rand_bytes(in, len);
- out = rspamd_encode_base64_fold (in, len, str_len, &outlen,
- RSPAMD_TASK_NEWLINES_CRLF);
+ out = rspamd_encode_base64_fold(in, len, str_len, &outlen,
+ RSPAMD_TASK_NEWLINES_CRLF);
if (generic) {
- base64_list[0].decode (out, outlen, tmp, &len);
+ base64_list[0].decode(out, outlen, tmp, &len);
}
else {
- rspamd_cryptobox_base64_decode (out, outlen, tmp, &len);
+ rspamd_cryptobox_base64_decode(out, outlen, tmp, &len);
}
- g_assert (memcmp (in, tmp, len) == 0);
+ g_assert(memcmp(in, tmp, len) == 0);
- for (cycles = 0; cycles < niters; cycles ++) {
- t1 = rspamd_get_ticks (TRUE);
+ for (cycles = 0; cycles < niters; cycles++) {
+ t1 = rspamd_get_ticks(TRUE);
if (generic) {
- base64_list[0].decode (out, outlen, tmp, &len);
+ base64_list[0].decode(out, outlen, tmp, &len);
}
else {
- rspamd_cryptobox_base64_decode (out, outlen, tmp, &len);
+ rspamd_cryptobox_base64_decode(out, outlen, tmp, &len);
}
- t2 = rspamd_get_ticks (TRUE);
+ t2 = rspamd_get_ticks(TRUE);
total += t2 - t1;
}
- g_free (in);
- g_free (tmp);
- g_free (out);
+ g_free(in);
+ g_free(tmp);
+ g_free(out);
return total;
}
gboolean
-rspamd_cryptobox_base64_is_valid (const gchar *in, gsize inlen)
+rspamd_cryptobox_base64_is_valid(const gchar *in, gsize inlen)
{
const guchar *p, *end;
@@ -191,12 +433,12 @@ rspamd_cryptobox_base64_is_valid (const gchar *in, gsize inlen)
end = in + inlen;
while (p < end && *p != '=') {
- if (!g_ascii_isspace (*p)) {
+ if (!g_ascii_isspace(*p)) {
if (base64_table_dec[*p] == 255) {
return FALSE;
}
}
- p ++;
+ p++;
}
return TRUE;